Addition of Chuseok Harvest Festival exploit checks.

This commit is contained in:
MobiusDevelopment
2022-09-23 21:07:07 +00:00
parent f3b3fa3633
commit 28457b496f
2 changed files with 59 additions and 44 deletions

View File

@@ -28,6 +28,8 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.quest.LongTimeEvent; import org.l2jmobius.gameserver.model.quest.LongTimeEvent;
import org.l2jmobius.gameserver.model.skill.SkillCaster;
import org.l2jmobius.gameserver.network.SystemMessageId;
/** /**
* @URL https://l2central.info/main/events_and_promos/1459.html * @URL https://l2central.info/main/events_and_promos/1459.html
@@ -60,45 +62,58 @@ public class ChuseokHarvestFestival extends LongTimeEvent
@Override @Override
public String onAdvEvent(String event, Npc npc, Player player) public String onAdvEvent(String event, Npc npc, Player player)
{ {
String htmltext = event; String htmltext = null;
switch (event) switch (event)
{ {
case "getTicket": case "getTicket":
{ {
if (npc.getId() != FULL_MOON)
{
break;
}
if (player.getLevel() < PLAYER_LEVEL) if (player.getLevel() < PLAYER_LEVEL)
{ {
htmltext = "no-level.htm"; htmltext = "no-level.htm";
break; break;
} }
else if (player.getVariables().getBoolean(CHUSEOK_HARVEST_FESTIVAL_VAR, false)) if (player.getVariables().getBoolean(CHUSEOK_HARVEST_FESTIVAL_VAR, false))
{ {
player.sendMessage("This character has already received a ticket. An account can receive a ticket once a day."); player.sendPacket(SystemMessageId.YOU_HAVE_ALREADY_BEEN_REWARDED_FOR_ENTERING_A_WISH_YOU_CAN_ONLY_MAKE_1_WISH_PER_CHARACTER);
return null;
}
else
{
giveItems(player, WISH_TICKET, 1);
player.getVariables().set(CHUSEOK_HARVEST_FESTIVAL_VAR, true);
player.getVariables().storeMe();
// htmltext = "34065-successful.htm"; // TODO: Addd retail html if any.
break; break;
} }
player.getVariables().set(CHUSEOK_HARVEST_FESTIVAL_VAR, true);
player.getVariables().storeMe();
giveItems(player, WISH_TICKET, 1);
break;
} }
case "getBuff": case "getBuff":
{ {
if (npc.getId() != FULL_MOON)
{
break;
}
if (player.getLevel() < PLAYER_LEVEL) if (player.getLevel() < PLAYER_LEVEL)
{ {
htmltext = "no-level.htm"; htmltext = "no-level.htm";
break; break;
} }
npc.setTarget(player); if (player.isAffectedBySkill(ENERGY_BUFF))
npc.doCast(ENERGY_BUFF.getSkill()); {
return null; player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_WISH_ONCE_ENTERED_PROCEED);
break;
}
SkillCaster.triggerCast(npc, player, ENERGY_BUFF.getSkill());
break;
} }
case "moveToTheMoon": case "moveToTheMoon":
{ {
player.teleToLocation(FULL_MOON_LOC, true); if (npc.getId() == MOON_RABBIT)
return ""; {
player.teleToLocation(FULL_MOON_LOC, true);
}
break;
} }
case "schedule": case "schedule":
{ {

View File

@@ -1026,34 +1026,34 @@
</effect> </effect>
</effects> </effects>
<endEffects> <endEffects>
<effect name="CallSkill" fromLevel="1" toLevel="23"> <effect name="CallSkill" fromLevel="1" toLevel="23">
<skillId>34288</skillId> <!-- Full Moon's Festive Energy --> <skillId>34288</skillId> <!-- Full Moon's Festive Energy -->
<skillLevel> <skillLevel>
<value level="1">2</value> <value level="1">2</value>
<value level="2">3</value> <value level="2">3</value>
<value level="3">4</value> <value level="3">4</value>
<value level="4">5</value> <value level="4">5</value>
<value level="5">6</value> <value level="5">6</value>
<value level="6">7</value> <value level="6">7</value>
<value level="7">8</value> <value level="7">8</value>
<value level="8">9</value> <value level="8">9</value>
<value level="9">10</value> <value level="9">10</value>
<value level="10">11</value> <value level="10">11</value>
<value level="11">12</value> <value level="11">12</value>
<value level="12">13</value> <value level="12">13</value>
<value level="13">14</value> <value level="13">14</value>
<value level="14">15</value> <value level="14">15</value>
<value level="15">16</value> <value level="15">16</value>
<value level="16">17</value> <value level="16">17</value>
<value level="17">18</value> <value level="17">18</value>
<value level="18">19</value> <value level="18">19</value>
<value level="19">20</value> <value level="19">20</value>
<value level="20">21</value> <value level="20">21</value>
<value level="21">22</value> <value level="21">22</value>
<value level="22">23</value> <value level="22">23</value>
<value level="23">24</value> <value level="23">24</value>
</skillLevel> </skillLevel>
</effect> </effect>
</endEffects> </endEffects>
</skill> </skill>
<skill id="34289" toLevel="2" name="Atelia's Weak Energy"> <skill id="34289" toLevel="2" name="Atelia's Weak Energy">