private void GoToPosition(Critter npc, NpcPlane plane, ushort hexX, ushort hexY, ushort dir) { var walkPlane = Global.CreatePlane (); walkPlane.Type = PlaneType.Walk; walkPlane.Run = true; walkPlane.Walk_Cut = 0; walkPlane.Walk_HexX = hexX; walkPlane.Walk_HexY = hexY; walkPlane.Walk_Dir = (Direction)dir; plane.SetChild (walkPlane); }
private long ProcessCustomAI(Critter npc, ref Critter currentTarget, ICombatClass combatClass, NpcPlane plane) { currentTarget = combatClass.ChooseNextTarget (npc, currentTarget); if (currentTarget == null) return 0; var attackChoice = combatClass.ChooseAttack (npc, currentTarget); if (attackChoice != null) { var position = combatClass.ChooseAttackPosition (npc, currentTarget, attackChoice); if (position != null) { GoToPosition (npc, plane, position [0], position [1], position [2]); return 0; } return AttackTarget (npc, currentTarget, attackChoice); } var itemChoice = combatClass.ChooseItem (npc, currentTarget); if (itemChoice != null) { UseItemOnTarget (npc, currentTarget, itemChoice); return 0; } var skillChoice = combatClass.ChooseSkill (npc, currentTarget); if (skillChoice != null) { UseSkillOnTarget (npc, currentTarget, skillChoice); return 0; } return 0; }