aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2017-02-21 22:37:53 -0300
committerariel- <ariel-@users.noreply.github.com>2017-02-21 22:38:30 -0300
commiteac9c1f0b992fd3622fd7dd864b2acc2781ec778 (patch)
tree8d100614f85bc56987335fc302d3b20e63d36354 /src/server/scripts
parentb3b4054eb44fdb9b0efe47d1a7ec3021b87a5fed (diff)
Core/Scripts: fix Nightfall proc chance and reduce it for victims with level above 60
Closes #15734
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/World/item_scripts.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/server/scripts/World/item_scripts.cpp b/src/server/scripts/World/item_scripts.cpp
index 7f9a22e07a9..5ce6a8301dd 100644
--- a/src/server/scripts/World/item_scripts.cpp
+++ b/src/server/scripts/World/item_scripts.cpp
@@ -412,6 +412,30 @@ public:
}
};
+// Only used currently for
+// 19169: Nightfall
+class item_generic_limit_chance_above_60 : public ItemScript
+{
+ public:
+ item_generic_limit_chance_above_60() : ItemScript("item_generic_limit_chance_above_60") { }
+
+ bool OnCastItemCombatSpell(Player* /*player*/, Unit* victim, SpellInfo const* /*spellInfo*/, Item* /*item*/) override
+ {
+ // spell proc chance gets severely reduced on victims > 60 (formula unknown)
+ if (victim->getLevel() > 60)
+ {
+ // gives ~0.1% proc chance at lvl 70
+ float const lvlPenaltyFactor = 9.93f;
+ float const failureChance = (victim->getLevel() - 60) * lvlPenaltyFactor;
+
+ // base ppm chance was already rolled, only roll success chance
+ return !roll_chance_f(failureChance);
+ }
+
+ return true;
+ }
+};
+
void AddSC_item_scripts()
{
new item_only_for_flight();
@@ -425,4 +449,5 @@ void AddSC_item_scripts()
new item_dehta_trap_smasher();
new item_trident_of_nazjan();
new item_captured_frog();
+ new item_generic_limit_chance_above_60();
}