mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 14:41:28 +00:00
updates
This commit is contained in:
parent
0aeaf7c3b7
commit
558bebe710
@ -839,7 +839,7 @@ typedef enum {
|
|||||||
#define SE_SuspendPet 151 // implemented, @Pet, allow caster to have an extra suspended pet, base: 0=no buffs/items 1=buffs+items, limit: none, max: none
|
#define SE_SuspendPet 151 // implemented, @Pet, allow caster to have an extra suspended pet, base: 0=no buffs/items 1=buffs+items, limit: none, max: none
|
||||||
#define SE_TemporaryPets 152 // implemented
|
#define SE_TemporaryPets 152 // implemented
|
||||||
#define SE_BalanceHP 153 // implemented
|
#define SE_BalanceHP 153 // implemented
|
||||||
#define SE_DispelDetrimental 154 // implemented
|
#define SE_DispelDetrimental 154 // implemented, @Dispel only beneficial effects on a target, base: pct chance (950=95%), limit:none, max:none
|
||||||
#define SE_SpellCritDmgIncrease 155 // implemented - no known live spells use this currently
|
#define SE_SpellCritDmgIncrease 155 // implemented - no known live spells use this currently
|
||||||
#define SE_IllusionCopy 156 // implemented - Deception
|
#define SE_IllusionCopy 156 // implemented - Deception
|
||||||
#define SE_SpellDamageShield 157 // implemented - Petrad's Protection
|
#define SE_SpellDamageShield 157 // implemented - Petrad's Protection
|
||||||
@ -894,7 +894,7 @@ typedef enum {
|
|||||||
#define SE_AETaunt 206 // implemented
|
#define SE_AETaunt 206 // implemented
|
||||||
#define SE_FleshToBone 207 // implemented
|
#define SE_FleshToBone 207 // implemented
|
||||||
//#define SE_PurgePoison 208 // not used
|
//#define SE_PurgePoison 208 // not used
|
||||||
#define SE_DispelBeneficial 209 // implemented
|
#define SE_DispelBeneficial 209 // implemented, @Dispel only beneficial effects on a target, base: pct chance (950=95%), limit:none, max:none
|
||||||
#define SE_PetShield 210 // implmented, @ShieldAbility, allows pet to 'shield' owner for 50 pct of damage taken for a duration, base: Time multiplier 1=12 seconds, 2=24 ect, limit: mitigation on pet owner override (not on live), max: mitigation on pet overide (not on live)
|
#define SE_PetShield 210 // implmented, @ShieldAbility, allows pet to 'shield' owner for 50 pct of damage taken for a duration, base: Time multiplier 1=12 seconds, 2=24 ect, limit: mitigation on pet owner override (not on live), max: mitigation on pet overide (not on live)
|
||||||
#define SE_AEMelee 211 // implemented TO DO: Implement to allow NPC use (client only atm).
|
#define SE_AEMelee 211 // implemented TO DO: Implement to allow NPC use (client only atm).
|
||||||
#define SE_FrenziedDevastation 212 // implemented - increase spell criticals + all DD spells cast 2x mana.
|
#define SE_FrenziedDevastation 212 // implemented - increase spell criticals + all DD spells cast 2x mana.
|
||||||
|
|||||||
@ -346,6 +346,7 @@ public:
|
|||||||
uint16 CastingSpellID() const { return casting_spell_id; }
|
uint16 CastingSpellID() const { return casting_spell_id; }
|
||||||
bool DoCastingChecks();
|
bool DoCastingChecks();
|
||||||
bool TryDispel(uint8 caster_level, uint8 buff_level, int level_modifier);
|
bool TryDispel(uint8 caster_level, uint8 buff_level, int level_modifier);
|
||||||
|
bool TryDispelBeneficialOrDetrimental(uint8 caster_level, uint8 buff_level, int chance);
|
||||||
bool TrySpellProjectile(Mob* spell_target, uint16 spell_id, float speed = 1.5f);
|
bool TrySpellProjectile(Mob* spell_target, uint16 spell_id, float speed = 1.5f);
|
||||||
void ResourceTap(int32 damage, uint16 spell_id);
|
void ResourceTap(int32 damage, uint16 spell_id);
|
||||||
void TryTriggerThreshHold(int32 damage, int effect_id, Mob* attacker);
|
void TryTriggerThreshHold(int32 damage, int effect_id, Mob* attacker);
|
||||||
|
|||||||
@ -7057,15 +7057,6 @@ uint16 Mob::GetSpellEffectResistChance(uint16 spell_id)
|
|||||||
|
|
||||||
bool Mob::TryDispel(uint8 caster_level, uint8 buff_level, int level_modifier){
|
bool Mob::TryDispel(uint8 caster_level, uint8 buff_level, int level_modifier){
|
||||||
|
|
||||||
/*Live 5-20-14 Patch Note: Updated all spells which use Remove Detrimental and
|
|
||||||
Cancel Beneficial spell effects to use a new method. The chances for those spells to
|
|
||||||
affect their targets have not changed unless otherwise noted.*/
|
|
||||||
|
|
||||||
/*This should provide a somewhat accurate conversion between pre 5/14 base values and post.
|
|
||||||
until more information is avialble - Kayen*/
|
|
||||||
if (level_modifier >= 100)
|
|
||||||
level_modifier = level_modifier/100;
|
|
||||||
|
|
||||||
//Dispels - Check level of caster agianst buffs level (level of the caster who cast the buff)
|
//Dispels - Check level of caster agianst buffs level (level of the caster who cast the buff)
|
||||||
//Effect value of dispels are treated as a level modifier.
|
//Effect value of dispels are treated as a level modifier.
|
||||||
//Values for scaling were obtain from live parses, best estimates.
|
//Values for scaling were obtain from live parses, best estimates.
|
||||||
@ -7092,6 +7083,32 @@ bool Mob::TryDispel(uint8 caster_level, uint8 buff_level, int level_modifier){
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Mob::TryDispelBeneficialOrDetrimental(uint8 caster_level, uint8 buff_level, int chance) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
Used in SPA 154 and SPA 209 to specifically dispel only beneficial or only detrimental spells.
|
||||||
|
Formula derived from live parsing.
|
||||||
|
Baseline chance is 'base' / 10, (ie. 950/10 = 95%)
|
||||||
|
Chance receives a penality of 0.5% per level, for each level the 'caster of the buff/debuff' is above the caster of the dispel.
|
||||||
|
There is no bonus percent chance for trying to dispel buff/debuffs cast by mobs lower level than you.
|
||||||
|
|
||||||
|
Ie. Lv 69 Shaman Casts 'Pure Spirit' which has 95% chance to remove deterimental on a debuff cast by a level 85 raid mob. 85-69= 16,
|
||||||
|
then 16 x 0.5 = 8% penality, thus actual chance to remove is going to be 95-8 = 87%
|
||||||
|
*/
|
||||||
|
|
||||||
|
int dispel_chance = chance;
|
||||||
|
int level_diff = caster_level - buff_level;
|
||||||
|
|
||||||
|
if (level_diff < 0) {
|
||||||
|
dispel_chance += level_diff * 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (zone->random.Int(1,1000) <= dispel_chance)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Mob::ImprovedTaunt(){
|
bool Mob::ImprovedTaunt(){
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user