|
@@ -38,6 +38,7 @@ import javolution.util.FastSet;
|
|
|
|
|
|
import com.l2jserver.Config;
|
|
import com.l2jserver.Config;
|
|
import com.l2jserver.gameserver.GameTimeController;
|
|
import com.l2jserver.gameserver.GameTimeController;
|
|
|
|
+import com.l2jserver.gameserver.ai.CtrlIntention;
|
|
import com.l2jserver.gameserver.datatables.DoorTable;
|
|
import com.l2jserver.gameserver.datatables.DoorTable;
|
|
import com.l2jserver.gameserver.datatables.ItemTable;
|
|
import com.l2jserver.gameserver.datatables.ItemTable;
|
|
import com.l2jserver.gameserver.datatables.NpcData;
|
|
import com.l2jserver.gameserver.datatables.NpcData;
|
|
@@ -52,6 +53,7 @@ import com.l2jserver.gameserver.model.Location;
|
|
import com.l2jserver.gameserver.model.actor.L2Attackable;
|
|
import com.l2jserver.gameserver.model.actor.L2Attackable;
|
|
import com.l2jserver.gameserver.model.actor.L2Character;
|
|
import com.l2jserver.gameserver.model.actor.L2Character;
|
|
import com.l2jserver.gameserver.model.actor.L2Npc;
|
|
import com.l2jserver.gameserver.model.actor.L2Npc;
|
|
|
|
+import com.l2jserver.gameserver.model.actor.L2Playable;
|
|
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
|
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
|
import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
|
|
import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
|
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
|
@@ -111,6 +113,7 @@ import com.l2jserver.gameserver.model.events.listeners.RunnableEventListener;
|
|
import com.l2jserver.gameserver.model.events.returns.AbstractEventReturn;
|
|
import com.l2jserver.gameserver.model.events.returns.AbstractEventReturn;
|
|
import com.l2jserver.gameserver.model.events.returns.TerminateReturn;
|
|
import com.l2jserver.gameserver.model.events.returns.TerminateReturn;
|
|
import com.l2jserver.gameserver.model.holders.ItemHolder;
|
|
import com.l2jserver.gameserver.model.holders.ItemHolder;
|
|
|
|
+import com.l2jserver.gameserver.model.holders.SkillHolder;
|
|
import com.l2jserver.gameserver.model.interfaces.IPositionable;
|
|
import com.l2jserver.gameserver.model.interfaces.IPositionable;
|
|
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
|
|
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
|
|
import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
|
|
import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
|
|
@@ -2620,6 +2623,85 @@ public abstract class AbstractScript extends ManagedScript
|
|
player.teleToLocation(loc, allowRandomOffset);
|
|
player.teleToLocation(loc, allowRandomOffset);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Monster is running and attacking the playable.
|
|
|
|
+ * @param npc the NPC that performs the attack
|
|
|
|
+ * @param playable the player
|
|
|
|
+ */
|
|
|
|
+ protected void addAttackPlayerDesire(L2Npc npc, L2Playable playable)
|
|
|
|
+ {
|
|
|
|
+ addAttackPlayerDesire(npc, playable, 999);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Monster is running and attacking the target.
|
|
|
|
+ * @param npc the NPC that performs the attack
|
|
|
|
+ * @param target the target of the attack
|
|
|
|
+ * @param desire the desire to perform the attack
|
|
|
|
+ */
|
|
|
|
+ protected void addAttackPlayerDesire(L2Npc npc, L2Playable target, int desire)
|
|
|
|
+ {
|
|
|
|
+ if (npc instanceof L2Attackable)
|
|
|
|
+ {
|
|
|
|
+ ((L2Attackable) npc).addDamageHate(target, 0, desire);
|
|
|
|
+ }
|
|
|
|
+ npc.setIsRunning(true);
|
|
|
|
+ npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Instantly cast a skill upon the given target.
|
|
|
|
+ * @param npc the caster NPC
|
|
|
|
+ * @param target the target of the cast
|
|
|
|
+ * @param skill the skill to cast
|
|
|
|
+ */
|
|
|
|
+ protected void castSkill(L2Npc npc, L2Playable target, SkillHolder skill)
|
|
|
|
+ {
|
|
|
|
+ npc.setTarget(target);
|
|
|
|
+ npc.doCast(skill.getSkill());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Instantly cast a skill upon the given target.
|
|
|
|
+ * @param npc the caster NPC
|
|
|
|
+ * @param target the target of the cast
|
|
|
|
+ * @param skill the skill to cast
|
|
|
|
+ */
|
|
|
|
+ protected void castSkill(L2Npc npc, L2Playable target, Skill skill)
|
|
|
|
+ {
|
|
|
|
+ npc.setTarget(target);
|
|
|
|
+ npc.doCast(skill);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Adds the desire to cast a skill to the given NPC.
|
|
|
|
+ * @param npc the NPC whom cast the skill
|
|
|
|
+ * @param target the skill target
|
|
|
|
+ * @param skill the skill to cast
|
|
|
|
+ * @param desire the desire to cast the skill
|
|
|
|
+ */
|
|
|
|
+ protected void addSkillCastDesire(L2Npc npc, L2Character target, SkillHolder skill, int desire)
|
|
|
|
+ {
|
|
|
|
+ addSkillCastDesire(npc, target, skill.getSkill(), desire);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Adds the desire to cast a skill to the given NPC.
|
|
|
|
+ * @param npc the NPC whom cast the skill
|
|
|
|
+ * @param target the skill target
|
|
|
|
+ * @param skill the skill to cast
|
|
|
|
+ * @param desire the desire to cast the skill
|
|
|
|
+ */
|
|
|
|
+ protected void addSkillCastDesire(L2Npc npc, L2Character target, Skill skill, int desire)
|
|
|
|
+ {
|
|
|
|
+ if (npc instanceof L2Attackable)
|
|
|
|
+ {
|
|
|
|
+ ((L2Attackable) npc).addDamageHate(target, 0, desire);
|
|
|
|
+ }
|
|
|
|
+ npc.setTarget(target);
|
|
|
|
+ npc.getAI().setIntention(CtrlIntention.AI_INTENTION_CAST, skill, target);
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Sends the special camera packet to the player.
|
|
* Sends the special camera packet to the player.
|
|
* @param player the player
|
|
* @param player the player
|