Inheritance: AICommand
Example #1
0
 public void Update(object para)
 {
     dest = CurrentTarget();
     if (dest == null)
     {
         mob.ai.AIActivity = MobAI.Activity.LAZY;
         if (mob.ai.commands.ContainsKey("Chase") == true)
         {
             mob.ai.commands.Remove("Chase");
         }
         ;
         return;
     }
     mob.ai.AIActivity = MobAI.Activity.BUSY;
     if (mob.ai.commands.ContainsKey("Move") == true)
     {
         mob.ai.commands.Remove("Move");
     }
     attacktask.dActor = dest;
     if (mob.ai.commands.ContainsKey("Chase") == true)
     {
         if (attacktask.Activated() == true)
         {
             attacktask.Deactivate();
         }
         attacking = false;
         return;
     }
     if (dest.stance == Global.STANCE.DIE)
     {
         if (mob.Hate.ContainsKey(dest.id))
         {
             mob.Hate.Remove(dest.id);
         }
         if (attacktask.Activated() == true)
         {
             attacktask.Deactivate();
         }
         attacktask = null;
         return;
     }
     ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)dest.e;
     if (eh.C.state == MapClient.SESSION_STATE.LOGGEDOFF)
     {
         if (mob.Hate.ContainsKey(dest.id))
         {
             mob.Hate.Remove(dest.id);
         }
         if (attacktask.Activated() == true)
         {
             attacktask.Deactivate();
         }
         attacktask = null;
         return;
     }
     float[] src = new float[3] {
         mob.Actor.x, mob.Actor.y, mob.Actor.z
     };
     float[] dst = new float[3] {
         dest.x, dest.y, dest.z
     };
     if (MobAI.GetDistance2(src, dst) > (150 + (mob.Size)))
     {
         Chase chase = new Chase(this.mob, dest);
         mob.ai.commands.Add("Chase", chase);
         if (attacktask.Activated() == true)
         {
             attacktask.Deactivate();
         }
         attacking = false;
     }
     else
     {
         if (attacktask.Activated() == false)
         {
             attacktask.Activate();
         }
         attacking = true;
     }
 }
Example #2
0
 public void Update(object para)
 {
     dest = CurrentTarget();
     if (dest == null)
     {
         mob.ai.AIActivity =  MobAI.Activity.LAZY;
         if (mob.ai.commands.ContainsKey("Chase") == true) mob.ai.commands.Remove("Chase"); ;
         return;
     }
     mob.ai.AIActivity =  MobAI.Activity.BUSY;
     if (mob.ai.commands.ContainsKey("Move") == true) mob.ai.commands.Remove("Move");
     attacktask.dActor = dest;
     if (mob.ai.commands.ContainsKey("Chase") == true)
     {
         if (attacktask.Activated() == true) attacktask.Deactivate();
         attacking = false;
         return;
     }
     if (dest.stance == Global.STANCE.DIE)
     {
         if (mob.Hate.ContainsKey(dest.id)) mob.Hate.Remove(dest.id);
         if (attacktask.Activated() == true) attacktask.Deactivate();
         attacktask = null;
         return;
     }
     ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)dest.e;
     if (eh.C.state == MapClient.SESSION_STATE.LOGGEDOFF)
     {
         if (mob.Hate.ContainsKey(dest.id)) mob.Hate.Remove(dest.id);
         if (attacktask.Activated() == true) attacktask.Deactivate();
         attacktask = null;
         return;
     }
     float[] src = new float[3] { mob.Actor.x, mob.Actor.y, mob.Actor.z };
     float[] dst = new float[3] { dest.x, dest.y, dest.z };
     if (MobAI.GetDistance2(src, dst) > (150 + (mob.Size)))
     {
         Chase chase = new Chase(this.mob, dest);
         mob.ai.commands.Add("Chase", chase);
         if (attacktask.Activated() == true) attacktask.Deactivate();
         attacking = false;
     }
     else
     {
         if (attacktask.Activated() == false) attacktask.Activate();
         attacking = true;
     }
 }