/* Clonk */ #strict 2 #appendto CLNK local rotateInJump; local removeOnDeath; protected func ControlSpecial() { [$Push$|Image=CXIV] if (GetAction() != "Walk") return 0; // Use action "Throw" starting with phase 3 SetAction("Throw"); SetPhase(3); // Find clonks in range var clonks = FindObjects( Find_ID(CLNK), Find_InRect(-10 + GetDir() * 20, 0, 10, 10), Find_OCF(OCF_Alive), // Only include allied players' clonks if "friendly pushing" rule is present Find_Or(Find_Func(FindObject(FYPG)), Find_Hostile(GetOwner()))); if (GetLength(clonks) == 0) return 0; // Randomly select clonk to be pushed var target = clonks[Random(GetLength(clonks))]; Fling(target, -1 + GetDir() * 2, -1); target->SetKiller(GetOwner()); return 1; } protected func ControlLeft() { if (rotateInJump && GetAction() == "Jump") SetDir(DIR_Left); return _inherited(); } protected func ControlRight() { if (rotateInJump && GetAction() == "Jump") SetDir(DIR_Right); return _inherited(); } protected func Death(int killedBy) { var ret = _inherited(killedBy); if (removeOnDeath) RemoveObject(); return ret; }