Changed SE_LimitMaxMana to SE_MeleeVulnerability - Weakness/Mitigation verse melee damage

(Despite lives SPA lable as the former it clearly is not what the effect does from all spell examples)
This commit is contained in:
KayenEQ 2014-07-03 10:55:59 -04:00
parent ee741048e9
commit 0d2127f874
6 changed files with 20 additions and 13 deletions

View File

@ -6,6 +6,9 @@ Kayen: Implemented SE_ResourceTap - Coverts a percent of dmg from dmg spells(DD/
Kayen: Implemented SE_FactionModPct - Modifies faction gains and losses by percent. Kayen: Implemented SE_FactionModPct - Modifies faction gains and losses by percent.
Kayen: Re-Implemented SE_TriggerMeleeThreshold and SE_TriggerSpellThreshold correctly - Trigger spell if owner of buff Kayen: Re-Implemented SE_TriggerMeleeThreshold and SE_TriggerSpellThreshold correctly - Trigger spell if owner of buff
takes more than the specified damage amount in a SINGLE hit, then fade the buff. takes more than the specified damage amount in a SINGLE hit, then fade the buff.
Kayen: Implemented SE_LimitSpellClass - Focus Limits spell to pre defined categories. (3=Cures,3=Offensive, 6=Lifetap)
Kayen: Changed SE_LimitMaxMana to SE_MeleeVulnerability - Weakness/Mitigation verse melee damage
(Despite lives SPA lable as the former it clearly is not what the effect does from all spell examples)
== 06/25/2014 == == 06/25/2014 ==
Kayen: Updated SE_Hate (Renamed from SE_Hate2) to now properly work for instant +/- hate spells. Kayen: Updated SE_Hate (Renamed from SE_Hate2) to now properly work for instant +/- hate spells.

View File

@ -538,7 +538,7 @@ typedef enum {
//#define SE_SummonCorpseZone 388 // *not implemented - summons a corpse from any zone(nec AA) //#define SE_SummonCorpseZone 388 // *not implemented - summons a corpse from any zone(nec AA)
#define SE_FcTimerRefresh 389 // implemented - Refresh spell icons #define SE_FcTimerRefresh 389 // implemented - Refresh spell icons
//#define SE_FcTimerLockout 390 // *not implemented - Sets recast timers to specific value, focus limited. //#define SE_FcTimerLockout 390 // *not implemented - Sets recast timers to specific value, focus limited.
#define SE_LimitManaMax 391 // implemented #define SE_MeleeVulnerability 391 // implemented [Live SPA has this as LimitManaMax however that is clearly not the effect used]
#define SE_FcHealAmt 392 // implemented - Adds or removes healing from spells #define SE_FcHealAmt 392 // implemented - Adds or removes healing from spells
#define SE_FcHealPctIncoming 393 // implemented - HealRate with focus restrictions. #define SE_FcHealPctIncoming 393 // implemented - HealRate with focus restrictions.
#define SE_FcHealAmtIncoming 394 // implemented - Adds/Removes amount of healing on target by X value with foucs restrictions. #define SE_FcHealAmtIncoming 394 // implemented - Adds/Removes amount of healing on target by X value with foucs restrictions.

View File

@ -1315,6 +1315,10 @@ void Client::ApplyAABonuses(uint32 aaid, uint32 slots, StatBonuses* newbon)
newbon->PetMeleeMitigation += base1; newbon->PetMeleeMitigation += base1;
break; break;
case SE_MeleeVulnerability:
newbon->MeleeVulnerability += base1;
break;
case SE_FactionModPct: case SE_FactionModPct:
{ {
if((base1 < 0) && (newbon->FactionModPct > base1)) if((base1 < 0) && (newbon->FactionModPct > base1))
@ -2854,6 +2858,10 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne
newbon->PetMeleeMitigation += effect_value; newbon->PetMeleeMitigation += effect_value;
break; break;
case SE_MeleeVulnerability:
newbon->MeleeVulnerability += effect_value;
break;
case SE_Sanctuary: case SE_Sanctuary:
newbon->Sanctuary = true; newbon->Sanctuary = true;
break; break;

View File

@ -374,6 +374,7 @@ struct StatBonuses {
int16 Metabolism; // Food/drink consumption rates. int16 Metabolism; // Food/drink consumption rates.
bool Sanctuary; // Sanctuary effect, lowers place on hate list until cast on others. bool Sanctuary; // Sanctuary effect, lowers place on hate list until cast on others.
int16 FactionModPct; // Modifies amount of faction gained. int16 FactionModPct; // Modifies amount of faction gained.
int16 MeleeVulnerability; // Weakness/mitigation to melee damage
// AAs // AAs
int8 Packrat; //weight reduction for items, 1 point = 10% int8 Packrat; //weight reduction for items, 1 point = 10%

View File

@ -3419,6 +3419,8 @@ int16 Mob::GetSkillDmgTaken(const SkillUseTypes skill_used)
{ {
int skilldmg_mod = 0; int skilldmg_mod = 0;
int16 MeleeVuln = spellbonuses.MeleeVulnerability + itembonuses.MeleeVulnerability + aabonuses.MeleeVulnerability;
// All skill dmg mod + Skill specific // All skill dmg mod + Skill specific
skilldmg_mod += itembonuses.SkillDmgTaken[HIGHEST_SKILL+1] + spellbonuses.SkillDmgTaken[HIGHEST_SKILL+1] + skilldmg_mod += itembonuses.SkillDmgTaken[HIGHEST_SKILL+1] + spellbonuses.SkillDmgTaken[HIGHEST_SKILL+1] +
itembonuses.SkillDmgTaken[skill_used] + spellbonuses.SkillDmgTaken[skill_used]; itembonuses.SkillDmgTaken[skill_used] + spellbonuses.SkillDmgTaken[skill_used];
@ -3427,6 +3429,8 @@ int16 Mob::GetSkillDmgTaken(const SkillUseTypes skill_used)
if ((SkillDmgTaken_Mod[skill_used]) || (SkillDmgTaken_Mod[HIGHEST_SKILL+1])) if ((SkillDmgTaken_Mod[skill_used]) || (SkillDmgTaken_Mod[HIGHEST_SKILL+1]))
skilldmg_mod += SkillDmgTaken_Mod[skill_used] + SkillDmgTaken_Mod[HIGHEST_SKILL+1]; skilldmg_mod += SkillDmgTaken_Mod[skill_used] + SkillDmgTaken_Mod[HIGHEST_SKILL+1];
skilldmg_mod += MeleeVuln;
if(skilldmg_mod < -100) if(skilldmg_mod < -100)
skilldmg_mod = -100; skilldmg_mod = -100;
@ -3452,7 +3456,8 @@ bool Mob::TryFadeEffect(int slot)
{ {
for(int i = 0; i < EFFECT_COUNT; i++) for(int i = 0; i < EFFECT_COUNT; i++)
{ {
if (spells[buffs[slot].spellid].effectid[i] == SE_CastOnFadeEffectAlways || spells[buffs[slot].spellid].effectid[i] == SE_CastOnRuneFadeEffect) if (spells[buffs[slot].spellid].effectid[i] == SE_CastOnFadeEffectAlways ||
spells[buffs[slot].spellid].effectid[i] == SE_CastOnRuneFadeEffect)
{ {
uint16 spell_id = spells[buffs[slot].spellid].base[i]; uint16 spell_id = spells[buffs[slot].spellid].base[i];
BuffFadeBySlot(slot); BuffFadeBySlot(slot);

View File

@ -2942,7 +2942,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
case SE_FcIncreaseNumHits: case SE_FcIncreaseNumHits:
case SE_CastonFocusEffect: case SE_CastonFocusEffect:
case SE_FcHealAmtIncoming: case SE_FcHealAmtIncoming:
case SE_LimitManaMax: case SE_MeleeVulnerability:
case SE_DoubleRangedAttack: case SE_DoubleRangedAttack:
case SE_ShieldEquipHateMod: case SE_ShieldEquipHateMod:
case SE_ShieldEquipDmgMod: case SE_ShieldEquipDmgMod:
@ -4287,11 +4287,6 @@ int16 Client::CalcAAFocus(focusType type, uint32 aa_ID, uint16 spell_id)
LimitFailure = true; LimitFailure = true;
break; break;
case SE_LimitManaMax:
if(spell.mana > base1)
LimitFailure = true;
break;
case SE_LimitTarget: case SE_LimitTarget:
if (base1 < 0) { if (base1 < 0) {
if (-base1 == spell.targettype) //Exclude if (-base1 == spell.targettype) //Exclude
@ -4718,11 +4713,6 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
return 0; return 0;
break; break;
case SE_LimitManaMax:
if(spell.mana > focus_spell.base[i])
return 0;
break;
case SE_LimitTarget: case SE_LimitTarget:
if (focus_spell.base[i] < 0) { if (focus_spell.base[i] < 0) {
if (-focus_spell.base[i] == spell.targettype) //Exclude if (-focus_spell.base[i] == spell.targettype) //Exclude