Liefert den Spieler, der zuletzt Energieabzug an einem Objekt verursacht hat.
Aufgrund der Komplexität der Spielwelt von Clonk ist es nicht immer möglich, den tatsächlichen Schadensverursacher in Kettenreaktionen korrekt ausfindig zu machen.
Zur Schadensverfolgung speichert jedes Objekt einen steuernden Spieler, der die Spielernummer des Spielers angibt, der ein Objekt zuletzt kontrolliert bzw. geworfen, geschoben, abgeschossen, etc. hat (für Details siehe
GetController). Dieses Feld wird benutzt, um den Schaden erzeugenden Spieler zu ermitteln:
- Bei Objekttreffern der steuernde Spieler des geworfenen Objektes. Dieser wird für Gegenstände automatisch beim Einsammeln gesetzt.
- Bei Clonk-zu-Clonk-Kämpfen gilt direkt der steuernde Spieler des Kampfgegners als Schadensverursacher. Das ist im Normalfall der Besitzer.
- Bei Feuer gilt der Controller des ursprünglichen Verursachers des Feuers, also dem aufrufenden Objekt in Incinerate()-Aufrufen. Der Verursacher wird durch die Entzündketten weitergetragen, unabhängig von Besitzern oder steuernden Spielern der brennenden Objekte. Zündet also zum Beispiel Spieler A einen Clonk von Spieler B an und selbiger entzündet einen Clonk von Spieler C, so gelten beide Feuer als von Spieler A verursacht.
Der Schadensverursacher eines Clonks wird aumatisch auf NO_OWNER (kein Spieler) zurück gesetzt, wenn der Clonk eine Aktivität ausführt, für die nicht ObjectDisabled=1 gesetzt ist (zum Beispiel "Walk").
Selbst verursachter Schaden setzt das Feld nur dann auf den eigenen Spieler, wenn es vorher NO_OWNER war. Das verhindert, dass ein Spieler durch schnellen Selbstmord anderen Spielern Punkte wegnehmen kann. Wenn man unten herausfällt, gilt also derjenige als Mörder, der zuletzt Schaden verursacht hat. Wurde der Clonk mit einem Steintreffer herunter geschleudert, gilt in dem Fall der Steinwerfer.
protected func Death()
{
var iKiller = GetKiller();
if (iKiller == GetController()) Message("%s hat sich selbst umgebracht.", this(), GetName());
else if (iKiller > NO_OWNER) Message("%s wurde von %s geplättet!", this(), GetName(), GetPlayerName(iKiller));
else DeathAnnounce();
return(true);
}
Script für den Tod eines Clonks: Anstatt der normalen Todesnachricht richtet sich die Nachricht danach, wer den Clonk getötet hat.