Exemple #1
0
 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);
 }
Exemple #2
0
        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;
        }