Explorar el Código

BETA: Core part for [DP9824].
Reviewed by: MELERIX, Nos, UnAfraid, Zoey76

Adry_85 hace 12 años
padre
commit
e3355655a3

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/ai/L2CharacterAI.java

@@ -1196,7 +1196,7 @@ public class L2CharacterAI extends AbstractAI
 			setIntention(AI_INTENTION_ACTIVE);
 			return true;
 		}
-		if ((_actor != null) && (_skill != null) && _skill.isOffensive() && (_skill.getAffectRange() > 0) && (Config.GEODATA > 0) && !GeoData.getInstance().canSeeTarget(_actor, target))
+		if ((_actor != null) && (_skill != null) && _skill.isBad() && (_skill.getAffectRange() > 0) && (Config.GEODATA > 0) && !GeoData.getInstance().canSeeTarget(_actor, target))
 		{
 			setIntention(AI_INTENTION_ACTIVE);
 			return true;

+ 2 - 11
L2J_Server_BETA/java/com/l2jserver/gameserver/ai/L2PlayableAI.java

@@ -85,7 +85,7 @@ public abstract class L2PlayableAI extends L2CharacterAI
 	@Override
 	protected void onIntentionCast(L2Skill skill, L2Object target)
 	{
-		if ((target instanceof L2Playable) && skill.isOffensive())
+		if ((target instanceof L2Playable) && skill.isBad())
 		{
 			if (target.getActingPlayer().isProtectionBlessingAffected() && ((_actor.getActingPlayer().getLevel() - target.getActingPlayer().getLevel()) >= 10) && (_actor.getActingPlayer().getKarma() > 0) && !target.isInsideZone(ZoneId.PVP))
 			{
@@ -107,15 +107,7 @@ public abstract class L2PlayableAI extends L2CharacterAI
 				return;
 			}
 			
-			if (target.getActingPlayer().isCursedWeaponEquipped() && (_actor.getActingPlayer().getLevel() <= 20))
-			{
-				_actor.getActingPlayer().sendPacket(SystemMessageId.TARGET_IS_INCORRECT);
-				clientActionFailed();
-				_actor.setIsCastingNow(false);
-				return;
-			}
-			
-			if (_actor.getActingPlayer().isCursedWeaponEquipped() && (target.getActingPlayer().getLevel() <= 20))
+			if (target.getActingPlayer().isCursedWeaponEquipped() && ((_actor.getActingPlayer().getLevel() <= 20) || (target.getActingPlayer().getLevel() <= 20)))
 			{
 				_actor.getActingPlayer().sendPacket(SystemMessageId.TARGET_IS_INCORRECT);
 				clientActionFailed();
@@ -123,7 +115,6 @@ public abstract class L2PlayableAI extends L2CharacterAI
 				return;
 			}
 		}
-		
 		super.onIntentionCast(skill, target);
 	}
 	

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/ai/L2PlayerAI.java

@@ -68,7 +68,7 @@ public class L2PlayerAI extends L2PlayableAI
 	{
 		// do nothing unless CAST intention
 		// however, forget interrupted actions when starting to use an offensive skill
-		if ((intention != AI_INTENTION_CAST) || ((arg0 != null) && ((L2Skill) arg0).isOffensive()))
+		if ((intention != AI_INTENTION_CAST) || ((arg0 != null) && ((L2Skill) arg0).isBad()))
 		{
 			_nextIntention = null;
 			super.changeIntention(intention, arg0, arg1);
@@ -258,7 +258,7 @@ public class L2PlayerAI extends L2PlayableAI
 		{
 			if (checkTargetLost(target))
 			{
-				if (_skill.isOffensive() && (getAttackTarget() != null))
+				if (_skill.isBad() && (getAttackTarget() != null))
 				{
 					// Notify the target
 					setCastTarget(null);

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/ChanceSkillList.java

@@ -93,7 +93,7 @@ public class ChanceSkillList extends FastMap<IChanceSkillTrigger, ChanceConditio
 		if (ownerWasHit)
 		{
 			event = ChanceCondition.EVT_HIT_BY_SKILL;
-			if (skill.isOffensive())
+			if (skill.isBad())
 			{
 				event |= ChanceCondition.EVT_HIT_BY_OFFENSIVE_SKILL;
 				event |= ChanceCondition.EVT_ATTACKED;
@@ -108,7 +108,7 @@ public class ChanceSkillList extends FastMap<IChanceSkillTrigger, ChanceConditio
 		{
 			event = ChanceCondition.EVT_CAST;
 			event |= skill.isMagic() ? ChanceCondition.EVT_MAGIC : ChanceCondition.EVT_PHYSICAL;
-			event |= skill.isOffensive() ? ChanceCondition.EVT_MAGIC_OFFENSIVE : ChanceCondition.EVT_MAGIC_GOOD;
+			event |= skill.isBad() ? ChanceCondition.EVT_MAGIC_OFFENSIVE : ChanceCondition.EVT_MAGIC_GOOD;
 		}
 		
 		onEvent(event, 0, target, skill, skill.getElement());

+ 11 - 11
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java

@@ -6021,7 +6021,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder
 	}
 	
 	/**
-	 * Manage the magic skill launching task (MP, HP, Item consummation...) and display the magic skill animation on client.<br>
+	 * Manage the magic skill launching task (MP, HP, Item consumation...) and display the magic skill animation on client.<br>
 	 * <B><U>Actions</U>:</B>
 	 * <ul>
 	 * <li>Send a Server->Client packet MagicSkillLaunched (to display magic skill animation) to all L2PcInstance of L2Charcater _knownPlayers</li>
@@ -6092,7 +6092,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder
 						_skipgeo++;
 						continue;
 					}
-					if (skill.isOffensive())
+					if (skill.isBad())
 					{
 						if (isPlayer())
 						{
@@ -6393,7 +6393,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder
 				getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
 			}
 		}
-		if (skill.isOffensive() && !(skill.getSkillType() == L2SkillType.UNLOCK) && !(skill.getSkillType() == L2SkillType.DELUXE_KEY_UNLOCK))
+		if (skill.isBad() && !(skill.getSkillType() == L2SkillType.UNLOCK) && !(skill.getSkillType() == L2SkillType.DELUXE_KEY_UNLOCK))
 		{
 			getAI().clientStartAutoAttack();
 		}
@@ -6571,10 +6571,10 @@ public abstract class L2Character extends L2Object implements ISkillsHolder
 						targetsAttackTarget = target.getAI().getAttackTarget();
 						targetsCastTarget = target.getAI().getCastTarget();
 					}
-					if (!Config.RAID_DISABLE_CURSE && ((target.isRaid() && target.giveRaidCurse() && (getLevel() > (target.getLevel() + 8))) || (!skill.isOffensive() && (targetsAttackTarget != null) && targetsAttackTarget.isRaid() && targetsAttackTarget.giveRaidCurse() && targetsAttackTarget.getAttackByList().contains(target) // has
-																																																																																		// attacked
-																																																																																		// raid
-					&& (getLevel() > (targetsAttackTarget.getLevel() + 8))) || (!skill.isOffensive() && (targetsCastTarget != null) && targetsCastTarget.isRaid() && targetsCastTarget.giveRaidCurse() && targetsCastTarget.getAttackByList().contains(target) // has attacked raid
+					if (!Config.RAID_DISABLE_CURSE && ((target.isRaid() && target.giveRaidCurse() && (getLevel() > (target.getLevel() + 8))) || (!skill.isBad() && (targetsAttackTarget != null) && targetsAttackTarget.isRaid() && targetsAttackTarget.giveRaidCurse() && targetsAttackTarget.getAttackByList().contains(target) // has
+																																																																																	// attacked
+																																																																																	// raid
+					&& (getLevel() > (targetsAttackTarget.getLevel() + 8))) || (!skill.isBad() && (targetsCastTarget != null) && targetsCastTarget.isRaid() && targetsCastTarget.giveRaidCurse() && targetsCastTarget.getAttackByList().contains(target) // has attacked raid
 					&& (getLevel() > (targetsCastTarget.getLevel() + 8)))))
 					{
 						if (skill.isMagic())
@@ -6679,12 +6679,12 @@ public abstract class L2Character extends L2Object implements ISkillsHolder
 					// EVT_ATTACKED and PvPStatus
 					if (target instanceof L2Character)
 					{
-						if (skill.isBad())
+						if (skill.getEffectPoint() <= 0)
 						{
 							if (target.isPlayer() || target.isSummon() || target.isTrap())
 							{
-								// Signets are a special case, casted on target_self but don't harm self
-								if ((skill.getSkillType() != L2SkillType.SIGNET) && (skill.getSkillType() != L2SkillType.SIGNET_CASTTIME))
+								// Casted on target_self but don't harm self
+								if (!target.equals(this))
 								{
 									if (target.isPlayer())
 									{
@@ -6761,7 +6761,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder
 				}
 			}
 			// Notify AI
-			if (skill.isOffensive() && !skill.hasEffectType(L2EffectType.HATE))
+			if (skill.isBad() && !skill.hasEffectType(L2EffectType.HATE))
 			{
 				for (L2Object target : targets)
 				{

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Summon.java

@@ -685,8 +685,8 @@ public abstract class L2Summon extends L2Playable
 			return false;
 		}
 		
-		// Check if this is offensive magic skill
-		if (skill.isOffensive())
+		// Check if this is bad magic skill
+		if (skill.isBad())
 		{
 			if (getOwner() == target)
 			{

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2CubicInstance.java

@@ -634,7 +634,7 @@ public final class L2CubicInstance
 				continue;
 			}
 			
-			if (skill.isOffensive())
+			if (skill.isBad())
 			{
 				byte shld = Formulas.calcShldUse(activeCubic.getOwner(), target, skill);
 				boolean acted = Formulas.calcCubicSkillSuccess(activeCubic, target, skill, shld);

+ 5 - 20
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -9077,8 +9077,8 @@ public final class L2PcInstance extends L2Playable
 		
 		// ************************************* Check Skill Type *******************************************
 		
-		// Check if this is offensive magic skill
-		if (skill.isOffensive())
+		// Check if this is bad magic skill
+		if (skill.isBad())
 		{
 			if ((isInsidePeaceZone(this, target)) && !getAccessLevel().allowPeaceAttack())
 			{
@@ -9197,7 +9197,7 @@ public final class L2PcInstance extends L2Playable
 			}
 		}
 		// Check if the skill is a good magic, target is a monster and if force attack is set, if not then we don't want to cast.
-		if (!skill.isBad() && target.isMonster() && !forceUse)
+		if ((skill.getEffectPoint() > 0) && target.isMonster() && !forceUse)
 		{
 			sendPacket(ActionFailed.STATIC_PACKET);
 			return false;
@@ -9381,27 +9381,13 @@ public final class L2PcInstance extends L2Playable
 		{
 			SkillUseHolder skilldat = getCurrentSkill();
 			SkillUseHolder skilldatpet = getCurrentPetSkill();
-			if (skill.isPVP())
+			if (((skilldat != null) && !skilldat.isCtrlPressed() && skill.isBad() && !srcIsSummon) || ((skilldatpet != null) && !skilldatpet.isCtrlPressed() && skill.isBad() && srcIsSummon))
 			{
 				if ((getClan() != null) && (targetPlayer.getClan() != null))
 				{
 					if (getClan().isAtWarWith(targetPlayer.getClan().getClanId()) && targetPlayer.getClan().isAtWarWith(getClan().getClanId()))
 					{
-						return true; // in clan war player can attack whites even with sleep etc.
-					}
-				}
-				if ((targetPlayer.getPvpFlag() == 0) && (targetPlayer.getKarma() == 0))
-				{
-					return false;
-				}
-			}
-			else if (((skilldat != null) && !skilldat.isCtrlPressed() && skill.isOffensive() && !srcIsSummon) || ((skilldatpet != null) && !skilldatpet.isCtrlPressed() && skill.isOffensive() && srcIsSummon))
-			{
-				if ((getClan() != null) && (targetPlayer.getClan() != null))
-				{
-					if (getClan().isAtWarWith(targetPlayer.getClan().getClanId()) && targetPlayer.getClan().isAtWarWith(getClan().getClanId()))
-					{
-						return true; // in clan war player can attack whites even without ctrl
+						return true;
 					}
 				}
 				if ((targetPlayer.getPvpFlag() == 0) && (targetPlayer.getKarma() == 0))
@@ -9410,7 +9396,6 @@ public final class L2PcInstance extends L2Playable
 				}
 			}
 		}
-		
 		return true;
 	}
 	

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/effects/L2Effect.java

@@ -425,7 +425,7 @@ public abstract class L2Effect implements IChanceSkillTrigger
 			{
 				_state = isInstant() ? EffectState.FINISHING : EffectState.ACTING;
 				
-				if (_skill.isPVP() && isIconDisplay() && getEffected().isPlayer())
+				if (_skill.isBad() && isIconDisplay() && getEffected().isPlayer())
 				{
 					final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
 					sm.addSkillName(_skill);

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/TvTEvent.java

@@ -1036,7 +1036,7 @@ public class TvTEvent
 		// players in the different teams ?
 		if (getParticipantTeamId(sourcePlayerId) != getParticipantTeamId(targetPlayerId))
 		{
-			if (!skill.isOffensive())
+			if (!skill.isBad())
 			{
 				return false;
 			}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/items/L2Weapon.java

@@ -418,7 +418,7 @@ public final class L2Weapon extends L2Item
 		}
 		
 		final byte shld = Formulas.calcShldUse(caster, target, onMagicSkill);
-		if (onMagicSkill.isOffensive() && !Formulas.calcSkillSuccess(caster, target, onMagicSkill, shld, false, false, false))
+		if (onMagicSkill.isBad() && !Formulas.calcSkillSuccess(caster, target, onMagicSkill, shld, false, false, false))
 		{
 			return false;
 		}

+ 18 - 38
L2J_Server_BETA/java/com/l2jserver/gameserver/model/skills/L2Skill.java

@@ -173,8 +173,6 @@ public abstract class L2Skill implements IChanceSkillTrigger
 	private final boolean _overhit;
 	
 	private final int _minPledgeClass;
-	private final boolean _isOffensive;
-	private final boolean _isPVP;
 	private final int _chargeConsume;
 	private final int _triggeredId;
 	private final int _triggeredLevel;
@@ -377,8 +375,6 @@ public abstract class L2Skill implements IChanceSkillTrigger
 		_isSuicideAttack = set.getBool("isSuicideAttack", false);
 		
 		_minPledgeClass = set.getInteger("minPledgeClass", 0);
-		_isOffensive = set.getBool("offensive", false);
-		_isPVP = set.getBool("pvp", false);
 		_chargeConsume = set.getInteger("chargeConsume", 0);
 		_triggeredId = set.getInteger("triggeredId", 0);
 		_triggeredLevel = set.getInteger("triggeredLevel", 1);
@@ -874,16 +870,6 @@ public abstract class L2Skill implements IChanceSkillTrigger
 		return _minPledgeClass;
 	}
 	
-	public final boolean isOffensive()
-	{
-		return _isOffensive || isPVP();
-	}
-	
-	public final boolean isPVP()
-	{
-		return _isPVP;
-	}
-	
 	public final boolean isHeroSkill()
 	{
 		return _isHeroSkill;
@@ -1108,12 +1094,12 @@ public abstract class L2Skill implements IChanceSkillTrigger
 					return false;
 				}
 				
-				if (skill.isOffensive() && (player.getSiegeState() > 0) && player.isInsideZone(ZoneId.SIEGE) && (player.getSiegeState() == targetPlayer.getSiegeState()) && (player.getSiegeSide() == targetPlayer.getSiegeSide()))
+				if (skill.isBad() && (player.getSiegeState() > 0) && player.isInsideZone(ZoneId.SIEGE) && (player.getSiegeState() == targetPlayer.getSiegeState()) && (player.getSiegeSide() == targetPlayer.getSiegeSide()))
 				{
 					return false;
 				}
 				
-				if (skill.isOffensive() && target.isInsideZone(ZoneId.PEACE))
+				if (skill.isBad() && target.isInsideZone(ZoneId.PEACE))
 				{
 					return false;
 				}
@@ -1283,22 +1269,19 @@ public abstract class L2Skill implements IChanceSkillTrigger
 			return EMPTY_EFFECT_LIST;
 		}
 		
-		if (effector != effected)
+		if ((effector != effected) && isBad())
 		{
-			if (isOffensive() || isDebuff())
+			if (effected.isInvul())
 			{
-				if (effected.isInvul())
+				return EMPTY_EFFECT_LIST;
+			}
+			
+			if (effector.isPlayer() && effector.isGM())
+			{
+				if (!effector.getAccessLevel().canGiveDamage())
 				{
 					return EMPTY_EFFECT_LIST;
 				}
-				
-				if (effector.isPlayer() && effector.isGM())
-				{
-					if (!effector.getAccessLevel().canGiveDamage())
-					{
-						return EMPTY_EFFECT_LIST;
-					}
-				}
 			}
 		}
 		
@@ -1346,19 +1329,16 @@ public abstract class L2Skill implements IChanceSkillTrigger
 			return EMPTY_EFFECT_LIST;
 		}
 		
-		if (effector.getOwner() != effected)
+		if ((effector.getOwner() != effected) && isBad())
 		{
-			if (isDebuff() || isOffensive())
+			if (effected.isInvul())
 			{
-				if (effected.isInvul())
-				{
-					return EMPTY_EFFECT_LIST;
-				}
-				
-				if (effector.getOwner().isGM() && !effector.getOwner().getAccessLevel().canGiveDamage())
-				{
-					return EMPTY_EFFECT_LIST;
-				}
+				return EMPTY_EFFECT_LIST;
+			}
+			
+			if (effector.getOwner().isGM() && !effector.getOwner().getAccessLevel().canGiveDamage())
+			{
+				return EMPTY_EFFECT_LIST;
 			}
 		}
 		

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/stats/Formulas.java

@@ -1374,7 +1374,7 @@ public final class Formulas
 	{
 		// TODO: CHECK/FIX THIS FORMULA UP!!
 		double defence = 0;
-		if (skill.isActive() && skill.isOffensive())
+		if (skill.isActive() && skill.isBad())
 		{
 			defence = target.getMDef(actor, skill);
 		}
@@ -2136,7 +2136,7 @@ public final class Formulas
 	{
 		boolean reflect = false;
 		// Neither some special skills (like hero debuffs...) or those skills ignoring resistances can't be reflected
-		if ((skill.getPower() == -1) || ((skill.isHeroSkill() && skill.isDebuff()) || (!skill.isDebuff() && skill.isOffensive())))
+		if ((skill.getPower() == -1) || ((skill.isHeroSkill() && skill.isDebuff()) || (!skill.isDebuff() && skill.isBad())))
 		{
 			return reflect;
 		}