private void ControlMessage_SpawnMonster(HybrasylControlMessage message) { var monster = (Monster)message.Arguments[0]; var map = (Map)message.Arguments[1]; map.InsertCreature(monster); GameLog.SpawnInfo( $"{monster.Name} @ {monster.Map.Name} ({monster.X},{monster.Y}): Level {monster.Stats.Level} HP {monster.Stats.Hp} MP {monster.Stats.Mp} S/C/D/I/W {monster.Stats.Str}/{monster.Stats.Con}/{monster.Stats.Dex}/{monster.Stats.Int}/{monster.Stats.Wis}"); }
private void ControlMessage_MonolithControl(HybrasylControlMessage message) { var monster = (Monster)message.Arguments[0]; var map = (Map)message.Arguments[1]; if (monster == null || map == null) { return; } // Don't handle control messages for dead/removed mobs, or mobs that cannot move or attack if (!monster.Condition.Alive || monster.DeathProcessed || monster.Id == 0 || monster.Map == null || monster.Condition.Asleep || monster.Condition.Frozen) { return; } monster.NextAction(); monster.ProcessActions(); }