/// Sea attacker enters harbor and finds no shipping route or no longer has a valid target: set state,target,goal,building to 0 to avoid /// future problems (and add to harbor inventory) void nofAttacker::SeaAttackFailedBeforeLaunch() { InformTargetsAboutCancelling(); RTTR_Assert(!huntingDefender); AbrogateWorkplace(); goal_ = nullptr; state = STATE_FIGUREWORK; }
/// Wenn ein Kampf verloren wurde (Tod) void nofAggressiveDefender::LostFighting() { // Meinem zu Hause Bescheid sagen, dass ich nicht mehr lebe (damit neue Truppen reinkönnen), // falls es noch existiert AbrogateWorkplace(); // Ziel Bescheid sagen, das ich verteidigt hatte InformTargetsAboutCancelling(); }
/// Wenn ein Kampf verloren wurde (Tod) void nofAttacker::LostFighting() { // Meinem zu Hause Bescheid sagen, dass ich nicht mehr lebe (damit neue Truppen reinkönnen) // falls das Gebäude noch existiert AbrogateWorkplace(); // Angreifer müssen zusätzlich ihrem Ziel Bescheid sagen InformTargetsAboutCancelling(); // Ggf. Schiff Bescheid sagen if(ship_obj_id) this->CancelAtShip(); }
void noFigure::Abrogate() { // Arbeisplatz oder Laghaus Bescheid sagen if(fs == FS_GOHOME) { if(goal_) //goal might by NULL if goal was a harbor that got destroyed during sea travel static_cast<nobBaseWarehouse*>(goal_)->RemoveDependentFigure(this); else { if(!on_ship) //no goal but going home - should not happen { LOG.lprintf("noFigure::Abrogate - GOHOME figure has no goal and is not on a ship - player %i state %i pos %u,%u \n", player, fs, pos.x, pos.y); //assert(false); } } } else AbrogateWorkplace(); }
void nofShipWright::WalkHome() { // Sind wir zu Hause angekommen? (genauer an der Flagge !!) if(pos == dest) { // Weiteres übernimmt nofBuildingWorker WorkingReady(); return; } unsigned char dir = gwg->FindHumanPath(pos, dest, SHIPWRIGHT_WALKING_DISTANCE); // Weg suchen und ob wir überhaupt noch nach Hause kommen if(dir == 0xFF) { // Kein Weg führt mehr nach Hause--> Rumirren AbrogateWorkplace(); StartWandering(); Wander(); } else { // Alles ok, wir können hinlaufen StartWalking(dir); } }