-Implemented new cubics & cubic skills.

-Fixed some visual bugs (character see removed cubic, not see seed talisman aura until re-equip talisman).
-Removed unused packet ExGetBossRecord (I forgot remove this in my raid points patch).

Contributed by NviX.
This commit is contained in:
MobiusDev 2015-07-07 12:50:33 +00:00
parent f25a32b9f7
commit 71fd68697b
11 changed files with 551 additions and 235 deletions

View File

@ -1568,7 +1568,7 @@
</enchant1for>
</skill>
<skill id="10041" levels="4" name="Summon Cubic of Despair">
<!-- AUTO GENERATED SKILL -->
<!-- NOT USED -->
<set name="icon" val="icon.skill0010" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
@ -1578,7 +1578,7 @@
<set name="reuseDelay" val="30000" />
</skill>
<skill id="10042" levels="3" name="Summon Cubic of Life">
<!-- AUTO GENERATED SKILL -->
<!-- NOT USED -->
<set name="icon" val="icon.skill0010" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
@ -1595,16 +1595,13 @@
<set name="reuseDelay" val="30000" />
<set name="mpConsume" val="#mpConsume" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="skillType" val="SUMMON" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<set name="activationchance" val="40" />
<set name="activationtime" val="13" />
<set name="maxcount" val="30" />
<set name="cubicPower" val="2106" />
<set name="isCubic" val="true" />
<set name="npcId" val="16" />
<set name="summonTotalLifeTime" val="900000" />
<for>
<effect name="SummonCubic">
<param cubicId="16" cubicDelay="13" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" />
</effect>
</for>
</skill>
<skill id="10044" levels="1" name="Superior Elemental Mastery">
<!-- STR + 2 and Attribute Resistance + 20. -->
@ -1833,8 +1830,7 @@
</for>
</skill>
<skill id="10055" levels="1" name="Cubic Attack">
<!-- AUTO GENERATED SKILL -->
<!-- Momentarily decreases P. Atk. Effect 3. -->
<!-- NOT USED -->
<set name="icon" val="icon.skill1164" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="targetType" val="SELF" />
@ -1848,17 +1844,18 @@
<table name="#abnormalLvl">1 2 3 4 5 6 7 8</table>
<table name="#magicLvl">85 86 88 90 92 94 96 98</table>
<table name="#HpHealPercent">0 0 0 0 0 3 6 10</table>
<set name="castRange" val="600" />
<set name="abnormalTime" val="#abnormalTime" />
<set name="abnormalLvl" val="#abnormalLvl" />
<set name="effectRange" val="1100" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="skillType" val="BUFF" />
<set name="targetType" val="SELF" />
<set name="targetType" val="ONE" />
<set name="magicLvl" val="#magicLvl" />
<set name="isMagic" val="1" />
<for>
<effect name="DispelByCategory">
<param slot="debuff" rate="100" max="10" />
</effect>
<effect name="HealPercent" noicon="1" val="#HpHealPercent" />
<effect name="Buff" val="0">
<effect name="Buff">
<set stat="debuffImmunity" val="1" />
<add stat="pDef" val="#pDef" />
<add stat="mDef" val="#mDef" />
@ -1866,8 +1863,7 @@
</for>
</skill>
<skill id="10057" levels="1" name="Cubic Curse">
<!-- AUTO GENERATED SKILL -->
<!-- Inflicted with poison and HP is momentarily decreased. Effect 5. -->
<!-- NOT USED -->
<set name="icon" val="icon.skill1168" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="targetType" val="SELF" />
@ -2158,25 +2154,23 @@
</effect>
</for>
</skill>
<!-- Level 1 : Summons a Melody Cubic. The Melody Cubic uses magic to restore its owner's HP and MP. -->
<!-- Level 2 : Summons a Melody Cubic. The Melody Cubic uses magic to restore its owner's HP and MP. -->
<!-- Level 3 : Summons a Melody Cubic. The Melody Cubic uses magic to restore its owner's HP and MP. -->
<!-- Level 4 : Summons a Melody Cubic. The Melody Cubic uses magic to restore its owner's HP and MP. -->
<skill id="10073" levels="4" name="Summon Buff Cubic">
<table name="#magicLvl"> 85 90 95 99 </table>
<set name="icon" val="icon.skill10073" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="mpConsume" val="96" />
<table name="#magicLvl">85 90 95 99</table>
<set name="hitTime" val="2200" />
<set name="coolTime" val="300" />
<set name="reuseDelay" val="30000" />
<set name="isMagic" val="1" />
<set name="mpConsume" val="96" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<for>
<effect name="SummonCubic">
<param cubicId="18" cubicDelay="10" cubicDuration="900" cubicMaxCount="30" />
</effect>
</for>
</skill>
<skill id="10074" levels="4" name="Summon Mind Cubic">
<!-- AUTO GENERATED SKILL -->
<!-- Summons the Mind Cubic. The Sigel Mind Cubic uses magic to restore the owner's MP. -->
<!-- NOT USED -->
<set name="icon" val="icon.skill10074" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
@ -2244,37 +2238,37 @@
<set name="reuseDelay" val="30000" />
<set name="isMagic" val="4" />
</skill>
<!-- Level 1 : Summons a Phantom Cubic. It uses magic to decrease the enemy's physical and magic Spd. -->
<!-- Level 2 : Summons a Phantom Cubic. It uses magic to decrease the enemy's physical and magic Spd. -->
<!-- Level 3 : Summons a Phantom Cubic. It uses magic to decrease the enemy's physical and magic Spd. -->
<!-- Level 4 : Summons a Phantom Cubic. It uses magic to decrease the enemy's physical and magic Spd. -->
<skill id="10079" levels="4" name="Summon Phantom Cubic">
<table name="#magicLvl"> 85 90 95 99 </table>
<set name="icon" val="icon.skill10079" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="mpConsume" val="96" />
<table name="#magicLvl">85 90 95 99</table>
<table name="#cubicPower"> 2106 2506 2906 3506 </table> <!-- Need verify -->
<set name="hitTime" val="3500" />
<set name="coolTime" val="500" />
<set name="reuseDelay" val="30000" />
<set name="isMagic" val="1" />
<set name="targetType" val="ONE" />
<set name="mpConsume" val="96" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<for>
<effect name="SummonCubic">
<param cubicId="20" cubicDelay="10" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" cubicPower="#cubicPower" />
</effect>
</for>
</skill>
<!-- Level 1 : Summons the Hex Cubic, which uses magic to decrease the enemy's P. Def. and M. Def. -->
<!-- Level 2 : Summons the Hex Cubic, which uses magic to decrease the enemy's P. Def. and M. Def. -->
<!-- Level 3 : Summons the Hex Cubic, which uses magic to decrease the enemy's P. Def. and M. Def. -->
<!-- Level 4 : Summons the Hex Cubic, which uses magic to decrease the enemy's P. Def. and M. Def. -->
<skill id="10080" levels="4" name="Summon Hex Cubic">
<table name="#magicLvl"> 85 90 95 99 </table>
<set name="icon" val="icon.skill10080" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="mpConsume" val="96" />
<table name="#magicLvl">85 90 95 99</table>
<table name="#cubicPower"> 2106 2506 2906 3506 </table> <!-- Need verify -->
<set name="hitTime" val="3500" />
<set name="coolTime" val="500" />
<set name="reuseDelay" val="30000" />
<set name="isMagic" val="1" />
<set name="targetType" val="ONE" />
<set name="mpConsume" val="96" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<for>
<effect name="SummonCubic">
<param cubicId="21" cubicDelay="3" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" cubicPower="#cubicPower" />
</effect>
</for>
</skill>
<skill id="10081" levels="4" name="Lightning Root">
<!-- AUTO GENERATED SKILL -->
@ -2291,45 +2285,99 @@
<set name="isDebuff" val="true" />
</skill>
<skill id="10082" levels="4" name="Strong Cubic Heal">
<!-- AUTO GENERATED SKILL -->
<set name="icon" val="icon.skill0000" />
<table name="#amount"> 600 650 700 750 </table> <!-- Need verify -->
<table name="#effectPoints"> 900 1000 1100 1200 </table>
<table name="#magicLvl"> 85 90 95 99 </table>
<set name="effectPoint" val="#effectPoints" />
<set name="isMagic" val="1" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="ONE" />
<set name="reuseDelay" val="5000" />
<for>
<effect name="Heal">
<param power="#amount" />
</effect>
</for>
</skill>
<skill id="10083" levels="4" name="Basic Cubic Heal">
<!-- AUTO GENERATED SKILL -->
<set name="icon" val="icon.skill0000" />
<table name="#amount"> 400 450 500 600 </table> <!-- Need verify -->
<table name="#effectPoints"> 700 800 900 1000 </table>
<table name="#magicLvl"> 85 90 95 99 </table>
<set name="effectPoint" val="#effectPoints" />
<set name="isMagic" val="1" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="ONE" />
<set name="reuseDelay" val="5000" />
<for>
<effect name="Heal">
<param power="#amount" />
</effect>
</for>
</skill>
<skill id="10084" levels="4" name="Basic Cubic Mind">
<!-- AUTO GENERATED SKILL -->
<set name="icon" val="icon.skill0191" />
<table name="#amount"> 140 150 160 170 </table> <!-- Need verify -->
<table name="#effectPoints"> 900 1000 1100 1200 </table>
<table name="#magicLvl"> 85 90 95 99 </table>
<set name="effectPoint" val="#effectPoints" />
<set name="isMagic" val="1" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="ONE" />
<set name="reuseDelay" val="5000" />
<for>
<effect name="ManaHeal">
<param power="#amount" />
</effect>
</for>
</skill>
<skill id="10085" levels="4" name="Cubic Falter">
<!-- AUTO GENERATED SKILL -->
<!-- For 5 sec., Atk. Spd./ Casting Spd. - 5%. -->
<set name="icon" val="icon.skill1206" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="targetType" val="SELF" />
<set name="reuseDelay" val="5000" />
<set name="isMagic" val="1" />
<table name="#rate"> 0.95 0.93 0.9 0.85 </table>
<table name="#magicLvl"> 85 90 95 99 </table>
<set name="abnormalLvl" val="3" />
<set name="abnormalTime" val="5" />
<set name="activateRate" val="80" />
<set name="basicProperty" val="MEN" />
<set name="effectPoint" val="-700" />
<set name="isDebuff" val="true" />
<set name="isMagic" val="1" />
<set name="lvlBonusRate" val="2" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="ONE" />
<for>
<effect name="Debuff">
<mul stat="pAtkSpd" val="#rate" />
<mul stat="mAtkSpd" val="#rate" />
</effect>
</for>
</skill>
<skill id="10086" levels="4" name="Cubic Hex">
<!-- AUTO GENERATED SKILL -->
<!-- For 5 sec., P. Def./ M. Def. - 5%. -->
<set name="icon" val="icon.skill0122" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="targetType" val="SELF" />
<set name="reuseDelay" val="5000" />
<set name="isMagic" val="1" />
<table name="#rate"> 0.95 0.93 0.9 0.85 </table>
<table name="#magicLvl"> 85 90 95 99 </table>
<set name="abnormalLvl" val="3" />
<set name="abnormalTime" val="5" />
<set name="activateRate" val="80" />
<set name="basicProperty" val="MEN" />
<set name="effectPoint" val="-700" />
<set name="isDebuff" val="true" />
<set name="isMagic" val="1" />
<set name="lvlBonusRate" val="2" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="ONE" />
<for>
<effect name="Debuff">
<mul stat="pDef" val="#rate" />
<mul stat="mDef" val="#rate" />
</effect>
</for>
</skill>
<skill id="10087" levels="4" name="Blood Panther Roar">
<!-- AUTO GENERATED SKILL -->
@ -2359,11 +2407,21 @@
<set name="isDebuff" val="true" />
</skill>
<skill id="10089" levels="4" name="Strong Cubic Mind">
<!-- AUTO GENERATED SKILL -->
<set name="icon" val="icon.skill0191" />
<table name="#amount"> 200 250 300 350 </table> <!-- Need verify -->
<table name="#effectPoints"> 900 1000 1100 1200 </table>
<table name="#magicLvl"> 85 90 95 99 </table>
<set name="effectPoint" val="#effectPoints" />
<set name="isMagic" val="1" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="ONE" />
<set name="reuseDelay" val="5000" />
<for>
<effect name="ManaHeal">
<param power="#amount" />
</effect>
</for>
</skill>
<skill id="10090" levels="4" name="Provoking Shackle">
<!-- AUTO GENERATED SKILL -->
@ -2388,29 +2446,39 @@
<set name="reuseDelay" val="60000" />
<set name="targetType" val="SELF" />
</skill>
<!-- Level 1 : Summons a Guardian Cubic. The Guardian Cubic uses magic to increase its owner's Shield Defense and Spd. -->
<!-- Level 2 : Summons a Guardian Cubic. The Guardian Cubic uses magic to increase its owner's Shield Defense and Spd. -->
<!-- Level 3 : Summons a Guardian Cubic. The Guardian Cubic uses magic to increase its owner's Shield Defense and Spd. -->
<!-- Level 4 : Summons a Guardian Cubic. The Guardian Cubic uses magic to increase its owner's Shield Defense and Spd. -->
<skill id="10092" levels="4" name="Summon Guardian Cubic">
<table name="#magicLvl"> 85 90 95 99 </table>
<set name="icon" val="icon.skll10093" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="mpConsume" val="96" />
<table name="#magicLvl">85 90 95 99</table>
<set name="hitTime" val="2200" />
<set name="coolTime" val="300" />
<set name="reuseDelay" val="30000" />
<set name="isMagic" val="1" />
<set name="mpConsume" val="96" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<for>
<effect name="SummonCubic">
<param cubicId="22" cubicDelay="13" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" />
</effect>
</for>
</skill>
<skill id="10093" levels="4" name="Guardian Cubic">
<!-- AUTO GENERATED SKILL -->
<!-- Increases Shield P. Def. and Shield Defense. Spd. + 13. -->
<table name="#rate"> 1.1 1.2 1.3 1.4 </table>
<table name="#abnormalLvl"> 1 2 3 4 </table>
<table name="#magicLvl"> 85 90 95 99 </table>
<set name="icon" val="icon.skll10093" />
<set name="abnormalTime" val="5" />
<set name="abnormalLvl" val="#abnormalLvl" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="targetType" val="SELF" />
<set name="reuseDelay" val="5000" />
<set name="targetType" val="ONE" />
<set name="magicLvl" val="#magicLvl" />
<set name="isMagic" val="1" />
<for>
<effect name="Buff">
<mul stat="rShld" val="#rate" />
<mul stat="sDef" val="#rate" />
<add stat="runSpd" val="13" />
</effect>
</for>
</skill>
<!-- Level 1 : Strikes target and nearby enemies with a lightning bolt that inflicts non-attribute damage with 11997 Power. Paralyzes for 5 seconds. Consumes 1 Soulstone. -->
<!-- Level 2 : Strikes target and nearby enemies with a lightning bolt that inflicts non-attribute damage with 14177 Power. Paralyzes for 5 seconds. Consumes 2 Soulstones. -->

View File

@ -847,17 +847,10 @@
</effect>
</for>
</skill>
<!-- Level 1 : Summons an Avenging cubic. The summoned cubic cancels the summoner's debuffs. Additionally, it cancels the buffs of the summoner's target and inflicts Hold. -->
<!-- Level 2 : Summons an Avenging cubic. The summoned cubic cancels the summoner's debuffs. Additionally, it cancels the buffs of the summoner's target and inflicts Hold. -->
<!-- Level 3 : Summons an Avenging cubic. The summoned cubic cancels the summoner's debuffs. Additionally, it cancels the buffs of the summoner's target and inflicts Hold. -->
<!-- Level 4 : Summons an Avenging cubic. The summoned cubic cancels the summoner's debuffs. Additionally, it cancels the buffs of the summoner's target and inflicts Hold. -->
<!-- Level 5 : Summons an Avenging cubic. The summoned cubic cancels the summoner's debuffs. Additionally, it cancels the buffs of the summoner's target and inflicts Hold. -->
<!-- Level 6 : Summons an Avenging cubic. The summoned cubic cancels the summoner's debuffs. Additionally, it cancels the buffs of the summoner's target and inflicts Hold. -->
<!-- Level 7 : Summons an Avenging cubic. The summoned cubic cancels the summoner's debuffs. Additionally, it cancels the buffs of the summoner's target and inflicts Hold. -->
<!-- Level 8 : Summons an Avenging cubic. The summoned cubic cancels the summoner's debuffs. Additionally, it cancels the buffs of the summoner's target and inflicts Hold. -->
<skill id="11268" levels="8" name="Summon Avenging Cubic">
<table name="#magicLvl"> 85 86 88 90 92 94 96 98 </table>
<table name="#mpConsume"> 70 72 75 78 81 84 87 91 </table>
<table name="#cubicPower"> 2106 2306 2506 2706 2906 3106 3306 3506 </table>
<set name="icon" val="icon.skill11268" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
@ -867,6 +860,11 @@
<set name="reuseDelay" val="60000" />
<set name="isMagic" val="1" />
<set name="targetType" val="SELF" />
<for>
<effect name="SummonCubic">
<param cubicId="15" cubicDelay="10" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" cubicPower="#cubicPower" />
</effect>
</for>
</skill>
<!-- Level 1 : Consumes your MP to restore servitors' HP by 1308. -->
<!-- Level 2 : Consumes your MP to restore servitors' HP by 1336. -->
@ -1462,32 +1460,56 @@
<set name="isMagic" val="1" />
</skill>
<skill id="11292" levels="8" name="Cubic Cleanse">
<!-- AUTO GENERATED SKILL -->
<!-- Cancels debuffs on you. -->
<set name="icon" val="icon.skill0000" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<set name="castRange" val="600" />
<table name="#magicLvl"> 85 86 88 90 92 94 96 98 </table>
<set name="effectPoint" val="408" />
<set name="isMagic" val="1" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="SELF" />
<for>
<effect name="DispelByCategory">
<param slot="debuff" rate="100" max="10" />
</effect>
</for>
</skill>
<skill id="11293" levels="8" name="Cubic Cancellation">
<!-- AUTO GENERATED SKILL -->
<!-- Cancels the enemy's buff. -->
<set name="icon" val="icon.skill0000" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<set name="castRange" val="600" />
<table name="#magicLvl"> 85 86 88 90 92 94 96 98 </table>
<set name="effectPoint" val="-700" />
<set name="isMagic" val="1" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="ONE" />
<for>
<effect name="DispelByCategory">
<param slot="buff" rate="25" max="5" />
</effect>
</for>
</skill>
<skill id="11294" levels="8" name="Cubic Root">
<!-- AUTO GENERATED SKILL -->
<!-- Temporarily stops the enemy from moving. -->
<set name="icon" val="icon.skill1201" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="targetType" val="SELF" />
<set name="castRange" val="600" />
<set name="isMagic" val="1" />
<table name="#magicLvl"> 85 86 88 90 92 94 96 98 </table>
<set name="abnormalLvl" val="3" />
<set name="abnormalTime" val="5" />
<set name="abnormalType" val="ROOT_MAGICALLY" />
<set name="abnormalVisualEffect" val="ROOT" />
<set name="activateRate" val="80" />
<set name="basicProperty" val="MEN" />
<set name="effectPoint" val="-700" />
<set name="isDebuff" val="true" />
<set name="isMagic" val="1" />
<set name="lvlBonusRate" val="2" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="ONE" />
<set name="trait" val="HOLD" />
<for>
<effect name="Root" />
<effect name="DefenceTrait">
<param HOLD="100" />
</effect>
</for>
</skill>
<!-- Level 1 : INT + 2. Max HP + 4151 and P. Def. + 1155 when equipped with Light Armor. -->
<!-- Level 101 : INT + 2. Max HP + 4151 and P. Def. + 1188 when equipped with a Light Armor. Enchant Power: Increases Effect. (+ 1 Power | Increases the effect.) -->

View File

@ -144,44 +144,32 @@
</effect>
</for>
</skill>
<!-- Level 1 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. -->
<!-- Level 2 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. -->
<!-- Level 3 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. -->
<!-- Level 4 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. -->
<!-- Level 5 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. -->
<!-- Level 101 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. Enchant Power: Increases the effect. (+ 1 Power | Increases the effect.) -->
<!-- Level 102 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. Enchant Power: Increases the effect. (+ 2 Power | Increases the effect.) -->
<!-- Level 103 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. Enchant Power: Increases the effect. (+ 3 Power | Increases the effect.) -->
<!-- Level 104 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. Enchant Power: Increases the effect. (+ 4 Power | Increases the effect.) -->
<!-- Level 105 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. Enchant Power: Increases the effect. (+ 5 Power | Increases the effect.) -->
<!-- Level 106 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. Enchant Power: Increases the effect. (+ 6 Power | Increases the effect.) -->
<!-- Level 107 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. Enchant Power: Increases the effect. (+ 7 Power | Increases the effect.) -->
<!-- Level 108 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. Enchant Power: Increases the effect. (+ 8 Power | Increases the effect.) -->
<!-- Level 109 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. Enchant Power: Increases the effect. (+ 9 Power | Increases the effect.) -->
<!-- Level 110 : Summons a fairy that follows and periodically heals the selected party member for 60 seconds. Has a chance of recovering HP when attacked. Enchant Power: Increases the effect. (+ 10 Power | Increases the effect.) -->
<!-- Level 201 : Summons a fairy that follows and periodically heals the selected party member for 1 minute and 6 seconds. Has a chance of recovering HP when attacked. Enchant Time: Increases Duration. (+ 1 Time | Increases the effect's duration.) -->
<!-- Level 202 : Summons a fairy that follows and periodically heals the selected party member for 1 minute and 12 seconds. Has a chance of recovering HP when attacked. Enchant Time: Increases Duration. (+ 2 Time | Increases the effect's duration.) -->
<!-- Level 203 : Summons a fairy that follows and periodically heals the selected party member for 1 minute and 18 seconds. Has a chance of recovering HP when attacked. Enchant Time: Increases Duration. (+ 3 Time | Increases the effect's duration.) -->
<!-- Level 204 : Summons a fairy that follows and periodically heals the selected party member for 1 minute and 24 seconds. Has a chance of recovering HP when attacked. Enchant Time: Increases Duration. (+ 4 Time | Increases the effect's duration.) -->
<!-- Level 205 : Summons a fairy that follows and periodically heals the selected party member for 1 minute and 30 seconds. Has a chance of recovering HP when attacked. Enchant Time: Increases Duration. (+ 5 Time | Increases the effect's duration.) -->
<!-- Level 206 : Summons a fairy that follows and periodically heals the selected party member for 1 minute and 36 seconds. Has a chance of recovering HP when attacked. Enchant Time: Increases Duration. (+ 6 Time | Increases the effect's duration.) -->
<!-- Level 207 : Summons a fairy that follows and periodically heals the selected party member for 1 minute and 42 seconds. Has a chance of recovering HP when attacked. Enchant Time: Increases Duration. (+ 7 Time | Increases the effect's duration.) -->
<!-- Level 208 : Summons a fairy that follows and periodically heals the selected party member for 1 minute and 48 seconds. Has a chance of recovering HP when attacked. Enchant Time: Increases Duration. (+ 8 Time | Increases the effect's duration.) -->
<!-- Level 209 : Summons a fairy that follows and periodically heals the selected party member for 1 minute and 54 seconds. Has a chance of recovering HP when attacked. Enchant Time: Increases Duration. (+ 9 Time | Increases the effect's duration.) -->
<!-- Level 210 : Summons a fairy that follows and periodically heals the selected party member for 2 minutes. Has a chance of recovering HP when attacked. Enchant Time: Increases Duration. (+ 10 Time | Increases the effect's duration.) -->
<skill id="11754" levels="5" name="Fairy of Life">
<skill id="11754" levels="5" name="Fairy of Life" enchantGroup1="10" enchantGroup2="10">
<table name="#magicLvl"> 85 88 91 94 97 </table>
<table name="#mpConsume"> 43 46 48 52 55 </table>
<table name="#ench2Time"> 66 72 78 84 90 96 102 108 114 120 </table>
<set name="icon" val="icon.skill11754" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="mpConsume" val="#mpConsume" />
<set name="effectRange" val="600" />
<set name="hitTime" val="2200" />
<set name="coolTime" val="300" />
<set name="reuseDelay" val="15000" />
<set name="isMagic" val="1" />
<set name="targetType" val="SELF" />
<set name="targetType" val="PARTY_MEMBER" />
<enchant1 name="magicLvl" val="99" />
<enchant2 name="magicLvl" val="99" />
<for>
<effect name="SummonCubic">
<param cubicId="17" cubicDelay="10" cubicDuration="60" cubicMaxCount="30" />
</effect>
</for>
<enchant2for>
<effect name="SummonCubic">
<param cubicId="17" cubicDelay="10" cubicDuration="#ench2Time" cubicMaxCount="30" />
</effect>
</enchant2for>
</skill>
<skill id="11755" levels="8" name="Radiant Heal" enchantGroup1="10">
<!-- Heals target with 1488 Power added to M. Atk. If HP is full, CP is restored. -->

View File

@ -65,13 +65,29 @@
<set name="reuseDelay" val="7000" />
<set name="isMagic" val="1" />
</skill>
<skill id="11807" levels="5" name="Miracle of Fairy">
<!-- AUTO GENERATED SKILL -->
<set name="icon" val="icon.skill11807" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="targetType" val="SELF" />
<set name="castRange" val="600" />
<skill id="11807" levels="5" name="Miracle of Fairy" enchantGroup1="10">
<table name="#amount"> 500 520 540 560 580 </table> <!-- Need verify -->
<table name="#effectPoints"> 700 800 900 1000 1200 </table>
<table name="#magicLvl"> 85 88 91 94 97 </table>
<table name="#enchAmount"> 600 610 620 630 640 650 660 670 680 690 </table>
<set name="effectPoint" val="#effectPoints" />
<set name="isMagic" val="1" />
<set name="magicLvl" val="#magicLvl" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="ONE" />
<set name="reuseDelay" val="5000" />
<enchant1 name="magicLvl" val="99" />
<for>
<effect name="Heal">
<param power="#amount" />
</effect>
</for>
<enchant1for>
<effect name="Heal">
<param power="#enchAmount" />
</effect>
</enchant1for>
</skill>
<skill id="11808" levels="2" name="Elegance of Light">
<!-- AUTO GENERATED SKILL -->

View File

@ -35,6 +35,7 @@ import com.l2jserver.gameserver.model.actor.L2Attackable;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Summon;
import com.l2jserver.gameserver.model.actor.tasks.cubics.CubicAction;
import com.l2jserver.gameserver.model.actor.tasks.cubics.CubicBuff;
import com.l2jserver.gameserver.model.actor.tasks.cubics.CubicDisappear;
import com.l2jserver.gameserver.model.actor.tasks.cubics.CubicHeal;
import com.l2jserver.gameserver.model.effects.L2EffectType;
@ -67,6 +68,14 @@ public final class L2CubicInstance implements IIdentifiable
public static final int SMART_CUBIC_ARCANALORD = 12;
public static final int SMART_CUBIC_ELEMENTALMASTER = 13;
public static final int SMART_CUBIC_SPECTRALMASTER = 14;
public static final int AVENGING_CUBIC = 15;
public static final int KNIGHT_CUBIC = 16;
public static final int FAIRY_CUBIC = 17;
public static final int BUFF_CUBIC = 18;
public static final int MIND_CUBIC = 19; // NOT USED
public static final int PHANTOM_CUBIC = 20;
public static final int HEX_CUBIC = 21;
public static final int GUARDIAN_CUBIC = 22;
// Max range of cubic skills
// TODO: Check/fix the max range
@ -75,6 +84,14 @@ public final class L2CubicInstance implements IIdentifiable
// Cubic skills
public static final int SKILL_CUBIC_HEAL = 4051;
public static final int SKILL_CUBIC_CURE = 5579;
public static final int SKILL_CUBIC_HEALER = 11807;
public static final int SKILL_BUFF_CUBIC_HEAL = 10083;
public static final int SKILL_MIND_CUBIC_RECHARGE = 10084;
public static final int SKILL_BUFF_CUBIC_GREAT_HEAL = 10082;
public static final int SKILL_MIND_CUBIC_GREAT_RECHARGE = 10089;
public static final int SKILL_AVENGING_CUBIC_CLEANCE = 11292;
public static final int SKILL_KNIGHT_CUBIC = 10056;
public static final int SKILL_GUARDIAN_CUBIC = 10093;
private final L2PcInstance _owner;
private L2Character _target;
@ -156,6 +173,41 @@ public final class L2CubicInstance implements IIdentifiable
_skills.add(SkillData.getInstance().getSkill(4049, 8));
_skills.add(SkillData.getInstance().getSkill(5115, 4));
break;
case AVENGING_CUBIC:
_skills.add(SkillData.getInstance().getSkill(11292, level));
_skills.add(SkillData.getInstance().getSkill(11293, level));
_skills.add(SkillData.getInstance().getSkill(11294, level));
break;
case KNIGHT_CUBIC:
_skills.add(SkillData.getInstance().getSkill(10056, level));
doAction();
break;
case FAIRY_CUBIC:
_skills.add(SkillData.getInstance().getSkill(11807, level));
doAction();
break;
case BUFF_CUBIC:
_skills.add(SkillData.getInstance().getSkill(10082, level));
_skills.add(SkillData.getInstance().getSkill(10083, level));
_skills.add(SkillData.getInstance().getSkill(10084, level));
_skills.add(SkillData.getInstance().getSkill(10089, level));
doAction();
break;
case MIND_CUBIC: // NOT USED
_skills.add(SkillData.getInstance().getSkill(10084, level));
_skills.add(SkillData.getInstance().getSkill(10089, level));
doAction();
break;
case PHANTOM_CUBIC:
_skills.add(SkillData.getInstance().getSkill(10085, level));
break;
case HEX_CUBIC:
_skills.add(SkillData.getInstance().getSkill(10086, level));
break;
case GUARDIAN_CUBIC:
_skills.add(SkillData.getInstance().getSkill(10093, level));
doAction();
break;
}
_disappearTask = ThreadPoolManager.getInstance().scheduleGeneral(new CubicDisappear(this), cubicDuration * 1000); // disappear
}
@ -183,11 +235,21 @@ public final class L2CubicInstance implements IIdentifiable
case SMART_CUBIC_SPECTRALMASTER:
case SMART_CUBIC_EVATEMPLAR:
case SMART_CUBIC_SHILLIENTEMPLAR:
case AVENGING_CUBIC:
case PHANTOM_CUBIC:
case HEX_CUBIC:
_actionTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new CubicAction(this, _cubicSkillChance), 0, _cubicDelay);
break;
case LIFE_CUBIC:
case FAIRY_CUBIC:
case BUFF_CUBIC:
case MIND_CUBIC:
_actionTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new CubicHeal(this), 0, _cubicDelay);
break;
case KNIGHT_CUBIC:
case GUARDIAN_CUBIC:
_actionTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new CubicBuff(this, _cubicSkillChance), 0, _cubicDelay);
break;
}
}

View File

@ -98,7 +98,7 @@ public final class CubicAction implements Runnable
// Smart Cubic debuff cancel is 100%
boolean useCubicCure = false;
if ((_cubic.getId() >= L2CubicInstance.SMART_CUBIC_EVATEMPLAR) && (_cubic.getId() <= L2CubicInstance.SMART_CUBIC_SPECTRALMASTER))
if (((_cubic.getId() >= L2CubicInstance.SMART_CUBIC_EVATEMPLAR) && (_cubic.getId() <= L2CubicInstance.SMART_CUBIC_SPECTRALMASTER)) || (_cubic.getId() == L2CubicInstance.AVENGING_CUBIC))
{
for (BuffInfo info : _cubic.getOwner().getEffectList().getDebuffs())
{
@ -113,11 +113,20 @@ public final class CubicAction implements Runnable
if (useCubicCure)
{
// Smart Cubic debuff cancel is needed, no other skill is used in this activation period
MagicSkillUse msu = new MagicSkillUse(_cubic.getOwner(), _cubic.getOwner(), L2CubicInstance.SKILL_CUBIC_CURE, 1, 0, 0);
_cubic.getOwner().broadcastPacket(msu);
// The cubic has done an action, increase the current count
_currentCount.incrementAndGet();
if ((_cubic.getId() >= L2CubicInstance.SMART_CUBIC_EVATEMPLAR) && (_cubic.getId() <= L2CubicInstance.SMART_CUBIC_SPECTRALMASTER))
{
MagicSkillUse msu = new MagicSkillUse(_cubic.getOwner(), _cubic.getOwner(), L2CubicInstance.SKILL_CUBIC_CURE, 1, 0, 0);
_cubic.getOwner().broadcastPacket(msu);
// The cubic has done an action, increase the current count
_currentCount.incrementAndGet();
}
else
{
MagicSkillUse msu = new MagicSkillUse(_cubic.getOwner(), _cubic.getOwner(), L2CubicInstance.SKILL_AVENGING_CUBIC_CLEANCE, 1, 0, 0);
_cubic.getOwner().broadcastPacket(msu);
// The cubic has done an action, increase the current count
_currentCount.incrementAndGet();
}
}
else if (Rnd.get(1, 100) < _chance)
{

View File

@ -0,0 +1,124 @@
/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server 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.
*
* L2J Server 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 com.l2jserver.gameserver.model.actor.tasks.cubics;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Summon;
import com.l2jserver.gameserver.model.actor.instance.L2CubicInstance;
import com.l2jserver.gameserver.model.skills.Skill;
import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
import com.l2jserver.gameserver.taskmanager.AttackStanceTaskManager;
import com.l2jserver.util.Rnd;
/**
* @author NviX
*/
public final class CubicBuff implements Runnable
{
private static final Logger _log = Logger.getLogger(CubicBuff.class.getName());
private final L2CubicInstance _cubic;
private final AtomicInteger _currentCount = new AtomicInteger();
private final int _chance;
public CubicBuff(L2CubicInstance cubic, int chance)
{
_cubic = cubic;
_chance = chance;
}
@Override
public void run()
{
if (_cubic == null)
{
return;
}
if (_cubic.getOwner().isDead() || !_cubic.getOwner().isOnline())
{
_cubic.stopAction();
_cubic.getOwner().getCubics().remove(_cubic.getId());
_cubic.getOwner().broadcastUserInfo();
_cubic.cancelDisappear();
return;
}
// The cubic has already reached its limit and it will stay idle until its duration ends.
if ((_cubic.getCubicMaxCount() > -1) && (_currentCount.get() >= _cubic.getCubicMaxCount()))
{
_cubic.stopAction();
return;
}
try
{
if (!AttackStanceTaskManager.getInstance().hasAttackStanceTask(_cubic.getOwner()))
{
if (_cubic.getOwner().hasSummon())
{
for (L2Summon servitor : _cubic.getOwner().getServitors().values())
{
if (!AttackStanceTaskManager.getInstance().hasAttackStanceTask(servitor))
{
_cubic.stopAction();
return;
}
}
}
else
{
_cubic.stopAction();
return;
}
}
if (Rnd.get(1, 100) < _chance)
{
Skill skill = null;
for (Skill sk : _cubic.getSkills())
{
if ((sk.getId() == L2CubicInstance.SKILL_KNIGHT_CUBIC) || (sk.getId() == L2CubicInstance.SKILL_GUARDIAN_CUBIC))
{
skill = sk;
break;
}
}
final L2Character owner = _cubic.getOwner();
if (skill != null)
{
skill.activateSkill(owner, owner);
owner.broadcastPacket(new MagicSkillUse(owner, owner, skill.getId(), skill.getLevel(), 0, 0));
// The cubic has done an action, increase the current count
_currentCount.incrementAndGet();
}
}
}
catch (Exception e)
{
_log.log(Level.SEVERE, "", e);
}
}
}

View File

@ -18,6 +18,7 @@
*/
package com.l2jserver.gameserver.model.actor.tasks.cubics;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -25,6 +26,7 @@ import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.instance.L2CubicInstance;
import com.l2jserver.gameserver.model.skills.Skill;
import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
import com.l2jserver.util.Rnd;
/**
* Cubic heal task.
@ -34,6 +36,7 @@ public class CubicHeal implements Runnable
{
private static final Logger _log = Logger.getLogger(CubicHeal.class.getName());
private final L2CubicInstance _cubic;
private final AtomicInteger _currentCount = new AtomicInteger();
public CubicHeal(L2CubicInstance cubic)
{
@ -57,23 +60,104 @@ public class CubicHeal implements Runnable
return;
}
// The cubic has already reached its limit and it will stay idle until its duration ends.
if ((_cubic.getCubicMaxCount() > -1) && (_currentCount.get() >= _cubic.getCubicMaxCount()))
{
_cubic.stopAction();
return;
}
try
{
final Skill skill = _cubic.getSkills().stream().filter(s -> s.getId() == L2CubicInstance.SKILL_CUBIC_HEAL).findFirst().orElse(null);
if (skill == null)
Skill skill = null;
// Base chance 10% to use great skill
double chance = Rnd.get();
for (Skill sk : _cubic.getSkills())
{
return;
switch (sk.getId())
{
case L2CubicInstance.SKILL_CUBIC_HEAL:
case L2CubicInstance.SKILL_CUBIC_HEALER:
skill = sk;
break;
case L2CubicInstance.SKILL_BUFF_CUBIC_HEAL:
if (chance > 0.6)
{
skill = sk;
}
break;
case L2CubicInstance.SKILL_MIND_CUBIC_RECHARGE:
if ((chance > 0.2) && (chance <= 0.6))
{
skill = sk;
}
break;
case L2CubicInstance.SKILL_BUFF_CUBIC_GREAT_HEAL:
if ((chance > 0.1) && (chance <= 0.2))
{
skill = sk;
}
break;
case L2CubicInstance.SKILL_MIND_CUBIC_GREAT_RECHARGE:
if (chance <= 0.1)
{
skill = sk;
}
break;
}
if (skill != null)
{
break;
}
}
_cubic.cubicTargetForHeal();
final L2Character target = _cubic.getTarget();
if ((target != null) && !target.isDead())
if (skill != null)
{
if ((target.getMaxHp() - target.getCurrentHp()) > skill.getPower())
switch (skill.getId())
{
skill.activateSkill(_cubic, target);
_cubic.getOwner().broadcastPacket(new MagicSkillUse(_cubic.getOwner(), target, skill.getId(), skill.getLevel(), 0, 0));
case L2CubicInstance.SKILL_CUBIC_HEAL:
_cubic.cubicTargetForHeal();
final L2Character target = _cubic.getTarget();
if ((target != null) && !target.isDead())
{
if ((target.getMaxHp() - target.getCurrentHp()) > skill.getPower())
{
skill.activateSkill(_cubic.getOwner(), target);
_cubic.getOwner().broadcastPacket(new MagicSkillUse(_cubic.getOwner(), target, skill.getId(), skill.getLevel(), 0, 0));
// The cubic has done an action, increase the current count
_currentCount.incrementAndGet();
}
}
break;
case L2CubicInstance.SKILL_MIND_CUBIC_RECHARGE:
case L2CubicInstance.SKILL_MIND_CUBIC_GREAT_RECHARGE:
final L2Character owner = _cubic.getOwner();
if ((owner != null) && !owner.isDead())
{
if ((owner.getMaxMp() - owner.getCurrentMp()) > skill.getPower())
{
skill.activateSkill(owner, owner);
owner.broadcastPacket(new MagicSkillUse(owner, owner, skill.getId(), skill.getLevel(), 0, 0));
// The cubic has done an action, increase the current count
_currentCount.incrementAndGet();
}
}
break;
case L2CubicInstance.SKILL_CUBIC_HEALER:
case L2CubicInstance.SKILL_BUFF_CUBIC_HEAL:
case L2CubicInstance.SKILL_BUFF_CUBIC_GREAT_HEAL:
final L2Character _owner = _cubic.getOwner();
if ((_owner != null) && !_owner.isDead())
{
if ((_owner.getMaxHp() - _owner.getCurrentHp()) > skill.getPower())
{
skill.activateSkill(_owner, _owner);
_owner.broadcastPacket(new MagicSkillUse(_owner, _owner, skill.getId(), skill.getLevel(), 0, 0));
// The cubic has done an action, increase the current count
_currentCount.incrementAndGet();
}
}
break;
}
}
}

View File

@ -505,6 +505,9 @@ public class EnterWorld extends L2GameClientPacket
}
}
// Temp Fix
activeChar.broadcastUserInfo();
activeChar.sendPacket(SystemMessageId.WELCOME_TO_THE_WORLD_OF_LINEAGE_II);
AnnouncementsTable.getInstance().showAnnouncements(activeChar);

View File

@ -1,64 +0,0 @@
/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server 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.
*
* L2J Server 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 com.l2jserver.gameserver.network.serverpackets;
import java.util.Map;
/**
* @author KenM
*/
public class ExGetBossRecord extends L2GameServerPacket
{
private final Map<Integer, Integer> _bossRecordInfo;
private final int _ranking;
private final int _totalPoints;
public ExGetBossRecord(int ranking, int totalScore, Map<Integer, Integer> list)
{
_ranking = ranking;
_totalPoints = totalScore;
_bossRecordInfo = list;
}
@Override
protected void writeImpl()
{
writeC(0xFE);
writeH(0x34);
writeD(_ranking);
writeD(_totalPoints);
if (_bossRecordInfo == null)
{
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
}
else
{
writeD(_bossRecordInfo.size()); // list size
for (int bossId : _bossRecordInfo.keySet())
{
writeD(bossId);
writeD(_bossRecordInfo.get(bossId));
writeD(0x00); // ??
}
}
}
}

View File

@ -86,6 +86,10 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
{
addComponentType(UserInfoType.values());
}
// Visual Fix
_activeChar.sendPacket(new ExUserInfoEquipSlot(_activeChar));
_activeChar.sendPacket(new ExUserInfoCubic(_activeChar));
_activeChar.sendPacket(new ExUserInfoAbnormalVisualEffect(_activeChar));
}
@Override