object Heal : CommandScript { Heal() { SetValidTargets(ACTOR_PERSON); SetRestrictions(RESTRICT_NOTARRESTED); SetPossibleCallers(ACTOR_PERSON); SetPossibleExists(CPE_INJURED_PERSON | CPE_WOUNDED_SQUAD); SetPriority(300); SetSelfClickActivation(true); } bool CheckPossible(GameObject *Caller) { /*if(!Caller->IsValid() || Caller->GetType() != ACTOR_PERSON) return false;*/ Person c(Caller); if(c.IsParamedicTeam() && c.IsCarryingPerson()) return false; //return Game::ExistsInjuredPerson() || Game::ExistsWoundedSquad(); return true; } bool CheckTarget(GameObject *Caller, Actor *Target, int childID) { if(!Caller->IsValid() || !Target->IsValid() || Target->GetID() == Caller->GetID()) return false; if(Caller->GetType()==ACTOR_PERSON) { Person c(Caller); if(c.IsParamedicTeam() && c.IsCarryingPerson()) return false; } if(Target->GetType()==ACTOR_PERSON) { Person p(Target); if(!p.IsDrowning() && !p.IsHealing() && p.GetRole() != ROLE_ANIMAL && !p.IsRescueDog() && (p.IsInjured() || p.IsWoundedSquad()) && p.GetEnteredCarID() == -1 && !p.IsCarried() ) return true; } return false; } void PushActions(GameObject *Caller, Actor *Target, int childID) { // >>> Rettungsdienst-Erweiterung (EMS_Rettungsdienst.script) ---------- // Einheiten mit dem Befehl "EMS_Untersuchen" behandeln nach den neuen // Regeln (erst untersuchen, der Befund entscheidet, wer behandeln darf). // Alle anderen Einheiten behandeln weiter wie im Originalspiel. if (Caller->HasCommand("EMS_Untersuchen")) { Caller->PushActionExecuteCommand(ACTION_NEWLIST, "EMS_Behandeln", Target, 0, false); return; } // <<< Rettungsdienst-Erweiterung -------------------------------------- Caller->PushActionMove(ACTION_NEWLIST, Target, TARGET_TREATMENT); Caller->PushActionTurnTo(ACTION_APPEND, Target); Caller->PushActionHeal(ACTION_APPEND, Target); } };