Sync with L2jUnity (7db5b4f).
This commit is contained in:
parent
9e1d3569f0
commit
b9d3c99cf1
@ -3,6 +3,7 @@ CREATE TABLE IF NOT EXISTS `character_pet_skills_save` (
|
||||
`petObjItemId` INT NOT NULL DEFAULT 0,
|
||||
`skill_id` INT NOT NULL DEFAULT 0,
|
||||
`skill_level` INT(3) NOT NULL DEFAULT 1,
|
||||
`skill_sub_level` INT(4) NOT NULL DEFAULT '0',
|
||||
`remaining_time` INT NOT NULL DEFAULT 0,
|
||||
`buff_index` INT(2) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`petObjItemId`,`skill_id`,`skill_level`)
|
||||
|
@ -6,6 +6,7 @@ CREATE TABLE IF NOT EXISTS `character_shortcuts` (
|
||||
`type` decimal(3) ,
|
||||
`shortcut_id` decimal(16) ,
|
||||
`level` SMALLINT UNSIGNED ,
|
||||
`sub_level` INT(4) NOT NULL DEFAULT '0',
|
||||
`class_index` int(1) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`charId`,`slot`,`page`,`class_index`),
|
||||
KEY `shortcut_id` (`shortcut_id`)
|
||||
|
@ -3,6 +3,7 @@ CREATE TABLE IF NOT EXISTS `character_skills` (
|
||||
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`skill_id` INT NOT NULL DEFAULT 0,
|
||||
`skill_level` INT(4) NOT NULL DEFAULT 1,
|
||||
`skill_sub_level` INT(4) NOT NULL DEFAULT '0',
|
||||
`class_index` INT(1) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`charId`,`skill_id`,`class_index`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
@ -3,6 +3,7 @@ CREATE TABLE IF NOT EXISTS `character_skills_save` (
|
||||
`charId` INT NOT NULL DEFAULT 0,
|
||||
`skill_id` INT NOT NULL DEFAULT 0,
|
||||
`skill_level` INT(4) NOT NULL DEFAULT 1,
|
||||
`skill_sub_level` INT(4) NOT NULL DEFAULT '0',
|
||||
`remaining_time` INT NOT NULL DEFAULT 0,
|
||||
`reuse_delay` INT(8) NOT NULL DEFAULT 0,
|
||||
`systime` bigint(13) unsigned NOT NULL DEFAULT '0',
|
||||
|
@ -5,6 +5,7 @@ CREATE TABLE IF NOT EXISTS `character_summon_skills_save` (
|
||||
`summonSkillId` INT NOT NULL DEFAULT 0,
|
||||
`skill_id` INT NOT NULL DEFAULT 0,
|
||||
`skill_level` INT(3) NOT NULL DEFAULT 1,
|
||||
`skill_sub_level` INT(4) NOT NULL DEFAULT '0',
|
||||
`remaining_time` INT NOT NULL DEFAULT 0,
|
||||
`buff_index` INT(2) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`ownerId`,`ownerClassIndex`,`summonSkillId`,`skill_id`,`skill_level`)
|
||||
|
@ -13,6 +13,8 @@ CREATE TABLE IF NOT EXISTS `pledge_recruit` (
|
||||
`karma` tinyint(1) NOT NULL,
|
||||
`information` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`detailed_information` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`application_type` tinyint(1) NOT NULL,
|
||||
`recruit_type` tinyint(1) NOT NULL,
|
||||
PRIMARY KEY (`clan_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
|
||||
|
@ -14,20 +14,29 @@
|
||||
SiegeHourList = 16,20
|
||||
|
||||
# Taxes for castles
|
||||
# Tax in percent when is castle owned by npc's.
|
||||
# Default: 15
|
||||
# Buy tax in percent when is castle owned by npc's.
|
||||
# Defualt: 15
|
||||
BuyTaxForNeutralSide = 15
|
||||
SellTaxForNeutralSide = 0
|
||||
|
||||
# Tax in percent when is castle owned by player's and castle is on light side.
|
||||
# Default: 0
|
||||
# Buy tax in percent when is castle owned by player's and castle is on light side.
|
||||
# Defualt: 0
|
||||
BuyTaxForLightSide = 0
|
||||
|
||||
# Buy tax in percent when is castle owned by player's and castle is on dark side.
|
||||
# Defualt: 30
|
||||
BuyTaxForDarkSide = 30
|
||||
|
||||
# Sell tax in percent when is castle owned by npc's.
|
||||
# Defualt: 15
|
||||
SellTaxForNeutralSide = 15
|
||||
|
||||
# Sell tax in percent when is castle owned by player's and castle is on light side.
|
||||
# Defualt: 0
|
||||
SellTaxForLightSide = 0
|
||||
|
||||
# Tax in percent when is castle owned by player's and castle is on dark side.
|
||||
# Default: 30
|
||||
BuyTaxForDarkSide = 30
|
||||
SellTaxForDarkSide = 20
|
||||
# Sell tax in percent when is castle owned by player's and castle is on dark side.
|
||||
# Defualt: 30
|
||||
SellTaxForDarkSide = 30
|
||||
|
||||
# Teleport Function price
|
||||
# Price = 7 days
|
||||
|
@ -502,8 +502,8 @@ WorldChatPointsPerDay = 3
|
||||
|
||||
# The delay player must wait before sending new world chat message
|
||||
# Note: Value is in seconds
|
||||
# Default: 20sec
|
||||
WorldChatInterval = 20sec
|
||||
# Default: 20secs
|
||||
WorldChatInterval = 20secs
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
@ -1,203 +1,603 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/EnchantSkillGroups.xsd">
|
||||
<!-- 2nd Class Buffs Debuffs Toogle and Summons -->
|
||||
<group id="1">
|
||||
<enchant level="1" adena="74250" sp="575980" chance76="82" chance77="92" chance78="97" chance79="97" chance80="97" chance81="97" chance82="97" chance83="97" chance84="97" chance85="97" chance86="99" chance87="99" chance88="99" chance89="99" chance90="99" chance91="99" chance92="99" chance93="99" chance94="99" chance95="99" chance96="99" chance97="99" chance98="99" chance99="99" chance100="99" chance101="99" chance102="99" chance103="99" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="2" adena="74250" sp="575980" chance76="80" chance77="90" chance78="95" chance79="95" chance80="95" chance81="95" chance82="95" chance83="95" chance84="95" chance85="95" chance86="97" chance87="97" chance88="97" chance89="97" chance90="97" chance91="97" chance92="97" chance93="97" chance94="97" chance95="98" chance96="98" chance97="98" chance98="98" chance99="98" chance100="99" chance101="99" chance102="99" chance103="99" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="3" adena="74250" sp="575980" chance76="78" chance77="88" chance78="93" chance79="93" chance80="93" chance81="93" chance82="93" chance83="93" chance84="93" chance85="93" chance86="95" chance87="95" chance88="95" chance89="95" chance90="95" chance91="95" chance92="95" chance93="95" chance94="95" chance95="96" chance96="96" chance97="96" chance98="96" chance99="96" chance100="97" chance101="97" chance102="97" chance103="97" chance104="97" chance105="97" chance106="97" chance107="97" />
|
||||
<enchant level="4" adena="112050" sp="604535" chance76="52" chance77="76" chance78="86" chance79="91" chance80="91" chance81="91" chance82="91" chance83="91" chance84="91" chance85="91" chance86="93" chance87="93" chance88="93" chance89="93" chance90="93" chance91="93" chance92="93" chance93="93" chance94="93" chance95="94" chance96="94" chance97="94" chance98="94" chance99="94" chance100="95" chance101="95" chance102="95" chance103="95" chance104="95" chance105="95" chance106="95" chance107="95" />
|
||||
<enchant level="5" adena="112050" sp="604535" chance76="50" chance77="74" chance78="84" chance79="89" chance80="89" chance81="89" chance82="89" chance83="89" chance84="89" chance85="89" chance86="91" chance87="91" chance88="91" chance89="91" chance90="91" chance91="91" chance92="91" chance93="91" chance94="91" chance95="92" chance96="92" chance97="92" chance98="92" chance99="92" chance100="93" chance101="93" chance102="93" chance103="93" chance104="93" chance105="93" chance106="93" chance107="93" />
|
||||
<enchant level="6" adena="112050" sp="604535" chance76="48" chance77="72" chance78="82" chance79="87" chance80="87" chance81="87" chance82="87" chance83="87" chance84="87" chance85="87" chance86="89" chance87="89" chance88="89" chance89="89" chance90="89" chance91="89" chance92="89" chance93="89" chance94="89" chance95="90" chance96="90" chance97="90" chance98="90" chance99="90" chance100="91" chance101="91" chance102="91" chance103="91" chance104="91" chance105="91" chance106="91" chance107="91" />
|
||||
<enchant level="7" adena="150300" sp="634020" chance76="36" chance77="46" chance78="70" chance79="80" chance80="85" chance81="85" chance82="85" chance83="85" chance84="85" chance85="85" chance86="87" chance87="87" chance88="87" chance89="87" chance90="87" chance91="87" chance92="87" chance93="87" chance94="87" chance95="88" chance96="88" chance97="88" chance98="88" chance99="88" chance100="89" chance101="89" chance102="89" chance103="89" chance104="89" chance105="89" chance106="89" chance107="89" />
|
||||
<enchant level="8" adena="150300" sp="634020" chance76="34" chance77="44" chance78="68" chance79="78" chance80="83" chance81="83" chance82="83" chance83="83" chance84="83" chance85="83" chance86="85" chance87="85" chance88="85" chance89="85" chance90="85" chance91="85" chance92="85" chance93="85" chance94="85" chance95="86" chance96="86" chance97="86" chance98="86" chance99="86" chance100="87" chance101="87" chance102="87" chance103="87" chance104="87" chance105="87" chance106="87" chance107="87" />
|
||||
<enchant level="9" adena="150300" sp="634020" chance76="32" chance77="42" chance78="66" chance79="76" chance80="81" chance81="81" chance82="81" chance83="81" chance84="81" chance85="81" chance86="83" chance87="83" chance88="83" chance89="83" chance90="83" chance91="83" chance92="83" chance93="83" chance94="83" chance95="84" chance96="84" chance97="84" chance98="84" chance99="84" chance100="85" chance101="85" chance102="85" chance103="85" chance104="85" chance105="85" chance106="85" chance107="85" />
|
||||
<enchant level="10" adena="189000" sp="680020" chance76="20" chance77="30" chance78="40" chance79="64" chance80="74" chance81="79" chance82="79" chance83="79" chance84="79" chance85="79" chance86="81" chance87="81" chance88="81" chance89="81" chance90="81" chance91="81" chance92="81" chance93="81" chance94="81" chance95="82" chance96="82" chance97="82" chance98="82" chance99="82" chance100="83" chance101="83" chance102="83" chance103="83" chance104="83" chance105="83" chance106="83" chance107="83" />
|
||||
<enchant level="11" adena="189000" sp="680020" chance76="18" chance77="28" chance78="38" chance79="62" chance80="72" chance81="77" chance82="77" chance83="77" chance84="77" chance85="77" chance86="79" chance87="79" chance88="79" chance89="79" chance90="79" chance91="79" chance92="79" chance93="79" chance94="79" chance95="80" chance96="80" chance97="80" chance98="80" chance99="80" chance100="81" chance101="81" chance102="81" chance103="81" chance104="81" chance105="81" chance106="81" chance107="81" />
|
||||
<enchant level="12" adena="189000" sp="680020" chance76="16" chance77="26" chance78="36" chance79="60" chance80="70" chance81="75" chance82="75" chance83="75" chance84="75" chance85="75" chance86="77" chance87="77" chance88="77" chance89="77" chance90="77" chance91="77" chance92="77" chance93="77" chance94="77" chance95="78" chance96="78" chance97="78" chance98="78" chance99="78" chance100="79" chance101="79" chance102="79" chance103="79" chance104="79" chance105="79" chance106="79" chance107="79" />
|
||||
<enchant level="13" adena="228150" sp="711890" chance76="4" chance77="14" chance78="24" chance79="34" chance80="58" chance81="68" chance82="73" chance83="73" chance84="73" chance85="73" chance86="75" chance87="75" chance88="75" chance89="75" chance90="75" chance91="75" chance92="75" chance93="75" chance94="75" chance95="76" chance96="76" chance97="76" chance98="76" chance99="76" chance100="77" chance101="77" chance102="77" chance103="77" chance104="77" chance105="77" chance106="77" chance107="77" />
|
||||
<enchant level="14" adena="228150" sp="711890" chance76="2" chance77="12" chance78="22" chance79="32" chance80="56" chance81="66" chance82="71" chance83="71" chance84="71" chance85="71" chance86="73" chance87="73" chance88="73" chance89="73" chance90="73" chance91="73" chance92="73" chance93="73" chance94="73" chance95="74" chance96="74" chance97="74" chance98="74" chance99="74" chance100="75" chance101="75" chance102="75" chance103="75" chance104="75" chance105="75" chance106="75" chance107="75" />
|
||||
<enchant level="15" adena="228150" sp="711890" chance76="1" chance77="10" chance78="20" chance79="30" chance80="54" chance81="64" chance82="69" chance83="69" chance84="69" chance85="69" chance86="71" chance87="71" chance88="71" chance89="71" chance90="71" chance91="71" chance92="71" chance93="71" chance94="71" chance95="72" chance96="72" chance97="72" chance98="72" chance99="72" chance100="73" chance101="73" chance102="73" chance103="73" chance104="73" chance105="73" chance106="73" chance107="73" />
|
||||
<enchant level="16" adena="267750" sp="761540" chance76="1" chance77="1" chance78="8" chance79="18" chance80="28" chance81="52" chance82="62" chance83="67" chance84="67" chance85="67" chance86="69" chance87="69" chance88="69" chance89="69" chance90="69" chance91="69" chance92="69" chance93="69" chance94="69" chance95="70" chance96="70" chance97="70" chance98="70" chance99="70" chance100="71" chance101="71" chance102="71" chance103="71" chance104="71" chance105="71" chance106="71" chance107="71" />
|
||||
<enchant level="17" adena="267750" sp="761540" chance76="1" chance77="1" chance78="6" chance79="16" chance80="26" chance81="50" chance82="60" chance83="65" chance84="65" chance85="65" chance86="67" chance87="67" chance88="67" chance89="67" chance90="67" chance91="67" chance92="67" chance93="67" chance94="67" chance95="68" chance96="68" chance97="68" chance98="68" chance99="68" chance100="69" chance101="69" chance102="69" chance103="69" chance104="69" chance105="69" chance106="69" chance107="69" />
|
||||
<enchant level="18" adena="267750" sp="761540" chance76="1" chance77="1" chance78="4" chance79="14" chance80="24" chance81="48" chance82="58" chance83="63" chance84="63" chance85="63" chance86="65" chance87="65" chance88="65" chance89="65" chance90="65" chance91="65" chance92="65" chance93="65" chance94="65" chance95="66" chance96="66" chance97="66" chance98="66" chance99="66" chance100="67" chance101="67" chance102="67" chance103="67" chance104="67" chance105="67" chance106="67" chance107="67" />
|
||||
<enchant level="19" adena="307800" sp="795890" chance76="1" chance77="1" chance78="1" chance79="2" chance80="12" chance81="22" chance82="46" chance83="56" chance84="61" chance85="61" chance86="63" chance87="63" chance88="63" chance89="63" chance90="63" chance91="63" chance92="63" chance93="63" chance94="63" chance95="64" chance96="64" chance97="64" chance98="64" chance99="64" chance100="65" chance101="65" chance102="65" chance103="65" chance104="65" chance105="65" chance106="65" chance107="65" />
|
||||
<enchant level="20" adena="307800" sp="795890" chance76="1" chance77="1" chance78="1" chance79="1" chance80="10" chance81="20" chance82="44" chance83="54" chance84="59" chance85="59" chance86="61" chance87="61" chance88="61" chance89="61" chance90="61" chance91="61" chance92="61" chance93="61" chance94="61" chance95="62" chance96="62" chance97="62" chance98="62" chance99="62" chance100="63" chance101="63" chance102="63" chance103="63" chance104="63" chance105="63" chance106="63" chance107="63" />
|
||||
<enchant level="21" adena="307800" sp="795890" chance76="1" chance77="1" chance78="1" chance79="1" chance80="8" chance81="18" chance82="42" chance83="52" chance84="57" chance85="57" chance86="59" chance87="59" chance88="59" chance89="59" chance90="59" chance91="59" chance92="59" chance93="59" chance94="59" chance95="60" chance96="60" chance97="60" chance98="60" chance99="60" chance100="61" chance101="61" chance102="61" chance103="61" chance104="61" chance105="61" chance106="61" chance107="61" />
|
||||
<enchant level="22" adena="348300" sp="849330" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="6" chance82="16" chance83="40" chance84="50" chance85="55" chance86="57" chance87="57" chance88="57" chance89="57" chance90="57" chance91="57" chance92="57" chance93="57" chance94="57" chance95="58" chance96="58" chance97="58" chance98="58" chance99="58" chance100="59" chance101="59" chance102="59" chance103="59" chance104="59" chance105="59" chance106="59" chance107="59" />
|
||||
<enchant level="23" adena="348300" sp="849330" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="4" chance82="14" chance83="38" chance84="48" chance85="53" chance86="55" chance87="55" chance88="55" chance89="55" chance90="55" chance91="55" chance92="55" chance93="55" chance94="55" chance95="56" chance96="56" chance97="56" chance98="56" chance99="56" chance100="57" chance101="57" chance102="57" chance103="57" chance104="57" chance105="57" chance106="57" chance107="57" />
|
||||
<enchant level="24" adena="348300" sp="849330" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="2" chance82="12" chance83="36" chance84="46" chance85="46" chance86="51" chance87="51" chance88="51" chance89="51" chance90="51" chance91="51" chance92="51" chance93="51" chance94="51" chance95="52" chance96="52" chance97="52" chance98="52" chance99="52" chance100="53" chance101="53" chance102="53" chance103="53" chance104="53" chance105="53" chance106="53" chance107="53" />
|
||||
<enchant level="25" adena="389250" sp="886255" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="10" chance84="34" chance85="44" chance86="49" chance87="49" chance88="49" chance89="49" chance90="49" chance91="49" chance92="49" chance93="49" chance94="49" chance95="50" chance96="50" chance97="50" chance98="50" chance99="50" chance100="51" chance101="51" chance102="51" chance103="51" chance104="51" chance105="51" chance106="51" chance107="51" />
|
||||
<enchant level="26" adena="389250" sp="886255" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="8" chance84="32" chance85="42" chance86="47" chance87="47" chance88="47" chance89="47" chance90="47" chance91="47" chance92="47" chance93="47" chance94="47" chance95="48" chance96="48" chance97="48" chance98="48" chance99="48" chance100="49" chance101="49" chance102="49" chance103="49" chance104="49" chance105="49" chance106="49" chance107="49" />
|
||||
<enchant level="27" adena="389250" sp="886255" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="6" chance84="30" chance85="40" chance86="45" chance87="45" chance88="45" chance89="45" chance90="45" chance91="45" chance92="45" chance93="45" chance94="45" chance95="46" chance96="46" chance97="46" chance98="46" chance99="46" chance100="47" chance101="47" chance102="47" chance103="47" chance104="47" chance105="47" chance106="47" chance107="47" />
|
||||
<enchant level="28" adena="430650" sp="943620" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="4" chance85="28" chance86="31" chance87="31" chance88="31" chance89="31" chance90="31" chance91="31" chance92="31" chance93="31" chance94="31" chance95="32" chance96="32" chance97="32" chance98="32" chance99="32" chance100="33" chance101="33" chance102="33" chance103="33" chance104="33" chance105="33" chance106="33" chance107="33" />
|
||||
<enchant level="29" adena="430650" sp="943620" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="2" chance85="26" chance86="29" chance87="29" chance88="29" chance89="29" chance90="29" chance91="29" chance92="29" chance93="29" chance94="29" chance95="30" chance96="30" chance97="30" chance98="30" chance99="30" chance100="31" chance101="31" chance102="31" chance103="31" chance104="31" chance105="31" chance106="31" chance107="31" />
|
||||
<enchant level="30" adena="430650" sp="943620" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="24" chance86="27" chance87="27" chance88="27" chance89="27" chance90="27" chance91="27" chance92="27" chance93="27" chance94="27" chance95="28" chance96="28" chance97="28" chance98="28" chance99="28" chance100="29" chance101="29" chance102="29" chance103="29" chance104="29" chance105="29" chance106="29" chance107="29" />
|
||||
</group>
|
||||
<!-- 2nd Class Cubic and Attack Type Skills -->
|
||||
<group id="2">
|
||||
<enchant level="1" adena="133650" sp="1036764" chance76="82" chance77="92" chance78="97" chance79="97" chance80="97" chance81="97" chance82="97" chance83="97" chance84="97" chance85="97" chance86="99" chance87="99" chance88="99" chance89="99" chance90="99" chance91="99" chance92="99" chance93="99" chance94="99" chance95="99" chance96="99" chance97="99" chance98="99" chance99="99" chance100="99" chance101="99" chance102="99" chance103="99" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="2" adena="133650" sp="1036764" chance76="80" chance77="90" chance78="95" chance79="95" chance80="95" chance81="95" chance82="95" chance83="95" chance84="95" chance85="95" chance86="97" chance87="97" chance88="97" chance89="97" chance90="97" chance91="97" chance92="97" chance93="97" chance94="97" chance95="98" chance96="98" chance97="98" chance98="98" chance99="98" chance100="99" chance101="99" chance102="99" chance103="99" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="3" adena="133650" sp="1036764" chance76="78" chance77="88" chance78="93" chance79="93" chance80="93" chance81="93" chance82="93" chance83="93" chance84="93" chance85="93" chance86="95" chance87="95" chance88="95" chance89="95" chance90="95" chance91="95" chance92="95" chance93="95" chance94="95" chance95="96" chance96="96" chance97="96" chance98="96" chance99="96" chance100="97" chance101="97" chance102="97" chance103="97" chance104="97" chance105="97" chance106="97" chance107="97" />
|
||||
<enchant level="4" adena="201690" sp="1088163" chance76="52" chance77="76" chance78="86" chance79="91" chance80="91" chance81="91" chance82="91" chance83="91" chance84="91" chance85="91" chance86="93" chance87="93" chance88="93" chance89="93" chance90="93" chance91="93" chance92="93" chance93="93" chance94="93" chance95="94" chance96="94" chance97="94" chance98="94" chance99="94" chance100="95" chance101="95" chance102="95" chance103="95" chance104="95" chance105="95" chance106="95" chance107="95" />
|
||||
<enchant level="5" adena="201690" sp="1088163" chance76="50" chance77="74" chance78="84" chance79="89" chance80="89" chance81="89" chance82="89" chance83="89" chance84="89" chance85="89" chance86="91" chance87="91" chance88="91" chance89="91" chance90="91" chance91="91" chance92="91" chance93="91" chance94="91" chance95="92" chance96="92" chance97="92" chance98="92" chance99="92" chance100="93" chance101="93" chance102="93" chance103="93" chance104="93" chance105="93" chance106="93" chance107="93" />
|
||||
<enchant level="6" adena="201690" sp="1088163" chance76="48" chance77="72" chance78="82" chance79="87" chance80="87" chance81="87" chance82="87" chance83="87" chance84="87" chance85="87" chance86="89" chance87="89" chance88="89" chance89="89" chance90="89" chance91="89" chance92="89" chance93="89" chance94="89" chance95="90" chance96="90" chance97="90" chance98="90" chance99="90" chance100="91" chance101="91" chance102="91" chance103="91" chance104="91" chance105="91" chance106="91" chance107="91" />
|
||||
<enchant level="7" adena="270540" sp="1141236" chance76="36" chance77="46" chance78="70" chance79="80" chance80="85" chance81="85" chance82="85" chance83="85" chance84="85" chance85="85" chance86="87" chance87="87" chance88="87" chance89="87" chance90="87" chance91="87" chance92="87" chance93="87" chance94="87" chance95="88" chance96="88" chance97="88" chance98="88" chance99="88" chance100="89" chance101="89" chance102="89" chance103="89" chance104="89" chance105="89" chance106="89" chance107="89" />
|
||||
<enchant level="8" adena="270540" sp="1141236" chance76="34" chance77="44" chance78="68" chance79="78" chance80="83" chance81="83" chance82="83" chance83="83" chance84="83" chance85="83" chance86="85" chance87="85" chance88="85" chance89="85" chance90="85" chance91="85" chance92="85" chance93="85" chance94="85" chance95="86" chance96="86" chance97="86" chance98="86" chance99="86" chance100="87" chance101="87" chance102="87" chance103="87" chance104="87" chance105="87" chance106="87" chance107="87" />
|
||||
<enchant level="9" adena="270540" sp="1141236" chance76="32" chance77="42" chance78="66" chance79="76" chance80="81" chance81="81" chance82="81" chance83="81" chance84="81" chance85="81" chance86="83" chance87="83" chance88="83" chance89="83" chance90="83" chance91="83" chance92="83" chance93="83" chance94="83" chance95="84" chance96="84" chance97="84" chance98="84" chance99="84" chance100="85" chance101="85" chance102="85" chance103="85" chance104="85" chance105="85" chance106="85" chance107="85" />
|
||||
<enchant level="10" adena="340200" sp="1224036" chance76="20" chance77="30" chance78="40" chance79="64" chance80="74" chance81="79" chance82="79" chance83="79" chance84="79" chance85="79" chance86="81" chance87="81" chance88="81" chance89="81" chance90="81" chance91="81" chance92="81" chance93="81" chance94="81" chance95="82" chance96="82" chance97="82" chance98="82" chance99="82" chance100="83" chance101="83" chance102="83" chance103="83" chance104="83" chance105="83" chance106="83" chance107="83" />
|
||||
<enchant level="11" adena="340200" sp="1224036" chance76="18" chance77="28" chance78="38" chance79="62" chance80="72" chance81="77" chance82="77" chance83="77" chance84="77" chance85="77" chance86="79" chance87="79" chance88="79" chance89="79" chance90="79" chance91="79" chance92="79" chance93="79" chance94="79" chance95="80" chance96="80" chance97="80" chance98="80" chance99="80" chance100="81" chance101="81" chance102="81" chance103="81" chance104="81" chance105="81" chance106="81" chance107="81" />
|
||||
<enchant level="12" adena="340200" sp="1224036" chance76="16" chance77="26" chance78="36" chance79="60" chance80="70" chance81="75" chance82="75" chance83="75" chance84="75" chance85="75" chance86="77" chance87="77" chance88="77" chance89="77" chance90="77" chance91="77" chance92="77" chance93="77" chance94="77" chance95="78" chance96="78" chance97="78" chance98="78" chance99="78" chance100="79" chance101="79" chance102="79" chance103="79" chance104="79" chance105="79" chance106="79" chance107="79" />
|
||||
<enchant level="13" adena="410670" sp="1281402" chance76="4" chance77="14" chance78="24" chance79="34" chance80="58" chance81="68" chance82="73" chance83="73" chance84="73" chance85="73" chance86="75" chance87="75" chance88="75" chance89="75" chance90="75" chance91="75" chance92="75" chance93="75" chance94="75" chance95="76" chance96="76" chance97="76" chance98="76" chance99="76" chance100="77" chance101="77" chance102="77" chance103="77" chance104="77" chance105="77" chance106="77" chance107="77" />
|
||||
<enchant level="14" adena="410670" sp="1281402" chance76="2" chance77="12" chance78="22" chance79="32" chance80="56" chance81="66" chance82="71" chance83="71" chance84="71" chance85="71" chance86="73" chance87="73" chance88="73" chance89="73" chance90="73" chance91="73" chance92="73" chance93="73" chance94="73" chance95="74" chance96="74" chance97="74" chance98="74" chance99="74" chance100="75" chance101="75" chance102="75" chance103="75" chance104="75" chance105="75" chance106="75" chance107="75" />
|
||||
<enchant level="15" adena="410670" sp="1281402" chance76="1" chance77="10" chance78="20" chance79="30" chance80="54" chance81="64" chance82="69" chance83="69" chance84="69" chance85="69" chance86="71" chance87="71" chance88="71" chance89="71" chance90="71" chance91="71" chance92="71" chance93="71" chance94="71" chance95="72" chance96="72" chance97="72" chance98="72" chance99="72" chance100="73" chance101="73" chance102="73" chance103="73" chance104="73" chance105="73" chance106="73" chance107="73" />
|
||||
<enchant level="16" adena="481950" sp="1370772" chance76="1" chance77="1" chance78="8" chance79="18" chance80="28" chance81="52" chance82="62" chance83="67" chance84="67" chance85="67" chance86="69" chance87="69" chance88="69" chance89="69" chance90="69" chance91="69" chance92="69" chance93="69" chance94="69" chance95="70" chance96="70" chance97="70" chance98="70" chance99="70" chance100="71" chance101="71" chance102="71" chance103="71" chance104="71" chance105="71" chance106="71" chance107="71" />
|
||||
<enchant level="17" adena="481950" sp="1370772" chance76="1" chance77="1" chance78="6" chance79="16" chance80="26" chance81="50" chance82="60" chance83="65" chance84="65" chance85="65" chance86="67" chance87="67" chance88="67" chance89="67" chance90="67" chance91="67" chance92="67" chance93="67" chance94="67" chance95="68" chance96="68" chance97="68" chance98="68" chance99="68" chance100="69" chance101="69" chance102="69" chance103="69" chance104="69" chance105="69" chance106="69" chance107="69" />
|
||||
<enchant level="18" adena="481950" sp="1370772" chance76="1" chance77="1" chance78="4" chance79="14" chance80="24" chance81="48" chance82="58" chance83="63" chance84="63" chance85="63" chance86="65" chance87="65" chance88="65" chance89="65" chance90="65" chance91="65" chance92="65" chance93="65" chance94="65" chance95="66" chance96="66" chance97="66" chance98="66" chance99="66" chance100="67" chance101="67" chance102="67" chance103="67" chance104="67" chance105="67" chance106="67" chance107="67" />
|
||||
<enchant level="19" adena="554040" sp="1432602" chance76="1" chance77="1" chance78="1" chance79="2" chance80="12" chance81="22" chance82="46" chance83="56" chance84="61" chance85="61" chance86="63" chance87="63" chance88="63" chance89="63" chance90="63" chance91="63" chance92="63" chance93="63" chance94="63" chance95="64" chance96="64" chance97="64" chance98="64" chance99="64" chance100="65" chance101="65" chance102="65" chance103="65" chance104="65" chance105="65" chance106="65" chance107="65" />
|
||||
<enchant level="20" adena="554040" sp="1432602" chance76="1" chance77="1" chance78="1" chance79="1" chance80="10" chance81="20" chance82="44" chance83="54" chance84="59" chance85="59" chance86="61" chance87="61" chance88="61" chance89="61" chance90="61" chance91="61" chance92="61" chance93="61" chance94="61" chance95="62" chance96="62" chance97="62" chance98="62" chance99="62" chance100="63" chance101="63" chance102="63" chance103="63" chance104="63" chance105="63" chance106="63" chance107="63" />
|
||||
<enchant level="21" adena="554040" sp="1432602" chance76="1" chance77="1" chance78="1" chance79="1" chance80="8" chance81="18" chance82="42" chance83="52" chance84="57" chance85="57" chance86="59" chance87="59" chance88="59" chance89="59" chance90="59" chance91="59" chance92="59" chance93="59" chance94="59" chance95="60" chance96="60" chance97="60" chance98="60" chance99="60" chance100="61" chance101="61" chance102="61" chance103="61" chance104="61" chance105="61" chance106="61" chance107="61" />
|
||||
<enchant level="22" adena="626940" sp="1528794" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="6" chance82="16" chance83="40" chance84="50" chance85="55" chance86="57" chance87="57" chance88="57" chance89="57" chance90="57" chance91="57" chance92="57" chance93="57" chance94="57" chance95="58" chance96="58" chance97="58" chance98="58" chance99="58" chance100="59" chance101="59" chance102="59" chance103="59" chance104="59" chance105="59" chance106="59" chance107="59" />
|
||||
<enchant level="23" adena="626940" sp="1528794" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="4" chance82="14" chance83="38" chance84="48" chance85="53" chance86="55" chance87="55" chance88="55" chance89="55" chance90="55" chance91="55" chance92="55" chance93="55" chance94="55" chance95="56" chance96="56" chance97="56" chance98="56" chance99="56" chance100="57" chance101="57" chance102="57" chance103="57" chance104="57" chance105="57" chance106="57" chance107="57" />
|
||||
<enchant level="24" adena="626940" sp="1528794" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="2" chance82="12" chance83="36" chance84="46" chance85="46" chance86="51" chance87="51" chance88="51" chance89="51" chance90="51" chance91="51" chance92="51" chance93="51" chance94="51" chance95="52" chance96="52" chance97="52" chance98="52" chance99="52" chance100="53" chance101="53" chance102="53" chance103="53" chance104="53" chance105="53" chance106="53" chance107="53" />
|
||||
<enchant level="25" adena="700650" sp="1595259" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="10" chance84="34" chance85="44" chance86="49" chance87="49" chance88="49" chance89="49" chance90="49" chance91="49" chance92="49" chance93="49" chance94="49" chance95="50" chance96="50" chance97="50" chance98="50" chance99="50" chance100="51" chance101="51" chance102="51" chance103="51" chance104="51" chance105="51" chance106="51" chance107="51" />
|
||||
<enchant level="26" adena="700650" sp="1595259" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="8" chance84="32" chance85="42" chance86="47" chance87="47" chance88="47" chance89="47" chance90="47" chance91="47" chance92="47" chance93="47" chance94="47" chance95="48" chance96="48" chance97="48" chance98="48" chance99="48" chance100="49" chance101="49" chance102="49" chance103="49" chance104="49" chance105="49" chance106="49" chance107="49" />
|
||||
<enchant level="27" adena="700650" sp="1595259" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="6" chance84="30" chance85="40" chance86="45" chance87="45" chance88="45" chance89="45" chance90="45" chance91="45" chance92="45" chance93="45" chance94="45" chance95="46" chance96="46" chance97="46" chance98="46" chance99="46" chance100="47" chance101="47" chance102="47" chance103="47" chance104="47" chance105="47" chance106="47" chance107="47" />
|
||||
<enchant level="28" adena="775170" sp="1698516" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="4" chance85="28" chance86="31" chance87="31" chance88="31" chance89="31" chance90="31" chance91="31" chance92="31" chance93="31" chance94="31" chance95="32" chance96="32" chance97="32" chance98="32" chance99="32" chance100="33" chance101="33" chance102="33" chance103="33" chance104="33" chance105="33" chance106="33" chance107="33" />
|
||||
<enchant level="29" adena="775170" sp="1698516" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="2" chance85="26" chance86="29" chance87="29" chance88="29" chance89="29" chance90="29" chance91="29" chance92="29" chance93="29" chance94="29" chance95="30" chance96="30" chance97="30" chance98="30" chance99="30" chance100="31" chance101="31" chance102="31" chance103="31" chance104="31" chance105="31" chance106="31" chance107="31" />
|
||||
<enchant level="30" adena="775170" sp="1698516" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="24" chance86="27" chance87="27" chance88="27" chance89="27" chance90="27" chance91="27" chance92="27" chance93="27" chance94="27" chance95="28" chance96="28" chance97="28" chance98="28" chance99="28" chance100="29" chance101="29" chance102="29" chance103="29" chance104="29" chance105="29" chance106="29" chance107="29" />
|
||||
</group>
|
||||
<!-- 3rd Class Buffs, Debuffs, Toggles -->
|
||||
<group id="5">
|
||||
<enchant level="1" adena="481950" sp="1370772" chance76="18" chance77="28" chance78="38" chance79="48" chance80="58" chance81="82" chance82="92" chance83="97" chance84="97" chance85="97" chance86="99" chance87="99" chance88="99" chance89="99" chance90="99" chance91="99" chance92="99" chance93="99" chance94="99" chance95="99" chance96="99" chance97="99" chance98="99" chance99="99" chance100="99" chance101="99" chance102="99" chance103="99" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="2" adena="481950" sp="1370772" chance76="16" chance77="26" chance78="36" chance79="46" chance80="56" chance81="80" chance82="90" chance83="95" chance84="95" chance85="95" chance86="97" chance87="97" chance88="97" chance89="97" chance90="97" chance91="97" chance92="97" chance93="97" chance94="97" chance95="98" chance96="98" chance97="98" chance98="98" chance99="98" chance100="99" chance101="99" chance102="99" chance103="99" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="3" adena="481950" sp="1370772" chance76="14" chance77="24" chance78="34" chance79="44" chance80="54" chance81="78" chance82="88" chance83="93" chance84="93" chance85="93" chance86="95" chance87="95" chance88="95" chance89="95" chance90="95" chance91="95" chance92="95" chance93="95" chance94="95" chance95="96" chance96="96" chance97="96" chance98="96" chance99="96" chance100="97" chance101="97" chance102="97" chance103="97" chance104="97" chance105="97" chance106="97" chance107="97" />
|
||||
<enchant level="4" adena="554040" sp="1432602" chance76="2" chance77="12" chance78="22" chance79="32" chance80="42" chance81="52" chance82="76" chance83="86" chance84="91" chance85="91" chance86="93" chance87="93" chance88="93" chance89="93" chance90="93" chance91="93" chance92="93" chance93="93" chance94="93" chance95="94" chance96="94" chance97="94" chance98="94" chance99="94" chance100="95" chance101="95" chance102="95" chance103="95" chance104="95" chance105="95" chance106="95" chance107="95" />
|
||||
<enchant level="5" adena="554040" sp="1432602" chance76="1" chance77="10" chance78="20" chance79="30" chance80="40" chance81="50" chance82="74" chance83="84" chance84="89" chance85="89" chance86="91" chance87="91" chance88="91" chance89="91" chance90="91" chance91="91" chance92="91" chance93="91" chance94="91" chance95="92" chance96="92" chance97="92" chance98="92" chance99="92" chance100="93" chance101="93" chance102="93" chance103="93" chance104="93" chance105="93" chance106="93" chance107="93" />
|
||||
<enchant level="6" adena="554040" sp="1432602" chance76="1" chance77="8" chance78="18" chance79="28" chance80="38" chance81="48" chance82="72" chance83="82" chance84="87" chance85="87" chance86="89" chance87="89" chance88="89" chance89="89" chance90="89" chance91="89" chance92="89" chance93="89" chance94="89" chance95="90" chance96="90" chance97="90" chance98="90" chance99="90" chance100="91" chance101="91" chance102="91" chance103="91" chance104="91" chance105="91" chance106="91" chance107="91" />
|
||||
<enchant level="7" adena="626940" sp="1528794" chance76="1" chance77="1" chance78="6" chance79="16" chance80="26" chance81="36" chance82="46" chance83="70" chance84="80" chance85="85" chance86="87" chance87="87" chance88="87" chance89="87" chance90="87" chance91="87" chance92="87" chance93="87" chance94="87" chance95="88" chance96="88" chance97="88" chance98="88" chance99="88" chance100="89" chance101="89" chance102="89" chance103="89" chance104="89" chance105="89" chance106="89" chance107="89" />
|
||||
<enchant level="8" adena="626940" sp="1528794" chance76="1" chance77="1" chance78="4" chance79="14" chance80="24" chance81="34" chance82="44" chance83="68" chance84="78" chance85="83" chance86="85" chance87="85" chance88="85" chance89="85" chance90="85" chance91="85" chance92="85" chance93="85" chance94="85" chance95="86" chance96="86" chance97="86" chance98="86" chance99="86" chance100="87" chance101="87" chance102="87" chance103="87" chance104="87" chance105="87" chance106="87" chance107="87" />
|
||||
<enchant level="9" adena="626940" sp="1528794" chance76="1" chance77="1" chance78="2" chance79="12" chance80="22" chance81="32" chance82="42" chance83="66" chance84="76" chance85="81" chance86="83" chance87="83" chance88="83" chance89="83" chance90="83" chance91="83" chance92="83" chance93="83" chance94="83" chance95="84" chance96="84" chance97="84" chance98="84" chance99="84" chance100="85" chance101="85" chance102="85" chance103="85" chance104="85" chance105="85" chance106="85" chance107="85" />
|
||||
<enchant level="10" adena="700650" sp="1595259" chance76="1" chance77="1" chance78="1" chance79="1" chance80="10" chance81="20" chance82="30" chance83="40" chance84="64" chance85="74" chance86="77" chance87="77" chance88="77" chance89="77" chance90="77" chance91="77" chance92="77" chance93="77" chance94="77" chance95="78" chance96="78" chance97="78" chance98="78" chance99="78" chance100="79" chance101="79" chance102="79" chance103="79" chance104="79" chance105="79" chance106="79" chance107="79" />
|
||||
<enchant level="11" adena="700650" sp="1595259" chance76="1" chance77="1" chance78="1" chance79="1" chance80="8" chance81="18" chance82="28" chance83="38" chance84="62" chance85="72" chance86="75" chance87="75" chance88="75" chance89="75" chance90="75" chance91="75" chance92="75" chance93="75" chance94="75" chance95="76" chance96="76" chance97="76" chance98="76" chance99="76" chance100="77" chance101="77" chance102="77" chance103="77" chance104="77" chance105="77" chance106="77" chance107="77" />
|
||||
<enchant level="12" adena="700650" sp="1595259" chance76="1" chance77="1" chance78="1" chance79="1" chance80="6" chance81="16" chance82="26" chance83="36" chance84="60" chance85="70" chance86="73" chance87="73" chance88="73" chance89="73" chance90="73" chance91="73" chance92="73" chance93="73" chance94="73" chance95="74" chance96="74" chance97="74" chance98="74" chance99="74" chance100="75" chance101="75" chance102="75" chance103="75" chance104="75" chance105="75" chance106="75" chance107="75" />
|
||||
<enchant level="13" adena="775170" sp="1698516" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="4" chance82="14" chance83="24" chance84="34" chance85="58" chance86="61" chance87="61" chance88="61" chance89="61" chance90="61" chance91="61" chance92="61" chance93="61" chance94="61" chance95="62" chance96="62" chance97="62" chance98="62" chance99="62" chance100="63" chance101="63" chance102="63" chance103="63" chance104="63" chance105="63" chance106="63" chance107="63" />
|
||||
<enchant level="14" adena="775170" sp="1698516" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="2" chance82="12" chance83="22" chance84="32" chance85="56" chance86="59" chance87="59" chance88="59" chance89="59" chance90="59" chance91="59" chance92="59" chance93="59" chance94="59" chance95="60" chance96="60" chance97="60" chance98="60" chance99="60" chance100="61" chance101="61" chance102="61" chance103="61" chance104="61" chance105="61" chance106="61" chance107="61" />
|
||||
<enchant level="15" adena="775170" sp="1698516" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="10" chance83="20" chance84="30" chance85="54" chance86="57" chance87="57" chance88="57" chance89="57" chance90="57" chance91="57" chance92="57" chance93="57" chance94="57" chance95="58" chance96="58" chance97="58" chance98="58" chance99="58" chance100="59" chance101="59" chance102="59" chance103="59" chance104="59" chance105="59" chance106="59" chance107="59" />
|
||||
<enchant level="16" adena="850500" sp="1838565" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="8" chance84="18" chance85="28" chance86="52" chance87="62" chance88="67" chance89="67" chance90="67" chance91="69" chance92="69" chance93="69" chance94="69" chance95="69" chance96="69" chance97="69" chance98="69" chance99="69" chance100="70" chance101="70" chance102="70" chance103="70" chance104="70" chance105="71" chance106="71" chance107="71" />
|
||||
<enchant level="17" adena="850500" sp="1838565" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="6" chance84="16" chance85="26" chance86="50" chance87="60" chance88="65" chance89="65" chance90="65" chance91="67" chance92="67" chance93="67" chance94="67" chance95="67" chance96="67" chance97="67" chance98="67" chance99="67" chance100="68" chance101="68" chance102="68" chance103="68" chance104="68" chance105="69" chance106="69" chance107="69" />
|
||||
<enchant level="18" adena="850500" sp="1838565" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="4" chance84="14" chance85="24" chance86="48" chance87="58" chance88="63" chance89="63" chance90="63" chance91="65" chance92="65" chance93="65" chance94="65" chance95="65" chance96="65" chance97="65" chance98="65" chance99="65" chance100="66" chance101="66" chance102="66" chance103="66" chance104="66" chance105="67" chance106="67" chance107="67" />
|
||||
<enchant level="19" adena="926640" sp="2020406" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="2" chance85="12" chance86="22" chance87="46" chance88="56" chance89="61" chance90="61" chance91="63" chance92="63" chance93="63" chance94="63" chance95="63" chance96="63" chance97="63" chance98="63" chance99="63" chance100="64" chance101="64" chance102="64" chance103="64" chance104="64" chance105="65" chance106="65" chance107="65" />
|
||||
<enchant level="20" adena="926640" sp="2020406" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="10" chance86="20" chance87="44" chance88="54" chance89="59" chance90="59" chance91="61" chance92="61" chance93="61" chance94="61" chance95="61" chance96="61" chance97="61" chance98="61" chance99="61" chance100="62" chance101="62" chance102="62" chance103="62" chance104="62" chance105="63" chance106="63" chance107="63" />
|
||||
<enchant level="21" adena="926640" sp="2020406" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="8" chance86="18" chance87="42" chance88="52" chance89="57" chance90="57" chance91="59" chance92="59" chance93="59" chance94="59" chance95="59" chance96="59" chance97="59" chance98="59" chance99="59" chance100="60" chance101="60" chance102="60" chance103="60" chance104="60" chance105="61" chance106="61" chance107="61" />
|
||||
<enchant level="22" adena="1003590" sp="2249039" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="6" chance87="16" chance88="40" chance89="50" chance90="55" chance91="57" chance92="57" chance93="57" chance94="57" chance95="57" chance96="57" chance97="57" chance98="57" chance99="57" chance100="58" chance101="58" chance102="58" chance103="58" chance104="58" chance105="59" chance106="59" chance107="59" />
|
||||
<enchant level="23" adena="1003590" sp="2249039" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="4" chance87="14" chance88="38" chance89="48" chance90="53" chance91="55" chance92="55" chance93="55" chance94="55" chance95="55" chance96="55" chance97="55" chance98="55" chance99="55" chance100="56" chance101="56" chance102="56" chance103="56" chance104="56" chance105="57" chance106="57" chance107="57" />
|
||||
<enchant level="24" adena="1003590" sp="2249039" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="2" chance87="12" chance88="36" chance89="46" chance90="46" chance91="51" chance92="51" chance93="51" chance94="51" chance95="51" chance96="51" chance97="51" chance98="51" chance99="51" chance100="52" chance101="52" chance102="52" chance103="52" chance104="52" chance105="53" chance106="53" chance107="53" />
|
||||
<enchant level="25" adena="1081350" sp="2529464" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="10" chance89="34" chance90="44" chance91="49" chance92="49" chance93="49" chance94="49" chance95="49" chance96="49" chance97="49" chance98="49" chance99="49" chance100="50" chance101="50" chance102="50" chance103="50" chance104="50" chance105="51" chance106="51" chance107="51" />
|
||||
<enchant level="26" adena="1081350" sp="2529464" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="8" chance89="32" chance90="42" chance91="47" chance92="47" chance93="47" chance94="47" chance95="47" chance96="47" chance97="47" chance98="47" chance99="47" chance100="48" chance101="48" chance102="48" chance103="48" chance104="48" chance105="49" chance106="49" chance107="49" />
|
||||
<enchant level="27" adena="1081350" sp="2529464" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="6" chance89="30" chance90="40" chance91="45" chance92="45" chance93="45" chance94="45" chance95="45" chance96="45" chance97="45" chance98="45" chance99="45" chance100="46" chance101="46" chance102="46" chance103="46" chance104="46" chance105="47" chance106="47" chance107="47" />
|
||||
<enchant level="28" adena="1159920" sp="2866681" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="1" chance89="4" chance90="28" chance91="31" chance92="31" chance93="31" chance94="31" chance95="31" chance96="31" chance97="31" chance98="31" chance99="31" chance100="32" chance101="32" chance102="32" chance103="32" chance104="32" chance105="33" chance106="33" chance107="33" />
|
||||
<enchant level="29" adena="1159920" sp="2866681" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="1" chance89="2" chance90="26" chance91="29" chance92="29" chance93="29" chance94="29" chance95="29" chance96="29" chance97="29" chance98="29" chance99="29" chance100="30" chance101="30" chance102="30" chance103="30" chance104="30" chance105="31" chance106="31" chance107="31" />
|
||||
<enchant level="30" adena="1159920" sp="2866681" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="24" chance91="27" chance92="27" chance93="27" chance94="27" chance95="27" chance96="27" chance97="27" chance98="27" chance99="27" chance100="28" chance101="28" chance102="28" chance103="28" chance104="28" chance105="29" chance106="29" chance107="29" />
|
||||
</group>
|
||||
<!-- 3rd Class Attack Type skills -->
|
||||
<group id="6">
|
||||
<enchant level="1" adena="481950" sp="1370772" chance76="18" chance77="28" chance78="38" chance79="48" chance80="58" chance81="82" chance82="92" chance83="97" chance84="97" chance85="97" chance86="99" chance87="99" chance88="99" chance89="99" chance90="99" chance91="99" chance92="99" chance93="99" chance94="99" chance95="99" chance96="99" chance97="99" chance98="99" chance99="99" chance100="99" chance101="99" chance102="99" chance103="99" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="2" adena="481950" sp="1370772" chance76="16" chance77="26" chance78="36" chance79="46" chance80="56" chance81="80" chance82="90" chance83="95" chance84="95" chance85="95" chance86="97" chance87="97" chance88="97" chance89="97" chance90="97" chance91="97" chance92="97" chance93="97" chance94="97" chance95="98" chance96="98" chance97="98" chance98="98" chance99="98" chance100="99" chance101="99" chance102="99" chance103="99" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="3" adena="481950" sp="1370772" chance76="14" chance77="24" chance78="34" chance79="44" chance80="54" chance81="78" chance82="88" chance83="93" chance84="93" chance85="93" chance86="95" chance87="95" chance88="95" chance89="95" chance90="95" chance91="95" chance92="95" chance93="95" chance94="95" chance95="96" chance96="96" chance97="96" chance98="96" chance99="96" chance100="97" chance101="97" chance102="97" chance103="97" chance104="97" chance105="97" chance106="97" chance107="97" />
|
||||
<enchant level="4" adena="554040" sp="1432602" chance76="2" chance77="12" chance78="22" chance79="32" chance80="42" chance81="52" chance82="76" chance83="86" chance84="91" chance85="91" chance86="93" chance87="93" chance88="93" chance89="93" chance90="93" chance91="93" chance92="93" chance93="93" chance94="93" chance95="94" chance96="94" chance97="94" chance98="94" chance99="94" chance100="95" chance101="95" chance102="95" chance103="95" chance104="95" chance105="95" chance106="95" chance107="95" />
|
||||
<enchant level="5" adena="554040" sp="1432602" chance76="1" chance77="10" chance78="20" chance79="30" chance80="40" chance81="50" chance82="74" chance83="84" chance84="89" chance85="89" chance86="91" chance87="91" chance88="91" chance89="91" chance90="91" chance91="91" chance92="91" chance93="91" chance94="91" chance95="92" chance96="92" chance97="92" chance98="92" chance99="92" chance100="93" chance101="93" chance102="93" chance103="93" chance104="93" chance105="93" chance106="93" chance107="93" />
|
||||
<enchant level="6" adena="554040" sp="1432602" chance76="1" chance77="8" chance78="18" chance79="28" chance80="38" chance81="48" chance82="72" chance83="82" chance84="87" chance85="87" chance86="89" chance87="89" chance88="89" chance89="89" chance90="89" chance91="89" chance92="89" chance93="89" chance94="89" chance95="90" chance96="90" chance97="90" chance98="90" chance99="90" chance100="91" chance101="91" chance102="91" chance103="91" chance104="91" chance105="91" chance106="91" chance107="91" />
|
||||
<enchant level="7" adena="626940" sp="1528794" chance76="1" chance77="1" chance78="6" chance79="16" chance80="26" chance81="36" chance82="46" chance83="70" chance84="80" chance85="85" chance86="87" chance87="87" chance88="87" chance89="87" chance90="87" chance91="87" chance92="87" chance93="87" chance94="87" chance95="88" chance96="88" chance97="88" chance98="88" chance99="88" chance100="89" chance101="89" chance102="89" chance103="89" chance104="89" chance105="89" chance106="89" chance107="89" />
|
||||
<enchant level="8" adena="626940" sp="1528794" chance76="1" chance77="1" chance78="4" chance79="14" chance80="24" chance81="34" chance82="44" chance83="68" chance84="78" chance85="83" chance86="85" chance87="85" chance88="85" chance89="85" chance90="85" chance91="85" chance92="85" chance93="85" chance94="85" chance95="86" chance96="86" chance97="86" chance98="86" chance99="86" chance100="87" chance101="87" chance102="87" chance103="87" chance104="87" chance105="87" chance106="87" chance107="87" />
|
||||
<enchant level="9" adena="626940" sp="1528794" chance76="1" chance77="1" chance78="2" chance79="12" chance80="22" chance81="32" chance82="42" chance83="66" chance84="76" chance85="81" chance86="83" chance87="83" chance88="83" chance89="83" chance90="83" chance91="83" chance92="83" chance93="83" chance94="83" chance95="84" chance96="84" chance97="84" chance98="84" chance99="84" chance100="85" chance101="85" chance102="85" chance103="85" chance104="85" chance105="85" chance106="85" chance107="85" />
|
||||
<enchant level="10" adena="700650" sp="1595259" chance76="1" chance77="1" chance78="1" chance79="1" chance80="10" chance81="20" chance82="30" chance83="40" chance84="64" chance85="74" chance86="77" chance87="77" chance88="77" chance89="77" chance90="77" chance91="77" chance92="77" chance93="77" chance94="77" chance95="78" chance96="78" chance97="78" chance98="78" chance99="78" chance100="79" chance101="79" chance102="79" chance103="79" chance104="79" chance105="79" chance106="79" chance107="79" />
|
||||
<enchant level="11" adena="700650" sp="1595259" chance76="1" chance77="1" chance78="1" chance79="1" chance80="8" chance81="18" chance82="28" chance83="38" chance84="62" chance85="72" chance86="75" chance87="75" chance88="75" chance89="75" chance90="75" chance91="75" chance92="75" chance93="75" chance94="75" chance95="76" chance96="76" chance97="76" chance98="76" chance99="76" chance100="77" chance101="77" chance102="77" chance103="77" chance104="77" chance105="77" chance106="77" chance107="77" />
|
||||
<enchant level="12" adena="700650" sp="1595259" chance76="1" chance77="1" chance78="1" chance79="1" chance80="6" chance81="16" chance82="26" chance83="36" chance84="60" chance85="70" chance86="73" chance87="73" chance88="73" chance89="73" chance90="73" chance91="73" chance92="73" chance93="73" chance94="73" chance95="74" chance96="74" chance97="74" chance98="74" chance99="74" chance100="75" chance101="75" chance102="75" chance103="75" chance104="75" chance105="75" chance106="75" chance107="75" />
|
||||
<enchant level="13" adena="775170" sp="1698516" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="4" chance82="14" chance83="24" chance84="34" chance85="58" chance86="61" chance87="61" chance88="61" chance89="61" chance90="61" chance91="61" chance92="61" chance93="61" chance94="61" chance95="62" chance96="62" chance97="62" chance98="62" chance99="62" chance100="63" chance101="63" chance102="63" chance103="63" chance104="63" chance105="63" chance106="63" chance107="63" />
|
||||
<enchant level="14" adena="775170" sp="1698516" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="2" chance82="12" chance83="22" chance84="32" chance85="56" chance86="59" chance87="59" chance88="59" chance89="59" chance90="59" chance91="59" chance92="59" chance93="59" chance94="59" chance95="60" chance96="60" chance97="60" chance98="60" chance99="60" chance100="61" chance101="61" chance102="61" chance103="61" chance104="61" chance105="61" chance106="61" chance107="61" />
|
||||
<enchant level="15" adena="775170" sp="1698516" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="10" chance83="20" chance84="30" chance85="54" chance86="57" chance87="57" chance88="57" chance89="57" chance90="57" chance91="57" chance92="57" chance93="57" chance94="57" chance95="58" chance96="58" chance97="58" chance98="58" chance99="58" chance100="59" chance101="59" chance102="59" chance103="59" chance104="59" chance105="59" chance106="59" chance107="59" />
|
||||
<enchant level="16" adena="850500" sp="1838565" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="8" chance84="18" chance85="28" chance86="52" chance87="62" chance88="67" chance89="67" chance90="67" chance91="69" chance92="69" chance93="69" chance94="69" chance95="69" chance96="69" chance97="69" chance98="69" chance99="69" chance100="70" chance101="70" chance102="70" chance103="70" chance104="70" chance105="71" chance106="71" chance107="71" />
|
||||
<enchant level="17" adena="850500" sp="1838565" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="6" chance84="16" chance85="26" chance86="50" chance87="60" chance88="65" chance89="65" chance90="65" chance91="67" chance92="67" chance93="67" chance94="67" chance95="67" chance96="67" chance97="67" chance98="67" chance99="67" chance100="68" chance101="68" chance102="68" chance103="68" chance104="68" chance105="69" chance106="69" chance107="69" />
|
||||
<enchant level="18" adena="850500" sp="1838565" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="4" chance84="14" chance85="24" chance86="48" chance87="58" chance88="63" chance89="63" chance90="63" chance91="65" chance92="65" chance93="65" chance94="65" chance95="65" chance96="65" chance97="65" chance98="65" chance99="65" chance100="66" chance101="66" chance102="66" chance103="66" chance104="66" chance105="67" chance106="67" chance107="67" />
|
||||
<enchant level="19" adena="926640" sp="2020406" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="2" chance85="12" chance86="22" chance87="46" chance88="56" chance89="61" chance90="61" chance91="63" chance92="63" chance93="63" chance94="63" chance95="63" chance96="63" chance97="63" chance98="63" chance99="63" chance100="64" chance101="64" chance102="64" chance103="64" chance104="64" chance105="65" chance106="65" chance107="65" />
|
||||
<enchant level="20" adena="926640" sp="2020406" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="10" chance86="20" chance87="44" chance88="54" chance89="59" chance90="59" chance91="61" chance92="61" chance93="61" chance94="61" chance95="61" chance96="61" chance97="61" chance98="61" chance99="61" chance100="62" chance101="62" chance102="62" chance103="62" chance104="62" chance105="63" chance106="63" chance107="63" />
|
||||
<enchant level="21" adena="926640" sp="2020406" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="8" chance86="18" chance87="42" chance88="52" chance89="57" chance90="57" chance91="59" chance92="59" chance93="59" chance94="59" chance95="59" chance96="59" chance97="59" chance98="59" chance99="59" chance100="60" chance101="60" chance102="60" chance103="60" chance104="60" chance105="61" chance106="61" chance107="61" />
|
||||
<enchant level="22" adena="1003590" sp="2249039" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="6" chance87="16" chance88="40" chance89="50" chance90="55" chance91="57" chance92="57" chance93="57" chance94="57" chance95="57" chance96="57" chance97="57" chance98="57" chance99="57" chance100="58" chance101="58" chance102="58" chance103="58" chance104="58" chance105="59" chance106="59" chance107="59" />
|
||||
<enchant level="23" adena="1003590" sp="2249039" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="4" chance87="14" chance88="38" chance89="48" chance90="53" chance91="55" chance92="55" chance93="55" chance94="55" chance95="55" chance96="55" chance97="55" chance98="55" chance99="55" chance100="56" chance101="56" chance102="56" chance103="56" chance104="56" chance105="57" chance106="57" chance107="57" />
|
||||
<enchant level="24" adena="1003590" sp="2249039" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="2" chance87="12" chance88="36" chance89="46" chance90="46" chance91="51" chance92="51" chance93="51" chance94="51" chance95="51" chance96="51" chance97="51" chance98="51" chance99="51" chance100="52" chance101="52" chance102="52" chance103="52" chance104="52" chance105="53" chance106="53" chance107="53" />
|
||||
<enchant level="25" adena="1081350" sp="2529464" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="10" chance89="34" chance90="44" chance91="49" chance92="49" chance93="49" chance94="49" chance95="49" chance96="49" chance97="49" chance98="49" chance99="49" chance100="50" chance101="50" chance102="50" chance103="50" chance104="50" chance105="51" chance106="51" chance107="51" />
|
||||
<enchant level="26" adena="1081350" sp="2529464" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="8" chance89="32" chance90="42" chance91="47" chance92="47" chance93="47" chance94="47" chance95="47" chance96="47" chance97="47" chance98="47" chance99="47" chance100="48" chance101="48" chance102="48" chance103="48" chance104="48" chance105="49" chance106="49" chance107="49" />
|
||||
<enchant level="27" adena="1081350" sp="2529464" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="6" chance89="30" chance90="40" chance91="45" chance92="45" chance93="45" chance94="45" chance95="45" chance96="45" chance97="45" chance98="45" chance99="45" chance100="46" chance101="46" chance102="46" chance103="46" chance104="46" chance105="47" chance106="47" chance107="47" />
|
||||
<enchant level="28" adena="1159920" sp="2866681" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="1" chance89="4" chance90="28" chance91="31" chance92="31" chance93="31" chance94="31" chance95="31" chance96="31" chance97="31" chance98="31" chance99="31" chance100="32" chance101="32" chance102="32" chance103="32" chance104="32" chance105="33" chance106="33" chance107="33" />
|
||||
<enchant level="29" adena="1159920" sp="2866681" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="1" chance89="2" chance90="26" chance91="29" chance92="29" chance93="29" chance94="29" chance95="29" chance96="29" chance97="29" chance98="29" chance99="29" chance100="30" chance101="30" chance102="30" chance103="30" chance104="30" chance105="31" chance106="31" chance107="31" />
|
||||
<enchant level="30" adena="1159920" sp="2866681" chance76="1" chance77="1" chance78="1" chance79="1" chance80="1" chance81="1" chance82="1" chance83="1" chance84="1" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="24" chance91="27" chance92="27" chance93="27" chance94="27" chance95="27" chance96="27" chance97="27" chance98="27" chance99="27" chance100="28" chance101="28" chance102="28" chance103="28" chance104="28" chance105="29" chance106="29" chance107="29" />
|
||||
</group>
|
||||
<!-- 4rd Class skills GOD -->
|
||||
<group id="10">
|
||||
<!-- normal="30297" oblivion="30300" discipline="30299" mastery="30298" -->
|
||||
<enchant level="1" adena="1332450" sp="2091345" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="85" chance86="86" chance87="87" chance88="88" chance89="89" chance90="90" chance91="91" chance92="92" chance93="93" chance94="94" chance95="95" chance96="96" chance97="97" chance98="98" chance99="99" chance100="99" chance101="99" chance102="99" chance103="99" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="2" adena="3997349" sp="6274037" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="80" chance86="81" chance87="82" chance88="83" chance89="84" chance90="85" chance91="86" chance92="87" chance93="88" chance94="89" chance95="90" chance96="91" chance97="92" chance98="93" chance99="94" chance100="95" chance101="96" chance102="97" chance103="98" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="3" adena="6662250" sp="10456729" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="75" chance86="76" chance87="77" chance88="78" chance89="79" chance90="80" chance91="81" chance92="82" chance93="83" chance94="84" chance95="85" chance96="86" chance97="87" chance98="88" chance99="89" chance100="90" chance101="91" chance102="92" chance103="93" chance104="94" chance105="95" chance106="96" chance107="97" />
|
||||
<enchant level="4" adena="9327150" sp="14639421" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="70" chance86="71" chance87="72" chance88="73" chance89="74" chance90="75" chance91="76" chance92="77" chance93="78" chance94="79" chance95="80" chance96="81" chance97="82" chance98="83" chance99="84" chance100="85" chance101="86" chance102="87" chance103="88" chance104="89" chance105="90" chance106="91" chance107="92" />
|
||||
<enchant level="5" adena="11992050" sp="18822133" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="65" chance86="66" chance87="67" chance88="68" chance89="69" chance90="70" chance91="71" chance92="72" chance93="73" chance94="74" chance95="75" chance96="76" chance97="77" chance98="78" chance99="79" chance100="80" chance101="81" chance102="82" chance103="83" chance104="84" chance105="85" chance106="86" chance107="87" />
|
||||
<enchant level="6" adena="14656950" sp="23004804" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="60" chance86="61" chance87="62" chance88="63" chance89="64" chance90="65" chance91="66" chance92="67" chance93="68" chance94="69" chance95="70" chance96="71" chance97="72" chance98="73" chance99="74" chance100="75" chance101="76" chance102="77" chance103="78" chance104="79" chance105="80" chance106="81" chance107="82" />
|
||||
<enchant level="7" adena="17321850" sp="27187496" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="55" chance86="56" chance87="57" chance88="58" chance89="59" chance90="60" chance91="61" chance92="62" chance93="63" chance94="64" chance95="65" chance96="66" chance97="67" chance98="68" chance99="69" chance100="70" chance101="71" chance102="72" chance103="73" chance104="74" chance105="75" chance106="81" chance107="77" />
|
||||
<enchant level="8" adena="19986750" sp="31370188" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="50" chance86="51" chance87="52" chance88="53" chance89="54" chance90="55" chance91="56" chance92="57" chance93="58" chance94="59" chance95="60" chance96="61" chance97="62" chance98="63" chance99="64" chance100="65" chance101="66" chance102="67" chance103="68" chance104="69" chance105="70" chance106="81" chance107="72" />
|
||||
<enchant level="9" adena="22651650" sp="35552880" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="45" chance86="46" chance87="47" chance88="48" chance89="49" chance90="50" chance91="51" chance92="52" chance93="53" chance94="54" chance95="55" chance96="56" chance97="57" chance98="58" chance99="59" chance100="60" chance101="61" chance102="62" chance103="63" chance104="64" chance105="65" chance106="81" chance107="67" />
|
||||
<enchant level="10" adena="25316550" sp="39735572" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="40" chance86="41" chance87="42" chance88="43" chance89="44" chance90="45" chance91="46" chance92="47" chance93="48" chance94="49" chance95="50" chance96="51" chance97="52" chance98="53" chance99="54" chance100="55" chance101="56" chance102="57" chance103="58" chance104="59" chance105="60" chance106="81" chance107="62" />
|
||||
<enchant level="11" adena="27981450" sp="43918264" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="36" chance86="37" chance87="38" chance88="39" chance89="40" chance90="41" chance91="42" chance92="43" chance93="44" chance94="45" chance95="46" chance96="47" chance97="48" chance98="49" chance99="50" chance100="51" chance101="52" chance102="53" chance103="54" chance104="55" chance105="56" chance106="81" chance107="58" />
|
||||
<enchant level="12" adena="30646350" sp="48100956" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="32" chance86="33" chance87="34" chance88="35" chance89="36" chance90="37" chance91="38" chance92="39" chance93="40" chance94="41" chance95="42" chance96="43" chance97="44" chance98="45" chance99="46" chance100="47" chance101="48" chance102="49" chance103="50" chance104="51" chance105="52" chance106="81" chance107="54" />
|
||||
<enchant level="13" adena="33311250" sp="52283648" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="28" chance86="29" chance87="30" chance88="31" chance89="32" chance90="33" chance91="34" chance92="35" chance93="36" chance94="37" chance95="38" chance96="39" chance97="40" chance98="41" chance99="42" chance100="43" chance101="44" chance102="45" chance103="46" chance104="47" chance105="48" chance106="81" chance107="50" />
|
||||
<enchant level="14" adena="35976150" sp="56466340" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="24" chance86="25" chance87="26" chance88="27" chance89="28" chance90="29" chance91="30" chance92="31" chance93="32" chance94="33" chance95="34" chance96="35" chance97="36" chance98="37" chance99="38" chance100="39" chance101="40" chance102="41" chance103="42" chance104="43" chance105="44" chance106="81" chance107="46" />
|
||||
<enchant level="15" adena="38641050" sp="60649032" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="20" chance86="21" chance87="22" chance88="23" chance89="24" chance90="25" chance91="26" chance92="27" chance93="28" chance94="29" chance95="30" chance96="31" chance97="32" chance98="33" chance99="34" chance100="35" chance101="36" chance102="37" chance103="38" chance104="39" chance105="40" chance106="81" chance107="42" />
|
||||
<enchant level="16" adena="41305950" sp="64831724" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="17" chance86="18" chance87="19" chance88="20" chance89="21" chance90="22" chance91="23" chance92="24" chance93="25" chance94="26" chance95="27" chance96="28" chance97="29" chance98="30" chance99="31" chance100="32" chance101="33" chance102="34" chance103="35" chance104="36" chance105="37" chance106="81" chance107="39" />
|
||||
<enchant level="17" adena="43970850" sp="69014416" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="14" chance86="15" chance87="16" chance88="17" chance89="18" chance90="19" chance91="20" chance92="21" chance93="22" chance94="23" chance95="24" chance96="25" chance97="26" chance98="27" chance99="28" chance100="29" chance101="30" chance102="31" chance103="32" chance104="33" chance105="34" chance106="81" chance107="36" />
|
||||
<enchant level="18" adena="46635750" sp="73197108" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="11" chance86="12" chance87="13" chance88="14" chance89="15" chance90="16" chance91="17" chance92="18" chance93="19" chance94="20" chance95="21" chance96="22" chance97="23" chance98="24" chance99="25" chance100="26" chance101="27" chance102="28" chance103="29" chance104="30" chance105="31" chance106="81" chance107="33" />
|
||||
<enchant level="19" adena="49300650" sp="77379800" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="8" chance86="9" chance87="10" chance88="11" chance89="12" chance90="13" chance91="14" chance92="15" chance93="16" chance94="17" chance95="18" chance96="19" chance97="20" chance98="21" chance99="22" chance100="23" chance101="24" chance102="25" chance103="26" chance104="27" chance105="28" chance106="81" chance107="30" />
|
||||
<enchant level="20" adena="51965550" sp="81562492" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="5" chance86="6" chance87="7" chance88="8" chance89="9" chance90="10" chance91="11" chance92="12" chance93="13" chance94="14" chance95="15" chance96="16" chance97="17" chance98="18" chance99="19" chance100="20" chance101="21" chance102="22" chance103="23" chance104="24" chance105="25" chance106="81" chance107="27" />
|
||||
<enchant level="21" adena="54630450" sp="85745184" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="3" chance86="4" chance87="5" chance88="6" chance89="7" chance90="8" chance91="9" chance92="10" chance93="11" chance94="12" chance95="13" chance96="14" chance97="15" chance98="16" chance99="17" chance100="18" chance101="19" chance102="20" chance103="21" chance104="22" chance105="23" chance106="81" chance107="25" />
|
||||
<enchant level="22" adena="57295350" sp="89927876" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="2" chance87="3" chance88="4" chance89="5" chance90="6" chance91="7" chance92="8" chance93="9" chance94="10" chance95="11" chance96="12" chance97="13" chance98="14" chance99="15" chance100="16" chance101="17" chance102="18" chance103="19" chance104="20" chance105="21" chance106="81" chance107="23" />
|
||||
<enchant level="23" adena="59960250" sp="94110568" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="2" chance89="3" chance90="4" chance91="5" chance92="6" chance93="7" chance94="8" chance95="9" chance96="10" chance97="11" chance98="12" chance99="13" chance100="14" chance101="15" chance102="16" chance103="17" chance104="18" chance105="19" chance106="81" chance107="21" />
|
||||
<enchant level="24" adena="62625150" sp="98293260" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="2" chance91="3" chance92="4" chance93="5" chance94="6" chance95="7" chance96="8" chance97="9" chance98="10" chance99="11" chance100="12" chance101="13" chance102="14" chance103="15" chance104="16" chance105="17" chance106="81" chance107="19" />
|
||||
<enchant level="25" adena="65290050" sp="102475952" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="2" chance93="3" chance94="4" chance95="5" chance96="6" chance97="7" chance98="8" chance99="9" chance100="10" chance101="11" chance102="12" chance103="13" chance104="14" chance105="15" chance106="81" chance107="17" />
|
||||
<enchant level="26" adena="67954950" sp="106658644" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="1" chance93="2" chance94="3" chance95="4" chance96="5" chance97="6" chance98="7" chance99="8" chance100="9" chance101="10" chance102="11" chance103="12" chance104="13" chance105="14" chance106="81" chance107="16" />
|
||||
<enchant level="27" adena="70619850" sp="110841336" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="1" chance93="1" chance94="2" chance95="3" chance96="4" chance97="5" chance98="6" chance99="7" chance100="8" chance101="9" chance102="10" chance103="11" chance104="12" chance105="13" chance106="81" chance107="15" />
|
||||
<enchant level="28" adena="73284750" sp="115024028" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="1" chance93="1" chance94="1" chance95="2" chance96="3" chance97="4" chance98="5" chance99="6" chance100="7" chance101="8" chance102="9" chance103="10" chance104="11" chance105="12" chance106="81" chance107="14" />
|
||||
<enchant level="29" adena="75949650" sp="119206720" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="1" chance93="1" chance94="1" chance95="1" chance96="2" chance97="3" chance98="4" chance99="5" chance100="6" chance101="7" chance102="8" chance103="9" chance104="10" chance105="11" chance106="81" chance107="13" />
|
||||
<enchant level="30" adena="78614550" sp="123389412" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="1" chance93="1" chance94="1" chance95="1" chance96="1" chance97="2" chance98="3" chance99="4" chance100="5" chance101="6" chance102="7" chance103="8" chance104="9" chance105="10" chance106="81" chance107="12" />
|
||||
</group>
|
||||
<!-- 4rd Class skills GOD +20-->
|
||||
<group id="11">
|
||||
<!-- normal="30297" oblivion="30300" discipline="30299" mastery="30298" -->
|
||||
<enchant level="1" adena="1332450" sp="2091345" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="85" chance86="86" chance87="87" chance88="88" chance89="89" chance90="90" chance91="91" chance92="92" chance93="93" chance94="94" chance95="95" chance96="96" chance97="97" chance98="98" chance99="99" chance100="99" chance101="99" chance102="99" chance103="99" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="2" adena="3997349" sp="6274037" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="80" chance86="81" chance87="82" chance88="83" chance89="84" chance90="85" chance91="86" chance92="87" chance93="88" chance94="89" chance95="90" chance96="91" chance97="92" chance98="93" chance99="94" chance100="95" chance101="96" chance102="97" chance103="98" chance104="99" chance105="99" chance106="99" chance107="99" />
|
||||
<enchant level="3" adena="6662250" sp="10456729" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="75" chance86="76" chance87="77" chance88="78" chance89="79" chance90="80" chance91="81" chance92="82" chance93="83" chance94="84" chance95="85" chance96="86" chance97="87" chance98="88" chance99="89" chance100="90" chance101="91" chance102="92" chance103="93" chance104="94" chance105="95" chance106="96" chance107="97" />
|
||||
<enchant level="4" adena="9327150" sp="14639421" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="70" chance86="71" chance87="72" chance88="73" chance89="74" chance90="75" chance91="76" chance92="77" chance93="78" chance94="79" chance95="80" chance96="81" chance97="82" chance98="83" chance99="84" chance100="85" chance101="86" chance102="87" chance103="88" chance104="89" chance105="90" chance106="91" chance107="92" />
|
||||
<enchant level="5" adena="11992050" sp="18822133" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="65" chance86="66" chance87="67" chance88="68" chance89="69" chance90="70" chance91="71" chance92="72" chance93="73" chance94="74" chance95="75" chance96="76" chance97="77" chance98="78" chance99="79" chance100="80" chance101="81" chance102="82" chance103="83" chance104="84" chance105="85" chance106="86" chance107="87" />
|
||||
<enchant level="6" adena="14656950" sp="23004804" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="60" chance86="61" chance87="62" chance88="63" chance89="64" chance90="65" chance91="66" chance92="67" chance93="68" chance94="69" chance95="70" chance96="71" chance97="72" chance98="73" chance99="74" chance100="75" chance101="76" chance102="77" chance103="78" chance104="79" chance105="80" chance106="81" chance107="82" />
|
||||
<enchant level="7" adena="17321850" sp="27187496" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="55" chance86="56" chance87="57" chance88="58" chance89="59" chance90="60" chance91="61" chance92="62" chance93="63" chance94="64" chance95="65" chance96="66" chance97="67" chance98="68" chance99="69" chance100="70" chance101="71" chance102="72" chance103="73" chance104="74" chance105="75" chance106="81" chance107="77" />
|
||||
<enchant level="8" adena="19986750" sp="31370188" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="50" chance86="51" chance87="52" chance88="53" chance89="54" chance90="55" chance91="56" chance92="57" chance93="58" chance94="59" chance95="60" chance96="61" chance97="62" chance98="63" chance99="64" chance100="65" chance101="66" chance102="67" chance103="68" chance104="69" chance105="70" chance106="81" chance107="72" />
|
||||
<enchant level="9" adena="22651650" sp="35552880" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="45" chance86="46" chance87="47" chance88="48" chance89="49" chance90="50" chance91="51" chance92="52" chance93="53" chance94="54" chance95="55" chance96="56" chance97="57" chance98="58" chance99="59" chance100="60" chance101="61" chance102="62" chance103="63" chance104="64" chance105="65" chance106="81" chance107="67" />
|
||||
<enchant level="10" adena="25316550" sp="39735572" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="40" chance86="41" chance87="42" chance88="43" chance89="44" chance90="45" chance91="46" chance92="47" chance93="48" chance94="49" chance95="50" chance96="51" chance97="52" chance98="53" chance99="54" chance100="55" chance101="56" chance102="57" chance103="58" chance104="59" chance105="60" chance106="81" chance107="62" />
|
||||
<enchant level="11" adena="27981450" sp="43918264" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="36" chance86="37" chance87="38" chance88="39" chance89="40" chance90="41" chance91="42" chance92="43" chance93="44" chance94="45" chance95="46" chance96="47" chance97="48" chance98="49" chance99="50" chance100="51" chance101="52" chance102="53" chance103="54" chance104="55" chance105="56" chance106="81" chance107="58" />
|
||||
<enchant level="12" adena="30646350" sp="48100956" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="32" chance86="33" chance87="34" chance88="35" chance89="36" chance90="37" chance91="38" chance92="39" chance93="40" chance94="41" chance95="42" chance96="43" chance97="44" chance98="45" chance99="46" chance100="47" chance101="48" chance102="49" chance103="50" chance104="51" chance105="52" chance106="81" chance107="54" />
|
||||
<enchant level="13" adena="33311250" sp="52283648" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="28" chance86="29" chance87="30" chance88="31" chance89="32" chance90="33" chance91="34" chance92="35" chance93="36" chance94="37" chance95="38" chance96="39" chance97="40" chance98="41" chance99="42" chance100="43" chance101="44" chance102="45" chance103="46" chance104="47" chance105="48" chance106="81" chance107="50" />
|
||||
<enchant level="14" adena="35976150" sp="56466340" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="24" chance86="25" chance87="26" chance88="27" chance89="28" chance90="29" chance91="30" chance92="31" chance93="32" chance94="33" chance95="34" chance96="35" chance97="36" chance98="37" chance99="38" chance100="39" chance101="40" chance102="41" chance103="42" chance104="43" chance105="44" chance106="81" chance107="46" />
|
||||
<enchant level="15" adena="38641050" sp="60649032" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="20" chance86="21" chance87="22" chance88="23" chance89="24" chance90="25" chance91="26" chance92="27" chance93="28" chance94="29" chance95="30" chance96="31" chance97="32" chance98="33" chance99="34" chance100="35" chance101="36" chance102="37" chance103="38" chance104="39" chance105="40" chance106="81" chance107="42" />
|
||||
<enchant level="16" adena="41305950" sp="64831724" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="17" chance86="18" chance87="19" chance88="20" chance89="21" chance90="22" chance91="23" chance92="24" chance93="25" chance94="26" chance95="27" chance96="28" chance97="29" chance98="30" chance99="31" chance100="32" chance101="33" chance102="34" chance103="35" chance104="36" chance105="37" chance106="81" chance107="39" />
|
||||
<enchant level="17" adena="43970850" sp="69014416" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="14" chance86="15" chance87="16" chance88="17" chance89="18" chance90="19" chance91="20" chance92="21" chance93="22" chance94="23" chance95="24" chance96="25" chance97="26" chance98="27" chance99="28" chance100="29" chance101="30" chance102="31" chance103="32" chance104="33" chance105="34" chance106="81" chance107="36" />
|
||||
<enchant level="18" adena="46635750" sp="73197108" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="11" chance86="12" chance87="13" chance88="14" chance89="15" chance90="16" chance91="17" chance92="18" chance93="19" chance94="20" chance95="21" chance96="22" chance97="23" chance98="24" chance99="25" chance100="26" chance101="27" chance102="28" chance103="29" chance104="30" chance105="31" chance106="81" chance107="33" />
|
||||
<enchant level="19" adena="49300650" sp="77379800" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="8" chance86="9" chance87="10" chance88="11" chance89="12" chance90="13" chance91="14" chance92="15" chance93="16" chance94="17" chance95="18" chance96="19" chance97="20" chance98="21" chance99="22" chance100="23" chance101="24" chance102="25" chance103="26" chance104="27" chance105="28" chance106="81" chance107="30" />
|
||||
<enchant level="20" adena="51965550" sp="81562492" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="5" chance86="6" chance87="7" chance88="8" chance89="9" chance90="10" chance91="11" chance92="12" chance93="13" chance94="14" chance95="15" chance96="16" chance97="17" chance98="18" chance99="19" chance100="20" chance101="21" chance102="22" chance103="23" chance104="24" chance105="25" chance106="81" chance107="27" />
|
||||
<enchant level="21" adena="54630450" sp="85745184" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="3" chance86="4" chance87="5" chance88="6" chance89="7" chance90="8" chance91="9" chance92="10" chance93="11" chance94="12" chance95="13" chance96="14" chance97="15" chance98="16" chance99="17" chance100="18" chance101="19" chance102="20" chance103="21" chance104="22" chance105="23" chance106="81" chance107="25" />
|
||||
<enchant level="22" adena="57295350" sp="89927876" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="2" chance87="3" chance88="4" chance89="5" chance90="6" chance91="7" chance92="8" chance93="9" chance94="10" chance95="11" chance96="12" chance97="13" chance98="14" chance99="15" chance100="16" chance101="17" chance102="18" chance103="19" chance104="20" chance105="21" chance106="81" chance107="23" />
|
||||
<enchant level="23" adena="59960250" sp="94110568" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="2" chance89="3" chance90="4" chance91="5" chance92="6" chance93="7" chance94="8" chance95="9" chance96="10" chance97="11" chance98="12" chance99="13" chance100="14" chance101="15" chance102="16" chance103="17" chance104="18" chance105="19" chance106="81" chance107="21" />
|
||||
<enchant level="24" adena="62625150" sp="98293260" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="2" chance91="3" chance92="4" chance93="5" chance94="6" chance95="7" chance96="8" chance97="9" chance98="10" chance99="11" chance100="12" chance101="13" chance102="14" chance103="15" chance104="16" chance105="17" chance106="81" chance107="19" />
|
||||
<enchant level="25" adena="65290050" sp="102475952" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="2" chance93="3" chance94="4" chance95="5" chance96="6" chance97="7" chance98="8" chance99="9" chance100="10" chance101="11" chance102="12" chance103="13" chance104="14" chance105="15" chance106="81" chance107="17" />
|
||||
<enchant level="26" adena="67954950" sp="106658644" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="1" chance93="2" chance94="3" chance95="4" chance96="5" chance97="6" chance98="7" chance99="8" chance100="9" chance101="10" chance102="11" chance103="12" chance104="13" chance105="14" chance106="81" chance107="16" />
|
||||
<enchant level="27" adena="70619850" sp="110841336" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="1" chance93="1" chance94="2" chance95="3" chance96="4" chance97="5" chance98="6" chance99="7" chance100="8" chance101="9" chance102="10" chance103="11" chance104="12" chance105="13" chance106="81" chance107="15" />
|
||||
<enchant level="28" adena="73284750" sp="115024028" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="1" chance93="1" chance94="1" chance95="2" chance96="3" chance97="4" chance98="5" chance99="6" chance100="7" chance101="8" chance102="9" chance103="10" chance104="11" chance105="12" chance106="81" chance107="14" />
|
||||
<enchant level="29" adena="75949650" sp="119206720" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="1" chance93="1" chance94="1" chance95="1" chance96="2" chance97="3" chance98="4" chance99="5" chance100="6" chance101="7" chance102="8" chance103="9" chance104="10" chance105="11" chance106="81" chance107="13" />
|
||||
<enchant level="30" adena="78614550" sp="123389412" chance76="0" chance77="0" chance78="0" chance79="0" chance80="0" chance81="0" chance82="0" chance83="0" chance84="0" chance85="1" chance86="1" chance87="1" chance88="1" chance89="1" chance90="1" chance91="1" chance92="1" chance93="1" chance94="1" chance95="1" chance96="1" chance97="2" chance98="3" chance99="4" chance100="5" chance101="6" chance102="7" chance103="8" chance104="9" chance105="10" chance106="81" chance107="12" />
|
||||
</group>
|
||||
<enchant level="1" enchantFailLevel="0">
|
||||
<sps>
|
||||
<sp amount="4250000" type="NORMAL" />
|
||||
<sp amount="4250000" type="BLESSED" />
|
||||
<sp amount="4250000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="90" type="NORMAL" />
|
||||
<chance value="90" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="30297" count="1" type="NORMAL" /> <!-- Superior Giant's Codex -->
|
||||
<item id="57" count="2380000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="30298" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery -->
|
||||
<item id="57" count="2380000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="30299" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline -->
|
||||
<item id="57" count="2380000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="37044" count="1" type="IMMORTAL" /> <!-- Immortal Scroll -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="2" enchantFailLevel="0">
|
||||
<sps>
|
||||
<sp amount="4550000" type="NORMAL" />
|
||||
<sp amount="4550000" type="BLESSED" />
|
||||
<sp amount="4550000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="87" type="NORMAL" />
|
||||
<chance value="87" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="30297" count="0" type="NORMAL" /> <!-- Superior Giant's Codex -->
|
||||
<item id="57" count="2540000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="30298" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery -->
|
||||
<item id="57" count="2540000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="30299" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline -->
|
||||
<item id="57" count="2540000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="37044" count="1" type="IMMORTAL" /> <!-- Immortal Scroll -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="3" enchantFailLevel="0">
|
||||
<sps>
|
||||
<sp amount="4850000" type="NORMAL" />
|
||||
<sp amount="4850000" type="BLESSED" />
|
||||
<sp amount="4850000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="84" type="NORMAL" />
|
||||
<chance value="84" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="30297" count="0" type="NORMAL" /> <!-- Superior Giant's Codex -->
|
||||
<item id="57" count="2720000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="30298" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery -->
|
||||
<item id="57" count="2720000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="30299" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline -->
|
||||
<item id="57" count="2720000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="37044" count="1" type="IMMORTAL" /> <!-- Immortal Scroll -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="4" enchantFailLevel="0">
|
||||
<sps>
|
||||
<sp amount="5170000" type="NORMAL" />
|
||||
<sp amount="5170000" type="BLESSED" />
|
||||
<sp amount="5170000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="81" type="NORMAL" />
|
||||
<chance value="81" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="30297" count="0" type="NORMAL" /> <!-- Superior Giant's Codex -->
|
||||
<item id="57" count="2890000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="30298" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery -->
|
||||
<item id="57" count="2890000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="30299" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline -->
|
||||
<item id="57" count="2890000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="37044" count="1" type="IMMORTAL" /> <!-- Immortal Scroll -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="5" enchantFailLevel="0">
|
||||
<sps>
|
||||
<sp amount="5420000" type="NORMAL" />
|
||||
<sp amount="5420000" type="BLESSED" />
|
||||
<sp amount="5420000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="78" type="NORMAL" />
|
||||
<chance value="78" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="30297" count="0" type="NORMAL" /> <!-- Superior Giant's Codex -->
|
||||
<item id="57" count="3030000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="30298" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery -->
|
||||
<item id="57" count="3030000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="30299" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline -->
|
||||
<item id="57" count="3030000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="37044" count="1" type="IMMORTAL" /> <!-- Immortal Scroll -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="6" enchantFailLevel="0">
|
||||
<sps>
|
||||
<sp amount="5880000" type="NORMAL" />
|
||||
<sp amount="5880000" type="BLESSED" />
|
||||
<sp amount="5880000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="75" type="NORMAL" />
|
||||
<chance value="75" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="30297" count="0" type="NORMAL" /> <!-- Superior Giant's Codex -->
|
||||
<item id="57" count="3290000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="30298" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery -->
|
||||
<item id="57" count="3290000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="30299" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline -->
|
||||
<item id="57" count="3290000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="37044" count="1" type="IMMORTAL" /> <!-- Immortal Scroll -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="7" enchantFailLevel="0">
|
||||
<sps>
|
||||
<sp amount="6550000" type="NORMAL" />
|
||||
<sp amount="6550000" type="BLESSED" />
|
||||
<sp amount="6550000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="72" type="NORMAL" />
|
||||
<chance value="72" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="30297" count="0" type="NORMAL" /> <!-- Superior Giant's Codex -->
|
||||
<item id="57" count="3670000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="30298" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery -->
|
||||
<item id="57" count="3670000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="30299" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline -->
|
||||
<item id="57" count="3670000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="37044" count="1" type="IMMORTAL" /> <!-- Immortal Scroll -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="8" enchantFailLevel="0">
|
||||
<sps>
|
||||
<sp amount="13340000" type="NORMAL" />
|
||||
<sp amount="13340000" type="BLESSED" />
|
||||
<sp amount="13340000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="68" type="NORMAL" />
|
||||
<chance value="68" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="30297" count="0" type="NORMAL" /> <!-- Superior Giant's Codex -->
|
||||
<item id="57" count="7470000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="30298" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery -->
|
||||
<item id="57" count="7470000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="30299" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline -->
|
||||
<item id="57" count="7470000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="37044" count="1" type="IMMORTAL" /> <!-- Immortal Scroll -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="9" enchantFailLevel="0">
|
||||
<sps>
|
||||
<sp amount="18580000" type="NORMAL" />
|
||||
<sp amount="18580000" type="BLESSED" />
|
||||
<sp amount="18580000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="64" type="NORMAL" />
|
||||
<chance value="64" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="30297" count="0" type="NORMAL" /> <!-- Superior Giant's Codex -->
|
||||
<item id="57" count="10400000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="30298" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery -->
|
||||
<item id="57" count="10400000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="30299" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline -->
|
||||
<item id="57" count="10400000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="37044" count="1" type="IMMORTAL" /> <!-- Immortal Scroll -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="10" enchantFailLevel="0">
|
||||
<sps>
|
||||
<sp amount="36370000" type="NORMAL" />
|
||||
<sp amount="36370000" type="BLESSED" />
|
||||
<sp amount="36370000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="60" type="NORMAL" />
|
||||
<chance value="60" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="30297" count="0" type="NORMAL" /> <!-- Superior Giant's Codex -->
|
||||
<item id="57" count="20700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="30298" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery -->
|
||||
<item id="57" count="20700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="30299" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline -->
|
||||
<item id="57" count="20700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="37044" count="1" type="IMMORTAL" /> <!-- Immortal Scroll -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="11" enchantFailLevel="10">
|
||||
<sps>
|
||||
<sp amount="15000000" type="NORMAL" />
|
||||
<sp amount="15000000" type="BLESSED" />
|
||||
<sp amount="15000000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="89" type="NORMAL" />
|
||||
<chance value="89" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46150" count="1" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 1 -->
|
||||
<item id="57" count="8400000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46151" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 1 -->
|
||||
<item id="57" count="8400000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46152" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 1 -->
|
||||
<item id="57" count="8400000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46153" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 1 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="12" enchantFailLevel="10">
|
||||
<sps>
|
||||
<sp amount="16800000" type="NORMAL" />
|
||||
<sp amount="16800000" type="BLESSED" />
|
||||
<sp amount="16800000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="86" type="NORMAL" />
|
||||
<chance value="86" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46150" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 1 -->
|
||||
<item id="57" count="9400000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46151" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 1 -->
|
||||
<item id="57" count="9400000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46152" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 1 -->
|
||||
<item id="57" count="9400000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46153" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 1 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="13" enchantFailLevel="10">
|
||||
<sps>
|
||||
<sp amount="47000000" type="NORMAL" />
|
||||
<sp amount="47000000" type="BLESSED" />
|
||||
<sp amount="47000000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="83" type="NORMAL" />
|
||||
<chance value="83" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46150" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 1 -->
|
||||
<item id="57" count="26300000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46151" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 1 -->
|
||||
<item id="57" count="26300000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46152" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 1 -->
|
||||
<item id="57" count="26300000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46153" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 1 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="14" enchantFailLevel="10">
|
||||
<sps>
|
||||
<sp amount="56700000" type="NORMAL" />
|
||||
<sp amount="56700000" type="BLESSED" />
|
||||
<sp amount="56700000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="80" type="NORMAL" />
|
||||
<chance value="80" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46150" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 1 -->
|
||||
<item id="57" count="31700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46151" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 1 -->
|
||||
<item id="57" count="31700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46152" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 1 -->
|
||||
<item id="57" count="31700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46153" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 1 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="15" enchantFailLevel="10">
|
||||
<sps>
|
||||
<sp amount="85100000" type="NORMAL" />
|
||||
<sp amount="85100000" type="BLESSED" />
|
||||
<sp amount="85100000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="77" type="NORMAL" />
|
||||
<chance value="77" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46150" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 1 -->
|
||||
<item id="57" count="47600000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46151" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 1 -->
|
||||
<item id="57" count="47600000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46152" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 1 -->
|
||||
<item id="57" count="47600000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46153" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 1 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="16" enchantFailLevel="10">
|
||||
<sps>
|
||||
<sp amount="110500000" type="NORMAL" />
|
||||
<sp amount="110500000" type="BLESSED" />
|
||||
<sp amount="110500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="74" type="NORMAL" />
|
||||
<chance value="74" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46150" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 1 -->
|
||||
<item id="57" count="61800000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46151" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 1 -->
|
||||
<item id="57" count="61800000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46152" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 1 -->
|
||||
<item id="57" count="61800000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46153" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 1 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="17" enchantFailLevel="10">
|
||||
<sps>
|
||||
<sp amount="358400000" type="NORMAL" />
|
||||
<sp amount="358400000" type="BLESSED" />
|
||||
<sp amount="358400000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="71" type="NORMAL" />
|
||||
<chance value="71" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46150" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 1 -->
|
||||
<item id="57" count="200700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46151" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 1 -->
|
||||
<item id="57" count="200700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46152" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 1 -->
|
||||
<item id="57" count="200700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46153" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 1 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="18" enchantFailLevel="10">
|
||||
<sps>
|
||||
<sp amount="575400000" type="NORMAL" />
|
||||
<sp amount="575400000" type="BLESSED" />
|
||||
<sp amount="575400000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="67" type="NORMAL" />
|
||||
<chance value="67" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46150" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 1 -->
|
||||
<item id="57" count="322200000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46151" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 1 -->
|
||||
<item id="57" count="322200000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46152" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 1 -->
|
||||
<item id="57" count="322200000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46153" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 1 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="19" enchantFailLevel="10">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="63" type="NORMAL" />
|
||||
<chance value="63" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46150" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 1 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46151" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 1 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46152" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 1 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46153" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 1 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="20" enchantFailLevel="10">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="59" type="NORMAL" />
|
||||
<chance value="59" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46150" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 1 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46151" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 1 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46152" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 1 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46153" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 1 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="21" enchantFailLevel="20">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="88" type="NORMAL" />
|
||||
<chance value="88" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46154" count="1" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 2 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46155" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 2 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46156" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 2 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46157" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 2 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="22" enchantFailLevel="20">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="84" type="NORMAL" />
|
||||
<chance value="84" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46154" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 2 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46155" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 2 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46156" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 2 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46157" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 2 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="23" enchantFailLevel="20">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="80" type="NORMAL" />
|
||||
<chance value="80" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46154" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 2 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46155" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 2 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46156" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 2 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46157" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 2 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="24" enchantFailLevel="20">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="76" type="NORMAL" />
|
||||
<chance value="76" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46154" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 2 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46155" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 2 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46156" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 2 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46157" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 2 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="25" enchantFailLevel="20">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="72" type="NORMAL" />
|
||||
<chance value="72" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46154" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 2 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46155" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 2 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46156" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 2 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46157" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 2 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="26" enchantFailLevel="20">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="68" type="NORMAL" />
|
||||
<chance value="68" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46154" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 2 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46155" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 2 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46156" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 2 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46157" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 2 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="27" enchantFailLevel="20">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="64" type="NORMAL" />
|
||||
<chance value="64" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46154" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 2 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46155" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 2 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46156" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 2 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46157" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 2 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="28" enchantFailLevel="20">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="60" type="NORMAL" />
|
||||
<chance value="60" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46154" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 2 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46155" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 2 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46156" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 2 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46157" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 2 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="29" enchantFailLevel="20">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="56" type="NORMAL" />
|
||||
<chance value="56" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46154" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 2 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46155" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 2 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46156" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 2 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46157" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 2 -->
|
||||
</items>
|
||||
</enchant>
|
||||
<enchant level="30" enchantFailLevel="20">
|
||||
<sps>
|
||||
<sp amount="690500000" type="NORMAL" />
|
||||
<sp amount="690500000" type="BLESSED" />
|
||||
<sp amount="690500000" type="CHANGE" />
|
||||
</sps>
|
||||
<chances>
|
||||
<chance value="52" type="NORMAL" />
|
||||
<chance value="52" type="BLESSED" />
|
||||
</chances>
|
||||
<items>
|
||||
<item id="46154" count="0" type="NORMAL" /> <!-- Superior Giant's Codex Chapter 2 -->
|
||||
<item id="57" count="386700000" type="NORMAL" /> <!-- Adena -->
|
||||
<item id="46155" count="1" type="BLESSED" /> <!-- Superior Giant's Codex - Mastery Chapter 2 -->
|
||||
<item id="57" count="386700000" type="BLESSED" /> <!-- Adena -->
|
||||
<item id="46156" count="1" type="CHANGE" /> <!-- Superior Giant's Codex - Discipline Chapter 2 -->
|
||||
<item id="57" count="386700000" type="CHANGE" /> <!-- Adena -->
|
||||
<item id="46157" count="1" type="IMMORTAL" /> <!-- Immortal Scroll Chapter 2 -->
|
||||
</items>
|
||||
</enchant>
|
||||
</list>
|
@ -752,6 +752,7 @@
|
||||
<route name="glu_di_fort_ordery" repeat="true" repeatStyle="cycle">
|
||||
<target id="36035" spawnX="11513" spawnY="150539" spawnZ="-3308" />
|
||||
<point X="11513" Y="150539" Z="-3308" delay="20" run="false" />
|
||||
<point X="13142" Y="150096" Z="-3357" delay="0" run="false" />
|
||||
<point X="17401" Y="149526" Z="-3380" delay="0" run="false" />
|
||||
<point X="18446" Y="152507" Z="-3381" delay="0" run="false" />
|
||||
<point X="18333" Y="155024" Z="-3617" delay="15" run="false" />
|
||||
|
@ -275,7 +275,7 @@ public final class BeastFarm extends AbstractNpcAI
|
||||
final SkillData st = SkillData.getInstance();
|
||||
for (SkillHolder sh : beast.getSkills())
|
||||
{
|
||||
nextNpc.addBeastSkill(st.getSkill(sh.getSkillId(), sh.getSkillLvl()));
|
||||
nextNpc.addBeastSkill(st.getSkill(sh.getSkillId(), sh.getSkillLevel()));
|
||||
}
|
||||
|
||||
Q00020_BringUpWithLove.checkJewelOfInnocence(player);
|
||||
|
@ -21,7 +21,6 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import com.l2jmobius.gameserver.data.xml.impl.SkillData;
|
||||
import com.l2jmobius.gameserver.enums.ChatType;
|
||||
import com.l2jmobius.gameserver.instancemanager.GrandBossManager;
|
||||
import com.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
@ -34,6 +33,7 @@ import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2GrandBossInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import com.l2jmobius.gameserver.model.zone.L2ZoneType;
|
||||
@ -77,6 +77,10 @@ public final class Orfen extends AbstractNpcAI
|
||||
private static final byte ALIVE = 0;
|
||||
private static final byte DEAD = 1;
|
||||
|
||||
private static final SkillHolder PARALYSIS = new SkillHolder(4064, 1);
|
||||
private static final SkillHolder BLOW = new SkillHolder(4067, 4);
|
||||
private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1);
|
||||
|
||||
private Orfen()
|
||||
{
|
||||
final int[] mobs =
|
||||
@ -244,7 +248,7 @@ public final class Orfen extends AbstractNpcAI
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, TEXT[getRandom(4)], caster.getName());
|
||||
originalCaster.teleToLocation(npc.getLocation());
|
||||
npc.setTarget(originalCaster);
|
||||
npc.doCast(SkillData.getInstance().getSkill(4064, 1));
|
||||
npc.doCast(PARALYSIS.getSkill());
|
||||
}
|
||||
}
|
||||
return super.onSkillSee(npc, caster, skill, targets, isSummon);
|
||||
@ -262,7 +266,7 @@ public final class Orfen extends AbstractNpcAI
|
||||
if ((npcId == RAIKEL_LEOS) && (getRandom(20) == 0))
|
||||
{
|
||||
npc.setTarget(attacker);
|
||||
npc.doCast(SkillData.getInstance().getSkill(4067, 4));
|
||||
npc.doCast(BLOW.getSkill());
|
||||
}
|
||||
else if (npcId == RIBA_IREN)
|
||||
{
|
||||
@ -275,7 +279,7 @@ public final class Orfen extends AbstractNpcAI
|
||||
{
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null);
|
||||
npc.setTarget(caller);
|
||||
npc.doCast(SkillData.getInstance().getSkill(4516, 1));
|
||||
npc.doCast(ORFEN_HEAL.getSkill());
|
||||
}
|
||||
}
|
||||
return super.onFactionCall(npc, caller, attacker, isSummon);
|
||||
@ -297,7 +301,7 @@ public final class Orfen extends AbstractNpcAI
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, TEXT[getRandom(3)], attacker.getName());
|
||||
attacker.teleToLocation(npc.getLocation());
|
||||
npc.setTarget(attacker);
|
||||
npc.doCast(SkillData.getInstance().getSkill(4064, 1));
|
||||
npc.doCast(PARALYSIS.getSkill());
|
||||
}
|
||||
}
|
||||
else if (npcId == RIBA_IREN)
|
||||
@ -305,7 +309,7 @@ public final class Orfen extends AbstractNpcAI
|
||||
if (!npc.isCastingNow(SkillCaster::isAnyNormalType) && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2.0)))
|
||||
{
|
||||
npc.setTarget(attacker);
|
||||
npc.doCast(SkillData.getInstance().getSkill(4516, 1));
|
||||
npc.doCast(ORFEN_HEAL.getSkill());
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
|
@ -14,16 +14,16 @@
|
||||
* 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.group;
|
||||
package ai.areas.StakatoNest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jmobius.commons.util.CommonUtil;
|
||||
import com.l2jmobius.gameserver.data.xml.impl.SkillData;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
|
||||
import com.l2jmobius.gameserver.util.Broadcast;
|
||||
@ -81,6 +81,8 @@ public final class StakatoNest extends AbstractNpcAI
|
||||
// Large Stakato Cocoon
|
||||
private static final int LARGE_COCOON = 14834;
|
||||
|
||||
private static final SkillHolder DEVOUR_SUBORDINATE = new SkillHolder(4484, 1);
|
||||
|
||||
private StakatoNest()
|
||||
{
|
||||
registerMobs(STAKATO_MOBS);
|
||||
@ -104,7 +106,7 @@ public final class StakatoNest extends AbstractNpcAI
|
||||
mob.abortAttack();
|
||||
mob.abortCast();
|
||||
mob.setHeading(Util.calculateHeadingFrom(mob, _follower));
|
||||
mob.doCast(SkillData.getInstance().getSkill(4484, 1));
|
||||
mob.doCast(DEVOUR_SUBORDINATE.getSkill());
|
||||
mob.setCurrentHp(mob.getCurrentHp() + _hp);
|
||||
_follower.doDie(_follower);
|
||||
_follower.deleteMe();
|
@ -21,10 +21,12 @@ import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.l2jmobius.gameserver.ThreadPoolManager;
|
||||
import com.l2jmobius.gameserver.data.xml.impl.SkillData;
|
||||
import com.l2jmobius.gameserver.data.xml.impl.SkillTreesData;
|
||||
import com.l2jmobius.gameserver.enums.CategoryType;
|
||||
import com.l2jmobius.gameserver.enums.Race;
|
||||
import com.l2jmobius.gameserver.enums.UserInfoType;
|
||||
import com.l2jmobius.gameserver.model.L2SkillLearn;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.base.ClassId;
|
||||
@ -38,7 +40,6 @@ import com.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.AcquireSkillList;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.ExChangeToAwakenedClass;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.ExShowUsm;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.SocialAction;
|
||||
@ -66,6 +67,7 @@ public final class AwakeningMaster extends AbstractNpcAI
|
||||
// Items
|
||||
private static final int SCROLL_OF_AFTERLIFE = 17600;
|
||||
private static final int CHAOS_POMANDER = 37374;
|
||||
private static final int CHAOS_POMANDER_DUAL_CLASS = 37375;
|
||||
private static final Map<CategoryType, Integer> AWAKE_POWER = new HashMap<>();
|
||||
|
||||
static
|
||||
@ -337,11 +339,13 @@ public final class AwakeningMaster extends AbstractNpcAI
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
giveItems(player, CHAOS_POMANDER, 2);
|
||||
giveItems(player, player.isDualClassActive() ? CHAOS_POMANDER_DUAL_CLASS : CHAOS_POMANDER, 2);
|
||||
|
||||
SkillTreesData.getInstance().cleanSkillUponAwakening(player);
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace()))
|
||||
{
|
||||
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);
|
||||
}
|
||||
player.sendSkillList();
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
<html><body>Monk of Chaos:<br>
|
||||
The skills that were once given to each race to balance their power have been taken back. Through the will of Chaos, you can learn the skills of other races as long as you have a Chaos Pomander.<br>
|
||||
The skills that were once given to each race to balance their power have been taken back. Through the will of Chaos, you can learn the skills of other races as long as you have a Chaos Pomander. <br>
|
||||
Chaos Pomander is a crystal of power that can combine anything. If you have one, you have been selected by my master to work for a balanced world.<br>
|
||||
Are you ready for that world? If so, select the Revelation of Chaos, and through it a power appropriate for you.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos LearnRevelationSkills">Receive the Revelation of Chaos.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos CancelRevelationSkills">Reset the Revelation skill.(100,000,000 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos 33880-2.html">"Who are Monks of Chaos?"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos LearnRevelationSkills">"Okay. I want the Revelation of Chaos."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos CancelRevelationSkills" msg="4099">"I want to reset my Revelation skills." (100,000,000 Adena)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos 33880-2.html">"Can you tell me about yourself?"</Button>
|
||||
</body></html>
|
@ -1,6 +1,5 @@
|
||||
<html><body>Monk of Chaos:<br>
|
||||
We, the Monks of Chaos, serve the balance.<br>
|
||||
You may think chaos is a destructive force, but nothing could be further from the truth.
|
||||
<font color="LEVEL">Chaos</font> seeks to balance light and darkness by reverting them to the original energies.<br>
|
||||
We who respect his will are the only ones truly free to act on it.
|
||||
You may think chaos is a destructive force, but nothing could be further from the truth. <font color="LEVEL">Chaos</font> seeks to balance light and darkness by reverting them to the original energies.<br>
|
||||
We who respect his will are the only ones truly free to act on it.<br>
|
||||
</body></html>
|
@ -1,6 +1,6 @@
|
||||
<html><body>Monk of Chaos:<br>
|
||||
Nothing could be created or destroyed without chaos. It is the beginning and the end of all things.<br>
|
||||
We, the Monks of Chaos, understand this. It is the law of the universe.<br>
|
||||
If you wish, we will reveal our master's will to you.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos 33880-1.html">"So tell me about this Revelation of Chaos."</Button>
|
||||
Chaos is absolutely necessary for both creation and destruction.<br>
|
||||
We, the Monks of Chaos, respect Chaos' will and act on it.<br>
|
||||
If you want, I will tell you about our master's will.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos 33880-1.html">"What is the Revelation of Chaos?"</Button>
|
||||
</body></html>
|
@ -27,6 +27,7 @@ import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.base.AcquireSkillType;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.ExAcquirableSkillListByClass;
|
||||
|
||||
@ -51,8 +52,8 @@ public final class MonkOfChaos extends AbstractNpcAI
|
||||
|
||||
private static final String[] DUALCLASS_REVELATION_VAR_NAMES =
|
||||
{
|
||||
"DualclassRevelationSkill1",
|
||||
"DualclassRevelationSkill2"
|
||||
PlayerVariables.REVELATION_SKILL_1_DUAL_CLASS,
|
||||
PlayerVariables.REVELATION_SKILL_2_DUAL_CLASS
|
||||
};
|
||||
|
||||
private MonkOfChaos()
|
||||
@ -161,13 +162,10 @@ public final class MonkOfChaos extends AbstractNpcAI
|
||||
giveItems(player, chaosPomander, count);
|
||||
}
|
||||
}
|
||||
|
||||
htmltext = "canceled.html";
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
<html><body>
|
||||
Are you curious why I'm here in front of this fortress owned by the <font color="LEVEL">%clanName%</font> clan selling my wares, instead of in a nice, safe village?<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 90001000">"No. Please show me items I can use on the battlefield."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">"Yes, I'm a little curious."</Button>
|
||||
<html><body>
|
||||
Are you curious why I'm here in front of this fortress owned by the <font color="LEVEL">%clanName%</font> clan selling my wares, instead of in a nice, safe village?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 90001000">"No. Please show me items I can use on the battlefield."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">"Yes, I'm a little curious."</Button>
|
||||
</body></html>
|
@ -1,8 +1,7 @@
|
||||
<html><body>
|
||||
I'll tell you why. You may be surprised to learn that I am a member of the Tactics Corps. You see this fortress? Places just like it used to protect the people of this land from Monsters and foreign armies. And now? Greedy, grasping fools have occupied the fortress, using its might to extort money from the area residents... So I'm guarding this area, searching for someone worthy to defeat that band of bandits and occupy the fortress on behalf of the citizens here.<br>
|
||||
You seem a likely candidate... What do you say? You could hire our mercenaries, and with our help I'm sure you'd be able to capture the fortress. Do you want to try?<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager register">Register fortress siege warfare.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager cancel">Cancel registration.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager warInfo">Ask about fortress siege warfare.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-13.html">"Tell me more about the fortress."</Button>
|
||||
</body></html>
|
||||
<html><body>I'll tell you why. You may be surprised to learn that I am a member of the Tactics Corps. You see this fortress? Places just like it used to protect the people of this land from Monsters and foreign armies. And now? Greedy, grasping fools have occupied the fortress, using its might to extort money from the area residents... So I'm guarding this area, searching for someone worthy to defeat that band of bandits and occupy the fortress on behalf of the citizens here.<br>
|
||||
You seem a likely candidate... What do you say? You could hire our mercenaries, and with our help I'm sure you'd be able to capture the fortress. Do you want to try?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager register">"I'd like to register for fortress siege warfare."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager cancel">"I want to cancel my registration."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager warInfo">"Can you tell me about fortress siege warfare?"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-13.html">"Tell me more about the fortress."</Button></body>
|
||||
</html>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<html><body>
|
||||
Listen carefully. My lord does not trust the clan currently in possession of this fortress — you can see the effort and expense he has gone to to assemble this mercenary force as a counterweight. Were you to expel the current owners and capture the fortress, I am sure he would be most grateful. (Of course, that probably won't last long -- it's not called a "3-day reign" for nothing...)<br><br>
|
||||
Oh, forgive my muttering -- just talking to myself, you know. In any event, let me explain a little about the two types of fortresses.<br><br>
|
||||
Territorial fortresses are built within a territory to defend against monster attacks, while border fortresses are established along the boundary between two territories. If you have a map, take a look for yourself and you'll see what I mean. Blue flags indicate territorial fortresses, whereas red flags indicate border fortresses.<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-14.html">Ask him how to conquer a fortress.</Button>
|
||||
</body></html>
|
||||
<html><body>
|
||||
Listen carefully. My lord does not trust the clan currently in possession of this fortress <20> you can see the effort and expense he has gone to assemble this mercenary force as a counterweight. Were you to expel the current owners and capture the fortress, I am sure he would be most grateful. (Of course, that probably won't last long -- it's not called a "3-day reign" for nothing...)<br><br>
|
||||
Oh, forgive my muttering -- just talking to myself, you know. In any event, let me explain a little about the two types of fortresses.<br><br>Territorial fortresses are built within a territory to defend against monster attacks, while border fortresses are established along the boundary between two territories. If you have a map, take a look for yourself and you'll see what I mean. Blue flags indicate territorial fortresses, whereas red flags indicate border fortresses.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-14.html">"What should I do to conquer a fortress?"</Button>
|
||||
</body></html>
|
@ -1,5 +1,5 @@
|
||||
<html><body>
|
||||
Knowing a fortress' layout can help you turn the battle to your advantage. Each fortress is essentially a residential area consisting of a large central command post surrounded by several barracks.<br><br>
|
||||
There are 5 types of barracks: defense barracks, archer barracks, support barracks, officer's barracks and a control center. The number of barracks varies depending on the size of the fortress. Each barracks has a commander who must be defeated in order for you to conquer that barracks. Note that the control center must have a Warsmith or a Maestro in order to handle the machinery.<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-15.html">"What happens if I conquer the barracks?"</Button>
|
||||
<html><body>
|
||||
Knowing a fortress' layout can help you turn the battle to your advantage. Each fortress is essentially a residential area consisting of a large central command post surrounded by several barracks.<br><br>
|
||||
There are 5 types of barracks: defense barracks, archer barracks, support barracks, officer's barracks and a control room. The number of barracks varies depending on the size of the fortress. Each barracks has a commander who must be defeated in order for you to conquer that barracks. Note that the control center must have a Warsmith or a Maestro in order to handle the machinery.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-15.html">"What happens if I conquer the barracks?"</Button>
|
||||
</body></html>
|
@ -1,5 +1,5 @@
|
||||
<html><body>
|
||||
If you conquer all of the barracks, weakening your opponents' defensive system, the command gate will open. Entering the command post, you will find a Flag of Combat on the first floor that symbolizes the authority of the fort. You can end the battle by hanging it from the flag pole on the very highest floor.<br><br>
|
||||
Be warned, though, that you must conquer the fortress within 10 minutes or all of the barracks' functions will return to normal.<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-16.html">"As a mercenary, what do you..."</Button>
|
||||
<html><body>
|
||||
If you conquer all of the barracks, weakening your opponents' defensive system, the command gate will open. Entering the command post, you will find a Combat Flag on the first floor that symbolizes the authority of the fort. You can end the battle by hanging it from the flag pole on the very highest floor.<br><br>
|
||||
Be warned, though, that you must conquer the fortress within 10 minutes or all of the barracks' functions will return to normal.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-16.html">"As a mercenary, what do you..."</Button>
|
||||
</body></html>
|
@ -1,5 +1,4 @@
|
||||
<html><body>
|
||||
Uh-huh. I occasionally earn a few Adena as mercenary... A single mission earns me 250,000 Adena. Not a particularly expensive fee, considering that I put my life on the line!<br><br>
|
||||
But I get your point. If there is an enemy clan controlling the fortress, I'll escort our mercenary captain there. He can open the central command gate, so be sure to guard him carefully!<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">Back</Button>
|
||||
</body></html>
|
||||
<html><body>
|
||||
Uh-huh. I occasionally earn a few Adena as mercenary... A single mission earns me 250,000 Adena. Not a particularly expensive fee, considering that I put my life on the line!<br><br>But I get your point. If there is an enemy clan controlling the fortress, I'll escort our mercenary captain there. He can open the central command gate, so be sure to guard him carefully!<br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">Back</Button>
|
||||
</body></html>
|
@ -1,4 +1,4 @@
|
||||
<html><body>
|
||||
Hmm... I feel a strange energy near the fortress. Be on your guard! I believe that the rebels who once held this place will soon attempt to seize it again!<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">Back.</Button>
|
||||
</body></html>
|
||||
<html><body>
|
||||
Hmm... I feel a strange energy near the fortress. Be on your guard! I believe that the rebels who once held this place will soon attempt to seize it again!<br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">Back</Button>
|
||||
</body></html>
|
@ -1,4 +1,4 @@
|
||||
<html><body>
|
||||
We don't have any clients at the moment, so we're searching for opportunities. If someone needs us, we can be ready in less than an hour. How about your clan? A mere 250,000 Adena secures our services!<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">Back.</Button>
|
||||
</body></html>
|
||||
<html><body>
|
||||
We don't have any clients at the moment, so we're searching for opportunities. If someone needs us, we can be ready in less than an hour. How about your clan? A mere 250,000 Adena secures our services!<br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">Back</Button>
|
||||
</body></html>
|
@ -1,4 +1,4 @@
|
||||
<html><body>
|
||||
Ah, we've already been hired by another clan. If you make a request now, we will register your clan to the battle, but don't give us a hard time. I'll return to our headquarters to prepare. Get ready! The battle will begin in 10 minutes.<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">Back.</Button>
|
||||
</body></html>
|
||||
<html><body>
|
||||
Ah, we've already been hired by another clan. If you make a request now, we will register your clan to the battle, but don't give us a hard time. I'll return to our headquarters to prepare. Get ready! The battle will begin in 10 minutes.<br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">Back</Button>
|
||||
</body></html>
|
@ -1,5 +1,4 @@
|
||||
<html><body>
|
||||
Are you curious why I am selling here, since it's not a village?<br><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 90001000">"No. Please show me items I can use on the battlefield."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">"Yes, I'm a little curious."</Button>
|
||||
<html><body>Are you curious why I am selling here, since it's not a village?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 90001000">"No. Please show me items I can use on the battlefield."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest FortressSiegeManager FortressSiegeManager-11.html">"Yes, I'm a little curious."</Button>
|
||||
</body></html>
|
@ -158,6 +158,7 @@ public final class MonumentOfHeroes extends AbstractNpcAI
|
||||
{
|
||||
htmltext = "MonumentOfHeroes-weaponNo.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "heroCirclet":
|
||||
{
|
||||
|
@ -76,7 +76,7 @@ public final class DayNightSpawns extends AbstractNpcAI
|
||||
}
|
||||
else
|
||||
{
|
||||
group.spawnAll(null);
|
||||
group.spawnAll();
|
||||
}
|
||||
}
|
||||
else if (DAY_GROUP_NAME.equalsIgnoreCase(group.getName()))
|
||||
@ -87,7 +87,7 @@ public final class DayNightSpawns extends AbstractNpcAI
|
||||
}
|
||||
else
|
||||
{
|
||||
group.spawnAll(null);
|
||||
group.spawnAll();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -40,6 +40,7 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("AddTeleportBookmarkSlot", AddTeleportBookmarkSlot::new);
|
||||
EffectHandler.getInstance().registerHandler("AreaDamage", AreaDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("AttackAttribute", AttackAttribute::new);
|
||||
EffectHandler.getInstance().registerHandler("AttackAttributeAdd", AttackAttributeAdd::new);
|
||||
EffectHandler.getInstance().registerHandler("AttackBehind", AttackBehind::new);
|
||||
EffectHandler.getInstance().registerHandler("AttackTrait", AttackTrait::new);
|
||||
EffectHandler.getInstance().registerHandler("Backstab", Backstab::new);
|
||||
@ -117,7 +118,6 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
||||
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
||||
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
||||
EffectHandler.getInstance().registerHandler("EnemyCharge", EnemyCharge::new);
|
||||
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
||||
EffectHandler.getInstance().registerHandler("EnlargeAbnormalSlot", EnlargeAbnormalSlot::new);
|
||||
EffectHandler.getInstance().registerHandler("EnlargeSlot", EnlargeSlot::new);
|
||||
@ -131,7 +131,6 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("Feed", Feed::new);
|
||||
EffectHandler.getInstance().registerHandler("Flag", Flag::new);
|
||||
EffectHandler.getInstance().registerHandler("FlipBlock", FlipBlock::new);
|
||||
EffectHandler.getInstance().registerHandler("FlyMove", FlyMove::new);
|
||||
EffectHandler.getInstance().registerHandler("FocusEnergy", FocusEnergy::new);
|
||||
EffectHandler.getInstance().registerHandler("FocusMomentum", FocusMomentum::new);
|
||||
EffectHandler.getInstance().registerHandler("FocusMaxMomentum", FocusMaxMomentum::new);
|
||||
@ -249,6 +248,7 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("RealDamage", RealDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("RebalanceHP", RebalanceHP::new);
|
||||
EffectHandler.getInstance().registerHandler("Recovery", Recovery::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceDamage", ReduceDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceCancel", ReduceCancel::new);
|
||||
EffectHandler.getInstance().registerHandler("ReduceDropPenalty", ReduceDropPenalty::new);
|
||||
EffectHandler.getInstance().registerHandler("ReflectMagic", ReflectMagic::new);
|
||||
@ -314,7 +314,7 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("TeleportToNpc", TeleportToNpc::new);
|
||||
EffectHandler.getInstance().registerHandler("TeleportToSummon", TeleportToSummon::new);
|
||||
EffectHandler.getInstance().registerHandler("TeleportToTarget", TeleportToTarget::new);
|
||||
EffectHandler.getInstance().registerHandler("ThrowUp", ThrowUp::new);
|
||||
EffectHandler.getInstance().registerHandler("FlyAway", FlyAway::new);
|
||||
EffectHandler.getInstance().registerHandler("TransferDamageToPlayer", TransferDamageToPlayer::new);
|
||||
EffectHandler.getInstance().registerHandler("TransferDamageToSummon", TransferDamageToSummon::new);
|
||||
EffectHandler.getInstance().registerHandler("TransferHate", TransferHate::new);
|
||||
|
86
L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/AttackAttributeAdd.java
vendored
Normal file
86
L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/AttackAttributeAdd.java
vendored
Normal file
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* 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 handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.AttributeType;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.model.stats.Stats;
|
||||
|
||||
/**
|
||||
* @author Sdw
|
||||
*/
|
||||
public class AttackAttributeAdd extends AbstractEffect
|
||||
{
|
||||
private final double _amount;
|
||||
|
||||
public AttackAttributeAdd(StatsSet params)
|
||||
{
|
||||
_amount = params.getDouble("amount", 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pump(L2Character effected, Skill skill)
|
||||
{
|
||||
Stats stat = Stats.FIRE_POWER;
|
||||
AttributeType maxAttribute = AttributeType.FIRE;
|
||||
int maxValue = 0;
|
||||
|
||||
for (AttributeType attribute : AttributeType.values())
|
||||
{
|
||||
final int attributeValue = effected.getStat().getAttackElementValue(attribute);
|
||||
if ((attributeValue > 0) && (attributeValue > maxValue))
|
||||
{
|
||||
maxAttribute = attribute;
|
||||
maxValue = attributeValue;
|
||||
}
|
||||
}
|
||||
|
||||
switch (maxAttribute)
|
||||
{
|
||||
case WATER:
|
||||
{
|
||||
stat = Stats.WATER_POWER;
|
||||
break;
|
||||
}
|
||||
case WIND:
|
||||
{
|
||||
stat = Stats.WIND_POWER;
|
||||
break;
|
||||
}
|
||||
case EARTH:
|
||||
{
|
||||
stat = Stats.EARTH_POWER;
|
||||
break;
|
||||
}
|
||||
case HOLY:
|
||||
{
|
||||
stat = Stats.HOLY_POWER;
|
||||
break;
|
||||
}
|
||||
case DARK:
|
||||
{
|
||||
stat = Stats.DARK_POWER;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
effected.getStat().mergeAdd(stat, _amount);
|
||||
}
|
||||
}
|
@ -37,7 +37,7 @@ public final class CallSkill extends AbstractEffect
|
||||
|
||||
public CallSkill(StatsSet params)
|
||||
{
|
||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1), params.getInt("skillSubLevel", 0));
|
||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ public final class CallSkillOnActionTime extends AbstractEffect
|
||||
|
||||
public CallSkillOnActionTime(StatsSet params)
|
||||
{
|
||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1), params.getInt("skillSubLevel", 0));
|
||||
setTicks(params.getInt("ticks"));
|
||||
}
|
||||
|
||||
|
@ -1,109 +0,0 @@
|
||||
/*
|
||||
* 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 handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.GeoData;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
|
||||
|
||||
/**
|
||||
* Enemy Charge effect implementation.
|
||||
*/
|
||||
public final class EnemyCharge extends AbstractEffect
|
||||
{
|
||||
private final int _speed;
|
||||
private final int _delay;
|
||||
private final int _animationSpeed;
|
||||
|
||||
public EnemyCharge(StatsSet params)
|
||||
{
|
||||
_speed = params.getInt("speed", 0);
|
||||
_delay = params.getInt("delay", 0);
|
||||
_animationSpeed = params.getInt("animationSpeed", 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInstant()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
||||
{
|
||||
if (effected.isMovementDisabled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Get current position of the L2Character
|
||||
final int curX = effector.getX();
|
||||
final int curY = effector.getY();
|
||||
final int curZ = effector.getZ();
|
||||
|
||||
// Calculate distance (dx,dy) between current position and destination
|
||||
final double dx = effected.getX() - curX;
|
||||
final double dy = effected.getY() - curY;
|
||||
final double dz = effected.getZ() - curZ;
|
||||
final double distance = Math.sqrt((dx * dx) + (dy * dy));
|
||||
if (distance > 2000)
|
||||
{
|
||||
_log.info("EffectEnemyCharge was going to use invalid coordinates for characters, getEffector: " + curX + "," + curY + " and getEffected: " + effected.getX() + "," + effected.getY());
|
||||
return;
|
||||
}
|
||||
|
||||
int offset = Math.max((int) distance - skill.getFlyRadius(), 30);
|
||||
|
||||
// approximation for moving closer when z coordinates are different
|
||||
// TODO: handle Z axis movement better
|
||||
offset -= Math.abs(dz);
|
||||
if (offset < 5)
|
||||
{
|
||||
offset = 5;
|
||||
}
|
||||
|
||||
// If no distance
|
||||
if ((distance < 1) || ((distance - offset) <= 0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Calculate movement angles needed
|
||||
final double sin = dy / distance;
|
||||
final double cos = dx / distance;
|
||||
|
||||
// Calculate the new destination with offset included
|
||||
final int x = curX + (int) ((distance - offset) * cos);
|
||||
final int y = curY + (int) ((distance - offset) * sin);
|
||||
final int z = effected.getZ();
|
||||
|
||||
final Location destination = GeoData.getInstance().moveCheck(effector.getX(), effector.getY(), effector.getZ(), x, y, z, effector.getInstanceWorld());
|
||||
|
||||
effector.broadcastPacket(new FlyToLocation(effector, destination, skill.getFlyType(), _speed, _delay, _animationSpeed));
|
||||
|
||||
// maybe is need force set X,Y,Z
|
||||
effected.setXYZ(destination);
|
||||
effected.broadcastPacket(new ValidateLocation(effector));
|
||||
effected.revalidateZone(true);
|
||||
}
|
||||
}
|
@ -43,6 +43,7 @@ public final class EnergyAttack extends AbstractEffect
|
||||
private final int _criticalChance;
|
||||
private final boolean _ignoreShieldDefence;
|
||||
private final boolean _overHit;
|
||||
private final double _pDefMod;
|
||||
|
||||
public EnergyAttack(StatsSet params)
|
||||
{
|
||||
@ -51,6 +52,7 @@ public final class EnergyAttack extends AbstractEffect
|
||||
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
|
||||
_overHit = params.getBoolean("overHit", false);
|
||||
_chargeConsume = params.getInt("chargeConsume", 0);
|
||||
_pDefMod = params.getDouble("pDefMod", 1.0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -103,7 +105,7 @@ public final class EnergyAttack extends AbstractEffect
|
||||
((L2Attackable) effected).overhitEnabled(true);
|
||||
}
|
||||
|
||||
int defence = effected.getPDef();
|
||||
double defence = effected.getPDef() * _pDefMod;
|
||||
|
||||
if (!_ignoreShieldDefence)
|
||||
{
|
||||
@ -137,7 +139,7 @@ public final class EnergyAttack extends AbstractEffect
|
||||
// Skill specific mods.
|
||||
final double energyChargesBoost = 1 + (charge * 0.1); // 10% bonus damage for each charge used.
|
||||
final double critMod = critical ? Formulas.calcCritDamage(attacker, effected, skill) : 1;
|
||||
final double ssmod = (skill.useSoulShot() && attacker.isChargedShot(ShotType.SOULSHOTS)) ? attacker.getStat().getValue(Stats.SHOTS_BONUS, 2) : 1; // 2.04 for dual weapon?
|
||||
final double ssmod = (skill.useSoulShot() && attacker.isChargedShot(ShotType.SOULSHOTS)) ? (2 * attacker.getStat().getValue(Stats.SHOTS_BONUS)) : 1; // 2.04 for dual weapon?
|
||||
|
||||
// ...................________Initial Damage_________...__Charges Additional Damage__...____________________________________
|
||||
// ATTACK CALCULATION ((77 * ((pAtk * lvlMod) + power) * (1 + (0.1 * chargesConsumed)) / pdef) * skillPower) + skillPowerAdd
|
||||
|
@ -30,10 +30,13 @@ import com.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
|
||||
/**
|
||||
* Throw Up effect implementation.
|
||||
*/
|
||||
public final class ThrowUp extends AbstractEffect
|
||||
public final class FlyAway extends AbstractEffect
|
||||
{
|
||||
public ThrowUp(StatsSet params)
|
||||
private final int _radius;
|
||||
|
||||
public FlyAway(StatsSet params)
|
||||
{
|
||||
_radius = params.getInt("radius");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -45,52 +48,18 @@ public final class ThrowUp extends AbstractEffect
|
||||
@Override
|
||||
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
||||
{
|
||||
final int curX = effected.getX();
|
||||
final int curY = effected.getY();
|
||||
final int curZ = effected.getZ();
|
||||
|
||||
// Calculate distance between effector and effected current position
|
||||
final double dx = effector.getX() - curX;
|
||||
final double dy = effector.getY() - curY;
|
||||
final double dz = effector.getZ() - curZ;
|
||||
final int dx = effector.getX() - effected.getX();
|
||||
final int dy = effector.getY() - effected.getY();
|
||||
final double distance = Math.sqrt((dx * dx) + (dy * dy));
|
||||
if (distance > 2000)
|
||||
{
|
||||
_log.info("EffectThrow was going to use invalid coordinates for characters, getEffected: " + curX + "," + curY + " and getEffector: " + effector.getX() + "," + effector.getY());
|
||||
return;
|
||||
}
|
||||
int offset = Math.min((int) distance + skill.getFlyRadius(), 1400);
|
||||
final double nRadius = effector.getCollisionRadius() + effected.getCollisionRadius() + _radius;
|
||||
|
||||
double cos;
|
||||
double sin;
|
||||
|
||||
// approximation for moving futher when z coordinates are different
|
||||
// TODO: handle Z axis movement better
|
||||
offset += Math.abs(dz);
|
||||
if (offset < 5)
|
||||
{
|
||||
offset = 5;
|
||||
}
|
||||
|
||||
// If no distance
|
||||
if (distance < 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Calculate movement angles needed
|
||||
sin = dy / distance;
|
||||
cos = dx / distance;
|
||||
|
||||
// Calculate the new destination with offset included
|
||||
final int x = effector.getX() - (int) (offset * cos);
|
||||
final int y = effector.getY() - (int) (offset * sin);
|
||||
final int z = effected.getZ();
|
||||
final int x = (int) (effector.getX() - (nRadius * (dx / distance)));
|
||||
final int y = (int) (effector.getY() - (nRadius * (dy / distance)));
|
||||
final int z = effector.getZ();
|
||||
|
||||
final Location destination = GeoData.getInstance().moveCheck(effected.getX(), effected.getY(), effected.getZ(), x, y, z, effected.getInstanceWorld());
|
||||
|
||||
effected.broadcastPacket(new FlyToLocation(effected, destination, FlyType.THROW_UP));
|
||||
// TODO: Review.
|
||||
effected.setXYZ(destination);
|
||||
effected.broadcastPacket(new ValidateLocation(effected));
|
||||
effected.revalidateZone(true);
|
@ -1,86 +0,0 @@
|
||||
/*
|
||||
* 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 handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.GeoData;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType;
|
||||
import com.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* @author Nos
|
||||
*/
|
||||
public class FlyMove extends AbstractEffect
|
||||
{
|
||||
private final FlyType _flyType;
|
||||
private final int _angle;
|
||||
private final boolean _absoluteAngle; // Use map angle instead of character angle.
|
||||
private final int _range;
|
||||
private final boolean _selfPos; // Use the position and heading of yourself to move in the given range
|
||||
private final int _speed;
|
||||
private final int _delay;
|
||||
private final int _animationSpeed;
|
||||
|
||||
public FlyMove(StatsSet params)
|
||||
{
|
||||
_flyType = params.getEnum("flyType", FlyType.class, FlyType.DUMMY);
|
||||
_angle = params.getInt("angle", 0);
|
||||
_absoluteAngle = params.getBoolean("absoluteAngle", false);
|
||||
_range = params.getInt("range", 20);
|
||||
_selfPos = params.getBoolean("selfPos", false);
|
||||
_speed = params.getInt("speed", 0);
|
||||
_delay = params.getInt("delay", 0);
|
||||
_animationSpeed = params.getInt("animationSpeed", 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
||||
{
|
||||
final L2Character target = _selfPos ? effector : effected;
|
||||
|
||||
// Avoid calculating heading towards yourself because it always yields 0. Same results can be achieved with absoluteAngle of 0.
|
||||
final int heading = (_selfPos || (effector == effected)) ? effector.getHeading() : Util.calculateHeadingFrom(effector, effected);
|
||||
double angle = _absoluteAngle ? _angle : Util.convertHeadingToDegree(heading);
|
||||
angle = (angle + _angle) % 360;
|
||||
if (angle < 0)
|
||||
{
|
||||
angle += 360;
|
||||
}
|
||||
|
||||
final double radiansAngle = Math.toRadians(angle);
|
||||
final int posX = (int) (target.getX() + (_range * Math.cos(radiansAngle)));
|
||||
final int posY = (int) (target.getY() + (_range * Math.sin(radiansAngle)));
|
||||
final int posZ = target.getZ();
|
||||
final Location destination = GeoData.getInstance().moveCheck(effector.getX(), effector.getY(), effector.getZ(), posX, posY, posZ, effector.getInstanceWorld());
|
||||
|
||||
effector.broadcastPacket(new FlyToLocation(effector, destination, _flyType, _speed, _delay, _animationSpeed));
|
||||
effector.setXYZ(destination);
|
||||
effected.revalidateZone(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInstant()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,31 +1,31 @@
|
||||
/*
|
||||
* 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 handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.stats.Stats;
|
||||
|
||||
/**
|
||||
* @author Sdw
|
||||
*/
|
||||
public class JewelSlot extends AbstractStatAddEffect
|
||||
{
|
||||
public JewelSlot(StatsSet params)
|
||||
{
|
||||
super(params, Stats.BROOCH_JEWELS);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* 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 handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.stats.Stats;
|
||||
|
||||
/**
|
||||
* @author Sdw
|
||||
*/
|
||||
public class JewelSlot extends AbstractStatAddEffect
|
||||
{
|
||||
public JewelSlot(StatsSet params)
|
||||
{
|
||||
super(params, Stats.BROOCH_JEWELS);
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
||||
private final double _criticalChance;
|
||||
private final boolean _ignoreShieldDefence;
|
||||
private final boolean _overHit;
|
||||
private final double _pDefMod;
|
||||
|
||||
private final Map<WeaponType, Double> _weaponBonus = new HashMap<>();
|
||||
|
||||
@ -53,6 +54,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
||||
_criticalChance = params.getDouble("criticalChance", 0);
|
||||
_ignoreShieldDefence = params.getBoolean("ignoreShieldDefence", false);
|
||||
_overHit = params.getBoolean("overHit", false);
|
||||
_pDefMod = params.getDouble("pDefMod", 1.0);
|
||||
|
||||
for (WeaponType weapon : WeaponType.values())
|
||||
{
|
||||
@ -106,7 +108,7 @@ public final class PhysicalAttackWeaponBonus extends AbstractEffect
|
||||
}
|
||||
|
||||
final double attack = effector.getPAtk();
|
||||
double defence = effected.getPDef();
|
||||
double defence = effected.getPDef() * _pDefMod;
|
||||
|
||||
if (!_ignoreShieldDefence)
|
||||
{
|
||||
|
@ -137,7 +137,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
||||
final double wpnMod = effector.getAttackType().isRanged() ? 70 : (70 * 1.10113);
|
||||
final double rangedBonus = effector.getAttackType().isRanged() ? (attack + _power) : 0;
|
||||
final double critMod = critical ? Formulas.calcCritDamage(effector, effected, skill) : 1;
|
||||
final double ssmod = (skill.useSoulShot() && effector.isChargedShot(ShotType.SOULSHOTS)) ? effector.getStat().getValue(Stats.SHOTS_BONUS, 2) : 1; // 2.04 for dual weapon?
|
||||
final double ssmod = (skill.useSoulShot() && effector.isChargedShot(ShotType.SOULSHOTS)) ? (2 * effector.getStat().getValue(Stats.SHOTS_BONUS)) : 1; // 2.04 for dual weapon?
|
||||
final double soulsMod = 1 + (souls * 0.04); // Souls Formula (each soul increase +4%)
|
||||
|
||||
// ...................____________Melee Damage_____________......................................___________________Ranged Damage____________________
|
||||
|
63
L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/ReduceDamage.java
vendored
Normal file
63
L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/ReduceDamage.java
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
/*
|
||||
* 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 handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.events.EventType;
|
||||
import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureDamageReceived;
|
||||
import com.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
|
||||
import com.l2jmobius.gameserver.model.events.returns.DamageReturn;
|
||||
import com.l2jmobius.gameserver.model.skills.BuffInfo;
|
||||
|
||||
/**
|
||||
* @author Sdw
|
||||
*/
|
||||
public class ReduceDamage extends AbstractEffect
|
||||
{
|
||||
private final double _amount;
|
||||
|
||||
public ReduceDamage(StatsSet params)
|
||||
{
|
||||
_amount = params.getDouble("amount");
|
||||
}
|
||||
|
||||
private DamageReturn onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||
{
|
||||
// DOT effects are not taken into account.
|
||||
if (event.isDamageOverTime())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
final double newDamage = event.getDamage() * (_amount / 100);
|
||||
|
||||
return new DamageReturn(false, true, false, newDamage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExit(BuffInfo info)
|
||||
{
|
||||
info.getEffected().removeListenerIf(EventType.ON_CREATURE_DAMAGE_RECEIVED, listener -> listener.getOwner() == this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(BuffInfo info)
|
||||
{
|
||||
info.getEffected().addListener(new FunctionEventListener(info.getEffected(), EventType.ON_CREATURE_DAMAGE_RECEIVED, (OnCreatureDamageReceived event) -> onDamageReceivedEvent(event), this));
|
||||
}
|
||||
}
|
@ -87,7 +87,7 @@ public final class TriggerSkillByAttack extends AbstractEffect
|
||||
|
||||
public void onAttackEvent(OnCreatureDamageDealt event)
|
||||
{
|
||||
if (event.isDamageOverTime() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0)) || (!_allowNormalAttack && !_allowSkillAttack))
|
||||
if (event.isDamageOverTime() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0)) || (!_allowNormalAttack && !_allowSkillAttack))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ public final class TriggerSkillByAvoid extends AbstractEffect
|
||||
|
||||
public void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||
{
|
||||
if (event.isDamageOverTime() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0)))
|
||||
if (event.isDamageOverTime() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ public final class TriggerSkillByDamage extends AbstractEffect
|
||||
|
||||
public void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||
{
|
||||
if (event.isDamageOverTime() || (_chance == 0) || (_skill.getSkillLvl() == 0))
|
||||
if (event.isDamageOverTime() || (_chance == 0) || (_skill.getSkillLevel() == 0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -16,17 +16,23 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
import com.l2jmobius.commons.util.Rnd;
|
||||
import com.l2jmobius.gameserver.enums.InstanceType;
|
||||
import com.l2jmobius.gameserver.handler.TargetHandler;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.events.EventType;
|
||||
import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureDeath;
|
||||
import com.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
|
||||
import com.l2jmobius.gameserver.model.events.returns.TerminateReturn;
|
||||
import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureDamageReceived;
|
||||
import com.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
import com.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import com.l2jmobius.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||
|
||||
/**
|
||||
* Trigger Skill By Death Blow effect implementation.
|
||||
@ -34,43 +40,76 @@ import com.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
*/
|
||||
public final class TriggerSkillByDeathBlow extends AbstractEffect
|
||||
{
|
||||
private final int _minAttackerLevel;
|
||||
private final int _maxAttackerLevel;
|
||||
private final int _chance;
|
||||
private final SkillHolder _skill;
|
||||
private final TargetType _targetType;
|
||||
private final InstanceType _attackerType;
|
||||
|
||||
public TriggerSkillByDeathBlow(StatsSet params)
|
||||
{
|
||||
_minAttackerLevel = params.getInt("minAttackerLevel", 1);
|
||||
_maxAttackerLevel = params.getInt("maxAttackerLevel", 127);
|
||||
_chance = params.getInt("chance", 100);
|
||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.L2Character);
|
||||
}
|
||||
|
||||
public TerminateReturn onCreatureDeath(OnCreatureDeath event)
|
||||
public void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||
{
|
||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0)))
|
||||
if (event.getDamage() < event.getTarget().getCurrentHp())
|
||||
{
|
||||
return new TerminateReturn(false, false, false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (Rnd.get(100) > _chance)
|
||||
if ((_chance == 0) || (_skill.getSkillLevel() == 0))
|
||||
{
|
||||
return new TerminateReturn(false, false, false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getAttacker() == event.getTarget())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((event.getAttacker().getLevel() < _minAttackerLevel) || (event.getAttacker().getLevel() > _maxAttackerLevel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (((_chance < 100) && (Rnd.get(100) > _chance)) || !event.getAttacker().getInstanceType().isType(_attackerType))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final Skill triggerSkill = _skill.getSkill();
|
||||
L2Object target = null;
|
||||
try
|
||||
{
|
||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_log.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||
}
|
||||
|
||||
SkillCaster.triggerCast(event.getTarget(), event.getTarget(), triggerSkill);
|
||||
|
||||
return new TerminateReturn(true, true, true);
|
||||
if ((target != null) && target.isCharacter())
|
||||
{
|
||||
SkillCaster.triggerCast(event.getTarget(), (L2Character) target, triggerSkill);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExit(BuffInfo info)
|
||||
{
|
||||
info.getEffected().removeListenerIf(EventType.ON_CREATURE_DEATH, listener -> listener.getOwner() == this);
|
||||
info.getEffected().removeListenerIf(EventType.ON_CREATURE_DAMAGE_RECEIVED, listener -> listener.getOwner() == this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(BuffInfo info)
|
||||
{
|
||||
info.getEffected().addListener(new FunctionEventListener(info.getEffected(), EventType.ON_CREATURE_DEATH, (OnCreatureDeath event) -> onCreatureDeath(event), this));
|
||||
info.getEffected().addListener(new ConsumerEventListener(info.getEffected(), EventType.ON_CREATURE_DAMAGE_RECEIVED, (OnCreatureDamageReceived event) -> onDamageReceivedEvent(event), this));
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ public final class TriggerSkillByKill extends AbstractEffect
|
||||
|
||||
public void onCreatureKilled(OnCreatureKilled event, L2Character target)
|
||||
{
|
||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0)))
|
||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -114,7 +114,7 @@ public final class TriggerSkillByMagicType extends AbstractEffect
|
||||
@Override
|
||||
public void onStart(BuffInfo info)
|
||||
{
|
||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0) || (_magicTypes.length == 0))
|
||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -48,9 +48,9 @@ public final class TriggerSkillBySkill extends AbstractEffect
|
||||
|
||||
public TriggerSkillBySkill(StatsSet params)
|
||||
{
|
||||
_castSkillId = params.getInt("castSkillId", 0);
|
||||
_castSkillId = params.getInt("castSkillId");
|
||||
_chance = params.getInt("chance", 100);
|
||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||
}
|
||||
@ -67,9 +67,9 @@ public final class TriggerSkillBySkill extends AbstractEffect
|
||||
info.getEffected().removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||
}
|
||||
|
||||
public void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||
{
|
||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0) || (_castSkillId == 0)))
|
||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -77,9 +77,9 @@ public final class TriggerSkillBySkillAttack extends AbstractEffect
|
||||
info.getEffected().removeListenerIf(EventType.ON_CREATURE_DAMAGE_DEALT, listener -> listener.getOwner() == this);
|
||||
}
|
||||
|
||||
public void onAttackEvent(OnCreatureDamageDealt event)
|
||||
private void onAttackEvent(OnCreatureDamageDealt event)
|
||||
{
|
||||
if (event.isDamageOverTime() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0)) || (_attackSkill.getSkillId() == 0))
|
||||
if (event.isDamageOverTime() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0)) || (_attackSkill.getSkillId() == 0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -121,7 +121,7 @@ public class BeastSoulShot implements IItemHandler
|
||||
if (!pet.isChargedShot(ShotType.SOULSHOTS))
|
||||
{
|
||||
pet.setChargedShot(ShotType.SOULSHOTS, true);
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(pet, pet, holder.getSkillId(), holder.getSkillLvl(), 0, 0), 600));
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(pet, pet, holder.getSkillId(), holder.getSkillLevel(), 0, 0), 600));
|
||||
}
|
||||
}
|
||||
|
||||
@ -130,7 +130,7 @@ public class BeastSoulShot implements IItemHandler
|
||||
if (!s.isChargedShot(ShotType.SOULSHOTS))
|
||||
{
|
||||
s.setChargedShot(ShotType.SOULSHOTS, true);
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(s, s, holder.getSkillId(), holder.getSkillLvl(), 0, 0), 600));
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(s, s, holder.getSkillId(), holder.getSkillLevel(), 0, 0), 600));
|
||||
}
|
||||
});
|
||||
return true;
|
||||
|
@ -123,7 +123,7 @@ public class BeastSpiritShot implements IItemHandler
|
||||
if (!pet.isChargedShot(shotType))
|
||||
{
|
||||
pet.setChargedShot(shotType, true);
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(pet, pet, holder.getSkillId(), holder.getSkillLvl(), 0, 0), 600));
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(pet, pet, holder.getSkillId(), holder.getSkillLevel(), 0, 0), 600));
|
||||
}
|
||||
}
|
||||
|
||||
@ -132,7 +132,7 @@ public class BeastSpiritShot implements IItemHandler
|
||||
if (!s.isChargedShot(shotType))
|
||||
{
|
||||
s.setChargedShot(shotType, true);
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(s, s, holder.getSkillId(), holder.getSkillLvl(), 0, 0), 600));
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(s, s, holder.getSkillId(), holder.getSkillLevel(), 0, 0), 600));
|
||||
}
|
||||
});
|
||||
return true;
|
||||
|
@ -101,7 +101,7 @@ public class BlessedSpiritShot implements IItemHandler
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.YOUR_SPIRITSHOT_HAS_BEEN_ENABLED);
|
||||
}
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, holder.getSkillId(), holder.getSkillLvl(), 0, 0), 600));
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, holder.getSkillId(), holder.getSkillLevel(), 0, 0), 600));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -88,7 +88,7 @@ public class FishShots implements IItemHandler
|
||||
return false;
|
||||
}
|
||||
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, holder.getSkillId(), holder.getSkillLvl(), 0, 0), 600));
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, holder.getSkillId(), holder.getSkillLevel(), 0, 0), 600));
|
||||
activeChar.setTarget(oldTarget);
|
||||
return true;
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ public class PetFood implements IItemHandler
|
||||
final List<ItemSkillHolder> skills = item.getItem().getSkills(ItemSkillType.NORMAL);
|
||||
if (skills != null)
|
||||
{
|
||||
skills.forEach(holder -> useFood(playable, holder.getSkillId(), holder.getSkillLvl(), item));
|
||||
skills.forEach(holder -> useFood(playable, holder.getSkillId(), holder.getSkillLevel(), item));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -113,7 +113,7 @@ public class SoulShots implements IItemHandler
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.YOUR_SOULSHOTS_ARE_ENABLED);
|
||||
}
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, holder.getSkillId(), holder.getSkillLvl(), 0, 0), 600));
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, holder.getSkillId(), holder.getSkillLevel(), 0, 0), 600));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ public class SpiritShot implements IItemHandler
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.YOUR_SPIRITSHOT_HAS_BEEN_ENABLED);
|
||||
}
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, holder.getSkillId(), holder.getSkillLvl(), 0, 0), 600));
|
||||
skills.forEach(holder -> Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, holder.getSkillId(), holder.getSkillLevel(), 0, 0), 600));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType;
|
||||
|
||||
/**
|
||||
* Any friendly selected target. Works on dead targets or doors as well. Unable to force use.
|
||||
@ -74,7 +73,7 @@ public class EnemyNot implements ITargetTypeHandler
|
||||
}
|
||||
}
|
||||
|
||||
if ((skill.getFlyType() == FlyType.CHARGE) && !GeoData.getInstance().canMove(activeChar, target))
|
||||
if ((skill.isFlyType()) && !GeoData.getInstance().canMove(activeChar, target))
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
|
@ -20,6 +20,7 @@ import com.l2jmobius.gameserver.GeoData;
|
||||
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -60,14 +61,14 @@ public class NpcBody implements ITargetTypeHandler
|
||||
return null;
|
||||
}
|
||||
|
||||
final L2Character target = (L2Character) selectedTarget;
|
||||
final L2Npc npc = (L2Npc) selectedTarget;
|
||||
|
||||
if (target.isDead())
|
||||
if (npc.isDead())
|
||||
{
|
||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||
if (dontMove)
|
||||
{
|
||||
if (activeChar.calculateDistance(target, false, false) > skill.getCastRange())
|
||||
if (activeChar.calculateDistance(npc, false, false) > skill.getCastRange())
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
@ -79,7 +80,7 @@ public class NpcBody implements ITargetTypeHandler
|
||||
}
|
||||
|
||||
// Geodata check when character is within range.
|
||||
if (!GeoData.getInstance().canSeeTarget(activeChar, target))
|
||||
if (!GeoData.getInstance().canSeeTarget(activeChar, npc))
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
@ -89,7 +90,7 @@ public class NpcBody implements ITargetTypeHandler
|
||||
return null;
|
||||
}
|
||||
|
||||
return selectedTarget;
|
||||
return npc;
|
||||
}
|
||||
|
||||
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
||||
|
@ -23,7 +23,6 @@ import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.FlyToLocation.FlyType;
|
||||
|
||||
/**
|
||||
* Any friendly selected target or enemy if force use. Works on dead targets or doors as well.
|
||||
@ -76,7 +75,7 @@ public class Target implements ITargetTypeHandler
|
||||
}
|
||||
}
|
||||
|
||||
if ((skill.getFlyType() == FlyType.CHARGE) && !GeoData.getInstance().canMove(activeChar, target))
|
||||
if ((skill.isFlyType()) && !GeoData.getInstance().canMove(activeChar, target))
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
|
@ -77,9 +77,9 @@ public class Fan implements IAffectScopeHandler
|
||||
};
|
||||
|
||||
// Add object of origin since its skipped in the forEachVisibleObjectInRange method.
|
||||
if (target.isCharacter() && filter.test((L2Character) target))
|
||||
if (filter.test(activeChar))
|
||||
{
|
||||
action.accept(target);
|
||||
action.accept(activeChar);
|
||||
}
|
||||
|
||||
// Check and add targets.
|
||||
|
@ -29,6 +29,7 @@ import com.l2jmobius.gameserver.model.L2World;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.model.skills.targets.AffectObject;
|
||||
import com.l2jmobius.gameserver.model.skills.targets.AffectScope;
|
||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||
|
||||
@ -53,11 +54,8 @@ public class PointBlank implements IAffectScopeHandler
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (c.isDead())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ((affectObject != null) && !affectObject.checkAffectedObject(activeChar, c))
|
||||
// XXX : Find a proper way to fix, if it's not proper.
|
||||
if ((affectObject != null) && (!c.isDead() || (skill.getAffectObject() == AffectObject.OBJECT_DEAD_NPC_BODY)) && !affectObject.checkAffectedObject(activeChar, c))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -90,9 +90,9 @@ public class Square implements IAffectScopeHandler
|
||||
};
|
||||
|
||||
// Add object of origin since its skipped in the forEachVisibleObjectInRange method.
|
||||
if (target.isCharacter() && filter.test((L2Character) target))
|
||||
if (filter.test(activeChar))
|
||||
{
|
||||
action.accept(target);
|
||||
action.accept(activeChar);
|
||||
}
|
||||
|
||||
// Check and add targets.
|
||||
|
@ -18,6 +18,7 @@ package instances;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jmobius.commons.util.CommonUtil;
|
||||
import com.l2jmobius.gameserver.enums.InstanceReenterType;
|
||||
import com.l2jmobius.gameserver.instancemanager.InstanceManager;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
@ -38,6 +39,27 @@ import ai.AbstractNpcAI;
|
||||
*/
|
||||
public abstract class AbstractInstance extends AbstractNpcAI
|
||||
{
|
||||
private final int[] _templateIds;
|
||||
|
||||
public AbstractInstance(int... templateId)
|
||||
{
|
||||
if (templateId.length == 0)
|
||||
{
|
||||
throw new IllegalStateException("No template ids were provided!");
|
||||
}
|
||||
_templateIds = templateId;
|
||||
}
|
||||
|
||||
public int[] getTemplateId()
|
||||
{
|
||||
return _templateIds;
|
||||
}
|
||||
|
||||
public boolean isInInstance(Instance instance)
|
||||
{
|
||||
return (instance != null) && CommonUtil.contains(_templateIds, instance.getTemplateId());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get instance world associated with {@code player}.<br>
|
||||
* @param player player who wants get instance world
|
||||
|
@ -54,6 +54,7 @@ public final class BaylorWarzone extends AbstractInstance
|
||||
|
||||
public BaylorWarzone()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(ENTRANCE_PORTAL);
|
||||
addTalkId(ENTRANCE_PORTAL);
|
||||
addInstanceCreatedId(TEMPLATE_ID);
|
||||
@ -77,7 +78,7 @@ public final class BaylorWarzone extends AbstractInstance
|
||||
public void onTimerEvent(String event, StatsSet params, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
if (isBylorInstance(world))
|
||||
if (isInInstance(world))
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
@ -265,7 +266,7 @@ public final class BaylorWarzone extends AbstractInstance
|
||||
public String onSpellFinished(L2Npc npc, L2PcInstance player, Skill skill)
|
||||
{
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
if (isBylorInstance(world))
|
||||
if (isInInstance(world))
|
||||
{
|
||||
world.getAliveNpcs(INVISIBLE_NPC_1, INVISIBLE_NPC_2, INVISIBLE_NPC_3).forEach(L2Npc::deleteMe);
|
||||
world.getAliveNpcs(PRISON_GUARD).forEach(guard -> guard.doDie(null));
|
||||
@ -289,7 +290,7 @@ public final class BaylorWarzone extends AbstractInstance
|
||||
final L2Npc npc = (L2Npc) event.getTarget();
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
|
||||
if (isBylorInstance(world))
|
||||
if (isInInstance(world))
|
||||
{
|
||||
if (world.getAliveNpcs(BAYLOR).isEmpty())
|
||||
{
|
||||
@ -308,7 +309,7 @@ public final class BaylorWarzone extends AbstractInstance
|
||||
final L2Npc npc = (L2Npc) event.getSeer();
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
|
||||
if (isBylorInstance(world) && creature.isPlayer() && npc.isScriptValue(0))
|
||||
if (isInInstance(world) && creature.isPlayer() && npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
getTimers().addTimer("START_SCENE_01", 5000, npc, null);
|
||||
@ -325,11 +326,6 @@ public final class BaylorWarzone extends AbstractInstance
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
private boolean isBylorInstance(Instance instance)
|
||||
{
|
||||
return (instance != null) && (instance.getTemplateId() == TEMPLATE_ID);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new BaylorWarzone();
|
||||
|
@ -89,6 +89,7 @@ public final class CastleDungeon extends AbstractInstance
|
||||
|
||||
public CastleDungeon()
|
||||
{
|
||||
super(NPCS.values().stream().mapToInt(Integer::valueOf).toArray());
|
||||
// NPCs
|
||||
addStartNpc(NPCS.keySet());
|
||||
addTalkId(NPCS.keySet());
|
||||
|
@ -124,6 +124,7 @@ public final class CavernOfThePirateCaptain extends AbstractInstance
|
||||
|
||||
public CavernOfThePirateCaptain()
|
||||
{
|
||||
super(TEMPLATE_ID_60, TEMPLATE_ID_83);
|
||||
addStartNpc(PATHFINDER);
|
||||
addTalkId(PATHFINDER);
|
||||
addKillId(ZAKEN_60, ZAKEN_83);
|
||||
|
@ -91,6 +91,7 @@ public final class ChamberOfDelusion extends AbstractInstance
|
||||
|
||||
public ChamberOfDelusion()
|
||||
{
|
||||
super(ENTRANCE_GATEKEEPER.values().stream().mapToInt(Integer::valueOf).toArray());
|
||||
addStartNpc(ENTRANCE_GATEKEEPER.keySet());
|
||||
addStartNpc(ROOM_GATEKEEPERS);
|
||||
addTalkId(ENTRANCE_GATEKEEPER.keySet());
|
||||
|
@ -110,6 +110,7 @@ public final class DarkCloudMansion extends AbstractInstance
|
||||
|
||||
public DarkCloudMansion()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(YIYEN);
|
||||
addFirstTalkId(MONOLITH, TRUTH, FAITH, ADVERSITY, ADVENTURE);
|
||||
addTalkId(YIYEN, TRUTH);
|
||||
@ -372,8 +373,10 @@ public final class DarkCloudMansion extends AbstractInstance
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
handleRoomE(world, npc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
@ -38,6 +38,7 @@ public final class EvasHiddenSpace extends AbstractInstance
|
||||
|
||||
public EvasHiddenSpace()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CERENAS);
|
||||
addTalkId(CERENAS, EVAS_AVATAR);
|
||||
addFirstTalkId(EVAS_AVATAR);
|
||||
|
@ -187,6 +187,7 @@ public final class EvilIncubator extends AbstractInstance
|
||||
|
||||
public EvilIncubator()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(VANGUARD_MEMBER);
|
||||
addTalkId(VANGUARD_MEMBER, ADOLPH, ALICE, BARTON, HAYUK, ELIYAH);
|
||||
addFirstTalkId(ADOLPH, ALICE, BARTON, HAYUK, ELIYAH);
|
||||
|
@ -59,6 +59,7 @@ public final class FaeronTrainingGrounds1 extends AbstractInstance
|
||||
|
||||
public FaeronTrainingGrounds1()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(AYANTHE, AYANTHE_2);
|
||||
addFirstTalkId(AYANTHE_2);
|
||||
addTalkId(AYANTHE, AYANTHE_2);
|
||||
|
@ -59,6 +59,7 @@ public final class FaeronTrainingGrounds2 extends AbstractInstance
|
||||
|
||||
public FaeronTrainingGrounds2()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(KATALIN, KATALIN_2);
|
||||
addFirstTalkId(KATALIN_2);
|
||||
addTalkId(KATALIN, KATALIN_2);
|
||||
@ -78,11 +79,15 @@ public final class FaeronTrainingGrounds2 extends AbstractInstance
|
||||
switch (event)
|
||||
{
|
||||
case "enter_instance":
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
break;
|
||||
}
|
||||
case "exit_instance":
|
||||
{
|
||||
finishInstance(player, 0);
|
||||
break;
|
||||
}
|
||||
case "33945-03.html":
|
||||
{
|
||||
if (qs.isCond(6))
|
||||
|
@ -46,7 +46,6 @@ public final class FortressDungeon extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final Map<Integer, Integer> NPCS = new HashMap<>();
|
||||
|
||||
static
|
||||
{
|
||||
NPCS.put(35666, 22); // Shanty
|
||||
@ -103,6 +102,7 @@ public final class FortressDungeon extends AbstractInstance
|
||||
|
||||
public FortressDungeon()
|
||||
{
|
||||
super(NPCS.values().stream().mapToInt(Integer::valueOf).toArray());
|
||||
// NPCs
|
||||
addStartNpc(NPCS.keySet());
|
||||
addTalkId(NPCS.keySet());
|
||||
|
@ -51,6 +51,7 @@ public final class FortressOfTheDead extends AbstractInstance
|
||||
|
||||
public FortressOfTheDead()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(BROKEN_BOOKSHELF);
|
||||
addFirstTalkId(KAIN_VAN_HALTER);
|
||||
addTalkId(BROKEN_BOOKSHELF, KAIN_VAN_HALTER, MYSTERIOUS_WIZARD);
|
||||
@ -69,7 +70,7 @@ public final class FortressOfTheDead extends AbstractInstance
|
||||
else
|
||||
{
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
if (isFotDInstance(world))
|
||||
if (isInInstance(world))
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
@ -138,7 +139,7 @@ public final class FortressOfTheDead extends AbstractInstance
|
||||
{
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
|
||||
if (isFotDInstance(world))
|
||||
if (isInInstance(world))
|
||||
{
|
||||
if (npc.getId() == VAMPIRIC_SOLDIER)
|
||||
{
|
||||
@ -157,11 +158,6 @@ public final class FortressOfTheDead extends AbstractInstance
|
||||
return super.onKill(npc, player, isSummon);
|
||||
}
|
||||
|
||||
private boolean isFotDInstance(Instance instance)
|
||||
{
|
||||
return (instance != null) && (instance.getTemplateId() == TEMPLATE_ID);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new FortressOfTheDead();
|
||||
|
@ -94,6 +94,7 @@ public final class HarnakUndergroundRuins extends AbstractInstance
|
||||
|
||||
public HarnakUndergroundRuins()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
registerMobs(KRAKIA_BATHUS, KRAKIA_CARCASS, KRAKIA_LOTUS, RAKZAN, WEISS_KHAN, BAMONTI, SEKNUS, WEISS_ELE, HARNAKS_WRAITH);
|
||||
addSeeCreatureId(POWER_SOURCES);
|
||||
addEnterZoneId(ZONE_ROOM_2, ZONE_ROOM_3);
|
||||
|
@ -56,6 +56,7 @@ public final class IceQueensCastle extends AbstractInstance
|
||||
|
||||
public IceQueensCastle()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(JINIA);
|
||||
addTalkId(JINIA);
|
||||
addSeeCreatureId(BATTALION_LEADER, LEGIONNAIRE, MERCENARY_ARCHER);
|
||||
|
@ -150,6 +150,7 @@ public final class IceQueensCastleBattle extends AbstractInstance
|
||||
|
||||
public IceQueensCastleBattle()
|
||||
{
|
||||
super(TEMPLATE_ID_EASY, TEMPLATE_ID_HARD);
|
||||
addStartNpc(SIRRA, SUPP_KEGOR, SUPP_JINIA);
|
||||
addFirstTalkId(SUPP_KEGOR, SUPP_JINIA);
|
||||
addTalkId(SIRRA, JINIA, SUPP_KEGOR);
|
||||
|
@ -80,6 +80,7 @@ public final class IstinaCavern extends AbstractInstance
|
||||
|
||||
public IstinaCavern()
|
||||
{
|
||||
super(TEMPLATE_ID_COMMON, TEMPLATE_ID_EXTREME);
|
||||
addStartNpc(RUMIESE);
|
||||
addTalkId(RUMIESE, RUMIESE_INSTANCE);
|
||||
addFirstTalkId(RUMIESE_INSTANCE);
|
||||
@ -95,7 +96,7 @@ public final class IstinaCavern extends AbstractInstance
|
||||
{
|
||||
String htmltext = null;
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isIstinaInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
@ -157,7 +158,7 @@ public final class IstinaCavern extends AbstractInstance
|
||||
public void onTimerEvent(String event, StatsSet params, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isIstinaInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
@ -363,7 +364,7 @@ public final class IstinaCavern extends AbstractInstance
|
||||
public String onSpellFinished(L2Npc npc, L2PcInstance player, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if ((skill != null) && isIstinaInstance(instance))
|
||||
if ((skill != null) && isInInstance(instance))
|
||||
{
|
||||
final int skillId = skill.getId();
|
||||
|
||||
@ -433,7 +434,7 @@ public final class IstinaCavern extends AbstractInstance
|
||||
public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isIstinaInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final int stage = npcVars.getInt("ISTINA_STAGE", -1);
|
||||
@ -571,7 +572,7 @@ public final class IstinaCavern extends AbstractInstance
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isIstinaInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (npc.getId() == INVISIBLE_NPC)
|
||||
{
|
||||
@ -595,7 +596,7 @@ public final class IstinaCavern extends AbstractInstance
|
||||
{
|
||||
String htmltext = null;
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isIstinaInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (instance.getStatus())
|
||||
{
|
||||
@ -624,11 +625,6 @@ public final class IstinaCavern extends AbstractInstance
|
||||
return instance.getTemplateId() == TEMPLATE_ID_EXTREME;
|
||||
}
|
||||
|
||||
private boolean isIstinaInstance(Instance instance)
|
||||
{
|
||||
return (instance != null) && ((instance.getTemplateId() == TEMPLATE_ID_COMMON) || (instance.getTemplateId() == TEMPLATE_ID_EXTREME));
|
||||
}
|
||||
|
||||
private int getChargedPercent(int score, boolean isExtreme)
|
||||
{
|
||||
final int charged;
|
||||
|
@ -37,6 +37,7 @@ public final class JiniaGuildHideout1 extends AbstractInstance
|
||||
|
||||
public JiniaGuildHideout1()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(RAFFORTY);
|
||||
addTalkId(RAFFORTY);
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ public final class JiniaGuildHideout2 extends AbstractInstance
|
||||
|
||||
public JiniaGuildHideout2()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(RAFFORTY);
|
||||
addTalkId(RAFFORTY);
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ public final class JiniaGuildHideout3 extends AbstractInstance
|
||||
|
||||
public JiniaGuildHideout3()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(RAFFORTY);
|
||||
addTalkId(RAFFORTY);
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ public final class JiniaGuildHideout4 extends AbstractInstance
|
||||
|
||||
public JiniaGuildHideout4()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(RAFFORTY);
|
||||
addTalkId(RAFFORTY);
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ public final class KaraphonHabitat extends AbstractInstance
|
||||
|
||||
public KaraphonHabitat()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(DOLKIN);
|
||||
addFirstTalkId(DOLKIN_INSTANCE);
|
||||
addTalkId(DOLKIN);
|
||||
|
@ -157,6 +157,7 @@ public final class KartiasLabyrinth extends AbstractInstance
|
||||
|
||||
public KartiasLabyrinth()
|
||||
{
|
||||
super(TEMPLATE_ID_SOLO_85, TEMPLATE_ID_SOLO_90, TEMPLATE_ID_SOLO_95, TEMPLATE_ID_GROUP_85, TEMPLATE_ID_GROUP_90, TEMPLATE_ID_GROUP_95);
|
||||
addStartNpc(KARTIA_RESEARCHER);
|
||||
addFirstTalkId(KARTIA_RESEARCHER);
|
||||
addFirstTalkId(ADOLPH);
|
||||
|
@ -72,6 +72,7 @@ public final class KimerianCommon extends AbstractInstance
|
||||
|
||||
public KimerianCommon()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(NOETI_KASHERON);
|
||||
addTalkId(NOETI_KASHERON, NOETI_KASHERON_ENTRANCE);
|
||||
addFirstTalkId(NOETI_KASHERON_ENTRANCE, NOETI_KASHERON_LEAVE);
|
||||
@ -86,7 +87,7 @@ public final class KimerianCommon extends AbstractInstance
|
||||
public void onTimerEvent(String event, StatsSet params, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isKimerianInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
@ -141,7 +142,7 @@ public final class KimerianCommon extends AbstractInstance
|
||||
{
|
||||
String htmltext = null;
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isKimerianInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
@ -206,7 +207,7 @@ public final class KimerianCommon extends AbstractInstance
|
||||
public String onAttack(L2Npc npc, L2PcInstance player, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isKimerianInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (npc.getId() == KIMERIAN)
|
||||
{
|
||||
@ -243,7 +244,7 @@ public final class KimerianCommon extends AbstractInstance
|
||||
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isKimerianInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
@ -290,7 +291,7 @@ public final class KimerianCommon extends AbstractInstance
|
||||
{
|
||||
final L2Npc npc = (L2Npc) event.getTarget();
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isKimerianInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
getTimers().cancelTimersOf(npc);
|
||||
}
|
||||
@ -300,7 +301,7 @@ public final class KimerianCommon extends AbstractInstance
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isKimerianInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
@ -355,7 +356,7 @@ public final class KimerianCommon extends AbstractInstance
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
|
||||
if (isKimerianInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
@ -431,7 +432,7 @@ public final class KimerianCommon extends AbstractInstance
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
|
||||
if (isKimerianInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (isHollow)
|
||||
{
|
||||
@ -454,11 +455,6 @@ public final class KimerianCommon extends AbstractInstance
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isKimerianInstance(Instance instance)
|
||||
{
|
||||
return ((instance != null) && (instance.getTemplateId() == TEMPLATE_ID));
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new KimerianCommon();
|
||||
|
@ -81,6 +81,7 @@ public final class LabyrinthOfBelis extends AbstractInstance
|
||||
|
||||
public LabyrinthOfBelis()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(SEBION, INFILTRATION_OFFICER, BELIS_VERITIFICATION_SYSTEM);
|
||||
addFirstTalkId(INFILTRATION_OFFICER, ELECTRICITY_GENERATOR, BELIS_VERITIFICATION_SYSTEM);
|
||||
addTalkId(SEBION, INFILTRATION_OFFICER, BELIS_VERITIFICATION_SYSTEM);
|
||||
|
@ -154,6 +154,7 @@ public final class LastImperialTomb extends AbstractInstance
|
||||
|
||||
public LastImperialTomb()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addTalkId(GUIDE, CUBE);
|
||||
addAttackId(SCARLET1);
|
||||
addKillId(ON_KILL_MONSTERS);
|
||||
@ -831,7 +832,7 @@ public final class LastImperialTomb extends AbstractInstance
|
||||
final SkillHolder skill = new SkillHolder(5007, random);
|
||||
final SkillHolder skillEffect = new SkillHolder(5008, random);
|
||||
broadCastPacket(world, new ExShowScreenMessage(2, -1, 2, 0, 0, 0, 0, true, 4000, false, null, SKILL_MSG.get(random), null));
|
||||
broadCastPacket(world, new MagicSkillUse(frintezza, frintezza, skill.getSkillId(), skill.getSkillLvl(), skill.getSkill().getHitTime(), 0));
|
||||
broadCastPacket(world, new MagicSkillUse(frintezza, frintezza, skill.getSkillId(), skill.getSkillLevel(), skill.getSkill().getHitTime(), 0));
|
||||
for (L2PcInstance player : world.getPlayers())
|
||||
{
|
||||
if ((player != null) && player.isOnline())
|
||||
|
@ -25,6 +25,7 @@ import com.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import com.l2jmobius.gameserver.enums.CategoryType;
|
||||
import com.l2jmobius.gameserver.enums.ChatType;
|
||||
import com.l2jmobius.gameserver.enums.Movie;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
@ -48,8 +49,10 @@ import com.l2jmobius.gameserver.network.NpcStringId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.Earthquake;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.OnEventTrigger;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.awakening.ExCallToChangeClass;
|
||||
import com.l2jmobius.gameserver.taskmanager.DecayTaskManager;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
@ -73,6 +76,7 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
private static final int SILVERA = 19194;
|
||||
private static final int WIRPHY = 19195;
|
||||
private static final int EARTH_WYRM_TRASKEN = 19217;
|
||||
private static final int SWOOP_CANNON = 19190;
|
||||
private static final int[] DWARVES =
|
||||
{
|
||||
19191,
|
||||
@ -97,16 +101,31 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
19214,
|
||||
19215
|
||||
};
|
||||
private static final int CONTROL_DARKELF_AWAKE = 33550;
|
||||
private static final int[] SACRIFICED_DARK_ELF =
|
||||
{
|
||||
33536,
|
||||
33538,
|
||||
33540,
|
||||
33542,
|
||||
33544,
|
||||
33546
|
||||
};
|
||||
// Skills
|
||||
private static final SkillHolder SWOOP_CANNON_SKILL = new SkillHolder(16023, 1);
|
||||
private static final SkillHolder SIEGE_GOLEM_SKILL_1 = new SkillHolder(16022, 1);
|
||||
private static final SkillHolder SIEGE_GOLEM_SKILL_2 = new SkillHolder(16024, 1);
|
||||
private static final SkillHolder PULLER_SKILL = new SkillHolder(16031, 1);
|
||||
private static final SkillHolder BOUNCER_SKILL = new SkillHolder(14649, 1);
|
||||
private static final SkillHolder TEREDOR_TRANSPARENT_SKILL = new SkillHolder(16021, 1);
|
||||
private static final SkillHolder TRASKEN_SKILL_1 = new SkillHolder(14505, 1);
|
||||
private static final SkillHolder TRASKEN_SKILL_2 = new SkillHolder(14337, 1);
|
||||
private static final SkillHolder TRASKEN_SKILL_3 = new SkillHolder(14338, 1);
|
||||
private static final SkillHolder TRASKEN_SKILL_4 = new SkillHolder(14340, 1);
|
||||
// Items
|
||||
private static final int TRANSPARENT_1HS = 15280;
|
||||
// Locations
|
||||
private static final Location BATTLE_PORT = new Location(116063, -183167, -1460, 64960);
|
||||
private static final Location BATTLE_PORT = new Location(116063, -183167, -1480, 64960);
|
||||
private static final Location ROGIN_MOVE = new Location(116400, -183069, -1600);
|
||||
private static final Location AWAKENING_GUIDE_MOVE_1 = new Location(115830, -182103, -1400);
|
||||
private static final Location AWAKENING_GUIDE_MOVE_2 = new Location(115955, -181387, -1624);
|
||||
@ -132,6 +151,7 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
new Location(116925, -180420, -1200, 46585),
|
||||
new Location(116656, -180461, -1240, 56363),
|
||||
};
|
||||
private static final Location DE_VILLAGE_START = new Location(10400, 17092, -4584, Rnd.get(65520));
|
||||
// Misc
|
||||
private static final int FIRE_IN_DWARVEN_VILLAGE = 23120700;
|
||||
private static final int TEMPLATE_ID = 200;
|
||||
@ -158,24 +178,38 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
NpcStringId.NO_WAY4,
|
||||
NpcStringId.ANOTHER_ONE_OVER_THERE
|
||||
};
|
||||
private static final NpcStringId[] SACRIFICED_DARK_ELF_SUICIDE_MESSAGES =
|
||||
{
|
||||
NpcStringId.GAH_SHILEN_WHY_MUST_YOU_MAKE_US_SUFFER,
|
||||
NpcStringId.SHILEN_ABANDONED_US_IT_IS_OUR_TIME_TO_DIE,
|
||||
NpcStringId.WITH_OUR_SACRIFICE_WILL_WE_FULFILL_THE_PROPHECY,
|
||||
NpcStringId.BLOODY_RAIN_PLAGUE_DEATH_SHE_IS_NEAR,
|
||||
NpcStringId.ARHHHH,
|
||||
NpcStringId.WE_OFFER_OUR_BLOOD_AS_A_SACRIFICE_SHILEN_SEE_US,
|
||||
NpcStringId.WILL_DARK_ELVES_BE_FORGOTTEN_AFTER_WHAT_WE_HAVE_DONE,
|
||||
NpcStringId.UNBELIEVERS_RUN_DEATH_WILL_FOLLOW_YOU,
|
||||
NpcStringId.I_CURSE_OUR_BLOOD_I_DESPISE_WHAT_WE_ARE_SHILEN
|
||||
};
|
||||
|
||||
public MemoryOfDisaster()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addInstanceCreatedId(TEMPLATE_ID);
|
||||
addSpawnId(INVISIBLE_NPC, TENTACLE, SOLDIER, SOLDIER2, TEREDOR, SIEGE_GOLEM, WIRPHY, SILVERA, TEREDOR_TRANSPARENT, EARTH_WYRM_TRASKEN);
|
||||
addSpawnId(INVISIBLE_NPC, TENTACLE, SOLDIER, SOLDIER2, TEREDOR, SIEGE_GOLEM, WIRPHY, SILVERA, TEREDOR_TRANSPARENT, EARTH_WYRM_TRASKEN, SWOOP_CANNON, CONTROL_DARKELF_AWAKE);
|
||||
addMoveFinishedId(ROGIN, SOLDIER, WIRPHY, SILVERA);
|
||||
addMoveFinishedId(DWARVES);
|
||||
addSpellFinishedId(SIEGE_GOLEM, INVISIBLE_NPC, TEREDOR_TRANSPARENT);
|
||||
addSpellFinishedId(SIEGE_GOLEM, INVISIBLE_NPC, TEREDOR_TRANSPARENT, EARTH_WYRM_TRASKEN, SWOOP_CANNON);
|
||||
setCreatureKillId(this::onCreatureKill, BRONK, SILVERA);
|
||||
setCreatureAttackedId(this::onCreatureAttacked, BRONK, TENTACLE, SOLDIER, SOLDIER2, TEREDOR, SIEGE_GOLEM, WIRPHY, SILVERA);
|
||||
setCreatureSeeId(this::onCreatureSee, TENTACLE, SOLDIER, SOLDIER2, TEREDOR, INVISIBLE_NPC);
|
||||
setCreatureSeeId(this::onCreatureSee, TENTACLE, SOLDIER, SOLDIER2, TEREDOR, INVISIBLE_NPC, CONTROL_DARKELF_AWAKE);
|
||||
addEventReceivedId(SACRIFICED_DARK_ELF);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isMoDInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
@ -216,7 +250,6 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
}
|
||||
case "EVENT_C":
|
||||
{
|
||||
// Rework me plz, I'm dying
|
||||
final L2Npc golem = addSpawn(npc, SIEGE_GOLEM, 116881, -180742, -1248, 1843, false, 0, false, instance.getId());
|
||||
golem.setIsInvul(true);
|
||||
break;
|
||||
@ -232,6 +265,10 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
{
|
||||
addSkillCastDesire(npc, instance.getFirstPlayer(), PULLER_SKILL, 100000000);
|
||||
}
|
||||
else if (npc.getVariables().getString("type", "").equals("BOUNCER"))
|
||||
{
|
||||
addSkillCastDesire(npc, instance.getFirstPlayer(), BOUNCER_SKILL, 100000000);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -274,7 +311,6 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
case SIEGE_GOLEM:
|
||||
{
|
||||
npc.initSeenCreatures();
|
||||
|
||||
for (Location loc : TEREDOR_SPAWN_LOC)
|
||||
{
|
||||
final L2Npc teredor = addSpawn(TEREDOR, loc, false, 0, false, instance.getId());
|
||||
@ -287,7 +323,6 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
{
|
||||
npc.setIsRunning(true);
|
||||
addMoveToDesire(npc, WIRPHY_MOVE, 23);
|
||||
npc.getInstanceWorld().getAliveNpcs(TEREDOR).stream().filter(n -> n.isScriptValue(2)).forEach(n -> addAttackDesire(n, npc));
|
||||
break;
|
||||
}
|
||||
case SILVERA:
|
||||
@ -298,8 +333,6 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
}
|
||||
case TEREDOR_TRANSPARENT:
|
||||
{
|
||||
// TODO: Check why the first doesn't work :(
|
||||
addSkillCastDesire(npc, npc, TEREDOR_TRANSPARENT_SKILL, 1000000);
|
||||
npc.setTarget(npc);
|
||||
npc.doCast(TEREDOR_TRANSPARENT_SKILL.getSkill());
|
||||
break;
|
||||
@ -310,17 +343,29 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
getTimers().addTimer("ENTER_EVENT", 5000, npc, null);
|
||||
break;
|
||||
}
|
||||
case SWOOP_CANNON:
|
||||
{
|
||||
npc.setTarget(npc);
|
||||
npc.doCast(SWOOP_CANNON_SKILL.getSkill());
|
||||
break;
|
||||
}
|
||||
case CONTROL_DARKELF_AWAKE:
|
||||
{
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
public void onCreatureSee(OnCreatureSee event)
|
||||
private void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final L2Character creature = event.getSeen();
|
||||
final L2Npc npc = (L2Npc) event.getSeer();
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
if (isMoDInstance(world))
|
||||
|
||||
if (isInInstance(world))
|
||||
{
|
||||
if (creature.isNpc())
|
||||
{
|
||||
@ -370,7 +415,7 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
siegeGolem.setScriptValue(1);
|
||||
siegeGolem.abortAttack();
|
||||
siegeGolem.abortCast();
|
||||
addSkillCastDesire(siegeGolem, siegeGolem, SIEGE_GOLEM_SKILL_1, 1000000);
|
||||
siegeGolem.doCast(SIEGE_GOLEM_SKILL_1.getSkill());
|
||||
world.getAliveNpcs(TEREDOR).stream().filter(n -> n.isScriptValue(1)).forEach(n -> getTimers().addTimer("TEREDOR_SUICIDE", 10000, n, null));
|
||||
getTimers().addTimer("CHASING_TRAJAN_TIME", 5000, npc, null);
|
||||
getTimers().addTimer("EARTHWORM_TIME", 15000, npc, null);
|
||||
@ -386,6 +431,15 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CONTROL_DARKELF_AWAKE:
|
||||
{
|
||||
getTimers().addTimer("OPENING_DE_SCENE", 1000, e ->
|
||||
{
|
||||
playMovie(creature.getActingPlayer(), Movie.SC_AWAKENING_OPENING_D);
|
||||
getTimers().addTimer("TIMER_ID_OP_SCEN_END", 25000, npc, creature.getActingPlayer());
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -396,24 +450,15 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
case "START_AWAKENING_OPENING_SCENE":
|
||||
{
|
||||
playMovie(player, Movie.SC_AWAKENING_OPENING);
|
||||
break;
|
||||
}
|
||||
case "EARTHQUAKE":
|
||||
{
|
||||
player.sendPacket(new Earthquake(player.getLocation(), 50, 4));
|
||||
break;
|
||||
}
|
||||
case "TELEPORT_PLAYER_TO_START":
|
||||
{
|
||||
player.teleToLocation(BATTLE_PORT);
|
||||
getTimers().addTimer("EARTHQUAKE", 10000, null, player);
|
||||
break;
|
||||
}
|
||||
case "END_OF_OPENING_SCENE":
|
||||
{
|
||||
player.teleToLocation(BATTLE_PORT);
|
||||
player.teleToLocation(BATTLE_PORT, player.getInstanceWorld());
|
||||
getTimers().addTimer("SPAWN_ROGIN", 10000, null, player);
|
||||
break;
|
||||
}
|
||||
@ -529,14 +574,17 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
case "ATTACK_TIME":
|
||||
{
|
||||
final List<L2Npc> tentacles = npc.getInstanceWorld().getAliveNpcs(TENTACLE).stream().filter(n -> n.getVariables().getBoolean("isLeaderKiller", false)).collect(Collectors.toList());
|
||||
addAttackDesire(npc, tentacles.get(Rnd.get(tentacles.size())));
|
||||
npc.getInstanceWorld().getNpcs(DWARVES).forEach(n -> addAttackDesire(n, tentacles.get(Rnd.get(tentacles.size()))));
|
||||
break;
|
||||
}
|
||||
case "RUN_TIME":
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, SHOUT_RUN[Rnd.get(SHOUT_RUN.length)]);
|
||||
addMoveToDesire(npc, DWARVES_MOVE_1, 23);
|
||||
npc.setIsRunning(true);
|
||||
npc.getInstanceWorld().getNpcs(DWARVES).forEach(n ->
|
||||
{
|
||||
n.setIsRunning(true);
|
||||
n.broadcastSay(ChatType.NPC_GENERAL, SHOUT_RUN[Rnd.get(SHOUT_RUN.length)]);
|
||||
n.getAI().moveTo(DWARVES_MOVE_1);
|
||||
});
|
||||
break;
|
||||
}
|
||||
case "TEREDOR_SUICIDE":
|
||||
@ -553,10 +601,10 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
case "SECOND_PULL":
|
||||
{
|
||||
addSkillCastDesire(npc, npc.getInstanceWorld().getFirstPlayer(), PULLER_SKILL, 100000000);
|
||||
getTimers().addTimer("DESPAWNER_PULLER", 3000, npc, null);
|
||||
getTimers().addTimer("DESPAWN_PULLER", 3000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "DESPAWNER_PULLER":
|
||||
case "DESPAWN_PULLER":
|
||||
{
|
||||
npc.deleteMe();
|
||||
break;
|
||||
@ -569,12 +617,13 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
}
|
||||
case "EARTHWORM_TIME":
|
||||
{
|
||||
addSpawn(npc, TEREDOR_TRANSPARENT, 116511, -178729, -1176, 43905, false, 0, false, npc.getInstanceId());
|
||||
addSpawn(npc, TEREDOR_TRANSPARENT, 116511, -178729, -1176, 58208, false, 0, false, npc.getInstanceId());
|
||||
break;
|
||||
}
|
||||
case "ENTER_EVENT":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, TRASKEN_SKILL_1, 100000000);
|
||||
npc.setTarget(npc);
|
||||
npc.doCast(TRASKEN_SKILL_1.getSkill());
|
||||
npc.getInstanceWorld().getFirstPlayer().sendPacket(new Earthquake(npc.getLocation(), 50, 4));
|
||||
getTimers().addTimer("TRASKEN_UNEQUIP", 2000, npc, null);
|
||||
break;
|
||||
@ -582,37 +631,61 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
case "TRASKEN_UNEQUIP":
|
||||
{
|
||||
npc.setLHandId(0);
|
||||
npc.broadcastInfo();
|
||||
getTimers().addTimer("END_VIDEO", 20000, null, npc.getInstanceWorld().getFirstPlayer());
|
||||
break;
|
||||
}
|
||||
case "END_VIDEO":
|
||||
case "PC_TEL_TIME":
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(FIRE_IN_DWARVEN_VILLAGE, false));
|
||||
getTimers().cancelTimer("EARTHQUAKE", null, player);
|
||||
player.teleToLocation(DE_VILLAGE_START, player.getInstanceWorld());
|
||||
break;
|
||||
}
|
||||
case "TIMER_ID_OP_SCEN_END":
|
||||
{
|
||||
npc.broadcastEvent("SCE_J4D_DARK_ELF_START", 8000, null);
|
||||
getTimers().addTimer("TIMER_ID_END", 60000, npc, player);
|
||||
break;
|
||||
}
|
||||
case "TIMER_ID_END":
|
||||
{
|
||||
playMovie(player, Movie.SC_AWAKENING_OPENING_E);
|
||||
getTimers().addTimer("TIMER_ID_ED_SCEN_END", 30000, npc, player);
|
||||
break;
|
||||
}
|
||||
case "TIMER_ID_ED_SCEN_END":
|
||||
{
|
||||
playMovie(player, Movie.SC_AWAKENING_OPENING_F);
|
||||
getTimers().addTimer("END_INSTANCE", 45000, null, player);
|
||||
getTimers().addTimer("TIMER_ID_FINAL_ED_SCEN_END", 10000, npc, player);
|
||||
break;
|
||||
}
|
||||
case "END_INSTANCE":
|
||||
case "TIMER_ID_FINAL_ED_SCEN_END":
|
||||
{
|
||||
getTimers().cancelTimers("EARTHQUAKE");
|
||||
// myself->SetOneTimeQuestFlag(myself->c_ai0, 10491, 1);
|
||||
player.sendPacket(new TutorialShowHtml(getHtm(player.getHtmlPrefix(), "calltochange_end.htm")));
|
||||
finishInstance(player, 0);
|
||||
break;
|
||||
}
|
||||
case "TIMER_ID_DIE":
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, SACRIFICED_DARK_ELF_SUICIDE_MESSAGES[Rnd.get(SACRIFICED_DARK_ELF_SUICIDE_MESSAGES.length)]);
|
||||
npc.doDie(npc);
|
||||
DecayTaskManager.getInstance().cancel(npc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceCreated(Instance instance, L2PcInstance player)
|
||||
{
|
||||
getTimers().addTimer("OPENING_SCENE", 500, e ->
|
||||
getTimers().addTimer("OPENING_SCENE", 1000, e ->
|
||||
{
|
||||
instance.getPlayers().forEach(p ->
|
||||
{
|
||||
p.sendPacket(new OnEventTrigger(FIRE_IN_DWARVEN_VILLAGE, true));
|
||||
getTimers().addRepeatingTimer("EARTHQUAKE", 10000, null, p);
|
||||
getTimers().addTimer("END_OF_OPENING_SCENE", 30000, null, p);
|
||||
getTimers().addTimer("START_AWAKENING_OPENING_SCENE", 1000, null, p);
|
||||
getTimers().addTimer("TELEPORT_PLAYER_TO_START", 25000, null, p);
|
||||
playMovie(p, Movie.SC_AWAKENING_OPENING);
|
||||
getTimers().addTimer("EARTHQUAKE", 10000, null, p);
|
||||
getTimers().addTimer("END_OF_OPENING_SCENE", 32000, null, p);
|
||||
});
|
||||
});
|
||||
}
|
||||
@ -679,6 +752,7 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
case WIRPHY:
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.HELP_ME3);
|
||||
npc.getInstanceWorld().getAliveNpcs(TEREDOR).stream().filter(n -> n.isScriptValue(2)).forEach(n -> addAttackDesire(n, npc));
|
||||
break;
|
||||
}
|
||||
case SILVERA:
|
||||
@ -692,7 +766,7 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
private void onCreatureAttacked(OnCreatureAttacked event)
|
||||
{
|
||||
final Instance world = event.getTarget().getInstanceWorld();
|
||||
if (isMoDInstance(world))
|
||||
if (isInInstance(world))
|
||||
{
|
||||
if (!event.getAttacker().isPlayable())
|
||||
{
|
||||
@ -774,6 +848,10 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
if ((attackCount == 80) || (attacker.getId() == SIEGE_GOLEM))
|
||||
{
|
||||
npc.doDie(attacker);
|
||||
final L2Npc golem = world.getNpc(SIEGE_GOLEM);
|
||||
golem.abortAttack();
|
||||
golem.abortCast();
|
||||
world.getNpc(SIEGE_GOLEM).getAI().moveTo(GOLEM_MOVE);
|
||||
}
|
||||
addAttackDesire(npc, attacker);
|
||||
}
|
||||
@ -791,17 +869,14 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.NO_WAY2);
|
||||
npc.doDie(null);
|
||||
// TODO : This shit doesn't attack silvera for some reason which prevents to trigger the dwarf text
|
||||
// Used some additional method such as World.getInstance().getVisibleObjects(attacker, Npc.class, n -> (n.getId() == SILVERA))
|
||||
// It found the npc but didn't worked either.
|
||||
addAttackDesire(attacker, world.getNpc(SILVERA));
|
||||
attacker.doAttack(world.getNpc(SILVERA));
|
||||
break;
|
||||
}
|
||||
case SILVERA:
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.MY_GOD);
|
||||
npc.doDie(null);
|
||||
addAttackDesire(world.getNpc(SIEGE_GOLEM), attacker);
|
||||
world.getNpc(SIEGE_GOLEM).doAttack(attacker);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -824,10 +899,10 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
{
|
||||
dwarf.broadcastSay(ChatType.NPC_GENERAL, SHOUT_BRONK_DEATH[Rnd.get(SHOUT_BRONK_DEATH.length)]);
|
||||
}
|
||||
getTimers().addTimer("ATTACK_TIME", 1000, dwarf, null);
|
||||
getTimers().addTimer("RUN_TIME", 10000, dwarf, null);
|
||||
}
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.UGH_IF_I_SEE_YOU_IN_THE_SPIRIT_WORLD_FIRST_ROUND_IS_ON_ME);
|
||||
getTimers().addTimer("ATTACK_TIME", 1000, npc, null);
|
||||
getTimers().addTimer("RUN_TIME", 10000, npc, null);
|
||||
}
|
||||
else if (npc.getId() == SILVERA)
|
||||
{
|
||||
@ -838,26 +913,104 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
@Override
|
||||
public String onSpellFinished(L2Npc npc, L2PcInstance player, Skill skill)
|
||||
{
|
||||
if ((npc.getId() == SIEGE_GOLEM) && (skill.getId() == SIEGE_GOLEM_SKILL_1.getSkillId()))
|
||||
switch (npc.getId())
|
||||
{
|
||||
addMoveToDesire(npc, GOLEM_MOVE, 23);
|
||||
npc.setIsRunning(true);
|
||||
}
|
||||
else if ((npc.getId() == INVISIBLE_NPC) && npc.getVariables().getString("type", "").equals("PULLER") && (skill.getId() == PULLER_SKILL.getSkillId()) && npc.isScriptValue(0))
|
||||
{
|
||||
npc.teleToLocation(PULLER_TELEPORT);
|
||||
getTimers().addTimer("SECOND_PULL", 2000, npc, null);
|
||||
}
|
||||
else if ((npc.getId() == TEREDOR_TRANSPARENT) && (skill.getId() == TEREDOR_TRANSPARENT_SKILL.getSkillId()))
|
||||
{
|
||||
final L2Npc invisibleNpc = addSpawn(npc, INVISIBLE_NPC, npc.getLocation(), false, npc.getInstanceId());
|
||||
invisibleNpc.getVariables().set("type", "BOUNCER");
|
||||
addSpawn(npc, EARTH_WYRM_TRASKEN, npc.getLocation(), false, npc.getInstanceId());
|
||||
npc.deleteMe();
|
||||
case SIEGE_GOLEM:
|
||||
{
|
||||
if (skill.getId() == SIEGE_GOLEM_SKILL_1.getSkillId())
|
||||
{
|
||||
npc.setIsRunning(true);
|
||||
npc.getAI().moveTo(GOLEM_MOVE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case INVISIBLE_NPC:
|
||||
{
|
||||
if (npc.getVariables().getString("type", "").equals("PULLER") && (skill.getId() == PULLER_SKILL.getSkillId()) && npc.isScriptValue(0))
|
||||
{
|
||||
npc.teleToLocation(PULLER_TELEPORT, npc.getInstanceWorld());
|
||||
npc.setScriptValue(1);
|
||||
getTimers().addTimer("SECOND_PULL", 2000, npc, null);
|
||||
}
|
||||
else if (npc.getVariables().getString("type", "").equals("BOUNCER") && (skill.getId() == BOUNCER_SKILL.getSkillId()))
|
||||
{
|
||||
npc.deleteMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TEREDOR_TRANSPARENT:
|
||||
{
|
||||
if (skill.getId() == TEREDOR_TRANSPARENT_SKILL.getSkillId())
|
||||
{
|
||||
final L2Npc invisibleNpc = addSpawn(npc, INVISIBLE_NPC, npc.getLocation(), false, npc.getInstanceId());
|
||||
invisibleNpc.getVariables().set("type", "BOUNCER");
|
||||
addSpawn(npc, EARTH_WYRM_TRASKEN, npc.getLocation(), false, npc.getInstanceId());
|
||||
npc.deleteMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case EARTH_WYRM_TRASKEN:
|
||||
{
|
||||
if (skill.getId() == TRASKEN_SKILL_1.getSkillId())
|
||||
{
|
||||
playMovie(npc.getInstanceWorld().getFirstPlayer(), Movie.SC_AWAKENING_OPENING_C);
|
||||
npc.setTarget(npc.getInstanceWorld().getNpc(SIEGE_GOLEM));
|
||||
npc.doCast(TRASKEN_SKILL_2.getSkill());
|
||||
getTimers().addTimer("PC_TEL_TIME", 23000, npc, npc.getInstanceWorld().getFirstPlayer());
|
||||
}
|
||||
else if (skill.getId() == TRASKEN_SKILL_2.getSkillId())
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.getInstanceWorld().getNpc(SIEGE_GOLEM).doDie(npc);
|
||||
final L2Npc invisibleNpc = addSpawn(npc, INVISIBLE_NPC, npc.getLocation(), false, npc.getInstanceId());
|
||||
invisibleNpc.getVariables().set("type", "BOUNCER");
|
||||
}
|
||||
npc.setTarget(npc);
|
||||
npc.doCast(TRASKEN_SKILL_4.getSkill());
|
||||
}
|
||||
else if (skill.getId() == TRASKEN_SKILL_4.getSkillId())
|
||||
{
|
||||
npc.setTarget(npc);
|
||||
npc.doCast(TRASKEN_SKILL_3.getSkill());
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
final L2Npc invisibleNpc = addSpawn(npc, INVISIBLE_NPC, npc.getLocation(), false, npc.getInstanceId());
|
||||
invisibleNpc.getVariables().set("type", "BOUNCER");
|
||||
npc.setScriptValue(1);
|
||||
}
|
||||
}
|
||||
else if (skill.getId() == TRASKEN_SKILL_3.getSkillId())
|
||||
{
|
||||
npc.setTarget(npc);
|
||||
npc.doCast(TRASKEN_SKILL_2.getSkill());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SWOOP_CANNON:
|
||||
{
|
||||
npc.setTarget(npc);
|
||||
npc.doCast(SWOOP_CANNON_SKILL.getSkill());
|
||||
break;
|
||||
}
|
||||
}
|
||||
return super.onSpellFinished(npc, player, skill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onEventReceived(String event, L2Npc sender, L2Npc receiver, L2Object reference)
|
||||
{
|
||||
final Instance instance = receiver.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (event.equals("SCE_J4D_DARK_ELF_START"))
|
||||
{
|
||||
getTimers().addTimer("TIMER_ID_DIE", Rnd.get(60000) + 5000, receiver, null);
|
||||
}
|
||||
}
|
||||
return super.onEventReceived(event, sender, receiver, reference);
|
||||
}
|
||||
|
||||
@RegisterEvent(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS)
|
||||
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||
public void onPlayerCallToChangeClass(OnPlayerCallToChangeClass event)
|
||||
@ -895,11 +1048,6 @@ public final class MemoryOfDisaster extends AbstractInstance
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isMoDInstance(Instance instance)
|
||||
{
|
||||
return (instance != null) && (instance.getTemplateId() == TEMPLATE_ID);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new MemoryOfDisaster();
|
||||
|
@ -0,0 +1,7 @@
|
||||
<html><body>Hermuncus Call:<br>
|
||||
My faithful servant Cellphine is waiting to guide you to your fate of Awakening.<br1>
|
||||
To find Cellphine, go to the Museum, the largest building at Southern most part of Talking Island Village.<br1>
|
||||
Speak to the Pantheon to enter the Museum and find Cellphine inside.<br>
|
||||
Follow Cellphine's instructions to answer my call.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="link tutorial_close_0">Close Window</Button>
|
||||
</body></html>
|
@ -53,6 +53,7 @@ public final class MithrilMine extends AbstractInstance
|
||||
|
||||
public MithrilMine()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addFirstTalkId(KEGOR);
|
||||
addKillId(KEGOR, MITHRIL_MILLIPEDE);
|
||||
addStartNpc(TARUN, KRUN);
|
||||
|
@ -61,6 +61,7 @@ public final class MuseumDungeon extends AbstractInstance
|
||||
|
||||
public MuseumDungeon()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(PANTHEON);
|
||||
addFirstTalkId(DESK);
|
||||
addTalkId(PANTHEON, TOYRON);
|
||||
|
@ -55,6 +55,7 @@ public final class NightmareKamaloka extends AbstractInstance
|
||||
|
||||
public NightmareKamaloka()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(KURTIZ);
|
||||
addTalkId(KURTIZ);
|
||||
addSpawnId(INVISIBLE_NPC);
|
||||
@ -66,7 +67,7 @@ public final class NightmareKamaloka extends AbstractInstance
|
||||
public void onTimerEvent(String event, StatsSet params, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isNightmareKamalokaInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
@ -93,7 +94,7 @@ public final class NightmareKamaloka extends AbstractInstance
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isNightmareKamalokaInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (npc.getId() == INVISIBLE_NPC)
|
||||
{
|
||||
@ -107,7 +108,7 @@ public final class NightmareKamaloka extends AbstractInstance
|
||||
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isNightmareKamalokaInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final int nextDoorId = BOSS_MAP.getOrDefault(npc.getId(), -1);
|
||||
if (nextDoorId == -1)
|
||||
@ -126,7 +127,7 @@ public final class NightmareKamaloka extends AbstractInstance
|
||||
public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isNightmareKamalokaInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (npc.getId() == DARK_RIDER_UD)
|
||||
{
|
||||
@ -155,11 +156,6 @@ public final class NightmareKamaloka extends AbstractInstance
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
private boolean isNightmareKamalokaInstance(Instance instance)
|
||||
{
|
||||
return ((instance != null) && (instance.getTemplateId() == TEMPLATE_ID));
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new NightmareKamaloka();
|
||||
|
@ -1,4 +0,0 @@
|
||||
<html><head><body>Kurtiz<br>
|
||||
Aren't you in a party? But you are not the party leader. <br>
|
||||
(Only the party leader can request to enter.)
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Kurtiz<br>
|
||||
Aren't you in a party? But you are not the party leader.<br>
|
||||
(Only the party leader can request to enter.)
|
||||
</body></html>
|
@ -69,6 +69,7 @@ public final class Nursery extends AbstractInstance
|
||||
|
||||
public Nursery()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(TIE);
|
||||
addFirstTalkId(TIE);
|
||||
addTalkId(TIE);
|
||||
@ -82,7 +83,7 @@ public final class Nursery extends AbstractInstance
|
||||
public void onTimerEvent(String event, StatsSet params, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isNurseryInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final int gameStage = npcVars.getInt("GAME_STAGE", 0);
|
||||
@ -139,7 +140,7 @@ public final class Nursery extends AbstractInstance
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
String htmltext = null;
|
||||
|
||||
if (isNurseryInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
@ -191,7 +192,7 @@ public final class Nursery extends AbstractInstance
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isNurseryInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final int gameStage = npcVars.getInt("GAME_STAGE", 0);
|
||||
@ -272,7 +273,7 @@ public final class Nursery extends AbstractInstance
|
||||
public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isNurseryInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final int maguenStatus = npcVars.getInt("MAGUEN_STATUS", 0);
|
||||
@ -316,7 +317,7 @@ public final class Nursery extends AbstractInstance
|
||||
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isNurseryInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (getRandom(100) < 6)
|
||||
{
|
||||
@ -389,7 +390,7 @@ public final class Nursery extends AbstractInstance
|
||||
public String onSpellFinished(L2Npc npc, L2PcInstance player, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isNurseryInstance(instance))
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final L2Npc gameManager = instance.getNpc(TIE);
|
||||
if (gameManager != null)
|
||||
@ -458,11 +459,6 @@ public final class Nursery extends AbstractInstance
|
||||
return super.onEnterZone(character, zone);
|
||||
}
|
||||
|
||||
private boolean isNurseryInstance(Instance instance)
|
||||
{
|
||||
return ((instance != null) && (instance.getTemplateId() == TEMPLATE_ID));
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new Nursery();
|
||||
|
@ -105,6 +105,7 @@ public final class OctavisWarzone extends AbstractInstance
|
||||
|
||||
public OctavisWarzone()
|
||||
{
|
||||
super(TEMPLATE_ID, EXTREME_TEMPLATE_ID);
|
||||
addStartNpc(LYDIA);
|
||||
addTalkId(LYDIA);
|
||||
addSpawnId(DOOR_MANAGER);
|
||||
@ -140,7 +141,7 @@ public final class OctavisWarzone extends AbstractInstance
|
||||
case "reenterInstance":
|
||||
{
|
||||
final Instance activeInstance = getPlayerInstance(player);
|
||||
if (isOctavisInstance(activeInstance))
|
||||
if (isInInstance(activeInstance))
|
||||
{
|
||||
enterInstance(player, npc, activeInstance.getTemplateId());
|
||||
return "PartyMemberReenter.html";
|
||||
@ -154,7 +155,7 @@ public final class OctavisWarzone extends AbstractInstance
|
||||
public void onTimerEvent(String event, StatsSet params, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
if (isOctavisInstance(world))
|
||||
if (isInInstance(world))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
@ -350,7 +351,7 @@ public final class OctavisWarzone extends AbstractInstance
|
||||
public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
if (isOctavisInstance(world))
|
||||
if (isInInstance(world))
|
||||
{
|
||||
final int hpPer = npc.getCurrentHpPercent();
|
||||
|
||||
@ -421,7 +422,7 @@ public final class OctavisWarzone extends AbstractInstance
|
||||
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
if (isOctavisInstance(world))
|
||||
if (isInInstance(world))
|
||||
{
|
||||
if (CommonUtil.contains(OCTAVIS_STAGE_1, npc.getId()))
|
||||
{
|
||||
@ -463,7 +464,7 @@ public final class OctavisWarzone extends AbstractInstance
|
||||
@Override
|
||||
public void onInstanceCreated(Instance instance, L2PcInstance player)
|
||||
{
|
||||
if ((player != null) && isOctavisInstance(instance))
|
||||
if ((player != null) && isInInstance(instance))
|
||||
{
|
||||
showHtmlFile(player, (instance.getTemplateId() == TEMPLATE_ID) ? "PartyEnterCommon.html" : "PartyEnterExtreme.html");
|
||||
}
|
||||
@ -473,7 +474,7 @@ public final class OctavisWarzone extends AbstractInstance
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
if (isOctavisInstance(world))
|
||||
if (isInInstance(world))
|
||||
{
|
||||
if (CommonUtil.contains(GLADIATORS, npc.getId()))
|
||||
{
|
||||
@ -490,7 +491,7 @@ public final class OctavisWarzone extends AbstractInstance
|
||||
public void onMoveFinished(L2Npc npc)
|
||||
{
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
if (isOctavisInstance(world))
|
||||
if (isInInstance(world))
|
||||
{
|
||||
world.openCloseDoor(npc.getParameters().getInt("My_DoorName", -1), false);
|
||||
}
|
||||
@ -512,7 +513,7 @@ public final class OctavisWarzone extends AbstractInstance
|
||||
final L2Npc npc = (L2Npc) event.getSeer();
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
|
||||
if (isOctavisInstance(world) && creature.isPlayer() && npc.isScriptValue(0))
|
||||
if (isInInstance(world) && creature.isPlayer() && npc.isScriptValue(0))
|
||||
{
|
||||
world.openCloseDoor(MAIN_DOOR_1, true);
|
||||
getTimers().addTimer("SECOND_DOOR_OPEN", 3000, npc, null);
|
||||
@ -525,7 +526,7 @@ public final class OctavisWarzone extends AbstractInstance
|
||||
public String onEnterZone(L2Character character, L2ZoneType zone)
|
||||
{
|
||||
final Instance world = character.getInstanceWorld();
|
||||
if (character.isPlayer() && isOctavisInstance(world))
|
||||
if (character.isPlayer() && isInInstance(world))
|
||||
{
|
||||
if (world.getParameters().getBoolean("TELEPORT_ACTIVE", false))
|
||||
{
|
||||
@ -535,11 +536,6 @@ public final class OctavisWarzone extends AbstractInstance
|
||||
return super.onEnterZone(character, zone);
|
||||
}
|
||||
|
||||
private boolean isOctavisInstance(Instance instance)
|
||||
{
|
||||
return ((instance != null) && ((instance.getTemplateId() == TEMPLATE_ID) || (instance.getTemplateId() == EXTREME_TEMPLATE_ID)));
|
||||
}
|
||||
|
||||
private boolean isExtremeMode(Instance instance)
|
||||
{
|
||||
return instance.getTemplateId() == EXTREME_TEMPLATE_ID;
|
||||
|
@ -71,6 +71,7 @@ public final class PailakaDevilsLegacy extends AbstractInstance
|
||||
|
||||
public PailakaDevilsLegacy()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addTalkId(SURVIVOR);
|
||||
addAttackId(POWDER_KEG, TREASURE_BOX, LEMATAN);
|
||||
addKillId(LEMATAN);
|
||||
|
@ -84,6 +84,7 @@ public class PailakaInjuredDragon extends AbstractInstance
|
||||
|
||||
public PailakaInjuredDragon()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addStartNpc(KETRA_ORC_SHAMAN);
|
||||
addKillId(ANTELOPE1, ANTELOPE2, ANTELOPE3, GENERAL, GREAT_MAGUS, PROPHET, ELITE_GUARD, COMMANDER, OFFICER, RECRUIT, FOOTMAN, WARRIOR, PROPHET_GUARD, HEAD_GUARD, SHAMAN, CHIEF_PRIEST, GRAND_PRIEST, LATANA);
|
||||
|
@ -96,6 +96,7 @@ public final class PailakaRuneCastle extends AbstractInstance
|
||||
|
||||
public PailakaRuneCastle()
|
||||
{
|
||||
super(MANAGERS.values().stream().mapToInt(Integer::valueOf).toArray());
|
||||
addFirstTalkId(VICTIMS);
|
||||
addTalkId(VICTIMS);
|
||||
addTalkId(MANAGERS.keySet());
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user