mirror of
https://github.com/EQEmu/Server.git
synced 2026-01-07 06:13:52 +00:00
Add support for post June 18, 2014 Hundred Hands effects
Set Spells:Jun182014HundredHandsRevamp to true if your spell file is newer
This commit is contained in:
parent
3be7d45d36
commit
66c171b61b
@ -1,5 +1,9 @@
|
||||
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
||||
-------------------------------------------------------
|
||||
== 09/28/2014 ==
|
||||
demonstar55: Add support for post June 18, 2014 Hundred Hands Effect spells (they changed the formula and stuff)
|
||||
set Spells:Jun182014HundredHandsRevamp to true if you're using a spell file from June 18, 2014+
|
||||
|
||||
== 09/27/2014 ==
|
||||
Kayen: Implemented perl function $mob->GetSpellStat(spell_id, identifier, slot);
|
||||
Note: identifier is the stat field in spells_new, slot is used for certain effects like effectid, base,base2, max ect.
|
||||
|
||||
@ -322,6 +322,7 @@ RULE_INT ( Spells, AI_IdleNoSpellMinRecast, 500) // AI spell recast time(MS) che
|
||||
RULE_INT ( Spells, AI_IdleNoSpellMaxRecast, 2000) // AI spell recast time(MS) check when no spell is cast while chasing target. (max time in random)
|
||||
RULE_INT ( Spells, AI_IdleBeneficialChance, 100) // Chance while idle to do a beneficial spell on self or others.
|
||||
RULE_BOOL ( Spells, SHDProcIDOffByOne, true) // pre June 2009 SHD spell procs were off by 1, they stopped doing this in June 2009 (so UF+ spell files need this false)
|
||||
RULE_BOOL ( Spells, Jun182014HundredHandsRevamp, false) // this should be true for if you import a spell file newer than June 18, 2014
|
||||
|
||||
RULE_CATEGORY_END()
|
||||
|
||||
|
||||
@ -0,0 +1 @@
|
||||
INSERT INTO `rule_values` (`ruleset_id`, `rule_name`, `rule_value`, `notes`) VALUES (1, 'Spells:Jun182014HundredHandsRevamp', 'false', 'Set this to true if your spell file is from after June 18, 2014.');
|
||||
@ -4825,7 +4825,6 @@ void Mob::CommonBreakInvisible()
|
||||
* Difference -0.004444444 -0.005555556 -0.006666667 -0.008222222
|
||||
*
|
||||
* These times are in 10th of a second
|
||||
* New formula currently unsupported
|
||||
*/
|
||||
|
||||
void Mob::SetAttackTimer()
|
||||
@ -4900,7 +4899,7 @@ void Client::SetAttackTimer()
|
||||
}
|
||||
}
|
||||
|
||||
int hhe = std::max(itembonuses.HundredHands + spellbonuses.HundredHands, -99);
|
||||
int hhe = itembonuses.HundredHands + spellbonuses.HundredHands;
|
||||
int speed = 0;
|
||||
int delay = 36;
|
||||
float quiver_haste = 0.0f;
|
||||
@ -4917,7 +4916,10 @@ void Client::SetAttackTimer()
|
||||
if (ItemToUse->ItemType == ItemTypeBow || ItemToUse->ItemType == ItemTypeLargeThrowing)
|
||||
quiver_haste = GetQuiverHaste();
|
||||
}
|
||||
speed = static_cast<int>(((delay / haste_mod) + ((hhe / 100.0f) * delay)) * 100);
|
||||
if (RuleB(Spells, Jun182014HundredHandsRevamp))
|
||||
speed = static_cast<int>(((delay / haste_mod) + ((hhe / 1000.0f) * (delay / haste_mod))) * 100);
|
||||
else
|
||||
speed = static_cast<int>(((delay / haste_mod) + ((hhe / 100.0f) * delay)) * 100);
|
||||
// this is probably wrong
|
||||
if (quiver_haste > 0)
|
||||
speed *= quiver_haste;
|
||||
@ -4937,13 +4939,17 @@ void NPC::SetAttackTimer()
|
||||
attack_timer.SetAtTrigger(4000, true);
|
||||
|
||||
Timer *TimerToUse = nullptr;
|
||||
int hhe = std::max(itembonuses.HundredHands + spellbonuses.HundredHands, -99);
|
||||
int hhe = itembonuses.HundredHands + spellbonuses.HundredHands;
|
||||
|
||||
// Technically NPCs should do some logic for weapons, but the effect is minimal
|
||||
// What they do is take the lower of their set delay and the weapon's
|
||||
// ex. Mob's delay set to 20, weapon set to 19, delay 19
|
||||
// Mob's delay set to 20, weapon set to 21, delay 20
|
||||
int speed = static_cast<int>(((attack_delay / haste_mod) + ((hhe / 100.0f) * attack_delay)) * 100);
|
||||
int speed = 0;
|
||||
if (RuleB(Spells, Jun182014HundredHandsRevamp))
|
||||
speed = static_cast<int>(((attack_delay / haste_mod) + ((hhe / 1000.0f) * (attack_delay / haste_mod))) * 100);
|
||||
else
|
||||
speed = static_cast<int>(((attack_delay / haste_mod) + ((hhe / 100.0f) * attack_delay)) * 100);
|
||||
|
||||
for (int i = MainRange; i <= MainSecondary; i++) {
|
||||
//pick a timer
|
||||
|
||||
@ -9035,7 +9035,7 @@ void Bot::SetAttackTimer() {
|
||||
}
|
||||
}
|
||||
|
||||
int hhe = std::max(itembonuses.HundredHands + spellbonuses.HundredHands, -99);
|
||||
int hhe = itembonuses.HundredHands + spellbonuses.HundredHands;
|
||||
int speed = 0;
|
||||
int delay = 36;
|
||||
|
||||
@ -9049,7 +9049,10 @@ void Bot::SetAttackTimer() {
|
||||
//we have a weapon, use its delay
|
||||
delay = ItemToUse->Delay;
|
||||
}
|
||||
speed = static_cast<int>(((delay / haste_mod) + ((hhe / 100.0f) * delay)) * 100);
|
||||
if (RuleB(Spells, Jun182014HundredHandsRevamp))
|
||||
speed = static_cast<int>(((delay / haste_mod) + ((hhe / 1000.0f) * (delay / haste_mod))) * 100);
|
||||
else
|
||||
speed = static_cast<int>(((delay / haste_mod) + ((hhe / 100.0f) * delay)) * 100);
|
||||
TimerToUse->SetAtTrigger(std::max(RuleI(Combat, MinHastedDelay), speed), true);
|
||||
|
||||
if(i == MainPrimary)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user