cmake_minimum_required(VERSION 3.20) set(zone_sources aa.cpp aa_ability.cpp aggro.cpp aggromanager.cpp api_service.cpp attack.cpp aura.cpp beacon.cpp bonuses.cpp bot.cpp bot_database.cpp bot_raid.cpp botspellsai.cpp cheat_manager.cpp cli/cli_benchmark_databuckets.cpp cli/cli_sidecar_serve_http.cpp cli/tests/cli_databuckets.cpp cli/tests/cli_npc_handins.cpp cli/tests/cli_npc_handins_multiquest.cpp cli/tests/cli_test_util.cpp cli/tests/cli_zone_state.cpp client.cpp client_bot.cpp client_evolving_items.cpp client_mods.cpp client_packet.cpp client_process.cpp combat_record.cpp corpse.cpp dialogue_window.cpp doors.cpp dynamic_zone.cpp effects.cpp embparser.cpp embparser_api.cpp embperl.cpp encounter.cpp entity.cpp exp.cpp expedition_request.cpp fastmath.cpp fearpath.cpp forage.cpp global_loot_manager.cpp groups.cpp guild.cpp guild_mgr.cpp hate_list.cpp heal_rotation.cpp horse.cpp inventory.cpp loot.cpp main.cpp map.cpp merc.cpp mob.cpp mob_ai.cpp mob_appearance.cpp mob_info.cpp mob_movement_manager.cpp npc.cpp npc_scale_manager.cpp object.cpp oriented_bounding_box.cpp parcels.cpp pathfinder_interface.cpp pathfinder_nav_mesh.cpp pathfinder_null.cpp pathing.cpp petitions.cpp pets.cpp position.cpp qglobals.cpp queryserv.cpp quest_db.cpp quest_parser_collection.cpp questmgr.cpp raids.cpp raycast_mesh.cpp shared_task_zone_messaging.cpp sidecar_api/loot_simulator_controller.cpp sidecar_api/sidecar_api.cpp spawn2.cpp spawngroup.cpp special_attacks.cpp spell_effects.cpp spells.cpp task_client_state.cpp task_manager.cpp tasks.cpp titles.cpp tradeskills.cpp trading.cpp trap.cpp tribute.cpp tune.cpp water_map.cpp water_map_v1.cpp water_map_v2.cpp waypoints.cpp worldserver.cpp xtargetautohaters.cpp zone.cpp zone_base_data.cpp zone_cli.cpp zone_config.cpp zone_event_scheduler.cpp zone_loot.cpp zone_npc_factions.cpp zone_reload.cpp zone_save_state.cpp zonedb.cpp zoning.cpp ) set(zone_headers aa.h aa_ability.h aggromanager.h api_service.h aura.h beacon.h bot.h bot_command.h bot_database.h bot_structs.h cheat_manager.h client.h client_packet.h combat_record.h command.h common.h corpse.h dialogue_window.h doors.h dynamic_zone.h embparser.h embperl.h encounter.h entity.h event_codes.h expedition_request.h fastmath.h forage.h global_loot_manager.h groups.h guild_mgr.h hate_list.h heal_rotation.h horse.h lua_bit.h lua_bot.h lua_buff.h lua_client.h lua_corpse.h lua_database.h lua_door.h lua_encounter.h lua_entity.h lua_entity_list.h lua_expedition.h lua_general.h lua_group.h lua_hate_list.h lua_inventory.h lua_item.h lua_iteminst.h lua_merc.h lua_mob.h lua_mod.h lua_npc.h lua_object.h lua_packet.h lua_parser.h lua_parser_events.h lua_ptr.h lua_raid.h lua_spawn.h lua_spell.h lua_stat_bonuses.h lua_zone.h map.h masterentity.h merc.h mob.h mob_movement_manager.h npc.h npc_scale_manager.h object.h oriented_bounding_box.h pathfinder_interface.h pathfinder_nav_mesh.h pathfinder_null.h perl_database.h perlpacket.h petitions.h pets.h position.h qglobals.h queryserv.h quest_db.h quest_interface.h quest_parser_collection.h questmgr.h raids.h raycast_mesh.h shared_task_zone_messaging.h sidecar_api/sidecar_api.h spawn2.h spawngroup.h string_ids.h task_client_state.h task_manager.h tasks.h titles.h trap.h water_map.h water_map_v1.h water_map_v2.h worldserver.h xtargetautohaters.h zone.h zone_cli.h zone_config.h zone_event_scheduler.h zone_reload.h zone_save_state.h zonedb.h zonedump.h ) set(lua_sources lua_bit.cpp lua_bot.cpp lua_buff.cpp lua_client.cpp lua_corpse.cpp lua_database.cpp lua_door.cpp lua_encounter.cpp lua_entity.cpp lua_entity_list.cpp lua_expedition.cpp lua_general.cpp lua_group.cpp lua_hate_list.cpp lua_inventory.cpp lua_item.cpp lua_iteminst.cpp lua_merc.cpp lua_mob.cpp lua_mod.cpp lua_npc.cpp lua_object.cpp lua_packet.cpp lua_parser.cpp lua_parser_events.cpp lua_raid.cpp lua_spawn.cpp lua_spell.cpp lua_stat_bonuses.cpp lua_zone.cpp ) add_library(lua_zone STATIC ${lua_sources}) set_target_properties(lua_zone PROPERTIES UNITY_BUILD ON UNITY_BUILD_BATCH_SIZE 8) set(perl_sources perl_bot.cpp perl_buff.cpp perl_client.cpp perl_database.cpp perl_doors.cpp perl_entity.cpp perl_expedition.cpp perl_groups.cpp perl_hateentry.cpp perl_inventory.cpp perl_merc.cpp perl_mob.cpp perl_npc.cpp perl_object.cpp perl_perlpacket.cpp perl_player_corpse.cpp perl_questitem.cpp perl_questitem_data.cpp perl_raids.cpp perl_spawn.cpp perl_spell.cpp perl_stat_bonuses.cpp perl_zone.cpp perlpacket.cpp ) add_library(perl_zone STATIC ${perl_sources}) set_target_properties(perl_zone PROPERTIES UNITY_BUILD ON UNITY_BUILD_BATCH_SIZE 8) set(gm_command_sources bot_command.cpp bot_commands/bot_actionable.cpp bot_commands/bot_appearance.cpp bot_commands/bot_apply_poison.cpp bot_commands/bot_apply_potion.cpp bot_commands/bot_attack.cpp bot_commands/bot_behind_mob.cpp bot_commands/bot_blocked_buffs.cpp bot_commands/bot_bot.cpp bot_commands/bot_bot_settings.cpp bot_commands/bot_cast.cpp bot_commands/bot_class_race_list.cpp bot_commands/bot_click_item.cpp bot_commands/bot_copy_settings.cpp bot_commands/bot_default_settings.cpp bot_commands/bot_depart.cpp bot_commands/bot_discipline.cpp bot_commands/bot_distance_ranged.cpp bot_commands/bot_find_aliases.cpp bot_commands/bot_follow.cpp bot_commands/bot_guard.cpp bot_commands/bot_heal_rotation.cpp bot_commands/bot_help.cpp bot_commands/bot_hold.cpp bot_commands/bot_illusion_block.cpp bot_commands/bot_inventory.cpp bot_commands/bot_item_use.cpp bot_commands/bot_max_melee_range.cpp bot_commands/bot_name.cpp bot_commands/bot_owner_option.cpp bot_commands/bot_pet.cpp bot_commands/bot_pick_lock.cpp bot_commands/bot_pickpocket.cpp bot_commands/bot_precombat.cpp bot_commands/bot_pull.cpp bot_commands/bot_release.cpp bot_commands/bot_set_assistee.cpp bot_commands/bot_sit_hp_percent.cpp bot_commands/bot_sit_in_combat.cpp bot_commands/bot_sit_mana_percent.cpp bot_commands/bot_spell.cpp bot_commands/bot_spell_aggro_checks.cpp bot_commands/bot_spell_announce_cast.cpp bot_commands/bot_spell_delays.cpp bot_commands/bot_spell_engaged_priority.cpp bot_commands/bot_spell_holds.cpp bot_commands/bot_spell_idle_priority.cpp bot_commands/bot_spell_max_hp_pct.cpp bot_commands/bot_spell_max_mana_pct.cpp bot_commands/bot_spell_max_thresholds.cpp bot_commands/bot_spell_min_hp_pct.cpp bot_commands/bot_spell_min_mana_pct.cpp bot_commands/bot_spell_min_thresholds.cpp bot_commands/bot_spell_pursue_priority.cpp bot_commands/bot_spell_resist_limits.cpp bot_commands/bot_spell_target_count.cpp bot_commands/bot_spelltypes.cpp bot_commands/bot_summon.cpp bot_commands/bot_suspend.cpp bot_commands/bot_taunt.cpp bot_commands/bot_timer.cpp bot_commands/bot_track.cpp bot_commands/bot_view_combos.cpp command.cpp gm_commands/acceptrules.cpp gm_commands/advnpcspawn.cpp gm_commands/aggrozone.cpp gm_commands/ai.cpp gm_commands/appearance.cpp gm_commands/appearanceeffects.cpp gm_commands/attack.cpp gm_commands/augmentitem.cpp gm_commands/ban.cpp gm_commands/bugs.cpp gm_commands/camerashake.cpp gm_commands/castspell.cpp gm_commands/chat.cpp gm_commands/clearxtargets.cpp gm_commands/copycharacter.cpp gm_commands/corpse.cpp gm_commands/corpsefix.cpp gm_commands/countitem.cpp gm_commands/damage.cpp gm_commands/databuckets.cpp gm_commands/dbspawn2.cpp gm_commands/delacct.cpp gm_commands/delpetition.cpp gm_commands/depop.cpp gm_commands/depopzone.cpp gm_commands/devtools.cpp gm_commands/disablerecipe.cpp gm_commands/disarmtrap.cpp gm_commands/doanim.cpp gm_commands/door.cpp gm_commands/door_manipulation.cpp gm_commands/dye.cpp gm_commands/dz.cpp gm_commands/dzkickplayers.cpp gm_commands/editmassrespawn.cpp gm_commands/emote.cpp gm_commands/emptyinventory.cpp gm_commands/enablerecipe.cpp gm_commands/entityvariable.cpp gm_commands/evolving_items.cpp gm_commands/exptoggle.cpp gm_commands/faction.cpp gm_commands/faction_association.cpp gm_commands/feature.cpp gm_commands/find.cpp gm_commands/find/find_aa.cpp gm_commands/find/find_account.cpp gm_commands/find/find_body_type.cpp gm_commands/find/find_bot.cpp gm_commands/find/find_bug_category.cpp gm_commands/find/find_character.cpp gm_commands/find/find_class.cpp gm_commands/find/find_comparison_type.cpp gm_commands/find/find_currency.cpp gm_commands/find/find_deity.cpp gm_commands/find/find_emote.cpp gm_commands/find/find_faction.cpp gm_commands/find/find_item.cpp gm_commands/find/find_language.cpp gm_commands/find/find_ldon_theme.cpp gm_commands/find/find_npctype.cpp gm_commands/find/find_object_type.cpp gm_commands/find/find_race.cpp gm_commands/find/find_recipe.cpp gm_commands/find/find_skill.cpp gm_commands/find/find_special_ability.cpp gm_commands/find/find_spell.cpp gm_commands/find/find_stance.cpp gm_commands/find/find_task.cpp gm_commands/find/find_zone.cpp gm_commands/fish.cpp gm_commands/fixmob.cpp gm_commands/flagedit.cpp gm_commands/fleeinfo.cpp gm_commands/forage.cpp gm_commands/gearup.cpp gm_commands/giveitem.cpp gm_commands/givemoney.cpp gm_commands/gmzone.cpp gm_commands/goto.cpp gm_commands/grantaa.cpp gm_commands/grid.cpp gm_commands/guild.cpp gm_commands/hp.cpp gm_commands/illusion_block.cpp gm_commands/instance.cpp gm_commands/interrogateinv.cpp gm_commands/interrupt.cpp gm_commands/invsnapshot.cpp gm_commands/ipban.cpp gm_commands/kick.cpp gm_commands/kill.cpp gm_commands/killallnpcs.cpp gm_commands/list.cpp gm_commands/loc.cpp gm_commands/logs.cpp gm_commands/lootsim.cpp gm_commands/makepet.cpp gm_commands/memspell.cpp gm_commands/merchantshop.cpp gm_commands/modifynpcstat.cpp gm_commands/movechar.cpp gm_commands/movement.cpp gm_commands/myskills.cpp gm_commands/mysql.cpp gm_commands/mystats.cpp gm_commands/npccast.cpp gm_commands/npcedit.cpp gm_commands/npceditmass.cpp gm_commands/npcemote.cpp gm_commands/npcloot.cpp gm_commands/npcsay.cpp gm_commands/npcshout.cpp gm_commands/npcspawn.cpp gm_commands/npctypespawn.cpp gm_commands/nudge.cpp gm_commands/nukebuffs.cpp gm_commands/nukeitem.cpp gm_commands/object.cpp gm_commands/object_manipulation.cpp gm_commands/parcels.cpp gm_commands/path.cpp gm_commands/peqzone.cpp gm_commands/petitems.cpp gm_commands/petname.cpp gm_commands/picklock.cpp gm_commands/profanity.cpp gm_commands/push.cpp gm_commands/raidloot.cpp gm_commands/randomfeatures.cpp gm_commands/refreshgroup.cpp gm_commands/reload.cpp gm_commands/removeitem.cpp gm_commands/repop.cpp gm_commands/resetaa.cpp gm_commands/resetaa_timer.cpp gm_commands/resetdisc_timer.cpp gm_commands/revoke.cpp gm_commands/roambox.cpp gm_commands/rules.cpp gm_commands/save.cpp gm_commands/scale.cpp gm_commands/scribespell.cpp gm_commands/scribespells.cpp gm_commands/sendzonespawns.cpp gm_commands/sensetrap.cpp gm_commands/serverrules.cpp gm_commands/set.cpp gm_commands/set/set_aa_exp.cpp gm_commands/set/set_aa_points.cpp gm_commands/set/set_adventure_points.cpp gm_commands/set/set_alternate_currency.cpp gm_commands/set/set_animation.cpp gm_commands/set/set_anon.cpp gm_commands/set/set_auto_login.cpp gm_commands/set/set_bind_point.cpp gm_commands/set/set_checksum.cpp gm_commands/set/set_class_permanent.cpp gm_commands/set/set_crystals.cpp gm_commands/set/set_date.cpp gm_commands/set/set_endurance.cpp gm_commands/set/set_endurance_full.cpp gm_commands/set/set_exp.cpp gm_commands/set/set_flymode.cpp gm_commands/set/set_frozen.cpp gm_commands/set/set_gender.cpp gm_commands/set/set_gender_permanent.cpp gm_commands/set/set_gm.cpp gm_commands/set/set_gm_speed.cpp gm_commands/set/set_gm_status.cpp gm_commands/set/set_god_mode.cpp gm_commands/set/set_haste.cpp gm_commands/set/set_hero_model.cpp gm_commands/set/set_hide_me.cpp gm_commands/set/set_hp.cpp gm_commands/set/set_hp_full.cpp gm_commands/set/set_invulnerable.cpp gm_commands/set/set_language.cpp gm_commands/set/set_last_name.cpp gm_commands/set/set_level.cpp gm_commands/set/set_loginserver_info.cpp gm_commands/set/set_mana.cpp gm_commands/set/set_mana_full.cpp gm_commands/set/set_motd.cpp gm_commands/set/set_name.cpp gm_commands/set/set_ooc_mute.cpp gm_commands/set/set_password.cpp gm_commands/set/set_pvp.cpp gm_commands/set/set_pvp_points.cpp gm_commands/set/set_race.cpp gm_commands/set/set_race_permanent.cpp gm_commands/set/set_server_locked.cpp gm_commands/set/set_skill.cpp gm_commands/set/set_skill_all.cpp gm_commands/set/set_skill_all_max.cpp gm_commands/set/set_start_zone.cpp gm_commands/set/set_temporary_name.cpp gm_commands/set/set_texture.cpp gm_commands/set/set_time.cpp gm_commands/set/set_time_zone.cpp gm_commands/set/set_title.cpp gm_commands/set/set_title_suffix.cpp gm_commands/set/set_weather.cpp gm_commands/set/set_zone.cpp gm_commands/show.cpp gm_commands/show/show_aa_points.cpp gm_commands/show/show_aas.cpp gm_commands/show/show_aggro.cpp gm_commands/show/show_auto_login.cpp gm_commands/show/show_buffs.cpp gm_commands/show/show_buried_corpse_count.cpp gm_commands/show/show_client_version_summary.cpp gm_commands/show/show_content_flags.cpp gm_commands/show/show_currencies.cpp gm_commands/show/show_distance.cpp gm_commands/show/show_emotes.cpp gm_commands/show/show_field_of_view.cpp gm_commands/show/show_flags.cpp gm_commands/show/show_group_info.cpp gm_commands/show/show_hatelist.cpp gm_commands/show/show_inventory.cpp gm_commands/show/show_ip_lookup.cpp gm_commands/show/show_keyring.cpp gm_commands/show/show_line_of_sight.cpp gm_commands/show/show_network.cpp gm_commands/show/show_network_stats.cpp gm_commands/show/show_npc_global_loot.cpp gm_commands/show/show_npc_stats.cpp gm_commands/show/show_npc_type.cpp gm_commands/show/show_peqzone_flags.cpp gm_commands/show/show_petition.cpp gm_commands/show/show_petition_info.cpp gm_commands/show/show_proximity.cpp gm_commands/show/show_quest_errors.cpp gm_commands/show/show_quest_globals.cpp gm_commands/show/show_recipe.cpp gm_commands/show/show_server_info.cpp gm_commands/show/show_skills.cpp gm_commands/show/show_spawn_status.cpp gm_commands/show/show_special_abilities.cpp gm_commands/show/show_spells.cpp gm_commands/show/show_spells_list.cpp gm_commands/show/show_stats.cpp gm_commands/show/show_timers.cpp gm_commands/show/show_traps.cpp gm_commands/show/show_uptime.cpp gm_commands/show/show_variable.cpp gm_commands/show/show_version.cpp gm_commands/show/show_waypoints.cpp gm_commands/show/show_who.cpp gm_commands/show/show_xtargets.cpp gm_commands/show/show_zone_data.cpp gm_commands/show/show_zone_global_loot.cpp gm_commands/show/show_zone_loot.cpp gm_commands/show/show_zone_points.cpp gm_commands/show/show_zone_status.cpp gm_commands/show/show_zone_variables.cpp gm_commands/shutdown.cpp gm_commands/spawn.cpp gm_commands/spawneditmass.cpp gm_commands/spawnfix.cpp gm_commands/stun.cpp gm_commands/summon.cpp gm_commands/summonburiedplayercorpse.cpp gm_commands/summonitem.cpp gm_commands/suspend.cpp gm_commands/suspendmulti.cpp gm_commands/takeplatinum.cpp gm_commands/task.cpp gm_commands/traindisc.cpp gm_commands/tune.cpp gm_commands/undye.cpp gm_commands/unmemspell.cpp gm_commands/unmemspells.cpp gm_commands/unscribespell.cpp gm_commands/unscribespells.cpp gm_commands/untraindisc.cpp gm_commands/untraindiscs.cpp gm_commands/wc.cpp gm_commands/worldshutdown.cpp gm_commands/worldwide.cpp gm_commands/wp.cpp gm_commands/wpadd.cpp gm_commands/zone.cpp gm_commands/zone_instance.cpp gm_commands/zone_shard.cpp gm_commands/zonebootup.cpp gm_commands/zoneshutdown.cpp gm_commands/zonevariable.cpp gm_commands/zsave.cpp ) source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" PREFIX "Source Files" FILES ${zone_sources}) source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" PREFIX "Header Files" FILES ${zone_headers}) source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" PREFIX "Source Files" FILES ${gm_command_sources}) add_library(gm_commands_zone STATIC ${gm_command_sources}) target_link_libraries(gm_commands_zone PRIVATE common) set_target_properties(gm_commands_zone PROPERTIES UNITY_BUILD ON UNITY_BUILD_BATCH_SIZE 32) add_executable(zone ${zone_sources} ${zone_headers}) install(TARGETS zone RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) if(EQEMU_BUILD_PCH) TARGET_PRECOMPILE_HEADERS(zone PRIVATE ../common/pch/app-pch.h) TARGET_PRECOMPILE_HEADERS(zone PRIVATE ../common/pch/std-pch.h) TARGET_PRECOMPILE_HEADERS(zone PRIVATE ./pch/pch.h) endif() add_definitions(-DZONE) if(EQEMU_BUILD_LUA) target_compile_definitions(lua_zone PUBLIC LUA_EQEMU) target_link_libraries(lua_zone PUBLIC luabind Boost::dynamic_bitset Boost::tuple Boost::foreach common) if (EQEMU_BUILD_STATIC AND LUA_LIBRARY) target_link_libraries(zone PRIVATE ${LUA_LIBRARY}) endif() endif() if(EQEMU_BUILD_PERL) target_compile_definitions(perl_zone PUBLIC EMBPERL EMBPERL_PLUGIN PERLBIND_NO_STRICT_SCALAR_TYPES) target_link_libraries(perl_zone PUBLIC perlbind common ${PERL_LIBRARY}) if (EQEMU_BUILD_STATIC AND PERL_LIBRARY) target_link_libraries(zone PRIVATE ${PERL_LIBRARY}) endif() endif() target_link_libraries(zone PRIVATE gm_commands_zone common RecastNavigation::Detour) if(EQEMU_BUILD_LUA) target_link_libraries(zone PRIVATE lua_zone) endif() if(EQEMU_BUILD_PERL) target_link_libraries(zone PRIVATE perl_zone) endif() SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)