[Quest API/Cleanup] Add several spell methods to Perl/Lua (#3379)

* [Quest API/Cleanup] Add several spell methods to Perl/Lua

- Add `quest::CalculateCorruptionCounters(spell_id)`.
- Add `quest::CalculateCounters(spell_id)`.
- Add `quest::CalculateCurseCounters(spell_id)`.
- Add `quest::CalculateDiseaseCounters(spell_id)`.
- Add `quest::CalculatePoisonCounters(spell_id)`.
- Add `quest::GetSpellEffectDescriptionNumber(spell_id)`.
- Add `quest::GetSpellEffectIndex(spell_id, effect_id)`.
- Add `quest::GetSpellFuriousBash(spell_id)`.
- Add `quest::GetSpellMinimumLevel(spell_id)`.
- Add `quest::GetSpellNimbusEffect(spell_id)`.
- Add `quest::GetSpellPartialMagicRuneAmount(spell_id)`.
- Add `quest::GetSpellPartialMagicRuneReduction(spell_id)`.
- Add `quest::GetSpellPartialMeleeRuneAmount(spell_id)`.
- Add `quest::GetSpellPartialMeleeRuneReduction(spell_id)`.
- Add `quest::GetSpellProcLimitTimer(spell_id)`.
- Add `quest::GetSpellResistType(spell_id)`.
- Add `quest::GetSpellResurrectionSicknessCheck(spell_id_one, spell_id_two)`.
- Add `quest::GetSpellTargetType(spell_id)`.
- Add `quest::GetSpellTriggerSpellID(spell_id)`.
- Add `quest::GetSpellViralMaximumSpreadTime(spell_id)`.
- Add `quest::GetSpellViralMinimumSpreadTime(spell_id)`.
- Add `quest::GetSpellViralSpreadRange(spell_id)`.
- Add `quest::IsAEDurationSpell(spell_id)`.
- Add `quest::IsAENukeSpell(spell_id)`.
- Add `quest::IsAERainNukeSpell(spell_id)`.
- Add `quest::IsAllianceSpell(spell_id)`.
- Add `quest::IsBardOnlyStackEffect(effect_id)`.
- Add `quest::IsBardSong(spell_id)`.
- Add `quest::IsBlankSpellEffect(spell_id, effect_index)`.
- Add `quest::IsBlindSpell(spell_id)`.
- Add `quest::IsBuffSpell(spell_id)`.
- Add `quest::IsCastNotStandingSpell(spell_id)`.
- Add `quest::IsCastOnFadeDurationSpell(spell_id)`.
- Add `quest::IsCastRestrictedSpell(spell_id)`.
- Add `quest::IsCastTimeReductionSpell(spell_id)`.
- Add `quest::IsCastWhileInvisibleSpell(spell_id)`.
- Add `quest::IsCharmSpell(spell_id)`.
- Add `quest::IsCombatSkill(spell_id)`.
- Add `quest::IsCompleteHealDurationSpell(spell_id)`.
- Add `quest::IsCompleteHealSpell(spell_id)`.
- Add `quest::IsCureSpell(spell_id)`.
- Add `quest::IsDamageSpell(spell_id)`.
- Add `quest::IsDeathSaveSpell(spell_id)`.
- Add `quest::IsDebuffSpell(spell_id)`.
- Add `quest::IsDetrimentalSpell(spell_id)`.
- Add `quest::IsDiscipline(spell_id)`.
- Add `quest::IsDisciplineBuff(spell_id)`.
- Add `quest::IsDiseaseCounterSpell(spell_id)`.
- Add `quest::IsDistanceModifierSpell(spell_id)`.
- Add `quest::IsEffectIgnoredInStacking(effect_id)`.
- Add `quest::IsFastHealSpell(spell_id)`.
- Add `quest::IsFearSpell(spell_id)`.
- Add `quest::IsFocusLimit(effect_id)`.
- Add `quest::IsFullDeathSaveSpell(spell_id)`.
- Add `quest::IsGateSpell(spell_id)`.
- Add `quest::IsImprovedDamageSpell(spell_id)`.
- Add `quest::IsImprovedHealingSpell(spell_id)`.
- Add `quest::IsIncreaseDurationSpell(spell_id)`.
- Add `quest::IsIncreaseRangeSpell(spell_id)`.
- Add `quest::IsInstrumentModifierAppliedToSpellEffect(spell_id, effect_id)`.
- Add `quest::IsInvisibleSpell(spell_id)`.
- Add `quest::IsInvulnerabilitySpell(spell_id)`.
- Add `quest::IsLDoNObjectSpell(spell_id)`.
- Add `quest::IsLifetapSpell(spell_id)`.
- Add `quest::IsMagicRuneSpell(spell_id)`.
- Add `quest::IsManaCostReductionSpell(spell_id)`.
- Add `quest::IsManaTapSpell(spell_id)`.
- Add `quest::IsMesmerizeSpell(spell_id)`.
- Add `quest::IsNoDetrimentalSpellAggroSpell(spell_id)`.
- Add `quest::IsPBAENukeSpell(spell_id)`.
- Add `quest::IsPartialDeathSaveSpell(spell_id)`.
- Add `quest::IsPartialResistableSpell(spell_id)`.
- Add `quest::IsPercentalHealSpell(spell_id)`.
- Add `quest::IsPersistDeathSpell(spell_id)`.
- Add `quest::IsPetSpell(spell_id)`.
- Add `quest::IsPoisonCounterSpell(spell_id)`.
- Add `quest::IsPulsingBardSong(spell_id)`.
- Add `quest::IsPureNukeSpell(spell_id)`.
- Add `quest::IsRegularGroupHealSpell(spell_id)`.
- Add `quest::IsRegularSingleTargetHealSpell(spell_id)`.
- Add `quest::IsResistDebuffSpell(spell_id)`.
- Add `quest::IsResistableSpell(spell_id)`.
- Add `quest::IsRestAllowedSpell(spell_id)`.
- Add `quest::IsResurrectionEffects(spell_id)`.
- Add `quest::IsRuneSpell(spell_id)`.
- Add `quest::IsRunning(spell_id)`.
- Add `quest::IsSacrificeSpell(spell_id)`.
- Add `quest::IsSelfConversionSpell(spell_id)`.
- Add `quest::IsShadowStepSpell(spell_id)`.
- Add `quest::IsShortDurationBuff(spell_id)`.
- Add `quest::IsSpellUsableInThisZoneType(spell_id)`.
- Add `quest::IsSpellUsableInThisZoneType(spell_id, zone_type)`.
- Add `quest::IsStackableDOT(spell_id)`.
- Add `quest::IsStunSpell(spell_id)`.
- Add `quest::IsSuccorSpell(spell_id)`.
- Add `quest::IsSummonItemSpell(spell_id)`.
- Add `quest::IsSummonPCSpell(spell_id)`.
- Add `quest::IsSummonPetSpell(spell_id)`.
- Add `quest::IsSummonSkeletonSpell(spell_id)`.
- Add `quest::IsSummonSpell(spell_id)`.
- Add `quest::IsSuspendableSpell(spell_id)`.
- Add `quest::IsTargetRequiredForSpell(spell_id)`.
- Add `quest::IsTargetableAESpell(spell_id)`.
- Add `quest::IsTeleportSpell(spell_id)`.
- Add `quest::IsTranslocateSpell(spell_id)`.
- Add `quest::IsValidSpell(spell_id)`.
- Add `quest::IsVeryFastHealSpell(spell_id)`.
- Add `quest::IsVirusSpell(spell_id)`.

- Add `eq.calculate_corruption_counters(spell_id)`.
- Add `eq.calculate_counters(spell_id)`.
- Add `eq.calculate_curse_counters(spell_id)`.
- Add `eq.calculate_disease_counters(spell_id)`.
- Add `eq.calculate_poison_counters(spell_id)`.
- Add `eq.get_spell_effect_description_number(spell_id)`.
- Add `eq.get_spell_effect_index(spell_id, effect_id)`.
- Add `eq.get_spell_furious_bash(spell_id)`.
- Add `eq.get_spell_level(spell_id, class_id)`.
- Add `eq.get_spell_minimum_level(spell_id)`.
- Add `eq.get_spell_nimbus_effect(spell_id)`.
- Add `eq.get_spell_partial_magic_rune_amount(spell_id)`.
- Add `eq.get_spell_partial_magic_rune_reduction(spell_id)`.
- Add `eq.get_spell_partial_melee_rune_amount(spell_id)`.
- Add `eq.get_spell_partial_melee_rune_reduction(spell_id)`.
- Add `eq.get_spell_proc_limit_timer(spell_id)`.
- Add `eq.get_spell_resist_type(spell_id)`.
- Add `eq.get_spell_resurrection_sickness_check(spell_id_one, spell_id_two)`.
- Add `eq.get_spell_target_type(spell_id)`.
- Add `eq.get_spell_trigger_spell_id(spell_id)`.
- Add `eq.get_spell_viral_maximum_spread_time(spell_id)`.
- Add `eq.get_spell_viral_minimum_spread_time(spell_id)`.
- Add `eq.get_spell_viral_spread_range(spell_id)`.
- Add `eq.is_ae_duration_spell(spell_id)`.
- Add `eq.is_ae_nuke_spell(spell_id)`.
- Add `eq.is_ae_rain_nuke_spell(spell_id)`.
- Add `eq.is_alliance_spell(spell_id)`.
- Add `eq.is_bard_only_stack_effect(spell_id)`.
- Add `eq.is_bard_song(spell_id)`.
- Add `eq.is_beneficial_spell(spell_id)`.
- Add `eq.is_blank_spell_effect(spell_id)`.
- Add `eq.is_blind_spell(spell_id)`.
- Add `eq.is_buff_spell(spell_id)`.
- Add `eq.is_cast_not_standing_spell(spell_id)`.
- Add `eq.is_cast_on_fade_duration_spell(spell_id)`.
- Add `eq.is_cast_restricted_spell(spell_id)`.
- Add `eq.is_cast_time_reduction_spell(spell_id)`.
- Add `eq.is_cast_while_invisible_spell(spell_id)`.
- Add `eq.is_charm_spell(spell_id)`.
- Add `eq.is_combat_skill(spell_id)`.
- Add `eq.is_complete_heal_duration_spell(spell_id)`.
- Add `eq.is_complete_heal_spell(spell_id)`.
- Add `eq.is_cure_spell(spell_id)`.
- Add `eq.is_damage_spell(spell_id)`.
- Add `eq.is_death_save_spell(spell_id)`.
- Add `eq.is_debuff_spell(spell_id)`.
- Add `eq.is_detrimental_spell(spell_id)`.
- Add `eq.is_discipline(spell_id)`.
- Add `eq.is_discipline_buff(spell_id)`.
- Add `eq.is_disease_counter_spell(spell_id)`.
- Add `eq.is_distance_modifier_spell(spell_id)`.
- Add `eq.is_effect_ignored_in_stacking(effect_id)`.
- Add `eq.is_effect_in_spell(spell_id, effect_id)`.
- Add `eq.is_fast_heal_spell(spell_id)`.
- Add `eq.is_fear_spell(spell_id)`.
- Add `eq.is_focus_limit(effect_id)`.
- Add `eq.is_full_death_save_spell(spell_id)`.
- Add `eq.is_gate_spell(spell_id)`.
- Add `eq.is_group_complete_heal_spell(spell_id)`.
- Add `eq.is_group_heal_over_time_spell(spell_id)`.
- Add `eq.is_group_only_spell(spell_id)`.
- Add `eq.is_group_spell(spell_id)`.
- Add `eq.is_harmony_spell(spell_id)`.
- Add `eq.is_haste_spell(spell_id)`.
- Add `eq.is_heal_over_time_spell(spell_id)`.
- Add `eq.is_health_spell(spell_id)`.
- Add `eq.is_illusion_spell(spell_id)`.
- Add `eq.is_improved_damage_spell(spell_id)`.
- Add `eq.is_improved_healing_spell(spell_id)`.
- Add `eq.is_increase_duration_spell(spell_id)`.
- Add `eq.is_increase_range_spell(spell_id)`.
- Add `eq.is_instrument_modifier_applied_to_spell_effect(spell_id, effect_id)`.
- Add `eq.is_invisible_spell(spell_id)`.
- Add `eq.is_invulnerability_spell(spell_id)`.
- Add `eq.is_ldon_object_spell(spell_id)`.
- Add `eq.is_lifetap_spell(spell_id)`.
- Add `eq.is_magic_rune_spell(spell_id)`.
- Add `eq.is_mana_cost_reduction_spell(spell_id)`.
- Add `eq.is_mana_tap_spell(spell_id)`.
- Add `eq.is_mesmerize_spell(spell_id)`.
- Add `eq.is_no_detrimental_spell_aggro_spell(spell_id)`.
- Add `eq.is_partial_death_save_spell(spell_id)`.
- Add `eq.is_partial_resistable_spell(spell_id)`.
- Add `eq.is_pbae_nuke_spell(spell_id)`.
- Add `eq.is_percental_heal_spell(spell_id)`.
- Add `eq.is_persist_death_spell(spell_id)`.
- Add `eq.is_pet_spell(spell_id)`.
- Add `eq.is_poison_counter_spell(spell_id)`.
- Add `eq.is_pulsing_bard_song(spell_id)`.
- Add `eq.is_pure_nuke_spell(spell_id)`.
- Add `eq.is_regular_group_heal_spell(spell_id)`.
- Add `eq.is_regular_single_target_heal_spell(spell_id)`.
- Add `eq.is_resist_debuff_spell(spell_id)`.
- Add `eq.is_resistable_spell(spell_id)`.
- Add `eq.is_rest_allowed_spell(spell_id)`.
- Add `eq.is_resurrection_effects(spell_id)`.
- Add `eq.is_rune_spell(spell_id)`.
- Add `eq.is_sacrifice_spell(spell_id)`.
- Add `eq.is_self_conversion_spell(spell_id)`.
- Add `eq.is_shadow_step_spell(spell_id)`.
- Add `eq.is_short_duration_buff(spell_id)`.
- Add `eq.is_spell_usable_in_this_zone_type(spell_id)`.
- Add `eq.is_spell_usable_in_this_zone_type(spell_id, zone_type)`.
- Add `eq.is_stackable_dot(spell_id)`.
- Add `eq.is_stun_spell(spell_id)`.
- Add `eq.is_succor_spell(spell_id)`.
- Add `eq.is_summon_item_spell(spell_id)`.
- Add `eq.is_summon_pc_spell(spell_id)`.
- Add `eq.is_summon_pet_spell(spell_id)`.
- Add `eq.is_summon_skeleton_spell(spell_id)`.
- Add `eq.is_summon_spell(spell_id)`.
- Add `eq.is_suspendable_spell(spell_id)`.
- Add `eq.is_target_required_for_spell(spell_id)`.
- Add `eq.is_targetable_ae_spell(spell_id)`.
- Add `eq.is_teleport_spell(spell_id)`.
- Add `eq.is_tgb_compatible_spell(spell_id)`.
- Add `eq.is_translocate_spell(spell_id)`.
- Add `eq.is_valid_spell(spell_id)`.
- Add `eq.is_very_fast_heal_spell(spell_id)`.
- Add `eq.is_virus_spell(spell_id)`.

- A lot of cleanup in the logic and naming of these methods was done.
- Missing GM restricted spells like Guide spells and GM Health buffs were added as defines.
- Good effect values were added as defines.
- Resurrection effects non-stacking value was added as a define.
- Max fast heal casting time and max very fast heal casting time were added as defines.
- `SE_Display` was uncommented so we could use it instead of the magic number `425`.
- `IsEvacSpell(spell_id)` was removed as it was unnecessary since `IsSuccorSpell(spell_id)` checks for `SE_Succor` as well.
- `GetMorphTrigger(spell_id)` was removed as it was unused.
- `GroupOnlySpell(spell_id)` was removed as it was unnecessary since `IsGroupOnlySpell(spell_id)` exists.
- `CanUseSpell(spell_id)` was removed as it was unnecessary since `GetSpellLevel(spell_id, class_id)` exists.
- `BeneficialSpell(spell_id)` was removed as it was unnecessary since `IsBeneficialSpell(spell_id)` exists.

* Update spell_effects.cpp

* Update spdat.cpp
This commit is contained in:
Alex King 2023-06-12 20:27:22 -04:00 committed by GitHub
parent c5c575b028
commit 756e835144
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 2740 additions and 833 deletions

File diff suppressed because it is too large Load Diff

View File

@ -171,6 +171,37 @@
#define SPELL_ILLUSION_MALE 1732
#define SPELL_UNSUMMON_SELF 892
#define SPELL_ANCIENT_LIFEBANE 2115
#define SPELL_GMHP25K 6817
#define SPELL_GMHP50K 6818
#define SPELL_GMHP100K 6819
#define SPELL_GMHP225K 6820
#define SPELL_GMHP475K 6821
#define SPELL_GMHP925K 6822
#define SPELL_GMHP2M 6823
#define SPELL_GMHP3M 6824
#define SPELL_GMHP5M 39851
#define SPELL_GUIDE_ACTING_ONE 778
#define SPELL_GUIDE_ALLIANCE_ONE 810
#define SPELL_GUIDE_CANCEL_MAGIC_ONE 811
#define SPELL_GUIDE_JOURNEY_ONE 813
#define SPELL_GUIDE_VISION_ONE 814
#define SPELL_GUIDE_HEALTH_ONE 815
#define SPELL_GUIDE_INVULNERABILITY_ONE 816
#define SPELL_GUIDE_BOLT_ONE 817
#define SPELL_GUIDE_MEMORY_BLUR_ONE 818
#define SPELL_GUIDE_ACTING_TWO 1209
#define SPELL_GUIDE_CANCEL_MAGIC_TWO 1211
#define SPELL_GUIDE_JOURNEY_TWO 1212
#define SPELL_GUIDE_VISION_TWO 1213
#define SPELL_GUIDE_HEALTH_TWO 1214
#define SPELL_GUIDE_INVULNERABILITY_TWO 1215
#define SPELL_GUIDE_BOLT_TWO 1216
#define SPELL_GUIDE_MEMORY_BLUR_TWO 1217
#define SPELL_GUIDE_ALLIANCE_TWO 1219
#define SPELL_GUIDE_EVACUATION 3921
#define SPELL_GUIDE_LEVITATION 39852
#define SPELL_GUIDE_SPELL_HASTE 39853
#define SPELL_GUIDE_HASTE 39854
//spellgroup ids
#define SPELLGROUP_FRENZIED_BURNOUT 2754
@ -202,11 +233,22 @@
#define INSTRUMENT_HORN 13012
//option types for the rule Spells:ResurrectionEffectBlock
#define RES_EFFECTS_CANNOT_STACK -1
#define NO_RES_EFFECTS_BLOCK 0
#define RES_EFFECTS_BLOCK 1
#define RES_EFFECTS_BLOCK_WITH_BUFFS 2
#define MOVE_NEW_SLOT 2
#define PARTIAL_DEATH_SAVE 1
#define FULL_DEATH_SAVE 2
#define MAX_FAST_HEAL_CASTING_TIME 2000
#define MAX_VERY_FAST_HEAL_CASTING_TIME 1000
#define DETRIMENTAL_EFFECT 0
#define BENEFICIAL_EFFECT 1
#define BENEFICIAL_EFFECT_GROUP_ONLY 2
const uint32 MobAISpellRange=100; // max range of buffs
enum FocusLimitIncludes {
@ -1163,7 +1205,7 @@ typedef enum {
#define SE_LimitUseMin 422 // implemented, @Ff Minium amount of numhits for a spell to be focused, base: numhit amt
#define SE_LimitUseType 423 // implemented, @Ff Focus will only affect if has this numhits type, base: numhit type
#define SE_GravityEffect 424 // implemented - Pulls/pushes you toward/away the mob at a set pace
//#define SE_Display 425 // *not implemented - Illusion: Flying Dragon(21626)
#define SE_Display 425 // *not implemented - Illusion: Flying Dragon(21626)
#define SE_IncreaseExtTargetWindow 426 // *not implmented[AA] - increases the capacity of your extended target window
#define SE_SkillProcAttempt 427 // implemented - chance to proc when using a skill(ie taunt)
#define SE_LimitToSkill 428 // implemented, @Procs, limits what combat skills will effect a skill proc, base: skill value, limit: none, max: none
@ -1446,7 +1488,7 @@ extern int32 SPDAT_RECORDS;
bool IsTargetableAESpell(uint16 spell_id);
bool IsSacrificeSpell(uint16 spell_id);
bool IsLifetapSpell(uint16 spell_id);
bool IsMezSpell(uint16 spell_id);
bool IsMesmerizeSpell(uint16 spell_id);
bool IsStunSpell(uint16 spell_id);
bool IsSlowSpell(uint16 spell_id);
bool IsHasteSpell(uint16 spell_id);
@ -1455,22 +1497,23 @@ bool IsPercentalHealSpell(uint16 spell_id);
bool IsGroupOnlySpell(uint16 spell_id);
bool IsBeneficialSpell(uint16 spell_id);
bool IsDetrimentalSpell(uint16 spell_id);
bool IsInvisSpell(uint16 spell_id);
bool IsInvisibleSpell(uint16 spell_id);
bool IsInvulnerabilitySpell(uint16 spell_id);
bool IsCHDurationSpell(uint16 spell_id);
bool IsCompleteHealDurationSpell(uint16 spell_id);
bool IsPoisonCounterSpell(uint16 spell_id);
bool IsDiseaseCounterSpell(uint16 spell_id);
bool IsSummonItemSpell(uint16 spell_id);
bool IsSummonSkeletonSpell(uint16 spell_id);
bool IsSummonPetSpell(uint16 spell_id);
bool IsSummonPCSpell(uint16 spell_id);
bool IsPetSpell(uint16 spell_id);
bool IsCharmSpell(uint16 spell_id);
bool IsBlindSpell(uint16 spell_id);
bool IsEffectHitpointsSpell(uint16 spell_id);
bool IsReduceCastTimeSpell(uint16 spell_id);
bool IsHealthSpell(uint16 spell_id);
bool IsCastTimeReductionSpell(uint16 spell_id);
bool IsIncreaseDurationSpell(uint16 spell_id);
bool IsReduceManaSpell(uint16 spell_id);
bool IsExtRangeSpell(uint16 spell_id);
bool IsManaCostReductionSpell(uint16 spell_id);
bool IsIncreaseRangeSpell(uint16 spell_id);
bool IsImprovedHealingSpell(uint16 spell_id);
bool IsImprovedDamageSpell(uint16 spell_id);
bool IsAEDurationSpell(uint16 spell_id);
@ -1478,26 +1521,22 @@ bool IsPureNukeSpell(uint16 spell_id);
bool IsAENukeSpell(uint16 spell_id);
bool IsPBAENukeSpell(uint16 spell_id);
bool IsAERainNukeSpell(uint16 spell_id);
bool IsPartialCapableSpell(uint16 spell_id);
bool IsPartialResistableSpell(uint16 spell_id);
bool IsResistableSpell(uint16 spell_id);
bool IsGroupSpell(uint16 spell_id);
bool IsTGBCompatibleSpell(uint16 spell_id);
bool IsBardSong(uint16 spell_id);
bool IsEffectInSpell(uint16 spellid, int effect);
uint16 GetTriggerSpellID(uint16 spell_id, uint32 effect);
bool IsBlankSpellEffect(uint16 spellid, int effect_index);
bool IsValidSpell(uint32 spellid);
bool IsSummonSpell(uint16 spellid);
bool IsEvacSpell(uint16 spellid);
bool IsDamageSpell(uint16 spellid);
bool IsFearSpell(uint16 spellid);
bool IsCureSpell(uint16 spellid);
bool BeneficialSpell(uint16 spell_id);
bool GroupOnlySpell(uint16 spell_id);
int GetSpellEffectIndex(uint16 spell_id, int effect);
int CanUseSpell(uint16 spellid, int classa, int level);
int GetMinLevel(uint16 spell_id);
int GetSpellLevel(uint16 spell_id, int classa);
bool IsEffectInSpell(uint16 spell_id, int effect_id);
uint16 GetSpellTriggerSpellID(uint16 spell_id, int effect_id);
bool IsBlankSpellEffect(uint16 spell_id, int effect_index);
bool IsValidSpell(uint32 spell_id);
bool IsSummonSpell(uint16 spell_id);
bool IsDamageSpell(uint16 spell_id);
bool IsFearSpell(uint16 spell_id);
bool IsCureSpell(uint16 spell_id);
int GetSpellEffectIndex(uint16 spell_id, int effect_id);
uint8 GetSpellMinimumLevel(uint16 spell_id);
uint8 GetSpellLevel(uint16 spell_id, uint8 class_id);
int CalcBuffDuration_formula(int level, int formula, int duration);
int32 CalculatePoisonCounters(uint16 spell_id);
int32 CalculateDiseaseCounters(uint16 spell_id);
@ -1508,11 +1547,11 @@ bool IsDisciplineBuff(uint16 spell_id);
bool IsDiscipline(uint16 spell_id);
bool IsCombatSkill(uint16 spell_id);
bool IsResurrectionEffects(uint16 spell_id);
int8 GetResurrectionSicknessCheck(uint16 spell_id1, uint16 spell_id2);
int8 GetSpellResurrectionSicknessCheck(uint16 spell_id_one, uint16 spell_id_two);
bool IsRuneSpell(uint16 spell_id);
bool IsMagicRuneSpell(uint16 spell_id);
bool IsManaTapSpell(uint16 spell_id);
bool IsAllianceSpellLine(uint16 spell_id);
bool IsAllianceSpell(uint16 spell_id);
bool IsDeathSaveSpell(uint16 spell_id);
bool IsFullDeathSaveSpell(uint16 spell_id);
bool IsPartialDeathSaveSpell(uint16 spell_id);
@ -1521,10 +1560,10 @@ bool IsSuccorSpell(uint16 spell_id);
bool IsTeleportSpell(uint16 spell_id);
bool IsTranslocateSpell(uint16 spell_id);
bool IsGateSpell(uint16 spell_id);
bool IsPlayerIllusionSpell(uint16 spell_id); // seveian 2008-09-23
bool IsIllusionSpell(uint16 spell_id);
bool IsLDoNObjectSpell(uint16 spell_id);
int32 GetSpellResistType(uint16 spell_id);
int32 GetSpellTargetType(uint16 spell_id);
int GetSpellResistType(uint16 spell_id);
int GetSpellTargetType(uint16 spell_id);
bool IsHealOverTimeSpell(uint16 spell_id);
bool IsCompleteHealSpell(uint16 spell_id);
bool IsFastHealSpell(uint16 spell_id);
@ -1539,37 +1578,36 @@ bool IsSelfConversionSpell(uint16 spell_id);
bool IsBuffSpell(uint16 spell_id);
bool IsPersistDeathSpell(uint16 spell_id);
bool IsSuspendableSpell(uint16 spell_id);
uint32 GetMorphTrigger(uint32 spell_id);
bool IsCastonFadeDurationSpell(uint16 spell_id);
bool IsPowerDistModSpell(uint16 spell_id);
uint32 GetPartialMeleeRuneReduction(uint32 spell_id);
uint32 GetPartialMagicRuneReduction(uint32 spell_id);
uint32 GetPartialMeleeRuneAmount(uint32 spell_id);
uint32 GetPartialMagicRuneAmount(uint32 spell_id);
bool NoDetrimentalSpellAggro(uint16 spell_id);
bool IsStackableDot(uint16 spell_id);
bool IsBardOnlyStackEffect(int effect);
bool IsCastWhileInvis(uint16 spell_id);
bool IsEffectIgnoredInStacking(int spa);
bool IsFocusLimit(int spa);
bool SpellRequiresTarget(int target_type);
bool IsVirusSpell(int32 spell_id);
int GetViralMinSpreadTime(int32 spell_id);
int GetViralMaxSpreadTime(int32 spell_id);
int GetViralSpreadRange(int32 spell_id);
bool IsInstrumentModAppliedToSpellEffect(int32 spell_id, int effect);
bool IsPulsingBardSong(int32 spell_id);
uint32 GetProcLimitTimer(int32 spell_id, int proc_type);
bool IgnoreCastingRestriction(int32 spell_id);
int GetSpellEffectDescNum(uint16 spell_id);
DmgShieldType GetDamageShieldType(uint16 spell_id, int32 DSType = 0);
bool DetrimentalSpellAllowsRest(uint16 spell_id);
uint32 GetNimbusEffect(uint16 spell_id);
int32 GetFuriousBash(uint16 spell_id);
bool IsCastOnFadeDurationSpell(uint16 spell_id);
bool IsDistanceModifierSpell(uint16 spell_id);
int GetSpellPartialMeleeRuneReduction(uint16 spell_id);
int GetSpellPartialMagicRuneReduction(uint16 spell_id);
int GetSpellPartialMeleeRuneAmount(uint16 spell_id);
int GetSpellPartialMagicRuneAmount(uint16 spell_id);
bool IsNoDetrimentalSpellAggroSpell(uint16 spell_id);
bool IsStackableDOT(uint16 spell_id);
bool IsBardOnlyStackEffect(int effect_id);
bool IsCastWhileInvisibleSpell(uint16 spell_id);
bool IsEffectIgnoredInStacking(int effect_id);
bool IsFocusLimit(int effect_id);
bool IsTargetRequiredForSpell(uint16 spell_id);
bool IsVirusSpell(uint16 spell_id);
int GetSpellViralMinimumSpreadTime(uint16 spell_id);
int GetSpellViralMaximumSpreadTime(uint16 spell_id);
int GetSpellViralSpreadRange(uint16 spell_id);
bool IsInstrumentModifierAppliedToSpellEffect(uint16 spell_id, int effect_id);
bool IsPulsingBardSong(uint16 spell_id);
int GetSpellProcLimitTimer(uint16 spell_id, int proc_type);
bool IsCastNotStandingSpell(uint16 spell_id);
int GetSpellEffectDescriptionNumber(uint16 spell_id);
DmgShieldType GetDamageShieldType(uint16 spell_id, int damage_shield_type = 0);
bool IsRestAllowedSpell(uint16 spell_id);
int GetSpellNimbusEffect(uint16 spell_id);
int GetSpellFuriousBash(uint16 spell_id);
bool IsShortDurationBuff(uint16 spell_id);
bool IsSpellUsableThisZoneType(uint16 spell_id, uint8 zone_type);
bool IsSpellUsableInThisZoneType(uint16 spell_id, uint8 zone_type);
const char *GetSpellName(uint16 spell_id);
int GetSpellStatValue(uint32 spell_id, const char* stat_identifier, uint8 slot = 0);
bool CastRestrictedSpell(int spellid);
int GetSpellStatValue(uint16 spell_id, const char* stat_identifier, uint8 slot = 0);
bool IsCastRestrictedSpell(uint16 spell_id);
#endif

View File

@ -1320,7 +1320,7 @@ void Client::ActivateAlternateAdvancementAbility(int rank_id, int target_id) {
timer_duration = 0;
}
if (!IsCastWhileInvis(rank->spell))
if (!IsCastWhileInvisibleSpell(rank->spell))
CommonBreakInvisible();
if (spells[rank->spell].sneak && (!hidden || (hidden && (Timer::GetCurrentTime() - tmHidden) < 4000))) {
@ -1333,7 +1333,7 @@ void Client::ActivateAlternateAdvancementAbility(int rank_id, int target_id) {
target_id = GetPetID();
// extra handling for cast_not_standing spells
if (!IgnoreCastingRestriction(rank->spell)) {
if (!IsCastNotStandingSpell(rank->spell)) {
if (GetAppearance() == eaSitting) // we need to stand!
SetAppearance(eaStanding, false);

View File

@ -1161,7 +1161,7 @@ bool Mob::CheckLosFN(glm::vec3 posWatcher, float sizeWatcher, glm::vec3 posTarge
//offensive spell aggro
int32 Mob::CheckAggroAmount(uint16 spell_id, Mob *target, bool isproc)
{
if (NoDetrimentalSpellAggro(spell_id))
if (IsNoDetrimentalSpellAggroSpell(spell_id))
return 0;
int32 AggroAmount = 0;

View File

@ -2958,7 +2958,7 @@ void Mob::AddToHateList(Mob* other, int64 hate /*= 0*/, int64 damage /*= 0*/, bo
if (GetSpecialAbility(IMMUNE_AGGRO_CLIENT) && other->IsClient())
return;
if (IsValidSpell(spell_id) && NoDetrimentalSpellAggro(spell_id))
if (IsValidSpell(spell_id) && IsNoDetrimentalSpellAggroSpell(spell_id))
return;
if (other == myowner)

View File

@ -259,7 +259,7 @@ Bot::Bot(uint32 botID, uint32 botOwnerCharacterID, uint32 botSpellsID, double to
const SPDat_Spell_Struct& spell = spells[buffs[j1].spellid];
if (int NimbusEffect = GetNimbusEffect(buffs[j1].spellid); NimbusEffect && !IsNimbusEffectActive(NimbusEffect)) {
if (int NimbusEffect = GetSpellNimbusEffect(buffs[j1].spellid); NimbusEffect && !IsNimbusEffectActive(NimbusEffect)) {
SendSpellEffect(NimbusEffect, 500, 0, 1, 3000, true);
}
@ -4890,7 +4890,7 @@ void Bot::DoSpecialAttackDamage(Mob *who, EQ::skills::SkillType skill, int32 max
if (botweapon->ItemType == EQ::item::ItemTypeShield)
hate += botweapon->AC;
hate = (hate * (100 + GetFuriousBash(botweapon->Focus.Effect)) / 100);
hate = (hate * (100 + GetSpellFuriousBash(botweapon->Focus.Effect)) / 100);
}
}
@ -5536,7 +5536,7 @@ int32 Bot::GetActSpellDuration(uint16 spell_id, int32 duration) {
increase += 20;
}
if (IsMezSpell(spell_id))
if (IsMesmerizeSpell(spell_id))
tic_inc += GetAA(aaMesmerizationMastery);
return (((duration * increase) / 100) + tic_inc);
@ -6326,7 +6326,7 @@ void Bot::CalcRestState() {
for (unsigned int j = 0; j < buff_count; j++) {
if (IsValidSpell(buffs[j].spellid)) {
if (IsDetrimentalSpell(buffs[j].spellid) && (buffs[j].ticsremaining > 0))
if (!DetrimentalSpellAllowsRest(buffs[j].spellid))
if (!IsRestAllowedSpell(buffs[j].spellid))
return;
}
}

View File

@ -110,7 +110,7 @@ bool Bot::BotCastSong(Mob* tar, uint8 botLevel) {
continue;
if (!CheckSpellRecastTimers(this, iter.SpellIndex))
continue;
if (!IsSpellUsableThisZoneType(iter.SpellId, zone->GetZoneType()))
if (!IsSpellUsableInThisZoneType(iter.SpellId, zone->GetZoneType()))
continue;
switch (spells[iter.SpellId].target_type) {
case ST_AEBard:
@ -144,7 +144,7 @@ bool Bot::BotCastCombatSong(Mob* tar, uint8 botLevel) {
continue;
if (!CheckSpellRecastTimers(this, iter.SpellIndex))
continue;
if (!IsSpellUsableThisZoneType(iter.SpellId, zone->GetZoneType()))
if (!IsSpellUsableInThisZoneType(iter.SpellId, zone->GetZoneType()))
continue;
switch (spells[iter.SpellId].target_type) {
case ST_AEBard:
@ -176,7 +176,7 @@ bool Bot::BotCastHateReduction(Mob* tar, uint8 botLevel, const BotSpell& botSpel
continue;
if (!CheckSpellRecastTimers(this, iter.SpellIndex))
continue;
if (!IsSpellUsableThisZoneType(iter.SpellId, zone->GetZoneType()))
if (!IsSpellUsableInThisZoneType(iter.SpellId, zone->GetZoneType()))
continue;
if (spells[iter.SpellId].target_type != ST_Target)
continue;
@ -316,7 +316,7 @@ bool Bot::BotCastSlow(Mob* tar, uint8 botLevel, uint8 botClass, BotSpell& botSpe
continue;
}
if (!IsSpellUsableThisZoneType(iter.SpellId, zone->GetZoneType())) {
if (!IsSpellUsableInThisZoneType(iter.SpellId, zone->GetZoneType())) {
continue;
}
@ -582,7 +582,7 @@ bool Bot::BotCastCombatBuff(Mob* tar, uint8 botLevel, uint8 botClass) {
if (
((IsEffectInSpell(s.SpellId, SE_Levitate) && !zone->CanLevitate()) ||
(IsEffectInSpell(s.SpellId, SE_MovementSpeed) && !zone->CanCastOutdoor())) &&
(botClass != BARD || !IsSpellUsableThisZoneType(s.SpellId, zone->GetZoneType()))
(botClass != BARD || !IsSpellUsableInThisZoneType(s.SpellId, zone->GetZoneType()))
) {
continue;
}
@ -892,7 +892,7 @@ bool Bot::BotCastBuff(Mob* tar, uint8 botLevel, uint8 botClass) {
(IsEffectInSpell(s.SpellId, SE_Levitate) && !zone->CanLevitate()) ||
(IsEffectInSpell(s.SpellId, SE_MovementSpeed) && !zone->CanCastOutdoor())
) &&
(botClass != BARD || !IsSpellUsableThisZoneType(s.SpellId, zone->GetZoneType()))
(botClass != BARD || !IsSpellUsableInThisZoneType(s.SpellId, zone->GetZoneType()))
) {
continue;
}
@ -1902,7 +1902,7 @@ std::list<BotSpell> Bot::GetBotSpellsForSpellEffect(Bot* botCaster, int spellEff
continue;
}
if (IsEffectInSpell(botSpellList[i].spellid, spellEffect) || GetTriggerSpellID(botSpellList[i].spellid, spellEffect)) {
if (IsEffectInSpell(botSpellList[i].spellid, spellEffect) || GetSpellTriggerSpellID(botSpellList[i].spellid, spellEffect)) {
BotSpell botSpell;
botSpell.SpellId = botSpellList[i].spellid;
botSpell.SpellIndex = i;
@ -1940,7 +1940,7 @@ std::list<BotSpell> Bot::GetBotSpellsForSpellEffectAndTargetType(Bot* botCaster,
if (
(
IsEffectInSpell(botSpellList[i].spellid, spellEffect) ||
GetTriggerSpellID(botSpellList[i].spellid, spellEffect)
GetSpellTriggerSpellID(botSpellList[i].spellid, spellEffect)
) &&
spells[botSpellList[i].spellid].target_type == targetType
) {
@ -2313,7 +2313,7 @@ BotSpell Bot::GetBestBotSpellForMez(Bot* botCaster) {
for (std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if (
IsMezSpell(botSpellListItr->SpellId) &&
IsMesmerizeSpell(botSpellListItr->SpellId) &&
CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex)
) {
result.SpellId = botSpellListItr->SpellId;
@ -2388,7 +2388,7 @@ BotSpell Bot::GetBestBotSpellForDiseaseBasedSlow(Bot* botCaster) {
Mob* Bot::GetFirstIncomingMobToMez(Bot* botCaster, BotSpell botSpell) {
Mob* result = 0;
if (botCaster && IsMezSpell(botSpell.SpellId)) {
if (botCaster && IsMesmerizeSpell(botSpell.SpellId)) {
std::list<NPC*> npc_list;
entity_list.GetNPCList(npc_list);

View File

@ -656,7 +656,7 @@ void Client::CompleteConnect()
const SPDat_Spell_Struct &spell = spells[buffs[j1].spellid];
int NimbusEffect = GetNimbusEffect(buffs[j1].spellid);
int NimbusEffect = GetSpellNimbusEffect(buffs[j1].spellid);
if (NimbusEffect) {
if (!IsNimbusEffectActive(NimbusEffect))
SendSpellEffect(NimbusEffect, 500, 0, 1, 3000, true);
@ -721,17 +721,17 @@ void Client::CompleteConnect()
case SE_AddMeleeProc:
case SE_WeaponProc:
{
AddProcToWeapon(GetProcID(buffs[j1].spellid, x1), false, 100 + spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, buffs[j1].casterlevel, GetProcLimitTimer(buffs[j1].spellid, ProcType::MELEE_PROC));
AddProcToWeapon(GetProcID(buffs[j1].spellid, x1), false, 100 + spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, buffs[j1].casterlevel, GetSpellProcLimitTimer(buffs[j1].spellid, ProcType::MELEE_PROC));
break;
}
case SE_DefensiveProc:
{
AddDefensiveProc(GetProcID(buffs[j1].spellid, x1), 100 + spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, GetProcLimitTimer(buffs[j1].spellid, ProcType::DEFENSIVE_PROC));
AddDefensiveProc(GetProcID(buffs[j1].spellid, x1), 100 + spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, GetSpellProcLimitTimer(buffs[j1].spellid, ProcType::DEFENSIVE_PROC));
break;
}
case SE_RangedProc:
{
AddRangedProc(GetProcID(buffs[j1].spellid, x1), 100 + spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, GetProcLimitTimer(buffs[j1].spellid, ProcType::RANGED_PROC));
AddRangedProc(GetProcID(buffs[j1].spellid, x1), 100 + spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, GetSpellProcLimitTimer(buffs[j1].spellid, ProcType::RANGED_PROC));
break;
}
}
@ -9233,7 +9233,7 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app)
return;
}
if (i == 0) {
if (!IsCastWhileInvis(item->Click.Effect)) {
if (!IsCastWhileInvisibleSpell(item->Click.Effect)) {
CommonBreakInvisible(); // client can't do this for us :(
}
if (GetClass() == BARD){
@ -9305,7 +9305,7 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app)
}
if (i == 0) {
if (!IsCastWhileInvis(augitem->Click.Effect)) {
if (!IsCastWhileInvisibleSpell(augitem->Click.Effect)) {
CommonBreakInvisible(); // client can't do this for us :(
}
if (GetClass() == BARD) {

View File

@ -1035,7 +1035,7 @@ void Client::OPRezzAnswer(uint32 Action, uint32 SpellID, uint16 ZoneID, uint16 I
BuffFadeNonPersistDeath();
}
int SpellEffectDescNum = GetSpellEffectDescNum(SpellID);
int SpellEffectDescNum = GetSpellEffectDescriptionNumber(SpellID);
// Rez spells with Rez effects have this DescNum (first is Titanium, second is 6.2 Client)
if(RuleB(Character, UseResurrectionSickness) && SpellEffectDescNum == 82 || SpellEffectDescNum == 39067) {
SetHP(GetMaxHP() / 5);
@ -1968,7 +1968,7 @@ void Client::CalcRestState()
for (unsigned int j = 0; j < buff_count; j++) {
if(IsValidSpell(buffs[j].spellid)) {
if(IsDetrimentalSpell(buffs[j].spellid) && (buffs[j].ticsremaining > 0))
if(!DetrimentalSpellAllowsRest(buffs[j].spellid))
if(!IsRestAllowedSpell(buffs[j].spellid))
return;
}
}

View File

@ -810,9 +810,9 @@ void Client::SendDisciplineUpdate() {
bool Client::UseDiscipline(uint32 spell_id, uint32 target) {
// Dont let client waste a reuse timer if they can't use the disc
if ((IsStunned() && !IgnoreCastingRestriction(spell_id))||
if ((IsStunned() && !IsCastNotStandingSpell(spell_id))||
IsFeared() ||
(IsMezzed() && !IgnoreCastingRestriction(spell_id)) ||
(IsMezzed() && !IsCastNotStandingSpell(spell_id)) ||
IsAmnesiad() ||
IsPet())
{
@ -837,7 +837,7 @@ bool Client::UseDiscipline(uint32 spell_id, uint32 target) {
return false;
}
if (DivineAura() && !IgnoreCastingRestriction(spell_id)) {
if (DivineAura() && !IsCastNotStandingSpell(spell_id)) {
return false;
}

View File

@ -528,10 +528,10 @@ std::string Perl__getspellname(uint32 spell_id)
return quest_manager.getspellname(spell_id);
}
int Perl__get_spell_level(uint32_t spell_id, int class_id)
uint8 Perl__get_spell_level(uint16 spell_id, uint8 class_id)
{
int spell_level = IsValidSpell(spell_id) ? GetSpellLevel(spell_id, class_id) : 0;
return (spell_level > RuleI(Character, MaxLevel)) ? 0 : spell_level;
const auto spell_level = GetSpellLevel(spell_id, class_id);
return spell_level > RuleI(Character, MaxLevel) ? UINT8_MAX : spell_level;
}
std::string Perl__getskillname(int skill_id)
@ -1695,14 +1695,489 @@ bool Perl__IsRunning()
return quest_manager.IsRunning();
}
bool Perl__IsEffectInSpell(uint32 spell_id, uint32 effect_id)
bool Perl__IsEffectInSpell(uint16 spell_id, int effect_id)
{
return IsEffectInSpell(spell_id, effect_id);
}
bool Perl__IsBeneficialSpell(uint16 spell_id)
{
return BeneficialSpell(spell_id);
return IsBeneficialSpell(spell_id);
}
bool Perl__IsDetrimentalSpell(uint16 spell_id)
{
return IsDetrimentalSpell(spell_id);
}
bool Perl__IsTargetableAESpell(uint16 spell_id)
{
return IsTargetableAESpell(spell_id);
}
bool Perl__IsSacrificeSpell(uint16 spell_id)
{
return IsSacrificeSpell(spell_id);
}
bool Perl__IsLifetapSpell(uint16 spell_id)
{
return IsLifetapSpell(spell_id);
}
bool Perl__IsMesmerizeSpell(uint16 spell_id)
{
return IsMesmerizeSpell(spell_id);
}
bool Perl__IsStunSpell(uint16 spell_id)
{
return IsStunSpell(spell_id);
}
bool Perl__IsSummonSpell(uint16 spell_id)
{
return IsSummonSpell(spell_id);
}
bool Perl__IsDamageSpell(uint16 spell_id)
{
return IsDamageSpell(spell_id);
}
bool Perl__IsFearSpell(uint16 spell_id)
{
return IsFearSpell(spell_id);
}
bool Perl__IsCureSpell(uint16 spell_id)
{
return IsCureSpell(spell_id);
}
bool Perl__IsHasteSpell(uint16 spell_id)
{
return IsHasteSpell(spell_id);
}
bool Perl__IsHarmonySpell(uint16 spell_id)
{
return IsHarmonySpell(spell_id);
}
bool Perl__IsPercentalHealSpell(uint16 spell_id)
{
return IsPercentalHealSpell(spell_id);
}
bool Perl__IsGroupOnlySpell(uint16 spell_id)
{
return IsGroupOnlySpell(spell_id);
}
bool Perl__IsInvisibleSpell(uint16 spell_id)
{
return IsInvisibleSpell(spell_id);
}
bool Perl__IsInvulnerabilitySpell(uint16 spell_id)
{
return IsInvulnerabilitySpell(spell_id);
}
bool Perl__IsCompleteHealDurationSpell(uint16 spell_id)
{
return IsCompleteHealDurationSpell(spell_id);
}
bool Perl__IsPoisonCounterSpell(uint16 spell_id)
{
return IsPoisonCounterSpell(spell_id);
}
bool Perl__IsDiseaseCounterSpell(uint16 spell_id)
{
return IsDiseaseCounterSpell(spell_id);
}
bool Perl__IsSummonItemSpell(uint16 spell_id)
{
return IsSummonItemSpell(spell_id);
}
bool Perl__IsSummonSkeletonSpell(uint16 spell_id)
{
return IsSummonSkeletonSpell(spell_id);
}
bool Perl__IsSummonPetSpell(uint16 spell_id)
{
return IsSummonPetSpell(spell_id);
}
bool Perl__IsPetSpell(uint16 spell_id)
{
return IsPetSpell(spell_id);
}
bool Perl__IsSummonPCSpell(uint16 spell_id)
{
return IsSummonPCSpell(spell_id);
}
bool Perl__IsCharmSpell(uint16 spell_id)
{
return IsCharmSpell(spell_id);
}
bool Perl__IsBlindSpell(uint16 spell_id)
{
return IsBlindSpell(spell_id);
}
bool Perl__IsHealthSpell(uint16 spell_id)
{
return IsHealthSpell(spell_id);
}
bool Perl__IsCastTimeReductionSpell(uint16 spell_id)
{
return IsCastTimeReductionSpell(spell_id);
}
bool Perl__IsIncreaseDurationSpell(uint16 spell_id)
{
return IsIncreaseDurationSpell(spell_id);
}
bool Perl__IsManaCostReductionSpell(uint16 spell_id)
{
return IsManaCostReductionSpell(spell_id);
}
bool Perl__IsIncreaseRangeSpell(uint16 spell_id)
{
return IsIncreaseRangeSpell(spell_id);
}
bool Perl__IsImprovedHealingSpell(uint16 spell_id)
{
return IsImprovedHealingSpell(spell_id);
}
bool Perl__IsImprovedDamageSpell(uint16 spell_id)
{
return IsImprovedDamageSpell(spell_id);
}
bool Perl__IsAEDurationSpell(uint16 spell_id)
{
return IsAEDurationSpell(spell_id);
}
bool Perl__IsPureNukeSpell(uint16 spell_id)
{
return IsPureNukeSpell(spell_id);
}
bool Perl__IsAENukeSpell(uint16 spell_id)
{
return IsAENukeSpell(spell_id);
}
bool Perl__IsPBAENukeSpell(uint16 spell_id)
{
return IsPBAENukeSpell(spell_id);
}
bool Perl__IsAERainNukeSpell(uint16 spell_id)
{
return IsAERainNukeSpell(spell_id);
}
bool Perl__IsPartialResistableSpell(uint16 spell_id)
{
return IsPartialResistableSpell(spell_id);
}
bool Perl__IsResistableSpell(uint16 spell_id)
{
return IsResistableSpell(spell_id);
}
bool Perl__IsGroupSpell(uint16 spell_id)
{
return IsGroupSpell(spell_id);
}
bool Perl__IsTGBCompatibleSpell(uint16 spell_id)
{
return IsTGBCompatibleSpell(spell_id);
}
bool Perl__IsBardSong(uint16 spell_id)
{
return IsBardSong(spell_id);
}
bool Perl__IsPulsingBardSong(uint16 spell_id)
{
return IsPulsingBardSong(spell_id);
}
bool Perl__IsDisciplineBuff(uint16 spell_id)
{
return IsDisciplineBuff(spell_id);
}
bool Perl__IsDiscipline(uint16 spell_id)
{
return IsDiscipline(spell_id);
}
bool Perl__IsCombatSkill(uint16 spell_id)
{
return IsCombatSkill(spell_id);
}
bool Perl__IsResurrectionEffects(uint16 spell_id)
{
return IsResurrectionEffects(spell_id);
}
bool Perl__IsRuneSpell(uint16 spell_id)
{
return IsRuneSpell(spell_id);
}
bool Perl__IsMagicRuneSpell(uint16 spell_id)
{
return IsMagicRuneSpell(spell_id);
}
bool Perl__IsManaTapSpell(uint16 spell_id)
{
return IsManaTapSpell(spell_id);
}
bool Perl__IsAllianceSpell(uint16 spell_id)
{
return IsAllianceSpell(spell_id);
}
bool Perl__IsDeathSaveSpell(uint16 spell_id)
{
return IsDeathSaveSpell(spell_id);
}
bool Perl__IsPartialDeathSaveSpell(uint16 spell_id)
{
return IsPartialDeathSaveSpell(spell_id);
}
bool Perl__IsFullDeathSaveSpell(uint16 spell_id)
{
return IsFullDeathSaveSpell(spell_id);
}
bool Perl__IsShadowStepSpell(uint16 spell_id)
{
return IsShadowStepSpell(spell_id);
}
bool Perl__IsSuccorSpell(uint16 spell_id)
{
return IsSuccorSpell(spell_id);
}
bool Perl__IsTeleportSpell(uint16 spell_id)
{
return IsTeleportSpell(spell_id);
}
bool Perl__IsTranslocateSpell(uint16 spell_id)
{
return IsTranslocateSpell(spell_id);
}
bool Perl__IsGateSpell(uint16 spell_id)
{
return IsGateSpell(spell_id);
}
bool Perl__IsIllusionSpell(uint16 spell_id)
{
return IsIllusionSpell(spell_id);
}
bool Perl__IsLDoNObjectSpell(uint16 spell_id)
{
return IsLDoNObjectSpell(spell_id);
}
bool Perl__IsHealOverTimeSpell(uint16 spell_id)
{
return IsHealOverTimeSpell(spell_id);
}
bool Perl__IsCompleteHealSpell(uint16 spell_id)
{
return IsCompleteHealSpell(spell_id);
}
bool Perl__IsFastHealSpell(uint16 spell_id)
{
return IsFastHealSpell(spell_id);
}
bool Perl__IsVeryFastHealSpell(uint16 spell_id)
{
return IsVeryFastHealSpell(spell_id);
}
bool Perl__IsRegularSingleTargetHealSpell(uint16 spell_id)
{
return IsRegularSingleTargetHealSpell(spell_id);
}
bool Perl__IsRegularGroupHealSpell(uint16 spell_id)
{
return IsRegularGroupHealSpell(spell_id);
}
bool Perl__IsGroupCompleteHealSpell(uint16 spell_id)
{
return IsGroupCompleteHealSpell(spell_id);
}
bool Perl__IsGroupHealOverTimeSpell(uint16 spell_id)
{
return IsGroupHealOverTimeSpell(spell_id);
}
bool Perl__IsDebuffSpell(uint16 spell_id)
{
return IsDebuffSpell(spell_id);
}
bool Perl__IsResistDebuffSpell(uint16 spell_id)
{
return IsResistDebuffSpell(spell_id);
}
bool Perl__IsSelfConversionSpell(uint16 spell_id)
{
return IsSelfConversionSpell(spell_id);
}
bool Perl__IsBuffSpell(uint16 spell_id)
{
return IsBuffSpell(spell_id);
}
bool Perl__IsPersistDeathSpell(uint16 spell_id)
{
return IsPersistDeathSpell(spell_id);
}
bool Perl__IsSuspendableSpell(uint16 spell_id)
{
return IsSuspendableSpell(spell_id);
}
bool Perl__IsCastOnFadeDurationSpell(uint16 spell_id)
{
return IsCastOnFadeDurationSpell(spell_id);
}
bool Perl__IsDistanceModifierSpell(uint16 spell_id)
{
return IsDistanceModifierSpell(spell_id);
}
bool Perl__IsRestAllowedSpell(uint16 spell_id)
{
return IsRestAllowedSpell(spell_id);
}
bool Perl__IsNoDetrimentalSpellAggroSpell(uint16 spell_id)
{
return IsNoDetrimentalSpellAggroSpell(spell_id);
}
bool Perl__IsStackableDOT(uint16 spell_id)
{
return IsStackableDOT(spell_id);
}
bool Perl__IsShortDurationBuff(uint16 spell_id)
{
return IsShortDurationBuff(spell_id);
}
bool Perl__IsTargetRequiredForSpell(uint16 spell_id)
{
return IsTargetRequiredForSpell(spell_id);
}
bool Perl__IsVirusSpell(uint16 spell_id)
{
return IsVirusSpell(spell_id);
}
bool Perl__IsValidSpell(uint16 spell_id)
{
return IsValidSpell(spell_id);
}
bool Perl__IsEffectIgnoredInStacking(int effect_id)
{
return IsEffectIgnoredInStacking(effect_id);
}
bool Perl__IsFocusLimit(int effect_id)
{
return IsFocusLimit(effect_id);
}
bool Perl__IsBardOnlyStackEffect(int effect_id)
{
return IsBardOnlyStackEffect(effect_id);
}
bool Perl__IsCastWhileInvisibleSpell(uint16 spell_id)
{
return IsCastWhileInvisibleSpell(spell_id);
}
bool Perl__IsCastRestrictedSpell(uint16 spell_id)
{
return IsCastRestrictedSpell(spell_id);
}
bool Perl__IsCastNotStandingSpell(uint16 spell_id)
{
return IsCastNotStandingSpell(spell_id);
}
bool Perl__IsInstrumentModifierAppliedToSpellEffect(uint16 spell_id, int effect_id)
{
return IsInstrumentModifierAppliedToSpellEffect(spell_id, effect_id);
}
bool Perl__IsBlankSpellEffect(uint16 spell_id, int effect_index)
{
return IsBlankSpellEffect(spell_id, effect_index);
}
uint16 Perl__GetSpellTriggerSpellID(uint16 spell_id, int effect_id)
{
return GetSpellTriggerSpellID(spell_id, effect_id);
}
uint8 Perl__GetSpellMinimumLevel(uint16 spell_id)
{
return GetSpellMinimumLevel(spell_id);
}
int Perl__GetSpellResistType(uint16 spell_id)
@ -1715,6 +2190,106 @@ int Perl__GetSpellTargetType(uint16 spell_id)
return GetSpellTargetType(spell_id);
}
int Perl__GetSpellPartialMeleeRuneReduction(uint16 spell_id)
{
return GetSpellPartialMeleeRuneReduction(spell_id);
}
int Perl__GetSpellPartialMagicRuneReduction(uint16 spell_id)
{
return GetSpellPartialMagicRuneReduction(spell_id);
}
int Perl__GetSpellPartialMeleeRuneAmount(uint16 spell_id)
{
return GetSpellPartialMeleeRuneAmount(spell_id);
}
int Perl__GetSpellPartialMagicRuneAmount(uint16 spell_id)
{
return GetSpellPartialMagicRuneAmount(spell_id);
}
int Perl__GetSpellViralMinimumSpreadTime(uint16 spell_id)
{
return GetSpellViralMinimumSpreadTime(spell_id);
}
int Perl__GetSpellViralMaximumSpreadTime(uint16 spell_id)
{
return GetSpellViralMaximumSpreadTime(spell_id);
}
int Perl__GetSpellViralSpreadRange(uint16 spell_id)
{
return GetSpellViralSpreadRange(spell_id);
}
int Perl__GetSpellProcLimitTimer(uint16 spell_id, int proc_type)
{
return GetSpellProcLimitTimer(spell_id, proc_type);
}
int Perl__GetSpellEffectDescriptionNumber(uint16 spell_id)
{
return GetSpellEffectDescriptionNumber(spell_id);
}
int Perl__GetSpellFuriousBash(uint16 spell_id)
{
return GetSpellFuriousBash(spell_id);
}
bool Perl__IsSpellUsableInThisZoneType(uint16 spell_id)
{
return IsSpellUsableInThisZoneType(spell_id, zone->GetZoneType());
}
bool Perl__IsSpellUsableInThisZoneType(uint16 spell_id, uint8 zone_type)
{
return IsSpellUsableInThisZoneType(spell_id, zone_type);
}
int Perl__GetSpellEffectIndex(uint16 spell_id, int effect_id)
{
return GetSpellEffectIndex(spell_id, effect_id);
}
int Perl__CalculatePoisonCounters(uint16 spell_id)
{
return CalculatePoisonCounters(spell_id);
}
int Perl__CalculateDiseaseCounters(uint16 spell_id)
{
return CalculateDiseaseCounters(spell_id);
}
int Perl__CalculateCurseCounters(uint16 spell_id)
{
return CalculateCurseCounters(spell_id);
}
int Perl__CalculateCorruptionCounters(uint16 spell_id)
{
return CalculateCorruptionCounters(spell_id);
}
int Perl__CalculateCounters(uint16 spell_id)
{
return CalculateCounters(spell_id);
}
int8 Perl__GetSpellResurrectionSicknessCheck(uint16 spell_id_one, uint16 spell_id_two)
{
return GetSpellResurrectionSicknessCheck(spell_id_one, spell_id_two);
}
int Perl__GetSpellNimbusEffect(uint16 spell_id)
{
return GetSpellNimbusEffect(spell_id);
}
void Perl__FlyMode(GravityBehavior flymode)
{
quest_manager.FlyMode(flymode);
@ -4762,7 +5337,11 @@ void perl_register_quest()
package.add("createbotcount", (int(*)())&Perl__createbotcount);
package.add("createbotcount", (int(*)(uint8))&Perl__createbotcount);
package.add("createBot", &Perl__createBot);
package.add("CalculateCorruptionCounters", &Perl__CalculateCorruptionCounters);
package.add("CalculateCounters", &Perl__CalculateCounters);
package.add("CalculateCurseCounters", &Perl__CalculateCurseCounters);
package.add("CalculateDiseaseCounters", &Perl__CalculateDiseaseCounters);
package.add("CalculatePoisonCounters", &Perl__CalculatePoisonCounters);
package.add("AssignGroupToInstance", &Perl__AssignGroupToInstance);
package.add("AssignRaidToInstance", &Perl__AssignRaidToInstance);
package.add("AssignToInstance", &Perl__AssignToInstance);
@ -4783,8 +5362,23 @@ void perl_register_quest()
package.add("GetInstanceIDsByCharID", &Perl__GetInstanceIDsByCharID);
package.add("GetInstanceVersionByID", &Perl__GetInstanceVersionByID);
package.add("GetInstanceZoneIDByID", &Perl__GetInstanceZoneIDByID);
package.add("GetSpellPartialMagicRuneReduction", &Perl__GetSpellPartialMagicRuneReduction);
package.add("GetSpellPartialMagicRuneAmount", &Perl__GetSpellPartialMagicRuneAmount);
package.add("GetSpellPartialMeleeRuneReduction", &Perl__GetSpellPartialMeleeRuneReduction);
package.add("GetSpellPartialMeleeRuneAmount", &Perl__GetSpellPartialMeleeRuneAmount);
package.add("GetSpellProcLimitTimer", &Perl__GetSpellProcLimitTimer);
package.add("GetSpellResurrectionSicknessCheck", &Perl__GetSpellResurrectionSicknessCheck);
package.add("GetSpellEffectDescriptionNumber", &Perl__GetSpellEffectDescriptionNumber);
package.add("GetSpellEffectIndex", &Perl__GetSpellEffectIndex);
package.add("GetSpellFuriousBash", &Perl__GetSpellFuriousBash);
package.add("GetSpellMinimumLevel", &Perl__GetSpellMinimumLevel);
package.add("GetSpellNimbusEffect", &Perl__GetSpellNimbusEffect);
package.add("GetSpellResistType", &Perl__GetSpellResistType);
package.add("GetSpellTargetType", &Perl__GetSpellTargetType);
package.add("GetSpellTriggerSpellID", &Perl__GetSpellTriggerSpellID);
package.add("GetSpellViralMaximumSpreadTime", &Perl__GetSpellViralMaximumSpreadTime);
package.add("GetSpellViralMinimumSpreadTime", &Perl__GetSpellViralMinimumSpreadTime);
package.add("GetSpellViralSpreadRange", &Perl__GetSpellViralSpreadRange);
package.add("GetTimeSeconds", &Perl__GetTimeSeconds);
package.add("GetZoneBypassExpansionCheck", (int8(*)(uint32))&Perl__GetZoneBypassExpansionCheck);
package.add("GetZoneBypassExpansionCheck", (int8(*)(uint32, int))&Perl__GetZoneBypassExpansionCheck);
@ -4913,19 +5507,105 @@ void perl_register_quest()
package.add("GetZoneUnderworldTeleportIndex", (int(*)(uint32, int))&Perl__GetZoneUnderworldTeleportIndex);
package.add("GetZoneWalkSpeed", (float(*)(uint32))&Perl__GetZoneWalkSpeed);
package.add("GetZoneWalkSpeed", (float(*)(uint32, int))&Perl__GetZoneWalkSpeed);
package.add("set_rule", &Perl__set_rule);
package.add("get_rule", &Perl__get_rule);
package.add("get_data", &Perl__get_data);
package.add("get_data_expires", &Perl__get_data_expires);
package.add("get_data_remaining", &Perl__get_data_remaining);
package.add("set_data", (void(*)(std::string, std::string))&Perl__set_data);
package.add("set_data", (void(*)(std::string, std::string, std::string))&Perl__set_data);
package.add("delete_data", &Perl__delete_data);
package.add("IsAEDurationSpell", &Perl__IsAEDurationSpell);
package.add("IsAENukeSpell", &Perl__IsAENukeSpell);
package.add("IsAERainNukeSpell", &Perl__IsAERainNukeSpell);
package.add("IsAllianceSpell", &Perl__IsAllianceSpell);
package.add("IsBardOnlyStackEffect", &Perl__IsBardOnlyStackEffect);
package.add("IsBardSong", &Perl__IsBardSong);
package.add("IsBeneficialSpell", &Perl__IsBeneficialSpell);
package.add("IsBlankSpellEffect", &Perl__IsBlankSpellEffect);
package.add("IsBlindSpell", &Perl__IsBlindSpell);
package.add("IsBuffSpell", &Perl__IsBuffSpell);
package.add("IsCastOnFadeDurationSpell", &Perl__IsCastOnFadeDurationSpell);
package.add("IsCastNotStandingSpell", &Perl__IsCastNotStandingSpell);
package.add("IsCastRestrictedSpell", &Perl__IsCastRestrictedSpell);
package.add("IsCastTimeReductionSpell", &Perl__IsCastTimeReductionSpell);
package.add("IsCastWhileInvisibleSpell", &Perl__IsCastWhileInvisibleSpell);
package.add("IsCharmSpell", &Perl__IsCharmSpell);
package.add("IsCombatSkill", &Perl__IsCombatSkill);
package.add("IsCompleteHealSpell", &Perl__IsCompleteHealSpell);
package.add("IsCompleteHealDurationSpell", &Perl__IsCompleteHealDurationSpell);
package.add("IsCureSpell", &Perl__IsCureSpell);
package.add("IsDamageSpell", &Perl__IsDamageSpell);
package.add("IsDeathSaveSpell", &Perl__IsDeathSaveSpell);
package.add("IsDebuffSpell", &Perl__IsDebuffSpell);
package.add("IsDetrimentalSpell", &Perl__IsDetrimentalSpell);
package.add("IsDiscipline", &Perl__IsDiscipline);
package.add("IsDisciplineBuff", &Perl__IsDisciplineBuff);
package.add("IsDiseaseCounterSpell", &Perl__IsDiseaseCounterSpell);
package.add("IsDistanceModifierSpell", &Perl__IsDistanceModifierSpell);
package.add("IsEffectIgnoredInStacking", &Perl__IsEffectIgnoredInStacking);
package.add("IsEffectInSpell", &Perl__IsEffectInSpell);
package.add("IsFastHealSpell", &Perl__IsFastHealSpell);
package.add("IsFearSpell", &Perl__IsFearSpell);
package.add("IsFocusLimit", &Perl__IsFocusLimit);
package.add("IsFullDeathSaveSpell", &Perl__IsFullDeathSaveSpell);
package.add("IsGateSpell", &Perl__IsGateSpell);
package.add("IsGroupCompleteHealSpell", &Perl__IsGroupCompleteHealSpell);
package.add("IsGroupHealOverTimeSpell", &Perl__IsGroupHealOverTimeSpell);
package.add("IsGroupOnlySpell", &Perl__IsGroupOnlySpell);
package.add("IsGroupSpell", &Perl__IsGroupSpell);
package.add("IsHarmonySpell", &Perl__IsHarmonySpell);
package.add("IsHasteSpell", &Perl__IsHasteSpell);
package.add("IsHealOverTimeSpell", &Perl__IsHealOverTimeSpell);
package.add("IsHealthSpell", &Perl__IsHealthSpell);
package.add("IsIllusionSpell", &Perl__IsIllusionSpell);
package.add("IsImprovedDamageSpell", &Perl__IsImprovedDamageSpell);
package.add("IsImprovedHealingSpell", &Perl__IsImprovedHealingSpell);
package.add("IsIncreaseDurationSpell", &Perl__IsIncreaseDurationSpell);
package.add("IsIncreaseRangeSpell", &Perl__IsIncreaseRangeSpell);
package.add("IsInstrumentModifierAppliedToSpellEffect", &Perl__IsInstrumentModifierAppliedToSpellEffect);
package.add("IsInvisibleSpell", &Perl__IsInvisibleSpell);
package.add("IsInvulnerabilitySpell", &Perl__IsInvulnerabilitySpell);
package.add("IsLDoNObjectSpell", &Perl__IsLDoNObjectSpell);
package.add("IsLifetapSpell", &Perl__IsLifetapSpell);
package.add("IsMagicRuneSpell", &Perl__IsMagicRuneSpell);
package.add("IsManaCostReductionSpell", &Perl__IsManaCostReductionSpell);
package.add("IsManaTapSpell", &Perl__IsManaTapSpell);
package.add("IsMesmerizeSpell", &Perl__IsMesmerizeSpell);
package.add("IsNoDetrimentalSpellAggroSpell", &Perl__IsNoDetrimentalSpellAggroSpell);
package.add("IsPartialDeathSaveSpell", &Perl__IsPartialDeathSaveSpell);
package.add("IsPartialResistableSpell", &Perl__IsPartialResistableSpell);
package.add("IsPBAENukeSpell", &Perl__IsPBAENukeSpell);
package.add("IsPercentalHealSpell", &Perl__IsPercentalHealSpell);
package.add("IsPersistDeathSpell", &Perl__IsPersistDeathSpell);
package.add("IsPetSpell", &Perl__IsPetSpell);
package.add("IsPoisonCounterSpell", &Perl__IsPoisonCounterSpell);
package.add("IsPulsingBardSong", &Perl__IsPulsingBardSong);
package.add("IsPureNukeSpell", &Perl__IsPureNukeSpell);
package.add("IsRaining", &Perl__IsRaining);
package.add("IsSnowing", &Perl__IsSnowing);
package.add("IsRegularGroupHealSpell", &Perl__IsRegularGroupHealSpell);
package.add("IsRegularSingleTargetHealSpell", &Perl__IsRegularSingleTargetHealSpell);
package.add("IsResistableSpell", &Perl__IsResistableSpell);
package.add("IsResistDebuffSpell", &Perl__IsResistDebuffSpell);
package.add("IsRestAllowedSpell", &Perl__IsRestAllowedSpell);
package.add("IsResurrectionEffects", &Perl__IsResurrectionEffects);
package.add("IsRuneSpell", &Perl__IsRuneSpell);
package.add("IsRunning", &Perl__IsRunning);
package.add("IsSacrificeSpell", &Perl__IsSacrificeSpell);
package.add("IsSelfConversionSpell", &Perl__IsSelfConversionSpell);
package.add("IsShadowStepSpell", &Perl__IsShadowStepSpell);
package.add("IsShortDurationBuff", &Perl__IsShortDurationBuff);
package.add("IsSnowing", &Perl__IsSnowing);
package.add("IsSpellUsableInThisZoneType", (bool(*)(uint16))&Perl__IsSpellUsableInThisZoneType);
package.add("IsSpellUsableInThisZoneType", (bool(*)(uint16, uint8))&Perl__IsSpellUsableInThisZoneType);
package.add("IsStackableDOT", &Perl__IsStackableDOT);
package.add("IsStunSpell", &Perl__IsStunSpell);
package.add("IsSuccorSpell", &Perl__IsSuccorSpell);
package.add("IsSummonItemSpell", &Perl__IsSummonItemSpell);
package.add("IsSummonPCSpell", &Perl__IsSummonPCSpell);
package.add("IsSummonPetSpell", &Perl__IsSummonPetSpell);
package.add("IsSummonSkeletonSpell", &Perl__IsSummonSkeletonSpell);
package.add("IsSummonSpell", &Perl__IsSummonSpell);
package.add("IsSuspendableSpell", &Perl__IsSuspendableSpell);
package.add("IsTargetableAESpell", &Perl__IsTargetableAESpell);
package.add("IsTargetRequiredForSpell", &Perl__IsTargetRequiredForSpell);
package.add("IsTeleportSpell", &Perl__IsTeleportSpell);
package.add("IsTranslocateSpell", &Perl__IsTranslocateSpell);
package.add("IsVeryFastHealSpell", &Perl__IsVeryFastHealSpell);
package.add("IsVirusSpell", &Perl__IsVirusSpell);
package.add("IsValidSpell", &Perl__IsValidSpell);
package.add("LearnRecipe", &Perl__LearnRecipe);
package.add("MerchantCountItem", &Perl__MerchantCountItem);
package.add("MerchantSetItem", (void(*)(uint32, uint32))&Perl__MerchantSetItem);
@ -5199,6 +5879,7 @@ void perl_register_quest()
package.add("worldwideupdateactivity", (void(*)(uint32, int, int, uint8, uint8))&Perl__worldwideupdateactivity);
package.add("debug", (void(*)(const char*))&Perl__debug);
package.add("debug", (void(*)(const char*, int))&Perl__debug);
package.add("delete_data", &Perl__delete_data);
package.add("delglobal", &Perl__delglobal);
package.add("depop", (void(*)())&Perl__depop);
package.add("depop", (void(*)(int))&Perl__depop);
@ -5253,6 +5934,9 @@ void perl_register_quest()
package.add("getconsiderlevelname", &Perl__getconsiderlevelname);
package.add("gethexcolorcode", &Perl__gethexcolorcode);
package.add("getcurrencyid", &Perl__getcurrencyid);
package.add("get_data", &Perl__get_data);
package.add("get_data_expires", &Perl__get_data_expires);
package.add("get_data_remaining", &Perl__get_data_remaining);
package.add("get_dz_task_id", &Perl__get_dz_task_id);
package.add("getexpmodifierbycharid", (double(*)(uint32, uint32))&Perl__getexpmodifierbycharid);
package.add("getexpmodifierbycharid", (double(*)(uint32, uint32, int16))&Perl__getexpmodifierbycharid);
@ -5270,6 +5954,7 @@ void perl_register_quest()
package.add("getlanguagename", &Perl__getlanguagename);
package.add("getldonthemename", &Perl__getldonthemename);
package.add("getnpcnamebyid", &Perl__getnpcnamebyid);
package.add("get_rule", &Perl__get_rule);
package.add("get_spawn_condition", (int(*)(const char*, uint16))&Perl__get_spawn_condition);
package.add("get_spawn_condition", (int(*)(const char*, uint32, uint16))&Perl__get_spawn_condition);
package.add("getcharnamebyid", &Perl__getcharnamebyid);
@ -5424,12 +6109,15 @@ void perl_register_quest()
package.add("send_channel_message", (void(*)(Client*, const char*, uint8, uint32, uint8, uint8, const char*))&Perl__send_channel_message);
package.add("setaaexpmodifierbycharid", (void(*)(uint32, uint32, double))&Perl__setaaexpmodifierbycharid);
package.add("setaaexpmodifierbycharid", (void(*)(uint32, uint32, double, int16))&Perl__setaaexpmodifierbycharid);
package.add("set_data", (void(*)(std::string, std::string))&Perl__set_data);
package.add("set_data", (void(*)(std::string, std::string, std::string))&Perl__set_data);
package.add("set_proximity", (void(*)(float, float, float, float))&Perl__set_proximity);
package.add("set_proximity", (void(*)(float, float, float, float, float, float))&Perl__set_proximity);
package.add("set_proximity", (void(*)(float, float, float, float, float, float, bool))&Perl__set_proximity);
package.add("set_proximity_range", (void(*)(float, float))&Perl__set_proximity_range);
package.add("set_proximity_range", (void(*)(float, float, float))&Perl__set_proximity_range);
package.add("set_proximity_range", (void(*)(float, float, float, bool))&Perl__set_proximity_range);
package.add("set_rule", &Perl__set_rule);
package.add("set_zone_flag", &Perl__set_zone_flag);
package.add("setallskill", &Perl__setallskill);
package.add("setanim", &Perl__setanim);

View File

@ -21,7 +21,7 @@ void command_castspell(Client *c, const Seperator *sep)
else {
uint16 spell_id = Strings::ToUnsignedInt(sep->arg[1]);
if (CastRestrictedSpell(spell_id) && c->Admin() < commandCastSpecials) {
if (IsCastRestrictedSpell(spell_id) && c->Admin() < commandCastSpecials) {
c->Message(Chat::Red, "Unable to cast spell.");
}
else if (spell_id >= SPDAT_RECORDS) {

View File

@ -4416,6 +4416,607 @@ void lua_send_channel_message(Lua_Client from, const char* to, uint8 channel_num
quest_manager.SendChannelMessage(from, to, channel_number, guild_id, language_id, language_skill, message);
}
uint8 lua_get_spell_level(uint16 spell_id, uint8 class_id)
{
const auto spell_level = GetSpellLevel(spell_id, class_id);
return spell_level > RuleI(Character, MaxLevel) ? UINT8_MAX : spell_level;
}
bool lua_is_effect_in_spell(uint16 spell_id, int effect_id)
{
return IsEffectInSpell(spell_id, effect_id);
}
bool lua_is_beneficial_spell(uint16 spell_id)
{
return IsBeneficialSpell(spell_id);
}
bool lua_is_detrimental_spell(uint16 spell_id)
{
return IsDetrimentalSpell(spell_id);
}
bool lua_is_targetable_ae_spell(uint16 spell_id)
{
return IsTargetableAESpell(spell_id);
}
bool lua_is_sacrifice_spell(uint16 spell_id)
{
return IsSacrificeSpell(spell_id);
}
bool lua_is_lifetap_spell(uint16 spell_id)
{
return IsLifetapSpell(spell_id);
}
bool lua_is_mesmerize_spell(uint16 spell_id)
{
return IsMesmerizeSpell(spell_id);
}
bool lua_is_stun_spell(uint16 spell_id)
{
return IsStunSpell(spell_id);
}
bool lua_is_summon_spell(uint16 spell_id)
{
return IsSummonSpell(spell_id);
}
bool lua_is_damage_spell(uint16 spell_id)
{
return IsDamageSpell(spell_id);
}
bool lua_is_fear_spell(uint16 spell_id)
{
return IsFearSpell(spell_id);
}
bool lua_is_cure_spell(uint16 spell_id)
{
return IsCureSpell(spell_id);
}
bool lua_is_haste_spell(uint16 spell_id)
{
return IsHasteSpell(spell_id);
}
bool lua_is_harmony_spell(uint16 spell_id)
{
return IsHarmonySpell(spell_id);
}
bool lua_is_percental_heal_spell(uint16 spell_id)
{
return IsPercentalHealSpell(spell_id);
}
bool lua_is_group_only_spell(uint16 spell_id)
{
return IsGroupOnlySpell(spell_id);
}
bool lua_is_invisible_spell(uint16 spell_id)
{
return IsInvisibleSpell(spell_id);
}
bool lua_is_invulnerability_spell(uint16 spell_id)
{
return IsInvulnerabilitySpell(spell_id);
}
bool lua_is_complete_heal_duration_spell(uint16 spell_id)
{
return IsCompleteHealDurationSpell(spell_id);
}
bool lua_is_poison_counter_spell(uint16 spell_id)
{
return IsPoisonCounterSpell(spell_id);
}
bool lua_is_disease_counter_spell(uint16 spell_id)
{
return IsDiseaseCounterSpell(spell_id);
}
bool lua_is_summon_item_spell(uint16 spell_id)
{
return IsSummonItemSpell(spell_id);
}
bool lua_is_summon_skeleton_spell(uint16 spell_id)
{
return IsSummonSkeletonSpell(spell_id);
}
bool lua_is_summon_pet_spell(uint16 spell_id)
{
return IsSummonPetSpell(spell_id);
}
bool lua_is_pet_spell(uint16 spell_id)
{
return IsPetSpell(spell_id);
}
bool lua_is_summon_pc_spell(uint16 spell_id)
{
return IsSummonPCSpell(spell_id);
}
bool lua_is_charm_spell(uint16 spell_id)
{
return IsCharmSpell(spell_id);
}
bool lua_is_blind_spell(uint16 spell_id)
{
return IsBlindSpell(spell_id);
}
bool lua_is_health_spell(uint16 spell_id)
{
return IsHealthSpell(spell_id);
}
bool lua_is_cast_time_reduction_spell(uint16 spell_id)
{
return IsCastTimeReductionSpell(spell_id);
}
bool lua_is_increase_duration_spell(uint16 spell_id)
{
return IsIncreaseDurationSpell(spell_id);
}
bool lua_is_mana_cost_reduction_spell(uint16 spell_id)
{
return IsManaCostReductionSpell(spell_id);
}
bool lua_is_increase_range_spell(uint16 spell_id)
{
return IsIncreaseRangeSpell(spell_id);
}
bool lua_is_improved_healing_spell(uint16 spell_id)
{
return IsImprovedHealingSpell(spell_id);
}
bool lua_is_improved_damage_spell(uint16 spell_id)
{
return IsImprovedDamageSpell(spell_id);
}
bool lua_is_ae_duration_spell(uint16 spell_id)
{
return IsAEDurationSpell(spell_id);
}
bool lua_is_pure_nuke_spell(uint16 spell_id)
{
return IsPureNukeSpell(spell_id);
}
bool lua_is_ae_nuke_spell(uint16 spell_id)
{
return IsAENukeSpell(spell_id);
}
bool lua_is_pbae_nuke_spell(uint16 spell_id)
{
return IsPBAENukeSpell(spell_id);
}
bool lua_is_ae_rain_nuke_spell(uint16 spell_id)
{
return IsAERainNukeSpell(spell_id);
}
bool lua_is_partial_resistable_spell(uint16 spell_id)
{
return IsPartialResistableSpell(spell_id);
}
bool lua_is_resistable_spell(uint16 spell_id)
{
return IsResistableSpell(spell_id);
}
bool lua_is_group_spell(uint16 spell_id)
{
return IsGroupSpell(spell_id);
}
bool lua_is_tgb_compatible_spell(uint16 spell_id)
{
return IsTGBCompatibleSpell(spell_id);
}
bool lua_is_bard_song(uint16 spell_id)
{
return IsBardSong(spell_id);
}
bool lua_is_pulsing_bard_song(uint16 spell_id)
{
return IsPulsingBardSong(spell_id);
}
bool lua_is_discipline_buff(uint16 spell_id)
{
return IsDisciplineBuff(spell_id);
}
bool lua_is_discipline(uint16 spell_id)
{
return IsDiscipline(spell_id);
}
bool lua_is_combat_skill(uint16 spell_id)
{
return IsCombatSkill(spell_id);
}
bool lua_is_resurrection_effects(uint16 spell_id)
{
return IsResurrectionEffects(spell_id);
}
bool lua_is_rune_spell(uint16 spell_id)
{
return IsRuneSpell(spell_id);
}
bool lua_is_magic_rune_spell(uint16 spell_id)
{
return IsMagicRuneSpell(spell_id);
}
bool lua_is_mana_tap_spell(uint16 spell_id)
{
return IsManaTapSpell(spell_id);
}
bool lua_is_alliance_spell(uint16 spell_id)
{
return IsAllianceSpell(spell_id);
}
bool lua_is_death_save_spell(uint16 spell_id)
{
return IsDeathSaveSpell(spell_id);
}
bool lua_is_partial_death_save_spell(uint16 spell_id)
{
return IsPartialDeathSaveSpell(spell_id);
}
bool lua_is_full_death_save_spell(uint16 spell_id)
{
return IsFullDeathSaveSpell(spell_id);
}
bool lua_is_shadow_step_spell(uint16 spell_id)
{
return IsShadowStepSpell(spell_id);
}
bool lua_is_succor_spell(uint16 spell_id)
{
return IsSuccorSpell(spell_id);
}
bool lua_is_teleport_spell(uint16 spell_id)
{
return IsTeleportSpell(spell_id);
}
bool lua_is_translocate_spell(uint16 spell_id)
{
return IsTranslocateSpell(spell_id);
}
bool lua_is_gate_spell(uint16 spell_id)
{
return IsGateSpell(spell_id);
}
bool lua_is_illusion_spell(uint16 spell_id)
{
return IsIllusionSpell(spell_id);
}
bool lua_is_ldon_object_spell(uint16 spell_id)
{
return IsLDoNObjectSpell(spell_id);
}
bool lua_is_heal_over_time_spell(uint16 spell_id)
{
return IsHealOverTimeSpell(spell_id);
}
bool lua_is_complete_heal_spell(uint16 spell_id)
{
return IsCompleteHealSpell(spell_id);
}
bool lua_is_fast_heal_spell(uint16 spell_id)
{
return IsFastHealSpell(spell_id);
}
bool lua_is_very_fast_heal_spell(uint16 spell_id)
{
return IsVeryFastHealSpell(spell_id);
}
bool lua_is_regular_single_target_heal_spell(uint16 spell_id)
{
return IsRegularSingleTargetHealSpell(spell_id);
}
bool lua_is_regular_group_heal_spell(uint16 spell_id)
{
return IsRegularGroupHealSpell(spell_id);
}
bool lua_is_group_complete_heal_spell(uint16 spell_id)
{
return IsGroupCompleteHealSpell(spell_id);
}
bool lua_is_group_heal_over_time_spell(uint16 spell_id)
{
return IsGroupHealOverTimeSpell(spell_id);
}
bool lua_is_debuff_spell(uint16 spell_id)
{
return IsDebuffSpell(spell_id);
}
bool lua_is_resist_debuff_spell(uint16 spell_id)
{
return IsResistDebuffSpell(spell_id);
}
bool lua_is_self_conversion_spell(uint16 spell_id)
{
return IsSelfConversionSpell(spell_id);
}
bool lua_is_buff_spell(uint16 spell_id)
{
return IsBuffSpell(spell_id);
}
bool lua_is_persist_death_spell(uint16 spell_id)
{
return IsPersistDeathSpell(spell_id);
}
bool lua_is_suspendable_spell(uint16 spell_id)
{
return IsSuspendableSpell(spell_id);
}
bool lua_is_cast_on_fade_duration_spell(uint16 spell_id)
{
return IsCastOnFadeDurationSpell(spell_id);
}
bool lua_is_distance_modifier_spell(uint16 spell_id)
{
return IsDistanceModifierSpell(spell_id);
}
bool lua_is_rest_allowed_spell(uint16 spell_id)
{
return IsRestAllowedSpell(spell_id);
}
bool lua_is_no_detrimental_spell_aggro_spell(uint16 spell_id)
{
return IsNoDetrimentalSpellAggroSpell(spell_id);
}
bool lua_is_stackable_dot(uint16 spell_id)
{
return IsStackableDOT(spell_id);
}
bool lua_is_short_duration_buff(uint16 spell_id)
{
return IsShortDurationBuff(spell_id);
}
bool lua_is_target_required_for_spell(uint16 spell_id)
{
return IsTargetRequiredForSpell(spell_id);
}
bool lua_is_virus_spell(uint16 spell_id)
{
return IsVirusSpell(spell_id);
}
bool lua_is_valid_spell(uint16 spell_id)
{
return IsValidSpell(spell_id);
}
bool lua_is_effect_ignored_in_stacking(int effect_id)
{
return IsEffectIgnoredInStacking(effect_id);
}
bool lua_is_focus_limit(int effect_id)
{
return IsFocusLimit(effect_id);
}
bool lua_is_bard_only_stack_effect(int effect_id)
{
return IsBardOnlyStackEffect(effect_id);
}
bool lua_is_cast_while_invisible_spell(uint16 spell_id)
{
return IsCastWhileInvisibleSpell(spell_id);
}
bool lua_is_cast_restricted_spell(uint16 spell_id)
{
return IsCastRestrictedSpell(spell_id);
}
bool lua_is_cast_not_standing_spell(uint16 spell_id)
{
return IsCastNotStandingSpell(spell_id);
}
bool lua_is_instrument_modifier_applied_to_spell_effect(uint16 spell_id, int effect_id)
{
return IsInstrumentModifierAppliedToSpellEffect(spell_id, effect_id);
}
bool lua_is_blank_spell_effect(uint16 spell_id, int effect_index)
{
return IsBlankSpellEffect(spell_id, effect_index);
}
uint16 lua_get_spell_trigger_spell_id(uint16 spell_id, int effect_id)
{
return GetSpellTriggerSpellID(spell_id, effect_id);
}
uint8 lua_get_spell_minimum_level(uint16 spell_id)
{
return GetSpellMinimumLevel(spell_id);
}
int lua_get_spell_resist_type(uint16 spell_id)
{
return GetSpellResistType(spell_id);
}
int lua_get_spell_target_type(uint16 spell_id)
{
return GetSpellTargetType(spell_id);
}
int lua_get_spell_partial_melee_rune_reduction(uint16 spell_id)
{
return GetSpellPartialMeleeRuneReduction(spell_id);
}
int lua_get_spell_partial_magic_rune_reduction(uint16 spell_id)
{
return GetSpellPartialMagicRuneReduction(spell_id);
}
int lua_get_spell_partial_melee_rune_amount(uint16 spell_id)
{
return GetSpellPartialMeleeRuneAmount(spell_id);
}
int lua_get_spell_partial_magic_rune_amount(uint16 spell_id)
{
return GetSpellPartialMagicRuneAmount(spell_id);
}
int lua_get_spell_viral_minimum_spread_time(uint16 spell_id)
{
return GetSpellViralMinimumSpreadTime(spell_id);
}
int lua_get_spell_viral_maximum_spread_time(uint16 spell_id)
{
return GetSpellViralMaximumSpreadTime(spell_id);
}
int lua_get_spell_viral_spread_range(uint16 spell_id)
{
return GetSpellViralSpreadRange(spell_id);
}
int lua_get_spell_proc_limit_timer(uint16 spell_id, int proc_type)
{
return GetSpellProcLimitTimer(spell_id, proc_type);
}
int lua_get_spell_effect_description_number(uint16 spell_id)
{
return GetSpellEffectDescriptionNumber(spell_id);
}
int lua_get_spell_furious_bash(uint16 spell_id)
{
return GetSpellFuriousBash(spell_id);
}
bool lua_is_spell_usable_in_this_zone_type(uint16 spell_id)
{
return IsSpellUsableInThisZoneType(spell_id, zone->GetZoneType());
}
bool lua_is_spell_usable_in_this_zone_type(uint16 spell_id, uint8 zone_type)
{
return IsSpellUsableInThisZoneType(spell_id, zone_type);
}
int lua_get_spell_effect_index(uint16 spell_id, int effect_id)
{
return GetSpellEffectIndex(spell_id, effect_id);
}
int lua_calculate_poison_counters(uint16 spell_id)
{
return CalculatePoisonCounters(spell_id);
}
int lua_calculate_disease_counters(uint16 spell_id)
{
return CalculateDiseaseCounters(spell_id);
}
int lua_calculate_curse_counters(uint16 spell_id)
{
return CalculateCurseCounters(spell_id);
}
int lua_calculate_corruption_counters(uint16 spell_id)
{
return CalculateCorruptionCounters(spell_id);
}
int lua_calculate_counters(uint16 spell_id)
{
return CalculateCounters(spell_id);
}
int8 lua_get_spell_resurrection_sickness_check(uint16 spell_id_one, uint16 spell_id_two)
{
return GetSpellResurrectionSicknessCheck(spell_id_one, spell_id_two);
}
int lua_get_spell_nimbus_effect(uint16 spell_id)
{
return GetSpellNimbusEffect(spell_id);
}
#define LuaCreateNPCParse(name, c_type, default_value) do { \
cur = table[#name]; \
if(luabind::type(cur) != LUA_TNIL) { \
@ -5069,6 +5670,126 @@ luabind::scope lua_register_general() {
luabind::def("send_channel_message", (void(*)(uint8,uint32,uint8,uint8,const char*))&lua_send_channel_message),
luabind::def("send_channel_message", (void(*)(Lua_Client,uint8,uint32,uint8,uint8,const char*))&lua_send_channel_message),
luabind::def("send_channel_message", (void(*)(Lua_Client,const char*,uint8,uint32,uint8,uint8,const char*))&lua_send_channel_message),
luabind::def("get_spell_level", &lua_get_spell_level),
luabind::def("is_effect_in_spell", &lua_is_effect_in_spell),
luabind::def("is_beneficial_spell", &lua_is_beneficial_spell),
luabind::def("is_detrimental_spell", &lua_is_detrimental_spell),
luabind::def("is_targetable_ae_spell", &lua_is_targetable_ae_spell),
luabind::def("is_sacrifice_spell", &lua_is_sacrifice_spell),
luabind::def("is_lifetap_spell", &lua_is_lifetap_spell),
luabind::def("is_mesmerize_spell", &lua_is_mesmerize_spell),
luabind::def("is_stun_spell", &lua_is_stun_spell),
luabind::def("is_summon_spell", &lua_is_summon_spell),
luabind::def("is_damage_spell", &lua_is_damage_spell),
luabind::def("is_fear_spell", &lua_is_fear_spell),
luabind::def("is_cure_spell", &lua_is_cure_spell),
luabind::def("is_haste_spell", &lua_is_haste_spell),
luabind::def("is_harmony_spell", &lua_is_harmony_spell),
luabind::def("is_percental_heal_spell", &lua_is_percental_heal_spell),
luabind::def("is_group_only_spell", &lua_is_group_only_spell),
luabind::def("is_invisible_spell", &lua_is_invisible_spell),
luabind::def("is_invulnerability_spell", &lua_is_invulnerability_spell),
luabind::def("is_complete_heal_duration_spell", &lua_is_complete_heal_duration_spell),
luabind::def("is_poison_counter_spell", &lua_is_poison_counter_spell),
luabind::def("is_disease_counter_spell", &lua_is_disease_counter_spell),
luabind::def("is_summon_item_spell", &lua_is_summon_item_spell),
luabind::def("is_summon_skeleton_spell", &lua_is_summon_skeleton_spell),
luabind::def("is_summon_pet_spell", &lua_is_summon_pet_spell),
luabind::def("is_pet_spell", &lua_is_pet_spell),
luabind::def("is_summon_pc_spell", &lua_is_summon_pc_spell),
luabind::def("is_charm_spell", &lua_is_charm_spell),
luabind::def("is_blind_spell", &lua_is_blind_spell),
luabind::def("is_health_spell", &lua_is_health_spell),
luabind::def("is_cast_time_reduction_spell", &lua_is_cast_time_reduction_spell),
luabind::def("is_increase_duration_spell", &lua_is_increase_duration_spell),
luabind::def("is_mana_cost_reduction_spell", &lua_is_mana_cost_reduction_spell),
luabind::def("is_increase_range_spell", &lua_is_increase_range_spell),
luabind::def("is_improved_healing_spell", &lua_is_improved_healing_spell),
luabind::def("is_improved_damage_spell", &lua_is_improved_damage_spell),
luabind::def("is_ae_duration_spell", &lua_is_ae_duration_spell),
luabind::def("is_pure_nuke_spell", &lua_is_pure_nuke_spell),
luabind::def("is_ae_nuke_spell", &lua_is_ae_nuke_spell),
luabind::def("is_pbae_nuke_spell", &lua_is_pbae_nuke_spell),
luabind::def("is_ae_rain_nuke_spell", &lua_is_ae_rain_nuke_spell),
luabind::def("is_partial_resistable_spell", &lua_is_partial_resistable_spell),
luabind::def("is_resistable_spell", &lua_is_resistable_spell),
luabind::def("is_group_spell", &lua_is_group_spell),
luabind::def("is_tgb_compatible_spell", &lua_is_tgb_compatible_spell),
luabind::def("is_bard_song", &lua_is_bard_song),
luabind::def("is_pulsing_bard_song", &lua_is_pulsing_bard_song),
luabind::def("is_discipline_buff", &lua_is_discipline_buff),
luabind::def("is_discipline", &lua_is_discipline),
luabind::def("is_combat_skill", &lua_is_combat_skill),
luabind::def("is_resurrection_effects", &lua_is_resurrection_effects),
luabind::def("is_rune_spell", &lua_is_rune_spell),
luabind::def("is_magic_rune_spell", &lua_is_magic_rune_spell),
luabind::def("is_mana_tap_spell", &lua_is_mana_tap_spell),
luabind::def("is_alliance_spell", &lua_is_alliance_spell),
luabind::def("is_death_save_spell", &lua_is_death_save_spell),
luabind::def("is_partial_death_save_spell", &lua_is_partial_death_save_spell),
luabind::def("is_full_death_save_spell", &lua_is_full_death_save_spell),
luabind::def("is_shadow_step_spell", &lua_is_shadow_step_spell),
luabind::def("is_succor_spell", &lua_is_succor_spell),
luabind::def("is_teleport_spell", &lua_is_teleport_spell),
luabind::def("is_translocate_spell", &lua_is_translocate_spell),
luabind::def("is_gate_spell", &lua_is_gate_spell),
luabind::def("is_illusion_spell", &lua_is_illusion_spell),
luabind::def("is_ldon_object_spell", &lua_is_ldon_object_spell),
luabind::def("is_heal_over_time_spell", &lua_is_heal_over_time_spell),
luabind::def("is_complete_heal_spell", &lua_is_complete_heal_spell),
luabind::def("is_fast_heal_spell", &lua_is_fast_heal_spell),
luabind::def("is_very_fast_heal_spell", &lua_is_very_fast_heal_spell),
luabind::def("is_regular_single_target_heal_spell", &lua_is_regular_single_target_heal_spell),
luabind::def("is_regular_group_heal_spell", &lua_is_regular_group_heal_spell),
luabind::def("is_group_complete_heal_spell", &lua_is_group_complete_heal_spell),
luabind::def("is_group_heal_over_time_spell", &lua_is_group_heal_over_time_spell),
luabind::def("is_debuff_spell", &lua_is_debuff_spell),
luabind::def("is_resist_debuff_spell", &lua_is_resist_debuff_spell),
luabind::def("is_self_conversion_spell", &lua_is_self_conversion_spell),
luabind::def("is_buff_spell", &lua_is_buff_spell),
luabind::def("is_persist_death_spell", &lua_is_persist_death_spell),
luabind::def("is_suspendable_spell", &lua_is_suspendable_spell),
luabind::def("is_cast_on_fade_duration_spell", &lua_is_cast_on_fade_duration_spell),
luabind::def("is_distance_modifier_spell", &lua_is_distance_modifier_spell),
luabind::def("is_rest_allowed_spell", &lua_is_rest_allowed_spell),
luabind::def("is_no_detrimental_spell_aggro_spell", &lua_is_no_detrimental_spell_aggro_spell),
luabind::def("is_stackable_dot", &lua_is_stackable_dot),
luabind::def("is_short_duration_buff", &lua_is_short_duration_buff),
luabind::def("is_target_required_for_spell", &lua_is_target_required_for_spell),
luabind::def("is_virus_spell", &lua_is_virus_spell),
luabind::def("is_valid_spell", &lua_is_valid_spell),
luabind::def("is_effect_ignored_in_stacking", &lua_is_effect_ignored_in_stacking),
luabind::def("is_focus_limit", &lua_is_focus_limit),
luabind::def("is_bard_only_stack_effect", &lua_is_bard_only_stack_effect),
luabind::def("is_cast_while_invisible_spell", &lua_is_cast_while_invisible_spell),
luabind::def("is_cast_restricted_spell", &lua_is_cast_restricted_spell),
luabind::def("is_cast_not_standing_spell", &lua_is_cast_not_standing_spell),
luabind::def("is_instrument_modifier_applied_to_spell_effect", &lua_is_instrument_modifier_applied_to_spell_effect),
luabind::def("is_blank_spell_effect", &lua_is_blank_spell_effect),
luabind::def("get_spell_trigger_spell_id", &lua_get_spell_trigger_spell_id),
luabind::def("get_spell_minimum_level", &lua_get_spell_minimum_level),
luabind::def("get_spell_resist_type", &lua_get_spell_resist_type),
luabind::def("get_spell_target_type", &lua_get_spell_target_type),
luabind::def("get_spell_partial_melee_rune_reduction", &lua_get_spell_partial_melee_rune_reduction),
luabind::def("get_spell_partial_magic_rune_reduction", &lua_get_spell_partial_magic_rune_reduction),
luabind::def("get_spell_partial_melee_rune_amount", &lua_get_spell_partial_melee_rune_amount),
luabind::def("get_spell_partial_magic_rune_amount", &lua_get_spell_partial_magic_rune_amount),
luabind::def("get_spell_viral_minimum_spread_time", &lua_get_spell_viral_minimum_spread_time),
luabind::def("get_spell_viral_maximum_spread_time", &lua_get_spell_viral_maximum_spread_time),
luabind::def("get_spell_viral_spread_range", &lua_get_spell_viral_spread_range),
luabind::def("get_spell_proc_limit_timer", &lua_get_spell_proc_limit_timer),
luabind::def("get_spell_effect_description_number", &lua_get_spell_effect_description_number),
luabind::def("get_spell_furious_bash", &lua_get_spell_furious_bash),
luabind::def("is_spell_usable_in_this_zone_type", (bool(*)(uint16))&lua_is_spell_usable_in_this_zone_type),
luabind::def("is_spell_usable_in_this_zone_type", (bool(*)(uint16,uint8))&lua_is_spell_usable_in_this_zone_type),
luabind::def("get_spell_effect_index", &lua_get_spell_effect_index),
luabind::def("calculate_poison_counters", &lua_calculate_poison_counters),
luabind::def("calculate_disease_counters", &lua_calculate_disease_counters),
luabind::def("calculate_curse_counters", &lua_calculate_curse_counters),
luabind::def("calculate_corruption_counters", &lua_calculate_corruption_counters),
luabind::def("calculate_counters", &lua_calculate_counters),
luabind::def("get_spell_resurrection_sickness_check", &lua_get_spell_resurrection_sickness_check),
luabind::def("get_spell_nimbus_effect", &lua_get_spell_nimbus_effect),
/*
Cross Zone
*/

View File

@ -770,7 +770,7 @@ void Merc::CalcRestState() {
for (unsigned int j = 0; j < buff_count; j++) {
if(IsValidSpell(buffs[j].spellid)) {
if(IsDetrimentalSpell(buffs[j].spellid) && (buffs[j].ticsremaining > 0))
if(!DetrimentalSpellAllowsRest(buffs[j].spellid))
if(!IsRestAllowedSpell(buffs[j].spellid))
return;
}
}

View File

@ -4395,7 +4395,7 @@ int Mob::CountDispellableBuffs()
if(buffs[x].counters)
continue;
if(spells[buffs[x].spellid].good_effect == 0)
if(spells[buffs[x].spellid].good_effect == DETRIMENTAL_EFFECT)
continue;
if(IsValidSpell(buffs[x].spellid) && spells[buffs[x].spellid].buff_duration_formula != DF_Permanent) {

View File

@ -653,7 +653,7 @@ void Client::AI_SpellCast()
slot_to_use = static_cast<EQ::spells::CastingSlot>(slots[idx]);
}
if(IsMezSpell(spell_to_cast) || IsFearSpell(spell_to_cast))
if(IsMesmerizeSpell(spell_to_cast) || IsFearSpell(spell_to_cast))
{
Mob *tar = entity_list.GetTargetForMez(this);
if(!tar)

View File

@ -1186,7 +1186,7 @@ bool NPC::DatabaseCastAccepted(int spell_id) {
break;
}
default:
if(spells[spell_id].good_effect == 1 && !(spells[spell_id].buff_duration == 0 && GetHPRatio() == 100) && !IsEngaged())
if(spells[spell_id].good_effect == BENEFICIAL_EFFECT && !(spells[spell_id].buff_duration == 0 && GetHPRatio() == 100) && !IsEngaged())
return true;
return false;
}

View File

@ -538,13 +538,13 @@ void NPC::SetPetState(SpellBuff_Struct *pet_buffs, uint32 *items) {
case SE_WeaponProc:
// We need to reapply buff based procs
// We need to do this here so suspended pets also regain their procs.
AddProcToWeapon(GetProcID(buffs[j1].spellid,x1), false, 100+spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, buffs[j1].casterlevel, GetProcLimitTimer(buffs[j1].spellid, ProcType::MELEE_PROC));
AddProcToWeapon(GetProcID(buffs[j1].spellid,x1), false, 100+spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, buffs[j1].casterlevel, GetSpellProcLimitTimer(buffs[j1].spellid, ProcType::MELEE_PROC));
break;
case SE_DefensiveProc:
AddDefensiveProc(GetProcID(buffs[j1].spellid, x1), 100 + spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, GetProcLimitTimer(buffs[j1].spellid, ProcType::DEFENSIVE_PROC));
AddDefensiveProc(GetProcID(buffs[j1].spellid, x1), 100 + spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, GetSpellProcLimitTimer(buffs[j1].spellid, ProcType::DEFENSIVE_PROC));
break;
case SE_RangedProc:
AddRangedProc(GetProcID(buffs[j1].spellid, x1), 100 + spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, GetProcLimitTimer(buffs[j1].spellid, ProcType::RANGED_PROC));
AddRangedProc(GetProcID(buffs[j1].spellid, x1), 100 + spells[buffs[j1].spellid].limit_value[x1], buffs[j1].spellid, GetSpellProcLimitTimer(buffs[j1].spellid, ProcType::RANGED_PROC));
break;
case SE_Charm:
case SE_Rune:

View File

@ -241,7 +241,7 @@ void Mob::DoSpecialAttackDamage(Mob *who, EQ::skills::SkillType skill, int32 bas
hate += item->GetItem()->AC;
}
const EQ::ItemData *itm = item->GetItem();
auto fbash = GetFuriousBash(itm->Focus.Effect);
auto fbash = GetSpellFuriousBash(itm->Focus.Effect);
hate = hate * (100 + fbash) / 100;
if (fbash)
MessageString(Chat::FocusEffect, GLOWS_RED, itm->Name);
@ -2347,7 +2347,7 @@ void Mob::DoMeleeSkillAttackDmg(Mob *other, int32 weapon_damage, EQ::skills::Ski
hate += item->GetItem()->AC;
}
const EQ::ItemData *itm = item->GetItem();
hate = hate * (100 + GetFuriousBash(itm->Focus.Effect)) / 100;
hate = hate * (100 + GetSpellFuriousBash(itm->Focus.Effect)) / 100;
}
}

View File

@ -212,11 +212,11 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove
viral_timer.Start(1000);
}
buffs[buffslot].virus_spread_time = zone->random.Int(GetViralMinSpreadTime(spell_id), GetViralMaxSpreadTime(spell_id));
buffs[buffslot].virus_spread_time = zone->random.Int(GetSpellViralMinimumSpreadTime(spell_id), GetSpellViralMaximumSpreadTime(spell_id));
}
if (!IsPowerDistModSpell(spell_id))
if (!IsDistanceModifierSpell(spell_id))
SetSpellPowerDistanceMod(0);
bool spell_trigger_cast_complete = false; //Used with SE_Spell_Trigger and SE_Chance_Best_in_Spell_Grp, true when spell has been triggered.
@ -1331,7 +1331,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove
snprintf(effect_desc, _EDLEN, "Blind: %+i", effect_value);
#endif
// 'cure blind'
if (BeneficialSpell(spell_id) && spells[spell_id].buff_duration == 0) {
if (IsBeneficialSpell(spell_id) && spells[spell_id].buff_duration == 0) {
int buff_count = GetMaxBuffSlots();
for (int slot = 0; slot < buff_count; slot++) {
if (IsValidSpell(buffs[slot].spellid) && IsEffectInSpell(buffs[slot].spellid, SE_Blind)) {
@ -1873,7 +1873,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove
#ifdef SPELL_EFFECT_SPAM
snprintf(effect_desc, _EDLEN, "Weapon Proc: %s (id %d)", spells[effect_value].name, procid);
#endif
AddProcToWeapon(procid, false, 100 + spells[spell_id].limit_value[i], spell_id, caster_level, GetProcLimitTimer(spell_id, ProcType::MELEE_PROC));
AddProcToWeapon(procid, false, 100 + spells[spell_id].limit_value[i], spell_id, caster_level, GetSpellProcLimitTimer(spell_id, ProcType::MELEE_PROC));
break;
}
@ -1883,7 +1883,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove
#ifdef SPELL_EFFECT_SPAM
snprintf(effect_desc, _EDLEN, "Ranged Proc: %+i", effect_value);
#endif
AddRangedProc(procid, 100 + spells[spell_id].limit_value[i], spell_id, GetProcLimitTimer(spell_id, ProcType::RANGED_PROC));
AddRangedProc(procid, 100 + spells[spell_id].limit_value[i], spell_id, GetSpellProcLimitTimer(spell_id, ProcType::RANGED_PROC));
break;
}
@ -1893,7 +1893,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove
#ifdef SPELL_EFFECT_SPAM
snprintf(effect_desc, _EDLEN, "Defensive Proc: %s (id %d)", spells[effect_value].name, procid);
#endif
AddDefensiveProc(procid, 100 + spells[spell_id].limit_value[i], spell_id, GetProcLimitTimer(spell_id, ProcType::DEFENSIVE_PROC));
AddDefensiveProc(procid, 100 + spells[spell_id].limit_value[i], spell_id, GetSpellProcLimitTimer(spell_id, ProcType::DEFENSIVE_PROC));
break;
}
@ -3400,7 +3400,7 @@ int64 Mob::CalcSpellEffectValue(uint16 spell_id, int effect_id, int caster_level
// this doesn't actually need to be a song to get mods, just the right skill
if (EQ::skills::IsBardInstrumentSkill(spells[spell_id].skill)
&& IsInstrumentModAppliedToSpellEffect(spell_id, spells[spell_id].effect_id[effect_id])) {
&& IsInstrumentModifierAppliedToSpellEffect(spell_id, spells[spell_id].effect_id[effect_id])) {
oval = effect_value;
effect_value = effect_value * static_cast<int>(instrument_mod) / 10;
LogSpells("Effect value [{}] altered with bard modifier of [{}] to yeild [{}]",
@ -3959,7 +3959,7 @@ void Mob::DoBuffTic(const Buffs_Struct &buff, int slot, Mob *caster)
}
case SE_WipeHateList: {
if (IsMezSpell(buff.spellid)) {
if (IsMesmerizeSpell(buff.spellid)) {
break;
}
@ -4054,7 +4054,7 @@ void Mob::DoBuffTic(const Buffs_Struct &buff, int slot, Mob *caster)
case SE_InterruptCasting: {
if (IsCasting()) {
const auto &spell = spells[casting_spell_id];
if (!IgnoreCastingRestriction(spell.id) && zone->random.Roll(spells[buff.spellid].base_value[i])) {
if (!IsCastNotStandingSpell(spell.id) && zone->random.Roll(spells[buff.spellid].base_value[i])) {
InterruptSpell();
}
}
@ -4363,7 +4363,7 @@ void Mob::BuffFadeBySlot(int slot, bool iRecalcBonuses)
for (unsigned int j = 0; j < buff_count; j++) {
if (IsValidSpell(tar->GetBuffs()[j].spellid)) {
auto spell = spells[tar->GetBuffs()[j].spellid];
if (spell.good_effect == 0 && IsEffectInSpell(spell.id, SE_CurrentHP) && tar->GetBuffs()[j].casterid == GetID()) {
if (spell.good_effect == DETRIMENTAL_EFFECT && IsEffectInSpell(spell.id, SE_CurrentHP) && tar->GetBuffs()[j].casterid == GetID()) {
tar->BuffFadeBySpellID(spell.id);
}
}
@ -4377,7 +4377,7 @@ void Mob::BuffFadeBySlot(int slot, bool iRecalcBonuses)
for (unsigned int j = 0; j < buff_count; j++) {
if (IsValidSpell(GetBuffs()[j].spellid )) {
auto spell = spells[GetBuffs()[j].spellid];
if (spell.good_effect == 0 && IsEffectInSpell(spell.id, SE_CurrentHP)) {
if (spell.good_effect == DETRIMENTAL_EFFECT && IsEffectInSpell(spell.id, SE_CurrentHP)) {
BuffFadeBySpellID(spell.id);
}
}
@ -4785,7 +4785,7 @@ int64 Mob::CalcAAFocus(focusType type, const AA::Rank &rank, uint16 spell_id)
LimitInclude[IncludeExistsSELimitEffect] = true;
// they use 33 here for all classes ... unsure if the type check is really needed
if (base_value == SE_SummonPet && type == focusReagentCost) {
if (IsSummonPetSpell(spell_id) || IsSummonSkeletonSpell(spell_id)) {
if (IsPetSpell(spell_id)) {
LimitInclude[IncludeFoundSELimitEffect] = true;
}
}
@ -6262,7 +6262,7 @@ bool Mob::TryTriggerOnCastProc(uint16 focusspellid, uint16 spell_id, uint16 proc
return true;
}
// Edge cases where proc spell does not require a target such as PBAE, allows proc to still occur even if target potentially dead. Live spells exist with PBAE procs.
else if (!SpellRequiresTarget(proc_spellid)) {
else if (!IsTargetRequiredForSpell(proc_spellid)) {
SpellFinished(proc_spellid, this, EQ::spells::CastingSlot::Item, 0, -1, spells[proc_spellid].resist_difficulty);
return true;
}
@ -9608,7 +9608,7 @@ void Mob::CastSpellOnLand(Mob* caster, int32 spell_id)
void Mob::CalcSpellPowerDistanceMod(uint16 spell_id, float range, Mob* caster)
{
if (IsPowerDistModSpell(spell_id)){
if (IsDistanceModifierSpell(spell_id)){
float distance = 0;
@ -9959,7 +9959,7 @@ void Mob::VirusEffectProcess()
}
if (buffs[buffs_i].virus_spread_time <= 0) {
buffs[buffs_i].virus_spread_time = zone->random.Int(GetViralMinSpreadTime(buffs[buffs_i].spellid), GetViralMaxSpreadTime(buffs[buffs_i].spellid));
buffs[buffs_i].virus_spread_time = zone->random.Int(GetSpellViralMinimumSpreadTime(buffs[buffs_i].spellid), GetSpellViralMaximumSpreadTime(buffs[buffs_i].spellid));
SpreadVirusEffect(buffs[buffs_i].spellid, buffs[buffs_i].casterid, buffs[buffs_i].ticsremaining);
stop_timer = false;
}
@ -9982,7 +9982,7 @@ void Mob::SpreadVirusEffect(int32 spell_id, uint32 caster_id, int32 buff_tics_re
std::vector<Mob *> targets_in_range = entity_list.GetTargetsForVirusEffect(
this,
caster,
GetViralSpreadRange(spell_id),
GetSpellViralSpreadRange(spell_id),
spells[spell_id].pcnpc_only_flag,
spell_id
);

View File

@ -545,7 +545,7 @@ bool Mob::DoCastingChecksOnCaster(int32 spell_id, CastingSlot slot) {
/*
Cannot cast if stunned or mezzed, unless spell has 'cast_not_standing' flag.
*/
if ((IsStunned() || IsMezzed()) && !IgnoreCastingRestriction(spell_id)) {
if ((IsStunned() || IsMezzed()) && !IsCastNotStandingSpell(spell_id)) {
LogSpells("Spell casting canceled [{}] : can not cast spell when stunned.", spell_id);
return false;
}
@ -575,7 +575,7 @@ bool Mob::DoCastingChecksOnCaster(int32 spell_id, CastingSlot slot) {
/*
Cannot cast under divine aura, unless spell has 'cast_not_standing' flag.
*/
if (DivineAura() && !IgnoreCastingRestriction(spell_id)) {
if (DivineAura() && !IsCastNotStandingSpell(spell_id)) {
LogSpells("Spell casting canceled [{}] : cannot cast while Divine Aura is in effect.", spell_id);
InterruptSpell(173, 0x121, false); //not sure we need this.
return false;
@ -873,7 +873,7 @@ bool Mob::DoCastingChecksOnTarget(bool check_on_casting, int32 spell_id, Mob *sp
/*
Requires target to be in same group or same raid in order to apply invisible.
*/
if (check_on_casting && RuleB(Spells, InvisRequiresGroup) && IsInvisSpell(spell_id)) {
if (check_on_casting && RuleB(Spells, InvisRequiresGroup) && IsInvisibleSpell(spell_id)) {
if (IsClient() && spell_target && spell_target->IsClient()) {
if (spell_target && spell_target->GetID() != GetID()) {
bool cast_failed = true;
@ -1781,7 +1781,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce
SpellTargetType targetType = spells[spell_id].target_type;
bodyType mob_body = spell_target ? spell_target->GetBodyType() : BT_Humanoid;
if(IsPlayerIllusionSpell(spell_id)
if(IsIllusionSpell(spell_id)
&& spell_target != nullptr // null ptr crash safeguard
&& !spell_target->IsNPC() // still self only if NPC targetted
&& IsClient()
@ -2377,7 +2377,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, CastingSlot slot, in
range = spells[spell_id].aoe_range;
range = GetActSpellRange(spell_id, range);
if(IsClient() && IsPlayerIllusionSpell(spell_id) && (HasProjectIllusion())){
if(IsClient() && IsIllusionSpell(spell_id) && (HasProjectIllusion())){
range = 100;
}
@ -2461,7 +2461,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, CastingSlot slot, in
}
}
if(IsPlayerIllusionSpell(spell_id)
if(IsIllusionSpell(spell_id)
&& IsClient()
&& (HasProjectIllusion())){
LogAA("Effect Project Illusion for [{}] on spell id: [{}] was ON", GetName(), spell_id);
@ -2604,7 +2604,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, CastingSlot slot, in
}
// Set and send the nimbus effect if this spell has one
int NimbusEffect = GetNimbusEffect(spell_id);
int NimbusEffect = GetSpellNimbusEffect(spell_id);
if(NimbusEffect) {
if(!IsNimbusEffectActive(NimbusEffect)) {
SendSpellEffect(NimbusEffect, 500, 0, 1, 3000, true);
@ -2754,7 +2754,7 @@ bool Mob::ApplyBardPulse(int32 spell_id, Mob *spell_target, CastingSlot slot) {
/*
If divine aura applied while pulsing, it is not interrupted but does not reapply until DA fades.
*/
if (DivineAura() && !IgnoreCastingRestriction(spell_id)) {
if (DivineAura() && !IsCastNotStandingSpell(spell_id)) {
return true;
}
/*
@ -2931,7 +2931,7 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2,
return -1;
}
if (!IsStackableDot(spellid1) && !IsEffectInSpell(spellid1, SE_ManaBurn)) { // mana burn spells we need to use the stacking command blocks live actually checks those first, we should probably rework to that too
if (!IsStackableDOT(spellid1) && !IsEffectInSpell(spellid1, SE_ManaBurn)) { // mana burn spells we need to use the stacking command blocks live actually checks those first, we should probably rework to that too
if (caster_level1 > caster_level2) { // cur buff higher level than new
if (IsEffectInSpell(spellid1, SE_ImprovedTaunt)) {
LogSpells("SE_ImprovedTaunt level exception, overwriting");
@ -3005,21 +3005,21 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2,
if (spellbonuses.BStacker[SBIndex::BUFFSTACKER_EXISTS]) {
if ((effect2 == SE_BStacker) && (sp2.effect_id[i] <= spellbonuses.BStacker[SBIndex::BUFFSTACKER_VALUE]))
return -1;
if ((effect2 == SE_AStacker) && (!IsCastonFadeDurationSpell(spellid1) && buffs[buffslot].ticsremaining != 1 && IsEffectInSpell(spellid1, SE_BStacker)))
if ((effect2 == SE_AStacker) && (!IsCastOnFadeDurationSpell(spellid1) && buffs[buffslot].ticsremaining != 1 && IsEffectInSpell(spellid1, SE_BStacker)))
return -1;
}
if (spellbonuses.CStacker[SBIndex::BUFFSTACKER_EXISTS]) {
if ((effect2 == SE_CStacker) && (sp2.effect_id[i] <= spellbonuses.CStacker[SBIndex::BUFFSTACKER_VALUE]))
return -1;
if ((effect2 == SE_BStacker) && (!IsCastonFadeDurationSpell(spellid1) && buffs[buffslot].ticsremaining != 1 && IsEffectInSpell(spellid1, SE_CStacker)))
if ((effect2 == SE_BStacker) && (!IsCastOnFadeDurationSpell(spellid1) && buffs[buffslot].ticsremaining != 1 && IsEffectInSpell(spellid1, SE_CStacker)))
return -1;
}
if (spellbonuses.DStacker[SBIndex::BUFFSTACKER_EXISTS]) {
if ((effect2 == SE_DStacker) && (sp2.effect_id[i] <= spellbonuses.DStacker[SBIndex::BUFFSTACKER_VALUE]))
return -1;
if ((effect2 == SE_CStacker) && (!IsCastonFadeDurationSpell(spellid1) && buffs[buffslot].ticsremaining != 1 && IsEffectInSpell(spellid1, SE_DStacker)))
if ((effect2 == SE_CStacker) && (!IsCastOnFadeDurationSpell(spellid1) && buffs[buffslot].ticsremaining != 1 && IsEffectInSpell(spellid1, SE_DStacker)))
return -1;
}
@ -3038,7 +3038,7 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2,
if(sp1_value < overwrite_below_value)
{
if (IsResurrectionEffects(spellid1)) {
int8 res_effect_check = GetResurrectionSicknessCheck(spellid1, spellid2);
int8 res_effect_check = GetSpellResurrectionSicknessCheck(spellid1, spellid2);
if (res_effect_check != 0) {
return res_effect_check;
}
@ -3169,7 +3169,7 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2,
sp2_value = 0 - sp2_value;
if (IsResurrectionEffects(spellid1)) {
int8 res_effect_check = GetResurrectionSicknessCheck(spellid1, spellid2);
int8 res_effect_check = GetSpellResurrectionSicknessCheck(spellid1, spellid2);
if (res_effect_check != 0) {
return res_effect_check;
}
@ -3247,7 +3247,7 @@ bool Mob::CheckSpellLevelRestriction(Mob *caster, uint16 spell_id)
}
if (check_for_restrictions) {
int spell_level = GetMinLevel(spell_id);
int spell_level = GetSpellMinimumLevel(spell_id);
// Only check for beneficial buffs
if (IsBuffSpell(spell_id) && IsBeneficialSpell(spell_id)) {
@ -3772,7 +3772,7 @@ bool Mob::SpellOnTarget(
if (
(spelltar->GetInvul() && !spelltar->DivineAura()) ||
(spelltar != this && spelltar->DivineAura()) ||
(spelltar == this && spelltar->DivineAura() && !IgnoreCastingRestriction(spell_id))
(spelltar == this && spelltar->DivineAura() && !IsCastNotStandingSpell(spell_id))
) {
LogSpells("Casting spell [{}] on [{}] aborted: they are invulnerable", spell_id, spelltar->GetName());
safe_delete(action_packet);
@ -3883,7 +3883,7 @@ bool Mob::SpellOnTarget(
}
if (
(!IsAllianceSpellLine(spell_id) && !IsBeneficialAllowed(spelltar)) ||
(!IsAllianceSpell(spell_id) && !IsBeneficialAllowed(spelltar)) ||
(IsGroupOnlySpell(spell_id) &&
!(
(
@ -4115,7 +4115,7 @@ bool Mob::SpellOnTarget(
if (
IsCharmSpell(spell_id) ||
IsMezSpell(spell_id) ||
IsMesmerizeSpell(spell_id) ||
IsFearSpell(spell_id)
) {
spell_effectiveness = spelltar->ResistSpell(
@ -4144,7 +4144,7 @@ bool Mob::SpellOnTarget(
}
if (spell_effectiveness < 100) {
if (spell_effectiveness == 0 || !IsPartialCapableSpell(spell_id)) {
if (spell_effectiveness == 0 || !IsPartialResistableSpell(spell_id)) {
LogSpells("Spell [{}] was completely resisted by [{}]", spell_id, spelltar->GetName());
if (spells[spell_id].resist_type == RESIST_PHYSICAL){
@ -4687,7 +4687,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster)
if(IsBeneficialSpell(spell_id) && (caster->GetNPCTypeID())) //then skip the rest, stop NPCs aggroing each other with buff spells. 2013-03-05
return false;
if(IsMezSpell(spell_id))
if(IsMesmerizeSpell(spell_id))
{
if(GetSpecialAbility(UNMEZABLE)) {
LogSpells("We are immune to Mez spells");
@ -5150,7 +5150,7 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use
{
//This is confusing but it's basically right
//It skews partial resists up over 100 more often than not
if(!IsPartialCapableSpell(spell_id))
if(!IsPartialResistableSpell(spell_id))
{
return 0;
}