Implement Foraging AA

Currently this SPA is only checked for AA bonuses since a non-permanent
bonus doesn't make sense. Plus I'm not sure the client is aware of it in
spells/gear
This commit is contained in:
Michael Cook (mackal) 2019-04-14 00:18:23 -04:00
parent 6e1f317c60
commit 54da27424f
4 changed files with 17 additions and 4 deletions

View File

@ -590,7 +590,7 @@ typedef enum {
#define SE_CorruptionCounter 369 // implemented
#define SE_ResistCorruption 370 // implemented
#define SE_AttackSpeed4 371 // implemented - stackable slow effect 'Inhibit Melee'
#define SE_ForageSkill 372 // *not implemented[AA] Will increase the skill cap for those that have the Forage skill and grant the skill and raise the cap to those that do not.
#define SE_ForageSkill 372 // implemented[AA] Will increase the skill cap for those that have the Forage skill and grant the skill and raise the cap to those that do not.
#define SE_CastOnFadeEffectAlways 373 // implemented - Triggers if fades after natural duration OR from rune/numhits fades.
#define SE_ApplyEffect 374 // implemented
#define SE_DotCritDmgIncrease 375 // implemented - Increase damage of DoT critical amount

View File

@ -1472,6 +1472,17 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
newbon->trap_slots += base1;
break;
case SE_ForageSkill:
newbon->GrantForage += base1;
// we need to grant a skill point here
// I'd rather not do this here, but whatever, probably fine
if (IsClient()) {
auto client = CastToClient();
if (client->GetRawSkill(EQEmu::skills::SkillType::SkillForage) == 0)
client->SetSkill(EQEmu::skills::SkillType::SkillForage, 1);
}
break;
// to do
case SE_PetDiscipline:
break;
@ -1479,8 +1490,6 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
break;
case SE_BandolierSlots:
break;
case SE_ForageSkill:
break;
case SE_SecondaryForte:
break;
case SE_ExtendedShielding:

View File

@ -2604,9 +2604,12 @@ uint16 Client::GetMaxSkillAfterSpecializationRules(EQEmu::skills::SkillType skil
}
}
Result += spellbonuses.RaiseSkillCap[skillid] + itembonuses.RaiseSkillCap[skillid] + aabonuses.RaiseSkillCap[skillid];
if (skillid == EQEmu::skills::SkillType::SkillForage)
Result += aabonuses.GrantForage;
return Result;
}

View File

@ -558,6 +558,7 @@ struct StatBonuses {
int16 FeignedCastOnChance; // Percent Value
bool PetCommands[PET_MAXCOMMANDS]; // SPA 267
int FeignedMinionChance; // SPA 281 base1 = chance, just like normal FD
int GrantForage; // affects max skill of forage as well as granting non-forage classes forage
int aura_slots;
int trap_slots;
bool hunger; // Song of Sustenance -- min caps to 3500