Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
            }
        }