示例#1
0
        public override void Execute()
        {
            LoopMonster = gMDB[Globals.LoopMonsterUid];

            Debug.Assert(LoopMonster != null);

            Globals.LoopAttackNumber++;

            MaxMemberAttackCount = Math.Max(1, LoopMonster.GetMaxMemberAttackCount());

            if (LoopMonster.CurrGroupCount < Globals.LoopGroupCount)
            {
                Globals.LoopMemberNumber--;
            }

            if (LoopMonster.IsInLimbo() || LoopMonster.CurrGroupCount < Globals.LoopGroupCount || LoopMonster.Weapon < 0 || Globals.LoopAttackNumber > Math.Abs(LoopMonster.AttackCount) || Globals.LoopAttackNumber > MaxMemberAttackCount)
            {
                NextState = Globals.CreateInstance <IMonsterMemberLoopIncrementState>();

                goto Cleanup;
            }

Cleanup:

            if (NextState == null)
            {
                NextState = Globals.CreateInstance <IMonsterAttackActionState>();
            }

            Globals.NextState = NextState;
        }
示例#2
0
        public override void Execute()
        {
            LoopMonster = gMDB[Globals.LoopMonsterUid];

            Debug.Assert(LoopMonster != null);

            Debug.Assert(Globals.LoopMemberNumber >= 0 && Globals.LoopMemberNumber <= LoopMonster.CurrGroupCount);

            Globals.LoopMemberNumber++;

            MaxMemberActionCount = Math.Max(1, LoopMonster.GetMaxMemberActionCount());

            if (LoopMonster.IsInLimbo() || Globals.LoopMemberNumber > LoopMonster.CurrGroupCount || Globals.LoopMemberNumber > MaxMemberActionCount)
            {
                NextState = Globals.CreateInstance <IMonsterLoopIncrementState>();

                goto Cleanup;
            }

Cleanup:

            if (NextState == null)
            {
                NextState = Globals.CreateInstance <IMonsterMemberActionState>();
            }

            Globals.NextState = NextState;
        }