Merged with released L2J-Unity files.

This commit is contained in:
mobiusdev
2016-06-12 01:34:09 +00:00
parent e003e87887
commit 635557f5da
18352 changed files with 3245113 additions and 2892959 deletions

View File

@@ -0,0 +1,11 @@
<html><body scroll="no">
<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>(Only level 85 or higher Noblesse characters of an Awakened class</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center>can participate in the Olympiad games.)</td></tr>
<tr><td height=34></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager joinMatch" value="Back" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Back_Down" fore="L2UI_CT1.OlympiadWnd_DF_Back"></td></tr>
<tr><td height=200></td></tr>
</table>
</body></html>

View File

@@ -0,0 +1,12 @@
<html><body scroll="no">
<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>You have met the minimum match requirements.</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center>Would you like to calculate your points?</td></tr>
<tr><td height=34></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager calculatePointsDone" value="Calculate Points" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Back_Down" fore="L2UI_CT1.OlympiadWnd_DF_Back"></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager OlyManager-rewards.html" value="Back" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Back_Down" fore="L2UI_CT1.OlympiadWnd_DF_Back"></td></tr>
<tr><td height=100></td></tr>
</table>
</body></html>

View File

@@ -0,0 +1,9 @@
<html><body scroll="no">
<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>You have not met the minimum requirements to calculate your points.</td></tr>
<tr><td height=34></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager 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=230></td></tr>
</table>
</body></html>

View File

@@ -0,0 +1,11 @@
<html><body>Grand Olympiad Manager:<br>
Before partaking in the Olympiad,<br1>
why don't you learn about some of its history, rules, and point system?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest OlyManager OlyManager-infoHistory.html">"Ok, so what's the history?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest OlyManager OlyManager-infoRules.html">"Let's skip to the rules."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest OlyManager OlyManager-infoPoints.html">"Points sound important. What are they?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest OlyManager OlyManager-infoPointsCalc.html">"How are my points calculated?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest OlyManager OlyManager-rank.html">"I want to see the rankings for the last Olympiad."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest OlyManager index">Back</Button>
</body></html>

View File

@@ -0,0 +1,9 @@
<html><body scroll="no">Grand Olympiad Manager:<br><br>
<center>
This is the Grand Olympiad.<br>
Do you know much about its history?<br>
No?<br>
Well, during the mythical era of giants, the arena was created to foster peace and understanding among the races.<br><br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest OlyManager OlyManager-info.html">Back</Button>
</center>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body scroll="no">Grand Olympiad Manager:<br>
In order to become a hero, you must earn more Grand Olympiad Points in the time period than any other contestant. If you participate in a certain number of games, you can also exchange Grand Olympiad Points for Olympiad Tokens.<br>
<center>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest OlyManager OlyManager-info.html">Back</Button>
</center>
</body></html>

View File

@@ -0,0 +1,30 @@
<html><body>Grand Olympiad Manager:<br>
Once the Olympiad cycle ends, participating Noblesse are ranked by their Olympiad Points and given new points according to rank. You must participate in 10 or more matches within one Olympiad cycle in order to earn points. You can exchange 1 Olympiad Point for 20 Marks of Battle. For example, 45 Points are worth 900 Marks of Battle.<br>
Heroes, and those qualified to become one, receive additional Olympiad Tokens equivalent to 30 Marks of Battle. Those who win at least once in one cycle receive 10 bonus points.<br><br>
<center>
<table border="1" color="white" width=200 height=150>
<tr><td align="center">Rank</td>
<td align="center">Criteria</td>
<td align="center">Points</td>
</tr><tr><td align="center">1st Place</td>
<td>Top 1%</td><td align="center">60 pts</td>
</tr><tr><td align="center">2nd Place</td>
<td>Top 10%</td><td align="center">50 points</td>
</tr><tr> <td align="center">3rd Place</td>
<td>Top 25%</td> <td align="center">45 pts</td>
</tr><tr><td align="center">4th Place</td>
<td>Top 50%</td><td align="center">40 points</td>
</tr><tr><td align="center">5th Place</td>
<td>Bottom 50%</td><td align="center">30 pts</td>
</tr><tr><td align="center">1 or more wins in one cycle</td>
<td>Bonus</td><td align="center">10 pts</td>
</tr><tr><td align="center">No wins in one cycle</td>
<td>Bonus</td> <td align="center">5 pts</td>
</tr>
</table>
</center>
<br><br>
<center>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest OlyManager OlyManager-info.html">Back</Button>
</center>
</body></html>

View File

@@ -0,0 +1,13 @@
<html><body>Grand Olympiad Manager:<br>
The Grand Olympiad has the following rules:<br>
The Olympiad is only available from 20:00 to 23:40 every Friday and Saturday.<br>
There are two types of Olympiad matches: class-specific, and free-for-all.<br>
To become a hero of the Grand Olympiad, you must win the highest number of matches. The person or team who inflicts the most damage on their opponent -- not on the opponent's servitor, golem, or pet -- will be declared the winner.<br>
The winner of a match takes Olympiad Points from the loser, amounting to 1/5th of the total points belonging to whoever had less at the beginning.<br1>
For example, if one participant has 60 points and the other has 40, the winner of the match would receive 8 points (1/5th of 40), while the loser would lose 8 points. In a draw, each would lose 1/5 of their own points.<br>
The maximum number of points at stake is capped at 10.<br>
At the beginning of the Olympiad, and at regular intervals throughout the contest, all participants will be awarded a small amount of points. Contestants must have at least 1 point in order to compete in a match.<br>
<center>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest OlyManager OlyManager-info.html">Back</Button>
</center>
</body></html>

View File

@@ -0,0 +1,17 @@
<html><body scroll="no">
<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="L2UI_CH3.refinewnd_back_Pattern">
<tr><td valign="top" align="center">
<table border=0 cellpadding=0 cellspacing=0>
<tr><td height=50></td></tr>
<tr><td align=center>This week's match is 1 vs 1 Class Individual Match,<br1>1 vs 1 All-class Battle.</td></tr>
<tr><td height=15></td></tr>
<tr><td align=center><font color="bea27b">(Round %olympiad_round%, Week %olympiad_week%, Number of current participants: %olympiad_participant%)</font></td></tr>
<tr><td height=34></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager register1v1class" msg="1482" value="1 vs. 1 Class Individual Match" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Apply_Down" fore="L2UI_CT1.OlympiadWnd_DF_Apply"></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager register1v1" msg="1481" value="1 vs. 1 Match" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Fight1None_Down" fore="L2UI_CT1.OlympiadWnd_DF_Fight1None"></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager 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>
</td></tr>
</table>
</body></html>

View File

@@ -0,0 +1,16 @@
<html><body scroll="no">
<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="L2UI_CH3.refinewnd_back_Pattern">
<tr><td valign="top" align="center">
<table border=0 cellpadding=0 cellspacing=0>
<tr><td height=50></td></tr>
<tr><td align=center>This week's match is 1 vs 1 Class Individual Match.</td></tr>
<tr><td height=15></td></tr>
<tr><td align=center><font color="bea27b">(Round %olympiad_round%, Week %olympiad_week%, Number of current participants: %olympiad_participant%)</font></td></tr>
<tr><td height=34></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager register1v1class" msg="1481" value="1 vs 1 Match" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Fight1None_Down" fore="L2UI_CT1.OlympiadWnd_DF_Fight1None"></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager 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=80></td></tr>
</table>
</td></tr>
</table>
</body></html>

View File

@@ -0,0 +1,10 @@
<html><body scroll="no">
<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>Oh, carrier of the cursed sword.</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center>You are not qualified to participate in a match.</td></tr>
<tr><td height=34></td></tr>
<tr><td height=200></td></tr>
</table>
</body></html>

View File

@@ -0,0 +1,19 @@
<html><body scroll="no">
<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="L2UI_CH3.refinewnd_back_Pattern">
<tr><td valign="top" align="center">
<!-- Olympiad Emblem -->
<table border=0 cellpadding=0 cellspacing=0>
<tr><td width=256 height=185 background="L2UI_CT1.OlympiadWnd_DF_GrandTexture"></td></tr>
</table>
<!-- // Olympiad Emblem -->
<table border=0 cellpadding=0 cellspacing=0>
<tr><td align=center>Welcome to the Olympiad.</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center>(Only level 85 or higher Noblesse characters of an Awakened class</td></tr>
<tr><td align=center>can participate in the games.)</td></tr>
<tr><td height=40></td></tr>
<tr><td align=center><button action="bypass -h npc_%objectId%_watchmatch" value="Watch Match" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Watch_Down" fore="L2UI_CT1.OlympiadWnd_DF_Watch"></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager OlyManager-info.html" value="Examine" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Info_Down" fore="L2UI_CT1.OlympiadWnd_DF_Info"></td></tr>
</table>
</td></tr></table>
</body></html>

View File

@@ -0,0 +1,11 @@
<html><body scroll="no">
<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>Your current Olympiad score is</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center>0 points, so you cannot compete in a match.</td></tr>
<tr><td height=34></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager joinMatch" value="Back" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Back_Down" fore="L2UI_CT1.OlympiadWnd_DF_Back"></td></tr>
<tr><td height=200></td></tr>
</table>
</body></html>

View File

@@ -0,0 +1,19 @@
<html><body scroll="no">
<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="L2UI_CH3.refinewnd_back_Pattern">
<tr><td valign="top" align="center"><!-- Olympiad Emblem -->
<table border=0 cellpadding=0 cellspacing=0>
<tr><td width=256 height=185 background="L2UI_CT1.OlympiadWnd_DF_GrandTexture"></td></tr>
</table>
<!-- // Olympiad Emblem -->
<table border=0 cellpadding=0 cellspacing=0>
<tr><td align=center>Welcome to the Olympiad.</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center>Walk the path of the hero.</td></tr>
<tr><td height=19></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager joinMatch" value="Join Match" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Apply_Down" fore="L2UI_CT1.OlympiadWnd_DF_Apply"></td></tr>
<tr><td align=center><button action="bypass -h npc_%objectId%_watchmatch" value="Watch Match" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Watch_Down" fore="L2UI_CT1.OlympiadWnd_DF_Watch"></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager OlyManager-rewards.html" value="Rewards" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Reward_Down" fore="L2UI_CT1.OlympiadWnd_DF_Reward"></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager OlyManager-info.html" value="Information" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Info_Down" fore="L2UI_CT1.OlympiadWnd_DF_Info"></td></tr>
</table>
</td></tr></table>
</body></html>

View File

@@ -0,0 +1,46 @@
<html><body><center><br><br>
Olympiad Ranking <img src="L2UI.SquareWhite" width=270 height=1> <img src="L2UI.SquareBlank" width=1 height=3>
<table width=270 border=0>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_148">Sigel Phoenix Knight</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_149">Sigel Hell Knight</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_150">Sigel Eva's Templar </button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_151">Sigel Shillien Templar</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_152">Tyrr Duelist</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_153">Tyrr Dreadnought</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_154">Tyrr Titan</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_155">Tyrr Grand Khavatari</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_156">Tyrr Maestro</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_157">Tyrr Doombringer</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_158">Othell Adventurer</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_159">Othell Wind Rider</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_160">Othell Ghost Hunter</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_161">Othell Fortune Seeker</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_162">Yul Sagittarius</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_163">Yul Moonlight Sentinel</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_164">Yul Ghost Sentinel</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_165">Yul Trickster</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_166">Feoh Archmage</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_167">Feoh Soultaker</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_168">Feoh Mystic Muse</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_169">Feoh Storm Screamer</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_170">Feoh Soul Hound</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_171">Iss Hierophant</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_172">Iss Sword Muse</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_173">Iss Spectral Dancer</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_174">Iss Dominator</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_175">Iss Doomcryer</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_176">Wynn Arcana Lord</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_177">Wynn Elemental Master</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_178">Wynn Spectral Master</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_179">Aeore Cardinal</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_180">Aeore Eva's Saint</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_181">Aeore Shillien Saint</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_188">Eviscerator</button></td></tr>
<tr><td fixwidth=135 align=center><Button ALIGN=center action="bypass -h Quest OlyManager rank_189">Sayha's Seer</button></td></tr>
</table>
<img src="L2UI.SquareWhite" width=270 height=1> <img src="L2UI.SquareBlank" width=1 height=3>
<table width=270 border=0 cellpadding=0 cellspacing=0>
<tr><td width=90 height=20 align=center><button value="Back" action="bypass -h Quest OlyManager index" back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" width=80 height=27></td></tr>
</table>
</center>
</body></html>

View File

@@ -0,0 +1,30 @@
<html><body>
<center>
<br>
Olympiad Ranking
<img src="L2UI.SquareWhite" width=270 height=1>
<img src="L2UI.SquareBlank" width=1 height=3>
<table width=270 border=0 bgcolor="000000">
<tr><td fixwidth=100 align=center>%Rank1%</td> <td fixwidth=170 align=center>%Name1%</td></tr>
<tr><td fixwidth=100 align=center>%Rank2%</td> <td fixwidth=170 align=center>%Name2%</td></tr>
<tr><td fixwidth=100 align=center>%Rank3%</td> <td fixwidth=170 align=center>%Name3%</td></tr>
<tr><td fixwidth=100 align=center>%Rank4%</td> <td fixwidth=170 align=center>%Name4%</td></tr>
<tr><td fixwidth=100 align=center>%Rank5%</td> <td fixwidth=170 align=center>%Name5%</td></tr>
<tr><td fixwidth=100 align=center>%Rank6%</td> <td fixwidth=170 align=center>%Name6%</td></tr>
<tr><td fixwidth=100 align=center>%Rank7%</td> <td fixwidth=170 align=center>%Name7%</td></tr>
<tr><td fixwidth=100 align=center>%Rank8%</td> <td fixwidth=170 align=center>%Name8%</td></tr>
<tr><td fixwidth=100 align=center>%Rank9%</td> <td fixwidth=170 align=center>%Name9%</td></tr>
<tr><td fixwidth=100 align=center>%Rank10%</td> <td fixwidth=170 align=center>%Name10%</td></tr>
<tr><td fixwidth=100 align=center>%Rank11%</td> <td fixwidth=170 align=center>%Name11%</td></tr>
<tr><td fixwidth=100 align=center>%Rank12%</td> <td fixwidth=170 align=center>%Name12%</td></tr>
<tr><td fixwidth=100 align=center>%Rank13%</td> <td fixwidth=170 align=center>%Name13%</td></tr>
<tr><td fixwidth=100 align=center>%Rank14%</td> <td fixwidth=170 align=center>%Name14%</td></tr>
<tr><td fixwidth=100 align=center>%Rank15%</td> <td fixwidth=170 align=center>%Name15%</td></tr>
</table>
<img src="L2UI.SquareWhite" width=270 height=1><img src="L2UI.SquareBlank" width=1 height=3>
<table width=270 border=0 cellpadding=0 cellspacing=0>
<tr><td width=90 height=20 align=center><button value="Back" action="bypass -h Quest OlyManager index" back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" width=80 height=27></td></tr>
</table>
</center>
<br>
</body></html>

View File

@@ -0,0 +1,13 @@
<html><body scroll="no">
<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>You have already registered for a match.</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center>Do you wish to cancel?</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager unregister" msg="1480" value="Cancel" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Back_Down" fore="L2UI_CT1.OlympiadWnd_DF_Back"></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager 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=100></td></tr>
</table>
<br>
</body></html>

View File

@@ -0,0 +1,22 @@
<html><body scroll="no">
<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="L2UI_CH3.refinewnd_back_Pattern">
<tr><td height=30></td></tr>
<tr><td align=center>You can calculate your Olympiad points</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center>or trade items with tokens.</td></tr>
<tr><td height=20></td></tr>
<tr><td align=center>Keep in mind that when you exchange accessories or belts for Marks of Battle,</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center>the enchant level of accessories and belts used</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center>as ingredients will not be applied.</td></tr>
<tr><td height=24></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager calculatePoints" value="I want to calculate my points." width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Reward_Down" fore="L2UI_CT1.OlympiadWnd_DF_Reward"></td></tr>
<tr><td align=center><button action="bypass -h npc_%objectId%_multisell 2095" value="I want to buy Marks of Battle items." width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_BuyEquip_Down" fore="L2UI_CT1.OlympiadWnd_DF_BuyEquip"></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager showEquipmentReward" value="I want to buy equipment." width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_BuyEquip_Down" fore="L2UI_CT1.OlympiadWnd_DF_BuyEquip"></td></tr>
<tr><td align=center><button action="bypass -h npc_%objectId%_multisell 712" value="I want to buy miscellaneous items." width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_BuyEtc_Down" fore="L2UI_CT1.OlympiadWnd_DF_BuyEtc"></td></tr>
<tr><td align=center><button action="bypass -h npc_%objectId%_multisell 2109" value="I want to exchange Olympiad tokens." width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_BuyEtc_Down" fore="L2UI_CT1.OlympiadWnd_DF_BuyEtc"></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager 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=40></td></tr>
</table>
</body></html>

View File

@@ -0,0 +1,11 @@
<html><body scroll="no">
<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>While you have a subclass,</td></tr>
<tr><td height=10></td></tr>
<tr><td align=center>You cannot request an Olympiad match.</td></tr>
<tr><td height=34></td></tr>
<tr><td align=center><button action="bypass -h Quest OlyManager joinMatch" value="Back" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Back_Down" fore="L2UI_CT1.OlympiadWnd_DF_Back"></td></tr>
<tr><td height=200></td></tr>
</table>
</body></html>

View File

@@ -0,0 +1,400 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package ai.others.OlyManager;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.WeekFields;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.l2jmobius.Config;
import com.l2jmobius.commons.util.Rnd;
import com.l2jmobius.gameserver.data.xml.impl.MultisellData;
import com.l2jmobius.gameserver.enums.CategoryType;
import com.l2jmobius.gameserver.handler.BypassHandler;
import com.l2jmobius.gameserver.handler.IBypassHandler;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.base.ClassId;
import com.l2jmobius.gameserver.model.entity.Hero;
import com.l2jmobius.gameserver.model.olympiad.CompetitionType;
import com.l2jmobius.gameserver.model.olympiad.Olympiad;
import com.l2jmobius.gameserver.model.olympiad.OlympiadGameManager;
import com.l2jmobius.gameserver.model.olympiad.OlympiadGameTask;
import com.l2jmobius.gameserver.model.olympiad.OlympiadManager;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.ExOlympiadMatchList;
import ai.AbstractNpcAI;
/**
* Olympiad Manager AI.
* @author St3eT
*/
public final class OlyManager extends AbstractNpcAI implements IBypassHandler
{
// NPC
private static final int MANAGER = 31688;
// Misc
private static final Map<CategoryType, Integer> EQUIPMENT_MULTISELL = new HashMap<>();
{
EQUIPMENT_MULTISELL.put(CategoryType.SIGEL_GROUP, 917);
EQUIPMENT_MULTISELL.put(CategoryType.TYRR_GROUP, 918);
EQUIPMENT_MULTISELL.put(CategoryType.OTHELL_GROUP, 919);
EQUIPMENT_MULTISELL.put(CategoryType.YUL_GROUP, 920);
EQUIPMENT_MULTISELL.put(CategoryType.FEOH_GROUP, 921);
EQUIPMENT_MULTISELL.put(CategoryType.ISS_GROUP, 923);
EQUIPMENT_MULTISELL.put(CategoryType.WYNN_GROUP, 922);
EQUIPMENT_MULTISELL.put(CategoryType.AEORE_GROUP, 924);
}
private static final String[] BYPASSES =
{
"watchmatch",
"arenachange"
};
private static final Logger _LOG = Logger.getLogger(OlyManager.class.getName());
private OlyManager()
{
addStartNpc(MANAGER);
addFirstTalkId(MANAGER);
addTalkId(MANAGER);
BypassHandler.getInstance().registerHandler(this);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
switch (event)
{
case "OlyManager-info.html":
case "OlyManager-infoHistory.html":
case "OlyManager-infoRules.html":
case "OlyManager-infoPoints.html":
case "OlyManager-infoPointsCalc.html":
case "OlyManager-rank.html":
case "OlyManager-rewards.html":
{
htmltext = event;
break;
}
case "index":
{
htmltext = onFirstTalk(npc, player);
break;
}
case "joinMatch":
{
if (OlympiadManager.getInstance().isRegistered(player))
{
htmltext = "OlyManager-registred.html";
}
else
{
switch (LocalDate.now().get(WeekFields.of(DayOfWeek.MONDAY, 7).weekOfMonth()))
{
case 1:
case 2:
case 3: // First 3 weeks of month is 1v1 + 1v1 class matches
{
htmltext = getHtm(player.getHtmlPrefix(), "OlyManager-joinMatch.html");
break;
}
default:// Rest is only 1v1 class matches
{
htmltext = getHtm(player.getHtmlPrefix(), "OlyManager-joinMatchClass.html");
break;
}
}
htmltext = htmltext.replace("%olympiad_round%", String.valueOf(Olympiad.getInstance().getPeriod()));
htmltext = htmltext.replace("%olympiad_week%", String.valueOf(Olympiad.getInstance().getCurrentCycle()));
htmltext = htmltext.replace("%olympiad_participant%", String.valueOf(OlympiadManager.getInstance().getCountOpponents()));
}
break;
}
case "register1v1":
case "register1v1class":
{
if (player.isSubClassActive())
{
htmltext = "OlyManager-subclass.html";
}
else if (!player.isInCategory(CategoryType.AWAKEN_GROUP))
{
htmltext = "OlyManager-awaken.html";
}
else if (Olympiad.getInstance().getNoblePoints(player) <= 0)
{
htmltext = "OlyManager-noPoints.html";
}
else if (!player.isInventoryUnder80(false))
{
player.sendPacket(SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY);
}
else
{
if (event.equals("register1v1"))
{
OlympiadManager.getInstance().registerNoble(player, CompetitionType.NON_CLASSED);
}
else
{
OlympiadManager.getInstance().registerNoble(player, CompetitionType.CLASSED);
}
}
break;
}
case "unregister":
{
OlympiadManager.getInstance().unRegisterNoble(player);
break;
}
case "calculatePoints":
{
final int points = Olympiad.getInstance().getOlympiadTradePoint(player, false);
if (points == 0)
{
htmltext = "OlyManager-calculateNoEnough.html";
}
else if (points < 20)
{
if (Hero.getInstance().isUnclaimedHero(player.getObjectId()) || Hero.getInstance().isHero(player.getObjectId()))
{
htmltext = "OlyManager-calculateEnough.html";
}
else
{
htmltext = "OlyManager-calculateNoEnough.html";
}
}
else
{
htmltext = "OlyManager-calculateEnough.html";
}
break;
}
case "calculatePointsDone":
{
if (player.isInventoryUnder80(false))
{
final int tradePoints = Olympiad.getInstance().getOlympiadTradePoint(player, true);
if (tradePoints > 0)
{
giveItems(player, Config.ALT_OLY_COMP_RITEM, tradePoints * Config.ALT_OLY_MARK_PER_POINT);
}
}
else
{
player.sendPacket(SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY);
}
break;
}
case "showEquipmentReward":
{
int multisellId = -1;
if (player.getClassId() == ClassId.SAYHA_SEER)
{
multisellId = 926;
}
else if (player.getClassId() == ClassId.EVISCERATOR)
{
multisellId = 925;
}
else
{
for (CategoryType type : EQUIPMENT_MULTISELL.keySet())
{
if (player.isInCategory(type))
{
multisellId = EQUIPMENT_MULTISELL.get(type);
break;
}
}
}
if (multisellId > 0)
{
MultisellData.getInstance().separateAndSend(multisellId, player, npc, false);
}
break;
}
case "rank_148": // Sigel Phoenix Knight
case "rank_149": // Sigel Hell Knight
case "rank_150": // Sigel Eva's Templar
case "rank_151": // Sigel Shillien Templar
case "rank_152": // Tyrr Duelist
case "rank_153": // Tyrr Dreadnought
case "rank_154": // Tyrr Titan
case "rank_155": // Tyrr Grand Khavatari
case "rank_156": // Tyrr Maestro
case "rank_157": // Tyrr Doombringer
case "rank_158": // Othell Adventurer
case "rank_159": // Othell Wind Rider
case "rank_160": // Othell Ghost Hunter
case "rank_161": // Othell Fortune Seeker
case "rank_162": // Yul Sagittarius
case "rank_163": // Yul Moonlight Sentinel
case "rank_164": // Yul Ghost Sentinel
case "rank_165": // Yul Trickster
case "rank_166": // Feoh Archmage
case "rank_167": // Feoh Soultaker
case "rank_168": // Feoh Mystic Muse
case "rank_169": // Feoh Storm Screamer
case "rank_170": // Feoh Soul Hound
case "rank_171": // Iss Hierophant
case "rank_172": // Iss Sword Muse
case "rank_173": // Iss Spectral Dancer
case "rank_174": // Iss Dominator
case "rank_175": // Iss Doomcryer
case "rank_176": // Wynn Arcana Lord
case "rank_177": // Wynn Elemental Master
case "rank_178": // Wynn Spectral Master
case "rank_179": // Aeore Cardinal
case "rank_180": // Aeore Eva's Saint
case "rank_181": // Aeore Shillien Saint
case "rank_188": // Eviscerator
case "rank_189": // Sayha's Seer
{
final int classId = Integer.parseInt(event.replace("rank_", ""));
final List<String> names = Olympiad.getInstance().getClassLeaderBoard(classId);
htmltext = getHtm(player.getHtmlPrefix(), "OlyManager-rankDetail.html");
int index = 1;
for (String name : names)
{
htmltext = htmltext.replace("%Rank" + index + "%", String.valueOf(index));
htmltext = htmltext.replace("%Name" + index + "%", name);
index++;
if (index > 15)
{
break;
}
}
for (; index <= 15; index++)
{
htmltext = htmltext.replace("%Rank" + index + "%", "");
htmltext = htmltext.replace("%Name" + index + "%", "");
}
break;
}
}
return htmltext;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = null;
if (!player.isCursedWeaponEquipped())
{
htmltext = player.isNoble() ? "OlyManager-noble.html" : "OlyManager-noNoble.html";
}
else
{
htmltext = "OlyManager-noCursed.html";
}
return htmltext;
}
@Override
public boolean useBypass(String command, L2PcInstance activeChar, L2Character bypassOrigin)
{
try
{
final L2Npc olymanager = activeChar.getLastFolkNPC();
if (command.startsWith(BYPASSES[0])) // list
{
if (!Olympiad.getInstance().inCompPeriod())
{
activeChar.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS);
return false;
}
activeChar.sendPacket(new ExOlympiadMatchList());
}
else
{
if ((olymanager == null) || (olymanager.getId() != MANAGER) || (!activeChar.inObserverMode() && !activeChar.isInsideRadius(olymanager, 300, false, false)))
{
return false;
}
else if (OlympiadManager.getInstance().isRegisteredInComp(activeChar))
{
activeChar.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_OLYMPIAD_GAMES_MATCH_WHILE_YOU_ARE_ON_THE_WAITING_LIST);
return false;
}
else if (!Olympiad.getInstance().inCompPeriod())
{
activeChar.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS);
return false;
}
else if (activeChar.isOnEvent())
{
activeChar.sendMessage("You can not observe games while registered on an event");
return false;
}
else
{
final int arenaId = Integer.parseInt(command.substring(12).trim());
final OlympiadGameTask nextArena = OlympiadGameManager.getInstance().getOlympiadTask(arenaId);
if (nextArena != null)
{
final List<Location> spectatorSpawns = nextArena.getStadium().getZone().getSpectatorSpawns();
if (spectatorSpawns.isEmpty())
{
_LOG.warning(getClass().getSimpleName() + ": Zone: " + nextArena.getStadium().getZone() + " doesn't have specatator spawns defined!");
return false;
}
final Location loc = spectatorSpawns.get(Rnd.get(spectatorSpawns.size()));
activeChar.enterOlympiadObserverMode(loc, arenaId);
}
}
}
return true;
}
catch (Exception e)
{
_LOG.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e);
}
return false;
}
@Override
public String[] getBypassList()
{
return BYPASSES;
}
public static void main(String[] args)
{
new OlyManager();
}
}