From 9d9120571b1fe5a6aacb6bd9481d4f4c2379130e Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Mon, 3 Jan 2022 22:10:50 +0000 Subject: [PATCH] Improvements for Kaysen AI. --- .../RaidersCrossroads/Kaysen/Kaysen.java | 34 ++++++++++++++----- .../RaidersCrossroads/Kaysen/Kaysen.java | 34 ++++++++++++++----- .../RaidersCrossroads/Kaysen/Kaysen.java | 34 ++++++++++++++----- .../RaidersCrossroads/Kaysen/Kaysen.java | 34 ++++++++++++++----- .../RaidersCrossroads/Kaysen/Kaysen.java | 34 ++++++++++++++----- .../RaidersCrossroads/Kaysen/Kaysen.java | 34 ++++++++++++++----- .../RaidersCrossroads/Kaysen/Kaysen.java | 34 ++++++++++++++----- .../RaidersCrossroads/Kaysen/Kaysen.java | 34 ++++++++++++++----- .../RaidersCrossroads/Kaysen/Kaysen.java | 34 ++++++++++++++----- .../RaidersCrossroads/Kaysen/Kaysen.java | 34 ++++++++++++++----- .../RaidersCrossroads/Kaysen/Kaysen.java | 34 ++++++++++++++----- 11 files changed, 286 insertions(+), 88 deletions(-) diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java index 6fc95b32fc..b49d5c445c 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java @@ -99,9 +99,17 @@ public class Kaysen extends AbstractNpcAI { if (player.calculateDistance3D(npc) < Npc.INTERACTION_DISTANCE) { + if (npc.isScriptValue(1)) + { + break; + } + npc.setScriptValue(1); + if (Rnd.get(100) < REWARD_CHANCE) { - player.addItem("Kaysen Reward", REWARD, player, true); + npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_THOUGHT_I_D_BE_A_PUSHOVER_DIDN_T_YOU); + giveItems(player, REWARD); + startQuestTimer("KAYSEN_DELETE", 3000, npc, null); } else { @@ -111,6 +119,12 @@ public class Kaysen extends AbstractNpcAI } break; } + case "KAYSEN_DELETE": + { + npc.deleteMe(); + startQuestTimer("KAYSEN_RESPAWN", 3600000, npc, null); + break; + } case "KAYSEN_TRANSFORM": { npc.deleteMe(); @@ -151,15 +165,19 @@ public class Kaysen extends AbstractNpcAI public String onKill(Npc npc, Player killer, boolean isSummon) { final Player player = killer.getActingPlayer(); - if (Math.abs(player.getLevel() - npc.getLevel()) > 9) + final int diff = player.getLevel() - npc.getLevel(); + if (diff > -9) { - player.addExpAndSp(EXP_REWARD / 40, 0); + if (diff > 9) + { + player.addExpAndSp(EXP_REWARD / diff, 0); + } + else + { + player.addExpAndSp(EXP_REWARD, 0); + } + player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); } - else - { - player.addExpAndSp(EXP_REWARD, 0); - } - player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java index 6fc95b32fc..b49d5c445c 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java @@ -99,9 +99,17 @@ public class Kaysen extends AbstractNpcAI { if (player.calculateDistance3D(npc) < Npc.INTERACTION_DISTANCE) { + if (npc.isScriptValue(1)) + { + break; + } + npc.setScriptValue(1); + if (Rnd.get(100) < REWARD_CHANCE) { - player.addItem("Kaysen Reward", REWARD, player, true); + npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_THOUGHT_I_D_BE_A_PUSHOVER_DIDN_T_YOU); + giveItems(player, REWARD); + startQuestTimer("KAYSEN_DELETE", 3000, npc, null); } else { @@ -111,6 +119,12 @@ public class Kaysen extends AbstractNpcAI } break; } + case "KAYSEN_DELETE": + { + npc.deleteMe(); + startQuestTimer("KAYSEN_RESPAWN", 3600000, npc, null); + break; + } case "KAYSEN_TRANSFORM": { npc.deleteMe(); @@ -151,15 +165,19 @@ public class Kaysen extends AbstractNpcAI public String onKill(Npc npc, Player killer, boolean isSummon) { final Player player = killer.getActingPlayer(); - if (Math.abs(player.getLevel() - npc.getLevel()) > 9) + final int diff = player.getLevel() - npc.getLevel(); + if (diff > -9) { - player.addExpAndSp(EXP_REWARD / 40, 0); + if (diff > 9) + { + player.addExpAndSp(EXP_REWARD / diff, 0); + } + else + { + player.addExpAndSp(EXP_REWARD, 0); + } + player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); } - else - { - player.addExpAndSp(EXP_REWARD, 0); - } - player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java index 6fc95b32fc..b49d5c445c 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java @@ -99,9 +99,17 @@ public class Kaysen extends AbstractNpcAI { if (player.calculateDistance3D(npc) < Npc.INTERACTION_DISTANCE) { + if (npc.isScriptValue(1)) + { + break; + } + npc.setScriptValue(1); + if (Rnd.get(100) < REWARD_CHANCE) { - player.addItem("Kaysen Reward", REWARD, player, true); + npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_THOUGHT_I_D_BE_A_PUSHOVER_DIDN_T_YOU); + giveItems(player, REWARD); + startQuestTimer("KAYSEN_DELETE", 3000, npc, null); } else { @@ -111,6 +119,12 @@ public class Kaysen extends AbstractNpcAI } break; } + case "KAYSEN_DELETE": + { + npc.deleteMe(); + startQuestTimer("KAYSEN_RESPAWN", 3600000, npc, null); + break; + } case "KAYSEN_TRANSFORM": { npc.deleteMe(); @@ -151,15 +165,19 @@ public class Kaysen extends AbstractNpcAI public String onKill(Npc npc, Player killer, boolean isSummon) { final Player player = killer.getActingPlayer(); - if (Math.abs(player.getLevel() - npc.getLevel()) > 9) + final int diff = player.getLevel() - npc.getLevel(); + if (diff > -9) { - player.addExpAndSp(EXP_REWARD / 40, 0); + if (diff > 9) + { + player.addExpAndSp(EXP_REWARD / diff, 0); + } + else + { + player.addExpAndSp(EXP_REWARD, 0); + } + player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); } - else - { - player.addExpAndSp(EXP_REWARD, 0); - } - player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java index 6fc95b32fc..b49d5c445c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java @@ -99,9 +99,17 @@ public class Kaysen extends AbstractNpcAI { if (player.calculateDistance3D(npc) < Npc.INTERACTION_DISTANCE) { + if (npc.isScriptValue(1)) + { + break; + } + npc.setScriptValue(1); + if (Rnd.get(100) < REWARD_CHANCE) { - player.addItem("Kaysen Reward", REWARD, player, true); + npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_THOUGHT_I_D_BE_A_PUSHOVER_DIDN_T_YOU); + giveItems(player, REWARD); + startQuestTimer("KAYSEN_DELETE", 3000, npc, null); } else { @@ -111,6 +119,12 @@ public class Kaysen extends AbstractNpcAI } break; } + case "KAYSEN_DELETE": + { + npc.deleteMe(); + startQuestTimer("KAYSEN_RESPAWN", 3600000, npc, null); + break; + } case "KAYSEN_TRANSFORM": { npc.deleteMe(); @@ -151,15 +165,19 @@ public class Kaysen extends AbstractNpcAI public String onKill(Npc npc, Player killer, boolean isSummon) { final Player player = killer.getActingPlayer(); - if (Math.abs(player.getLevel() - npc.getLevel()) > 9) + final int diff = player.getLevel() - npc.getLevel(); + if (diff > -9) { - player.addExpAndSp(EXP_REWARD / 40, 0); + if (diff > 9) + { + player.addExpAndSp(EXP_REWARD / diff, 0); + } + else + { + player.addExpAndSp(EXP_REWARD, 0); + } + player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); } - else - { - player.addExpAndSp(EXP_REWARD, 0); - } - player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java index 6fc95b32fc..b49d5c445c 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java @@ -99,9 +99,17 @@ public class Kaysen extends AbstractNpcAI { if (player.calculateDistance3D(npc) < Npc.INTERACTION_DISTANCE) { + if (npc.isScriptValue(1)) + { + break; + } + npc.setScriptValue(1); + if (Rnd.get(100) < REWARD_CHANCE) { - player.addItem("Kaysen Reward", REWARD, player, true); + npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_THOUGHT_I_D_BE_A_PUSHOVER_DIDN_T_YOU); + giveItems(player, REWARD); + startQuestTimer("KAYSEN_DELETE", 3000, npc, null); } else { @@ -111,6 +119,12 @@ public class Kaysen extends AbstractNpcAI } break; } + case "KAYSEN_DELETE": + { + npc.deleteMe(); + startQuestTimer("KAYSEN_RESPAWN", 3600000, npc, null); + break; + } case "KAYSEN_TRANSFORM": { npc.deleteMe(); @@ -151,15 +165,19 @@ public class Kaysen extends AbstractNpcAI public String onKill(Npc npc, Player killer, boolean isSummon) { final Player player = killer.getActingPlayer(); - if (Math.abs(player.getLevel() - npc.getLevel()) > 9) + final int diff = player.getLevel() - npc.getLevel(); + if (diff > -9) { - player.addExpAndSp(EXP_REWARD / 40, 0); + if (diff > 9) + { + player.addExpAndSp(EXP_REWARD / diff, 0); + } + else + { + player.addExpAndSp(EXP_REWARD, 0); + } + player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); } - else - { - player.addExpAndSp(EXP_REWARD, 0); - } - player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java index 6fc95b32fc..b49d5c445c 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java @@ -99,9 +99,17 @@ public class Kaysen extends AbstractNpcAI { if (player.calculateDistance3D(npc) < Npc.INTERACTION_DISTANCE) { + if (npc.isScriptValue(1)) + { + break; + } + npc.setScriptValue(1); + if (Rnd.get(100) < REWARD_CHANCE) { - player.addItem("Kaysen Reward", REWARD, player, true); + npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_THOUGHT_I_D_BE_A_PUSHOVER_DIDN_T_YOU); + giveItems(player, REWARD); + startQuestTimer("KAYSEN_DELETE", 3000, npc, null); } else { @@ -111,6 +119,12 @@ public class Kaysen extends AbstractNpcAI } break; } + case "KAYSEN_DELETE": + { + npc.deleteMe(); + startQuestTimer("KAYSEN_RESPAWN", 3600000, npc, null); + break; + } case "KAYSEN_TRANSFORM": { npc.deleteMe(); @@ -151,15 +165,19 @@ public class Kaysen extends AbstractNpcAI public String onKill(Npc npc, Player killer, boolean isSummon) { final Player player = killer.getActingPlayer(); - if (Math.abs(player.getLevel() - npc.getLevel()) > 9) + final int diff = player.getLevel() - npc.getLevel(); + if (diff > -9) { - player.addExpAndSp(EXP_REWARD / 40, 0); + if (diff > 9) + { + player.addExpAndSp(EXP_REWARD / diff, 0); + } + else + { + player.addExpAndSp(EXP_REWARD, 0); + } + player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); } - else - { - player.addExpAndSp(EXP_REWARD, 0); - } - player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java index 6fc95b32fc..b49d5c445c 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java @@ -99,9 +99,17 @@ public class Kaysen extends AbstractNpcAI { if (player.calculateDistance3D(npc) < Npc.INTERACTION_DISTANCE) { + if (npc.isScriptValue(1)) + { + break; + } + npc.setScriptValue(1); + if (Rnd.get(100) < REWARD_CHANCE) { - player.addItem("Kaysen Reward", REWARD, player, true); + npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_THOUGHT_I_D_BE_A_PUSHOVER_DIDN_T_YOU); + giveItems(player, REWARD); + startQuestTimer("KAYSEN_DELETE", 3000, npc, null); } else { @@ -111,6 +119,12 @@ public class Kaysen extends AbstractNpcAI } break; } + case "KAYSEN_DELETE": + { + npc.deleteMe(); + startQuestTimer("KAYSEN_RESPAWN", 3600000, npc, null); + break; + } case "KAYSEN_TRANSFORM": { npc.deleteMe(); @@ -151,15 +165,19 @@ public class Kaysen extends AbstractNpcAI public String onKill(Npc npc, Player killer, boolean isSummon) { final Player player = killer.getActingPlayer(); - if (Math.abs(player.getLevel() - npc.getLevel()) > 9) + final int diff = player.getLevel() - npc.getLevel(); + if (diff > -9) { - player.addExpAndSp(EXP_REWARD / 40, 0); + if (diff > 9) + { + player.addExpAndSp(EXP_REWARD / diff, 0); + } + else + { + player.addExpAndSp(EXP_REWARD, 0); + } + player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); } - else - { - player.addExpAndSp(EXP_REWARD, 0); - } - player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java index 6fc95b32fc..b49d5c445c 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java @@ -99,9 +99,17 @@ public class Kaysen extends AbstractNpcAI { if (player.calculateDistance3D(npc) < Npc.INTERACTION_DISTANCE) { + if (npc.isScriptValue(1)) + { + break; + } + npc.setScriptValue(1); + if (Rnd.get(100) < REWARD_CHANCE) { - player.addItem("Kaysen Reward", REWARD, player, true); + npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_THOUGHT_I_D_BE_A_PUSHOVER_DIDN_T_YOU); + giveItems(player, REWARD); + startQuestTimer("KAYSEN_DELETE", 3000, npc, null); } else { @@ -111,6 +119,12 @@ public class Kaysen extends AbstractNpcAI } break; } + case "KAYSEN_DELETE": + { + npc.deleteMe(); + startQuestTimer("KAYSEN_RESPAWN", 3600000, npc, null); + break; + } case "KAYSEN_TRANSFORM": { npc.deleteMe(); @@ -151,15 +165,19 @@ public class Kaysen extends AbstractNpcAI public String onKill(Npc npc, Player killer, boolean isSummon) { final Player player = killer.getActingPlayer(); - if (Math.abs(player.getLevel() - npc.getLevel()) > 9) + final int diff = player.getLevel() - npc.getLevel(); + if (diff > -9) { - player.addExpAndSp(EXP_REWARD / 40, 0); + if (diff > 9) + { + player.addExpAndSp(EXP_REWARD / diff, 0); + } + else + { + player.addExpAndSp(EXP_REWARD, 0); + } + player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); } - else - { - player.addExpAndSp(EXP_REWARD, 0); - } - player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java index 6fc95b32fc..b49d5c445c 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java @@ -99,9 +99,17 @@ public class Kaysen extends AbstractNpcAI { if (player.calculateDistance3D(npc) < Npc.INTERACTION_DISTANCE) { + if (npc.isScriptValue(1)) + { + break; + } + npc.setScriptValue(1); + if (Rnd.get(100) < REWARD_CHANCE) { - player.addItem("Kaysen Reward", REWARD, player, true); + npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_THOUGHT_I_D_BE_A_PUSHOVER_DIDN_T_YOU); + giveItems(player, REWARD); + startQuestTimer("KAYSEN_DELETE", 3000, npc, null); } else { @@ -111,6 +119,12 @@ public class Kaysen extends AbstractNpcAI } break; } + case "KAYSEN_DELETE": + { + npc.deleteMe(); + startQuestTimer("KAYSEN_RESPAWN", 3600000, npc, null); + break; + } case "KAYSEN_TRANSFORM": { npc.deleteMe(); @@ -151,15 +165,19 @@ public class Kaysen extends AbstractNpcAI public String onKill(Npc npc, Player killer, boolean isSummon) { final Player player = killer.getActingPlayer(); - if (Math.abs(player.getLevel() - npc.getLevel()) > 9) + final int diff = player.getLevel() - npc.getLevel(); + if (diff > -9) { - player.addExpAndSp(EXP_REWARD / 40, 0); + if (diff > 9) + { + player.addExpAndSp(EXP_REWARD / diff, 0); + } + else + { + player.addExpAndSp(EXP_REWARD, 0); + } + player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); } - else - { - player.addExpAndSp(EXP_REWARD, 0); - } - player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java index 6fc95b32fc..b49d5c445c 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java @@ -99,9 +99,17 @@ public class Kaysen extends AbstractNpcAI { if (player.calculateDistance3D(npc) < Npc.INTERACTION_DISTANCE) { + if (npc.isScriptValue(1)) + { + break; + } + npc.setScriptValue(1); + if (Rnd.get(100) < REWARD_CHANCE) { - player.addItem("Kaysen Reward", REWARD, player, true); + npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_THOUGHT_I_D_BE_A_PUSHOVER_DIDN_T_YOU); + giveItems(player, REWARD); + startQuestTimer("KAYSEN_DELETE", 3000, npc, null); } else { @@ -111,6 +119,12 @@ public class Kaysen extends AbstractNpcAI } break; } + case "KAYSEN_DELETE": + { + npc.deleteMe(); + startQuestTimer("KAYSEN_RESPAWN", 3600000, npc, null); + break; + } case "KAYSEN_TRANSFORM": { npc.deleteMe(); @@ -151,15 +165,19 @@ public class Kaysen extends AbstractNpcAI public String onKill(Npc npc, Player killer, boolean isSummon) { final Player player = killer.getActingPlayer(); - if (Math.abs(player.getLevel() - npc.getLevel()) > 9) + final int diff = player.getLevel() - npc.getLevel(); + if (diff > -9) { - player.addExpAndSp(EXP_REWARD / 40, 0); + if (diff > 9) + { + player.addExpAndSp(EXP_REWARD / diff, 0); + } + else + { + player.addExpAndSp(EXP_REWARD, 0); + } + player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); } - else - { - player.addExpAndSp(EXP_REWARD, 0); - } - player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java index 6fc95b32fc..b49d5c445c 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/ai/areas/RaidersCrossroads/Kaysen/Kaysen.java @@ -99,9 +99,17 @@ public class Kaysen extends AbstractNpcAI { if (player.calculateDistance3D(npc) < Npc.INTERACTION_DISTANCE) { + if (npc.isScriptValue(1)) + { + break; + } + npc.setScriptValue(1); + if (Rnd.get(100) < REWARD_CHANCE) { - player.addItem("Kaysen Reward", REWARD, player, true); + npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_THOUGHT_I_D_BE_A_PUSHOVER_DIDN_T_YOU); + giveItems(player, REWARD); + startQuestTimer("KAYSEN_DELETE", 3000, npc, null); } else { @@ -111,6 +119,12 @@ public class Kaysen extends AbstractNpcAI } break; } + case "KAYSEN_DELETE": + { + npc.deleteMe(); + startQuestTimer("KAYSEN_RESPAWN", 3600000, npc, null); + break; + } case "KAYSEN_TRANSFORM": { npc.deleteMe(); @@ -151,15 +165,19 @@ public class Kaysen extends AbstractNpcAI public String onKill(Npc npc, Player killer, boolean isSummon) { final Player player = killer.getActingPlayer(); - if (Math.abs(player.getLevel() - npc.getLevel()) > 9) + final int diff = player.getLevel() - npc.getLevel(); + if (diff > -9) { - player.addExpAndSp(EXP_REWARD / 40, 0); + if (diff > 9) + { + player.addExpAndSp(EXP_REWARD / diff, 0); + } + else + { + player.addExpAndSp(EXP_REWARD, 0); + } + player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); } - else - { - player.addExpAndSp(EXP_REWARD, 0); - } - player.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_OBTAINED_EXTRA_XP, ExShowScreenMessage.TOP_CENTER, 10000)); return super.onKill(npc, killer, isSummon); }