mirror of
https://github.com/EQEmu/Server.git
synced 2026-09-05 07:16:37 +00:00
[Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic. (#1954)
* test * complete * Update effects.cpp * Update spells.cpp * Update effects.cpp * [Spells] Support for bards using Disciplines while casting or /melody. Support for spell field 'cast not standing' not allow casting from divine aura * [Spells] Support for bards using Disciplines while casting or /melody. DA bypass logic for spells with field 'cast_not_standing' * updates * stun and mez bypass * Update spdat.cpp * Update spdat.cpp * Update spells.cpp * clean * requirement messages * update * pct * save work * Reform code 1_22_22 * updated * update id to pointer * Update spells.cpp * rework 2 * update 1_23_22 * Update spells.cpp * updates * msg string works * fix disc timers not be set * more optimization * update 1_23_22 PM moved stop casting out charm and harmony moved in * update 1_25_22 rework of functions * updates 1_26_22 * remove old checks * gm override added for some * update bard AA casting checks * updates * addbuff exception for bard * debugs * charm working * update * moved skill check here * cast from item while singing * lets not attack mounts * instant cast items click * aug clicks working * aug tests Bug? Cast time not display on aug clicks for bards * aug recast from items semi ok * added item timer function * unified setting item recast timer * clean up time * update * bard AA cast updates * debugs removed * debugs removed * clean up * clean up * better placement of bindsight and numhits fix * move and rename function * Update spells.cpp * add logs * delete old DoCastingChecks * Removed old bard pulse functions * remove AEBardPulse and GroupPulse * removed Raid::GroupBardPulse * Pulse Restriction: Divine Aura * Pulse Restrictions : Fear behavior * Update spells.cpp * Update spells.cpp * [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic. bots... * [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic. added recommended isvalidspell check * [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic. merged * [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic. removed defines since we have them as constants
This commit is contained in:
+16
-10
@@ -285,11 +285,6 @@ public:
|
||||
void SetInvisible(uint8 state);
|
||||
void SetMobTextureProfile(uint8 material_slot, uint16 texture, uint32 color = 0, uint32 hero_forge_model = 0);
|
||||
|
||||
//Song
|
||||
bool UseBardSpellLogic(uint16 spell_id = 0xffff, int slot = -1);
|
||||
bool ApplyNextBardPulse(uint16 spell_id, Mob *spell_target, EQ::spells::CastingSlot slot);
|
||||
void BardPulse(uint16 spell_id, Mob *caster);
|
||||
|
||||
//Spell
|
||||
void SendSpellEffect(uint32 effect_id, uint32 duration, uint32 finish_delay, bool zone_wide,
|
||||
uint32 unk020, bool perm_effect = false, Client *c = nullptr, uint32 caster_id = 0, uint32 target_id = 0);
|
||||
@@ -331,13 +326,16 @@ public:
|
||||
void CastedSpellFinished(uint16 spell_id, uint32 target_id, EQ::spells::CastingSlot slot, uint16 mana_used,
|
||||
uint32 inventory_slot = 0xFFFFFFFF, int16 resist_adjust = 0);
|
||||
bool SpellFinished(uint16 spell_id, Mob *target, EQ::spells::CastingSlot slot = EQ::spells::CastingSlot::Item, uint16 mana_used = 0,
|
||||
uint32 inventory_slot = 0xFFFFFFFF, int16 resist_adjust = 0, bool isproc = false, int level_override = -1, uint32 timer = 0xFFFFFFFF, uint32 timer_duration = 0);
|
||||
uint32 inventory_slot = 0xFFFFFFFF, int16 resist_adjust = 0, bool isproc = false, int level_override = -1, uint32 timer = 0xFFFFFFFF, uint32 timer_duration = 0, bool from_casted_spell = false);
|
||||
void SendBeginCast(uint16 spell_id, uint32 casttime);
|
||||
virtual bool SpellOnTarget(uint16 spell_id, Mob* spelltar, int reflect_effectiveness = 0,
|
||||
bool use_resist_adjust = false, int16 resist_adjust = 0, bool isproc = false, int level_override = -1, int32 duration_override = 0);
|
||||
virtual bool SpellEffect(Mob* caster, uint16 spell_id, float partial = 100, int level_override = -1, int reflect_effectiveness = 0, int32 duration_override = 0);
|
||||
virtual bool DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_center,
|
||||
CastAction_type &CastAction, EQ::spells::CastingSlot slot, bool isproc = false);
|
||||
bool DoCastingChecksOnCaster(int32 spell_id);
|
||||
bool DoCastingChecksZoneRestrictions(bool check_on_casting, int32 spell_id);
|
||||
bool DoCastingChecksOnTarget(bool check_on_casting, int32 spell_id, Mob* spell_target);
|
||||
virtual bool CheckFizzle(uint16 spell_id);
|
||||
virtual bool CheckSpellLevelRestriction(uint16 spell_id);
|
||||
virtual bool IsImmuneToSpell(uint16 spell_id, Mob *caster);
|
||||
@@ -345,9 +343,9 @@ public:
|
||||
void InterruptSpell(uint16 spellid = SPELL_UNKNOWN);
|
||||
void InterruptSpell(uint16, uint16, uint16 spellid = SPELL_UNKNOWN);
|
||||
void StopCasting();
|
||||
void StopCastSpell(int32 spell_id, bool send_spellbar_enable);
|
||||
inline bool IsCasting() const { return((casting_spell_id != 0)); }
|
||||
uint16 CastingSpellID() const { return casting_spell_id; }
|
||||
bool DoCastingChecks(int32 spell_id = SPELL_UNKNOWN, uint16 target_id = 0);
|
||||
bool TryDispel(uint8 caster_level, uint8 buff_level, int level_modifier);
|
||||
bool TrySpellProjectile(Mob* spell_target, uint16 spell_id, float speed = 1.5f);
|
||||
void ResourceTap(int32 damage, uint16 spell_id);
|
||||
@@ -355,10 +353,19 @@ public:
|
||||
void CalcDestFromHeading(float heading, float distance, float MaxZDiff, float StartX, float StartY, float &dX, float &dY, float &dZ);
|
||||
void BeamDirectional(uint16 spell_id, int16 resist_adjust);
|
||||
void ConeDirectional(uint16 spell_id, int16 resist_adjust);
|
||||
void TryOnSpellFinished(Mob *caster, Mob *target, uint16 spell_id);
|
||||
void ApplyHealthTransferDamage(Mob *caster, Mob *target, uint16 spell_id);
|
||||
void ApplySpellEffectIllusion(int32 spell_id, Mob* caster, int buffslot, int base, int limit, int max);
|
||||
void ApplyIllusionToCorpse(int32 spell_id, Corpse* new_corpse);
|
||||
void SendIllusionWearChange(Client* c);
|
||||
|
||||
//Bard
|
||||
bool ApplyBardPulse(int32 spell_id, Mob *spell_target, EQ::spells::CastingSlot slot);
|
||||
bool IsActiveBardSong(int32 spell_id);
|
||||
bool HasActiveSong() const { return(bardsong != 0); }
|
||||
void ZeroBardPulseVars();
|
||||
void DoBardCastingFromItemClick(bool is_casting_bard_song, uint32 cast_time, int32 spell_id, uint16 target_id, EQ::spells::CastingSlot slot, uint32 item_slot,
|
||||
uint32 recast_type , uint32 recast_delay);
|
||||
bool UseBardSpellLogic(uint16 spell_id = 0xffff, int slot = -1);
|
||||
|
||||
//Buff
|
||||
void BuffProcess();
|
||||
@@ -847,6 +854,7 @@ public:
|
||||
int32 GetExtraSpellAmt(uint16 spell_id, int32 extra_spell_amt, int32 base_spell_dmg);
|
||||
void MeleeLifeTap(int32 damage);
|
||||
bool PassCastRestriction(int value);
|
||||
void SendCastRestrictionMessage(int requirement_id, bool is_target_requirement = true, bool is_discipline = false);
|
||||
bool ImprovedTaunt();
|
||||
bool TryRootFadeByDamage(int buffslot, Mob* attacker);
|
||||
float GetSlowMitigation() const { return slow_mitigation; }
|
||||
@@ -1126,7 +1134,6 @@ public:
|
||||
|
||||
void InstillDoubt(Mob *who);
|
||||
int16 GetResist(uint8 type) const;
|
||||
bool HasActiveSong() const { return(bardsong != 0); }
|
||||
bool Charmed() const { return typeofpet == petCharmed; }
|
||||
static uint32 GetLevelHP(uint8 tlevel);
|
||||
uint32 GetZoneID() const; //for perl
|
||||
@@ -1735,7 +1742,6 @@ protected:
|
||||
MobMovementManager *mMovementManager;
|
||||
|
||||
private:
|
||||
void _StopSong(); //this is not what you think it is
|
||||
Mob* target;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user