Channeling skills rework.

Adapted from: L2jUnity free files.
This commit is contained in:
MobiusDev
2018-09-05 16:01:11 +00:00
parent b4be2cc560
commit 735d2f6384
182 changed files with 1705 additions and 1559 deletions

View File

@@ -2291,8 +2291,8 @@
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<basicProperty>NONE</basicProperty>
<magicCriticalRate>5</magicCriticalRate>
<channelingTickInitialDelay>3600</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>3.6</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<targetType>OTHERS</targetType>
<affectScope>SINGLE</affectScope>
<conditions>
@@ -2318,8 +2318,8 @@
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<basicProperty>NONE</basicProperty>
<magicCriticalRate>5</magicCriticalRate>
<channelingTickInitialDelay>3600</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>3.6</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<targetType>OTHERS</targetType>
<affectScope>SINGLE</affectScope>
<conditions>

View File

@@ -2168,7 +2168,7 @@
<reuseDelay>1000</reuseDelay>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>5</magicCriticalRate>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<channelingTickInterval>0</channelingTickInterval>
<targetType>ADVANCE_BASE</targetType>
<affectScope>SINGLE</affectScope>

View File

@@ -870,8 +870,8 @@
<affectRange>200</affectRange>
<blockedInOlympiad>true</blockedInOlympiad>
<castRange>900</castRange>
<channelingSkillId>1419</channelingSkillId>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<effectPoint>-676</effectPoint>
<attributeType>FIRE</attributeType>
<attributeValue>20</attributeValue>
@@ -891,23 +891,22 @@
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>4</hitCancelTime>
<effectRange>1000</effectRange>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<targetType>GROUND</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<channelingEffects>
<effect name="MagicalAttack">
<power>500</power>
</effect>
</channelingEffects>
<targetType>GROUND</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
</skill>
<skill id="1420" toLevel="1" name="Cyclone">
<affectLimit>15-25</affectLimit>
<affectRange>200</affectRange>
<blockedInOlympiad>true</blockedInOlympiad>
<castRange>900</castRange>
<channelingSkillId>1420</channelingSkillId>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<effectPoint>-676</effectPoint>
<attributeType>WIND</attributeType>
<attributeValue>20</attributeValue>
@@ -927,23 +926,22 @@
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>4</hitCancelTime>
<effectRange>1000</effectRange>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<targetType>GROUND</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<channelingEffects>
<effect name="MagicalAttack">
<power>500</power>
</effect>
</channelingEffects>
<targetType>GROUND</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
</skill>
<skill id="1421" toLevel="1" name="Raging Waves">
<affectLimit>15-25</affectLimit>
<affectRange>200</affectRange>
<blockedInOlympiad>true</blockedInOlympiad>
<castRange>900</castRange>
<channelingSkillId>1421</channelingSkillId>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<effectPoint>-676</effectPoint>
<attributeType>WATER</attributeType>
<attributeValue>20</attributeValue>
@@ -963,15 +961,14 @@
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>4</hitCancelTime>
<effectRange>1000</effectRange>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<targetType>GROUND</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<channelingEffects>
<effect name="MagicalAttack">
<power>500</power>
</effect>
</channelingEffects>
<targetType>GROUND</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
</skill>
<skill id="1422" toLevel="1" name="Day of Doom">
<blockedInOlympiad>true</blockedInOlympiad>
@@ -1021,8 +1018,8 @@
<affectRange>200</affectRange>
<blockedInOlympiad>true</blockedInOlympiad>
<castRange>900</castRange>
<channelingSkillId>1423</channelingSkillId>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<effectPoint>-676</effectPoint>
<attributeType>DARK</attributeType>
<attributeValue>20</attributeValue>
@@ -1042,15 +1039,14 @@
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>4</hitCancelTime>
<effectRange>1000</effectRange>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<targetType>GROUND</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<channelingEffects>
<effect name="MagicalAttack">
<power>500</power>
</effect>
</channelingEffects>
<targetType>GROUND</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
</skill>
<skill id="1424" toLevel="1" name="Anti-summoning Field">
<blockedInOlympiad>true</blockedInOlympiad>
@@ -3538,7 +3534,8 @@
<!-- Confirmed CT2.5 -->
<!-- Kamael Final Form Skill -->
<castRange>900</castRange>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<effectPoint>-676</effectPoint>
<effectRange>1000</effectRange>
<attributeType>DARK</attributeType>
@@ -3555,14 +3552,13 @@
<staticReuse>true</staticReuse>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>4</hitCancelTime>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
<channelingEffects>
<effect name="MagicalAttack">
<power>30</power>
</effect>
</channelingEffects>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="1473" toLevel="1" name="Change Weapon">
<!-- Confirmed CT2.5 -->

View File

@@ -2989,7 +2989,8 @@
<!-- Confirmed CT2.5 -->
<!-- Kamael Final Form Skill -->
<castRange>900</castRange>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<effectPoint>-676</effectPoint>
<effectRange>1000</effectRange>
<attributeType>DARK</attributeType>
@@ -3006,14 +3007,13 @@
<staticReuse>true</staticReuse>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>4</hitCancelTime>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
<channelingEffects>
<effect name="MagicalAttack">
<power>30</power>
</effect>
</channelingEffects>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="1546" toLevel="1" name="Strider Fear">
<!-- Confirmed CT2.5 -->

View File

@@ -242,7 +242,7 @@
<reuseDelay>5000</reuseDelay>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>5</magicCriticalRate>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<channelingTickInterval>0</channelingTickInterval>
<targetType>FORTRESS_FLAGPOLE</targetType>
<affectScope>SINGLE</affectScope>

View File

@@ -1135,7 +1135,7 @@
<skill id="3626" toLevel="1" name="Kabokula">
<castRange>300</castRange>
<channelingSkillId>5106</channelingSkillId>
<channelingTickInterval>2000</channelingTickInterval>
<channelingTickInterval>2</channelingTickInterval>
<effectPoint>-100</effectPoint>
<effectRange>500</effectRange>
<hitTime>25000</hitTime>
@@ -1150,7 +1150,7 @@
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<basicProperty>NONE</basicProperty>
<magicCriticalRate>5</magicCriticalRate>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<mpPerChanneling>15</mpPerChanneling>
<targetType>ENEMY_ONLY</targetType>
<affectScope>SINGLE</affectScope>
@@ -1167,7 +1167,7 @@
<skill id="3627" toLevel="1" name="Tapirawa">
<castRange>300</castRange>
<channelingSkillId>5107</channelingSkillId>
<channelingTickInterval>2000</channelingTickInterval>
<channelingTickInterval>2</channelingTickInterval>
<effectPoint>-100</effectPoint>
<effectRange>500</effectRange>
<hitTime>25000</hitTime>
@@ -1182,7 +1182,7 @@
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<basicProperty>NONE</basicProperty>
<magicCriticalRate>5</magicCriticalRate>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<mpPerChanneling>15</mpPerChanneling>
<targetType>ENEMY_ONLY</targetType>
<affectScope>SINGLE</affectScope>
@@ -1199,7 +1199,7 @@
<skill id="3628" toLevel="1" name="Shabonoba">
<castRange>300</castRange>
<channelingSkillId>5108</channelingSkillId>
<channelingTickInterval>2000</channelingTickInterval>
<channelingTickInterval>2</channelingTickInterval>
<effectPoint>-100</effectPoint>
<effectRange>500</effectRange>
<hitTime>25000</hitTime>
@@ -1214,7 +1214,7 @@
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<basicProperty>NONE</basicProperty>
<magicCriticalRate>5</magicCriticalRate>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<mpPerChanneling>15</mpPerChanneling>
<targetType>ENEMY_ONLY</targetType>
<affectScope>SINGLE</affectScope>

View File

@@ -4527,7 +4527,7 @@
<skill id="5396" toLevel="1" name="Spell Stance">
<castRange>400</castRange>
<channelingSkillId>5397</channelingSkillId>
<channelingTickInterval>2000</channelingTickInterval>
<channelingTickInterval>2</channelingTickInterval>
<hitTime>15000</hitTime>
<isMagic>2</isMagic> <!-- Static Skill -->
<operateType>CA5</operateType>
@@ -4536,7 +4536,7 @@
<magicCriticalRate>-5</magicCriticalRate>
<effectRange>600</effectRange>
<magicLvl>77</magicLvl>
<channelingTickInitialDelay>3600</channelingTickInitialDelay>
<channelingStart>3.6</channelingStart>
<targetType>OTHERS</targetType>
<affectScope>SINGLE</affectScope>
</skill>

View File

@@ -2103,8 +2103,8 @@
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<basicProperty>NONE</basicProperty>
<magicCriticalRate>-5</magicCriticalRate>
<channelingTickInitialDelay>3600</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>3.6</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<conditions>

View File

@@ -372,11 +372,16 @@
<attributeType>FIRE</attributeType>
<attributeValue>180</attributeValue>
<affectRange>250</affectRange>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<targetType>SELF</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<channelingEffects>
<effect name="MagicalAttack">
<power>100</power>
</effect>
</channelingEffects>
</skill>
<skill id="5514" toLevel="1" name="Water Taint">
<effectPoint>-1063</effectPoint>
@@ -388,11 +393,16 @@
<attributeType>WATER</attributeType>
<attributeValue>180</attributeValue>
<affectRange>250</affectRange>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<targetType>SELF</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<channelingEffects>
<effect name="MagicalAttack">
<power>30</power>
</effect>
</channelingEffects>
</skill>
<skill id="5515" toLevel="1" name="Wind Taint">
<effectPoint>-1063</effectPoint>
@@ -404,11 +414,16 @@
<attributeType>WIND</attributeType>
<attributeValue>180</attributeValue>
<affectRange>250</affectRange>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<targetType>SELF</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<channelingEffects>
<effect name="MagicalAttack">
<power>30</power>
</effect>
</channelingEffects>
</skill>
<skill id="5516" toLevel="1" name="Earth Taint">
<effectPoint>-1063</effectPoint>
@@ -420,11 +435,16 @@
<attributeType>EARTH</attributeType>
<attributeValue>180</attributeValue>
<affectRange>250</affectRange>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<targetType>SELF</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<channelingEffects>
<effect name="MagicalAttack">
<power>30</power>
</effect>
</channelingEffects>
</skill>
<skill id="5517" toLevel="1" name="Nurture">
<abnormalLvl>1</abnormalLvl>

View File

@@ -311,9 +311,9 @@
<magicCriticalRate>-5</magicCriticalRate>
<effectRange>1700</effectRange>
<channelingSkillId>5713</channelingSkillId>
<channelingTickInitialDelay>3600</channelingTickInitialDelay>
<channelingStart>3.6</channelingStart>
<mpPerChanneling>15</mpPerChanneling>
<channelingTickInterval>2000</channelingTickInterval>
<channelingTickInterval>2</channelingTickInterval>
<targetType>OTHERS</targetType>
<affectScope>SINGLE</affectScope>
<effects>
@@ -2233,9 +2233,9 @@
<magicCriticalRate>-5</magicCriticalRate>
<effectRange>600</effectRange>
<channelingSkillId>5713</channelingSkillId>
<channelingTickInitialDelay>3600</channelingTickInitialDelay>
<channelingStart>3.6</channelingStart>
<mpPerChanneling>15</mpPerChanneling>
<channelingTickInterval>2000</channelingTickInterval>
<channelingTickInterval>2</channelingTickInterval>
<castRange>400</castRange>
<targetType>OTHERS</targetType>
<affectScope>SINGLE</affectScope>
@@ -2777,8 +2777,8 @@
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<effectPoint>-1</effectPoint>
<magicCriticalRate>-5</magicCriticalRate>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>5800</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>5.8</channelingTickInterval>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<conditions>

View File

@@ -1358,8 +1358,8 @@
<hitCancelTime>0</hitCancelTime>
<effectRange>1400</effectRange>
<channelingSkillId>14559</channelingSkillId>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<icon>icon.skill1042</icon>
<hitTime>10000</hitTime>
<reuseDelay>30000</reuseDelay>

View File

@@ -944,7 +944,7 @@
<hitCancelTime>0</hitCancelTime>
<effectRange>2000</effectRange>
<magicLvl>85</magicLvl>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<channelingTickInterval>0</channelingTickInterval>
<hitTime>90000</hitTime>
<castRange>2000</castRange>

View File

@@ -1783,7 +1783,7 @@
<attributeType>FIRE</attributeType>
<attributeValue>20</attributeValue>
<affectRange>200</affectRange>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<channelingTickInterval>0</channelingTickInterval>
<targetType>SELF</targetType>
<affectScope>POINT_BLANK</affectScope>

View File

@@ -2559,23 +2559,19 @@
<attributeType>FIRE</attributeType>
<attributeValue>20</attributeValue>
<affectRange>150</affectRange>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<affectLimit>10-10</affectLimit>
<mpPerChanneling>72</mpPerChanneling>
<channelingTickInterval>2000</channelingTickInterval>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>
<affectScope>RANGE</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<effects>
<channelingEffects>
<effect name="MagicalAttack">
<power>117</power>
</effect>
<effect name="DamOverTime">
<power>111</power>
<ticks>3</ticks>
</effect>
</effects>
</channelingEffects>
</skill>
<skill id="8582" toLevel="1" name="Dark Vortex">
<!-- Glory Days Confirmed -->
@@ -2765,19 +2761,19 @@
<effectRange>1100</effectRange>
<magicLvl>81</magicLvl>
<affectRange>150</affectRange>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<affectLimit>10-10</affectLimit>
<mpPerChanneling>72</mpPerChanneling>
<channelingTickInterval>2000</channelingTickInterval>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>
<affectScope>RANGE</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<effects>
<channelingEffects>
<effect name="MagicalAttack">
<power>117</power>
</effect>
</effects>
</channelingEffects>
</skill>
<skill id="8587" toLevel="1" name="Wind Vortex">
<!-- Glory Days Confirmed -->

View File

@@ -2297,9 +2297,8 @@
<!-- Updated to IO -->
<!-- For 10 seconds, drains target's life with 25 Power per second. Absorbs 100% of the damage inflicted as HP. -->
<icon>icon.skill11030</icon>
<channelingSkillId>11030</channelingSkillId>
<channelingTickInterval>1000</channelingTickInterval>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>1</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<operateType>CA1</operateType>
<magicLvl>
<value level="1">85</value>
@@ -4323,8 +4322,8 @@
</activateRate>
<basicProperty>NONE</basicProperty>
<channelingSkillId>11182</channelingSkillId> <!-- Yoke Status -->
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<mpPerChanneling>15</mpPerChanneling>
<operateType>CA2</operateType>
<trait>AIRBIND</trait>

View File

@@ -2067,9 +2067,8 @@
<!-- Updated to IO -->
<!-- For 10 sec., attacks target with 115 Power per second and recovers HP equivalent to 100% of damage inflicted. -->
<icon>icon.skill0000</icon>
<channelingSkillId>11131</channelingSkillId>
<channelingTickInterval>1000</channelingTickInterval>
<channelingTickInitialDelay>2000</channelingTickInitialDelay>
<channelingTickInterval>1</channelingTickInterval>
<channelingStart>2</channelingStart>
<operateType>CA1</operateType>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
@@ -2174,7 +2173,7 @@
<icon>icon.skill11134</icon>
<affectRange>250</affectRange>
<channelingSkillId>11134</channelingSkillId>
<channelingTickInterval>2000</channelingTickInterval>
<channelingTickInterval>2</channelingTickInterval>
<attributeType>FIRE</attributeType>
<attributeValue>20</attributeValue>
<itemConsumeCount>5</itemConsumeCount>
@@ -2232,9 +2231,8 @@
<!-- Creates a black swamp in the selected location, dealing great damage, and receiving 50% of the target's damage as HP. Inflicts abnormal state and decreases Speed. The higher the level of the abnormal state, the greater the damage, and at the last stage, Shocks the target. Consumes 5 Spirit Ores. -->
<icon>icon.skill11135</icon>
<affectRange>250</affectRange>
<channelingSkillId>11135</channelingSkillId>
<channelingTickInterval>1000</channelingTickInterval>
<channelingTickInitialDelay>2000</channelingTickInitialDelay>
<channelingTickInterval>1</channelingTickInterval>
<channelingStart>2</channelingStart>
<attributeType>DARK</attributeType>
<attributeValue>20</attributeValue>
<itemConsumeCount>5</itemConsumeCount>
@@ -2249,6 +2247,7 @@
<reuseDelay>120000</reuseDelay>
<effectPoint>-676</effectPoint>
<isMagic>2</isMagic>
<hitCancelTime>4</hitCancelTime>
<channelingEffects>
<effect name="HpDrain">
<power>
@@ -2276,9 +2275,8 @@
<affectRange>250</affectRange>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>5</abnormalTime>
<channelingSkillId>11136</channelingSkillId>
<channelingTickInterval>1000</channelingTickInterval>
<channelingTickInitialDelay>2000</channelingTickInitialDelay>
<channelingTickInterval>1</channelingTickInterval>
<channelingStart>2</channelingStart>
<attributeType>WATER</attributeType>
<attributeValue>20</attributeValue>
<itemConsumeCount>5</itemConsumeCount>
@@ -2293,6 +2291,7 @@
<reuseDelay>120000</reuseDelay>
<effectPoint>-676</effectPoint>
<isMagic>2</isMagic>
<hitCancelTime>4</hitCancelTime>
<channelingEffects>
<effect name="MagicalAttack">
<power>
@@ -2336,9 +2335,8 @@
<!-- Creates a tornado in the selected location, dealing great damage. Inflicts abnormal state and decreases Speed. The higher the level of the abnormal state, the greater the damage, and at the last stage, locks the target in an Aerial Yoke. Consumes 5 Spirit Ores. -->
<icon>icon.skill11137</icon>
<affectRange>250</affectRange>
<channelingSkillId>11137</channelingSkillId>
<channelingTickInterval>1000</channelingTickInterval>
<channelingTickInitialDelay>2000</channelingTickInitialDelay>
<channelingTickInterval>1</channelingTickInterval>
<channelingStart>2</channelingStart>
<attributeType>WIND</attributeType>
<attributeValue>20</attributeValue>
<itemConsumeCount>5</itemConsumeCount>
@@ -2353,6 +2351,7 @@
<reuseDelay>120000</reuseDelay>
<effectPoint>-676</effectPoint>
<isMagic>2</isMagic>
<hitCancelTime>4</hitCancelTime>
<channelingEffects>
<effect name="MagicalAttack">
<power>
@@ -2396,9 +2395,8 @@
<!-- Detonates the soul in the selected location to attack surrounding enemies. Inflicts abnormal state and increases PvP Damage. The effect increases as the level of the abnormal state increases. Consumes 5 Spirit Ores. -->
<icon>icon.skill11138</icon>
<affectRange>250</affectRange> <!-- Guessed -->
<channelingSkillId>11138</channelingSkillId>
<channelingTickInterval>1000</channelingTickInterval>
<channelingTickInitialDelay>2000</channelingTickInitialDelay>
<channelingTickInterval>1</channelingTickInterval>
<channelingStart>2</channelingStart>
<itemConsumeCount>5</itemConsumeCount>
<itemConsumeId>3031</itemConsumeId> <!-- Spirit Ore -->
<operateType>CA1</operateType>
@@ -2411,6 +2409,7 @@
<reuseDelay>120000</reuseDelay>
<effectPoint>-676</effectPoint>
<isMagic>1</isMagic>
<hitCancelTime>4</hitCancelTime>
<channelingEffects>
<effect name="MagicalAttack">
<power>600</power>

View File

@@ -1205,7 +1205,7 @@
<hitCancelTime>0</hitCancelTime>
<effectRange>1000</effectRange>
<magicLvl>95</magicLvl>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<channelingTickInterval>0</channelingTickInterval>
<isMagic>2</isMagic>
<reuseDelay>3000</reuseDelay>

View File

@@ -465,9 +465,9 @@
<effectRange>1400</effectRange>
<magicLvl>99</magicLvl>
<channelingSkillId>14217</channelingSkillId>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingStart>1.2</channelingStart>
<mpPerChanneling>15</mpPerChanneling>
<channelingTickInterval>2000</channelingTickInterval>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>ENEMY</targetType>
@@ -660,9 +660,9 @@
<effectRange>600</effectRange>
<magicLvl>99</magicLvl>
<channelingSkillId>14225</channelingSkillId>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<mpPerChanneling>15</mpPerChanneling>
<channelingTickInterval>2000</channelingTickInterval>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<reuseDelay>20000</reuseDelay>
<targetType>ENEMY</targetType>
@@ -2341,8 +2341,8 @@
<effectRange>1500</effectRange>
<magicLvl>99</magicLvl>
<channelingSkillId>14436</channelingSkillId> <!-- Obedience Status -->
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<hitTime>5000</hitTime>
<targetType>TARGET</targetType>

View File

@@ -555,19 +555,19 @@
<magicLvl>62</magicLvl>
<attributeType>FIRE</attributeType>
<attributeValue>20</attributeValue>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<affectLimit>10-10</affectLimit>
<mpPerChanneling>1</mpPerChanneling>
<channelingTickInterval>1000</channelingTickInterval>
<channelingTickInterval>1</channelingTickInterval>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<channelingEffects>
<effect name="HpDrain">
<power>84</power>
<percentage>40</percentage>
</effect>
</effects>
</channelingEffects>
</skill>
<skill id="14423" toLevel="1" name="Byron's Darkness Attack">
<!-- Glory Days confirmed -->
@@ -889,8 +889,8 @@
<magicLvl>85</magicLvl>
<attributeType>DARK</attributeType>
<attributeValue>20</attributeValue>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<staticReuse>true</staticReuse>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>
@@ -911,8 +911,8 @@
<magicLvl>85</magicLvl>
<attributeType>DARK</attributeType>
<attributeValue>20</attributeValue>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<staticReuse>true</staticReuse>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>
@@ -933,8 +933,8 @@
<magicLvl>85</magicLvl>
<attributeType>DARK</attributeType>
<attributeValue>20</attributeValue>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<staticReuse>true</staticReuse>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>
@@ -955,8 +955,8 @@
<magicLvl>85</magicLvl>
<attributeType>DARK</attributeType>
<attributeValue>20</attributeValue>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<staticReuse>true</staticReuse>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>
@@ -977,8 +977,8 @@
<magicLvl>85</magicLvl>
<attributeType>DARK</attributeType>
<attributeValue>20</attributeValue>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<staticReuse>true</staticReuse>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>
@@ -999,8 +999,8 @@
<magicLvl>85</magicLvl>
<attributeType>DARK</attributeType>
<attributeValue>20</attributeValue>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<staticReuse>true</staticReuse>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>
@@ -1021,8 +1021,8 @@
<magicLvl>85</magicLvl>
<attributeType>DARK</attributeType>
<attributeValue>20</attributeValue>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<staticReuse>true</staticReuse>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>
@@ -1043,8 +1043,8 @@
<magicLvl>85</magicLvl>
<attributeType>DARK</attributeType>
<attributeValue>20</attributeValue>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<staticReuse>true</staticReuse>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>

View File

@@ -205,8 +205,8 @@
<effectRange>1400</effectRange>
<magicLvl>85</magicLvl>
<channelingSkillId>14510</channelingSkillId> <!-- Drain Status -->
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>ENEMY</targetType>
@@ -419,8 +419,8 @@
<effectRange>1000</effectRange>
<magicLvl>96</magicLvl>
<channelingSkillId>14616</channelingSkillId> <!-- Blood Siphon -->
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<staticReuse>true</staticReuse>
<isMagic>2</isMagic>
<reuseDelay>15000</reuseDelay>
@@ -644,8 +644,8 @@
<magicLvl>96</magicLvl>
<attributeType>FIRE</attributeType>
<attributeValue>20</attributeValue>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<staticReuse>true</staticReuse>
<fanRange>0;0;500;500</fanRange>
<isMagic>1</isMagic>
@@ -1481,8 +1481,8 @@
<effectRange>1100</effectRange>
<magicLvl>94</magicLvl>
<channelingSkillId>14548</channelingSkillId> <!-- Yoke of Sacrifice -->
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>ENEMY</targetType>
@@ -1545,8 +1545,8 @@
<effectRange>1100</effectRange>
<magicLvl>94</magicLvl>
<channelingSkillId>14550</channelingSkillId> <!-- Yoke of Offering -->
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>ENEMY</targetType>
@@ -1716,8 +1716,8 @@
<effectRange>400</effectRange>
<magicLvl>99</magicLvl>
<channelingSkillId>14555</channelingSkillId> <!-- Earth Wyrm Heart Protection -->
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>TARGET</targetType>
@@ -1974,8 +1974,8 @@
<magicLvl>87</magicLvl>
<reuseDelayGroup>11050</reuseDelayGroup>
<channelingSkillId>14569</channelingSkillId> <!-- Yoke of Sacrifice -->
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>ENEMY</targetType>
@@ -2001,8 +2001,8 @@
<magicLvl>87</magicLvl>
<reuseDelayGroup>11050</reuseDelayGroup>
<channelingSkillId>14569</channelingSkillId> <!-- Yoke of Sacrifice -->
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>ENEMY</targetType>
@@ -2028,8 +2028,8 @@
<magicLvl>87</magicLvl>
<reuseDelayGroup>11050</reuseDelayGroup>
<channelingSkillId>14569</channelingSkillId> <!-- Yoke of Sacrifice -->
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>ENEMY</targetType>
@@ -2055,8 +2055,8 @@
<magicLvl>87</magicLvl>
<reuseDelayGroup>11050</reuseDelayGroup>
<channelingSkillId>14569</channelingSkillId> <!-- Yoke of Sacrifice -->
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>ENEMY</targetType>
@@ -2082,8 +2082,8 @@
<magicLvl>87</magicLvl>
<reuseDelayGroup>11050</reuseDelayGroup>
<channelingSkillId>14569</channelingSkillId> <!-- Yoke of Sacrifice -->
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>ENEMY</targetType>

View File

@@ -676,8 +676,8 @@
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<magicLvl>85</magicLvl>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
</skill>

View File

@@ -465,8 +465,8 @@
<magicCriticalRate>-5</magicCriticalRate>
<effectRange>2000</effectRange>
<magicLvl>85</magicLvl>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>1</isMagic>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>

View File

@@ -2312,17 +2312,16 @@
<hitCancelTime>0</hitCancelTime>
<effectRange>1400</effectRange>
<magicLvl>85</magicLvl>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<hitTime>12000</hitTime>
<isMagic>2</isMagic>
<channelingSkillId>14982</channelingSkillId>
<targetType>ENEMY</targetType>
<channelingEffects>
<effect name="HealPercent">
<power>-10</power>
</effect>
</channelingEffects>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="14983" toLevel="1" name="HP Drain">
@@ -2337,18 +2336,17 @@
<hitCancelTime>0</hitCancelTime>
<effectRange>1400</effectRange>
<magicLvl>90</magicLvl>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<hitTime>12000</hitTime>
<isMagic>2</isMagic>
<channelingSkillId>14983</channelingSkillId>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
<channelingEffects>
<effect name="HealPercent">
<power>-10</power>
</effect>
</channelingEffects>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="14984" toLevel="1" name="HP Drain">
<!-- Glory Days confirmed -->
@@ -2362,18 +2360,17 @@
<hitCancelTime>0</hitCancelTime>
<effectRange>1400</effectRange>
<magicLvl>95</magicLvl>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<hitTime>12000</hitTime>
<isMagic>2</isMagic>
<channelingSkillId>14984</channelingSkillId>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
<channelingEffects>
<effect name="HealPercent">
<power>-10</power>
</effect>
</channelingEffects>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="14985" toLevel="1" name="Drain Status">
<!-- Glory Days confirmed -->

View File

@@ -2091,8 +2091,8 @@
<effectRange>3000</effectRange>
<magicLvl>99</magicLvl>
<channelingSkillId>15175</channelingSkillId>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>TARGET</targetType>
@@ -2137,8 +2137,8 @@
<effectRange>3000</effectRange>
<magicLvl>99</magicLvl>
<channelingSkillId>15177</channelingSkillId>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>TARGET</targetType>
@@ -2183,8 +2183,8 @@
<effectRange>3000</effectRange>
<magicLvl>99</magicLvl>
<channelingSkillId>15179</channelingSkillId>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>TARGET</targetType>
@@ -2229,8 +2229,8 @@
<effectRange>3000</effectRange>
<magicLvl>99</magicLvl>
<channelingSkillId>15181</channelingSkillId>
<channelingTickInitialDelay>1200</channelingTickInitialDelay>
<channelingTickInterval>2000</channelingTickInterval>
<channelingStart>1.2</channelingStart>
<channelingTickInterval>2</channelingTickInterval>
<isMagic>2</isMagic>
<isDebuff>true</isDebuff>
<targetType>TARGET</targetType>

View File

@@ -1728,7 +1728,7 @@
<hitCancelTime>0</hitCancelTime>
<effectRange>2160</effectRange>
<magicLvl>95</magicLvl>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<channelingTickInterval>0</channelingTickInterval>
<isMagic>1</isMagic>
<targetType>TARGET</targetType>

View File

@@ -523,7 +523,7 @@
<hitCancelTime>0</hitCancelTime>
<effectRange>1100</effectRange>
<magicLvl>85</magicLvl>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingStart>1</channelingStart>
<channelingTickInterval>0</channelingTickInterval>
<isMagic>2</isMagic>
<hitTime>10000</hitTime>

View File

@@ -2353,8 +2353,8 @@
<hitCancelTime>0</hitCancelTime>
<effectRange>2200</effectRange>
<magicLvl>85</magicLvl>
<channelingTickInitialDelay>1000</channelingTickInitialDelay>
<channelingTickInterval>1000</channelingTickInterval>
<channelingStart>1</channelingStart>
<channelingTickInterval>1</channelingTickInterval>
<isMagic>1</isMagic>
<targetType>OTHERS</targetType>
<affectScope>SINGLE</affectScope>

View File

@@ -2497,8 +2497,8 @@
<xs:element name="blockedInOlympiad" type="xs:boolean" />
<xs:element name="channelingSkillId" type="xs:unsignedShort" />
<xs:element name="mpPerChanneling" type="xs:unsignedByte" />
<xs:element name="channelingTickInitialDelay" type="xs:unsignedShort" />
<xs:element name="channelingTickInterval" type="xs:unsignedShort" />
<xs:element name="channelingStart" type="xs:decimal" />
<xs:element name="channelingTickInterval" type="xs:decimal" />
<xs:element name="removedOnDamage" type="xs:boolean" />
<xs:element name="removedOnAnyActionExceptMove" type="xs:boolean" />
<xs:element name="itemConsumeSteps" type="xs:unsignedByte" />

View File

@@ -126,7 +126,7 @@ public final class Skill implements IIdentifiable
private final int _refId;
// all times in milliseconds
private final int _hitTime;
// private final int _skillInterruptTime;
private final double _hitCancelTime;
private final int _coolTime;
private final long _reuseHashCode;
private final int _reuseDelay;
@@ -185,8 +185,8 @@ public final class Skill implements IIdentifiable
// Channeling data
private final int _channelingSkillId;
private final int _channelingTickInitialDelay;
private final int _channelingTickInterval;
private final long _channelingStart;
private final long _channelingTickInterval;
// Mentoring
private final boolean _isMentoring;
@@ -259,6 +259,7 @@ public final class Skill implements IIdentifiable
_stayAfterDeath = set.getBoolean("stayAfterDeath", false);
_hitTime = set.getInt("hitTime", 0);
_hitCancelTime = set.getDouble("hitCancelTime", 0);
_coolTime = set.getInt("coolTime", 0);
_isDebuff = set.getBoolean("isDebuff", false);
_isRecoveryHerb = set.getBoolean("isRecoveryHerb", false);
@@ -391,8 +392,8 @@ public final class Skill implements IIdentifiable
_icon = set.getString("icon", "icon.skill0000");
_channelingSkillId = set.getInt("channelingSkillId", 0);
_channelingTickInterval = set.getInt("channelingTickInterval", 2000);
_channelingTickInitialDelay = set.getInt("channelingTickInitialDelay", _channelingTickInterval);
_channelingTickInterval = (long) set.getFloat("channelingTickInterval", 2000f) * 1000;
_channelingStart = (long) (set.getFloat("channelingStart", 0f) * 1000);
_isMentoring = set.getBoolean("isMentoring", false);
@@ -478,11 +479,6 @@ public final class Skill implements IIdentifiable
return false;
}
public boolean isDamage()
{
return hasEffectType(L2EffectType.MAGICAL_ATTACK, L2EffectType.HP_DRAIN, L2EffectType.PHYSICAL_ATTACK, L2EffectType.PHYSICAL_ATTACK_HP_LINK);
}
public boolean isSuicideAttack()
{
return _isSuicideAttack;
@@ -863,6 +859,11 @@ public final class Skill implements IIdentifiable
return _hitTime;
}
public double getHitCancelTime()
{
return _hitCancelTime;
}
/**
* @return the cool time
*/
@@ -1355,8 +1356,6 @@ public final class Skill implements IIdentifiable
final EffectScope pvpOrPveEffectScope = effector.isPlayable() && effected.isAttackable() ? EffectScope.PVE : effector.isPlayable() && effected.isPlayable() ? EffectScope.PVP : null;
applyEffectScope(pvpOrPveEffectScope, info, instant, addContinuousEffects);
applyEffectScope(EffectScope.CHANNELING, info, instant, addContinuousEffects);
if (addContinuousEffects)
{
// Aura skills reset the abnormal time.
@@ -1430,6 +1429,23 @@ public final class Skill implements IIdentifiable
}
}
/**
* Applies the channeling effects from this skill to the target.
* @param effector the caster of the skill
* @param effected the target of the effect
*/
public void applyChannelingEffects(L2Character effector, L2Character effected)
{
// null targets cannot receive any effects.
if (effected == null)
{
return;
}
final BuffInfo info = new BuffInfo(effector, effected, this, false, null, null);
applyEffectScope(EffectScope.CHANNELING, info, true, true);
}
/**
* Activates a skill for the given creature and targets.
* @param caster the caster
@@ -1489,8 +1505,6 @@ public final class Skill implements IIdentifiable
final EffectScope pvpOrPveEffectScope = caster.isPlayable() && target.isAttackable() ? EffectScope.PVE : caster.isPlayable() && target.isPlayable() ? EffectScope.PVP : null;
applyEffectScope(pvpOrPveEffectScope, info, true, false);
applyEffectScope(EffectScope.CHANNELING, info, true, false);
}
else
{
@@ -1709,14 +1723,14 @@ public final class Skill implements IIdentifiable
return _icon;
}
public int getChannelingTickInterval()
public long getChannelingTickInterval()
{
return _channelingTickInterval;
}
public int getChannelingTickInitialDelay()
public long getChannelingTickInitialDelay()
{
return _channelingTickInitialDelay;
return _channelingStart;
}
public Set<MountType> getRideState()

View File

@@ -389,7 +389,7 @@ public class SkillCaster implements Runnable
}
// Start channeling if skill is channeling.
if (_skill.isChanneling() && (_skill.getChannelingSkillId() > 0))
if (_skill.isChanneling())
{
caster.getSkillChannelizer().startChanneling(_skill);
}

View File

@@ -149,82 +149,84 @@ public class SkillChannelizer implements Runnable
}
// Apply channeling skills on the targets.
if (skill.getChannelingSkillId() > 0)
final List<L2Character> targetList = new ArrayList<>();
final L2Object target = skill.getTarget(_channelizer, false, false, false);
if (target != null)
{
final List<L2Character> targetList = new ArrayList<>();
final L2Object target = skill.getTarget(_channelizer, false, false, false);
if (target != null)
skill.forEachTargetAffected(_channelizer, target, o ->
{
skill.forEachTargetAffected(_channelizer, target, o ->
if (o.isCharacter())
{
if (o.isCharacter())
targetList.add((L2Character) o);
((L2Character) o).getSkillChannelized().addChannelizer(skill.getChannelingSkillId(), _channelizer);
}
});
}
if (targetList.isEmpty())
{
return;
}
channelized = targetList;
for (L2Character character : channelized)
{
if (!Util.checkIfInRange(skill.getEffectRange(), _channelizer, character, true))
{
continue;
}
else if (!GeoEngine.getInstance().canSeeTarget(_channelizer, character))
{
continue;
}
if (skill.getChannelingSkillId() > 0)
{
final int maxSkillLevel = SkillData.getInstance().getMaxLevel(skill.getChannelingSkillId());
final int skillLevel = Math.min(character.getSkillChannelized().getChannerlizersSize(skill.getChannelingSkillId()), maxSkillLevel);
final BuffInfo info = character.getEffectList().getBuffInfoBySkillId(skill.getChannelingSkillId());
if ((info == null) || (info.getSkill().getLevel() < skillLevel))
{
final Skill channeledSkill = SkillData.getInstance().getSkill(skill.getChannelingSkillId(), skillLevel);
if (channeledSkill == null)
{
targetList.add((L2Character) o);
((L2Character) o).getSkillChannelized().addChannelizer(skill.getChannelingSkillId(), _channelizer);
LOGGER.warning(getClass().getSimpleName() + ": Non existent channeling skill requested: " + skill);
_channelizer.abortCast();
return;
}
});
}
if (targetList.isEmpty())
{
return;
}
channelized = targetList;
for (L2Character character : channelized)
{
if (!Util.checkIfInRange(skill.getEffectRange(), _channelizer, character, true))
{
continue;
}
else if (!GeoEngine.getInstance().canSeeTarget(_channelizer, character))
{
continue;
}
else
{
final int maxSkillLevel = SkillData.getInstance().getMaxLevel(skill.getChannelingSkillId());
final int skillLevel = Math.min(character.getSkillChannelized().getChannerlizersSize(skill.getChannelingSkillId()), maxSkillLevel);
final BuffInfo info = character.getEffectList().getBuffInfoBySkillId(skill.getChannelingSkillId());
if ((info == null) || (info.getSkill().getLevel() < skillLevel))
// Update PvP status
if (character.isPlayable() && _channelizer.isPlayer())
{
final Skill channeledSkill = SkillData.getInstance().getSkill(skill.getChannelingSkillId(), skillLevel);
if (channeledSkill == null)
{
LOGGER.warning(getClass().getSimpleName() + ": Non existent channeling skill requested: " + skill);
_channelizer.abortCast();
return;
}
// Update PvP status
if (character.isPlayable() && _channelizer.isPlayer())
{
((L2PcInstance) _channelizer).updatePvPStatus(character);
}
// Be warned, this method has the possibility to call doDie->abortCast->stopChanneling method. Variable cache above try"+ +" is used in this case to avoid NPEs.
channeledSkill.applyEffects(_channelizer, character);
// Reduce shots.
if (skill.useSpiritShot())
{
_channelizer.unchargeShot(_channelizer.isChargedShot(ShotType.BLESSED_SPIRITSHOTS) ? ShotType.BLESSED_SPIRITSHOTS : ShotType.SPIRITSHOTS);
}
else
{
_channelizer.unchargeShot(_channelizer.isChargedShot(ShotType.BLESSED_SOULSHOTS) ? ShotType.BLESSED_SOULSHOTS : ShotType.SOULSHOTS);
}
// Shots are re-charged every cast.
_channelizer.rechargeShots(skill.useSoulShot(), skill.useSpiritShot(), false);
}
if (!skill.isToggle())
{
_channelizer.broadcastPacket(new MagicSkillLaunched(_channelizer, skill.getId(), skill.getLevel(), SkillCastingType.NORMAL, character));
((L2PcInstance) _channelizer).updatePvPStatus(character);
}
// Be warned, this method has the possibility to call doDie->abortCast->stopChanneling method. Variable cache above try{} is used in this case to avoid NPEs.
channeledSkill.applyEffects(_channelizer, character);
}
if (!skill.isToggle())
{
_channelizer.broadcastPacket(new MagicSkillLaunched(_channelizer, skill.getId(), skill.getLevel(), SkillCastingType.NORMAL, character));
}
}
else
{
skill.applyChannelingEffects(_channelizer, character);
}
// Reduce shots.
if (skill.useSpiritShot())
{
_channelizer.unchargeShot(_channelizer.isChargedShot(ShotType.BLESSED_SPIRITSHOTS) ? ShotType.BLESSED_SPIRITSHOTS : ShotType.SPIRITSHOTS);
}
else
{
_channelizer.unchargeShot(_channelizer.isChargedShot(ShotType.BLESSED_SOULSHOTS) ? ShotType.BLESSED_SOULSHOTS : ShotType.SOULSHOTS);
}
// Shots are re-charged every cast.
_channelizer.rechargeShots(skill.useSoulShot(), skill.useSpiritShot(), false);
}
}
catch (Exception e)

View File

@@ -484,13 +484,7 @@ public final class Formulas
public static double calcSkillCancelTime(L2Character creature, Skill skill)
{
// Fishing skills.
if ((skill.getId() == 1312) || (skill.getId() == 1314) || (skill.getId() == 1315))
{
return 0;
}
// return (int) Math.max(skill.getCancelTime() / calcSkillTimeFactor(attacker, skill), 500);
return Math.max(skill.getHitTime() / calcSkillTimeFactor(creature, skill), SKILL_LAUNCH_TIME);
return Math.max((skill.getHitCancelTime() * 1000) / calcSkillTimeFactor(creature, skill), SKILL_LAUNCH_TIME);
}
/**