public override void Update() { bool found; Point pos = Engine.GetMapObjectPosition(this, out found); if (found) { if (AlertMode) { Point p = Engine.GetClosestAggressiveAnimalInRange(pos, 5); if (p != null) { MoveTarget = p; WasChasingEnemy = true; } else { if (WasChasingEnemy) { MoveTarget = null; WasChasingEnemy = false; } } } Attack(pos); Move(pos); } }
public override void Update() { bool found; Point pos = Engine.GetMapObjectPosition(this, out found); if (found) { if (AlertMode) { Point p = Engine.GetClosestInjuredUnitInRange(pos, SightRange); if (p != null) { MoveTarget = p; WasGoingAfterAUnit = true; } else { if (WasGoingAfterAUnit) { MoveTarget = null; WasGoingAfterAUnit = false; } } } Heal(pos); Move(pos); } }
public override void Update() { LifeTime--; bool found; Point pos = Engine.GetMapObjectPosition(this, out found); if (found) { Point p = Engine.GetClosestAggressiveAnimalInRange(pos, 10); if (p != null) { Target = p; } else { Target = new Point(pos.x + 1, pos.y + 1); } Move(pos); Move(pos); Hit(pos); if (LifeTime <= 0) { Engine.DestroyMapObject(this, pos); } } }
public override void Update() { bool found; Point pos = Engine.GetMapObjectPosition(this, out found); if (found) { if (ShootCooldown <= ActualShootCooldown) { ActualShootCooldown = 0; Target = Engine.GetClosestAggressiveAnimalInRange(pos, SightRange - 1); if (Target != null) { Engine.Map.GetCellAt(pos.x, pos.y).MapObjects.Add(new Bullet(pos, Target, Damage, 10)); } } else { ActualShootCooldown++; } if (slowNum > 0) { Move(pos); slowNum = 0; } else { slowNum++; } } }
public override void Update() { bool found; Point pos = Engine.GetMapObjectPosition(this, out found); if (found) { Move(pos); Attack(pos); } }
/// <summary> /// Every action happens here. /// </summary> public override void Update() { bool found; Point pos = Engine.GetMapObjectPosition(this, out found); if (found) { if (Amount == Capacity && (myNextOrder == Order.GoToFood || myNextOrder == Order.GoToWood || myNextOrder == Order.GoToGold)) { myNextOrder = Order.ReturnResource; if (RememberedReturnTarget == null) { RememberedReturnTarget = Engine.SearchClosestMainHall(pos); } } if (Amount == 0 && myNextOrder == Order.ReturnResource) { switch (CarriedResourceType) { case ResourceType.Gold: myNextOrder = Order.GoToGold; break; case ResourceType.Wood: myNextOrder = Order.GoToWood; break; case ResourceType.Food: myNextOrder = Order.GoToFood; break; } } switch (myNextOrder) { case Order.ReturnResource: MoveTarget = RememberedReturnTarget; break; case Order.Hunt: bool isDead; MoveTarget = Engine.SearchClosestPeacefulAnimalInRange(pos, SightRange, out isDead); if (isDead) { NextOrder = Order.GoToFood; RememberedGatherTarget = MoveTarget; } break; case Order.GoToFood: bool ResourceIsNotValid = true; foreach (MapObject mo in Engine.Map.GetCellAt(RememberedGatherTarget).MapObjects) { if (mo.GetType().IsSubclassOf(typeof(Resource))) { Resource res = (Resource)mo; if (res.Type == ResourceType.Food) { if (mo.GetType().IsSubclassOf(typeof(Animal))) { Animal animal = (Animal)mo; if (animal.Dead) { ResourceIsNotValid = false; } } else { ResourceIsNotValid = false; } } } } if (ResourceIsNotValid) { myNextOrder = Order.Hunt; MoveTarget = Engine.SearchClosestPeacefulAnimalInRange(pos, SightRange, out isDead); if (isDead) { NextOrder = Order.GoToFood; RememberedGatherTarget = MoveTarget; } } MoveTarget = RememberedGatherTarget; break; case Order.GoToGold: ResourceIsNotValid = true; foreach (MapObject mo in Engine.Map.GetCellAt(RememberedGatherTarget).MapObjects) { if (mo.GetType().IsSubclassOf(typeof(Resource))) { Resource res = (Resource)mo; if (res.Type == ResourceType.Gold) { ResourceIsNotValid = false; } } } if (ResourceIsNotValid) { RememberedGatherTarget = Engine.SearchClosestResourceInRange(pos, ResourceType.Gold, SightRange); } MoveTarget = RememberedGatherTarget; break; case Order.GoToWood: ResourceIsNotValid = true; foreach (MapObject mo in Engine.Map.GetCellAt(RememberedGatherTarget).MapObjects) { if (mo.GetType().IsSubclassOf(typeof(Resource))) { Resource res = (Resource)mo; if (res.Type == ResourceType.Wood) { ResourceIsNotValid = false; } } } if (ResourceIsNotValid) { RememberedGatherTarget = Engine.SearchClosestResourceInRange(pos, ResourceType.Wood, SightRange); } MoveTarget = RememberedGatherTarget; break; } if (myNextOrder == Order.GoToFood || myNextOrder == Order.GoToGold || myNextOrder == Order.GoToWood) { Gather(pos); } if (myNextOrder == Order.ReturnResource) { ReturnResource(pos); } if (myNextOrder == Order.Build) { Build(pos); } if (myNextOrder == Order.Hunt) { Attack(pos); } Move(pos); } }