mirror of
https://github.com/araxiaonline/Traumas.git
synced 2026-06-13 02:12:20 -04:00
221 lines
8.6 KiB
Diff
221 lines
8.6 KiB
Diff
From be10315363d7f8fb01679b9f2feac4c7c67f6c73 Mon Sep 17 00:00:00 2001
|
|
From: trickerer <onlysuffering@gmail.com>
|
|
Date: Sat, 4 Sep 2021 20:32:33 +0700
|
|
Subject: [PATCH] Traumas
|
|
|
|
---
|
|
src/server/game/Entities/Unit/Unit.cpp | 5 +
|
|
src/server/game/Scripting/ScriptMgr.cpp | 5 +
|
|
src/server/game/Scripting/ScriptMgr.h | 4 +
|
|
.../scripts/Custom/custom_script_loader.cpp | 2 +
|
|
src/server/worldserver/worldserver.conf.dist | 126 +++++++
|
|
6 files changed, 142 insertions(+)
|
|
|
|
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
|
|
index bffe3258..0e003392 100644
|
|
--- a/src/server/game/Entities/Unit/Unit.cpp
|
|
+++ b/src/server/game/Entities/Unit/Unit.cpp
|
|
@@ -700,6 +700,11 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit* excludeCasterChannel) cons
|
|
// Hook for OnDamage Event
|
|
sScriptMgr->OnDamage(attacker, victim, damage);
|
|
|
|
+ // Hook for OnDamageEx Event
|
|
+ sScriptMgr->OnDamageEx(attacker, victim, damage,
|
|
+ cleanDamage && (cleanDamage->hitOutCome == MELEE_HIT_CRIT || cleanDamage->hitOutCome == MELEE_HIT_CRUSHING),
|
|
+ damagetype == DIRECT_DAMAGE || damagetype == SPELL_DIRECT_DAMAGE, spellProto ? spellProto->SchoolMask : 0);
|
|
+
|
|
// Signal to pets that their owner was attacked - except when DOT.
|
|
if (attacker != victim && damagetype != DOT)
|
|
{
|
|
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
|
|
index 80197359..c1a3ceaa 100644
|
|
--- a/src/server/game/Scripting/ScriptMgr.cpp
|
|
+++ b/src/server/game/Scripting/ScriptMgr.cpp
|
|
@@ -2108,6 +2108,11 @@ void ScriptMgr::OnDamage(Unit* attacker, Unit* victim, uint32& damage)
|
|
FOREACH_SCRIPT(UnitScript)->OnDamage(attacker, victim, damage);
|
|
}
|
|
|
|
+void ScriptMgr::OnDamageEx(Unit* attacker, Unit* victim, uint32& damage, bool crit, bool direct, uint32 schoolMask)
|
|
+{
|
|
+ FOREACH_SCRIPT(UnitScript)->OnDamageEx(attacker, victim, damage, crit, direct, schoolMask);
|
|
+}
|
|
+
|
|
void ScriptMgr::ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage)
|
|
{
|
|
FOREACH_SCRIPT(UnitScript)->ModifyPeriodicDamageAurasTick(target, attacker, damage);
|
|
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
|
|
index 3485c3aa..abf718e5 100644
|
|
--- a/src/server/game/Scripting/ScriptMgr.h
|
|
+++ b/src/server/game/Scripting/ScriptMgr.h
|
|
@@ -403,6 +403,9 @@ class TC_GAME_API UnitScript : public ScriptObject
|
|
// Called when a unit deals damage to another unit
|
|
virtual void OnDamage(Unit* /*attacker*/, Unit* /*victim*/, uint32& /*damage*/) { }
|
|
|
|
+ // Called when a unit deals damage to another unit (more parameters)
|
|
+ virtual void OnDamageEx(Unit* /*attacker*/, Unit* /*victim*/, uint32& /*damage*/, bool /*crit*/, bool /*direct*/, uint32 /*schoolMask*/) { }
|
|
+
|
|
// Called when DoT's Tick Damage is being Dealt
|
|
virtual void ModifyPeriodicDamageAurasTick(Unit* /*target*/, Unit* /*attacker*/, uint32& /*damage*/) { }
|
|
|
|
@@ -1083,6 +1086,7 @@ class TC_GAME_API ScriptMgr
|
|
|
|
void OnHeal(Unit* healer, Unit* reciever, uint32& gain);
|
|
void OnDamage(Unit* attacker, Unit* victim, uint32& damage);
|
|
+ void OnDamageEx(Unit* attacker, Unit* victim, uint32& damage, bool crit, bool direct, uint32 schoolMask);
|
|
void ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage);
|
|
void ModifyMeleeDamage(Unit* target, Unit* attacker, uint32& damage);
|
|
void ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage);
|
|
diff --git a/src/server/scripts/Custom/custom_script_loader.cpp b/src/server/scripts/Custom/custom_script_loader.cpp
|
|
index 9e5e9ba2..3a2fbb44 100644
|
|
--- a/src/server/scripts/Custom/custom_script_loader.cpp
|
|
+++ b/src/server/scripts/Custom/custom_script_loader.cpp
|
|
@@ -16,9 +16,11 @@
|
|
*/
|
|
|
|
// This is where scripts' loading functions should be declared:
|
|
+void AddSC_traumas();
|
|
|
|
// The name of this function should match:
|
|
// void Add${NameOfDirectory}Scripts()
|
|
void AddCustomScripts()
|
|
{
|
|
+ AddSC_traumas();
|
|
}
|
|
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
|
|
index 022bca30..017b8a70 100644
|
|
--- a/src/server/worldserver/worldserver.conf.dist
|
|
+++ b/src/server/worldserver/worldserver.conf.dist
|
|
@@ -4117,3 +4117,129 @@ Metric.OverallStatusInterval = 1
|
|
|
|
#
|
|
###################################################################################################
|
|
+
|
|
+###################################################################################################
|
|
+# TRAUMAS CONFIGURATION
|
|
+#
|
|
+# Trauma.Enable
|
|
+# Description: Enables Traumas.
|
|
+# Default: 1 - (Enable)
|
|
+# 0 - (Disable)
|
|
+
|
|
+Trauma.Enable = 1
|
|
+
|
|
+# Trauma.Damage.Direct
|
|
+# Trauma.Damage.Periodic
|
|
+# Description: Damage types that can cause trauma.
|
|
+# Default: 1 - (Trauma.Damage.Direct)
|
|
+# 1 - (Trauma.Damage.Periodic)
|
|
+
|
|
+Trauma.Damage.Direct = 1
|
|
+Trauma.Damage.Periodic = 1
|
|
+
|
|
+# Trauma.Target.Creature
|
|
+# Description: Can creatures (mobs) be affected by traumas.
|
|
+# Default: 1 - (Enabled)
|
|
+# 0 - (Disabled)
|
|
+
|
|
+Trauma.Target.Creature = 1
|
|
+
|
|
+# Trauma.Target.Creature.Rank.Normal
|
|
+# Trauma.Target.Creature.Rank.Elite
|
|
+# Trauma.Target.Creature.Rank.Rare
|
|
+# Trauma.Target.Creature.Rank.RareElite
|
|
+# Trauma.Target.Creature.Rank.Boss
|
|
+# Description: Filter creatures affected by traumas by rank.
|
|
+# Default: 1 - (Trauma.Target.Creature.Rank.Normal)
|
|
+# 1 - (Trauma.Target.Creature.Rank.Elite)
|
|
+# 1 - (Trauma.Target.Creature.Rank.Rare)
|
|
+# 1 - (Trauma.Target.Creature.Rank.RareElite)
|
|
+# 0 - (Trauma.Target.Creature.Rank.Boss)
|
|
+
|
|
+Trauma.Target.Creature.Rank.Normal = 1
|
|
+Trauma.Target.Creature.Rank.Elite = 1
|
|
+Trauma.Target.Creature.Rank.Rare = 1
|
|
+Trauma.Target.Creature.Rank.RareElite = 1
|
|
+Trauma.Target.Creature.Rank.Boss = 0
|
|
+
|
|
+# Trauma.Target.Player
|
|
+# Description: Can players be affected by traumas.
|
|
+# Default: 1 - (Enabled)
|
|
+# 0 - (Disabled)
|
|
+
|
|
+Trauma.Target.Player = 1
|
|
+
|
|
+# Trauma.Target.Player.Minions
|
|
+# Description: Can player-controlled units (pets, etc.) be affected by traumas.
|
|
+# Default: 1 - (Enabled)
|
|
+# 0 - (Disabled)
|
|
+
|
|
+Trauma.Target.Player.Minions = 1
|
|
+
|
|
+# Trauma.Target.Player.PVP
|
|
+# Description: Enable traumas in PvP.
|
|
+# Default: 0 - (Disabled)
|
|
+# 1 - (Enabled)
|
|
+
|
|
+Trauma.Target.Player.PVP = 0
|
|
+
|
|
+# Trauma.HealthPctThreshold
|
|
+# Description: Make traumas only trigger on units with health percentage below this number.
|
|
+# Default: 0 - (Disabled)
|
|
+# 80 - (Enabled, only trigger on unit with 80% HP or less)
|
|
+
|
|
+Trauma.HealthPctThreshold = 0
|
|
+
|
|
+# Trauma.TriggerHealthPctThreshold
|
|
+# Description: Make traumas only trigger if damage >= amount of target max hp percentage.
|
|
+# Default: 0 - (Disabled)
|
|
+# 3 - (Enabled, only trigger if damage >= 3% of target's maximum hp)
|
|
+
|
|
+Trauma.TriggerHealthPctThreshold = 0
|
|
+
|
|
+# Trauma.CritsOnly
|
|
+# Description: Allow traumas to only trigger on critical hits.
|
|
+# Default: 0 - (Disabled)
|
|
+# 1 - (Enabled)
|
|
+
|
|
+Trauma.CritsOnly = 0
|
|
+
|
|
+# Trauma.ChanceMultiplier.Creature
|
|
+# Trauma.ChanceMultiplier.Player
|
|
+# Description: A multiplier of a chance to cause trauma on mobs / players and their minions.
|
|
+# Default: 1.0
|
|
+# 2.0 - (2x chance)
|
|
+
|
|
+Trauma.ChanceMultiplier.Creature = 1.0
|
|
+Trauma.ChanceMultiplier.Player = 1.0
|
|
+
|
|
+# Trauma.ChanceMultiplier.Crit
|
|
+# Description: A multiplier of a chance to cause trauma on critical hit.
|
|
+# Default: 1.0
|
|
+# 2.0 - (2x chance)
|
|
+
|
|
+Trauma.ChanceMultiplier.Crit = 1.0
|
|
+
|
|
+# Trauma.Cure.Enable
|
|
+# Description: Give healing spells a chance to cure trauma (one at a time).
|
|
+# Default: 1 - (Enabled)
|
|
+# 0 - (Disabled)
|
|
+
|
|
+Trauma.Cure.Enable = 1
|
|
+
|
|
+# Trauma.Cure.ChanceMultiplier
|
|
+# Description: A multiplier of a chance to cure trauma by healing.
|
|
+# Default: 1.0
|
|
+# 2.0 - (2x chance)
|
|
+
|
|
+Trauma.Cure.ChanceMultiplier = 1.0
|
|
+
|
|
+# Trauma.DurationOverride
|
|
+# Description: Override duration of trauma (base effect), in milliseconds.
|
|
+# Default: 0 - (Disabled)
|
|
+# 120000 - (Enabled, 2 minutes)
|
|
+
|
|
+Trauma.DurationOverride = 0
|
|
+
|
|
+#
|
|
+###################################################################################################
|
|
--
|
|
2.30.1.windows.1
|
|
|