public override void Execute() { LoopMonster = gMDB[Globals.LoopMonsterUid]; Debug.Assert(LoopMonster != null); LoopMonsterRoom = LoopMonster.GetInRoom(); Debug.Assert(LoopMonsterRoom != null); // Try to open running device, all flee if (LoopMonster.CanMoveToRoom(true) && Globals.DeviceOpened) { ActionCommand = Globals.CreateInstance <IMonsterFleeCommand>(x => { x.ActorMonster = LoopMonster; x.ActorRoom = LoopMonsterRoom; }); ActionCommand.Execute(); NextState = Globals.CreateInstance <IMonsterLoopIncrementState>(); Globals.NextState = NextState; } else { base.Execute(); } }
public override void Execute() { LoopMonster = gMDB[Globals.LoopMonsterUid]; Debug.Assert(LoopMonster != null); LoopMonsterRoom = LoopMonster.GetInRoom(); Debug.Assert(LoopMonsterRoom != null); Globals.LoopGroupCount = LoopMonster.CurrGroupCount; MonsterFleesCheck(); if (GotoCleanup) { goto Cleanup; } NextState = Globals.CreateInstance <IMonsterMemberLoopInitializeState>(); Cleanup: if (NextState == null) { NextState = Globals.CreateInstance <IMonsterLoopIncrementState>(); } Globals.NextState = NextState; }
public override void Execute() { LoopMonster = gMDB[Globals.LoopMonsterUid]; Debug.Assert(LoopMonster != null); LoopMonsterRoom = LoopMonster.GetInRoom(); Debug.Assert(LoopMonsterRoom != null); // Fido eats dead bodies if (LoopMonster.Uid == 11 && gGameState.FidoSleepCounter <= 0) { var artifactList = gEngine.GetArtifactList(a => a.DeadBody != null && a.IsInRoom(LoopMonsterRoom)); if (artifactList.Count > 0) { var mealArtifact = artifactList[0]; Debug.Assert(mealArtifact != null); // Munch, munch.... if (LoopMonsterRoom.Uid == gGameState.Ro) { gOut.Print("{0} eats{1}, then goes to sleep for a while.", LoopMonsterRoom.IsLit() ? "Fido" : "Something", LoopMonsterRoom.IsLit() ? " " + mealArtifact.GetTheName() : ""); } gGameState.FidoSleepCounter += mealArtifact.Weight; mealArtifact.SetInLimbo(); LoopMonster.StateDesc = "(sound asleep)"; LoopMonster.Reaction = Friendliness.Neutral; NextState = Globals.CreateInstance <IMonsterMemberLoopIncrementState>(); Globals.NextState = NextState; } else { base.Execute(); } } else { base.Execute(); } }
public override void Execute() { LoopMonster = gMDB[Globals.LoopMonsterUid]; Debug.Assert(LoopMonster != null); LoopMonsterRoom = LoopMonster.GetInRoom(); Debug.Assert(LoopMonsterRoom != null); MonsterAttackGetHostileMonsterList(); if (GotoCleanup) { goto Cleanup; } MonsterAttackDefenderMissingCheck(); if (GotoCleanup) { goto Cleanup; } MonsterAttackDefenderSelected(); if (GotoCleanup) { goto Cleanup; } MonsterAttackExecuted(); if (GotoCleanup) { goto Cleanup; } Cleanup: if (NextState == null) { NextState = Globals.CreateInstance <IMonsterAttackLoopIncrementState>(); } Globals.NextState = NextState; }
public override void Execute() { LoopMonster = gMDB[Globals.LoopMonsterUid]; Debug.Assert(LoopMonster != null); LoopMonsterRoom = LoopMonster.GetInRoom(); Debug.Assert(LoopMonsterRoom != null); MonsterMemberReadiesWeaponCheck(); if (GotoCleanup) { goto Cleanup; } MonsterMemberReadiesNaturalWeaponCheck(); if (GotoCleanup) { goto Cleanup; } MonsterMemberCastsSpellCheck(); if (GotoCleanup) { goto Cleanup; } MonsterMemberAttacksEnemyCheck(); if (GotoCleanup) { goto Cleanup; } Cleanup: if (NextState == null) { NextState = Globals.CreateInstance <IMonsterMemberLoopIncrementState>(); } Globals.NextState = NextState; }