Focus/Raise Shield changes plus unable to use during final ultimate defense.
Contributed by Ofelin.
This commit is contained in:
		| @@ -121,6 +121,7 @@ public final class EffectMasterHandler | ||||
| 		EffectHandler.getInstance().registerHandler("DeleteTopAgro", DeleteTopAgro::new); | ||||
| 		EffectHandler.getInstance().registerHandler("DetectHiddenObjects", DetectHiddenObjects::new); | ||||
| 		EffectHandler.getInstance().registerHandler("Detection", Detection::new); | ||||
| 		EffectHandler.getInstance().registerHandler("DisableSkill", DisableSkill::new); | ||||
| 		EffectHandler.getInstance().registerHandler("DisableTargeting", DisableTargeting::new); | ||||
| 		EffectHandler.getInstance().registerHandler("Disarm", Disarm::new); | ||||
| 		EffectHandler.getInstance().registerHandler("Disarmor", Disarmor::new); | ||||
| @@ -129,6 +130,7 @@ public final class EffectMasterHandler | ||||
| 		EffectHandler.getInstance().registerHandler("DispelBySlot", DispelBySlot::new); | ||||
| 		EffectHandler.getInstance().registerHandler("DispelBySlotMyself", DispelBySlotMyself::new); | ||||
| 		EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new); | ||||
| 		EffectHandler.getInstance().registerHandler("DispelCaster", DispelCaster::new); | ||||
| 		EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new); | ||||
| 		EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new); | ||||
| 		EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new); | ||||
|   | ||||
							
								
								
									
										80
									
								
								L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/DisableSkill.java
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/DisableSkill.java
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| /* | ||||
|  * This file is part of the L2J Mobius project. | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
|  * General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import java.util.Collections; | ||||
| import java.util.HashSet; | ||||
| import java.util.Set; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * @author Ofelin | ||||
|  */ | ||||
| public class DisableSkill extends AbstractEffect | ||||
| { | ||||
| 	private final Set<Integer> disableSkills; | ||||
| 	private Skill knownSKill; | ||||
| 	 | ||||
| 	public DisableSkill(StatsSet params) | ||||
| 	{ | ||||
| 		String disable = params.getString("disable"); | ||||
| 		if ((disable != null) && !disable.isEmpty()) | ||||
| 		{ | ||||
| 			disableSkills = new HashSet<>(); | ||||
| 			for (String slot : disable.split(";")) | ||||
| 			{ | ||||
| 				disableSkills.add(Integer.parseInt(slot)); | ||||
| 			} | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			disableSkills = Collections.<Integer> emptySet(); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onStart(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		for (int disableSkillId : disableSkills) | ||||
| 		{ | ||||
| 			knownSKill = effected.getKnownSkill(disableSkillId); | ||||
| 			if (knownSKill != null) | ||||
| 			{ | ||||
| 				effected.disableSkill(knownSKill, 0); | ||||
| 				 | ||||
| 			} | ||||
| 			effected.disableSkill(skill, 0); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void onExit(L2Character effector, L2Character effected, Skill skill) | ||||
| 	{ | ||||
| 		for (int enableSkillId : disableSkills) | ||||
| 		{ | ||||
| 			knownSKill = effected.getKnownSkill(enableSkillId); | ||||
| 			if (knownSKill != null) | ||||
| 			{ | ||||
| 				effected.enableSkill(knownSKill); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										78
									
								
								L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/DispelCaster.java
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/DispelCaster.java
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | ||||
| /* | ||||
|  * This file is part of the L2J Mobius project. | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
|  * General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import java.util.Collections; | ||||
| import java.util.HashSet; | ||||
| import java.util.Set; | ||||
|  | ||||
| import com.l2jmobius.gameserver.model.StatsSet; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Character; | ||||
| import com.l2jmobius.gameserver.model.effects.AbstractEffect; | ||||
| import com.l2jmobius.gameserver.model.effects.L2EffectType; | ||||
| import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; | ||||
| import com.l2jmobius.gameserver.model.skills.AbnormalType; | ||||
| import com.l2jmobius.gameserver.model.skills.Skill; | ||||
|  | ||||
| /** | ||||
|  * @author Gnacik, Zoey76, Adry_85 | ||||
|  */ | ||||
| public class DispelCaster extends AbstractEffect | ||||
| { | ||||
| 	private final Set<AbnormalType> _dispelAbnormals; | ||||
|  | ||||
| 	public DispelCaster(StatsSet params) | ||||
| 	{ | ||||
| 		String dispel = params.getString("dispel"); | ||||
| 		if ((dispel != null) && !dispel.isEmpty()) | ||||
| 		{ | ||||
| 			_dispelAbnormals = new HashSet<>(); | ||||
| 			for (String slot : dispel.split(";")) | ||||
| 			{ | ||||
| 				_dispelAbnormals.add(AbnormalType.getAbnormalType(slot)); | ||||
| 			} | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			_dispelAbnormals = Collections.<AbnormalType> emptySet(); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public L2EffectType getEffectType() | ||||
| 	{ | ||||
| 		return L2EffectType.DISPEL_BY_SLOT; | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public boolean isInstant() | ||||
| 	{ | ||||
| 		return true; | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) | ||||
| 	{ | ||||
| 		if (_dispelAbnormals.isEmpty()) | ||||
| 		{ | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		// The effectlist should already check if it has buff with this abnormal type or not. | ||||
| 		effector.getEffectList().stopEffects(info -> !info.getSkill().isIrreplacableBuff() && _dispelAbnormals.contains(info.getSkill().getAbnormalType()), true, true); | ||||
| 	} | ||||
| } | ||||
| @@ -550,6 +550,9 @@ | ||||
| 				</amount> | ||||
| 				<mode>DIFF</mode> | ||||
| 			</effect> | ||||
| 			<effect name="DispelCaster"> | ||||
| 				<dispel>SIGEL_SHIELD</dispel> | ||||
| 			</effect> | ||||
| 		</effects> | ||||
| 	</skill> | ||||
| 	<skill id="10009" toLevel="11" name="Last Judgment"> | ||||
| @@ -1313,7 +1316,7 @@ | ||||
| 			<value fromLevel="3" toLevel="7" fromSubLevel="1001" toSubLevel="1010">{base + subIndex}</value> | ||||
| 			<value fromLevel="3" toLevel="7" fromSubLevel="1011" toSubLevel="1020">{base + 10 + 0.5 * subIndex}</value> | ||||
| 		</abnormalTime> | ||||
| 		<abnormalType>PD_UP_SPECIAL</abnormalType> | ||||
| 		<abnormalType>SIGEL_SHIELD</abnormalType> | ||||
| 		<abnormalVisualEffect>ULTIMATE_DEFENCE</abnormalVisualEffect> | ||||
| 		<magicCriticalRate>5</magicCriticalRate> | ||||
| 		<magicLvl> | ||||
| @@ -1417,6 +1420,9 @@ | ||||
| 				</amount> | ||||
| 				<mode>DIFF</mode> | ||||
| 			</effect> | ||||
| 			<effect name="DisableSkill"> | ||||
| 				<disable>10020;10021</disable> | ||||
| 			</effect> | ||||
| 		</effects> | ||||
| 	</skill> | ||||
| 	<skill id="10018" toLevel="2" name="Noble Sacrifice"> | ||||
| @@ -1562,87 +1568,22 @@ | ||||
| 		</effects> | ||||
| 	</skill> | ||||
| 	<skill id="10020" toLevel="7" name="Focus Shield"> | ||||
| 		<!-- Glory Days confirmed --> | ||||
| 		<!-- P. Def + 1160, Shield Def +2320, Shield Def +50% --> | ||||
| 		<mpConsume>50</mpConsume> | ||||
| 		<magicCriticalRate>5</magicCriticalRate> | ||||
| 		<magicLvl> | ||||
| 			<value level="1">85</value> | ||||
| 			<value level="2">90</value> | ||||
| 			<value level="3">95</value> | ||||
| 			<value level="4">99</value> | ||||
| 			<value level="5">100</value> | ||||
| 			<value level="6">102</value> | ||||
| 			<value level="7">104</value> | ||||
| 		</magicLvl> | ||||
| 		<icon>icon.skill10020</icon> | ||||
| 		<operateType>T</operateType> | ||||
| 		<rideState>NONE</rideState> | ||||
| 		<mpConsume>50</mpConsume> | ||||
| 		<targetType>NONE</targetType> | ||||
| 		<effects> | ||||
| 			<effect name="MpConsumePerLevel"> | ||||
| 				<power>1</power> | ||||
| 				<ticks>5</ticks> | ||||
| 			</effect> | ||||
| 			<effect name="PhysicalDefence"> | ||||
| 				<amount> | ||||
| 					<value level="1">616</value> | ||||
| 					<value level="2">684</value> | ||||
| 					<value level="3">761</value> | ||||
| 					<value level="4">845</value> | ||||
| 					<value level="5">939</value> | ||||
| 					<value level="6">1044</value> | ||||
| 					<value level="7">1160</value> | ||||
| 				</amount> | ||||
| 				<mode>DIFF</mode> | ||||
| 			</effect> | ||||
| 			<effect name="ShieldDefenceRate"> | ||||
| 				<amount> | ||||
| 					<value level="1">35</value> | ||||
| 					<value level="2">40</value> | ||||
| 					<value level="3">45</value> | ||||
| 					<value level="4">50</value> | ||||
| 					<value level="5">50</value> | ||||
| 					<value level="6">50</value> | ||||
| 					<value level="7">50</value> | ||||
| 				</amount> | ||||
| 				<mode>PER</mode> | ||||
| 			</effect> | ||||
| 			<effect name="ShieldDefence"> | ||||
| 				<amount> | ||||
| 					<value level="1">1232</value> | ||||
| 					<value level="2">1368</value> | ||||
| 					<value level="3">1522</value> | ||||
| 					<value level="4">1690</value> | ||||
| 					<value level="5">1878</value> | ||||
| 					<value level="6">2088</value> | ||||
| 					<value level="7">2320</value> | ||||
| 				</amount> | ||||
| 				<mode>DIFF</mode> | ||||
| 			</effect> | ||||
| 		</effects> | ||||
| 	</skill> | ||||
| 	<skill id="10021" toLevel="7" name="Spike Shield"> | ||||
| 		<!-- Glory Days confirmed --> | ||||
| 		<!-- For 10 seconds, reflects 10% of received damage back to the attacker. Also has a 50% chance of reflecting magic damage back to the attacker. Requires a shield. --> | ||||
| 		<abnormalLvl>1</abnormalLvl> | ||||
| 		<abnormalTime> | ||||
| 			<value fromLevel="1" toLevel="7">10</value> | ||||
| 			<value fromLevel="3" toLevel="7" fromSubLevel="1001" toSubLevel="1020">{base + 0.5 * subIndex}</value> | ||||
| 		</abnormalTime> | ||||
| 		<abnormalType>REFLECT_MAGIC_DD</abnormalType> | ||||
| 		<icon>icon.skill10021</icon> | ||||
| 		<abnormalType>SIGEL_SHIELD</abnormalType> | ||||
| 		<icon>icon.skill10020</icon> | ||||
| 		<operateType>A2</operateType> | ||||
| 		<magicCriticalRate>5</magicCriticalRate> | ||||
| 		<rideState>NONE</rideState> | ||||
| 		<mpConsume> | ||||
| 			<value level="1">20</value> | ||||
| 			<value level="2">21</value> | ||||
| 			<value level="3">23</value> | ||||
| 			<value level="4">24</value> | ||||
| 			<value level="5">25</value> | ||||
| 			<value level="6">26</value> | ||||
| 			<value level="7">27</value> | ||||
| 			<value level="1">58</value> | ||||
| 			<value level="2">61</value> | ||||
| 			<value level="3">63</value> | ||||
| 			<value level="4">66</value> | ||||
| 			<value level="5">69</value> | ||||
| 			<value level="6">72</value> | ||||
| 			<value level="7">75</value> | ||||
| 		</mpConsume> | ||||
| 		<hitTime>500</hitTime> | ||||
| 		<effectPoint>2</effectPoint> | ||||
| @@ -1662,20 +1603,88 @@ | ||||
| 			<condition name="EquipShield" /> | ||||
| 		</conditions> | ||||
| 		<effects> | ||||
| 			<effect name="MagicalDefence"> | ||||
| 				<amount> | ||||
| 					<value level="1">50</value> | ||||
| 					<value level="2">60</value> | ||||
| 					<value fromLevel="3" toLevel="4">70</value> | ||||
| 					<value level="5">80</value> | ||||
| 					<value level="6">90</value> | ||||
| 					<value level="7">100</value> | ||||
| 				</amount> | ||||
| 				<mode>PER</mode> | ||||
| 			</effect> | ||||
| 			<effect name="DamageShield"> | ||||
| 				<amount> | ||||
| 					<value level="1">10</value> | ||||
| 					<value level="2">15</value> | ||||
| 					<value level="3">20</value> | ||||
| 					<value level="4">25</value> | ||||
| 					<value level="5">27</value> | ||||
| 					<value level="6">30</value> | ||||
| 					<value level="7">32</value> | ||||
| 					<value fromLevel="4" toLevel="7">10</value> | ||||
| 				</amount> | ||||
| 			</effect> | ||||
| 			<effect name="ReflectMagic"> | ||||
| 				<amount>50</amount> | ||||
| 				<type>MAGIC</type> | ||||
| 			<effect name="MagicCriticalDamage"> | ||||
| 				<amount> | ||||
| 					<value fromLevel="1" toLevel="7">-100</value> | ||||
| 				</amount> | ||||
| 				<mode>PER</mode> | ||||
| 			</effect> | ||||
| 		</effects> | ||||
| 	</skill> | ||||
| 	<skill id="10021" toLevel="7" name="Raise Shield"> | ||||
| 		<abnormalLvl>1</abnormalLvl> | ||||
| 		<abnormalTime> | ||||
| 			<value fromLevel="1" toLevel="7">10</value> | ||||
| 			<value fromLevel="3" toLevel="7" fromSubLevel="1001" toSubLevel="1020">{base + 0.5 * subIndex}</value> | ||||
| 		</abnormalTime> | ||||
| 		<abnormalType>SIGEL_SHIELD</abnormalType> | ||||
| 		<icon>icon.skill10021</icon> | ||||
| 		<operateType>A2</operateType> | ||||
| 		<magicCriticalRate>5</magicCriticalRate> | ||||
| 		<mpConsume> | ||||
| 			<value level="1">58</value> | ||||
| 			<value level="2">61</value> | ||||
| 			<value level="3">63</value> | ||||
| 			<value level="4">66</value> | ||||
| 			<value level="5">69</value> | ||||
| 			<value level="6">72</value> | ||||
| 			<value level="7">75</value> | ||||
| 		</mpConsume> | ||||
| 		<hitTime>500</hitTime> | ||||
| 		<effectPoint>2</effectPoint> | ||||
| 		<basicProperty>NONE</basicProperty> | ||||
| 		<rideState>NONE</rideState> | ||||
| 		<hitCancelTime>0</hitCancelTime> | ||||
| 		<magicLvl> | ||||
| 			<value level="1">85</value> | ||||
| 			<value level="2">90</value> | ||||
| 			<value level="3">95</value> | ||||
| 			<value level="4">99</value> | ||||
| 		</magicLvl> | ||||
| 		<reuseDelay>60000</reuseDelay> | ||||
| 		<targetType>SELF</targetType> | ||||
| 		<affectScope>SINGLE</affectScope> | ||||
| 		<conditions> | ||||
| 			<condition name="EquipShield" /> | ||||
| 		</conditions> | ||||
| 		<effects> | ||||
| 			<effect name="PhysicalDefence"> | ||||
| 				<amount> | ||||
| 					<value level="1">50</value> | ||||
| 					<value level="2">60</value> | ||||
| 					<value fromLevel="3" toLevel="4">70</value> | ||||
| 					<value level="5">80</value> | ||||
| 					<value level="6">90</value> | ||||
| 					<value level="7">100</value> | ||||
| 				</amount> | ||||
| 				<mode>PER</mode> | ||||
| 			</effect> | ||||
| 			<effect name="DamageShield"> | ||||
| 				<amount> | ||||
| 					<value fromLevel="4" toLevel="7">10</value> | ||||
| 				</amount> | ||||
| 			</effect> | ||||
| 			<effect name="DefenceCriticalDamage"> | ||||
| 				<amount> | ||||
| 					<value fromLevel="1" toLevel="7">-100</value> | ||||
| 				</amount> | ||||
| 				<mode>PER</mode> | ||||
| 			</effect> | ||||
| 			<effect name="PAtk" fromLevel="3" toLevel="7" fromSubLevel="2001" toSubLevel="2020"> | ||||
|  				<amount> | ||||
|   | ||||
| @@ -90,6 +90,7 @@ DeleteHateOfMe: Has a chance to delete target's hate towards you. | ||||
| DeleteTopAgro: Has a chance to delete target's most hated from the list. | ||||
| DetectHiddenObjects: Finds hidden doors | ||||
| Detection: Detects hidden creatures. | ||||
| DisableSkill: Disables effectors known skills specified by skill ID. (l2jmobius) | ||||
| DisableTargeting: Disables your target's ability to target. | ||||
| Disarm: Removes the weapon of target player. | ||||
| Disarmor: Removes the armor of target player. | ||||
| @@ -98,6 +99,7 @@ DispelByCategory: Removes given amount of target's effects from a BUFF/DEBUFF ca | ||||
| DispelBySlot: Removes given amount of target's effects by specified AbnormalType and maximum abnormal level. | ||||
| DispelBySlotMyself: Removes given amount of effects by specified AbnormalType | ||||
| DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate. | ||||
| DispelCaster: Removes given amount of effects from caster by specified AbnormalType. (l2jmobius) | ||||
| DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once. | ||||
| DuelistFury: Synergy effect for Faceoff effect. (l2jmobius) | ||||
| EnableCloak: See/unsee cloaks. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDev
					MobiusDev