mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 16:51:29 +00:00
* [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
[Cleanup] Remove GetStartCount() and InitStartTimer() from zone_launch.cpp and zone_launch.h (#3121)
EQEmulator Core Server
| Drone (Linux x64) | Drone (Windows x64) |
|---|---|
EQEmulator is a custom completely from-scratch open source server implementation for EverQuest built mostly on C++
- MySQL/MariaDB is used as the database engine (over 200+ tables)
- Perl and LUA are both supported scripting languages for NPC/Player/Quest oriented events
- Open source database (Project EQ) has content up to expansion OoW (included in server installs)
- Game server environments and databases can be heavily customized to create all new experiences
- Hundreds of Quests/events created and maintained by Project EQ
Server Installs
| Windows | Linux | |
|---|---|---|
| Install Count |
> Windows
> Debian/Ubuntu/CentOS/Fedora
-
You can use curl or wget to kick off the installer (whichever your OS has)
curl -O https://raw.githubusercontent.com/EQEmu/Server/master/utils/scripts/linux_installer/install.sh install.sh && chmod 755 install.sh && ./install.sh
wget --no-check-certificate https://raw.githubusercontent.com/EQEmu/Server/master/utils/scripts/linux_installer/install.sh -O install.sh && chmod 755 install.sh && ./install.sh
Supported Clients
| Titanium Edition | Secrets of Faydwer | Seeds of Destruction | Underfoot | Rain of Fear |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
Bug Reports 
- Please use the issue tracker provided by GitHub to send us bug reports or feature requests.
- The EQEmu Forums are also a place to submit and get help with bugs.
Contributions 
- The preferred way to contribute is to fork the repo and submit a pull request on
GitHub. If you need help with your changes, you can always post on the forums or
try Discord. You can also post unified diffs (
git diffshould do the trick) on the Server Code Submissions forum, although pull requests will be much quicker and easier on all parties.
Contact 
- Discord Channel: https://discord.gg/QHsm7CD
- User Discord Channel:
#general - Developer Discord Channel:
#eqemucoders
Resources
Related Repositories
- ProjectEQ Quests
- Maps
- Installer Resources
- Zone Utilities - Various utilities and libraries for parsing, rendering and manipulating EQ Zone files.
Other License Info
- The server code and utilities are released under GPLv3
- We also include some small libraries for convienence that may be under different licensing
- SocketLib - GPL LibXML
- zlib - zlib license
- MariaDB/MySQL - GPL
- GPL Perl - GPL / ActiveState (under the assumption that this is a free project)
- CPPUnit - GLP StringUtilities - Apache
- LUA - MIT
Contributors
Languages
C++
89.6%
C
6.4%
C#
2%
CMake
0.6%
Python
0.5%
Other
0.8%




