Addition of World Olympiad.
Thanks to nasseka and Sero.
This commit is contained in:
@@ -9,141 +9,141 @@
|
||||
# Also please understand what you are changing before you do so on a live server.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Enable Olympiad.
|
||||
# Default: True
|
||||
OlympiadEnabled = True
|
||||
|
||||
# Olympiad Start Time in Military hours Default 8pm (20)
|
||||
# Default: 20
|
||||
AltOlyStartTime = 20
|
||||
OlympiadStartTime = 20
|
||||
|
||||
# Olympiad Start Time for Min's, Default 00 so at the start of the hour.
|
||||
# Default: 00
|
||||
AltOlyMin = 00
|
||||
OlympiadMin = 00
|
||||
|
||||
# Olympiad Competition Period, Default 4 hours.
|
||||
# (If set different, should be increment by 10mins)
|
||||
# Default: 14400000
|
||||
AltOlyCPeriod = 14400000
|
||||
OlympiadCPeriod = 14400000
|
||||
|
||||
# Olympiad Battle Period, Default 5 minutes.
|
||||
# Default: 300000
|
||||
AltOlyBattle = 300000
|
||||
# Olympiad Battle Period, Default 100 seconds.
|
||||
# Default: 100000
|
||||
OlympiadBattle = 100000
|
||||
|
||||
# Olympiad Weekly Period, Default 1 week
|
||||
# Used for adding points to nobles
|
||||
# Default: 604800000
|
||||
AltOlyWPeriod = 604800000
|
||||
OlympiadWPeriod = 604800000
|
||||
|
||||
# Olympiad Validation Period, Default 24 Hours.
|
||||
# Default: 86400000
|
||||
AltOlyVPeriod = 86400000
|
||||
OlympiadVPeriod = 86400000
|
||||
|
||||
# Points for reaching Noblesse for the first time
|
||||
# Default: 10
|
||||
AltOlyStartPoints = 10
|
||||
|
||||
# Points every week
|
||||
# Default: 10
|
||||
AltOlyWeeklyPoints = 10
|
||||
# Default: 1000
|
||||
OlympiadStartPoints = 1000
|
||||
|
||||
# Required number of participants for the class based games
|
||||
# Default: 20
|
||||
AltOlyClassedParticipants = 20
|
||||
OlympiadClassedParticipants = 20
|
||||
|
||||
# Required number of participants for the non-class based games
|
||||
# Default: 10
|
||||
AltOlyNonClassedParticipants = 10
|
||||
OlympiadNonClassedParticipants = 10
|
||||
|
||||
# Reward for the winner
|
||||
# Format: itemId1,itemNum1;itemId2,itemNum2...
|
||||
# Default: 45584,12
|
||||
AltOlyWinReward = 45584,12
|
||||
OlympiadWinReward = 45584,12
|
||||
|
||||
# Reward for loser
|
||||
# Format: itemId1,itemNum1;itemId2,itemNum2...
|
||||
# Default: 45584,7
|
||||
AltOlyLoserReward = 45584,7
|
||||
OlympiadLoserReward = 45584,7
|
||||
|
||||
# ItemId used for exchanging to the points.
|
||||
# Default: 45584
|
||||
AltOlyCompRewItem = 45584
|
||||
OlympiadCompRewItem = 45584
|
||||
|
||||
# The minimum matches you need to participate to receive point rewards
|
||||
# Default: 10
|
||||
AltOlyMinMatchesForPoints = 10
|
||||
OlympiadMinMatchesForPoints = 10
|
||||
|
||||
# Rate to exchange points to reward item.
|
||||
# Default: 20
|
||||
AltOlyMarkPerPoint = 20
|
||||
OlympiadMarkPerPoint = 20
|
||||
|
||||
# Noblesse points awarded to Heroes.
|
||||
# Default: 30
|
||||
AltOlyHeroPoints = 30
|
||||
OlympiadHeroPoints = 30
|
||||
|
||||
# Noblesse points awarded to Rank 1 members.
|
||||
# Default: 100
|
||||
AltOlyRank1Points = 60
|
||||
OlympiadRank1Points = 60
|
||||
|
||||
# Noblesse points awarded to Rank 2 members.
|
||||
# Default: 75
|
||||
AltOlyRank2Points = 50
|
||||
OlympiadRank2Points = 50
|
||||
|
||||
# Noblesse points awarded to Rank 3 members.
|
||||
# Default: 55
|
||||
AltOlyRank3Points = 45
|
||||
OlympiadRank3Points = 45
|
||||
|
||||
# Noblesse points awarded to Rank 4 members.
|
||||
# Default: 40
|
||||
AltOlyRank4Points = 40
|
||||
OlympiadRank4Points = 40
|
||||
|
||||
# Noblesse points awarded to Rank 5 members.
|
||||
# Default: 30
|
||||
AltOlyRank5Points = 30
|
||||
OlympiadRank5Points = 30
|
||||
|
||||
# Maximum points that player can gain/lose on a match.
|
||||
# Default: 10
|
||||
AltOlyMaxPoints = 10
|
||||
OlympiadMaxPoints = 10
|
||||
|
||||
# Hero tables show last month's winners or current status.
|
||||
# Default: True
|
||||
AltOlyShowMonthlyWinners = True
|
||||
OlympiadShowMonthlyWinners = True
|
||||
|
||||
# Olympiad Managers announce each start of fight.
|
||||
# Default: True
|
||||
AltOlyAnnounceGames = True
|
||||
OlympiadAnnounceGames = True
|
||||
|
||||
# Restrict specified items in Olympiad. ItemID's need to be separated with a comma (ex. 1,200,350)
|
||||
# Equipped items will be moved to inventory during port.
|
||||
# Default:
|
||||
AltOlyRestrictedItems =
|
||||
OlympiadRestrictedItems =
|
||||
|
||||
# Enchant limit for items during Olympiad battles. Disabled = -1.
|
||||
# Default: -1
|
||||
AltOlyWeaponEnchantLimit = -1
|
||||
AltOlyArmorEnchantLimit = -1
|
||||
OlympiadWeaponEnchantLimit = -1
|
||||
OlympiadArmorEnchantLimit = -1
|
||||
|
||||
# Log all Olympiad fights and outcome to olympiad.csv file.
|
||||
# Default: False
|
||||
AltOlyLogFights = False
|
||||
OlympiadLogFights = False
|
||||
|
||||
# Time to wait before teleported to arena.
|
||||
# Default: 120
|
||||
AltOlyWaitTime = 120
|
||||
OlympiadWaitTime = 120
|
||||
|
||||
# Divider for points in classed and non-classed games
|
||||
# Default: 5
|
||||
AltOlyDividerClassed = 5
|
||||
AltOlyDividerNonClassed = 5
|
||||
OlympiadDividerClassed = 5
|
||||
OlympiadDividerNonClassed = 5
|
||||
|
||||
# Maximum number of matches a Noblesse character can join per week
|
||||
# Default: 30
|
||||
AltOlyMaxWeeklyMatches = 30
|
||||
# Default: 25
|
||||
OlympiadMaxWeeklyMatches = 25
|
||||
|
||||
# Enable competitions only on specific days. Usage: 1,2,3,4,5,6,7 (SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY)
|
||||
# Default: 6,7 (FRIDAY,SATURDAY)
|
||||
AltOlyCompetitionDays = 6,7
|
||||
OlympiadCompetitionDays = 6,7
|
||||
|
||||
# Change the type of delay between two Olympiads.
|
||||
# Available values: MONTH, WEEK, DAY
|
||||
# Default: MONTH
|
||||
AltOlyPeriod = MONTH
|
||||
OlympiadPeriod = MONTH
|
||||
|
||||
# Change the Olympiad frequency.
|
||||
# The value is a multiplier of period type,
|
||||
@@ -151,4 +151,4 @@ AltOlyPeriod = MONTH
|
||||
# then Olympiad will occur every 2 months.
|
||||
# Default: 1
|
||||
# Note! If type = DAY, multiplier must be >= 7!
|
||||
AltOlyPeriodMultiplier = 1
|
||||
OlympiadPeriodMultiplier = 1
|
||||
@@ -0,0 +1,26 @@
|
||||
<html><body>
|
||||
<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="L2UI_CH3.refinewnd_back_Pattern">
|
||||
<tr><td height=34></td></tr>
|
||||
<tr><td align=center>Select a weapon that suits you.</td></tr>
|
||||
<tr><td height=30></td></tr>
|
||||
<tr><td align=center>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48554" msg="1484">Legend's Infinity Shaper (Dagger)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48555" msg="1484">Legend's Infinity Cutter (1-H Sword)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48556" msg="1484">Legend's Infinity Slasher (2-H Sword)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48557" msg="1484">Legend's Infinity Avenger (1-H Blunt Weapon)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48558" msg="1484">Legend's Infinity Fighter (Fist)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48559" msg="1484">Legend's Infinity Stormer (Polearm)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48560" msg="1484">Legend's Infinity Thrower (Bow)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48561" msg="1484">Legend's Infinity Shooter (Crossbow)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48562" msg="1484">Legend's Infinity Buster (Magic Sword)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48563" msg="1484">Legend's Infinity Caster (Magic Blunt Weapon)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48564" msg="1484">Legend's Infinity Retributer (Two-handed Magic Blunt Weapon)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48565" msg="1484">Legend's Infinity Dual Sword (Dual Swords)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48566" msg="1484">Legend's Infinity Dual Dagger (Dual Daggers)</a><br>
|
||||
<a action="bypass -h Quest MonumentOfHeroes give_48567" msg="1484">Legend's Infinity Dual Blunt Weapon (Dual Blunt Weapon)</a><br>
|
||||
</td></tr>
|
||||
<tr><td height=34></td></tr>
|
||||
<tr><td align=center><button action="bypass -h Quest MonumentOfHeroes index" value="Back" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Back_Down" fore="L2UI_CT1.OlympiadWnd_DF_Back"></td></tr>
|
||||
<tr><td height=30></td></tr>
|
||||
</table>
|
||||
</body></html>
|
||||
@@ -67,6 +67,23 @@ public class MonumentOfHeroes extends AbstractNpcAI
|
||||
30404, // Infinity Dual Dagger (Dual Daggers)
|
||||
30405, // Infinity Dual Blunt Weapon (Dual Blunt Weapon)
|
||||
};
|
||||
private static final int[] WEAPONS_LEGEND =
|
||||
{
|
||||
48554, // Legend's Infinity Shaper (dagger)
|
||||
48555, // Legend's Infinity Cutter (1-H Sword)
|
||||
48556, // Legend's Infinity Slasher (2-H Sword)
|
||||
48557, // Legend's Infinity Avenger (1-H Blunt Weapon)
|
||||
48558, // Legend's Infinity Fighter (Fist)
|
||||
48559, // Legend's Infinity Stormer (Polearm)
|
||||
48560, // Legend's Infinity Thrower (bow)
|
||||
48561, // Legend's Infinity Guardian (crossbow)
|
||||
48562, // Legend's Infinity Buster (magic sword)
|
||||
48563, // Legend's Infinity Caster (magic blunt weapon)
|
||||
48564, // Legend's Infinity Retributer (two-handed magic blunt weapon)
|
||||
48565, // Legend's Infinity Dual Sword (Dual Swords)
|
||||
48566, // Legend's Infinity Dual Dagger (Dual Daggers)
|
||||
48567, // Legend's Infinity Dual Blunt Weapon (Dual Blunt Weapon)
|
||||
};
|
||||
|
||||
private MonumentOfHeroes()
|
||||
{
|
||||
@@ -143,7 +160,18 @@ public class MonumentOfHeroes extends AbstractNpcAI
|
||||
}
|
||||
case "heroWeapon":
|
||||
{
|
||||
if (Hero.getInstance().isHero(player.getObjectId()))
|
||||
if (player.isLegend())
|
||||
{
|
||||
if (player.isInventoryUnder80(false))
|
||||
{
|
||||
htmltext = hasAtLeastOneQuestItem(player, WEAPONS_LEGEND) || hasAtLeastOneQuestItem(player, WEAPONS) ? "MonumentOfHeroes-weaponHave.html" : "MonumentOfHeroes-weaponListLegend.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
player.sendPacket(SystemMessageId.NOT_ENOUGH_SPACE_IN_THE_INVENTORY_UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY);
|
||||
}
|
||||
}
|
||||
else if (Hero.getInstance().isHero(player.getObjectId()))
|
||||
{
|
||||
if (player.isInventoryUnder80(false))
|
||||
{
|
||||
@@ -270,6 +298,25 @@ public class MonumentOfHeroes extends AbstractNpcAI
|
||||
giveItems(player, weaponId, 1);
|
||||
break;
|
||||
}
|
||||
case "give_48554": // Infinity Shaper (dagger)
|
||||
case "give_48555": // Infinity Cutter (1-H Sword)
|
||||
case "give_48556": // Infinity Slasher (2-H Sword)
|
||||
case "give_48557": // Infinity Avenger (1-H Blunt Weapon)
|
||||
case "give_48558": // Infinity Fighter (Fist)
|
||||
case "give_48559": // Infinity Stormer (Polearm)
|
||||
case "give_48560": // Infinity Thrower (bow)
|
||||
case "give_48561": // Infinity Shooter (crossbow)
|
||||
case "give_48562": // Infinity Buster (magic sword)
|
||||
case "give_48563": // Infinity Caster (magic blunt weapon)
|
||||
case "give_48564": // Infinity Retributer (two-handed magic blunt weapon)
|
||||
case "give_48565": // Infinity Dual Sword (Dual Swords)
|
||||
case "give_48566": // Infinity Dual Dagger (Dual Daggers)
|
||||
case "give_48567": // Infinity Dual Blunt Weapon (Dual Blunt Weapon)
|
||||
{
|
||||
final int weaponId = Integer.parseInt(event.replace("give_", ""));
|
||||
giveItems(player, weaponId, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ package ai.others.OlyBuffer;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.skill.CommonSkill;
|
||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
@@ -32,13 +32,13 @@ public class OlyBuffer extends AbstractNpcAI
|
||||
// NPC
|
||||
private static final int OLYMPIAD_BUFFER = 36402;
|
||||
// Skills
|
||||
private static final SkillHolder BUFF = new SkillHolder(32415, 1); // Fantasia Harmony
|
||||
private static final SkillHolder[] BUFFS =
|
||||
private static final CommonSkill BUFF = CommonSkill.OLYMPIAD_HARMONY;
|
||||
private static final CommonSkill[] BUFFS =
|
||||
{
|
||||
new SkillHolder(32411, 1), // Olympiad - Horn Melody
|
||||
new SkillHolder(32412, 1), // Olympiad - Drum Melody
|
||||
new SkillHolder(32413, 1), // Olympiad - Pipe Organ Melody
|
||||
new SkillHolder(32414, 1), // Olympiad - Guitar Melody
|
||||
CommonSkill.OLYMPIAD_HORN_MELODY,
|
||||
CommonSkill.OLYMPIAD_DRUM_MELODY,
|
||||
CommonSkill.OLYMPIAD_PIPE_ORGAN_MELODY,
|
||||
CommonSkill.OLYMPIAD_GUITAR_MELODY,
|
||||
};
|
||||
|
||||
private OlyBuffer()
|
||||
@@ -75,9 +75,9 @@ public class OlyBuffer extends AbstractNpcAI
|
||||
return "olympiad_master003.htm";
|
||||
}
|
||||
|
||||
private void applyBuffs(Npc npc, Player player, SkillHolder skill)
|
||||
private void applyBuffs(Npc npc, Player player, CommonSkill skill)
|
||||
{
|
||||
for (SkillHolder holder : BUFFS)
|
||||
for (CommonSkill holder : BUFFS)
|
||||
{
|
||||
SkillCaster.triggerCast(npc, player, holder.getSkill());
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ import org.l2jmobius.gameserver.model.olympiad.OlympiadGameManager;
|
||||
import org.l2jmobius.gameserver.model.olympiad.OlympiadGameTask;
|
||||
import org.l2jmobius.gameserver.model.olympiad.OlympiadManager;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadMatchList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.olympiad.ExOlympiadMatchList;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
|
||||
@@ -188,7 +188,7 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler
|
||||
if (tradePoints > 0)
|
||||
{
|
||||
player.getVariables().remove(Olympiad.UNCLAIMED_OLYMPIAD_POINTS_VAR);
|
||||
giveItems(player, Config.ALT_OLY_COMP_RITEM, tradePoints * Config.ALT_OLY_MARK_PER_POINT);
|
||||
giveItems(player, Config.OLYMPIAD_COMP_RITEM, tradePoints * Config.OLYMPIAD_MARK_PER_POINT);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -386,7 +386,7 @@ public class Eraton extends AbstractNpcAI
|
||||
try (Connection con = DatabaseFactory.getConnection();
|
||||
PreparedStatement ps = con.prepareStatement("UPDATE olympiad_nobles SET olympiad_points=?, class_id=? WHERE charId='" + player.getObjectId() + "'"))
|
||||
{
|
||||
ps.setInt(1, Config.ALT_OLY_START_POINTS);
|
||||
ps.setInt(1, Config.OLYMPIAD_START_POINTS);
|
||||
ps.setInt(2, classId);
|
||||
ps.executeUpdate();
|
||||
}
|
||||
|
||||
@@ -16,12 +16,15 @@
|
||||
*/
|
||||
package handlers.usercommandhandlers;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.handler.IUserCommandHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
||||
import org.l2jmobius.gameserver.model.olympiad.OlympiadManager;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.olympiad.ExOlympiadRecord;
|
||||
|
||||
/**
|
||||
* Olympiad Stat user command.
|
||||
@@ -37,14 +40,25 @@ public class OlympiadStat implements IUserCommandHandler
|
||||
@Override
|
||||
public boolean useUserCommand(int id, Player player)
|
||||
{
|
||||
if (!Config.OLYMPIAD_ENABLED)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THE_OLYMPIAD_IS_NOT_HELD_RIGHT_NOW);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (id != COMMAND_IDS[0])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
final int nobleObjId = player.getObjectId();
|
||||
final WorldObject target = player.getTarget();
|
||||
if ((target == null) || !target.isPlayer() || (target.getActingPlayer().getNobleLevel() == 0))
|
||||
WorldObject target = player.getTarget();
|
||||
if ((target == null) || !target.isPlayer())
|
||||
{
|
||||
player.sendPacket(new ExOlympiadRecord(player, 1, OlympiadManager.getInstance().isRegistered(player) ? 1 : 0));
|
||||
return true;
|
||||
}
|
||||
else if ((target.getActingPlayer().getNobleLevel() == 0))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THIS_COMMAND_CAN_ONLY_BE_USED_WHEN_THE_TARGET_IS_AN_AWAKENED_NOBLESSE_EXALTED);
|
||||
return false;
|
||||
@@ -60,6 +74,7 @@ public class OlympiadStat implements IUserCommandHandler
|
||||
final SystemMessage sm2 = new SystemMessage(SystemMessageId.THIS_WEEK_YOU_CAN_PARTICIPATE_IN_A_TOTAL_OF_S1_MATCHES);
|
||||
sm2.addInt(Olympiad.getInstance().getRemainingWeeklyMatches(nobleObjId));
|
||||
player.sendPacket(sm2);
|
||||
player.sendPacket(new ExOlympiadRecord(player, 1, OlympiadManager.getInstance().isRegistered(player) ? 1 : 0));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user