Fixed AreaSkillNpc AI.
This commit is contained in:
parent
a13882d5cc
commit
76b3077374
@ -18,7 +18,6 @@ package ai.others;
|
||||
|
||||
import com.l2jmobius.commons.util.CommonUtil;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
@ -34,6 +33,10 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
// NPCs
|
||||
private static final int[] BASIC = // area_skill_npc
|
||||
{
|
||||
143, // Totem of Body
|
||||
144, // Totem of Spirit
|
||||
145, // Totem of Bravery
|
||||
146, // Totem of Fortitude
|
||||
13018, // Maximum Defense
|
||||
13019, // Anti-Music
|
||||
13020, // Maximum Resist Status
|
||||
@ -53,13 +56,6 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
13380, // Solo Dance
|
||||
13381, // Solo Dance
|
||||
};
|
||||
private static final int[] TOTEMS = // ai_totem_of_body
|
||||
{
|
||||
143, // Totem of Body
|
||||
144, // Totem of Spirit
|
||||
145, // Totem of Bravery
|
||||
146, // Totem of Fortitude
|
||||
};
|
||||
private static final int[] DECOY = // ai_decoy
|
||||
{
|
||||
13071, // Virtual Image
|
||||
@ -85,32 +81,25 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
private AreaSkillNpc()
|
||||
{
|
||||
addSpawnId(BASIC);
|
||||
addSpawnId(TOTEMS);
|
||||
addSpawnId(DECOY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
final L2Character summoner = npc.getSummoner();
|
||||
if ((summoner != null) && summoner.isPlayer())
|
||||
if (CommonUtil.contains(DECOY, npc.getId()))
|
||||
{
|
||||
final L2PcInstance player = summoner.getActingPlayer();
|
||||
|
||||
if (CommonUtil.contains(BASIC, npc.getId()) || CommonUtil.contains(TOTEMS, npc.getId()))
|
||||
{
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("despawn_time", 7);
|
||||
getTimers().addTimer("SKILL_CAST_BASIC", 100, npc, player);
|
||||
getTimers().addTimer("DELETE_ME", (despawnTime * 1000), npc, player);
|
||||
}
|
||||
else if (CommonUtil.contains(DECOY, npc.getId()))
|
||||
{
|
||||
final int castTime = npc.getTemplate().getParameters().getInt("i_use_term_time", 5000);
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("i_despawn_time", 30000);
|
||||
onTimerEvent("SKILL_CAST_BASIC", null, npc, player); // Trigger cast instantly
|
||||
getTimers().addTimer("SKILL_CAST_BASIC", castTime, npc, player);
|
||||
getTimers().addTimer("DELETE_ME", despawnTime, npc, player);
|
||||
}
|
||||
final int castTime = npc.getTemplate().getParameters().getInt("i_use_term_time", 5000);
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("i_despawn_time", 30000);
|
||||
onTimerEvent("SKILL_CAST_BASIC", null, npc, null); // Trigger cast instantly
|
||||
getTimers().addTimer("SKILL_CAST_TIMED", castTime, npc, null);
|
||||
getTimers().addTimer("DELETE_ME", despawnTime, npc, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("despawn_time", 7);
|
||||
getTimers().addTimer("SKILL_CAST_TIMED", 100, npc, null);
|
||||
getTimers().addTimer("DELETE_ME", (despawnTime * 1000), npc, null);
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
@ -118,21 +107,33 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if (event.equals("SKILL_CAST_BASIC"))
|
||||
switch (event)
|
||||
{
|
||||
final SkillHolder skill = npc.getParameters().getSkillHolder(CommonUtil.contains(DECOY, npc.getId()) ? "decoy_skill" : "union_skill");
|
||||
final int skillDelay = npc.getParameters().getInt("skill_delay", 2);
|
||||
|
||||
if (skill != null)
|
||||
case "SKILL_CAST_BASIC":
|
||||
{
|
||||
npc.doCast(skill.getSkill());
|
||||
getTimers().addTimer("SKILL_CAST_BASIC", skillDelay * 1000, npc, player);
|
||||
final SkillHolder skill = npc.getParameters().getSkillHolder(CommonUtil.contains(DECOY, npc.getId()) ? "decoy_skill" : "union_skill");
|
||||
if (skill != null)
|
||||
{
|
||||
npc.doCast(skill.getSkill());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SKILL_CAST_TIMED":
|
||||
{
|
||||
final SkillHolder skill = npc.getParameters().getSkillHolder(CommonUtil.contains(DECOY, npc.getId()) ? "decoy_skill" : "union_skill");
|
||||
if (skill != null)
|
||||
{
|
||||
npc.doCast(skill.getSkill());
|
||||
getTimers().addRepeatingTimer("SKILL_CAST_BASIC", npc.getParameters().getInt("skill_delay", 2) * 1000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "DELETE_ME":
|
||||
{
|
||||
getTimers().cancelTimer("SKILL_CAST_BASIC", npc, null);
|
||||
npc.deleteMe();
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (event.equals("DELETE_ME"))
|
||||
{
|
||||
getTimers().cancelTimer("SKILL_CAST_BASIC", npc, player);
|
||||
npc.deleteMe();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,6 @@ package ai.others;
|
||||
|
||||
import com.l2jmobius.commons.util.CommonUtil;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
@ -34,6 +33,10 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
// NPCs
|
||||
private static final int[] BASIC = // area_skill_npc
|
||||
{
|
||||
143, // Totem of Body
|
||||
144, // Totem of Spirit
|
||||
145, // Totem of Bravery
|
||||
146, // Totem of Fortitude
|
||||
13018, // Maximum Defense
|
||||
13019, // Anti-Music
|
||||
13020, // Maximum Resist Status
|
||||
@ -59,13 +62,6 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
13453, // Solo Dance
|
||||
13454, // Solo Dance
|
||||
};
|
||||
private static final int[] TOTEMS = // ai_totem_of_body
|
||||
{
|
||||
143, // Totem of Body
|
||||
144, // Totem of Spirit
|
||||
145, // Totem of Bravery
|
||||
146, // Totem of Fortitude
|
||||
};
|
||||
private static final int[] DECOY = // ai_decoy
|
||||
{
|
||||
13071, // Virtual Image
|
||||
@ -91,32 +87,25 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
private AreaSkillNpc()
|
||||
{
|
||||
addSpawnId(BASIC);
|
||||
addSpawnId(TOTEMS);
|
||||
addSpawnId(DECOY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
final L2Character summoner = npc.getSummoner();
|
||||
if ((summoner != null) && summoner.isPlayer())
|
||||
if (CommonUtil.contains(DECOY, npc.getId()))
|
||||
{
|
||||
final L2PcInstance player = summoner.getActingPlayer();
|
||||
|
||||
if (CommonUtil.contains(BASIC, npc.getId()) || CommonUtil.contains(TOTEMS, npc.getId()))
|
||||
{
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("despawn_time", 7);
|
||||
getTimers().addTimer("SKILL_CAST_BASIC", 100, npc, player);
|
||||
getTimers().addTimer("DELETE_ME", (despawnTime * 1000), npc, player);
|
||||
}
|
||||
else if (CommonUtil.contains(DECOY, npc.getId()))
|
||||
{
|
||||
final int castTime = npc.getTemplate().getParameters().getInt("i_use_term_time", 5000);
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("i_despawn_time", 30000);
|
||||
onTimerEvent("SKILL_CAST_BASIC", null, npc, player); // Trigger cast instantly
|
||||
getTimers().addTimer("SKILL_CAST_BASIC", castTime, npc, player);
|
||||
getTimers().addTimer("DELETE_ME", despawnTime, npc, player);
|
||||
}
|
||||
final int castTime = npc.getTemplate().getParameters().getInt("i_use_term_time", 5000);
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("i_despawn_time", 30000);
|
||||
onTimerEvent("SKILL_CAST_BASIC", null, npc, null); // Trigger cast instantly
|
||||
getTimers().addTimer("SKILL_CAST_TIMED", castTime, npc, null);
|
||||
getTimers().addTimer("DELETE_ME", despawnTime, npc, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("despawn_time", 7);
|
||||
getTimers().addTimer("SKILL_CAST_TIMED", 100, npc, null);
|
||||
getTimers().addTimer("DELETE_ME", (despawnTime * 1000), npc, null);
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
@ -124,21 +113,33 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if (event.equals("SKILL_CAST_BASIC"))
|
||||
switch (event)
|
||||
{
|
||||
final SkillHolder skill = npc.getParameters().getSkillHolder(CommonUtil.contains(DECOY, npc.getId()) ? "decoy_skill" : "union_skill");
|
||||
final int skillDelay = npc.getParameters().getInt("skill_delay", 2);
|
||||
|
||||
if (skill != null)
|
||||
case "SKILL_CAST_BASIC":
|
||||
{
|
||||
npc.doCast(skill.getSkill());
|
||||
getTimers().addTimer("SKILL_CAST_BASIC", skillDelay * 1000, npc, player);
|
||||
final SkillHolder skill = npc.getParameters().getSkillHolder(CommonUtil.contains(DECOY, npc.getId()) ? "decoy_skill" : "union_skill");
|
||||
if (skill != null)
|
||||
{
|
||||
npc.doCast(skill.getSkill());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SKILL_CAST_TIMED":
|
||||
{
|
||||
final SkillHolder skill = npc.getParameters().getSkillHolder(CommonUtil.contains(DECOY, npc.getId()) ? "decoy_skill" : "union_skill");
|
||||
if (skill != null)
|
||||
{
|
||||
npc.doCast(skill.getSkill());
|
||||
getTimers().addRepeatingTimer("SKILL_CAST_BASIC", npc.getParameters().getInt("skill_delay", 2) * 1000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "DELETE_ME":
|
||||
{
|
||||
getTimers().cancelTimer("SKILL_CAST_BASIC", npc, null);
|
||||
npc.deleteMe();
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (event.equals("DELETE_ME"))
|
||||
{
|
||||
getTimers().cancelTimer("SKILL_CAST_BASIC", npc, player);
|
||||
npc.deleteMe();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,6 @@ package ai.others;
|
||||
|
||||
import com.l2jmobius.commons.util.CommonUtil;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
@ -34,6 +33,10 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
// NPCs
|
||||
private static final int[] BASIC = // area_skill_npc
|
||||
{
|
||||
143, // Totem of Body
|
||||
144, // Totem of Spirit
|
||||
145, // Totem of Bravery
|
||||
146, // Totem of Fortitude
|
||||
13018, // Maximum Defense
|
||||
13019, // Anti-Music
|
||||
13020, // Maximum Resist Status
|
||||
@ -59,13 +62,6 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
13453, // Solo Dance
|
||||
13454, // Solo Dance
|
||||
};
|
||||
private static final int[] TOTEMS = // ai_totem_of_body
|
||||
{
|
||||
143, // Totem of Body
|
||||
144, // Totem of Spirit
|
||||
145, // Totem of Bravery
|
||||
146, // Totem of Fortitude
|
||||
};
|
||||
private static final int[] DECOY = // ai_decoy
|
||||
{
|
||||
13071, // Virtual Image
|
||||
@ -91,32 +87,25 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
private AreaSkillNpc()
|
||||
{
|
||||
addSpawnId(BASIC);
|
||||
addSpawnId(TOTEMS);
|
||||
addSpawnId(DECOY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
final L2Character summoner = npc.getSummoner();
|
||||
if ((summoner != null) && summoner.isPlayer())
|
||||
if (CommonUtil.contains(DECOY, npc.getId()))
|
||||
{
|
||||
final L2PcInstance player = summoner.getActingPlayer();
|
||||
|
||||
if (CommonUtil.contains(BASIC, npc.getId()) || CommonUtil.contains(TOTEMS, npc.getId()))
|
||||
{
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("despawn_time", 7);
|
||||
getTimers().addTimer("SKILL_CAST_BASIC", 100, npc, player);
|
||||
getTimers().addTimer("DELETE_ME", (despawnTime * 1000), npc, player);
|
||||
}
|
||||
else if (CommonUtil.contains(DECOY, npc.getId()))
|
||||
{
|
||||
final int castTime = npc.getTemplate().getParameters().getInt("i_use_term_time", 5000);
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("i_despawn_time", 30000);
|
||||
onTimerEvent("SKILL_CAST_BASIC", null, npc, player); // Trigger cast instantly
|
||||
getTimers().addTimer("SKILL_CAST_BASIC", castTime, npc, player);
|
||||
getTimers().addTimer("DELETE_ME", despawnTime, npc, player);
|
||||
}
|
||||
final int castTime = npc.getTemplate().getParameters().getInt("i_use_term_time", 5000);
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("i_despawn_time", 30000);
|
||||
onTimerEvent("SKILL_CAST_BASIC", null, npc, null); // Trigger cast instantly
|
||||
getTimers().addTimer("SKILL_CAST_TIMED", castTime, npc, null);
|
||||
getTimers().addTimer("DELETE_ME", despawnTime, npc, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
final int despawnTime = npc.getTemplate().getParameters().getInt("despawn_time", 7);
|
||||
getTimers().addTimer("SKILL_CAST_TIMED", 100, npc, null);
|
||||
getTimers().addTimer("DELETE_ME", (despawnTime * 1000), npc, null);
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
@ -124,21 +113,33 @@ public final class AreaSkillNpc extends AbstractNpcAI
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if (event.equals("SKILL_CAST_BASIC"))
|
||||
switch (event)
|
||||
{
|
||||
final SkillHolder skill = npc.getParameters().getSkillHolder(CommonUtil.contains(DECOY, npc.getId()) ? "decoy_skill" : "union_skill");
|
||||
final int skillDelay = npc.getParameters().getInt("skill_delay", 2);
|
||||
|
||||
if (skill != null)
|
||||
case "SKILL_CAST_BASIC":
|
||||
{
|
||||
npc.doCast(skill.getSkill());
|
||||
getTimers().addTimer("SKILL_CAST_BASIC", skillDelay * 1000, npc, player);
|
||||
final SkillHolder skill = npc.getParameters().getSkillHolder(CommonUtil.contains(DECOY, npc.getId()) ? "decoy_skill" : "union_skill");
|
||||
if (skill != null)
|
||||
{
|
||||
npc.doCast(skill.getSkill());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SKILL_CAST_TIMED":
|
||||
{
|
||||
final SkillHolder skill = npc.getParameters().getSkillHolder(CommonUtil.contains(DECOY, npc.getId()) ? "decoy_skill" : "union_skill");
|
||||
if (skill != null)
|
||||
{
|
||||
npc.doCast(skill.getSkill());
|
||||
getTimers().addRepeatingTimer("SKILL_CAST_BASIC", npc.getParameters().getInt("skill_delay", 2) * 1000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "DELETE_ME":
|
||||
{
|
||||
getTimers().cancelTimer("SKILL_CAST_BASIC", npc, null);
|
||||
npc.deleteMe();
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (event.equals("DELETE_ME"))
|
||||
{
|
||||
getTimers().cancelTimer("SKILL_CAST_BASIC", npc, player);
|
||||
npc.deleteMe();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user