Quellcode durchsuchen

BETA/STABLE: DP-Part for [L4602].

MELERIX vor 14 Jahren
Ursprung
Commit
09649d2094

+ 9 - 44
L2J_DataPack_BETA/data/scripts/handlers/skillhandlers/Blow.java

@@ -32,7 +32,6 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.skills.BaseStats;
 import com.l2jserver.gameserver.skills.Env;
 import com.l2jserver.gameserver.skills.Formulas;
-import com.l2jserver.gameserver.skills.funcs.Func;
 import com.l2jserver.gameserver.templates.item.L2WeaponType;
 import com.l2jserver.gameserver.templates.skills.L2SkillType;
 
@@ -49,15 +48,13 @@ public class Blow implements ISkillHandler
 	{
 		L2SkillType.BLOW
 	};
-	
-	public final static byte FRONT = 50;
-	public final static byte SIDE = 60;
-	public final static byte BEHIND = 70;
+
 	
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
 		if (activeChar.isAlikeDead())
 			return;
+		
 		for (L2Character target: (L2Character[]) targets)
 		{
 			if (target.isAlikeDead())
@@ -66,22 +63,7 @@ public class Blow implements ISkillHandler
 			// Check firstly if target dodges skill
 			final boolean skillIsEvaded = Formulas.calcPhysicalSkillEvasion(target, skill);
 			
-			byte _successChance = SIDE;
-			
-			if (activeChar.isBehindTarget())
-				_successChance = BEHIND;
-			else if (activeChar.isInFrontOfTarget())
-				_successChance = FRONT;
-			
-			
-			//If skill requires Crit or skill requires behind,
-			//calculate chance based on DEX, Position and on self BUFF
-			boolean success = true;
-			if ((skill.getCondition() & L2Skill.COND_BEHIND) != 0)
-				success = (_successChance == BEHIND);
-			if ((skill.getCondition() & L2Skill.COND_CRIT) != 0)
-				success = (success && Formulas.calcBlow(activeChar, target, _successChance));
-			if (!skillIsEvaded && success)
+			if (!skillIsEvaded && Formulas.calcBlowSuccess(activeChar, target, skill))
 			{
 				final byte reflect = Formulas.calcSkillReflect(target, skill);
 				
@@ -115,14 +97,11 @@ public class Blow implements ISkillHandler
 						}
 					}
 				}
+				
 				L2ItemInstance weapon = activeChar.getActiveWeaponInstance();
 				boolean soul = (weapon != null && weapon.getChargedSoulshot() == L2ItemInstance.CHARGED_SOULSHOT && (weapon.getItemType() == L2WeaponType.DAGGER || weapon.getItemType() == L2WeaponType.DUALDAGGER || weapon.getItemType() == L2WeaponType.RAPIER));
 				byte shld = Formulas.calcShldUse(activeChar, target, skill);
 				
-				// Crit rate base crit rate for skill, modified with STR bonus
-				boolean crit = false;
-				if (Formulas.calcCrit(skill.getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), target))
-					crit = true;
 				double damage = (int) Formulas.calcBlowDamage(activeChar, target, skill, shld, soul);
 				if (skill.getMaxSoulConsumeCount() > 0 && activeChar instanceof L2PcInstance)
 				{
@@ -147,26 +126,10 @@ public class Blow implements ISkillHandler
 							break;
 					}
 				}
-				if (crit)
-				{
+				
+				// Crit rate base crit rate for skill, modified with STR bonus
+				if (Formulas.calcCrit(skill.getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), target))
 					damage *= 2;
-					// Vicious Stance is special after C5, and only for BLOW skills
-					// Adds directly to damage
-					L2Effect vicious = activeChar.getFirstEffect(312);
-					if (vicious != null && damage > 1)
-					{
-						for (Func func : vicious.getStatFuncs())
-						{
-							Env env = new Env();
-							env.player = activeChar;
-							env.target = target;
-							env.skill = skill;
-							env.value = damage;
-							func.calc(env);
-							damage = (int) env.value;
-						}
-					}
-				}
 				
 				if (soul)
 					weapon.setChargedSoulshot(L2ItemInstance.CHARGED_NONE);
@@ -248,6 +211,8 @@ public class Blow implements ISkillHandler
 			}
 		}
 	}
+
+	
 	
 	public L2SkillType[] getSkillIds()
 	{

+ 2 - 0
L2J_DataPack_BETA/data/stats/skills/00000-00099.xml

@@ -428,6 +428,7 @@
 		<table name="#mpConsume"> 8 8 9 10 11 11 14 15 15 18 18 18 19 20 21 22 23 24 26 26 26 28 29 30 </table>
 		<table name="#power"> 73 80 88 115 126 137 178 193 210 268 291 314 367 396 427 494 531 571 656 703 752 859 916 977 </table>
 		<table name="#magicLvl"> 3 4 5 8 9 10 13 14 15 18 19 20 22 23 24 26 27 28 30 31 32 34 35 36 </table>
+		<set name="blowChance" val="20" />
 		<set name="weaponsAllowed" val="Dagger" /> <!-- Dagger -->
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="mpConsume" val="#mpConsume" />
@@ -770,6 +771,7 @@
 		<table name="#enchElementPower"> 11 12 14 15 16 18 19 20 22 23 24 26 27 28 30 31 32 34 35 36 38 39 40 42 43 44 46 47 48 50 </table>
 		<table name="#enchDuel"> 5552 5624 5697 5769 5842 5914 5987 6059 6132 6204 6277 6350 6422 6495 6567 6640 6712 6785 6857 6930 7002 7075 7147 7220 7292 7365 7437 7510 7583 7655 </table>
 		<set name="baseCritRate" val="#baseCritLethal" />
+		<set name="blowChance" val="40" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="24" /> <!-- Behind/Crit -->
 		<set name="coolTime" val="720" />

+ 1 - 0
L2J_DataPack_BETA/data/stats/skills/00200-00299.xml

@@ -1381,6 +1381,7 @@
 		<table name="#ench2Power"> 5504 5529 5554 5579 5604 5629 5654 5680 5705 5730 5755 5780 5805 5830 5855 5880 5905 5930 5955 5980 6005 6030 6055 6080 6105 6130 6156 6180 6206 6231 </table>
 		<table name="#enchDuel"> 5608 5737 5866 5995 6124 6253 6382 6511 6640 6769 6898 7027 7157 7286 7415 7544 7673 7802 7931 8060 8189 8318 8447 8576 8705 8834 8963 9092 9221 9350 </table>
 		<table name="#enchElementPower"> 2 4 5 7 9 10 12 14 15 17 18 20 22 23 25 27 28 30 32 33 35 36 38 40 41 43 45 46 48 50 </table>
+		<set name="blowChance" val="30" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="coolTime" val="720" />

+ 2 - 0
L2J_DataPack_BETA/data/stats/skills/00300-00399.xml

@@ -669,6 +669,7 @@
 		<table name="#mpConsume"> 63 64 65 66 67 68 69 70 71 72 </table>
 		<table name="#magicLvl"> 65 66 67 68 69 70 71 72 73 74 </table>
 		<table name="#power"> 2751 2850 2950 3050 3151 3252 3353 3453 3553 3653 </table>
+		<set name="blowChance" val="25" />
 		<set name="weaponsAllowed" val="Dagger, Dual Dagger" /> <!-- Dagger/Dual Daggers -->
 		<set name="mpConsume" val="#mpConsume" />
 		<set name="magicLvl" val="#magicLvl" />
@@ -1209,6 +1210,7 @@
 		<table name="#enchelementPower"> 3 6 10 13 16 20 23 26 30 33 36 40 43 46 50 </table>
 		<table name="#ench7Duel"> 5880 5986 6092 6198 6304 6410 6516 6622 6728 6834 6940 7046 7152 7258 7364 </table>
 		<set name="baseCritRate" val="20" />
+		<set name="blowChance" val="30" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="effectRange" val="400" />

+ 1 - 0
L2J_DataPack_BETA/data/stats/skills/00400-00499.xml

@@ -477,6 +477,7 @@
 		<table name="#ench2MpConsume"> 70 69 68 67 66 64 63 62 61 60 58 57 56 55 54 52 51 50 49 48 46 45 44 43 42 40 39 38 37 36 </table>
 		<table name="#enchElementPower"> 1 3 5 6 8 10 11 13 15 16 18 20 21 23 25 26 28 30 31 33 35 36 38 40 41 43 45 46 48 50 </table>
 		<table name="#enchDuel"> 3716 3780 3844 3908 3972 4036 4099 4163 4227 4291 4355 4419 4482 4546 4610 4674 4738 4802 4865 4929 4993 5057 5121 5185 5248 5312 5376 5440 5504 5568 </table>
+		<set name="blowChance" val="25" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="coolTime" val="700" />

+ 2 - 0
L2J_DataPack_BETA/data/stats/skills/00500-00599.xml

@@ -178,6 +178,7 @@
 		<table name="#power"> 1853 1953 2057 2164 2274 2388 2505 2625 2748 2875 3004 3136 3271 3408 3548 3690 3834 3980 4127 4275 4425 4575 4726 4878 5029 5180 5330 5479 </table>
 		<table name="#magicLvl"> 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 </table>
 		<table name="#enchDuel"> 5574 5670 5766 5862 5957 6053 6149 6245 6340 6436 6532 6628 6723 6819 6915 7011 7107 7202 7298 7394 7490 7585 7681 7777 7873 7968 8064 8160 8256 8352 </table>
+		<set name="blowChance" val="20" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="coolTime" val="300" />
@@ -1973,6 +1974,7 @@
 		<table name="#magicLvl"> 60 63 66 69 </table>
 		<table name="#power"> 3749 4217 4703 5199 </table>
 		<table name="#mpConsume"> 61 63 67 70 </table>
+		<set name="blowChance" val="20" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="lethal1" val="10" /> <!-- Half-Kill -->
 		<set name="mpConsume" val="#mpConsume" />

+ 1 - 0
L2J_DataPack_BETA/data/stats/skills/00600-00699.xml

@@ -1571,6 +1571,7 @@
 		</for>
 	</skill>
 	<skill id="689" levels="1" name="Divine Rogue Deadly Blow">
+		<set name="blowChance" val="20" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="effectRange" val="400" />

+ 2 - 1
L2J_DataPack_BETA/data/stats/skills/00900-00999.xml

@@ -510,7 +510,8 @@
 	</skill>
 	<skill id="928" levels="1" name="Dual Blow">
 		<!-- H5 Skill -->
-		<set name="baseCritRate" val="10" />
+		<set name="baseCritRate" val="20" />
+		<set name="blowChance" val="40" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="effectRange" val="400" />

+ 1 - 0
L2J_DataPack_BETA/data/stats/skills/01500-01599.xml

@@ -1352,6 +1352,7 @@
 	<skill id="1560" levels="1" name="Lucky Blow">
 		<!-- H5 Skill -->
 		<set name="baseCritRate" val="15" /> <!-- Guess -->
+		<set name="blowChance" val="20" /> <!-- Guess -->
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="effectRange" val="400" />

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

@@ -998,6 +998,7 @@
 		<!-- Freya retail confirmed -->
 		<table name="#power"> 137 314 656 1249 2164 3408 4878 5627 6335 6960 7461 7850 </table>
 		<table name="#magicLvl"> 10 20 30 40 50 60 70 75 80 85 90 95 </table>
+		<set name="blowChance" val="20" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="power" val="#power" />

+ 2 - 0
L2J_DataPack_BETA/data/stats/skills/04100-04199.xml

@@ -1225,6 +1225,7 @@
 		<!-- Freya retail confirmed -->
 		<table name="#power"> 181 487 1339 3507 8825 17057 26195 30391 34864 39544 44350 49193 </table>
 		<table name="#magicLvl"> 14 24 34 44 54 64 74 79 84 89 94 99 </table>
+		<set name="blowChance" val="115" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="power" val="#power" />
@@ -1422,6 +1423,7 @@
 		<!-- Freya retail confirmed -->
 		<table name="#power"> 301 812 2231 5844 14708 28428 43658 50651 58107 65907 73917 81989 </table>
 		<table name="#magicLvl"> 14 24 34 44 54 64 74 79 84 89 94 99 </table>
+		<set name="blowChance" val="67" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="power" val="#power" />

+ 5 - 3
L2J_DataPack_BETA/data/stats/skills/04500-04599.xml

@@ -1140,21 +1140,23 @@
 		<table name="#damage"> 27 39 51 66 81 93 102 102 105 105 108 108 </table>
 		<table name="#magicLvl"> 10 20 30 40 50 60 70 75 80 85 90 95 </table>
 		<table name="#abnormalLvl"> 2 3 4 5 6 7 8 8 9 9 10 10 </table>
+		<table name="#power"> 137 314 656 1249 2164 3408 4878 5627 6335 6960 7461 7850 </table>
+		<set name="blowChance" val="20" />
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="lvlDepend" val="2" />
 		<set name="mpConsume" val="#mpConsume" />
-		<set name="power" val="100" /> <!-- Base Land Rate -->
+		<set name="power" val="#power" />
 		<set name="target" val="TARGET_ONE" />
 		<set name="reuseDelay" val="6000" />
 		<set name="hitTime" val="1800" />
 		<set name="saveVs" val="CON" />
-		<set name="skillType" val="BLEED" />
+		<set name="skillType" val="BLOW" />
 		<set name="isDebuff" val="true" />
 		<set name="operateType" val="OP_ACTIVE" />
 		<set name="castRange" val="40" />
 		<set name="effectRange" val="200" />
 		<for>
-			<effect count="7" name="DamOverTime" abnormalTime="3" val="#damage" abnormalLvl="#abnormalLvl" abnormalType="bleeding" abnormal="bleed">
+			<effect count="7" name="DamOverTime" abnormalTime="3" val="#damage" abnormalLvl="#abnormalLvl" abnormalType="bleeding" abnormal="bleed" effectType="BLEED" effectPower="100">
 				<mul order="0x30" stat="runSpd" val="0.8" />
 			</effect>
 		</for>

+ 12 - 0
L2J_DataPack_BETA/data/stats/skills/04700-04799.xml

@@ -211,6 +211,8 @@
 		<table name="#magicLvl"> 58 62 66 70 72 74 76 78 79 80 </table>
 		<table name="#mpConsume"> 58 62 67 71 73 75 77 78 79 80 </table>
 		<table name="#power"> 4181 4920 5700 6503 6906 7305 7698 8079 8265 8447 </table>
+		<set name="baseCritRate" val="10" />
+		<set name="blowChance" val="20" />
 		<set name="mpConsume" val="#mpConsume" />
 		<set name="power" val="#power" />
 		<set name="target" val="TARGET_ONE" />
@@ -541,6 +543,7 @@
 		<table name="#magicLvl"> 14 24 34 44 54 64 75 79 84 89 94 99 </table>
 		<table name="#mpConsume"> 16 23 32 42 53 65 75 79 82 84 85 87 </table>
 		<table name="#power"> 168 453 1251 3265 7446 16511 25566 30178 34864 39544 44350 49193 </table>
+		<set name="blowChance" val="115" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="coolTime" val="660" />
@@ -558,6 +561,7 @@
 		<table name="#magicLvl"> 14 24 34 44 54 64 75 79 84 89 94 99 </table>
 		<table name="#mpConsume"> 16 23 32 42 53 65 75 79 82 84 85 87 </table>
 		<table name="#power"> 142 382 1056 2760 7131 13935 21585 25467 29565 34048 38806 43290 </table>
+		<set name="blowChance" val="115" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="coolTime" val="660" />
@@ -575,6 +579,7 @@
 		<table name="#magicLvl"> 14 24 34 44 54 64 75 79 84 89 94 99 </table>
 		<table name="#mpConsume"> 16 23 32 42 53 65 75 79 82 84 85 87 </table>
 		<table name="#power"> 76 204 563 1473 3804 7437 11500 13555 15724 18112 20667 23023 </table>
+		<set name="blowChance" val="115" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="coolTime" val="660" />
@@ -592,6 +597,7 @@
 		<table name="#magicLvl"> 14 24 34 44 54 64 75 79 84 89 94 99 </table>
 		<table name="#mpConsume"> 16 23 32 42 53 65 75 79 82 84 85 87 </table>
 		<table name="#power"> 71 191 528 1382 3566 6977 10793 12734 14783 17044 19381 21645 </table>
+		<set name="blowChance" val="115" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="coolTime" val="660" />
@@ -609,6 +615,7 @@
 		<table name="#magicLvl"> 14 24 34 44 54 64 75 79 84 89 94 99 </table>
 		<table name="#mpConsume"> 16 23 32 42 53 65 75 79 82 84 85 87 </table>
 		<table name="#power"> 67 179 494 1287 3327 6516 10085 11913 13841 15937 18140 20268 </table>
+		<set name="blowChance" val="115" />
 		<set name="castRange" val="40" />
 		<set name="condition" val="16" /> <!-- Crit -->
 		<set name="coolTime" val="660" />
@@ -881,6 +888,7 @@
 		<table name="#magicLvl"> 14 24 34 44 54 64 75 79 84 89 94 99 </table>
 		<table name="#mpConsume"> 16 23 32 42 53 65 75 79 82 84 85 87 </table>
 		<table name="#power"> 280 755 2084 5441 14076 27518 42610 50296 58107 65907 73917 81989 </table>
+		<set name="blowChance" val="67" />
 		<set name="castRange" val="40" />
 		<set name="coolTime" val="660" />
 		<set name="condition" val="16" /> <!-- Crit -->
@@ -898,6 +906,7 @@
 		<table name="#magicLvl"> 14 24 34 44 54 64 75 79 84 89 94 99 </table>
 		<table name="#mpConsume"> 16 23 32 42 53 65 75 79 82 84 85 87 </table>
 		<table name="#power"> 236 637 1761 4600 11884 23226 35974 42445 49275 56746 64677 72150 </table>
+		<set name="blowChance" val="67" />
 		<set name="castRange" val="40" />
 		<set name="coolTime" val="660" />
 		<set name="condition" val="16" /> <!-- Crit -->
@@ -915,6 +924,7 @@
 		<table name="#magicLvl"> 14 24 34 44 54 64 75 79 84 89 94 99 </table>
 		<table name="#mpConsume"> 16 23 32 42 53 65 75 79 82 84 85 87 </table>
 		<table name="#power"> 126 339 937 2455 6339 12395 19166 22591 26206 30185 34445 38371 </table>
+		<set name="blowChance" val="67" />
 		<set name="castRange" val="40" />
 		<set name="coolTime" val="660" />
 		<set name="condition" val="16" /> <!-- Crit -->
@@ -932,6 +942,7 @@
 		<table name="#magicLvl"> 14 24 34 44 54 64 75 79 84 89 94 99 </table>
 		<table name="#mpConsume"> 16 23 32 42 53 65 75 79 82 84 85 87 </table>
 		<table name="#power"> 118 319 879 2303 5942 11627 17987 21223 24638 28406 32302 36075 </table>
+		<set name="blowChance" val="67" />
 		<set name="castRange" val="40" />
 		<set name="coolTime" val="660" />
 		<set name="condition" val="16" /> <!-- Crit -->
@@ -949,6 +960,7 @@
 		<table name="#magicLvl"> 14 24 34 44 54 64 75 79 84 89 94 99 </table>
 		<table name="#mpConsume"> 16 23 32 42 53 65 75 79 82 84 85 87 </table>
 		<table name="#power"> 111 298 824 2145 5545 10860 16808 19855 23069 26561 30232 33780 </table>
+		<set name="blowChance" val="67" />
 		<set name="castRange" val="40" />
 		<set name="coolTime" val="660" />
 		<set name="condition" val="16" /> <!-- Crit -->

+ 6 - 2
L2J_DataPack_BETA/data/stats/skills/05000-05099.xml

@@ -624,6 +624,7 @@
 		<set name="hitTime" val="4000" />
 	</skill>
 	<skill id="5049" levels="12" name="Castle Blow">
+		<set name="blowChance" val="20" />
 		<set name="target" val="TARGET_NONE" />
 		<set name="skillType" val="NOTDONE" />
 		<set name="reuseDelay" val="6000" />
@@ -956,13 +957,15 @@
 	</skill>
 	<skill id="5081" levels="4" name="Silence">
 		<table name="#mpConsume"> 75 75 75 20 </table>
+		<table name="#power"> 1715 3540 7306 8602 </table>
+		<set name="blowChance" val="20" />
 		<set name="mpConsume" val="#mpConsume" />
 		<set name="magicLvl" val="80" />
-		<set name="power" val="40" />
+		<set name="power" val="#power" />
 		<set name="target" val="TARGET_ONE" />
 		<set name="hitTime" val="1500" />
 		<set name="coolTime" val="800" />
-		<set name="skillType" val="DEBUFF" />
+		<set name="skillType" val="BLOW" />
 		<set name="operateType" val="OP_ACTIVE" />
 		<set name="isDebuff" val="true" />
 		<set name="castRange" val="40" />
@@ -1003,6 +1006,7 @@
 		</for>
 	</skill>
 	<skill id="5084" levels="4" name="NPC Blinding Blow">
+		<set name="blowChance" val="15" />
 		<set name="magicLvl" val="80" />
 		<set name="mpConsume" val="83" />
 		<set name="condition" val="16" /> <!-- Crit -->

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

@@ -558,6 +558,7 @@
 	</skill>
 	<skill id="5143" levels="1" name="Sailren Use Blow">
 		<!-- Confirmed CT2.5 -->
+		<set name="blowChance" val="115" />
 		<set name="magicLvl" val="89" />
 		<set name="mpConsume" val="84" />
 		<set name="condition" val="16" /> <!-- Crit -->

+ 1 - 0
L2J_DataPack_BETA/data/stats/skills/06000-06099.xml

@@ -756,6 +756,7 @@
 		<!-- Confirmed CT2.5 -->
 		<table name="#magicLvl"> 60 64 68 72 76 78 79 80 81 82 83 84 85 </table>
 		<table name="#power"> 3408 3980 4575 5180 5773 6060 6199 6335 6468 6598 6723 6844 6960 </table>
+		<set name="blowChance" val="20" />
 		<set name="castRange" val="40" />
 		<set name="coolTime" val="720" />
 		<set name="effectRange" val="400" />