rendered paste bodyIndex: D:/Source/trunk/L2_Gameserver/java/net/sf/l2j/gameserver/skills/Formulas.java
===================================================================
--- D:/Source/trunk/L2_Gameserver/java/net/sf/l2j/gameserver/skills/Formulas.java (revision 2220)
+++ D:/Source/trunk/L2_Gameserver/java/net/sf/l2j/gameserver/skills/Formulas.java (working copy)
@@ -1146,13 +1146,14 @@
{
case STUN:
// For normal Stun Attack, with skillType = STUN
- pAtk = player.getPAtk(target);
- pDef = target.getPDef(player);
- pDef = target.calcStat(Stats.STUN_RES,pDef,target,null);
- value = 30 * 100 + (int)(70 * 100 * ((float)skill.getLevel()/maxLevel));
- if (pDef > 0 && pAtk > 0)
- value *= 0.6 * pAtk/pDef;
- modifier = 100 * target.getCON()/30;
+ int basechance = 80;
+ int perLevelBonus = 2;
+ pDef = target.calcStat(Stats.STUN_RES,0,target,null);
+ value = 750 * (basechance + perLevelBonus * skill.getLevel());
+ modifier = target.getLevel()*(target.getCON() + pDef);
+ // CHANCE to stun gets no modifier from shots, whatsoever.
+ //stun+damage skills get a modifier in the damage part ONLY.
+ ssmodifier = 1;
break;
case CONFUSION:
mAtk = player.getMAtk(target, skill);
@@ -1203,18 +1204,17 @@
modifier = 100 * target.getDEX()/30;
break;
default:
- // For normal Stun attack with skillType = PDAM
- pAtk = (int)skill.getPower();
- pDef = target.getPDef(player);
- pDef = target.calcStat(Stats.STUN_RES,pDef,target,null);
-// value = 30 * 100 + (int)(70 * 100 * ((float)skill.getLevel()/maxLevel));
- value = 100 * 100;
- if (pDef > 0 && pAtk > 0)
- value *= 0.6 * pAtk/pDef;
- modifier = 100 * target.getCON()/30;
- break;
+ basechance = 50;
+ perLevelBonus = 1;
+ pDef = target.calcStat(Stats.STUN_RES,0,target,null);
+ value = 750 * (basechance + perLevelBonus * skill.getLevel());
+ modifier = target.getLevel()*(target.getCON() + pDef);
+ //CHANCE to stun gets no modifier from shots, whatsoever.
+ //stun+damage skills get a modifier in the damage part ONLY.
+ ssmodifier = 1;
+ break;
}
-
+
if (modifier == 0)
{
_log.warning("Name: "+target.getName()+" has bad base stat value. Fix datapack or notify dp ppl");
Index: D:/Source/trunk/L2_Gameserver/java/net/sf/l2j/gameserver/ai/L2CharacterAI.java
===================================================================
--- D:/Source/trunk/L2_Gameserver/java/net/sf/l2j/gameserver/ai/L2CharacterAI.java (revision 2220)
+++ D:/Source/trunk/L2_Gameserver/java/net/sf/l2j/gameserver/ai/L2CharacterAI.java (working copy)
@@ -1051,13 +1051,20 @@
*
* @param target The targeted L2Object
*
- * @return True if the target is lost or dead
+ * @return True if the target is lost or dead (false if fakedeath)
*
*/
protected boolean checkTargetLostOrDead(L2Character target)
{
if (target == null || target.isAlikeDead())
{
+ //check if player is fakedeath
+ if (target.isFakeDeath())
+ {
+ target.stopFakeDeath(null);
+ return false;
+ }
+
// Stop the actor auto-attack client side by sending Server->Client packet AutoAttackStop (broadcast)
clientStopAutoAttack();
@@ -1102,6 +1109,17 @@
*/
protected boolean checkTargetLost(L2Object target)
{
+ // check if player is fakedeath
+ if (target instanceof L2PcInstance)
+ {
+ L2PcInstance target2 = (L2PcInstance)target; //convert object to chara
+
+ if (target2.isFakeDeath())
+ {
+ target2.stopFakeDeath(null);
+ return false;
+ }
+ }
if (target == null)
{
/*