From 0b319c3730a1388a9c80497bb6fdb658bb8cfe9f Mon Sep 17 00:00:00 2001
From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Wed, 9 Mar 2022 17:19:07 +0000
Subject: [PATCH] Reverted recent break speed limit changes.
---
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 6 ----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 6 ----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 6 ----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 6 ----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 6 ----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 7 -----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 6 ----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 6 ----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
.../dist/game/config/Character.ini | 4 ---
.../scripts/handlers/EffectMasterHandler.java | 1 -
.../handlers/effecthandlers/SpeedLimit.java | 31 -------------------
.../game/data/stats/skills/documentation.txt | 1 -
.../java/org/l2jmobius/Config.java | 2 --
.../model/actor/stat/CreatureStat.java | 20 +++---------
.../model/actor/stat/PlayableStat.java | 6 ----
.../model/actor/stat/SummonStat.java | 24 ++++++++++++--
.../gameserver/model/stats/Stat.java | 1 -
.../stats/finalizers/SpeedFinalizer.java | 20 ++----------
210 files changed, 630 insertions(+), 1693 deletions(-)
delete mode 100644 L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
delete mode 100644 L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/config/Character.ini b/L2J_Mobius_01.0_Ertheia/dist/game/config/Character.ini
index 8ff4dab335..eeaf022244 100644
--- a/L2J_Mobius_01.0_Ertheia/dist/game/config/Character.ini
+++ b/L2J_Mobius_01.0_Ertheia/dist/game/config/Character.ini
@@ -315,10 +315,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 4b4d6d3d18..4f232ab070 100644
--- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -328,7 +328,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/skills/documentation.txt
index 6550b5db2b..06f563d514 100644
--- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/skills/documentation.txt
@@ -297,7 +297,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java
index f0f0160d80..ce56da0f17 100644
--- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java
@@ -200,7 +200,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1766,7 +1765,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index 73d9ad393d..cf84c07a62 100644
--- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -327,17 +327,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -345,7 +335,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -353,7 +343,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -361,7 +351,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -369,7 +359,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b11725c93f..678412218a 100644
--- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -29,7 +29,6 @@ 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
@@ -255,10 +254,4 @@ public class PlayableStat extends CreatureStat
final Weapon weapon = getActiveChar().getActiveWeaponItem();
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
-
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
}
diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/Stat.java
index dedd0d6dfb..be7e1eb712 100644
--- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -164,7 +164,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_02.5_Underground/dist/game/config/Character.ini b/L2J_Mobius_02.5_Underground/dist/game/config/Character.ini
index 5897b96dda..6b26b61be8 100644
--- a/L2J_Mobius_02.5_Underground/dist/game/config/Character.ini
+++ b/L2J_Mobius_02.5_Underground/dist/game/config/Character.ini
@@ -315,10 +315,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 4b4d6d3d18..4f232ab070 100644
--- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -328,7 +328,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_02.5_Underground/dist/game/data/stats/skills/documentation.txt
index 6550b5db2b..06f563d514 100644
--- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/skills/documentation.txt
@@ -297,7 +297,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java
index 726cce0627..332af96e61 100644
--- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java
@@ -207,7 +207,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1786,7 +1785,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index 73d9ad393d..cf84c07a62 100644
--- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -327,17 +327,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -345,7 +335,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -353,7 +343,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -361,7 +351,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -369,7 +359,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b11725c93f..678412218a 100644
--- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -29,7 +29,6 @@ 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
@@ -255,10 +254,4 @@ public class PlayableStat extends CreatureStat
final Weapon weapon = getActiveChar().getActiveWeaponItem();
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
-
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
}
diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/stats/Stat.java
index dedd0d6dfb..be7e1eb712 100644
--- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -164,7 +164,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_03.0_Helios/dist/game/config/Character.ini b/L2J_Mobius_03.0_Helios/dist/game/config/Character.ini
index 5897b96dda..6b26b61be8 100644
--- a/L2J_Mobius_03.0_Helios/dist/game/config/Character.ini
+++ b/L2J_Mobius_03.0_Helios/dist/game/config/Character.ini
@@ -315,10 +315,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 4b4d6d3d18..4f232ab070 100644
--- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -328,7 +328,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_03.0_Helios/dist/game/data/stats/skills/documentation.txt
index 6550b5db2b..06f563d514 100644
--- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/skills/documentation.txt
@@ -297,7 +297,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java
index dfe17889e6..d6959e5417 100644
--- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java
@@ -207,7 +207,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1799,7 +1798,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index 73d9ad393d..cf84c07a62 100644
--- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -327,17 +327,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -345,7 +335,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -353,7 +343,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -361,7 +351,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -369,7 +359,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b11725c93f..678412218a 100644
--- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -29,7 +29,6 @@ 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
@@ -255,10 +254,4 @@ public class PlayableStat extends CreatureStat
final Weapon weapon = getActiveChar().getActiveWeaponItem();
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
-
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
}
diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/stats/Stat.java
index dedd0d6dfb..be7e1eb712 100644
--- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -164,7 +164,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Character.ini b/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Character.ini
index 3261c36a79..1023449a9c 100644
--- a/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Character.ini
+++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Character.ini
@@ -315,10 +315,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 5d11e2e4ad..0ab4cce3d2 100644
--- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -333,7 +333,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/skills/documentation.txt
index fdfd05596f..d35a53a9b1 100644
--- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/skills/documentation.txt
@@ -302,7 +302,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java
index b98f26f905..2fda2748c1 100644
--- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java
@@ -207,7 +207,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1786,7 +1785,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index 73d9ad393d..cf84c07a62 100644
--- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -327,17 +327,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -345,7 +335,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -353,7 +343,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -361,7 +351,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -369,7 +359,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b11725c93f..678412218a 100644
--- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -29,7 +29,6 @@ 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
@@ -255,10 +254,4 @@ public class PlayableStat extends CreatureStat
final Weapon weapon = getActiveChar().getActiveWeaponItem();
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
-
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
}
diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/Stat.java
index d007925d19..9b69f1e6bc 100644
--- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -164,7 +164,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_05.0_Salvation/dist/game/config/Character.ini b/L2J_Mobius_05.0_Salvation/dist/game/config/Character.ini
index f19c93f28d..8b58d24305 100644
--- a/L2J_Mobius_05.0_Salvation/dist/game/config/Character.ini
+++ b/L2J_Mobius_05.0_Salvation/dist/game/config/Character.ini
@@ -315,10 +315,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/EffectMasterHandler.java
index eb09091dc1..27bac64a77 100644
--- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -338,7 +338,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/skills/documentation.txt
index 6297fea43d..91849e22e9 100644
--- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/skills/documentation.txt
@@ -307,7 +307,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java
index 215f30e68b..8f004e5965 100644
--- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java
@@ -214,7 +214,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1795,7 +1794,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index 73d9ad393d..cf84c07a62 100644
--- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -327,17 +327,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -345,7 +335,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -353,7 +343,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -361,7 +351,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -369,7 +359,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b11725c93f..678412218a 100644
--- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -29,7 +29,6 @@ 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
@@ -255,10 +254,4 @@ public class PlayableStat extends CreatureStat
final Weapon weapon = getActiveChar().getActiveWeaponItem();
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
-
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
}
diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 8fdb8000ae..5a6836c1c2 100644
--- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -167,7 +167,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/config/Character.ini b/L2J_Mobius_05.5_EtinasFate/dist/game/config/Character.ini
index f19c93f28d..8b58d24305 100644
--- a/L2J_Mobius_05.5_EtinasFate/dist/game/config/Character.ini
+++ b/L2J_Mobius_05.5_EtinasFate/dist/game/config/Character.ini
@@ -315,10 +315,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 748731f653..b22f420b93 100644
--- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -339,7 +339,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/skills/documentation.txt
index e538359b55..50f8122da4 100644
--- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/skills/documentation.txt
@@ -308,7 +308,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java
index 9a8612380e..327a349dec 100644
--- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java
@@ -214,7 +214,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1802,7 +1801,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index 73d9ad393d..cf84c07a62 100644
--- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -327,17 +327,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -345,7 +335,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -353,7 +343,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -361,7 +351,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -369,7 +359,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b11725c93f..678412218a 100644
--- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -29,7 +29,6 @@ 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
@@ -255,10 +254,4 @@ public class PlayableStat extends CreatureStat
final Weapon weapon = getActiveChar().getActiveWeaponItem();
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
-
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
}
diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 6df8233361..b79755260e 100644
--- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -167,7 +167,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/config/Character.ini b/L2J_Mobius_06.0_Fafurion/dist/game/config/Character.ini
index dbbfc52676..eecb622e52 100644
--- a/L2J_Mobius_06.0_Fafurion/dist/game/config/Character.ini
+++ b/L2J_Mobius_06.0_Fafurion/dist/game/config/Character.ini
@@ -319,10 +319,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999999
MaxPAtk = 999999999
diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 748731f653..b22f420b93 100644
--- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -339,7 +339,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/skills/documentation.txt
index e538359b55..50f8122da4 100644
--- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/skills/documentation.txt
@@ -308,7 +308,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java
index 4ea2a41dac..a91529dc86 100644
--- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java
@@ -215,7 +215,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1837,7 +1836,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index 73d9ad393d..cf84c07a62 100644
--- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -327,17 +327,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -345,7 +335,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -353,7 +343,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -361,7 +351,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -369,7 +359,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b11725c93f..678412218a 100644
--- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -29,7 +29,6 @@ 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
@@ -255,10 +254,4 @@ public class PlayableStat extends CreatureStat
final Weapon weapon = getActiveChar().getActiveWeaponItem();
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
-
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
}
diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 6df8233361..b79755260e 100644
--- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -167,7 +167,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Character.ini b/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Character.ini
index c11653ab35..1ad1920798 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Character.ini
+++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Character.ini
@@ -329,10 +329,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999999
MaxPAtk = 999999999
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 621226b271..9f6d6b9c6a 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
@@ -339,7 +339,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
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 6eedb4d8c6..ae39cc0285 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
@@ -307,7 +307,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java
index 566643137c..bd23826014 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java
@@ -215,7 +215,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1847,7 +1846,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index 73d9ad393d..cf84c07a62 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -327,17 +327,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -345,7 +335,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -353,7 +343,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -361,7 +351,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -369,7 +359,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
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 c35b7b1fb2..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
@@ -255,10 +255,4 @@ public class PlayableStat extends CreatureStat
final Weapon weapon = getActiveChar().getActiveWeaponItem();
return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
-
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
}
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
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 531e3c5c19..bb815e784c 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
@@ -168,7 +168,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/config/Character.ini b/L2J_Mobius_08.2_Homunculus/dist/game/config/Character.ini
index cb2515b637..a8d5df94d7 100644
--- a/L2J_Mobius_08.2_Homunculus/dist/game/config/Character.ini
+++ b/L2J_Mobius_08.2_Homunculus/dist/game/config/Character.ini
@@ -329,10 +329,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999999
MaxPAtk = 999999999
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 ae05e05dfc..46004d8ef1 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
@@ -341,7 +341,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
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 60fb337696..9e02f9ee88 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
@@ -309,7 +309,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java
index c6ffb97683..a42476c509 100644
--- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java
@@ -208,7 +208,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1820,7 +1819,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index a7a38eb6bc..04cd1fb1df 100644
--- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -332,17 +332,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -350,7 +340,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -358,7 +348,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -366,7 +356,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -374,7 +364,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
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 be8cc356d8..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
@@ -255,10 +255,4 @@ public class PlayableStat extends CreatureStat
final Weapon weapon = getActiveChar().getActiveWeaponItem();
return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
-
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
}
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
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 7c8311dcce..8d8771f155 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
@@ -173,7 +173,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index 87f06d6fea..bba571606d 100644
--- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -61,21 +61,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -83,7 +69,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Character.ini b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Character.ini
index d37b76fb25..ec77f7765c 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Character.ini
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Character.ini
@@ -329,10 +329,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999999
MaxPAtk = 999999999
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 4ad6ef49c9..39bba847a5 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
@@ -342,7 +342,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
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 a01644e318..670f703536 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
@@ -309,7 +309,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java
index cf1edc06f2..0060fb4d4d 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java
@@ -208,7 +208,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1822,7 +1821,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index a7a38eb6bc..04cd1fb1df 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -332,17 +332,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -350,7 +340,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -358,7 +348,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -366,7 +356,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -374,7 +364,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
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 be8cc356d8..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
@@ -255,10 +255,4 @@ public class PlayableStat extends CreatureStat
final Weapon weapon = getActiveChar().getActiveWeaponItem();
return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
-
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
}
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
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 7c8311dcce..8d8771f155 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
@@ -173,7 +173,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index 87f06d6fea..bba571606d 100644
--- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -61,21 +61,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -83,7 +69,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/config/Character.ini b/L2J_Mobius_10.1_MasterClass/dist/game/config/Character.ini
index d37b76fb25..ec77f7765c 100644
--- a/L2J_Mobius_10.1_MasterClass/dist/game/config/Character.ini
+++ b/L2J_Mobius_10.1_MasterClass/dist/game/config/Character.ini
@@ -329,10 +329,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999999
MaxPAtk = 999999999
diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 9340e046ea..9510b99b90 100644
--- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -344,7 +344,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_10.1_MasterClass/dist/game/data/stats/skills/documentation.txt
index 3b779c4442..7b668809d3 100644
--- a/L2J_Mobius_10.1_MasterClass/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/stats/skills/documentation.txt
@@ -311,7 +311,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java
index 6a10096f59..b4eb4c7fcc 100644
--- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java
@@ -208,7 +208,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1822,7 +1821,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index a7a38eb6bc..04cd1fb1df 100644
--- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -332,17 +332,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -350,7 +340,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -358,7 +348,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -366,7 +356,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -374,7 +364,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index be8cc356d8..6c2c9fcd61 100644
--- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -255,10 +255,4 @@ public class PlayableStat extends CreatureStat
final Weapon weapon = getActiveChar().getActiveWeaponItem();
return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
-
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
}
diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 7c8311dcce..8d8771f155 100644
--- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -173,7 +173,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index 87f06d6fea..bba571606d 100644
--- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -61,21 +61,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -83,7 +69,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Character.ini
index 7775793463..99b1752e92 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Character.ini
+++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Character.ini
@@ -234,10 +234,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/EffectMasterHandler.java
index c633439745..67dd0f10d4 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -324,7 +324,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/skills/documentation.txt
index ef76524dc8..303e2285b3 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/skills/documentation.txt
@@ -293,7 +293,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java
index 680ed0b7ac..e03eb8835f 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java
@@ -208,7 +208,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1733,7 +1732,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index a2e5edb144..8f331376a0 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -317,17 +317,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -335,7 +325,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -343,7 +333,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -351,7 +341,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -359,7 +349,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b656d4ec10..ab69ac3799 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -31,7 +31,6 @@ 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;
@@ -272,12 +271,6 @@ public class PlayableStat extends CreatureStat
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
-
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
{
Clan clan = player.getClan();
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 6b52c36e9c..36b2c82280 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -163,7 +163,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/Character.ini
index 0cac75b2e9..8e55d52c02 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/Character.ini
+++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/Character.ini
@@ -234,10 +234,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/EffectMasterHandler.java
index c633439745..67dd0f10d4 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -324,7 +324,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/skills/documentation.txt
index ef76524dc8..303e2285b3 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/skills/documentation.txt
@@ -293,7 +293,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java
index 92659cf6e9..5fc621eded 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java
@@ -208,7 +208,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1737,7 +1736,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index a2e5edb144..8f331376a0 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -317,17 +317,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -335,7 +325,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -343,7 +333,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -351,7 +341,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -359,7 +349,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b656d4ec10..ab69ac3799 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -31,7 +31,6 @@ 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;
@@ -272,12 +271,6 @@ public class PlayableStat extends CreatureStat
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
-
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
{
Clan clan = player.getClan();
diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 6b52c36e9c..36b2c82280 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -163,7 +163,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/Character.ini
index 0ba6105985..a2aff64c04 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/Character.ini
+++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/Character.ini
@@ -234,10 +234,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/EffectMasterHandler.java
index f5d9aa3162..cc1d7bdcd5 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -326,7 +326,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/skills/documentation.txt
index d7ff377580..4b593af52d 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/skills/documentation.txt
@@ -295,7 +295,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java
index 92659cf6e9..5fc621eded 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java
@@ -208,7 +208,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1737,7 +1736,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index a2e5edb144..8f331376a0 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -317,17 +317,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -335,7 +325,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -343,7 +333,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -351,7 +341,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -359,7 +349,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b656d4ec10..ab69ac3799 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -31,7 +31,6 @@ 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;
@@ -272,12 +271,6 @@ public class PlayableStat extends CreatureStat
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
-
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
{
Clan clan = player.getClan();
diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 5c252d6b82..da6c7497b8 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -166,7 +166,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/Character.ini
index 0ba6105985..a2aff64c04 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/Character.ini
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/Character.ini
@@ -234,10 +234,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 282cd2d1d0..2de62a9096 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -329,7 +329,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpiritExpModify", SpiritExpModify::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/documentation.txt
index 32ef8c1035..db9610ee0d 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/documentation.txt
@@ -298,7 +298,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpiritExpModify: Spirit EXP modify stat effect. (JoeAlisson)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java
index 92659cf6e9..5fc621eded 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java
@@ -208,7 +208,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1737,7 +1736,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index a2e5edb144..8f331376a0 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -317,17 +317,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -335,7 +325,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -343,7 +333,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -351,7 +341,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -359,7 +349,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b656d4ec10..ab69ac3799 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -31,7 +31,6 @@ 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;
@@ -272,12 +271,6 @@ public class PlayableStat extends CreatureStat
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
-
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
{
Clan clan = player.getClan();
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/Stat.java
index daaf5c2180..360f87caa7 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -179,7 +179,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/Character.ini
index 15c8746aea..9f307fdf9b 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/Character.ini
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/Character.ini
@@ -234,10 +234,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 282cd2d1d0..2de62a9096 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -329,7 +329,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpiritExpModify", SpiritExpModify::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/documentation.txt
index 32ef8c1035..db9610ee0d 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/documentation.txt
@@ -298,7 +298,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpiritExpModify: Spirit EXP modify stat effect. (JoeAlisson)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java
index c0d754cadc..7368ab9009 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java
@@ -208,7 +208,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1742,7 +1741,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index a2e5edb144..8f331376a0 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -317,17 +317,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -335,7 +325,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -343,7 +333,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -351,7 +341,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -359,7 +349,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b656d4ec10..ab69ac3799 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -31,7 +31,6 @@ 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;
@@ -272,12 +271,6 @@ public class PlayableStat extends CreatureStat
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
-
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
{
Clan clan = player.getClan();
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Stat.java
index daaf5c2180..360f87caa7 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -179,7 +179,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/Character.ini b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/Character.ini
index 9b2c2ee19c..5517f3b789 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/Character.ini
+++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/Character.ini
@@ -234,10 +234,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
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 a9edd975a8..a1f8ef24f4 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
@@ -331,7 +331,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpiritExpModify", SpiritExpModify::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
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 f11987e472..cc328db3d3 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
@@ -300,7 +300,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpiritExpModify: Spirit EXP modify stat effect. (JoeAlisson)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java
index c4bce39129..172326cacb 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java
@@ -208,7 +208,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1748,7 +1747,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index a2e5edb144..8f331376a0 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -317,17 +317,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -335,7 +325,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -343,7 +333,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -351,7 +341,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -359,7 +349,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
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 3812746e4e..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
@@ -272,12 +272,6 @@ public class PlayableStat extends CreatureStat
return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
-
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
{
Clan clan = player.getClan();
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
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 0310ad84de..978e648034 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
@@ -182,7 +182,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini b/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini
index 9167d7c108..0acf5578bc 100644
--- a/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini
+++ b/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini
@@ -234,10 +234,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/EffectMasterHandler.java
index e4327aeeda..2b8269f2e9 100644
--- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -327,7 +327,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
EffectHandler.getInstance().registerHandler("StatAddForLevel", StatAddForLevel::new);
diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/skills/documentation.txt
index ec6d9ba27f..a4ee69f5ac 100644
--- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/skills/documentation.txt
@@ -295,7 +295,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
StatAddForLevel: Adds a fixed amount of a Stat for a specific player level. (l2jmobius)
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java
index 5dfae2d18c..cf59172ffc 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java
@@ -207,7 +207,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1740,7 +1739,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index a2e5edb144..8f331376a0 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -317,17 +317,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -335,7 +325,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -343,7 +333,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -351,7 +341,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -359,7 +349,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index b656d4ec10..ab69ac3799 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -31,7 +31,6 @@ 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;
@@ -272,12 +271,6 @@ public class PlayableStat extends CreatureStat
return weapon != null ? weapon.getBaseAttackAngle() : super.getPhysicalAttackAngle();
}
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
-
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
{
Clan clan = player.getClan();
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 54a24adb35..353e528971 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -163,7 +163,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/Character.ini b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/Character.ini
index b06b11c0ef..9dc8677ae3 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/Character.ini
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/Character.ini
@@ -234,10 +234,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
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 c7d2ed2bd9..1d6bd1a85e 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
@@ -338,7 +338,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpiritExpModify", SpiritExpModify::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
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 523a7089c7..557de9a78d 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
@@ -307,7 +307,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpiritExpModify: Spirit EXP modify stat effect. (JoeAlisson)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java
index 3711307b21..3e236fa602 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java
@@ -210,7 +210,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1768,7 +1767,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index d161a62c5d..fe084eead5 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -322,17 +322,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -340,7 +330,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -348,7 +338,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -356,7 +346,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -364,7 +354,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
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 43b0fa5461..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
@@ -272,12 +272,6 @@ public class PlayableStat extends CreatureStat
return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
-
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
{
Clan clan = player.getClan();
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
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 3ec0d69666..3a22250416 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
@@ -188,7 +188,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/Character.ini b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/Character.ini
index b06b11c0ef..9dc8677ae3 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/Character.ini
+++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/Character.ini
@@ -234,10 +234,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
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 53aad4ada9..09c534eb01 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
@@ -340,7 +340,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpiritExpModify", SpiritExpModify::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
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 46b85b0dd8..2603791ccf 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
@@ -308,7 +308,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpiritExpModify: Spirit EXP modify stat effect. (JoeAlisson)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java
index 6e7a913580..0e1caed230 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java
@@ -210,7 +210,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1771,7 +1770,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index d161a62c5d..fe084eead5 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -322,17 +322,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -340,7 +330,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -348,7 +338,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -356,7 +346,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -364,7 +354,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
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 43b0fa5461..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
@@ -272,12 +272,6 @@ public class PlayableStat extends CreatureStat
return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
-
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
{
Clan clan = player.getClan();
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
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 3ec0d69666..3a22250416 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
@@ -188,7 +188,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/config/Character.ini b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/config/Character.ini
index b06b11c0ef..9dc8677ae3 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/config/Character.ini
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/config/Character.ini
@@ -234,10 +234,6 @@ MaxSpBonus = 0
# Default: 300
MaxRunSpeed = 300
-# Maximum summon running speed.
-# Default: 350
-MaxRunSpeedSummon = 350
-
# Maximum character Physical Attack.
# Default: 999999
MaxPAtk = 999999
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 6543dab8c1..f75fac7e68 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -342,7 +342,6 @@ public class EffectMasterHandler
EffectHandler.getInstance().registerHandler("Sow", Sow::new);
EffectHandler.getInstance().registerHandler("Speed", Speed::new);
EffectHandler.getInstance().registerHandler("SphericBarrier", SphericBarrier::new);
- EffectHandler.getInstance().registerHandler("SpeedLimit", SpeedLimit::new);
EffectHandler.getInstance().registerHandler("SpiritExpModify", SpiritExpModify::new);
EffectHandler.getInstance().registerHandler("SpModify", SpModify::new);
EffectHandler.getInstance().registerHandler("Spoil", Spoil::new);
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
deleted file mode 100644
index 41f395125a..0000000000
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/SpeedLimit.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 dontknowdontcare
- */
-public class SpeedLimit extends AbstractStatEffect
-{
- public SpeedLimit(StatSet params)
- {
- super(params, Stat.SPEED_LIMIT);
- }
-}
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/stats/skills/documentation.txt b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/stats/skills/documentation.txt
index 1bffd02664..db31e70d71 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/stats/skills/documentation.txt
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/stats/skills/documentation.txt
@@ -309,7 +309,6 @@ SoulEating: Absorbs souls when taking exp from mobs and sets max soul count.
Sow: Planting a seed into NPC target. Manor stuff.
Speed: Speed stat.
SphericBarrier: Blocks damage and buff/debuff incoming from outside the specified range.
-SpeedLimit: Increase a character's max Speed limit. (l2jmobius)
SpiritExpModify: Spirit EXP modify stat effect. (JoeAlisson)
SpModify: Bonus SP stat.
Spoil: Spoils a mob activating its extra sweep drop.
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java
index 6e7a913580..0e1caed230 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java
@@ -210,7 +210,6 @@ public class Config
public static double MAX_BONUS_EXP;
public static double MAX_BONUS_SP;
public static int MAX_RUN_SPEED;
- public static int MAX_RUN_SPEED_SUMMON;
public static int MAX_PATK;
public static int MAX_MATK;
public static int MAX_PCRIT_RATE;
@@ -1771,7 +1770,6 @@ public class Config
MAX_BONUS_EXP = characterConfig.getDouble("MaxExpBonus", 0);
MAX_BONUS_SP = characterConfig.getDouble("MaxSpBonus", 0);
MAX_RUN_SPEED = characterConfig.getInt("MaxRunSpeed", 300);
- MAX_RUN_SPEED_SUMMON = characterConfig.getInt("MaxRunSpeedSummon", 350);
MAX_PATK = characterConfig.getInt("MaxPAtk", 999999);
MAX_MATK = characterConfig.getInt("MaxMAtk", 999999);
MAX_PCRIT_RATE = characterConfig.getInt("MaxPCritRate", 500);
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
index d161a62c5d..fe084eead5 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java
@@ -322,17 +322,7 @@ public class CreatureStat
{
baseSpeed = _creature.getTemplate().getBaseValue(_creature.isRunning() ? Stat.RUN_SPEED : Stat.WALK_SPEED, 0);
}
- return getMoveSpeed() * (1 / baseSpeed);
- }
-
- protected double maxSpeed()
- {
- return 99999999;
- }
-
- private double calcValidSpeed(final double val)
- {
- return Math.max(Math.min(val, maxSpeed() + getValue(Stat.SPEED_LIMIT)), 0);
+ return getMoveSpeed() * (1. / baseSpeed);
}
/**
@@ -340,7 +330,7 @@ public class CreatureStat
*/
public double getRunSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_RUN_SPEED : Stat.RUN_SPEED);
}
/**
@@ -348,7 +338,7 @@ public class CreatureStat
*/
public double getWalkSpeed()
{
- return calcValidSpeed(getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED));
+ return getValue(_creature.isInsideZone(ZoneId.WATER) ? Stat.SWIM_WALK_SPEED : Stat.WALK_SPEED);
}
/**
@@ -356,7 +346,7 @@ public class CreatureStat
*/
public double getSwimRunSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_RUN_SPEED));
+ return getValue(Stat.SWIM_RUN_SPEED);
}
/**
@@ -364,7 +354,7 @@ public class CreatureStat
*/
public double getSwimWalkSpeed()
{
- return calcValidSpeed(getValue(Stat.SWIM_WALK_SPEED));
+ return getValue(Stat.SWIM_WALK_SPEED);
}
/**
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
index 378c3b4330..fecef82b02 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java
@@ -272,12 +272,6 @@ public class PlayableStat extends CreatureStat
return (weapon != null ? weapon.getBaseAttackAngle() + (int) getActiveChar().getStat().getValue(Stat.WEAPON_ATTACK_ANGLE_BONUS, 0) : super.getPhysicalAttackAngle());
}
- @Override
- protected double maxSpeed()
- {
- return Config.MAX_RUN_SPEED + getValue(Stat.SPEED_LIMIT);
- }
-
private void addReputationToClanBasedOnLevel(Player player, int leveledUpCount)
{
Clan clan = player.getClan();
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
index 1b9227199d..7b4c4d6176 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/SummonStat.java
@@ -33,8 +33,28 @@ public class SummonStat extends PlayableStat
}
@Override
- protected double maxSpeed()
+ public double getRunSpeed()
{
- return Config.MAX_RUN_SPEED_SUMMON;
+ final double val = super.getRunSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
+ }
+
+ @Override
+ public double getWalkSpeed()
+ {
+ final double val = super.getWalkSpeed() + Config.RUN_SPD_BOOST;
+
+ // Apply max run speed cap.
+ if (val > (Config.MAX_RUN_SPEED + 50)) // In retail maximum run speed is 350 for summons and 300 for players
+ {
+ return Config.MAX_RUN_SPEED + 50;
+ }
+ return val;
}
}
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/Stat.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/Stat.java
index 85ca0e81a7..56f8bef8a3 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/Stat.java
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/Stat.java
@@ -188,7 +188,6 @@ public enum Stat
// Run speed, walk & escape speed are calculated proportionally, magic speed is a buff
MOVE_SPEED("moveSpeed"),
- SPEED_LIMIT("speedLimit"),
RUN_SPEED("runSpd", new SpeedFinalizer()),
WALK_SPEED("walkSpd", new SpeedFinalizer()),
SWIM_RUN_SPEED("fastSwimSpd", new SpeedFinalizer()),
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
index a010d20921..35e7b6aec2 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/stats/finalizers/SpeedFinalizer.java
@@ -42,7 +42,7 @@ public class SpeedFinalizer implements IStatFunction
throwIfPresent(base);
double baseValue = getBaseSpeed(creature, stat);
- if (creature.isPlayable())
+ if (creature.isPlayer())
{
// Enchanted feet bonus
baseValue += calcEnchantBodyPart(creature, ItemTemplate.SLOT_FEET);
@@ -56,21 +56,7 @@ public class SpeedFinalizer implements IStatFunction
baseValue += bonusDex;
}
- final double maxSpeed;
- if (creature.isPlayer())
- {
- maxSpeed = Config.MAX_RUN_SPEED + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else if (creature.isSummon())
- {
- maxSpeed = Config.MAX_RUN_SPEED_SUMMON + creature.getStat().getValue(Stat.SPEED_LIMIT, 0);
- }
- else
- {
- maxSpeed = Double.MAX_VALUE;
- }
-
- return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 0, maxSpeed);
+ return validateValue(creature, Stat.defaultValue(creature, stat, baseValue), 1, creature.isPlayable() ? Config.MAX_RUN_SPEED : Double.MAX_VALUE);
}
@Override
@@ -78,7 +64,7 @@ public class SpeedFinalizer implements IStatFunction
{
if (isBlessed)
{
- return Math.max(enchantLevel - 3, 0) + Math.max(enchantLevel - 6, 0);
+ return (1 * Math.max(enchantLevel - 3, 0)) + (1 * Math.max(enchantLevel - 6, 0));
}
return (0.6 * Math.max(enchantLevel - 3, 0)) + (0.6 * Math.max(enchantLevel - 6, 0));
}