l2jacis.
This is an example of how to combine two or more buffs into one using only xml.
So lets say we want to combine shield and magic barrier , two defensive skills into one.
Shield xml:
<skill id="1040" levels="3" name="Shield" enchantLevels1="30" enchantLevels2="30" >
<table name="#enchantMagicLvl"> 76 76 76 77 77 77 78 78 78 79 79 79 80 80 80 81 81 81 82 82 82 82 83 83 83 84 84 85 85 85 </table>
<table name="#ench2MpConsume"> 30 29 29 28 28 27 27 26 26 25 25 24 24 23 23 22 22 21 21 20 20 19 19 18 18 17 17 16 16 15 </table>
<table name="#ench2mpInitialConsume"> 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 </table>
<table name="#ench1time"> 1240 1280 1320 1360 1400 1440 1480 1520 1560 1600 1640 1680 1720 1760 1800 1840 1880 1920 1960 2000 2040 2080 2120 2160 2200 2240 2280 2320 2360 2400 </table>
<table name="#mpInitialConsume"> 2 5 8 </table>
<table name="#mpConsume"> 8 18 31 </table>
<table name="#rate"> 1.08 1.12 1.15 </table>
<table name="#stackOrder"> 1 2 3 </table>
<table name="#aggro"> 121 243 418 </table>
<set name="mpInitialConsume" val="#mpInitialConsume"/>
<set name="mpConsume" val="#mpConsume"/>
<set name="target" val="ONE"/>
<set name="reuseDelay" val="6000"/>
<set name="hitTime" val="4000"/>
<set name="skillType" val="BUFF"/>
<set name="isMagic" val="true"/>
<set name="operateType" val="ACTIVE"/>
<set name="castRange" val="400"/>
<set name="effectRange" val="900"/>
<set name="aggroPoints" val="#aggro"/>
<enchant1 name="magicLvl" val="#enchantMagicLvl"/>
<enchant2 name="magicLvl" val="#enchantMagicLvl"/>
<enchant2 name="mpConsume" val="#ench2MpConsume"/>
<enchant2 name="mpInitialConsume" val="#ench2mpInitialConsume"/>
<for>
<effect name="Buff" time="1200" val="0" stackOrder="#stackOrder" stackType="pd_up">
<mul stat="pDef" val="#rate"/>
</effect>
</for>
<enchant1for>
<effect name="Buff" time="#ench1time" val="0" stackOrder="3" stackType="pd_up">
<mul stat="pDef" val="1.15"/>
</effect>
</enchant1for>
</skill>
Magic Barrier xml:
<skill id="1036" levels="2" name="Magic Barrier" enchantLevels1="30" enchantLevels2="30" >
<table name="#enchantMagicLvl"> 76 76 76 77 77 77 78 78 78 79 79 79 80 80 80 81 81 81 82 82 82 82 83 83 83 84 84 85 85 85 </table>
<table name="#ench2MpConsume"> 37 36 36 35 34 34 33 32 32 31 31 30 29 29 28 27 27 26 25 25 24 24 23 22 22 21 20 20 19 19 </table>
<table name="#ench2mpInitialConsume"> 9 9 9 9 9 9 8 8 8 8 8 8 7 7 7 7 7 7 6 6 6 6 6 6 5 5 5 5 5 5 </table>
<table name="#ench1time"> 1240 1280 1320 1360 1400 1440 1480 1520 1560 1600 1640 1680 1720 1760 1800 1840 1880 1920 1960 2000 2040 2080 2120 2160 2200 2240 2280 2320 2360 2400 </table>
<table name="#mpInitialConsume"> 8 10 </table>
<table name="#mpConsume"> 31 38 </table>
<table name="#mDef"> 1.23 1.3 </table>
<table name="#stackOrder"> 2 3 </table>
<table name="#aggro"> 418 495 </table>
<set name="mpInitialConsume" val="#mpInitialConsume"/>
<set name="mpConsume" val="#mpConsume"/>
<set name="target" val="ONE"/>
<set name="reuseDelay" val="6000"/>
<set name="hitTime" val="4000"/>
<set name="skillType" val="BUFF"/>
<set name="isMagic" val="true"/>
<set name="operateType" val="ACTIVE"/>
<set name="castRange" val="400"/>
<set name="effectRange" val="900"/>
<set name="aggroPoints" val="#aggro"/>
<enchant1 name="magicLvl" val="#enchantMagicLvl"/>
<enchant2 name="magicLvl" val="#enchantMagicLvl"/>
<enchant2 name="mpConsume" val="#ench2MpConsume"/>
<enchant2 name="mpInitialConsume" val="#ench2mpInitialConsume"/>
<for>
<effect name="Buff" time="1200" val="0" stackOrder="#stackOrder" stackType="md_up">
<mul stat="mDef" val="#mDef"/>
</effect>
</for>
<enchant1for>
<effect name="Buff" time="#ench1time" val="0" stackOrder="3" stackType="md_up">
<mul stat="mDef" val="1.3"/>
</effect>
</enchant1for>
</skill>
New combined skill xml:
We remove the extra tables if our new buff has only 1 level .Either way you should add tables like a normal buff.
We take the orange lines from each xml and combine as shown and add the noicon="1" to every other buff we combine.
<skill id="CombinedID" levels="1" name="CombinedName" >
<set name="mpInitialConsume" val="15"/>
<set name="mpConsume" val="45"/>
<set name="target" val="ONE"/>
<set name="reuseDelay" val="6000"/>
<set name="hitTime" val="4000"/>
<set name="skillType" val="BUFF"/>
<set name="isMagic" val="true"/>
<set name="operateType" val="ACTIVE"/>
<set name="castRange" val="400"/>
<set name="effectRange" val="900"/>
<set name="aggroPoints" val="495"/>
<for>
<effect name="Buff" time="1200" val="0" stackOrder="10" stackType="pd_up">
<mul stat="pDef" val="1.2"/>
</effect>
<effect name="Buff" time="1200" noicon="1" val="0" stackOrder="10" stackType="md_up">
<mul stat="mDef" val="1.35"/>
</effect>
</for>
</skill>
Notice:
1)noicon="1" is to remove the icon of the effect so you wont be getting multiple icons of the same buff.
2)stackOrder must always be higher than the original skill , number doesn't matter just need to be higher.
3)stackType must always be the same as the original buffs to replace it.
Hopefully I didn't forget anything and works, good luck.
Disclaimer, haven't tested, I don't have any pack to test it at the moment but as I recall it works but I'm making this topic for someone that wants to combine buffs and can't find a correct answer on the forum.Last time I checked my old topic on how to do noone gave a correct answer even my so called developer at the time.
If anything doesn't work I will try and fix it.