Procházet zdrojové kódy

BETA: DP-Part for [L4600] by osiride.

MELERIX před 14 roky
rodič
revize
10596a45a9

+ 40 - 2
L2J_DataPack_BETA/data/scripts/handlers/skillhandlers/ManaHeal.java

@@ -37,7 +37,8 @@ public class ManaHeal implements ISkillHandler
 	private static final L2SkillType[] SKILL_IDS =
 	{
 		L2SkillType.MANAHEAL,
-		L2SkillType.MANARECHARGE
+		L2SkillType.MANARECHARGE,
+		L2SkillType.MANA_BY_LEVEL
 	};
 	
 	/**
@@ -52,7 +53,44 @@ public class ManaHeal implements ISkillHandler
 				continue;
 			
 			double mp = skill.getPower();
-			mp = (skill.getSkillType() == L2SkillType.MANARECHARGE) ? target.calcStat(Stats.RECHARGE_MP_RATE, mp, null, null) : mp;
+			
+			switch (skill.getSkillType())
+			{
+				case MANARECHARGE:
+					mp = target.calcStat(Stats.RECHARGE_MP_RATE, mp, null, null);
+					break;
+				case MANA_BY_LEVEL:	
+				//recharged mp influenced by difference between target level and skill level
+				//if target is within 5 levels or lower then skill level there's no penalty.
+					mp = target.calcStat(Stats.RECHARGE_MP_RATE, mp, null, null);  
+					if (target.getLevel() > skill.getMagicLevel())
+					{
+						int lvlDiff = target.getLevel() - skill.getMagicLevel();
+						//if target is too high compared to skill level, the amount of recharged mp gradually decreases.
+						if (lvlDiff == 6)		//6 levels difference:
+							mp *= 0.9;			//only 90% effective
+						else if (lvlDiff == 7)
+							mp *= 0.8;			//80%
+						else if (lvlDiff == 8)
+							mp *= 0.7;			//70%
+						else if (lvlDiff == 9)
+							mp *= 0.6;			//60%
+						else if (lvlDiff == 10)
+							mp *= 0.5;			//50%
+						else if (lvlDiff == 11)
+							mp *= 0.4;			//40%
+						else if (lvlDiff == 12)
+							mp *= 0.3;			//30%
+						else if (lvlDiff == 13)
+							mp *= 0.2;			//20%
+						else if (lvlDiff == 14)
+							mp *= 0.1;			//10%
+						
+						else if (lvlDiff >= 15)	//15 levels or more:
+							mp = 0;				//0mp recharged
+					}
+					
+			}
 			
 			//from CT2 u will receive exact MP, u can't go over it, if u have full MP and u get MP buff, u will receive 0MP restored message
 			if ((target.getCurrentMp() + mp) >= target.getMaxMp())

+ 3 - 1
L2J_DataPack_BETA/data/stats/skills/01000-01099.xml

@@ -377,6 +377,7 @@
 		<set name="aggroPoints" val="#aggro" />
 	</skill>
 	<skill id="1013" levels="32" name="Recharge" enchantGroup1="2" enchantGroup2="2">
+		<table name="#magicLvl"> 28 30 33 35 38 40 42 44 46 48 50 52 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 </table>
 		<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"> 108 107 106 105 104 103 102 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 </table>
 		<table name="#ench2mpInitialConsume"> 27 26 26 26 26 25 25 25 24 24 24 24 23 23 23 23 22 22 22 22 21 21 21 21 20 20 20 20 19 19 </table>
@@ -385,13 +386,14 @@
 		<table name="#mpConsume"> 39 42 45 48 53 56 59 62 65 69 72 75 78 82 83 85 87 88 90 92 93 95 96 98 99 101 102 104 105 106 108 109 </table>
 		<table name="#power"> 49 52 57 60 66 70 73 77 81 86 90 94 98 102 104 106 108 110 113 115 116 118 120 122 124 126 128 129 131 133 134 136 </table>
 		<table name="#aggro"> 268 285 313 331 360 379 399 418 438 457 477 495 514 532 541 549 558 566 574 582 590 597 604 611 617 624 630 635 641 646 650 655 </table>
+		<set name="magicLvl" val="#magicLvl" />
 		<set name="mpInitialConsume" val="#mpInitialConsume" />
 		<set name="mpConsume" val="#mpConsume" />
 		<set name="power" val="#power" />
 		<set name="target" val="TARGET_ONE" />
 		<set name="reuseDelay" val="3000" />
 		<set name="hitTime" val="6000" />
-		<set name="skillType" val="MANARECHARGE" />
+		<set name="skillType" val="MANA_BY_LEVEL" />
 		<set name="isMagic" val="true" />
 		<set name="operateType" val="OP_ACTIVE" />
 		<set name="castRange" val="400" />

+ 3 - 1
L2J_DataPack_BETA/data/stats/skills/01100-01199.xml

@@ -226,6 +226,7 @@
 		<enchant1 name="npcId" val="#enchantNpcId" />
 	</skill>
 	<skill id="1126" levels="34" name="Servitor Recharge" enchantGroup1="2" enchantGroup2="2">
+		<table name="#magicLvl"> 23 25 28 30 33 35 38 40 42 44 46 48 50 52 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 </table>
 		<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"> 108 107 106 105 104 103 102 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 </table>
 		<table name="#ench2mpInitialConsume"> 27 26 26 26 26 25 25 25 24 24 24 24 23 23 23 23 22 22 22 22 21 21 21 21 20 20 20 20 19 19 </table>
@@ -234,13 +235,14 @@
 		<table name="#power"> 41 44 49 52 57 60 66 70 73 77 81 86 90 94 98 102 104 106 108 110 113 115 116 118 120 122 124 126 128 129 131 133 134 136 </table>
 		<table name="#ench1Power"> 137 137 138 139 139 140 141 141 142 143 143 144 145 146 146 147 148 148 149 150 150 151 152 152 153 154 154 155 156 156 </table>
 		<table name="#aggroPoints"> 227 243 268 285 313 331 360 379 399 418 438 457 477 495 514 532 541 549 558 566 574 582 590 597 604 611 617 624 630 635 641 646 650 655 </table>
+		<set name="magicLvl" val="#magicLvl" />
 		<set name="mpInitialConsume" val="#mpInitialConsume" />
 		<set name="mpConsume" val="#mpConsume" />
 		<set name="power" val="#power" />
 		<set name="target" val="TARGET_PET" />
 		<set name="reuseDelay" val="3000" />
 		<set name="hitTime" val="4000" />
-		<set name="skillType" val="MANARECHARGE" />
+		<set name="skillType" val="MANA_BY_LEVEL" />
 		<set name="isMagic" val="true" />
 		<set name="operateType" val="OP_ACTIVE" />
 		<set name="castRange" val="400" />

+ 1 - 1
L2J_DataPack_BETA/data/stats/skills/01400-01499.xml

@@ -772,7 +772,7 @@
 		<set name="staticReuse" val="true" />
 		<set name="power" val="1500" />
 		<set name="skillRadius" val="1000" />
-		<set name="skillType" val="MANARECHARGE" />
+		<set name="skillType" val="MANA_BY_LEVEL" />
 		<set name="hitTime" val="5000" />
 		<set name="reuseDelay" val="3600000" />
 		<set name="isMagic" val="true" />

+ 1 - 1
L2J_DataPack_BETA/data/stats/skills/03100-03199.xml

@@ -420,7 +420,7 @@
 		<set name="reuseDelay" val="30000" />
 		<set name="staticReuse" val="true" />
 		<set name="hitTime" val="6000" />
-		<set name="skillType" val="MANARECHARGE" />
+		<set name="skillType" val="MANA_BY_LEVEL" />
 		<set name="operateType" val="OP_ACTIVE" />
 		<set name="castRange" val="400" />
 		<set name="effectRange" val="900" />

+ 1 - 1
L2J_DataPack_BETA/data/stats/skills/04000-04099.xml

@@ -280,7 +280,7 @@
 		<set name="target" val="TARGET_ONE" />
 		<set name="reuseDelay" val="8000" />
 		<set name="hitTime" val="2500" />
-		<set name="skillType" val="MANARECHARGE" />
+		<set name="skillType" val="MANA_BY_LEVEL" />
 		<set name="isMagic" val="true" />
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="operateType" val="OP_ACTIVE" />

+ 1 - 1
L2J_DataPack_BETA/data/stats/skills/05100-05199.xml

@@ -659,7 +659,7 @@
 		<set name="power" val="#power" />
 		<set name="reuseDelay" val="300000" />
 		<set name="target" val="TARGET_SELF" />
-		<set name="skillType" val="MANARECHARGE" />
+		<set name="skillType" val="MANA_BY_LEVEL" />
 		<set name="operateType" val="OP_ACTIVE" />
 		<set name="hitTime" val="6000" />
 		<set name="staticHitTime" val="true" />

+ 1 - 1
L2J_DataPack_BETA/data/stats/skills/05200-05299.xml

@@ -18,7 +18,7 @@
 		<set name="operateType" val="OP_ACTIVE" />
 		<set name="power" val="#power" />
 		<set name="reuseDelay" val="12000" />
-		<set name="skillType" val="MANARECHARGE" />
+		<set name="skillType" val="MANA_BY_LEVEL" />
 		<set name="target" val="TARGET_OWNER_PET" />
 	</skill>
 	<skill id="5201" levels="6" name="Pet Concentration">

+ 1 - 1
L2J_DataPack_BETA/data/stats/skills/05400-05499.xml

@@ -313,7 +313,7 @@
 		<set name="operateType" val="OP_ACTIVE" />
 		<set name="power" val="49" />
 		<set name="reuseDelay" val="10000" />
-		<set name="skillType" val="MANARECHARGE" /> <!-- TODO: Should be by Level -->
+		<set name="skillType" val="MANA_BY_LEVEL" />
 		<set name="target" val="TARGET_SELF" />
 	</skill>
 	<skill id="5430" levels="1" name="Spoil Bomb">

+ 1 - 1
L2J_DataPack_BETA/data/stats/skills/05500-05599.xml

@@ -755,7 +755,7 @@
 		<set name="operateType" val="OP_ACTIVE" />
 		<set name="power" val="10" />
 		<set name="reuseDelay" val="10000" />
-		<set name="skillType" val="MANARECHARGE" />
+		<set name="skillType" val="MANA_BY_LEVEL" />
 		<set name="target" val="TARGET_SELF" />
 	</skill>
 	<skill id="5576" levels="1" name="Enchanter Ability - Barrier">