Ver Fonte

NPC Grow Effect core support thanks to xTr

Sami há 17 anos atrás
pai
commit
580facea9f

+ 1 - 1
L2_GameServer_It/java/net/sf/l2j/gameserver/model/L2Character.java

@@ -1979,7 +1979,7 @@ public abstract class L2Character extends L2Object
 	public static final int ABNORMAL_EFFECT_BIG_HEAD		= 0x002000;
 	public static final int ABNORMAL_EFFECT_FLAME			= 0x004000;
 	public static final int ABNORMAL_EFFECT_UNKNOWN_16		= 0x008000;
-	public static final int ABNORMAL_EFFECT_UNKNOWN_17		= 0x010000;
+	public static final int ABNORMAL_EFFECT_GROW			= 0x010000;
 	public static final int ABNORMAL_EFFECT_FLOATING_ROOT	= 0x020000;
 	public static final int ABNORMAL_EFFECT_DANCE_STUNNED	= 0x040000;
 	public static final int ABNORMAL_EFFECT_FIREROOT_STUN	= 0x080000;

+ 1 - 1
L2_GameServer_It/java/net/sf/l2j/gameserver/model/actor/instance/L2NpcInstance.java

@@ -2278,7 +2278,7 @@ public class L2NpcInstance extends L2Character
     {
     	return _currentCollisionHeight;
     }
-    public int getColisionRadius()
+    public int getCollisionRadius()
     {
     	return _currentCollisionRadius;
     }

+ 1 - 1
L2_GameServer_It/java/net/sf/l2j/gameserver/serverpackets/NpcInfo.java

@@ -59,7 +59,7 @@ public class NpcInfo extends L2GameServerPacket
 		_lhand = cha.getLeftHandItem(); 
 		_isSummoned = false;
         _collisionHeight = cha.getCollisionHeight();
-        _collisionRadius = cha.getColisionRadius();
+        _collisionRadius = cha.getCollisionRadius();
         if (cha.getTemplate().serverSideName)
         	_name = cha.getTemplate().name;
 

+ 62 - 0
L2_GameServer_It/java/net/sf/l2j/gameserver/skills/effects/EffectGrow.java

@@ -0,0 +1,62 @@
+package net.sf.l2j.gameserver.skills.effects;
+
+import net.sf.l2j.gameserver.model.L2Character;
+import net.sf.l2j.gameserver.model.L2Effect;
+import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
+import net.sf.l2j.gameserver.serverpackets.NpcInfo;
+import net.sf.l2j.gameserver.skills.Env;
+
+public class EffectGrow extends L2Effect {
+
+	
+	public EffectGrow(Env env, EffectTemplate template)
+	{
+		super(env, template);
+	}
+
+	@Override
+	public EffectType getEffectType()
+	{
+		return EffectType.BUFF;
+	}
+	
+	@Override
+	public void onStart() 
+	{
+		if(getEffected() instanceof L2NpcInstance)
+		{
+			L2NpcInstance npc = (L2NpcInstance)getEffected();
+			npc.setCollisionHeight((int)(npc.getCollisionHeight()*1.24));
+			npc.setCollisionRadius((int)(npc.getCollisionRadius()*1.19));
+			
+			getEffected().startAbnormalEffect(L2Character.ABNORMAL_EFFECT_GROW);
+		}
+	}
+	
+	@Override
+	public boolean onActionTime() 
+	{
+		if(getEffected() instanceof L2NpcInstance)
+		{
+			L2NpcInstance npc = (L2NpcInstance)getEffected();
+			npc.setCollisionHeight(npc.getTemplate().collisionHeight);
+			npc.setCollisionRadius(npc.getTemplate().collisionRadius);
+			
+			getEffected().stopAbnormalEffect(L2Character.ABNORMAL_EFFECT_GROW);
+		}
+		return false;
+	}
+
+	@Override
+	public void onExit()
+	{
+		if(getEffected() instanceof L2NpcInstance)
+		{
+			L2NpcInstance npc = (L2NpcInstance)getEffected();
+			npc.setCollisionHeight(npc.getTemplate().collisionHeight);
+			npc.setCollisionRadius(npc.getTemplate().collisionRadius);
+			
+			getEffected().stopAbnormalEffect(L2Character.ABNORMAL_EFFECT_GROW);
+		}
+	}
+}