QuestState and QuestTimer class cleanups.

This commit is contained in:
MobiusDevelopment
2020-01-24 18:04:25 +00:00
parent 90352a0447
commit b6eb8abc18
13 changed files with 321 additions and 526 deletions

View File

@@ -20,10 +20,14 @@ import java.util.HashMap;
import java.util.Map;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.cache.HtmCache;
import org.l2jmobius.gameserver.model.actor.instance.NpcInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml;
import org.l2jmobius.gameserver.network.serverpackets.TutorialEnableClientEvent;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
public class Tutorial extends Quest
{
@@ -208,7 +212,7 @@ public class Tutorial extends Quest
{
qs.showQuestionMark(12);
qs.playSound("ItemSound.quest_tutorial");
qs.onTutorialClientEvent(0);
onTutorialClientEvent(player, 0);
break;
}
}
@@ -253,12 +257,12 @@ public class Tutorial extends Quest
{
case 0:
{
qs.closeTutorialHtml();
closeTutorialHtml(player);
break;
}
case 1:
{
qs.closeTutorialHtml();
closeTutorialHtml(player);
qs.playTutorialVoice("tutorial_voice_006");
qs.showQuestionMark(1);
qs.playSound("ItemSound.quest_tutorial");
@@ -270,43 +274,43 @@ public class Tutorial extends Quest
{
qs.playTutorialVoice("tutorial_voice_003");
html = "tutorial_02.htm";
qs.onTutorialClientEvent(1);
onTutorialClientEvent(player, 1);
qs.set("Ex", "-5");
break;
}
case 3:
{
html = "tutorial_03.htm";
qs.onTutorialClientEvent(2);
onTutorialClientEvent(player, 2);
break;
}
case 5:
{
html = "tutorial_05.htm";
qs.onTutorialClientEvent(8);
onTutorialClientEvent(player, 8);
break;
}
case 7:
{
html = "tutorial_100.htm";
qs.onTutorialClientEvent(0);
onTutorialClientEvent(player, 0);
break;
}
case 8:
{
html = "tutorial_101.htm";
qs.onTutorialClientEvent(0);
onTutorialClientEvent(player, 0);
break;
}
case 10:
{
html = "tutorial_103.htm";
qs.onTutorialClientEvent(0);
onTutorialClientEvent(player, 0);
break;
}
case 12:
{
qs.closeTutorialHtml();
closeTutorialHtml(player);
break;
}
case 23:
@@ -360,14 +364,14 @@ public class Tutorial extends Quest
qs.playTutorialVoice("tutorial_voice_004");
html = "tutorial_03.htm";
qs.playSound("ItemSound.quest_tutorial");
qs.onTutorialClientEvent(2);
onTutorialClientEvent(player, 2);
}
else if ((eventId == 2) && (player.getLevel() < 6))
{
qs.playTutorialVoice("tutorial_voice_005");
html = "tutorial_05.htm";
qs.playSound("ItemSound.quest_tutorial");
qs.onTutorialClientEvent(8);
onTutorialClientEvent(player, 8);
}
else if ((eventId == 8) && (player.getLevel() < 6))
{
@@ -399,14 +403,14 @@ public class Tutorial extends Quest
qs.playSound("ItemSound.quest_tutorial");
qs.set("Die", "1");
qs.showQuestionMark(8);
qs.onTutorialClientEvent(0);
onTutorialClientEvent(player, 0);
}
else if ((eventId == 800000) && (player.getLevel() < 6) && (qs.getInt("sit") == 0))
{
qs.playTutorialVoice("tutorial_voice_018");
qs.playSound("ItemSound.quest_tutorial");
qs.set("sit", "1");
qs.onTutorialClientEvent(0);
onTutorialClientEvent(player, 0);
html = "tutorial_21z.htm";
}
else if (eventId == 40)
@@ -523,7 +527,7 @@ public class Tutorial extends Quest
qs.playSound("ItemSound.quest_tutorial");
qs.set("HP", "1");
qs.showQuestionMark(10);
qs.onTutorialClientEvent(800000);
onTutorialClientEvent(player, 800000);
}
else if ((eventId == 57) && (player.getLevel() < 6) && (qs.getInt("Adena") == 0))
{
@@ -574,7 +578,7 @@ public class Tutorial extends Quest
case 3:
{
html = "tutorial_09.htm";
qs.onTutorialClientEvent(1048576);
onTutorialClientEvent(player, 1048576);
break;
}
case 5:
@@ -699,10 +703,32 @@ public class Tutorial extends Quest
{
return null;
}
qs.showTutorialHTML(html);
showTutorialHTML(player, html);
return null;
}
private void showTutorialHTML(PlayerInstance player, String html)
{
String text = HtmCache.getInstance().getHtm("data/scripts/ai/others/Tutorial/" + html);
if (text == null)
{
LOGGER.warning("missing html page data/scripts/ai/others/Tutorial/" + html);
text = "<html><body>File data/scripts/ai/others/Tutorial/" + html + " not found or file is empty.</body></html>";
}
player.sendPacket(new TutorialShowHtml(text));
}
private void closeTutorialHtml(PlayerInstance player)
{
player.sendPacket(TutorialCloseHtml.STATIC_PACKET);
}
private void onTutorialClientEvent(PlayerInstance player, int number)
{
player.sendPacket(new TutorialEnableClientEvent(number));
}
public static void main(String[] args)
{
new Tutorial();

View File

@@ -199,7 +199,7 @@ public class Q104_SpiritOfMirrors extends Quest
return null;
}
if (st.getItemEquipped(Inventory.PAPERDOLL_RHAND) == GALLINS_OAK_WAND)
if (player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) == GALLINS_OAK_WAND)
{
switch (npc.getNpcId())

View File

@@ -342,7 +342,7 @@ public class Q212_TrialOfDuty extends Quest
break;
case 27119:
if ((cond == 2) && (st.getItemEquipped(Inventory.PAPERDOLL_RHAND) == OLD_KNIGHT_SWORD))
if ((cond == 2) && (player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) == OLD_KNIGHT_SWORD))
{
st.set("cond", "3");
st.playSound(QuestState.SOUND_MIDDLE);

View File

@@ -531,7 +531,7 @@ public class Q218_TestimonyOfLife extends Quest
break;
case 27077:
if ((st.getInt("cond") == 18) && (st.getItemEquipped(Inventory.PAPERDOLL_RHAND) == TALINS_SPEAR))
if ((st.getInt("cond") == 18) && (player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) == TALINS_SPEAR))
{
st.set("cond", "19");
st.playSound(QuestState.SOUND_MIDDLE);

View File

@@ -401,7 +401,7 @@ public class Q224_TestOfSagittarius extends Quest
case SERPENT_DEMON_KADESH:
if (st.getInt("cond") == 13)
{
if (st.getItemEquipped(Inventory.PAPERDOLL_RHAND) == CRESCENT_MOON_BOW)
if (player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) == CRESCENT_MOON_BOW)
{
st.set("cond", "14");
st.playSound(QuestState.SOUND_MIDDLE);

View File

@@ -630,7 +630,7 @@ public class Q229_TestOfWitchcraft extends Quest
}
else if ((cond == 9) && _drevanulPrinceZeruel)
{
if (st.getItemEquipped(7) == SWORD_OF_BINDING)
if (attacker.getInventory().getPaperdollItemId(7) == SWORD_OF_BINDING)
{
_swordOfBinding = true;

View File

@@ -213,7 +213,7 @@ public class Q401_PathToAWarrior extends Quest
case 20038:
case 20043:
if ((st.getInt("cond") == 5) && (st.getItemEquipped(Inventory.PAPERDOLL_RHAND) == RUSTED_BRONZE_SWORD_3) && st.dropItemsAlways(POISON_SPIDER_LEG, 1, 20))
if ((st.getInt("cond") == 5) && (player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) == RUSTED_BRONZE_SWORD_3) && st.dropItemsAlways(POISON_SPIDER_LEG, 1, 20))
{
st.set("cond", "6");
}

View File

@@ -196,7 +196,7 @@ public class Q403_PathToARogue extends Quest
return null;
}
final int equippedItemId = st.getItemEquipped(Inventory.PAPERDOLL_RHAND);
final int equippedItemId = player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND);
if ((equippedItemId != NETI_BOW) || (equippedItemId != NETI_DAGGER))
{
return null;

View File

@@ -17,6 +17,7 @@
package quests.Q648_AnIceMerchantsDream;
import org.l2jmobius.Config;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.model.actor.instance.NpcInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
@@ -116,7 +117,7 @@ public class Q648_AnIceMerchantsDream extends Quest
}
case "32023-05.htm":
{
if (qs.getRandom(100) <= 25)
if (Rnd.get(100) <= 25)
{
qs.giveItems(BLACK_ICE, 1);
qs.playSound("ItemSound3.sys_enchant_sucess");
@@ -229,7 +230,7 @@ public class Q648_AnIceMerchantsDream extends Quest
int chance = (int) ((npc.getNpcId() - 22050) * Config.RATE_DROP_QUEST);
chance /= 100;
int numItems = chance;
int random = qs.getRandom(100);
int random = Rnd.get(100);
if (random <= chance)
{
numItems += 1;
@@ -241,7 +242,7 @@ public class Q648_AnIceMerchantsDream extends Quest
}
final int cond = qs.getInt("cond");
random = qs.getRandom(100);
random = Rnd.get(100);
if ((cond == 2) && (random <= 10))
{
qs.giveItems(HEMOCYTE, 1);

View File

@@ -165,7 +165,7 @@ public class SagasSuperClass extends Quest
final NpcInstance archon = st2.addSpawn(_mob[1], xx, yy, zz);
addSpawn(st2, archon);
st2.set("spawned", "1");
st2.startQuestTimer("Archon Hellisha has despawned", 600000, archon);
startQuestTimer("Archon Hellisha has despawned", 600000, archon, st2.getPlayer());
archon.broadcastNpcSay(_text[13].replace("PLAYERNAME", st2.getPlayer().getName()));
((Attackable) archon).addDamageHate(st2.getPlayer(), 0, 99999);
archon.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, st2.getPlayer(), null);
@@ -391,8 +391,8 @@ public class SagasSuperClass extends Quest
{
final NpcInstance mob1 = st.addSpawn(_mob[0], _x[0], _y[0], _z[0]);
st.set("spawned", "1");
st.startQuestTimer("Mob_1 Timer 1", 500, mob1);
st.startQuestTimer("Mob_1 has despawned", 300000, mob1);
startQuestTimer("Mob_1 Timer 1", 500, mob1, player);
startQuestTimer("Mob_1 has despawned", 300000, mob1, player);
addSpawn(st, mob1);
htmltext = "7-02.htm";
}
@@ -436,10 +436,10 @@ public class SagasSuperClass extends Quest
st.set("Mob_2", String.valueOf(mob2.getObjectId()));
st.set("Quest0", "1");
st.set("Quest1", "45");
st.startRepeatingQuestTimer("Mob_3 Timer 1", 500, mob3);
st.startQuestTimer("Mob_3 has despawned", 59000, mob3);
st.startQuestTimer("Mob_2 Timer 1", 500, mob2);
st.startQuestTimer("Mob_2 has despawned", 60000, mob2);
startQuestTimer("Mob_3 Timer 1", 500, mob3, player, true);
startQuestTimer("Mob_3 has despawned", 59000, mob3, player);
startQuestTimer("Mob_2 Timer 1", 500, mob2, player);
startQuestTimer("Mob_2 has despawned", 60000, mob2, player);
htmltext = "10-02.htm";
}
else if (st.getInt("Quest1") == 45)
@@ -506,7 +506,7 @@ public class SagasSuperClass extends Quest
else if (event.equals("Mob_2 Timer 1"))
{
npc.broadcastNpcSay(_text[7].replace("PLAYERNAME", player.getName()));
st.startQuestTimer("Mob_2 Timer 2", 1500, npc);
startQuestTimer("Mob_2 Timer 2", 1500, npc, player);
if (st.getInt("Quest1") == 45)
{
st.set("Quest1", "0");
@@ -516,15 +516,15 @@ public class SagasSuperClass extends Quest
else if (event.equals("Mob_2 Timer 2"))
{
npc.broadcastNpcSay(_text[8].replace("PLAYERNAME", player.getName()));
st.startQuestTimer("Mob_2 Timer 3", 10000, npc);
startQuestTimer("Mob_2 Timer 3", 10000, npc, player);
return null;
}
else if (event.equals("Mob_2 Timer 3"))
{
if (st.getInt("Quest0") == 0)
{
st.startQuestTimer("Mob_2 Timer 3", 13000, npc);
if (st.getRandom(2) == 0)
startQuestTimer("Mob_2 Timer 3", 13000, npc, player);
if (Rnd.nextBoolean())
{
npc.broadcastNpcSay(_text[9].replace("PLAYERNAME", player.getName()));
}
@@ -553,7 +553,7 @@ public class SagasSuperClass extends Quest
}
else
{
st.startQuestTimer("Mob_2 has despawned", 1000, npc);
startQuestTimer("Mob_2 has despawned", 1000, npc, player);
}
return null;
}