Tomb Raider (933) quest adjustments.

Contributed by Neith.
This commit is contained in:
MobiusDevelopment 2021-03-30 07:36:20 +00:00
parent 043ae8f94e
commit 59f73e6ccc
4 changed files with 104 additions and 34 deletions

View File

@ -21,18 +21,23 @@ import java.util.Set;
import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.actor.Creature; // Imports belov needed for onEnterZone
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State; import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.ScriptZone;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
/** /**
* Tomb Raiders (933) * Tomb Raiders (933)
* @URL https://l2wiki.com/Tomb_Raiders * @URL https://l2wiki.com/Tomb_Raiders
* @author Sero * @author Sero, retail like modifications by Neith and CostyKiller
*/ */
public class Q00933_TombRaiders extends Quest public class Q00933_TombRaiders extends Quest
{ {
@ -49,10 +54,13 @@ public class Q00933_TombRaiders extends Quest
private static final int BENUSTA_REWARD_BOX = 81151; private static final int BENUSTA_REWARD_BOX = 81151;
// Misc // Misc
private static final String KILL_COUNT_VAR = "KillCount"; private static final String KILL_COUNT_VAR = "KillCount";
// Zone
private static final ScriptZone QUEST_ZONE = ZoneManager.getInstance().getZoneById(93300, ScriptZone.class); // Session Zone - Imperial Tomb
public Q00933_TombRaiders() public Q00933_TombRaiders()
{ {
super(933); super(933);
addEnterZoneId(QUEST_ZONE.getId());
addStartNpc(SEARCH_TEAM_TELEPORTER); addStartNpc(SEARCH_TEAM_TELEPORTER);
addTalkId(SEARCH_TEAM_TELEPORTER, LEOPARD); addTalkId(SEARCH_TEAM_TELEPORTER, LEOPARD);
addKillId(TOMB_GUARDIAN, TOMB_RAIDER, TOMB_WATCHER, TOMB_SOULTAKER, TOMB_PATROL); addKillId(TOMB_GUARDIAN, TOMB_RAIDER, TOMB_WATCHER, TOMB_SOULTAKER, TOMB_PATROL);
@ -141,30 +149,54 @@ public class Q00933_TombRaiders extends Quest
return htmltext; return htmltext;
} }
@Override
public String onEnterZone(Creature creature, ZoneType zone)
{
if (creature.isPlayer())
{
final QuestState qs = getQuestState(creature.getActingPlayer(), true);
if ((qs != null) && qs.isCreated())
{
qs.startQuest();
}
}
return super.onEnterZone(creature, zone);
}
@Override @Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final QuestState qs = getQuestState(killer, false); final Party party = killer.getParty();
if ((qs != null) && qs.isCond(1)) if (party != null)
{ {
final int killCount = qs.getInt(KILL_COUNT_VAR); party.getMembers().forEach(p -> processKill(npc, p));
if (killCount < 150) }
{ else
qs.set(KILL_COUNT_VAR, killCount + 1); {
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); processKill(npc, killer);
sendNpcLogList(killer);
}
else
{
qs.setCond(2);
qs.unset(KILL_COUNT_VAR);
}
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
// TODO: private void processKill(Npc npc, PlayerInstance killer)
// public String onEnterZone(Creature creature, ZoneType zone) {
final QuestState qs = getRandomPartyMemberState(killer, 1, 3, npc);
if (qs != null)
{
final PlayerInstance player = qs.getPlayer();
int killCount = qs.getInt(KILL_COUNT_VAR);
if (killCount < 150)
{
qs.set(KILL_COUNT_VAR, killCount + 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
if (killCount >= 150)
{
qs.setCond(2, true);
}
sendNpcLogList(player);
}
}
@Override @Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player) public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)

View File

@ -1158,4 +1158,7 @@
<zone name="Tauti_Scarab_Zone" id="80033" type="ScriptZone" shape="Cylinder" minZ="-9150" maxZ="-9000" rad="550"> <zone name="Tauti_Scarab_Zone" id="80033" type="ScriptZone" shape="Cylinder" minZ="-9150" maxZ="-9000" rad="550">
<node X="148800" Y="-153125" /> <node X="148800" Y="-153125" />
</zone> </zone>
<zone name="Imperial Tomb - Hunting Zone Spawn" id="93300" type="ScriptZone" shape="Cylinder" minZ="-2750" maxZ="-2700" rad="2000">
<node X="181409" Y="-78389" />
</zone>
</list> </list>

View File

@ -21,18 +21,23 @@ import java.util.Set;
import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.actor.Creature; // Imports belov needed for onEnterZone
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State; import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.ScriptZone;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
/** /**
* Tomb Raiders (933) * Tomb Raiders (933)
* @URL https://l2wiki.com/Tomb_Raiders * @URL https://l2wiki.com/Tomb_Raiders
* @author Sero * @author Sero, retail like modifications by Neith and CostyKiller
*/ */
public class Q00933_TombRaiders extends Quest public class Q00933_TombRaiders extends Quest
{ {
@ -49,10 +54,13 @@ public class Q00933_TombRaiders extends Quest
private static final int BENUSTA_REWARD_BOX = 81151; private static final int BENUSTA_REWARD_BOX = 81151;
// Misc // Misc
private static final String KILL_COUNT_VAR = "KillCount"; private static final String KILL_COUNT_VAR = "KillCount";
// Zone
private static final ScriptZone QUEST_ZONE = ZoneManager.getInstance().getZoneById(93300, ScriptZone.class); // Session Zone - Imperial Tomb
public Q00933_TombRaiders() public Q00933_TombRaiders()
{ {
super(933); super(933);
addEnterZoneId(QUEST_ZONE.getId());
addStartNpc(SEARCH_TEAM_TELEPORTER); addStartNpc(SEARCH_TEAM_TELEPORTER);
addTalkId(SEARCH_TEAM_TELEPORTER, LEOPARD); addTalkId(SEARCH_TEAM_TELEPORTER, LEOPARD);
addKillId(TOMB_GUARDIAN, TOMB_RAIDER, TOMB_WATCHER, TOMB_SOULTAKER, TOMB_PATROL); addKillId(TOMB_GUARDIAN, TOMB_RAIDER, TOMB_WATCHER, TOMB_SOULTAKER, TOMB_PATROL);
@ -141,30 +149,54 @@ public class Q00933_TombRaiders extends Quest
return htmltext; return htmltext;
} }
@Override
public String onEnterZone(Creature creature, ZoneType zone)
{
if (creature.isPlayer())
{
final QuestState qs = getQuestState(creature.getActingPlayer(), true);
if ((qs != null) && qs.isCreated())
{
qs.startQuest();
}
}
return super.onEnterZone(creature, zone);
}
@Override @Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final QuestState qs = getQuestState(killer, false); final Party party = killer.getParty();
if ((qs != null) && qs.isCond(1)) if (party != null)
{ {
final int killCount = qs.getInt(KILL_COUNT_VAR); party.getMembers().forEach(p -> processKill(npc, p));
if (killCount < 150) }
{ else
qs.set(KILL_COUNT_VAR, killCount + 1); {
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); processKill(npc, killer);
sendNpcLogList(killer);
}
else
{
qs.setCond(2);
qs.unset(KILL_COUNT_VAR);
}
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
// TODO: private void processKill(Npc npc, PlayerInstance killer)
// public String onEnterZone(Creature creature, ZoneType zone) {
final QuestState qs = getRandomPartyMemberState(killer, 1, 3, npc);
if (qs != null)
{
final PlayerInstance player = qs.getPlayer();
int killCount = qs.getInt(KILL_COUNT_VAR);
if (killCount < 150)
{
qs.set(KILL_COUNT_VAR, killCount + 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
if (killCount >= 150)
{
qs.setCond(2, true);
}
sendNpcLogList(player);
}
}
@Override @Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player) public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)

View File

@ -1158,4 +1158,7 @@
<zone name="Tauti_Scarab_Zone" id="80033" type="ScriptZone" shape="Cylinder" minZ="-9150" maxZ="-9000" rad="550"> <zone name="Tauti_Scarab_Zone" id="80033" type="ScriptZone" shape="Cylinder" minZ="-9150" maxZ="-9000" rad="550">
<node X="148800" Y="-153125" /> <node X="148800" Y="-153125" />
</zone> </zone>
<zone name="Imperial Tomb - Hunting Zone Spawn" id="93300" type="ScriptZone" shape="Cylinder" minZ="-2750" maxZ="-2700" rad="2000">
<node X="181409" Y="-78389" />
</zone>
</list> </list>