Anti buff

    
  1. Atsijungęs

    duocia

    Pranešimai: 0

    Gal kas zinot kaip anti-buff skilla sukurti?
    7 Kovo 2015 - 21:16 / #1
  2. 
  3. Atsijungęs

    Unbidden

    Pranešimai: 0

    Core:
    ### Eclipse Workspace Patch 1.0
    #P L2JFrozen_Gameserver
    Index: head-src/com/l2jfrozen/gameserver/handler/skillhandlers/Continuous.java
    ===================================================================
    --- head-src/com/l2jfrozen/gameserver/handler/skillhandlers/Continuous.java	(revision 601)
    +++ head-src/com/l2jfrozen/gameserver/handler/skillhandlers/Continuous.java	(working copy)
    @@ -128,6 +128,16 @@
     			// Walls and Door should not be buffed
     			if(target instanceof L2DoorInstance && (skill.getSkillType() == L2Skill.SkillType.BUFF || skill.getSkillType() == L2Skill.SkillType.HOT))
     				continue;
    +			
    +			// Anti-Buff Protection prevents you from getting buffs by other players
    +			if (activeChar instanceof L2PlayableInstance && target != activeChar && target.isBuffProtected() && !skill.isHeroSkill()
    +			    && (skill.getSkillType() == L2Skill.SkillType.BUFF
    +			|| skill.getSkillType() == L2Skill.SkillType.HEAL_PERCENT
    +			|| skill.getSkillType() == L2Skill.SkillType.FORCE_BUFF
    +			|| skill.getSkillType() == L2Skill.SkillType.MANAHEAL_PERCENT
    +			|| skill.getSkillType() == L2Skill.SkillType.COMBATPOINTHEAL
    +			|| skill.getSkillType() == L2Skill.SkillType.REFLECT))
    +			continue;
     
     			// Player holding a cursed weapon can't be buffed and can't buff
     			if(skill.getSkillType() == L2Skill.SkillType.BUFF)
    Index: head-src/com/l2jfrozen/gameserver/model/L2Character.java
    ===================================================================
    --- head-src/com/l2jfrozen/gameserver/model/L2Character.java	(revision 601)
    +++ head-src/com/l2jfrozen/gameserver/model/L2Character.java	(working copy)
    @@ -158,6 +158,7 @@
     	private L2Skill _lastPotionCast;
     	
     	private boolean _isAfraid = false; // Flee in a random direction
    +	private boolean _isBuffProtected = false; //Protect From Debuffs
     	private boolean _isConfused = false; // Attack anyone randomly
     	private boolean _isFakeDeath = false; // Fake death
     	private boolean _isFlying = false; // Is flying Wyvern?
    @@ -2177,6 +2178,16 @@
     		_isAfraid = value;
     	}
     
    +
    +	public final void setIsBuffProtected(boolean value)
    +	{
    +	    _isBuffProtected = value;
    +	}
    +	
    +	public boolean isBuffProtected()
    +	{
    +	    return _isBuffProtected;	
    +	}
     	/** Return True if the L2Character is dead or use fake death. */
     	public final boolean isAlikeDead()
     	{
    Index: head-src/com/l2jfrozen/gameserver/skills/effects/EffectDeflectBuff.java
    ===================================================================
    --- head-src/com/l2jfrozen/gameserver/skills/effects/EffectDeflectBuff.java	(revision 0)
    +++ head-src/com/l2jfrozen/gameserver/skills/effects/EffectDeflectBuff.java	(revision 0)
    @@ -0,0 +1,82 @@
    +package com.l2jfrozen.gameserver.skills.effects;
    +
    +import com.l2jfrozen.gameserver.model.L2Effect;
    +import com.l2jfrozen.gameserver.model.L2Effect.EffectType;
    +import com.l2jfrozen.gameserver.model.L2Skill.SkillType;
    +import com.l2jfrozen.gameserver.network.SystemMessageId;
    +import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
    +import com.l2jfrozen.gameserver.skills.Env;
    +
    +/**
    + * @author Lineal
    + */
    +public final class EffectDeflectBuff extends L2Effect
    +{
    +	/**
    +	 * @param env
    +	 * @param template
    +	 */
    +	public EffectDeflectBuff(Env env, EffectTemplate template)
    +	{
    +		super(env, template);
    +	}
    +
    +	/*
    +	 * (non-Javadoc)
    +	 * 
    +	 * @see com.l2jfrozen.gameserver.model.L2Effect#getEffectType()
    +	 */
    +	@Override
    +	public EffectType getEffectType()
    +	{
    +		return EffectType.PREVENT_BUFF;
    +	}
    +	
    +	/*
    +	 * (non-Javadoc)
    +	 * 
    +	 * @see com.l2jfrozen.gameserver.model.L2Effect#onActionTime()
    +	 */
    +	@Override
    +	public boolean onActionTime()
    +	{
    +		// Only cont skills shouldn't end
    +		if(getSkill().getSkillType() != SkillType.CONT)
    +			return false;
    +
    +		double manaDam = calc();
    +
    +		if(manaDam > getEffected().getCurrentMp())
    +		{
    +			SystemMessage sm = new SystemMessage(SystemMessageId.SKILL_REMOVED_DUE_LACK_MP);
    +			getEffected().sendPacket(sm);
    +			return false;
    +		}
    +
    +		getEffected().reduceCurrentMp(manaDam);
    +		return true;
    +	}
    +	
    +	/*
    +	 * (non-Javadoc)
    +	 * 
    +	 * @see com.l2jfrozen.gameserver.model.L2Effect#onStart()
    +	 */
    +	@Override
    +	public void onStart()
    +	{
    +		getEffected().setIsBuffProtected(true);
    +		return;
    +	}
    +
    +	/*
    +	 * (non-Javadoc)
    +	 * 
    +	 * @see com.l2jfrozen.gameserver.model.L2Effect#onExit()
    +	 */
    +	@Override
    +	public void onExit()
    +	{
    +		getEffected().setIsBuffProtected(false);
    +	}
    +}
    \ No newline at end of file
    Index: head-src/com/l2jfrozen/gameserver/model/L2Effect.java
    ===================================================================
    --- head-src/com/l2jfrozen/gameserver/model/L2Effect.java	(revision 601)
    +++ head-src/com/l2jfrozen/gameserver/model/L2Effect.java	(working copy)
    @@ -105,7 +105,8 @@
     		FUSION,
     		CANCEL,
     		BLOCK_BUFF,
    -		BLOCK_DEBUFF
    +		BLOCK_DEBUFF,
    +		PREVENT_BUFF
     	}
     
     	private static final Func[] _emptyFunctionSet = new Func[0];


    Datapack:
    <skill id="add the skill id here" levels="1" name="AntiBuff-Shield">
      <set name="target" val="TARGET_SELF"/>
      <set name="skillType" val="CONT"/>
      <set name="operateType" val="OP_TOGGLE"/>
      <set name="castRange" val="-1"/>
      <set name="effectRange" val="-1"/>
      <for>
        <effect count="0x7fffffff" name="DeflectBuff" time="3" val="0"/>
      </for>
    </skill>
    10 Kovo 2015 - 21:03 / #2