public override IEnumerable <Status> Run() { Creature.IsCloaked = false; Timer waitTimer = new Timer(1.0f, true); if (Agent.Faction.Economy.Funds < Money) { Agent.SetTaskFailureReason("Failed to remove money from zone."); yield return(Status.Fail); } else { Agent.AddMoney(Money); Agent.Faction.Economy.Funds -= Money; Money = 0; var component = EntityFactory.CreateEntity <GameComponent>("Coins", Agent.Physics.Position + new Microsoft.Xna.Framework.Vector3(0.0f, 2.0f, 0.0f)); var toss = new TossMotion(1.0f, 2.5f, component.LocalTransform, Agent.Physics.Position); component.AnimationQueue.Add(toss); toss.OnComplete += component.Die; Agent.Creature.Sprite.ResetAnimations(Creature.Stats.CurrentClass.AttackMode); while (!waitTimer.HasTriggered) { Agent.Creature.CurrentCharacterMode = Creature.Stats.CurrentClass.AttackMode; waitTimer.Update(DwarfTime.LastTime); yield return(Status.Running); } Agent.Creature.CurrentCharacterMode = CharacterMode.Idle; yield return(Status.Success); } }
public override IEnumerable <Status> Run() { Creature.IsCloaked = false; if (Zone == null) { yield return(Act.Status.Fail); yield break; } Timer waitTimer = new Timer(1.0f, true); var moneyRemoved = Math.Min(Money, Zone.Money); bool removed = Zone.RemoveMoney(Agent.Position, moneyRemoved); if (!removed) { yield return(Status.Fail); } else { Agent.AddMoney(Money); Money -= moneyRemoved; Agent.Creature.Sprite.ResetAnimations(Creature.AttackMode); while (!waitTimer.HasTriggered) { Agent.Creature.CurrentCharacterMode = Creature.AttackMode; waitTimer.Update(DwarfTime.LastTime); yield return(Status.Running); } Agent.Creature.CurrentCharacterMode = CharacterMode.Idle; yield return(Status.Success); } }
public override IEnumerable <Status> Run() { if (Zone == null) { yield return(Act.Status.Fail); yield break; } Timer waitTimer = new Timer(1.0f, true); var moneyRemoved = Math.Min(Money, Zone.Money); bool removed = Zone.RemoveMoney(Agent.Position, moneyRemoved); if (!removed) { yield return(Status.Fail); } else { Agent.AddMoney(Money); Money -= moneyRemoved; while (!waitTimer.HasTriggered) { waitTimer.Update(DwarfTime.LastTime); yield return(Status.Running); } yield return(Status.Success); } }