Rework combat to make use of a struct to fix some bugs

This commit is contained in:
Michael Cook (mackal)
2017-01-28 19:38:44 -05:00
parent e300f82c28
commit 37e87e8cef
12 changed files with 893 additions and 1085 deletions
+30 -17
View File
@@ -1313,8 +1313,9 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
}
case SE_HeadShotLevel: {
if (newbon->HSLevel < base1)
newbon->HSLevel = base1;
if (newbon->HSLevel[0] < base1)
newbon->HSLevel[0] = base1;
newbon->HSLevel[1] = base2;
break;
}
@@ -1327,8 +1328,10 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
}
case SE_AssassinateLevel: {
if (newbon->AssassinateLevel < base1)
newbon->AssassinateLevel = base1;
if (newbon->AssassinateLevel[0] < base1) {
newbon->AssassinateLevel[0] = base1;
newbon->AssassinateLevel[1] = base2;
}
break;
}
@@ -1386,7 +1389,7 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
}
case SE_MeleeMitigation:
newbon->MeleeMitigationEffect -= base1;
newbon->MeleeMitigationEffect += base1;
break;
case SE_ATK:
@@ -1929,8 +1932,8 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses *ne
break;
case SE_MeleeMitigation:
//for some reason... this value is negative for increased mitigation
new_bonus->MeleeMitigationEffect -= effect_value;
// This value is negative because it counteracts another SPA :P
new_bonus->MeleeMitigationEffect += effect_value;
break;
case SE_CriticalHitChance:
@@ -3026,8 +3029,10 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses *ne
case SE_HeadShotLevel:
{
if(new_bonus->HSLevel < effect_value)
new_bonus->HSLevel = effect_value;
if(new_bonus->HSLevel[0] < effect_value) {
new_bonus->HSLevel[0] = effect_value;
new_bonus->HSLevel[1] = base2;
}
break;
}
@@ -3042,8 +3047,10 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses *ne
case SE_AssassinateLevel:
{
if(new_bonus->AssassinateLevel < effect_value)
new_bonus->AssassinateLevel = effect_value;
if(new_bonus->AssassinateLevel[0] < effect_value) {
new_bonus->AssassinateLevel[0] = effect_value;
new_bonus->AssassinateLevel[1] = base2;
}
break;
}
@@ -4649,9 +4656,12 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
break;
case SE_HeadShotLevel:
spellbonuses.HSLevel = effect_value;
aabonuses.HSLevel = effect_value;
itembonuses.HSLevel = effect_value;
spellbonuses.HSLevel[0] = effect_value;
aabonuses.HSLevel[0] = effect_value;
itembonuses.HSLevel[0] = effect_value;
spellbonuses.HSLevel[1] = effect_value;
aabonuses.HSLevel[1] = effect_value;
itembonuses.HSLevel[1] = effect_value;
break;
case SE_Assassinate:
@@ -4664,9 +4674,12 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
break;
case SE_AssassinateLevel:
spellbonuses.AssassinateLevel = effect_value;
aabonuses.AssassinateLevel = effect_value;
itembonuses.AssassinateLevel = effect_value;
spellbonuses.AssassinateLevel[0] = effect_value;
aabonuses.AssassinateLevel[0] = effect_value;
itembonuses.AssassinateLevel[0] = effect_value;
spellbonuses.AssassinateLevel[1] = effect_value;
aabonuses.AssassinateLevel[1] = effect_value;
itembonuses.AssassinateLevel[1] = effect_value;
break;
case SE_FinishingBlow: