Addition of DragonWeaponDefence effect.
This commit is contained in:
+455
@@ -0,0 +1,455 @@
|
|||||||
|
/*
|
||||||
|
* 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 ai.others;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
|
||||||
|
import org.l2jmobius.gameserver.model.items.Weapon;
|
||||||
|
|
||||||
|
import ai.AbstractNpcAI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponListeners extends AbstractNpcAI
|
||||||
|
{
|
||||||
|
private static final int[] WEAPON_IDS =
|
||||||
|
{
|
||||||
|
36417,
|
||||||
|
36418,
|
||||||
|
36419,
|
||||||
|
36420,
|
||||||
|
36421,
|
||||||
|
36422,
|
||||||
|
36423,
|
||||||
|
36424,
|
||||||
|
36425,
|
||||||
|
36426,
|
||||||
|
36441,
|
||||||
|
36442,
|
||||||
|
36443,
|
||||||
|
36444,
|
||||||
|
36445,
|
||||||
|
36446,
|
||||||
|
36447,
|
||||||
|
36448,
|
||||||
|
36449,
|
||||||
|
36450,
|
||||||
|
36465,
|
||||||
|
36466,
|
||||||
|
36467,
|
||||||
|
36468,
|
||||||
|
36469,
|
||||||
|
36470,
|
||||||
|
36471,
|
||||||
|
36472,
|
||||||
|
36473,
|
||||||
|
36474,
|
||||||
|
36489,
|
||||||
|
36490,
|
||||||
|
36491,
|
||||||
|
36492,
|
||||||
|
36493,
|
||||||
|
36494,
|
||||||
|
36495,
|
||||||
|
36496,
|
||||||
|
36497,
|
||||||
|
36498,
|
||||||
|
36427,
|
||||||
|
36428,
|
||||||
|
36429,
|
||||||
|
36430,
|
||||||
|
36431,
|
||||||
|
36432,
|
||||||
|
36433,
|
||||||
|
36451,
|
||||||
|
36452,
|
||||||
|
36453,
|
||||||
|
36454,
|
||||||
|
36455,
|
||||||
|
36456,
|
||||||
|
36457,
|
||||||
|
36475,
|
||||||
|
36476,
|
||||||
|
36477,
|
||||||
|
36478,
|
||||||
|
36479,
|
||||||
|
36480,
|
||||||
|
36481,
|
||||||
|
36499,
|
||||||
|
36500,
|
||||||
|
36501,
|
||||||
|
36502,
|
||||||
|
36503,
|
||||||
|
36504,
|
||||||
|
36505,
|
||||||
|
36434,
|
||||||
|
36435,
|
||||||
|
36436,
|
||||||
|
36437,
|
||||||
|
36438,
|
||||||
|
36439,
|
||||||
|
36440,
|
||||||
|
36458,
|
||||||
|
36459,
|
||||||
|
36460,
|
||||||
|
36461,
|
||||||
|
36462,
|
||||||
|
36463,
|
||||||
|
36464,
|
||||||
|
36482,
|
||||||
|
36483,
|
||||||
|
36484,
|
||||||
|
36485,
|
||||||
|
36486,
|
||||||
|
36487,
|
||||||
|
36488,
|
||||||
|
36506,
|
||||||
|
36507,
|
||||||
|
36508,
|
||||||
|
36509,
|
||||||
|
36510,
|
||||||
|
36511,
|
||||||
|
36512,
|
||||||
|
80066,
|
||||||
|
80067,
|
||||||
|
80068,
|
||||||
|
80069,
|
||||||
|
80070,
|
||||||
|
80071,
|
||||||
|
80072,
|
||||||
|
80073,
|
||||||
|
80074,
|
||||||
|
80075,
|
||||||
|
80076,
|
||||||
|
80077,
|
||||||
|
80078,
|
||||||
|
80079,
|
||||||
|
80080,
|
||||||
|
80081,
|
||||||
|
80082,
|
||||||
|
80083,
|
||||||
|
80084,
|
||||||
|
80085,
|
||||||
|
80086,
|
||||||
|
80087,
|
||||||
|
80088,
|
||||||
|
80089,
|
||||||
|
80315,
|
||||||
|
80316,
|
||||||
|
80317,
|
||||||
|
80318,
|
||||||
|
};
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||||
|
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||||
|
public void onPlayerLogin(OnPlayerLogin event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
final Weapon weapon = player.getActiveWeaponItem();
|
||||||
|
if ((weapon != null) && CommonUtil.contains(WEAPON_IDS, weapon.getId()))
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_EQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemEquip(OnPlayerItemEquip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_UNEQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemUnequip(OnPlayerItemUnequip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
new DragonWeaponListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -131,6 +131,7 @@ public class EffectMasterHandler
|
|||||||
EffectHandler.getInstance().registerHandler("DispelBySlotMyself", DispelBySlotMyself::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotMyself", DispelBySlotMyself::new);
|
||||||
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
||||||
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
||||||
|
EffectHandler.getInstance().registerHandler("DragonWeaponDefence", DragonWeaponDefence::new);
|
||||||
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
||||||
|
|||||||
Vendored
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* 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 org.l2jmobius.gameserver.model.StatSet;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Stat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponDefence extends AbstractStatPercentEffect
|
||||||
|
{
|
||||||
|
public DragonWeaponDefence(StatSet params)
|
||||||
|
{
|
||||||
|
super(params, Stat.DRAGON_WEAPON_DEFENCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -101,6 +101,7 @@ DispelBySlot: Removes given amount of target's effects by specified AbnormalType
|
|||||||
DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
||||||
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
||||||
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
||||||
|
DragonWeaponDefence: Dragon weapon defence stat. (l2jmobius)
|
||||||
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
||||||
EnableCloak: See/unsee cloaks.
|
EnableCloak: See/unsee cloaks.
|
||||||
EnemyCharge: Charges towards the enemy. Rush Impact.
|
EnemyCharge: Charges towards the enemy. Rush Impact.
|
||||||
|
|||||||
+12
@@ -748,6 +748,8 @@ public class PlayerInstance extends Playable
|
|||||||
private int _cursedWeaponEquippedId = 0;
|
private int _cursedWeaponEquippedId = 0;
|
||||||
private boolean _combatFlagEquippedId = false;
|
private boolean _combatFlagEquippedId = false;
|
||||||
|
|
||||||
|
private boolean _isDragonWeaponEquipped = false;
|
||||||
|
|
||||||
private boolean _canRevive = true;
|
private boolean _canRevive = true;
|
||||||
private int _reviveRequested = 0;
|
private int _reviveRequested = 0;
|
||||||
private double _revivePower = 0;
|
private double _revivePower = 0;
|
||||||
@@ -11378,6 +11380,16 @@ public class PlayerInstance extends Playable
|
|||||||
return _cursedWeaponEquippedId;
|
return _cursedWeaponEquippedId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDragonWeaponEquipped(boolean value)
|
||||||
|
{
|
||||||
|
_isDragonWeaponEquipped = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDragonWeaponEquipped()
|
||||||
|
{
|
||||||
|
return _isDragonWeaponEquipped;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCombatFlagEquipped()
|
public boolean isCombatFlagEquipped()
|
||||||
{
|
{
|
||||||
return _combatFlagEquippedId;
|
return _combatFlagEquippedId;
|
||||||
|
|||||||
@@ -1604,7 +1604,18 @@ public class Formulas
|
|||||||
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.max(0.05, 1 + (pvpAttack - pvpDefense)); // Bonus should not be negative.
|
// Dragon weapon defence stat.
|
||||||
|
final double dragonDefense;
|
||||||
|
if (attackerPlayer.isDragonWeaponEquipped())
|
||||||
|
{
|
||||||
|
dragonDefense = target.getStat().getValue(Stat.DRAGON_WEAPON_DEFENCE, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dragonDefense = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.max(0.05, dragonDefense * (1 + (pvpAttack - pvpDefense))); // Bonus should not be negative.
|
||||||
}
|
}
|
||||||
|
|
||||||
// PvE Bonus
|
// PvE Bonus
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public enum Stat
|
|||||||
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
||||||
HATE_ATTACK("attackHate"),
|
HATE_ATTACK("attackHate"),
|
||||||
REAR_DAMAGE_RATE("rearDamage"),
|
REAR_DAMAGE_RATE("rearDamage"),
|
||||||
|
DRAGON_WEAPON_DEFENCE("dragonWeaponDefence"),
|
||||||
|
|
||||||
// PVP BONUS
|
// PVP BONUS
|
||||||
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
||||||
|
|||||||
+455
@@ -0,0 +1,455 @@
|
|||||||
|
/*
|
||||||
|
* 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 ai.others;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
|
||||||
|
import org.l2jmobius.gameserver.model.items.Weapon;
|
||||||
|
|
||||||
|
import ai.AbstractNpcAI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponListeners extends AbstractNpcAI
|
||||||
|
{
|
||||||
|
private static final int[] WEAPON_IDS =
|
||||||
|
{
|
||||||
|
36417,
|
||||||
|
36418,
|
||||||
|
36419,
|
||||||
|
36420,
|
||||||
|
36421,
|
||||||
|
36422,
|
||||||
|
36423,
|
||||||
|
36424,
|
||||||
|
36425,
|
||||||
|
36426,
|
||||||
|
36441,
|
||||||
|
36442,
|
||||||
|
36443,
|
||||||
|
36444,
|
||||||
|
36445,
|
||||||
|
36446,
|
||||||
|
36447,
|
||||||
|
36448,
|
||||||
|
36449,
|
||||||
|
36450,
|
||||||
|
36465,
|
||||||
|
36466,
|
||||||
|
36467,
|
||||||
|
36468,
|
||||||
|
36469,
|
||||||
|
36470,
|
||||||
|
36471,
|
||||||
|
36472,
|
||||||
|
36473,
|
||||||
|
36474,
|
||||||
|
36489,
|
||||||
|
36490,
|
||||||
|
36491,
|
||||||
|
36492,
|
||||||
|
36493,
|
||||||
|
36494,
|
||||||
|
36495,
|
||||||
|
36496,
|
||||||
|
36497,
|
||||||
|
36498,
|
||||||
|
36427,
|
||||||
|
36428,
|
||||||
|
36429,
|
||||||
|
36430,
|
||||||
|
36431,
|
||||||
|
36432,
|
||||||
|
36433,
|
||||||
|
36451,
|
||||||
|
36452,
|
||||||
|
36453,
|
||||||
|
36454,
|
||||||
|
36455,
|
||||||
|
36456,
|
||||||
|
36457,
|
||||||
|
36475,
|
||||||
|
36476,
|
||||||
|
36477,
|
||||||
|
36478,
|
||||||
|
36479,
|
||||||
|
36480,
|
||||||
|
36481,
|
||||||
|
36499,
|
||||||
|
36500,
|
||||||
|
36501,
|
||||||
|
36502,
|
||||||
|
36503,
|
||||||
|
36504,
|
||||||
|
36505,
|
||||||
|
36434,
|
||||||
|
36435,
|
||||||
|
36436,
|
||||||
|
36437,
|
||||||
|
36438,
|
||||||
|
36439,
|
||||||
|
36440,
|
||||||
|
36458,
|
||||||
|
36459,
|
||||||
|
36460,
|
||||||
|
36461,
|
||||||
|
36462,
|
||||||
|
36463,
|
||||||
|
36464,
|
||||||
|
36482,
|
||||||
|
36483,
|
||||||
|
36484,
|
||||||
|
36485,
|
||||||
|
36486,
|
||||||
|
36487,
|
||||||
|
36488,
|
||||||
|
36506,
|
||||||
|
36507,
|
||||||
|
36508,
|
||||||
|
36509,
|
||||||
|
36510,
|
||||||
|
36511,
|
||||||
|
36512,
|
||||||
|
80066,
|
||||||
|
80067,
|
||||||
|
80068,
|
||||||
|
80069,
|
||||||
|
80070,
|
||||||
|
80071,
|
||||||
|
80072,
|
||||||
|
80073,
|
||||||
|
80074,
|
||||||
|
80075,
|
||||||
|
80076,
|
||||||
|
80077,
|
||||||
|
80078,
|
||||||
|
80079,
|
||||||
|
80080,
|
||||||
|
80081,
|
||||||
|
80082,
|
||||||
|
80083,
|
||||||
|
80084,
|
||||||
|
80085,
|
||||||
|
80086,
|
||||||
|
80087,
|
||||||
|
80088,
|
||||||
|
80089,
|
||||||
|
80315,
|
||||||
|
80316,
|
||||||
|
80317,
|
||||||
|
80318,
|
||||||
|
};
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||||
|
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||||
|
public void onPlayerLogin(OnPlayerLogin event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
final Weapon weapon = player.getActiveWeaponItem();
|
||||||
|
if ((weapon != null) && CommonUtil.contains(WEAPON_IDS, weapon.getId()))
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_EQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemEquip(OnPlayerItemEquip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_UNEQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemUnequip(OnPlayerItemUnequip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
new DragonWeaponListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -131,6 +131,7 @@ public class EffectMasterHandler
|
|||||||
EffectHandler.getInstance().registerHandler("DispelBySlotMyself", DispelBySlotMyself::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotMyself", DispelBySlotMyself::new);
|
||||||
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
||||||
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
||||||
|
EffectHandler.getInstance().registerHandler("DragonWeaponDefence", DragonWeaponDefence::new);
|
||||||
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
||||||
|
|||||||
Vendored
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* 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 org.l2jmobius.gameserver.model.StatSet;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Stat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponDefence extends AbstractStatPercentEffect
|
||||||
|
{
|
||||||
|
public DragonWeaponDefence(StatSet params)
|
||||||
|
{
|
||||||
|
super(params, Stat.DRAGON_WEAPON_DEFENCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -101,6 +101,7 @@ DispelBySlot: Removes given amount of target's effects by specified AbnormalType
|
|||||||
DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
||||||
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
||||||
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
||||||
|
DragonWeaponDefence: Dragon weapon defence stat. (l2jmobius)
|
||||||
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
||||||
EnableCloak: See/unsee cloaks.
|
EnableCloak: See/unsee cloaks.
|
||||||
EnemyCharge: Charges towards the enemy. Rush Impact.
|
EnemyCharge: Charges towards the enemy. Rush Impact.
|
||||||
|
|||||||
+12
@@ -750,6 +750,8 @@ public class PlayerInstance extends Playable
|
|||||||
private int _cursedWeaponEquippedId = 0;
|
private int _cursedWeaponEquippedId = 0;
|
||||||
private boolean _combatFlagEquippedId = false;
|
private boolean _combatFlagEquippedId = false;
|
||||||
|
|
||||||
|
private boolean _isDragonWeaponEquipped = false;
|
||||||
|
|
||||||
private boolean _canRevive = true;
|
private boolean _canRevive = true;
|
||||||
private int _reviveRequested = 0;
|
private int _reviveRequested = 0;
|
||||||
private double _revivePower = 0;
|
private double _revivePower = 0;
|
||||||
@@ -11385,6 +11387,16 @@ public class PlayerInstance extends Playable
|
|||||||
return _cursedWeaponEquippedId;
|
return _cursedWeaponEquippedId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDragonWeaponEquipped(boolean value)
|
||||||
|
{
|
||||||
|
_isDragonWeaponEquipped = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDragonWeaponEquipped()
|
||||||
|
{
|
||||||
|
return _isDragonWeaponEquipped;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCombatFlagEquipped()
|
public boolean isCombatFlagEquipped()
|
||||||
{
|
{
|
||||||
return _combatFlagEquippedId;
|
return _combatFlagEquippedId;
|
||||||
|
|||||||
@@ -1604,7 +1604,18 @@ public class Formulas
|
|||||||
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.max(0.05, 1 + (pvpAttack - pvpDefense)); // Bonus should not be negative.
|
// Dragon weapon defence stat.
|
||||||
|
final double dragonDefense;
|
||||||
|
if (attackerPlayer.isDragonWeaponEquipped())
|
||||||
|
{
|
||||||
|
dragonDefense = target.getStat().getValue(Stat.DRAGON_WEAPON_DEFENCE, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dragonDefense = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.max(0.05, dragonDefense * (1 + (pvpAttack - pvpDefense))); // Bonus should not be negative.
|
||||||
}
|
}
|
||||||
|
|
||||||
// PvE Bonus
|
// PvE Bonus
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public enum Stat
|
|||||||
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
||||||
HATE_ATTACK("attackHate"),
|
HATE_ATTACK("attackHate"),
|
||||||
REAR_DAMAGE_RATE("rearDamage"),
|
REAR_DAMAGE_RATE("rearDamage"),
|
||||||
|
DRAGON_WEAPON_DEFENCE("dragonWeaponDefence"),
|
||||||
|
|
||||||
// PVP BONUS
|
// PVP BONUS
|
||||||
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
||||||
|
|||||||
+455
@@ -0,0 +1,455 @@
|
|||||||
|
/*
|
||||||
|
* 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 ai.others;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
|
||||||
|
import org.l2jmobius.gameserver.model.items.Weapon;
|
||||||
|
|
||||||
|
import ai.AbstractNpcAI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponListeners extends AbstractNpcAI
|
||||||
|
{
|
||||||
|
private static final int[] WEAPON_IDS =
|
||||||
|
{
|
||||||
|
36417,
|
||||||
|
36418,
|
||||||
|
36419,
|
||||||
|
36420,
|
||||||
|
36421,
|
||||||
|
36422,
|
||||||
|
36423,
|
||||||
|
36424,
|
||||||
|
36425,
|
||||||
|
36426,
|
||||||
|
36441,
|
||||||
|
36442,
|
||||||
|
36443,
|
||||||
|
36444,
|
||||||
|
36445,
|
||||||
|
36446,
|
||||||
|
36447,
|
||||||
|
36448,
|
||||||
|
36449,
|
||||||
|
36450,
|
||||||
|
36465,
|
||||||
|
36466,
|
||||||
|
36467,
|
||||||
|
36468,
|
||||||
|
36469,
|
||||||
|
36470,
|
||||||
|
36471,
|
||||||
|
36472,
|
||||||
|
36473,
|
||||||
|
36474,
|
||||||
|
36489,
|
||||||
|
36490,
|
||||||
|
36491,
|
||||||
|
36492,
|
||||||
|
36493,
|
||||||
|
36494,
|
||||||
|
36495,
|
||||||
|
36496,
|
||||||
|
36497,
|
||||||
|
36498,
|
||||||
|
36427,
|
||||||
|
36428,
|
||||||
|
36429,
|
||||||
|
36430,
|
||||||
|
36431,
|
||||||
|
36432,
|
||||||
|
36433,
|
||||||
|
36451,
|
||||||
|
36452,
|
||||||
|
36453,
|
||||||
|
36454,
|
||||||
|
36455,
|
||||||
|
36456,
|
||||||
|
36457,
|
||||||
|
36475,
|
||||||
|
36476,
|
||||||
|
36477,
|
||||||
|
36478,
|
||||||
|
36479,
|
||||||
|
36480,
|
||||||
|
36481,
|
||||||
|
36499,
|
||||||
|
36500,
|
||||||
|
36501,
|
||||||
|
36502,
|
||||||
|
36503,
|
||||||
|
36504,
|
||||||
|
36505,
|
||||||
|
36434,
|
||||||
|
36435,
|
||||||
|
36436,
|
||||||
|
36437,
|
||||||
|
36438,
|
||||||
|
36439,
|
||||||
|
36440,
|
||||||
|
36458,
|
||||||
|
36459,
|
||||||
|
36460,
|
||||||
|
36461,
|
||||||
|
36462,
|
||||||
|
36463,
|
||||||
|
36464,
|
||||||
|
36482,
|
||||||
|
36483,
|
||||||
|
36484,
|
||||||
|
36485,
|
||||||
|
36486,
|
||||||
|
36487,
|
||||||
|
36488,
|
||||||
|
36506,
|
||||||
|
36507,
|
||||||
|
36508,
|
||||||
|
36509,
|
||||||
|
36510,
|
||||||
|
36511,
|
||||||
|
36512,
|
||||||
|
80066,
|
||||||
|
80067,
|
||||||
|
80068,
|
||||||
|
80069,
|
||||||
|
80070,
|
||||||
|
80071,
|
||||||
|
80072,
|
||||||
|
80073,
|
||||||
|
80074,
|
||||||
|
80075,
|
||||||
|
80076,
|
||||||
|
80077,
|
||||||
|
80078,
|
||||||
|
80079,
|
||||||
|
80080,
|
||||||
|
80081,
|
||||||
|
80082,
|
||||||
|
80083,
|
||||||
|
80084,
|
||||||
|
80085,
|
||||||
|
80086,
|
||||||
|
80087,
|
||||||
|
80088,
|
||||||
|
80089,
|
||||||
|
80315,
|
||||||
|
80316,
|
||||||
|
80317,
|
||||||
|
80318,
|
||||||
|
};
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||||
|
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||||
|
public void onPlayerLogin(OnPlayerLogin event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
final Weapon weapon = player.getActiveWeaponItem();
|
||||||
|
if ((weapon != null) && CommonUtil.contains(WEAPON_IDS, weapon.getId()))
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_EQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemEquip(OnPlayerItemEquip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_UNEQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemUnequip(OnPlayerItemUnequip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
new DragonWeaponListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -131,6 +131,7 @@ public class EffectMasterHandler
|
|||||||
EffectHandler.getInstance().registerHandler("DispelBySlotMyself", DispelBySlotMyself::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotMyself", DispelBySlotMyself::new);
|
||||||
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
||||||
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
||||||
|
EffectHandler.getInstance().registerHandler("DragonWeaponDefence", DragonWeaponDefence::new);
|
||||||
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
||||||
|
|||||||
Vendored
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* 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 org.l2jmobius.gameserver.model.StatSet;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Stat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponDefence extends AbstractStatPercentEffect
|
||||||
|
{
|
||||||
|
public DragonWeaponDefence(StatSet params)
|
||||||
|
{
|
||||||
|
super(params, Stat.DRAGON_WEAPON_DEFENCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -101,6 +101,7 @@ DispelBySlot: Removes given amount of target's effects by specified AbnormalType
|
|||||||
DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
||||||
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
||||||
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
||||||
|
DragonWeaponDefence: Dragon weapon defence stat. (l2jmobius)
|
||||||
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
||||||
EnableCloak: See/unsee cloaks.
|
EnableCloak: See/unsee cloaks.
|
||||||
EnemyCharge: Charges towards the enemy. Rush Impact.
|
EnemyCharge: Charges towards the enemy. Rush Impact.
|
||||||
|
|||||||
+12
@@ -752,6 +752,8 @@ public class PlayerInstance extends Playable
|
|||||||
private int _cursedWeaponEquippedId = 0;
|
private int _cursedWeaponEquippedId = 0;
|
||||||
private boolean _combatFlagEquippedId = false;
|
private boolean _combatFlagEquippedId = false;
|
||||||
|
|
||||||
|
private boolean _isDragonWeaponEquipped = false;
|
||||||
|
|
||||||
private boolean _canRevive = true;
|
private boolean _canRevive = true;
|
||||||
private int _reviveRequested = 0;
|
private int _reviveRequested = 0;
|
||||||
private double _revivePower = 0;
|
private double _revivePower = 0;
|
||||||
@@ -11387,6 +11389,16 @@ public class PlayerInstance extends Playable
|
|||||||
return _cursedWeaponEquippedId;
|
return _cursedWeaponEquippedId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDragonWeaponEquipped(boolean value)
|
||||||
|
{
|
||||||
|
_isDragonWeaponEquipped = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDragonWeaponEquipped()
|
||||||
|
{
|
||||||
|
return _isDragonWeaponEquipped;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCombatFlagEquipped()
|
public boolean isCombatFlagEquipped()
|
||||||
{
|
{
|
||||||
return _combatFlagEquippedId;
|
return _combatFlagEquippedId;
|
||||||
|
|||||||
@@ -1604,7 +1604,18 @@ public class Formulas
|
|||||||
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.max(0.05, 1 + (pvpAttack - pvpDefense)); // Bonus should not be negative.
|
// Dragon weapon defence stat.
|
||||||
|
final double dragonDefense;
|
||||||
|
if (attackerPlayer.isDragonWeaponEquipped())
|
||||||
|
{
|
||||||
|
dragonDefense = target.getStat().getValue(Stat.DRAGON_WEAPON_DEFENCE, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dragonDefense = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.max(0.05, dragonDefense * (1 + (pvpAttack - pvpDefense))); // Bonus should not be negative.
|
||||||
}
|
}
|
||||||
|
|
||||||
// PvE Bonus
|
// PvE Bonus
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public enum Stat
|
|||||||
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
||||||
HATE_ATTACK("attackHate"),
|
HATE_ATTACK("attackHate"),
|
||||||
REAR_DAMAGE_RATE("rearDamage"),
|
REAR_DAMAGE_RATE("rearDamage"),
|
||||||
|
DRAGON_WEAPON_DEFENCE("dragonWeaponDefence"),
|
||||||
|
|
||||||
// PVP BONUS
|
// PVP BONUS
|
||||||
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
||||||
|
|||||||
+455
@@ -0,0 +1,455 @@
|
|||||||
|
/*
|
||||||
|
* 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 ai.others;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
|
||||||
|
import org.l2jmobius.gameserver.model.items.Weapon;
|
||||||
|
|
||||||
|
import ai.AbstractNpcAI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponListeners extends AbstractNpcAI
|
||||||
|
{
|
||||||
|
private static final int[] WEAPON_IDS =
|
||||||
|
{
|
||||||
|
36417,
|
||||||
|
36418,
|
||||||
|
36419,
|
||||||
|
36420,
|
||||||
|
36421,
|
||||||
|
36422,
|
||||||
|
36423,
|
||||||
|
36424,
|
||||||
|
36425,
|
||||||
|
36426,
|
||||||
|
36441,
|
||||||
|
36442,
|
||||||
|
36443,
|
||||||
|
36444,
|
||||||
|
36445,
|
||||||
|
36446,
|
||||||
|
36447,
|
||||||
|
36448,
|
||||||
|
36449,
|
||||||
|
36450,
|
||||||
|
36465,
|
||||||
|
36466,
|
||||||
|
36467,
|
||||||
|
36468,
|
||||||
|
36469,
|
||||||
|
36470,
|
||||||
|
36471,
|
||||||
|
36472,
|
||||||
|
36473,
|
||||||
|
36474,
|
||||||
|
36489,
|
||||||
|
36490,
|
||||||
|
36491,
|
||||||
|
36492,
|
||||||
|
36493,
|
||||||
|
36494,
|
||||||
|
36495,
|
||||||
|
36496,
|
||||||
|
36497,
|
||||||
|
36498,
|
||||||
|
36427,
|
||||||
|
36428,
|
||||||
|
36429,
|
||||||
|
36430,
|
||||||
|
36431,
|
||||||
|
36432,
|
||||||
|
36433,
|
||||||
|
36451,
|
||||||
|
36452,
|
||||||
|
36453,
|
||||||
|
36454,
|
||||||
|
36455,
|
||||||
|
36456,
|
||||||
|
36457,
|
||||||
|
36475,
|
||||||
|
36476,
|
||||||
|
36477,
|
||||||
|
36478,
|
||||||
|
36479,
|
||||||
|
36480,
|
||||||
|
36481,
|
||||||
|
36499,
|
||||||
|
36500,
|
||||||
|
36501,
|
||||||
|
36502,
|
||||||
|
36503,
|
||||||
|
36504,
|
||||||
|
36505,
|
||||||
|
36434,
|
||||||
|
36435,
|
||||||
|
36436,
|
||||||
|
36437,
|
||||||
|
36438,
|
||||||
|
36439,
|
||||||
|
36440,
|
||||||
|
36458,
|
||||||
|
36459,
|
||||||
|
36460,
|
||||||
|
36461,
|
||||||
|
36462,
|
||||||
|
36463,
|
||||||
|
36464,
|
||||||
|
36482,
|
||||||
|
36483,
|
||||||
|
36484,
|
||||||
|
36485,
|
||||||
|
36486,
|
||||||
|
36487,
|
||||||
|
36488,
|
||||||
|
36506,
|
||||||
|
36507,
|
||||||
|
36508,
|
||||||
|
36509,
|
||||||
|
36510,
|
||||||
|
36511,
|
||||||
|
36512,
|
||||||
|
80066,
|
||||||
|
80067,
|
||||||
|
80068,
|
||||||
|
80069,
|
||||||
|
80070,
|
||||||
|
80071,
|
||||||
|
80072,
|
||||||
|
80073,
|
||||||
|
80074,
|
||||||
|
80075,
|
||||||
|
80076,
|
||||||
|
80077,
|
||||||
|
80078,
|
||||||
|
80079,
|
||||||
|
80080,
|
||||||
|
80081,
|
||||||
|
80082,
|
||||||
|
80083,
|
||||||
|
80084,
|
||||||
|
80085,
|
||||||
|
80086,
|
||||||
|
80087,
|
||||||
|
80088,
|
||||||
|
80089,
|
||||||
|
80315,
|
||||||
|
80316,
|
||||||
|
80317,
|
||||||
|
80318,
|
||||||
|
};
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||||
|
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||||
|
public void onPlayerLogin(OnPlayerLogin event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
final Weapon weapon = player.getActiveWeaponItem();
|
||||||
|
if ((weapon != null) && CommonUtil.contains(WEAPON_IDS, weapon.getId()))
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_EQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemEquip(OnPlayerItemEquip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_UNEQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemUnequip(OnPlayerItemUnequip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
new DragonWeaponListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -135,6 +135,7 @@ public class EffectMasterHandler
|
|||||||
EffectHandler.getInstance().registerHandler("DispelBySlotMyself", DispelBySlotMyself::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotMyself", DispelBySlotMyself::new);
|
||||||
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
||||||
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
||||||
|
EffectHandler.getInstance().registerHandler("DragonWeaponDefence", DragonWeaponDefence::new);
|
||||||
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
||||||
|
|||||||
Vendored
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* 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 org.l2jmobius.gameserver.model.StatSet;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Stat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponDefence extends AbstractStatPercentEffect
|
||||||
|
{
|
||||||
|
public DragonWeaponDefence(StatSet params)
|
||||||
|
{
|
||||||
|
super(params, Stat.DRAGON_WEAPON_DEFENCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -105,6 +105,7 @@ DispelBySlot: Removes given amount of target's effects by specified AbnormalType
|
|||||||
DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
||||||
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
||||||
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
||||||
|
DragonWeaponDefence: Dragon weapon defence stat. (l2jmobius)
|
||||||
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
||||||
EnableCloak: See/unsee cloaks.
|
EnableCloak: See/unsee cloaks.
|
||||||
EnemyCharge: Charges towards the enemy. Rush Impact.
|
EnemyCharge: Charges towards the enemy. Rush Impact.
|
||||||
|
|||||||
+12
@@ -757,6 +757,8 @@ public class PlayerInstance extends Playable
|
|||||||
private int _cursedWeaponEquippedId = 0;
|
private int _cursedWeaponEquippedId = 0;
|
||||||
private boolean _combatFlagEquippedId = false;
|
private boolean _combatFlagEquippedId = false;
|
||||||
|
|
||||||
|
private boolean _isDragonWeaponEquipped = false;
|
||||||
|
|
||||||
private boolean _canRevive = true;
|
private boolean _canRevive = true;
|
||||||
private int _reviveRequested = 0;
|
private int _reviveRequested = 0;
|
||||||
private double _revivePower = 0;
|
private double _revivePower = 0;
|
||||||
@@ -11368,6 +11370,16 @@ public class PlayerInstance extends Playable
|
|||||||
return _cursedWeaponEquippedId;
|
return _cursedWeaponEquippedId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDragonWeaponEquipped(boolean value)
|
||||||
|
{
|
||||||
|
_isDragonWeaponEquipped = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDragonWeaponEquipped()
|
||||||
|
{
|
||||||
|
return _isDragonWeaponEquipped;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCombatFlagEquipped()
|
public boolean isCombatFlagEquipped()
|
||||||
{
|
{
|
||||||
return _combatFlagEquippedId;
|
return _combatFlagEquippedId;
|
||||||
|
|||||||
+12
-1
@@ -1604,7 +1604,18 @@ public class Formulas
|
|||||||
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.max(0.05, 1 + (pvpAttack - pvpDefense)); // Bonus should not be negative.
|
// Dragon weapon defence stat.
|
||||||
|
final double dragonDefense;
|
||||||
|
if (attackerPlayer.isDragonWeaponEquipped())
|
||||||
|
{
|
||||||
|
dragonDefense = target.getStat().getValue(Stat.DRAGON_WEAPON_DEFENCE, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dragonDefense = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.max(0.05, dragonDefense * (1 + (pvpAttack - pvpDefense))); // Bonus should not be negative.
|
||||||
}
|
}
|
||||||
|
|
||||||
// PvE Bonus
|
// PvE Bonus
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public enum Stat
|
|||||||
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
||||||
HATE_ATTACK("attackHate"),
|
HATE_ATTACK("attackHate"),
|
||||||
REAR_DAMAGE_RATE("rearDamage"),
|
REAR_DAMAGE_RATE("rearDamage"),
|
||||||
|
DRAGON_WEAPON_DEFENCE("dragonWeaponDefence"),
|
||||||
|
|
||||||
// PVP BONUS
|
// PVP BONUS
|
||||||
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
||||||
|
|||||||
+455
@@ -0,0 +1,455 @@
|
|||||||
|
/*
|
||||||
|
* 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 ai.others;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
|
||||||
|
import org.l2jmobius.gameserver.model.items.Weapon;
|
||||||
|
|
||||||
|
import ai.AbstractNpcAI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponListeners extends AbstractNpcAI
|
||||||
|
{
|
||||||
|
private static final int[] WEAPON_IDS =
|
||||||
|
{
|
||||||
|
36417,
|
||||||
|
36418,
|
||||||
|
36419,
|
||||||
|
36420,
|
||||||
|
36421,
|
||||||
|
36422,
|
||||||
|
36423,
|
||||||
|
36424,
|
||||||
|
36425,
|
||||||
|
36426,
|
||||||
|
36441,
|
||||||
|
36442,
|
||||||
|
36443,
|
||||||
|
36444,
|
||||||
|
36445,
|
||||||
|
36446,
|
||||||
|
36447,
|
||||||
|
36448,
|
||||||
|
36449,
|
||||||
|
36450,
|
||||||
|
36465,
|
||||||
|
36466,
|
||||||
|
36467,
|
||||||
|
36468,
|
||||||
|
36469,
|
||||||
|
36470,
|
||||||
|
36471,
|
||||||
|
36472,
|
||||||
|
36473,
|
||||||
|
36474,
|
||||||
|
36489,
|
||||||
|
36490,
|
||||||
|
36491,
|
||||||
|
36492,
|
||||||
|
36493,
|
||||||
|
36494,
|
||||||
|
36495,
|
||||||
|
36496,
|
||||||
|
36497,
|
||||||
|
36498,
|
||||||
|
36427,
|
||||||
|
36428,
|
||||||
|
36429,
|
||||||
|
36430,
|
||||||
|
36431,
|
||||||
|
36432,
|
||||||
|
36433,
|
||||||
|
36451,
|
||||||
|
36452,
|
||||||
|
36453,
|
||||||
|
36454,
|
||||||
|
36455,
|
||||||
|
36456,
|
||||||
|
36457,
|
||||||
|
36475,
|
||||||
|
36476,
|
||||||
|
36477,
|
||||||
|
36478,
|
||||||
|
36479,
|
||||||
|
36480,
|
||||||
|
36481,
|
||||||
|
36499,
|
||||||
|
36500,
|
||||||
|
36501,
|
||||||
|
36502,
|
||||||
|
36503,
|
||||||
|
36504,
|
||||||
|
36505,
|
||||||
|
36434,
|
||||||
|
36435,
|
||||||
|
36436,
|
||||||
|
36437,
|
||||||
|
36438,
|
||||||
|
36439,
|
||||||
|
36440,
|
||||||
|
36458,
|
||||||
|
36459,
|
||||||
|
36460,
|
||||||
|
36461,
|
||||||
|
36462,
|
||||||
|
36463,
|
||||||
|
36464,
|
||||||
|
36482,
|
||||||
|
36483,
|
||||||
|
36484,
|
||||||
|
36485,
|
||||||
|
36486,
|
||||||
|
36487,
|
||||||
|
36488,
|
||||||
|
36506,
|
||||||
|
36507,
|
||||||
|
36508,
|
||||||
|
36509,
|
||||||
|
36510,
|
||||||
|
36511,
|
||||||
|
36512,
|
||||||
|
80066,
|
||||||
|
80067,
|
||||||
|
80068,
|
||||||
|
80069,
|
||||||
|
80070,
|
||||||
|
80071,
|
||||||
|
80072,
|
||||||
|
80073,
|
||||||
|
80074,
|
||||||
|
80075,
|
||||||
|
80076,
|
||||||
|
80077,
|
||||||
|
80078,
|
||||||
|
80079,
|
||||||
|
80080,
|
||||||
|
80081,
|
||||||
|
80082,
|
||||||
|
80083,
|
||||||
|
80084,
|
||||||
|
80085,
|
||||||
|
80086,
|
||||||
|
80087,
|
||||||
|
80088,
|
||||||
|
80089,
|
||||||
|
80315,
|
||||||
|
80316,
|
||||||
|
80317,
|
||||||
|
80318,
|
||||||
|
};
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||||
|
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||||
|
public void onPlayerLogin(OnPlayerLogin event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
final Weapon weapon = player.getActiveWeaponItem();
|
||||||
|
if ((weapon != null) && CommonUtil.contains(WEAPON_IDS, weapon.getId()))
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_EQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemEquip(OnPlayerItemEquip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_UNEQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemUnequip(OnPlayerItemUnequip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
new DragonWeaponListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -137,6 +137,7 @@ public class EffectMasterHandler
|
|||||||
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
||||||
EffectHandler.getInstance().registerHandler("DispelCaster", DispelCaster::new);
|
EffectHandler.getInstance().registerHandler("DispelCaster", DispelCaster::new);
|
||||||
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
||||||
|
EffectHandler.getInstance().registerHandler("DragonWeaponDefence", DragonWeaponDefence::new);
|
||||||
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
||||||
|
|||||||
Vendored
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* 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 org.l2jmobius.gameserver.model.StatSet;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Stat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponDefence extends AbstractStatPercentEffect
|
||||||
|
{
|
||||||
|
public DragonWeaponDefence(StatSet params)
|
||||||
|
{
|
||||||
|
super(params, Stat.DRAGON_WEAPON_DEFENCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -107,6 +107,7 @@ DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
|||||||
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
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)
|
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.
|
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
||||||
|
DragonWeaponDefence: Dragon weapon defence stat. (l2jmobius)
|
||||||
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
||||||
EnableCloak: See/unsee cloaks.
|
EnableCloak: See/unsee cloaks.
|
||||||
EnemyCharge: Charges towards the enemy. Rush Impact.
|
EnemyCharge: Charges towards the enemy. Rush Impact.
|
||||||
|
|||||||
+12
@@ -753,6 +753,8 @@ public class PlayerInstance extends Playable
|
|||||||
private int _cursedWeaponEquippedId = 0;
|
private int _cursedWeaponEquippedId = 0;
|
||||||
private boolean _combatFlagEquippedId = false;
|
private boolean _combatFlagEquippedId = false;
|
||||||
|
|
||||||
|
private boolean _isDragonWeaponEquipped = false;
|
||||||
|
|
||||||
private boolean _canRevive = true;
|
private boolean _canRevive = true;
|
||||||
private int _reviveRequested = 0;
|
private int _reviveRequested = 0;
|
||||||
private double _revivePower = 0;
|
private double _revivePower = 0;
|
||||||
@@ -11355,6 +11357,16 @@ public class PlayerInstance extends Playable
|
|||||||
return _cursedWeaponEquippedId;
|
return _cursedWeaponEquippedId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDragonWeaponEquipped(boolean value)
|
||||||
|
{
|
||||||
|
_isDragonWeaponEquipped = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDragonWeaponEquipped()
|
||||||
|
{
|
||||||
|
return _isDragonWeaponEquipped;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCombatFlagEquipped()
|
public boolean isCombatFlagEquipped()
|
||||||
{
|
{
|
||||||
return _combatFlagEquippedId;
|
return _combatFlagEquippedId;
|
||||||
|
|||||||
@@ -1604,7 +1604,18 @@ public class Formulas
|
|||||||
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.max(0.05, 1 + (pvpAttack - pvpDefense)); // Bonus should not be negative.
|
// Dragon weapon defence stat.
|
||||||
|
final double dragonDefense;
|
||||||
|
if (attackerPlayer.isDragonWeaponEquipped())
|
||||||
|
{
|
||||||
|
dragonDefense = target.getStat().getValue(Stat.DRAGON_WEAPON_DEFENCE, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dragonDefense = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.max(0.05, dragonDefense * (1 + (pvpAttack - pvpDefense))); // Bonus should not be negative.
|
||||||
}
|
}
|
||||||
|
|
||||||
// PvE Bonus
|
// PvE Bonus
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public enum Stat
|
|||||||
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
||||||
HATE_ATTACK("attackHate"),
|
HATE_ATTACK("attackHate"),
|
||||||
REAR_DAMAGE_RATE("rearDamage"),
|
REAR_DAMAGE_RATE("rearDamage"),
|
||||||
|
DRAGON_WEAPON_DEFENCE("dragonWeaponDefence"),
|
||||||
|
|
||||||
// PVP BONUS
|
// PVP BONUS
|
||||||
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
||||||
|
|||||||
+455
@@ -0,0 +1,455 @@
|
|||||||
|
/*
|
||||||
|
* 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 ai.others;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
|
||||||
|
import org.l2jmobius.gameserver.model.items.Weapon;
|
||||||
|
|
||||||
|
import ai.AbstractNpcAI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponListeners extends AbstractNpcAI
|
||||||
|
{
|
||||||
|
private static final int[] WEAPON_IDS =
|
||||||
|
{
|
||||||
|
36417,
|
||||||
|
36418,
|
||||||
|
36419,
|
||||||
|
36420,
|
||||||
|
36421,
|
||||||
|
36422,
|
||||||
|
36423,
|
||||||
|
36424,
|
||||||
|
36425,
|
||||||
|
36426,
|
||||||
|
36441,
|
||||||
|
36442,
|
||||||
|
36443,
|
||||||
|
36444,
|
||||||
|
36445,
|
||||||
|
36446,
|
||||||
|
36447,
|
||||||
|
36448,
|
||||||
|
36449,
|
||||||
|
36450,
|
||||||
|
36465,
|
||||||
|
36466,
|
||||||
|
36467,
|
||||||
|
36468,
|
||||||
|
36469,
|
||||||
|
36470,
|
||||||
|
36471,
|
||||||
|
36472,
|
||||||
|
36473,
|
||||||
|
36474,
|
||||||
|
36489,
|
||||||
|
36490,
|
||||||
|
36491,
|
||||||
|
36492,
|
||||||
|
36493,
|
||||||
|
36494,
|
||||||
|
36495,
|
||||||
|
36496,
|
||||||
|
36497,
|
||||||
|
36498,
|
||||||
|
36427,
|
||||||
|
36428,
|
||||||
|
36429,
|
||||||
|
36430,
|
||||||
|
36431,
|
||||||
|
36432,
|
||||||
|
36433,
|
||||||
|
36451,
|
||||||
|
36452,
|
||||||
|
36453,
|
||||||
|
36454,
|
||||||
|
36455,
|
||||||
|
36456,
|
||||||
|
36457,
|
||||||
|
36475,
|
||||||
|
36476,
|
||||||
|
36477,
|
||||||
|
36478,
|
||||||
|
36479,
|
||||||
|
36480,
|
||||||
|
36481,
|
||||||
|
36499,
|
||||||
|
36500,
|
||||||
|
36501,
|
||||||
|
36502,
|
||||||
|
36503,
|
||||||
|
36504,
|
||||||
|
36505,
|
||||||
|
36434,
|
||||||
|
36435,
|
||||||
|
36436,
|
||||||
|
36437,
|
||||||
|
36438,
|
||||||
|
36439,
|
||||||
|
36440,
|
||||||
|
36458,
|
||||||
|
36459,
|
||||||
|
36460,
|
||||||
|
36461,
|
||||||
|
36462,
|
||||||
|
36463,
|
||||||
|
36464,
|
||||||
|
36482,
|
||||||
|
36483,
|
||||||
|
36484,
|
||||||
|
36485,
|
||||||
|
36486,
|
||||||
|
36487,
|
||||||
|
36488,
|
||||||
|
36506,
|
||||||
|
36507,
|
||||||
|
36508,
|
||||||
|
36509,
|
||||||
|
36510,
|
||||||
|
36511,
|
||||||
|
36512,
|
||||||
|
80066,
|
||||||
|
80067,
|
||||||
|
80068,
|
||||||
|
80069,
|
||||||
|
80070,
|
||||||
|
80071,
|
||||||
|
80072,
|
||||||
|
80073,
|
||||||
|
80074,
|
||||||
|
80075,
|
||||||
|
80076,
|
||||||
|
80077,
|
||||||
|
80078,
|
||||||
|
80079,
|
||||||
|
80080,
|
||||||
|
80081,
|
||||||
|
80082,
|
||||||
|
80083,
|
||||||
|
80084,
|
||||||
|
80085,
|
||||||
|
80086,
|
||||||
|
80087,
|
||||||
|
80088,
|
||||||
|
80089,
|
||||||
|
80315,
|
||||||
|
80316,
|
||||||
|
80317,
|
||||||
|
80318,
|
||||||
|
};
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||||
|
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||||
|
public void onPlayerLogin(OnPlayerLogin event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
final Weapon weapon = player.getActiveWeaponItem();
|
||||||
|
if ((weapon != null) && CommonUtil.contains(WEAPON_IDS, weapon.getId()))
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_EQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemEquip(OnPlayerItemEquip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_UNEQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemUnequip(OnPlayerItemUnequip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
new DragonWeaponListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -138,6 +138,7 @@ public class EffectMasterHandler
|
|||||||
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
||||||
EffectHandler.getInstance().registerHandler("DispelCaster", DispelCaster::new);
|
EffectHandler.getInstance().registerHandler("DispelCaster", DispelCaster::new);
|
||||||
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
||||||
|
EffectHandler.getInstance().registerHandler("DragonWeaponDefence", DragonWeaponDefence::new);
|
||||||
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
||||||
|
|||||||
Vendored
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* 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 org.l2jmobius.gameserver.model.StatSet;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Stat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponDefence extends AbstractStatPercentEffect
|
||||||
|
{
|
||||||
|
public DragonWeaponDefence(StatSet params)
|
||||||
|
{
|
||||||
|
super(params, Stat.DRAGON_WEAPON_DEFENCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -108,6 +108,7 @@ DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
|||||||
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
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)
|
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.
|
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
||||||
|
DragonWeaponDefence: Dragon weapon defence stat. (l2jmobius)
|
||||||
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
||||||
EnableCloak: See/unsee cloaks.
|
EnableCloak: See/unsee cloaks.
|
||||||
EnemyCharge: Charges towards the enemy. Rush Impact.
|
EnemyCharge: Charges towards the enemy. Rush Impact.
|
||||||
|
|||||||
+12
@@ -753,6 +753,8 @@ public class PlayerInstance extends Playable
|
|||||||
private int _cursedWeaponEquippedId = 0;
|
private int _cursedWeaponEquippedId = 0;
|
||||||
private boolean _combatFlagEquippedId = false;
|
private boolean _combatFlagEquippedId = false;
|
||||||
|
|
||||||
|
private boolean _isDragonWeaponEquipped = false;
|
||||||
|
|
||||||
private boolean _canRevive = true;
|
private boolean _canRevive = true;
|
||||||
private int _reviveRequested = 0;
|
private int _reviveRequested = 0;
|
||||||
private double _revivePower = 0;
|
private double _revivePower = 0;
|
||||||
@@ -11358,6 +11360,16 @@ public class PlayerInstance extends Playable
|
|||||||
return _cursedWeaponEquippedId;
|
return _cursedWeaponEquippedId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDragonWeaponEquipped(boolean value)
|
||||||
|
{
|
||||||
|
_isDragonWeaponEquipped = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDragonWeaponEquipped()
|
||||||
|
{
|
||||||
|
return _isDragonWeaponEquipped;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCombatFlagEquipped()
|
public boolean isCombatFlagEquipped()
|
||||||
{
|
{
|
||||||
return _combatFlagEquippedId;
|
return _combatFlagEquippedId;
|
||||||
|
|||||||
@@ -1604,7 +1604,18 @@ public class Formulas
|
|||||||
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.max(0.05, 1 + (pvpAttack - pvpDefense)); // Bonus should not be negative.
|
// Dragon weapon defence stat.
|
||||||
|
final double dragonDefense;
|
||||||
|
if (attackerPlayer.isDragonWeaponEquipped())
|
||||||
|
{
|
||||||
|
dragonDefense = target.getStat().getValue(Stat.DRAGON_WEAPON_DEFENCE, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dragonDefense = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.max(0.05, dragonDefense * (1 + (pvpAttack - pvpDefense))); // Bonus should not be negative.
|
||||||
}
|
}
|
||||||
|
|
||||||
// PvE Bonus
|
// PvE Bonus
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public enum Stat
|
|||||||
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
||||||
HATE_ATTACK("attackHate"),
|
HATE_ATTACK("attackHate"),
|
||||||
REAR_DAMAGE_RATE("rearDamage"),
|
REAR_DAMAGE_RATE("rearDamage"),
|
||||||
|
DRAGON_WEAPON_DEFENCE("dragonWeaponDefence"),
|
||||||
|
|
||||||
// PVP BONUS
|
// PVP BONUS
|
||||||
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
||||||
|
|||||||
+455
@@ -0,0 +1,455 @@
|
|||||||
|
/*
|
||||||
|
* 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 ai.others;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
|
||||||
|
import org.l2jmobius.gameserver.model.items.Weapon;
|
||||||
|
|
||||||
|
import ai.AbstractNpcAI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponListeners extends AbstractNpcAI
|
||||||
|
{
|
||||||
|
private static final int[] WEAPON_IDS =
|
||||||
|
{
|
||||||
|
36417,
|
||||||
|
36418,
|
||||||
|
36419,
|
||||||
|
36420,
|
||||||
|
36421,
|
||||||
|
36422,
|
||||||
|
36423,
|
||||||
|
36424,
|
||||||
|
36425,
|
||||||
|
36426,
|
||||||
|
36441,
|
||||||
|
36442,
|
||||||
|
36443,
|
||||||
|
36444,
|
||||||
|
36445,
|
||||||
|
36446,
|
||||||
|
36447,
|
||||||
|
36448,
|
||||||
|
36449,
|
||||||
|
36450,
|
||||||
|
36465,
|
||||||
|
36466,
|
||||||
|
36467,
|
||||||
|
36468,
|
||||||
|
36469,
|
||||||
|
36470,
|
||||||
|
36471,
|
||||||
|
36472,
|
||||||
|
36473,
|
||||||
|
36474,
|
||||||
|
36489,
|
||||||
|
36490,
|
||||||
|
36491,
|
||||||
|
36492,
|
||||||
|
36493,
|
||||||
|
36494,
|
||||||
|
36495,
|
||||||
|
36496,
|
||||||
|
36497,
|
||||||
|
36498,
|
||||||
|
36427,
|
||||||
|
36428,
|
||||||
|
36429,
|
||||||
|
36430,
|
||||||
|
36431,
|
||||||
|
36432,
|
||||||
|
36433,
|
||||||
|
36451,
|
||||||
|
36452,
|
||||||
|
36453,
|
||||||
|
36454,
|
||||||
|
36455,
|
||||||
|
36456,
|
||||||
|
36457,
|
||||||
|
36475,
|
||||||
|
36476,
|
||||||
|
36477,
|
||||||
|
36478,
|
||||||
|
36479,
|
||||||
|
36480,
|
||||||
|
36481,
|
||||||
|
36499,
|
||||||
|
36500,
|
||||||
|
36501,
|
||||||
|
36502,
|
||||||
|
36503,
|
||||||
|
36504,
|
||||||
|
36505,
|
||||||
|
36434,
|
||||||
|
36435,
|
||||||
|
36436,
|
||||||
|
36437,
|
||||||
|
36438,
|
||||||
|
36439,
|
||||||
|
36440,
|
||||||
|
36458,
|
||||||
|
36459,
|
||||||
|
36460,
|
||||||
|
36461,
|
||||||
|
36462,
|
||||||
|
36463,
|
||||||
|
36464,
|
||||||
|
36482,
|
||||||
|
36483,
|
||||||
|
36484,
|
||||||
|
36485,
|
||||||
|
36486,
|
||||||
|
36487,
|
||||||
|
36488,
|
||||||
|
36506,
|
||||||
|
36507,
|
||||||
|
36508,
|
||||||
|
36509,
|
||||||
|
36510,
|
||||||
|
36511,
|
||||||
|
36512,
|
||||||
|
80066,
|
||||||
|
80067,
|
||||||
|
80068,
|
||||||
|
80069,
|
||||||
|
80070,
|
||||||
|
80071,
|
||||||
|
80072,
|
||||||
|
80073,
|
||||||
|
80074,
|
||||||
|
80075,
|
||||||
|
80076,
|
||||||
|
80077,
|
||||||
|
80078,
|
||||||
|
80079,
|
||||||
|
80080,
|
||||||
|
80081,
|
||||||
|
80082,
|
||||||
|
80083,
|
||||||
|
80084,
|
||||||
|
80085,
|
||||||
|
80086,
|
||||||
|
80087,
|
||||||
|
80088,
|
||||||
|
80089,
|
||||||
|
80315,
|
||||||
|
80316,
|
||||||
|
80317,
|
||||||
|
80318,
|
||||||
|
};
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||||
|
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||||
|
public void onPlayerLogin(OnPlayerLogin event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
final Weapon weapon = player.getActiveWeaponItem();
|
||||||
|
if ((weapon != null) && CommonUtil.contains(WEAPON_IDS, weapon.getId()))
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_EQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemEquip(OnPlayerItemEquip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_UNEQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemUnequip(OnPlayerItemUnequip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
new DragonWeaponListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -138,6 +138,7 @@ public class EffectMasterHandler
|
|||||||
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
||||||
EffectHandler.getInstance().registerHandler("DispelCaster", DispelCaster::new);
|
EffectHandler.getInstance().registerHandler("DispelCaster", DispelCaster::new);
|
||||||
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
||||||
|
EffectHandler.getInstance().registerHandler("DragonWeaponDefence", DragonWeaponDefence::new);
|
||||||
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
||||||
|
|||||||
Vendored
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* 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 org.l2jmobius.gameserver.model.StatSet;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Stat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponDefence extends AbstractStatPercentEffect
|
||||||
|
{
|
||||||
|
public DragonWeaponDefence(StatSet params)
|
||||||
|
{
|
||||||
|
super(params, Stat.DRAGON_WEAPON_DEFENCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -108,6 +108,7 @@ DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
|||||||
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
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)
|
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.
|
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
||||||
|
DragonWeaponDefence: Dragon weapon defence stat. (l2jmobius)
|
||||||
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
||||||
EnableCloak: See/unsee cloaks.
|
EnableCloak: See/unsee cloaks.
|
||||||
EnemyCharge: Charges towards the enemy. Rush Impact.
|
EnemyCharge: Charges towards the enemy. Rush Impact.
|
||||||
|
|||||||
+12
@@ -753,6 +753,8 @@ public class PlayerInstance extends Playable
|
|||||||
private int _cursedWeaponEquippedId = 0;
|
private int _cursedWeaponEquippedId = 0;
|
||||||
private boolean _combatFlagEquippedId = false;
|
private boolean _combatFlagEquippedId = false;
|
||||||
|
|
||||||
|
private boolean _isDragonWeaponEquipped = false;
|
||||||
|
|
||||||
private boolean _canRevive = true;
|
private boolean _canRevive = true;
|
||||||
private int _reviveRequested = 0;
|
private int _reviveRequested = 0;
|
||||||
private double _revivePower = 0;
|
private double _revivePower = 0;
|
||||||
@@ -11364,6 +11366,16 @@ public class PlayerInstance extends Playable
|
|||||||
return _cursedWeaponEquippedId;
|
return _cursedWeaponEquippedId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDragonWeaponEquipped(boolean value)
|
||||||
|
{
|
||||||
|
_isDragonWeaponEquipped = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDragonWeaponEquipped()
|
||||||
|
{
|
||||||
|
return _isDragonWeaponEquipped;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCombatFlagEquipped()
|
public boolean isCombatFlagEquipped()
|
||||||
{
|
{
|
||||||
return _combatFlagEquippedId;
|
return _combatFlagEquippedId;
|
||||||
|
|||||||
@@ -1604,7 +1604,18 @@ public class Formulas
|
|||||||
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.max(0.05, 1 + (pvpAttack - pvpDefense)); // Bonus should not be negative.
|
// Dragon weapon defence stat.
|
||||||
|
final double dragonDefense;
|
||||||
|
if (attackerPlayer.isDragonWeaponEquipped())
|
||||||
|
{
|
||||||
|
dragonDefense = target.getStat().getValue(Stat.DRAGON_WEAPON_DEFENCE, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dragonDefense = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.max(0.05, dragonDefense * (1 + (pvpAttack - pvpDefense))); // Bonus should not be negative.
|
||||||
}
|
}
|
||||||
|
|
||||||
// PvE Bonus
|
// PvE Bonus
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public enum Stat
|
|||||||
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
||||||
HATE_ATTACK("attackHate"),
|
HATE_ATTACK("attackHate"),
|
||||||
REAR_DAMAGE_RATE("rearDamage"),
|
REAR_DAMAGE_RATE("rearDamage"),
|
||||||
|
DRAGON_WEAPON_DEFENCE("dragonWeaponDefence"),
|
||||||
|
|
||||||
// PVP BONUS
|
// PVP BONUS
|
||||||
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
||||||
|
|||||||
+455
@@ -0,0 +1,455 @@
|
|||||||
|
/*
|
||||||
|
* 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 ai.others;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
|
||||||
|
import org.l2jmobius.gameserver.model.items.Weapon;
|
||||||
|
|
||||||
|
import ai.AbstractNpcAI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponListeners extends AbstractNpcAI
|
||||||
|
{
|
||||||
|
private static final int[] WEAPON_IDS =
|
||||||
|
{
|
||||||
|
36417,
|
||||||
|
36418,
|
||||||
|
36419,
|
||||||
|
36420,
|
||||||
|
36421,
|
||||||
|
36422,
|
||||||
|
36423,
|
||||||
|
36424,
|
||||||
|
36425,
|
||||||
|
36426,
|
||||||
|
36441,
|
||||||
|
36442,
|
||||||
|
36443,
|
||||||
|
36444,
|
||||||
|
36445,
|
||||||
|
36446,
|
||||||
|
36447,
|
||||||
|
36448,
|
||||||
|
36449,
|
||||||
|
36450,
|
||||||
|
36465,
|
||||||
|
36466,
|
||||||
|
36467,
|
||||||
|
36468,
|
||||||
|
36469,
|
||||||
|
36470,
|
||||||
|
36471,
|
||||||
|
36472,
|
||||||
|
36473,
|
||||||
|
36474,
|
||||||
|
36489,
|
||||||
|
36490,
|
||||||
|
36491,
|
||||||
|
36492,
|
||||||
|
36493,
|
||||||
|
36494,
|
||||||
|
36495,
|
||||||
|
36496,
|
||||||
|
36497,
|
||||||
|
36498,
|
||||||
|
36427,
|
||||||
|
36428,
|
||||||
|
36429,
|
||||||
|
36430,
|
||||||
|
36431,
|
||||||
|
36432,
|
||||||
|
36433,
|
||||||
|
36451,
|
||||||
|
36452,
|
||||||
|
36453,
|
||||||
|
36454,
|
||||||
|
36455,
|
||||||
|
36456,
|
||||||
|
36457,
|
||||||
|
36475,
|
||||||
|
36476,
|
||||||
|
36477,
|
||||||
|
36478,
|
||||||
|
36479,
|
||||||
|
36480,
|
||||||
|
36481,
|
||||||
|
36499,
|
||||||
|
36500,
|
||||||
|
36501,
|
||||||
|
36502,
|
||||||
|
36503,
|
||||||
|
36504,
|
||||||
|
36505,
|
||||||
|
36434,
|
||||||
|
36435,
|
||||||
|
36436,
|
||||||
|
36437,
|
||||||
|
36438,
|
||||||
|
36439,
|
||||||
|
36440,
|
||||||
|
36458,
|
||||||
|
36459,
|
||||||
|
36460,
|
||||||
|
36461,
|
||||||
|
36462,
|
||||||
|
36463,
|
||||||
|
36464,
|
||||||
|
36482,
|
||||||
|
36483,
|
||||||
|
36484,
|
||||||
|
36485,
|
||||||
|
36486,
|
||||||
|
36487,
|
||||||
|
36488,
|
||||||
|
36506,
|
||||||
|
36507,
|
||||||
|
36508,
|
||||||
|
36509,
|
||||||
|
36510,
|
||||||
|
36511,
|
||||||
|
36512,
|
||||||
|
80066,
|
||||||
|
80067,
|
||||||
|
80068,
|
||||||
|
80069,
|
||||||
|
80070,
|
||||||
|
80071,
|
||||||
|
80072,
|
||||||
|
80073,
|
||||||
|
80074,
|
||||||
|
80075,
|
||||||
|
80076,
|
||||||
|
80077,
|
||||||
|
80078,
|
||||||
|
80079,
|
||||||
|
80080,
|
||||||
|
80081,
|
||||||
|
80082,
|
||||||
|
80083,
|
||||||
|
80084,
|
||||||
|
80085,
|
||||||
|
80086,
|
||||||
|
80087,
|
||||||
|
80088,
|
||||||
|
80089,
|
||||||
|
80315,
|
||||||
|
80316,
|
||||||
|
80317,
|
||||||
|
80318,
|
||||||
|
};
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||||
|
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||||
|
public void onPlayerLogin(OnPlayerLogin event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
final Weapon weapon = player.getActiveWeaponItem();
|
||||||
|
if ((weapon != null) && CommonUtil.contains(WEAPON_IDS, weapon.getId()))
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_EQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemEquip(OnPlayerItemEquip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_UNEQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemUnequip(OnPlayerItemUnequip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
new DragonWeaponListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -138,6 +138,7 @@ public class EffectMasterHandler
|
|||||||
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
||||||
EffectHandler.getInstance().registerHandler("DispelCaster", DispelCaster::new);
|
EffectHandler.getInstance().registerHandler("DispelCaster", DispelCaster::new);
|
||||||
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
||||||
|
EffectHandler.getInstance().registerHandler("DragonWeaponDefence", DragonWeaponDefence::new);
|
||||||
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
||||||
|
|||||||
Vendored
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* 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 org.l2jmobius.gameserver.model.StatSet;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Stat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponDefence extends AbstractStatPercentEffect
|
||||||
|
{
|
||||||
|
public DragonWeaponDefence(StatSet params)
|
||||||
|
{
|
||||||
|
super(params, Stat.DRAGON_WEAPON_DEFENCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -108,6 +108,7 @@ DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
|||||||
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
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)
|
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.
|
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
||||||
|
DragonWeaponDefence: Dragon weapon defence stat. (l2jmobius)
|
||||||
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
||||||
EnableCloak: See/unsee cloaks.
|
EnableCloak: See/unsee cloaks.
|
||||||
EnemyCharge: Charges towards the enemy. Rush Impact.
|
EnemyCharge: Charges towards the enemy. Rush Impact.
|
||||||
|
|||||||
+12
@@ -760,6 +760,8 @@ public class PlayerInstance extends Playable
|
|||||||
private int _cursedWeaponEquippedId = 0;
|
private int _cursedWeaponEquippedId = 0;
|
||||||
private boolean _combatFlagEquippedId = false;
|
private boolean _combatFlagEquippedId = false;
|
||||||
|
|
||||||
|
private boolean _isDragonWeaponEquipped = false;
|
||||||
|
|
||||||
private boolean _canRevive = true;
|
private boolean _canRevive = true;
|
||||||
private int _reviveRequested = 0;
|
private int _reviveRequested = 0;
|
||||||
private double _revivePower = 0;
|
private double _revivePower = 0;
|
||||||
@@ -11365,6 +11367,16 @@ public class PlayerInstance extends Playable
|
|||||||
return _cursedWeaponEquippedId;
|
return _cursedWeaponEquippedId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDragonWeaponEquipped(boolean value)
|
||||||
|
{
|
||||||
|
_isDragonWeaponEquipped = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDragonWeaponEquipped()
|
||||||
|
{
|
||||||
|
return _isDragonWeaponEquipped;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCombatFlagEquipped()
|
public boolean isCombatFlagEquipped()
|
||||||
{
|
{
|
||||||
return _combatFlagEquippedId;
|
return _combatFlagEquippedId;
|
||||||
|
|||||||
+12
-1
@@ -1604,7 +1604,18 @@ public class Formulas
|
|||||||
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.max(0.05, 1 + (pvpAttack - pvpDefense)); // Bonus should not be negative.
|
// Dragon weapon defence stat.
|
||||||
|
final double dragonDefense;
|
||||||
|
if (attackerPlayer.isDragonWeaponEquipped())
|
||||||
|
{
|
||||||
|
dragonDefense = target.getStat().getValue(Stat.DRAGON_WEAPON_DEFENCE, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dragonDefense = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.max(0.05, dragonDefense * (1 + (pvpAttack - pvpDefense))); // Bonus should not be negative.
|
||||||
}
|
}
|
||||||
|
|
||||||
// PvE Bonus
|
// PvE Bonus
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public enum Stat
|
|||||||
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
||||||
HATE_ATTACK("attackHate"),
|
HATE_ATTACK("attackHate"),
|
||||||
REAR_DAMAGE_RATE("rearDamage"),
|
REAR_DAMAGE_RATE("rearDamage"),
|
||||||
|
DRAGON_WEAPON_DEFENCE("dragonWeaponDefence"),
|
||||||
|
|
||||||
// PVP BONUS
|
// PVP BONUS
|
||||||
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
||||||
|
|||||||
+455
@@ -0,0 +1,455 @@
|
|||||||
|
/*
|
||||||
|
* 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 ai.others;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.Id;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||||
|
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
|
||||||
|
import org.l2jmobius.gameserver.model.items.Weapon;
|
||||||
|
|
||||||
|
import ai.AbstractNpcAI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponListeners extends AbstractNpcAI
|
||||||
|
{
|
||||||
|
private static final int[] WEAPON_IDS =
|
||||||
|
{
|
||||||
|
36417,
|
||||||
|
36418,
|
||||||
|
36419,
|
||||||
|
36420,
|
||||||
|
36421,
|
||||||
|
36422,
|
||||||
|
36423,
|
||||||
|
36424,
|
||||||
|
36425,
|
||||||
|
36426,
|
||||||
|
36441,
|
||||||
|
36442,
|
||||||
|
36443,
|
||||||
|
36444,
|
||||||
|
36445,
|
||||||
|
36446,
|
||||||
|
36447,
|
||||||
|
36448,
|
||||||
|
36449,
|
||||||
|
36450,
|
||||||
|
36465,
|
||||||
|
36466,
|
||||||
|
36467,
|
||||||
|
36468,
|
||||||
|
36469,
|
||||||
|
36470,
|
||||||
|
36471,
|
||||||
|
36472,
|
||||||
|
36473,
|
||||||
|
36474,
|
||||||
|
36489,
|
||||||
|
36490,
|
||||||
|
36491,
|
||||||
|
36492,
|
||||||
|
36493,
|
||||||
|
36494,
|
||||||
|
36495,
|
||||||
|
36496,
|
||||||
|
36497,
|
||||||
|
36498,
|
||||||
|
36427,
|
||||||
|
36428,
|
||||||
|
36429,
|
||||||
|
36430,
|
||||||
|
36431,
|
||||||
|
36432,
|
||||||
|
36433,
|
||||||
|
36451,
|
||||||
|
36452,
|
||||||
|
36453,
|
||||||
|
36454,
|
||||||
|
36455,
|
||||||
|
36456,
|
||||||
|
36457,
|
||||||
|
36475,
|
||||||
|
36476,
|
||||||
|
36477,
|
||||||
|
36478,
|
||||||
|
36479,
|
||||||
|
36480,
|
||||||
|
36481,
|
||||||
|
36499,
|
||||||
|
36500,
|
||||||
|
36501,
|
||||||
|
36502,
|
||||||
|
36503,
|
||||||
|
36504,
|
||||||
|
36505,
|
||||||
|
36434,
|
||||||
|
36435,
|
||||||
|
36436,
|
||||||
|
36437,
|
||||||
|
36438,
|
||||||
|
36439,
|
||||||
|
36440,
|
||||||
|
36458,
|
||||||
|
36459,
|
||||||
|
36460,
|
||||||
|
36461,
|
||||||
|
36462,
|
||||||
|
36463,
|
||||||
|
36464,
|
||||||
|
36482,
|
||||||
|
36483,
|
||||||
|
36484,
|
||||||
|
36485,
|
||||||
|
36486,
|
||||||
|
36487,
|
||||||
|
36488,
|
||||||
|
36506,
|
||||||
|
36507,
|
||||||
|
36508,
|
||||||
|
36509,
|
||||||
|
36510,
|
||||||
|
36511,
|
||||||
|
36512,
|
||||||
|
80066,
|
||||||
|
80067,
|
||||||
|
80068,
|
||||||
|
80069,
|
||||||
|
80070,
|
||||||
|
80071,
|
||||||
|
80072,
|
||||||
|
80073,
|
||||||
|
80074,
|
||||||
|
80075,
|
||||||
|
80076,
|
||||||
|
80077,
|
||||||
|
80078,
|
||||||
|
80079,
|
||||||
|
80080,
|
||||||
|
80081,
|
||||||
|
80082,
|
||||||
|
80083,
|
||||||
|
80084,
|
||||||
|
80085,
|
||||||
|
80086,
|
||||||
|
80087,
|
||||||
|
80088,
|
||||||
|
80089,
|
||||||
|
80315,
|
||||||
|
80316,
|
||||||
|
80317,
|
||||||
|
80318,
|
||||||
|
};
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||||
|
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||||
|
public void onPlayerLogin(OnPlayerLogin event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
final Weapon weapon = player.getActiveWeaponItem();
|
||||||
|
if ((weapon != null) && CommonUtil.contains(WEAPON_IDS, weapon.getId()))
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_EQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemEquip(OnPlayerItemEquip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterEvent(EventType.ON_PLAYER_ITEM_UNEQUIP)
|
||||||
|
@RegisterType(ListenerRegisterType.ITEM)
|
||||||
|
@Id(36417)
|
||||||
|
@Id(36418)
|
||||||
|
@Id(36419)
|
||||||
|
@Id(36420)
|
||||||
|
@Id(36421)
|
||||||
|
@Id(36422)
|
||||||
|
@Id(36423)
|
||||||
|
@Id(36424)
|
||||||
|
@Id(36425)
|
||||||
|
@Id(36426)
|
||||||
|
@Id(36441)
|
||||||
|
@Id(36442)
|
||||||
|
@Id(36443)
|
||||||
|
@Id(36444)
|
||||||
|
@Id(36445)
|
||||||
|
@Id(36446)
|
||||||
|
@Id(36447)
|
||||||
|
@Id(36448)
|
||||||
|
@Id(36449)
|
||||||
|
@Id(36450)
|
||||||
|
@Id(36465)
|
||||||
|
@Id(36466)
|
||||||
|
@Id(36467)
|
||||||
|
@Id(36468)
|
||||||
|
@Id(36469)
|
||||||
|
@Id(36470)
|
||||||
|
@Id(36471)
|
||||||
|
@Id(36472)
|
||||||
|
@Id(36473)
|
||||||
|
@Id(36474)
|
||||||
|
@Id(36489)
|
||||||
|
@Id(36490)
|
||||||
|
@Id(36491)
|
||||||
|
@Id(36492)
|
||||||
|
@Id(36493)
|
||||||
|
@Id(36494)
|
||||||
|
@Id(36495)
|
||||||
|
@Id(36496)
|
||||||
|
@Id(36497)
|
||||||
|
@Id(36498)
|
||||||
|
@Id(36427)
|
||||||
|
@Id(36428)
|
||||||
|
@Id(36429)
|
||||||
|
@Id(36430)
|
||||||
|
@Id(36431)
|
||||||
|
@Id(36432)
|
||||||
|
@Id(36433)
|
||||||
|
@Id(36451)
|
||||||
|
@Id(36452)
|
||||||
|
@Id(36453)
|
||||||
|
@Id(36454)
|
||||||
|
@Id(36455)
|
||||||
|
@Id(36456)
|
||||||
|
@Id(36457)
|
||||||
|
@Id(36475)
|
||||||
|
@Id(36476)
|
||||||
|
@Id(36477)
|
||||||
|
@Id(36478)
|
||||||
|
@Id(36479)
|
||||||
|
@Id(36480)
|
||||||
|
@Id(36481)
|
||||||
|
@Id(36499)
|
||||||
|
@Id(36500)
|
||||||
|
@Id(36501)
|
||||||
|
@Id(36502)
|
||||||
|
@Id(36503)
|
||||||
|
@Id(36504)
|
||||||
|
@Id(36505)
|
||||||
|
@Id(36434)
|
||||||
|
@Id(36435)
|
||||||
|
@Id(36436)
|
||||||
|
@Id(36437)
|
||||||
|
@Id(36438)
|
||||||
|
@Id(36439)
|
||||||
|
@Id(36440)
|
||||||
|
@Id(36458)
|
||||||
|
@Id(36459)
|
||||||
|
@Id(36460)
|
||||||
|
@Id(36461)
|
||||||
|
@Id(36462)
|
||||||
|
@Id(36463)
|
||||||
|
@Id(36464)
|
||||||
|
@Id(36482)
|
||||||
|
@Id(36483)
|
||||||
|
@Id(36484)
|
||||||
|
@Id(36485)
|
||||||
|
@Id(36486)
|
||||||
|
@Id(36487)
|
||||||
|
@Id(36488)
|
||||||
|
@Id(36506)
|
||||||
|
@Id(36507)
|
||||||
|
@Id(36508)
|
||||||
|
@Id(36509)
|
||||||
|
@Id(36510)
|
||||||
|
@Id(36511)
|
||||||
|
@Id(36512)
|
||||||
|
@Id(80066)
|
||||||
|
@Id(80067)
|
||||||
|
@Id(80068)
|
||||||
|
@Id(80069)
|
||||||
|
@Id(80070)
|
||||||
|
@Id(80071)
|
||||||
|
@Id(80072)
|
||||||
|
@Id(80073)
|
||||||
|
@Id(80074)
|
||||||
|
@Id(80075)
|
||||||
|
@Id(80076)
|
||||||
|
@Id(80077)
|
||||||
|
@Id(80078)
|
||||||
|
@Id(80079)
|
||||||
|
@Id(80080)
|
||||||
|
@Id(80081)
|
||||||
|
@Id(80082)
|
||||||
|
@Id(80083)
|
||||||
|
@Id(80084)
|
||||||
|
@Id(80085)
|
||||||
|
@Id(80086)
|
||||||
|
@Id(80087)
|
||||||
|
@Id(80088)
|
||||||
|
@Id(80089)
|
||||||
|
@Id(80315)
|
||||||
|
@Id(80316)
|
||||||
|
@Id(80317)
|
||||||
|
@Id(80318)
|
||||||
|
public void onPlayerItemUnequip(OnPlayerItemUnequip event)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
player.setDragonWeaponEquipped(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
new DragonWeaponListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -138,6 +138,7 @@ public class EffectMasterHandler
|
|||||||
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
EffectHandler.getInstance().registerHandler("DispelBySlotProbability", DispelBySlotProbability::new);
|
||||||
EffectHandler.getInstance().registerHandler("DispelCaster", DispelCaster::new);
|
EffectHandler.getInstance().registerHandler("DispelCaster", DispelCaster::new);
|
||||||
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
EffectHandler.getInstance().registerHandler("DoubleCast", DoubleCast::new);
|
||||||
|
EffectHandler.getInstance().registerHandler("DragonWeaponDefence", DragonWeaponDefence::new);
|
||||||
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
EffectHandler.getInstance().registerHandler("DuelistFury", DuelistFury::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
EffectHandler.getInstance().registerHandler("EnableCloak", EnableCloak::new);
|
||||||
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
EffectHandler.getInstance().registerHandler("EnergyAttack", EnergyAttack::new);
|
||||||
|
|||||||
Vendored
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* 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 org.l2jmobius.gameserver.model.StatSet;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Stat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class DragonWeaponDefence extends AbstractStatPercentEffect
|
||||||
|
{
|
||||||
|
public DragonWeaponDefence(StatSet params)
|
||||||
|
{
|
||||||
|
super(params, Stat.DRAGON_WEAPON_DEFENCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -108,6 +108,7 @@ DispelBySlotMyself: Removes given amount of effects by specified AbnormalType
|
|||||||
DispelBySlotProbability: Removes given amount of effects by specified AbnormalType at a given rate.
|
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)
|
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.
|
DoubleCast: Triggers Fire, Water, Wind, Earth stance and enables the ability to cast two skills at once.
|
||||||
|
DragonWeaponDefence: Dragon weapon defence stat. (l2jmobius)
|
||||||
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
DuelistFury: Synergy effect for Faceoff effect. (l2jmobius)
|
||||||
EnableCloak: See/unsee cloaks.
|
EnableCloak: See/unsee cloaks.
|
||||||
EnemyCharge: Charges towards the enemy. Rush Impact.
|
EnemyCharge: Charges towards the enemy. Rush Impact.
|
||||||
|
|||||||
+12
@@ -754,6 +754,8 @@ public class PlayerInstance extends Playable
|
|||||||
private int _cursedWeaponEquippedId = 0;
|
private int _cursedWeaponEquippedId = 0;
|
||||||
private boolean _combatFlagEquippedId = false;
|
private boolean _combatFlagEquippedId = false;
|
||||||
|
|
||||||
|
private boolean _isDragonWeaponEquipped = false;
|
||||||
|
|
||||||
private boolean _canRevive = true;
|
private boolean _canRevive = true;
|
||||||
private int _reviveRequested = 0;
|
private int _reviveRequested = 0;
|
||||||
private double _revivePower = 0;
|
private double _revivePower = 0;
|
||||||
@@ -11368,6 +11370,16 @@ public class PlayerInstance extends Playable
|
|||||||
return _cursedWeaponEquippedId;
|
return _cursedWeaponEquippedId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDragonWeaponEquipped(boolean value)
|
||||||
|
{
|
||||||
|
_isDragonWeaponEquipped = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDragonWeaponEquipped()
|
||||||
|
{
|
||||||
|
return _isDragonWeaponEquipped;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCombatFlagEquipped()
|
public boolean isCombatFlagEquipped()
|
||||||
{
|
{
|
||||||
return _combatFlagEquippedId;
|
return _combatFlagEquippedId;
|
||||||
|
|||||||
@@ -1604,7 +1604,18 @@ public class Formulas
|
|||||||
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
pvpDefense = target.getStat().getValue(Stat.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS[targetPlayer.getClassId().getId()];
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.max(0.05, 1 + (pvpAttack - pvpDefense)); // Bonus should not be negative.
|
// Dragon weapon defence stat.
|
||||||
|
final double dragonDefense;
|
||||||
|
if (attackerPlayer.isDragonWeaponEquipped())
|
||||||
|
{
|
||||||
|
dragonDefense = target.getStat().getValue(Stat.DRAGON_WEAPON_DEFENCE, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dragonDefense = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.max(0.05, dragonDefense * (1 + (pvpAttack - pvpDefense))); // Bonus should not be negative.
|
||||||
}
|
}
|
||||||
|
|
||||||
// PvE Bonus
|
// PvE Bonus
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public enum Stat
|
|||||||
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
CRITICAL_DAMAGE_ADD("cAtkAdd"), // this is another type for special critical damage mods - vicious stance, critical power and critical damage SA
|
||||||
HATE_ATTACK("attackHate"),
|
HATE_ATTACK("attackHate"),
|
||||||
REAR_DAMAGE_RATE("rearDamage"),
|
REAR_DAMAGE_RATE("rearDamage"),
|
||||||
|
DRAGON_WEAPON_DEFENCE("dragonWeaponDefence"),
|
||||||
|
|
||||||
// PVP BONUS
|
// PVP BONUS
|
||||||
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
PVP_PHYSICAL_ATTACK_DAMAGE("pvpPhysDmg"),
|
||||||
|
|||||||
Reference in New Issue
Block a user