Browse Source

BETA: Fixing system messages related to effect ending:
* When effect ends normally it shouldn't display: "The effect of S1 has been removed." (verified in retail).
* Removing effect abort message for toggle skills and effect removing (dispel) from effect list and moving next to the other effect messages at effect finish.
* Tiny typo in JavaDoc fix.
* Reported by: jurchiks

Zoey76 12 years ago
parent
commit
6a22721e84

+ 0 - 13
L2J_Server_BETA/java/com/l2jserver/gameserver/model/CharEffectList.java

@@ -42,11 +42,9 @@ import com.l2jserver.gameserver.model.olympiad.OlympiadGameTask;
 import com.l2jserver.gameserver.model.skills.AbnormalType;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
-import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.AbnormalStatusUpdate;
 import com.l2jserver.gameserver.network.serverpackets.ExOlympiadSpelledInfo;
 import com.l2jserver.gameserver.network.serverpackets.PartySpelled;
-import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 
 /**
  * Effect lists.
@@ -676,17 +674,6 @@ public final class CharEffectList
 			_owner.removeStatsOwner(effect);
 			
 			effectList.remove(effect);
-			
-			if (_owner.isPlayer() && effect.isIconDisplay())
-			{
-				final SystemMessageId smId = skill.isToggle() ? SystemMessageId.S1_HAS_BEEN_ABORTED : effect.isRemoved() ? SystemMessageId.EFFECT_S1_DISAPPEARED : null;
-				if (smId != null)
-				{
-					final SystemMessage sm = SystemMessage.getSystemMessage(smId);
-					sm.addSkillName(effect);
-					_owner.sendPacket(sm);
-				}
-			}
 		}
 		// Update effect flags.
 		computeEffectFlags();

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

@@ -141,7 +141,7 @@ public abstract class L2Effect implements IChanceSkillTrigger
 	}
 	
 	/**
-	 * Get the correct tick count.
+	 * Get the current tick count.
 	 * @return the tick count
 	 */
 	public int getTickCount()
@@ -458,11 +458,28 @@ public abstract class L2Effect implements IChanceSkillTrigger
 			case FINISHING:
 			{
 				// Message
-				if (!getSkill().isToggle() && (_tickCount > _template.getTotalTickCount()) && isIconDisplay() && getEffected().isPlayer())
+				if (getEffected().isPlayer() && isIconDisplay())
 				{
-					final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HAS_WORN_OFF);
-					sm.addSkillName(_skill);
-					getEffected().sendPacket(sm);
+					SystemMessageId smId = null;
+					if (getSkill().isToggle())
+					{
+						smId = SystemMessageId.S1_HAS_BEEN_ABORTED;
+					}
+					else if (isRemoved())
+					{
+						smId = SystemMessageId.EFFECT_S1_DISAPPEARED;
+					}
+					else if (_tickCount >= _template.getTotalTickCount())
+					{
+						smId = SystemMessageId.S1_HAS_WORN_OFF;
+					}
+					
+					if (smId != null)
+					{
+						final SystemMessage sm = SystemMessage.getSystemMessage(smId);
+						sm.addSkillName(getSkill());
+						getEffected().sendPacket(sm);
+					}
 				}
 				
 				// if task is null - stopEffectTask does not remove effect