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; } }
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; } }