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; }
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; }