public virtual void MonsterMemberAttacksEnemyCheck() { if (LoopMonster.CombatCode != CombatCode.NeverFights && LoopMonster.CheckNBTLHostility() && LoopMonster.Weapon >= 0) { NextState = Globals.CreateInstance <IMonsterAttackLoopInitializeState>(); GotoCleanup = true; } }
public virtual void MonsterFleesCheck() { if (LoopMonster.CheckNBTLHostility() && LoopMonster.CanMoveToRoom(true) && !LoopMonster.CheckCourage()) { Debug.Assert(LoopMonster.Reaction != Friendliness.Neutral); ActionCommand = Globals.CreateInstance <IMonsterFleeCommand>(x => { x.ActorMonster = LoopMonster; x.ActorRoom = LoopMonsterRoom; }); ActionCommand.Execute(); if (LoopMonster.CurrGroupCount >= Globals.LoopGroupCount) { GotoCleanup = true; } } }