mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-29 16:42:25 +00:00
Revert custom changes that came with my code load
This commit is contained in:
parent
788959a5e2
commit
5c4389effb
142
zone/bonuses.cpp
142
zone/bonuses.cpp
@ -335,8 +335,8 @@ void Client::AddItemBonuses(const ItemInst *inst, StatBonuses* newbon, bool isAu
|
|||||||
}
|
}
|
||||||
|
|
||||||
//FatherNitwit: New style haste, shields, and regens
|
//FatherNitwit: New style haste, shields, and regens
|
||||||
if((int32)item->Haste > 0) {
|
if(newbon->haste < (int32)item->Haste) {
|
||||||
newbon->haste += item->Haste;
|
newbon->haste = item->Haste;
|
||||||
}
|
}
|
||||||
if(item->Regen > 0)
|
if(item->Regen > 0)
|
||||||
newbon->HPRegen += item->Regen;
|
newbon->HPRegen += item->Regen;
|
||||||
@ -390,10 +390,10 @@ void Client::AddItemBonuses(const ItemInst *inst, StatBonuses* newbon, bool isAu
|
|||||||
newbon->HitChance += item->Accuracy;
|
newbon->HitChance += item->Accuracy;
|
||||||
}
|
}
|
||||||
if(item->CombatEffects > 0) {
|
if(item->CombatEffects > 0) {
|
||||||
if((newbon->MeleeDamage + item->CombatEffects) > RuleI(Character, ItemCombatEffectsCap))
|
if((newbon->ProcChance + item->CombatEffects) > RuleI(Character, ItemCombatEffectsCap))
|
||||||
newbon->MeleeDamage = RuleI(Character, ItemCombatEffectsCap);
|
newbon->ProcChance = RuleI(Character, ItemCombatEffectsCap);
|
||||||
else
|
else
|
||||||
newbon->MeleeDamage += item->CombatEffects;
|
newbon->ProcChance += item->CombatEffects;
|
||||||
}
|
}
|
||||||
if(item->DotShielding > 0) {
|
if(item->DotShielding > 0) {
|
||||||
if((newbon->DoTShielding + item->DotShielding) > RuleI(Character, ItemDoTShieldingCap))
|
if((newbon->DoTShielding + item->DotShielding) > RuleI(Character, ItemDoTShieldingCap))
|
||||||
@ -1449,7 +1449,7 @@ void Mob::CalcSpellBonuses(StatBonuses* newbon)
|
|||||||
int buff_count = GetMaxTotalSlots();
|
int buff_count = GetMaxTotalSlots();
|
||||||
for(i = 0; i < buff_count; i++) {
|
for(i = 0; i < buff_count; i++) {
|
||||||
if(buffs[i].spellid != SPELL_UNKNOWN){
|
if(buffs[i].spellid != SPELL_UNKNOWN){
|
||||||
ApplySpellsBonuses(buffs[i].spellid, buffs[i].casterlevel, newbon, buffs[i].casterid, 0, buffs[i].ticsremaining,i);
|
ApplySpellsBonuses(buffs[i].spellid, buffs[i].casterlevel, newbon, buffs[i].casterid, 0, buffs[i].ticsremaining, i, buffs[i].instrument_mod);
|
||||||
|
|
||||||
if (buffs[i].numhits > 0)
|
if (buffs[i].numhits > 0)
|
||||||
Numhits(true);
|
Numhits(true);
|
||||||
@ -1472,8 +1472,9 @@ void Mob::CalcSpellBonuses(StatBonuses* newbon)
|
|||||||
if (GetClass() == BARD) newbon->ManaRegen = 0; // Bards do not get mana regen from spells.
|
if (GetClass() == BARD) newbon->ManaRegen = 0; // Bards do not get mana regen from spells.
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* new_bonus, uint16 casterId, uint8 WornType, uint32 ticsremaining, int buffslot,
|
void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses *new_bonus, uint16 casterId,
|
||||||
bool IsAISpellEffect, uint16 effect_id, int32 se_base, int32 se_limit, int32 se_max)
|
uint8 WornType, int32 ticsremaining, int buffslot, int instrument_mod,
|
||||||
|
bool IsAISpellEffect, uint16 effect_id, int32 se_base, int32 se_limit, int32 se_max)
|
||||||
{
|
{
|
||||||
int i, effect_value, base2, max, effectid;
|
int i, effect_value, base2, max, effectid;
|
||||||
bool AdditiveWornBonus = false;
|
bool AdditiveWornBonus = false;
|
||||||
@ -1511,7 +1512,7 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne
|
|||||||
AdditiveWornBonus = true;
|
AdditiveWornBonus = true;
|
||||||
|
|
||||||
effectid = spells[spell_id].effectid[i];
|
effectid = spells[spell_id].effectid[i];
|
||||||
effect_value = CalcSpellEffectValue(spell_id, i, casterlevel, caster, ticsremaining);
|
effect_value = CalcSpellEffectValue(spell_id, i, casterlevel, instrument_mod, caster, ticsremaining);
|
||||||
base2 = spells[spell_id].base2[i];
|
base2 = spells[spell_id].base2[i];
|
||||||
max = spells[spell_id].max[i];
|
max = spells[spell_id].max[i];
|
||||||
}
|
}
|
||||||
@ -1560,100 +1561,49 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne
|
|||||||
|
|
||||||
case SE_AttackSpeed:
|
case SE_AttackSpeed:
|
||||||
{
|
{
|
||||||
|
if ((effect_value - 100) > 0) { // Haste
|
||||||
if (AdditiveWornBonus) {
|
if (new_bonus->haste < 0) break; // Slowed - Don't apply haste
|
||||||
if ((effect_value - 100) > 0) { // Haste
|
if ((effect_value - 100) > new_bonus->haste) {
|
||||||
if (new_bonus->haste < 0) break; // Slowed - Don't apply haste
|
new_bonus->haste = effect_value - 100;
|
||||||
if ((effect_value - 100) > new_bonus->haste) {
|
|
||||||
new_bonus->haste += effect_value - 100;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ((effect_value - 100) < 0) { // Slow
|
|
||||||
int real_slow_value = (100 - effect_value) * -1;
|
|
||||||
real_slow_value -= ((real_slow_value * GetSlowMitigation()/100));
|
|
||||||
if (real_slow_value < new_bonus->haste)
|
|
||||||
new_bonus->haste += real_slow_value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if ((effect_value - 100) < 0) { // Slow
|
||||||
{
|
int real_slow_value = (100 - effect_value) * -1;
|
||||||
if ((effect_value - 100) > 0) { // Haste
|
real_slow_value -= ((real_slow_value * GetSlowMitigation()/100));
|
||||||
if (new_bonus->haste < 0) break; // Slowed - Don't apply haste
|
if (real_slow_value < new_bonus->haste)
|
||||||
if ((effect_value - 100) > new_bonus->haste) {
|
new_bonus->haste = real_slow_value;
|
||||||
new_bonus->haste = effect_value - 100;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ((effect_value - 100) < 0) { // Slow
|
|
||||||
int real_slow_value = (100 - effect_value) * -1;
|
|
||||||
real_slow_value -= ((real_slow_value * GetSlowMitigation()/100));
|
|
||||||
if (real_slow_value < new_bonus->haste)
|
|
||||||
new_bonus->haste = real_slow_value;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case SE_AttackSpeed2:
|
case SE_AttackSpeed2:
|
||||||
{
|
{
|
||||||
if (AdditiveWornBonus) {
|
if ((effect_value - 100) > 0) { // Haste V2 - Stacks with V1 but does not Overcap
|
||||||
if ((effect_value - 100) > 0) { // Haste
|
if (new_bonus->hastetype2 < 0) break; //Slowed - Don't apply haste2
|
||||||
if (new_bonus->hastetype2 < 0) break; // Slowed - Don't apply haste
|
if ((effect_value - 100) > new_bonus->hastetype2) {
|
||||||
if ((effect_value - 100) > new_bonus->hastetype2) {
|
new_bonus->hastetype2 = effect_value - 100;
|
||||||
new_bonus->hastetype2 += effect_value - 100;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ((effect_value - 100) < 0) { // Slow
|
|
||||||
int real_slow_value = (100 - effect_value) * -1;
|
|
||||||
real_slow_value -= ((real_slow_value * GetSlowMitigation()/100));
|
|
||||||
if (real_slow_value < new_bonus->hastetype2)
|
|
||||||
new_bonus->hastetype2 += real_slow_value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if ((effect_value - 100) < 0) { // Slow
|
||||||
{
|
int real_slow_value = (100 - effect_value) * -1;
|
||||||
if ((effect_value - 100) > 0) { // Haste
|
real_slow_value -= ((real_slow_value * GetSlowMitigation()/100));
|
||||||
if (new_bonus->hastetype2 < 0) break; // Slowed - Don't apply haste
|
if (real_slow_value < new_bonus->hastetype2)
|
||||||
if ((effect_value - 100) > new_bonus->hastetype2) {
|
new_bonus->hastetype2 = real_slow_value;
|
||||||
new_bonus->hastetype2 = effect_value - 100;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ((effect_value - 100) < 0) { // Slow
|
|
||||||
int real_slow_value = (100 - effect_value) * -1;
|
|
||||||
real_slow_value -= ((real_slow_value * GetSlowMitigation()/100));
|
|
||||||
if (real_slow_value < new_bonus->hastetype2)
|
|
||||||
new_bonus->hastetype2 = real_slow_value;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case SE_AttackSpeed3:
|
case SE_AttackSpeed3:
|
||||||
{
|
{
|
||||||
if (AdditiveWornBonus) {
|
if (effect_value < 0){ //Slow
|
||||||
if (effect_value < 0){ //Slow
|
effect_value -= ((effect_value * GetSlowMitigation()/100));
|
||||||
effect_value -= ((effect_value * GetSlowMitigation()/100));
|
if (effect_value < new_bonus->hastetype3)
|
||||||
if (effect_value < new_bonus->hastetype3)
|
new_bonus->hastetype3 = effect_value;
|
||||||
new_bonus->hastetype3 += effect_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (effect_value > 0) { // Haste V3 - Stacks and Overcaps
|
|
||||||
if (effect_value > new_bonus->hastetype3) {
|
|
||||||
new_bonus->hastetype3 += effect_value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if (effect_value < 0){ //Slow
|
|
||||||
effect_value -= ((effect_value * GetSlowMitigation()/100));
|
|
||||||
if (effect_value < new_bonus->hastetype3)
|
|
||||||
new_bonus->hastetype3 = effect_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (effect_value > 0) { // Haste V3 - Stacks and Overcaps
|
else if (effect_value > 0) { // Haste V3 - Stacks and Overcaps
|
||||||
if (effect_value > new_bonus->hastetype3) {
|
if (effect_value > new_bonus->hastetype3) {
|
||||||
new_bonus->hastetype3 = effect_value;
|
new_bonus->hastetype3 = effect_value;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1668,21 +1618,13 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne
|
|||||||
|
|
||||||
if (effect_value < 0) //A few spells use negative values(Descriptions all indicate it should be a slow)
|
if (effect_value < 0) //A few spells use negative values(Descriptions all indicate it should be a slow)
|
||||||
effect_value = effect_value * -1;
|
effect_value = effect_value * -1;
|
||||||
if (AdditiveWornBonus) {
|
|
||||||
if (effect_value > 0 && effect_value > new_bonus->inhibitmelee) {
|
if (effect_value > 0 && effect_value > new_bonus->inhibitmelee) {
|
||||||
effect_value -= ((effect_value * GetSlowMitigation()/100));
|
effect_value -= ((effect_value * GetSlowMitigation()/100));
|
||||||
if (effect_value > new_bonus->inhibitmelee)
|
if (effect_value > new_bonus->inhibitmelee)
|
||||||
new_bonus->inhibitmelee += effect_value;
|
new_bonus->inhibitmelee = effect_value;
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (effect_value > 0 && effect_value > new_bonus->inhibitmelee) {
|
|
||||||
effect_value -= ((effect_value * GetSlowMitigation()/100));
|
|
||||||
if (effect_value > new_bonus->inhibitmelee)
|
|
||||||
new_bonus->inhibitmelee = effect_value;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3167,7 +3109,7 @@ void NPC::CalcItemBonuses(StatBonuses *newbon)
|
|||||||
newbon->HitChance += cur->Accuracy;
|
newbon->HitChance += cur->Accuracy;
|
||||||
}
|
}
|
||||||
if(cur->CombatEffects > 0) {
|
if(cur->CombatEffects > 0) {
|
||||||
newbon->MeleeDamage += cur->CombatEffects;
|
newbon->ProcChance += cur->CombatEffects;
|
||||||
}
|
}
|
||||||
if (cur->Worn.Effect>0 && (cur->Worn.Type == ET_WornEffect)) { // latent effects
|
if (cur->Worn.Effect>0 && (cur->Worn.Type == ET_WornEffect)) { // latent effects
|
||||||
ApplySpellsBonuses(cur->Worn.Effect, cur->Worn.Level, newbon, 0, cur->Worn.Type);
|
ApplySpellsBonuses(cur->Worn.Effect, cur->Worn.Level, newbon, 0, cur->Worn.Type);
|
||||||
|
|||||||
@ -138,7 +138,7 @@ int32 Mob::GetActSpellDamage(uint16 spell_id, int32 value, Mob* target) {
|
|||||||
|
|
||||||
value -= GetFocusEffect(focusFcDamageAmt, spell_id);
|
value -= GetFocusEffect(focusFcDamageAmt, spell_id);
|
||||||
|
|
||||||
if(itembonuses.SpellDmg)
|
if(itembonuses.SpellDmg && spells[spell_id].classes[(GetClass()%16) - 1] >= GetLevel() - 5)
|
||||||
value -= GetExtraSpellAmt(spell_id, itembonuses.SpellDmg, value);
|
value -= GetExtraSpellAmt(spell_id, itembonuses.SpellDmg, value);
|
||||||
|
|
||||||
if (IsNPC() && CastToNPC()->GetSpellScale())
|
if (IsNPC() && CastToNPC()->GetSpellScale())
|
||||||
@ -200,11 +200,6 @@ int32 Mob::GetActDoTDamage(uint16 spell_id, int32 value, Mob* target) {
|
|||||||
extra_dmg /= duration;
|
extra_dmg /= duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Sanctuary Custom: Spelldmg per tick
|
|
||||||
if(itembonuses.SpellDmg)
|
|
||||||
value -= GetExtraSpellAmt(spell_id, itembonuses.SpellDmg / 6, value); //per tick
|
|
||||||
|
|
||||||
|
|
||||||
value -= extra_dmg;
|
value -= extra_dmg;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,6 +211,23 @@ int32 Mob::GetActDoTDamage(uint16 spell_id, int32 value, Mob* target) {
|
|||||||
|
|
||||||
int32 Mob::GetExtraSpellAmt(uint16 spell_id, int32 extra_spell_amt, int32 base_spell_dmg)
|
int32 Mob::GetExtraSpellAmt(uint16 spell_id, int32 extra_spell_amt, int32 base_spell_dmg)
|
||||||
{
|
{
|
||||||
|
int total_cast_time = 0;
|
||||||
|
|
||||||
|
if (spells[spell_id].recast_time >= spells[spell_id].recovery_time)
|
||||||
|
total_cast_time = spells[spell_id].recast_time + spells[spell_id].cast_time;
|
||||||
|
else
|
||||||
|
total_cast_time = spells[spell_id].recovery_time + spells[spell_id].cast_time;
|
||||||
|
|
||||||
|
if (total_cast_time > 0 && total_cast_time <= 2500)
|
||||||
|
extra_spell_amt = extra_spell_amt*25/100;
|
||||||
|
else if (total_cast_time > 2500 && total_cast_time < 7000)
|
||||||
|
extra_spell_amt = extra_spell_amt*(167*((total_cast_time - 1000)/1000)) / 1000;
|
||||||
|
else
|
||||||
|
extra_spell_amt = extra_spell_amt * total_cast_time / 7000;
|
||||||
|
|
||||||
|
if(extra_spell_amt*2 < base_spell_dmg)
|
||||||
|
return 0;
|
||||||
|
|
||||||
return extra_spell_amt;
|
return extra_spell_amt;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,7 +270,7 @@ int32 Mob::GetActSpellHealing(uint16 spell_id, int32 value, Mob* target) {
|
|||||||
value += GetFocusEffect(focusFcHealAmt, spell_id);
|
value += GetFocusEffect(focusFcHealAmt, spell_id);
|
||||||
value += target->GetFocusIncoming(focusFcHealAmtIncoming, SE_FcHealAmtIncoming, this, spell_id);
|
value += target->GetFocusIncoming(focusFcHealAmtIncoming, SE_FcHealAmtIncoming, this, spell_id);
|
||||||
|
|
||||||
if(itembonuses.HealAmt)
|
if(itembonuses.HealAmt && spells[spell_id].classes[(GetClass()%16) - 1] >= GetLevel() - 5)
|
||||||
value += GetExtraSpellAmt(spell_id, itembonuses.HealAmt, value) * modifier;
|
value += GetExtraSpellAmt(spell_id, itembonuses.HealAmt, value) * modifier;
|
||||||
|
|
||||||
value += value*target->GetHealRate(spell_id, this)/100;
|
value += value*target->GetHealRate(spell_id, this)/100;
|
||||||
@ -289,9 +301,6 @@ int32 Mob::GetActSpellHealing(uint16 spell_id, int32 value, Mob* target) {
|
|||||||
|
|
||||||
if(chance && zone->random.Roll(chance))
|
if(chance && zone->random.Roll(chance))
|
||||||
value *= 2;
|
value *= 2;
|
||||||
|
|
||||||
if(itembonuses.HealAmt)
|
|
||||||
value += GetExtraSpellAmt(spell_id, itembonuses.HealAmt / 6, value) * modifier;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsNPC() && CastToNPC()->GetHealScale())
|
if (IsNPC() && CastToNPC()->GetHealScale())
|
||||||
@ -412,14 +421,10 @@ int32 Mob::GetActSpellDuration(uint16 spell_id, int32 duration)
|
|||||||
int tic_inc = 0;
|
int tic_inc = 0;
|
||||||
tic_inc = GetFocusEffect(focusSpellDurByTic, spell_id);
|
tic_inc = GetFocusEffect(focusSpellDurByTic, spell_id);
|
||||||
|
|
||||||
// Only need this for clients, since the change was for bard songs, I assume we should keep non bard songs getting +1
|
// unsure on the exact details, but bard songs that don't cost mana at some point get an extra tick, 60 for now
|
||||||
// However if its bard or not and is mez, charm or fear, we need to add 1 so that client is in sync
|
// a level 53 bard reported getting 2 tics
|
||||||
if (IsClient() && !(IsShortDurationBuff(spell_id) && IsBardSong(spell_id)) ||
|
if (IsShortDurationBuff(spell_id) && IsBardSong(spell_id) && spells[spell_id].mana == 0 && GetClass() == BARD && GetLevel() > 60)
|
||||||
IsFearSpell(spell_id) ||
|
tic_inc++;
|
||||||
IsCharmSpell(spell_id) ||
|
|
||||||
IsMezSpell(spell_id) ||
|
|
||||||
IsBlindSpell(spell_id))
|
|
||||||
tic_inc += 1;
|
|
||||||
|
|
||||||
return (((duration * increase) / 100) + tic_inc);
|
return (((duration * increase) / 100) + tic_inc);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user