From 2c3703a8a4328b574684aa53bd9ff7e9f3ee9abc Mon Sep 17 00:00:00 2001
From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Wed, 2 Feb 2022 06:34:51 +0000
Subject: [PATCH] Addition of WeaponAttackAngleBonus effect. Contributed by
nasseka.
---
.../scripts/handlers/EffectMasterHandler.java | 1 +
.../WeaponAttackAngleBonus.java | 31 +++++++++++++++++++
.../game/data/stats/skills/30600-30699.xml | 30 +++++++++++++++++-
.../game/data/stats/skills/documentation.txt | 1 +
.../model/actor/stat/PlayableStat.java | 3 +-
.../gameserver/model/stats/Stat.java | 1 +
.../scripts/handlers/EffectMasterHandler.java | 1 +
.../WeaponAttackAngleBonus.java | 31 +++++++++++++++++++
.../game/data/stats/skills/30600-30699.xml | 30 +++++++++++++++++-
.../game/data/stats/skills/documentation.txt | 1 +
.../model/actor/stat/PlayableStat.java | 3 +-
.../gameserver/model/stats/Stat.java | 1 +
.../scripts/handlers/EffectMasterHandler.java | 1 +
.../WeaponAttackAngleBonus.java | 31 +++++++++++++++++++
.../game/data/stats/skills/30600-30699.xml | 30 +++++++++++++++++-
.../game/data/stats/skills/documentation.txt | 1 +
.../model/actor/stat/PlayableStat.java | 3 +-
.../gameserver/model/stats/Stat.java | 1 +
.../scripts/handlers/EffectMasterHandler.java | 1 +
.../WeaponAttackAngleBonus.java | 31 +++++++++++++++++++
.../game/data/stats/skills/30600-30699.xml | 30 +++++++++++++++++-
.../game/data/stats/skills/documentation.txt | 1 +
.../model/actor/stat/PlayableStat.java | 3 +-
.../gameserver/model/stats/Stat.java | 1 +
.../scripts/handlers/EffectMasterHandler.java | 1 +
.../WeaponAttackAngleBonus.java | 31 +++++++++++++++++++
.../game/data/stats/skills/documentation.txt | 1 +
.../model/actor/stat/PlayableStat.java | 3 +-
.../gameserver/model/stats/Stat.java | 1 +
.../scripts/handlers/EffectMasterHandler.java | 1 +
.../WeaponAttackAngleBonus.java | 31 +++++++++++++++++++
.../game/data/stats/skills/documentation.txt | 1 +
.../model/actor/stat/PlayableStat.java | 3 +-
.../gameserver/model/stats/Stat.java | 1 +
.../scripts/handlers/EffectMasterHandler.java | 1 +
.../WeaponAttackAngleBonus.java | 31 +++++++++++++++++++
.../game/data/stats/skills/documentation.txt | 1 +
.../model/actor/stat/PlayableStat.java | 3 +-
.../gameserver/model/stats/Stat.java | 1 +
.../scripts/handlers/EffectMasterHandler.java | 1 +
.../WeaponAttackAngleBonus.java | 31 +++++++++++++++++++
.../game/data/stats/skills/documentation.txt | 1 +
.../model/actor/stat/PlayableStat.java | 3 +-
.../gameserver/model/stats/Stat.java | 1 +
44 files changed, 404 insertions(+), 12 deletions(-)
create mode 100644 L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
create mode 100644 L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
create mode 100644 L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
create mode 100644 L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
create mode 100644 L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
create mode 100644 L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
create mode 100644 L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 7bfae17338..fe76568704 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -399,6 +399,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("VitalityExpRate", VitalityExpRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointsRate", VitalityPointsRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointUp", VitalityPointUp::new);
+ EffectHandler.getInstance().registerHandler("WeaponAttackAngleBonus", WeaponAttackAngleBonus::new);
EffectHandler.getInstance().registerHandler("WeightLimit", WeightLimit::new);
EffectHandler.getInstance().registerHandler("WeightPenalty", WeightPenalty::new);
EffectHandler.getInstance().registerHandler("WorldChatPoints", WorldChatPoints::new);
diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
new file mode 100644
index 0000000000..ef9199ea32
--- /dev/null
+++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
@@ -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 .
+ */
+package handlers.effecthandlers;
+
+import org.l2jmobius.gameserver.model.StatSet;
+import org.l2jmobius.gameserver.model.stats.Stat;
+
+/**
+ * @author NasSeKa
+ */
+public class WeaponAttackAngleBonus extends AbstractStatAddEffect
+{
+ public WeaponAttackAngleBonus(StatSet params)
+ {
+ super(params, Stat.WEAPON_ATTACK_ANGLE_BONUS);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/30600-30699.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/30600-30699.xml
index fd61b6438e..db214fdc92 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/30600-30699.xml
+++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/30600-30699.xml
@@ -140,7 +140,7 @@
A2
2000
200
- 300000
+ 30000
673
32
1
@@ -160,6 +160,20 @@
+
+ 360
+ DIFF
+
+ - POLE
+
+
+
+ 100
+ DIFF
+
+ - POLE
+
+
100
DIFF
@@ -195,6 +209,20 @@
+
+ 360
+ DIFF
+
+ - POLE
+
+
+
+ 100
+ DIFF
+
+ - POLE
+
+
100
DIFF
diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/documentation.txt
index a78fa4b51c..4ee4b62443 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/documentation.txt
@@ -366,6 +366,7 @@ VampiricDefence: Resist stat towards VampiricAttack
VitalityExpRate: Sets the vitality exp rate. (l2jmobius)
VitalityPointsRate: Vitality points consume rate.
VitalityPointUp: Increases vitality points.
+WeaponAttackAngleBonus: Additional range for weapon attack angle. (l2jmobius)
WeightLimit: Maximum weight stat.
WeightPenalty: Weight penalty level stat.
WorldChatPoints: Modify world chat points to use per day.
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index 678412218a..7dd70aa301 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.item.Weapon;
+import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.network.serverpackets.ExNewSkillToLearnByLevelUp;
public class PlayableStat extends CreatureStat
@@ -252,6 +253,6 @@ public class PlayableStat extends CreatureStat
public int getPhysicalAttackAngle()
{
final Weapon weapon = getActiveChar().getActiveWeaponItem();
- return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
+ return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
}
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/Stat.java
index c88dca5498..ec7924aa7c 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -162,6 +162,7 @@ public enum Stat
MAGIC_ATTACK_RANGE("mAtkRange"),
ATTACK_COUNT_MAX("atkCountMax"),
PHYSICAL_POLEARM_TARGET_SINGLE("polearmSingleTarget"),
+ WEAPON_ATTACK_ANGLE_BONUS("weaponAttackAngleBonus"),
HIT_AT_NIGHT("hitAtNight"),
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/EffectMasterHandler.java
index eb6bd8185a..aa86d6b62d 100644
--- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -401,6 +401,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("VitalityExpRate", VitalityExpRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointsRate", VitalityPointsRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointUp", VitalityPointUp::new);
+ EffectHandler.getInstance().registerHandler("WeaponAttackAngleBonus", WeaponAttackAngleBonus::new);
EffectHandler.getInstance().registerHandler("WeightLimit", WeightLimit::new);
EffectHandler.getInstance().registerHandler("WeightPenalty", WeightPenalty::new);
EffectHandler.getInstance().registerHandler("WorldChatPoints", WorldChatPoints::new);
diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
new file mode 100644
index 0000000000..ef9199ea32
--- /dev/null
+++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
@@ -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 .
+ */
+package handlers.effecthandlers;
+
+import org.l2jmobius.gameserver.model.StatSet;
+import org.l2jmobius.gameserver.model.stats.Stat;
+
+/**
+ * @author NasSeKa
+ */
+public class WeaponAttackAngleBonus extends AbstractStatAddEffect
+{
+ public WeaponAttackAngleBonus(StatSet params)
+ {
+ super(params, Stat.WEAPON_ATTACK_ANGLE_BONUS);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/30600-30699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/30600-30699.xml
index 62eafad21e..dd849e3ad4 100644
--- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/30600-30699.xml
+++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/30600-30699.xml
@@ -140,7 +140,7 @@
A2
2000
200
- 300000
+ 30000
673
32
1
@@ -160,6 +160,20 @@
+
+ 360
+ DIFF
+
+ - POLE
+
+
+
+ 100
+ DIFF
+
+ - POLE
+
+
100
DIFF
@@ -198,6 +212,20 @@
+
+ 360
+ DIFF
+
+ - POLE
+
+
+
+ 100
+ DIFF
+
+ - POLE
+
+
100
DIFF
diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/documentation.txt
index 30771dea6e..6a10fec523 100644
--- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/documentation.txt
@@ -368,6 +368,7 @@ VampiricDefence: Resist stat towards VampiricAttack
VitalityExpRate: Sets the vitality exp rate. (l2jmobius)
VitalityPointsRate: Vitality points consume rate.
VitalityPointUp: Increases vitality points.
+WeaponAttackAngleBonus: Additional range for weapon attack angle. (l2jmobius)
WeightLimit: Maximum weight stat.
WeightPenalty: Weight penalty level stat.
WorldChatPoints: Modify world chat points to use per day.
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index 5672633fc9..6c2c9fcd61 100644
--- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.item.Weapon;
+import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.network.serverpackets.ExNewSkillToLearnByLevelUp;
public class PlayableStat extends CreatureStat
@@ -252,6 +253,6 @@ public class PlayableStat extends CreatureStat
public int getPhysicalAttackAngle()
{
final Weapon weapon = getActiveChar().getActiveWeaponItem();
- return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
+ return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
}
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 4905c748ea..12d6f20024 100644
--- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -165,6 +165,7 @@ public enum Stat
MAGIC_ATTACK_RANGE("mAtkRange"),
ATTACK_COUNT_MAX("atkCountMax"),
PHYSICAL_POLEARM_TARGET_SINGLE("polearmSingleTarget"),
+ WEAPON_ATTACK_ANGLE_BONUS("weaponAttackAngleBonus"),
HIT_AT_NIGHT("hitAtNight"),
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 1cb52554e7..f01acc6cb9 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -403,6 +403,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("VitalityExpRate", VitalityExpRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointsRate", VitalityPointsRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointUp", VitalityPointUp::new);
+ EffectHandler.getInstance().registerHandler("WeaponAttackAngleBonus", WeaponAttackAngleBonus::new);
EffectHandler.getInstance().registerHandler("WeightLimit", WeightLimit::new);
EffectHandler.getInstance().registerHandler("WeightPenalty", WeightPenalty::new);
EffectHandler.getInstance().registerHandler("WorldChatPoints", WorldChatPoints::new);
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
new file mode 100644
index 0000000000..ef9199ea32
--- /dev/null
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
@@ -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 .
+ */
+package handlers.effecthandlers;
+
+import org.l2jmobius.gameserver.model.StatSet;
+import org.l2jmobius.gameserver.model.stats.Stat;
+
+/**
+ * @author NasSeKa
+ */
+public class WeaponAttackAngleBonus extends AbstractStatAddEffect
+{
+ public WeaponAttackAngleBonus(StatSet params)
+ {
+ super(params, Stat.WEAPON_ATTACK_ANGLE_BONUS);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/30600-30699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/30600-30699.xml
index 03ff745101..7a100e9dce 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/30600-30699.xml
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/30600-30699.xml
@@ -140,7 +140,7 @@
A2
2000
200
- 300000
+ 30000
673
32
1
@@ -160,6 +160,20 @@
+
+ 360
+ DIFF
+
+ - POLE
+
+
+
+ 100
+ DIFF
+
+ - POLE
+
+
100
DIFF
@@ -198,6 +212,20 @@
+
+ 360
+ DIFF
+
+ - POLE
+
+
+
+ 100
+ DIFF
+
+ - POLE
+
+
100
DIFF
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/documentation.txt
index a9ad4d4f69..2dff218db2 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/documentation.txt
@@ -369,6 +369,7 @@ VampiricDefence: Resist stat towards VampiricAttack
VitalityExpRate: Sets the vitality exp rate. (l2jmobius)
VitalityPointsRate: Vitality points consume rate.
VitalityPointUp: Increases vitality points.
+WeaponAttackAngleBonus: Additional range for weapon attack angle. (l2jmobius)
WeightLimit: Maximum weight stat.
WeightPenalty: Weight penalty level stat.
WorldChatPoints: Modify world chat points to use per day.
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index 5672633fc9..6c2c9fcd61 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.item.Weapon;
+import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.network.serverpackets.ExNewSkillToLearnByLevelUp;
public class PlayableStat extends CreatureStat
@@ -252,6 +253,6 @@ public class PlayableStat extends CreatureStat
public int getPhysicalAttackAngle()
{
final Weapon weapon = getActiveChar().getActiveWeaponItem();
- return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
+ return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
}
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 4905c748ea..12d6f20024 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -165,6 +165,7 @@ public enum Stat
MAGIC_ATTACK_RANGE("mAtkRange"),
ATTACK_COUNT_MAX("atkCountMax"),
PHYSICAL_POLEARM_TARGET_SINGLE("polearmSingleTarget"),
+ WEAPON_ATTACK_ANGLE_BONUS("weaponAttackAngleBonus"),
HIT_AT_NIGHT("hitAtNight"),
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 8f041ea9bd..f88b5ac97c 100644
--- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -405,6 +405,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("VitalityExpRate", VitalityExpRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointsRate", VitalityPointsRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointUp", VitalityPointUp::new);
+ EffectHandler.getInstance().registerHandler("WeaponAttackAngleBonus", WeaponAttackAngleBonus::new);
EffectHandler.getInstance().registerHandler("WeightLimit", WeightLimit::new);
EffectHandler.getInstance().registerHandler("WeightPenalty", WeightPenalty::new);
EffectHandler.getInstance().registerHandler("WorldChatPoints", WorldChatPoints::new);
diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
new file mode 100644
index 0000000000..ef9199ea32
--- /dev/null
+++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
@@ -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 .
+ */
+package handlers.effecthandlers;
+
+import org.l2jmobius.gameserver.model.StatSet;
+import org.l2jmobius.gameserver.model.stats.Stat;
+
+/**
+ * @author NasSeKa
+ */
+public class WeaponAttackAngleBonus extends AbstractStatAddEffect
+{
+ public WeaponAttackAngleBonus(StatSet params)
+ {
+ super(params, Stat.WEAPON_ATTACK_ANGLE_BONUS);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/stats/skills/30600-30699.xml b/L2J_Mobius_10.0_MasterClass/dist/game/data/stats/skills/30600-30699.xml
index 96b306284f..76395dc432 100644
--- a/L2J_Mobius_10.0_MasterClass/dist/game/data/stats/skills/30600-30699.xml
+++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/stats/skills/30600-30699.xml
@@ -140,7 +140,7 @@
A2
2000
200
- 300000
+ 30000
673
32
1
@@ -160,6 +160,20 @@
+
+ 360
+ DIFF
+
+ - POLE
+
+
+
+ 100
+ DIFF
+
+ - POLE
+
+
100
DIFF
@@ -198,6 +212,20 @@
+
+ 360
+ DIFF
+
+ - POLE
+
+
+
+ 100
+ DIFF
+
+ - POLE
+
+
100
DIFF
diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_10.0_MasterClass/dist/game/data/stats/skills/documentation.txt
index 41a401a9f7..d00e20e628 100644
--- a/L2J_Mobius_10.0_MasterClass/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/stats/skills/documentation.txt
@@ -371,6 +371,7 @@ VampiricDefence: Resist stat towards VampiricAttack
VitalityExpRate: Sets the vitality exp rate. (l2jmobius)
VitalityPointsRate: Vitality points consume rate.
VitalityPointUp: Increases vitality points.
+WeaponAttackAngleBonus: Additional range for weapon attack angle. (l2jmobius)
WeightLimit: Maximum weight stat.
WeightPenalty: Weight penalty level stat.
WorldChatPoints: Modify world chat points to use per day.
diff --git a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index 5672633fc9..6c2c9fcd61 100644
--- a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.item.Weapon;
+import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.network.serverpackets.ExNewSkillToLearnByLevelUp;
public class PlayableStat extends CreatureStat
@@ -252,6 +253,6 @@ public class PlayableStat extends CreatureStat
public int getPhysicalAttackAngle()
{
final Weapon weapon = getActiveChar().getActiveWeaponItem();
- return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
+ return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
}
diff --git a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 4905c748ea..12d6f20024 100644
--- a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -165,6 +165,7 @@ public enum Stat
MAGIC_ATTACK_RANGE("mAtkRange"),
ATTACK_COUNT_MAX("atkCountMax"),
PHYSICAL_POLEARM_TARGET_SINGLE("polearmSingleTarget"),
+ WEAPON_ATTACK_ANGLE_BONUS("weaponAttackAngleBonus"),
HIT_AT_NIGHT("hitAtNight"),
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 18f28c3620..01f09ec6e6 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -392,6 +392,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("VitalityExpRate", VitalityExpRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointsRate", VitalityPointsRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointUp", VitalityPointUp::new);
+ EffectHandler.getInstance().registerHandler("WeaponAttackAngleBonus", WeaponAttackAngleBonus::new);
EffectHandler.getInstance().registerHandler("WeightLimit", WeightLimit::new);
EffectHandler.getInstance().registerHandler("WeightPenalty", WeightPenalty::new);
EffectHandler.getInstance().registerHandler("WorldChatPoints", WorldChatPoints::new);
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
new file mode 100644
index 0000000000..ef9199ea32
--- /dev/null
+++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
@@ -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 .
+ */
+package handlers.effecthandlers;
+
+import org.l2jmobius.gameserver.model.StatSet;
+import org.l2jmobius.gameserver.model.stats.Stat;
+
+/**
+ * @author NasSeKa
+ */
+public class WeaponAttackAngleBonus extends AbstractStatAddEffect
+{
+ public WeaponAttackAngleBonus(StatSet params)
+ {
+ super(params, Stat.WEAPON_ATTACK_ANGLE_BONUS);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/documentation.txt
index a2f505c7f1..3842e301c6 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/documentation.txt
@@ -359,6 +359,7 @@ VampiricDefence: Resist stat towards VampiricAttack
VitalityExpRate: Sets the vitality exp rate. (l2jmobius)
VitalityPointsRate: Vitality points consume rate.
VitalityPointUp: Increases vitality points.
+WeaponAttackAngleBonus: Additional range for weapon attack angle. (l2jmobius)
WeightLimit: Maximum weight stat.
WeightPenalty: Weight penalty level stat.
WorldChatPoints: Modify world chat points to use per day.
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index ab69ac3799..1b3568357d 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -31,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.item.Weapon;
+import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExNewSkillToLearnByLevelUp;
@@ -268,7 +269,7 @@ public class PlayableStat extends CreatureStat
public int getPhysicalAttackAngle()
{
final Weapon weapon = getActiveChar().getActiveWeaponItem();
- return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
+ return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 0bd507a8d6..9e06b77030 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -176,6 +176,7 @@ public enum Stat
MAGIC_ATTACK_RANGE("mAtkRange"),
ATTACK_COUNT_MAX("atkCountMax"),
PHYSICAL_POLEARM_TARGET_SINGLE("polearmSingleTarget"),
+ WEAPON_ATTACK_ANGLE_BONUS("weaponAttackAngleBonus"),
HIT_AT_NIGHT("hitAtNight"),
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 8059647ae1..3046d0f018 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -399,6 +399,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("VitalityExpRate", VitalityExpRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointsRate", VitalityPointsRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointUp", VitalityPointUp::new);
+ EffectHandler.getInstance().registerHandler("WeaponAttackAngleBonus", WeaponAttackAngleBonus::new);
EffectHandler.getInstance().registerHandler("WeightLimit", WeightLimit::new);
EffectHandler.getInstance().registerHandler("WeightPenalty", WeightPenalty::new);
EffectHandler.getInstance().registerHandler("WorldChatPoints", WorldChatPoints::new);
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
new file mode 100644
index 0000000000..ef9199ea32
--- /dev/null
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
@@ -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 .
+ */
+package handlers.effecthandlers;
+
+import org.l2jmobius.gameserver.model.StatSet;
+import org.l2jmobius.gameserver.model.stats.Stat;
+
+/**
+ * @author NasSeKa
+ */
+public class WeaponAttackAngleBonus extends AbstractStatAddEffect
+{
+ public WeaponAttackAngleBonus(StatSet params)
+ {
+ super(params, Stat.WEAPON_ATTACK_ANGLE_BONUS);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/skills/documentation.txt
index 737a2f7499..9ed7930243 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/skills/documentation.txt
@@ -366,6 +366,7 @@ VampiricDefence: Resist stat towards VampiricAttack
VitalityExpRate: Sets the vitality exp rate. (l2jmobius)
VitalityPointsRate: Vitality points consume rate.
VitalityPointUp: Increases vitality points.
+WeaponAttackAngleBonus: Additional range for weapon attack angle. (l2jmobius)
WeightLimit: Maximum weight stat.
WeightPenalty: Weight penalty level stat.
WorldChatPoints: Modify world chat points to use per day.
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index 14b5ab1db6..20ad33d1ae 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -31,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.item.Weapon;
+import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExNewSkillToLearnByLevelUp;
@@ -268,7 +269,7 @@ public class PlayableStat extends CreatureStat
public int getPhysicalAttackAngle()
{
final Weapon weapon = getActiveChar().getActiveWeaponItem();
- return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
+ return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/Stat.java
index afe38e6139..a9895b4915 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -180,6 +180,7 @@ public enum Stat
MAGIC_ATTACK_RANGE("mAtkRange"),
ATTACK_COUNT_MAX("atkCountMax"),
PHYSICAL_POLEARM_TARGET_SINGLE("polearmSingleTarget"),
+ WEAPON_ATTACK_ANGLE_BONUS("weaponAttackAngleBonus"),
HIT_AT_NIGHT("hitAtNight"),
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 5739b95b47..5768714426 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -402,6 +402,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("VitalityExpRate", VitalityExpRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointsRate", VitalityPointsRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointUp", VitalityPointUp::new);
+ EffectHandler.getInstance().registerHandler("WeaponAttackAngleBonus", WeaponAttackAngleBonus::new);
EffectHandler.getInstance().registerHandler("WeightLimit", WeightLimit::new);
EffectHandler.getInstance().registerHandler("WeightPenalty", WeightPenalty::new);
EffectHandler.getInstance().registerHandler("WorldChatPoints", WorldChatPoints::new);
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
new file mode 100644
index 0000000000..ef9199ea32
--- /dev/null
+++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
@@ -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 .
+ */
+package handlers.effecthandlers;
+
+import org.l2jmobius.gameserver.model.StatSet;
+import org.l2jmobius.gameserver.model.stats.Stat;
+
+/**
+ * @author NasSeKa
+ */
+public class WeaponAttackAngleBonus extends AbstractStatAddEffect
+{
+ public WeaponAttackAngleBonus(StatSet params)
+ {
+ super(params, Stat.WEAPON_ATTACK_ANGLE_BONUS);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/skills/documentation.txt
index db535529c4..dd63432c2d 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/skills/documentation.txt
@@ -368,6 +368,7 @@ VampiricDefence: Resist stat towards VampiricAttack
VitalityExpRate: Sets the vitality exp rate. (l2jmobius)
VitalityPointsRate: Vitality points consume rate.
VitalityPointUp: Increases vitality points.
+WeaponAttackAngleBonus: Additional range for weapon attack angle. (l2jmobius)
WeightLimit: Maximum weight stat.
WeightPenalty: Weight penalty level stat.
WorldChatPoints: Modify world chat points to use per day.
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index 14b5ab1db6..20ad33d1ae 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -31,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.item.Weapon;
+import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExNewSkillToLearnByLevelUp;
@@ -268,7 +269,7 @@ public class PlayableStat extends CreatureStat
public int getPhysicalAttackAngle()
{
final Weapon weapon = getActiveChar().getActiveWeaponItem();
- return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
+ return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/stats/Stat.java
index afe38e6139..a9895b4915 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -180,6 +180,7 @@ public enum Stat
MAGIC_ATTACK_RANGE("mAtkRange"),
ATTACK_COUNT_MAX("atkCountMax"),
PHYSICAL_POLEARM_TARGET_SINGLE("polearmSingleTarget"),
+ WEAPON_ATTACK_ANGLE_BONUS("weaponAttackAngleBonus"),
HIT_AT_NIGHT("hitAtNight"),
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 53560a7411..a8d1b45dda 100644
--- a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -403,6 +403,7 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("VitalityExpRate", VitalityExpRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointsRate", VitalityPointsRate::new);
EffectHandler.getInstance().registerHandler("VitalityPointUp", VitalityPointUp::new);
+ EffectHandler.getInstance().registerHandler("WeaponAttackAngleBonus", WeaponAttackAngleBonus::new);
EffectHandler.getInstance().registerHandler("WeightLimit", WeightLimit::new);
EffectHandler.getInstance().registerHandler("WeightPenalty", WeightPenalty::new);
EffectHandler.getInstance().registerHandler("WorldChatPoints", WorldChatPoints::new);
diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
new file mode 100644
index 0000000000..ef9199ea32
--- /dev/null
+++ b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/WeaponAttackAngleBonus.java
@@ -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 .
+ */
+package handlers.effecthandlers;
+
+import org.l2jmobius.gameserver.model.StatSet;
+import org.l2jmobius.gameserver.model.stats.Stat;
+
+/**
+ * @author NasSeKa
+ */
+public class WeaponAttackAngleBonus extends AbstractStatAddEffect
+{
+ public WeaponAttackAngleBonus(StatSet params)
+ {
+ super(params, Stat.WEAPON_ATTACK_ANGLE_BONUS);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/stats/skills/documentation.txt
index 38623cc1ec..0ad0c58318 100644
--- a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/stats/skills/documentation.txt
@@ -369,6 +369,7 @@ VampiricDefence: Resist stat towards VampiricAttack
VitalityExpRate: Sets the vitality exp rate. (l2jmobius)
VitalityPointsRate: Vitality points consume rate.
VitalityPointUp: Increases vitality points.
+WeaponAttackAngleBonus: Additional range for weapon attack angle. (l2jmobius)
WeightLimit: Maximum weight stat.
WeightPenalty: Weight penalty level stat.
WorldChatPoints: Modify world chat points to use per day.
diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index 4b5e0442f6..fecef82b02 100644
--- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -31,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.item.Weapon;
+import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExNewSkillToLearnByLevelUp;
@@ -268,7 +269,7 @@ public class PlayableStat extends CreatureStat
public int getPhysicalAttackAngle()
{
final Weapon weapon = getActiveChar().getActiveWeaponItem();
- return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
+ return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/Stat.java
index afe38e6139..a9895b4915 100644
--- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -180,6 +180,7 @@ public enum Stat
MAGIC_ATTACK_RANGE("mAtkRange"),
ATTACK_COUNT_MAX("atkCountMax"),
PHYSICAL_POLEARM_TARGET_SINGLE("polearmSingleTarget"),
+ WEAPON_ATTACK_ANGLE_BONUS("weaponAttackAngleBonus"),
HIT_AT_NIGHT("hitAtNight"),
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff