From bde19785853abb648f3ade5d0e3397bcd9ae4c6a Mon Sep 17 00:00:00 2001 From: mikx Date: Tue, 7 Nov 2023 18:17:57 -0500 Subject: [PATCH] updated gitignore to include modules --- .gitignore | 6 - modules/DungeonRespawn/.editorconfig | 8 + .../DungeonRespawn/.git_commit_template.txt | 45 + modules/DungeonRespawn/.gitattributes | 105 + .../.github/workflows/core-build.yml | 11 + modules/DungeonRespawn/.gitignore | 48 + modules/DungeonRespawn/LICENSE | 21 + modules/DungeonRespawn/README.md | 19 + modules/DungeonRespawn/README_ES.md | 66 + modules/DungeonRespawn/README_example.md | 41 + modules/DungeonRespawn/conf/conf.sh.dist | 32 + .../conf/dungeonrespawn.conf.dist | 26 + .../dungeonrespawn_char_0000_00_00_00.sql | 8 + .../dungeonrespawn_char_2023_01_12_01.sql | 4 + modules/DungeonRespawn/icon.png | Bin 0 -> 2790 bytes modules/DungeonRespawn/include.sh | 10 + .../setup_git_commit_template.sh | 4 + modules/DungeonRespawn/src/DungeonRespawn.cpp | 294 + modules/DungeonRespawn/src/DungeonRespawn.h | 62 + modules/DungeonRespawn/src/MP_loader.cpp | 15 + modules/mod-accountbound/.github/README.md | 11 + .../.github/workflows/core-build.yml | 12 + modules/mod-accountbound/LICENSE | 661 + modules/mod-accountbound/README.md | 8 + modules/mod-accountbound/conf/conf.sh.dist | 1 + .../conf/mod_accountbound.conf.dist | 22 + .../base/account_bound_companion_template.sql | 214 + .../db-auth/base/account_bound_companions.sql | 6 + .../account_bound_factionchange_spells.sql | 92 + .../db-auth/base/account_bound_heirlooms.sql | 5 + .../base/account_bound_mount_template.sql | 259 + .../sql/db-auth/base/account_bound_mounts.sql | 10 + .../base/account_bound_creature_template.sql | 18 + modules/mod-accountbound/include.sh | 8 + modules/mod-accountbound/src/loader.cpp | 6 + .../mod-accountbound/src/mod_accountbound.cpp | 470 + modules/mod-ah-bot/.editorconfig | 8 + modules/mod-ah-bot/.gitattributes | 62 + .../.github/workflows/core-build.yml | 12 + modules/mod-ah-bot/.gitignore | 48 + modules/mod-ah-bot/README.md | 46 + modules/mod-ah-bot/conf/conf.sh.dist | 9 + modules/mod-ah-bot/conf/mod_ahbot.conf.dist | 266 + modules/mod-ah-bot/include.sh | 9 + .../sql/world/base/mod_auctionhousebot.sql | 368 + modules/mod-ah-bot/src/AuctionHouseBot.cpp | 1942 ++ modules/mod-ah-bot/src/AuctionHouseBot.h | 1260 ++ .../mod-ah-bot/src/AuctionHouseBotScript.cpp | 92 + modules/mod-ah-bot/src/ah_bot_loader.cpp | 15 + modules/mod-ah-bot/src/cs_ah_bot.cpp | 488 + modules/mod-aoe-loot/.editorconfig | 8 + modules/mod-aoe-loot/.gitattributes | 104 + .../.github/ISSUE_TEMPLATE/bug_report.yml | 72 + .../ISSUE_TEMPLATE/feature_request.yml | 33 + modules/mod-aoe-loot/.github/README.md | 28 + modules/mod-aoe-loot/.github/README_ES.md | 28 + .../.github/workflows/core-build.yml | 12 + modules/mod-aoe-loot/.gitignore | 47 + .../mod-aoe-loot/conf/mod_aoe_loot.conf.dist | 26 + modules/mod-aoe-loot/data/.gitkeep | 0 .../data/sql/db-auth/base/.gitkeep | 0 .../data/sql/db-auth/updates/.gitkeep | 0 .../data/sql/db-characters/base/.gitkeep | 0 .../data/sql/db-characters/updates/.gitkeep | 0 .../data/sql/db-world/base/.gitkeep | 0 .../db-world/base/aoe_loot_acore_string.sql | 5 + .../data/sql/db-world/updates/.gitkeep | 0 modules/mod-aoe-loot/include.sh | 0 modules/mod-aoe-loot/pull_request_template.md | 25 + modules/mod-aoe-loot/src/AoeLoot_SC.cpp | 130 + modules/mod-aoe-loot/src/aoe_loot_loader.cpp | 25 + .../mod-arac/.github/workflows/core-build.yml | 12 + modules/mod-arac/LICENSE | 661 + modules/mod-arac/Patch-A.MPQ | Bin 0 -> 24745 bytes modules/mod-arac/README.md | 28 + modules/mod-arac/icon.png | Bin 0 -> 11206 bytes modules/mod-arac/icons.png | Bin 0 -> 69712 bytes modules/mod-arac/images/screen1.png | Bin 0 -> 1742127 bytes modules/mod-arac/images/screen2.png | Bin 0 -> 315885 bytes .../DBFilesContent/CharBaseInfo.dbc | Bin 0 -> 221 bytes .../DBFilesContent/CharStartOutfit.dbc | Bin 0 -> 65733 bytes .../(Optionnal)/1 - Copy for Custom Race.SQL | 30 + modules/mod-arac/sql/world/arac.sql | 16822 ++++++++++++++++ modules/mod-auto-resurrect/.editorconfig | 8 + .../.git_commit_template.txt | 45 + modules/mod-auto-resurrect/.gitattributes | 105 + .../.github/workflows/core-build.yml | 49 + modules/mod-auto-resurrect/.gitignore | 48 + modules/mod-auto-resurrect/LICENSE | 21 + modules/mod-auto-resurrect/README.md | 22 + modules/mod-auto-resurrect/conf/conf.sh.dist | 4 + .../conf/mod-auto-resurrect.conf.dist | 57 + modules/mod-auto-resurrect/include.sh | 9 + .../setup_git_commit_template.sh | 4 + modules/mod-auto-resurrect/src/AR_loader.cpp | 15 + .../src/mod_auto_resurrect.cpp | 78 + modules/mod-character-tools/.editorconfig | 8 + .../.git_commit_template.txt | 49 + modules/mod-character-tools/.gitattributes | 105 + .../.github/workflows/core-build.yml | 12 + modules/mod-character-tools/.gitignore | 48 + modules/mod-character-tools/LICENSE | 661 + modules/mod-character-tools/README.md | 40 + modules/mod-character-tools/conf/conf.sh.dist | 9 + .../conf/mod_charactertools.conf.dist | 10 + modules/mod-character-tools/include.sh | 9 + .../setup_git_commit_template.sh | 4 + .../mod-character-tools/sql/world/world.sql | 2 + modules/mod-character-tools/src/CT_loader.cpp | 6 + .../src/mod_charactertools.cpp | 64 + .../.github/workflows/core-build.yml | 45 + modules/mod-dynamic-xp/.gitignore | 48 + modules/mod-dynamic-xp/LICENSE | 674 + modules/mod-dynamic-xp/README.md | 22 + .../mod-dynamic-xp/conf/dynamicxp.conf.dist | 28 + modules/mod-dynamic-xp/include.sh | 0 modules/mod-dynamic-xp/src/DXP_loader.cpp | 5 + modules/mod-dynamic-xp/src/dynamicxp.cpp | 63 + modules/mod-eluna/.editorconfig | 8 + modules/mod-eluna/.git_commit_template.txt | 49 + modules/mod-eluna/.gitattributes | 105 + .../.github/workflows/core_build.yml | 12 + .../mod-eluna/.github/workflows/create-pr.sh | 41 + .../.github/workflows/documentation.yml | 38 + modules/mod-eluna/.gitignore | 48 + modules/mod-eluna/LICENSE | 674 + modules/mod-eluna/README.md | 137 + modules/mod-eluna/README_CN.md | 92 + modules/mod-eluna/README_ES.md | 26 + modules/mod-eluna/_config.yml | 1 + .../mod-eluna/conf/mod_LuaEngine.conf.dist | 120 + modules/mod-eluna/icon.png | Bin 0 -> 4095 bytes modules/mod-eluna/include.sh | 0 modules/mod-eluna/sql/README.md | 24 + modules/mod-eluna/sql/auth/.gitkeep | 0 modules/mod-eluna/sql/characters/.gitkeep | 0 modules/mod-eluna/sql/world/.gitkeep | 0 modules/mod-eluna/src/ElunaLuaEngine_SC.cpp | 1014 + modules/mod-eluna/src/LuaEngine/.editorconfig | 7 + .../src/LuaEngine/.github/workflows/build.yml | 63 + .../LuaEngine/.github/workflows/create-pr.sh | 36 + .../.github/workflows/documentation.yml | 38 + .../src/LuaEngine/AchievementMethods.h | 54 + modules/mod-eluna/src/LuaEngine/AuraMethods.h | 211 + .../src/LuaEngine/BattleGroundHooks.cpp | 62 + .../src/LuaEngine/BattleGroundMethods.h | 250 + modules/mod-eluna/src/LuaEngine/BindingMap.h | 375 + .../mod-eluna/src/LuaEngine/CMakeLists.txt | 80 + .../src/LuaEngine/ChatHandlerMethods.h | 192 + .../mod-eluna/src/LuaEngine/CorpseMethods.h | 81 + .../mod-eluna/src/LuaEngine/CreatureHooks.cpp | 333 + .../mod-eluna/src/LuaEngine/CreatureMethods.h | 1531 ++ .../mod-eluna/src/LuaEngine/ElunaCreatureAI.h | 280 + .../mod-eluna/src/LuaEngine/ElunaEventMgr.cpp | 160 + .../mod-eluna/src/LuaEngine/ElunaEventMgr.h | 112 + .../mod-eluna/src/LuaEngine/ElunaIncludes.h | 159 + .../src/LuaEngine/ElunaInstanceAI.cpp | 236 + .../mod-eluna/src/LuaEngine/ElunaInstanceAI.h | 157 + .../src/LuaEngine/ElunaQueryMethods.h | 369 + .../mod-eluna/src/LuaEngine/ElunaTemplate.h | 388 + .../mod-eluna/src/LuaEngine/ElunaUtility.cpp | 200 + .../mod-eluna/src/LuaEngine/ElunaUtility.h | 163 + .../src/LuaEngine/GameObjectHooks.cpp | 142 + .../src/LuaEngine/GameObjectMethods.h | 401 + .../mod-eluna/src/LuaEngine/GlobalMethods.h | 3496 ++++ .../mod-eluna/src/LuaEngine/GossipHooks.cpp | 147 + .../mod-eluna/src/LuaEngine/GroupHooks.cpp | 71 + .../mod-eluna/src/LuaEngine/GroupMethods.h | 464 + .../mod-eluna/src/LuaEngine/GuildHooks.cpp | 164 + .../mod-eluna/src/LuaEngine/GuildMethods.h | 305 + modules/mod-eluna/src/LuaEngine/HookHelpers.h | 121 + modules/mod-eluna/src/LuaEngine/Hooks.h | 369 + .../mod-eluna/src/LuaEngine/HttpManager.cpp | 276 + modules/mod-eluna/src/LuaEngine/HttpManager.h | 61 + .../mod-eluna/src/LuaEngine/InstanceHooks.cpp | 83 + modules/mod-eluna/src/LuaEngine/ItemHooks.cpp | 133 + modules/mod-eluna/src/LuaEngine/ItemMethods.h | 786 + .../src/LuaEngine/ItemTemplateMethods.h | 191 + modules/mod-eluna/src/LuaEngine/LuaEngine.cpp | 1373 ++ modules/mod-eluna/src/LuaEngine/LuaEngine.h | 590 + .../mod-eluna/src/LuaEngine/LuaFunctions.cpp | 1554 ++ modules/mod-eluna/src/LuaEngine/MapMethods.h | 373 + .../mod-eluna/src/LuaEngine/ObjectMethods.h | 477 + .../mod-eluna/src/LuaEngine/PacketHooks.cpp | 139 + .../mod-eluna/src/LuaEngine/PlayerHooks.cpp | 700 + .../mod-eluna/src/LuaEngine/PlayerMethods.h | 4355 ++++ .../mod-eluna/src/LuaEngine/QuestMethods.h | 187 + modules/mod-eluna/src/LuaEngine/RollMethods.h | 212 + .../mod-eluna/src/LuaEngine/ServerHooks.cpp | 397 + .../mod-eluna/src/LuaEngine/SpellMethods.h | 193 + modules/mod-eluna/src/LuaEngine/UnitMethods.h | 2657 +++ .../mod-eluna/src/LuaEngine/VehicleHooks.cpp | 66 + .../mod-eluna/src/LuaEngine/VehicleMethods.h | 117 + .../src/LuaEngine/WorldObjectMethods.h | 1233 ++ .../src/LuaEngine/WorldPacketMethods.h | 310 + .../mod-eluna/src/LuaEngine/docs/.gitignore | 2 + .../src/LuaEngine/docs/CONTRIBUTING.md | 19 + .../mod-eluna/src/LuaEngine/docs/DOC_GEN.md | 165 + .../mod-eluna/src/LuaEngine/docs/Eluna.png | Bin 0 -> 2570 bytes .../src/LuaEngine/docs/ElunaDoc/.gitignore | 2 + .../src/LuaEngine/docs/ElunaDoc/__init__.py | 0 .../src/LuaEngine/docs/ElunaDoc/__main__.py | 174 + .../src/LuaEngine/docs/ElunaDoc/parser.py | 333 + .../docs/ElunaDoc/static/FiraSans-Medium.woff | Bin 0 -> 89883 bytes .../ElunaDoc/static/FiraSans-Regular.woff | Bin 0 -> 91946 bytes .../ElunaDoc/static/Heuristica-Italic.woff | Bin 0 -> 119956 bytes .../static/SourceCodePro-Regular.woff | Bin 0 -> 55472 bytes .../static/SourceCodePro-Semibold.woff | Bin 0 -> 55360 bytes .../ElunaDoc/static/SourceSerifPro-Bold.woff | Bin 0 -> 48720 bytes .../static/SourceSerifPro-Regular.woff | Bin 0 -> 49960 bytes .../LuaEngine/docs/ElunaDoc/static/dark.css | 361 + .../docs/ElunaDoc/static/eluna-logo.png | Bin 0 -> 8484 bytes .../docs/ElunaDoc/static/favicon.ico | Bin 0 -> 2016 bytes .../LuaEngine/docs/ElunaDoc/static/jquery.js | 4 + .../LuaEngine/docs/ElunaDoc/static/main.css | 520 + .../LuaEngine/docs/ElunaDoc/static/main.js | 782 + .../docs/ElunaDoc/static/normalize.css | 1 + .../docs/ElunaDoc/templates/_base.html | 106 + .../docs/ElunaDoc/templates/class.html | 40 + .../LuaEngine/docs/ElunaDoc/templates/date.js | 1 + .../docs/ElunaDoc/templates/enum.html | 1 + .../docs/ElunaDoc/templates/index.html | 90 + .../docs/ElunaDoc/templates/method.html | 95 + .../docs/ElunaDoc/templates/search-index.js | 15 + .../docs/ElunaDoc/templates/sidebar.js | 5 + .../src/LuaEngine/docs/IMPL_DETAILS.md | 102 + .../mod-eluna/src/LuaEngine/docs/INSTALL.md | 42 + .../mod-eluna/src/LuaEngine/docs/MERGING.md | 42 + modules/mod-eluna/src/LuaEngine/docs/USAGE.md | 116 + .../LuaEngine/extensions/ObjectVariables.ext | 115 + .../extensions/StackTracePlus/LICENSE | 21 + .../extensions/StackTracePlus/README.md | 128 + .../StackTracePlus/StackTracePlus.ext | 411 + .../src/LuaEngine/extensions/_Misc.ext | 14 + .../mod-eluna/src/LuaEngine/libs/httplib.h | 9043 +++++++++ .../src/LuaEngine/libs/rigtorp/SPSCQueue.h | 227 + modules/mod-eluna/src/LuaEngine/lmarshal.cpp | 581 + modules/mod-eluna/src/LuaEngine/lmarshal.h | 12 + modules/mod-eluna/src/eluna_loader.cpp | 25 + modules/mod-eluna/src/lualib/CMakeLists.txt | 34 + modules/mod-eluna/src/lualib/lapi.c | 1284 ++ modules/mod-eluna/src/lualib/lapi.h | 24 + modules/mod-eluna/src/lualib/lauxlib.c | 959 + modules/mod-eluna/src/lualib/lauxlib.h | 212 + modules/mod-eluna/src/lualib/lbaselib.c | 458 + modules/mod-eluna/src/lualib/lbitlib.c | 212 + modules/mod-eluna/src/lualib/lcode.c | 881 + modules/mod-eluna/src/lualib/lcode.h | 83 + modules/mod-eluna/src/lualib/lcorolib.c | 155 + modules/mod-eluna/src/lualib/lctype.c | 52 + modules/mod-eluna/src/lualib/lctype.h | 95 + modules/mod-eluna/src/lualib/ldblib.c | 408 + modules/mod-eluna/src/lualib/ldebug.c | 610 + modules/mod-eluna/src/lualib/ldebug.h | 34 + modules/mod-eluna/src/lualib/ldo.c | 681 + modules/mod-eluna/src/lualib/ldo.h | 46 + modules/mod-eluna/src/lualib/ldump.c | 173 + modules/mod-eluna/src/lualib/lfunc.c | 161 + modules/mod-eluna/src/lualib/lfunc.h | 33 + modules/mod-eluna/src/lualib/lgc.c | 1220 ++ modules/mod-eluna/src/lualib/lgc.h | 157 + modules/mod-eluna/src/lualib/linit.c | 67 + modules/mod-eluna/src/lualib/liolib.c | 666 + modules/mod-eluna/src/lualib/llex.c | 530 + modules/mod-eluna/src/lualib/llex.h | 78 + modules/mod-eluna/src/lualib/llimits.h | 309 + modules/mod-eluna/src/lualib/lmathlib.c | 279 + modules/mod-eluna/src/lualib/lmem.c | 99 + modules/mod-eluna/src/lualib/lmem.h | 57 + modules/mod-eluna/src/lualib/loadlib.c | 725 + modules/mod-eluna/src/lualib/lobject.c | 287 + modules/mod-eluna/src/lualib/lobject.h | 607 + modules/mod-eluna/src/lualib/lopcodes.c | 107 + modules/mod-eluna/src/lualib/lopcodes.h | 288 + modules/mod-eluna/src/lualib/loslib.c | 323 + modules/mod-eluna/src/lualib/lparser.c | 1638 ++ modules/mod-eluna/src/lualib/lparser.h | 119 + modules/mod-eluna/src/lualib/lstate.c | 323 + modules/mod-eluna/src/lualib/lstate.h | 228 + modules/mod-eluna/src/lualib/lstring.c | 185 + modules/mod-eluna/src/lualib/lstring.h | 46 + modules/mod-eluna/src/lualib/lstrlib.c | 1019 + modules/mod-eluna/src/lualib/ltable.c | 588 + modules/mod-eluna/src/lualib/ltable.h | 45 + modules/mod-eluna/src/lualib/ltablib.c | 285 + modules/mod-eluna/src/lualib/ltm.c | 77 + modules/mod-eluna/src/lualib/ltm.h | 57 + modules/mod-eluna/src/lualib/lua.c | 497 + modules/mod-eluna/src/lualib/lua.h | 444 + modules/mod-eluna/src/lualib/lua.hpp | 9 + modules/mod-eluna/src/lualib/luac.c | 432 + modules/mod-eluna/src/lualib/luaconf.h | 551 + modules/mod-eluna/src/lualib/lualib.h | 55 + modules/mod-eluna/src/lualib/lundump.c | 258 + modules/mod-eluna/src/lualib/lundump.h | 28 + modules/mod-eluna/src/lualib/lvm.c | 867 + modules/mod-eluna/src/lualib/lvm.h | 44 + modules/mod-eluna/src/lualib/lzio.c | 76 + modules/mod-eluna/src/lualib/lzio.h | 65 + modules/mod-fireworks-on-level/.editorconfig | 8 + .../.git_commit_template.txt | 49 + modules/mod-fireworks-on-level/.gitattributes | 62 + .../.github/workflows/core-build.yml | 45 + modules/mod-fireworks-on-level/.gitignore | 50 + modules/mod-fireworks-on-level/LICENSE | 674 + modules/mod-fireworks-on-level/LICENSE.md | 650 + modules/mod-fireworks-on-level/README.md | 22 + .../conf/mod_customserver.conf.dist | 14 + modules/mod-fireworks-on-level/include.sh | 0 .../setup_git_commit_template.sh | 4 + .../mod-fireworks-on-level/src/FOL_loader.cpp | 5 + .../src/mod_customserver.cpp | 106 + modules/mod-learn-spells/.gitattributes | 2 + .../.github/workflows/core-build.yml | 12 + modules/mod-learn-spells/LICENSE.md | 650 + modules/mod-learn-spells/README.md | 9 + .../conf/mod_learnspells.conf.dist | 24 + modules/mod-learn-spells/include.sh | 0 modules/mod-learn-spells/src/LS_loader.cpp | 10 + .../mod-learn-spells/src/mod_learnspells.cpp | 351 + modules/mod-leech/LICENSE | 21 + modules/mod-leech/README.md | 2 + modules/mod-leech/conf/leech.conf.dist | 32 + modules/mod-leech/src/Leech.cpp | 42 + modules/mod-leech/src/Leech.h | 15 + modules/mod-leech/src/Leech_loader.cpp | 14 + modules/mod-mxwow-bosskill | 1 + modules/mod-mxwow-levelup | 1 + modules/mod-mxwow-portalmaster | 1 + modules/mod-mxwow-servant | 1 + modules/mod-mxwow-solopvp | 1 + modules/mod-mxwow-toonmaster | 1 + .../mod-no-hearthstone-cooldown/.editorconfig | 8 + .../.git_commit_template.txt | 45 + .../.gitattributes | 105 + .../.github/workflows/core-build.yml | 10 + .../mod-no-hearthstone-cooldown/.gitignore | 48 + modules/mod-no-hearthstone-cooldown/LICENSE | 661 + modules/mod-no-hearthstone-cooldown/README.md | 44 + .../conf/conf.sh.dist | 32 + .../mod_no_hearthstone_cooldown.conf.dist | 24 + .../mod-no-hearthstone-cooldown/include.sh | 10 + .../setup_git_commit_template.sh | 4 + .../src/NHC_loader.cpp | 12 + .../src/NoHearthstoneCooldown.cpp | 65 + modules/mod-npc-beastmaster/.editorconfig | 8 + .../.git_commit_template.txt | 45 + modules/mod-npc-beastmaster/.gitattributes | 105 + .../.github/workflows/core-build.yml | 45 + modules/mod-npc-beastmaster/.gitignore | 48 + modules/mod-npc-beastmaster/LICENSE.md | 650 + modules/mod-npc-beastmaster/README.md | 98 + modules/mod-npc-beastmaster/conf/conf.sh.dist | 17 + .../conf/npc_beastmaster.conf.dist | 41 + .../data/sql/db-world/npc_beastmaster.sql | 108 + .../data/sql/updates/world/.dummy | 1 + modules/mod-npc-beastmaster/include.sh | 9 + .../setup_git_commit_template.sh | 4 + .../src/NpcBeastmaster.cpp | 375 + .../mod-npc-beastmaster/src/NpcBeastmaster.h | 59 + .../src/NpcBeastmaster_SC.cpp | 115 + .../src/NpcBeastmaster_loader.cpp | 23 + modules/mod-random-enchants/.editorconfig | 8 + .../.git_commit_template.txt | 49 + modules/mod-random-enchants/.gitattributes | 105 + .../.github/workflows/core-build.yml | 12 + modules/mod-random-enchants/.gitignore | 48 + modules/mod-random-enchants/README.md | 15 + .../conf/RandomEnchants.conf.dist | 42 + modules/mod-random-enchants/conf/conf.sh.dist | 9 + modules/mod-random-enchants/include.sh | 9 + .../setup_git_commit_template.sh | 4 + .../world/item_enchatment_random_tiers.sql | 730 + modules/mod-random-enchants/src/RE_loader.cpp | 6 + .../src/RandomEnchants.cpp | 142 + modules/mod-reagent-bank | 1 + modules/mod-solo-lfg/.editorconfig | 8 + modules/mod-solo-lfg/.git_commit_template.txt | 49 + modules/mod-solo-lfg/.gitattributes | 105 + .../.github/ISSUE_TEMPLATE/bug_report.yml | 72 + .../ISSUE_TEMPLATE/feature_request.yml | 33 + .../.github/workflows/core-build.yml | 12 + modules/mod-solo-lfg/.gitignore | 47 + modules/mod-solo-lfg/LICENSE | 21 + modules/mod-solo-lfg/README.md | 54 + modules/mod-solo-lfg/conf/SoloLfg.conf.dist | 22 + modules/mod-solo-lfg/include.sh | 0 modules/mod-solo-lfg/pull_request_template.md | 25 + .../mod-solo-lfg/setup_git_commit_template.sh | 4 + modules/mod-solo-lfg/src/LFG_loader.cpp | 6 + modules/mod-solo-lfg/src/Lfg_Solo.cpp | 49 + modules/mod-solocraft/.editorconfig | 8 + modules/mod-solocraft/.gitattributes | 105 + .../.github/ISSUE_TEMPLATE/bug_report.yml | 72 + .../ISSUE_TEMPLATE/feature_request.yml | 33 + modules/mod-solocraft/.github/README.md | 64 + .../.github/workflows/core-build.yml | 11 + modules/mod-solocraft/.gitignore | 48 + modules/mod-solocraft/LICENSE | 674 + .../mod-solocraft/conf/Solocraft.conf.dist | 441 + modules/mod-solocraft/data/.gitkeep | 0 modules/mod-solocraft/data/sql/.gitkeep | 0 .../data/sql/db-characters/mod_solo_craft.sql | 8 + modules/mod-solocraft/include.sh | 0 .../mod-solocraft/pull_request_template.md | 25 + modules/mod-solocraft/src/SC_loader.cpp | 6 + modules/mod-solocraft/src/Solocraft.cpp | 712 + modules/mod-transmog/.editorconfig | 8 + modules/mod-transmog/.git_commit_template.txt | 49 + modules/mod-transmog/.gitattributes | 105 + .../.github/workflows/core_build.yml | 12 + modules/mod-transmog/.gitignore | 48 + modules/mod-transmog/LICENSE | 661 + modules/mod-transmog/README.md | 70 + modules/mod-transmog/conf/conf.sh.dist | 26 + modules/mod-transmog/conf/transmog.conf.dist | 245 + .../data/sql/db-characters/trasmorg.sql | 26 + .../data/sql/db-world/trasm_world_NPC.sql | 7 + .../data/sql/db-world/trasm_world_texts.sql | 33 + .../mod-transmog/data/sql/updates/char/.dummy | 1 + .../data/sql/updates/world/.dummy | 1 + modules/mod-transmog/icon.png | Bin 0 -> 28796 bytes modules/mod-transmog/include.sh | 9 + .../mod-transmog/setup_git_commit_template.sh | 4 + .../mod-transmog/src/Transmogrification.cpp | 921 + modules/mod-transmog/src/Transmogrification.h | 202 + modules/mod-transmog/src/cs_transmog.cpp | 292 + modules/mod-transmog/src/transmog_loader.cpp | 15 + modules/mod-transmog/src/transmog_scripts.cpp | 809 + 429 files changed, 104850 insertions(+), 6 deletions(-) create mode 100644 modules/DungeonRespawn/.editorconfig create mode 100644 modules/DungeonRespawn/.git_commit_template.txt create mode 100644 modules/DungeonRespawn/.gitattributes create mode 100644 modules/DungeonRespawn/.github/workflows/core-build.yml create mode 100644 modules/DungeonRespawn/.gitignore create mode 100644 modules/DungeonRespawn/LICENSE create mode 100644 modules/DungeonRespawn/README.md create mode 100644 modules/DungeonRespawn/README_ES.md create mode 100644 modules/DungeonRespawn/README_example.md create mode 100644 modules/DungeonRespawn/conf/conf.sh.dist create mode 100644 modules/DungeonRespawn/conf/dungeonrespawn.conf.dist create mode 100644 modules/DungeonRespawn/data/sql/db-characters/base/dungeonrespawn_char_0000_00_00_00.sql create mode 100644 modules/DungeonRespawn/data/sql/db-characters/updates/dungeonrespawn_char_2023_01_12_01.sql create mode 100644 modules/DungeonRespawn/icon.png create mode 100644 modules/DungeonRespawn/include.sh create mode 100644 modules/DungeonRespawn/setup_git_commit_template.sh create mode 100644 modules/DungeonRespawn/src/DungeonRespawn.cpp create mode 100644 modules/DungeonRespawn/src/DungeonRespawn.h create mode 100644 modules/DungeonRespawn/src/MP_loader.cpp create mode 100644 modules/mod-accountbound/.github/README.md create mode 100644 modules/mod-accountbound/.github/workflows/core-build.yml create mode 100644 modules/mod-accountbound/LICENSE create mode 100644 modules/mod-accountbound/README.md create mode 100644 modules/mod-accountbound/conf/conf.sh.dist create mode 100644 modules/mod-accountbound/conf/mod_accountbound.conf.dist create mode 100644 modules/mod-accountbound/data/sql/db-auth/base/account_bound_companion_template.sql create mode 100644 modules/mod-accountbound/data/sql/db-auth/base/account_bound_companions.sql create mode 100644 modules/mod-accountbound/data/sql/db-auth/base/account_bound_factionchange_spells.sql create mode 100644 modules/mod-accountbound/data/sql/db-auth/base/account_bound_heirlooms.sql create mode 100644 modules/mod-accountbound/data/sql/db-auth/base/account_bound_mount_template.sql create mode 100644 modules/mod-accountbound/data/sql/db-auth/base/account_bound_mounts.sql create mode 100644 modules/mod-accountbound/data/sql/db-world/base/account_bound_creature_template.sql create mode 100644 modules/mod-accountbound/include.sh create mode 100644 modules/mod-accountbound/src/loader.cpp create mode 100644 modules/mod-accountbound/src/mod_accountbound.cpp create mode 100644 modules/mod-ah-bot/.editorconfig create mode 100644 modules/mod-ah-bot/.gitattributes create mode 100644 modules/mod-ah-bot/.github/workflows/core-build.yml create mode 100644 modules/mod-ah-bot/.gitignore create mode 100644 modules/mod-ah-bot/README.md create mode 100644 modules/mod-ah-bot/conf/conf.sh.dist create mode 100644 modules/mod-ah-bot/conf/mod_ahbot.conf.dist create mode 100644 modules/mod-ah-bot/include.sh create mode 100644 modules/mod-ah-bot/sql/world/base/mod_auctionhousebot.sql create mode 100644 modules/mod-ah-bot/src/AuctionHouseBot.cpp create mode 100644 modules/mod-ah-bot/src/AuctionHouseBot.h create mode 100644 modules/mod-ah-bot/src/AuctionHouseBotScript.cpp create mode 100644 modules/mod-ah-bot/src/ah_bot_loader.cpp create mode 100644 modules/mod-ah-bot/src/cs_ah_bot.cpp create mode 100644 modules/mod-aoe-loot/.editorconfig create mode 100644 modules/mod-aoe-loot/.gitattributes create mode 100644 modules/mod-aoe-loot/.github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 modules/mod-aoe-loot/.github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 modules/mod-aoe-loot/.github/README.md create mode 100644 modules/mod-aoe-loot/.github/README_ES.md create mode 100644 modules/mod-aoe-loot/.github/workflows/core-build.yml create mode 100644 modules/mod-aoe-loot/.gitignore create mode 100644 modules/mod-aoe-loot/conf/mod_aoe_loot.conf.dist create mode 100644 modules/mod-aoe-loot/data/.gitkeep create mode 100644 modules/mod-aoe-loot/data/sql/db-auth/base/.gitkeep create mode 100644 modules/mod-aoe-loot/data/sql/db-auth/updates/.gitkeep create mode 100644 modules/mod-aoe-loot/data/sql/db-characters/base/.gitkeep create mode 100644 modules/mod-aoe-loot/data/sql/db-characters/updates/.gitkeep create mode 100644 modules/mod-aoe-loot/data/sql/db-world/base/.gitkeep create mode 100644 modules/mod-aoe-loot/data/sql/db-world/base/aoe_loot_acore_string.sql create mode 100644 modules/mod-aoe-loot/data/sql/db-world/updates/.gitkeep create mode 100644 modules/mod-aoe-loot/include.sh create mode 100644 modules/mod-aoe-loot/pull_request_template.md create mode 100644 modules/mod-aoe-loot/src/AoeLoot_SC.cpp create mode 100644 modules/mod-aoe-loot/src/aoe_loot_loader.cpp create mode 100644 modules/mod-arac/.github/workflows/core-build.yml create mode 100644 modules/mod-arac/LICENSE create mode 100644 modules/mod-arac/Patch-A.MPQ create mode 100644 modules/mod-arac/README.md create mode 100644 modules/mod-arac/icon.png create mode 100644 modules/mod-arac/icons.png create mode 100644 modules/mod-arac/images/screen1.png create mode 100644 modules/mod-arac/images/screen2.png create mode 100644 modules/mod-arac/patch-contents/DBFilesContent/CharBaseInfo.dbc create mode 100644 modules/mod-arac/patch-contents/DBFilesContent/CharStartOutfit.dbc create mode 100644 modules/mod-arac/sql/world/(Optionnal)/1 - Copy for Custom Race.SQL create mode 100644 modules/mod-arac/sql/world/arac.sql create mode 100644 modules/mod-auto-resurrect/.editorconfig create mode 100644 modules/mod-auto-resurrect/.git_commit_template.txt create mode 100644 modules/mod-auto-resurrect/.gitattributes create mode 100644 modules/mod-auto-resurrect/.github/workflows/core-build.yml create mode 100644 modules/mod-auto-resurrect/.gitignore create mode 100644 modules/mod-auto-resurrect/LICENSE create mode 100644 modules/mod-auto-resurrect/README.md create mode 100644 modules/mod-auto-resurrect/conf/conf.sh.dist create mode 100644 modules/mod-auto-resurrect/conf/mod-auto-resurrect.conf.dist create mode 100644 modules/mod-auto-resurrect/include.sh create mode 100644 modules/mod-auto-resurrect/setup_git_commit_template.sh create mode 100644 modules/mod-auto-resurrect/src/AR_loader.cpp create mode 100644 modules/mod-auto-resurrect/src/mod_auto_resurrect.cpp create mode 100644 modules/mod-character-tools/.editorconfig create mode 100644 modules/mod-character-tools/.git_commit_template.txt create mode 100644 modules/mod-character-tools/.gitattributes create mode 100644 modules/mod-character-tools/.github/workflows/core-build.yml create mode 100644 modules/mod-character-tools/.gitignore create mode 100644 modules/mod-character-tools/LICENSE create mode 100644 modules/mod-character-tools/README.md create mode 100644 modules/mod-character-tools/conf/conf.sh.dist create mode 100644 modules/mod-character-tools/conf/mod_charactertools.conf.dist create mode 100644 modules/mod-character-tools/include.sh create mode 100644 modules/mod-character-tools/setup_git_commit_template.sh create mode 100644 modules/mod-character-tools/sql/world/world.sql create mode 100644 modules/mod-character-tools/src/CT_loader.cpp create mode 100644 modules/mod-character-tools/src/mod_charactertools.cpp create mode 100644 modules/mod-dynamic-xp/.github/workflows/core-build.yml create mode 100644 modules/mod-dynamic-xp/.gitignore create mode 100644 modules/mod-dynamic-xp/LICENSE create mode 100644 modules/mod-dynamic-xp/README.md create mode 100644 modules/mod-dynamic-xp/conf/dynamicxp.conf.dist create mode 100644 modules/mod-dynamic-xp/include.sh create mode 100644 modules/mod-dynamic-xp/src/DXP_loader.cpp create mode 100644 modules/mod-dynamic-xp/src/dynamicxp.cpp create mode 100644 modules/mod-eluna/.editorconfig create mode 100644 modules/mod-eluna/.git_commit_template.txt create mode 100644 modules/mod-eluna/.gitattributes create mode 100644 modules/mod-eluna/.github/workflows/core_build.yml create mode 100644 modules/mod-eluna/.github/workflows/create-pr.sh create mode 100644 modules/mod-eluna/.github/workflows/documentation.yml create mode 100644 modules/mod-eluna/.gitignore create mode 100644 modules/mod-eluna/LICENSE create mode 100644 modules/mod-eluna/README.md create mode 100644 modules/mod-eluna/README_CN.md create mode 100644 modules/mod-eluna/README_ES.md create mode 100644 modules/mod-eluna/_config.yml create mode 100644 modules/mod-eluna/conf/mod_LuaEngine.conf.dist create mode 100644 modules/mod-eluna/icon.png create mode 100644 modules/mod-eluna/include.sh create mode 100644 modules/mod-eluna/sql/README.md create mode 100644 modules/mod-eluna/sql/auth/.gitkeep create mode 100644 modules/mod-eluna/sql/characters/.gitkeep create mode 100644 modules/mod-eluna/sql/world/.gitkeep create mode 100644 modules/mod-eluna/src/ElunaLuaEngine_SC.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/.editorconfig create mode 100644 modules/mod-eluna/src/LuaEngine/.github/workflows/build.yml create mode 100644 modules/mod-eluna/src/LuaEngine/.github/workflows/create-pr.sh create mode 100644 modules/mod-eluna/src/LuaEngine/.github/workflows/documentation.yml create mode 100644 modules/mod-eluna/src/LuaEngine/AchievementMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/AuraMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/BattleGroundHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/BattleGroundMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/BindingMap.h create mode 100644 modules/mod-eluna/src/LuaEngine/CMakeLists.txt create mode 100644 modules/mod-eluna/src/LuaEngine/ChatHandlerMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/CorpseMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/CreatureHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/CreatureMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/ElunaCreatureAI.h create mode 100644 modules/mod-eluna/src/LuaEngine/ElunaEventMgr.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/ElunaEventMgr.h create mode 100644 modules/mod-eluna/src/LuaEngine/ElunaIncludes.h create mode 100644 modules/mod-eluna/src/LuaEngine/ElunaInstanceAI.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/ElunaInstanceAI.h create mode 100644 modules/mod-eluna/src/LuaEngine/ElunaQueryMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/ElunaTemplate.h create mode 100644 modules/mod-eluna/src/LuaEngine/ElunaUtility.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/ElunaUtility.h create mode 100644 modules/mod-eluna/src/LuaEngine/GameObjectHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/GameObjectMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/GlobalMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/GossipHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/GroupHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/GroupMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/GuildHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/GuildMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/HookHelpers.h create mode 100644 modules/mod-eluna/src/LuaEngine/Hooks.h create mode 100644 modules/mod-eluna/src/LuaEngine/HttpManager.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/HttpManager.h create mode 100644 modules/mod-eluna/src/LuaEngine/InstanceHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/ItemHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/ItemMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/ItemTemplateMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/LuaEngine.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/LuaEngine.h create mode 100644 modules/mod-eluna/src/LuaEngine/LuaFunctions.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/MapMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/ObjectMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/PacketHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/PlayerHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/PlayerMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/QuestMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/RollMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/ServerHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/SpellMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/UnitMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/VehicleHooks.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/VehicleMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/WorldObjectMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/WorldPacketMethods.h create mode 100644 modules/mod-eluna/src/LuaEngine/docs/.gitignore create mode 100644 modules/mod-eluna/src/LuaEngine/docs/CONTRIBUTING.md create mode 100644 modules/mod-eluna/src/LuaEngine/docs/DOC_GEN.md create mode 100644 modules/mod-eluna/src/LuaEngine/docs/Eluna.png create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/.gitignore create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/__init__.py create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/__main__.py create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/parser.py create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/FiraSans-Medium.woff create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/FiraSans-Regular.woff create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/Heuristica-Italic.woff create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceCodePro-Regular.woff create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceCodePro-Semibold.woff create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceSerifPro-Bold.woff create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceSerifPro-Regular.woff create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/dark.css create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/eluna-logo.png create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/favicon.ico create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/jquery.js create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/main.css create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/main.js create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/normalize.css create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/templates/_base.html create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/templates/class.html create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/templates/date.js create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/templates/enum.html create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/templates/index.html create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/templates/method.html create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/templates/search-index.js create mode 100644 modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/templates/sidebar.js create mode 100644 modules/mod-eluna/src/LuaEngine/docs/IMPL_DETAILS.md create mode 100644 modules/mod-eluna/src/LuaEngine/docs/INSTALL.md create mode 100644 modules/mod-eluna/src/LuaEngine/docs/MERGING.md create mode 100644 modules/mod-eluna/src/LuaEngine/docs/USAGE.md create mode 100644 modules/mod-eluna/src/LuaEngine/extensions/ObjectVariables.ext create mode 100644 modules/mod-eluna/src/LuaEngine/extensions/StackTracePlus/LICENSE create mode 100644 modules/mod-eluna/src/LuaEngine/extensions/StackTracePlus/README.md create mode 100644 modules/mod-eluna/src/LuaEngine/extensions/StackTracePlus/StackTracePlus.ext create mode 100644 modules/mod-eluna/src/LuaEngine/extensions/_Misc.ext create mode 100644 modules/mod-eluna/src/LuaEngine/libs/httplib.h create mode 100644 modules/mod-eluna/src/LuaEngine/libs/rigtorp/SPSCQueue.h create mode 100644 modules/mod-eluna/src/LuaEngine/lmarshal.cpp create mode 100644 modules/mod-eluna/src/LuaEngine/lmarshal.h create mode 100644 modules/mod-eluna/src/eluna_loader.cpp create mode 100644 modules/mod-eluna/src/lualib/CMakeLists.txt create mode 100644 modules/mod-eluna/src/lualib/lapi.c create mode 100644 modules/mod-eluna/src/lualib/lapi.h create mode 100644 modules/mod-eluna/src/lualib/lauxlib.c create mode 100644 modules/mod-eluna/src/lualib/lauxlib.h create mode 100644 modules/mod-eluna/src/lualib/lbaselib.c create mode 100644 modules/mod-eluna/src/lualib/lbitlib.c create mode 100644 modules/mod-eluna/src/lualib/lcode.c create mode 100644 modules/mod-eluna/src/lualib/lcode.h create mode 100644 modules/mod-eluna/src/lualib/lcorolib.c create mode 100644 modules/mod-eluna/src/lualib/lctype.c create mode 100644 modules/mod-eluna/src/lualib/lctype.h create mode 100644 modules/mod-eluna/src/lualib/ldblib.c create mode 100644 modules/mod-eluna/src/lualib/ldebug.c create mode 100644 modules/mod-eluna/src/lualib/ldebug.h create mode 100644 modules/mod-eluna/src/lualib/ldo.c create mode 100644 modules/mod-eluna/src/lualib/ldo.h create mode 100644 modules/mod-eluna/src/lualib/ldump.c create mode 100644 modules/mod-eluna/src/lualib/lfunc.c create mode 100644 modules/mod-eluna/src/lualib/lfunc.h create mode 100644 modules/mod-eluna/src/lualib/lgc.c create mode 100644 modules/mod-eluna/src/lualib/lgc.h create mode 100644 modules/mod-eluna/src/lualib/linit.c create mode 100644 modules/mod-eluna/src/lualib/liolib.c create mode 100644 modules/mod-eluna/src/lualib/llex.c create mode 100644 modules/mod-eluna/src/lualib/llex.h create mode 100644 modules/mod-eluna/src/lualib/llimits.h create mode 100644 modules/mod-eluna/src/lualib/lmathlib.c create mode 100644 modules/mod-eluna/src/lualib/lmem.c create mode 100644 modules/mod-eluna/src/lualib/lmem.h create mode 100644 modules/mod-eluna/src/lualib/loadlib.c create mode 100644 modules/mod-eluna/src/lualib/lobject.c create mode 100644 modules/mod-eluna/src/lualib/lobject.h create mode 100644 modules/mod-eluna/src/lualib/lopcodes.c create mode 100644 modules/mod-eluna/src/lualib/lopcodes.h create mode 100644 modules/mod-eluna/src/lualib/loslib.c create mode 100644 modules/mod-eluna/src/lualib/lparser.c create mode 100644 modules/mod-eluna/src/lualib/lparser.h create mode 100644 modules/mod-eluna/src/lualib/lstate.c create mode 100644 modules/mod-eluna/src/lualib/lstate.h create mode 100644 modules/mod-eluna/src/lualib/lstring.c create mode 100644 modules/mod-eluna/src/lualib/lstring.h create mode 100644 modules/mod-eluna/src/lualib/lstrlib.c create mode 100644 modules/mod-eluna/src/lualib/ltable.c create mode 100644 modules/mod-eluna/src/lualib/ltable.h create mode 100644 modules/mod-eluna/src/lualib/ltablib.c create mode 100644 modules/mod-eluna/src/lualib/ltm.c create mode 100644 modules/mod-eluna/src/lualib/ltm.h create mode 100644 modules/mod-eluna/src/lualib/lua.c create mode 100644 modules/mod-eluna/src/lualib/lua.h create mode 100644 modules/mod-eluna/src/lualib/lua.hpp create mode 100644 modules/mod-eluna/src/lualib/luac.c create mode 100644 modules/mod-eluna/src/lualib/luaconf.h create mode 100644 modules/mod-eluna/src/lualib/lualib.h create mode 100644 modules/mod-eluna/src/lualib/lundump.c create mode 100644 modules/mod-eluna/src/lualib/lundump.h create mode 100644 modules/mod-eluna/src/lualib/lvm.c create mode 100644 modules/mod-eluna/src/lualib/lvm.h create mode 100644 modules/mod-eluna/src/lualib/lzio.c create mode 100644 modules/mod-eluna/src/lualib/lzio.h create mode 100644 modules/mod-fireworks-on-level/.editorconfig create mode 100644 modules/mod-fireworks-on-level/.git_commit_template.txt create mode 100644 modules/mod-fireworks-on-level/.gitattributes create mode 100644 modules/mod-fireworks-on-level/.github/workflows/core-build.yml create mode 100644 modules/mod-fireworks-on-level/.gitignore create mode 100644 modules/mod-fireworks-on-level/LICENSE create mode 100644 modules/mod-fireworks-on-level/LICENSE.md create mode 100644 modules/mod-fireworks-on-level/README.md create mode 100644 modules/mod-fireworks-on-level/conf/mod_customserver.conf.dist create mode 100644 modules/mod-fireworks-on-level/include.sh create mode 100644 modules/mod-fireworks-on-level/setup_git_commit_template.sh create mode 100644 modules/mod-fireworks-on-level/src/FOL_loader.cpp create mode 100644 modules/mod-fireworks-on-level/src/mod_customserver.cpp create mode 100644 modules/mod-learn-spells/.gitattributes create mode 100644 modules/mod-learn-spells/.github/workflows/core-build.yml create mode 100644 modules/mod-learn-spells/LICENSE.md create mode 100644 modules/mod-learn-spells/README.md create mode 100644 modules/mod-learn-spells/conf/mod_learnspells.conf.dist create mode 100644 modules/mod-learn-spells/include.sh create mode 100644 modules/mod-learn-spells/src/LS_loader.cpp create mode 100644 modules/mod-learn-spells/src/mod_learnspells.cpp create mode 100644 modules/mod-leech/LICENSE create mode 100644 modules/mod-leech/README.md create mode 100644 modules/mod-leech/conf/leech.conf.dist create mode 100644 modules/mod-leech/src/Leech.cpp create mode 100644 modules/mod-leech/src/Leech.h create mode 100644 modules/mod-leech/src/Leech_loader.cpp create mode 160000 modules/mod-mxwow-bosskill create mode 160000 modules/mod-mxwow-levelup create mode 160000 modules/mod-mxwow-portalmaster create mode 160000 modules/mod-mxwow-servant create mode 160000 modules/mod-mxwow-solopvp create mode 160000 modules/mod-mxwow-toonmaster create mode 100644 modules/mod-no-hearthstone-cooldown/.editorconfig create mode 100644 modules/mod-no-hearthstone-cooldown/.git_commit_template.txt create mode 100644 modules/mod-no-hearthstone-cooldown/.gitattributes create mode 100644 modules/mod-no-hearthstone-cooldown/.github/workflows/core-build.yml create mode 100644 modules/mod-no-hearthstone-cooldown/.gitignore create mode 100644 modules/mod-no-hearthstone-cooldown/LICENSE create mode 100644 modules/mod-no-hearthstone-cooldown/README.md create mode 100644 modules/mod-no-hearthstone-cooldown/conf/conf.sh.dist create mode 100644 modules/mod-no-hearthstone-cooldown/conf/mod_no_hearthstone_cooldown.conf.dist create mode 100644 modules/mod-no-hearthstone-cooldown/include.sh create mode 100644 modules/mod-no-hearthstone-cooldown/setup_git_commit_template.sh create mode 100644 modules/mod-no-hearthstone-cooldown/src/NHC_loader.cpp create mode 100644 modules/mod-no-hearthstone-cooldown/src/NoHearthstoneCooldown.cpp create mode 100644 modules/mod-npc-beastmaster/.editorconfig create mode 100644 modules/mod-npc-beastmaster/.git_commit_template.txt create mode 100644 modules/mod-npc-beastmaster/.gitattributes create mode 100644 modules/mod-npc-beastmaster/.github/workflows/core-build.yml create mode 100644 modules/mod-npc-beastmaster/.gitignore create mode 100644 modules/mod-npc-beastmaster/LICENSE.md create mode 100644 modules/mod-npc-beastmaster/README.md create mode 100644 modules/mod-npc-beastmaster/conf/conf.sh.dist create mode 100644 modules/mod-npc-beastmaster/conf/npc_beastmaster.conf.dist create mode 100644 modules/mod-npc-beastmaster/data/sql/db-world/npc_beastmaster.sql create mode 100644 modules/mod-npc-beastmaster/data/sql/updates/world/.dummy create mode 100644 modules/mod-npc-beastmaster/include.sh create mode 100644 modules/mod-npc-beastmaster/setup_git_commit_template.sh create mode 100644 modules/mod-npc-beastmaster/src/NpcBeastmaster.cpp create mode 100644 modules/mod-npc-beastmaster/src/NpcBeastmaster.h create mode 100644 modules/mod-npc-beastmaster/src/NpcBeastmaster_SC.cpp create mode 100644 modules/mod-npc-beastmaster/src/NpcBeastmaster_loader.cpp create mode 100644 modules/mod-random-enchants/.editorconfig create mode 100644 modules/mod-random-enchants/.git_commit_template.txt create mode 100644 modules/mod-random-enchants/.gitattributes create mode 100644 modules/mod-random-enchants/.github/workflows/core-build.yml create mode 100644 modules/mod-random-enchants/.gitignore create mode 100644 modules/mod-random-enchants/README.md create mode 100644 modules/mod-random-enchants/conf/RandomEnchants.conf.dist create mode 100644 modules/mod-random-enchants/conf/conf.sh.dist create mode 100644 modules/mod-random-enchants/include.sh create mode 100644 modules/mod-random-enchants/setup_git_commit_template.sh create mode 100644 modules/mod-random-enchants/sql/world/item_enchatment_random_tiers.sql create mode 100644 modules/mod-random-enchants/src/RE_loader.cpp create mode 100644 modules/mod-random-enchants/src/RandomEnchants.cpp create mode 160000 modules/mod-reagent-bank create mode 100644 modules/mod-solo-lfg/.editorconfig create mode 100644 modules/mod-solo-lfg/.git_commit_template.txt create mode 100644 modules/mod-solo-lfg/.gitattributes create mode 100644 modules/mod-solo-lfg/.github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 modules/mod-solo-lfg/.github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 modules/mod-solo-lfg/.github/workflows/core-build.yml create mode 100644 modules/mod-solo-lfg/.gitignore create mode 100644 modules/mod-solo-lfg/LICENSE create mode 100644 modules/mod-solo-lfg/README.md create mode 100644 modules/mod-solo-lfg/conf/SoloLfg.conf.dist create mode 100644 modules/mod-solo-lfg/include.sh create mode 100644 modules/mod-solo-lfg/pull_request_template.md create mode 100644 modules/mod-solo-lfg/setup_git_commit_template.sh create mode 100644 modules/mod-solo-lfg/src/LFG_loader.cpp create mode 100644 modules/mod-solo-lfg/src/Lfg_Solo.cpp create mode 100644 modules/mod-solocraft/.editorconfig create mode 100644 modules/mod-solocraft/.gitattributes create mode 100644 modules/mod-solocraft/.github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 modules/mod-solocraft/.github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 modules/mod-solocraft/.github/README.md create mode 100644 modules/mod-solocraft/.github/workflows/core-build.yml create mode 100644 modules/mod-solocraft/.gitignore create mode 100644 modules/mod-solocraft/LICENSE create mode 100644 modules/mod-solocraft/conf/Solocraft.conf.dist create mode 100644 modules/mod-solocraft/data/.gitkeep create mode 100644 modules/mod-solocraft/data/sql/.gitkeep create mode 100644 modules/mod-solocraft/data/sql/db-characters/mod_solo_craft.sql create mode 100644 modules/mod-solocraft/include.sh create mode 100644 modules/mod-solocraft/pull_request_template.md create mode 100644 modules/mod-solocraft/src/SC_loader.cpp create mode 100644 modules/mod-solocraft/src/Solocraft.cpp create mode 100644 modules/mod-transmog/.editorconfig create mode 100644 modules/mod-transmog/.git_commit_template.txt create mode 100644 modules/mod-transmog/.gitattributes create mode 100644 modules/mod-transmog/.github/workflows/core_build.yml create mode 100644 modules/mod-transmog/.gitignore create mode 100644 modules/mod-transmog/LICENSE create mode 100644 modules/mod-transmog/README.md create mode 100644 modules/mod-transmog/conf/conf.sh.dist create mode 100644 modules/mod-transmog/conf/transmog.conf.dist create mode 100644 modules/mod-transmog/data/sql/db-characters/trasmorg.sql create mode 100644 modules/mod-transmog/data/sql/db-world/trasm_world_NPC.sql create mode 100644 modules/mod-transmog/data/sql/db-world/trasm_world_texts.sql create mode 100644 modules/mod-transmog/data/sql/updates/char/.dummy create mode 100644 modules/mod-transmog/data/sql/updates/world/.dummy create mode 100644 modules/mod-transmog/icon.png create mode 100644 modules/mod-transmog/include.sh create mode 100644 modules/mod-transmog/setup_git_commit_template.sh create mode 100644 modules/mod-transmog/src/Transmogrification.cpp create mode 100644 modules/mod-transmog/src/Transmogrification.h create mode 100644 modules/mod-transmog/src/cs_transmog.cpp create mode 100644 modules/mod-transmog/src/transmog_loader.cpp create mode 100644 modules/mod-transmog/src/transmog_scripts.cpp diff --git a/.gitignore b/.gitignore index e9f55da..9d47849 100644 --- a/.gitignore +++ b/.gitignore @@ -4,12 +4,6 @@ /conf/* !/conf/dist -/modules/* -!/modules/*.md -!/modules/*.sh -!/modules/CMakeLists.txt -!/modules/*.h -!/modules/*.cmake /build*/ /var/* !/var/build/.gitkeep diff --git a/modules/DungeonRespawn/.editorconfig b/modules/DungeonRespawn/.editorconfig new file mode 100644 index 0000000..eb64e2f --- /dev/null +++ b/modules/DungeonRespawn/.editorconfig @@ -0,0 +1,8 @@ +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +tab_width = 4 +insert_final_newline = true +trim_trailing_whitespace = true +max_line_length = 80 diff --git a/modules/DungeonRespawn/.git_commit_template.txt b/modules/DungeonRespawn/.git_commit_template.txt new file mode 100644 index 0000000..5c5d933 --- /dev/null +++ b/modules/DungeonRespawn/.git_commit_template.txt @@ -0,0 +1,45 @@ +### TITLE +## Type(Scope/Subscope): Commit ultra short explanation +## |---- Write below the examples with a maximum of 50 characters ----| +## Example 1: fix(DB/SAI): Missing spell to NPC Hogger +## Example 2: fix(CORE/Raid): Phase 2 of Ragnaros +## Example 3: feat(CORE/Commands): New GM command to do something + +### DESCRIPTION +## Explain why this change is being made, what does it fix etc... +## |---- Write below the examples with a maximum of 72 characters per lines ----| +## Example: Hogger (id: 492) was not charging player when being engaged. + +## Provide links to any issue, commit, pull request or other resource +## Example 1: Closes issue #23 +## Example 2: Ported from other project's commit (link) +## Example 3: References taken from wowpedia / wowhead / wowwiki / https://wowgaming.altervista.org/aowow/ + +## ======================================================= +## EXTRA INFOS +## ======================================================= +## "Type" can be: +## feat (new feature) +## fix (bug fix) +## refactor (refactoring production code) +## style (formatting, missing semi colons, etc; no code change) +## docs (changes to documentation) +## test (adding or refactoring tests; no production code change) +## chore (updating bash scripts, git files etc; no production code change) +## -------------------- +## Remember to +## Capitalize the subject line +## Use the imperative mood in the subject line +## Do not end the subject line with a period +## Separate subject from body with a blank line +## Use the body to explain what and why rather than how +## Can use multiple lines with "-" for bullet points in body +## -------------------- +## More info here https://www.conventionalcommits.org/en/v1.0.0-beta.2/ +## ======================================================= +## "Scope" can be: +## CORE (core related, c++) +## DB (database related, sql) +## ======================================================= +## "Subscope" is optional and depends on the nature of the commit. +## ======================================================= diff --git a/modules/DungeonRespawn/.gitattributes b/modules/DungeonRespawn/.gitattributes new file mode 100644 index 0000000..7ef9001 --- /dev/null +++ b/modules/DungeonRespawn/.gitattributes @@ -0,0 +1,105 @@ +## AUTO-DETECT +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto eol=lf + +# Text +*.conf text +*.conf.dist text +*.cmake text + +## Scripts +*.sh text +*.fish text +*.lua text + +## SQL +*.sql text + +## C++ +*.c text +*.cc text +*.cxx text +*.cpp text +*.c++ text +*.hpp text +*.h text +*.h++ text +*.hh text + + +## For documentation + +# Documents +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain + +## DOCUMENTATION +*.markdown text +*.md text +*.mdwn text +*.mdown text +*.mkd text +*.mkdn text +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +copyright text +*COPYRIGHT* text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +## GRAPHICS +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +*.svg text +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + + +## ARCHIVES +*.7z binary +*.gz binary +*.jar binary +*.rar binary +*.tar binary +*.zip binary + +## EXECUTABLES +*.exe binary +*.pyc binary diff --git a/modules/DungeonRespawn/.github/workflows/core-build.yml b/modules/DungeonRespawn/.github/workflows/core-build.yml new file mode 100644 index 0000000..a178aed --- /dev/null +++ b/modules/DungeonRespawn/.github/workflows/core-build.yml @@ -0,0 +1,11 @@ +name: core-build +on: + push: + pull_request: + workflow_dispatch: + +jobs: + build: + uses: azerothcore/reusable-workflows/.github/workflows/core_build_modules.yml@main + with: + module_repo: ${{ github.event.repository.name }} diff --git a/modules/DungeonRespawn/.gitignore b/modules/DungeonRespawn/.gitignore new file mode 100644 index 0000000..c6e1299 --- /dev/null +++ b/modules/DungeonRespawn/.gitignore @@ -0,0 +1,48 @@ +!.gitignore + +# +#Generic +# + +.directory +.mailmap +*.orig +*.rej +*.*~ +.hg/ +*.kdev* +.DS_Store +CMakeLists.txt.user +*.bak +*.patch +*.diff +*.REMOTE.* +*.BACKUP.* +*.BASE.* +*.LOCAL.* + +# +# IDE & other softwares +# +/.settings/ +/.externalToolBuilders/* +# exclude in all levels +nbproject/ +.sync.ffs_db +*.kate-swp + +# +# Eclipse +# +*.pydevproject +.metadata +.gradle +tmp/ +*.tmp +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.project +.cproject diff --git a/modules/DungeonRespawn/LICENSE b/modules/DungeonRespawn/LICENSE new file mode 100644 index 0000000..9031171 --- /dev/null +++ b/modules/DungeonRespawn/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 AzerothCore + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/modules/DungeonRespawn/README.md b/modules/DungeonRespawn/README.md new file mode 100644 index 0000000..3270df6 --- /dev/null +++ b/modules/DungeonRespawn/README.md @@ -0,0 +1,19 @@ +# ![logo](https://camo.githubusercontent.com/e4f036844d45424178f34d39dc3b0d52fdb82c07c5ef3c2aeb7e3da22c1538b3/68747470733a2f2f692e696d6775722e636f6d2f66517762386d332e706e67)Dungeon Respawn + +## About + +This module will teleport the player to the start of the dungeon on death. + +## Install + +Just clone the module into your modules directory for your server, re-run cmake and compile. + +Then enable the module in the module config. + +## Contact + +If you need any help you can join my [Discord Server](https://discord.gg/xdVPGcpJ8C). + +## Credits + +Thanks to Артём Борисов_99 from the AzerothCore Discord for the module suggestion. diff --git a/modules/DungeonRespawn/README_ES.md b/modules/DungeonRespawn/README_ES.md new file mode 100644 index 0000000..d7d6ddc --- /dev/null +++ b/modules/DungeonRespawn/README_ES.md @@ -0,0 +1,66 @@ + [English](README.md) | [Español](README_ES.md) + +# PARTE 1 - Cómo crear su propio módulo + +Puede utilizar estos scripts para iniciar su proyecto: + +[Ejemplos de scripts](https://github.com/azerothcore/azerothcore-boilerplates) + +### ¿Cómo probar su módulo? + +Desactivar PCH (cabeceras pre-compiladas) e intentar compilar. Si ha olvidado algunas cabeceras, es hora de añadirlas. Para desactivar PCH, siga este [link](https://github.com/azerothcore/azerothcore-wotlk/wiki/CMake-options) y ponga `USE_COREPCH ` a 0 con Cmake. + +------------------------------------------------------- + +# PARTE 2 - EJEMPLO DE UN README.md +Recuerde que el README.md le explica al resto de las personas que es lo que hace su módulo. Recomendamos escribirlo en ingles quizás, aunque puede ser traducido luego a otros idiomas. + +# MI NUEVO MÓDULO (título) + +## Descripción + +Este módulo permite hacer esto y esto. +(Debe explicar para que se va a utilizar el modulo, cuál es su utilidad) + +## Cómo utilizar + +Haz esto y aquello. + +Puedes agregar una carpeta de pantalla: + +[screenshot](/screenshots/my_module.png?raw=true "screenshot") + +O incluso un video donde expliques su uso: + +[Youtube](https://www.youtube.com/watch?v=T6UEX47mPeE) + + +## Requisitos + +Se debe especificar que versión de azerothcore requiere, porque podría ser incompatible con alguna más adelante. Entonces aclarar por las dudas su compatibilidad no está de más. + +Mi nuevo módulo requiere: + +- AzerothCore v4.0.0+ + + +## Instalación + +``` +1) Simplemente coloque el módulo dentro del directorio `modules` de AzerothCore (repositorio), no la compilación. +2) Importe el SQL manualmente a la base de datos correcta (auth, mundo o caracteres) o con el `db_assembler.sh` (si se proporciona `include.sh`). +3) Vuelva a ejecutar el Cmake y genere la compilación necesaria. (Revise la guía) +``` + +## Editar la configuración del módulo (opcional) + +Si necesita cambiar la configuración del módulo, vaya a la carpeta de configuración de su servidor (donde está su `worldserver` o `worldserver.exe`), copie `my_module.conf.dist` a `my_module.conf` y edite ese nuevo archivo. + + +## Créditos + +* [Yo](https://github.com/YOUR_GITHUB_NAME) (autor del módulo) Edite el enlace para que apunte a su github si lo desea. +* [BarbzYHOOL](https://github.com/barbzyhool) +* [Talamortis](https://github.com/talamortis) + +AzerothCore: [repository](https://github.com/azerothcore) - [website](http://azerothcore.org/) - [discord chat community](https://discord.gg/PaqQRkd) diff --git a/modules/DungeonRespawn/README_example.md b/modules/DungeonRespawn/README_example.md new file mode 100644 index 0000000..f31dca8 --- /dev/null +++ b/modules/DungeonRespawn/README_example.md @@ -0,0 +1,41 @@ +# MY_NEW_MODULE + +## Description + +This module allows to do this and this. + + +## How to use ingame + +Do this and that. + +![my_new_module screenshot](/screenshots/my_module.png?raw=true "my_new_module screenshot") + + +[![Youtube Link](https://i.imgur.com/Jhrdgv6.png)](https://www.youtube.com/watch?v=T6UEX47mPeE) + + +## Requirements + +My_new_module requires: + +- AzerothCore v4.0.0+ + + +## Installation + +``` +1) Simply `git clone` the module under the `modules` directory of your AzerothCore source or copy paste it manually. +2) Import the SQL manually to the right Database (auth, world or characters) or with the `db_assembler.sh` (if `include.sh` provided). +3) Re-run cmake and launch a clean build of AzerothCore. +``` + +## Edit the module's configuration (optional) + +If you need to change the module configuration, go to your server configuration directory (where your `worldserver` or `worldserver.exe` is), copy `my_module.conf.dist` to `my_module.conf` and edit that new file. + + +## Credits + +* [Me](https://github.com/YOUR_GITHUB_NAME) (author of the module): Check out my soundcloud - Join my discord +* AzerothCore: [repository](https://github.com/azerothcore) - [website](http://azerothcore.org/) - [discord chat community](https://discord.gg/PaqQRkd) diff --git a/modules/DungeonRespawn/conf/conf.sh.dist b/modules/DungeonRespawn/conf/conf.sh.dist new file mode 100644 index 0000000..0e78e8a --- /dev/null +++ b/modules/DungeonRespawn/conf/conf.sh.dist @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +## CUSTOM SQL - Important file used by the db_assembler.sh +## Keep only the required variables (base sql files or updates, depending on the DB) + +## BASE SQL + +DB_AUTH_CUSTOM_PATHS+=( + "$MOD_SKELETON_ROOT/sql/auth/base/" +) + +DB_CHARACTERS_CUSTOM_PATHS+=( + "$MOD_SKELETON_ROOT/sql/characters/base/" +) + +DB_WORLD_CUSTOM_PATHS+=( + "$MOD_SKELETON_ROOT/sql/world/base/" +) + +## UPDATES + +DB_AUTH_UPDATES_PATHS+=( + "$MOD_SKELETON_ROOT/sql/auth/updates/" +) + +DB_CHARACTERS_UPDATES_PATHS+=( + "$MOD_SKELETON_ROOT/sql/characters/updates/" +) + +DB_WORLD_UPDATES_PATHS+=( + "$MOD_SKELETON_ROOT/sql/world/updates/" +) diff --git a/modules/DungeonRespawn/conf/dungeonrespawn.conf.dist b/modules/DungeonRespawn/conf/dungeonrespawn.conf.dist new file mode 100644 index 0000000..9180b23 --- /dev/null +++ b/modules/DungeonRespawn/conf/dungeonrespawn.conf.dist @@ -0,0 +1,26 @@ +# +# Copyright (C) 2016+ AzerothCore , released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 +# + +[worldserver] + +######################################## +# Dungeon Respawn configuration +######################################## +# +# DungeonRespawn.Enable +# Description: Enables the Dungeon Respawn module. +# Default: 0 - Disabled +# 1 - Enabled +# + +DungeonRespawn.Enable = 0 + +# +# DungeonRespawn.RespawnHealthPct +# Description: The amount of health in % to respawn with. +# Range: 0.0 - 100.0 +# Default: 100.0 +# + +DungeonRespawn.RespawnHealthPct = 50.0 diff --git a/modules/DungeonRespawn/data/sql/db-characters/base/dungeonrespawn_char_0000_00_00_00.sql b/modules/DungeonRespawn/data/sql/db-characters/base/dungeonrespawn_char_0000_00_00_00.sql new file mode 100644 index 0000000..6a8e249 --- /dev/null +++ b/modules/DungeonRespawn/data/sql/db-characters/base/dungeonrespawn_char_0000_00_00_00.sql @@ -0,0 +1,8 @@ +CREATE TABLE IF NOT EXISTS `dungeonrespawn_playerinfo` ( + `guid` bigint(20) unsigned DEFAULT NULL, + `map` int(11) DEFAULT NULL, + `x` float DEFAULT NULL, + `y` float DEFAULT NULL, + `z` float DEFAULT NULL, + `o` float DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; \ No newline at end of file diff --git a/modules/DungeonRespawn/data/sql/db-characters/updates/dungeonrespawn_char_2023_01_12_01.sql b/modules/DungeonRespawn/data/sql/db-characters/updates/dungeonrespawn_char_2023_01_12_01.sql new file mode 100644 index 0000000..0cc8c69 --- /dev/null +++ b/modules/DungeonRespawn/data/sql/db-characters/updates/dungeonrespawn_char_2023_01_12_01.sql @@ -0,0 +1,4 @@ +DELETE FROM dungeonrespawn_playerinfo; + +ALTER TABLE dungeonrespawn_playerinfo +MODIFY guid BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY; \ No newline at end of file diff --git a/modules/DungeonRespawn/icon.png b/modules/DungeonRespawn/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..38bc640b512e9ec2dfcc746e5d8ebfc8b85f9012 GIT binary patch literal 2790 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 + if (!map) + { + return false; + } + + if (!map->IsDungeon() && !map->IsRaid()) + { + return false; + } + + return true; +} +void DSPlayerScript::OnPlayerReleasedGhost(Player* player) +{ + if (!drEnabled) + { + return; + } + + if (!IsInsideDungeonRaid(player)) + { + return; + } + + playersToTeleport.push_back(player->GetGUID()); +} + +void DSPlayerScript::ResurrectPlayer(Player* player) +{ + player->ResurrectPlayer(respawnHpPct / 100.0f, false); + player->SpawnCorpseBones(); +} + +bool DSPlayerScript::OnBeforeTeleport(Player* player, uint32 mapid, float /*x*/, float /*y*/, float /*z*/, float /*orientation*/, uint32 /*options*/, Unit* /*target*/) +{ + if (!drEnabled) + { + return true; + } + + if (!player) + { + return true; + } + + if (player->GetMapId() != mapid) + { + auto prData = GetOrCreateRespawnData(player); + prData->isTeleportingNewMap = true; + } + + if (!IsInsideDungeonRaid(player)) + { + return true; + } + + if (!player->isDead()) + { + return true; + } + + GuidVector::iterator itToRemove; + bool canRestore = false; + + for (auto it = playersToTeleport.begin(); it != playersToTeleport.end(); ++it) + { + if (*it == player->GetGUID()) + { + itToRemove = it; + canRestore = true; + break; + } + } + + if (!canRestore) + { + return true; + } + + playersToTeleport.erase(itToRemove); + + auto prData = GetOrCreateRespawnData(player); + if (prData) + { + //Invalid Player Restore data, use default behaviour. + if (prData->dungeon.map == -1) + { + return true; + } + + if (prData->dungeon.map != int32(player->GetMapId())) + { + return true; + } + + player->TeleportTo(prData->dungeon.map, prData->dungeon.x, prData->dungeon.y, prData->dungeon.z, prData->dungeon.o); + ResurrectPlayer(player); + return false; + } + + return true; +} + +void DSWorldScript::OnAfterConfigLoad(bool reload) +{ + if (reload) + { + SaveRespawnData(); + respawnData.clear(); + } + + drEnabled = sConfigMgr->GetOption("DungeonRespawn.Enable", false); + respawnHpPct = sConfigMgr->GetOption("DungeonRespawn.RespawnHealthPct", 50.0f); + + QueryResult qResult = CharacterDatabase.Query("SELECT `guid`, `map`, `x`, `y`, `z`, `o` FROM `dungeonrespawn_playerinfo`"); + + if (qResult) + { + uint32 dataCount = 0; + + do + { + Field* fields = qResult->Fetch(); + + PlayerRespawnData prData; + DungeonData dData; + prData.guid = ObjectGuid(fields[0].Get()); + dData.map = fields[1].Get(); + dData.x = fields[2].Get(); + dData.y = fields[3].Get(); + dData.z = fields[4].Get(); + dData.o = fields[5].Get(); + prData.dungeon = dData; + prData.isTeleportingNewMap = false; + prData.inDungeon = false; + + respawnData.push_back(prData); + + dataCount++; + } while (qResult->NextRow()); + + LOG_INFO("module", "Loaded '{}' rows from 'dungeonrespawn_playerinfo' table.", dataCount); + } + else + { + LOG_INFO("module", "Loaded '0' rows from 'dungeonrespawn_playerinfo' table."); + return; + } +} + +void DSWorldScript::OnShutdown() +{ + SaveRespawnData(); +} + +void DSWorldScript::SaveRespawnData() +{ + for (const auto& prData : respawnData) + { + if (prData.inDungeon) + { + CharacterDatabase.Execute("INSERT INTO `dungeonrespawn_playerinfo` (guid, map, x, y, z, o) VALUES ({}, {}, {}, {}, {}, {}) ON DUPLICATE KEY UPDATE map={}, x={}, y={}, z={}, o={}", + prData.guid.GetRawValue(), + prData.dungeon.map, + prData.dungeon.x, + prData.dungeon.y, + prData.dungeon.z, + prData.dungeon.o, + prData.dungeon.map, + prData.dungeon.x, + prData.dungeon.y, + prData.dungeon.z, + prData.dungeon.o); + } + else + { + CharacterDatabase.Execute("DELETE FROM `dungeonrespawn_playerinfo` WHERE guid = {}", prData.guid.GetRawValue()); + } + } +} + +PlayerRespawnData* DSPlayerScript::GetOrCreateRespawnData(Player* player) +{ + for (auto it = respawnData.begin(); it != respawnData.end(); ++it) + { + if (it != respawnData.end()) + { + if (player->GetGUID() == it->guid) + { + return &(*it); + } + } + } + + CreateRespawnData(player); + + return GetOrCreateRespawnData(player); +} + +void DSPlayerScript::OnMapChanged(Player* player) +{ + if (!player) + { + return; + } + + auto prData = GetOrCreateRespawnData(player); + + if (!prData) + { + return; + } + + bool inDungeon = IsInsideDungeonRaid(player); + prData->inDungeon = inDungeon; + + if (!inDungeon) + { + return; + } + + if (!prData->isTeleportingNewMap) + { + return; + } + + prData->dungeon.map = player->GetMapId(); + prData->dungeon.x = player->GetPositionX(); + prData->dungeon.y = player->GetPositionY(); + prData->dungeon.z = player->GetPositionZ(); + prData->dungeon.o = player->GetOrientation(); + + prData->isTeleportingNewMap = false; +} + +void DSPlayerScript::CreateRespawnData(Player* player) +{ + DungeonData newDData; + newDData.map = -1; + newDData.x = 0; + newDData.y = 0; + newDData.z = 0; + newDData.o = 0; + + PlayerRespawnData newPrData; + newPrData.dungeon = newDData; + newPrData.guid = player->GetGUID(); + newPrData.isTeleportingNewMap = false; + newPrData.inDungeon = false; + + respawnData.push_back(newPrData); +} + +void DSPlayerScript::OnLogin(Player* player) +{ + if (!player) + { + return; + } + + GetOrCreateRespawnData(player); +} + +void DSPlayerScript::OnLogout(Player* player) +{ + if (!player) + { + return; + } + + for (auto it = playersToTeleport.begin(); it < playersToTeleport.end(); ++it) + { + if (player->GetGUID() == (*it)) + { + playersToTeleport.erase(it); + } + } +} + +void SC_AddDungeonRespawnScripts() +{ + new DSWorldScript(); + new DSPlayerScript(); +} diff --git a/modules/DungeonRespawn/src/DungeonRespawn.h b/modules/DungeonRespawn/src/DungeonRespawn.h new file mode 100644 index 0000000..9597675 --- /dev/null +++ b/modules/DungeonRespawn/src/DungeonRespawn.h @@ -0,0 +1,62 @@ +#ifndef MODULE_DUNGEONRESPAWN_H +#define MODULE_DUNGEONRESPAWN_H + +#include "ScriptMgr.h" +#include "LFGMgr.h" +#include "Player.h" +#include "Config.h" +#include "Chat.h" +#include + +struct DungeonData +{ + int32 map; + float x; + float y; + float z; + float o; +}; + +struct PlayerRespawnData +{ + ObjectGuid guid; + DungeonData dungeon; + bool isTeleportingNewMap; + bool inDungeon; +}; + +std::vector respawnData; + +bool drEnabled; +float respawnHpPct; + +class DSPlayerScript : public PlayerScript +{ +public: + DSPlayerScript() : PlayerScript("DSPlayerScript") { } + +private: + std::vector playersToTeleport; + bool IsInsideDungeonRaid(Player* /*player*/); + void ResurrectPlayer(Player* /*player*/); + PlayerRespawnData* GetOrCreateRespawnData(Player* /*player*/); + void CreateRespawnData(Player* /*player*/); + void OnPlayerReleasedGhost(Player* /*player*/) override; + bool OnBeforeTeleport(Player* /*player*/, uint32 /*mapid*/, float /*x*/, float /*y*/, float /*z*/, float /*orientation*/, uint32 /*options*/, Unit* /*target*/) override; + void OnMapChanged(Player* /*player*/) override; + void OnLogin(Player* /*player*/) override; + void OnLogout(Player* /*player*/) override; +}; + +class DSWorldScript : public WorldScript +{ +public: + DSWorldScript() : WorldScript("DSWorldScript") { } + +private: + void OnAfterConfigLoad(bool /*reload*/) override; + void OnShutdown() override; + void SaveRespawnData(); +}; + +#endif //MODULE_DUNGEONRESPAWN_H diff --git a/modules/DungeonRespawn/src/MP_loader.cpp b/modules/DungeonRespawn/src/MP_loader.cpp new file mode 100644 index 0000000..5d0e9fc --- /dev/null +++ b/modules/DungeonRespawn/src/MP_loader.cpp @@ -0,0 +1,15 @@ +/* + * Copyright (C) 2016+ AzerothCore , released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 + */ + +// From SC +void SC_AddDungeonRespawnScripts(); + +// Add all +// cf. the naming convention https://github.com/azerothcore/azerothcore-wotlk/blob/master/doc/changelog/master.md#how-to-upgrade-4 +// additionally replace all '-' in the module folder name with '_' here +void AddDungeonRespawnScripts() +{ + SC_AddDungeonRespawnScripts(); +} + diff --git a/modules/mod-accountbound/.github/README.md b/modules/mod-accountbound/.github/README.md new file mode 100644 index 0000000..64b9758 --- /dev/null +++ b/modules/mod-accountbound/.github/README.md @@ -0,0 +1,11 @@ +# Account Bound +[![core-build](https://github.com/tkn963/mod-accountbound/workflows/core-build/badge.svg?branch=master&event=push)](https://github.com/tkn963/mod-accountbound/actions?query=workflow%3Acore-build+branch%3Amaster+event%3Apush) + +# Features +This module aims to make mounts, companions and heirlooms shared across all characters of an account. + +Companions and mounts that are specific to Alliance or Horde will be converted to the correct version of the companion or mount whenever a character receives them. + +There is no way to see all mounts that the account has unless the character has the required skill, unfortunately there is no way to handle this yet. The character will automatically receive the mounts linked to their account whenever they learn the riding skills. + +An addon that helps the user see all their mounts may be developed in the future. diff --git a/modules/mod-accountbound/.github/workflows/core-build.yml b/modules/mod-accountbound/.github/workflows/core-build.yml new file mode 100644 index 0000000..921c9eb --- /dev/null +++ b/modules/mod-accountbound/.github/workflows/core-build.yml @@ -0,0 +1,12 @@ +name: core-build +on: + push: + branches: + - 'master' + pull_request: + +jobs: + build: + uses: azerothcore/reusable-workflows/.github/workflows/core_build_modules.yml@main + with: + module_repo: ${{ github.event.repository.name }} diff --git a/modules/mod-accountbound/LICENSE b/modules/mod-accountbound/LICENSE new file mode 100644 index 0000000..0ad25db --- /dev/null +++ b/modules/mod-accountbound/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/modules/mod-accountbound/README.md b/modules/mod-accountbound/README.md new file mode 100644 index 0000000..dbf5167 --- /dev/null +++ b/modules/mod-accountbound/README.md @@ -0,0 +1,8 @@ +# Features +This module aims to make mounts, companions and heirlooms shared across all characters of an account. + +Companions and mounts that are specific to Alliance or Horde will be converted to the correct version of the companion or mount whenever a character receives them. + +There is no way to see all mounts that the account has unless the character has the required skill, unfortunately there is no way to handle this yet. The character will automatically receive the mounts linked to their account whenever they learn the riding skills. + +An addon that helps the user see all their mounts may be developed in the future. diff --git a/modules/mod-accountbound/conf/conf.sh.dist b/modules/mod-accountbound/conf/conf.sh.dist new file mode 100644 index 0000000..f1f641a --- /dev/null +++ b/modules/mod-accountbound/conf/conf.sh.dist @@ -0,0 +1 @@ +#!/usr/bin/env bash diff --git a/modules/mod-accountbound/conf/mod_accountbound.conf.dist b/modules/mod-accountbound/conf/mod_accountbound.conf.dist new file mode 100644 index 0000000..35c5687 --- /dev/null +++ b/modules/mod-accountbound/conf/mod_accountbound.conf.dist @@ -0,0 +1,22 @@ +[worldserver] + +### +# Allow gamemasters to save and load companions and mounts +AccountBound.Gamemasters = 0 +### + +### +# Make companions shared across all characters of an account +AccountBound.Companions = 1 +### + +### +# Make heirlooms shared across all characters of an account +# This requires the included creature to be spawned +AccountBound.Heirlooms = 0 +### + +### +# Make mounts shared shared across all characters of an account +AccountBound.Mounts = 1 +### diff --git a/modules/mod-accountbound/data/sql/db-auth/base/account_bound_companion_template.sql b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_companion_template.sql new file mode 100644 index 0000000..114a4a3 --- /dev/null +++ b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_companion_template.sql @@ -0,0 +1,214 @@ +DROP TABLE IF EXISTS `account_bound_companion_template`; +CREATE TABLE `account_bound_companion_template` ( + `spell_id` INT(10) UNSIGNED NOT NULL, + `allowable_race` INT(11) NOT NULL, + `comment` VARCHAR(255) NOT NULL, + PRIMARY KEY (`spell_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT INTO `account_bound_companion_template` (`spell_id`, `allowable_race`, `comment`) VALUES +(4055, 1791, 'Mechanical Squirrel'), +(10673, 1791, 'Bombay Cat'), +(10674, 1791, 'Cornish Rex Cat'), +(10675, 1791, 'Black Tabby Cat'), +(10676, 1791, 'Orange Tabby Cat'), +(10677, 1791, 'Siamese Cat'), +(10678, 1791, 'Silver Tabby Cat'), +(10679, 1791, 'White Kitten'), +(10680, 1791, 'Cockatiel'), +(10681, 1791, 'Summon Cockatoo'), +(10682, 1791, 'Hyacinth Macaw'), +(10683, 1791, 'Green Wing Macaw'), +(10684, 1791, 'Senegal'), +(10685, 1791, 'Ancona Chicken'), +(10686, 1791, 'Summon Prairie Chicken'), +(10687, 1791, 'Summon White Plymouth Rock'), +(10688, 1791, 'Cockroach'), +(10695, 1791, 'Dark Whelpling'), +(10696, 1791, 'Azure Whelpling'), +(10697, 1791, 'Crimson Whelpling'), +(10698, 1791, 'Emerald Whelpling'), +(10699, 1791, 'Summon Bronze Whelpling'), +(10700, 1791, 'Summon Faeling'), +(10701, 1791, 'Summon Dart Frog'), +(10702, 1791, 'Summon Island Frog'), +(10703, 1791, 'Wood Frog'), +(10704, 1791, 'Tree Frog'), +(10705, 1791, 'Summon Eagle Owl'), +(10706, 1791, 'Hawk Owl'), +(10707, 1791, 'Great Horned Owl'), +(10708, 1791, 'Summon Snowy Owl'), +(10709, 1791, 'Brown Prairie Dog'), +(10710, 1791, 'Summon Cottontail Rabbit'), +(10711, 1791, 'Snowshoe Rabbit'), +(10712, 1791, 'Summon Spotted Rabbit'), +(10713, 1791, 'Albino Snake'), +(10714, 1791, 'Black Kingsnake'), +(10715, 1791, 'Summon Blue Racer'), +(10716, 1791, 'Brown Snake'), +(10717, 1791, 'Crimson Snake'), +(10718, 1791, 'Green Water Snake'), +(10719, 1791, 'Ribbon Snake'), +(10720, 1791, 'Scarlet Snake'), +(10721, 1791, 'Summon Elven Wisp'), +(12243, 1791, 'Mechanical Chicken'), +(13548, 1791, 'Westfall Chicken'), +(15048, 1791, 'Pet Bombling'), +(15049, 1791, 'Lil\' Smoky'), +(15067, 1791, 'Sprite Darter Hatchling'), +(15648, 1791, 'Corrupted Kitten'), +(15999, 1791, 'Worg Pup'), +(16450, 1791, 'Smolderweb Hatchling'), +(17468, 1791, 'Pet Fish'), +(17469, 1791, 'Pet Stone'), +(17567, 1791, 'Summon Blood Parrot'), +(17707, 1791, 'Panda Cub'), +(17708, 1791, 'Mini Diablo'), +(17709, 1791, 'Zergling'), +(19363, 1791, 'Summon Mechanical Yeti'), +(19772, 1791, 'Lifelike Toad'), +(23428, 1791, 'Albino Snapjaw'), +(23429, 1791, 'Loggerhead Snapjaw'), +(23430, 1791, 'Olive Snapjaw'), +(23431, 1791, 'Leatherback Snapjaw'), +(23432, 1791, 'Hawksbill Snapjaw'), +(23530, 1791, 'Tiny Red Dragon'), +(23531, 1791, 'Tiny Green Dragon'), +(23811, 1791, 'Jubling'), +(24696, 1791, 'Murky'), +(24985, 1791, 'Summon Baby Murloc (Blue)'), +(24986, 1791, 'Summon Baby Murloc (Green)'), +(24987, 1791, 'Summon Baby Murloc (Orange)'), +(24988, 1791, 'Lurky'), +(24989, 1791, 'Summon Baby Murloc (Pink)'), +(24990, 1791, 'Summon Baby Murloc (Purple)'), +(25018, 1791, 'Murki'), +(25162, 1791, 'Disgusting Oozeling'), +(25849, 1791, 'Baby Shark'), +(26010, 1791, 'Tranquil Mechanical Yeti'), +(26045, 1791, 'Tiny Snowman'), +(26067, 1791, 'Summon Mechanical Greench'), +(26391, 1791, 'Tentacle Call'), +(26529, 1791, 'Winter Reindeer'), +(26533, 1791, 'Father Winter\'s Helper'), +(26541, 1791, 'Winter\'s Little Helper'), +(27241, 1791, 'Gurky'), +(27570, 1791, 'Peddlefeet'), +(28487, 1791, 'Terky'), +(28505, 1791, 'Poley'), +(28738, 1791, 'Speedy'), +(28739, 1791, 'Mr. Wiggles'), +(28740, 1791, 'Whiskers the Rat'), +(28871, 1791, 'Spirit of Summer'), +(30152, 1791, 'White Tiger Cub'), +(30156, 1791, 'Hippogryph Hatchling'), +(32298, 1791, 'Netherwhelp'), +(33050, 1791, 'Magical Crawdad'), +(33057, 1791, 'Summon Mighty Mr. Pinchy'), +(35156, 1791, 'Mana Wyrmling'), +(35157, 1791, 'Summon Spotted Rabbit'), +(35239, 1791, 'Brown Rabbit'), +(35907, 1791, 'Blue Moth'), +(35909, 1791, 'Red Moth'), +(35910, 1791, 'Yellow Moth'), +(35911, 1791, 'White Moth'), +(36027, 1791, 'Golden Dragonhawk Hatchling'), +(36028, 1791, 'Red Dragonhawk Hatchling'), +(36029, 1791, 'Silver Dragonhawk Hatchling'), +(36031, 1791, 'Blue Dragonhawk Hatchling'), +(36034, 1791, 'Firefly'), +(39181, 1791, 'Miniwing'), +(39709, 1791, 'Wolpertinger'), +(40319, 1791, 'Lucky'), +(40405, 1791, 'Lucky'), +(40549, 1791, 'Bananas'), +(40613, 1791, 'Willy'), +(40614, 1791, 'Egbert'), +(40634, 1791, 'Peanut'), +(40990, 1791, 'Stinker'), +(42609, 1791, 'Sinister Squashling'), +(43697, 1791, 'Toothy'), +(43698, 1791, 'Muckbreath'), +(43918, 1791, 'Mojo'), +(44369, 1791, 'Pint-Sized Pink Pachyderm'), +(45082, 1791, 'Tiny Sporebat'), +(45125, 1791, 'Rocket Chicken'), +(45127, 1791, 'Dragon Kite'), +(45174, 1791, 'Golden Pig'), +(45175, 1791, 'Silver Pig'), +(45890, 1791, 'Scorchling'), +(46425, 1791, 'Snarly'), +(46426, 1791, 'Chuck'), +(46599, 1791, 'Phoenix Hatchling'), +(48406, 1791, 'Spirit of Competition'), +(48408, 1791, 'Essence of Competition'), +(49964, 1791, 'Ethereal Soul-Trader'), +(51716, 1791, 'Nether Ray Fry'), +(51851, 1791, 'Vampiric Batling'), +(52615, 1791, 'Frosty'), +(53082, 1791, 'Mini Tyrael'), +(53316, 1791, 'Ghostly Skull'), +(53768, 1791, 'Haunted'), +(54187, 1791, 'Clockwork Rocket Bot'), +(55068, 1791, 'Mr. Chilly'), +(59250, 1791, 'Giant Sewer Rat'), +(61348, 1791, 'Tickbird Hatchling'), +(61349, 1791, 'White Tickbird Hatchling'), +(61350, 1791, 'Proto-Drake Whelp'), +(61351, 1791, 'Cobra Hatchling'), +(61357, 1791, 'Pengu'), +(61472, 1791, 'Kirin Tor Familiar'), +(61725, 1791, 'Spring Rabbit'), +(61773, 1791, 'Plump Turkey'), +(61855, 1791, 'Baby Blizzard Bear'), +(61991, 1791, 'Little Fawn'), +(62491, 1791, 'Teldrassil Sproutling'), +(62508, 1791, 'Dun Morogh Cub'), +(62510, 1791, 'Tirisfal Batling'), +(62513, 1791, 'Durotar Scorpion'), +(62514, 1791, 'Alarming Clockbot'), +(62516, 1791, 'Elwynn Lamb'), +(62542, 1791, 'Mulgore Hatchling'), +(62561, 1791, 'Strand Crawler'), +(62562, 1791, 'Ammen Vale Lashling'), +(62564, 1791, 'Enchanted Broom'), +(62609, 1101, 'Argent Squire'), +(62674, 1791, 'Mechanopeep'), +(62746, 690, 'Argent Gruntling'), +(63318, 1791, 'Murkimus the Gladiator'), +(63712, 1791, 'Sen\'jin Fetish'), +(64351, 1791, 'XS-001 Constructor Bot'), +(65358, 1791, 'Calico Cat'), +(65381, 1791, 'Curious Oracle Hatchling'), +(65382, 1791, 'Curious Wolvar Pup'), +(65682, 1791, 'Warbot'), +(66030, 1791, 'Grunty'), +(66096, 1791, 'Shimmering Wyrmling'), +(66175, 1791, 'Macabre Marionette'), +(66520, 1791, 'Jade Tiger'), +(67413, 1791, 'Darting Hatchling'), +(67414, 1791, 'Deviate Hatchling'), +(67415, 1791, 'Gundrak Hatchling'), +(67416, 1791, 'Leaping Hatchling'), +(67417, 1791, 'Obsidian Hatchling'), +(67418, 1791, 'Ravasaur Hatchling'), +(67419, 1791, 'Razormaw Hatchling'), +(67420, 1791, 'Razzashi Hatchling'), +(67527, 1791, 'Onyx Panther'), +(68767, 1791, 'Tuskarr Kite'), +(68810, 1791, 'Spectral Tiger Cub'), +(69002, 1791, 'Onyxian Whelpling'), +(69452, 1791, 'Core Hound Pup'), +(69535, 1791, 'Gryphon Hatchling'), +(69536, 1791, 'Wind Rider Cub'), +(69539, 1791, 'Zipao Tiger'), +(69541, 1791, 'Pandaren Monk'), +(69677, 1791, 'Lil\' K.T.'), +(70613, 1791, 'Perky Pug'), +(71840, 1791, 'Toxic Wasteling'), +(74932, 1791, 'Frigid Frostling'), +(75134, 1791, 'Blue Clockwork Rocket Bot'), +(75613, 1791, 'Celestial Dragon'), +(75906, 1791, 'Lil\' XT'), +(75936, 1791, 'Murkimus the Gladiator'), +(78381, 1791, 'Mini Thor'); diff --git a/modules/mod-accountbound/data/sql/db-auth/base/account_bound_companions.sql b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_companions.sql new file mode 100644 index 0000000..b9dda72 --- /dev/null +++ b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_companions.sql @@ -0,0 +1,6 @@ +CREATE TABLE IF NOT EXISTS `account_bound_companions` ( + `account_id` INT(10) UNSIGNED NOT NULL, + `spell_id` MEDIUMINT(8) UNSIGNED NOT NULL, + `allowable_race` INT(11) UNSIGNED NOT NULL, + PRIMARY KEY (`account_id`, `spell_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; \ No newline at end of file diff --git a/modules/mod-accountbound/data/sql/db-auth/base/account_bound_factionchange_spells.sql b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_factionchange_spells.sql new file mode 100644 index 0000000..728adc9 --- /dev/null +++ b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_factionchange_spells.sql @@ -0,0 +1,92 @@ +DROP TABLE IF EXISTS `account_bound_factionchange_spells`; +CREATE TABLE `account_bound_factionchange_spells` ( + `alliance_id` INT(10) UNSIGNED NOT NULL, + `alliance_comment` TEXT NOT NULL COLLATE 'utf8mb4_general_ci', + `horde_id` INT(10) UNSIGNED NOT NULL, + `horde_comment` TEXT NOT NULL COLLATE 'utf8mb4_general_ci', + PRIMARY KEY (`alliance_id`, `horde_id`) USING BTREE +) +COLLATE='utf8mb4_general_ci' +ENGINE=MyISAM +; + +-- Companions +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (62609, 'Argent Squire', 62746, 'Argent Gruntling'); + +-- Mounts +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (458, 'Brown Horse', 6654, 'Brown Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (470, 'Black Stallion', 64658, 'Black Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (472, 'Pinto', 580, 'Timber Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (6648, 'Chestnut Mare', 6653, 'Dire Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (6777, 'Gray Ram', 8395, 'Emerald Raptor'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (6898, 'White Ram', 10796, 'Turquoise Raptor'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (6899, 'Brown Ram', 10799, 'Violet Raptor'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (8394, 'Striped Frostsaber', 64977, 'Black Skeletal Horse'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (10789, 'Spotted Frostsaber', 17464, 'Brown Skeletal Horse'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (10793, 'Striped Nightsaber', 17463, 'Blue Skeletal Horse'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (10873, 'Red Mechanostrider', 64657, 'White Kodo'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (10969, 'Blue Mechanostrider', 35020, 'Blue Hawkstrider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (15779, 'White Mechanostrider Mod B', 18992, 'Teal Kodo'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (16082, 'Palomino', 16080, 'Red Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (16083, 'White Stallion', 16081, 'Winter Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (17229, 'Winterspring Frostsaber', 64659, 'Venomhide Ravasaur'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (17453, 'Green Mechanostrider', 18989, 'Gray Kodo'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (17459, 'Icy Blue Mechanostrider Mod A', 18991, 'Green Kodo'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (17460, 'Frost Ram', 17450, 'Ivory Raptor'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (17461, 'Black Ram', 16084, 'Mottled Red Raptor'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (22717, 'Black War Steed', 22724, 'Black War Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (22719, 'Black Battlestrider', 22718, 'Black War Kodo'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (22720, 'Black War Ram', 22721, 'Black War Raptor'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (22723, 'Black War Tiger', 22722, 'Red Skeletal Warhorse'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23219, 'Swift Mistsaber', 23246, 'Purple Skeletal Warhorse'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23221, 'Swift Frostsaber', 66846, 'Ochre Skeletal Warhorse'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23222, 'Swift Yellow Mechanostrider', 23247, 'Great White Kodo'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23223, 'Swift White Mechanostrider', 23248, 'Great Gray Kodo'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23225, 'Swift Green Mechanostrider', 23249, 'Great Brown Kodo'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23227, 'Swift Palomino', 23251, 'Swift Timber Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23228, 'Swift White Steed', 23252, 'Swift Gray Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23229, 'Swift Brown Steed', 23250, 'Swift Brown Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23238, 'Swift Brown Ram', 23243, 'Swift Orange Raptor'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23239, 'Swift Gray Ram', 23241, 'Swift Blue Raptor'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23240, 'Swift White Ram', 23242, 'Swift Olive Raptor'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23338, 'Swift Stormsaber', 17465, 'Green Skeletal Warhorse'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (23510, 'Stormpike Battle Charger', 23509, 'Frostwolf Howler'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (32235, 'Golden Gryphon', 32245, 'Green Wind Rider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (32239, 'Ebon Gryphon', 32243, 'Tawny Wind Rider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (32240, 'Snowy Gryphon', 32244, 'Blue Wind Rider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (32242, 'Swift Blue Gryphon', 32296, 'Swift Yellow Wind Rider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (32289, 'Swift Red Gryphon', 32246, 'Swift Red Wind Rider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (32290, 'Swift Green Gryphon', 32295, 'Swift Green Wind Rider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (32292, 'Swift Purple Gryphon', 32297, 'Swift Purple Wind Rider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (34406, 'Brown Elekk', 35022, 'Black Hawkstrider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (35710, 'Gray Elekk', 34795, 'Red Hawkstrider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (35711, 'Purple Elekk', 35018, 'Purple Hawkstrider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (35712, 'Great Green Elekk', 35027, 'Swift Purple Hawkstrider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (35713, 'Great Blue Elekk', 35025, 'Swift Green Hawkstrider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (35714, 'Great Purple Elekk', 33660, 'Swift Pink Hawkstrider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (48027, 'Black War Elekk', 35028, 'Swift Warstrider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (59785, 'Black War Mammoth', 59788, 'Black War Mammoth'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (59791, 'Wooly Mammoth', 59793, 'Wooly Mammoth'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (59799, 'Ice Mammoth', 59797, 'Ice Mammoth'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (60114, 'Armored Brown Bear', 60116, 'Armored Brown Bear'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (60118, 'Black War Bear', 60119, 'Black War Bear'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (60424, 'Mekgineer\'s Chopper', 55531, 'Mechano-hog'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (61229, 'Armored Snowy Gryphon', 61230, 'Armored Blue Wind Rider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (61425, 'Traveler\'s Tundra Mammoth', 61447, 'Traveler\'s Tundra Mammoth'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (61470, 'Grand Ice Mammoth', 61469, 'Grand Ice Mammoth'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (61996, 'Blue Dragonhawk', 61997, 'Red Dragonhawk'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (63232, 'Stormwind Steed', 63640, 'Orgrimmar Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (63636, 'Ironforge Ram', 63635, 'Darkspear Raptor'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (63637, 'Darnassian Nightsaber', 63643, 'Forsaken Warhorse'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (63638, 'Gnomeregan Mechanostrider', 63641, 'Thunder Bluff Kodo'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (63639, 'Exodar Elekk', 63642, 'Silvermoon Hawkstrider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (65637, 'Great Red Elekk', 65639, 'Swift Red Hawkstrider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (65638, 'Swift Moonsaber', 65645, 'White Skeletal Warhorse'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (65640, 'Swift Gray Steed', 65646, 'Swift Burgundy Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (65642, 'Turbostrider', 65641, 'Great Golden Kodo'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (65643, 'Swift Violet Ram', 65644, 'Swift Purple Raptor'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (66087, 'Silver Covenant Hippogryph', 66088, 'Sunreaver Dragonhawk'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (66090, 'Quel\'dorei Steed', 66091, 'Sunreaver Hawkstrider'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (66847, 'Striped Dawnsaber', 17462, 'Red Skeletal Horse'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (68057, 'Swift Alliance Steed', 68056, 'Swift Horde Wolf'); +INSERT INTO `account_bound_factionchange_spells` (`alliance_id`, `alliance_comment`, `horde_id`, `horde_comment`) VALUES (68187, 'Crusader\'s White Warhorse', 68188, 'Crusader\'s Black Warhorse'); diff --git a/modules/mod-accountbound/data/sql/db-auth/base/account_bound_heirlooms.sql b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_heirlooms.sql new file mode 100644 index 0000000..fe684e1 --- /dev/null +++ b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_heirlooms.sql @@ -0,0 +1,5 @@ +CREATE TABLE IF NOT EXISTS `account_bound_heirlooms` ( + `account_id` INT(10) UNSIGNED NOT NULL, + `item_id` MEDIUMINT(8) UNSIGNED NOT NULL, + PRIMARY KEY (`account_id`, `item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/modules/mod-accountbound/data/sql/db-auth/base/account_bound_mount_template.sql b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_mount_template.sql new file mode 100644 index 0000000..46ffc1b --- /dev/null +++ b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_mount_template.sql @@ -0,0 +1,259 @@ +DROP TABLE IF EXISTS `account_bound_mount_template`; +CREATE TABLE `account_bound_mount_template` ( + `spell_id` INT(10) UNSIGNED NOT NULL, + `allowable_race` INT(11) NOT NULL, + `allowable_class` INT(11) NOT NULL, + `required_level` TINYINT(3) UNSIGNED NOT NULL, + `required_skill` SMALLINT(3) UNSIGNED NOT NULL, + `required_skill_rank` SMALLINT(3) UNSIGNED NOT NULL, + `comment` VARCHAR(255) NOT NULL, + PRIMARY KEY (`spell_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT INTO `account_bound_mount_template` (`spell_id`, `allowable_race`, `allowable_class`, `required_level`, `required_skill`, `required_skill_rank`, `comment`) VALUES +(458, 1101, 1535, 20, 762, 75, 'Brown Horse'), +(470, 1101, 1535, 20, 762, 75, 'Black Stallion'), +(472, 1101, 1535, 20, 762, 75, 'Pinto'), +(580, 690, 1535, 20, 762, 75, 'Timber Wolf'), +(6648, 1101, 1535, 20, 762, 75, 'Chestnut Mare'), +(6653, 690, 1535, 20, 762, 75, 'Dire Wolf'), +(6654, 690, 1535, 20, 762, 75, 'Brown Wolf'), +(6777, 1101, 1535, 20, 762, 75, 'Gray Ram'), +(6898, 1101, 1535, 20, 762, 75, 'White Ram'), +(6899, 1101, 1535, 20, 762, 75, 'Brown Ram'), +(8394, 1101, 1535, 20, 762, 75, 'Striped Frostsaber'), +(8395, 690, 1535, 20, 762, 75, 'Emerald Raptor'), +(10789, 1101, 1535, 20, 762, 75, 'Spotted Frostsaber'), +(10793, 1101, 1535, 20, 762, 75, 'Striped Nightsaber'), +(10796, 690, 1535, 20, 762, 75, 'Turquoise Raptor'), +(10799, 690, 1535, 20, 762, 75, 'Violet Raptor'), +(10873, 1101, 1535, 20, 762, 75, 'Red Mechanostrider'), +(10969, 1101, 1535, 20, 762, 75, 'Blue Mechanostrider'), +(15779, 1101, 1535, 40, 762, 150, 'White Mechanostrider Mod B'), +(16055, 1101, 1535, 40, 762, 150, 'Nightsaber'), +(16056, 1101, 1535, 40, 762, 150, 'Ancient Frostsaber'), +(16080, 690, 1535, 40, 762, 150, 'Red Wolf'), +(16081, 690, 1535, 40, 762, 150, 'Arctic Wolf'), +(16082, 1101, 1535, 40, 762, 150, 'Palomino'), +(16083, 1101, 1535, 40, 762, 150, 'White Stallion'), +(16084, 690, 1535, 40, 762, 150, 'Mottled Red Raptor'), +(17229, 1101, 1535, 40, 762, 75, 'Winterspring Frostsaber'), +(17450, 690, 1535, 40, 762, 150, 'Ivory Raptor'), +(17453, 1101, 1535, 20, 762, 75, 'Green Mechanostrider'), +(17454, 1101, 1535, 20, 762, 75, 'Unpainted Mechanostrider'), +(17459, 1101, 1535, 40, 762, 150, 'Icy Blue Mechanostrider Mod A'), +(17460, 1101, 1535, 40, 762, 150, 'Frost Ram'), +(17461, 1101, 1535, 40, 762, 150, 'Black Ram'), +(17462, 690, 1535, 20, 762, 75, 'Red Skeletal Horse'), +(17463, 690, 1535, 20, 762, 75, 'Blue Skeletal Horse'), +(17464, 690, 1535, 20, 762, 75, 'Brown Skeletal Horse'), +(17465, 690, 1535, 40, 762, 150, 'Green Skeletal Warhorse'), +(17481, 1791, 1535, 40, 762, 150, 'Rivendare\'s Deathcharger'), +(18989, 690, 1535, 20, 762, 75, 'Gray Kodo'), +(18990, 690, 1535, 20, 762, 75, 'Brown Kodo'), +(18991, 690, 1535, 40, 762, 150, 'Green Kodo'), +(18992, 690, 1535, 40, 762, 150, 'Teal Kodo'), +(22717, 1101, 1535, 40, 762, 150, 'Black War Steed'), +(22718, 690, 1535, 40, 762, 150, 'Black War Kodo'), +(22719, 1101, 1535, 40, 762, 150, 'Black Battlestrider'), +(22720, 1101, 1535, 40, 762, 150, 'Black War Ram'), +(22721, 690, 1535, 40, 762, 150, 'Black War Raptor'), +(22722, 690, 1535, 40, 762, 150, 'Red Skeletal Warhorse'), +(22723, 1101, 1535, 40, 762, 150, 'Black War Tiger'), +(22724, 690, 1535, 40, 762, 150, 'Black War Wolf'), +(23219, 1101, 1535, 40, 762, 150, 'Swift Mistsaber'), +(23221, 1101, 1535, 40, 762, 150, 'Swift Frostsaber'), +(23222, 1101, 1535, 40, 762, 150, 'Swift Yellow Mechanostrider'), +(23223, 1101, 1535, 40, 762, 150, 'Swift White Mechanostrider'), +(23225, 1101, 1535, 40, 762, 150, 'Swift Green Mechanostrider'), +(23227, 1101, 1535, 40, 762, 150, 'Swift Palomino'), +(23228, 1101, 1535, 40, 762, 150, 'Swift White Steed'), +(23229, 1101, 1535, 40, 762, 150, 'Swift Brown Steed'), +(23238, 1101, 1535, 40, 762, 150, 'Swift Brown Ram'), +(23239, 1101, 1535, 40, 762, 150, 'Swift Gray Ram'), +(23240, 1101, 1535, 40, 762, 150, 'Swift White Ram'), +(23241, 690, 1535, 40, 762, 150, 'Swift Blue Raptor'), +(23242, 690, 1535, 40, 762, 150, 'Swift Olive Raptor'), +(23243, 690, 1535, 40, 762, 150, 'Swift Orange Raptor'), +(23246, 690, 1535, 40, 762, 150, 'Purple Skeletal Warhorse'), +(23247, 690, 1535, 40, 762, 150, 'Great White Kodo'), +(23248, 690, 1535, 40, 762, 150, 'Great Gray Kodo'), +(23249, 690, 1535, 40, 762, 150, 'Great Brown Kodo'), +(23250, 690, 1535, 40, 762, 150, 'Swift Brown Wolf'), +(23251, 690, 1535, 40, 762, 150, 'Swift Timber Wolf'), +(23252, 690, 1535, 40, 762, 150, 'Swift Gray Wolf'), +(23338, 1101, 1535, 40, 762, 150, 'Swift Stormsaber'), +(23509, 1791, 1535, 40, 762, 150, 'Frostwolf Howler'), +(23510, 1791, 1535, 40, 762, 150, 'Stormpike Battle Charger'), +(24242, 1791, 1535, 40, 762, 150, 'Swift Razzashi Raptor'), +(24252, 1791, 1535, 40, 762, 150, 'Swift Zulian Tiger'), +(25953, 1791, 1535, 40, 762, 75, 'Blue Qiraji Battle Tank'), +(26054, 1791, 1535, 40, 762, 75, 'Red Qiraji Battle Tank'), +(26055, 1791, 1535, 40, 762, 75, 'Yellow Qiraji Battle Tank'), +(26056, 1791, 1535, 40, 762, 75, 'Green Qiraji Battle Tank'), +(26656, 1791, 1535, 40, 762, 150, 'Black Qiraji Battle Tank'), +(32235, 1101, 1535, 60, 762, 225, 'Golden Gryphon'), +(32239, 1101, 1535, 60, 762, 225, 'Ebon Gryphon'), +(32240, 1101, 1535, 60, 762, 225, 'Snowy Gryphon'), +(32242, 1101, 1535, 70, 762, 300, 'Swift Blue Gryphon'), +(32243, 690, 1535, 60, 762, 225, 'Tawny Wind Rider'), +(32244, 690, 1535, 60, 762, 225, 'Blue Wind Rider'), +(32245, 690, 1535, 60, 762, 225, 'Green Wind Rider'), +(32246, 690, 1535, 70, 762, 300, 'Swift Red Wind Rider'), +(32289, 1101, 1535, 70, 762, 300, 'Swift Red Gryphon'), +(32290, 1101, 1535, 70, 762, 300, 'Swift Green Gryphon'), +(32292, 1101, 1535, 70, 762, 300, 'Swift Purple Gryphon'), +(32295, 690, 1535, 70, 762, 300, 'Swift Green Wind Rider'), +(32296, 690, 1535, 70, 762, 300, 'Swift Yellow Wind Rider'), +(32297, 690, 1535, 70, 762, 300, 'Swift Purple Wind Rider'), +(33660, 690, 1535, 40, 762, 150, 'Swift Pink Hawkstrider'), +(34406, 1101, 1535, 20, 762, 75, 'Brown Elekk'), +(34790, 1791, 1535, 40, 762, 150, 'Dark War Talbuk'), +(34795, 690, 1535, 20, 762, 75, 'Red Hawkstrider'), +(34896, 1791, 1535, 40, 762, 150, 'Cobalt War Talbuk'), +(34897, 1791, 1535, 40, 762, 150, 'White War Talbuk'), +(34898, 1791, 1535, 40, 762, 150, 'Silver War Talbuk'), +(34899, 1791, 1535, 40, 762, 150, 'Tan War Talbuk'), +(35018, 690, 1535, 20, 762, 75, 'Purple Hawkstrider'), +(35020, 690, 1535, 20, 762, 75, 'Blue Hawkstrider'), +(35022, 690, 1535, 20, 762, 75, 'Black Hawkstrider'), +(35025, 690, 1535, 40, 762, 150, 'Swift Green Hawkstrider'), +(35027, 690, 1535, 40, 762, 150, 'Swift Purple Hawkstrider'), +(35028, 690, 1535, 40, 762, 150, 'Swift Warstrider'), +(35710, 1101, 1535, 20, 762, 75, 'Gray Elekk'), +(35711, 1101, 1535, 20, 762, 75, 'Purple Elekk'), +(35712, 1101, 1535, 40, 762, 150, 'Great Green Elekk'), +(35713, 1101, 1535, 40, 762, 150, 'Great Blue Elekk'), +(35714, 1101, 1535, 40, 762, 150, 'Great Purple Elekk'), +(36702, 1791, 1535, 40, 762, 150, 'Fiery Warhorse'), +(37015, 1791, 1535, 70, 762, 300, 'Swift Nether Drake'), +(39315, 1791, 1535, 40, 762, 150, 'Cobalt Riding Talbuk'), +(39316, 1791, 1535, 40, 762, 150, 'Dark Riding Talbuk'), +(39317, 1791, 1535, 40, 762, 150, 'Silver Riding Talbuk'), +(39318, 1791, 1535, 40, 762, 150, 'Tan Riding Talbuk'), +(39319, 1791, 1535, 40, 762, 150, 'White Riding Talbuk'), +(39798, 1791, 1535, 70, 762, 300, 'Green Riding Nether Ray'), +(39800, 1791, 1535, 70, 762, 300, 'Red Riding Nether Ray'), +(39801, 1791, 1535, 70, 762, 300, 'Purple Riding Nether Ray'), +(39802, 1791, 1535, 70, 762, 300, 'Silver Riding Nether Ray'), +(39803, 1791, 1535, 70, 762, 300, 'Blue Riding Nether Ray'), +(40192, 1791, 1535, 70, 762, 300, 'Ashes of Al\'ar'), +(41252, 1791, 1535, 40, 762, 150, 'Raven Lord'), +(41513, 1791, 1535, 70, 762, 300, 'Onyx Netherwing Drake'), +(41514, 1791, 1535, 70, 762, 300, 'Azure Netherwing Drake'), +(41515, 1791, 1535, 70, 762, 300, 'Cobalt Netherwing Drake'), +(41516, 1791, 1535, 70, 762, 300, 'Purple Netherwing Drake'), +(41517, 1791, 1535, 70, 762, 300, 'Veridian Netherwing Drake'), +(41518, 1791, 1535, 70, 762, 300, 'Violet Netherwing Drake'), +(42776, 1791, 1535, 20, 762, 75, 'Spectral Tiger'), +(42777, 1791, 1535, 40, 762, 150, 'Swift Spectral Tiger'), +(43688, 1791, 1535, 70, 762, 150, 'Amani War Bear'), +(43899, 1791, 1535, 20, 762, 75, 'Brewfest Ram'), +(43900, 1791, 1535, 40, 762, 150, 'Swift Brewfest Ram'), +(43927, 1791, 1535, 70, 762, 300, 'Cenarion War Hippogryph'), +(44744, 1791, 1535, 70, 762, 300, 'Merciless Nether Drake'), +(46197, 1791, 1535, 60, 762, 225, 'X-51 Nether-Rocket'), +(46199, 1791, 1535, 70, 762, 300, 'X-51 Nether-Rocket X-TREME'), +(46628, 1791, 1535, 40, 762, 150, 'Swift White Hawkstrider'), +(48025, 1791, 1535, 20, 762, 75, 'Headless Horseman\'s Mount'), +(48027, 1101, 1535, 40, 762, 150, 'Black War Elekk'), +(49193, 1791, 1535, 70, 762, 300, 'Vengeful Nether Drake'), +(49322, 1791, 1535, 40, 762, 150, 'Swift Zhevra'), +(49379, 1791, 1535, 40, 762, 150, 'Great Brewfest Kodo'), +(51412, 1791, 1535, 40, 762, 150, 'Big Battle Bear'), +(54729, 1791, 32, 60, 762, 225, 'Winged Steed of the Ebon Blade'), +(54753, 1791, 1535, 40, 762, 150, 'White Polar Bear'), +(55531, 690, 1535, 40, 762, 150, 'Mechano-hog'), +(58615, 1791, 1535, 70, 762, 300, 'Brutal Nether Drake'), +(58983, 1791, 1535, 20, 762, 75, 'Big Blizzard Bear'), +(59567, 1791, 1535, 70, 762, 300, 'Azure Drake'), +(59568, 1791, 1535, 70, 762, 300, 'Blue Drake'), +(59569, 1791, 1535, 70, 762, 300, 'Bronze Drake'), +(59570, 1791, 1535, 70, 762, 300, 'Red Drake'), +(59571, 1791, 1535, 70, 762, 300, 'Twilight Drake'), +(59650, 1791, 1535, 70, 762, 300, 'Black Drake'), +(59785, 1101, 1535, 40, 762, 150, 'Black War Mammoth'), +(59788, 690, 1535, 40, 762, 150, 'Black War Mammoth'), +(59791, 1101, 1535, 40, 762, 150, 'Wooly Mammoth'), +(59793, 690, 1535, 40, 762, 150, 'Wooly Mammoth'), +(59797, 690, 1535, 40, 762, 150, 'Ice Mammoth'), +(59799, 1101, 1535, 40, 762, 150, 'Ice Mammoth'), +(59961, 1791, 1535, 70, 762, 300, 'Red Proto-Drake'), +(59976, 1791, 1535, 70, 762, 300, 'Black Proto-Drake'), +(59996, 1791, 1535, 70, 762, 300, 'Blue Proto-Drake'), +(60002, 1791, 1535, 70, 762, 300, 'Time-Lost Proto-Drake'), +(60021, 1791, 1535, 70, 762, 300, 'Plagued Proto-Drake'), +(60024, 1791, 1535, 70, 762, 300, 'Violet Proto-Drake'), +(60025, 1791, 1535, 70, 762, 300, 'Albino Drake'), +(60114, 1101, 1535, 40, 762, 150, 'Armored Brown Bear'), +(60116, 690, 1535, 40, 762, 150, 'Armored Brown Bear'), +(60118, 1101, 1535, 40, 762, 150, 'Black War Bear'), +(60119, 690, 1535, 40, 762, 150, 'Black War Bear'), +(60424, 1101, 1535, 40, 762, 150, 'Mekgineer\'s Chopper'), +(61229, 1101, 1535, 70, 762, 300, 'Armored Snowy Gryphon'), +(61230, 690, 1535, 70, 762, 300, 'Armored Blue Wind Rider'), +(61294, 1791, 1535, 70, 762, 300, 'Green Proto-Drake'), +(61425, 1101, 1535, 40, 762, 150, 'Traveler\'s Tundra Mammoth'), +(61447, 690, 1535, 40, 762, 150, 'Traveler\'s Tundra Mammoth'), +(61465, 1101, 1535, 40, 762, 150, 'Grand Black War Mammoth'), +(61467, 690, 1535, 40, 762, 150, 'Grand Black War Mammoth'), +(61469, 690, 1535, 40, 762, 150, 'Grand Ice Mammoth'), +(61470, 1101, 1535, 40, 762, 150, 'Grand Ice Mammoth'), +(61996, 1791, 1535, 70, 762, 300, 'Blue Dragonhawk'), +(61997, 1791, 1535, 70, 762, 300, 'Red Dragonhawk'), +(63232, 1101, 1535, 40, 762, 150, 'Stormwind Steed'), +(63635, 690, 1535, 40, 762, 150, 'Darkspear Raptor'), +(63636, 1101, 1535, 40, 762, 150, 'Ironforge Ram'), +(63637, 1101, 1535, 40, 762, 150, 'Darnassian Nightsaber'), +(63638, 1101, 1535, 40, 762, 150, 'Gnomeregan Mechanostrider'), +(63639, 1101, 1535, 40, 762, 150, 'Exodar Elekk'), +(63640, 690, 1535, 40, 762, 150, 'Orgrimmar Wolf'), +(63641, 690, 1535, 40, 762, 150, 'Thunder Bluff Kodo'), +(63642, 690, 1535, 40, 762, 150, 'Silvermoon Hawkstrider'), +(63643, 690, 1535, 40, 762, 150, 'Forsaken Warhorse'), +(63796, 1791, 1535, 70, 762, 300, 'Mimiron\'s Head'), +(63844, 1791, 1535, 70, 762, 300, 'Argent Hippogryph'), +(63956, 1791, 1535, 70, 762, 300, 'Ironbound Proto-Drake'), +(63963, 1791, 1535, 70, 762, 300, 'Rusted Proto-Drake'), +(64657, 690, 1535, 20, 762, 75, 'White Kodo'), +(64658, 690, 1535, 20, 762, 75, 'Black Wolf'), +(64659, 690, 1535, 40, 762, 75, 'Venomhide Ravasaur'), +(64731, 1791, 1535, 0, 762, 75, 'Sea Turtle'), +(64927, 1791, 1535, 70, 762, 300, 'Deadly Gladiator\'s Frost Wyrm'), +(64977, 690, 1535, 20, 762, 75, 'Black Skeletal Horse'), +(65439, 1791, 1535, 70, 762, 300, 'Furious Gladiator\'s Frost Wyrm'), +(65637, 1101, 1535, 40, 762, 150, 'Great Red Elekk'), +(65638, 1101, 1535, 40, 762, 150, 'Swift Moonsaber'), +(65639, 690, 1535, 40, 762, 150, 'Swift Red Hawkstrider'), +(65640, 1101, 1535, 40, 762, 150, 'Swift Gray Steed'), +(65641, 690, 1535, 40, 762, 150, 'Great Golden Kodo'), +(65642, 1101, 1535, 40, 762, 150, 'Turbostrider'), +(65643, 1101, 1535, 40, 762, 150, 'Swift Violet Ram'), +(65644, 690, 1535, 40, 762, 150, 'Swift Purple Raptor'), +(65645, 690, 1535, 40, 762, 150, 'White Skeletal Warhorse'), +(65646, 690, 1535, 40, 762, 150, 'Swift Burgundy Wolf'), +(65917, 1791, 1535, 40, 762, 150, 'Magic Rooster'), +(66087, 1791, 1535, 70, 762, 300, 'Silver Covenant Hippogryph'), +(66088, 1791, 1535, 70, 762, 300, 'Sunreaver Dragonhawk'), +(66090, 1101, 1535, 40, 762, 150, 'Quel\'dorei Steed'), +(66091, 690, 1535, 40, 762, 150, 'Sunreaver Hawkstrider'), +(66846, 690, 1535, 40, 762, 150, 'Ochre Skeletal Warhorse'), +(66847, 1101, 1535, 20, 762, 75, 'Striped Dawnsaber'), +(66906, 1791, 2, 40, 762, 150, 'Argent Charger'), +(67336, 1791, 1535, 70, 762, 300, 'Relentless Gladiator\'s Frost Wyrm'), +(67466, 1791, 1535, 40, 762, 150, 'Argent Warhorse'), +(68056, 690, 1535, 40, 762, 150, 'Swift Horde Wolf'), +(68057, 1101, 1535, 40, 762, 150, 'Swift Alliance Steed'), +(68187, 1101, 1535, 40, 762, 150, 'Crusader\'s White Warhorse'), +(68188, 690, 1535, 40, 762, 150, 'Crusader\'s Black Warhorse'), +(69395, 1791, 1535, 70, 762, 300, 'Onyxian Drake'), +(71342, 1791, 1535, 80, 762, 150, 'Big Love Rocket'), +(71810, 1791, 1535, 70, 762, 300, 'Wrathful Gladiator\'s Frost Wyrm'), +(72286, 1791, 1535, 20, 762, 75, 'Invincible'), +(72807, 1791, 1535, 70, 762, 300, 'Icebound Frostbrood Vanquisher'), +(72808, 1791, 1535, 70, 762, 300, 'Bloodbathed Frostbrood Vanquisher'), +(73313, 1791, 1535, 20, 762, 75, 'Crimson Deathcharger'), +(74856, 1791, 1535, 60, 762, 225, 'Blazing Hippogryph'), +(74918, 1791, 1535, 40, 762, 150, 'Wooly White Rhino'), +(75614, 1791, 1535, 20, 762, 75, 'Celestial Steed'), +(75973, 1791, 1535, 60, 762, 225, 'X-53 Touring Rocket'); diff --git a/modules/mod-accountbound/data/sql/db-auth/base/account_bound_mounts.sql b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_mounts.sql new file mode 100644 index 0000000..dadee8d --- /dev/null +++ b/modules/mod-accountbound/data/sql/db-auth/base/account_bound_mounts.sql @@ -0,0 +1,10 @@ +CREATE TABLE IF NOT EXISTS `account_bound_mounts` ( + `account_id` INT(10) UNSIGNED NOT NULL, + `spell_id` MEDIUMINT(8) UNSIGNED NOT NULL, + `allowable_race` INT(11) NOT NULL, + `allowable_class` INT(11) NOT NULL, + `required_level` TINYINT(3) UNSIGNED NOT NULL, + `required_skill` SMALLINT(3) UNSIGNED NOT NULL, + `required_skill_rank` SMALLINT(3) UNSIGNED NOT NULL, + PRIMARY KEY (`account_id`,`spell_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/modules/mod-accountbound/data/sql/db-world/base/account_bound_creature_template.sql b/modules/mod-accountbound/data/sql/db-world/base/account_bound_creature_template.sql new file mode 100644 index 0000000..a6d3490 --- /dev/null +++ b/modules/mod-accountbound/data/sql/db-world/base/account_bound_creature_template.sql @@ -0,0 +1,18 @@ +SET +@Entry := 7500000, +@Model := 25609, +@Name := "Edward Findle", +@Title := "Heirloom Hoarder", +@Icon := "Speak", +@MinLevel := 25, +@MaxLevel := 25, +@Faction := 35, +@NPCFlag := 129, +@Rank := 0, +@Type := 7, +@Script := "npc_account_bound_heirlooms"; + +-- Creature template +DELETE FROM `creature_template` WHERE `entry`=@Entry; +INSERT INTO `creature_template` (`entry`, `modelid1`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `faction`, `npcflag`, `unit_class`, `unit_flags`, `type`, `ScriptName`) VALUES +(@Entry, @Model, @Name, @Title, @Icon, @MinLevel, @MaxLevel, @Faction, @NPCFlag, 1, 2, @Type, @Script); diff --git a/modules/mod-accountbound/include.sh b/modules/mod-accountbound/include.sh new file mode 100644 index 0000000..375c149 --- /dev/null +++ b/modules/mod-accountbound/include.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +MOD_ACCOUNTBOUND_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/" && pwd )" + +source $MOD_ACCOUNTBOUND_ROOT"/conf/conf.sh.dist" + +if [ -f $MOD_ACCOUNTBOUND_ROOT"/conf/conf.sh" ]; then + source $MOD_ACCOUNTBOUND_ROOT"/conf/conf.sh" +fi diff --git a/modules/mod-accountbound/src/loader.cpp b/modules/mod-accountbound/src/loader.cpp new file mode 100644 index 0000000..98e3aba --- /dev/null +++ b/modules/mod-accountbound/src/loader.cpp @@ -0,0 +1,6 @@ +void AddSC_mod_accountbound(); + +void Addmod_accountboundScripts() +{ + AddSC_mod_accountbound(); +} diff --git a/modules/mod-accountbound/src/mod_accountbound.cpp b/modules/mod-accountbound/src/mod_accountbound.cpp new file mode 100644 index 0000000..ceb280f --- /dev/null +++ b/modules/mod-accountbound/src/mod_accountbound.cpp @@ -0,0 +1,470 @@ +#include "Chat.h" +#include "Config.h" +#include "Player.h" +#include "ScriptedGossip.h" +#include "ScriptMgr.h" + +bool abEnableGamemasters; +bool abEnableAccountCompanions; +bool abEnableAccountHeirlooms; +bool abEnableAccountMounts; + +struct AccountCompanions +{ + uint32 SpellId; + uint32 AllowableRace; +}; + +struct FactionSpecificAccountCompanions +{ + uint32 AllianceId; + uint32 HordeId; +}; + +struct AccountMounts +{ + uint32 SpellId; + uint32 AllowableRace; + uint32 AllowableClass; + uint32 RequiredLevel; + uint32 RequiredSkill; + uint32 RequiredSkillRank; +}; + +struct FactionSpecificAccountMounts +{ + uint32 AllianceId; + uint32 HordeId; +}; + +std::vector accountCompanions; +std::vector factionSpecificAccountCompanions; +std::vector accountMounts; +std::vector factionSpecificAccountMounts; + +class AccountBoundCompanions : public PlayerScript +{ +public: + AccountBoundCompanions() : PlayerScript("AccountBoundCompanions") {} + + void OnLearnSpell(Player* player, uint32 spellID) override + { + if (abEnableAccountCompanions) + if (player->GetSession()->GetSecurity() == SEC_PLAYER || abEnableGamemasters) + SaveCompanions(player, spellID); + } + + void OnLogin(Player* player) override + { + if (abEnableAccountCompanions) + if (player->GetSession()->GetSecurity() == SEC_PLAYER || abEnableGamemasters) + LoadCompanions(player); + } + +private: + int FindFactionSpecificCompanion(uint32 spellId) + { + for (size_t i = 0; i != factionSpecificAccountCompanions.size(); ++i) + { + if (factionSpecificAccountCompanions[i].AllianceId == spellId || factionSpecificAccountCompanions[i].HordeId == spellId) + return i; + } + + return -1; + } + + void LoadCompanions(Player* player) + { + QueryResult result = LoginDatabase.Query("SELECT spell_id FROM account_bound_companions WHERE account_id={} AND allowable_race & {}", + player->GetSession()->GetAccountId(), + player->getRaceMask()); + + if (!result) + return; + + do + { + Field* fields = result->Fetch(); + uint32 spellId = fields[0].Get(); + + if (!player->HasSpell(spellId)) + player->learnSpell(spellId); + + } while (result->NextRow()); + } + + void SaveCompanions(Player* player, uint32 spellID) + { + for (auto& accountCompanion : accountCompanions) + { + if (accountCompanion.SpellId != spellID) + continue; + + int factionCompanionSpellId = FindFactionSpecificCompanion(accountCompanion.SpellId); + if (factionCompanionSpellId == -1) + { + LoginDatabase.DirectExecute("REPLACE INTO account_bound_companions (account_id, spell_id, allowable_race)" + "VALUES ({}, {}, {})", + player->GetSession()->GetAccountId(), + spellID, + accountCompanion.AllowableRace); + continue; + } + + LoginDatabase.DirectExecute("REPLACE INTO account_bound_companions (account_id, spell_id, allowable_race) " + "VALUES ({}, {}, {}), ({}, {}, {})", + player->GetSession()->GetAccountId(), + factionSpecificAccountCompanions[factionCompanionSpellId].AllianceId, + RACEMASK_ALLIANCE, + player->GetSession()->GetAccountId(), + factionSpecificAccountCompanions[factionCompanionSpellId].HordeId, + RACEMASK_HORDE); + } + } +}; + +class AccountBoundData : public WorldScript +{ +public: + AccountBoundData() : WorldScript("AccountBoundData") {} + + void OnAfterConfigLoad(bool /*reload*/) override + { + abEnableGamemasters = sConfigMgr->GetOption("AccountBound.Gamemasters", 0); + abEnableAccountCompanions = sConfigMgr->GetOption("AccountBound.Companions", 1); + abEnableAccountHeirlooms = sConfigMgr->GetOption("AccountBound.Heirlooms", 0); + abEnableAccountMounts = sConfigMgr->GetOption("AccountBound.Mounts", 1); + } + + void OnStartup() override + { + LOG_INFO("server.loading", "Loading account bound templates..."); + + if (abEnableAccountCompanions) + { + LoadCompanions(); + LoadFactionSpecificCompanions(); + } + + if (abEnableAccountMounts) + { + LoadMounts(); + LoadFactionSpecificMounts(); + } + } + +private: + void LoadCompanions() + { + QueryResult result = LoginDatabase.Query("SELECT spell_id, allowable_race FROM account_bound_companion_template"); + + if (!result) + { + LOG_INFO("server.loading", ">> Loaded 0 companion templates"); + return; + } + + accountCompanions.clear(); + + int i = 0; + do + { + accountCompanions.push_back(AccountCompanions()); + Field* fields = result->Fetch(); + accountCompanions[i].SpellId = fields[0].Get(); + accountCompanions[i].AllowableRace = fields[1].Get(); + + i++; + } while (result->NextRow()); + + LOG_INFO("server.loading", ">> Loaded {} companion templates", i); + } + + void LoadFactionSpecificCompanions() + { + QueryResult result = LoginDatabase.Query("SELECT alliance_id, horde_id FROM account_bound_factionchange_spells pfs LEFT OUTER JOIN " + "account_bound_companion_template abt ON pfs.alliance_id = abt.spell_id WHERE abt.allowable_race = 1101"); + + if (!result) + { + LOG_INFO("server.loading", ">> Loaded 0 faction-specific companion templates"); + return; + } + + factionSpecificAccountCompanions.clear(); + + int i = 0; + do + { + factionSpecificAccountCompanions.push_back(FactionSpecificAccountCompanions()); + Field* fields = result->Fetch(); + factionSpecificAccountCompanions[i].AllianceId = fields[0].Get(); + factionSpecificAccountCompanions[i].HordeId = fields[1].Get(); + + i++; + } while (result->NextRow()); + + LOG_INFO("server.loading", ">> Loaded {} faction-specific companion templates", i); + } + + void LoadMounts() + { + QueryResult result = LoginDatabase.Query("SELECT spell_id, allowable_race, allowable_class, required_level, " + "required_skill, required_skill_rank FROM account_bound_mount_template"); + + if (!result) + { + LOG_INFO("server.loading", ">> Loaded 0 mount spells"); + return; + } + + accountMounts.clear(); + + int i = 0; + do + { + accountMounts.push_back(AccountMounts()); + Field* fields = result->Fetch(); + accountMounts[i].SpellId = fields[0].Get(); + accountMounts[i].AllowableRace = fields[1].Get(); + accountMounts[i].AllowableClass = fields[2].Get(); + accountMounts[i].RequiredLevel = fields[3].Get(); + accountMounts[i].RequiredSkill = fields[4].Get(); + accountMounts[i].RequiredSkillRank = fields[5].Get(); + + i++; + } while (result->NextRow()); + + LOG_INFO("server.loading", ">> Loaded {} mount templates", i); + } + + void LoadFactionSpecificMounts() + { + QueryResult result = LoginDatabase.Query("SELECT alliance_id, horde_id FROM account_bound_factionchange_spells pfs LEFT OUTER JOIN " + "account_bound_mount_template abt ON pfs.alliance_id = abt.spell_id WHERE abt.allowable_race = 1101"); + + if (!result) + { + LOG_INFO("server.loading", ">> Loaded 0 faction-specific mount templates"); + return; + } + + factionSpecificAccountMounts.clear(); + + int i = 0; + do + { + factionSpecificAccountMounts.push_back(FactionSpecificAccountMounts()); + Field* fields = result->Fetch(); + factionSpecificAccountMounts[i].AllianceId = fields[0].Get(); + factionSpecificAccountMounts[i].HordeId = fields[1].Get(); + + i++; + } while (result->NextRow()); + + LOG_INFO("server.loading", ">> Loaded {} faction-specific mount templates", i); + } +}; + +class AccountBoundHeirlooms : public PlayerScript +{ +public: + AccountBoundHeirlooms() : PlayerScript("AccountBoundHeirlooms") {} + + void OnAfterStoreOrEquipNewItem(Player* player, uint32 /*vendorslot*/, Item* item, uint8 /*count*/, uint8 /*bag*/, uint8 /*slot*/, ItemTemplate const* /*pProto*/, Creature* /*pVendor*/, VendorItem const* /*crItem*/, bool /*bStore*/) override + { + if (!item || !item->GetTemplate() || !abEnableAccountHeirlooms) + return; + + if (item->GetTemplate()->Quality == ITEM_QUALITY_HEIRLOOM && item->GetEntry() != 49177) + { + SaveHeirlooms(player, item->GetEntry()); + item->SetNotRefundable(player); + } + } + +private: + void SaveHeirlooms(Player* player, uint32 itemId) + { + LoginDatabase.DirectExecute("REPLACE INTO account_bound_heirlooms (account_id, item_id) " + "VALUES ({}, {})", + player->GetSession()->GetAccountId(), + itemId); + } +}; + +class AccountBoundHeirloomHoarder : CreatureScript +{ +public: + AccountBoundHeirloomHoarder() : CreatureScript("npc_account_bound_heirlooms") {} + + bool OnGossipHello(Player* player, Creature* creature) + { + if (!abEnableAccountHeirlooms) + { + ChatHandler(player->GetSession()).PSendSysMessage("This feature is currently disabled."); + CloseGossipMenuFor(player); + return true; + } + + QueryResult result = LoginDatabase.Query("SELECT item_id FROM account_bound_heirlooms WHERE account_id = {}", + player->GetSession()->GetAccountId()); + + if (!result) + { + ChatHandler(player->GetSession()).PSendSysMessage("You don't have any stored heirlooms."); + CloseGossipMenuFor(player); + return true; + } + + uint32 vendorId = 7500000 + player->GetSession()->GetAccountId(); + + if (const VendorItemData* vendorData = sObjectMgr->GetNpcVendorItemList(vendorId)) + { + uint8 vendorItemCount = vendorData->GetItemCount(); + for (int i = 0; i < vendorItemCount; i++) + { + sObjectMgr->RemoveVendorItem(vendorId, vendorData->GetItem(i)->item); + } + } + + do + { + Field* fields = result->Fetch(); + sObjectMgr->AddVendorItem(vendorId, fields[0].Get(), 0, 0, 0, false); + } while (result->NextRow()); + + player->GetSession()->SendListInventory(creature->GetGUID(), vendorId); + + return true; + } +}; + +enum RidingAchievement +{ + ACHIEVEMENT_APPRENTICE = 891, + ACHIEVEMENT_JOURNEYMAN = 889, + ACHIEVEMENT_EXPERT = 890, + ACHIEVEMENT_ARTISAN = 892 +}; + +class AccountBoundMounts : public PlayerScript +{ +public: + AccountBoundMounts() : PlayerScript("AccountBoundMounts") {} + + void OnAchiComplete(Player* player, AchievementEntry const* achievement) override + { + if (abEnableAccountMounts) + if (achievement->ID == ACHIEVEMENT_APPRENTICE || achievement->ID == ACHIEVEMENT_JOURNEYMAN || achievement->ID == ACHIEVEMENT_EXPERT || achievement->ID == ACHIEVEMENT_ARTISAN) + if (player->GetSession()->GetSecurity() == SEC_PLAYER || abEnableGamemasters) + LearnMounts(player); + } + + void OnLearnSpell(Player* player, uint32 spellID) override + { + if (abEnableAccountMounts) + if (player->GetSession()->GetSecurity() == SEC_PLAYER || abEnableGamemasters) + SaveMounts(player, spellID); + } + + void OnLevelChanged(Player* player, uint8 /*oldlevel*/) override + { + if (abEnableAccountMounts) + if (player->GetSession()->GetSecurity() == SEC_PLAYER || abEnableGamemasters) + LearnMounts(player); + } + + void OnLogin(Player* player) override + { + if (abEnableAccountMounts) + if (player->GetSession()->GetSecurity() == SEC_PLAYER || abEnableGamemasters) + LearnMounts(player); + } + +private: + int FindFactionSpecificMount(uint32 spellId) + { + for (size_t i = 0; i != factionSpecificAccountMounts.size(); ++i) + { + if (factionSpecificAccountMounts[i].AllianceId == spellId || factionSpecificAccountMounts[i].HordeId == spellId) + return i; + } + + return -1; + } + + void LearnMounts(Player* player) + { + QueryResult result = LoginDatabase.Query("SELECT spell_id FROM account_bound_mounts WHERE account_id={} AND allowable_race & {} " + "AND allowable_class & {} AND required_level <= {} AND (required_skill = 0 OR required_skill_rank <= {})", + player->GetSession()->GetAccountId(), + player->getRaceMask(), + player->getClassMask(), + player->getLevel(), + player->GetSkillValue(SKILL_RIDING)); + + if (!result) + return; + + do + { + Field* fields = result->Fetch(); + uint32 spellId = fields[0].Get(); + + if (!player->HasSpell(spellId)) + player->learnSpell(spellId); + + } while (result->NextRow()); + } + + void SaveMounts(Player* player, uint32 spellID) + { + for (auto& mount : accountMounts) + { + if (mount.SpellId != spellID) + continue; + + int factionSpecificMountSpellId = FindFactionSpecificMount(mount.SpellId); + if (factionSpecificMountSpellId == -1) + { + LoginDatabase.DirectExecute("REPLACE INTO account_bound_mounts (account_id, spell_id, allowable_race, allowable_class, required_level, " + "required_skill, required_skill_rank) VALUES ({}, {}, {}, {}, {}, {}, {})", + player->GetSession()->GetAccountId(), + spellID, + mount.AllowableRace, + mount.AllowableClass, + mount.RequiredLevel, + mount.RequiredSkill, + mount.RequiredSkillRank); + continue; + } + + LoginDatabase.DirectExecute("REPLACE INTO account_bound_mounts (account_id, spell_id, allowable_race, allowable_class, required_level, required_skill, " + "required_skill_rank) VALUES ({}, {}, {}, {}, {}, {}, {}), ({}, {}, {}, {}, {}, {}, {})", + player->GetSession()->GetAccountId(), + factionSpecificAccountMounts[factionSpecificMountSpellId].AllianceId, + RACEMASK_ALLIANCE, + mount.AllowableClass, + mount.RequiredLevel, + mount.RequiredSkill, + mount.RequiredSkillRank, + player->GetSession()->GetAccountId(), + factionSpecificAccountMounts[factionSpecificMountSpellId].HordeId, + RACEMASK_HORDE, + mount.AllowableClass, + mount.RequiredLevel, + mount.RequiredSkill, + mount.RequiredSkillRank); + } + } +}; + +void AddSC_mod_accountbound() +{ + new AccountBoundCompanions(); + new AccountBoundData(); + new AccountBoundHeirlooms(); + new AccountBoundHeirloomHoarder(); + new AccountBoundMounts(); +} diff --git a/modules/mod-ah-bot/.editorconfig b/modules/mod-ah-bot/.editorconfig new file mode 100644 index 0000000..eb64e2f --- /dev/null +++ b/modules/mod-ah-bot/.editorconfig @@ -0,0 +1,8 @@ +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +tab_width = 4 +insert_final_newline = true +trim_trailing_whitespace = true +max_line_length = 80 diff --git a/modules/mod-ah-bot/.gitattributes b/modules/mod-ah-bot/.gitattributes new file mode 100644 index 0000000..823b0b0 --- /dev/null +++ b/modules/mod-ah-bot/.gitattributes @@ -0,0 +1,62 @@ +## AUTO-DETECT +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto eol=lf + +# Text +*.conf +*.conf.dist +*.txt +*.md +*.cmake + +# Bash +*.sh text + +# Lua if lua module? +*.lua + +# SQL +*.sql + +# C++ +*.c text +*.cc text +*.cxx text +*.cpp text +*.c++ text +*.hpp text +*.h text +*.h++ text +*.hh text + + +## For documentation + +# Documents +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain + + +# Graphics +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.tif binary +*.tiff binary +*.ico binary +# SVG treated as an asset (binary) by default. If you want to treat it as text, +# comment-out the following line and uncomment the line after. +*.svg binary +#*.svg text +*.eps binary diff --git a/modules/mod-ah-bot/.github/workflows/core-build.yml b/modules/mod-ah-bot/.github/workflows/core-build.yml new file mode 100644 index 0000000..921c9eb --- /dev/null +++ b/modules/mod-ah-bot/.github/workflows/core-build.yml @@ -0,0 +1,12 @@ +name: core-build +on: + push: + branches: + - 'master' + pull_request: + +jobs: + build: + uses: azerothcore/reusable-workflows/.github/workflows/core_build_modules.yml@main + with: + module_repo: ${{ github.event.repository.name }} diff --git a/modules/mod-ah-bot/.gitignore b/modules/mod-ah-bot/.gitignore new file mode 100644 index 0000000..d011fdd --- /dev/null +++ b/modules/mod-ah-bot/.gitignore @@ -0,0 +1,48 @@ +!.gitignore + +# +#Generic +# + +.directory +.mailmap +*.orig +*.rej +*~ +.hg/ +*.kdev* +.DS_Store +CMakeLists.txt.user +*.bak +*.patch +*.diff +*.REMOTE.* +*.BACKUP.* +*.BASE.* +*.LOCAL.* + +# +# IDE & other softwares +# +/.settings/ +/.externalToolBuilders/* +# exclude in all levels +nbproject/ +.sync.ffs_db +*.kate-swp + +# +# Eclipse +# +*.pydevproject +.metadata +.gradle +tmp/ +*.tmp +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.project +.cproject diff --git a/modules/mod-ah-bot/README.md b/modules/mod-ah-bot/README.md new file mode 100644 index 0000000..db90434 --- /dev/null +++ b/modules/mod-ah-bot/README.md @@ -0,0 +1,46 @@ +# ![logo](https://raw.githubusercontent.com/azerothcore/azerothcore.github.io/master/images/logo-github.png) AzerothCore +## Mod-AHBOT +- Latest build status with azerothcore: [![Build Status](https://github.com/azerothcore/mod-ah-bot/workflows/core-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/mod-ah-bot) + + +## Important notes + +You have to use at least AzerothCore commit [9adba48](https://github.com/azerothcore/azerothcore-wotlk/commit/9adba482c236f1087d66a672e97a99f763ba74b3). + +If you use an old version of this module please update the table structure using this SQL statement: + +```sql +ALTER TABLE `auctionhousebot` RENAME TO `mod_auctionhousebot`; +``` + +## Description + +An auction house bot for the best core: AzerothCore. + +## Installation + +``` +1. Simply place the module under the `modules` directory of your AzerothCore source. +1. Import the SQL manually to the right Database (auth, world or characters) or with the `db_assembler.sh` (if `include.sh` provided). +1. Re-run cmake and launch a clean build of AzerothCore. +``` + +## Edit module configuration (optional) + +If you need to change the module configuration, go to your server configuration folder (where your `worldserver` or `worldserver.exe` is) +rename the file mod_ahbot.conf.dist to mod_ahbot.conf and edit it. + +## Usage + +Edit the module configuration and add a player account ID and a character ID. +This character will sell and buy items in the auction house so give him a good name. + +Notes: +- The account used does not need any security level and can be a player account. +- The character used by the ahbot is not meant to be used ingame. If you use it to browse the auction house, you might have issues like "Searching for items..." displaying forever. + +## Credits + +- Ayase: ported the bot to AzerothCore +- Other contributors (check the contributors list) + diff --git a/modules/mod-ah-bot/conf/conf.sh.dist b/modules/mod-ah-bot/conf/conf.sh.dist new file mode 100644 index 0000000..937a7bc --- /dev/null +++ b/modules/mod-ah-bot/conf/conf.sh.dist @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# +# CUSTOM +# + +DB_WORLD_CUSTOM_PATHS+=( + $MOD_AH_BOT_ROOT"/sql/world/base/" +) diff --git a/modules/mod-ah-bot/conf/mod_ahbot.conf.dist b/modules/mod-ah-bot/conf/mod_ahbot.conf.dist new file mode 100644 index 0000000..26d8fdf --- /dev/null +++ b/modules/mod-ah-bot/conf/mod_ahbot.conf.dist @@ -0,0 +1,266 @@ +[worldserver] + +############################################################################### +# AUCTION HOUSE BOT SETTINGS +# +# AuctionHouseBot.DEBUG +# Enable/Disable Debugging output +# Default 0 (disabled) +# +# AuctionHouseBot.DEBUG_FILTERS +# Enable/Disable Debugging output from Filters +# Default 0 (disabled) +# +# AuctionHouseBot.EnableSeller +# Enable/Disable the part of AHBot that puts items up for auction +# Default 0 (disabled) +# +# AuctionHouseBot.EnableBuyer +# Enable/Disable the part of AHBot that buys items from players +# Default 0 (disabled) +# +# AuctionHouseBot.UseBuyPriceForSeller +# Should the Seller use BuyPrice or SellPrice to determine Bid Prices +# Default 0 (use SellPrice) +# +# AuctionHouseBot.UseBuyPriceForBuyer +# Should the Buyer use BuyPrice or SellPrice to determine Bid Prices +# Default 0 (use SellPrice) +# +# Auction House Bot character data +# AuctionHouseBot.Account is the account number +# (in realmd->account table) of the player you want to run +# as the auction bot. +# AuctionHouseBot.GUID is the GUID (in characters->characters table) +# of the player you want to run as the auction bot. +# Default: 0 (Auction House Bot disabled) +# +# AuctionHouseBot.ItemsPerCycle +# Number of Items to Add/Remove from the AH during mass operations +# Default 200 +# +############################################################################### + +AuctionHouseBot.DEBUG = 0 +AuctionHouseBot.DEBUG_FILTERS = 0 +AuctionHouseBot.EnableSeller = 0 +AuctionHouseBot.EnableBuyer = 0 +AuctionHouseBot.UseBuyPriceForSeller = 0 +AuctionHouseBot.UseBuyPriceForBuyer = 0 +AuctionHouseBot.Account = 0 +AuctionHouseBot.GUID = 0 +AuctionHouseBot.ItemsPerCycle = 200 + +############################################################################### +# AUCTION HOUSE BOT FILTERS PART 1 +# +# AuctionHouseBot.VendorItems +# Include items that can be bought from vendors. +# Default 0 (False) +# +# AuctionHouseBot.VendorTradeGoods +# Include Trade Goods that can be bought from vendors. +# Default 0 (False) +# +# AuctionHouseBot.LootItems +# Include items that can be looted or fished for. +# Default 1 (True) +# +# AuctionHouseBot.LootTradeGoods +# Include Trade Goods that can be looted or fished for. +# Default 1 (True) +# +# AuctionHouseBot.OtherItems +# Include misc. items. +# Default 0 (False) +# +# AuctionHouseBot.OtherTradeGoods +# Include misc. Trade Goods. +# Default 0 (False) +# +# AuctionHouseBot.Bonding_types +# Indicates which bonding types to allow seller to put up for auction +# No_Bind +# Default 1 (True) +# Bind_When_Picked_Up +# Default 0 (False) +# Bind_When_Equipped +# Default 1 (True) +# Bind_When_Use +# Default 1 (True) +# Bind_Quest_Item +# Default 0 (False) +# +# AuctionHouseBot.DisablePermEnchant +# Disable Items with a Permanent Enchantment +# Default 0 (False) +# +# AuctionHouseBot.DisableConjured +# Disable Conjured Items +# Default 0 (False) +# +# AuctionHouseBot.DisableGems +# Disable Gems +# Default 0 (False) +# +# AuctionHouseBot.DisableMoney +# Disable Items that are used as money +# Default 0 (False) +# +# AuctionHouseBot.DisableMoneyLoot +# Disable Items that have Money as a loot +# Default 0 (False) +# +# AuctionHouseBot.DisableLootable +# Disable Items that have other items as loot +# Default 0 (False) +# +# AuctionHouseBot.DisableKeys +# Disable Items that are keys +# Default 0 (False) +# +# AuctionHouseBot.DisableDuration +# Disable Items with a duration +# Default 0 (False) +# +# AuctionHouseBot.DisableBOP_Or_Quest_NoReqLevel +# Disable items that are BOP or Quest Item +# with a Required level that is less than the Item Level +# (This prevents a level 10 with a level 60 weapon or armor) +# (May need further refinement) +# Default 0 (False) +# +############################################################################### + +AuctionHouseBot.VendorItems = 0 +AuctionHouseBot.VendorTradeGoods = 0 +AuctionHouseBot.LootItems = 1 +AuctionHouseBot.LootTradeGoods = 1 +AuctionHouseBot.OtherItems = 0 +AuctionHouseBot.OtherTradeGoods = 0 +AuctionHouseBot.No_Bind = 1 +AuctionHouseBot.Bind_When_Picked_Up = 0 +AuctionHouseBot.Bind_When_Equipped = 1 +AuctionHouseBot.Bind_When_Use = 1 +AuctionHouseBot.Bind_Quest_Item = 0 +AuctionHouseBot.DisablePermEnchant = 0 +AuctionHouseBot.DisableConjured = 0 +AuctionHouseBot.DisableGems = 0 +AuctionHouseBot.DisableMoney = 0 +AuctionHouseBot.DisableMoneyLoot = 0 +AuctionHouseBot.DisableLootable = 0 +AuctionHouseBot.DisableKeys = 0 +AuctionHouseBot.DisableDuration = 0 +AuctionHouseBot.DisableBOP_Or_Quest_NoReqLevel = 0 + +############################################################################### +# AUCTION HOUSE BOT FILTERS PART 2 +# +# These Filters are boolean (0 or 1) and will disable items that are +# specifically meant for the Class named. +# (UnusedClass is Class 10, which was skipped for some reason) +# Default 0 (allowed) +# +############################################################################### + +AuctionHouseBot.DisableWarriorItems = 0 +AuctionHouseBot.DisablePaladinItems = 0 +AuctionHouseBot.DisableHunterItems = 0 +AuctionHouseBot.DisableRogueItems = 0 +AuctionHouseBot.DisablePriestItems = 0 +AuctionHouseBot.DisableDKItems = 0 +AuctionHouseBot.DisableShamanItems = 0 +AuctionHouseBot.DisableMageItems = 0 +AuctionHouseBot.DisableWarlockItems = 0 +AuctionHouseBot.DisableUnusedClassItems = 0 +AuctionHouseBot.DisableDruidItems = 0 + +############################################################################### +# AUCTION HOUSE BOT FILTERS PART 3 +# +# AuctionHouseBot.DisabledItems +# Prevent Seller from listing specific item(s) +# (not used anymore, see table "mod_auctionhousebot_disabled_items") +# +# AuctionHouseBot.DisableItemsBelowLevel +# Prevent Seller from listing Items below this Level +# Default 0 (Off) +# +# AuctionHouseBot.DisableItemsAboveLevel +# Prevent Seller from listing Items above this Level +# Default 0 (Off) +# +# AuctionHouseBot.DisableTGsBelowLevel +# Prevent Seller from listing Trade Goods below this Level +# Default 0 (Off) +# +# AuctionHouseBot.DisableTGsAboveLevel +# Prevent Seller from listing Trade Goods above this Level +# Default 0 (Off) +# +# AuctionHouseBot.DisableItemsBelowGUID +# Prevent Seller from listing Items below this GUID +# Default 0 (Off) +# +# AuctionHouseBot.DisableItemsAboveGUID +# Prevent Seller from listing Items above this GUID +# Default 0 (Off) +# +# AuctionHouseBot.DisableTGsBelowGUID +# Prevent Seller from listing Trade Goods below this GUID +# Default 0 (Off) +# +# AuctionHouseBot.DisableTGsAboveGUID +# Prevent Seller from listing Trade Goods above this GUID +# Default 0 (Off) +# +# AuctionHouseBot.DisableItemsBelowReqLevel +# Prevent Seller from listing Items below this Required Level +# Default 0 (Off) +# +# AuctionHouseBot.DisableItemsAboveReqLevel +# Prevent Seller from listing Items above this Required Level +# Default 0 (Off) +# +# AuctionHouseBot.DisableTGsBelowReqLevel +# Prevent Seller from listing Trade Goods below this Required Level +# Default 0 (Off) +# +# AuctionHouseBot.DisableTGsAboveReqLevel +# Prevent Seller from listing Trade Goods above this Required Level +# Default 0 (Off) +# +# AuctionHouseBot.DisableItemsBelowReqSkillRank +# Prevent Seller from listing Items below this Required Skill Rank +# Default 0 (Off) +# +# AuctionHouseBot.DisableItemsAboveReqSkillRank +# Prevent Seller from listing Items above this Required Skill Rank +# Default 0 (Off) +# +# AuctionHouseBot.DisableTGsBelowReqSkillRank +# Prevent Seller from listing Trade Goods below this Required Skill Rank +# Default 0 (Off) +# +# AuctionHouseBot.DisableTGsAboveReqSkillRank +# Prevent Seller from listing Trade Goods above this Required Skill Rank +# Default 0 (Off) +# +############################################################################### + +AuctionHouseBot.DisableItemsBelowLevel = 0 +AuctionHouseBot.DisableItemsAboveLevel = 0 +AuctionHouseBot.DisableTGsBelowLevel = 0 +AuctionHouseBot.DisableTGsAboveLevel = 0 +AuctionHouseBot.DisableItemsBelowGUID = 0 +AuctionHouseBot.DisableItemsAboveGUID = 0 +AuctionHouseBot.DisableTGsBelowGUID = 0 +AuctionHouseBot.DisableTGsAboveGUID = 0 +AuctionHouseBot.DisableItemsBelowReqLevel = 0 +AuctionHouseBot.DisableItemsAboveReqLevel = 0 +AuctionHouseBot.DisableTGsBelowReqLevel = 0 +AuctionHouseBot.DisableTGsAboveReqLevel = 0 +AuctionHouseBot.DisableItemsBelowReqSkillRank = 0 +AuctionHouseBot.DisableItemsAboveReqSkillRank = 0 +AuctionHouseBot.DisableTGsBelowReqSkillRank = 0 +AuctionHouseBot.DisableTGsAboveReqSkillRank = 0 diff --git a/modules/mod-ah-bot/include.sh b/modules/mod-ah-bot/include.sh new file mode 100644 index 0000000..038ece6 --- /dev/null +++ b/modules/mod-ah-bot/include.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +MOD_AH_BOT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/" && pwd )" + +source $MOD_AH_BOT_ROOT"/conf/conf.sh.dist" + +if [ -f $MOD_AH_BOT_ROOT"/conf/conf.sh" ]; then + source $MOD_AH_BOT_ROOT"/conf/conf.sh" +fi diff --git a/modules/mod-ah-bot/sql/world/base/mod_auctionhousebot.sql b/modules/mod-ah-bot/sql/world/base/mod_auctionhousebot.sql new file mode 100644 index 0000000..12aaa00 --- /dev/null +++ b/modules/mod-ah-bot/sql/world/base/mod_auctionhousebot.sql @@ -0,0 +1,368 @@ +DROP TABLE IF EXISTS `mod_auctionhousebot`; +CREATE TABLE `mod_auctionhousebot` ( + `auctionhouse` int(11) NOT NULL DEFAULT '0' COMMENT 'mapID of the auctionhouse.', + `name` char(25) DEFAULT NULL COMMENT 'Text name of the auctionhouse.', + `minitems` int(11) DEFAULT '0' COMMENT 'This is the minimum number of items you want to keep in the auction house. a 0 here will make it the same as the maximum.', + `maxitems` int(11) DEFAULT '0' COMMENT 'This is the number of items you want to keep in the auction house.', + `percentgreytradegoods` int(11) DEFAULT '0' COMMENT 'Sets the percentage of the Grey Trade Goods auction items', + `percentwhitetradegoods` int(11) DEFAULT '27' COMMENT 'Sets the percentage of the White Trade Goods auction items', + `percentgreentradegoods` int(11) DEFAULT '12' COMMENT 'Sets the percentage of the Green Trade Goods auction items', + `percentbluetradegoods` int(11) DEFAULT '10' COMMENT 'Sets the percentage of the Blue Trade Goods auction items', + `percentpurpletradegoods` int(11) DEFAULT '1' COMMENT 'Sets the percentage of the Purple Trade Goods auction items', + `percentorangetradegoods` int(11) DEFAULT '0' COMMENT 'Sets the percentage of the Orange Trade Goods auction items', + `percentyellowtradegoods` int(11) DEFAULT '0' COMMENT 'Sets the percentage of the Yellow Trade Goods auction items', + `percentgreyitems` int(11) DEFAULT '0' COMMENT 'Sets the percentage of the non trade Grey auction items', + `percentwhiteitems` int(11) DEFAULT '10' COMMENT 'Sets the percentage of the non trade White auction items', + `percentgreenitems` int(11) DEFAULT '30' COMMENT 'Sets the percentage of the non trade Green auction items', + `percentblueitems` int(11) DEFAULT '8' COMMENT 'Sets the percentage of the non trade Blue auction items', + `percentpurpleitems` int(11) DEFAULT '2' COMMENT 'Sets the percentage of the non trade Purple auction items', + `percentorangeitems` int(11) DEFAULT '0' COMMENT 'Sets the percentage of the non trade Orange auction items', + `percentyellowitems` int(11) DEFAULT '0' COMMENT 'Sets the percentage of the non trade Yellow auction items', + `minpricegrey` int(11) DEFAULT '100' COMMENT 'Minimum price of Grey items (percentage).', + `maxpricegrey` int(11) DEFAULT '150' COMMENT 'Maximum price of Grey items (percentage).', + `minpricewhite` int(11) DEFAULT '150' COMMENT 'Minimum price of White items (percentage).', + `maxpricewhite` int(11) DEFAULT '250' COMMENT 'Maximum price of White items (percentage).', + `minpricegreen` int(11) DEFAULT '800' COMMENT 'Minimum price of Green items (percentage).', + `maxpricegreen` int(11) DEFAULT '1400' COMMENT 'Maximum price of Green items (percentage).', + `minpriceblue` int(11) DEFAULT '1250' COMMENT 'Minimum price of Blue items (percentage).', + `maxpriceblue` int(11) DEFAULT '1750' COMMENT 'Maximum price of Blue items (percentage).', + `minpricepurple` int(11) DEFAULT '2250' COMMENT 'Minimum price of Purple items (percentage).', + `maxpricepurple` int(11) DEFAULT '4550' COMMENT 'Maximum price of Purple items (percentage).', + `minpriceorange` int(11) DEFAULT '3250' COMMENT 'Minimum price of Orange items (percentage).', + `maxpriceorange` int(11) DEFAULT '5550' COMMENT 'Maximum price of Orange items (percentage).', + `minpriceyellow` int(11) DEFAULT '5250' COMMENT 'Minimum price of Yellow items (percentage).', + `maxpriceyellow` int(11) DEFAULT '6550' COMMENT 'Maximum price of Yellow items (percentage).', + `minbidpricegrey` int(11) DEFAULT '70' COMMENT 'Starting bid price of Grey items as a percentage of the randomly chosen buyout price. Default: 70', + `maxbidpricegrey` int(11) DEFAULT '100' COMMENT 'Starting bid price of Grey items as a percentage of the randomly chosen buyout price. Default: 100', + `minbidpricewhite` int(11) DEFAULT '70' COMMENT 'Starting bid price of White items as a percentage of the randomly chosen buyout price. Default: 70', + `maxbidpricewhite` int(11) DEFAULT '100' COMMENT 'Starting bid price of White items as a percentage of the randomly chosen buyout price. Default: 100', + `minbidpricegreen` int(11) DEFAULT '80' COMMENT 'Starting bid price of Green items as a percentage of the randomly chosen buyout price. Default: 80', + `maxbidpricegreen` int(11) DEFAULT '100' COMMENT 'Starting bid price of Green items as a percentage of the randomly chosen buyout price. Default: 100', + `minbidpriceblue` int(11) DEFAULT '75' COMMENT 'Starting bid price of Blue items as a percentage of the randomly chosen buyout price. Default: 75', + `maxbidpriceblue` int(11) DEFAULT '100' COMMENT 'Starting bid price of Blue items as a percentage of the randomly chosen buyout price. Default: 100', + `minbidpricepurple` int(11) DEFAULT '80' COMMENT 'Starting bid price of Purple items as a percentage of the randomly chosen buyout price. Default: 80', + `maxbidpricepurple` int(11) DEFAULT '100' COMMENT 'Starting bid price of Purple items as a percentage of the randomly chosen buyout price. Default: 100', + `minbidpriceorange` int(11) DEFAULT '80' COMMENT 'Starting bid price of Orange items as a percentage of the randomly chosen buyout price. Default: 80', + `maxbidpriceorange` int(11) DEFAULT '100' COMMENT 'Starting bid price of Orange items as a percentage of the randomly chosen buyout price. Default: 100', + `minbidpriceyellow` int(11) DEFAULT '80' COMMENT 'Starting bid price of Yellow items as a percentage of the randomly chosen buyout price. Default: 80', + `maxbidpriceyellow` int(11) DEFAULT '100' COMMENT 'Starting bid price of Yellow items as a percentage of the randomly chosen buyout price. Default: 100', + `maxstackgrey` int(11) DEFAULT '0' COMMENT 'Stack size limits for item qualities - a value of 0 will disable a maximum stack size for that quality, which will allow the bot to create items in stack as large as the item allows.', + `maxstackwhite` int(11) DEFAULT '0' COMMENT 'Stack size limits for item qualities - a value of 0 will disable a maximum stack size for that quality, which will allow the bot to create items in stack as large as the item allows.', + `maxstackgreen` int(11) DEFAULT '0' COMMENT 'Stack size limits for item qualities - a value of 0 will disable a maximum stack size for that quality, which will allow the bot to create items in stack as large as the item allows.', + `maxstackblue` int(11) DEFAULT '0' COMMENT 'Stack size limits for item qualities - a value of 0 will disable a maximum stack size for that quality, which will allow the bot to create items in stack as large as the item allows.', + `maxstackpurple` int(11) DEFAULT '0' COMMENT 'Stack size limits for item qualities - a value of 0 will disable a maximum stack size for that quality, which will allow the bot to create items in stack as large as the item allows.', + `maxstackorange` int(11) DEFAULT '0' COMMENT 'Stack size limits for item qualities - a value of 0 will disable a maximum stack size for that quality, which will allow the bot to create items in stack as large as the item allows.', + `maxstackyellow` int(11) DEFAULT '0' COMMENT 'Stack size limits for item qualities - a value of 0 will disable a maximum stack size for that quality, which will allow the bot to create items in stack as large as the item allows.', + `buyerpricegrey` int(11) DEFAULT '1' COMMENT 'Multiplier to vendorprice when buying grey items from auctionhouse', + `buyerpricewhite` int(11) DEFAULT '3' COMMENT 'Multiplier to vendorprice when buying white items from auctionhouse', + `buyerpricegreen` int(11) DEFAULT '5' COMMENT 'Multiplier to vendorprice when buying green items from auctionhouse', + `buyerpriceblue` int(11) DEFAULT '12' COMMENT 'Multiplier to vendorprice when buying blue items from auctionhouse', + `buyerpricepurple` int(11) DEFAULT '15' COMMENT 'Multiplier to vendorprice when buying purple items from auctionhouse', + `buyerpriceorange` int(11) DEFAULT '20' COMMENT 'Multiplier to vendorprice when buying orange items from auctionhouse', + `buyerpriceyellow` int(11) DEFAULT '22' COMMENT 'Multiplier to vendorprice when buying yellow items from auctionhouse', + `buyerbiddinginterval` int(11) DEFAULT '1' COMMENT 'Interval how frequently AHB bids on each AH. Time in minutes', + `buyerbidsperinterval` int(11) DEFAULT '1' COMMENT 'number of bids to put in per bidding interval', + PRIMARY KEY (`auctionhouse`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +DROP TABLE IF EXISTS `mod_auctionhousebot_disabled_items`; +CREATE TABLE `mod_auctionhousebot_disabled_items` ( + `item` mediumint(8) unsigned NOT NULL, + PRIMARY KEY (`item`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- AHBot auctionhouse configuration +INSERT INTO `mod_auctionhousebot` (`auctionhouse`, `name`, `minitems`, `maxitems`, `percentgreytradegoods`, `percentwhitetradegoods`, `percentgreentradegoods`, `percentbluetradegoods`, `percentpurpletradegoods`, `percentorangetradegoods`, `percentyellowtradegoods`, `percentgreyitems`, `percentwhiteitems`, `percentgreenitems`, `percentblueitems`, `percentpurpleitems`, `percentorangeitems`, `percentyellowitems`, `minpricegrey`, `maxpricegrey`, `minpricewhite`, `maxpricewhite`, `minpricegreen`, `maxpricegreen`, `minpriceblue`, `maxpriceblue`, `minpricepurple`, `maxpricepurple`, `minpriceorange`, `maxpriceorange`, `minpriceyellow`, `maxpriceyellow`, `minbidpricegrey`, `maxbidpricegrey`, `minbidpricewhite`, `maxbidpricewhite`, `minbidpricegreen`, `maxbidpricegreen`, `minbidpriceblue`, `maxbidpriceblue`, `minbidpricepurple`, `maxbidpricepurple`, `minbidpriceorange`, `maxbidpriceorange`, `minbidpriceyellow`, `maxbidpriceyellow`, `maxstackgrey`, `maxstackwhite`, `maxstackgreen`, `maxstackblue`, `maxstackpurple`, `maxstackorange`, `maxstackyellow`, `buyerpricegrey`, `buyerpricewhite`, `buyerpricegreen`, `buyerpriceblue`, `buyerpricepurple`, `buyerpriceorange`, `buyerpriceyellow`, `buyerbiddinginterval`, `buyerbidsperinterval`) +VALUES +(2,'Alliance',250,250,0,27,12,10,1,0,0,0,10,30,8,2,0,0,100,150,150,250,800,1400,1250,1750,2250,4550,3250,5550,5250,6550,70,100,70,100,80,100,75,100,80,100,80,100,80,100,0,0,3,2,1,1,1,1,3,5,12,15,20,22,1,1), +(6,'Horde',250,250,0,27,12,10,1,0,0,0,10,30,8,2,0,0,100,150,150,250,800,1400,1250,1750,2250,4550,3250,5550,5250,6550,70,100,70,100,80,100,75,100,80,100,80,100,80,100,0,0,3,2,1,1,1,1,3,5,12,15,20,22,1,1), +(7,'Neutral',250,250,0,27,12,10,1,0,0,0,10,30,8,2,0,0,100,150,150,250,800,1400,1250,1750,2250,4550,3250,5550,5250,6550,70,100,70,100,80,100,75,100,80,100,80,100,80,100,0,0,3,2,1,1,1,1,3,5,12,15,20,22,1,1); + +-- Items unavailable to players +INSERT INTO `mod_auctionhousebot_disabled_items` +VALUES +(17), (3895), (1700), (862), (4196), (3934), (2275), (4213), (4988), (4989), (4990), (4110), (4111), (4116), (3463), (3068), +(913), (2016), (3738), (1189), (3222), (2664), (2273), (4763), (2444), (1041), (1133), (1134), (2413), (2415), (2927), (2932), +(2443), (1487), (1623), (3031), (3034), (3762), (3772), (4981), (2693), (2808), (1254), (2442), (3137), (4191), (4193), (931), +(1114), (1450), (2136), (1352), (2441), (3884), (4200), (2588), (2922), (3005), (3122), (1193), (1057), (3107), (3135), (3144), +(4273), (1113), (2288), (2556), (2921), (3004), (763), (1146), (1255), (2929), (4143), (2064), (3648), (1162), (1167), (2377), +(2920), (3003), (4965), (2497), (2499), (2501), (2599), (3320), (964), (2496), (2498), (2503), (2946), (3131), (1389), (2500), +(2502), (4959), (1166), (1386), (2133), (4930), (1029), (2055), (2128), (2481), (2484), (2487), (3260), (2482), (2483), (2485), +(2486), (2947), (3111), (37), (996), (119), (138), (734), (876), (895), (896), (900), (956), (958), (960), (997), +(1014), (1020), (1021), (1024), (1025), (1027), (1324), (1356), (1672), (1923), (1977), (2410), (2477), (2586), (2638), (2668), +(2755), (2891), (3316), (3513), (3516), (3536), (3584), (3686), (3707), (3744), (4278), (4524), (4703), (4704), (4749), (4851), +(4868), (192), (3958), (3978), (4014), (3952), (3981), (3991), (4011), (3957), (3979), (4012), (3959), (3982), (4010), (3954), +(3983), (3988), (4009), (3953), (3984), (4013), (3956), (3977), (4008), (3955), (3980), (4015), (2931), (3776), (1914), (4858), +(3713), (3777), (3063), (2918), (3046), (3052), (3062), (4912), (2995), (1028), (1192), (2692), (1298), (1363), (4688), (4774), +(4773), (4761), (2305), (2306), (4471), (88), (91), (100), (128), (143), (156), (813), (1222), (1259), (1902), (1911), +(2081), (2184), (2550), (2705), (2715), (2810), (3148), (3168), (3245), (3368), (3675), (3774), (5828), (9372), (8708), (8586), +(9240), (9380), (9484), (9417), (10579), (9718), (7187), (10978), (9685), (9214), (9653), (7987), (7988), (7986), (7550), (7547), +(7548), (7994), (7748), (7953), (9888), (5010), (7497), (7466), (5008), (8840), (5004), (5005), (7467), (7427), (7426), (7948), +(7949), (7950), (7951), (7952), (6589), (6360), (6376), (10049), (5821), (5822), (7188), (6478), (10998), (6345), (5748), (5255), +(5968), (8350), (10939), (6343), (9602), (10595), (8079), (8008), (9421), (8076), (8078), (10683), (8171), (8546), (10662), (10818), +(8007), (5510), (8075), (8077), (10664), (8147), (8993), (5663), (5874), (5875), (8583), (8589), (8590), (8627), (8628), (8630), +(8633), (9254), (10620), (5513), (5522), (6357), (8365), (8366), (5509), (6715), (5108), (5518), (6355), (5632), (5845), (6352), +(6359), (6363), (6364), (6647), (6766), (5654), (5657), (5511), (5105), (6354), (6366), (6374), (6650), (8964), (5232), (5517), +(5660), (5013), (5024), (5603), (5823), (6292), (6294), (6295), (6309), (6310), (6311), (6351), (6353), (6358), (6645), (6754), +(7678), (5150), (6651), (5512), (6182), (6183), (6619), (6649), (5229), (6356), (5235), (5043), (5044), (5349), (5350), (6216), +(6291), (6643), (6891), (7807), (7808), (6648), (5056), (5184), (5220), (5330), (5333), (5353), (5389), (5400), (5410), (5417), +(5418), (5455), (5515), (5531), (5562), (5563), (5639), (5645), (5646), (5681), (5768), (5769), (5833), (5859), (5878), (6130), +(6276), (6277), (6278), (6279), (6280), (6435), (6490), (6491), (6492), (6495), (6496), (6497), (6498), (6500), (6501), (6516), +(6544), (6623), (6717), (6718), (6834), (6927), (6988), (7134), (7206), (7208), (7268), (7271), (7286), (7287), (7333), (7392), +(7679), (7680), (7681), (7716), (7725), (7733), (7737), (7867), (7923), (7970), (8072), (8426), (9280), (9281), (9282), (9284), +(9316), (9319), (9325), (9330), (9365), (9593), (9594), (9595), (9596), (9597), (10464), (10691), (10692), (10693), (10694), (5495), +(5863), (6307), (7769), (7770), (7771), (8164), (8383), (8585), (9311), (9438), (9440), (9441), (9443), (10790), (5550), (5549), +(5555), (8368), (8688), (6951), (5560), (7428), (7190), (5625), (6174), (7170), (5106), (8427), (5379), (5259), (5283), (5362), +(5363), (5364), (5367), (5370), (5371), (5377), (5435), (5600), (6131), (6150), (6225), (6227), (6232), (6297), (6301), (6455), +(7135), (8425), (9700), (9701), (10457), (10450), (10791), (11264), (12947), (15780), (14550), (12302), (12303), (12330), (12351), (12353), +(12354), (13317), (13326), (13327), (13328), (13329), (15292), (15293), (12731), (12588), (12970), (13080), (13090), (13092), (13936), (13950), +(14543), (13148), (13164), (13173), (15410), (15769), (11768), (12105), (11743), (14344), (11671), (11672), (14343), (12469), (11178), (11177), +(13325), (11139), (11138), (11084), (12325), (12326), (12327), (13323), (13324), (12616), (12617), (12615), (12904), (12104), (12106), (12107), +(13175), (13242), (13247), (12866), (11175), (12258), (11174), (11135), (11134), (11082), (13727), (13728), (13730), (13731), (13736), (13737), +(13738), (13739), (13740), (13741), (13742), (13743), (13744), (13745), (13746), (13747), (13748), (13749), (13762), (13763), (13764), (13765), +(13766), (13767), (13768), (13769), (13770), (13771), (13772), (13773), (13775), (13776), (13777), (13778), (13779), (13780), (13781), (13782), +(13783), (13784), (13785), (13788), (13791), (13794), (13797), (13798), (13801), (13802), (13803), (13804), (13805), (13806), (13807), (13808), +(13809), (13603), (15756), (13701), (14488), (11950), (11951), (11952), (13480), (13888), (13889), (13890), (13891), (13893), (13901), (13902), +(13903), (13904), (13905), (13906), (13907), (13908), (13910), (13911), (13912), (13914), (13915), (13916), (13917), (13918), (14481), (13477), +(14894), (15409), (15415), (15417), (15419), (15886), (13602), (13700), (11176), (13422), (13754), (13755), (13756), (13758), (13759), (13760), +(13875), (13876), (13877), (13878), (13879), (13880), (13881), (13882), (13883), (13884), (13885), (13886), (13887), (11903), (14062), (15326), +(15327), (11111), (13699), (11137), (11083), (12238), (12446), (12447), (12448), (12449), (14891), (14083), (11024), (11131), (11149), (11170), +(11222), (11230), (11282), (11364), (11413), (11470), (11507), (11508), (11512), (11513), (11582), (11602), (11609), (11613), (11616), (11947), +(11949), (11954), (12064), (12241), (12263), (12347), (12349), (12563), (12567), (12648), (12649), (12723), (12847), (12885), (13155), (13159), +(13370), (13673), (13726), (13732), (13733), (13734), (13787), (13790), (13793), (13796), (14339), (14390), (14392), (14645), (15448), (15843), +(15845), (11270), (11283), (11511), (11514), (12468), (15422), (15423), (12348), (12787), (12943), (12991), (13316), (13337), (13612), (14586), +(18582), (18583), (18584), (17182), (17782), (18881), (17142), (17067), (17068), (18608), (18609), (18713), (18715), (17075), (18813), (17078), +(17064), (18205), (17223), (18538), (18970), (18241), (18242), (18243), (18244), (18245), (18246), (18247), (18248), (18768), (17886), (17982), +(16369), (16391), (16392), (16393), (16396), (16397), (16401), (16403), (16405), (16406), (16409), (16410), (16413), (16414), (16415), (16416), +(16417), (16418), (16419), (16420), (16421), (16422), (16423), (16424), (16425), (16426), (16427), (16428), (16429), (16430), (16431), (16432), +(16433), (16434), (16435), (16436), (16485), (16487), (16489), (16490), (16491), (16492), (16494), (16496), (16498), (16499), (16501), (16502), +(16503), (16504), (16505), (16506), (16507), (16508), (16509), (16510), (16513), (16514), (16515), (16516), (16518), (16519), (16521), (16522), +(16523), (16524), (16525), (16526), (16527), (16528), (16530), (16531), (17562), (17564), (17566), (17567), (17568), (17569), (17570), (17571), +(17572), (17573), (17576), (17577), (17594), (17596), (17598), (17599), (17600), (17601), (17610), (17611), (17612), (17613), (17616), (17617), +(16337), (17967), (17968), (16999), (17733), (16334), (16336), (16340), (18303), (18304), (18320), (18341), (18342), (16315), (16203), (17966), +(16664), (16202), (17769), (16792), (16165), (17224), (17364), (16026), (16339), (16350), (16366), (16374), (16896), (17012), (18142), (16320), +(16362), (16378), (16356), (16387), (16047), (16171), (16330), (16383), (18636), (16041), (16042), (16373), (16389), (18651), (16325), (16349), +(16361), (16895), (17024), (16319), (16355), (16365), (16386), (16377), (16382), (16082), (16085), (16971), (16329), (16372), (16360), (16390), +(17019), (16348), (16354), (16385), (16893), (16967), (16318), (16324), (16381), (16364), (16371), (16388), (17027), (16057), (16328), (16359), +(16376), (16353), (16380), (16384), (16347), (16892), (16317), (16368), (16323), (16358), (16379), (16327), (16352), (16363), (16375), (16346), +(18964), (16316), (16357), (16351), (16322), (16326), (16331), (16302), (17195), (17302), (17305), (17308), (18002), (16321), (16180), (16642), +(16643), (16644), (16968), (16969), (16970), (16973), (17126), (17242), (17262), (17323), (17324), (17325), (17333), (17353), (17362), (17363), +(17442), (17505), (17506), (17507), (17696), (17758), (17882), (17887), (18151), (18153), (18492), (18540), (18566), (18643), (18799), (18154), +(18642), (20880), (19158), (20142), (20329), (21584), (21587), (21588), (21594), (21612), (21613), (21614), (21339), (20487), (20488), (21124), +(21125), (21127), (21890), (19879), (19951), (19952), (19953), (19954), (19955), (19956), (19957), (19958), (19959), (20698), (20725), (20887), +(19875), (20720), (20721), (20722), (19105), (19110), (20696), (20706), (20368), (21281), (21282), (21283), (21293), (21302), (19986), (20003), +(20005), (20502), (20522), (20524), (21044), (20381), (21785), (21786), (21878), (21772), (21773), (20086), (20965), (19803), (19805), (19806), +(19808), (20591), (20596), (20962), (20957), (20953), (20829), (20952), (20825), (20822), (20819), (19213), (19322), (20256), (20560), (21992), +(21159), (21175), (19012), (19013), (19696), (20498), (20500), (20501), (19010), (19011), (19807), (20065), (21228), (21243), (21153), (19450), +(20067), (21150), (21164), (19008), (19009), (21113), (19006), (19007), (19054), (19055), (21071), (21168), (21212), (21043), (20708), (21162), +(19004), (19005), (20913), (20979), (20981), (19160), (19422), (19642), (19725), (19775), (19880), (19882), (20018), (20020), (20021), (20364), +(20393), (20416), (20418), (20419), (20420), (20432), (20433), (20435), (20436), (20447), (20448), (20449), (20450), (20454), (20455), (20456), +(20709), (20902), (20903), (20904), (20977), (20984), (21106), (21107), (21109), (21111), (21114), (21131), (21152), (21158), (21160), (21161), +(21171), (21442), (21519), (21536), (21560), (21577), (21578), (21591), (21815), (21816), (21817), (21818), (21819), (21820), (21821), (21822), +(21823), (21831), (21975), (21979), (21980), (21981), (19960), (21140), (19924), (20030), (21141), (22736), (22726), (22819), (22821), (22798), +(22799), (22802), (22812), (22691), (22947), (22954), (22800), (22801), (22804), (22807), (22808), (22809), (22811), (22816), (22818), (22820), +(22935), (22936), (22937), (22938), (22939), (22940), (22941), (22943), (22960), (22961), (22967), (22968), (22981), (22983), (22988), (22994), +(22803), (22806), (22810), (22813), (22814), (22815), (22942), (22805), (22817), (22450), (22349), (22350), (22351), (22352), (22353), (22354), +(22355), (22356), (22357), (22358), (22359), (22360), (22361), (22362), (22363), (22364), (22365), (22366), (22367), (22368), (22369), (22370), +(22371), (22372), (22373), (22374), (22375), (22376), (22891), (22230), (22273), (22446), (22447), (22782), (22018), (22019), (22103), (22104), +(22105), (22116), (22182), (22187), (22189), (22797), (22044), (22179), (22186), (22788), (22128), (22184), (22646), (22795), (22895), (22181), +(22185), (22190), (22183), (22180), (22188), (22972), (22710), (22020), (22042), (22045), (22140), (22141), (22142), (22143), (22144), (22145), +(22154), (22155), (22156), (22157), (22158), (22159), (22160), (22161), (22162), (22163), (22164), (22165), (22166), (22167), (22168), (22169), +(22170), (22171), (22172), (22178), (22202), (22260), (22262), (22263), (22283), (22284), (22285), (22286), (22287), (22288), (22289), (22290), +(22291), (22292), (22293), (22294), (22295), (22296), (22297), (22298), (22299), (22300), (22386), (22387), (22584), (22733), (22754), (22822), +(22896), (22899), (22058), (22059), (22709), (23051), (25596), (24526), (24561), (24567), (27965), (24550), (24557), (24265), (23053), (23057), +(23058), (23040), (23041), (23043), (23045), (23046), (23047), (23048), (23049), (23050), (23072), (23362), (23363), (23054), (23056), (23577), +(23242), (23000), (23001), (23025), (23027), (23037), (23038), (23042), (23069), (23070), (23219), (23220), (23663), (23664), (23665), (23666), +(23667), (23668), (23004), (23005), (23006), (23009), (23017), (23018), (23019), (23020), (23021), (23023), (23028), (23029), (23030), (23031), +(23032), (23033), (23034), (23035), (23036), (23039), (23044), (23068), (23071), (23073), (23075), (23221), (23226), (23237), (23238), (23014), +(23457), (23458), (23459), (23461), (23462), (23193), (23545), (23547), (23548), (23549), (23714), (23705), (23709), (23716), (23773), (24412), +(25641), (24137), (25667), (23854), (23855), (24288), (27388), (27446), (24071), (23885), (23882), (23364), (23366), (27774), (27811), (27002), +(27007), (26368), (26372), (26655), (26738), (26128), (26129), (26130), (26131), (26132), (26133), (26134), (26135), (26464), (26465), (26513), +(26527), (26541), (26569), (26765), (26779), (25573), (25574), (25575), (25576), (25580), (25581), (25582), (26235), (26792), (25627), (27196), +(27718), (27719), (27720), (26324), (25145), (25159), (25173), (25285), (26843), (26548), (26180), (26173), (26174), (26175), (27218), (23147), +(23151), (23153), (23229), (23076), (23157), (26015), (26029), (26041), (23420), (23421), (23422), (23432), (23433), (23434), (23233), (23234), +(23235), (27864), (26045), (27863), (24243), (23731), (23755), (23840), (24315), (25877), (23137), (23131), (23141), (23730), (23130), (23135), +(23140), (23144), (23148), (23152), (23162), (23194), (23195), (23196), (23684), (23745), (25469), (25699), (25700), (27422), (27437), (27481), +(27511), (27513), (23578), (25900), (23579), (23683), (23711), (23734), (23846), (23365), (23368), (24227), (24100), (23003), (23008), (23010), +(23011), (23012), (23013), (23016), (23024), (23055), (23214), (23227), (23248), (23340), (23341), (23342), (23350), (23352), (23360), (23378), +(23471), (23486), (23552), (23567), (23584), (23586), (23670), (23686), (23726), (23754), (23878), (23879), (23880), (24156), (24226), (24317), +(24494), (24538), (24573), (25635), (25677), (25747), (25748), (25749), (25750), (25754), (25755), (25756), (25757), (25850), (27317), (27419), +(27590), (23560), (23561), (23562), (23750), (23858), (23866), (23867), (23868), (25814), (27443), (25407), (24242), (27441), (24235), (24190), +(24234), (24188), (23330), (23355), (23952), (23980), (24283), (24506), (24509), (25813), (24140), (28294), (28295), (28297), (28298), (28299), +(28300), (28302), (28305), (28307), (28308), (28309), (28310), (28312), (28313), (28314), (28319), (28320), (28346), (28358), (28383), (28385), +(28402), (28404), (28409), (28410), (28422), (28423), (28443), (28444), (28446), (28447), (28449), (28450), (28476), (28629), (28630), (28639), +(28640), (28641), (28642), (28644), (28645), (28974), (28975), (28976), (28977), (28980), (28982), (28983), (28985), (28986), (28987), (28990), +(28991), (28993), (28994), (28995), (28997), (28998), (28355), (28356), (28357), (28244), (28245), (28381), (28405), (28411), (28424), (28445), +(28448), (28451), (28605), (28638), (28643), (28646), (28973), (28978), (28981), (28984), (28988), (28989), (28992), (28996), (28999), (28117), +(28122), (28388), (28389), (28482), (28293), (28613), (28614), (28615), (28616), (28617), (28618), (28619), (28620), (28622), (28623), (28624), +(28625), (28626), (28627), (28628), (28679), (28680), (28681), (28683), (28684), (28685), (28686), (28687), (28688), (28689), (28690), (28691), +(28692), (28693), (28694), (28695), (28696), (28697), (28698), (28699), (28700), (28701), (28702), (28703), (28704), (28705), (28706), (28707), +(28708), (28709), (28710), (28711), (28712), (28713), (28714), (28715), (28716), (28717), (28718), (28719), (28720), (28721), (28722), (28723), +(28724), (28805), (28806), (28807), (28808), (28809), (28811), (28812), (28813), (28814), (28815), (28817), (28818), (28819), (28820), (28821), +(28831), (28832), (28833), (28834), (28835), (28836), (28837), (28838), (28839), (28840), (28841), (28842), (28843), (28844), (28845), (28846), +(28847), (28848), (28849), (28850), (28851), (28852), (28853), (28854), (28855), (28856), (28857), (28858), (28859), (28860), (28861), (28862), +(28863), (28864), (28865), (28866), (28867), (28868), (28869), (28870), (28871), (28872), (28873), (28874), (28875), (28917), (28918), (28919), +(28920), (28921), (28922), (28923), (28924), (28925), (28926), (28928), (28929), (28930), (28931), (28933), (28935), (28937), (28938), (28939), +(28940), (28941), (28942), (28943), (28944), (28945), (28946), (28947), (28948), (28949), (28950), (28951), (28952), (28953), (28954), (28955), +(28956), (28957), (28959), (28960), (28043), (28044), (28045), (28291), (28408), (28145), (28073), (28112), (28068), (28596), (28072), (28110), +(28131), (28071), (28047), (28099), (28500), (28676), (28738), (28739), (28784), (28039), (28023), (28489), (28905), (30320), (29828), (31958), +(31959), (31965), (31966), (31978), (31984), (31985), (31986), (30448), (29000), (29001), (29003), (29004), (29005), (30491), (31594), (31595), +(31596), (31597), (29885), (29002), (29006), (31598), (31599), (29237), (30559), (29120), (29225), (31584), (31585), (31586), (31587), (31588), +(31589), (31590), (31591), (31592), (31593), (31620), (31621), (31622), (31623), (31624), (31625), (31626), (31627), (31628), (31629), (31630), +(31631), (31632), (31633), (31634), (31635), (31636), (31637), (31638), (31639), (31640), (31641), (31642), (31643), (31644), (31646), (31647), +(31648), (31649), (31650), (31942), (31490), (31491), (31802), (31492), (31493), (31494), (31246), (29210), (30418), (30287), (30288), (30289), +(31730), (30845), (29024), (30427), (30703), (30760), (29539), (29547), (29548), (29569), (30309), (30499), (29041), (29311), (29749), (29751), +(29769), (29839), (29840), (29841), (29842), (29852), (29856), (29857), (29860), (29861), (29863), (29868), (29871), (29872), (29874), (29887), +(29961), (29963), (30193), (30197), (30430), (30438), (30524), (30525), (30526), (30539), (30567), (30595), (30613), (30630), (30658), (30659), +(30717), (31122), (31123), (31130), (31252), (31266), (31346), (31365), (31518), (31607), (31665), (31813), (31843), (31845), (31849), (29790), +(29805), (30632), (30805), (31530), (29410), (29419), (29565), (29571), (29575), (29576), (29645), (29712), (30414), (31824), (32824), (32466), +(32419), (32760), (32761), (32956), (32959), (32416), (32003), (32014), (32025), (32026), (32027), (32028), (32044), (32045), (32046), (32052), +(32053), (32054), (32055), (32961), (32962), (32963), (32964), (32944), (32418), (32422), (32482), (32955), (32958), (32450), (32451), (32452), +(32974), (32975), (32976), (32978), (32982), (32984), (32985), (32987), (32992), (32993), (32995), (32996), (32415), (32417), (32954), (32957), +(32973), (32977), (32983), (32986), (32991), (32994), (32093), (32094), (32095), (32096), (32097), (32098), (32099), (32100), (32101), (32102), +(32103), (32104), (32105), (32106), (32107), (32108), (32109), (32110), (32111), (32112), (32113), (32114), (32115), (32116), (32117), (32118), +(32119), (32120), (32121), (32122), (32123), (32124), (32125), (32126), (32127), (32128), (32129), (32130), (32131), (32132), (32133), (32134), +(32135), (32136), (32137), (32138), (32139), (32140), (32141), (32142), (32143), (32144), (32145), (32146), (32147), (32148), (32149), (32150), +(32151), (32152), (32153), (32154), (32155), (32156), (32157), (32158), (32159), (32160), (32161), (32162), (32163), (32164), (32165), (32166), +(32167), (32168), (32169), (32170), (32171), (32172), (32173), (32174), (32175), (32176), (32177), (32178), (32179), (32180), (32181), (32182), +(32183), (32184), (32185), (32186), (32187), (32188), (32189), (32190), (32192), (32414), (32421), (32655), (32656), (32914), (32735), (32895), +(32896), (32407), (32658), (32659), (32660), (32661), (32662), (32663), (32664), (32665), (32949), (32950), (32412), (32915), (32917), (32918), +(32919), (32920), (32465), (32542), (32566), (32594), (32773), (32764), (32765), (32766), (32618), (32642), (32543), (32544), (32545), (32546), +(32547), (32548), (32549), (32550), (32551), (32552), (32553), (32554), (32555), (32556), (32557), (32558), (32559), (32560), (32561), (32595), +(32598), (32601), (32840), (32844), (32845), (32846), (32847), (32762), (32763), (32767), (32972), (32320), (32364), (32408), (32626), (32627), +(32628), (32629), (32630), (32631), (32688), (32689), (32690), (32691), (32692), (32693), (32700), (32701), (32702), (32703), (32704), (32705), +(32706), (32707), (32708), (32709), (32710), (32711), (32712), (32713), (32734), (32911), (32971), (32578), (32906), (32725), (32615), (32633), +(32841), (33475), (34146), (34149), (34145), (34148), (34144), (34147), (34219), (34335), (34209), (34212), (33668), (33671), (33674), (33676), +(33679), (33682), (33684), (33690), (33693), (33699), (33700), (33703), (33717), (33720), (33726), (33729), (33732), (33744), (33747), (33753), +(33767), (33770), (33920), (33921), (33922), (33923), (33076), (33077), (33078), (33309), (33313), (33937), (33940), (33943), (33946), (33949), +(33952), (34576), (34577), (34578), (34579), (34580), (33987), (33997), (33054), (33065), (33066), (33067), (33068), (33482), (33964), (33936), +(33939), (33942), (33945), (33948), (33951), (33957), (33959), (34073), (34074), (34075), (34622), (34057), (33132), (33137), (33138), (33139), +(33141), (33142), (33809), (34544), (33080), (33225), (33182), (33184), (34835), (33350), (34138), (34139), (33803), (34143), (34142), (34221), +(33060), (33147), (34627), (34967), (34415), (34107), (33224), (33993), (34955), (33017), (33018), (33019), (33020), (33021), (33176), (33183), +(33219), (33223), (34492), (34499), (34518), (34519), (33197), (34484), (34486), (33455), (34025), (34030), (33312), (34062), (34024), (34126), +(34469), (34735), (34737), (34738), (34739), (34740), (34741), (34742), (34743), (34744), (34745), (34746), (34864), (34865), (34867), (34868), +(33823), (33824), (34467), (34663), (33096), (33218), (33041), (33081), (33087), (33105), (33111), (33121), (33315), (33336), (33341), (33477), +(33558), (33599), (33604), (33610), (33614), (33615), (33616), (33617), (33634), (33781), (33784), (33839), (33848), (33850), (33929), (34044), +(34077), (34112), (34115), (34116), (34117), (34120), (34123), (34135), (34158), (34187), (34191), (34494), (34497), (34501), (34623), (34645), +(34647), (34716), (34718), (34842), (33051), (33063), (33797), (34171), (33316), (34476), (33089), (34589), (34590), (34591), (34694), (34784), +(34880), (34907), (36942), (35290), (35291), (35292), (35317), (35319), (35327), (35494), (35495), (35496), (35497), (35507), (35508), (35509), +(35511), (35514), (35213), (35539), (35541), (35545), (35546), (35549), (35550), (35202), (35209), (35226), (35517), (35518), (35519), (35520), +(35521), (35522), (35523), (35524), (35525), (35526), (35527), (35528), (35529), (35530), (35531), (35532), (35533), (35535), (35537), (35538), +(35544), (35548), (35551), (35553), (35555), (35664), (35665), (35666), (36866), (36867), (35728), (35729), (35730), (35731), (35225), (36941), +(36454), (36477), (36491), (36505), (36519), (36533), (36547), (36561), (36575), (36589), (36603), (36617), (36631), (36645), (36659), (36673), +(36687), (36701), (36715), (35876), (36910), (36915), (35626), (36899), (36900), (36970), (36892), (36893), (36894), (36965), (36897), (36955), +(36967), (36895), (36960), (36912), (36914), (36968), (36959), (36889), (36890), (36891), (36966), (36896), (36964), (35285), (35286), (35396), +(35397), (35398), (35399), (35400), (35417), (35418), (35419), (35420), (35421), (35422), (35423), (35424), (35425), (35426), (35427), (35428), +(35429), (35430), (35431), (35432), (35433), (35434), (35435), (35436), (35437), (35438), (35439), (35440), (35441), (35442), (35443), (35444), +(35445), (35446), (35447), (35448), (35449), (35450), (35451), (35452), (35453), (35454), (35455), (35456), (35457), (35458), (35459), (35460), +(35461), (35462), (35313), (35946), (35126), (35229), (35289), (35692), (35701), (35718), (35722), (35738), (35777), (35803), (35840), (35854), +(36733), (36748), (36765), (36768), (36772), (36799), (36828), (36836), (36846), (36848), (35512), (35792), (35806), (36862), (36863), (35757), +(36794), (36795), (36829), (36830), (38691), (37739), (37740), (37611), (37127), (37128), (37597), (38287), (38288), (38289), (38290), (38282), +(38307), (38377), (38378), (38265), (37598), (37719), (38576), (38484), (38309), (38310), (38311), (38312), (38313), (38314), (37174), (37175), +(37176), (37196), (37197), (37243), (37244), (37245), (37290), (37364), (37365), (37366), (37410), (37587), (37590), (37624), (37625), (37646), +(37647), (37648), (37649), (37671), (37672), (37673), (37697), (37698), (37699), (37799), (37800), (37801), (37856), (37857), (37858), (37109), +(38442), (38443), (38444), (38445), (38387), (38388), (38389), (38390), (38572), (38468), (38243), (38244), (38245), (38246), (38247), (38248), +(38471), (38480), (38481), (38469), (37430), (37311), (37313), (38292), (38538), (38658), (38683), (37164), (37827), (37893), (37894), (37895), +(37896), (37897), (37297), (37298), (38301), (38578), (38916), (37955), (37967), (37976), (38052), (38140), (38204), (38383), (38524), (38525), +(38527), (37210), (37225), (37273), (37278), (37279), (37281), (37284), (37285), (37286), (37295), (37296), (37315), (37316), (37317), (37318), +(37321), (37323), (37324), (37385), (37386), (37400), (37420), (37433), (37444), (37448), (37450), (37451), (37453), (37454), (37455), (37457), +(37466), (37468), (37469), (37470), (37472), (37473), (37474), (37477), (37485), (37510), (37511), (37534), (37536), (37544), (38164), (38254), +(38255), (38256), (37343), (37345), (37346), (37338), (37326), (37329), (37335), (37336), (37337), (37710), (37312), (37163), (37154), (37126), +(37348), (38640), (38970), (38994), (38996), (38983), (37706), (38958), (37452), (38270), (38271), (38272), (38561), (38597), (38643), (38625), +(38957), (38567), (37161), (37157), (37158), (37489), (37898), (37900), (37901), (37902), (37903), (37904), (37905), (37906), (37907), (37908), +(37909), (37100), (37250), (37303), (37372), (37501), (37815), (37837), (37859), (37860), (37925), (38089), (38186), (38233), (38266), (38324), +(38380), (38382), (38483), (38498), (38512), (38577), (38600), (38606), (38619), (38621), (38622), (38623), (38624), (38629), (38630), (38631), +(37063), (37089), (37090), (37148), (37301), (37711), (37742), (37878), (38333), (38587), (38644), (38687), (38448), (37839), (38497), (38496), +(38626), (37467), (37579), (38261), (38263), (38264), (38268), (38269), (38273), (38274), (38605), (40481), (41900), (41911), (41995), (40549), +(39715), (40406), (40407), (40408), (40409), (40410), (40412), (40414), (40650), (39263), (39427), (39467), (39468), (39470), (39472), (39473), +(40307), (40553), (40440), (40441), (40442), (40443), (40444), (39769), (41749), (41342), (39303), (40480), (41605), (41606), (40762), (40777), +(40599), (40727), (40754), (40832), (40839), (40725), (41403), (41404), (41405), (41406), (41407), (41408), (41409), (41410), (41411), (41412), +(41413), (41414), (41415), (41416), (41417), (41418), (41419), (41420), (41421), (41422), (41423), (41796), (41125), (39370), (40232), (41133), +(39364), (39410), (39440), (39460), (39819), (39828), (41756), (41757), (41758), (41759), (39707), (39708), (39709), (39710), (39711), (41178), +(41750), (41753), (39685), (41147), (41166), (41174), (41196), (39644), (39687), (39738), (39969), (40199), (40776), (41091), (41093), (41111), +(41118), (41173), (39526), (39527), (41195), (39148), (39213), (39343), (39692), (41741), (41800), (41801), (41802), (41803), (41804), (41805), +(41806), (41807), (41808), (41809), (41810), (41811), (41812), (41813), (41814), (40773), (41194), (39342), (40484), (40948), (41193), (41172), +(39341), (41192), (41171), (39340), (41169), (41191), (39339), (41170), (39338), (39302), (39334), (39151), (39162), (39163), (39314), (39575), +(39576), (39614), (39739), (39748), (39903), (39904), (40110), (40218), (40219), (40220), (40221), (40222), (40223), (40224), (40225), (40226), +(40227), (40228), (40229), (40230), (40231), (40389), (40686), (41132), (41585), (39506), (39883), (39153), (39743), (39754), (42000), (42007), +(42013), (42019), (42083), (42238), (42207), (42226), (42231), (42236), (42241), (42254), (42259), (42264), (42269), (42274), (42279), (42284), +(42289), (42316), (42321), (42326), (42331), (42345), (42351), (42359), (42383), (42389), (42449), (42484), (42489), (42494), (42501), (42512), +(42518), (42524), (42530), (42536), (42558), (42563), (42569), (42577), (42582), (42587), (42596), (42601), (42606), (42613), (42619), (42654), +(42655), (42656), (42657), (42658), (42851), (42664), (42665), (42666), (42667), (42668), (42625), (42626), (42627), (42628), (42629), (42659), +(42660), (42661), (42662), (42663), (42690), (42691), (42692), (42693), (42694), (42695), (42696), (42697), (42698), (42699), (42630), (42631), +(42632), (42633), (42634), (42635), (42636), (42637), (42638), (42639), (42669), (42670), (42671), (42672), (42673), (42674), (42675), (42676), +(42677), (42678), (42680), (42681), (42682), (42683), (42684), (42685), (42686), (42687), (42688), (42689), (42703), (42704), (42705), (42706), +(42707), (42708), (42709), (42710), (42711), (42712), (42713), (42714), (42715), (42716), (42717), (42718), (42719), (42720), (42721), (42722), +(42197), (42198), (42199), (42200), (42201), (42202), (42976), (42206), (42212), (42213), (42214), (42215), (42216), (42217), (42218), (42219), +(42220), (42221), (42222), (42223), (42224), (42294), (42295), (42296), (42297), (42343), (42344), (42356), (42382), (42388), (42444), (42445), +(42446), (42447), (42448), (42511), (42517), (42523), (42529), (42535), (42556), (42557), (42568), (42574), (42575), (42576), (42593), (42594), +(42595), (42611), (42612), (42618), (42755), (42953), (42975), (42977), (42978), (42979), (42980), (42981), (42982), (42983), (42875), (42885), +(42886), (42174), (42179), (42425), (42147), (42434), (42171), (42545), (42180), (42181), (42182), (42186), (42189), (42190), (42191), (42192), +(42193), (42194), (42195), (42196), (42432), (42433), (42170), (42986), (42590), (42474), (42440), (42894), (42733), (42342), (42350), (42381), +(42776), (42940), (43651), (43727), (43728), (43729), (43730), (43731), (43460), (43611), (43612), (43613), (43732), (43733), (43734), (43735), +(43736), (43737), (43738), (43739), (43740), (43741), (43742), (43743), (43744), (43745), (43746), (43747), (43748), (43749), (43750), (43751), +(43752), (43753), (43754), (43755), (43756), (43757), (43758), (43759), (43760), (43761), (43762), (43763), (43764), (43765), (43766), (43767), +(43768), (43769), (43770), (43771), (43772), (43773), (43774), (43775), (43776), (43777), (43778), (43779), (43780), (43781), (43782), (43783), +(43784), (43785), (43786), (43787), (43788), (43789), (43790), (43791), (43792), (43793), (43794), (43795), (43796), (43797), (43798), (43799), +(43800), (43801), (43802), (43803), (43804), (43805), (43806), (43807), (43808), (43809), (43810), (43811), (43812), (43813), (43814), (43815), +(43816), (43817), (43818), (43819), (43820), (43822), (43069), (43071), (43072), (43075), (43076), (43079), (43080), (43083), (43267), (43963), +(43964), (43475), (43476), (43302), (43303), (43304), (43949), (43517), (43698), (43648), (43848), (43878), (43895), (43922), (43936), (43938), +(43109), (43563), (43108), (43298), (43562), (43107), (43561), (43106), (43560), (43105), (43559), (43104), (43558), (43103), (43557), (43150), +(43523), (43087), (43097), (43518), (43468), (43571), (43572), (43614), (43620), (43621), (43647), (43652), (43038), (43646), (43002), (43099), +(43136), (43144), (43149), (43269), (43270), (43272), (43274), (43275), (43276), (43308), (43336), (43337), (43384), (43362), (43006), (43093), +(43288), (43307), (43471), (43486), (43489), (43617), (43618), (43619), (43627), (43628), (43629), (43630), (43631), (43632), (43633), (43634), +(43635), (43636), (43637), (43638), (43639), (43640), (43641), (43650), (43695), (43215), (43493), (43659), (43003), (43321), (43325), (43326), +(43328), (43329), (43330), (43333), (43341), (43576), (43577), (43643), (43644), (43645), (43653), (43658), (43675), (43676), (43677), (43678), +(43679), (43680), (43681), (43682), (43683), (43684), (43685), (43686), (43687), (43694), (43701), (43702), (43703), (43704), (43705), (43706), +(43707), (43708), (43709), (43710), (43711), (43712), (43713), (43714), (43715), (43716), (43717), (43718), (43719), (43720), (43721), (43722), +(43723), (44090), (44807), (45457), (45459), (45460), (45461), (45462), (45605), (45455), (45538), (45539), (45540), (45541), (45542), (45543), +(45544), (45547), (45548), (45549), (45350), (45464), (44310), (44311), (44333), (44417), (44418), (44869), (44870), (44926), (44948), (45924), +(44924), (44555), (44556), (44557), (44871), (44872), (44873), (44874), (44164), (44175), (45280), (45024), (45037), (45173), (44191), (44415), +(44416), (45172), (44505), (45174), (45175), (44391), (44392), (45850), (45851), (45852), (45853), (44945), (44563), (44875), (44876), (44877), +(44878), (44879), (44880), (44881), (44882), (44883), (44884), (45705), (44451), (44619), (44627), (44629), (44600), (44811), (44158), (44148), +(45180), (44260), (44261), (44262), (44263), (44264), (44265), (44266), (44267), (44268), (44269), (44270), (44271), (44272), (44273), (44274), +(44275), (44277), (44278), (44279), (44280), (44281), (44282), (44284), (44285), (44286), (44287), (44288), (44289), (44290), (44291), (44292), +(44293), (44866), (44972), (45063), (44703), (45575), (45126), (44428), (45052), (45050), (45629), (44849), (45127), (45229), (45230), (45231), +(45500), (44817), (44607), (45006), (45007), (45008), (45009), (44506), (44507), (45279), (45863), (45901), (45909), (44221), (44229), (44598), +(44608), (44609), (44475), (45276), (45277), (44432), (45908), (44743), (44604), (45942), (44462), (44480), (44508), (44620), (44646), (44680), +(44832), (44851), (44852), (44856), (44915), (44981), (44988), (44989), (44991), (44992), (44993), (44994), (44996), (44997), (45003), (45026), +(45028), (45029), (45030), (45031), (45032), (45033), (45036), (45045), (45049), (45082), (45120), (45278), (45328), (45569), (45728), (45729), +(45730), (45748), (45749), (45750), (45751), (45752), (45754), (45759), (45765), (45860), (45899), (45902), (45903), (45904), (45905), (44304), +(44434), (44656), (44718), (45034), (45035), (45568), (44299), (45630), (44728), (44236), (44298), (44300), (44578), (44580), (44705), (44755), +(44760), (44761), (44833), (45061), (45176), (45177), (45178), (45179), (45188), (45189), (45190), (45191), (45194), (45195), (45196), (45197), +(45198), (45199), (45200), (45201), (45202), (45900), (45907), (46105), (46104), (46214), (46215), (46217), (46218), (46219), (46220), (46222), +(46225), (46227), (46228), (46230), (46232), (46233), (46234), (46235), (46236), (46237), (46238), (46239), (46240), (46241), (46242), (46243), +(46244), (46245), (46246), (46248), (46255), (46256), (46257), (46273), (46274), (46275), (46276), (46277), (46288), (46289), (46290), (46291), +(46292), (46293), (46294), (46295), (46296), (46297), (46298), (46299), (46300), (46301), (46302), (46303), (46304), (46305), (46306), (46307), +(46103), (46213), (46216), (46221), (46223), (46224), (46226), (46231), (46247), (46249), (46250), (46251), (46252), (46253), (46254), (46258), +(46259), (46260), (46261), (46262), (46263), (46264), (46265), (46266), (46267), (46268), (46269), (46270), (46271), (46272), (46278), (46279), +(46280), (46281), (46282), (46283), (46284), (46285), (46286), (46287), (46309), (46339), (46340), (46341), (46342), (46343), (46344), (46345), +(46346), (46347), (46350), (46351), (47497), (47229), (46101), (46778), (46331), (47246), (46709), (46767), (46802), (46892), (46780), (46765), +(46766), (46849), (47507), (47395), (46399), (46400), (46401), (46402), (46403), (46055), (46847), (47030), (46887), (46054), (46735), (46069), +(46070), (46106), (46319), (46395), (46783), (46830), (46978), (47036), (46852), (46957), (49686), (48435), (48438), (48440), (48442), (48444), +(48507), (48509), (48511), (48513), (48515), (48517), (48519), (48521), (48523), (49191), (49497), (48725), (48726), (48727), (48728), (48729), +(48730), (48731), (48732), (48733), (48734), (48735), (48736), (48737), (48738), (48739), (48740), (48741), (48742), (48743), (48744), (48745), +(48746), (48747), (48748), (48749), (48750), (48751), (48752), (48753), (48754), (48755), (48756), (48757), (48758), (48759), (48760), (48761), +(48762), (48763), (48764), (48769), (48770), (48771), (48772), (48773), (48774), (48775), (48776), (48777), (48778), (48781), (48782), (48783), +(48784), (48785), (48786), (48787), (48788), (48789), (48790), (48794), (48795), (48796), (48797), (48798), (48799), (48800), (48801), (48802), +(48803), (48804), (48805), (48806), (48807), (48808), (48809), (48810), (48811), (48812), (48813), (48814), (48815), (48816), (48817), (48818), +(48819), (48820), (48821), (48822), (48823), (48824), (48825), (48826), (48827), (48828), (48829), (48830), (48831), (48832), (48833), (48836), +(48837), (48838), (48839), (48840), (48841), (48842), (48843), (48844), (48845), (48846), (48847), (48848), (48849), (48850), (48851), (48852), +(48853), (48854), (48855), (48860), (48861), (48862), (48863), (48864), (48865), (48866), (48867), (48868), (48869), (48870), (48871), (48872), +(48873), (48874), (48875), (48876), (48877), (48878), (48879), (48880), (48881), (48882), (48883), (48884), (48885), (48886), (48887), (48888), +(48889), (48890), (48891), (48892), (48893), (48894), (48895), (48896), (48897), (48898), (48899), (48900), (48901), (48902), (48903), (48904), +(48905), (48906), (48907), (48908), (48909), (48910), (48911), (48912), (48913), (48914), (48915), (48916), (48917), (48918), (48919), (48922), +(48923), (48924), (48925), (48926), (48927), (48928), (48929), (48930), (48931), (49301), (49312), (49313), (49314), (49852), (49853), (49854), +(49855), (49334), (49703), (49704), (49706), (48945), (49050), (48527), (49662), (49663), (49665), (49693), (49343), (49640), (49917), (48601), +(49288), (49289), (48679), (49362), (49223), (49278), (49340), (49373), (49655), (49680), (49739), (49750), (49915), (49916), (49209), (49645), +(49689), (49708), (49733), (49873), (49984), (50442), (50204), (51682), (51683), (51684), (51685), (51686), (51687), (51688), (51689), (51690), +(51691), (51692), (51693), (51694), (51695), (51696), (51697), (51698), (51699), (51700), (51701), (51702), (51703), (51704), (51705), (51706), +(51707), (51708), (51709), (51710), (51711), (51712), (51713), (51714), (51715), (51716), (51717), (51718), (51719), (51720), (51721), (51722), +(51723), (51724), (51725), (51726), (51727), (51728), (51729), (51730), (51731), (51732), (51733), (51734), (51735), (51736), (51737), (51738), +(51739), (51740), (51741), (51742), (51743), (51744), (51745), (51746), (51747), (51748), (51749), (51750), (51751), (51752), (51753), (51754), +(51755), (51756), (51757), (51758), (51759), (51760), (51761), (51762), (51763), (51764), (51765), (51766), (51767), (51768), (51769), (51770), +(51771), (51772), (51773), (51774), (51775), (51776), (53491), (53492), (53493), (53494), (53495), (53496), (53497), (53498), (53499), (53500), +(53501), (53502), (53503), (53504), (53505), (53506), (53507), (53508), (53509), (54592), (50315), (50318), (50319), (52567), (50815), (53889), +(53890), (54069), (54860), (50840), (53891), (53924), (51997), (51998), (54847), (54857), (56806), (54212), (54452), (54810), (50093), (54822), +(50289), (50301), (50307), (52189), (52202), (52272), (52275), (52276), (52345), (52562), (52563), (52565), (52729), (53510), (54218), (54455), +(54467), (50248), (50431), (52011), (52062), (54291), (54470); diff --git a/modules/mod-ah-bot/src/AuctionHouseBot.cpp b/modules/mod-ah-bot/src/AuctionHouseBot.cpp new file mode 100644 index 0000000..9ceb204 --- /dev/null +++ b/modules/mod-ah-bot/src/AuctionHouseBot.cpp @@ -0,0 +1,1942 @@ +/* + * Copyright (C) 2008-2010 Trinity + * Copyright (C) 2005-2009 MaNGOS + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ObjectMgr.h" +#include "AuctionHouseMgr.h" +#include "AuctionHouseBot.h" +#include "Config.h" +#include "Player.h" +#include "WorldSession.h" +#include "GameTime.h" +#include + +using namespace std; +vector npcItems; +vector lootItems; +vector greyTradeGoodsBin; +vector whiteTradeGoodsBin; +vector greenTradeGoodsBin; +vector blueTradeGoodsBin; +vector purpleTradeGoodsBin; +vector orangeTradeGoodsBin; +vector yellowTradeGoodsBin; +vector greyItemsBin; +vector whiteItemsBin; +vector greenItemsBin; +vector blueItemsBin; +vector purpleItemsBin; +vector orangeItemsBin; +vector yellowItemsBin; + +AuctionHouseBot::AuctionHouseBot() +{ + debug_Out = false; + debug_Out_Filters = false; + AHBSeller = false; + AHBBuyer = false; + + //Begin Filters + + Vendor_Items = false; + Loot_Items = false; + Other_Items = false; + Vendor_TGs = false; + Loot_TGs = false; + Other_TGs = false; + + No_Bind = false; + Bind_When_Picked_Up = false; + Bind_When_Equipped = false; + Bind_When_Use = false; + Bind_Quest_Item = false; + + DisablePermEnchant = false; + DisableConjured = false; + DisableGems = false; + DisableMoney = false; + DisableMoneyLoot = false; + DisableLootable = false; + DisableKeys = false; + DisableDuration = false; + DisableBOP_Or_Quest_NoReqLevel = false; + + DisableWarriorItems = false; + DisablePaladinItems = false; + DisableHunterItems = false; + DisableRogueItems = false; + DisablePriestItems = false; + DisableDKItems = false; + DisableShamanItems = false; + DisableMageItems = false; + DisableWarlockItems = false; + DisableUnusedClassItems = false; + DisableDruidItems = false; + + DisableItemsBelowLevel = 0; + DisableItemsAboveLevel = 0; + DisableTGsBelowLevel = 0; + DisableTGsAboveLevel = 0; + DisableItemsBelowGUID = 0; + DisableItemsAboveGUID = 0; + DisableTGsBelowGUID = 0; + DisableTGsAboveGUID = 0; + DisableItemsBelowReqLevel = 0; + DisableItemsAboveReqLevel = 0; + DisableTGsBelowReqLevel = 0; + DisableTGsAboveReqLevel = 0; + DisableItemsBelowReqSkillRank = 0; + DisableItemsAboveReqSkillRank = 0; + DisableTGsBelowReqSkillRank = 0; + DisableTGsAboveReqSkillRank = 0; + + //End Filters + + _lastrun_a = time(NULL); + _lastrun_h = time(NULL); + _lastrun_n = time(NULL); + + AllianceConfig = AHBConfig(2); + HordeConfig = AHBConfig(6); + NeutralConfig = AHBConfig(7); +} + +AuctionHouseBot::~AuctionHouseBot() +{ +} + +void AuctionHouseBot::addNewAuctions(Player *AHBplayer, AHBConfig *config) +{ + if (!AHBSeller) + { + if (debug_Out) + LOG_INFO("module", "AHSeller: Disabled"); + return; + } + + uint32 minItems = config->GetMinItems(); + uint32 maxItems = config->GetMaxItems(); + + if (maxItems == 0) + { + //if (debug_Out) sLog->outString( "AHSeller: Auctions disabled"); + return; + } + + AuctionHouseEntry const* ahEntry = sAuctionMgr->GetAuctionHouseEntry(config->GetAHFID()); + if (!ahEntry) + { + return; + } + AuctionHouseObject* auctionHouse = sAuctionMgr->GetAuctionsMap(config->GetAHFID()); + if (!auctionHouse) + { + return; + } + + uint32 auctions = auctionHouse->Getcount(); + + uint32 items = 0; + + if (auctions >= minItems) + { + if (debug_Out) + LOG_ERROR("module", "AHSeller: Auctions above minimum"); + return; + } + + if (auctions >= maxItems) + { + if (debug_Out) + LOG_ERROR("module", "AHSeller: Auctions at or above maximum"); + return; + } + + if ((maxItems - auctions) >= ItemsPerCycle) + items = ItemsPerCycle; + else + items = (maxItems - auctions); + + if (debug_Out) + LOG_INFO("module", "AHSeller: Adding {} Auctions", items); + + if (debug_Out) + LOG_ERROR("module", "AHSeller: Current house id is {}", config->GetAHID()); + + uint32 greyTGcount = config->GetPercents(AHB_GREY_TG); + uint32 whiteTGcount = config->GetPercents(AHB_WHITE_TG); + uint32 greenTGcount = config->GetPercents(AHB_GREEN_TG); + uint32 blueTGcount = config->GetPercents(AHB_BLUE_TG); + uint32 purpleTGcount = config->GetPercents(AHB_PURPLE_TG); + uint32 orangeTGcount = config->GetPercents(AHB_ORANGE_TG); + uint32 yellowTGcount = config->GetPercents(AHB_YELLOW_TG); + uint32 greyIcount = config->GetPercents(AHB_GREY_I); + uint32 whiteIcount = config->GetPercents(AHB_WHITE_I); + uint32 greenIcount = config->GetPercents(AHB_GREEN_I); + uint32 blueIcount = config->GetPercents(AHB_BLUE_I); + uint32 purpleIcount = config->GetPercents(AHB_PURPLE_I); + uint32 orangeIcount = config->GetPercents(AHB_ORANGE_I); + uint32 yellowIcount = config->GetPercents(AHB_YELLOW_I); +/* uint32 total = greyTGcount + whiteTGcount + greenTGcount + blueTGcount + + purpleTGcount + orangeTGcount + yellowTGcount + + whiteIcount + greenIcount + blueIcount + purpleIcount + + orangeIcount + yellowIcount; +*/ + uint32 greyTGoods = config->GetItemCounts(AHB_GREY_TG); + uint32 whiteTGoods = config->GetItemCounts(AHB_WHITE_TG); + uint32 greenTGoods = config->GetItemCounts(AHB_GREEN_TG); + uint32 blueTGoods = config->GetItemCounts(AHB_BLUE_TG); + uint32 purpleTGoods = config->GetItemCounts(AHB_PURPLE_TG); + uint32 orangeTGoods = config->GetItemCounts(AHB_ORANGE_TG); + uint32 yellowTGoods = config->GetItemCounts(AHB_YELLOW_TG); + + uint32 greyItems = config->GetItemCounts(AHB_GREY_I); + uint32 whiteItems = config->GetItemCounts(AHB_WHITE_I); + uint32 greenItems = config->GetItemCounts(AHB_GREEN_I); + uint32 blueItems = config->GetItemCounts(AHB_BLUE_I); + uint32 purpleItems = config->GetItemCounts(AHB_PURPLE_I); + uint32 orangeItems = config->GetItemCounts(AHB_ORANGE_I); + uint32 yellowItems = config->GetItemCounts(AHB_YELLOW_I); + + if (debug_Out) + LOG_ERROR("module", "AHSeller: {} items", items); + + // only insert a few at a time, so as not to peg the processor + for (uint32 cnt = 1; cnt <= items; cnt++) + { + if (debug_Out) + LOG_ERROR("module", "AHSeller: {} count", cnt); + + uint32 itemID = 0; + uint32 itemColor = 99; + uint32 loopbreaker = 0; + while (itemID == 0 && loopbreaker <= 50) + { + ++loopbreaker; + uint32 choice = urand(0, 13); + itemColor = choice; + switch (choice) + { + case 0: + { + if ((greyItemsBin.size() > 0) && (greyItems < greyIcount)) + itemID = greyItemsBin[urand(0, greyItemsBin.size() - 1)]; + else continue; + break; + } + case 1: + { + if ((whiteItemsBin.size() > 0) && (whiteItems < whiteIcount)) + itemID = whiteItemsBin[urand(0, whiteItemsBin.size() - 1)]; + else continue; + break; + } + case 2: + { + if ((greenItemsBin.size() > 0) && (greenItems < greenIcount)) + itemID = greenItemsBin[urand(0, greenItemsBin.size() - 1)]; + else continue; + break; + } + case 3: + { + if ((blueItemsBin.size() > 0) && (blueItems < blueIcount)) + itemID = blueItemsBin[urand(0, blueItemsBin.size() - 1)]; + else continue; + break; + } + case 4: + { + if ((purpleItemsBin.size() > 0) && (purpleItems < purpleIcount)) + itemID = purpleItemsBin[urand(0, purpleItemsBin.size() - 1)]; + else continue; + break; + } + case 5: + { + if ((orangeItemsBin.size() > 0) && (orangeItems < orangeIcount)) + itemID = orangeItemsBin[urand(0, orangeItemsBin.size() - 1)]; + else continue; + break; + } + case 6: + { + if ((yellowItemsBin.size() > 0) && (yellowItems < yellowIcount)) + itemID = yellowItemsBin[urand(0, yellowItemsBin.size() - 1)]; + else continue; + break; + } + case 7: + { + if ((greyTradeGoodsBin.size() > 0) && (greyTGoods < greyTGcount)) + itemID = greyTradeGoodsBin[urand(0, greyTradeGoodsBin.size() - 1)]; + else continue; + break; + } + case 8: + { + if ((whiteTradeGoodsBin.size() > 0) && (whiteTGoods < whiteTGcount)) + itemID = whiteTradeGoodsBin[urand(0, whiteTradeGoodsBin.size() - 1)]; + else continue; + break; + } + case 9: + { + if ((greenTradeGoodsBin.size() > 0) && (greenTGoods < greenTGcount)) + itemID = greenTradeGoodsBin[urand(0, greenTradeGoodsBin.size() - 1)]; + else continue; + break; + } + case 10: + { + if ((blueTradeGoodsBin.size() > 0) && (blueTGoods < blueTGcount)) + itemID = blueTradeGoodsBin[urand(0, blueTradeGoodsBin.size() - 1)]; + else continue; + break; + } + case 11: + { + if ((purpleTradeGoodsBin.size() > 0) && (purpleTGoods < purpleTGcount)) + itemID = purpleTradeGoodsBin[urand(0, purpleTradeGoodsBin.size() - 1)]; + else continue; + break; + } + case 12: + { + if ((orangeTradeGoodsBin.size() > 0) && (orangeTGoods < orangeTGcount)) + itemID = orangeTradeGoodsBin[urand(0, orangeTradeGoodsBin.size() - 1)]; + else continue; + break; + } + case 13: + { + if ((yellowTradeGoodsBin.size() > 0) && (yellowTGoods < yellowTGcount)) + itemID = yellowTradeGoodsBin[urand(0, yellowTradeGoodsBin.size() - 1)]; + else continue; + break; + } + default: + { + if (debug_Out) + LOG_ERROR("module", "AHSeller: itemID Switch - Default Reached"); + break; + } + } + + if (itemID == 0) + { + if (debug_Out) + LOG_ERROR("module", "AHSeller: Item::CreateItem() - ItemID is 0"); + continue; + } + + ItemTemplate const* prototype = sObjectMgr->GetItemTemplate(itemID); + if (prototype == NULL) + { + if (debug_Out) + LOG_ERROR("module", "AHSeller: Huh?!?! prototype == NULL"); + continue; + } + + Item* item = Item::CreateItem(itemID, 1, AHBplayer); + if (item == NULL) + { + if (debug_Out) + LOG_ERROR("module", "AHSeller: Item::CreateItem() returned NULL"); + break; + } + item->AddToUpdateQueueOf(AHBplayer); + + uint32 randomPropertyId = Item::GenerateItemRandomPropertyId(itemID); + if (randomPropertyId != 0) + item->SetItemRandomProperties(randomPropertyId); + + uint64 buyoutPrice = 0; + uint64 bidPrice = 0; + uint32 stackCount = 1; + + if (SellMethod) + buyoutPrice = prototype->BuyPrice; + else + buyoutPrice = prototype->SellPrice; + + if (prototype->Quality <= AHB_MAX_QUALITY) + { + if (config->GetMaxStack(prototype->Quality) > 1 && item->GetMaxStackCount() > 1) + stackCount = urand(1, minValue(item->GetMaxStackCount(), config->GetMaxStack(prototype->Quality))); + else if (config->GetMaxStack(prototype->Quality) == 0 && item->GetMaxStackCount() > 1) + stackCount = urand(1, item->GetMaxStackCount()); + else + stackCount = 1; + buyoutPrice *= urand(config->GetMinPrice(prototype->Quality), config->GetMaxPrice(prototype->Quality)); + buyoutPrice /= 100; + bidPrice = buyoutPrice * urand(config->GetMinBidPrice(prototype->Quality), config->GetMaxBidPrice(prototype->Quality)); + bidPrice /= 100; + } + else + { + // quality is something it shouldn't be, let's get out of here + if (debug_Out) + LOG_ERROR("module", "AHBuyer: Quality {} not Supported", prototype->Quality); + item->RemoveFromUpdateQueueOf(AHBplayer); + continue; + } + + uint32 etime = urand(1,3); + switch(etime) + { + case 1: + etime = 43200; + break; + case 2: + etime = 86400; + break; + case 3: + etime = 172800; + break; + default: + etime = 86400; + break; + } + item->SetCount(stackCount); + + uint32 dep = sAuctionMgr->GetAuctionDeposit(ahEntry, etime, item, stackCount); + + auto trans = CharacterDatabase.BeginTransaction(); + AuctionEntry* auctionEntry = new AuctionEntry(); + auctionEntry->Id = sObjectMgr->GenerateAuctionID(); + auctionEntry->houseId = config->GetAHID(); + auctionEntry->item_guid = item->GetGUID(); + auctionEntry->item_template = item->GetEntry(); + auctionEntry->itemCount = item->GetCount(); + auctionEntry->owner = AHBplayer->GetGUID(); + auctionEntry->startbid = bidPrice * stackCount; + auctionEntry->buyout = buyoutPrice * stackCount; + auctionEntry->bid = 0; + auctionEntry->deposit = dep; + auctionEntry->expire_time = (time_t) etime + time(NULL); + auctionEntry->auctionHouseEntry = ahEntry; + item->SaveToDB(trans); + item->RemoveFromUpdateQueueOf(AHBplayer); + sAuctionMgr->AddAItem(item); + auctionHouse->AddAuction(auctionEntry); + auctionEntry->SaveToDB(trans); + CharacterDatabase.CommitTransaction(trans); + + switch(itemColor) + { + case 0: + ++greyItems; + break; + case 1: + ++whiteItems; + break; + case 2: + ++greenItems; + break; + case 3: + ++blueItems; + break; + case 4: + ++purpleItems; + break; + case 5: + ++orangeItems; + break; + case 6: + ++yellowItems; + break; + case 7: + ++greyTGoods; + break; + case 8: + ++whiteTGoods; + break; + case 9: + ++greenTGoods; + break; + case 10: + ++blueTGoods; + break; + case 11: + ++purpleTGoods; + break; + case 12: + ++orangeTGoods; + break; + case 13: + ++yellowTGoods; + break; + default: + break; + } + } + } +} +void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *config, WorldSession *session) +{ + if (!AHBBuyer) + { + if (debug_Out) + LOG_ERROR("module", "AHBuyer: Disabled"); + return; + } + + QueryResult result = CharacterDatabase.Query("SELECT id FROM auctionhouse WHERE itemowner<>{} AND buyguid<>{}", AHBplayerGUID, AHBplayerGUID); + + if (!result) + return; + + if (result->GetRowCount() == 0) + return; + + // Fetches content of selected AH + AuctionHouseObject* auctionHouse = sAuctionMgr->GetAuctionsMap(config->GetAHFID()); + vector possibleBids; + + do + { + uint32 tmpdata = result->Fetch()->Get(); + possibleBids.push_back(tmpdata); + }while (result->NextRow()); + + for (uint32 count = 1; count <= config->GetBidsPerInterval(); ++count) + { + // Do we have anything to bid? If not, stop here. + if (possibleBids.empty()) + { + //if (debug_Out) sLog->outError( "AHBuyer: I have no items to bid on."); + count = config->GetBidsPerInterval(); + continue; + } + + // Choose random auction from possible auctions + uint32 vectorPos = urand(0, possibleBids.size() - 1); + vector::iterator iter = possibleBids.begin(); + advance(iter, vectorPos); + + // from auctionhousehandler.cpp, creates auction pointer & player pointer + AuctionEntry* auction = auctionHouse->GetAuction(*iter); + + // Erase the auction from the vector to prevent bidding on item in next iteration. + possibleBids.erase(iter); + + if (!auction) + continue; + + // get exact item information + Item *pItem = sAuctionMgr->GetAItem(auction->item_guid); + if (!pItem) + { + if (debug_Out) + LOG_ERROR("module", "AHBuyer: Item {} doesn't exist, perhaps bought already?", auction->item_guid.ToString()); + continue; + } + + // get item prototype + ItemTemplate const* prototype = sObjectMgr->GetItemTemplate(auction->item_template); + + // check which price we have to use, startbid or if it is bidded already + uint32 currentprice; + if (auction->bid) + currentprice = auction->bid; + else + currentprice = auction->startbid; + + // Prepare portion from maximum bid + double bidrate = static_cast(urand(1, 100)) / 100; + long double bidMax = 0; + + // check that bid has acceptable value and take bid based on vendorprice, stacksize and quality + if (BuyMethod) + { + if (prototype->Quality <= AHB_MAX_QUALITY) + { + if (currentprice < prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(prototype->Quality)) + bidMax = prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(prototype->Quality); + } + else + { + // quality is something it shouldn't be, let's get out of here + if (debug_Out) + LOG_ERROR("module", "AHBuyer: Quality {} not Supported", prototype->Quality); + continue; + } + } + else + { + if (prototype->Quality <= AHB_MAX_QUALITY) + { + if (currentprice < prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(prototype->Quality)) + bidMax = prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(prototype->Quality); + } + else + { + // quality is something it shouldn't be, let's get out of here + if (debug_Out) + LOG_ERROR("module", "AHBuyer: Quality {} not Supported", prototype->Quality); + continue; + } + } + + // check some special items, and do recalculating to their prices + switch (prototype->Class) + { + // ammo + case 6: + bidMax = 0; + break; + default: + break; + } + + if (bidMax == 0) + { + // quality check failed to get bidmax, let's get out of here + continue; + } + + // Calculate our bid + long double bidvalue = currentprice + ((bidMax - currentprice) * bidrate); + // Convert to uint32 + uint32 bidprice = static_cast(bidvalue); + + // Check our bid is high enough to be valid. If not, correct it to minimum. + if ((currentprice + auction->GetAuctionOutBid()) > bidprice) + bidprice = currentprice + auction->GetAuctionOutBid(); + + + if (debug_Out) + { + LOG_INFO("module", "-------------------------------------------------"); + LOG_INFO("module", "AHBuyer: Info for Auction #{}:", auction->Id); + LOG_INFO("module", "AHBuyer: AuctionHouse: {}", auction->GetHouseId()); + LOG_INFO("module", "AHBuyer: Owner: {}", auction->owner.ToString()); + LOG_INFO("module", "AHBuyer: Bidder: {}", auction->bidder.ToString()); + LOG_INFO("module", "AHBuyer: Starting Bid: {}", auction->startbid); + LOG_INFO("module", "AHBuyer: Current Bid: {}", currentprice); + LOG_INFO("module", "AHBuyer: Buyout: {}", auction->buyout); + LOG_INFO("module", "AHBuyer: Deposit: {}", auction->deposit); + LOG_INFO("module", "AHBuyer: Expire Time: {}", uint32(auction->expire_time)); + LOG_INFO("module", "AHBuyer: Bid Rate: {}", bidrate); + LOG_INFO("module", "AHBuyer: Bid Max: {}", bidMax); + LOG_INFO("module", "AHBuyer: Bid Value: {}", bidvalue); + LOG_INFO("module", "AHBuyer: Bid Price: {}", bidprice); + LOG_INFO("module", "AHBuyer: Item GUID: {}", auction->item_guid.ToString()); + LOG_INFO("module", "AHBuyer: Item Template: {}", auction->item_template); + LOG_INFO("module", "AHBuyer: Item Info:"); + LOG_INFO("module", "AHBuyer: Item ID: {}", prototype->ItemId); + LOG_INFO("module", "AHBuyer: Buy Price: {}", prototype->BuyPrice); + LOG_INFO("module", "AHBuyer: Sell Price: {}", prototype->SellPrice); + LOG_INFO("module", "AHBuyer: Bonding: {}", prototype->Bonding); + LOG_INFO("module", "AHBuyer: Quality: {}", prototype->Quality); + LOG_INFO("module", "AHBuyer: Item Level: {}", prototype->ItemLevel); + LOG_INFO("module", "AHBuyer: Ammo Type: {}", prototype->AmmoType); + LOG_INFO("module", "-------------------------------------------------"); + } + + // Check whether we do normal bid, or buyout + if ((bidprice < auction->buyout) || (auction->buyout == 0)) + { + if (auction->bidder) + { + if (auction->bidder == AHBplayer->GetGUID()) + { + //pl->ModifyMoney(-int32(price - auction->bid)); + } + else + { + // mail to last bidder and return money + auto trans = CharacterDatabase.BeginTransaction(); + sAuctionMgr->SendAuctionOutbiddedMail(auction, bidprice, session->GetPlayer(), trans); + CharacterDatabase.CommitTransaction(trans); + //pl->ModifyMoney(-int32(price)); + } + } + + auction->bidder = AHBplayer->GetGUID(); + auction->bid = bidprice; + + // Saving auction into database + CharacterDatabase.Execute("UPDATE auctionhouse SET buyguid = '{}',lastbid = '{}' WHERE id = '{}'", auction->bidder.GetCounter(), auction->bid, auction->Id); + } + else + { + auto trans = CharacterDatabase.BeginTransaction(); + //buyout + if ((auction->bidder) && (AHBplayer->GetGUID() != auction->bidder)) + { + sAuctionMgr->SendAuctionOutbiddedMail(auction, auction->buyout, session->GetPlayer(), trans); + } + auction->bidder = AHBplayer->GetGUID(); + auction->bid = auction->buyout; + + // Send mails to buyer & seller + //sAuctionMgr->SendAuctionSalePendingMail(auction, trans); + sAuctionMgr->SendAuctionSuccessfulMail(auction, trans); + sAuctionMgr->SendAuctionWonMail(auction, trans); + auction->DeleteFromDB(trans); + + sAuctionMgr->RemoveAItem(auction->item_guid); + auctionHouse->RemoveAuction(auction); + CharacterDatabase.CommitTransaction(trans); + } + } +} + +void AuctionHouseBot::Update() +{ + time_t _newrun = time(NULL); + if ((!AHBSeller) && (!AHBBuyer)) + return; + + std::string accountName = "AuctionHouseBot" + std::to_string(AHBplayerAccount); + + WorldSession _session(AHBplayerAccount, std::move(accountName), nullptr, SEC_PLAYER, sWorld->getIntConfig(CONFIG_EXPANSION), 0, LOCALE_enUS, 0, false, false, 0); + Player _AHBplayer(&_session); + _AHBplayer.Initialize(AHBplayerGUID); + ObjectAccessor::AddObject(&_AHBplayer); + + // Add New Bids + if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION)) + { + addNewAuctions(&_AHBplayer, &AllianceConfig); + if (((_newrun - _lastrun_a) >= (AllianceConfig.GetBiddingInterval() * MINUTE)) && (AllianceConfig.GetBidsPerInterval() > 0)) + { + //if (debug_Out) sLog->outError( "AHBuyer: %u seconds have passed since last bid", (_newrun - _lastrun_a)); + //if (debug_Out) sLog->outError( "AHBuyer: Bidding on Alliance Auctions"); + addNewAuctionBuyerBotBid(&_AHBplayer, &AllianceConfig, &_session); + _lastrun_a = _newrun; + } + + addNewAuctions(&_AHBplayer, &HordeConfig); + if (((_newrun - _lastrun_h) >= (HordeConfig.GetBiddingInterval() * MINUTE)) && (HordeConfig.GetBidsPerInterval() > 0)) + { + //if (debug_Out) sLog->outError( "AHBuyer: %u seconds have passed since last bid", (_newrun - _lastrun_h)); + //if (debug_Out) sLog->outError( "AHBuyer: Bidding on Horde Auctions"); + addNewAuctionBuyerBotBid(&_AHBplayer, &HordeConfig, &_session); + _lastrun_h = _newrun; + } + } + + addNewAuctions(&_AHBplayer, &NeutralConfig); + if (((_newrun - _lastrun_n) >= (NeutralConfig.GetBiddingInterval() * MINUTE)) && (NeutralConfig.GetBidsPerInterval() > 0)) + { + //if (debug_Out) sLog->outError( "AHBuyer: %u seconds have passed since last bid", (_newrun - _lastrun_n)); + //if (debug_Out) sLog->outError( "AHBuyer: Bidding on Neutral Auctions"); + addNewAuctionBuyerBotBid(&_AHBplayer, &NeutralConfig, &_session); + _lastrun_n = _newrun; + } + ObjectAccessor::RemoveObject(&_AHBplayer); +} + +void AuctionHouseBot::Initialize() +{ + DisableItemStore.clear(); + QueryResult result = WorldDatabase.Query("SELECT item FROM mod_auctionhousebot_disabled_items"); + + if (result) + { + do + { + Field* fields = result->Fetch(); + DisableItemStore.insert(fields[0].Get()); + } while (result->NextRow()); + } + + //End Filters + if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION)) + { + LoadValues(&AllianceConfig); + LoadValues(&HordeConfig); + } + LoadValues(&NeutralConfig); + + // + // check if the AHBot account/GUID in the config actually exists + // + + if ((AHBplayerAccount != 0) || (AHBplayerGUID != 0)) + { + QueryResult result = CharacterDatabase.Query("SELECT 1 FROM characters WHERE account = {} AND guid = {}", AHBplayerAccount, AHBplayerGUID); + if (!result) + { + LOG_ERROR("module", "AuctionHouseBot: The account/GUID-information set for your AHBot is incorrect (account: {} guid: {})", AHBplayerAccount, AHBplayerGUID); + return; + } + } + + if (AHBSeller) + { + QueryResult results = QueryResult(NULL); + char npcQuery[] = "SELECT distinct item FROM npc_vendor"; + results = WorldDatabase.Query(npcQuery); + if (results) + { + do + { + Field* fields = results->Fetch(); + npcItems.push_back(fields[0].Get()); + + } while (results->NextRow()); + } + else + { + if (debug_Out) + LOG_ERROR("module", "AuctionHouseBot: \"{}\" failed", npcQuery); + } + + char lootQuery[] = "SELECT item FROM creature_loot_template UNION " + "SELECT item FROM reference_loot_template UNION " + "SELECT item FROM disenchant_loot_template UNION " + "SELECT item FROM fishing_loot_template UNION " + "SELECT item FROM gameobject_loot_template UNION " + "SELECT item FROM item_loot_template UNION " + "SELECT item FROM milling_loot_template UNION " + "SELECT item FROM pickpocketing_loot_template UNION " + "SELECT item FROM prospecting_loot_template UNION " + "SELECT item FROM skinning_loot_template"; + + results = WorldDatabase.Query(lootQuery); + if (results) + { + do + { + Field* fields = results->Fetch(); + lootItems.push_back(fields[0].Get()); + + } while (results->NextRow()); + } + else + { + if (debug_Out) + LOG_ERROR("module", "AuctionHouseBot: \"{}\" failed", lootQuery); + } + + ItemTemplateContainer const* its = sObjectMgr->GetItemTemplateStore(); + for (ItemTemplateContainer::const_iterator itr = its->begin(); itr != its->end(); ++itr) + { + switch (itr->second.Bonding) + { + case NO_BIND: + if (!No_Bind) + continue; + break; + case BIND_WHEN_PICKED_UP: + if (!Bind_When_Picked_Up) + continue; + break; + case BIND_WHEN_EQUIPED: + if (!Bind_When_Equipped) + continue; + break; + case BIND_WHEN_USE: + if (!Bind_When_Use) + continue; + break; + case BIND_QUEST_ITEM: + if (!Bind_Quest_Item) + continue; + break; + default: + continue; + break; + } + + if (SellMethod) + { + if (itr->second.BuyPrice == 0) + continue; + } + else + { + if (itr->second.SellPrice == 0) + continue; + } + + if (itr->second.Quality > 6) + continue; + + if ((Vendor_Items == 0) && !(itr->second.Class == ITEM_CLASS_TRADE_GOODS)) + { + bool isVendorItem = false; + + for (unsigned int i = 0; (i < npcItems.size()) && (!isVendorItem); i++) + { + if (itr->second.ItemId == npcItems[i]) + isVendorItem = true; + } + + if (isVendorItem) + continue; + } + + if ((Vendor_TGs == 0) && (itr->second.Class == ITEM_CLASS_TRADE_GOODS)) + { + bool isVendorTG = false; + + for (unsigned int i = 0; (i < npcItems.size()) && (!isVendorTG); i++) + { + if (itr->second.ItemId == npcItems[i]) + isVendorTG = true; + } + + if (isVendorTG) + continue; + } + + if ((Loot_Items == 0) && !(itr->second.Class == ITEM_CLASS_TRADE_GOODS)) + { + bool isLootItem = false; + + for (unsigned int i = 0; (i < lootItems.size()) && (!isLootItem); i++) + { + if (itr->second.ItemId == lootItems[i]) + isLootItem = true; + } + + if (isLootItem) + continue; + } + + if ((Loot_TGs == 0) && (itr->second.Class == ITEM_CLASS_TRADE_GOODS)) + { + bool isLootTG = false; + + for (unsigned int i = 0; (i < lootItems.size()) && (!isLootTG); i++) + { + if (itr->second.ItemId == lootItems[i]) + isLootTG = true; + } + + if (isLootTG) + continue; + } + + if ((Other_Items == 0) && !(itr->second.Class == ITEM_CLASS_TRADE_GOODS)) + { + bool isVendorItem = false; + bool isLootItem = false; + + for (unsigned int i = 0; (i < npcItems.size()) && (!isVendorItem); i++) + { + if (itr->second.ItemId == npcItems[i]) + isVendorItem = true; + } + for (unsigned int i = 0; (i < lootItems.size()) && (!isLootItem); i++) + { + if (itr->second.ItemId == lootItems[i]) + isLootItem = true; + } + if ((!isLootItem) && (!isVendorItem)) + continue; + } + + if ((Other_TGs == 0) && (itr->second.Class == ITEM_CLASS_TRADE_GOODS)) + { + bool isVendorTG = false; + bool isLootTG = false; + + for (unsigned int i = 0; (i < npcItems.size()) && (!isVendorTG); i++) + { + if (itr->second.ItemId == npcItems[i]) + isVendorTG = true; + } + for (unsigned int i = 0; (i < lootItems.size()) && (!isLootTG); i++) + { + if (itr->second.ItemId == lootItems[i]) + isLootTG = true; + } + if ((!isLootTG) && (!isVendorTG)) + continue; + } + + // Disable items by Id + if (DisableItemStore.find(itr->second.ItemId) != DisableItemStore.end()) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (PTR/Beta/Unused Item)", itr->second.ItemId); + continue; + } + + // Disable permanent enchants items + if ((DisablePermEnchant) && (itr->second.Class == ITEM_CLASS_PERMANENT)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Permanent Enchant Item)", itr->second.ItemId); + continue; + } + + // Disable conjured items + if ((DisableConjured) && (itr->second.IsConjuredConsumable())) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Conjured Consumable)", itr->second.ItemId); + continue; + } + + // Disable gems + if ((DisableGems) && (itr->second.Class == ITEM_CLASS_GEM)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Gem)", itr->second.ItemId); + continue; + } + + // Disable money + if ((DisableMoney) && (itr->second.Class == ITEM_CLASS_MONEY)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Money)", itr->second.ItemId); + continue; + } + + // Disable moneyloot + if ((DisableMoneyLoot) && (itr->second.MinMoneyLoot > 0)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (MoneyLoot)", itr->second.ItemId); + continue; + } + + // Disable lootable items + if ((DisableLootable) && (itr->second.Flags & 4)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Lootable Item)", itr->second.ItemId); + continue; + } + + // Disable Keys + if ((DisableKeys) && (itr->second.Class == ITEM_CLASS_KEY)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Quest Item)", itr->second.ItemId); + continue; + } + + // Disable items with duration + if ((DisableDuration) && (itr->second.Duration > 0)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Has a Duration)", itr->second.ItemId); + continue; + } + + // Disable items which are BOP or Quest Items and have a required level lower than the item level + if ((DisableBOP_Or_Quest_NoReqLevel) && ((itr->second.Bonding == BIND_WHEN_PICKED_UP || itr->second.Bonding == BIND_QUEST_ITEM) && (itr->second.RequiredLevel < itr->second.ItemLevel))) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (BOP or BQI and Required Level is less than Item Level)", itr->second.ItemId); + continue; + } + + // Disable items specifically for Warrior + if ((DisableWarriorItems) && (itr->second.AllowableClass == 1)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Warrior Item)", itr->second.ItemId); + continue; + } + + // Disable items specifically for Paladin + if ((DisablePaladinItems) && (itr->second.AllowableClass == 2)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Paladin Item)", itr->second.ItemId); + continue; + } + + // Disable items specifically for Hunter + if ((DisableHunterItems) && (itr->second.AllowableClass == 4)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Hunter Item)", itr->second.ItemId); + continue; + } + + // Disable items specifically for Rogue + if ((DisableRogueItems) && (itr->second.AllowableClass == 8)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Rogue Item)", itr->second.ItemId); + continue; + } + + // Disable items specifically for Priest + if ((DisablePriestItems) && (itr->second.AllowableClass == 16)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Priest Item)", itr->second.ItemId); + continue; + } + + // Disable items specifically for DK + if ((DisableDKItems) && (itr->second.AllowableClass == 32)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (DK Item)", itr->second.ItemId); + continue; + } + + // Disable items specifically for Shaman + if ((DisableShamanItems) && (itr->second.AllowableClass == 64)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Shaman Item)", itr->second.ItemId); + continue; + } + + // Disable items specifically for Mage + if ((DisableMageItems) && (itr->second.AllowableClass == 128)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Mage Item)", itr->second.ItemId); + continue; + } + + // Disable items specifically for Warlock + if ((DisableWarlockItems) && (itr->second.AllowableClass == 256)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Warlock Item)", itr->second.ItemId); + continue; + } + + // Disable items specifically for Unused Class + if ((DisableUnusedClassItems) && (itr->second.AllowableClass == 512)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Unused Item)", itr->second.ItemId); + continue; + } + + // Disable items specifically for Druid + if ((DisableDruidItems) && (itr->second.AllowableClass == 1024)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Druid Item)", itr->second.ItemId); + continue; + } + + // Disable Items below level X + if ((DisableItemsBelowLevel) && (itr->second.Class != ITEM_CLASS_TRADE_GOODS) && (itr->second.ItemLevel < DisableItemsBelowLevel)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Item Level = {})", itr->second.ItemId, itr->second.ItemLevel); + continue; + } + + // Disable Items above level X + if ((DisableItemsAboveLevel) && (itr->second.Class != ITEM_CLASS_TRADE_GOODS) && (itr->second.ItemLevel > DisableItemsAboveLevel)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Item Level = {})", itr->second.ItemId, itr->second.ItemLevel); + continue; + } + + // Disable Trade Goods below level X + if ((DisableTGsBelowLevel) && (itr->second.Class == ITEM_CLASS_TRADE_GOODS) && (itr->second.ItemLevel < DisableTGsBelowLevel)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Trade Good {} disabled (Trade Good Level = {})", itr->second.ItemId, itr->second.ItemLevel); + continue; + } + + // Disable Trade Goods above level X + if ((DisableTGsAboveLevel) && (itr->second.Class == ITEM_CLASS_TRADE_GOODS) && (itr->second.ItemLevel > DisableTGsAboveLevel)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Trade Good {} disabled (Trade Good Level = {})", itr->second.ItemId, itr->second.ItemLevel); + continue; + } + + // Disable Items below GUID X + if ((DisableItemsBelowGUID) && (itr->second.Class != ITEM_CLASS_TRADE_GOODS) && (itr->second.ItemId < DisableItemsBelowGUID)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Item Level = {})", itr->second.ItemId, itr->second.ItemLevel); + continue; + } + + // Disable Items above GUID X + if ((DisableItemsAboveGUID) && (itr->second.Class != ITEM_CLASS_TRADE_GOODS) && (itr->second.ItemId > DisableItemsAboveGUID)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Item Level = {})", itr->second.ItemId, itr->second.ItemLevel); + continue; + } + + // Disable Trade Goods below GUID X + if ((DisableTGsBelowGUID) && (itr->second.Class == ITEM_CLASS_TRADE_GOODS) && (itr->second.ItemId < DisableTGsBelowGUID)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Trade Good Level = {})", itr->second.ItemId, itr->second.ItemLevel); + continue; + } + + // Disable Trade Goods above GUID X + if ((DisableTGsAboveGUID) && (itr->second.Class == ITEM_CLASS_TRADE_GOODS) && (itr->second.ItemId > DisableTGsAboveGUID)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (Trade Good Level = {})", itr->second.ItemId, itr->second.ItemLevel); + continue; + } + + // Disable Items for level lower than X + if ((DisableItemsBelowReqLevel) && (itr->second.RequiredLevel < DisableItemsBelowReqLevel)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (RequiredLevel = {})", itr->second.ItemId, itr->second.RequiredLevel); + continue; + } + + // Disable Items for level higher than X + if ((DisableItemsAboveReqLevel) && (itr->second.RequiredLevel > DisableItemsAboveReqLevel)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (RequiredLevel = {})", itr->second.ItemId, itr->second.RequiredLevel); + continue; + } + + // Disable Trade Goods for level lower than X + if ((DisableTGsBelowReqLevel) && (itr->second.RequiredLevel < DisableTGsBelowReqLevel)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Trade Good {} disabled (RequiredLevel = {})", itr->second.ItemId, itr->second.RequiredLevel); + continue; + } + + // Disable Trade Goods for level higher than X + if ((DisableTGsAboveReqLevel) && (itr->second.RequiredLevel > DisableTGsAboveReqLevel)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Trade Good {} disabled (RequiredLevel = {})", itr->second.ItemId, itr->second.RequiredLevel); + continue; + } + + // Disable Items that require skill lower than X + if ((DisableItemsBelowReqSkillRank) && (itr->second.RequiredSkillRank < DisableItemsBelowReqSkillRank)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (RequiredSkillRank = {})", itr->second.ItemId, itr->second.RequiredSkillRank); + continue; + } + + // Disable Items that require skill higher than X + if ((DisableItemsAboveReqSkillRank) && (itr->second.RequiredSkillRank > DisableItemsAboveReqSkillRank)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (RequiredSkillRank = {})", itr->second.ItemId, itr->second.RequiredSkillRank); + continue; + } + + // Disable Trade Goods that require skill lower than X + if ((DisableTGsBelowReqSkillRank) && (itr->second.RequiredSkillRank < DisableTGsBelowReqSkillRank)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (RequiredSkillRank = {})", itr->second.ItemId, itr->second.RequiredSkillRank); + continue; + } + + // Disable Trade Goods that require skill higher than X + if ((DisableTGsAboveReqSkillRank) && (itr->second.RequiredSkillRank > DisableTGsAboveReqSkillRank)) + { + if (debug_Out_Filters) + LOG_ERROR("module", "AuctionHouseBot: Item {} disabled (RequiredSkillRank = {})", itr->second.ItemId, itr->second.RequiredSkillRank); + continue; + } + + switch (itr->second.Quality) + { + case AHB_GREY: + if (itr->second.Class == ITEM_CLASS_TRADE_GOODS) + greyTradeGoodsBin.push_back(itr->second.ItemId); + else + greyItemsBin.push_back(itr->second.ItemId); + break; + + case AHB_WHITE: + if (itr->second.Class == ITEM_CLASS_TRADE_GOODS) + whiteTradeGoodsBin.push_back(itr->second.ItemId); + else + whiteItemsBin.push_back(itr->second.ItemId); + break; + + case AHB_GREEN: + if (itr->second.Class == ITEM_CLASS_TRADE_GOODS) + greenTradeGoodsBin.push_back(itr->second.ItemId); + else + greenItemsBin.push_back(itr->second.ItemId); + break; + + case AHB_BLUE: + if (itr->second.Class == ITEM_CLASS_TRADE_GOODS) + blueTradeGoodsBin.push_back(itr->second.ItemId); + else + blueItemsBin.push_back(itr->second.ItemId); + break; + + case AHB_PURPLE: + if (itr->second.Class == ITEM_CLASS_TRADE_GOODS) + purpleTradeGoodsBin.push_back(itr->second.ItemId); + else + purpleItemsBin.push_back(itr->second.ItemId); + break; + + case AHB_ORANGE: + if (itr->second.Class == ITEM_CLASS_TRADE_GOODS) + orangeTradeGoodsBin.push_back(itr->second.ItemId); + else + orangeItemsBin.push_back(itr->second.ItemId); + break; + + case AHB_YELLOW: + if (itr->second.Class == ITEM_CLASS_TRADE_GOODS) + yellowTradeGoodsBin.push_back(itr->second.ItemId); + else + yellowItemsBin.push_back(itr->second.ItemId); + break; + } + } + + if ((greyTradeGoodsBin.size() == 0) && + (whiteTradeGoodsBin.size() == 0) && + (greenTradeGoodsBin.size() == 0) && + (blueTradeGoodsBin.size() == 0) && + (purpleTradeGoodsBin.size() == 0) && + (orangeTradeGoodsBin.size() == 0) && + (yellowTradeGoodsBin.size() == 0) && + (greyItemsBin.size() == 0) && + (whiteItemsBin.size() == 0) && + (greenItemsBin.size() == 0) && + (blueItemsBin.size() == 0) && + (purpleItemsBin.size() == 0) && + (orangeItemsBin.size() == 0) && + (yellowItemsBin.size() == 0)) + { + LOG_ERROR("module", "AuctionHouseBot: No items"); + AHBSeller = 0; + } + + LOG_INFO("module", "AuctionHouseBot:"); + LOG_INFO("module", "{} disabled items", uint32(DisableItemStore.size())); + LOG_INFO("module", "loaded {} grey trade goods", uint32(greyTradeGoodsBin.size())); + LOG_INFO("module", "loaded {} white trade goods", uint32(whiteTradeGoodsBin.size())); + LOG_INFO("module", "loaded {} green trade goods", uint32(greenTradeGoodsBin.size())); + LOG_INFO("module", "loaded {} blue trade goods", uint32(blueTradeGoodsBin.size())); + LOG_INFO("module", "loaded {} purple trade goods", uint32(purpleTradeGoodsBin.size())); + LOG_INFO("module", "loaded {} orange trade goods", uint32(orangeTradeGoodsBin.size())); + LOG_INFO("module", "loaded {} yellow trade goods", uint32(yellowTradeGoodsBin.size())); + LOG_INFO("module", "loaded {} grey items", uint32(greyItemsBin.size())); + LOG_INFO("module", "loaded {} white items", uint32(whiteItemsBin.size())); + LOG_INFO("module", "loaded {} green items", uint32(greenItemsBin.size())); + LOG_INFO("module", "loaded {} blue items", uint32(blueItemsBin.size())); + LOG_INFO("module", "loaded {} purple items", uint32(purpleItemsBin.size())); + LOG_INFO("module", "loaded {} orange items", uint32(orangeItemsBin.size())); + LOG_INFO("module", "loaded {} yellow items", uint32(yellowItemsBin.size())); + } + + LOG_INFO("module", "AuctionHouseBot and AuctionHouseBuyer have been loaded."); +} + +void AuctionHouseBot::InitializeConfiguration() +{ + debug_Out = sConfigMgr->GetOption("AuctionHouseBot.DEBUG", false); + debug_Out_Filters = sConfigMgr->GetOption("AuctionHouseBot.DEBUG_FILTERS", false); + + AHBSeller = sConfigMgr->GetOption("AuctionHouseBot.EnableSeller", false); + AHBBuyer = sConfigMgr->GetOption("AuctionHouseBot.EnableBuyer", false); + SellMethod = sConfigMgr->GetOption("AuctionHouseBot.UseBuyPriceForSeller", false); + BuyMethod = sConfigMgr->GetOption("AuctionHouseBot.UseBuyPriceForBuyer", false); + + AHBplayerAccount = sConfigMgr->GetOption("AuctionHouseBot.Account", 0); + AHBplayerGUID = sConfigMgr->GetOption("AuctionHouseBot.GUID", 0); + ItemsPerCycle = sConfigMgr->GetOption("AuctionHouseBot.ItemsPerCycle", 200); + + //Begin Filters + + Vendor_Items = sConfigMgr->GetOption("AuctionHouseBot.VendorItems", false); + Loot_Items = sConfigMgr->GetOption("AuctionHouseBot.LootItems", true); + Other_Items = sConfigMgr->GetOption("AuctionHouseBot.OtherItems", false); + Vendor_TGs = sConfigMgr->GetOption("AuctionHouseBot.VendorTradeGoods", false); + Loot_TGs = sConfigMgr->GetOption("AuctionHouseBot.LootTradeGoods", true); + Other_TGs = sConfigMgr->GetOption("AuctionHouseBot.OtherTradeGoods", false); + + No_Bind = sConfigMgr->GetOption("AuctionHouseBot.No_Bind", true); + Bind_When_Picked_Up = sConfigMgr->GetOption("AuctionHouseBot.Bind_When_Picked_Up", false); + Bind_When_Equipped = sConfigMgr->GetOption("AuctionHouseBot.Bind_When_Equipped", true); + Bind_When_Use = sConfigMgr->GetOption("AuctionHouseBot.Bind_When_Use", true); + Bind_Quest_Item = sConfigMgr->GetOption("AuctionHouseBot.Bind_Quest_Item", false); + + DisablePermEnchant = sConfigMgr->GetOption("AuctionHouseBot.DisablePermEnchant", false); + DisableConjured = sConfigMgr->GetOption("AuctionHouseBot.DisableConjured", false); + DisableGems = sConfigMgr->GetOption("AuctionHouseBot.DisableGems", false); + DisableMoney = sConfigMgr->GetOption("AuctionHouseBot.DisableMoney", false); + DisableMoneyLoot = sConfigMgr->GetOption("AuctionHouseBot.DisableMoneyLoot", false); + DisableLootable = sConfigMgr->GetOption("AuctionHouseBot.DisableLootable", false); + DisableKeys = sConfigMgr->GetOption("AuctionHouseBot.DisableKeys", false); + DisableDuration = sConfigMgr->GetOption("AuctionHouseBot.DisableDuration", false); + DisableBOP_Or_Quest_NoReqLevel = sConfigMgr->GetOption("AuctionHouseBot.DisableBOP_Or_Quest_NoReqLevel", false); + + DisableWarriorItems = sConfigMgr->GetOption("AuctionHouseBot.DisableWarriorItems", false); + DisablePaladinItems = sConfigMgr->GetOption("AuctionHouseBot.DisablePaladinItems", false); + DisableHunterItems = sConfigMgr->GetOption("AuctionHouseBot.DisableHunterItems", false); + DisableRogueItems = sConfigMgr->GetOption("AuctionHouseBot.DisableRogueItems", false); + DisablePriestItems = sConfigMgr->GetOption("AuctionHouseBot.DisablePriestItems", false); + DisableDKItems = sConfigMgr->GetOption("AuctionHouseBot.DisableDKItems", false); + DisableShamanItems = sConfigMgr->GetOption("AuctionHouseBot.DisableShamanItems", false); + DisableMageItems = sConfigMgr->GetOption("AuctionHouseBot.DisableMageItems", false); + DisableWarlockItems = sConfigMgr->GetOption("AuctionHouseBot.DisableWarlockItems", false); + DisableUnusedClassItems = sConfigMgr->GetOption("AuctionHouseBot.DisableUnusedClassItems", false); + DisableDruidItems = sConfigMgr->GetOption("AuctionHouseBot.DisableDruidItems", false); + + DisableItemsBelowLevel = sConfigMgr->GetOption("AuctionHouseBot.DisableItemsBelowLevel", 0); + DisableItemsAboveLevel = sConfigMgr->GetOption("AuctionHouseBot.DisableItemsAboveLevel", 0); + DisableTGsBelowLevel = sConfigMgr->GetOption("AuctionHouseBot.DisableTGsBelowLevel", 0); + DisableTGsAboveLevel = sConfigMgr->GetOption("AuctionHouseBot.DisableTGsAboveLevel", 0); + DisableItemsBelowGUID = sConfigMgr->GetOption("AuctionHouseBot.DisableItemsBelowGUID", 0); + DisableItemsAboveGUID = sConfigMgr->GetOption("AuctionHouseBot.DisableItemsAboveGUID", 0); + DisableTGsBelowGUID = sConfigMgr->GetOption("AuctionHouseBot.DisableTGsBelowGUID", 0); + DisableTGsAboveGUID = sConfigMgr->GetOption("AuctionHouseBot.DisableTGsAboveGUID", 0); + DisableItemsBelowReqLevel = sConfigMgr->GetOption("AuctionHouseBot.DisableItemsBelowReqLevel", 0); + DisableItemsAboveReqLevel = sConfigMgr->GetOption("AuctionHouseBot.DisableItemsAboveReqLevel", 0); + DisableTGsBelowReqLevel = sConfigMgr->GetOption("AuctionHouseBot.DisableTGsBelowReqLevel", 0); + DisableTGsAboveReqLevel = sConfigMgr->GetOption("AuctionHouseBot.DisableTGsAboveReqLevel", 0); + DisableItemsBelowReqSkillRank = sConfigMgr->GetOption("AuctionHouseBot.DisableItemsBelowReqSkillRank", 0); + DisableItemsAboveReqSkillRank = sConfigMgr->GetOption("AuctionHouseBot.DisableItemsAboveReqSkillRank", 0); + DisableTGsBelowReqSkillRank = sConfigMgr->GetOption("AuctionHouseBot.DisableTGsBelowReqSkillRank", 0); + DisableTGsAboveReqSkillRank = sConfigMgr->GetOption("AuctionHouseBot.DisableTGsAboveReqSkillRank", 0); +} + +void AuctionHouseBot::IncrementItemCounts(AuctionEntry* ah) +{ + // from auctionhousehandler.cpp, creates auction pointer & player pointer + + // get exact item information + Item *pItem = sAuctionMgr->GetAItem(ah->item_guid); + if (!pItem) + { + if (debug_Out) + LOG_ERROR("module", "AHBot: Item {} doesn't exist, perhaps bought already?", ah->item_guid.ToString()); + return; + } + + // get item prototype + ItemTemplate const* prototype = sObjectMgr->GetItemTemplate(ah->item_template); + + AHBConfig *config; + + AuctionHouseEntry const* ahEntry = sAuctionHouseStore.LookupEntry(ah->GetHouseId()); + if (!ahEntry) + { + if (debug_Out) + LOG_ERROR("module", "AHBot: {} returned as House Faction. Neutral", ah->GetHouseId()); + config = &NeutralConfig; + } + else if (ahEntry->houseId == AUCTIONHOUSE_ALLIANCE) + { + if (debug_Out) + LOG_ERROR("module", "AHBot: {} returned as House Faction. Alliance", ah->GetHouseId()); + config = &AllianceConfig; + } + else if (ahEntry->houseId == AUCTIONHOUSE_HORDE) + { + if (debug_Out) + LOG_ERROR("module", "AHBot: {} returned as House Faction. Horde", ah->GetHouseId()); + config = &HordeConfig; + } + else + { + if (debug_Out) + LOG_ERROR("module", "AHBot: {} returned as House Faction. Neutral", ah->GetHouseId()); + config = &NeutralConfig; + } + + config->IncItemCounts(prototype->Class, prototype->Quality); +} + +void AuctionHouseBot::DecrementItemCounts(AuctionEntry* ah, uint32 itemEntry) +{ + // get item prototype + ItemTemplate const* prototype = sObjectMgr->GetItemTemplate(itemEntry); + + AHBConfig *config; + + AuctionHouseEntry const* ahEntry = sAuctionHouseStore.LookupEntry(ah->GetHouseId()); + if (!ahEntry) + { + if (debug_Out) + LOG_ERROR("module", "AHBot: {} returned as House Faction. Neutral", ah->GetHouseId()); + config = &NeutralConfig; + } + else if (ahEntry->houseId == AUCTIONHOUSE_ALLIANCE) + { + if (debug_Out) + LOG_ERROR("module", "AHBot: {} returned as House Faction. Alliance", ah->GetHouseId()); + config = &AllianceConfig; + } + else if (ahEntry->houseId == AUCTIONHOUSE_HORDE) + { + if (debug_Out) + LOG_ERROR("module", "AHBot: {} returned as House Faction. Horde", ah->GetHouseId()); + config = &HordeConfig; + } + else + { + if (debug_Out) + LOG_ERROR("module", "AHBot: {} returned as House Faction. Neutral", ah->GetHouseId()); + config = &NeutralConfig; + } + + config->DecItemCounts(prototype->Class, prototype->Quality); +} + +void AuctionHouseBot::Commands(uint32 command, uint32 ahMapID, uint32 col, char* args) +{ + AHBConfig *config = NULL; + switch (ahMapID) + { + case 2: + config = &AllianceConfig; + break; + case 6: + config = &HordeConfig; + break; + case 7: + config = &NeutralConfig; + break; + } + std::string color; + switch (col) + { + case AHB_GREY: + color = "grey"; + break; + case AHB_WHITE: + color = "white"; + break; + case AHB_GREEN: + color = "green"; + break; + case AHB_BLUE: + color = "blue"; + break; + case AHB_PURPLE: + color = "purple"; + break; + case AHB_ORANGE: + color = "orange"; + break; + case AHB_YELLOW: + color = "yellow"; + break; + default: + break; + } + switch (command) + { + case 0: //ahexpire + { + AuctionHouseObject* auctionHouse = sAuctionMgr->GetAuctionsMap(config->GetAHFID()); + + AuctionHouseObject::AuctionEntryMap::iterator itr; + itr = auctionHouse->GetAuctionsBegin(); + + while (itr != auctionHouse->GetAuctionsEnd()) + { + if (itr->second->owner.GetCounter() == AHBplayerGUID) + { + itr->second->expire_time = GameTime::GetGameTime().count(); + uint32 id = itr->second->Id; + uint32 expire_time = itr->second->expire_time; + CharacterDatabase.Execute("UPDATE auctionhouse SET time = '{}' WHERE id = '{}'", expire_time, id); + } + ++itr; + } + } + break; + case 1: //min items + { + char * param1 = strtok(args, " "); + uint32 minItems = (uint32) strtoul(param1, NULL, 0); + WorldDatabase.Execute("UPDATE mod_auctionhousebot SET minitems = '{}' WHERE auctionhouse = '{}'", minItems, ahMapID); + config->SetMinItems(minItems); + } + break; + case 2: //max items + { + char * param1 = strtok(args, " "); + uint32 maxItems = (uint32) strtoul(param1, NULL, 0); + WorldDatabase.Execute("UPDATE mod_auctionhousebot SET maxitems = '{}' WHERE auctionhouse = '{}'", maxItems, ahMapID); + config->SetMaxItems(maxItems); + config->CalculatePercents(); + } + break; + case 3: //min time Deprecated (Place holder for future commands) + break; + case 4: //max time Deprecated (Place holder for future commands) + break; + case 5: //percentages + { + char * param1 = strtok(args, " "); + char * param2 = strtok(NULL, " "); + char * param3 = strtok(NULL, " "); + char * param4 = strtok(NULL, " "); + char * param5 = strtok(NULL, " "); + char * param6 = strtok(NULL, " "); + char * param7 = strtok(NULL, " "); + char * param8 = strtok(NULL, " "); + char * param9 = strtok(NULL, " "); + char * param10 = strtok(NULL, " "); + char * param11 = strtok(NULL, " "); + char * param12 = strtok(NULL, " "); + char * param13 = strtok(NULL, " "); + char * param14 = strtok(NULL, " "); + uint32 greytg = (uint32) strtoul(param1, NULL, 0); + uint32 whitetg = (uint32) strtoul(param2, NULL, 0); + uint32 greentg = (uint32) strtoul(param3, NULL, 0); + uint32 bluetg = (uint32) strtoul(param4, NULL, 0); + uint32 purpletg = (uint32) strtoul(param5, NULL, 0); + uint32 orangetg = (uint32) strtoul(param6, NULL, 0); + uint32 yellowtg = (uint32) strtoul(param7, NULL, 0); + uint32 greyi = (uint32) strtoul(param8, NULL, 0); + uint32 whitei = (uint32) strtoul(param9, NULL, 0); + uint32 greeni = (uint32) strtoul(param10, NULL, 0); + uint32 bluei = (uint32) strtoul(param11, NULL, 0); + uint32 purplei = (uint32) strtoul(param12, NULL, 0); + uint32 orangei = (uint32) strtoul(param13, NULL, 0); + uint32 yellowi = (uint32) strtoul(param14, NULL, 0); + + auto trans = WorldDatabase.BeginTransaction(); + trans->Append("UPDATE mod_auctionhousebot SET percentgreytradegoods = '{}' WHERE auctionhouse = '{}'", greytg, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentwhitetradegoods = '{}' WHERE auctionhouse = '{}'", whitetg, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentgreentradegoods = '{}' WHERE auctionhouse = '{}'", greentg, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentbluetradegoods = '{}' WHERE auctionhouse = '{}'", bluetg, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentpurpletradegoods = '{}' WHERE auctionhouse = '{}'", purpletg, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentorangetradegoods = '{}' WHERE auctionhouse = '{}'", orangetg, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentyellowtradegoods = '{}' WHERE auctionhouse = '{}'", yellowtg, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentgreyitems = '{}' WHERE auctionhouse = '{}'", greyi, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentwhiteitems = '{}' WHERE auctionhouse = '{}'", whitei, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentgreenitems = '{}' WHERE auctionhouse = '{}'", greeni, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentblueitems = '{}' WHERE auctionhouse = '{}'", bluei, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentpurpleitems = '{}' WHERE auctionhouse = '{}'", purplei, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentorangeitems = '{}' WHERE auctionhouse = '{}'", orangei, ahMapID); + trans->Append("UPDATE mod_auctionhousebot SET percentyellowitems = '{}' WHERE auctionhouse = '{}'", yellowi, ahMapID); + WorldDatabase.CommitTransaction(trans); + config->SetPercentages(greytg, whitetg, greentg, bluetg, purpletg, orangetg, yellowtg, greyi, whitei, greeni, bluei, purplei, orangei, yellowi); + } + break; + case 6: //min prices + { + char * param1 = strtok(args, " "); + uint32 minPrice = (uint32) strtoul(param1, NULL, 0); + WorldDatabase.Execute("UPDATE mod_auctionhousebot SET minprice{} = '{}' WHERE auctionhouse = '{}'", color, minPrice, ahMapID); + config->SetMinPrice(col, minPrice); + } + break; + case 7: //max prices + { + char * param1 = strtok(args, " "); + uint32 maxPrice = (uint32) strtoul(param1, NULL, 0); + WorldDatabase.Execute("UPDATE mod_auctionhousebot SET maxprice{} = '{}' WHERE auctionhouse = '{}'", color, maxPrice, ahMapID); + config->SetMaxPrice(col, maxPrice); + } + break; + case 8: //min bid price + { + char * param1 = strtok(args, " "); + uint32 minBidPrice = (uint32) strtoul(param1, NULL, 0); + WorldDatabase.Execute("UPDATE mod_auctionhousebot SET minbidprice{} = '{}' WHERE auctionhouse = '{}'", color, minBidPrice, ahMapID); + config->SetMinBidPrice(col, minBidPrice); + } + break; + case 9: //max bid price + { + char * param1 = strtok(args, " "); + uint32 maxBidPrice = (uint32) strtoul(param1, NULL, 0); + WorldDatabase.Execute("UPDATE mod_auctionhousebot SET maxbidprice{} = '{}' WHERE auctionhouse = '{}'", color, maxBidPrice, ahMapID); + config->SetMaxBidPrice(col, maxBidPrice); + } + break; + case 10: //max stacks + { + char * param1 = strtok(args, " "); + uint32 maxStack = (uint32) strtoul(param1, NULL, 0); + WorldDatabase.Execute("UPDATE mod_auctionhousebot SET maxstack{} = '{}' WHERE auctionhouse = '{}'", color, maxStack, ahMapID); + config->SetMaxStack(col, maxStack); + } + break; + case 11: //buyer bid prices + { + char * param1 = strtok(args, " "); + uint32 buyerPrice = (uint32) strtoul(param1, NULL, 0); + WorldDatabase.Execute("UPDATE mod_auctionhousebot SET buyerprice{} = '{}' WHERE auctionhouse = '{}'", color, buyerPrice, ahMapID); + config->SetBuyerPrice(col, buyerPrice); + } + break; + case 12: //buyer bidding interval + { + char * param1 = strtok(args, " "); + uint32 bidInterval = (uint32) strtoul(param1, NULL, 0); + WorldDatabase.Execute("UPDATE mod_auctionhousebot SET buyerbiddinginterval = '{}' WHERE auctionhouse = '{}'", bidInterval, ahMapID); + config->SetBiddingInterval(bidInterval); + } + break; + case 13: //buyer bids per interval + { + char * param1 = strtok(args, " "); + uint32 bidsPerInterval = (uint32) strtoul(param1, NULL, 0); + WorldDatabase.Execute("UPDATE mod_auctionhousebot SET buyerbidsperinterval = '{}' WHERE auctionhouse = '{}'", bidsPerInterval, ahMapID); + config->SetBidsPerInterval(bidsPerInterval); + } + break; + default: + break; + } +} + +void AuctionHouseBot::LoadValues(AHBConfig *config) +{ + if (debug_Out) + LOG_ERROR("module", "Start Settings for {} Auctionhouses:", WorldDatabase.Query("SELECT name FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + + if (AHBSeller) + { + //load min and max items + config->SetMinItems(WorldDatabase.Query("SELECT minitems FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxItems(WorldDatabase.Query("SELECT maxitems FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + //load percentages + uint32 greytg = WorldDatabase.Query("SELECT percentgreytradegoods FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 whitetg = WorldDatabase.Query("SELECT percentwhitetradegoods FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 greentg = WorldDatabase.Query("SELECT percentgreentradegoods FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 bluetg = WorldDatabase.Query("SELECT percentbluetradegoods FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 purpletg = WorldDatabase.Query("SELECT percentpurpletradegoods FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 orangetg = WorldDatabase.Query("SELECT percentorangetradegoods FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 yellowtg = WorldDatabase.Query("SELECT percentyellowtradegoods FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 greyi = WorldDatabase.Query("SELECT percentgreyitems FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 whitei = WorldDatabase.Query("SELECT percentwhiteitems FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 greeni = WorldDatabase.Query("SELECT percentgreenitems FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 bluei = WorldDatabase.Query("SELECT percentblueitems FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 purplei = WorldDatabase.Query("SELECT percentpurpleitems FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 orangei = WorldDatabase.Query("SELECT percentorangeitems FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + uint32 yellowi = WorldDatabase.Query("SELECT percentyellowitems FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get(); + config->SetPercentages(greytg, whitetg, greentg, bluetg, purpletg, orangetg, yellowtg, greyi, whitei, greeni, bluei, purplei, orangei, yellowi); + //load min and max prices + config->SetMinPrice(AHB_GREY, WorldDatabase.Query("SELECT minpricegrey FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxPrice(AHB_GREY, WorldDatabase.Query("SELECT maxpricegrey FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinPrice(AHB_WHITE, WorldDatabase.Query("SELECT minpricewhite FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxPrice(AHB_WHITE, WorldDatabase.Query("SELECT maxpricewhite FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinPrice(AHB_GREEN, WorldDatabase.Query("SELECT minpricegreen FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxPrice(AHB_GREEN, WorldDatabase.Query("SELECT maxpricegreen FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinPrice(AHB_BLUE, WorldDatabase.Query("SELECT minpriceblue FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxPrice(AHB_BLUE, WorldDatabase.Query("SELECT maxpriceblue FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinPrice(AHB_PURPLE, WorldDatabase.Query("SELECT minpricepurple FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxPrice(AHB_PURPLE, WorldDatabase.Query("SELECT maxpricepurple FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinPrice(AHB_ORANGE, WorldDatabase.Query("SELECT minpriceorange FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxPrice(AHB_ORANGE, WorldDatabase.Query("SELECT maxpriceorange FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinPrice(AHB_YELLOW, WorldDatabase.Query("SELECT minpriceyellow FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxPrice(AHB_YELLOW, WorldDatabase.Query("SELECT maxpriceyellow FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + //load min and max bid prices + config->SetMinBidPrice(AHB_GREY, WorldDatabase.Query("SELECT minbidpricegrey FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxBidPrice(AHB_GREY, WorldDatabase.Query("SELECT maxbidpricegrey FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinBidPrice(AHB_WHITE, WorldDatabase.Query("SELECT minbidpricewhite FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxBidPrice(AHB_WHITE, WorldDatabase.Query("SELECT maxbidpricewhite FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinBidPrice(AHB_GREEN, WorldDatabase.Query("SELECT minbidpricegreen FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxBidPrice(AHB_GREEN, WorldDatabase.Query("SELECT maxbidpricegreen FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinBidPrice(AHB_BLUE, WorldDatabase.Query("SELECT minbidpriceblue FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxBidPrice(AHB_BLUE, WorldDatabase.Query("SELECT maxbidpriceblue FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinBidPrice(AHB_PURPLE, WorldDatabase.Query("SELECT minbidpricepurple FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxBidPrice(AHB_PURPLE, WorldDatabase.Query("SELECT maxbidpricepurple FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinBidPrice(AHB_ORANGE, WorldDatabase.Query("SELECT minbidpriceorange FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxBidPrice(AHB_ORANGE, WorldDatabase.Query("SELECT maxbidpriceorange FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMinBidPrice(AHB_YELLOW, WorldDatabase.Query("SELECT minbidpriceyellow FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxBidPrice(AHB_YELLOW, WorldDatabase.Query("SELECT maxbidpriceyellow FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + //load max stacks + config->SetMaxStack(AHB_GREY, WorldDatabase.Query("SELECT maxstackgrey FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxStack(AHB_WHITE, WorldDatabase.Query("SELECT maxstackwhite FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxStack(AHB_GREEN, WorldDatabase.Query("SELECT maxstackgreen FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxStack(AHB_BLUE, WorldDatabase.Query("SELECT maxstackblue FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxStack(AHB_PURPLE, WorldDatabase.Query("SELECT maxstackpurple FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxStack(AHB_ORANGE, WorldDatabase.Query("SELECT maxstackorange FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetMaxStack(AHB_YELLOW, WorldDatabase.Query("SELECT maxstackyellow FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + if (debug_Out) + { + LOG_ERROR("module", "minItems = {}", config->GetMinItems()); + LOG_ERROR("module", "maxItems = {}", config->GetMaxItems()); + LOG_ERROR("module", "percentGreyTradeGoods = {}", config->GetPercentages(AHB_GREY_TG)); + LOG_ERROR("module", "percentWhiteTradeGoods = {}", config->GetPercentages(AHB_WHITE_TG)); + LOG_ERROR("module", "percentGreenTradeGoods = {}", config->GetPercentages(AHB_GREEN_TG)); + LOG_ERROR("module", "percentBlueTradeGoods = {}", config->GetPercentages(AHB_BLUE_TG)); + LOG_ERROR("module", "percentPurpleTradeGoods = {}", config->GetPercentages(AHB_PURPLE_TG)); + LOG_ERROR("module", "percentOrangeTradeGoods = {}", config->GetPercentages(AHB_ORANGE_TG)); + LOG_ERROR("module", "percentYellowTradeGoods = {}", config->GetPercentages(AHB_YELLOW_TG)); + LOG_ERROR("module", "percentGreyItems = {}", config->GetPercentages(AHB_GREY_I)); + LOG_ERROR("module", "percentWhiteItems = {}", config->GetPercentages(AHB_WHITE_I)); + LOG_ERROR("module", "percentGreenItems = {}", config->GetPercentages(AHB_GREEN_I)); + LOG_ERROR("module", "percentBlueItems = {}", config->GetPercentages(AHB_BLUE_I)); + LOG_ERROR("module", "percentPurpleItems = {}", config->GetPercentages(AHB_PURPLE_I)); + LOG_ERROR("module", "percentOrangeItems = {}", config->GetPercentages(AHB_ORANGE_I)); + LOG_ERROR("module", "percentYellowItems = {}", config->GetPercentages(AHB_YELLOW_I)); + LOG_ERROR("module", "minPriceGrey = {}", config->GetMinPrice(AHB_GREY)); + LOG_ERROR("module", "maxPriceGrey = {}", config->GetMaxPrice(AHB_GREY)); + LOG_ERROR("module", "minPriceWhite = {}", config->GetMinPrice(AHB_WHITE)); + LOG_ERROR("module", "maxPriceWhite = {}", config->GetMaxPrice(AHB_WHITE)); + LOG_ERROR("module", "minPriceGreen = {}", config->GetMinPrice(AHB_GREEN)); + LOG_ERROR("module", "maxPriceGreen = {}", config->GetMaxPrice(AHB_GREEN)); + LOG_ERROR("module", "minPriceBlue = {}", config->GetMinPrice(AHB_BLUE)); + LOG_ERROR("module", "maxPriceBlue = {}", config->GetMaxPrice(AHB_BLUE)); + LOG_ERROR("module", "minPricePurple = {}", config->GetMinPrice(AHB_PURPLE)); + LOG_ERROR("module", "maxPricePurple = {}", config->GetMaxPrice(AHB_PURPLE)); + LOG_ERROR("module", "minPriceOrange = {}", config->GetMinPrice(AHB_ORANGE)); + LOG_ERROR("module", "maxPriceOrange = {}", config->GetMaxPrice(AHB_ORANGE)); + LOG_ERROR("module", "minPriceYellow = {}", config->GetMinPrice(AHB_YELLOW)); + LOG_ERROR("module", "maxPriceYellow = {}", config->GetMaxPrice(AHB_YELLOW)); + LOG_ERROR("module", "minBidPriceGrey = {}", config->GetMinBidPrice(AHB_GREY)); + LOG_ERROR("module", "maxBidPriceGrey = {}", config->GetMaxBidPrice(AHB_GREY)); + LOG_ERROR("module", "minBidPriceWhite = {}", config->GetMinBidPrice(AHB_WHITE)); + LOG_ERROR("module", "maxBidPriceWhite = {}", config->GetMaxBidPrice(AHB_WHITE)); + LOG_ERROR("module", "minBidPriceGreen = {}", config->GetMinBidPrice(AHB_GREEN)); + LOG_ERROR("module", "maxBidPriceGreen = {}", config->GetMaxBidPrice(AHB_GREEN)); + LOG_ERROR("module", "minBidPriceBlue = {}", config->GetMinBidPrice(AHB_BLUE)); + LOG_ERROR("module", "maxBidPriceBlue = {}", config->GetMinBidPrice(AHB_BLUE)); + LOG_ERROR("module", "minBidPricePurple = {}", config->GetMinBidPrice(AHB_PURPLE)); + LOG_ERROR("module", "maxBidPricePurple = {}", config->GetMaxBidPrice(AHB_PURPLE)); + LOG_ERROR("module", "minBidPriceOrange = {}", config->GetMinBidPrice(AHB_ORANGE)); + LOG_ERROR("module", "maxBidPriceOrange = {}", config->GetMaxBidPrice(AHB_ORANGE)); + LOG_ERROR("module", "minBidPriceYellow = {}", config->GetMinBidPrice(AHB_YELLOW)); + LOG_ERROR("module", "maxBidPriceYellow = {}", config->GetMaxBidPrice(AHB_YELLOW)); + LOG_ERROR("module", "maxStackGrey = {}", config->GetMaxStack(AHB_GREY)); + LOG_ERROR("module", "maxStackWhite = {}", config->GetMaxStack(AHB_WHITE)); + LOG_ERROR("module", "maxStackGreen = {}", config->GetMaxStack(AHB_GREEN)); + LOG_ERROR("module", "maxStackBlue = {}", config->GetMaxStack(AHB_BLUE)); + LOG_ERROR("module", "maxStackPurple = {}", config->GetMaxStack(AHB_PURPLE)); + LOG_ERROR("module", "maxStackOrange = {}", config->GetMaxStack(AHB_ORANGE)); + LOG_ERROR("module", "maxStackYellow = {}", config->GetMaxStack(AHB_YELLOW)); + } + + //AuctionHouseEntry const* ahEntry = sAuctionMgr->GetAuctionHouseEntry(config->GetAHFID()); + AuctionHouseObject* auctionHouse = sAuctionMgr->GetAuctionsMap(config->GetAHFID()); + + config->ResetItemCounts(); + uint32 auctions = auctionHouse->Getcount(); + + if (auctions) + { + for (AuctionHouseObject::AuctionEntryMap::const_iterator itr = auctionHouse->GetAuctionsBegin(); itr != auctionHouse->GetAuctionsEnd(); ++itr) + { + AuctionEntry *Aentry = itr->second; + Item *item = sAuctionMgr->GetAItem(Aentry->item_guid); + if (item) + { + ItemTemplate const *prototype = item->GetTemplate(); + if (prototype) + { + switch (prototype->Quality) + { + case 0: + if (prototype->Class == ITEM_CLASS_TRADE_GOODS) + config->IncItemCounts(AHB_GREY_TG); + else + config->IncItemCounts(AHB_GREY_I); + break; + case 1: + if (prototype->Class == ITEM_CLASS_TRADE_GOODS) + config->IncItemCounts(AHB_WHITE_TG); + else + config->IncItemCounts(AHB_WHITE_I); + break; + case 2: + if (prototype->Class == ITEM_CLASS_TRADE_GOODS) + config->IncItemCounts(AHB_GREEN_TG); + else + config->IncItemCounts(AHB_GREEN_I); + break; + case 3: + if (prototype->Class == ITEM_CLASS_TRADE_GOODS) + config->IncItemCounts(AHB_BLUE_TG); + else + config->IncItemCounts(AHB_BLUE_I); + break; + case 4: + if (prototype->Class == ITEM_CLASS_TRADE_GOODS) + config->IncItemCounts(AHB_PURPLE_TG); + else + config->IncItemCounts(AHB_PURPLE_I); + break; + case 5: + if (prototype->Class == ITEM_CLASS_TRADE_GOODS) + config->IncItemCounts(AHB_ORANGE_TG); + else + config->IncItemCounts(AHB_ORANGE_I); + break; + case 6: + if (prototype->Class == ITEM_CLASS_TRADE_GOODS) + config->IncItemCounts(AHB_YELLOW_TG); + else + config->IncItemCounts(AHB_YELLOW_I); + break; + } + } + } + } + } + + if (debug_Out) + { + LOG_ERROR("module", "Current Settings for {} Auctionhouses:", WorldDatabase.Query("SELECT name FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + LOG_ERROR("module", "Grey Trade Goods\t{}\tGrey Items\t{}", config->GetItemCounts(AHB_GREY_TG), config->GetItemCounts(AHB_GREY_I)); + LOG_ERROR("module", "White Trade Goods\t{}\tWhite Items\t{}", config->GetItemCounts(AHB_WHITE_TG), config->GetItemCounts(AHB_WHITE_I)); + LOG_ERROR("module", "Green Trade Goods\t{}\tGreen Items\t{}", config->GetItemCounts(AHB_GREEN_TG), config->GetItemCounts(AHB_GREEN_I)); + LOG_ERROR("module", "Blue Trade Goods\t{}\tBlue Items\t{}", config->GetItemCounts(AHB_BLUE_TG), config->GetItemCounts(AHB_BLUE_I)); + LOG_ERROR("module", "Purple Trade Goods\t{}\tPurple Items\t{}", config->GetItemCounts(AHB_PURPLE_TG), config->GetItemCounts(AHB_PURPLE_I)); + LOG_ERROR("module", "Orange Trade Goods\t{}\tOrange Items\t{}", config->GetItemCounts(AHB_ORANGE_TG), config->GetItemCounts(AHB_ORANGE_I)); + LOG_ERROR("module", "Yellow Trade Goods\t{}\tYellow Items\t{}", config->GetItemCounts(AHB_YELLOW_TG), config->GetItemCounts(AHB_YELLOW_I)); + } + } + if (AHBBuyer) + { + //load buyer bid prices + config->SetBuyerPrice(AHB_GREY, WorldDatabase.Query("SELECT buyerpricegrey FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetBuyerPrice(AHB_WHITE, WorldDatabase.Query("SELECT buyerpricewhite FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetBuyerPrice(AHB_GREEN, WorldDatabase.Query("SELECT buyerpricegreen FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetBuyerPrice(AHB_BLUE, WorldDatabase.Query("SELECT buyerpriceblue FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetBuyerPrice(AHB_PURPLE, WorldDatabase.Query("SELECT buyerpricepurple FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetBuyerPrice(AHB_ORANGE, WorldDatabase.Query("SELECT buyerpriceorange FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + config->SetBuyerPrice(AHB_YELLOW, WorldDatabase.Query("SELECT buyerpriceyellow FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + //load bidding interval + config->SetBiddingInterval(WorldDatabase.Query("SELECT buyerbiddinginterval FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + //load bids per interval + config->SetBidsPerInterval(WorldDatabase.Query("SELECT buyerbidsperinterval FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); + if (debug_Out) + { + LOG_ERROR("module", "buyerPriceGrey = {}", config->GetBuyerPrice(AHB_GREY)); + LOG_ERROR("module", "buyerPriceWhite = {}", config->GetBuyerPrice(AHB_WHITE)); + LOG_ERROR("module", "buyerPriceGreen = {}", config->GetBuyerPrice(AHB_GREEN)); + LOG_ERROR("module", "buyerPriceBlue = {}", config->GetBuyerPrice(AHB_BLUE)); + LOG_ERROR("module", "buyerPricePurple = {}", config->GetBuyerPrice(AHB_PURPLE)); + LOG_ERROR("module", "buyerPriceOrange = {}", config->GetBuyerPrice(AHB_ORANGE)); + LOG_ERROR("module", "buyerPriceYellow = {}", config->GetBuyerPrice(AHB_YELLOW)); + LOG_ERROR("module", "buyerBiddingInterval = {}", config->GetBiddingInterval()); + LOG_ERROR("module", "buyerBidsPerInterval = {}", config->GetBidsPerInterval()); + } + } + + if (debug_Out) + LOG_ERROR("module", "End Settings for {} Auctionhouses:", WorldDatabase.Query("SELECT name FROM mod_auctionhousebot WHERE auctionhouse = {}", config->GetAHID())->Fetch()->Get()); +} diff --git a/modules/mod-ah-bot/src/AuctionHouseBot.h b/modules/mod-ah-bot/src/AuctionHouseBot.h new file mode 100644 index 0000000..a091f7d --- /dev/null +++ b/modules/mod-ah-bot/src/AuctionHouseBot.h @@ -0,0 +1,1260 @@ +/* + * Copyright (C) 2008-2010 Trinity + * Copyright (C) 2005-2009 MaNGOS + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef AUCTION_HOUSE_BOT_H +#define AUCTION_HOUSE_BOT_H + +#include "Common.h" +#include "ObjectGuid.h" + +struct AuctionEntry; +class Player; +class WorldSession; + +#include "ItemTemplate.h" + +#define AHB_GREY 0 +#define AHB_WHITE 1 +#define AHB_GREEN 2 +#define AHB_BLUE 3 +#define AHB_PURPLE 4 +#define AHB_ORANGE 5 +#define AHB_YELLOW 6 +#define AHB_MAX_QUALITY 6 +#define AHB_GREY_TG 0 +#define AHB_WHITE_TG 1 +#define AHB_GREEN_TG 2 +#define AHB_BLUE_TG 3 +#define AHB_PURPLE_TG 4 +#define AHB_ORANGE_TG 5 +#define AHB_YELLOW_TG 6 +#define AHB_GREY_I 7 +#define AHB_WHITE_I 8 +#define AHB_GREEN_I 9 +#define AHB_BLUE_I 10 +#define AHB_PURPLE_I 11 +#define AHB_ORANGE_I 12 +#define AHB_YELLOW_I 13 + +class AHBConfig +{ +private: + uint32 AHID; + uint32 AHFID; + uint32 minItems; + uint32 maxItems; + uint32 percentGreyTradeGoods; + uint32 percentWhiteTradeGoods; + uint32 percentGreenTradeGoods; + uint32 percentBlueTradeGoods; + uint32 percentPurpleTradeGoods; + uint32 percentOrangeTradeGoods; + uint32 percentYellowTradeGoods; + uint32 percentGreyItems; + uint32 percentWhiteItems; + uint32 percentGreenItems; + uint32 percentBlueItems; + uint32 percentPurpleItems; + uint32 percentOrangeItems; + uint32 percentYellowItems; + uint32 minPriceGrey; + uint32 maxPriceGrey; + uint32 minBidPriceGrey; + uint32 maxBidPriceGrey; + uint32 maxStackGrey; + uint32 minPriceWhite; + uint32 maxPriceWhite; + uint32 minBidPriceWhite; + uint32 maxBidPriceWhite; + uint32 maxStackWhite; + uint32 minPriceGreen; + uint32 maxPriceGreen; + uint32 minBidPriceGreen; + uint32 maxBidPriceGreen; + uint32 maxStackGreen; + uint32 minPriceBlue; + uint32 maxPriceBlue; + uint32 minBidPriceBlue; + uint32 maxBidPriceBlue; + uint32 maxStackBlue; + uint32 minPricePurple; + uint32 maxPricePurple; + uint32 minBidPricePurple; + uint32 maxBidPricePurple; + uint32 maxStackPurple; + uint32 minPriceOrange; + uint32 maxPriceOrange; + uint32 minBidPriceOrange; + uint32 maxBidPriceOrange; + uint32 maxStackOrange; + uint32 minPriceYellow; + uint32 maxPriceYellow; + uint32 minBidPriceYellow; + uint32 maxBidPriceYellow; + uint32 maxStackYellow; + + uint32 buyerPriceGrey; + uint32 buyerPriceWhite; + uint32 buyerPriceGreen; + uint32 buyerPriceBlue; + uint32 buyerPricePurple; + uint32 buyerPriceOrange; + uint32 buyerPriceYellow; + uint32 buyerBiddingInterval; + uint32 buyerBidsPerInterval; + + uint32 greytgp; + uint32 whitetgp; + uint32 greentgp; + uint32 bluetgp; + uint32 purpletgp; + uint32 orangetgp; + uint32 yellowtgp; + uint32 greyip; + uint32 whiteip; + uint32 greenip; + uint32 blueip; + uint32 purpleip; + uint32 orangeip; + uint32 yellowip; + + uint32 greyTGoods; + uint32 whiteTGoods; + uint32 greenTGoods; + uint32 blueTGoods; + uint32 purpleTGoods; + uint32 orangeTGoods; + uint32 yellowTGoods; + + uint32 greyItems; + uint32 whiteItems; + uint32 greenItems; + uint32 blueItems; + uint32 purpleItems; + uint32 orangeItems; + uint32 yellowItems; + +public: + AHBConfig(uint32 ahid) + { + AHID = ahid; + switch(ahid) + { + case 2: + AHFID = 55; + break; + case 6: + AHFID = 29; + break; + case 7: + AHFID = 120; + break; + default: + AHFID = 120; + break; + } + } + AHBConfig() + { + } + uint32 GetAHID() + { + return AHID; + } + uint32 GetAHFID() + { + return AHFID; + } + void SetMinItems(uint32 value) + { + minItems = value; + } + uint32 GetMinItems() + { + if ((minItems == 0) && (maxItems)) + return maxItems; + else if ((maxItems) && (minItems > maxItems)) + return maxItems; + else + return minItems; + } + void SetMaxItems(uint32 value) + { + maxItems = value; + // CalculatePercents() needs to be called, but only if + // SetPercentages() has been called at least once already. + } + uint32 GetMaxItems() + { + return maxItems; + } + void SetPercentages(uint32 greytg, uint32 whitetg, uint32 greentg, uint32 bluetg, uint32 purpletg, uint32 orangetg, uint32 yellowtg, uint32 greyi, uint32 whitei, uint32 greeni, uint32 bluei, uint32 purplei, uint32 orangei, uint32 yellowi) + { + uint32 totalPercent = greytg + whitetg + greentg + bluetg + purpletg + orangetg + yellowtg + greyi + whitei + greeni + bluei + purplei + orangei + yellowi; + + if (totalPercent == 0) + { + maxItems = 0; + } + else if (totalPercent != 100) + { + greytg = 0; + whitetg = 27; + greentg = 12; + bluetg = 10; + purpletg = 1; + orangetg = 0; + yellowtg = 0; + greyi = 0; + whitei = 10; + greeni = 30; + bluei = 8; + purplei = 2; + orangei = 0; + yellowi = 0; + } + percentGreyTradeGoods = greytg; + percentWhiteTradeGoods = whitetg; + percentGreenTradeGoods = greentg; + percentBlueTradeGoods = bluetg; + percentPurpleTradeGoods = purpletg; + percentOrangeTradeGoods = orangetg; + percentYellowTradeGoods = yellowtg; + percentGreyItems = greyi; + percentWhiteItems = whitei; + percentGreenItems = greeni; + percentBlueItems = bluei; + percentPurpleItems = purplei; + percentOrangeItems = orangei; + percentYellowItems = yellowi; + CalculatePercents(); + } + uint32 GetPercentages(uint32 color) + { + switch(color) + { + case AHB_GREY_TG: + return percentGreyTradeGoods; + break; + case AHB_WHITE_TG: + return percentWhiteTradeGoods; + break; + case AHB_GREEN_TG: + return percentGreenTradeGoods; + break; + case AHB_BLUE_TG: + return percentBlueTradeGoods; + break; + case AHB_PURPLE_TG: + return percentPurpleTradeGoods; + break; + case AHB_ORANGE_TG: + return percentOrangeTradeGoods; + break; + case AHB_YELLOW_TG: + return percentYellowTradeGoods; + break; + case AHB_GREY_I: + return percentGreyItems; + break; + case AHB_WHITE_I: + return percentWhiteItems; + break; + case AHB_GREEN_I: + return percentGreenItems; + break; + case AHB_BLUE_I: + return percentBlueItems; + break; + case AHB_PURPLE_I: + return percentPurpleItems; + break; + case AHB_ORANGE_I: + return percentOrangeItems; + break; + case AHB_YELLOW_I: + return percentYellowItems; + break; + default: + return 0; + break; + } + } + void SetMinPrice(uint32 color, uint32 value) + { + switch(color) + { + case AHB_GREY: + minPriceGrey = value; + break; + case AHB_WHITE: + minPriceWhite = value; + break; + case AHB_GREEN: + minPriceGreen = value; + break; + case AHB_BLUE: + minPriceBlue = value; + break; + case AHB_PURPLE: + minPricePurple = value; + break; + case AHB_ORANGE: + minPriceOrange = value; + break; + case AHB_YELLOW: + minPriceYellow = value; + break; + default: + break; + } + } + uint32 GetMinPrice(uint32 color) + { + switch(color) + { + case AHB_GREY: + { + if (minPriceGrey == 0) + return 100; + else if (minPriceGrey > maxPriceGrey) + return maxPriceGrey; + else + return minPriceGrey; + break; + } + case AHB_WHITE: + { + if (minPriceWhite == 0) + return 150; + else if (minPriceWhite > maxPriceWhite) + return maxPriceWhite; + else + return minPriceWhite; + break; + } + case AHB_GREEN: + { + if (minPriceGreen == 0) + return 200; + else if (minPriceGreen > maxPriceGreen) + return maxPriceGreen; + else + return minPriceGreen; + break; + } + case AHB_BLUE: + { + if (minPriceBlue == 0) + return 250; + else if (minPriceBlue > maxPriceBlue) + return maxPriceBlue; + else + return minPriceBlue; + break; + } + case AHB_PURPLE: + { + if (minPricePurple == 0) + return 300; + else if (minPricePurple > maxPricePurple) + return maxPricePurple; + else + return minPricePurple; + break; + } + case AHB_ORANGE: + { + if (minPriceOrange == 0) + return 400; + else if (minPriceOrange > maxPriceOrange) + return maxPriceOrange; + else + return minPriceOrange; + break; + } + case AHB_YELLOW: + { + if (minPriceYellow == 0) + return 500; + else if (minPriceYellow > maxPriceYellow) + return maxPriceYellow; + else + return minPriceYellow; + break; + } + default: + { + return 0; + break; + } + } + } + void SetMaxPrice(uint32 color, uint32 value) + { + switch(color) + { + case AHB_GREY: + maxPriceGrey = value; + break; + case AHB_WHITE: + maxPriceWhite = value; + break; + case AHB_GREEN: + maxPriceGreen = value; + break; + case AHB_BLUE: + maxPriceBlue = value; + break; + case AHB_PURPLE: + maxPricePurple = value; + break; + case AHB_ORANGE: + maxPriceOrange = value; + break; + case AHB_YELLOW: + maxPriceYellow = value; + break; + default: + break; + } + } + uint32 GetMaxPrice(uint32 color) + { + switch(color) + { + case AHB_GREY: + { + if (maxPriceGrey == 0) + return 150; + else + return maxPriceGrey; + break; + } + case AHB_WHITE: + { + if (maxPriceWhite == 0) + return 250; + else + return maxPriceWhite; + break; + } + case AHB_GREEN: + { + if (maxPriceGreen == 0) + return 300; + else + return maxPriceGreen; + break; + } + case AHB_BLUE: + { + if (maxPriceBlue == 0) + return 350; + else + return maxPriceBlue; + break; + } + case AHB_PURPLE: + { + if (maxPricePurple == 0) + return 450; + else + return maxPricePurple; + break; + } + case AHB_ORANGE: + { + if (maxPriceOrange == 0) + return 550; + else + return maxPriceOrange; + break; + } + case AHB_YELLOW: + { + if (maxPriceYellow == 0) + return 650; + else + return maxPriceYellow; + break; + } + default: + { + return 0; + break; + } + } + } + void SetMinBidPrice(uint32 color, uint32 value) + { + switch(color) + { + case AHB_GREY: + minBidPriceGrey = value; + break; + case AHB_WHITE: + minBidPriceWhite = value; + break; + case AHB_GREEN: + minBidPriceGreen = value; + break; + case AHB_BLUE: + minBidPriceBlue = value; + break; + case AHB_PURPLE: + minBidPricePurple = value; + break; + case AHB_ORANGE: + minBidPriceOrange = value; + break; + case AHB_YELLOW: + minBidPriceYellow = value; + break; + default: + break; + } + } + uint32 GetMinBidPrice(uint32 color) + { + switch(color) + { + case AHB_GREY: + { + if (minBidPriceGrey > 100) + return 100; + else + return minBidPriceGrey; + break; + } + case AHB_WHITE: + { + if (minBidPriceWhite > 100) + return 100; + else + return minBidPriceWhite; + break; + } + case AHB_GREEN: + { + if (minBidPriceGreen > 100) + return 100; + else + return minBidPriceGreen; + break; + } + case AHB_BLUE: + { + if (minBidPriceBlue > 100) + return 100; + else + return minBidPriceBlue; + break; + } + case AHB_PURPLE: + { + if (minBidPricePurple > 100) + return 100; + else + return minBidPricePurple; + break; + } + case AHB_ORANGE: + { + if (minBidPriceOrange > 100) + return 100; + else + return minBidPriceOrange; + break; + } + case AHB_YELLOW: + { + if (minBidPriceYellow > 100) + return 100; + else + return minBidPriceYellow; + break; + } + default: + { + return 0; + break; + } + } + } + void SetMaxBidPrice(uint32 color, uint32 value) + { + switch(color) + { + case AHB_GREY: + maxBidPriceGrey = value; + break; + case AHB_WHITE: + maxBidPriceWhite = value; + break; + case AHB_GREEN: + maxBidPriceGreen = value; + break; + case AHB_BLUE: + maxBidPriceBlue = value; + break; + case AHB_PURPLE: + maxBidPricePurple = value; + break; + case AHB_ORANGE: + maxBidPriceOrange = value; + break; + case AHB_YELLOW: + maxBidPriceYellow = value; + break; + default: + break; + } + } + uint32 GetMaxBidPrice(uint32 color) + { + switch(color) + { + case AHB_GREY: + { + if (maxBidPriceGrey > 100) + return 100; + else + return maxBidPriceGrey; + break; + } + case AHB_WHITE: + { + if (maxBidPriceWhite > 100) + return 100; + else + return maxBidPriceWhite; + break; + } + case AHB_GREEN: + { + if (maxBidPriceGreen > 100) + return 100; + else + return maxBidPriceGreen; + break; + } + case AHB_BLUE: + { + if (maxBidPriceBlue > 100) + return 100; + else + return maxBidPriceBlue; + break; + } + case AHB_PURPLE: + { + if (maxBidPricePurple > 100) + return 100; + else + return maxBidPricePurple; + break; + } + case AHB_ORANGE: + { + if (maxBidPriceOrange > 100) + return 100; + else + return maxBidPriceOrange; + break; + } + case AHB_YELLOW: + { + if (maxBidPriceYellow > 100) + return 100; + else + return maxBidPriceYellow; + break; + } + default: + { + return 0; + break; + } + } + } + void SetMaxStack(uint32 color, uint32 value) + { + switch(color) + { + case AHB_GREY: + maxStackGrey = value; + break; + case AHB_WHITE: + maxStackWhite = value; + break; + case AHB_GREEN: + maxStackGreen = value; + break; + case AHB_BLUE: + maxStackBlue = value; + break; + case AHB_PURPLE: + maxStackPurple = value; + break; + case AHB_ORANGE: + maxStackOrange = value; + break; + case AHB_YELLOW: + maxStackYellow = value; + break; + default: + break; + } + } + uint32 GetMaxStack(uint32 color) + { + switch(color) + { + case AHB_GREY: + { + return maxStackGrey; + break; + } + case AHB_WHITE: + { + return maxStackWhite; + break; + } + case AHB_GREEN: + { + return maxStackGreen; + break; + } + case AHB_BLUE: + { + return maxStackBlue; + break; + } + case AHB_PURPLE: + { + return maxStackPurple; + break; + } + case AHB_ORANGE: + { + return maxStackOrange; + break; + } + case AHB_YELLOW: + { + return maxStackYellow; + break; + } + default: + { + return 0; + break; + } + } + } + void SetBuyerPrice(uint32 color, uint32 value) + { + switch(color) + { + case AHB_GREY: + buyerPriceGrey = value; + break; + case AHB_WHITE: + buyerPriceWhite = value; + break; + case AHB_GREEN: + buyerPriceGreen = value; + break; + case AHB_BLUE: + buyerPriceBlue = value; + break; + case AHB_PURPLE: + buyerPricePurple = value; + break; + case AHB_ORANGE: + buyerPriceOrange = value; + break; + case AHB_YELLOW: + buyerPriceYellow = value; + break; + default: + break; + } + } + uint32 GetBuyerPrice(uint32 color) + { + switch(color) + { + case AHB_GREY: + return buyerPriceGrey; + break; + case AHB_WHITE: + return buyerPriceWhite; + break; + case AHB_GREEN: + return buyerPriceGreen; + break; + case AHB_BLUE: + return buyerPriceBlue; + break; + case AHB_PURPLE: + return buyerPricePurple; + break; + case AHB_ORANGE: + return buyerPriceOrange; + break; + case AHB_YELLOW: + return buyerPriceYellow; + break; + default: + return 0; + break; + } + } + void SetBiddingInterval(uint32 value) + { + buyerBiddingInterval = value; + } + uint32 GetBiddingInterval() + { + return buyerBiddingInterval; + } + void CalculatePercents() + { + greytgp = (uint32) (((double)percentGreyTradeGoods / 100.0) * maxItems); + whitetgp = (uint32) (((double)percentWhiteTradeGoods / 100.0) * maxItems); + greentgp = (uint32) (((double)percentGreenTradeGoods / 100.0) * maxItems); + bluetgp = (uint32) (((double)percentBlueTradeGoods / 100.0) * maxItems); + purpletgp = (uint32) (((double)percentPurpleTradeGoods / 100.0) * maxItems); + orangetgp = (uint32) (((double)percentOrangeTradeGoods / 100.0) * maxItems); + yellowtgp = (uint32) (((double)percentYellowTradeGoods / 100.0) * maxItems); + greyip = (uint32) (((double)percentGreyItems / 100.0) * maxItems); + whiteip = (uint32) (((double)percentWhiteItems / 100.0) * maxItems); + greenip = (uint32) (((double)percentGreenItems / 100.0) * maxItems); + blueip = (uint32) (((double)percentBlueItems / 100.0) * maxItems); + purpleip = (uint32) (((double)percentPurpleItems / 100.0) * maxItems); + orangeip = (uint32) (((double)percentOrangeItems / 100.0) * maxItems); + yellowip = (uint32) (((double)percentYellowItems / 100.0) * maxItems); + uint32 total = greytgp + whitetgp + greentgp + bluetgp + purpletgp + orangetgp + yellowtgp + greyip + whiteip + greenip + blueip + purpleip + orangeip + yellowip; + int32 diff = (maxItems - total); + if (diff < 0) + { + if ((whiteip - diff) > 0) + whiteip -= diff; + else if ((greenip - diff) > 0) + greenip -= diff; + } + else if (diff < 0) + { + whiteip += diff; + } + } + uint32 GetPercents(uint32 color) + { + switch(color) + { + case AHB_GREY_TG: + return greytgp; + break; + case AHB_WHITE_TG: + return whitetgp; + break; + case AHB_GREEN_TG: + return greentgp; + break; + case AHB_BLUE_TG: + return bluetgp; + break; + case AHB_PURPLE_TG: + return purpletgp; + break; + case AHB_ORANGE_TG: + return orangetgp; + break; + case AHB_YELLOW_TG: + return yellowtgp; + break; + case AHB_GREY_I: + return greyip; + break; + case AHB_WHITE_I: + return whiteip; + break; + case AHB_GREEN_I: + return greenip; + break; + case AHB_BLUE_I: + return blueip; + break; + case AHB_PURPLE_I: + return purpleip; + break; + case AHB_ORANGE_I: + return orangeip; + break; + case AHB_YELLOW_I: + return yellowip; + break; + default: + return 0; + break; + } + } + + void DecItemCounts(uint32 Class, uint32 Quality) + { + switch(Class) + { + case ITEM_CLASS_TRADE_GOODS: + DecItemCounts(Quality); + break; + default: + DecItemCounts(Quality + 7); + break; + } + } + + void DecItemCounts(uint32 color) + { + switch(color) + { + case AHB_GREY_TG: + --greyTGoods; + break; + case AHB_WHITE_TG: + --whiteTGoods; + break; + case AHB_GREEN_TG: + --greenTGoods; + break; + case AHB_BLUE_TG: + --blueTGoods; + break; + case AHB_PURPLE_TG: + --purpleTGoods; + break; + case AHB_ORANGE_TG: + --orangeTGoods; + break; + case AHB_YELLOW_TG: + --yellowTGoods; + break; + case AHB_GREY_I: + --greyItems; + break; + case AHB_WHITE_I: + --whiteItems; + break; + case AHB_GREEN_I: + --greenItems; + break; + case AHB_BLUE_I: + --blueItems; + break; + case AHB_PURPLE_I: + --purpleItems; + break; + case AHB_ORANGE_I: + --orangeItems; + break; + case AHB_YELLOW_I: + --yellowItems; + break; + default: + break; + } + } + + void IncItemCounts(uint32 Class, uint32 Quality) + { + switch(Class) + { + case ITEM_CLASS_TRADE_GOODS: + IncItemCounts(Quality); + break; + default: + IncItemCounts(Quality + 7); + break; + } + } + + void IncItemCounts(uint32 color) + { + switch(color) + { + case AHB_GREY_TG: + ++greyTGoods; + break; + case AHB_WHITE_TG: + ++whiteTGoods; + break; + case AHB_GREEN_TG: + ++greenTGoods; + break; + case AHB_BLUE_TG: + ++blueTGoods; + break; + case AHB_PURPLE_TG: + ++purpleTGoods; + break; + case AHB_ORANGE_TG: + ++orangeTGoods; + break; + case AHB_YELLOW_TG: + ++yellowTGoods; + break; + case AHB_GREY_I: + ++greyItems; + break; + case AHB_WHITE_I: + ++whiteItems; + break; + case AHB_GREEN_I: + ++greenItems; + break; + case AHB_BLUE_I: + ++blueItems; + break; + case AHB_PURPLE_I: + ++purpleItems; + break; + case AHB_ORANGE_I: + ++orangeItems; + break; + case AHB_YELLOW_I: + ++yellowItems; + break; + default: + break; + } + } + + void ResetItemCounts() + { + greyTGoods = 0; + whiteTGoods = 0; + greenTGoods = 0; + blueTGoods = 0; + purpleTGoods = 0; + orangeTGoods = 0; + yellowTGoods = 0; + + greyItems = 0; + whiteItems = 0; + greenItems = 0; + blueItems = 0; + purpleItems = 0; + orangeItems = 0; + yellowItems = 0; + } + + uint32 TotalItemCounts() + { + return( + greyTGoods + + whiteTGoods + + greenTGoods + + blueTGoods + + purpleTGoods + + orangeTGoods + + yellowTGoods + + + greyItems + + whiteItems + + greenItems + + blueItems + + purpleItems + + orangeItems + + yellowItems); + } + + uint32 GetItemCounts(uint32 color) + { + switch(color) + { + case AHB_GREY_TG: + return greyTGoods; + break; + case AHB_WHITE_TG: + return whiteTGoods; + break; + case AHB_GREEN_TG: + return greenTGoods; + break; + case AHB_BLUE_TG: + return blueTGoods; + break; + case AHB_PURPLE_TG: + return purpleTGoods; + break; + case AHB_ORANGE_TG: + return orangeTGoods; + break; + case AHB_YELLOW_TG: + return yellowTGoods; + break; + case AHB_GREY_I: + return greyItems; + break; + case AHB_WHITE_I: + return whiteItems; + break; + case AHB_GREEN_I: + return greenItems; + break; + case AHB_BLUE_I: + return blueItems; + break; + case AHB_PURPLE_I: + return purpleItems; + break; + case AHB_ORANGE_I: + return orangeItems; + break; + case AHB_YELLOW_I: + return yellowItems; + break; + default: + return 0; + break; + } + } + void SetBidsPerInterval(uint32 value) + { + buyerBidsPerInterval = value; + } + uint32 GetBidsPerInterval() + { + return buyerBidsPerInterval; + } + ~AHBConfig() + { + } +}; +class AuctionHouseBot +{ +private: + + bool debug_Out; + bool debug_Out_Filters; + + bool AHBSeller; + bool AHBBuyer; + bool BuyMethod; + bool SellMethod; + + uint32 AHBplayerAccount; + ObjectGuid::LowType AHBplayerGUID; + uint32 ItemsPerCycle; + + //Begin Filters + + bool Vendor_Items; + bool Loot_Items; + bool Other_Items; + bool Vendor_TGs; + bool Loot_TGs; + bool Other_TGs; + + bool No_Bind; + bool Bind_When_Picked_Up; + bool Bind_When_Equipped; + bool Bind_When_Use; + bool Bind_Quest_Item; + + bool DisablePermEnchant; + bool DisableConjured; + bool DisableGems; + bool DisableMoney; + bool DisableMoneyLoot; + bool DisableLootable; + bool DisableKeys; + bool DisableDuration; + bool DisableBOP_Or_Quest_NoReqLevel; + + bool DisableWarriorItems; + bool DisablePaladinItems; + bool DisableHunterItems; + bool DisableRogueItems; + bool DisablePriestItems; + bool DisableDKItems; + bool DisableShamanItems; + bool DisableMageItems; + bool DisableWarlockItems; + bool DisableUnusedClassItems; + bool DisableDruidItems; + + uint32 DisableItemsBelowLevel; + uint32 DisableItemsAboveLevel; + uint32 DisableTGsBelowLevel; + uint32 DisableTGsAboveLevel; + uint32 DisableItemsBelowGUID; + uint32 DisableItemsAboveGUID; + uint32 DisableTGsBelowGUID; + uint32 DisableTGsAboveGUID; + uint32 DisableItemsBelowReqLevel; + uint32 DisableItemsAboveReqLevel; + uint32 DisableTGsBelowReqLevel; + uint32 DisableTGsAboveReqLevel; + uint32 DisableItemsBelowReqSkillRank; + uint32 DisableItemsAboveReqSkillRank; + uint32 DisableTGsBelowReqSkillRank; + uint32 DisableTGsAboveReqSkillRank; + + std::set DisableItemStore; + + //End Filters + + AHBConfig AllianceConfig; + AHBConfig HordeConfig; + AHBConfig NeutralConfig; + + time_t _lastrun_a; + time_t _lastrun_h; + time_t _lastrun_n; + + inline uint32 minValue(uint32 a, uint32 b) { return a <= b ? a : b; }; + void addNewAuctions(Player *AHBplayer, AHBConfig *config); + void addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *config, WorldSession *session); + +// friend class ACE_Singleton; + AuctionHouseBot(); + +public: + static AuctionHouseBot* instance() + { + static AuctionHouseBot instance; + return &instance; + } + + ~AuctionHouseBot(); + void Update(); + void Initialize(); + void InitializeConfiguration(); + void LoadValues(AHBConfig*); + void DecrementItemCounts(AuctionEntry* ah, uint32 itemEntry); + void IncrementItemCounts(AuctionEntry* ah); + void Commands(uint32, uint32, uint32, char*); + ObjectGuid::LowType GetAHBplayerGUID() { return AHBplayerGUID; }; +}; + +#define auctionbot AuctionHouseBot::instance() + +#endif diff --git a/modules/mod-ah-bot/src/AuctionHouseBotScript.cpp b/modules/mod-ah-bot/src/AuctionHouseBotScript.cpp new file mode 100644 index 0000000..19ef7c8 --- /dev/null +++ b/modules/mod-ah-bot/src/AuctionHouseBotScript.cpp @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2016+ AzerothCore , released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 +*/ + +#include "ScriptMgr.h" +#include "AuctionHouseBot.h" +#include "Log.h" +#include "Mail.h" +#include "Player.h" +#include "WorldSession.h" + +class AHBot_WorldScript : public WorldScript +{ +public: + AHBot_WorldScript() : WorldScript("AHBot_WorldScript") { } + + void OnBeforeConfigLoad(bool /*reload*/) override + { + auctionbot->InitializeConfiguration(); + } + + void OnStartup() override + { + LOG_INFO("server.loading", "Initialize AuctionHouseBot..."); + auctionbot->Initialize(); + } +}; + +class AHBot_AuctionHouseScript : public AuctionHouseScript +{ +public: + AHBot_AuctionHouseScript() : AuctionHouseScript("AHBot_AuctionHouseScript") { } + + void OnBeforeAuctionHouseMgrSendAuctionSuccessfulMail(AuctionHouseMgr* /*auctionHouseMgr*/, AuctionEntry* /*auction*/, Player* owner, uint32& /*owner_accId*/, uint32& /*profit*/, bool& sendNotification, bool& updateAchievementCriteria, bool& /*sendMail*/) override + { + if (owner && owner->GetGUID().GetCounter() == auctionbot->GetAHBplayerGUID()) + { + sendNotification = false; + updateAchievementCriteria = false; + } + } + + void OnBeforeAuctionHouseMgrSendAuctionExpiredMail(AuctionHouseMgr* /*auctionHouseMgr*/, AuctionEntry* /*auction*/, Player* owner, uint32& /*owner_accId*/, bool& sendNotification, bool& /*sendMail*/) override + { + if (owner && owner->GetGUID().GetCounter() == auctionbot->GetAHBplayerGUID()) + sendNotification = false; + } + + void OnBeforeAuctionHouseMgrSendAuctionOutbiddedMail(AuctionHouseMgr* /*auctionHouseMgr*/, AuctionEntry* auction, Player* oldBidder, uint32& /*oldBidder_accId*/, Player* newBidder, uint32& newPrice, bool& /*sendNotification*/, bool& /*sendMail*/) override + { + if (oldBidder && !newBidder) + oldBidder->GetSession()->SendAuctionBidderNotification(auction->GetHouseId(), auction->Id, ObjectGuid::Create(auctionbot->GetAHBplayerGUID()), newPrice, auction->GetAuctionOutBid(), auction->item_template); + } + + void OnAuctionAdd(AuctionHouseObject* /*ah*/, AuctionEntry* auction) override + { + auctionbot->IncrementItemCounts(auction); + } + + void OnAuctionRemove(AuctionHouseObject* /*ah*/, AuctionEntry* auction) override + { + auctionbot->DecrementItemCounts(auction, auction->item_template); + } + + void OnBeforeAuctionHouseMgrUpdate() override + { + auctionbot->Update(); + } +}; + +class AHBot_MailScript : public MailScript +{ +public: + AHBot_MailScript() : MailScript("AHBot_MailScript") { } + + void OnBeforeMailDraftSendMailTo(MailDraft* /*mailDraft*/, MailReceiver const& receiver, MailSender const& sender, MailCheckMask& /*checked*/, uint32& /*deliver_delay*/, uint32& /*custom_expiration*/, bool& deleteMailItemsFromDB, bool& sendMail) override + { + if (receiver.GetPlayerGUIDLow() == auctionbot->GetAHBplayerGUID()) + { + if (sender.GetMailMessageType() == MAIL_AUCTION) // auction mail with items + deleteMailItemsFromDB = true; + sendMail = false; + } + } +}; + +void AddAHBotScripts() +{ + new AHBot_WorldScript(); + new AHBot_AuctionHouseScript(); + new AHBot_MailScript(); +} diff --git a/modules/mod-ah-bot/src/ah_bot_loader.cpp b/modules/mod-ah-bot/src/ah_bot_loader.cpp new file mode 100644 index 0000000..1344243 --- /dev/null +++ b/modules/mod-ah-bot/src/ah_bot_loader.cpp @@ -0,0 +1,15 @@ +/* + * Copyright (C) 2016+ AzerothCore , released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 + * Copyright (C) 2021+ WarheadCore + */ + +// From SC +void AddAHBotCommandScripts(); +void AddAHBotScripts(); + +// Add all +void Addmod_ah_botScripts() +{ + AddAHBotCommandScripts(); + AddAHBotScripts(); +} diff --git a/modules/mod-ah-bot/src/cs_ah_bot.cpp b/modules/mod-ah-bot/src/cs_ah_bot.cpp new file mode 100644 index 0000000..469f7b5 --- /dev/null +++ b/modules/mod-ah-bot/src/cs_ah_bot.cpp @@ -0,0 +1,488 @@ +/* + * Copyright (C) 2008-2012 TrinityCore + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +/* ScriptData +Name: ah_bot_commandscript +%Complete: 100 +Comment: All ah_bot related commands +Category: commandscripts +EndScriptData */ + +#include "ScriptMgr.h" +#include "Chat.h" +#include "AuctionHouseBot.h" +#include "Config.h" + +#if AC_COMPILER == AC_COMPILER_GNU +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + +using namespace Acore::ChatCommands; + +class ah_bot_commandscript : public CommandScript +{ +public: + ah_bot_commandscript() : CommandScript("ah_bot_commandscript") { } + + std::vector GetCommands() const override + { + static std::vector commandTable = + { + { "ahbotoptions", SEC_GAMEMASTER, true, &HandleAHBotOptionsCommand, "" }, + }; + return commandTable; + } + + static bool HandleAHBotOptionsCommand(ChatHandler* handler, const char*args) + { + uint32 ahMapID = 0; + char* opt = strtok((char*)args, " "); + char* ahMapIdStr = strtok(NULL, " "); + + if (ahMapIdStr) + { + ahMapID = uint32(strtoul(ahMapIdStr, NULL, 0)); + switch (ahMapID) + { + case 2: + case 6: + case 7: + break; + default: + opt = NULL; + break; + } + } + + if (!opt) + { + handler->PSendSysMessage("Syntax is: ahbotoptions $option $ahMapID (2, 6 or 7) $parameter"); + handler->PSendSysMessage("Try ahbotoptions help to see a list of options."); + return false; + } + + int l = strlen(opt); + + if (strncmp(opt, "help", l) == 0) + { + handler->PSendSysMessage("AHBot commands:"); + handler->PSendSysMessage("ahexpire"); + handler->PSendSysMessage("minitems"); + handler->PSendSysMessage("maxitems"); + //handler->PSendSysMessage(""); + //handler->PSendSysMessage(""); + handler->PSendSysMessage("percentages"); + handler->PSendSysMessage("minprice"); + handler->PSendSysMessage("maxprice"); + handler->PSendSysMessage("minbidprice"); + handler->PSendSysMessage("maxbidprice"); + handler->PSendSysMessage("maxstack"); + handler->PSendSysMessage("buyerprice"); + handler->PSendSysMessage("bidinterval"); + handler->PSendSysMessage("bidsperinterval"); + return true; + } + else if (strncmp(opt, "ahexpire", l) == 0) + { + if (!ahMapIdStr) + { + handler->PSendSysMessage("Syntax is: ahbotoptions ahexpire $ahMapID (2, 6 or 7)"); + return false; + } + + auctionbot->Commands(0, ahMapID, 0, NULL); + } + else if (strncmp(opt, "minitems", l) == 0) + { + char* param1 = strtok(NULL, " "); + if (!ahMapIdStr || !param1) + { + handler->PSendSysMessage("Syntax is: ahbotoptions minitems $ahMapID (2, 6 or 7) $minItems"); + return false; + } + + auctionbot->Commands(1, ahMapID, 0, param1); + } + else if (strncmp(opt, "maxitems", l) == 0) + { + char* param1 = strtok(NULL, " "); + if (!ahMapIdStr || !param1) + { + handler->PSendSysMessage("Syntax is: ahbotoptions maxitems $ahMapID (2, 6 or 7) $maxItems"); + return false; + } + + auctionbot->Commands(2, ahMapID, 0, param1); + } + else if (strncmp(opt, "mintime", l) == 0) + { + handler->PSendSysMessage("ahbotoptions mintime has been deprecated"); + return false; + /* + char* param1 = strtok(NULL, " "); + if (!ahMapIdStr || !param1) + { + PSendSysMessage("Syntax is: ahbotoptions mintime $ahMapID (2, 6 or 7) $mintime"); + return false; + } + + auctionbot.Commands(3, ahMapID, 0, param1); + */ + } + else if (strncmp(opt, "maxtime", l) == 0) + { + handler->PSendSysMessage("ahbotoptions maxtime has been deprecated"); + return false; + /* + char* param1 = strtok(NULL, " "); + if (!ahMapIdStr || !param1) + { + PSendSysMessage("Syntax is: ahbotoptions maxtime $ahMapID (2, 6 or 7) $maxtime"); + return false; + } + + auctionbot.Commands(4, ahMapID, 0, param1); + */ + } + else if (strncmp(opt, "percentages", l) == 0) + { + char* param1 = strtok(NULL, " "); + char* param2 = strtok(NULL, " "); + char* param3 = strtok(NULL, " "); + char* param4 = strtok(NULL, " "); + char* param5 = strtok(NULL, " "); + char* param6 = strtok(NULL, " "); + char* param7 = strtok(NULL, " "); + char* param8 = strtok(NULL, " "); + char* param9 = strtok(NULL, " "); + char* param10 = strtok(NULL, " "); + char* param11 = strtok(NULL, " "); + char* param12 = strtok(NULL, " "); + char* param13 = strtok(NULL, " "); + char* param14 = strtok(NULL, " "); + + if (!ahMapIdStr || !param14) + { + handler->PSendSysMessage("Syntax is: ahbotoptions percentages $ahMapID (2, 6 or 7) $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14"); + handler->PSendSysMessage("1 GreyTradeGoods 2 WhiteTradeGoods 3 GreenTradeGoods 4 BlueTradeGoods 5 PurpleTradeGoods"); + handler->PSendSysMessage("6 OrangeTradeGoods 7 YellowTradeGoods 8 GreyItems 9 WhiteItems 10 GreenItems 11 BlueItems"); + handler->PSendSysMessage("12 PurpleItems 13 OrangeItems 14 YellowItems"); + handler->PSendSysMessage("The total must add up to 100%%"); + return false; + } + + uint32 greytg = uint32(strtoul(param1, NULL, 0)); + uint32 whitetg = uint32(strtoul(param2, NULL, 0)); + uint32 greentg = uint32(strtoul(param3, NULL, 0)); + uint32 bluetg = uint32(strtoul(param4, NULL, 0)); + uint32 purpletg = uint32(strtoul(param5, NULL, 0)); + uint32 orangetg = uint32(strtoul(param6, NULL, 0)); + uint32 yellowtg = uint32(strtoul(param7, NULL, 0)); + uint32 greyi = uint32(strtoul(param8, NULL, 0)); + uint32 whitei = uint32(strtoul(param9, NULL, 0)); + uint32 greeni = uint32(strtoul(param10, NULL, 0)); + uint32 bluei = uint32(strtoul(param11, NULL, 0)); + uint32 purplei = uint32(strtoul(param12, NULL, 0)); + uint32 orangei = uint32(strtoul(param13, NULL, 0)); + uint32 yellowi = uint32(strtoul(param14, NULL, 0)); + uint32 totalPercent = greytg + whitetg + greentg + bluetg + purpletg + orangetg + yellowtg + greyi + whitei + greeni + bluei + purplei + orangei + yellowi; + + if (totalPercent == 0 || totalPercent != 100) + { + handler->PSendSysMessage("Syntax is: ahbotoptions percentages $ahMapID (2, 6 or 7) $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14"); + handler->PSendSysMessage("1 GreyTradeGoods 2 WhiteTradeGoods 3 GreenTradeGoods 4 BlueTradeGoods 5 PurpleTradeGoods"); + handler->PSendSysMessage("6 OrangeTradeGoods 7 YellowTradeGoods 8 GreyItems 9 WhiteItems 10 GreenItems 11 BlueItems"); + handler->PSendSysMessage("12 PurpleItems 13 OrangeItems 14 YellowItems"); + handler->PSendSysMessage("The total must add up to 100%%"); + return false; + } + + char param[100]; + param[0] = '\0'; + strcat(param, param1); + strcat(param, " "); + strcat(param, param2); + strcat(param, " "); + strcat(param, param3); + strcat(param, " "); + strcat(param, param4); + strcat(param, " "); + strcat(param, param5); + strcat(param, " "); + strcat(param, param6); + strcat(param, " "); + strcat(param, param7); + strcat(param, " "); + strcat(param, param8); + strcat(param, " "); + strcat(param, param9); + strcat(param, " "); + strcat(param, param10); + strcat(param, " "); + strcat(param, param11); + strcat(param, " "); + strcat(param, param12); + strcat(param, " "); + strcat(param, param13); + strcat(param, " "); + strcat(param, param14); + auctionbot->Commands(5, ahMapID, 0, param); + } + else if (strncmp(opt, "minprice", l) == 0) + { + char* param1 = strtok(NULL, " "); + char* param2 = strtok(NULL, " "); + + if (!ahMapIdStr || !param1 || !param2) + { + handler->PSendSysMessage("Syntax is: ahbotoptions minprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price"); + return false; + } + + if (strncmp(param1, "grey", l) == 0) + auctionbot->Commands(6, ahMapID, AHB_GREY, param2); + else if (strncmp(param1, "white", l) == 0) + auctionbot->Commands(6, ahMapID, AHB_WHITE, param2); + else if (strncmp(param1, "green", l) == 0) + auctionbot->Commands(6, ahMapID, AHB_GREEN, param2); + else if (strncmp(param1, "blue", l) == 0) + auctionbot->Commands(6, ahMapID, AHB_BLUE, param2); + else if (strncmp(param1, "purple", l) == 0) + auctionbot->Commands(6, ahMapID, AHB_PURPLE, param2); + else if (strncmp(param1, "orange", l) == 0) + auctionbot->Commands(6, ahMapID, AHB_ORANGE, param2); + else if (strncmp(param1, "yellow", l) == 0) + auctionbot->Commands(6, ahMapID, AHB_YELLOW, param2); + else + { + handler->PSendSysMessage("Syntax is: ahbotoptions minprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price"); + return false; + } + } + else if (strncmp(opt, "maxprice", l) == 0) + { + char* param1 = strtok(NULL, " "); + char* param2 = strtok(NULL, " "); + if (!ahMapIdStr || !param1 || !param2) + { + handler->PSendSysMessage("Syntax is: ahbotoptions maxprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price"); + return false; + } + if (strncmp(param1, "grey", l) == 0) + auctionbot->Commands(7, ahMapID, AHB_GREY, param2); + else if (strncmp(param1, "white", l) == 0) + auctionbot->Commands(7, ahMapID, AHB_WHITE, param2); + else if (strncmp(param1, "green", l) == 0) + auctionbot->Commands(7, ahMapID, AHB_GREEN, param2); + else if (strncmp(param1, "blue", l) == 0) + auctionbot->Commands(7, ahMapID, AHB_BLUE, param2); + else if (strncmp(param1, "purple", l) == 0) + auctionbot->Commands(7, ahMapID, AHB_PURPLE, param2); + else if (strncmp(param1, "orange",l) == 0) + auctionbot->Commands(7, ahMapID, AHB_ORANGE, param2); + else if (strncmp(param1, "yellow", l) == 0) + auctionbot->Commands(7, ahMapID, AHB_YELLOW, param2); + else + { + handler->PSendSysMessage("Syntax is: ahbotoptions maxprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price"); + return false; + } + } + else if (strncmp(opt, "minbidprice", l) == 0) + { + char* param1 = strtok(NULL, " "); + char* param2 = strtok(NULL, " "); + + if (!ahMapIdStr || !param2 || !param2) + { + handler->PSendSysMessage("Syntax is: ahbotoptions minbidprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price"); + return false; + } + + uint32 minBidPrice = uint32(strtoul(param2, NULL, 0)); + if (minBidPrice < 1 || minBidPrice > 100) + { + handler->PSendSysMessage("The min bid price multiplier must be between 1 and 100"); + return false; + } + + if (strncmp(param1, "grey", l) == 0) + auctionbot->Commands(8, ahMapID, AHB_GREY, param2); + else if (strncmp(param1, "white", l) == 0) + auctionbot->Commands(8, ahMapID, AHB_WHITE, param2); + else if (strncmp(param1, "green", l) == 0) + auctionbot->Commands(8, ahMapID, AHB_GREEN, param2); + else if (strncmp(param1, "blue", l) == 0) + auctionbot->Commands(8, ahMapID, AHB_BLUE, param2); + else if (strncmp(param1, "purple", l) == 0) + auctionbot->Commands(8, ahMapID, AHB_PURPLE, param2); + else if (strncmp(param1, "orange", l) == 0) + auctionbot->Commands(8, ahMapID, AHB_ORANGE, param2); + else if (strncmp(param1, "yellow", l) == 0) + auctionbot->Commands(8, ahMapID, AHB_YELLOW, param2); + else + { + handler->PSendSysMessage("Syntax is: ahbotoptions minbidprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price"); + return false; + } + } + else if (strncmp(opt, "maxbidprice", l) == 0) + { + char* param1 = strtok(NULL, " "); + char* param2 = strtok(NULL, " "); + + if (!ahMapIdStr || !param1 || !param2) + { + handler->PSendSysMessage("Syntax is: ahbotoptions maxbidprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price"); + return false; + } + + uint32 maxBidPrice = uint32(strtoul(param2, NULL, 0)); + if (maxBidPrice < 1 || maxBidPrice > 100) + { + handler->PSendSysMessage("The max bid price multiplier must be between 1 and 100"); + return false; + } + + if (strncmp(param1, "grey", l) == 0) + auctionbot->Commands(9, ahMapID, AHB_GREY, param2); + else if (strncmp(param1, "white", l) == 0) + auctionbot->Commands(9, ahMapID, AHB_WHITE, param2); + else if (strncmp(param1, "green", l) == 0) + auctionbot->Commands(9, ahMapID, AHB_GREEN, param2); + else if (strncmp(param1, "blue", l) == 0) + auctionbot->Commands(9, ahMapID, AHB_BLUE, param2); + else if (strncmp(param1, "purple", l) == 0) + auctionbot->Commands(9, ahMapID, AHB_PURPLE, param2); + else if (strncmp(param1, " orange", l) == 0) + auctionbot->Commands(9, ahMapID, AHB_ORANGE, param2); + else if (strncmp(param1, "yellow", l) == 0) + auctionbot->Commands(9, ahMapID, AHB_YELLOW, param2); + else + { + handler->PSendSysMessage("Syntax is: ahbotoptions max bidprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $price"); + return false; + } + } + else if (strncmp(opt, "maxstack",l) == 0) + { + char* param1 = strtok(NULL, " "); + char* param2 = strtok(NULL, " "); + + if (!ahMapIdStr || !param1 || !param2) + { + handler->PSendSysMessage("Syntax is: ahbotoptions maxstack $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $value"); + return false; + } + + // uint32 maxStack = uint32(strtoul(param2, NULL, 0)); + // if (maxStack < 0) + // { + // handler->PSendSysMessage("maxstack can't be a negative number."); + // return false; + // } + + if (strncmp(param1, "grey",l) == 0) + auctionbot->Commands(10, ahMapID, AHB_GREY, param2); + else if (strncmp(param1, "white", l) == 0) + auctionbot->Commands(10, ahMapID, AHB_WHITE, param2); + else if (strncmp(param1, "green", l) == 0) + auctionbot->Commands(10, ahMapID, AHB_GREEN, param2); + else if (strncmp(param1, "blue", l) == 0) + auctionbot->Commands(10, ahMapID, AHB_BLUE, param2); + else if (strncmp(param1, "purple", l) == 0) + auctionbot->Commands(10, ahMapID, AHB_PURPLE, param2); + else if (strncmp(param1, "orange", l) == 0) + auctionbot->Commands(10, ahMapID, AHB_ORANGE, param2); + else if (strncmp(param1, "yellow", l) == 0) + auctionbot->Commands(10, ahMapID, AHB_YELLOW, param2); + else + { + handler->PSendSysMessage("Syntax is: ahbotoptions maxstack $ahMapID (2, 6 or 7) $color (grey, white, green, blue, purple, orange or yellow) $value"); + return false; + } + } + else if (strncmp(opt, "buyerprice", l) == 0) + { + char* param1 = strtok(NULL, " "); + char* param2 = strtok(NULL, " "); + + if (!ahMapIdStr || !param1 || !param2) + { + handler->PSendSysMessage("Syntax is: ahbotoptions buyerprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue or purple) $price"); + return false; + } + + if (strncmp(param1, "grey", l) == 0) + auctionbot->Commands(11, ahMapID, AHB_GREY, param2); + else if (strncmp(param1, "white", l) == 0) + auctionbot->Commands(11, ahMapID, AHB_WHITE, param2); + else if (strncmp(param1, "green", l) == 0) + auctionbot->Commands(11, ahMapID, AHB_GREEN, param2); + else if (strncmp(param1, "blue", l) == 0) + auctionbot->Commands(11, ahMapID, AHB_BLUE, param2); + else if (strncmp(param1, "purple", l) == 0) + auctionbot->Commands(11, ahMapID, AHB_PURPLE, param2); + else if (strncmp(param1, "orange", l) == 0) + auctionbot->Commands(11, ahMapID, AHB_ORANGE, param2); + else if (strncmp(param1, "yellow", l) == 0) + auctionbot->Commands(11, ahMapID, AHB_YELLOW, param2); + else + { + handler->PSendSysMessage("Syntax is: ahbotoptions buyerprice $ahMapID (2, 6 or 7) $color (grey, white, green, blue or purple) $price"); + return false; + } + } + else if (strncmp(opt, "bidinterval", l) == 0) + { + char* param1 = strtok(NULL, " "); + + if (!ahMapIdStr || !param1) + { + handler->PSendSysMessage("Syntax is: ahbotoptions bidinterval $ahMapID (2, 6 or 7) $interval(in minutes)"); + return false; + } + + auctionbot->Commands(12, ahMapID, 0, param1); + } + else if (strncmp(opt, "bidsperinterval", l) == 0) + { + char* param1 = strtok(NULL, " "); + + if (!ahMapIdStr || !param1) + { + handler->PSendSysMessage("Syntax is: ahbotoptions bidsperinterval $ahMapID (2, 6 or 7) $bids"); + return false; + } + + auctionbot->Commands(13, ahMapID, 0, param1); + } + else + { + handler->PSendSysMessage("Syntax is: ahbotoptions $option $ahMapID (2, 6 or 7) $parameter"); + handler->PSendSysMessage("Try ahbotoptions help to see a list of options."); + return false; + } + + return true; + } +}; + +void AddAHBotCommandScripts() +{ + new ah_bot_commandscript(); +} diff --git a/modules/mod-aoe-loot/.editorconfig b/modules/mod-aoe-loot/.editorconfig new file mode 100644 index 0000000..eb64e2f --- /dev/null +++ b/modules/mod-aoe-loot/.editorconfig @@ -0,0 +1,8 @@ +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +tab_width = 4 +insert_final_newline = true +trim_trailing_whitespace = true +max_line_length = 80 diff --git a/modules/mod-aoe-loot/.gitattributes b/modules/mod-aoe-loot/.gitattributes new file mode 100644 index 0000000..6667b6a --- /dev/null +++ b/modules/mod-aoe-loot/.gitattributes @@ -0,0 +1,104 @@ +## AUTO-DETECT +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text eol=lf + +# Text +*.conf text +*.conf.dist text +*.cmake text + +## Scripts +*.sh text +*.fish text +*.lua text + +## SQL +*.sql text + +## C++ +*.c text +*.cc text +*.cxx text +*.cpp text +*.c++ text +*.hpp text +*.h text +*.h++ text +*.hh text + +## For documentation + +# Documents +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain + +## DOCUMENTATION +*.markdown text +*.md text +*.mdwn text +*.mdown text +*.mkd text +*.mkdn text +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +copyright text +COPYRIGHT text +INSTALL text +license text +LICENSE text +NEWS text +readme text +README text +TODO text + +## GRAPHICS +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +*.svg text +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + + +## ARCHIVES +*.7z binary +*.gz binary +*.jar binary +*.rar binary +*.tar binary +*.zip binary + +## EXECUTABLES +*.exe binary +*.pyc binary diff --git a/modules/mod-aoe-loot/.github/ISSUE_TEMPLATE/bug_report.yml b/modules/mod-aoe-loot/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..5610d2b --- /dev/null +++ b/modules/mod-aoe-loot/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,72 @@ +name: Bug report +description: Create a bug report to help us improve. +title: "Bug: " +body: + - type: textarea + id: current + attributes: + label: Current Behaviour + description: | + Description of the problem or issue here. + Include entries of affected creatures / items / quests / spells etc. + If this is a crash, post the crashlog (upload to https://gist.github.com/) and include the link here. + Never upload files! Use GIST for text and YouTube for videos! + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected Behaviour + description: | + Tell us what should happen instead. + validations: + required: true + - type: textarea + id: reproduce + attributes: + label: Steps to reproduce the problem + description: | + What does someone else need to do to encounter the same bug? + placeholder: | + 1. Step 1 + 2. Step 2 + 3. Step 3 + validations: + required: true + - type: textarea + id: extra + attributes: + label: Extra Notes + description: | + Do you have any extra notes that can help solve the issue that does not fit any other field? + placeholder: | + None + validations: + required: false + - type: textarea + id: commit + attributes: + label: AC rev. hash/commit + description: | + Copy the result of the `.server debug` command (if you need to run it from the client get a prat addon) + validations: + required: true + - type: input + id: os + attributes: + label: Operating system + description: | + The Operating System the Server is running on. + i.e. Windows 11 x64, Debian 10 x64, macOS 12, Ubuntu 20.04 + validations: + required: true + - type: textarea + id: custom + attributes: + label: Custom changes or Modules + description: | + List which custom changes or modules you have applied, i.e. Eluna module, etc. + placeholder: | + None + validations: + required: false diff --git a/modules/mod-aoe-loot/.github/ISSUE_TEMPLATE/feature_request.yml b/modules/mod-aoe-loot/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..58f79dd --- /dev/null +++ b/modules/mod-aoe-loot/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,33 @@ +name: Feature request +description: Suggest an idea for this project +title: "Feature: " +body: + - type: markdown + attributes: + value: | + Thank you for taking your time to fill out a feature request. Remember to fill out all fields including the title above. + An issue that is not properly filled out will be closed. + - type: textarea + id: description + attributes: + label: Describe your feature request or suggestion in detail + description: | + A clear and concise description of what you want to happen. + validations: + required: true + - type: textarea + id: solution + attributes: + label: Describe a possible solution to your feature or suggestion in detail + description: | + A clear and concise description of any alternative solutions or features you've considered. + validations: + required: false + - type: textarea + id: additional + attributes: + label: Additional context + description: | + Add any other context or screenshots about the feature request here. + validations: + required: false diff --git a/modules/mod-aoe-loot/.github/README.md b/modules/mod-aoe-loot/.github/README.md new file mode 100644 index 0000000..3683617 --- /dev/null +++ b/modules/mod-aoe-loot/.github/README.md @@ -0,0 +1,28 @@ +# ![logo](https://raw.githubusercontent.com/azerothcore/azerothcore.github.io/master/images/logo-github.png) AzerothCore + +## # mod-aoe-loot + +[English](README.md) | [Español](README_ES.md) + +- Latest build status with azerothcore: + +[![Build Status](https://github.com/azerothcore/mod-aoe-loot/workflows/core-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/mod-aoe-loot) + +## Important notes + +There may still be some improvements to be made to the module, but you could say that it is pretty good. However, we are still going to continue working and trying to revise what is needed, as long as tests are performed and it can be determined that the reports are valid. + +For the module to work, 4 things are needed. +- [x] Create the `CanSendErrorAlreadyLooted` hook. (created) +- [x] Create the hook `CanSendCreatureLoot` (created) +- [x] Create the hook `OnBeforeCreatureLootMoney` (created) +- [x] The module works, if the player takes an object from the loot. If the player selects gold, it does not run. So we want to check that and also correct to be able to add up the total amount of gold obtained. +- [x] If the creature can be skinned, the body remains for a while, and when it is skinned, it automatically disappears to avoid being skinned again. + +This module requires the following pull request + +https://github.com/azerothcore/azerothcore-wotlk/pull/16589 + +## Description + +The objective of this module is to allow players to obtain all items from various npc's within a certain distance range. diff --git a/modules/mod-aoe-loot/.github/README_ES.md b/modules/mod-aoe-loot/.github/README_ES.md new file mode 100644 index 0000000..6d80059 --- /dev/null +++ b/modules/mod-aoe-loot/.github/README_ES.md @@ -0,0 +1,28 @@ +# ![logo](https://raw.githubusercontent.com/azerothcore/azerothcore.github.io/master/images/logo-github.png) AzerothCore + +## # mod-aoe-loot + +[English](README.md) | [Español](README_ES.md) + +- Último estado de compilación con azerothcore: + +[![Build Status](https://github.com/azerothcore/mod-aoe-loot/workflows/core-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/mod-aoe-loot) + +## Notas importantes + +Puede que todavia, haya que hacerle alguna mejora al modulo, pero se podria decir que esta bastante bien. Sin embargo, aun se va a seguir trabajando y tratando de revisar lo que haga falta, en la medida, en la que se realicen pruebas y se pueda determinar, que los reportes son validos. + +Para que el módulo funcione, se necesitan 4 cosas. +- [x] Crear el hook `CanSendErrorAlreadyLooted`. (creado) +- [x] Crear el hook `CanSendCreatureLoot` (creado) +- [x] Crear el hook `OnBeforeCreatureLootMoney` (creado) +- [x] El módulo funciona, si el jugador toma un objeto del botín. Si el jugador selecciona oro, no funciona. Así que queremos comprobar que funcione y también poder sumar la cantidad total de oro obtenida. +- [x] Si la criatura, puede ser desollada, el cuerpo, permanece por un tiempo, y cuando el mismo es desollado, automáticamente desaparece, para evitar ser desollado nuevamente. + +Este módulo requiere el siguiente pull request + +https://github.com/azerothcore/azerothcore-wotlk/pull/16589 + +## Descripción + +El objetivo de este módulo es permitir a los jugadores obtener todos los objetos de varios npc's dentro de un cierto rango de distancia. diff --git a/modules/mod-aoe-loot/.github/workflows/core-build.yml b/modules/mod-aoe-loot/.github/workflows/core-build.yml new file mode 100644 index 0000000..921c9eb --- /dev/null +++ b/modules/mod-aoe-loot/.github/workflows/core-build.yml @@ -0,0 +1,12 @@ +name: core-build +on: + push: + branches: + - 'master' + pull_request: + +jobs: + build: + uses: azerothcore/reusable-workflows/.github/workflows/core_build_modules.yml@main + with: + module_repo: ${{ github.event.repository.name }} diff --git a/modules/mod-aoe-loot/.gitignore b/modules/mod-aoe-loot/.gitignore new file mode 100644 index 0000000..4ba5dd3 --- /dev/null +++ b/modules/mod-aoe-loot/.gitignore @@ -0,0 +1,47 @@ +!.gitignore + +# +#Generic +# +.directory +.mailmap +* .orig +* .rej +* .*~ +.hg / +*.kdev * +.DS_Store +CMakeLists.txt.user +* .bak +* .patch +* .diff +* .REMOTE.* +* .BACKUP.* +* .BASE.* +* .LOCAL.* + +# +# IDE & other softwares +# +/ .settings/ +/.externalToolBuilders/* +# exclude in all levels +nbproject/ +.sync.ffs_db +*.kate-swp + +# +# Eclipse +# +*.pydevproject +.metadata +.gradle +tmp/ +*.tmp +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.project +.cproject diff --git a/modules/mod-aoe-loot/conf/mod_aoe_loot.conf.dist b/modules/mod-aoe-loot/conf/mod_aoe_loot.conf.dist new file mode 100644 index 0000000..8718059 --- /dev/null +++ b/modules/mod-aoe-loot/conf/mod_aoe_loot.conf.dist @@ -0,0 +1,26 @@ +# +# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# User has manually chosen to ignore the git-tests, so throw them a warning. +# This is done EACH compile so they can be alerted about the consequences. +# + +######################################## +# AoeLoot module configuration +######################################## +# +# AOELoot.Enable +# Description: Enables Module +# Default: 0 - (Disabled) +# 1 - (Enabled) +# + +AOELoot.Enable = 1 diff --git a/modules/mod-aoe-loot/data/.gitkeep b/modules/mod-aoe-loot/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/modules/mod-aoe-loot/data/sql/db-auth/base/.gitkeep b/modules/mod-aoe-loot/data/sql/db-auth/base/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/modules/mod-aoe-loot/data/sql/db-auth/updates/.gitkeep b/modules/mod-aoe-loot/data/sql/db-auth/updates/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/modules/mod-aoe-loot/data/sql/db-characters/base/.gitkeep b/modules/mod-aoe-loot/data/sql/db-characters/base/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/modules/mod-aoe-loot/data/sql/db-characters/updates/.gitkeep b/modules/mod-aoe-loot/data/sql/db-characters/updates/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/modules/mod-aoe-loot/data/sql/db-world/base/.gitkeep b/modules/mod-aoe-loot/data/sql/db-world/base/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/modules/mod-aoe-loot/data/sql/db-world/base/aoe_loot_acore_string.sql b/modules/mod-aoe-loot/data/sql/db-world/base/aoe_loot_acore_string.sql new file mode 100644 index 0000000..f8fb507 --- /dev/null +++ b/modules/mod-aoe-loot/data/sql/db-world/base/aoe_loot_acore_string.sql @@ -0,0 +1,5 @@ +SET @ENTRY:=50000; +DELETE FROM `acore_string` WHERE `entry` IN (@ENTRY+0, @ENTRY+1); +INSERT INTO `acore_string` (`entry`, `content_default`, `locale_koKR`, `locale_frFR`, `locale_deDE`, `locale_zhCN`, `locale_zhTW`, `locale_esES`, `locale_esMX`, `locale_ruRU`) VALUES +(@ENTRY+0, 'This server is running the |cff4CFF00Loot aoe|r module.', '', '', '', '', '', 'Este servidor está ejecutando el módulo |cff4CFF00Loot aoe|r.', 'Este servidor está ejecutando el módulo |cff4CFF00Loot aoe|r.', ''), +(@ENTRY+1, '|cff4CFF00[Loot aoe]|r Your items has been mailed to you.', '', '', '', '', '', '|cff4CFF00[Loot aoe]|r Sus artículos le han sido enviados por correo.', '|cff4CFF00[Loot aoe]|r Sus artículos le han sido enviados por correo.', ''); diff --git a/modules/mod-aoe-loot/data/sql/db-world/updates/.gitkeep b/modules/mod-aoe-loot/data/sql/db-world/updates/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/modules/mod-aoe-loot/include.sh b/modules/mod-aoe-loot/include.sh new file mode 100644 index 0000000..e69de29 diff --git a/modules/mod-aoe-loot/pull_request_template.md b/modules/mod-aoe-loot/pull_request_template.md new file mode 100644 index 0000000..21c9245 --- /dev/null +++ b/modules/mod-aoe-loot/pull_request_template.md @@ -0,0 +1,25 @@ + + +## Changes Proposed: +- +- + +## Issues Addressed: + +- Closes + +## SOURCE: + + +## Tests Performed: + +- +- + + +## How to Test the Changes: + + +1. +2. +3. diff --git a/modules/mod-aoe-loot/src/AoeLoot_SC.cpp b/modules/mod-aoe-loot/src/AoeLoot_SC.cpp new file mode 100644 index 0000000..0cea4d2 --- /dev/null +++ b/modules/mod-aoe-loot/src/AoeLoot_SC.cpp @@ -0,0 +1,130 @@ +/* + * This file is part of the AzerothCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "Log.h" +#include "ScriptMgr.h" +#include "Config.h" +#include "Chat.h" +#include "Player.h" +#include "ScriptedGossip.h" + +enum AoeLootString +{ + AOE_ACORE_STRING_MESSAGE = 50000, + AOE_ITEM_IN_THE_MAIL +}; + +class AoeLoot_Player : public PlayerScript +{ +public: + AoeLoot_Player() : PlayerScript("AoeLoot_Player") { } + + void OnLogin(Player* player) override + { + if (sConfigMgr->GetOption("AOELoot.Enable", true)) + { + ChatHandler(player->GetSession()).PSendSysMessage(AOE_ACORE_STRING_MESSAGE); + } + } + + bool CanSendErrorAlreadyLooted(Player* /*player*/) override + { + return true; + } + + void OnCreatureLootAOE(Player* player) + { + bool _enable = sConfigMgr->GetOption("AOELoot.Enable", true); + + if (player->GetGroup() || !_enable) + return; + + float range = 30.0f; + uint32 gold = 0; + + std::list creaturedie; + player->GetDeadCreatureListInGrid(creaturedie, range); + + for (auto const& _creature : creaturedie) + { + Loot* loot = &_creature->loot; + gold += loot->gold; + loot->gold = 0; + uint8 lootSlot = 0; + uint32 maxSlot = loot->GetMaxSlotInLootFor(player); + + for (uint32 i = 0; i < maxSlot; ++i) + { + if (LootItem* item = loot->LootItemInSlot(i, player)) + { + if (player->AddItem(item->itemid, item->count)) + { + player->SendNotifyLootItemRemoved(lootSlot); + player->SendLootRelease(player->GetLootGUID()); + } + else + { + player->SendItemRetrievalMail(item->itemid, item->count); + ChatHandler(player->GetSession()).SendSysMessage(AOE_ITEM_IN_THE_MAIL); + } + } + } + + if (!loot->empty()) + { + if (!_creature->IsAlive()) + { + _creature->AllLootRemovedFromCorpse(); + _creature->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); + loot->clear(); + + if (_creature->HasUnitFlag(UNIT_FLAG_SKINNABLE)) + { + _creature->RemoveUnitFlag(UNIT_FLAG_SKINNABLE); + } + } + } + else + { + _creature->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); + _creature->AllLootRemovedFromCorpse(); + } + } + + player->ModifyMoney(gold); + player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, gold); + WorldPacket data(SMSG_LOOT_MONEY_NOTIFY, 4 + 1); + data << uint32(gold); + data << uint8(1); + player->GetSession()->SendPacket(&data); + } + + void OnAfterCreatureLoot(Player* player) override + { + OnCreatureLootAOE(player); + } + + void OnAfterCreatureLootMoney(Player* player) override + { + OnCreatureLootAOE(player); + } +}; + +void AddSC_AoeLoot() +{ + new AoeLoot_Player(); +} diff --git a/modules/mod-aoe-loot/src/aoe_loot_loader.cpp b/modules/mod-aoe-loot/src/aoe_loot_loader.cpp new file mode 100644 index 0000000..8d760fa --- /dev/null +++ b/modules/mod-aoe-loot/src/aoe_loot_loader.cpp @@ -0,0 +1,25 @@ +/* + * This file is part of the AzerothCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +// From SC +void AddSC_AoeLoot(); + +// Add all +void Addmod_aoe_lootScripts() +{ + AddSC_AoeLoot(); +} diff --git a/modules/mod-arac/.github/workflows/core-build.yml b/modules/mod-arac/.github/workflows/core-build.yml new file mode 100644 index 0000000..921c9eb --- /dev/null +++ b/modules/mod-arac/.github/workflows/core-build.yml @@ -0,0 +1,12 @@ +name: core-build +on: + push: + branches: + - 'master' + pull_request: + +jobs: + build: + uses: azerothcore/reusable-workflows/.github/workflows/core_build_modules.yml@main + with: + module_repo: ${{ github.event.repository.name }} diff --git a/modules/mod-arac/LICENSE b/modules/mod-arac/LICENSE new file mode 100644 index 0000000..0ad25db --- /dev/null +++ b/modules/mod-arac/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/modules/mod-arac/Patch-A.MPQ b/modules/mod-arac/Patch-A.MPQ new file mode 100644 index 0000000000000000000000000000000000000000..21fc1ee44774c10b84eed87f509383cad3897b20 GIT binary patch literal 24745 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�f1rg*n;+6lxf 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 Pd0KgCWvK!Q(~y4y;Kjg6 literal 0 HcmV?d00001 diff --git a/modules/mod-arac/icons.png b/modules/mod-arac/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..80e154b30dcd647cb235f939c22da5d82f4d39d1 GIT binary patch literal 69712 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%0A>tipnS55}XLA*kG?X|Z= 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

2m4e&&x+1pv^g8IMO83B$@8Cxt0QmW) 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%0DYIFmZ*blEDpo^WLw8Yoz}0-w$&G0$EtaXbt< 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

)rTW*i*)B*q@$gRpk)qc}qk##HVD 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

NM5g!}Y%*p*vE0 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�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%0A>bp9b=g4cRZVBgo#0Qc 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≀3`=ejI#3%^7z2dJ;-qsN|~OXdy$ls@F6 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

<;3f4%?uwYK3X=K^T;}a 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


15IF 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

r#CIQSK1JOzNIU98g&kH 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

n1`+wOX@*3m6haJT?SMT8-5m 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∾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

+     * enum CreatureFamily
+     * {
+     *     CREATURE_FAMILY_NONE                = 0,    // TrinityCore only
+     *     CREATURE_FAMILY_WOLF                = 1,
+     *     CREATURE_FAMILY_CAT                 = 2,
+     *     CREATURE_FAMILY_SPIDER              = 3,
+     *     CREATURE_FAMILY_BEAR                = 4,
+     *     CREATURE_FAMILY_BOAR                = 5,
+     *     CREATURE_FAMILY_CROCOLISK           = 6,
+     *     CREATURE_FAMILY_CARRION_BIRD        = 7,
+     *     CREATURE_FAMILY_CRAB                = 8,
+     *     CREATURE_FAMILY_GORILLA             = 9,
+     *     CREATURE_FAMILY_HORSE_CUSTOM        = 10,   // Does not exist in DBC but used for horse like beasts in DB
+     *     CREATURE_FAMILY_RAPTOR              = 11,
+     *     CREATURE_FAMILY_TALLSTRIDER         = 12,
+     *     CREATURE_FAMILY_FELHUNTER           = 15,
+     *     CREATURE_FAMILY_VOIDWALKER          = 16,
+     *     CREATURE_FAMILY_SUCCUBUS            = 17,
+     *     CREATURE_FAMILY_DOOMGUARD           = 19,
+     *     CREATURE_FAMILY_SCORPID             = 20,
+     *     CREATURE_FAMILY_TURTLE              = 21,
+     *     CREATURE_FAMILY_IMP                 = 23,
+     *     CREATURE_FAMILY_BAT                 = 24,
+     *     CREATURE_FAMILY_HYENA               = 25,
+     *     CREATURE_FAMILY_BIRD_OF_PREY        = 26,   // Named CREATURE_FAMILY_OWL in Mangos
+     *     CREATURE_FAMILY_WIND_SERPENT        = 27,
+     *     CREATURE_FAMILY_REMOTE_CONTROL      = 28,
+     *     CREATURE_FAMILY_FELGUARD            = 29,   // This and below is TBC+
+     *     CREATURE_FAMILY_DRAGONHAWK          = 30,
+     *     CREATURE_FAMILY_RAVAGER             = 31,
+     *     CREATURE_FAMILY_WARP_STALKER        = 32,
+     *     CREATURE_FAMILY_SPOREBAT            = 33,
+     *     CREATURE_FAMILY_NETHER_RAY          = 34,
+     *     CREATURE_FAMILY_SERPENT             = 35,
+     *     CREATURE_FAMILY_SEA_LION            = 36,   // TBC only
+     *     CREATURE_FAMILY_MOTH                = 37,   // This and below is WotLK+
+     *     CREATURE_FAMILY_CHIMAERA            = 38,
+     *     CREATURE_FAMILY_DEVILSAUR           = 39,
+     *     CREATURE_FAMILY_GHOUL               = 40,
+     *     CREATURE_FAMILY_SILITHID            = 41,
+     *     CREATURE_FAMILY_WORM                = 42,
+     *     CREATURE_FAMILY_RHINO               = 43,
+     *     CREATURE_FAMILY_WASP                = 44,
+     *     CREATURE_FAMILY_CORE_HOUND          = 45,
+     *     CREATURE_FAMILY_SPIRIT_BEAST        = 46
+     * };
+     * 
+ * + * @return [CreatureFamily] creatureFamily + */ + int GetCreatureFamily(lua_State* L, Creature* creature) + { + uint32 entry = creature->GetEntry(); + +#if defined(TRINITY) || defined(AZEROTHCORE) + CreatureTemplate const* cInfo = sObjectMgr->GetCreatureTemplate(entry); + if (cInfo) + Eluna::Push(L, cInfo->family); +#else + CreatureInfo const* cInfo = ObjectMgr::GetCreatureTemplate(entry); + if (cInfo) + Eluna::Push(L, cInfo->Family); +#endif + return 1; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/ElunaCreatureAI.h b/modules/mod-eluna/src/LuaEngine/ElunaCreatureAI.h new file mode 100644 index 0000000..b03cbae --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ElunaCreatureAI.h @@ -0,0 +1,280 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#ifndef _ELUNA_CREATURE_AI_H +#define _ELUNA_CREATURE_AI_H + +#include "LuaEngine.h" + +#if defined TRINITY || AZEROTHCORE +struct ScriptedAI; +#else +class AggressorAI; +typedef AggressorAI ScriptedAI; +#endif + +struct ElunaCreatureAI : ScriptedAI +{ + // used to delay the spawn hook triggering on AI creation + bool justSpawned; + // used to delay movementinform hook (WP hook) + std::vector< std::pair > movepoints; +#if defined MANGOS || defined CMANGOS +#define me m_creature +#endif + + ElunaCreatureAI(Creature* creature) : ScriptedAI(creature), justSpawned(true) + { + } + ~ElunaCreatureAI() { } + + //Called at World update tick +#ifndef TRINITY + void UpdateAI(const uint32 diff) override +#else + void UpdateAI(uint32 diff) override +#endif + { +#ifdef TRINITY + //Spawns are handled by Creature.cpp - in function Creature::Update() +#else + if (justSpawned) + { + justSpawned = false; + + JustRespawned(); + } +#endif + + if (!movepoints.empty()) + { + for (auto& point : movepoints) + { + if (!sEluna->MovementInform(me, point.first, point.second)) + ScriptedAI::MovementInform(point.first, point.second); + } + movepoints.clear(); + } + + if (!sEluna->UpdateAI(me, diff)) + { +#if defined TRINITY || AZEROTHCORE + if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC)) + ScriptedAI::UpdateAI(diff); +#else + if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE)) + ScriptedAI::UpdateAI(diff); +#endif + } + } + +#if defined TRINITY || AZEROTHCORE + // Called for reaction when initially engaged - this will always happen _after_ JustEnteredCombat + // Called at creature aggro either by MoveInLOS or Attack Start + void JustEngagedWith(Unit* target) override + { + if (!sEluna->EnterCombat(me, target)) + ScriptedAI::JustEngagedWith(target); + } +#else + //Called for reaction at enter to combat if not in combat yet (enemy can be NULL) + //Called at creature aggro either by MoveInLOS or Attack Start + void EnterCombat(Unit* target) override + { + if (!sEluna->EnterCombat(me, target)) + ScriptedAI::EnterCombat(target); + } +#endif + + // Called at any Damage from any attacker (before damage apply) +#if defined AZEROTHCORE + void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask) override +#elif defined TRINITY + void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType damageType, SpellInfo const* spellInfo) override +#else + void DamageTaken(Unit* attacker, uint32& damage) override +#endif + { + if (!sEluna->DamageTaken(me, attacker, damage)) + { +#if defined AZEROTHCORE + ScriptedAI::DamageTaken(attacker, damage, damagetype, damageSchoolMask); +#elif defined TRINITY + ScriptedAI::DamageTaken(attacker, damage, damageType, spellInfo); +#else + ScriptedAI::DamageTaken(attacker, damage); +#endif + } + } + + //Called at creature death + void JustDied(Unit* killer) override + { + if (!sEluna->JustDied(me, killer)) + ScriptedAI::JustDied(killer); + } + + //Called at creature killing another unit + void KilledUnit(Unit* victim) override + { + if (!sEluna->KilledUnit(me, victim)) + ScriptedAI::KilledUnit(victim); + } + + // Called when the creature summon successfully other creature + void JustSummoned(Creature* summon) override + { + if (!sEluna->JustSummoned(me, summon)) + ScriptedAI::JustSummoned(summon); + } + + // Called when a summoned creature is despawned + void SummonedCreatureDespawn(Creature* summon) override + { + if (!sEluna->SummonedCreatureDespawn(me, summon)) + ScriptedAI::SummonedCreatureDespawn(summon); + } + + //Called at waypoint reached or PointMovement end + void MovementInform(uint32 type, uint32 id) override + { + // delayed since hook triggers before actually reaching the point + // and starting new movement would bug + movepoints.push_back(std::make_pair(type, id)); + } + + // Called before EnterCombat even before the creature is in combat. + void AttackStart(Unit* target) override + { + if (!sEluna->AttackStart(me, target)) + ScriptedAI::AttackStart(target); + } + + // Called for reaction at stopping attack at no attackers or targets + void EnterEvadeMode(EvadeReason /*why*/) override + { + if (!sEluna->EnterEvadeMode(me)) + ScriptedAI::EnterEvadeMode(); + } + +#ifdef TRINITY + // Called when creature appears in the world (spawn, respawn, grid load etc...) + void JustAppeared() override + { + if (!sEluna->JustRespawned(me)) + ScriptedAI::JustAppeared(); + } +#else + // Called when creature is spawned or respawned (for reseting variables) + void JustRespawned() override + { + if (!sEluna->JustRespawned(me)) + ScriptedAI::JustRespawned(); + } +#endif + + // Called at reaching home after evade + void JustReachedHome() override + { + if (!sEluna->JustReachedHome(me)) + ScriptedAI::JustReachedHome(); + } + + // Called at text emote receive from player + void ReceiveEmote(Player* player, uint32 emoteId) override + { + if (!sEluna->ReceiveEmote(me, player, emoteId)) + ScriptedAI::ReceiveEmote(player, emoteId); + } + + // called when the corpse of this creature gets removed + void CorpseRemoved(uint32& respawnDelay) override + { + if (!sEluna->CorpseRemoved(me, respawnDelay)) + ScriptedAI::CorpseRemoved(respawnDelay); + } + +#if !defined TRINITY && !AZEROTHCORE + // Enables use of MoveInLineOfSight + bool IsVisible(Unit* who) const override + { + return true; + } +#endif + + void MoveInLineOfSight(Unit* who) override + { + if (!sEluna->MoveInLineOfSight(me, who)) + ScriptedAI::MoveInLineOfSight(who); + } + + // Called when hit by a spell +#if defined TRINITY + void SpellHit(WorldObject* caster, SpellInfo const* spell) override +#else + void SpellHit(Unit* caster, SpellInfo const* spell) override +#endif + { + if (!sEluna->SpellHit(me, caster, spell)) + ScriptedAI::SpellHit(caster, spell); + } + + // Called when spell hits a target +#if defined TRINITY + void SpellHitTarget(WorldObject* target, SpellInfo const* spell) override +#else + void SpellHitTarget(Unit* target, SpellInfo const* spell) override +#endif + { + if (!sEluna->SpellHitTarget(me, target, spell)) + ScriptedAI::SpellHitTarget(target, spell); + } + +#if defined TRINITY || AZEROTHCORE + +#if defined TRINITY || AZEROTHCORE + // Called when the creature is summoned successfully by other creature + void IsSummonedBy(WorldObject* summoner) override + { + if (!summoner->ToUnit() || !sEluna->OnSummoned(me, summoner->ToUnit())) + ScriptedAI::IsSummonedBy(summoner); + } +#else + // Called when the creature is summoned successfully by other creature + void IsSummonedBy(Unit* summoner) override + { + if (!sEluna->OnSummoned(me, summoner)) + ScriptedAI::IsSummonedBy(summoner); + } +#endif + + void SummonedCreatureDies(Creature* summon, Unit* killer) override + { + if (!sEluna->SummonedCreatureDies(me, summon, killer)) + ScriptedAI::SummonedCreatureDies(summon, killer); + } + + // Called when owner takes damage + void OwnerAttackedBy(Unit* attacker) override + { + if (!sEluna->OwnerAttackedBy(me, attacker)) + ScriptedAI::OwnerAttackedBy(attacker); + } + + // Called when owner attacks something + void OwnerAttacked(Unit* target) override + { + if (!sEluna->OwnerAttacked(me, target)) + ScriptedAI::OwnerAttacked(target); + } +#endif + +#if defined MANGOS || defined CMANGOS +#undef me +#endif +}; + +#endif diff --git a/modules/mod-eluna/src/LuaEngine/ElunaEventMgr.cpp b/modules/mod-eluna/src/LuaEngine/ElunaEventMgr.cpp new file mode 100644 index 0000000..c5309a8 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ElunaEventMgr.cpp @@ -0,0 +1,160 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#include "ElunaEventMgr.h" +#include "LuaEngine.h" +#include "Object.h" + +extern "C" +{ +#include "lua.h" +#include "lauxlib.h" +}; + +ElunaEventProcessor::ElunaEventProcessor(Eluna** _E, WorldObject* _obj) : m_time(0), obj(_obj), E(_E) +{ + // can be called from multiple threads + if (obj) + { + EventMgr::Guard guard((*E)->eventMgr->GetLock()); + (*E)->eventMgr->processors.insert(this); + } +} + +ElunaEventProcessor::~ElunaEventProcessor() +{ + // can be called from multiple threads + { + LOCK_ELUNA; + RemoveEvents_internal(); + } + + if (obj && Eluna::IsInitialized()) + { + EventMgr::Guard guard((*E)->eventMgr->GetLock()); + (*E)->eventMgr->processors.erase(this); + } +} + +void ElunaEventProcessor::Update(uint32 diff) +{ + m_time += diff; + for (EventList::iterator it = eventList.begin(); it != eventList.end() && it->first <= m_time; it = eventList.begin()) + { + LuaEvent* luaEvent = it->second; + eventList.erase(it); + + if (luaEvent->state != LUAEVENT_STATE_ERASE) + eventMap.erase(luaEvent->funcRef); + + if (luaEvent->state == LUAEVENT_STATE_RUN) + { + uint32 delay = luaEvent->delay; + bool remove = luaEvent->repeats == 1; + if (!remove) + AddEvent(luaEvent); // Reschedule before calling incase RemoveEvents used + + // Call the timed event + (*E)->OnTimedEvent(luaEvent->funcRef, delay, luaEvent->repeats ? luaEvent->repeats-- : luaEvent->repeats, obj); + + if (!remove) + continue; + } + + // Event should be deleted (executed last time or set to be aborted) + RemoveEvent(luaEvent); + } +} + +void ElunaEventProcessor::SetStates(LuaEventState state) +{ + for (EventList::iterator it = eventList.begin(); it != eventList.end(); ++it) + it->second->SetState(state); + if (state == LUAEVENT_STATE_ERASE) + eventMap.clear(); +} + +void ElunaEventProcessor::RemoveEvents_internal() +{ + //if (!final) + //{ + // for (EventList::iterator it = eventList.begin(); it != eventList.end(); ++it) + // it->second->to_Abort = true; + // return; + //} + + for (EventList::iterator it = eventList.begin(); it != eventList.end(); ++it) + RemoveEvent(it->second); + + eventList.clear(); + eventMap.clear(); +} + +void ElunaEventProcessor::SetState(int eventId, LuaEventState state) +{ + if (eventMap.find(eventId) != eventMap.end()) + eventMap[eventId]->SetState(state); + if (state == LUAEVENT_STATE_ERASE) + eventMap.erase(eventId); +} + +void ElunaEventProcessor::AddEvent(LuaEvent* luaEvent) +{ + luaEvent->GenerateDelay(); + eventList.insert(std::pair(m_time + luaEvent->delay, luaEvent)); + eventMap[luaEvent->funcRef] = luaEvent; +} + +void ElunaEventProcessor::AddEvent(int funcRef, uint32 min, uint32 max, uint32 repeats) +{ + AddEvent(new LuaEvent(funcRef, min, max, repeats)); +} + +void ElunaEventProcessor::RemoveEvent(LuaEvent* luaEvent) +{ + // Unreference if should and if Eluna was not yet uninitialized and if the lua state still exists + if (luaEvent->state != LUAEVENT_STATE_ERASE && Eluna::IsInitialized() && (*E)->HasLuaState()) + { + // Free lua function ref + luaL_unref((*E)->L, LUA_REGISTRYINDEX, luaEvent->funcRef); + } + delete luaEvent; +} + +EventMgr::EventMgr(Eluna** _E) : globalProcessor(new ElunaEventProcessor(_E, NULL)), E(_E) +{ +} + +EventMgr::~EventMgr() +{ + { + Guard guard(GetLock()); + if (!processors.empty()) + for (ProcessorSet::const_iterator it = processors.begin(); it != processors.end(); ++it) // loop processors + (*it)->RemoveEvents_internal(); + globalProcessor->RemoveEvents_internal(); + } + delete globalProcessor; + globalProcessor = NULL; +} + +void EventMgr::SetStates(LuaEventState state) +{ + Guard guard(GetLock()); + if (!processors.empty()) + for (ProcessorSet::const_iterator it = processors.begin(); it != processors.end(); ++it) // loop processors + (*it)->SetStates(state); + globalProcessor->SetStates(state); +} + +void EventMgr::SetState(int eventId, LuaEventState state) +{ + Guard guard(GetLock()); + if (!processors.empty()) + for (ProcessorSet::const_iterator it = processors.begin(); it != processors.end(); ++it) // loop processors + (*it)->SetState(eventId, state); + globalProcessor->SetState(eventId, state); +} diff --git a/modules/mod-eluna/src/LuaEngine/ElunaEventMgr.h b/modules/mod-eluna/src/LuaEngine/ElunaEventMgr.h new file mode 100644 index 0000000..013c8ea --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ElunaEventMgr.h @@ -0,0 +1,112 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef _ELUNA_EVENT_MGR_H +#define _ELUNA_EVENT_MGR_H + +#include "ElunaUtility.h" +#include "Common.h" +#ifdef TRINITY +#include "Random.h" +#else +#include "Util.h" +#endif +#include + +#if defined(TRINITY) || AZEROTHCORE +#include "Define.h" +#else +#include "Platform/Define.h" +#endif + +class Eluna; +class EventMgr; +class ElunaEventProcessor; +class WorldObject; + +enum LuaEventState +{ + LUAEVENT_STATE_RUN, // On next call run the function normally + LUAEVENT_STATE_ABORT, // On next call unregisters reffed function and erases the data + LUAEVENT_STATE_ERASE, // On next call just erases the data +}; + +struct LuaEvent +{ + LuaEvent(int _funcRef, uint32 _min, uint32 _max, uint32 _repeats) : + min(_min), max(_max), delay(0), repeats(_repeats), funcRef(_funcRef), state(LUAEVENT_STATE_RUN) + { + } + + void SetState(LuaEventState _state) + { + if (state != LUAEVENT_STATE_ERASE) + state = _state; + } + + void GenerateDelay() + { + delay = urand(min, max); + } + + uint32 min; // Minimum delay between event calls + uint32 max; // Maximum delay between event calls + uint32 delay; // The currently used waiting time + uint32 repeats; // Amount of repeats to make, 0 for infinite + int funcRef; // Lua function reference ID, also used as event ID + LuaEventState state; // State for next call +}; + +class ElunaEventProcessor +{ + friend class EventMgr; + +public: + typedef std::multimap EventList; + typedef std::unordered_map EventMap; + + ElunaEventProcessor(Eluna** _E, WorldObject* _obj); + ~ElunaEventProcessor(); + + void Update(uint32 diff); + // removes all timed events on next tick or at tick end + void SetStates(LuaEventState state); + // set the event to be removed when executing + void SetState(int eventId, LuaEventState state); + void AddEvent(int funcRef, uint32 min, uint32 max, uint32 repeats); + EventMap eventMap; + +private: + void RemoveEvents_internal(); + void AddEvent(LuaEvent* luaEvent); + void RemoveEvent(LuaEvent* luaEvent); + EventList eventList; + uint64 m_time; + WorldObject* obj; + Eluna** E; +}; + +class EventMgr : public ElunaUtil::Lockable +{ +public: + typedef std::unordered_set ProcessorSet; + ProcessorSet processors; + ElunaEventProcessor* globalProcessor; + Eluna** E; + + EventMgr(Eluna** _E); + ~EventMgr(); + + // Set the state of all timed events + // Execute only in safe env + void SetStates(LuaEventState state); + + // Sets the eventId's state in all processors + // Execute only in safe env + void SetState(int eventId, LuaEventState state); +}; + +#endif diff --git a/modules/mod-eluna/src/LuaEngine/ElunaIncludes.h b/modules/mod-eluna/src/LuaEngine/ElunaIncludes.h new file mode 100644 index 0000000..26f8c0c --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ElunaIncludes.h @@ -0,0 +1,159 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef _ELUNA_INCLUDES_H +#define _ELUNA_INCLUDES_H + +// Required +#include "AccountMgr.h" +#include "AuctionHouseMgr.h" +#include "Cell.h" +#include "CellImpl.h" +#include "Chat.h" +#include "Channel.h" +#include "DBCStores.h" +#include "GameEventMgr.h" +#include "GossipDef.h" +#include "GridNotifiers.h" +#include "GridNotifiersImpl.h" +#include "Group.h" +#include "Guild.h" +#include "GuildMgr.h" +#include "Language.h" +#include "Mail.h" +#include "ObjectAccessor.h" +#include "ObjectMgr.h" +#include "Opcodes.h" +#include "Player.h" +#include "Pet.h" +#include "ReputationMgr.h" +#include "ScriptMgr.h" +#include "Spell.h" +#include "SpellAuras.h" +#include "SpellMgr.h" +#include "TemporarySummon.h" +#include "WorldPacket.h" +#include "WorldSession.h" + +#if defined TRINITY +#include "SpellHistory.h" +#endif + +#if defined AZEROTHCORE +#include "MapMgr.h" +#else +#include "MapManager.h" +#endif + +#if defined TRINITY || defined AZEROTHCORE +#include "Config.h" +#include "GameEventMgr.h" +#include "GitRevision.h" +#include "GroupMgr.h" +#include "ScriptedCreature.h" +#include "SpellInfo.h" +#include "WeatherMgr.h" +#include "Battleground.h" +#include "MotionMaster.h" +#include "DatabaseEnv.h" +#include "Bag.h" +#else +#include "Config/Config.h" +#ifdef CMANGOS +#include "AI/AggressorAI.h" +#else +#include "AggressorAI.h" +#endif +#include "BattleGroundMgr.h" +#include "SQLStorages.h" +#include "revision.h" +#endif + +#if (!defined(TBC) && !defined(CLASSIC)) +#include "Vehicle.h" +#endif + +#ifndef CLASSIC +#include "ArenaTeam.h" +#endif + +#ifndef CLASSIC +typedef Opcodes OpcodesList; +#endif + +/* + * Note: if you add or change a CORE_NAME or CORE_VERSION #define, + * please update LuaGlobalFunctions::GetCoreName or LuaGlobalFunctions::GetCoreVersion documentation example string. + */ +#ifdef MANGOS +#define CORE_NAME "MaNGOS" +#define CORE_VERSION REVISION_NR +#endif + +#ifdef CMANGOS +#define CORE_NAME "cMaNGOS" +#define CORE_VERSION REVISION_DATE " " REVISION_TIME +#endif + +#ifdef TRINITY +#define CORE_NAME "TrinityCore" +#define REGEN_TIME_FULL +#endif + +#ifdef AZEROTHCORE +#define CORE_NAME "AzerothCore" +#endif + +#if defined TRINITY || defined AZEROTHCORE +#define CORE_VERSION (GitRevision::GetFullVersion()) +#define eWorld (sWorld) +#define eMapMgr (sMapMgr) +#define eConfigMgr (sConfigMgr) +#define eGuildMgr (sGuildMgr) +#define eObjectMgr (sObjectMgr) +#define eAccountMgr (sAccountMgr) +#define eAuctionMgr (sAuctionMgr) +#define eGameEventMgr (sGameEventMgr) +#define eObjectAccessor() ObjectAccessor:: +#endif + +#ifdef CATA +#define NUM_MSG_TYPES NUM_OPCODE_HANDLERS +#endif + +#if !defined TRINITY && !AZEROTHCORE +#define eWorld (&sWorld) +#define eMapMgr (&sMapMgr) +#define eConfigMgr (&sConfig) +#define eGuildMgr (&sGuildMgr) +#define eObjectMgr (&sObjectMgr) +#define eAccountMgr (&sAccountMgr) +#define eAuctionMgr (&sAuctionMgr) +#define eGameEventMgr (&sGameEventMgr) +#define eObjectAccessor() sObjectAccessor. +#define SERVER_MSG_STRING SERVER_MSG_CUSTOM +#define TOTAL_LOCALES MAX_LOCALE +#define TARGETICONCOUNT TARGET_ICON_COUNT +#define MAX_TALENT_SPECS MAX_TALENT_SPEC_COUNT +#define TEAM_NEUTRAL TEAM_INDEX_NEUTRAL + +#if defined(TBC) || defined(WOTLK) || defined(CATA) +#define PLAYER_FIELD_LIFETIME_HONORABLE_KILLS PLAYER_FIELD_LIFETIME_HONORBALE_KILLS +#endif + +#ifdef TBC +#define SPELL_AURA_MOD_KILL_XP_PCT SPELL_AURA_MOD_XP_PCT +#endif + +#if defined(CATA) || defined(MISTS) || (defined(WOTLK) && !defined(MANGOS)) +#define UNIT_BYTE2_FLAG_SANCTUARY UNIT_BYTE2_FLAG_SUPPORTABLE +#endif + +typedef TemporarySummon TempSummon; +typedef SpellEntry SpellInfo; +#endif // TRINITY + +#endif // _ELUNA_INCLUDES_H diff --git a/modules/mod-eluna/src/LuaEngine/ElunaInstanceAI.cpp b/modules/mod-eluna/src/LuaEngine/ElunaInstanceAI.cpp new file mode 100644 index 0000000..3f58012 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ElunaInstanceAI.cpp @@ -0,0 +1,236 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "ElunaInstanceAI.h" +#include "ElunaUtility.h" +#include "lmarshal.h" + + +#ifndef TRINITY +void ElunaInstanceAI::Initialize() +{ + LOCK_ELUNA; + + ASSERT(!sEluna->HasInstanceData(instance)); + + // Create a new table for instance data. + lua_State* L = sEluna->L; + lua_newtable(L); + sEluna->CreateInstanceData(instance); + + sEluna->OnInitialize(this); +} +#endif + +void ElunaInstanceAI::Load(const char* data) +{ + LOCK_ELUNA; + + // If we get passed NULL (i.e. `Reload` was called) then use + // the last known save data (or maybe just an empty string). + if (!data) + { + data = lastSaveData.c_str(); + } + else // Otherwise, copy the new data into our buffer. + { + lastSaveData.assign(data); + } + + if (data[0] == '\0') + { + ASSERT(!sEluna->HasInstanceData(instance)); + + // Create a new table for instance data. + lua_State* L = sEluna->L; + lua_newtable(L); + sEluna->CreateInstanceData(instance); + + sEluna->OnLoad(this); + // Stack: (empty) + return; + } + + size_t decodedLength; + const unsigned char* decodedData = ElunaUtil::DecodeData(data, &decodedLength); + lua_State* L = sEluna->L; + + if (decodedData) + { + // Stack: (empty) + + lua_pushcfunction(L, mar_decode); + lua_pushlstring(L, (const char*)decodedData, decodedLength); + // Stack: mar_decode, decoded_data + + // Call `mar_decode` and check for success. + if (lua_pcall(L, 1, 1, 0) == 0) + { + // Stack: data + // Only use the data if it's a table. + if (lua_istable(L, -1)) + { + sEluna->CreateInstanceData(instance); + // Stack: (empty) + sEluna->OnLoad(this); + // WARNING! lastSaveData might be different after `OnLoad` if the Lua code saved data. + } + else + { + ELUNA_LOG_ERROR("Error while loading instance data: Expected data to be a table (type 5), got type {} instead", lua_type(L, -1)); + lua_pop(L, 1); + // Stack: (empty) + +#ifndef TRINITY + Initialize(); +#endif + } + } + else + { + // Stack: error_message + ELUNA_LOG_ERROR("Error while parsing instance data with lua-marshal: {}", lua_tostring(L, -1)); + lua_pop(L, 1); + // Stack: (empty) + +#ifndef TRINITY + Initialize(); +#endif + } + + delete[] decodedData; + } + else + { + ELUNA_LOG_ERROR("Error while decoding instance data: Data is not valid base-64"); + +#ifndef TRINITY + Initialize(); +#endif + } +} + +const char* ElunaInstanceAI::Save() const +{ + LOCK_ELUNA; + lua_State* L = sEluna->L; + // Stack: (empty) + + /* + * Need to cheat because this method actually does modify this instance, + * even though it's declared as `const`. + * + * Declaring virtual methods as `const` is BAD! + * Don't dictate to children that their methods must be pure. + */ + ElunaInstanceAI* self = const_cast(this); + + lua_pushcfunction(L, mar_encode); + sEluna->PushInstanceData(L, self, false); + // Stack: mar_encode, instance_data + + if (lua_pcall(L, 1, 1, 0) != 0) + { + // Stack: error_message + ELUNA_LOG_ERROR("Error while saving: {}", lua_tostring(L, -1)); + lua_pop(L, 1); + return NULL; + } + + // Stack: data + size_t dataLength; + const unsigned char* data = (const unsigned char*)lua_tolstring(L, -1, &dataLength); + ElunaUtil::EncodeData(data, dataLength, self->lastSaveData); + + lua_pop(L, 1); + // Stack: (empty) + + return lastSaveData.c_str(); +} + +uint32 ElunaInstanceAI::GetData(uint32 key) const +{ + LOCK_ELUNA; + lua_State* L = sEluna->L; + // Stack: (empty) + + sEluna->PushInstanceData(L, const_cast(this), false); + // Stack: instance_data + + Eluna::Push(L, key); + // Stack: instance_data, key + + lua_gettable(L, -2); + // Stack: instance_data, value + + uint32 value = Eluna::CHECKVAL(L, -1, 0); + lua_pop(L, 2); + // Stack: (empty) + + return value; +} + +void ElunaInstanceAI::SetData(uint32 key, uint32 value) +{ + LOCK_ELUNA; + lua_State* L = sEluna->L; + // Stack: (empty) + + sEluna->PushInstanceData(L, this, false); + // Stack: instance_data + + Eluna::Push(L, key); + Eluna::Push(L, value); + // Stack: instance_data, key, value + + lua_settable(L, -3); + // Stack: instance_data + + lua_pop(L, 1); + // Stack: (empty) +} + +uint64 ElunaInstanceAI::GetData64(uint32 key) const +{ + LOCK_ELUNA; + lua_State* L = sEluna->L; + // Stack: (empty) + + sEluna->PushInstanceData(L, const_cast(this), false); + // Stack: instance_data + + Eluna::Push(L, key); + // Stack: instance_data, key + + lua_gettable(L, -2); + // Stack: instance_data, value + + uint64 value = Eluna::CHECKVAL(L, -1, 0); + lua_pop(L, 2); + // Stack: (empty) + + return value; +} + +void ElunaInstanceAI::SetData64(uint32 key, uint64 value) +{ + LOCK_ELUNA; + lua_State* L = sEluna->L; + // Stack: (empty) + + sEluna->PushInstanceData(L, this, false); + // Stack: instance_data + + Eluna::Push(L, key); + Eluna::Push(L, value); + // Stack: instance_data, key, value + + lua_settable(L, -3); + // Stack: instance_data + + lua_pop(L, 1); + // Stack: (empty) +} diff --git a/modules/mod-eluna/src/LuaEngine/ElunaInstanceAI.h b/modules/mod-eluna/src/LuaEngine/ElunaInstanceAI.h new file mode 100644 index 0000000..4da8323 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ElunaInstanceAI.h @@ -0,0 +1,157 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef _ELUNA_INSTANCE_DATA_H +#define _ELUNA_INSTANCE_DATA_H + +#include "LuaEngine.h" +#if defined(TRINITY) || AZEROTHCORE +#include "InstanceScript.h" +#else +#include "InstanceData.h" +#endif + +#ifdef TRINITY +#include "Map.h" +#endif + +/* + * This class is a small wrapper around `InstanceData`, + * allowing instances to be scripted with Eluna. + * + * + * Note 1 + * ====== + * + * Instances of `ElunaInstanceAI` are owned by the core, so they + * are not deleted when Eluna is reloaded. Thus `Load` is only called + * by the core once, no matter how many times Eluna is reloaded. + * + * However, when Eluna reloads, all instance data in Eluna is lost. + * So the solution is as follows: + * + * 1. Store the last save data in the member var `lastSaveData`. + * + * At first this is just the data given to us by the core when it calls `Load`, + * but later on once we start saving new data this is from Eluna. + * + * 2. When retrieving instance data from Eluna, check if it's missing. + * + * The data will be missing if Eluna is reloaded, since a new Lua state is created. + * + * 3. If it *is* missing, call `Reload`. + * + * This reloads the last known instance save data into Eluna, and calls the appropriate hooks. + * + * + * Note 2 + * ====== + * + * CMaNGOS expects some of these methods to be `const`. However, any of these + * methods are free to call `Save`, resulting in mutation of `lastSaveData`. + * + * Therefore, none of the hooks are `const`-safe, and `const_cast` is used + * to escape from these restrictions. + */ +class ElunaInstanceAI : public InstanceData +{ +private: + // The last save data to pass through this class, + // either through `Load` or `Save`. + std::string lastSaveData; + +public: +#ifdef TRINITY + ElunaInstanceAI(Map* map) : InstanceData(map->ToInstanceMap()) + { + } +#else + ElunaInstanceAI(Map* map) : InstanceData(map) + { + } +#endif + +#ifndef TRINITY + void Initialize() override; +#endif + + /* + * These are responsible for serializing/deserializing the instance's + * data table to/from the core. + */ + void Load(const char* data) override; +#if defined TRINITY || AZEROTHCORE + // Simply calls Save, since the functions are a bit different in name and data types on different cores + std::string GetSaveData() override + { + return Save(); + } + const char* Save() const; +#else + const char* Save() const override; +#endif + + + /* + * Calls `Load` with the last save data that was passed to + * or from Eluna. + * + * See: big documentation blurb at the top of this class. + */ + void Reload() + { + Load(NULL); + } + + /* + * These methods allow non-Lua scripts (e.g. DB, C++) to get/set instance data. + */ + uint32 GetData(uint32 key) const override; + void SetData(uint32 key, uint32 value) override; + + uint64 GetData64(uint32 key) const override; + void SetData64(uint32 key, uint64 value) override; + + /* + * These methods are just thin wrappers around Eluna. + */ + void Update(uint32 diff) override + { + // If Eluna is reloaded, it will be missing our instance data. + // Reload here instead of waiting for the next hook call (possibly never). + // This avoids having to have an empty Update hook handler just to trigger the reload. + if (!sEluna->HasInstanceData(instance)) + Reload(); + + sEluna->OnUpdateInstance(this, diff); + } + + bool IsEncounterInProgress() const override + { + return sEluna->OnCheckEncounterInProgress(const_cast(this)); + } + + void OnPlayerEnter(Player* player) override + { + sEluna->OnPlayerEnterInstance(this, player); + } + +#if defined TRINITY || AZEROTHCORE + void OnGameObjectCreate(GameObject* gameobject) override +#else + void OnObjectCreate(GameObject* gameobject) override +#endif + { + sEluna->OnGameObjectCreate(this, gameobject); + } + + void OnCreatureCreate(Creature* creature) override + { + sEluna->OnCreatureCreate(this, creature); + } +}; + +#endif // _ELUNA_INSTANCE_DATA_H diff --git a/modules/mod-eluna/src/LuaEngine/ElunaQueryMethods.h b/modules/mod-eluna/src/LuaEngine/ElunaQueryMethods.h new file mode 100644 index 0000000..17da0ee --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ElunaQueryMethods.h @@ -0,0 +1,369 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef QUERYMETHODS_H +#define QUERYMETHODS_H + +#if defined TRINITY || defined AZEROTHCORE +#define RESULT (*result) +#else +#define RESULT result +#endif + +/*** + * The result of a database query. + * + * E.g. the return value of [Global:WorldDBQuery]. + * + * Inherits all methods from: none + */ +namespace LuaQuery +{ + static void CheckFields(lua_State* L, ElunaQuery* result) + { + uint32 field = Eluna::CHECKVAL(L, 2); + uint32 count = RESULT->GetFieldCount(); + if (field >= count) + { + char arr[256]; + sprintf(arr, "trying to access invalid field index %u. There are %u fields available and the indexes start from 0", field, count); + luaL_argerror(L, 2, arr); + } + } + + /** + * Returns `true` if the specified column of the current row is `NULL`, otherwise `false`. + * + * @param uint32 column + * @return bool isNull + */ + int IsNull(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, RESULT->Fetch()[col].IsNull()); +#else + Eluna::Push(L, RESULT->Fetch()[col].IsNULL()); +#endif + return 1; + } + + /** + * Returns the number of columns in the result set. + * + * @return uint32 columnCount + */ + int GetColumnCount(lua_State* L, ElunaQuery* result) + { + Eluna::Push(L, RESULT->GetFieldCount()); + return 1; + } + + /** + * Returns the number of rows in the result set. + * + * @return uint32 rowCount + */ + int GetRowCount(lua_State* L, ElunaQuery* result) + { + if (RESULT->GetRowCount() > (uint32)-1) + Eluna::Push(L, (uint32)-1); + else + Eluna::Push(L, (uint32)(RESULT->GetRowCount())); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to a boolean. + * + * @param uint32 column + * @return bool data + */ + int GetBool(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to an unsigned 8-bit integer. + * + * @param uint32 column + * @return uint8 data + */ + int GetUInt8(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to an unsigned 16-bit integer. + * + * @param uint32 column + * @return uint16 data + */ + int GetUInt16(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to an unsigned 32-bit integer. + * + * @param uint32 column + * @return uint32 data + */ + int GetUInt32(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to an unsigned 64-bit integer. + * + * @param uint32 column + * @return uint64 data + */ + int GetUInt64(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to a signed 8-bit integer. + * + * @param uint32 column + * @return int8 data + */ + int GetInt8(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to a signed 16-bit integer. + * + * @param uint32 column + * @return int16 data + */ + int GetInt16(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to a signed 32-bit integer. + * + * @param uint32 column + * @return int32 data + */ + int GetInt32(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to a signed 64-bit integer. + * + * @param uint32 column + * @return int64 data + */ + int GetInt64(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to a 32-bit floating point value. + * + * @param uint32 column + * @return float data + */ + int GetFloat(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to a 64-bit floating point value. + * + * @param uint32 column + * @return double data + */ + int GetDouble(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Returns the data in the specified column of the current row, casted to a string. + * + * @param uint32 column + * @return string data + */ + int GetString(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].Get()); + return 1; + } + + /** + * Advances the [ElunaQuery] to the next row in the result set. + * + * *Do not* call this immediately after a query, or you'll skip the first row. + * + * Returns `false` if there was no new row, otherwise `true`. + * + * @return bool hadNextRow + */ + int NextRow(lua_State* L, ElunaQuery* result) + { + Eluna::Push(L, RESULT->NextRow()); + return 1; + } + + /** + * Returns a table from the current row where keys are field names and values are the row's values. + * + * All numerical values will be numbers and everything else is returned as a string. + * + * **For example,** the query: + * + * SELECT entry, name FROM creature_template + * + * would result in a table like: + * + * { entry = 123, name = "some creature name" } + * + * To move to next row use [ElunaQuery:NextRow]. + * + * @return table rowData : table filled with row columns and data where `T[column] = data` + */ + int GetRow(lua_State* L, ElunaQuery* result) + { + uint32 col = RESULT->GetFieldCount(); + Field* row = RESULT->Fetch(); + + lua_createtable(L, 0, col); + int tbl = lua_gettop(L); + +#if !defined TRINITY && !AZEROTHCORE + const QueryFieldNames& names = RESULT->GetFieldNames(); +#endif + + for (uint32 i = 0; i < col; ++i) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, RESULT->GetFieldName(i)); + + std::string _str = row[i].Get(); + const char* str = _str.c_str(); + if (row[i].IsNull() || !str) + Eluna::Push(L); + else + { + // MYSQL_TYPE_LONGLONG Interpreted as string for lua + switch (row[i].GetType()) + { +#if defined TRINITY || AZEROTHCORE + case DatabaseFieldTypes::Int8: + case DatabaseFieldTypes::Int16: + case DatabaseFieldTypes::Int32: + case DatabaseFieldTypes::Int64: + case DatabaseFieldTypes::Float: + case DatabaseFieldTypes::Double: +#else + case MYSQL_TYPE_TINY: + case MYSQL_TYPE_YEAR: + case MYSQL_TYPE_SHORT: + case MYSQL_TYPE_INT24: + case MYSQL_TYPE_LONG: + case MYSQL_TYPE_LONGLONG: + case MYSQL_TYPE_BIT: + case MYSQL_TYPE_FLOAT: + case MYSQL_TYPE_DOUBLE: + case MYSQL_TYPE_DECIMAL: + case MYSQL_TYPE_NEWDECIMAL: +#endif + Eluna::Push(L, strtod(str, NULL)); + break; + default: + Eluna::Push(L, str); + break; + } + } +#else + Eluna::Push(L, names[i]); + + const char* str = row[i].GetString(); + if (row[i].IsNULL() || !str) + Eluna::Push(L); + else + { + // MYSQL_TYPE_LONGLONG Interpreted as string for lua + switch (row[i].GetType()) + { + case MYSQL_TYPE_TINY: + case MYSQL_TYPE_SHORT: + case MYSQL_TYPE_INT24: + case MYSQL_TYPE_LONG: + case MYSQL_TYPE_FLOAT: + case MYSQL_TYPE_DOUBLE: + Eluna::Push(L, strtod(str, NULL)); + break; + default: + Eluna::Push(L, str); + break; + } + } +#endif + + lua_rawset(L, tbl); + } + + lua_settop(L, tbl); + return 1; + } +}; +#undef RESULT + +#endif diff --git a/modules/mod-eluna/src/LuaEngine/ElunaTemplate.h b/modules/mod-eluna/src/LuaEngine/ElunaTemplate.h new file mode 100644 index 0000000..95dbacb --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ElunaTemplate.h @@ -0,0 +1,388 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef _ELUNA_TEMPLATE_H +#define _ELUNA_TEMPLATE_H + +extern "C" +{ +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" +}; +#include "LuaEngine.h" +#include "ElunaUtility.h" +#include "SharedDefines.h" + +class ElunaGlobal +{ +public: + static int thunk(lua_State* L) + { + luaL_Reg* l = static_cast(lua_touserdata(L, lua_upvalueindex(1))); + int top = lua_gettop(L); + int expected = l->func(L); + int args = lua_gettop(L) - top; + if (args < 0 || args > expected) + { + ELUNA_LOG_ERROR("[Eluna]: {} returned unexpected amount of arguments {} out of {}. Report to devs", l->name, args, expected); + ASSERT(false); + } + lua_settop(L, top + expected); + return expected; + } + + static void SetMethods(Eluna* E, luaL_Reg* methodTable) + { + ASSERT(E); + ASSERT(methodTable); + + lua_pushglobaltable(E->L); + + for (; methodTable && methodTable->name && methodTable->func; ++methodTable) + { + lua_pushstring(E->L, methodTable->name); + lua_pushlightuserdata(E->L, (void*)methodTable); + lua_pushcclosure(E->L, thunk, 1); + lua_rawset(E->L, -3); + } + + lua_remove(E->L, -1); + } +}; + +class ElunaObject +{ +public: + template + ElunaObject(T * obj, bool manageMemory); + + ~ElunaObject() + { + } + + // Get wrapped object pointer + void* GetObj() const { return object; } + // Returns whether the object is valid or not + bool IsValid() const { return !callstackid || callstackid == sEluna->GetCallstackId(); } + // Returns whether the object can be invalidated or not + bool CanInvalidate() const { return _invalidate; } + // Returns pointer to the wrapped object's type name + const char* GetTypeName() const { return type_name; } + + // Sets the object pointer that is wrapped + void SetObj(void* obj) + { + ASSERT(obj); + object = obj; + SetValid(true); + } + // Sets the object pointer to valid or invalid + void SetValid(bool valid) + { + ASSERT(!valid || (valid && object)); + if (valid) + if (CanInvalidate()) + callstackid = sEluna->GetCallstackId(); + else + callstackid = 0; + else + callstackid = 1; + } + // Sets whether the pointer will be invalidated at end of calls + void SetValidation(bool invalidate) + { + _invalidate = invalidate; + } + // Invalidates the pointer if it should be invalidated + void Invalidate() + { + if (CanInvalidate()) + callstackid = 1; + } + +private: + uint64 callstackid; + bool _invalidate; + void* object; + const char* type_name; +}; + +template +struct ElunaRegister +{ + const char* name; + int(*mfunc)(lua_State*, T*); +}; + +template +class ElunaTemplate +{ +public: + static const char* tname; + static bool manageMemory; + + // name will be used as type name + // If gc is true, lua will handle the memory management for object pushed + // gc should be used if pushing for example WorldPacket, + // that will only be needed on lua side and will not be managed by TC/mangos/ + static void Register(Eluna* E, const char* name, bool gc = false) + { + ASSERT(E); + ASSERT(name); + + // check that metatable isn't already there + lua_getglobal(E->L, name); + ASSERT(lua_isnoneornil(E->L, -1)); + + // pop nil + lua_pop(E->L, 1); + + tname = name; + manageMemory = gc; + + // create metatable for userdata of this type + luaL_newmetatable(E->L, tname); + int metatable = lua_gettop(E->L); + + // push methodtable to stack to be accessed and modified by users + lua_pushvalue(E->L, metatable); + lua_setglobal(E->L, tname); + + // tostring + lua_pushcfunction(E->L, ToString); + lua_setfield(E->L, metatable, "__tostring"); + + // garbage collecting + lua_pushcfunction(E->L, CollectGarbage); + lua_setfield(E->L, metatable, "__gc"); + + // make methods accessible through metatable + lua_pushvalue(E->L, metatable); + lua_setfield(E->L, metatable, "__index"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, Add); + lua_setfield(E->L, metatable, "__add"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, Substract); + lua_setfield(E->L, metatable, "__sub"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, Multiply); + lua_setfield(E->L, metatable, "__mul"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, Divide); + lua_setfield(E->L, metatable, "__div"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, Mod); + lua_setfield(E->L, metatable, "__mod"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, Pow); + lua_setfield(E->L, metatable, "__pow"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, UnaryMinus); + lua_setfield(E->L, metatable, "__unm"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, Concat); + lua_setfield(E->L, metatable, "__concat"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, Length); + lua_setfield(E->L, metatable, "__len"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, Equal); + lua_setfield(E->L, metatable, "__eq"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, Less); + lua_setfield(E->L, metatable, "__lt"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, LessOrEqual); + lua_setfield(E->L, metatable, "__le"); + + // make new indexes saved to methods + lua_pushcfunction(E->L, Call); + lua_setfield(E->L, metatable, "__call"); + + // special method to get the object type + lua_pushcfunction(E->L, GetType); + lua_setfield(E->L, metatable, "GetObjectType"); + + // special method to decide object invalidation at end of call + lua_pushcfunction(E->L, SetInvalidation); + lua_setfield(E->L, metatable, "SetInvalidation"); + + // pop metatable + lua_pop(E->L, 1); + } + + template + static void SetMethods(Eluna* E, ElunaRegister* methodTable) + { + ASSERT(E); + ASSERT(tname); + ASSERT(methodTable); + + // get metatable + lua_pushstring(E->L, tname); + lua_rawget(E->L, LUA_REGISTRYINDEX); + ASSERT(lua_istable(E->L, -1)); + + for (; methodTable && methodTable->name && methodTable->mfunc; ++methodTable) + { + lua_pushstring(E->L, methodTable->name); + lua_pushlightuserdata(E->L, (void*)methodTable); + lua_pushcclosure(E->L, CallMethod, 1); + lua_rawset(E->L, -3); + } + + lua_pop(E->L, 1); + } + + static int Push(lua_State* L, T const* obj) + { + if (!obj) + { + lua_pushnil(L); + return 1; + } + + // Create new userdata + ElunaObject** ptrHold = static_cast(lua_newuserdata(L, sizeof(ElunaObject*))); + if (!ptrHold) + { + ELUNA_LOG_ERROR("{} could not create new userdata", tname); + lua_pushnil(L); + return 1; + } + *ptrHold = new ElunaObject(const_cast(obj), manageMemory); + + // Set metatable for it + lua_pushstring(L, tname); + lua_rawget(L, LUA_REGISTRYINDEX); + if (!lua_istable(L, -1)) + { + ELUNA_LOG_ERROR("{} missing metatable", tname); + lua_pop(L, 2); + lua_pushnil(L); + return 1; + } + lua_setmetatable(L, -2); + return 1; + } + + static T* Check(lua_State* L, int narg, bool error = true) + { + ElunaObject* elunaObj = Eluna::CHECKTYPE(L, narg, tname, error); + if (!elunaObj) + return NULL; + + if (!elunaObj->IsValid()) + { + char buff[256]; + snprintf(buff, 256, "%s expected, got pointer to nonexisting (invalidated) object (%s). Check your code.", tname, luaL_typename(L, narg)); + if (error) + { + luaL_argerror(L, narg, buff); + } + else + { + ELUNA_LOG_ERROR("{}", buff); + } + return NULL; + } + return static_cast(elunaObj->GetObj()); + } + + static int GetType(lua_State* L) + { + lua_pushstring(L, tname); + return 1; + } + + static int SetInvalidation(lua_State* L) + { + ElunaObject* elunaObj = Eluna::CHECKOBJ(L, 1); + bool invalidate = Eluna::CHECKVAL(L, 2); + + elunaObj->SetValidation(invalidate); + return 0; + } + + static int CallMethod(lua_State* L) + { + T* obj = Eluna::CHECKOBJ(L, 1); // get self + if (!obj) + return 0; + ElunaRegister* l = static_cast*>(lua_touserdata(L, lua_upvalueindex(1))); + int top = lua_gettop(L); + int expected = l->mfunc(L, obj); + int args = lua_gettop(L) - top; + if (args < 0 || args > expected) + { + ELUNA_LOG_ERROR("[Eluna]: {} returned unexpected amount of arguments {} out of {}. Report to devs", l->name, args, expected); + ASSERT(false); + } + lua_settop(L, top + expected); + return expected; + } + + // Metamethods ("virtual") + + // Remember special cases like ElunaTemplate::CollectGarbage + static int CollectGarbage(lua_State* L) + { + // Get object pointer (and check type, no error) + ElunaObject* obj = Eluna::CHECKOBJ(L, 1, false); + if (obj && manageMemory) + delete static_cast(obj->GetObj()); + delete obj; + return 0; + } + + static int ToString(lua_State* L) + { + T* obj = Eluna::CHECKOBJ(L, 1, true); // get self + lua_pushfstring(L, "%s: %p", tname, obj); + return 1; + } + + static int ArithmeticError(lua_State* L) { return luaL_error(L, "attempt to perform arithmetic on a %s value", tname); } + static int CompareError(lua_State* L) { return luaL_error(L, "attempt to compare %s", tname); } + static int Add(lua_State* L) { return ArithmeticError(L); } + static int Substract(lua_State* L) { return ArithmeticError(L); } + static int Multiply(lua_State* L) { return ArithmeticError(L); } + static int Divide(lua_State* L) { return ArithmeticError(L); } + static int Mod(lua_State* L) { return ArithmeticError(L); } + static int Pow(lua_State* L) { return ArithmeticError(L); } + static int UnaryMinus(lua_State* L) { return ArithmeticError(L); } + static int Concat(lua_State* L) { return luaL_error(L, "attempt to concatenate a %s value", tname); } + static int Length(lua_State* L) { return luaL_error(L, "attempt to get length of a %s value", tname); } + static int Equal(lua_State* L) { Eluna::Push(L, Eluna::CHECKOBJ(L, 1) == Eluna::CHECKOBJ(L, 2)); return 1; } + static int Less(lua_State* L) { return CompareError(L); } + static int LessOrEqual(lua_State* L) { return CompareError(L); } + static int Call(lua_State* L) { return luaL_error(L, "attempt to call a %s value", tname); } +}; + +template +ElunaObject::ElunaObject(T * obj, bool manageMemory) : callstackid(1), _invalidate(!manageMemory), object(obj), type_name(ElunaTemplate::tname) +{ + SetValid(true); +} + +template const char* ElunaTemplate::tname = NULL; +template bool ElunaTemplate::manageMemory = false; + +#endif diff --git a/modules/mod-eluna/src/LuaEngine/ElunaUtility.cpp b/modules/mod-eluna/src/LuaEngine/ElunaUtility.cpp new file mode 100644 index 0000000..9f436d6 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ElunaUtility.cpp @@ -0,0 +1,200 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#include "ElunaUtility.h" +#include "World.h" +#include "Object.h" +#include "Unit.h" +#include "GameObject.h" +#include "DBCStores.h" +#ifdef MANGOS +#include "Timer.h" +#endif + +uint32 ElunaUtil::GetCurrTime() +{ + return getMSTime(); +} + +uint32 ElunaUtil::GetTimeDiff(uint32 oldMSTime) +{ + return GetMSTimeDiffToNow(oldMSTime); +} + +ElunaUtil::ObjectGUIDCheck::ObjectGUIDCheck(ObjectGuid guid) : _guid(guid) +{ +} + +bool ElunaUtil::ObjectGUIDCheck::operator()(WorldObject* object) +{ + return object->GET_GUID() == _guid; +} + +ElunaUtil::ObjectDistanceOrderPred::ObjectDistanceOrderPred(WorldObject const* pRefObj, bool ascending) : m_refObj(pRefObj), m_ascending(ascending) +{ +} +bool ElunaUtil::ObjectDistanceOrderPred::operator()(WorldObject const* pLeft, WorldObject const* pRight) const +{ + return m_ascending ? m_refObj->GetDistanceOrder(pLeft, pRight) : !m_refObj->GetDistanceOrder(pLeft, pRight); +} + +ElunaUtil::WorldObjectInRangeCheck::WorldObjectInRangeCheck(bool nearest, WorldObject const* obj, float range, + uint16 typeMask, uint32 entry, uint32 hostile, uint32 dead) : + i_obj(obj), i_obj_unit(nullptr), i_obj_fact(nullptr), i_hostile(hostile), i_entry(entry), i_range(range), i_typeMask(typeMask), i_dead(dead), i_nearest(nearest) +{ + i_obj_unit = i_obj->ToUnit(); + if (!i_obj_unit) + if (GameObject const* go = i_obj->ToGameObject()) + i_obj_unit = go->GetOwner(); + if (!i_obj_unit) + i_obj_fact = sFactionTemplateStore.LookupEntry(14); +} +WorldObject const& ElunaUtil::WorldObjectInRangeCheck::GetFocusObject() const +{ + return *i_obj; +} +bool ElunaUtil::WorldObjectInRangeCheck::operator()(WorldObject* u) +{ + if (i_typeMask && !u->isType(TypeMask(i_typeMask))) + return false; + if (i_entry && u->GetEntry() != i_entry) + return false; + if (i_obj->GET_GUID() == u->GET_GUID()) + return false; + if (!i_obj->IsWithinDistInMap(u, i_range)) + return false; + Unit const* target = u->ToUnit(); + if (!target) + if (GameObject const* go = u->ToGameObject()) + target = go->GetOwner(); + if (target) + { +#ifdef CMANGOS + if (i_dead && (i_dead == 1) != target->isAlive()) + return false; +#else + if (i_dead && (i_dead == 1) != target->IsAlive()) + return false; +#endif + if (i_hostile) + { + if (!i_obj_unit) + { + if (i_obj_fact) + { +#if defined TRINITY || AZEROTHCORE + if ((i_obj_fact->IsHostileTo(*target->GetFactionTemplateEntry())) != (i_hostile == 1)) + return false; +#else + if ((i_obj_fact->IsHostileTo(*target->getFactionTemplateEntry())) != (i_hostile == 1)) + return false; +#endif + } + else if (i_hostile == 1) + return false; + } + else if ((i_hostile == 1) != i_obj_unit->IsHostileTo(target)) + return false; + } + } + if (i_nearest) + i_range = i_obj->GetDistance(u); + return true; +} + +static char encoding_table[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', + 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', + 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', + 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', + 'w', 'x', 'y', 'z', '0', '1', '2', '3', + '4', '5', '6', '7', '8', '9', '+', '/'}; +static char decoding_table[256]; +static int mod_table[] = {0, 2, 1}; + +static void build_decoding_table() +{ + for (int i = 0; i < 64; i++) + decoding_table[(unsigned char)encoding_table[i]] = i; +} + +void ElunaUtil::EncodeData(const unsigned char* data, size_t input_length, std::string& output) +{ + size_t output_length = 4 * ((input_length + 2) / 3); + char* buffer = new char[output_length]; + + for (size_t i = 0, j = 0; i < input_length;) + { + uint32 octet_a = i < input_length ? (unsigned char)data[i++] : 0; + uint32 octet_b = i < input_length ? (unsigned char)data[i++] : 0; + uint32 octet_c = i < input_length ? (unsigned char)data[i++] : 0; + + uint32 triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c; + + buffer[j++] = encoding_table[(triple >> (3 * 6)) & 0x3F]; + buffer[j++] = encoding_table[(triple >> (2 * 6)) & 0x3F]; + buffer[j++] = encoding_table[(triple >> (1 * 6)) & 0x3F]; + buffer[j++] = encoding_table[(triple >> (0 * 6)) & 0x3F]; + } + + for (int i = 0; i < mod_table[input_length % 3]; i++) + buffer[output_length - 1 - i] = '='; + + output.assign(buffer, output_length); // Need length because `buffer` is not terminated! + delete[] buffer; +} + +unsigned char* ElunaUtil::DecodeData(const char *data, size_t *output_length) +{ + if (decoding_table[(unsigned char)'B'] == 0) + build_decoding_table(); + + size_t input_length = strlen(data); + + if (input_length % 4 != 0) + return NULL; + + // Make sure there's no invalid characters in the data. + for (size_t i = 0; i < input_length; ++i) + { + unsigned char byte = data[i]; + + if (byte == '=') + continue; + + // Every invalid character (and 'A') will map to 0 (due to `calloc`). + if (decoding_table[byte] == 0 && byte != 'A') + return NULL; + } + + *output_length = input_length / 4 * 3; + if (data[input_length - 1] == '=') (*output_length)--; + if (data[input_length - 2] == '=') (*output_length)--; + + unsigned char *decoded_data = new unsigned char[*output_length]; + if (!decoded_data) + return NULL; + + for (size_t i = 0, j = 0; i < input_length;) + { + uint32 sextet_a = data[i] == '=' ? 0 & i++ : decoding_table[(unsigned char)data[i++]]; + uint32 sextet_b = data[i] == '=' ? 0 & i++ : decoding_table[(unsigned char)data[i++]]; + uint32 sextet_c = data[i] == '=' ? 0 & i++ : decoding_table[(unsigned char)data[i++]]; + uint32 sextet_d = data[i] == '=' ? 0 & i++ : decoding_table[(unsigned char)data[i++]]; + + uint32 triple = (sextet_a << (3 * 6)) + + (sextet_b << (2 * 6)) + + (sextet_c << (1 * 6)) + + (sextet_d << (0 * 6)); + + if (j < *output_length) decoded_data[j++] = (triple >> (2 * 8)) & 0xFF; + if (j < *output_length) decoded_data[j++] = (triple >> (1 * 8)) & 0xFF; + if (j < *output_length) decoded_data[j++] = (triple >> (0 * 8)) & 0xFF; + } + + return decoded_data; +} diff --git a/modules/mod-eluna/src/LuaEngine/ElunaUtility.h b/modules/mod-eluna/src/LuaEngine/ElunaUtility.h new file mode 100644 index 0000000..ba6a5f8 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ElunaUtility.h @@ -0,0 +1,163 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef _ELUNA_UTIL_H +#define _ELUNA_UTIL_H + +#include +#include +#include +#include +#include "Common.h" +#include "SharedDefines.h" +#include "ObjectGuid.h" +#ifdef TRINITY +#include "QueryResult.h" +#include "Log.h" +#ifdef CATA +#include "Object.h" +#endif +#else +#include "Database/QueryResult.h" +#include "Log.h" +#endif + +#if defined(TRINITY) || defined(AZEROTHCORE) +typedef QueryResult ElunaQuery; +#define GET_GUID GetGUID +#define HIGHGUID_PLAYER HighGuid::Player +#define HIGHGUID_UNIT HighGuid::Unit +#define HIGHGUID_ITEM HighGuid::Item +#define HIGHGUID_GAMEOBJECT HighGuid::GameObject +#define HIGHGUID_PET HighGuid::Pet +#define HIGHGUID_TRANSPORT HighGuid::Transport +#define HIGHGUID_VEHICLE HighGuid::Vehicle +#define HIGHGUID_CONTAINER HighGuid::Container +#define HIGHGUID_DYNAMICOBJECT HighGuid::DynamicObject +#define HIGHGUID_CORPSE HighGuid::Corpse +#define HIGHGUID_MO_TRANSPORT HighGuid::Mo_Transport +#define HIGHGUID_INSTANCE HighGuid::Instance +#define HIGHGUID_GROUP HighGuid::Group +#endif + +#ifdef TRINITY +#define ELUNA_LOG_INFO(...) TC_LOG_INFO("eluna", __VA_ARGS__); +#define ELUNA_LOG_ERROR(...) TC_LOG_ERROR("eluna", __VA_ARGS__); +#define ELUNA_LOG_DEBUG(...) TC_LOG_DEBUG("eluna", __VA_ARGS__); +#elif defined(AZEROTHCORE) +#define ELUNA_LOG_INFO(...) LOG_INFO("eluna", __VA_ARGS__); +#define ELUNA_LOG_ERROR(...) LOG_ERROR("eluna", __VA_ARGS__); +#define ELUNA_LOG_DEBUG(...) LOG_DEBUG("eluna", __VA_ARGS__); +#else +typedef QueryNamedResult ElunaQuery; +#define ASSERT MANGOS_ASSERT +#define ELUNA_LOG_INFO(...) sLog.outString(__VA_ARGS__); +#define ELUNA_LOG_ERROR(...) sLog.outErrorEluna(__VA_ARGS__); +#define ELUNA_LOG_DEBUG(...) sLog.outDebug(__VA_ARGS__); +#define GET_GUID GetObjectGuid +#define GetGameObjectTemplate GetGameObjectInfo +#define GetItemTemplate GetItemPrototype +#define GetTemplate GetProto +#endif + +#if defined(TRINITY) || defined(AZEROTHCORE) || defined(MANGOS) +#ifndef MAKE_NEW_GUID +#define MAKE_NEW_GUID(l, e, h) ObjectGuid(h, e, l) +#endif +#ifndef GUID_ENPART +#define GUID_ENPART(guid) ObjectGuid(guid).GetEntry() +#endif +#ifndef GUID_LOPART +#define GUID_LOPART(guid) ObjectGuid(guid).GetCounter() +#endif +#ifndef GUID_HIPART +#define GUID_HIPART(guid) ObjectGuid(guid).GetHigh() +#endif +#endif + +class Unit; +class WorldObject; +struct FactionTemplateEntry; + +namespace ElunaUtil +{ + uint32 GetCurrTime(); + + uint32 GetTimeDiff(uint32 oldMSTime); + + class ObjectGUIDCheck + { + public: + ObjectGUIDCheck(ObjectGuid guid); + bool operator()(WorldObject* object); + + ObjectGuid _guid; + }; + + // Binary predicate to sort WorldObjects based on the distance to a reference WorldObject + class ObjectDistanceOrderPred + { + public: + ObjectDistanceOrderPred(WorldObject const* pRefObj, bool ascending = true); + bool operator()(WorldObject const* pLeft, WorldObject const* pRight) const; + + WorldObject const* m_refObj; + const bool m_ascending; + }; + + // Doesn't get self + class WorldObjectInRangeCheck + { + public: + WorldObjectInRangeCheck(bool nearest, WorldObject const* obj, float range, + uint16 typeMask = 0, uint32 entry = 0, uint32 hostile = 0, uint32 dead = 0); + WorldObject const& GetFocusObject() const; + bool operator()(WorldObject* u); + + WorldObject const* const i_obj; + Unit const* i_obj_unit; + FactionTemplateEntry const* i_obj_fact; + uint32 const i_hostile; // 0 both, 1 hostile, 2 friendly + uint32 const i_entry; + float i_range; + uint16 const i_typeMask; + uint32 const i_dead; // 0 both, 1 alive, 2 dead + bool const i_nearest; + }; + + /* + * Usage: + * Inherit this class, then when needing lock, use + * Guard guard(GetLock()); + * + * The lock is automatically released at end of scope + */ + class Lockable + { + public: + typedef std::mutex LockType; + typedef std::lock_guard Guard; + + LockType& GetLock() { return _lock; } + + private: + LockType _lock; + }; + + /* + * Encodes `data` in Base-64 and store the result in `output`. + */ + void EncodeData(const unsigned char* data, size_t input_length, std::string& output); + + /* + * Decodes `data` from Base-64 and returns a pointer to the result, or `NULL` on error. + * + * The returned result buffer must be `delete[]`ed by the caller. + */ + unsigned char* DecodeData(const char* data, size_t *output_length); +}; + +#endif diff --git a/modules/mod-eluna/src/LuaEngine/GameObjectHooks.cpp b/modules/mod-eluna/src/LuaEngine/GameObjectHooks.cpp new file mode 100644 index 0000000..e463220 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/GameObjectHooks.cpp @@ -0,0 +1,142 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaIncludes.h" +#include "ElunaEventMgr.h" +#include "ElunaTemplate.h" + +using namespace Hooks; + +#define START_HOOK(EVENT, ENTRY) \ + if (!IsEnabled())\ + return;\ + auto key = EntryKey(EVENT, ENTRY);\ + if (!GameObjectEventBindings->HasBindingsFor(key))\ + return;\ + LOCK_ELUNA + +#define START_HOOK_WITH_RETVAL(EVENT, ENTRY, RETVAL) \ + if (!IsEnabled())\ + return RETVAL;\ + auto key = EntryKey(EVENT, ENTRY);\ + if (!GameObjectEventBindings->HasBindingsFor(key))\ + return RETVAL;\ + LOCK_ELUNA + +void Eluna::OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, GameObject* pTarget) +{ + START_HOOK(GAMEOBJECT_EVENT_ON_DUMMY_EFFECT, pTarget->GetEntry()); + Push(pCaster); + Push(spellId); + Push(effIndex); + Push(pTarget); + CallAllFunctions(GameObjectEventBindings, key); +} + +void Eluna::UpdateAI(GameObject* pGameObject, uint32 diff) +{ + pGameObject->elunaEvents->Update(diff); + START_HOOK(GAMEOBJECT_EVENT_ON_AIUPDATE, pGameObject->GetEntry()); + Push(pGameObject); + Push(diff); + CallAllFunctions(GameObjectEventBindings, key); +} + +bool Eluna::OnQuestAccept(Player* pPlayer, GameObject* pGameObject, Quest const* pQuest) +{ + START_HOOK_WITH_RETVAL(GAMEOBJECT_EVENT_ON_QUEST_ACCEPT, pGameObject->GetEntry(), false); + Push(pPlayer); + Push(pGameObject); + Push(pQuest); + return CallAllFunctionsBool(GameObjectEventBindings, key); +} + +bool Eluna::OnQuestReward(Player* pPlayer, GameObject* pGameObject, Quest const* pQuest, uint32 opt) +{ + START_HOOK_WITH_RETVAL(GAMEOBJECT_EVENT_ON_QUEST_REWARD, pGameObject->GetEntry(), false); + Push(pPlayer); + Push(pGameObject); + Push(pQuest); + Push(opt); + return CallAllFunctionsBool(GameObjectEventBindings, key); +} + +void Eluna::GetDialogStatus(const Player* pPlayer, const GameObject* pGameObject) +{ + START_HOOK(GAMEOBJECT_EVENT_ON_DIALOG_STATUS, pGameObject->GetEntry()); + Push(pPlayer); + Push(pGameObject); + CallAllFunctions(GameObjectEventBindings, key); +} + +#ifndef CLASSIC +#ifndef TBC +void Eluna::OnDestroyed(GameObject* pGameObject, WorldObject* attacker) +{ + START_HOOK(GAMEOBJECT_EVENT_ON_DESTROYED, pGameObject->GetEntry()); + Push(pGameObject); + Push(attacker); + CallAllFunctions(GameObjectEventBindings, key); +} + +void Eluna::OnDamaged(GameObject* pGameObject, WorldObject* attacker) +{ + START_HOOK(GAMEOBJECT_EVENT_ON_DAMAGED, pGameObject->GetEntry()); + Push(pGameObject); + Push(attacker); + CallAllFunctions(GameObjectEventBindings, key); +} +#endif +#endif + +void Eluna::OnLootStateChanged(GameObject* pGameObject, uint32 state) +{ + START_HOOK(GAMEOBJECT_EVENT_ON_LOOT_STATE_CHANGE, pGameObject->GetEntry()); + Push(pGameObject); + Push(state); + CallAllFunctions(GameObjectEventBindings, key); +} + +void Eluna::OnGameObjectStateChanged(GameObject* pGameObject, uint32 state) +{ + START_HOOK(GAMEOBJECT_EVENT_ON_GO_STATE_CHANGED, pGameObject->GetEntry()); + Push(pGameObject); + Push(state); + CallAllFunctions(GameObjectEventBindings, key); +} + +void Eluna::OnSpawn(GameObject* pGameObject) +{ + START_HOOK(GAMEOBJECT_EVENT_ON_SPAWN, pGameObject->GetEntry()); + Push(pGameObject); + CallAllFunctions(GameObjectEventBindings, key); +} + +void Eluna::OnAddToWorld(GameObject* pGameObject) +{ + START_HOOK(GAMEOBJECT_EVENT_ON_ADD, pGameObject->GetEntry()); + Push(pGameObject); + CallAllFunctions(GameObjectEventBindings, key); +} + +void Eluna::OnRemoveFromWorld(GameObject* pGameObject) +{ + START_HOOK(GAMEOBJECT_EVENT_ON_REMOVE, pGameObject->GetEntry()); + Push(pGameObject); + CallAllFunctions(GameObjectEventBindings, key); +} + +bool Eluna::OnGameObjectUse(Player* pPlayer, GameObject* pGameObject) +{ + START_HOOK_WITH_RETVAL(GAMEOBJECT_EVENT_ON_USE, pGameObject->GetEntry(), false); + Push(pGameObject); + Push(pPlayer); + return CallAllFunctionsBool(GameObjectEventBindings, key); +} diff --git a/modules/mod-eluna/src/LuaEngine/GameObjectMethods.h b/modules/mod-eluna/src/LuaEngine/GameObjectMethods.h new file mode 100644 index 0000000..ccb0ce1 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/GameObjectMethods.h @@ -0,0 +1,401 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef GAMEOBJECTMETHODS_H +#define GAMEOBJECTMETHODS_H + +/*** + * Inherits all methods from: [Object], [WorldObject] + */ +namespace LuaGameObject +{ + /** + * Returns 'true' if the [GameObject] can give the specified [Quest] + * + * @param uint32 questId : quest entry Id to check + * @return bool hasQuest + */ + int HasQuest(lua_State* L, GameObject* go) + { + uint32 questId = Eluna::CHECKVAL(L, 2); + +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, go->hasQuest(questId)); +#else + Eluna::Push(L, go->HasQuest(questId)); +#endif + return 1; + } + + /** + * Returns 'true' if the [GameObject] is spawned + * + * @return bool isSpawned + */ + int IsSpawned(lua_State* L, GameObject* go) + { + Eluna::Push(L, go->isSpawned()); + return 1; + } + + /** + * Returns 'true' if the [GameObject] is a transport + * + * @return bool isTransport + */ + int IsTransport(lua_State* L, GameObject* go) + { + Eluna::Push(L, go->IsTransport()); + return 1; + } + + /** + * Returns 'true' if the [GameObject] is active + * + * @return bool isActive + */ + int IsActive(lua_State* L, GameObject* go) + { + Eluna::Push(L, go->isActiveObject()); + return 1; + } + + /*int IsDestructible(lua_State* L, GameObject* go) // TODO: Implementation core side + { + Eluna::Push(L, go->IsDestructibleBuilding()); + return 1; + }*/ + + /** + * Returns display ID of the [GameObject] + * + * @return uint32 displayId + */ + int GetDisplayId(lua_State* L, GameObject* go) + { + Eluna::Push(L, go->GetDisplayId()); + return 1; + } + + /** + * Returns the state of a [GameObject] + * Below are client side [GOState]s off of 3.3.5a + * + *
+     * enum GOState
+     * {
+     *     GO_STATE_ACTIVE             = 0,                        // show in world as used and not reset (closed door open)
+     *     GO_STATE_READY              = 1,                        // show in world as ready (closed door close)
+     *     GO_STATE_ACTIVE_ALTERNATIVE = 2                         // show in world as used in alt way and not reset (closed door open by cannon fire)
+     * };
+     * 
+ * + * @return [GOState] goState + */ + int GetGoState(lua_State* L, GameObject* go) + { + Eluna::Push(L, go->GetGoState()); + return 1; + } + + /** + * Returns the [LootState] of a [GameObject] + * Below are [LootState]s off of 3.3.5a + * + *
+     * enum LootState
+     * {
+     *     GO_NOT_READY = 0,
+     *     GO_READY,                                               // can be ready but despawned, and then not possible activate until spawn
+     *     GO_ACTIVATED,
+     *     GO_JUST_DEACTIVATED
+     * };
+     * 
+ * + * @return [LootState] lootState + */ + int GetLootState(lua_State* L, GameObject* go) + { + Eluna::Push(L, go->getLootState()); + return 1; + } + + /** + * Returns the [Player] that can loot the [GameObject] + * + * Not the original looter and may be nil. + * + * @return [Player] player + */ + int GetLootRecipient(lua_State* L, GameObject* go) + { + Eluna::Push(L, go->GetLootRecipient()); + return 1; + } + + /** + * Returns the [Group] that can loot the [GameObject] + * + * Not the original looter and may be nil. + * + * @return [Group] group + */ + int GetLootRecipientGroup(lua_State* L, GameObject* go) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, go->GetLootRecipientGroup()); +#else + Eluna::Push(L, go->GetGroupLootRecipient()); +#endif + return 1; + } + + /** + * Returns the guid of the [GameObject] that is used as the ID in the database + * + * @return uint32 dbguid + */ + int GetDBTableGUIDLow(lua_State* L, GameObject* go) + { +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, go->GetSpawnId()); +#else + // on mangos based this is same as lowguid + Eluna::Push(L, go->GetGUIDLow()); +#endif + return 1; + } + + /** + * Sets the state of a [GameObject] + * + *
+     * enum GOState
+     * {
+     *     GO_STATE_ACTIVE             = 0,                        // show in world as used and not reset (closed door open)
+     *     GO_STATE_READY              = 1,                        // show in world as ready (closed door close)
+     *     GO_STATE_ACTIVE_ALTERNATIVE = 2                         // show in world as used in alt way and not reset (closed door open by cannon fire)
+     * };
+     * 
+ * + * @param [GOState] state : all available go states can be seen above + */ + int SetGoState(lua_State* L, GameObject* go) + { + uint32 state = Eluna::CHECKVAL(L, 2, 0); + + if (state == 0) + go->SetGoState(GO_STATE_ACTIVE); + else if (state == 1) + go->SetGoState(GO_STATE_READY); + else if (state == 2) + { +#ifdef TRINITY + go->SetGoState(GO_STATE_DESTROYED); +#else + go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); +#endif + } + + return 0; + } + + /** + * Sets the [LootState] of a [GameObject] + * Below are [LootState]s off of 3.3.5a + * + *
+     * enum LootState
+     * {
+     *     GO_NOT_READY = 0,
+     *     GO_READY,                                               // can be ready but despawned, and then not possible activate until spawn
+     *     GO_ACTIVATED,
+     *     GO_JUST_DEACTIVATED
+     * };
+     * 
+ * + * @param [LootState] state : all available loot states can be seen above + */ + int SetLootState(lua_State* L, GameObject* go) + { + uint32 state = Eluna::CHECKVAL(L, 2, 0); + + if (state == 0) + go->SetLootState(GO_NOT_READY); + else if (state == 1) + go->SetLootState(GO_READY); + else if (state == 2) + go->SetLootState(GO_ACTIVATED); + else if (state == 3) + go->SetLootState(GO_JUST_DEACTIVATED); + + return 0; + } + + /** + * Adds an [Item] to the loot of a [GameObject] + * Requires an gameobject with loot_template set to 0. + * + * @param uint32 entry : The entry of the [Item] + * @param uint32 amount = 1 : amount of the [Item] to add to the loot + * @return uint32 itemGUIDlow : low GUID of the [Item] + */ + + int AddLoot(lua_State* L, GameObject* go) + { + int i = 1; + int argAmount = lua_gettop(L); + +#if defined TRINITY || defined AZEROTHCORE + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); +#endif + uint8 addedItems = 0; + while (i + 2 <= argAmount) + { + uint32 entry = Eluna::CHECKVAL(L, ++i); + uint32 amount = Eluna::CHECKVAL(L, ++i); + +#if defined TRINITY || AZEROTHCORE + ItemTemplate const* item_proto = eObjectMgr->GetItemTemplate(entry); +#else + ItemTemplate const* item_proto = ObjectMgr::GetItemPrototype(entry); +#endif + if (!item_proto) + { + luaL_error(L, "Item entry %d does not exist", entry); + continue; + } + if (amount < 1 || (item_proto->MaxCount > 0 && amount > uint32(item_proto->MaxCount))) + { + luaL_error(L, "Item entry %d has invalid amount %d", entry, amount); + continue; + } + if (Item* item = Item::CreateItem(entry, amount)) + { +#if defined TRINITY || AZEROTHCORE + item->SaveToDB(trans); +#else + item->SaveToDB(); +#endif + LootStoreItem storeItem(item->GetEntry(), 0, 100, 0, LOOT_MODE_DEFAULT, 0, item->GetCount(), item->GetCount()); + go->loot.AddItem(storeItem); +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, item->GetGUID().GetCounter()); +#else + Eluna::Push(L, item->GetGUIDLow()); +#endif + ++addedItems; + } + } + +#if defined TRINITY || AZEROTHCORE + CharacterDatabase.CommitTransaction(trans); +#endif + + return addedItems; + } + + /** + * Saves [GameObject] to the database + * + */ + int SaveToDB(lua_State* /*L*/, GameObject* go) + { + go->SaveToDB(); + return 0; + } + + /** + * Removes [GameObject] from the world + * + * The object is no longer reachable after this and it is not respawned. + * + * @param bool deleteFromDB : if true, it will delete the [GameObject] from the database + */ + int RemoveFromWorld(lua_State* L, GameObject* go) + { + bool deldb = Eluna::CHECKVAL(L, 2, false); + + // cs_gobject.cpp copy paste +#if defined TRINITY || AZEROTHCORE + ObjectGuid ownerGuid = go->GetOwnerGUID(); +#else + ObjectGuid ownerGuid = go->GetOwnerGuid(); +#endif + if (ownerGuid) + { + Unit* owner = eObjectAccessor()GetUnit(*go, ownerGuid); + if (!owner || !ownerGuid.IsPlayer()) + return 0; + + owner->RemoveGameObject(go, false); + } + + if (deldb) + { +#ifdef TRINITY + GameObject::DeleteFromDB(go->GetSpawnId()); +#else + go->DeleteFromDB(); +#endif + } + + go->SetRespawnTime(0); + go->Delete(); + + Eluna::CHECKOBJ(L, 1)->Invalidate(); + return 0; + } + + /** + * Activates a door or a button/lever + * + * @param uint32 delay = 0 : cooldown time in seconds to restore the [GameObject] back to normal. 0 for infinite duration + */ + int UseDoorOrButton(lua_State* L, GameObject* go) + { + uint32 delay = Eluna::CHECKVAL(L, 2, 0); + + go->UseDoorOrButton(delay); + return 0; + } + + /** + * Despawns a [GameObject] + * + * The gameobject may be automatically respawned by the core + */ + int Despawn(lua_State* /*L*/, GameObject* go) + { + go->SetLootState(GO_JUST_DEACTIVATED); + return 0; + } + + /** + * Respawns a [GameObject] + */ + int Respawn(lua_State* /*L*/, GameObject* go) + { + go->Respawn(); + return 0; + } + + /** + * Sets the respawn or despawn time for the gameobject. + * + * Respawn time is also used as despawn time depending on gameobject settings + * + * @param int32 delay = 0 : cooldown time in seconds to respawn or despawn the object. 0 means never + */ + int SetRespawnTime(lua_State* L, GameObject* go) + { + int32 respawn = Eluna::CHECKVAL(L, 2); + + go->SetRespawnTime(respawn); + return 0; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/GlobalMethods.h b/modules/mod-eluna/src/LuaEngine/GlobalMethods.h new file mode 100644 index 0000000..b0e1bdb --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/GlobalMethods.h @@ -0,0 +1,3496 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef GLOBALMETHODS_H +#define GLOBALMETHODS_H + +#include "BindingMap.h" + +#ifdef AZEROTHCORE + +#include "BanMgr.h" +#include "GameTime.h" +#include "SharedDefines.h" +#include "OutdoorPvPMgr.h" +#include "../../../../src/server/scripts/OutdoorPvP/OutdoorPvPNA.h" + +enum BanMode +{ + BAN_ACCOUNT = 1, + BAN_CHARACTER = 2, + BAN_IP = 3 +}; + +#endif + +/*** + * These functions can be used anywhere at any time, including at start-up. + */ +namespace LuaGlobalFunctions +{ + /** + * Returns Lua engine's name. + * + * Always returns "ElunaEngine" on Eluna. + * + * @return string engineName + */ + int GetLuaEngine(lua_State* L) + { + Eluna::Push(L, "ElunaEngine"); + return 1; + } + + /** + * Returns emulator's name. + * + * The result will be either `MaNGOS`, `cMaNGOS`, or `TrinityCore`. + * + * @return string coreName + */ + int GetCoreName(lua_State* L) + { + Eluna::Push(L, CORE_NAME); + return 1; + } + + /** + * Returns emulator .conf RealmID + * + * - for MaNGOS returns the realmID as it is stored in the core. + * - for TrinityCore returns the realmID as it is in the conf file. + * @return uint32 realm ID + */ + + int GetRealmID(lua_State* L) + { +#ifdef MANGOS + Eluna::Push(L, realmID); +#elif defined(AZEROTHCORE) + Eluna::Push(L, sConfigMgr->GetOption("RealmID", 1)); +#else + Eluna::Push(L, sConfigMgr->GetIntDefault("RealmID", 1)); +#endif + return 1; + } + + /** + * Returns emulator version + * + * - For TrinityCore returns the date of the last revision, e.g. `2015-08-26 22:53:12 +0300` + * - For cMaNGOS returns the date and time of the last revision, e.g. `2015-09-06 13:18:50` + * - for MaNGOS returns the version number as string, e.g. `21000` + * + * @return string version + */ + int GetCoreVersion(lua_State* L) + { + Eluna::Push(L, CORE_VERSION); + return 1; + } + + /** + * Returns emulator's supported expansion. + * + * Expansion is 0 for pre-TBC, 1 for TBC, 2 for WotLK, and 3 for Cataclysm. + * + * @return int32 expansion + */ + int GetCoreExpansion(lua_State* L) + { +#ifdef CLASSIC + Eluna::Push(L, 0); +#elif defined(TBC) + Eluna::Push(L, 1); +#elif defined(WOTLK) + Eluna::Push(L, 2); +#elif defined(CATA) + Eluna::Push(L, 3); +#endif + return 1; + } + + /** + * Returns [Quest] template + * + * @param uint32 questId : [Quest] entry ID + * @return [Quest] quest + */ + int GetQuest(lua_State* L) + { + uint32 questId = Eluna::CHECKVAL(L, 1); + + Eluna::Push(L, eObjectMgr->GetQuestTemplate(questId)); + return 1; + } + + /** + * Finds and Returns [Player] by guid if found + * + * @param ObjectGuid guid : guid of the [Player], you can get it with [Object:GetGUID] + * @return [Player] player + */ + int GetPlayerByGUID(lua_State* L) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 1); + Eluna::Push(L, eObjectAccessor()FindPlayer(guid)); + return 1; + } + + /** + * Finds and Returns [Player] by name if found + * + * @param string name : name of the [Player] + * @return [Player] player + */ + int GetPlayerByName(lua_State* L) + { + const char* name = Eluna::CHECKVAL(L, 1); + Eluna::Push(L, eObjectAccessor()FindPlayerByName(name)); + return 1; + } + + /** + * Returns game time in seconds + * + * @return uint32 time + */ + int GetGameTime(lua_State* L) + { +#ifdef TRINITY + Eluna::Push(L, GameTime::GetGameTime()); +#elif AZEROTHCORE + Eluna::Push(L, GameTime::GetGameTime().count()); +#else + Eluna::Push(L, eWorld->GetGameTime()); +#endif + return 1; + } + + /** + * Returns a table with all the current [Player]s in the world + * + * Does not return players that may be teleporting or otherwise not on any map. + * + * enum TeamId + * { + * TEAM_ALLIANCE = 0, + * TEAM_HORDE = 1, + * TEAM_NEUTRAL = 2 + * }; + * + * @param [TeamId] team = TEAM_NEUTRAL : optional check team of the [Player], Alliance, Horde or Neutral (All) + * @param bool onlyGM = false : optional check if GM only + * @return table worldPlayers + */ + int GetPlayersInWorld(lua_State* L) + { + uint32 team = Eluna::CHECKVAL(L, 1, TEAM_NEUTRAL); + bool onlyGM = Eluna::CHECKVAL(L, 2, false); + + lua_newtable(L); + int tbl = lua_gettop(L); + uint32 i = 0; + +#if defined(MANGOS) + eObjectAccessor()DoForAllPlayers([&](Player* player){ + if(player->IsInWorld()) + { + if ((team == TEAM_NEUTRAL || player->GetTeamId() == team) && (!onlyGM || player->isGameMaster())) + { + Eluna::Push(L, player); + lua_rawseti(L, tbl, ++i); + } + } + }); +#else + { +#if defined TRINITY || AZEROTHCORE + std::shared_lock lock(*HashMapHolder::GetLock()); +#else + HashMapHolder::ReadGuard g(HashMapHolder::GetLock()); +#endif + const HashMapHolder::MapType& m = eObjectAccessor()GetPlayers(); + for (HashMapHolder::MapType::const_iterator it = m.begin(); it != m.end(); ++it) + { + if (Player* player = it->second) + { + if (!player->IsInWorld()) + continue; +#if defined TRINITY || AZEROTHCORE + if ((team == TEAM_NEUTRAL || player->GetTeamId() == team) && (!onlyGM || player->IsGameMaster())) +#else + if ((team == TEAM_NEUTRAL || player->GetTeamId() == team) && (!onlyGM || player->isGameMaster())) +#endif + { + Eluna::Push(L, player); + lua_rawseti(L, tbl, ++i); + } + } + } + } +#endif + lua_settop(L, tbl); // push table to top of stack + return 1; + } + + /** + * Returns a [Guild] by name. + * + * @param string name + * @return [Guild] guild : the Guild, or `nil` if it doesn't exist + */ + int GetGuildByName(lua_State* L) + { + const char* name = Eluna::CHECKVAL(L, 1); + Eluna::Push(L, eGuildMgr->GetGuildByName(name)); + return 1; + } + + /** + * Returns a [Map] by ID. + * + * @param uint32 mapId : see [Map.dbc](https://github.com/cmangos/issues/wiki/Map.dbc) + * @param uint32 instanceId = 0 : required if the map is an instance, otherwise don't pass anything + * @return [Map] map : the Map, or `nil` if it doesn't exist + */ + int GetMapById(lua_State* L) + { + uint32 mapid = Eluna::CHECKVAL(L, 1); + uint32 instance = Eluna::CHECKVAL(L, 2, 0); + + Eluna::Push(L, eMapMgr->FindMap(mapid, instance)); + return 1; + } + + /** + * Returns [Guild] by the leader's GUID + * + * @param ObjectGuid guid : the guid of a [Guild] leader + * @return [Guild] guild, or `nil` if it doesn't exist + */ + int GetGuildByLeaderGUID(lua_State* L) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 1); + + Eluna::Push(L, eGuildMgr->GetGuildByLeader(guid)); + return 1; + } + + /** + * Returns the amount of [Player]s in the world. + * + * @return uint32 count + */ + int GetPlayerCount(lua_State* L) + { + Eluna::Push(L, eWorld->GetActiveSessionCount()); + return 1; + } + + /** + * Builds a [Player]'s GUID + * + * [Player] GUID consist of low GUID and type ID + * + * [Player] and [Creature] for example can have the same low GUID but not GUID. + * + * @param uint32 lowguid : low GUID of the [Player] + * @return ObjectGuid guid + */ + int GetPlayerGUID(lua_State* L) + { + uint32 lowguid = Eluna::CHECKVAL(L, 1); + Eluna::Push(L, MAKE_NEW_GUID(lowguid, 0, HIGHGUID_PLAYER)); + return 1; + } + + /** + * Builds an [Item]'s GUID. + * + * [Item] GUID consist of low GUID and type ID + * [Player] and [Item] for example can have the same low GUID but not GUID. + * + * @param uint32 lowguid : low GUID of the [Item] + * @return ObjectGuid guid + */ + int GetItemGUID(lua_State* L) + { + uint32 lowguid = Eluna::CHECKVAL(L, 1); + Eluna::Push(L, MAKE_NEW_GUID(lowguid, 0, HIGHGUID_ITEM)); + return 1; + } + + int GetItemTemplate(lua_State* L) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + Eluna::Push(L, eObjectMgr->GetItemTemplate(entry)); + return 1; + } + + /** + * Builds a [GameObject]'s GUID. + * + * A GameObject's GUID consist of entry ID, low GUID and type ID + * + * A [Player] and GameObject for example can have the same low GUID but not GUID. + * + * @param uint32 lowguid : low GUID of the [GameObject] + * @param uint32 entry : entry ID of the [GameObject] + * @return ObjectGuid guid + */ + int GetObjectGUID(lua_State* L) + { + uint32 lowguid = Eluna::CHECKVAL(L, 1); + uint32 entry = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, MAKE_NEW_GUID(lowguid, entry, HIGHGUID_GAMEOBJECT)); + return 1; + } + + /** + * Builds a [Creature]'s GUID. + * + * [Creature] GUID consist of entry ID, low GUID and type ID + * + * [Player] and [Creature] for example can have the same low GUID but not GUID. + * + * @param uint32 lowguid : low GUID of the [Creature] + * @param uint32 entry : entry ID of the [Creature] + * @return ObjectGuid guid + */ + int GetUnitGUID(lua_State* L) + { + uint32 lowguid = Eluna::CHECKVAL(L, 1); + uint32 entry = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, MAKE_NEW_GUID(lowguid, entry, HIGHGUID_UNIT)); + return 1; + } + + /** + * Returns the low GUID from a GUID. + * + * A GUID consists of a low GUID, type ID, and possibly an entry ID depending on the type ID. + * + * Low GUID is an ID to distinct the objects of the same type. + * + * [Player] and [Creature] for example can have the same low GUID but not GUID. + * + * On TrinityCore all low GUIDs are different for all objects of the same type. + * For example creatures in instances are assigned new GUIDs when the Map is created. + * + * On MaNGOS and cMaNGOS low GUIDs are unique only on the same map. + * For example creatures in instances use the same low GUID assigned for that spawn in the database. + * This is why to identify a creature you have to know the instanceId and low GUID. See [Map:GetIntstanceId] + * + * @param ObjectGuid guid : GUID of an [Object] + * @return uint32 lowguid : low GUID of the [Object] + */ + int GetGUIDLow(lua_State* L) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 1); + + Eluna::Push(L, guid.GetCounter()); + return 1; + } + + /** + * Returns an chat link for an [Item]. + * + * enum LocaleConstant + * { + * LOCALE_enUS = 0, + * LOCALE_koKR = 1, + * LOCALE_frFR = 2, + * LOCALE_deDE = 3, + * LOCALE_zhCN = 4, + * LOCALE_zhTW = 5, + * LOCALE_esES = 6, + * LOCALE_esMX = 7, + * LOCALE_ruRU = 8 + * }; + * + * @param uint32 entry : entry ID of an [Item] + * @param [LocaleConstant] locale = DEFAULT_LOCALE : locale to return the [Item] name in + * @return string itemLink + */ + int GetItemLink(lua_State* L) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint8 locale = Eluna::CHECKVAL(L, 2, DEFAULT_LOCALE); + if (locale >= TOTAL_LOCALES) + return luaL_argerror(L, 2, "valid LocaleConstant expected"); + + const ItemTemplate* temp = eObjectMgr->GetItemTemplate(entry); + if (!temp) + return luaL_argerror(L, 1, "valid ItemEntry expected"); + + std::string name = temp->Name1; + if (ItemLocale const* il = eObjectMgr->GetItemLocale(entry)) + ObjectMgr::GetLocaleString(il->Name, static_cast(locale), name); + + std::ostringstream oss; + oss << "|c" << std::hex << ItemQualityColors[temp->Quality] << std::dec << + "|Hitem:" << entry << ":0:" << +#ifndef CLASSIC + "0:0:0:0:" << +#endif + "0:0:0:0|h[" << name << "]|h|r"; + + Eluna::Push(L, oss.str()); + return 1; + } + + /** + * Returns the type ID from a GUID. + * + * Type ID is different for each type ([Player], [Creature], [GameObject], etc.). + * + * GUID consist of entry ID, low GUID, and type ID. + * + * @param ObjectGuid guid : GUID of an [Object] + * @return int32 typeId : type ID of the [Object] + */ + int GetGUIDType(lua_State* L) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 1); + Eluna::Push(L, static_cast(guid.GetHigh())); + return 1; + } + + /** + * Returns the entry ID from a GUID. + * + * GUID consist of entry ID, low GUID, and type ID. + * + * @param ObjectGuid guid : GUID of an [Creature] or [GameObject] + * @return uint32 entry : entry ID, or `0` if `guid` is not a [Creature] or [GameObject] + */ + int GetGUIDEntry(lua_State* L) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 1); + Eluna::Push(L, guid.GetEntry()); + return 1; + } + + /** + * Returns the area or zone's name. + * + * enum LocaleConstant + * { + * LOCALE_enUS = 0, + * LOCALE_koKR = 1, + * LOCALE_frFR = 2, + * LOCALE_deDE = 3, + * LOCALE_zhCN = 4, + * LOCALE_zhTW = 5, + * LOCALE_esES = 6, + * LOCALE_esMX = 7, + * LOCALE_ruRU = 8 + * }; + * + * @param uint32 areaOrZoneId : area ID or zone ID + * @param [LocaleConstant] locale = DEFAULT_LOCALE : locale to return the name in + * @return string areaOrZoneName + */ + int GetAreaName(lua_State* L) + { + uint32 areaOrZoneId = Eluna::CHECKVAL(L, 1); + uint8 locale = Eluna::CHECKVAL(L, 2, DEFAULT_LOCALE); + if (locale >= TOTAL_LOCALES) + return luaL_argerror(L, 2, "valid LocaleConstant expected"); + +#if defined TRINITY || AZEROTHCORE + AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(areaOrZoneId); +#else + AreaTableEntry const* areaEntry = GetAreaEntryByAreaID(areaOrZoneId); +#endif + if (!areaEntry) + return luaL_argerror(L, 1, "valid Area or Zone ID expected"); + +#if defined(TRINITY) + Eluna::Push(L, areaEntry->AreaName[locale]); +#else + Eluna::Push(L, areaEntry->area_name[locale]); +#endif + return 1; + } + + /** + * Returns the currently active game events. + * + * @return table activeEvents + */ + int GetActiveGameEvents(lua_State* L) + { + lua_newtable(L); + int tbl = lua_gettop(L); + uint32 counter = 1; + GameEventMgr::ActiveEvents const& activeEvents = eGameEventMgr->GetActiveEventList(); + + for (GameEventMgr::ActiveEvents::const_iterator i = activeEvents.begin(); i != activeEvents.end(); ++i) + { + Eluna::Push(L, *i); + lua_rawseti(L, tbl, counter); + + counter++; + } + + lua_settop(L, tbl); + return 1; + } + + static int RegisterEntryHelper(lua_State* L, int regtype) + { + uint32 id = Eluna::CHECKVAL(L, 1); + uint32 ev = Eluna::CHECKVAL(L, 2); + luaL_checktype(L, 3, LUA_TFUNCTION); + uint32 shots = Eluna::CHECKVAL(L, 4, 0); + + lua_pushvalue(L, 3); + int functionRef = luaL_ref(L, LUA_REGISTRYINDEX); + if (functionRef >= 0) + return Eluna::GetEluna(L)->Register(L, regtype, id, ObjectGuid(), 0, ev, functionRef, shots); + else + luaL_argerror(L, 3, "unable to make a ref to function"); + return 0; + } + + static int RegisterEventHelper(lua_State* L, int regtype) + { + uint32 ev = Eluna::CHECKVAL(L, 1); + luaL_checktype(L, 2, LUA_TFUNCTION); + uint32 shots = Eluna::CHECKVAL(L, 3, 0); + + lua_pushvalue(L, 2); + int functionRef = luaL_ref(L, LUA_REGISTRYINDEX); + if (functionRef >= 0) + return Eluna::GetEluna(L)->Register(L, regtype, 0, ObjectGuid(), 0, ev, functionRef, shots); + else + luaL_argerror(L, 2, "unable to make a ref to function"); + return 0; + } + + static int RegisterUniqueHelper(lua_State* L, int regtype) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 1); + uint32 instanceId = Eluna::CHECKVAL(L, 2); + uint32 ev = Eluna::CHECKVAL(L, 3); + luaL_checktype(L, 4, LUA_TFUNCTION); + uint32 shots = Eluna::CHECKVAL(L, 5, 0); + + lua_pushvalue(L, 4); + int functionRef = luaL_ref(L, LUA_REGISTRYINDEX); + if (functionRef >= 0) + return Eluna::GetEluna(L)->Register(L, regtype, 0, guid, instanceId, ev, functionRef, shots); + else + luaL_argerror(L, 4, "unable to make a ref to function"); + return 0; + } + + /** + * Registers a server event handler. + * + * enum ServerEvents + * { + * // Server + * SERVER_EVENT_ON_NETWORK_START = 1, // Not Implemented + * SERVER_EVENT_ON_NETWORK_STOP = 2, // Not Implemented + * SERVER_EVENT_ON_SOCKET_OPEN = 3, // Not Implemented + * SERVER_EVENT_ON_SOCKET_CLOSE = 4, // Not Implemented + * SERVER_EVENT_ON_PACKET_RECEIVE = 5, // (event, packet, player) - Player only if accessible. Can return false, newPacket + * SERVER_EVENT_ON_PACKET_RECEIVE_UNKNOWN = 6, // Not Implemented + * SERVER_EVENT_ON_PACKET_SEND = 7, // (event, packet, player) - Player only if accessible. Can return false, newPacket + * + * // World + * WORLD_EVENT_ON_OPEN_STATE_CHANGE = 8, // (event, open) - Needs core support on Mangos + * WORLD_EVENT_ON_CONFIG_LOAD = 9, // (event, reload) + * // UNUSED = 10, + * WORLD_EVENT_ON_SHUTDOWN_INIT = 11, // (event, code, mask) + * WORLD_EVENT_ON_SHUTDOWN_CANCEL = 12, // (event) + * WORLD_EVENT_ON_UPDATE = 13, // (event, diff) + * WORLD_EVENT_ON_STARTUP = 14, // (event) + * WORLD_EVENT_ON_SHUTDOWN = 15, // (event) + * + * // Eluna + * ELUNA_EVENT_ON_LUA_STATE_CLOSE = 16, // (event) - triggers just before shutting down eluna (on shutdown and restart) + * + * // Map + * MAP_EVENT_ON_CREATE = 17, // (event, map) + * MAP_EVENT_ON_DESTROY = 18, // (event, map) + * MAP_EVENT_ON_GRID_LOAD = 19, // Not Implemented + * MAP_EVENT_ON_GRID_UNLOAD = 20, // Not Implemented + * MAP_EVENT_ON_PLAYER_ENTER = 21, // (event, map, player) + * MAP_EVENT_ON_PLAYER_LEAVE = 22, // (event, map, player) + * MAP_EVENT_ON_UPDATE = 23, // (event, map, diff) + * + * // Area trigger + * TRIGGER_EVENT_ON_TRIGGER = 24, // (event, player, triggerId) - Can return true + * + * // Weather + * WEATHER_EVENT_ON_CHANGE = 25, // (event, zoneId, state, grade) + * + * // Auction house + * AUCTION_EVENT_ON_ADD = 26, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow) + * AUCTION_EVENT_ON_REMOVE = 27, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow) + * AUCTION_EVENT_ON_SUCCESSFUL = 28, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow) + * AUCTION_EVENT_ON_EXPIRE = 29, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow) + * + * // AddOns + * ADDON_EVENT_ON_MESSAGE = 30, // (event, sender, type, prefix, msg, target) - target can be nil/whisper_target/guild/group/channel. Can return false + * + * WORLD_EVENT_ON_DELETE_CREATURE = 31, // (event, creature) + * WORLD_EVENT_ON_DELETE_GAMEOBJECT = 32, // (event, gameobject) + * + * // Eluna + * ELUNA_EVENT_ON_LUA_STATE_OPEN = 33, // (event) - triggers after all scripts are loaded + * + * GAME_EVENT_START = 34, // (event, gameeventid) + * GAME_EVENT_STOP = 35, // (event, gameeventid) + * }; + * + * @proto cancel = (event, function) + * @proto cancel = (event, function, shots) + * + * @param uint32 event : server event ID, refer to ServerEvents above + * @param function function : function that will be called when the event occurs + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterServerEvent(lua_State* L) + { + return RegisterEventHelper(L, Hooks::REGTYPE_SERVER); + } + + /** + * Registers a [Player] event handler. + * + *
+     * enum PlayerEvents
+     * {
+     *     PLAYER_EVENT_ON_CHARACTER_CREATE        =     1,        // (event, player)
+     *     PLAYER_EVENT_ON_CHARACTER_DELETE        =     2,        // (event, guid)
+     *     PLAYER_EVENT_ON_LOGIN                   =     3,        // (event, player)
+     *     PLAYER_EVENT_ON_LOGOUT                  =     4,        // (event, player)
+     *     PLAYER_EVENT_ON_SPELL_CAST              =     5,        // (event, player, spell, skipCheck)
+     *     PLAYER_EVENT_ON_KILL_PLAYER             =     6,        // (event, killer, killed)
+     *     PLAYER_EVENT_ON_KILL_CREATURE           =     7,        // (event, killer, killed)
+     *     PLAYER_EVENT_ON_KILLED_BY_CREATURE      =     8,        // (event, killer, killed)
+     *     PLAYER_EVENT_ON_DUEL_REQUEST            =     9,        // (event, target, challenger)
+     *     PLAYER_EVENT_ON_DUEL_START              =     10,       // (event, player1, player2)
+     *     PLAYER_EVENT_ON_DUEL_END                =     11,       // (event, winner, loser, type)
+     *     PLAYER_EVENT_ON_GIVE_XP                 =     12,       // (event, player, amount, victim, source) - Can return new XP amount
+     *     PLAYER_EVENT_ON_LEVEL_CHANGE            =     13,       // (event, player, oldLevel)
+     *     PLAYER_EVENT_ON_MONEY_CHANGE            =     14,       // (event, player, amount) - Can return new money amount
+     *     PLAYER_EVENT_ON_REPUTATION_CHANGE       =     15,       // (event, player, factionId, standing, incremental) - Can return new standing -> if standing == -1, it will prevent default action (rep gain)
+     *     PLAYER_EVENT_ON_TALENTS_CHANGE          =     16,       // (event, player, points)
+     *     PLAYER_EVENT_ON_TALENTS_RESET           =     17,       // (event, player, noCost)
+     *     PLAYER_EVENT_ON_CHAT                    =     18,       // (event, player, msg, Type, lang) - Can return false, newMessage
+     *     PLAYER_EVENT_ON_WHISPER                 =     19,       // (event, player, msg, Type, lang, receiver) - Can return false, newMessage
+     *     PLAYER_EVENT_ON_GROUP_CHAT              =     20,       // (event, player, msg, Type, lang, group) - Can return false, newMessage
+     *     PLAYER_EVENT_ON_GUILD_CHAT              =     21,       // (event, player, msg, Type, lang, guild) - Can return false, newMessage
+     *     PLAYER_EVENT_ON_CHANNEL_CHAT            =     22,       // (event, player, msg, Type, lang, channel) - channel is negative for custom channels. Can return false, newMessage
+     *     PLAYER_EVENT_ON_EMOTE                   =     23,       // (event, player, emote) - Not triggered on any known emote
+     *     PLAYER_EVENT_ON_TEXT_EMOTE              =     24,       // (event, player, textEmote, emoteNum, guid)
+     *     PLAYER_EVENT_ON_SAVE                    =     25,       // (event, player)
+     *     PLAYER_EVENT_ON_BIND_TO_INSTANCE        =     26,       // (event, player, difficulty, mapid, permanent)
+     *     PLAYER_EVENT_ON_UPDATE_ZONE             =     27,       // (event, player, newZone, newArea)
+     *     PLAYER_EVENT_ON_MAP_CHANGE              =     28,       // (event, player)
+     *
+     *     // Custom
+     *     PLAYER_EVENT_ON_EQUIP                   =     29,       // (event, player, item, bag, slot)
+     *     PLAYER_EVENT_ON_FIRST_LOGIN             =     30,       // (event, player)
+     *     PLAYER_EVENT_ON_CAN_USE_ITEM            =     31,       // (event, player, itemEntry) - Can return InventoryResult enum value
+     *     PLAYER_EVENT_ON_LOOT_ITEM               =     32,       // (event, player, item, count)
+     *     PLAYER_EVENT_ON_ENTER_COMBAT            =     33,       // (event, player, enemy)
+     *     PLAYER_EVENT_ON_LEAVE_COMBAT            =     34,       // (event, player)
+     *     PLAYER_EVENT_ON_REPOP                   =     35,       // (event, player)
+     *     PLAYER_EVENT_ON_RESURRECT               =     36,       // (event, player)
+     *     PLAYER_EVENT_ON_LOOT_MONEY              =     37,       // (event, player, amount)
+     *     PLAYER_EVENT_ON_QUEST_ABANDON           =     38,       // (event, player, questId)
+     *     PLAYER_EVENT_ON_LEARN_TALENTS           =     39,       // (event, player, talentId, talentRank, spellid)
+     *     // UNUSED                               =     40,       // (event, player)
+     *     // UNUSED                               =     41,       // (event, player)
+     *     PLAYER_EVENT_ON_COMMAND                 =     42,       // (event, player, command, chatHandler) - player is nil if command used from console. Can return false
+     *     PLAYER_EVENT_ON_PET_ADDED_TO_WORLD      =     43,       // (event, player, pet)
+     *     PLAYER_EVENT_ON_LEARN_SPELL             =     44,       // (event, player, spellId)
+     *     PLAYER_EVENT_ON_ACHIEVEMENT_COMPLETE    =     45,       // (event, player, achievement)
+     *     PLAYER_EVENT_ON_FFAPVP_CHANGE           =     46,       // (event, player, hasFfaPvp)
+     *     PLAYER_EVENT_ON_UPDATE_AREA             =     47,       // (event, player, oldArea, newArea)
+     *     PLAYER_EVENT_ON_CAN_INIT_TRADE          =     48,       // (event, player, target) - Can return false to prevent the trade
+     *     PLAYER_EVENT_ON_CAN_SEND_MAIL           =     49,       // (event, player, receiverGuid, mailbox, subject, body, money, cod, item) - Can return false to prevent sending the mail
+     *     PLAYER_EVENT_ON_CAN_JOIN_LFG            =     50,       // (event, player, roles, dungeons, comment) - Can return false to prevent queueing
+     *     PLAYER_EVENT_ON_QUEST_REWARD_ITEM       =     51,       //  (event, player, item, count)
+     *     PLAYER_EVENT_ON_CREATE_ITEM             =     52,       //  (event, player, item, count)
+     *     PLAYER_EVENT_ON_STORE_NEW_ITEM          =     53,       //  (event, player, item, count)
+     *     PLAYER_EVENT_ON_COMPLETE_QUEST          =     54,       // (event, player, quest)
+     *     PLAYER_EVENT_ON_CAN_GROUP_INVITE        =     55,       // (event, player, memberName) - Can return false to prevent inviting
+     *     PLAYER_EVENT_ON_GROUP_ROLL_REWARD_ITEM  =     56,       // (event, player, item, count, voteType, roll)
+     *     PLAYER_EVENT_ON_BG_DESERTION            =     57,       // (event, player, type)
+     * };
+     * 
+ * + * @proto cancel = (event, function) + * @proto cancel = (event, function, shots) + * + * @param uint32 event : [Player] event Id, refer to PlayerEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterPlayerEvent(lua_State* L) + { + return RegisterEventHelper(L, Hooks::REGTYPE_PLAYER); + } + + /** + * Registers a [Guild] event handler. + * + *
+     * enum GuildEvents
+     * {
+     *     // Guild
+     *     GUILD_EVENT_ON_ADD_MEMBER               =     1,       // (event, guild, player, rank)
+     *     GUILD_EVENT_ON_REMOVE_MEMBER            =     2,       // (event, guild, player, isDisbanding)
+     *     GUILD_EVENT_ON_MOTD_CHANGE              =     3,       // (event, guild, newMotd)
+     *     GUILD_EVENT_ON_INFO_CHANGE              =     4,       // (event, guild, newInfo)
+     *     GUILD_EVENT_ON_CREATE                   =     5,       // (event, guild, leader, name)  // Not on TC
+     *     GUILD_EVENT_ON_DISBAND                  =     6,       // (event, guild)
+     *     GUILD_EVENT_ON_MONEY_WITHDRAW           =     7,       // (event, guild, player, amount, isRepair) - Can return new money amount
+     *     GUILD_EVENT_ON_MONEY_DEPOSIT            =     8,       // (event, guild, player, amount) - Can return new money amount
+     *     GUILD_EVENT_ON_ITEM_MOVE                =     9,       // (event, guild, player, item, isSrcBank, srcContainer, srcSlotId, isDestBank, destContainer, destSlotId)   // TODO
+     *     GUILD_EVENT_ON_EVENT                    =     10,      // (event, guild, eventType, plrGUIDLow1, plrGUIDLow2, newRank)  // TODO
+     *     GUILD_EVENT_ON_BANK_EVENT               =     11,      // (event, guild, eventType, tabId, playerGUIDLow, itemOrMoney, itemStackCount, destTabId)
+     *
+     *     GUILD_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (event, function) + * @proto cancel = (event, function, shots) + * + * @param uint32 event : [Guild] event Id, refer to GuildEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterGuildEvent(lua_State* L) + { + return RegisterEventHelper(L, Hooks::REGTYPE_GUILD); + } + + /** + * Registers a [Group] event handler. + * + *
+     * enum GroupEvents
+     * {
+     *     // Group
+     *     GROUP_EVENT_ON_MEMBER_ADD               =     1,       // (event, group, guid)
+     *     GROUP_EVENT_ON_MEMBER_INVITE            =     2,       // (event, group, guid)
+     *     GROUP_EVENT_ON_MEMBER_REMOVE            =     3,       // (event, group, guid, method, kicker, reason)
+     *     GROUP_EVENT_ON_LEADER_CHANGE            =     4,       // (event, group, newLeaderGuid, oldLeaderGuid)
+     *     GROUP_EVENT_ON_DISBAND                  =     5,       // (event, group)
+     *     GROUP_EVENT_ON_CREATE                   =     6,       // (event, group, leaderGuid, groupType)
+     *
+     *     GROUP_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (event, function) + * @proto cancel = (event, function, shots) + * + * @param uint32 event : [Group] event Id, refer to GroupEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterGroupEvent(lua_State* L) + { + return RegisterEventHelper(L, Hooks::REGTYPE_GROUP); + } + + /** + * Registers a [BattleGround] event handler. + * + *
+     * enum BGEvents
+     * {
+     *     BG_EVENT_ON_START                               = 1,    // (event, bg, bgId, instanceId) - Needs to be added to TC
+     *     BG_EVENT_ON_END                                 = 2,    // (event, bg, bgId, instanceId, winner) - Needs to be added to TC
+     *     BG_EVENT_ON_CREATE                              = 3,    // (event, bg, bgId, instanceId) - Needs to be added to TC
+     *     BG_EVENT_ON_PRE_DESTROY                         = 4,    // (event, bg, bgId, instanceId) - Needs to be added to TC
+     *     BG_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (event, function) + * @proto cancel = (event, function, shots) + * + * @param uint32 event : [BattleGround] event Id, refer to BGEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterBGEvent(lua_State* L) + { + return RegisterEventHelper(L, Hooks::REGTYPE_BG); + } + + /** + * Registers a [WorldPacket] event handler. + * + *
+     * enum PacketEvents
+     * {
+     *     PACKET_EVENT_ON_PACKET_RECEIVE          =     5,       // (event, packet, player) - Player only if accessible. Can return false, newPacket
+     *     PACKET_EVENT_ON_PACKET_RECEIVE_UNKNOWN  =     6,       // Not Implemented
+     *     PACKET_EVENT_ON_PACKET_SEND             =     7,       // (event, packet, player) - Player only if accessible. Can return false, newPacket
+     *
+     *     PACKET_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (entry, event, function) + * @proto cancel = (entry, event, function, shots) + * + * @param uint32 entry : opcode + * @param uint32 event : packet event Id, refer to PacketEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterPacketEvent(lua_State* L) + { + return RegisterEntryHelper(L, Hooks::REGTYPE_PACKET); + } + + /** + * Registers a [Creature] gossip event handler. + * + *
+     * enum GossipEvents
+     * {
+     *     GOSSIP_EVENT_ON_HELLO                           = 1,    // (event, player, object) - Object is the Creature/GameObject/Item. Can return false to do default action. For item gossip can return false to stop spell casting.
+     *     GOSSIP_EVENT_ON_SELECT                          = 2,    // (event, player, object, sender, intid, code, menu_id) - Object is the Creature/GameObject/Item/Player, menu_id is only for player gossip. Can return false to do default action.
+     *     GOSSIP_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (entry, event, function) + * @proto cancel = (entry, event, function, shots) + * + * @param uint32 entry : [Creature] entry Id + * @param uint32 event : [Creature] gossip event Id, refer to GossipEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterCreatureGossipEvent(lua_State* L) + { + return RegisterEntryHelper(L, Hooks::REGTYPE_CREATURE_GOSSIP); + } + + /** + * Registers a [GameObject] gossip event handler. + * + *
+     * enum GossipEvents
+     * {
+     *     GOSSIP_EVENT_ON_HELLO                           = 1,    // (event, player, object) - Object is the Creature/GameObject/Item. Can return false to do default action. For item gossip can return false to stop spell casting.
+     *     GOSSIP_EVENT_ON_SELECT                          = 2,    // (event, player, object, sender, intid, code, menu_id) - Object is the Creature/GameObject/Item/Player, menu_id is only for player gossip. Can return false to do default action.
+     *     GOSSIP_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (entry, event, function) + * @proto cancel = (entry, event, function, shots) + * + * @param uint32 entry : [GameObject] entry Id + * @param uint32 event : [GameObject] gossip event Id, refer to GossipEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterGameObjectGossipEvent(lua_State* L) + { + return RegisterEntryHelper(L, Hooks::REGTYPE_GAMEOBJECT_GOSSIP); + } + + /** + * Registers an [Item] event handler. + * + *
+     * enum ItemEvents
+     * {
+     *     ITEM_EVENT_ON_DUMMY_EFFECT                      = 1,    // (event, caster, spellid, effindex, item)
+     *     ITEM_EVENT_ON_USE                               = 2,    // (event, player, item, target) - Can return false to stop the spell casting
+     *     ITEM_EVENT_ON_QUEST_ACCEPT                      = 3,    // (event, player, item, quest) - Can return true
+     *     ITEM_EVENT_ON_EXPIRE                            = 4,    // (event, player, itemid) - Can return true
+     *     ITEM_EVENT_ON_REMOVE                            = 5,    // (event, player, item) - Can return true
+     *     ITEM_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (entry, event, function) + * @proto cancel = (entry, event, function, shots) + * + * @param uint32 entry : [Item] entry Id + * @param uint32 event : [Item] event Id, refer to ItemEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterItemEvent(lua_State* L) + { + return RegisterEntryHelper(L, Hooks::REGTYPE_ITEM); + } + + /** + * Registers an [Item] gossip event handler. + * + *
+     * enum GossipEvents
+     * {
+     *     GOSSIP_EVENT_ON_HELLO                           = 1,    // (event, player, object) - Object is the Creature/GameObject/Item. Can return false to do default action. For item gossip can return false to stop spell casting.
+     *     GOSSIP_EVENT_ON_SELECT                          = 2,    // (event, player, object, sender, intid, code, menu_id) - Object is the Creature/GameObject/Item/Player, menu_id is only for player gossip. Can return false to do default action.
+     *     GOSSIP_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (entry, event, function) + * @proto cancel = (entry, event, function, shots) + * + * @param uint32 entry : [Item] entry Id + * @param uint32 event : [Item] gossip event Id, refer to GossipEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterItemGossipEvent(lua_State* L) + { + return RegisterEntryHelper(L, Hooks::REGTYPE_ITEM_GOSSIP); + } + + /** + * Registers a [Map] event handler for all instance of a [Map]. + * + *
+     * enum InstanceEvents
+     * {
+     *     INSTANCE_EVENT_ON_INITIALIZE                    = 1,    // (event, instance_data, map)
+     *     INSTANCE_EVENT_ON_LOAD                          = 2,    // (event, instance_data, map)
+     *     INSTANCE_EVENT_ON_UPDATE                        = 3,    // (event, instance_data, map, diff)
+     *     INSTANCE_EVENT_ON_PLAYER_ENTER                  = 4,    // (event, instance_data, map, player)
+     *     INSTANCE_EVENT_ON_CREATURE_CREATE               = 5,    // (event, instance_data, map, creature)
+     *     INSTANCE_EVENT_ON_GAMEOBJECT_CREATE             = 6,    // (event, instance_data, map, go)
+     *     INSTANCE_EVENT_ON_CHECK_ENCOUNTER_IN_PROGRESS   = 7,    // (event, instance_data, map)
+     *     INSTANCE_EVENT_COUNT
+     * };
+     * 
+ * + * @param uint32 map_id : ID of a [Map] + * @param uint32 event : [Map] event ID, refer to MapEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + */ + int RegisterMapEvent(lua_State* L) + { + return RegisterEntryHelper(L, Hooks::REGTYPE_MAP); + } + + /** + * Registers a [Map] event handler for one instance of a [Map]. + * + *
+     * enum InstanceEvents
+     * {
+     *     INSTANCE_EVENT_ON_INITIALIZE                    = 1,    // (event, instance_data, map)
+     *     INSTANCE_EVENT_ON_LOAD                          = 2,    // (event, instance_data, map)
+     *     INSTANCE_EVENT_ON_UPDATE                        = 3,    // (event, instance_data, map, diff)
+     *     INSTANCE_EVENT_ON_PLAYER_ENTER                  = 4,    // (event, instance_data, map, player)
+     *     INSTANCE_EVENT_ON_CREATURE_CREATE               = 5,    // (event, instance_data, map, creature)
+     *     INSTANCE_EVENT_ON_GAMEOBJECT_CREATE             = 6,    // (event, instance_data, map, go)
+     *     INSTANCE_EVENT_ON_CHECK_ENCOUNTER_IN_PROGRESS   = 7,    // (event, instance_data, map)
+     *     INSTANCE_EVENT_COUNT
+     * };
+     * 
+ * + * @param uint32 instance_id : ID of an instance of a [Map] + * @param uint32 event : [Map] event ID, refer to MapEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + */ + int RegisterInstanceEvent(lua_State* L) + { + return RegisterEntryHelper(L, Hooks::REGTYPE_INSTANCE); + } + + /** + * Registers a [Player] gossip event handler. + * + * Note that you can not use `GOSSIP_EVENT_ON_HELLO` with this hook. It does nothing since players dont have an "on hello". + * + *
+     * enum GossipEvents
+     * {
+     *     GOSSIP_EVENT_ON_HELLO                           = 1,    // (event, player, object) - Object is the Creature/GameObject/Item. Can return false to do default action. For item gossip can return false to stop spell casting.
+     *     GOSSIP_EVENT_ON_SELECT                          = 2,    // (event, player, object, sender, intid, code, menu_id) - Object is the Creature/GameObject/Item/Player, menu_id is only for player gossip. Can return false to do default action.
+     *     GOSSIP_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (menu_id, event, function) + * @proto cancel = (menu_id, event, function, shots) + * + * @param uint32 menu_id : [Player] gossip menu Id + * @param uint32 event : [Player] gossip event Id, refer to GossipEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterPlayerGossipEvent(lua_State* L) + { + return RegisterEntryHelper(L, Hooks::REGTYPE_PLAYER_GOSSIP); + } + + /** + * Registers a [Creature] event handler. + * + *
+     * enum CreatureEvents
+     * {
+     *     CREATURE_EVENT_ON_ENTER_COMBAT                    = 1,  // (event, creature, target) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_LEAVE_COMBAT                    = 2,  // (event, creature) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_TARGET_DIED                     = 3,  // (event, creature, victim) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_DIED                            = 4,  // (event, creature, killer) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_SPAWN                           = 5,  // (event, creature) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_REACH_WP                        = 6,  // (event, creature, type, id) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_AIUPDATE                        = 7,  // (event, creature, diff) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_RECEIVE_EMOTE                   = 8,  // (event, creature, player, emoteid) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_DAMAGE_TAKEN                    = 9,  // (event, creature, attacker, damage) - Can return true to stop normal action, can return new damage as second return value.
+     *     CREATURE_EVENT_ON_PRE_COMBAT                      = 10, // (event, creature, target) - Can return true to stop normal action
+     *     // UNUSED
+     *     CREATURE_EVENT_ON_OWNER_ATTACKED                  = 12, // (event, creature, target) - Can return true to stop normal action            // Not on mangos
+     *     CREATURE_EVENT_ON_OWNER_ATTACKED_AT               = 13, // (event, creature, attacker) - Can return true to stop normal action          // Not on mangos
+     *     CREATURE_EVENT_ON_HIT_BY_SPELL                    = 14, // (event, creature, caster, spellid) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_SPELL_HIT_TARGET                = 15, // (event, creature, target, spellid) - Can return true to stop normal action
+     *     // UNUSED                                         = 16, // (event, creature)
+     *     // UNUSED                                         = 17, // (event, creature)
+     *     // UNUSED                                         = 18, // (event, creature)
+     *     CREATURE_EVENT_ON_JUST_SUMMONED_CREATURE          = 19, // (event, creature, summon) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_SUMMONED_CREATURE_DESPAWN       = 20, // (event, creature, summon) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_SUMMONED_CREATURE_DIED          = 21, // (event, creature, summon, killer) - Can return true to stop normal action    // Not on mangos
+     *     CREATURE_EVENT_ON_SUMMONED                        = 22, // (event, creature, summoner) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_RESET                           = 23, // (event, creature)
+     *     CREATURE_EVENT_ON_REACH_HOME                      = 24, // (event, creature) - Can return true to stop normal action
+     *     // UNUSED                                         = 25, // (event, creature)
+     *     CREATURE_EVENT_ON_CORPSE_REMOVED                  = 26, // (event, creature, respawndelay) - Can return true to stop normal action, can return new respawndelay as second return value
+     *     CREATURE_EVENT_ON_MOVE_IN_LOS                     = 27, // (event, creature, unit) - Can return true to stop normal action. Does not actually check LOS, just uses the sight range
+     *     // UNUSED                                         = 28, // (event, creature)
+     *     // UNUSED                                         = 29, // (event, creature)
+     *     CREATURE_EVENT_ON_DUMMY_EFFECT                    = 30, // (event, caster, spellid, effindex, creature)
+     *     CREATURE_EVENT_ON_QUEST_ACCEPT                    = 31, // (event, player, creature, quest) - Can return true
+     *     // UNUSED                                         = 32, // (event, creature)
+     *     // UNUSED                                         = 33, // (event, creature)
+     *     CREATURE_EVENT_ON_QUEST_REWARD                    = 34, // (event, player, creature, quest, opt) - Can return true
+     *     CREATURE_EVENT_ON_DIALOG_STATUS                   = 35, // (event, player, creature)
+     *     CREATURE_EVENT_ON_ADD                             = 36, // (event, creature)
+     *     CREATURE_EVENT_ON_REMOVE                          = 37, // (event, creature)
+     *     CREATURE_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (entry, event, function) + * @proto cancel = (entry, event, function, shots) + * + * @param uint32 entry : the ID of one or more [Creature]s + * @param uint32 event : refer to CreatureEvents above + * @param function function : function that will be called when the event occurs + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterCreatureEvent(lua_State* L) + { + return RegisterEntryHelper(L, Hooks::REGTYPE_CREATURE); + } + + /** + * Registers a [Creature] event handler for a *single* [Creature]. + * + *
+     * enum CreatureEvents
+     * {
+     *     CREATURE_EVENT_ON_ENTER_COMBAT                    = 1,  // (event, creature, target) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_LEAVE_COMBAT                    = 2,  // (event, creature) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_TARGET_DIED                     = 3,  // (event, creature, victim) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_DIED                            = 4,  // (event, creature, killer) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_SPAWN                           = 5,  // (event, creature) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_REACH_WP                        = 6,  // (event, creature, type, id) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_AIUPDATE                        = 7,  // (event, creature, diff) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_RECEIVE_EMOTE                   = 8,  // (event, creature, player, emoteid) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_DAMAGE_TAKEN                    = 9,  // (event, creature, attacker, damage) - Can return true to stop normal action, can return new damage as second return value.
+     *     CREATURE_EVENT_ON_PRE_COMBAT                      = 10, // (event, creature, target) - Can return true to stop normal action
+     *     // UNUSED
+     *     CREATURE_EVENT_ON_OWNER_ATTACKED                  = 12, // (event, creature, target) - Can return true to stop normal action            // Not on mangos
+     *     CREATURE_EVENT_ON_OWNER_ATTACKED_AT               = 13, // (event, creature, attacker) - Can return true to stop normal action          // Not on mangos
+     *     CREATURE_EVENT_ON_HIT_BY_SPELL                    = 14, // (event, creature, caster, spellid) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_SPELL_HIT_TARGET                = 15, // (event, creature, target, spellid) - Can return true to stop normal action
+     *     // UNUSED                                         = 16, // (event, creature)
+     *     // UNUSED                                         = 17, // (event, creature)
+     *     // UNUSED                                         = 18, // (event, creature)
+     *     CREATURE_EVENT_ON_JUST_SUMMONED_CREATURE          = 19, // (event, creature, summon) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_SUMMONED_CREATURE_DESPAWN       = 20, // (event, creature, summon) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_SUMMONED_CREATURE_DIED          = 21, // (event, creature, summon, killer) - Can return true to stop normal action    // Not on mangos
+     *     CREATURE_EVENT_ON_SUMMONED                        = 22, // (event, creature, summoner) - Can return true to stop normal action
+     *     CREATURE_EVENT_ON_RESET                           = 23, // (event, creature)
+     *     CREATURE_EVENT_ON_REACH_HOME                      = 24, // (event, creature) - Can return true to stop normal action
+     *     // UNUSED                                         = 25, // (event, creature)
+     *     CREATURE_EVENT_ON_CORPSE_REMOVED                  = 26, // (event, creature, respawndelay) - Can return true to stop normal action, can return new respawndelay as second return value
+     *     CREATURE_EVENT_ON_MOVE_IN_LOS                     = 27, // (event, creature, unit) - Can return true to stop normal action. Does not actually check LOS, just uses the sight range
+     *     // UNUSED                                         = 28, // (event, creature)
+     *     // UNUSED                                         = 29, // (event, creature)
+     *     CREATURE_EVENT_ON_DUMMY_EFFECT                    = 30, // (event, caster, spellid, effindex, creature)
+     *     CREATURE_EVENT_ON_QUEST_ACCEPT                    = 31, // (event, player, creature, quest) - Can return true
+     *     // UNUSED                                         = 32, // (event, creature)
+     *     // UNUSED                                         = 33, // (event, creature)
+     *     CREATURE_EVENT_ON_QUEST_REWARD                    = 34, // (event, player, creature, quest, opt) - Can return true
+     *     CREATURE_EVENT_ON_DIALOG_STATUS                   = 35, // (event, player, creature)
+     *     CREATURE_EVENT_ON_ADD                             = 36, // (event, creature)
+     *     CREATURE_EVENT_ON_REMOVE                          = 37, // (event, creature)
+     *     CREATURE_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (guid, instance_id, event, function) + * @proto cancel = (guid, instance_id, event, function, shots) + * + * @param ObjectGuid guid : the GUID of a single [Creature] + * @param uint32 instance_id : the instance ID of a single [Creature] + * @param uint32 event : refer to CreatureEvents above + * @param function function : function that will be called when the event occurs + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterUniqueCreatureEvent(lua_State* L) + { + return RegisterUniqueHelper(L, Hooks::REGTYPE_CREATURE); + } + + /** + * Registers a [GameObject] event handler. + * + *
+     * enum GameObjectEvents
+     * {
+     *     GAMEOBJECT_EVENT_ON_AIUPDATE                    = 1,    // (event, go, diff)
+     *     GAMEOBJECT_EVENT_ON_SPAWN                       = 2,    // (event, go)
+     *     GAMEOBJECT_EVENT_ON_DUMMY_EFFECT                = 3,    // (event, caster, spellid, effindex, go) - Can return true to stop normal action
+     *     GAMEOBJECT_EVENT_ON_QUEST_ACCEPT                = 4,    // (event, player, go, quest) - Can return true to stop normal action
+     *     GAMEOBJECT_EVENT_ON_QUEST_REWARD                = 5,    // (event, player, go, quest, opt) - Can return true to stop normal action
+     *     GAMEOBJECT_EVENT_ON_DIALOG_STATUS               = 6,    // (event, player, go)
+     *     GAMEOBJECT_EVENT_ON_DESTROYED                   = 7,    // (event, go, attacker)
+     *     GAMEOBJECT_EVENT_ON_DAMAGED                     = 8,    // (event, go, attacker)
+     *     GAMEOBJECT_EVENT_ON_LOOT_STATE_CHANGE           = 9,    // (event, go, state)
+     *     GAMEOBJECT_EVENT_ON_GO_STATE_CHANGED            = 10,   // (event, go, state)
+     *     // UNUSED                                       = 11,   // (event, gameobject)
+     *     GAMEOBJECT_EVENT_ON_ADD                         = 12,   // (event, gameobject)
+     *     GAMEOBJECT_EVENT_ON_REMOVE                      = 13,   // (event, gameobject)
+     *     GAMEOBJECT_EVENT_ON_USE                         = 14,   // (event, go, player) - Can return true to stop normal action
+     *     GAMEOBJECT_EVENT_COUNT
+     * };
+     * 
+ * + * @proto cancel = (entry, event, function) + * @proto cancel = (entry, event, function, shots) + * + * @param uint32 entry : [GameObject] entry Id + * @param uint32 event : [GameObject] event Id, refer to GameObjectEvents above + * @param function function : function to register + * @param uint32 shots = 0 : the number of times the function will be called, 0 means "always call this function" + * + * @return function cancel : a function that cancels the binding when called + */ + int RegisterGameObjectEvent(lua_State* L) + { + return RegisterEntryHelper(L, Hooks::REGTYPE_GAMEOBJECT); + } + + /** + * Reloads the Lua engine. + */ + int ReloadEluna(lua_State* /*L*/) + { + Eluna::ReloadEluna(); + return 0; + } + + /** + * Runs a command. + * + * @param string command : the command to run + */ + int RunCommand(lua_State* L) + { + const char* command = Eluna::CHECKVAL(L, 1); +#if defined TRINITY || AZEROTHCORE + eWorld->QueueCliCommand(new CliCommandHolder(nullptr, command, [](void*, std::string_view view) + { + std::string str = { view.begin(), view.end() }; + str.erase(std::find_if(str.rbegin(), str.rend(), [](unsigned char ch) { return !std::isspace(ch); }).base(), str.end()); // Remove trailing spaces and line breaks + ELUNA_LOG_INFO("{}", str); + }, nullptr)); +#elif defined MANGOS + eWorld->QueueCliCommand(new CliCommandHolder(0, SEC_CONSOLE, nullptr, command, nullptr, nullptr)); +#endif + return 0; + } + + /** + * Sends a message to all [Player]s online. + * + * @param string message : message to send + */ + int SendWorldMessage(lua_State* L) + { + const char* message = Eluna::CHECKVAL(L, 1); + eWorld->SendServerMessage(SERVER_MSG_STRING, message); + return 0; + } + + template + static int DBQueryAsync(lua_State* L, DatabaseWorkerPool& db) + { + const char* query = Eluna::CHECKVAL(L, 1); + luaL_checktype(L, 2, LUA_TFUNCTION); + lua_pushvalue(L, 2); + int funcRef = luaL_ref(L, LUA_REGISTRYINDEX); + if (funcRef == LUA_REFNIL || funcRef == LUA_NOREF) + { + luaL_argerror(L, 2, "unable to make a ref to function"); + return 0; + } + + Eluna::GEluna->queryProcessor.AddCallback(db.AsyncQuery(query).WithCallback([L, funcRef](QueryResult result) + { + ElunaQuery* eq = result ? new ElunaQuery(result) : nullptr; + + LOCK_ELUNA; + + // Get function + lua_rawgeti(L, LUA_REGISTRYINDEX, funcRef); + + // Push parameters + Eluna::Push(L, eq); + + // Call function + Eluna::GEluna->ExecuteCall(1, 0); + + luaL_unref(L, LUA_REGISTRYINDEX, funcRef); + })); + + return 0; + } + + /** + * Executes a SQL query on the world database and returns an [ElunaQuery]. + * + * The query is always executed synchronously + * (i.e. execution halts until the query has finished and then results are returned). + * If you need to execute the query asynchronously, use [Global:WorldDBQueryAsync] instead. + * + * local Q = WorldDBQuery("SELECT entry, name FROM creature_template LIMIT 10") + * if Q then + * repeat + * local entry, name = Q:GetUInt32(0), Q:GetString(1) + * print(entry, name) + * until not Q:NextRow() + * end + * + * @param string sql : query to execute + * @return [ElunaQuery] results or nil if no rows found or nil if no rows found + */ + int WorldDBQuery(lua_State* L) + { + const char* query = Eluna::CHECKVAL(L, 1); + +#if defined TRINITY || AZEROTHCORE + ElunaQuery result = WorldDatabase.Query(query); + if (result) + Eluna::Push(L, new ElunaQuery(result)); + else + Eluna::Push(L); +#else + ElunaQuery* result = WorldDatabase.QueryNamed(query); + if (result) + Eluna::Push(L, result); + else + Eluna::Push(L); +#endif + return 1; + } + + /** + * Executes an asynchronous SQL query on the world database and passes an [ElunaQuery] to a callback function. + * + * The query is executed asynchronously + * (i.e. the server keeps running while the query is executed in parallel, and results are passed to a callback function). + * If you need to execute the query synchronously, use [Global:WorldDBQuery] instead. + * + * WorldDBQueryAsync("SELECT entry, name FROM creature_template LIMIT 10", function(Q) + * if Q then + * repeat + * local entry, name = Q:GetUInt32(0), Q:GetString(1) + * print(entry, name) + * until not Q:NextRow() + * end + * end) + * + * @param string sql : query to execute + * @param function callback : function that will be called when the results are available + */ + int WorldDBQueryAsync(lua_State* L) + { + return DBQueryAsync(L, WorldDatabase); + } + + /** + * Executes a SQL query on the world database. + * + * The query may be executed *asynchronously* (at a later, unpredictable time). + * If you need to execute the query synchronously, use [Global:WorldDBQuery] instead. + * + * Any results produced are ignored. + * If you need results from the query, use [Global:WorldDBQuery] or [Global:WorldDBQueryAsync] instead. + * + * WorldDBExecute("DELETE FROM my_table") + * + * @param string sql : query to execute + */ + int WorldDBExecute(lua_State* L) + { + const char* query = Eluna::CHECKVAL(L, 1); + WorldDatabase.Execute(query); + return 0; + } + + /** + * Executes a SQL query on the character database and returns an [ElunaQuery]. + * + * The query is always executed synchronously + * (i.e. execution halts until the query has finished and then results are returned). + * If you need to execute the query asynchronously, use [Global:CharDBQueryAsync] instead. + * + * For an example see [Global:WorldDBQuery]. + * + * @param string sql : query to execute + * @return [ElunaQuery] results or nil if no rows found + */ + int CharDBQuery(lua_State* L) + { + const char* query = Eluna::CHECKVAL(L, 1); + +#if defined TRINITY || AZEROTHCORE + QueryResult result = CharacterDatabase.Query(query); + if (result) + Eluna::Push(L, new QueryResult(result)); + else + Eluna::Push(L); +#else + QueryNamedResult* result = CharacterDatabase.QueryNamed(query); + if (result) + Eluna::Push(L, result); + else + Eluna::Push(L); +#endif + return 1; + } + + /** + * Executes an asynchronous SQL query on the character database and passes an [ElunaQuery] to a callback function. + * + * The query is executed asynchronously + * (i.e. the server keeps running while the query is executed in parallel, and results are passed to a callback function). + * If you need to execute the query synchronously, use [Global:CharDBQuery] instead. + * + * For an example see [Global:WorldDBQueryAsync]. + * + * @param string sql : query to execute + * @param function callback : function that will be called when the results are available + */ + int CharDBQueryAsync(lua_State* L) + { + return DBQueryAsync(L, CharacterDatabase); + } + + /** + * Executes a SQL query on the character database. + * + * The query may be executed *asynchronously* (at a later, unpredictable time). + * If you need to execute the query synchronously, use [Global:CharDBQuery] instead. + * + * Any results produced are ignored. + * If you need results from the query, use [Global:CharDBQuery] or [Global:CharDBQueryAsync] instead. + * + * CharDBExecute("DELETE FROM my_table") + * + * @param string sql : query to execute + */ + int CharDBExecute(lua_State* L) + { + const char* query = Eluna::CHECKVAL(L, 1); + CharacterDatabase.Execute(query); + return 0; + } + + /** + * Executes a SQL query on the login database and returns an [ElunaQuery]. + * + * The query is always executed synchronously + * (i.e. execution halts until the query has finished and then results are returned). + * If you need to execute the query asynchronously, use [Global:AuthDBQueryAsync] instead. + * + * For an example see [Global:WorldDBQuery]. + * + * @param string sql : query to execute + * @return [ElunaQuery] results or nil if no rows found + */ + int AuthDBQuery(lua_State* L) + { + const char* query = Eluna::CHECKVAL(L, 1); + +#if defined TRINITY || AZEROTHCORE + QueryResult result = LoginDatabase.Query(query); + if (result) + Eluna::Push(L, new QueryResult(result)); + else + Eluna::Push(L); +#else + QueryNamedResult* result = LoginDatabase.QueryNamed(query); + if (result) + Eluna::Push(L, result); + else + Eluna::Push(L); +#endif + return 1; + } + + /** + * Executes an asynchronous SQL query on the character database and passes an [ElunaQuery] to a callback function. + * + * The query is executed asynchronously + * (i.e. the server keeps running while the query is executed in parallel, and results are passed to a callback function). + * If you need to execute the query synchronously, use [Global:AuthDBQuery] instead. + * + * For an example see [Global:WorldDBQueryAsync]. + * + * @param string sql : query to execute + * @param function callback : function that will be called when the results are available + */ + int AuthDBQueryAsync(lua_State* L) + { + return DBQueryAsync(L, LoginDatabase); + } + + /** + * Executes a SQL query on the login database. + * + * The query may be executed *asynchronously* (at a later, unpredictable time). + * If you need to execute the query synchronously, use [Global:AuthDBQuery] instead. + * + * Any results produced are ignored. + * If you need results from the query, use [Global:AuthDBQuery] or [Global:AuthDBQueryAsync] instead. + * + * AuthDBExecute("DELETE FROM my_table") + * + * @param string sql : query to execute + */ + int AuthDBExecute(lua_State* L) + { + const char* query = Eluna::CHECKVAL(L, 1); + LoginDatabase.Execute(query); + return 0; + } + + /** + * Registers a global timed event. + * + * When the passed function is called, the parameters `(eventId, delay, repeats)` are passed to it. + * + * Repeats will decrease on each call if the event does not repeat indefinitely + * + * @proto eventId = (function, delay) + * @proto eventId = (function, delaytable) + * @proto eventId = (function, delay, repeats) + * @proto eventId = (function, delaytable, repeats) + * + * @param function function : function to trigger when the time has passed + * @param uint32 delay : set time in milliseconds for the event to trigger + * @param table delaytable : a table `{min, max}` containing the minimum and maximum delay time + * @param uint32 repeats = 1 : how many times for the event to repeat, 0 is infinite + * @return int eventId : unique ID for the timed event used to cancel it or nil + */ + int CreateLuaEvent(lua_State* L) + { + luaL_checktype(L, 1, LUA_TFUNCTION); + uint32 min, max; + if (lua_istable(L, 2)) + { + Eluna::Push(L, 1); + lua_gettable(L, 2); + min = Eluna::CHECKVAL(L, -1); + Eluna::Push(L, 2); + lua_gettable(L, 2); + max = Eluna::CHECKVAL(L, -1); + lua_pop(L, 2); + } + else + min = max = Eluna::CHECKVAL(L, 2); + uint32 repeats = Eluna::CHECKVAL(L, 3, 1); + + if (min > max) + return luaL_argerror(L, 2, "min is bigger than max delay"); + + lua_pushvalue(L, 1); + int functionRef = luaL_ref(L, LUA_REGISTRYINDEX); + if (functionRef != LUA_REFNIL && functionRef != LUA_NOREF) + { + Eluna::GetEluna(L)->eventMgr->globalProcessor->AddEvent(functionRef, min, max, repeats); + Eluna::Push(L, functionRef); + } + return 1; + } + + /** + * Removes a global timed event specified by ID. + * + * @param int eventId : event Id to remove + * @param bool all_Events = false : remove from all events, not just global + */ + int RemoveEventById(lua_State* L) + { + int eventId = Eluna::CHECKVAL(L, 1); + bool all_Events = Eluna::CHECKVAL(L, 1, false); + + // not thread safe + if (all_Events) + Eluna::GetEluna(L)->eventMgr->SetState(eventId, LUAEVENT_STATE_ABORT); + else + Eluna::GetEluna(L)->eventMgr->globalProcessor->SetState(eventId, LUAEVENT_STATE_ABORT); + return 0; + } + + /** + * Removes all global timed events. + * + * @param bool all_Events = false : remove all events, not just global + */ + int RemoveEvents(lua_State* L) + { + bool all_Events = Eluna::CHECKVAL(L, 1, false); + + // not thread safe + if (all_Events) + Eluna::GetEluna(L)->eventMgr->SetStates(LUAEVENT_STATE_ABORT); + else + Eluna::GetEluna(L)->eventMgr->globalProcessor->SetStates(LUAEVENT_STATE_ABORT); + return 0; + } + + /** + * Performs an in-game spawn and returns the [Creature] or [GameObject] spawned. + * + * @param int32 spawnType : type of object to spawn, 1 = [Creature], 2 = [GameObject] + * @param uint32 entry : entry ID of the [Creature] or [GameObject] + * @param uint32 mapId : map ID to spawn the [Creature] or [GameObject] in + * @param uint32 instanceId : instance ID to put the [Creature] or [GameObject] in. Non instance is 0 + * @param float x : x coordinate of the [Creature] or [GameObject] + * @param float y : y coordinate of the [Creature] or [GameObject] + * @param float z : z coordinate of the [Creature] or [GameObject] + * @param float o : o facing/orientation of the [Creature] or [GameObject] + * @param bool save = false : optional to save the [Creature] or [GameObject] to the database + * @param uint32 durorresptime = 0 : despawn time of the [Creature] if it's not saved or respawn time of [GameObject] + * @param uint32 phase = 1 : phase to put the [Creature] or [GameObject] in + * @return [WorldObject] worldObject : returns [Creature] or [GameObject] + */ + int PerformIngameSpawn(lua_State* L) + { + int spawntype = Eluna::CHECKVAL(L, 1); + uint32 entry = Eluna::CHECKVAL(L, 2); + uint32 mapID = Eluna::CHECKVAL(L, 3); + uint32 instanceID = Eluna::CHECKVAL(L, 4); + float x = Eluna::CHECKVAL(L, 5); + float y = Eluna::CHECKVAL(L, 6); + float z = Eluna::CHECKVAL(L, 7); + float o = Eluna::CHECKVAL(L, 8); + bool save = Eluna::CHECKVAL(L, 9, false); + uint32 durorresptime = Eluna::CHECKVAL(L, 10, 0); +#if (!defined(TBC) && !defined(CLASSIC)) + uint32 phase = Eluna::CHECKVAL(L, 11, PHASEMASK_NORMAL); + if (!phase) + { + Eluna::Push(L); + return 1; + } +#endif + +#if !defined TRINITY && !AZEROTHCORE + Map* map = eMapMgr->FindMap(mapID, instanceID); + if (!map) + { + Eluna::Push(L); + return 1; + } + + if (spawntype == 1) // spawn creature + { + if (save) + { + CreatureInfo const* cinfo = ObjectMgr::GetCreatureTemplate(entry); + if (!cinfo) + { + Eluna::Push(L); + return 1; + } + +#if (defined(TBC) || defined(CLASSIC)) + CreatureCreatePos pos(map, x, y, z, o); +#else + CreatureCreatePos pos(map, x, y, z, o, phase); +#endif + Creature* pCreature = new Creature; + // used guids from specially reserved range (can be 0 if no free values) + uint32 lowguid = eObjectMgr->GenerateStaticCreatureLowGuid(); + if (!lowguid) + { + Eluna::Push(L); + return 1; + } + + if (!pCreature->Create(lowguid, pos, cinfo)) + { + delete pCreature; + Eluna::Push(L); + return 1; + } + +#ifdef TBC + pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode())); +#elif defined(CLASSIC) + pCreature->SaveToDB(map->GetId()); +#else + pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), phase); +#endif + + uint32 db_guid = pCreature->GetGUIDLow(); + + // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells(); + pCreature->LoadFromDB(db_guid, map); + + map->Add(pCreature); + eObjectMgr->AddCreatureToGrid(db_guid, eObjectMgr->GetCreatureData(db_guid)); + if (durorresptime) + pCreature->ForcedDespawn(durorresptime); + + Eluna::Push(L, pCreature); + } + else + { + CreatureInfo const* cinfo = ObjectMgr::GetCreatureTemplate(entry); + if (!cinfo) + { + Eluna::Push(L); + return 1; + } + + TemporarySummon* pCreature = new TemporarySummon(ObjectGuid(uint64(0))); +#if (defined(TBC) || defined(CLASSIC)) + CreatureCreatePos pos(map, x, y, z, o); +#else + CreatureCreatePos pos(map, x, y, z, o, phase); +#endif + + if (!pCreature->Create(map->GenerateLocalLowGuid(cinfo->GetHighGuid()), pos, cinfo, TEAM_NONE)) + { + delete pCreature; + { + Eluna::Push(L); + return 1; + } + } + + pCreature->SetRespawnCoord(pos); + + // Active state set before added to map + pCreature->SetActiveObjectState(false); + + // Also initializes the AI and MMGen + pCreature->Summon(durorresptime ? TEMPSPAWN_TIMED_OR_DEAD_DESPAWN : TEMPSPAWN_MANUAL_DESPAWN, durorresptime); + + // Creature Linking, Initial load is handled like respawn + if (pCreature->IsLinkingEventTrigger()) + map->GetCreatureLinkingHolder()->DoCreatureLinkingEvent(LINKING_EVENT_RESPAWN, pCreature); + + Eluna::Push(L, pCreature); + } + + return 1; + } + + if (spawntype == 2) // Spawn object + { + if (save) + { + const GameObjectInfo* gInfo = ObjectMgr::GetGameObjectInfo(entry); + if (!gInfo) + { + Eluna::Push(L); + return 1; + } + + // used guids from specially reserved range (can be 0 if no free values) + uint32 db_lowGUID = eObjectMgr->GenerateStaticGameObjectLowGuid(); + if (!db_lowGUID) + { + Eluna::Push(L); + return 1; + } + + GameObject* pGameObj = new GameObject; +#if (defined(TBC) || defined(CLASSIC)) + if (!pGameObj->Create(db_lowGUID, gInfo->id, map, x, y, z, o)) +#else + if (!pGameObj->Create(db_lowGUID, gInfo->id, map, phase, x, y, z, o)) +#endif + { + delete pGameObj; + Eluna::Push(L); + return 1; + } + + if (durorresptime) + pGameObj->SetRespawnTime(durorresptime); + + // fill the gameobject data and save to the db +#ifdef TBC + pGameObj->SaveToDB(map->GetId(), (1 << map->GetSpawnMode())); +#elif defined(CLASSIC) + pGameObj->SaveToDB(map->GetId()); +#else + pGameObj->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), phase); +#endif + + // this will generate a new guid if the object is in an instance + if (!pGameObj->LoadFromDB(db_lowGUID, map)) + { + delete pGameObj; + Eluna::Push(L); + return 1; + } + + // DEBUG_LOG(GetMangosString(LANG_GAMEOBJECT_CURRENT), gInfo->name, db_lowGUID, x, y, z, o); + + map->Add(pGameObj); + pGameObj->AIM_Initialize(); + + eObjectMgr->AddGameobjectToGrid(db_lowGUID, eObjectMgr->GetGOData(db_lowGUID)); + + Eluna::Push(L, pGameObj); + } + else + { + GameObject* pGameObj = new GameObject; + +#if (defined(TBC) || defined(CLASSIC)) + if (!pGameObj->Create(map->GenerateLocalLowGuid(HIGHGUID_GAMEOBJECT), entry, map, x, y, z, o)) +#else + if (!pGameObj->Create(map->GenerateLocalLowGuid(HIGHGUID_GAMEOBJECT), entry, map, phase, x, y, z, o)) +#endif + { + delete pGameObj; + Eluna::Push(L); + return 1; + } + + pGameObj->SetRespawnTime(durorresptime / IN_MILLISECONDS); + + map->Add(pGameObj); + pGameObj->AIM_Initialize(); + + Eluna::Push(L, pGameObj); + } + return 1; + } +#else + Map* map = eMapMgr->FindMap(mapID, instanceID); + if (!map) + { + Eluna::Push(L); + return 1; + } + + Position pos = { x, y, z, o }; + + if (spawntype == 1) // spawn creature + { + if (save) + { + Creature* creature = new Creature(); +#ifndef AZEROTHCORE + if (!creature->Create(map->GenerateLowGuid(), map, phase, entry, pos)) +#else + if (!creature->Create(map->GenerateLowGuid(), map, phase, entry, 0, x, y, z, o)) +#endif + { + delete creature; + Eluna::Push(L); + return 1; + } + + creature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), phase); + + uint32 db_guid = creature->GetSpawnId(); + + // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells() + // current "creature" variable is deleted and created fresh new, otherwise old values might trigger asserts or cause undefined behavior + creature->CleanupsBeforeDelete(); + delete creature; + creature = new Creature(); +#ifndef AZEROTHCORE + if (!creature->LoadFromDB(db_guid, map, true, true)) +#else + if (!creature->LoadFromDB(db_guid, map, true)) +#endif + { + delete creature; + Eluna::Push(L); + return 1; + } + + eObjectMgr->AddCreatureToGrid(db_guid, eObjectMgr->GetCreatureData(db_guid)); + Eluna::Push(L, creature); + } + else + { + TempSummon* creature = map->SummonCreature(entry, pos, NULL, durorresptime); + if (!creature) + { + Eluna::Push(L); + return 1; + } + + if (durorresptime) + creature->SetTempSummonType(TEMPSUMMON_TIMED_OR_DEAD_DESPAWN); + else + creature->SetTempSummonType(TEMPSUMMON_MANUAL_DESPAWN); + + Eluna::Push(L, creature); + } + + return 1; + } + + if (spawntype == 2) // Spawn object + { + const GameObjectTemplate* objectInfo = eObjectMgr->GetGameObjectTemplate(entry); + if (!objectInfo) + { + Eluna::Push(L); + return 1; + } + + if (objectInfo->displayId && !sGameObjectDisplayInfoStore.LookupEntry(objectInfo->displayId)) + { + Eluna::Push(L); + return 1; + } + + GameObject* object = new GameObject; +#ifndef AZEROTHCORE + uint32 guidLow = map->GenerateLowGuid(); + QuaternionData rot = QuaternionData::fromEulerAnglesZYX(o, 0.f, 0.f); + if (!object->Create(guidLow, objectInfo->entry, map, phase, Position(x, y, z, o), rot, 0, GO_STATE_READY)) +#else + uint32 guidLow = map->GenerateLowGuid(); + if (!object->Create(guidLow, entry, map, phase, x, y, z, o, G3D::Quat(0.0f, 0.0f, 0.0f, 0.0f), 100, GO_STATE_READY)) +#endif + { + delete object; + Eluna::Push(L); + return 1; + } + + if (durorresptime) + object->SetRespawnTime(durorresptime); + + if (save) + { + // fill the gameobject data and save to the db + object->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), phase); + guidLow = object->GetSpawnId(); + + // delete the old object and do a clean load from DB with a fresh new GameObject instance. + // this is required to avoid weird behavior and memory leaks + delete object; + + object = new GameObject(); + // this will generate a new lowguid if the object is in an instance +#ifndef AZEROTHCORE + if (!object->LoadFromDB(guidLow, map, true)) +#else + if (!object->LoadFromDB(guidLow, map)) +#endif + { + delete object; + Eluna::Push(L); + return 1; + } + + eObjectMgr->AddGameobjectToGrid(guidLow, eObjectMgr->GetGameObjectData(guidLow)); + } + else + map->AddToMap(object); + Eluna::Push(L, object); + return 1; + } +#endif + Eluna::Push(L); + return 1; + } + + /** + * Creates a [WorldPacket]. + * + * @param [Opcodes] opcode : the opcode of the packet + * @param uint32 size : the size of the packet + * @return [WorldPacket] packet + */ + int CreatePacket(lua_State* L) + { + uint32 opcode = Eluna::CHECKVAL(L, 1); + size_t size = Eluna::CHECKVAL(L, 2); + if (opcode >= NUM_MSG_TYPES) + return luaL_argerror(L, 1, "valid opcode expected"); + + Eluna::Push(L, new WorldPacket((OpcodesList)opcode, size)); + return 1; + } + + /** + * Adds an [Item] to a vendor and updates the world database. + * + * @param uint32 entry : [Creature] entry Id + * @param uint32 item : [Item] entry Id + * @param int32 maxcount : max [Item] stack count + * @param uint32 incrtime : combined with maxcount, incrtime tells how often (in seconds) the vendor list is refreshed and the limited [Item] copies are restocked + * @param uint32 extendedcost : unique cost of an [Item], such as conquest points for example + */ + int AddVendorItem(lua_State* L) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 item = Eluna::CHECKVAL(L, 2); + int maxcount = Eluna::CHECKVAL(L, 3); + uint32 incrtime = Eluna::CHECKVAL(L, 4); + uint32 extendedcost = Eluna::CHECKVAL(L, 5); + +#if defined TRINITY || AZEROTHCORE +#ifdef CATA + if (!eObjectMgr->IsVendorItemValid(entry, item, maxcount, incrtime, extendedcost, 1)) + return 0; + eObjectMgr->AddVendorItem(entry, item, maxcount, incrtime, extendedcost, 1); +#else + if (!eObjectMgr->IsVendorItemValid(entry, item, maxcount, incrtime, extendedcost)) + return 0; + eObjectMgr->AddVendorItem(entry, item, maxcount, incrtime, extendedcost); +#endif +#else + if (!eObjectMgr->IsVendorItemValid(false, "npc_vendor", entry, item, maxcount, incrtime, extendedcost, 0)) + return 0; +#ifndef CLASSIC + eObjectMgr->AddVendorItem(entry, item, maxcount, incrtime, extendedcost); +#else + eObjectMgr->AddVendorItem(entry, item, maxcount, incrtime); +#endif +#endif//TRINITY + return 0; + } + + /** + * Removes an [Item] from a vendor and updates the database. + * + * @param uint32 entry : [Creature] entry Id + * @param uint32 item : [Item] entry Id + */ + int VendorRemoveItem(lua_State* L) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 item = Eluna::CHECKVAL(L, 2); + if (!eObjectMgr->GetCreatureTemplate(entry)) + return luaL_argerror(L, 1, "valid CreatureEntry expected"); + +#if defined(CATA) || defined(MISTS) + eObjectMgr->RemoveVendorItem(entry, item, 1); +#else + eObjectMgr->RemoveVendorItem(entry, item); +#endif + return 0; + } + + /** + * Removes all [Item]s from a vendor and updates the database. + * + * @param uint32 entry : [Creature] entry Id + */ + int VendorRemoveAllItems(lua_State* L) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + + VendorItemData const* items = eObjectMgr->GetNpcVendorItemList(entry); + if (!items || items->Empty()) + return 0; + + auto const& itemlist = items->m_items; + for (auto itr = itemlist.rbegin(); itr != itemlist.rend(); ++itr) +#if defined(CATA) || defined(MISTS) + eObjectMgr->RemoveVendorItem(entry, (*itr)->item, 1); +#else +#ifdef TRINITY + eObjectMgr->RemoveVendorItem(entry, itr->item); +#else + eObjectMgr->RemoveVendorItem(entry, (*itr)->item); +#endif +#endif + return 0; + } + + /** + * Kicks a [Player] from the server. + * + * @param [Player] player : [Player] to kick + */ + int Kick(lua_State* L) + { + Player* player = Eluna::CHECKOBJ(L, 1); +#ifdef TRINITY + player->GetSession()->KickPlayer("GlobalMethods::Kick Kick the player"); +#else + player->GetSession()->KickPlayer(); +#endif + return 0; + } + + /** + * Ban's a [Player]'s account, character or IP + * + * enum BanMode + * { + * BAN_ACCOUNT = 0, + * BAN_CHARACTER = 1, + * BAN_IP = 2 + * }; + * + * @param [BanMode] banMode : method of ban, refer to BanMode above + * @param string nameOrIP : If BanMode is 0 then accountname, if 1 then charactername if 2 then ip + * @param uint32 duration : duration (in seconds) of the ban + * @param string reason = "" : ban reason, this is optional + * @param string whoBanned = "" : the [Player]'s name that banned the account, character or IP, this is optional + * @return int result : status of the ban. 0 if success, 1 if syntax error, 2 if target not found, 3 if a longer ban already exists, nil if unknown result + */ + int Ban(lua_State* L) + { + int banMode = Eluna::CHECKVAL(L, 1); + std::string nameOrIP = Eluna::CHECKVAL(L, 2); + uint32 duration = Eluna::CHECKVAL(L, 3); + const char* reason = Eluna::CHECKVAL(L, 4, ""); + const char* whoBanned = Eluna::CHECKVAL(L, 5, ""); + + const int BAN_ACCOUNT = 0; + const int BAN_CHARACTER = 1; + const int BAN_IP = 2; + + BanMode mode = BanMode::BAN_ACCOUNT; + + switch (banMode) + { + case BAN_ACCOUNT: +#if defined TRINITY || AZEROTHCORE + if (!Utf8ToUpperOnlyLatin(nameOrIP)) + return luaL_argerror(L, 2, "invalid account name"); +#else + if (!AccountMgr::normalizeString(nameOrIP)) + return luaL_argerror(L, 2, "invalid account name"); +#endif + mode = BanMode::BAN_ACCOUNT; + break; + case BAN_CHARACTER: + if (!normalizePlayerName(nameOrIP)) + return luaL_argerror(L, 2, "invalid character name"); + mode = BanMode::BAN_CHARACTER; + break; + case BAN_IP: + if (!IsIPAddress(nameOrIP.c_str())) + return luaL_argerror(L, 2, "invalid ip"); + mode = BanMode::BAN_IP; + break; + default: + return luaL_argerror(L, 1, "unknown banmode"); + } + + BanReturn result; +#ifndef AZEROTHCORE + result = eWorld->BanAccount(mode, nameOrIP, duration, reason, whoBanned); +#else + switch (banMode) + { + case BAN_ACCOUNT: + result = sBan->BanAccount(nameOrIP, std::to_string(duration) + "s", reason, whoBanned); + break; + case BAN_CHARACTER: + result = sBan->BanCharacter(nameOrIP, std::to_string(duration) + "s", reason, whoBanned); + break; + case BAN_IP: + result = sBan->BanIP(nameOrIP, std::to_string(duration) + "s", reason, whoBanned); + break; + } +#endif + + switch (result) + { + case BanReturn::BAN_SUCCESS: + Eluna::Push(L, 0); + break; + case BanReturn::BAN_SYNTAX_ERROR: + Eluna::Push(L, 1); + break; + case BanReturn::BAN_NOTFOUND: + Eluna::Push(L, 2); + break; +#ifdef AZEROTHCORE + case BanReturn::BAN_LONGER_EXISTS: + Eluna::Push(L, 3); + break; +#elif TRINITY + case BanReturn::BAN_EXISTS: + Eluna::Push(L, 3); + break; +#endif + } + return 1; + } + + /** + * Saves all [Player]s. + */ + int SaveAllPlayers(lua_State* /*L*/) + { + eObjectAccessor()SaveAllPlayers(); + return 0; + } + + /** + * Sends mail to a [Player]. + * + * There can be several item entry-amount pairs at the end of the function. + * There can be maximum of 12 different items. + * + * enum MailStationery + * { + * MAIL_STATIONERY_TEST = 1, + * MAIL_STATIONERY_DEFAULT = 41, + * MAIL_STATIONERY_GM = 61, + * MAIL_STATIONERY_AUCTION = 62, + * MAIL_STATIONERY_VAL = 64, // Valentine + * MAIL_STATIONERY_CHR = 65, // Christmas + * MAIL_STATIONERY_ORP = 67 // Orphan + * }; + * + * @param string subject : title (subject) of the mail + * @param string text : contents of the mail + * @param uint32 receiverGUIDLow : low GUID of the receiver + * @param uint32 senderGUIDLow = 0 : low GUID of the sender + * @param [MailStationery] stationary = MAIL_STATIONERY_DEFAULT : type of mail that is being sent as, refer to MailStationery above + * @param uint32 delay = 0 : mail send delay in milliseconds + * @param uint32 money = 0 : money to send + * @param uint32 cod = 0 : cod money amount + * @param uint32 entry = 0 : entry of an [Item] to send with mail + * @param uint32 amount = 0 : amount of the [Item] to send with mail + * @return uint32 itemGUIDlow : low GUID of the item. Up to 12 values returned, returns nil if no further items are sent + */ + int SendMail(lua_State* L) + { + int i = 0; + std::string subject = Eluna::CHECKVAL(L, ++i); + std::string text = Eluna::CHECKVAL(L, ++i); + uint32 receiverGUIDLow = Eluna::CHECKVAL(L, ++i); + uint32 senderGUIDLow = Eluna::CHECKVAL(L, ++i, 0); + uint32 stationary = Eluna::CHECKVAL(L, ++i, MAIL_STATIONERY_DEFAULT); + uint32 delay = Eluna::CHECKVAL(L, ++i, 0); + uint32 money = Eluna::CHECKVAL(L, ++i, 0); + uint32 cod = Eluna::CHECKVAL(L, ++i, 0); + int argAmount = lua_gettop(L); + + MailSender sender(MAIL_NORMAL, senderGUIDLow, (MailStationery)stationary); + MailDraft draft(subject, text); + +#if defined TRINITY || AZEROTHCORE + if (cod) + draft.AddCOD(cod); + if (money) + draft.AddMoney(money); +#else + if (cod) + draft.SetCOD(cod); + if (money) + draft.SetMoney(money); +#endif + +#if defined TRINITY || defined AZEROTHCORE + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); +#endif + uint8 addedItems = 0; + while (addedItems <= MAX_MAIL_ITEMS && i + 2 <= argAmount) + { + uint32 entry = Eluna::CHECKVAL(L, ++i); + uint32 amount = Eluna::CHECKVAL(L, ++i); + +#if defined TRINITY || AZEROTHCORE + ItemTemplate const* item_proto = eObjectMgr->GetItemTemplate(entry); +#else + ItemTemplate const* item_proto = ObjectMgr::GetItemPrototype(entry); +#endif + if (!item_proto) + { + luaL_error(L, "Item entry %d does not exist", entry); + continue; + } + if (amount < 1 || (item_proto->MaxCount > 0 && amount > uint32(item_proto->MaxCount))) + { + luaL_error(L, "Item entry %d has invalid amount %d", entry, amount); + continue; + } + if (Item* item = Item::CreateItem(entry, amount)) + { +#if defined TRINITY || AZEROTHCORE + item->SaveToDB(trans); +#else + item->SaveToDB(); +#endif + draft.AddItem(item); +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, item->GetGUID().GetCounter()); +#else + Eluna::Push(L, item->GetGUIDLow()); +#endif + ++addedItems; + } + } + + Player* receiverPlayer = eObjectAccessor()FindPlayer(MAKE_NEW_GUID(receiverGUIDLow, 0, HIGHGUID_PLAYER)); +#if defined TRINITY || AZEROTHCORE + draft.SendMailTo(trans, MailReceiver(receiverPlayer, receiverGUIDLow), sender, MAIL_CHECK_MASK_NONE, delay); + CharacterDatabase.CommitTransaction(trans); +#else + draft.SendMailTo(MailReceiver(receiverPlayer, MAKE_NEW_GUID(receiverGUIDLow, 0, HIGHGUID_PLAYER)), sender); +#endif + return addedItems; + } + + /** + * Performs a bitwise AND (a & b). + * + * @param uint32 a + * @param uint32 b + * @return uint32 result + */ + int bit_and(lua_State* L) + { + uint32 a = Eluna::CHECKVAL(L, 1); + uint32 b = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, a & b); + return 1; + } + + /** + * Performs a bitwise OR (a | b). + * + * @param uint32 a + * @param uint32 b + * @return uint32 result + */ + int bit_or(lua_State* L) + { + uint32 a = Eluna::CHECKVAL(L, 1); + uint32 b = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, a | b); + return 1; + } + + /** + * Performs a bitwise left-shift (a << b). + * + * @param uint32 a + * @param uint32 b + * @return uint32 result + */ + int bit_lshift(lua_State* L) + { + uint32 a = Eluna::CHECKVAL(L, 1); + uint32 b = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, a << b); + return 1; + } + + /** + * Performs a bitwise right-shift (a >> b). + * + * @param uint32 a + * @param uint32 b + * @return uint32 result + */ + int bit_rshift(lua_State* L) + { + uint32 a = Eluna::CHECKVAL(L, 1); + uint32 b = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, a >> b); + return 1; + } + + /** + * Performs a bitwise XOR (a ^ b). + * + * @param uint32 a + * @param uint32 b + * @return uint32 result + */ + int bit_xor(lua_State* L) + { + uint32 a = Eluna::CHECKVAL(L, 1); + uint32 b = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, a ^ b); + return 1; + } + + /** + * Performs a bitwise NOT (~a). + * + * @param uint32 a + * @return uint32 result + */ + int bit_not(lua_State* L) + { + uint32 a = Eluna::CHECKVAL(L, 1); + Eluna::Push(L, ~a); + return 1; + } + + /** + * Adds a taxi path to a specified map, returns the used pathId. + * + * Note that the first taxi point needs to be near the player when he starts the taxi path. + * The function should also be used only **once** per path added so use it on server startup for example. + * + * Related function: [Player:StartTaxi] + * + * -- Execute on startup + * local pathTable = {{mapid, x, y, z}, {mapid, x, y, z}} + * local path = AddTaxiPath(pathTable, 28135, 28135) + * + * -- Execute when the player should fly + * player:StartTaxi(path) + * + * @param table waypoints : table containing waypoints: {map, x, y, z[, actionFlag, delay]} + * @param uint32 mountA : alliance [Creature] entry + * @param uint32 mountH : horde [Creature] entry + * @param uint32 price = 0 : price of the taxi path + * @param uint32 pathId = 0 : path Id of the taxi path + * @return uint32 actualPathId + */ + int AddTaxiPath(lua_State* L) + { + luaL_checktype(L, 1, LUA_TTABLE); + uint32 mountA = Eluna::CHECKVAL(L, 2); + uint32 mountH = Eluna::CHECKVAL(L, 3); + uint32 price = Eluna::CHECKVAL(L, 4, 0); + uint32 pathId = Eluna::CHECKVAL(L, 5, 0); + lua_pushvalue(L, 1); + // Stack: {nodes}, mountA, mountH, price, pathid, {nodes} + + std::list nodes; + + int start = lua_gettop(L); + int end = start; + + Eluna::Push(L); + // Stack: {nodes}, mountA, mountH, price, pathid, {nodes}, nil + while (lua_next(L, -2) != 0) + { + // Stack: {nodes}, mountA, mountH, price, pathid, {nodes}, key, value + luaL_checktype(L, -1, LUA_TTABLE); + Eluna::Push(L); + // Stack: {nodes}, mountA, mountH, price, pathid, {nodes}, key, value, nil + while (lua_next(L, -2) != 0) + { + // Stack: {nodes}, mountA, mountH, price, pathid, {nodes}, key, value, key2, value2 + lua_insert(L, end++); + // Stack: {nodes}, mountA, mountH, price, pathid, {nodes}, value2, key, value, key2 + } + // Stack: {nodes}, mountA, mountH, price, pathid, {nodes}, value2, key, value + if (start == end) + continue; + if (end - start < 4) // no mandatory args, dont add + return luaL_argerror(L, 1, "all waypoints do not have mandatory arguments"); + + while (end - start < 8) // fill optional args with 0 + { + Eluna::Push(L, 0); + lua_insert(L, end++); + // Stack: {nodes}, mountA, mountH, price, pathid, {nodes}, node, key, value + } + TaxiPathNodeEntry entry; +#ifdef TRINITY + // mandatory + entry.ContinentID = Eluna::CHECKVAL(L, start); + entry.Loc.X = Eluna::CHECKVAL(L, start + 1); + entry.Loc.Y = Eluna::CHECKVAL(L, start + 2); + entry.Loc.Z = Eluna::CHECKVAL(L, start + 3); + // optional + entry.Flags = Eluna::CHECKVAL(L, start + 4, 0); + entry.Delay = Eluna::CHECKVAL(L, start + 5, 0); +#else + // mandatory + entry.mapid = Eluna::CHECKVAL(L, start); + entry.x = Eluna::CHECKVAL(L, start + 1); + entry.y = Eluna::CHECKVAL(L, start + 2); + entry.z = Eluna::CHECKVAL(L, start + 3); + // optional + entry.actionFlag = Eluna::CHECKVAL(L, start + 4, 0); + entry.delay = Eluna::CHECKVAL(L, start + 5, 0); +#endif + + nodes.push_back(entry); + + while (end != start) // remove args + if (!lua_isnone(L, --end)) + lua_remove(L, end); + // Stack: {nodes}, mountA, mountH, price, pathid, {nodes}, key, value + + lua_pop(L, 1); + // Stack: {nodes}, mountA, mountH, price, pathid, {nodes}, key + } + // Stack: {nodes}, mountA, mountH, price, pathid, {nodes} + lua_pop(L, 1); + // Stack: {nodes}, mountA, mountH, price, pathid + + if (nodes.size() < 2) + return 1; + if (!pathId) + pathId = sTaxiPathNodesByPath.size(); + if (sTaxiPathNodesByPath.size() <= pathId) + sTaxiPathNodesByPath.resize(pathId + 1); + sTaxiPathNodesByPath[pathId].clear(); + sTaxiPathNodesByPath[pathId].resize(nodes.size()); + static uint32 nodeId = 500; + uint32 startNode = nodeId; + uint32 index = 0; + for (std::list::iterator it = nodes.begin(); it != nodes.end(); ++it) + { + TaxiPathNodeEntry& entry = *it; + TaxiNodesEntry* nodeEntry = new TaxiNodesEntry(); +#ifdef TRINITY + entry.PathID = pathId; + entry.NodeIndex = nodeId; + nodeEntry->ID = index; + nodeEntry->ContinentID = entry.ContinentID; + nodeEntry->Pos.X = entry.Loc.X; + nodeEntry->Pos.Y = entry.Loc.Y; + nodeEntry->Pos.Z = entry.Loc.Z; + nodeEntry->MountCreatureID[0] = mountH; + nodeEntry->MountCreatureID[1] = mountA; + sTaxiNodesStore.SetEntry(nodeId++, nodeEntry); + sTaxiPathNodesByPath[pathId][index++] = new TaxiPathNodeEntry(entry); +#else + entry.path = pathId; + entry.index = nodeId; + nodeEntry->ID = index; + nodeEntry->map_id = entry.mapid; + nodeEntry->x = entry.x; + nodeEntry->y = entry.y; + nodeEntry->z = entry.z; + nodeEntry->MountCreatureID[0] = mountH; + nodeEntry->MountCreatureID[1] = mountA; + sTaxiNodesStore.SetEntry(nodeId++, nodeEntry); +#ifndef AZEROTHCORE + sTaxiPathNodesByPath[pathId].set(index++, new TaxiPathNodeEntry(entry)); +#else + sTaxiPathNodesByPath[pathId][index++] = new TaxiPathNodeEntry(entry); +#endif +#endif + } + if (startNode >= nodeId) + return 1; +#ifndef AZEROTHCORE + sTaxiPathSetBySource[startNode][nodeId - 1] = TaxiPathBySourceAndDestination(pathId, price); +#endif + TaxiPathEntry* pathEntry = new TaxiPathEntry(); +#ifdef TRINITY + pathEntry->FromTaxiNode = startNode; + pathEntry->ToTaxiNode = nodeId - 1; + pathEntry->Cost = price; +#else + pathEntry->from = startNode; + pathEntry->to = nodeId - 1; + pathEntry->price = price; +#endif + pathEntry->ID = pathId; + sTaxiPathStore.SetEntry(pathId, pathEntry); +#ifdef AZEROTHCORE + sTaxiPathSetBySource[startNode][nodeId - 1] = pathEntry; +#endif + Eluna::Push(L, pathId); + return 1; + } + + /** + * Returns `true` if the bag and slot is a valid inventory position, otherwise `false`. + * + * Some commonly used combinations: + * + * *Bag 255 (common character inventory)* + * + * - Slots 0-18: equipment + * - Slots 19-22: bag slots + * - Slots 23-38: backpack + * - Slots 39-66: bank main slots + * - Slots 67-74: bank bag slots + * - Slots 86-117: keyring + * + * *Bags 19-22 (equipped bags)* + * + * - Slots 0-35 + * + * *Bags 67-74 (bank bags)* + * + * - Slots 0-35 + * + * @param uint8 bag : the bag the [Item] is in, you can get this with [Item:GetBagSlot] + * @param uint8 slot : the slot the [Item] is in within the bag, you can get this with [Item:GetSlot] + * @return bool isInventoryPos + */ + int IsInventoryPos(lua_State* L) + { + uint8 bag = Eluna::CHECKVAL(L, 1); + uint8 slot = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, Player::IsInventoryPos(bag, slot)); + return 1; + } + + /** + * Returns `true` if the bag and slot is a valid equipment position, otherwise `false`. + * + * See [Global:IsInventoryPos] for bag/slot combination examples. + * + * @param uint8 bag : the bag the [Item] is in, you can get this with [Item:GetBagSlot] + * @param uint8 slot : the slot the [Item] is in within the bag, you can get this with [Item:GetSlot] + * @return bool isEquipmentPosition + */ + int IsEquipmentPos(lua_State* L) + { + uint8 bag = Eluna::CHECKVAL(L, 1); + uint8 slot = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, Player::IsEquipmentPos(bag, slot)); + return 1; + } + + /** + * Returns `true` if the bag and slot is a valid bank position, otherwise `false`. + * + * See [Global:IsInventoryPos] for bag/slot combination examples. + * + * @param uint8 bag : the bag the [Item] is in, you can get this with [Item:GetBagSlot] + * @param uint8 slot : the slot the [Item] is in within the bag, you can get this with [Item:GetSlot] + * @return bool isBankPosition + */ + int IsBankPos(lua_State* L) + { + uint8 bag = Eluna::CHECKVAL(L, 1); + uint8 slot = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, Player::IsBankPos(bag, slot)); + return 1; + } + + /** + * Returns `true` if the bag and slot is a valid bag position, otherwise `false`. + * + * See [Global:IsInventoryPos] for bag/slot combination examples. + * + * @param uint8 bag : the bag the [Item] is in, you can get this with [Item:GetBagSlot] + * @param uint8 slot : the slot the [Item] is in within the bag, you can get this with [Item:GetSlot] + * @return bool isBagPosition + */ + int IsBagPos(lua_State* L) + { + uint8 bag = Eluna::CHECKVAL(L, 1); + uint8 slot = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, Player::IsBagPos((bag << 8) + slot)); + return 1; + } + + /** + * Returns `true` if the event is currently active, otherwise `false`. + * + * @param uint16 eventId : the event id to check. + * @return bool isActive + */ + int IsGameEventActive(lua_State* L) + { + uint16 eventId = Eluna::CHECKVAL(L, 1); + + Eluna::Push(L, eGameEventMgr->IsActiveEvent(eventId)); + return 1; + } + + /** + * Returns the server's current time. + * + * @return uint32 currTime : the current time, in milliseconds + */ + int GetCurrTime(lua_State* L) + { + Eluna::Push(L, ElunaUtil::GetCurrTime()); + return 1; + } + + /** + * Returns the difference between an old timestamp and the current time. + * + * @param uint32 oldTime : an old timestamp, in milliseconds + * @return uint32 timeDiff : the difference, in milliseconds + */ + int GetTimeDiff(lua_State* L) + { + uint32 oldtimems = Eluna::CHECKVAL(L, 1); + + Eluna::Push(L, ElunaUtil::GetTimeDiff(oldtimems)); + return 1; + } + + static std::string GetStackAsString(lua_State* L) + { + std::ostringstream oss; + int top = lua_gettop(L); + for (int i = 1; i <= top; ++i) + { + oss << luaL_tolstring(L, i, NULL); + lua_pop(L, 1); + } + return oss.str(); + } + + /** + * Prints given parameters to the info log. + * + * @param ... + */ + int PrintInfo(lua_State* L) + { + ELUNA_LOG_INFO("{}", GetStackAsString(L)); + return 0; + } + + /** + * Prints given parameters to the error log. + * + * @param ... + */ + int PrintError(lua_State* L) + { + ELUNA_LOG_ERROR("{}", GetStackAsString(L)); + return 0; + } + + /** + * Prints given parameters to the debug log. + * + * @param ... + */ + int PrintDebug(lua_State* L) + { + ELUNA_LOG_DEBUG("{}", GetStackAsString(L)); + return 0; + } + + /** + * Starts the event by eventId, if force is set, the event will force start regardless of previous event state. + * + * @param uint16 eventId : the event id to start. + * @param bool force = false : set `true` to force start the event. + */ + int StartGameEvent(lua_State* L) + { + uint16 eventId = Eluna::CHECKVAL(L, 1); + bool force = Eluna::CHECKVAL(L, 2, false); + + eGameEventMgr->StartEvent(eventId, force); + return 0; + } + + /** + * Stops the event by eventId, if force is set, the event will force stop regardless of previous event state. + * + * @param uint16 eventId : the event id to stop. + * @param bool force = false : set `true` to force stop the event. + */ + int StopGameEvent(lua_State* L) + { + uint16 eventId = Eluna::CHECKVAL(L, 1); + bool force = Eluna::CHECKVAL(L, 2, false); + + eGameEventMgr->StopEvent(eventId, force); + return 0; + } + + /** + * Performs a non-blocking HTTP request. + * + * When the passed callback function is called, the parameters `(status, body, headers)` are passed to it. + * + * -- GET example (prints a random word) + * HttpRequest("GET", "https://random-word-api.herokuapp.com/word", function(status, body, headers) + * print("Random word: " .. string.sub(body, 3, body:len() - 2)) + * end) + * + * -- POST example with JSON request body + * HttpRequest("POST", "https://jsonplaceholder.typicode.com/posts", '{"userId": 1,"title": "Foo","body": "Bar!"}', "application/json", function(status, body, headers) + * print(body) + * end) + * + * -- Example with request headers + * HttpRequest("GET", "https://postman-echo.com/headers", { Accept = "application/json", ["User-Agent"] = "Eluna Lua Engine" }, function(status, body, headers) + * print(body) + * end) + * + * @proto (httpMethod, url, function) + * @proto (httpMethod, url, headers, function) + * @proto (httpMethod, url, body, contentType, function) + * @proto (httpMethod, url, body, contentType, headers, function) + * + * @param string httpMethod : the HTTP method to use (possible values are: `"GET"`, `"HEAD"`, `"POST"`, `"PUT"`, `"PATCH"`, `"DELETE"`, `"OPTIONS"`) + * @param string url : the URL to query + * @param table headers : a table with string key-value pairs containing the request headers + * @param string body : the request's body (only used for POST, PUT and PATCH requests) + * @param string contentType : the body's content-type + * @param function function : function that will be called when the request is executed + */ + int HttpRequest(lua_State* L) + { + std::string httpVerb = Eluna::CHECKVAL(L, 1); + std::string url = Eluna::CHECKVAL(L, 2); + std::string body; + std::string bodyContentType; + httplib::Headers headers; + + int headersIdx = 3; + int callbackIdx = 3; + + if (!lua_istable(L, headersIdx) && lua_isstring(L, headersIdx) && lua_isstring(L, headersIdx + 1)) + { + body = Eluna::CHECKVAL(L, 3); + bodyContentType = Eluna::CHECKVAL(L, 4); + headersIdx = 5; + callbackIdx = 5; + } + + if (lua_istable(L, headersIdx)) + { + ++callbackIdx; + + lua_pushnil(L); // First key + while (lua_next(L, headersIdx) != 0) + { + // Uses 'key' (at index -2) and 'value' (at index -1) + if (lua_isstring(L, -2)) + { + std::string key(lua_tostring(L, -2)); + std::string value(lua_tostring(L, -1)); + headers.insert(std::pair(key, value)); + } + // Removes 'value'; keeps 'key' for next iteration + lua_pop(L, 1); + } + } + + lua_pushvalue(L, callbackIdx); + int funcRef = luaL_ref(L, LUA_REGISTRYINDEX); + if (funcRef >= 0) + { + Eluna::GEluna->httpManager.PushRequest(new HttpWorkItem(funcRef, httpVerb, url, body, bodyContentType, headers)); + } + else + { + luaL_argerror(L, callbackIdx, "unable to make a ref to function"); + } + + return 0; + } + + /** + * Returns an object representing a `long long` (64-bit) value. + * + * The value by default is 0, but can be initialized to a value by passing a number or long long as a string. + * + * @proto value = () + * @proto value = (n) + * @proto value = (n_ll) + * @proto value = (n_str) + * @param int32 n + * @param int64 n_ll + * @param string n_str + * @return int64 value + */ + int CreateLongLong(lua_State* L) + { + long long init = 0; + if (lua_isstring(L, 1)) + { + std::string str = Eluna::CHECKVAL(L, 1); + std::istringstream iss(str); + iss >> init; + if (iss.bad()) + return luaL_argerror(L, 1, "long long (as string) could not be converted"); + } + else if (!lua_isnoneornil(L, 1)) + init = Eluna::CHECKVAL(L, 1); + + Eluna::Push(L, init); + return 1; + } + + /** + * Returns an object representing an `unsigned long long` (64-bit) value. + * + * The value by default is 0, but can be initialized to a value by passing a number or unsigned long long as a string. + * + * @proto value = () + * @proto value = (n) + * @proto value = (n_ull) + * @proto value = (n_str) + * @param uint32 n + * @param uint64 n_ull + * @param string n_str + * @return uint64 value + */ + int CreateULongLong(lua_State* L) + { + unsigned long long init = 0; + if (lua_isstring(L, 1)) + { + std::string str = Eluna::CHECKVAL(L, 1); + std::istringstream iss(str); + iss >> init; + if (iss.bad()) + return luaL_argerror(L, 1, "unsigned long long (as string) could not be converted"); + } + else if (!lua_isnoneornil(L, 1)) + init = Eluna::CHECKVAL(L, 1); + + Eluna::Push(L, init); + return 1; + } + + /** + * Unbinds event handlers for either all [BattleGround] events, or one type of event. + * + * If `event_type` is `nil`, all [BattleGround] event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * @proto () + * @proto (event_type) + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterBGEvent] + */ + int ClearBattleGroundEvents(lua_State* L) + { + typedef EventKey Key; + + if (lua_isnoneornil(L, 1)) + { + Eluna::GetEluna(L)->BGEventBindings->Clear(); + } + else + { + uint32 event_type = Eluna::CHECKVAL(L, 1); + Eluna::GetEluna(L)->BGEventBindings->Clear(Key((Hooks::BGEvents)event_type)); + } + return 0; + } + + /** + * Unbinds event handlers for either all of a [Creature]'s events, or one type of event. + * + * If `event_type` is `nil`, all the [Creature]'s event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * **NOTE:** this will affect all instances of the [Creature], not just one. + * To bind and unbind events to a single [Creature], see [Global:RegisterUniqueCreatureEvent] and [Global:ClearUniqueCreatureEvents]. + * + * @proto (entry) + * @proto (entry, event_type) + * @param uint32 entry : the ID of one or more [Creature]s whose handlers will be cleared + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterCreatureEvent] + */ + int ClearCreatureEvents(lua_State* L) + { + typedef EntryKey Key; + + if (lua_isnoneornil(L, 2)) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + + Eluna* E = Eluna::GetEluna(L); + for (uint32 i = 1; i < Hooks::CREATURE_EVENT_COUNT; ++i) + E->CreatureEventBindings->Clear(Key((Hooks::CreatureEvents)i, entry)); + } + else + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 event_type = Eluna::CHECKVAL(L, 2); + Eluna::GetEluna(L)->CreatureEventBindings->Clear(Key((Hooks::CreatureEvents)event_type, entry)); + } + return 0; + } + + /** + * Unbinds event handlers for either all of a [Creature]'s events, or one type of event. + * + * If `event_type` is `nil`, all the [Creature]'s event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * **NOTE:** this will affect only a single [Creature]. + * To bind and unbind events to all instances of a [Creature], see [Global:RegisterCreatureEvent] and [Global:ClearCreatureEvent]. + * + * @proto (entry) + * @proto (entry, event_type) + * @param ObjectGuid guid : the GUID of a single [Creature] whose handlers will be cleared + * @param uint32 instance_id : the instance ID of a single [Creature] whose handlers will be cleared + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterCreatureEvent] + */ + int ClearUniqueCreatureEvents(lua_State* L) + { + typedef UniqueObjectKey Key; + + if (lua_isnoneornil(L, 3)) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 1); + uint32 instanceId = Eluna::CHECKVAL(L, 2); + + Eluna* E = Eluna::GetEluna(L); + for (uint32 i = 1; i < Hooks::CREATURE_EVENT_COUNT; ++i) + E->CreatureUniqueBindings->Clear(Key((Hooks::CreatureEvents)i, guid, instanceId)); + } + else + { + ObjectGuid guid = Eluna::CHECKVAL(L, 1); + uint32 instanceId = Eluna::CHECKVAL(L, 2); + uint32 event_type = Eluna::CHECKVAL(L, 3); + Eluna::GetEluna(L)->CreatureUniqueBindings->Clear(Key((Hooks::CreatureEvents)event_type, guid, instanceId)); + } + return 0; + } + + /** + * Unbinds event handlers for either all of a [Creature]'s gossip events, or one type of event. + * + * If `event_type` is `nil`, all the [Creature]'s gossip event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * **NOTE:** this will affect all instances of the [Creature], not just one. + * To bind and unbind gossip events to a single [Creature], tell the Eluna developers to implement that. + * + * @proto (entry) + * @proto (entry, event_type) + * @param uint32 entry : the ID of a [Creature] whose handlers will be cleared + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterCreatureGossipEvent] + */ + int ClearCreatureGossipEvents(lua_State* L) + { + typedef EntryKey Key; + + if (lua_isnoneornil(L, 2)) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + + Eluna* E = Eluna::GetEluna(L); + for (uint32 i = 1; i < Hooks::GOSSIP_EVENT_COUNT; ++i) + E->CreatureGossipBindings->Clear(Key((Hooks::GossipEvents)i, entry)); + } + else + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 event_type = Eluna::CHECKVAL(L, 2); + Eluna::GetEluna(L)->CreatureGossipBindings->Clear(Key((Hooks::GossipEvents)event_type, entry)); + } + return 0; + } + + /** + * Unbinds event handlers for either all of a [GameObject]'s events, or one type of event. + * + * If `event_type` is `nil`, all the [GameObject]'s event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * **NOTE:** this will affect all instances of the [GameObject], not just one. + * To bind and unbind events to a single [GameObject], tell the Eluna developers to implement that. + * + * @proto (entry) + * @proto (entry, event_type) + * @param uint32 entry : the ID of a [GameObject] whose handlers will be cleared + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterGameObjectEvent] + */ + int ClearGameObjectEvents(lua_State* L) + { + typedef EntryKey Key; + + if (lua_isnoneornil(L, 2)) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + + Eluna* E = Eluna::GetEluna(L); + for (uint32 i = 1; i < Hooks::GAMEOBJECT_EVENT_COUNT; ++i) + E->GameObjectEventBindings->Clear(Key((Hooks::GameObjectEvents)i, entry)); + } + else + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 event_type = Eluna::CHECKVAL(L, 2); + Eluna::GetEluna(L)->GameObjectEventBindings->Clear(Key((Hooks::GameObjectEvents)event_type, entry)); + } + return 0; + } + + /** + * Unbinds event handlers for either all of a [GameObject]'s gossip events, or one type of event. + * + * If `event_type` is `nil`, all the [GameObject]'s gossip event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * **NOTE:** this will affect all instances of the [GameObject], not just one. + * To bind and unbind gossip events to a single [GameObject], tell the Eluna developers to implement that. + * + * @proto (entry) + * @proto (entry, event_type) + * @param uint32 entry : the ID of a [GameObject] whose handlers will be cleared + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterGameObjectGossipEvent] + */ + int ClearGameObjectGossipEvents(lua_State* L) + { + typedef EntryKey Key; + + if (lua_isnoneornil(L, 2)) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + + Eluna* E = Eluna::GetEluna(L); + for (uint32 i = 1; i < Hooks::GOSSIP_EVENT_COUNT; ++i) + E->GameObjectGossipBindings->Clear(Key((Hooks::GossipEvents)i, entry)); + } + else + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 event_type = Eluna::CHECKVAL(L, 2); + Eluna::GetEluna(L)->GameObjectGossipBindings->Clear(Key((Hooks::GossipEvents)event_type, entry)); + } + return 0; + } + + /** + * Unbinds event handlers for either all [Group] events, or one type of [Group] event. + * + * If `event_type` is `nil`, all [Group] event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * @proto () + * @proto (event_type) + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterGroupEvent] + */ + int ClearGroupEvents(lua_State* L) + { + typedef EventKey Key; + + if (lua_isnoneornil(L, 1)) + { + Eluna::GetEluna(L)->GroupEventBindings->Clear(); + } + else + { + uint32 event_type = Eluna::CHECKVAL(L, 1); + Eluna::GetEluna(L)->GroupEventBindings->Clear(Key((Hooks::GroupEvents)event_type)); + } + return 0; + } + + /** + * Unbinds event handlers for either all [Guild] events, or one type of [Guild] event. + * + * If `event_type` is `nil`, all [Guild] event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * @proto () + * @proto (event_type) + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterGuildEvent] + */ + int ClearGuildEvents(lua_State* L) + { + typedef EventKey Key; + + if (lua_isnoneornil(L, 1)) + { + Eluna::GetEluna(L)->GuildEventBindings->Clear(); + } + else + { + uint32 event_type = Eluna::CHECKVAL(L, 1); + Eluna::GetEluna(L)->GuildEventBindings->Clear(Key((Hooks::GuildEvents)event_type)); + } + return 0; + } + + /** + * Unbinds event handlers for either all of an [Item]'s events, or one type of event. + * + * If `event_type` is `nil`, all the [Item]'s event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * **NOTE:** this will affect all instances of the [Item], not just one. + * To bind and unbind events to a single [Item], tell the Eluna developers to implement that. + * + * @proto (entry) + * @proto (entry, event_type) + * @param uint32 entry : the ID of an [Item] whose handlers will be cleared + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterItemEvent] + */ + int ClearItemEvents(lua_State* L) + { + typedef EntryKey Key; + + if (lua_isnoneornil(L, 2)) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + + Eluna* E = Eluna::GetEluna(L); + for (uint32 i = 1; i < Hooks::ITEM_EVENT_COUNT; ++i) + E->ItemEventBindings->Clear(Key((Hooks::ItemEvents)i, entry)); + } + else + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 event_type = Eluna::CHECKVAL(L, 2); + Eluna::GetEluna(L)->ItemEventBindings->Clear(Key((Hooks::ItemEvents)event_type, entry)); + } + return 0; + } + + /** + * Unbinds event handlers for either all of an [Item]'s gossip events, or one type of event. + * + * If `event_type` is `nil`, all the [Item]'s gossip event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * **NOTE:** this will affect all instances of the [Item], not just one. + * To bind and unbind gossip events to a single [Item], tell the Eluna developers to implement that. + * + * @proto (entry) + * @proto (entry, event_type) + * @param uint32 entry : the ID of an [Item] whose handlers will be cleared + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterItemGossipEvent] + */ + int ClearItemGossipEvents(lua_State* L) + { + typedef EntryKey Key; + + if (lua_isnoneornil(L, 2)) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + + Eluna* E = Eluna::GetEluna(L); + for (uint32 i = 1; i < Hooks::GOSSIP_EVENT_COUNT; ++i) + E->ItemGossipBindings->Clear(Key((Hooks::GossipEvents)i, entry)); + } + else + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 event_type = Eluna::CHECKVAL(L, 2); + Eluna::GetEluna(L)->ItemGossipBindings->Clear(Key((Hooks::GossipEvents)event_type, entry)); + } + return 0; + } + + /** + * Unbinds event handlers for either all of a [WorldPacket] opcode's events, or one type of event. + * + * If `event_type` is `nil`, all the [WorldPacket] opcode's event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * @proto (opcode) + * @proto (opcode, event_type) + * @param uint32 opcode : the type of [WorldPacket] whose handlers will be cleared + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterPacketEvent] + */ + int ClearPacketEvents(lua_State* L) + { + typedef EntryKey Key; + + if (lua_isnoneornil(L, 2)) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + + Eluna* E = Eluna::GetEluna(L); + for (uint32 i = 1; i < Hooks::PACKET_EVENT_COUNT; ++i) + E->PacketEventBindings->Clear(Key((Hooks::PacketEvents)i, entry)); + } + else + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 event_type = Eluna::CHECKVAL(L, 2); + Eluna::GetEluna(L)->PacketEventBindings->Clear(Key((Hooks::PacketEvents)event_type, entry)); + } + return 0; + } + + /** + * Unbinds event handlers for either all [Player] events, or one type of [Player] event. + * + * If `event_type` is `nil`, all [Player] event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * @proto () + * @proto (event_type) + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterPlayerEvent] + */ + int ClearPlayerEvents(lua_State* L) + { + typedef EventKey Key; + + if (lua_isnoneornil(L, 1)) + { + Eluna::GetEluna(L)->PlayerEventBindings->Clear(); + } + else + { + uint32 event_type = Eluna::CHECKVAL(L, 1); + Eluna::GetEluna(L)->PlayerEventBindings->Clear(Key((Hooks::PlayerEvents)event_type)); + } + return 0; + } + + /** + * Unbinds event handlers for either all of a [Player]'s gossip events, or one type of event. + * + * If `event_type` is `nil`, all the [Player]'s gossip event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * @proto (entry) + * @proto (entry, event_type) + * @param uint32 entry : the low GUID of a [Player] whose handlers will be cleared + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterPlayerGossipEvent] + */ + int ClearPlayerGossipEvents(lua_State* L) + { + typedef EntryKey Key; + + if (lua_isnoneornil(L, 2)) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + + Eluna* E = Eluna::GetEluna(L); + for (uint32 i = 1; i < Hooks::GOSSIP_EVENT_COUNT; ++i) + E->PlayerGossipBindings->Clear(Key((Hooks::GossipEvents)i, entry)); + } + else + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 event_type = Eluna::CHECKVAL(L, 2); + Eluna::GetEluna(L)->PlayerGossipBindings->Clear(Key((Hooks::GossipEvents)event_type, entry)); + } + return 0; + } + + /** + * Unbinds event handlers for either all server events, or one type of event. + * + * If `event_type` is `nil`, all server event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * @proto () + * @proto (event_type) + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterServerEvent] + */ + int ClearServerEvents(lua_State* L) + { + typedef EventKey Key; + + if (lua_isnoneornil(L, 1)) + { + Eluna::GetEluna(L)->ServerEventBindings->Clear(); + } + else + { + uint32 event_type = Eluna::CHECKVAL(L, 1); + Eluna::GetEluna(L)->ServerEventBindings->Clear(Key((Hooks::ServerEvents)event_type)); + } + return 0; + } + + /** + * Unbinds event handlers for either all of a non-instanced [Map]'s events, or one type of event. + * + * If `event_type` is `nil`, all the non-instanced [Map]'s event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * @proto (map_id) + * @proto (map_id, event_type) + * @param uint32 map_id : the ID of a [Map] + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterPlayerGossipEvent] + */ + int ClearMapEvents(lua_State* L) + { + typedef EntryKey Key; + + if (lua_isnoneornil(L, 2)) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + + Eluna* E = Eluna::GetEluna(L); + for (uint32 i = 1; i < Hooks::INSTANCE_EVENT_COUNT; ++i) + E->MapEventBindings->Clear(Key((Hooks::InstanceEvents)i, entry)); + } + else + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 event_type = Eluna::CHECKVAL(L, 2); + Eluna::GetEluna(L)->MapEventBindings->Clear(Key((Hooks::InstanceEvents)event_type, entry)); + } + + return 0; + } + + /** + * Unbinds event handlers for either all of an instanced [Map]'s events, or one type of event. + * + * If `event_type` is `nil`, all the instanced [Map]'s event handlers are cleared. + * + * Otherwise, only event handlers for `event_type` are cleared. + * + * @proto (instance_id) + * @proto (instance_id, event_type) + * @param uint32 entry : the ID of an instance of a [Map] + * @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterInstanceEvent] + */ + int ClearInstanceEvents(lua_State* L) + { + typedef EntryKey Key; + + if (lua_isnoneornil(L, 2)) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + + Eluna* E = Eluna::GetEluna(L); + for (uint32 i = 1; i < Hooks::INSTANCE_EVENT_COUNT; ++i) + E->InstanceEventBindings->Clear(Key((Hooks::InstanceEvents)i, entry)); + } + else + { + uint32 entry = Eluna::CHECKVAL(L, 1); + uint32 event_type = Eluna::CHECKVAL(L, 2); + Eluna::GetEluna(L)->InstanceEventBindings->Clear(Key((Hooks::InstanceEvents)event_type, entry)); + } + + return 0; + } + + #ifdef AZEROTHCORE + /** + * Gets the faction which is the current owner of Halaa in Nagrand + * 0 = Alliance + * 1 = Horde + * + * 600 = slider max Alliance + * -600 = slider max Horde + * + * @return int16 the ID of the team to own Halaa + * @return float the slider position. + */ + int GetOwnerHalaa(lua_State* L) + { + OutdoorPvPNA* nagrandPvp = (OutdoorPvPNA*)sOutdoorPvPMgr->GetOutdoorPvPToZoneId(3518); + OPvPCapturePointNA* halaa = nagrandPvp->GetCapturePoint(); + Eluna::Push(L, halaa->GetControllingFaction()); + Eluna::Push(L, halaa->GetSlider()); + + return 2; + } + + /** + * Sets the owner of Halaa in Nagrand to the respective faction + * 0 = Alliance + * 1 = Horde + * + * @param uint16 teamId : the ID of the team to own Halaa + */ + int SetOwnerHalaa(lua_State* L) + { + uint16 teamId = Eluna::CHECKVAL(L, 1); + + OutdoorPvPNA* nagrandPvp = (OutdoorPvPNA*)sOutdoorPvPMgr->GetOutdoorPvPToZoneId(3518); + OPvPCapturePointNA* halaa = nagrandPvp->GetCapturePoint(); + + if (teamId == 0) + { + halaa->SetSlider(599); + } + else if (teamId == 1) + { + halaa->SetSlider(-599); + } + else + { + return luaL_argerror(L, 1, "0 for Alliance or 1 for Horde expected"); + } + + return 0; + } + #endif +} +#endif diff --git a/modules/mod-eluna/src/LuaEngine/GossipHooks.cpp b/modules/mod-eluna/src/LuaEngine/GossipHooks.cpp new file mode 100644 index 0000000..e9b58e6 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/GossipHooks.cpp @@ -0,0 +1,147 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaIncludes.h" +#include "ElunaTemplate.h" + +using namespace Hooks; + +#define START_HOOK(BINDINGS, EVENT, ENTRY) \ + if (!IsEnabled())\ + return;\ + auto key = EntryKey(EVENT, ENTRY);\ + if (!BINDINGS->HasBindingsFor(key))\ + return;\ + LOCK_ELUNA + +#define START_HOOK_WITH_RETVAL(BINDINGS, EVENT, ENTRY, RETVAL) \ + if (!IsEnabled())\ + return RETVAL;\ + auto key = EntryKey(EVENT, ENTRY);\ + if (!BINDINGS->HasBindingsFor(key))\ + return RETVAL;\ + LOCK_ELUNA + +bool Eluna::OnGossipHello(Player* pPlayer, GameObject* pGameObject) +{ + START_HOOK_WITH_RETVAL(GameObjectGossipBindings, GOSSIP_EVENT_ON_HELLO, pGameObject->GetEntry(), false); + pPlayer->PlayerTalkClass->ClearMenus(); + Push(pPlayer); + Push(pGameObject); + return CallAllFunctionsBool(GameObjectGossipBindings, key, true); +} + +bool Eluna::OnGossipSelect(Player* pPlayer, GameObject* pGameObject, uint32 sender, uint32 action) +{ + START_HOOK_WITH_RETVAL(GameObjectGossipBindings, GOSSIP_EVENT_ON_SELECT, pGameObject->GetEntry(), false); + pPlayer->PlayerTalkClass->ClearMenus(); + Push(pPlayer); + Push(pGameObject); + Push(sender); + Push(action); + return CallAllFunctionsBool(GameObjectGossipBindings, key, true); +} + +bool Eluna::OnGossipSelectCode(Player* pPlayer, GameObject* pGameObject, uint32 sender, uint32 action, const char* code) +{ + START_HOOK_WITH_RETVAL(GameObjectGossipBindings, GOSSIP_EVENT_ON_SELECT, pGameObject->GetEntry(), false); + pPlayer->PlayerTalkClass->ClearMenus(); + Push(pPlayer); + Push(pGameObject); + Push(sender); + Push(action); + Push(code); + return CallAllFunctionsBool(GameObjectGossipBindings, key, true); +} + +void Eluna::HandleGossipSelectOption(Player* pPlayer, uint32 menuId, uint32 sender, uint32 action, const std::string& code) +{ + START_HOOK(PlayerGossipBindings, GOSSIP_EVENT_ON_SELECT, menuId); + pPlayer->PlayerTalkClass->ClearMenus(); + + Push(pPlayer); // receiver + Push(pPlayer); // sender, just not to mess up the amount of args. + Push(sender); + Push(action); + if (code.empty()) + Push(); + else + Push(code); + + CallAllFunctions(PlayerGossipBindings, key); +} + +bool Eluna::OnItemGossip(Player* pPlayer, Item* pItem, SpellCastTargets const& /*targets*/) +{ + START_HOOK_WITH_RETVAL(ItemGossipBindings, GOSSIP_EVENT_ON_HELLO, pItem->GetEntry(), true); + pPlayer->PlayerTalkClass->ClearMenus(); + Push(pPlayer); + Push(pItem); + return CallAllFunctionsBool(ItemGossipBindings, key, true); +} + +void Eluna::HandleGossipSelectOption(Player* pPlayer, Item* pItem, uint32 sender, uint32 action, const std::string& code) +{ + START_HOOK(ItemGossipBindings, GOSSIP_EVENT_ON_SELECT, pItem->GetEntry()); + pPlayer->PlayerTalkClass->ClearMenus(); + + Push(pPlayer); + Push(pItem); + Push(sender); + Push(action); + if (code.empty()) + Push(); + else + Push(code); + + CallAllFunctions(ItemGossipBindings, key); +} + +bool Eluna::OnGossipHello(Player* pPlayer, Creature* pCreature) +{ + START_HOOK_WITH_RETVAL(CreatureGossipBindings, GOSSIP_EVENT_ON_HELLO, pCreature->GetEntry(), false); + pPlayer->PlayerTalkClass->ClearMenus(); + Push(pPlayer); + Push(pCreature); + return CallAllFunctionsBool(CreatureGossipBindings, key, true); +} + +bool Eluna::OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action) +{ + START_HOOK_WITH_RETVAL(CreatureGossipBindings, GOSSIP_EVENT_ON_SELECT, pCreature->GetEntry(), false); + auto originalMenu = *pPlayer->PlayerTalkClass; + pPlayer->PlayerTalkClass->ClearMenus(); + Push(pPlayer); + Push(pCreature); + Push(sender); + Push(action); + auto preventDefault = CallAllFunctionsBool(CreatureGossipBindings, key, true); + if (!preventDefault) { + *pPlayer->PlayerTalkClass = originalMenu; + } + return preventDefault; +} + +bool Eluna::OnGossipSelectCode(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action, const char* code) +{ + START_HOOK_WITH_RETVAL(CreatureGossipBindings, GOSSIP_EVENT_ON_SELECT, pCreature->GetEntry(), false); + auto originalMenu = *pPlayer->PlayerTalkClass; + pPlayer->PlayerTalkClass->ClearMenus(); + Push(pPlayer); + Push(pCreature); + Push(sender); + Push(action); + Push(code); + auto preventDefault = CallAllFunctionsBool(CreatureGossipBindings, key, true); + if (!preventDefault) { + *pPlayer->PlayerTalkClass = originalMenu; + } + return preventDefault; +} diff --git a/modules/mod-eluna/src/LuaEngine/GroupHooks.cpp b/modules/mod-eluna/src/LuaEngine/GroupHooks.cpp new file mode 100644 index 0000000..f674957 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/GroupHooks.cpp @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaTemplate.h" + +using namespace Hooks; + +#define START_HOOK(EVENT) \ + if (!IsEnabled())\ + return;\ + auto key = EventKey(EVENT);\ + if (!GroupEventBindings->HasBindingsFor(key))\ + return;\ + LOCK_ELUNA + +void Eluna::OnAddMember(Group* group, ObjectGuid guid) +{ + START_HOOK(GROUP_EVENT_ON_MEMBER_ADD); + Push(group); + Push(guid); + CallAllFunctions(GroupEventBindings, key); +} + +void Eluna::OnInviteMember(Group* group, ObjectGuid guid) +{ + START_HOOK(GROUP_EVENT_ON_MEMBER_INVITE); + Push(group); + Push(guid); + CallAllFunctions(GroupEventBindings, key); +} + +void Eluna::OnRemoveMember(Group* group, ObjectGuid guid, uint8 method) +{ + START_HOOK(GROUP_EVENT_ON_MEMBER_REMOVE); + Push(group); + Push(guid); + Push(method); + CallAllFunctions(GroupEventBindings, key); +} + +void Eluna::OnChangeLeader(Group* group, ObjectGuid newLeaderGuid, ObjectGuid oldLeaderGuid) +{ + START_HOOK(GROUP_EVENT_ON_LEADER_CHANGE); + Push(group); + Push(newLeaderGuid); + Push(oldLeaderGuid); + CallAllFunctions(GroupEventBindings, key); +} + +void Eluna::OnDisband(Group* group) +{ + START_HOOK(GROUP_EVENT_ON_DISBAND); + Push(group); + CallAllFunctions(GroupEventBindings, key); +} + +void Eluna::OnCreate(Group* group, ObjectGuid leaderGuid, GroupType groupType) +{ + START_HOOK(GROUP_EVENT_ON_CREATE); + Push(group); + Push(leaderGuid); + Push(groupType); + CallAllFunctions(GroupEventBindings, key); +} diff --git a/modules/mod-eluna/src/LuaEngine/GroupMethods.h b/modules/mod-eluna/src/LuaEngine/GroupMethods.h new file mode 100644 index 0000000..763c18a --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/GroupMethods.h @@ -0,0 +1,464 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef GROUPMETHODS_H +#define GROUPMETHODS_H + +/*** + * Inherits all methods from: none + */ +namespace LuaGroup +{ + /** + * Returns 'true' if the [Player] is the [Group] leader + * + * @param ObjectGuid guid : guid of a possible leader + * @return bool isLeader + */ + int IsLeader(lua_State* L, Group* group) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, group->IsLeader(guid)); + return 1; + } + + /** + * Returns 'true' if the [Group] is full + * + * @return bool isFull + */ + int IsFull(lua_State* L, Group* group) + { + Eluna::Push(L, group->IsFull()); + return 1; + } + + /** + * Returns 'true' if the [Group] is a LFG group + * + * @return bool isLFGGroup + */ + int IsLFGGroup(lua_State* L, Group* group) + { + Eluna::Push(L, group->isLFGGroup()); + return 1; + } + + /** + * Returns 'true' if the [Group] is a raid [Group] + * + * @return bool isRaid + */ + int IsRaidGroup(lua_State* L, Group* group) + { + Eluna::Push(L, group->isRaidGroup()); + return 1; + } + + /** + * Returns 'true' if the [Group] is a battleground [Group] + * + * @return bool isBG + */ + int IsBGGroup(lua_State* L, Group* group) + { + Eluna::Push(L, group->isBGGroup()); + return 1; + } + + /** + * Returns 'true' if the [Player] is a member of this [Group] + * + * @param ObjectGuid guid : guid of a player + * @return bool isMember + */ + int IsMember(lua_State* L, Group* group) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, group->IsMember(guid)); + return 1; + } + + /** + * Returns 'true' if the [Player] is an assistant of this [Group] + * + * @param ObjectGuid guid : guid of a player + * @return bool isAssistant + */ + int IsAssistant(lua_State* L, Group* group) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, group->IsAssistant(guid)); + return 1; + } + + /** + * Returns 'true' if the [Player]s are in the same subgroup in this [Group] + * + * @param [Player] player1 : first [Player] to check + * @param [Player] player2 : second [Player] to check + * @return bool sameSubGroup + */ + int SameSubGroup(lua_State* L, Group* group) + { + Player* player1 = Eluna::CHECKOBJ(L, 2); + Player* player2 = Eluna::CHECKOBJ(L, 3); + Eluna::Push(L, group->SameSubGroup(player1, player2)); + return 1; + } + + /** + * Returns 'true' if the subgroup has free slots in this [Group] + * + * @param uint8 subGroup : subGroup ID to check + * @return bool hasFreeSlot + */ + int HasFreeSlotSubGroup(lua_State* L, Group* group) + { + uint8 subGroup = Eluna::CHECKVAL(L, 2); + + if (subGroup >= MAX_RAID_SUBGROUPS) + { + luaL_argerror(L, 2, "valid subGroup ID expected"); + return 0; + } + + Eluna::Push(L, group->HasFreeSlotSubGroup(subGroup)); + return 1; + } + + /** + * Adds a new member to the [Group] + * + * @param [Player] player : [Player] to add to the group + * @return bool added : true if member was added + */ + int AddMember(lua_State* L, Group* group) + { + Player* player = Eluna::CHECKOBJ(L, 2); + + if (player->GetGroup() || !group->IsCreated() || group->IsFull()) + { + Eluna::Push(L, false); + return 1; + } + + if (player->GetGroupInvite()) + player->UninviteFromGroup(); + +#if defined TRINITY || AZEROTHCORE + bool success = group->AddMember(player); + if (success) + group->BroadcastGroupUpdate(); +#else + bool success = group->AddMember(player->GetObjectGuid(), player->GetName()); +#endif + + Eluna::Push(L, success); + return 1; + } + + /*int IsLFGGroup(lua_State* L, Group* group) // TODO: Implementation + { + Eluna::Push(L, group->isLFGGroup()); + return 1; + }*/ + + /*int IsBFGroup(lua_State* L, Group* group) // TODO: Implementation + { + Eluna::Push(L, group->isBFGroup()); + return 1; + }*/ + + /** + * Returns a table with the [Player]s in this [Group] + * + * @return table groupPlayers : table of [Player]s + */ + int GetMembers(lua_State* L, Group* group) + { + lua_newtable(L); + int tbl = lua_gettop(L); + uint32 i = 0; + + for (GroupReference* itr = group->GetFirstMember(); itr; itr = itr->next()) + { +#if defined TRINITY || AZEROTHCORE + Player* member = itr->GetSource(); +#else + Player* member = itr->getSource(); +#endif + + if (!member || !member->GetSession()) + continue; + + Eluna::Push(L, member); + lua_rawseti(L, tbl, ++i); + } + + lua_settop(L, tbl); // push table to top of stack + return 1; + } + + /** + * Returns [Group] leader GUID + * + * @return ObjectGuid leaderGUID + */ + int GetLeaderGUID(lua_State* L, Group* group) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, group->GetLeaderGUID()); +#else + Eluna::Push(L, group->GetLeaderGuid()); +#endif + return 1; + } + + /** + * Returns the [Group]'s GUID + * + * @return ObjectGuid groupGUID + */ + int GetGUID(lua_State* L, Group* group) + { +#ifdef CLASSIC + Eluna::Push(L, group->GetId()); +#else + Eluna::Push(L, group->GET_GUID()); +#endif + return 1; + } + + /** + * Returns a [Group] member's GUID by their name + * + * @param string name : the [Player]'s name + * @return ObjectGuid memberGUID + */ + int GetMemberGUID(lua_State* L, Group* group) + { + const char* name = Eluna::CHECKVAL(L, 2); +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, group->GetMemberGUID(name)); +#else + Eluna::Push(L, group->GetMemberGuid(name)); +#endif + return 1; + } + + /** + * Returns the member count of this [Group] + * + * @return uint32 memberCount + */ + int GetMembersCount(lua_State* L, Group* group) + { + Eluna::Push(L, group->GetMembersCount()); + return 1; + } + + /** + * Returns the type of this [Group] + * + *
+     * enum GroupType
+     * {
+     *     GROUPTYPE_NORMAL         = 0,
+     *     GROUPTYPE_BG             = 1,
+     *     GROUPTYPE_RAID           = 2,
+     *     GROUPTYPE_LFG_RESTRICTED = 4,
+     *     GROUPTYPE_LFG            = 8
+     * };
+     * 
+ * + * @return [GroupType] groupType + */ + int GetGroupType(lua_State* L, Group* group) + { + Eluna::Push(L, group->GetGroupType()); + return 1; + } + + /** + * Returns the [Player]'s subgroup ID of this [Group] + * + * @param ObjectGuid guid : guid of the player + * @return uint8 subGroupID : a valid subgroup ID or MAX_RAID_SUBGROUPS+1 + */ + int GetMemberGroup(lua_State* L, Group* group) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, group->GetMemberGroup(guid)); + return 1; + } + + /** + * Sets the leader of this [Group] + * + * @param ObjectGuid guid : guid of the new leader + */ + int SetLeader(lua_State* L, Group* group) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + group->ChangeLeader(guid); + group->SendUpdate(); + return 0; + } + + /** + * Sends a specified [WorldPacket] to this [Group] + * + * @param [WorldPacket] packet : the [WorldPacket] to send + * @param bool ignorePlayersInBg : ignores [Player]s in a battleground + * @param ObjectGuid ignore : ignore a [Player] by their GUID + */ + int SendPacket(lua_State* L, Group* group) + { + WorldPacket* data = Eluna::CHECKOBJ(L, 2); + bool ignorePlayersInBg = Eluna::CHECKVAL(L, 3); + ObjectGuid ignore = Eluna::CHECKVAL(L, 4); + +#ifdef CMANGOS + group->BroadcastPacket(*data, ignorePlayersInBg, -1, ignore); +#else + group->BroadcastPacket(data, ignorePlayersInBg, -1, ignore); +#endif + return 0; + } + + /** + * Removes a [Player] from this [Group] and returns 'true' if successful + * + *
+     * enum RemoveMethod
+     * {
+     *     GROUP_REMOVEMETHOD_DEFAULT  = 0,
+     *     GROUP_REMOVEMETHOD_KICK     = 1,
+     *     GROUP_REMOVEMETHOD_LEAVE    = 2,
+     *     GROUP_REMOVEMETHOD_KICK_LFG = 3
+     * };
+     * 
+ * + * @param ObjectGuid guid : guid of the player to remove + * @param [RemoveMethod] method : method used to remove the player + * @return bool removed + */ + int RemoveMember(lua_State* L, Group* group) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + uint32 method = Eluna::CHECKVAL(L, 3, 0); + +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, group->RemoveMember(guid, (RemoveMethod)method)); +#else + Eluna::Push(L, group->RemoveMember(guid, method)); +#endif + return 1; + } + + /** + * Disbands this [Group] + * + */ + int Disband(lua_State* /*L*/, Group* group) + { + group->Disband(); + return 0; + } + + /** + * Converts this [Group] to a raid [Group] + * + */ + int ConvertToRaid(lua_State* /*L*/, Group* group) + { + group->ConvertToRaid(); + return 0; + } + + /** + * Sets the member's subGroup + * + * @param ObjectGuid guid : guid of the player to move + * @param uint8 groupID : the subGroup's ID + */ + int SetMembersGroup(lua_State* L, Group* group) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + uint8 subGroup = Eluna::CHECKVAL(L, 3); + + if (subGroup >= MAX_RAID_SUBGROUPS) + { + luaL_argerror(L, 3, "valid subGroup ID expected"); + return 0; + } + + if (!group->HasFreeSlotSubGroup(subGroup)) + return 0; + + group->ChangeMembersGroup(guid, subGroup); + return 0; + } + + /** + * Sets the target icon of an object for the [Group] + * + * @param uint8 icon : the icon (Skull, Square, etc) + * @param ObjectGuid target : GUID of the icon target, 0 is to clear the icon + * @param ObjectGuid setter : GUID of the icon setter + */ + int SetTargetIcon(lua_State* L, Group* group) + { + uint8 icon = Eluna::CHECKVAL(L, 2); + ObjectGuid target = Eluna::CHECKVAL(L, 3); + ObjectGuid setter = Eluna::CHECKVAL(L, 4, ObjectGuid()); + + if (icon >= TARGETICONCOUNT) + return luaL_argerror(L, 2, "valid target icon expected"); + +#if (defined(CLASSIC) || defined(TBC)) + group->SetTargetIcon(icon, target); +#else + group->SetTargetIcon(icon, setter, target); +#endif + return 0; + } + + /** + * Sets or removes a flag for a [Group] member + * + *
+     * enum GroupMemberFlags
+     * {
+     *     MEMBER_FLAG_ASSISTANT   = 0x01,
+     *     MEMBER_FLAG_MAINTANK    = 0x02,
+     *     MEMBER_FLAG_MAINASSIST  = 0x04,
+     * };
+     * 
+ * + * @param ObjectGuid target : GUID of the target + * @param bool apply : add the `flag` if `true`, remove the `flag` otherwise + * @param [GroupMemberFlags] flag : the flag to set or unset + */ + int SetMemberFlag(lua_State* L, Group* group) + { + ObjectGuid target = Eluna::CHECKVAL(L, 2); + bool apply = Eluna::CHECKVAL(L, 3); + GroupMemberFlags flag = static_cast(Eluna::CHECKVAL(L, 4)); + + group->SetGroupMemberFlag(target, apply, flag); + return 0; + } + + /*int ConvertToLFG(lua_State* L, Group* group) // TODO: Implementation + { + group->ConvertToLFG(); + return 0; + }*/ +}; + +#endif diff --git a/modules/mod-eluna/src/LuaEngine/GuildHooks.cpp b/modules/mod-eluna/src/LuaEngine/GuildHooks.cpp new file mode 100644 index 0000000..3662ef1 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/GuildHooks.cpp @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaTemplate.h" + +using namespace Hooks; + +#define START_HOOK(EVENT) \ + if (!IsEnabled())\ + return;\ + auto key = EventKey(EVENT);\ + if (!GuildEventBindings->HasBindingsFor(key))\ + return;\ + LOCK_ELUNA + +void Eluna::OnAddMember(Guild* guild, Player* player, uint32 plRank) +{ + START_HOOK(GUILD_EVENT_ON_ADD_MEMBER); + Push(guild); + Push(player); + Push(plRank); + CallAllFunctions(GuildEventBindings, key); +} + +void Eluna::OnRemoveMember(Guild* guild, Player* player, bool isDisbanding) +{ + START_HOOK(GUILD_EVENT_ON_REMOVE_MEMBER); + Push(guild); + Push(player); + Push(isDisbanding); + CallAllFunctions(GuildEventBindings, key); +} + +void Eluna::OnMOTDChanged(Guild* guild, const std::string& newMotd) +{ + START_HOOK(GUILD_EVENT_ON_MOTD_CHANGE); + Push(guild); + Push(newMotd); + CallAllFunctions(GuildEventBindings, key); +} + +void Eluna::OnInfoChanged(Guild* guild, const std::string& newInfo) +{ + START_HOOK(GUILD_EVENT_ON_INFO_CHANGE); + Push(guild); + Push(newInfo); + CallAllFunctions(GuildEventBindings, key); +} + +void Eluna::OnCreate(Guild* guild, Player* leader, const std::string& name) +{ + START_HOOK(GUILD_EVENT_ON_CREATE); + Push(guild); + Push(leader); + Push(name); + CallAllFunctions(GuildEventBindings, key); +} + +void Eluna::OnDisband(Guild* guild) +{ + START_HOOK(GUILD_EVENT_ON_DISBAND); + Push(guild); + CallAllFunctions(GuildEventBindings, key); +} + +void Eluna::OnMemberWitdrawMoney(Guild* guild, Player* player, uint32& amount, bool isRepair) +{ + START_HOOK(GUILD_EVENT_ON_MONEY_WITHDRAW); + Push(guild); + Push(player); + Push(amount); + Push(isRepair); // isRepair not a part of Mangos, implement? + int amountIndex = lua_gettop(L) - 1; + int n = SetupStack(GuildEventBindings, key, 4); + + while (n > 0) + { + int r = CallOneFunction(n--, 4, 1); + + if (lua_isnumber(L, r)) + { + amount = CHECKVAL(L, r); + // Update the stack for subsequent calls. + ReplaceArgument(amount, amountIndex); + } + + lua_pop(L, 1); + } + + CleanUpStack(4); +} + +void Eluna::OnMemberDepositMoney(Guild* guild, Player* player, uint32& amount) +{ + START_HOOK(GUILD_EVENT_ON_MONEY_DEPOSIT); + Push(guild); + Push(player); + Push(amount); + int amountIndex = lua_gettop(L); + int n = SetupStack(GuildEventBindings, key, 3); + + while (n > 0) + { + int r = CallOneFunction(n--, 3, 1); + + if (lua_isnumber(L, r)) + { + amount = CHECKVAL(L, r); + // Update the stack for subsequent calls. + ReplaceArgument(amount, amountIndex); + } + + lua_pop(L, 1); + } + + CleanUpStack(3); +} + +void Eluna::OnItemMove(Guild* guild, Player* player, Item* pItem, bool isSrcBank, uint8 srcContainer, uint8 srcSlotId, + bool isDestBank, uint8 destContainer, uint8 destSlotId) +{ + START_HOOK(GUILD_EVENT_ON_ITEM_MOVE); + Push(guild); + Push(player); + Push(pItem); + Push(isSrcBank); + Push(srcContainer); + Push(srcSlotId); + Push(isDestBank); + Push(destContainer); + Push(destSlotId); + CallAllFunctions(GuildEventBindings, key); +} + +void Eluna::OnEvent(Guild* guild, uint8 eventType, uint32 playerGuid1, uint32 playerGuid2, uint8 newRank) +{ + START_HOOK(GUILD_EVENT_ON_EVENT); + Push(guild); + Push(eventType); + Push(playerGuid1); + Push(playerGuid2); + Push(newRank); + CallAllFunctions(GuildEventBindings, key); +} + +void Eluna::OnBankEvent(Guild* guild, uint8 eventType, uint8 tabId, uint32 playerGuid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId) +{ + START_HOOK(GUILD_EVENT_ON_BANK_EVENT); + Push(guild); + Push(eventType); + Push(tabId); + Push(playerGuid); + Push(itemOrMoney); + Push(itemStackCount); + Push(destTabId); + CallAllFunctions(GuildEventBindings, key); +} diff --git a/modules/mod-eluna/src/LuaEngine/GuildMethods.h b/modules/mod-eluna/src/LuaEngine/GuildMethods.h new file mode 100644 index 0000000..ba9863f --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/GuildMethods.h @@ -0,0 +1,305 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef GUILDMETHODS_H +#define GUILDMETHODS_H + +/*** + * Inherits all methods from: none + */ +namespace LuaGuild +{ + /** + * Returns a table with the [Player]s in this [Guild] + * + * Only the players that are online and on some map. + * + * @return table guildPlayers : table of [Player]s + */ + int GetMembers(lua_State* L, Guild* guild) + { + lua_newtable(L); + int tbl = lua_gettop(L); + uint32 i = 0; + +#if defined(MANGOS) + eObjectAccessor()DoForAllPlayers([&](Player* player) + { + if (player->IsInWorld() && player->GetGuildId() == guild->GetId()) + { + Eluna::Push(L, player); + lua_rawseti(L, tbl, ++i); + } + }); +#else + { +#if defined TRINITY || AZEROTHCORE + std::shared_lock lock(*HashMapHolder::GetLock()); +#else + HashMapHolder::ReadGuard g(HashMapHolder::GetLock()); +#endif + const HashMapHolder::MapType& m = eObjectAccessor()GetPlayers(); + for (HashMapHolder::MapType::const_iterator it = m.begin(); it != m.end(); ++it) + { + if (Player* player = it->second) + { + if (player->IsInWorld() && player->GetGuildId() == guild->GetId()) + { + Eluna::Push(L, player); + lua_rawseti(L, tbl, ++i); + } + } + } + } +#endif + lua_settop(L, tbl); // push table to top of stack + return 1; + } + + /** + * Returns the member count of this [Guild] + * + * @return uint32 memberCount + */ + int GetMemberCount(lua_State* L, Guild* guild) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, guild->GetMemberCount()); +#else + Eluna::Push(L, guild->GetMemberSize()); +#endif + return 1; + } + + /** + * Finds and returns the [Guild] leader by their GUID if logged in + * + * @return [Player] leader + */ + int GetLeader(lua_State* L, Guild* guild) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, eObjectAccessor()FindPlayer(guild->GetLeaderGUID())); +#else + Eluna::Push(L, eObjectAccessor()FindPlayer(guild->GetLeaderGuid())); +#endif + return 1; + } + + /** + * Returns [Guild] leader GUID + * + * @return ObjectGuid leaderGUID + */ + int GetLeaderGUID(lua_State* L, Guild* guild) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, guild->GetLeaderGUID()); +#else + Eluna::Push(L, guild->GetLeaderGuid()); +#endif + return 1; + } + + /** + * Returns the [Guild]s entry ID + * + * @return uint32 entryId + */ + int GetId(lua_State* L, Guild* guild) + { + Eluna::Push(L, guild->GetId()); + return 1; + } + + /** + * Returns the [Guild]s name + * + * @return string guildName + */ + int GetName(lua_State* L, Guild* guild) + { + Eluna::Push(L, guild->GetName()); + return 1; + } + + /** + * Returns the [Guild]s current Message Of The Day + * + * @return string guildMOTD + */ + int GetMOTD(lua_State* L, Guild* guild) + { + Eluna::Push(L, guild->GetMOTD()); + return 1; + } + + /** + * Returns the [Guild]s current info + * + * @return string guildInfo + */ + int GetInfo(lua_State* L, Guild* guild) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, guild->GetInfo()); +#else + Eluna::Push(L, guild->GetGINFO()); +#endif + return 1; + } + +#if defined(CLASSIC) || defined(TBC) || defined(WOTLK) + /** + * Sets the leader of this [Guild] + * + * @param [Player] leader : the [Player] leader to change + */ + int SetLeader(lua_State* L, Guild* guild) + { + Player* player = Eluna::CHECKOBJ(L, 2); + +#if defined TRINITY || AZEROTHCORE + guild->HandleSetLeader(player->GetSession(), player->GetName()); +#else + guild->SetLeader(player->GET_GUID()); +#endif + return 0; + } +#endif + +#ifndef CLASSIC + /** + * Sets the information of the bank tab specified + * + * @param uint8 tabId : the ID of the tab specified + * @param string info : the information to be set to the bank tab + */ + int SetBankTabText(lua_State* L, Guild* guild) + { + uint8 tabId = Eluna::CHECKVAL(L, 2); + const char* text = Eluna::CHECKVAL(L, 3); +#if defined TRINITY || AZEROTHCORE + guild->SetBankTabText(tabId, text); +#else + guild->SetGuildBankTabText(tabId, text); +#endif + return 0; + } +#endif + + // SendPacketToGuild(packet) + /** + * Sends a [WorldPacket] to all the [Player]s in the [Guild] + * + * @param [WorldPacket] packet : the [WorldPacket] to be sent to the [Player]s + */ + int SendPacket(lua_State* L, Guild* guild) + { + WorldPacket* data = Eluna::CHECKOBJ(L, 2); + +#ifdef CMANGOS + guild->BroadcastPacket(*data); +#else + guild->BroadcastPacket(data); +#endif + return 0; + } + + // SendPacketToRankedInGuild(packet, rankId) + /** + * Sends a [WorldPacket] to all the [Player]s at the specified rank in the [Guild] + * + * @param [WorldPacket] packet : the [WorldPacket] to be sent to the [Player]s + * @param uint8 rankId : the rank ID + */ + int SendPacketToRanked(lua_State* L, Guild* guild) + { + WorldPacket* data = Eluna::CHECKOBJ(L, 2); + uint8 ranked = Eluna::CHECKVAL(L, 3); + +#ifdef CMANGOS + guild->BroadcastPacketToRank(*data, ranked); +#else + guild->BroadcastPacketToRank(data, ranked); +#endif + return 0; + } + + /** + * Disbands the [Guild] + */ + int Disband(lua_State* /*L*/, Guild* guild) + { + guild->Disband(); + return 0; + } + + /** + * Adds the specified [Player] to the [Guild] at the specified rank. + * + * If no rank is specified, defaults to none. + * + * @param [Player] player : the [Player] to be added to the guild + * @param uint8 rankId : the rank ID + */ + int AddMember(lua_State* L, Guild* guild) + { + Player* player = Eluna::CHECKOBJ(L, 2); + uint8 rankId = Eluna::CHECKVAL(L, 3, GUILD_RANK_NONE); + +#ifdef TRINITY + CharacterDatabaseTransaction trans(nullptr); + guild->AddMember(trans, player->GET_GUID(), rankId); +#else + guild->AddMember(player->GET_GUID(), rankId); +#endif + return 0; + } + + /** + * Removes the specified [Player] from the [Guild]. + * + * @param [Player] player : the [Player] to be removed from the guild + * @param bool isDisbanding : default 'false', should only be set to 'true' if the guild is triggered to disband + */ + int DeleteMember(lua_State* L, Guild* guild) + { + Player* player = Eluna::CHECKOBJ(L, 2); + bool isDisbanding = Eluna::CHECKVAL(L, 3, false); + +#if defined TRINITY + CharacterDatabaseTransaction trans(nullptr); + guild->DeleteMember(trans, player->GET_GUID(), isDisbanding); +#elif defined AZEROTHCORE + guild->DeleteMember(player->GET_GUID(), isDisbanding); +#else + guild->DelMember(player->GET_GUID(), isDisbanding); +#endif + return 0; + } + + /** + * Promotes/demotes the [Player] to the specified rank. + * + * @param [Player] player : the [Player] to be promoted/demoted + * @param uint8 rankId : the rank ID + */ + int SetMemberRank(lua_State* L, Guild* guild) + { + Player* player = Eluna::CHECKOBJ(L, 2); + uint8 newRank = Eluna::CHECKVAL(L, 3); + +#ifdef TRINITY + CharacterDatabaseTransaction trans(nullptr); + guild->ChangeMemberRank(trans, player->GET_GUID(), newRank); +#else + guild->ChangeMemberRank(player->GET_GUID(), newRank); +#endif + return 0; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/HookHelpers.h b/modules/mod-eluna/src/LuaEngine/HookHelpers.h new file mode 100644 index 0000000..9dd0f26 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/HookHelpers.h @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#ifndef _HOOK_HELPERS_H +#define _HOOK_HELPERS_H + +#include "LuaEngine.h" +#include "ElunaUtility.h" + +/* + * Sets up the stack so that event handlers can be called. + * + * Returns the number of functions that were pushed onto the stack. + */ +template +int Eluna::SetupStack(BindingMap* bindings1, BindingMap* bindings2, const K1& key1, const K2& key2, int number_of_arguments) +{ + ASSERT(number_of_arguments == this->push_counter); + ASSERT(key1.event_id == key2.event_id); + // Stack: [arguments] + + Push(key1.event_id); + this->push_counter = 0; + ++number_of_arguments; + // Stack: [arguments], event_id + + int arguments_top = lua_gettop(L); + int first_argument_index = arguments_top - number_of_arguments + 1; + ASSERT(arguments_top >= number_of_arguments); + + lua_insert(L, first_argument_index); + // Stack: event_id, [arguments] + + bindings1->PushRefsFor(key1); + if (bindings2) + bindings2->PushRefsFor(key2); + // Stack: event_id, [arguments], [functions] + + int number_of_functions = lua_gettop(L) - arguments_top; + return number_of_functions; +} + +/* + * Replace one of the arguments pushed before `SetupStack` with a new value. + */ +template +void Eluna::ReplaceArgument(T value, uint8 index) +{ + ASSERT(index < lua_gettop(L) && index > 0); + // Stack: event_id, [arguments], [functions], [results] + + Eluna::Push(L, value); + // Stack: event_id, [arguments], [functions], [results], value + + lua_replace(L, index + 1); + // Stack: event_id, [arguments and value], [functions], [results] +} + +/* + * Call all event handlers registered to the event ID/entry combination and ignore any results. + */ +template +void Eluna::CallAllFunctions(BindingMap* bindings1, BindingMap* bindings2, const K1& key1, const K2& key2) +{ + int number_of_arguments = this->push_counter; + // Stack: [arguments] + + int number_of_functions = SetupStack(bindings1, bindings2, key1, key2, number_of_arguments); + // Stack: event_id, [arguments], [functions] + + while (number_of_functions > 0) + { + CallOneFunction(number_of_functions, number_of_arguments, 0); + --number_of_functions; + // Stack: event_id, [arguments], [functions - 1] + } + // Stack: event_id, [arguments] + + CleanUpStack(number_of_arguments); + // Stack: (empty) +} + +/* + * Call all event handlers registered to the event ID/entry combination, + * and returns `default_value` if ALL event handlers returned `default_value`, + * otherwise returns the opposite of `default_value`. + */ +template +bool Eluna::CallAllFunctionsBool(BindingMap* bindings1, BindingMap* bindings2, const K1& key1, const K2& key2, bool default_value/* = false*/) +{ + bool result = default_value; + // Note: number_of_arguments here does not count in eventID, which is pushed in SetupStack + int number_of_arguments = this->push_counter; + // Stack: [arguments] + + int number_of_functions = SetupStack(bindings1, bindings2, key1, key2, number_of_arguments); + // Stack: event_id, [arguments], [functions] + + while (number_of_functions > 0) + { + int r = CallOneFunction(number_of_functions, number_of_arguments, 1); + --number_of_functions; + // Stack: event_id, [arguments], [functions - 1], result + + if (lua_isboolean(L, r) && (lua_toboolean(L, r) == 1) != default_value) + result = !default_value; + + lua_pop(L, 1); + // Stack: event_id, [arguments], [functions - 1] + } + // Stack: event_id, [arguments] + + CleanUpStack(number_of_arguments); + // Stack: (empty) + return result; +} + +#endif // _HOOK_HELPERS_H diff --git a/modules/mod-eluna/src/LuaEngine/Hooks.h b/modules/mod-eluna/src/LuaEngine/Hooks.h new file mode 100644 index 0000000..f368317 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/Hooks.h @@ -0,0 +1,369 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#ifndef _HOOKS_H +#define _HOOKS_H + +/* + * A hook should be written in one of the following forms: + * + * A. If results will be IGNORED: + * + * // Return early if there are no bindings. + * if (!WhateverBindings->HasBindingsFor(SOME_EVENT_TYPE)) + * return; + * + * // Lock out any other threads. + * LOCK_ELUNA; + * + * // Push extra arguments, if any. + * Push(a); + * Push(b); + * Push(c); + * + * // Call all event handlers. + * CallAllFunctions(WhateverBindings, SOME_EVENT_TYPE); + * + * + * B. If results will be USED: + * + * // Return early if there are no bindings. + * if (!WhateverBindings->HasBindingsFor(SOME_EVENT_TYPE)) + * return; + * + * // Lock out any other threads. + * LOCK_ELUNA; + * + * // Push extra arguments, if any. + * Push(a); + * Push(b); + * Push(c); + * + * // Setup the stack and get the number of functions pushed. + * // Last argument is 3 because we did 3 Pushes. + * int n = SetupStack(WhateverBindings, SOME_EVENT_TYPE, 3); + * + * // Call each event handler in order and check results. + * while (n > 0) + * { + * // Call an event handler and decrement the function counter afterward. + * // Second-last argument is 3 because we did 3 Pushes. + * // Last argument is 2 because we want 2 results. + * int r = CallOneFunction(n--, 3, 2); + * + * // Results can be popped using `r`. + * int first = CHECKVAL(L, r + 0); + * int second = CHECKVAL(L, r + 1); + * + * // Pop the results off the stack. + * lua_pop(L, 2); + * } + * + * // Clean-up the stack. Argument is 3 because we did 3 Pushes. + * CleanUpStack(3); + */ + +namespace Hooks +{ + enum RegisterTypes + { + REGTYPE_PACKET, + REGTYPE_SERVER, + REGTYPE_PLAYER, + REGTYPE_GUILD, + REGTYPE_GROUP, + REGTYPE_CREATURE, + REGTYPE_VEHICLE, + REGTYPE_CREATURE_GOSSIP, + REGTYPE_GAMEOBJECT, + REGTYPE_GAMEOBJECT_GOSSIP, + REGTYPE_ITEM, + REGTYPE_ITEM_GOSSIP, + REGTYPE_PLAYER_GOSSIP, + REGTYPE_BG, + REGTYPE_MAP, + REGTYPE_INSTANCE, + REGTYPE_COUNT + }; + + enum PacketEvents + { + PACKET_EVENT_ON_PACKET_RECEIVE = 5, // (event, packet, player) - Player only if accessible. Can return false, newPacket + PACKET_EVENT_ON_PACKET_RECEIVE_UNKNOWN = 6, // Not Implemented + PACKET_EVENT_ON_PACKET_SEND = 7, // (event, packet, player) - Player only if accessible. Can return false, newPacket + + PACKET_EVENT_COUNT + }; + + enum ServerEvents + { + // Server + SERVER_EVENT_ON_NETWORK_START = 1, // Not Implemented + SERVER_EVENT_ON_NETWORK_STOP = 2, // Not Implemented + SERVER_EVENT_ON_SOCKET_OPEN = 3, // Not Implemented + SERVER_EVENT_ON_SOCKET_CLOSE = 4, // Not Implemented + SERVER_EVENT_ON_PACKET_RECEIVE = 5, // (event, packet, player) - Player only if accessible. Can return false, newPacket + SERVER_EVENT_ON_PACKET_RECEIVE_UNKNOWN = 6, // Not Implemented + SERVER_EVENT_ON_PACKET_SEND = 7, // (event, packet, player) - Player only if accessible. Can return false, newPacket + + // World + WORLD_EVENT_ON_OPEN_STATE_CHANGE = 8, // (event, open) - Needs core support on Mangos + WORLD_EVENT_ON_CONFIG_LOAD = 9, // (event, reload) + // UNUSED = 10, + WORLD_EVENT_ON_SHUTDOWN_INIT = 11, // (event, code, mask) + WORLD_EVENT_ON_SHUTDOWN_CANCEL = 12, // (event) + WORLD_EVENT_ON_UPDATE = 13, // (event, diff) + WORLD_EVENT_ON_STARTUP = 14, // (event) + WORLD_EVENT_ON_SHUTDOWN = 15, // (event) + + // Eluna + ELUNA_EVENT_ON_LUA_STATE_CLOSE = 16, // (event) - triggers just before shutting down eluna (on shutdown and restart) + + // Map + MAP_EVENT_ON_CREATE = 17, // (event, map) + MAP_EVENT_ON_DESTROY = 18, // (event, map) + MAP_EVENT_ON_GRID_LOAD = 19, // Not Implemented + MAP_EVENT_ON_GRID_UNLOAD = 20, // Not Implemented + MAP_EVENT_ON_PLAYER_ENTER = 21, // (event, map, player) + MAP_EVENT_ON_PLAYER_LEAVE = 22, // (event, map, player) + MAP_EVENT_ON_UPDATE = 23, // (event, map, diff) + + // Area trigger + TRIGGER_EVENT_ON_TRIGGER = 24, // (event, player, triggerId) - Can return true + + // Weather + WEATHER_EVENT_ON_CHANGE = 25, // (event, zoneId, state, grade) + + // Auction house + AUCTION_EVENT_ON_ADD = 26, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow) + AUCTION_EVENT_ON_REMOVE = 27, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow) + AUCTION_EVENT_ON_SUCCESSFUL = 28, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow) + AUCTION_EVENT_ON_EXPIRE = 29, // (event, auctionId, owner, item, expireTime, buyout, startBid, currentBid, bidderGUIDLow) + + // AddOns + ADDON_EVENT_ON_MESSAGE = 30, // (event, sender, type, prefix, msg, target) - target can be nil/whisper_target/guild/group/channel. Can return false + + WORLD_EVENT_ON_DELETE_CREATURE = 31, // (event, creature) + WORLD_EVENT_ON_DELETE_GAMEOBJECT = 32, // (event, gameobject) + + // Eluna + ELUNA_EVENT_ON_LUA_STATE_OPEN = 33, // (event) - triggers after all scripts are loaded + + GAME_EVENT_START = 34, // (event, gameeventid) + GAME_EVENT_STOP = 35, // (event, gameeventid) + + SERVER_EVENT_COUNT + }; + + enum PlayerEvents + { + PLAYER_EVENT_ON_CHARACTER_CREATE = 1, // (event, player) + PLAYER_EVENT_ON_CHARACTER_DELETE = 2, // (event, guid) + PLAYER_EVENT_ON_LOGIN = 3, // (event, player) + PLAYER_EVENT_ON_LOGOUT = 4, // (event, player) + PLAYER_EVENT_ON_SPELL_CAST = 5, // (event, player, spell, skipCheck) + PLAYER_EVENT_ON_KILL_PLAYER = 6, // (event, killer, killed) + PLAYER_EVENT_ON_KILL_CREATURE = 7, // (event, killer, killed) + PLAYER_EVENT_ON_KILLED_BY_CREATURE = 8, // (event, killer, killed) + PLAYER_EVENT_ON_DUEL_REQUEST = 9, // (event, target, challenger) + PLAYER_EVENT_ON_DUEL_START = 10, // (event, player1, player2) + PLAYER_EVENT_ON_DUEL_END = 11, // (event, winner, loser, type) + PLAYER_EVENT_ON_GIVE_XP = 12, // (event, player, amount, victim, source) - Can return new XP amount + PLAYER_EVENT_ON_LEVEL_CHANGE = 13, // (event, player, oldLevel) + PLAYER_EVENT_ON_MONEY_CHANGE = 14, // (event, player, amount) - Can return new money amount + PLAYER_EVENT_ON_REPUTATION_CHANGE = 15, // (event, player, factionId, standing, incremental) - Can return new standing -> if standing == -1, it will prevent default action (rep gain) + PLAYER_EVENT_ON_TALENTS_CHANGE = 16, // (event, player, points) + PLAYER_EVENT_ON_TALENTS_RESET = 17, // (event, player, noCost) + PLAYER_EVENT_ON_CHAT = 18, // (event, player, msg, Type, lang) - Can return false, newMessage + PLAYER_EVENT_ON_WHISPER = 19, // (event, player, msg, Type, lang, receiver) - Can return false, newMessage + PLAYER_EVENT_ON_GROUP_CHAT = 20, // (event, player, msg, Type, lang, group) - Can return false, newMessage + PLAYER_EVENT_ON_GUILD_CHAT = 21, // (event, player, msg, Type, lang, guild) - Can return false, newMessage + PLAYER_EVENT_ON_CHANNEL_CHAT = 22, // (event, player, msg, Type, lang, channel) - channel is negative for custom channels. Can return false, newMessage + PLAYER_EVENT_ON_EMOTE = 23, // (event, player, emote) - Not triggered on any known emote + PLAYER_EVENT_ON_TEXT_EMOTE = 24, // (event, player, textEmote, emoteNum, guid) + PLAYER_EVENT_ON_SAVE = 25, // (event, player) + PLAYER_EVENT_ON_BIND_TO_INSTANCE = 26, // (event, player, difficulty, mapid, permanent) + PLAYER_EVENT_ON_UPDATE_ZONE = 27, // (event, player, newZone, newArea) + PLAYER_EVENT_ON_MAP_CHANGE = 28, // (event, player) + + // Custom + PLAYER_EVENT_ON_EQUIP = 29, // (event, player, item, bag, slot) + PLAYER_EVENT_ON_FIRST_LOGIN = 30, // (event, player) + PLAYER_EVENT_ON_CAN_USE_ITEM = 31, // (event, player, itemEntry) - Can return InventoryResult enum value + PLAYER_EVENT_ON_LOOT_ITEM = 32, // (event, player, item, count) + PLAYER_EVENT_ON_ENTER_COMBAT = 33, // (event, player, enemy) + PLAYER_EVENT_ON_LEAVE_COMBAT = 34, // (event, player) + PLAYER_EVENT_ON_REPOP = 35, // (event, player) + PLAYER_EVENT_ON_RESURRECT = 36, // (event, player) + PLAYER_EVENT_ON_LOOT_MONEY = 37, // (event, player, amount) + PLAYER_EVENT_ON_QUEST_ABANDON = 38, // (event, player, questId) + PLAYER_EVENT_ON_LEARN_TALENTS = 39, // (event, player, talentId, talentRank, spellid) + // UNUSED = 40, // (event, player) + // UNUSED = 41, // (event, player) + PLAYER_EVENT_ON_COMMAND = 42, // (event, player, command, chatHandler) - player is nil if command used from console. Can return false + PLAYER_EVENT_ON_PET_ADDED_TO_WORLD = 43, // (event, player, pet) + PLAYER_EVENT_ON_LEARN_SPELL = 44, // (event, player, spellId) + PLAYER_EVENT_ON_ACHIEVEMENT_COMPLETE = 45, // (event, player, achievement) + PLAYER_EVENT_ON_FFAPVP_CHANGE = 46, // (event, player, hasFfaPvp) + PLAYER_EVENT_ON_UPDATE_AREA = 47, // (event, player, oldArea, newArea) + PLAYER_EVENT_ON_CAN_INIT_TRADE = 48, // (event, player, target) - Can return false to prevent the trade + PLAYER_EVENT_ON_CAN_SEND_MAIL = 49, // (event, player, receiverGuid, mailbox, subject, body, money, cod, item) - Can return false to prevent sending the mail + PLAYER_EVENT_ON_CAN_JOIN_LFG = 50, // (event, player, roles, dungeons, comment) - Can return false to prevent queueing + PLAYER_EVENT_ON_QUEST_REWARD_ITEM = 51, // (event, player, item, count) + PLAYER_EVENT_ON_CREATE_ITEM = 52, // (event, player, item, count) + PLAYER_EVENT_ON_STORE_NEW_ITEM = 53, // (event, player, item, count) + PLAYER_EVENT_ON_COMPLETE_QUEST = 54, // (event, player, quest) + PLAYER_EVENT_ON_CAN_GROUP_INVITE = 55, // (event, player, memberName) - Can return false to prevent inviting + PLAYER_EVENT_ON_GROUP_ROLL_REWARD_ITEM = 56, // (event, player, item, count, voteType, roll) + PLAYER_EVENT_ON_BG_DESERTION = 57, // (event, player, type) + + PLAYER_EVENT_COUNT + }; + + enum GuildEvents + { + // Guild + GUILD_EVENT_ON_ADD_MEMBER = 1, // (event, guild, player, rank) + GUILD_EVENT_ON_REMOVE_MEMBER = 2, // (event, guild, player, isDisbanding) + GUILD_EVENT_ON_MOTD_CHANGE = 3, // (event, guild, newMotd) + GUILD_EVENT_ON_INFO_CHANGE = 4, // (event, guild, newInfo) + GUILD_EVENT_ON_CREATE = 5, // (event, guild, leader, name) // Not on TC + GUILD_EVENT_ON_DISBAND = 6, // (event, guild) + GUILD_EVENT_ON_MONEY_WITHDRAW = 7, // (event, guild, player, amount, isRepair) - Can return new money amount + GUILD_EVENT_ON_MONEY_DEPOSIT = 8, // (event, guild, player, amount) - Can return new money amount + GUILD_EVENT_ON_ITEM_MOVE = 9, // (event, guild, player, item, isSrcBank, srcContainer, srcSlotId, isDestBank, destContainer, destSlotId) // TODO + GUILD_EVENT_ON_EVENT = 10, // (event, guild, eventType, plrGUIDLow1, plrGUIDLow2, newRank) // TODO + GUILD_EVENT_ON_BANK_EVENT = 11, // (event, guild, eventType, tabId, playerGUIDLow, itemOrMoney, itemStackCount, destTabId) + + GUILD_EVENT_COUNT + }; + + enum GroupEvents + { + // Group + GROUP_EVENT_ON_MEMBER_ADD = 1, // (event, group, guid) + GROUP_EVENT_ON_MEMBER_INVITE = 2, // (event, group, guid) + GROUP_EVENT_ON_MEMBER_REMOVE = 3, // (event, group, guid, method, kicker, reason) + GROUP_EVENT_ON_LEADER_CHANGE = 4, // (event, group, newLeaderGuid, oldLeaderGuid) + GROUP_EVENT_ON_DISBAND = 5, // (event, group) + GROUP_EVENT_ON_CREATE = 6, // (event, group, leaderGuid, groupType) + + GROUP_EVENT_COUNT + }; + + enum VehicleEvents + { + VEHICLE_EVENT_ON_INSTALL = 1, // (event, vehicle) + VEHICLE_EVENT_ON_UNINSTALL = 2, // (event, vehicle) + // UNUSED = 3, // (event, vehicle) + VEHICLE_EVENT_ON_INSTALL_ACCESSORY = 4, // (event, vehicle, creature) + VEHICLE_EVENT_ON_ADD_PASSENGER = 5, // (event, vehicle, unit, seatId) + VEHICLE_EVENT_ON_REMOVE_PASSENGER = 6, // (event, vehicle, unit) + + VEHICLE_EVENT_COUNT + }; + + enum CreatureEvents + { + CREATURE_EVENT_ON_ENTER_COMBAT = 1, // (event, creature, target) - Can return true to stop normal action + CREATURE_EVENT_ON_LEAVE_COMBAT = 2, // (event, creature) - Can return true to stop normal action + CREATURE_EVENT_ON_TARGET_DIED = 3, // (event, creature, victim) - Can return true to stop normal action + CREATURE_EVENT_ON_DIED = 4, // (event, creature, killer) - Can return true to stop normal action + CREATURE_EVENT_ON_SPAWN = 5, // (event, creature) - Can return true to stop normal action + CREATURE_EVENT_ON_REACH_WP = 6, // (event, creature, type, id) - Can return true to stop normal action + CREATURE_EVENT_ON_AIUPDATE = 7, // (event, creature, diff) - Can return true to stop normal action + CREATURE_EVENT_ON_RECEIVE_EMOTE = 8, // (event, creature, player, emoteid) - Can return true to stop normal action + CREATURE_EVENT_ON_DAMAGE_TAKEN = 9, // (event, creature, attacker, damage) - Can return true to stop normal action, can return new damage as second return value. + CREATURE_EVENT_ON_PRE_COMBAT = 10, // (event, creature, target) - Can return true to stop normal action + // UNUSED + CREATURE_EVENT_ON_OWNER_ATTACKED = 12, // (event, creature, target) - Can return true to stop normal action // Not on mangos + CREATURE_EVENT_ON_OWNER_ATTACKED_AT = 13, // (event, creature, attacker) - Can return true to stop normal action // Not on mangos + CREATURE_EVENT_ON_HIT_BY_SPELL = 14, // (event, creature, caster, spellid) - Can return true to stop normal action + CREATURE_EVENT_ON_SPELL_HIT_TARGET = 15, // (event, creature, target, spellid) - Can return true to stop normal action + // UNUSED = 16, // (event, creature) + // UNUSED = 17, // (event, creature) + // UNUSED = 18, // (event, creature) + CREATURE_EVENT_ON_JUST_SUMMONED_CREATURE = 19, // (event, creature, summon) - Can return true to stop normal action + CREATURE_EVENT_ON_SUMMONED_CREATURE_DESPAWN = 20, // (event, creature, summon) - Can return true to stop normal action + CREATURE_EVENT_ON_SUMMONED_CREATURE_DIED = 21, // (event, creature, summon, killer) - Can return true to stop normal action // Not on mangos + CREATURE_EVENT_ON_SUMMONED = 22, // (event, creature, summoner) - Can return true to stop normal action + CREATURE_EVENT_ON_RESET = 23, // (event, creature) + CREATURE_EVENT_ON_REACH_HOME = 24, // (event, creature) - Can return true to stop normal action + // UNUSED = 25, // (event, creature) + CREATURE_EVENT_ON_CORPSE_REMOVED = 26, // (event, creature, respawndelay) - Can return true to stop normal action, can return new respawndelay as second return value + CREATURE_EVENT_ON_MOVE_IN_LOS = 27, // (event, creature, unit) - Can return true to stop normal action. Does not actually check LOS, just uses the sight range + // UNUSED = 28, // (event, creature) + // UNUSED = 29, // (event, creature) + CREATURE_EVENT_ON_DUMMY_EFFECT = 30, // (event, caster, spellid, effindex, creature) + CREATURE_EVENT_ON_QUEST_ACCEPT = 31, // (event, player, creature, quest) - Can return true + // UNUSED = 32, // (event, creature) + // UNUSED = 33, // (event, creature) + CREATURE_EVENT_ON_QUEST_REWARD = 34, // (event, player, creature, quest, opt) - Can return true + CREATURE_EVENT_ON_DIALOG_STATUS = 35, // (event, player, creature) + CREATURE_EVENT_ON_ADD = 36, // (event, creature) + CREATURE_EVENT_ON_REMOVE = 37, // (event, creature) + CREATURE_EVENT_COUNT + }; + + enum GameObjectEvents + { + GAMEOBJECT_EVENT_ON_AIUPDATE = 1, // (event, go, diff) + GAMEOBJECT_EVENT_ON_SPAWN = 2, // (event, go) + GAMEOBJECT_EVENT_ON_DUMMY_EFFECT = 3, // (event, caster, spellid, effindex, go) - Can return true to stop normal action + GAMEOBJECT_EVENT_ON_QUEST_ACCEPT = 4, // (event, player, go, quest) - Can return true to stop normal action + GAMEOBJECT_EVENT_ON_QUEST_REWARD = 5, // (event, player, go, quest, opt) - Can return true to stop normal action + GAMEOBJECT_EVENT_ON_DIALOG_STATUS = 6, // (event, player, go) + GAMEOBJECT_EVENT_ON_DESTROYED = 7, // (event, go, attacker) + GAMEOBJECT_EVENT_ON_DAMAGED = 8, // (event, go, attacker) + GAMEOBJECT_EVENT_ON_LOOT_STATE_CHANGE = 9, // (event, go, state) + GAMEOBJECT_EVENT_ON_GO_STATE_CHANGED = 10, // (event, go, state) + // UNUSED = 11, // (event, gameobject) + GAMEOBJECT_EVENT_ON_ADD = 12, // (event, gameobject) + GAMEOBJECT_EVENT_ON_REMOVE = 13, // (event, gameobject) + GAMEOBJECT_EVENT_ON_USE = 14, // (event, go, player) - Can return true to stop normal action + GAMEOBJECT_EVENT_COUNT + }; + + enum ItemEvents + { + ITEM_EVENT_ON_DUMMY_EFFECT = 1, // (event, caster, spellid, effindex, item) + ITEM_EVENT_ON_USE = 2, // (event, player, item, target) - Can return false to stop the spell casting + ITEM_EVENT_ON_QUEST_ACCEPT = 3, // (event, player, item, quest) - Can return true + ITEM_EVENT_ON_EXPIRE = 4, // (event, player, itemid) - Can return true + ITEM_EVENT_ON_REMOVE = 5, // (event, player, item) - Can return true + ITEM_EVENT_COUNT + }; + + enum GossipEvents + { + GOSSIP_EVENT_ON_HELLO = 1, // (event, player, object) - Object is the Creature/GameObject/Item. Can return false to do default action. For item gossip can return false to stop spell casting. + GOSSIP_EVENT_ON_SELECT = 2, // (event, player, object, sender, intid, code, menu_id) - Object is the Creature/GameObject/Item/Player, menu_id is only for player gossip. Can return false to do default action. + GOSSIP_EVENT_COUNT + }; + + enum BGEvents + { + BG_EVENT_ON_START = 1, // (event, bg, bgId, instanceId) - Needs to be added to TC + BG_EVENT_ON_END = 2, // (event, bg, bgId, instanceId, winner) - Needs to be added to TC + BG_EVENT_ON_CREATE = 3, // (event, bg, bgId, instanceId) - Needs to be added to TC + BG_EVENT_ON_PRE_DESTROY = 4, // (event, bg, bgId, instanceId) - Needs to be added to TC + BG_EVENT_COUNT + }; + + enum InstanceEvents + { + INSTANCE_EVENT_ON_INITIALIZE = 1, // (event, instance_data, map) + INSTANCE_EVENT_ON_LOAD = 2, // (event, instance_data, map) + INSTANCE_EVENT_ON_UPDATE = 3, // (event, instance_data, map, diff) + INSTANCE_EVENT_ON_PLAYER_ENTER = 4, // (event, instance_data, map, player) + INSTANCE_EVENT_ON_CREATURE_CREATE = 5, // (event, instance_data, map, creature) + INSTANCE_EVENT_ON_GAMEOBJECT_CREATE = 6, // (event, instance_data, map, go) + INSTANCE_EVENT_ON_CHECK_ENCOUNTER_IN_PROGRESS = 7, // (event, instance_data, map) + INSTANCE_EVENT_COUNT + }; +}; + +#endif // _HOOKS_H diff --git a/modules/mod-eluna/src/LuaEngine/HttpManager.cpp b/modules/mod-eluna/src/LuaEngine/HttpManager.cpp new file mode 100644 index 0000000..80d6b29 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/HttpManager.cpp @@ -0,0 +1,276 @@ +#include +extern "C" +{ +#include "lua.h" +#include "lauxlib.h" +}; + +#if defined TRINITY || defined AZEROTHCORE +#define CPPHTTPLIB_OPENSSL_SUPPORT +#endif +#include "libs/httplib.h" +#include "HttpManager.h" +#include "LuaEngine.h" + +HttpWorkItem::HttpWorkItem(int funcRef, const std::string& httpVerb, const std::string& url, const std::string& body, const std::string& contentType, const httplib::Headers& headers) + : funcRef(funcRef), + httpVerb(httpVerb), + url(url), + body(body), + contentType(contentType), + headers(headers) +{ } + +HttpResponse::HttpResponse(int funcRef, int statusCode, const std::string& body, const httplib::Headers& headers) + : funcRef(funcRef), + statusCode(statusCode), + body(body), + headers(headers) +{ } + +HttpManager::HttpManager() + : workQueue(16), + responseQueue(16), + startedWorkerThread(false), + cancelationToken(false), + condVar(), + condVarMutex(), + parseUrlRegex("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?") +{ + StartHttpWorker(); +} + +HttpManager::~HttpManager() +{ + StopHttpWorker(); +} + +void HttpManager::PushRequest(HttpWorkItem* item) +{ + std::unique_lock lock(condVarMutex); + workQueue.push(item); + condVar.notify_one(); +} + +void HttpManager::StartHttpWorker() +{ + ClearQueues(); + + if (!startedWorkerThread) + { + cancelationToken.store(false); + workerThread = std::thread(&HttpManager::HttpWorkerThread, this); + startedWorkerThread = true; + } +} + +void HttpManager::ClearQueues() +{ + while (workQueue.front()) + { + HttpWorkItem* item = *workQueue.front(); + if (item != nullptr) + { + delete item; + } + workQueue.pop(); + } + + while (responseQueue.front()) + { + HttpResponse* item = *responseQueue.front(); + if (item != nullptr) + { + delete item; + } + responseQueue.pop(); + } +} + +void HttpManager::StopHttpWorker() +{ + if (!startedWorkerThread) + { + return; + } + + cancelationToken.store(true); + condVar.notify_one(); + workerThread.join(); + ClearQueues(); + startedWorkerThread = false; +} + +void HttpManager::HttpWorkerThread() +{ + while (true) + { + { + std::unique_lock lock(condVarMutex); + condVar.wait(lock, [&] { return workQueue.front() != nullptr || cancelationToken.load(); }); + } + + if (cancelationToken.load()) + { + break; + } + if (!workQueue.front()) + { + continue; + } + + HttpWorkItem* req = *workQueue.front(); + workQueue.pop(); + if (!req) + { + continue; + } + + try + { + std::string host; + std::string path; + + if (!ParseUrl(req->url, host, path)) { + ELUNA_LOG_ERROR("[Eluna]: Could not parse URL {}", req->url); + continue; + } + + httplib::Client cli(host); + cli.set_connection_timeout(0, 3000000); // 3 seconds + cli.set_read_timeout(5, 0); // 5 seconds + cli.set_write_timeout(5, 0); // 5 seconds + + httplib::Result res = DoRequest(cli, req, path); + httplib::Error err = res.error(); + if (err != httplib::Error::Success) + { + ELUNA_LOG_ERROR("[Eluna]: HTTP request error: {}", httplib::to_string(err)); + continue; + } + + if (res->status == 301) + { + std::string location = res->get_header_value("Location"); + std::string host; + std::string path; + + if (!ParseUrl(location, host, path)) + { + ELUNA_LOG_ERROR("[Eluna]: Could not parse URL after redirect: {}", location); + continue; + } + httplib::Client cli2(host); + cli2.set_connection_timeout(0, 3000000); // 3 seconds + cli2.set_read_timeout(5, 0); // 5 seconds + cli2.set_write_timeout(5, 0); // 5 seconds + res = DoRequest(cli2, req, path); + } + + responseQueue.push(new HttpResponse(req->funcRef, res->status, res->body, res->headers)); + } + catch (const std::exception& ex) + { + ELUNA_LOG_ERROR("[Eluna]: HTTP request error: {}", ex.what()); + } + + delete req; + } +} + +httplib::Result HttpManager::DoRequest(httplib::Client& client, HttpWorkItem* req, const std::string& urlPath) +{ + const char* path = urlPath.c_str(); + if (req->httpVerb == "GET") + { + return client.Get(path, req->headers); + } + if (req->httpVerb == "HEAD") + { + return client.Head(path, req->headers); + } + if (req->httpVerb == "POST") + { + return client.Post(path, req->headers, req->body, req->contentType.c_str()); + } + if (req->httpVerb == "PUT") + { + return client.Put(path, req->headers, req->body, req->contentType.c_str()); + } + if (req->httpVerb == "PATCH") + { + return client.Patch(path, req->headers, req->body, req->contentType.c_str()); + } + if (req->httpVerb == "DELETE") + { + return client.Delete(path, req->headers); + } + if (req->httpVerb == "OPTIONS") + { + return client.Options(path, req->headers); + } + + ELUNA_LOG_ERROR("[Eluna]: HTTP request error: invalid HTTP verb {}", req->httpVerb); + return client.Get(path, req->headers); +} + +bool HttpManager::ParseUrl(const std::string& url, std::string& host, std::string& path) +{ + std::smatch matches; + + if (!std::regex_search(url, matches, parseUrlRegex)) + { + return false; + } + + std::string scheme = matches[2]; + std::string authority = matches[4]; + std::string query = matches[7]; + host = scheme + "://" + authority; + path = matches[5]; + if (path.empty()) + { + path = "/"; + } + path += (query.empty() ? "" : "?") + query; + + return true; +} + +void HttpManager::HandleHttpResponses() +{ + while (!responseQueue.empty()) + { + HttpResponse* res = *responseQueue.front(); + responseQueue.pop(); + + if (res == nullptr) + { + continue; + } + + LOCK_ELUNA; + + lua_State* L = Eluna::GEluna->L; + + // Get function + lua_rawgeti(L, LUA_REGISTRYINDEX, res->funcRef); + + // Push parameters + Eluna::Push(L, res->statusCode); + Eluna::Push(L, res->body); + lua_newtable(L); + for (const auto& item : res->headers) { + Eluna::Push(L, item.first); + Eluna::Push(L, item.second); + lua_settable(L, -3); + } + + // Call function + Eluna::GEluna->ExecuteCall(3, 0); + + luaL_unref(L, LUA_REGISTRYINDEX, res->funcRef); + + delete res; + } +} diff --git a/modules/mod-eluna/src/LuaEngine/HttpManager.h b/modules/mod-eluna/src/LuaEngine/HttpManager.h new file mode 100644 index 0000000..2a77c1e --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/HttpManager.h @@ -0,0 +1,61 @@ +#ifndef ELUNA_HTTP_MANAGER_H +#define ELUNA_HTTP_MANAGER_H + +#include + +#include "libs/httplib.h" +#include "libs/rigtorp/SPSCQueue.h" + +struct HttpWorkItem +{ +public: + HttpWorkItem(int funcRef, const std::string& httpVerb, const std::string& url, const std::string& body, const std::string &contentType, const httplib::Headers& headers); + + int funcRef; + std::string httpVerb; + std::string url; + std::string body; + std::string contentType; + httplib::Headers headers; +}; + +struct HttpResponse +{ +public: + HttpResponse(int funcRef, int statusCode, const std::string& body, const httplib::Headers& headers); + + int funcRef; + int statusCode; + std::string body; + httplib::Headers headers; +}; + + +class HttpManager +{ +public: + HttpManager(); + ~HttpManager(); + + void StartHttpWorker(); + void StopHttpWorker(); + void PushRequest(HttpWorkItem* item); + void HandleHttpResponses(); + +private: + void ClearQueues(); + void HttpWorkerThread(); + bool ParseUrl(const std::string& url, std::string& host, std::string& path); + httplib::Result DoRequest(httplib::Client& client, HttpWorkItem* req, const std::string& path); + + rigtorp::SPSCQueue workQueue; + rigtorp::SPSCQueue responseQueue; + std::thread workerThread; + bool startedWorkerThread; + std::atomic_bool cancelationToken; + std::condition_variable condVar; + std::mutex condVarMutex; + std::regex parseUrlRegex; +}; + +#endif // #ifndef ELUNA_HTTP_MANAGER_H diff --git a/modules/mod-eluna/src/LuaEngine/InstanceHooks.cpp b/modules/mod-eluna/src/LuaEngine/InstanceHooks.cpp new file mode 100644 index 0000000..29b2607 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/InstanceHooks.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaIncludes.h" +#include "ElunaTemplate.h" +#include "ElunaInstanceAI.h" + +using namespace Hooks; + +#define START_HOOK(EVENT, AI) \ + if (!IsEnabled())\ + return;\ + auto mapKey = EntryKey(EVENT, AI->instance->GetId());\ + auto instanceKey = EntryKey(EVENT, AI->instance->GetInstanceId());\ + if (!MapEventBindings->HasBindingsFor(mapKey) && !InstanceEventBindings->HasBindingsFor(instanceKey))\ + return;\ + LOCK_ELUNA;\ + PushInstanceData(L, AI);\ + Push(AI->instance) + +#define START_HOOK_WITH_RETVAL(EVENT, AI, RETVAL) \ + if (!IsEnabled())\ + return RETVAL;\ + auto mapKey = EntryKey(EVENT, AI->instance->GetId());\ + auto instanceKey = EntryKey(EVENT, AI->instance->GetInstanceId());\ + if (!MapEventBindings->HasBindingsFor(mapKey) && !InstanceEventBindings->HasBindingsFor(instanceKey))\ + return RETVAL;\ + LOCK_ELUNA;\ + PushInstanceData(L, AI);\ + Push(AI->instance) + +void Eluna::OnInitialize(ElunaInstanceAI* ai) +{ + START_HOOK(INSTANCE_EVENT_ON_INITIALIZE, ai); + CallAllFunctions(MapEventBindings, InstanceEventBindings, mapKey, instanceKey); +} + +void Eluna::OnLoad(ElunaInstanceAI* ai) +{ + START_HOOK(INSTANCE_EVENT_ON_LOAD, ai); + CallAllFunctions(MapEventBindings, InstanceEventBindings, mapKey, instanceKey); +} + +void Eluna::OnUpdateInstance(ElunaInstanceAI* ai, uint32 diff) +{ + START_HOOK(INSTANCE_EVENT_ON_UPDATE, ai); + Push(diff); + CallAllFunctions(MapEventBindings, InstanceEventBindings, mapKey, instanceKey); +} + +void Eluna::OnPlayerEnterInstance(ElunaInstanceAI* ai, Player* player) +{ + START_HOOK(INSTANCE_EVENT_ON_PLAYER_ENTER, ai); + Push(player); + CallAllFunctions(MapEventBindings, InstanceEventBindings, mapKey, instanceKey); +} + +void Eluna::OnCreatureCreate(ElunaInstanceAI* ai, Creature* creature) +{ + START_HOOK(INSTANCE_EVENT_ON_CREATURE_CREATE, ai); + Push(creature); + CallAllFunctions(MapEventBindings, InstanceEventBindings, mapKey, instanceKey); +} + +void Eluna::OnGameObjectCreate(ElunaInstanceAI* ai, GameObject* gameobject) +{ + START_HOOK(INSTANCE_EVENT_ON_GAMEOBJECT_CREATE, ai); + Push(gameobject); + CallAllFunctions(MapEventBindings, InstanceEventBindings, mapKey, instanceKey); +} + +bool Eluna::OnCheckEncounterInProgress(ElunaInstanceAI* ai) +{ + START_HOOK_WITH_RETVAL(INSTANCE_EVENT_ON_CHECK_ENCOUNTER_IN_PROGRESS, ai, false); + return CallAllFunctionsBool(MapEventBindings, InstanceEventBindings, mapKey, instanceKey); +} diff --git a/modules/mod-eluna/src/LuaEngine/ItemHooks.cpp b/modules/mod-eluna/src/LuaEngine/ItemHooks.cpp new file mode 100644 index 0000000..ddd0223 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ItemHooks.cpp @@ -0,0 +1,133 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaIncludes.h" +#include "ElunaTemplate.h" + +using namespace Hooks; + +#define START_HOOK(EVENT, ENTRY) \ + if (!IsEnabled())\ + return;\ + auto key = EntryKey(EVENT, ENTRY);\ + if (!ItemEventBindings->HasBindingsFor(key))\ + return;\ + LOCK_ELUNA + +#define START_HOOK_WITH_RETVAL(EVENT, ENTRY, RETVAL) \ + if (!IsEnabled())\ + return RETVAL;\ + auto key = EntryKey(EVENT, ENTRY);\ + if (!ItemEventBindings->HasBindingsFor(key))\ + return RETVAL;\ + LOCK_ELUNA + +void Eluna::OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Item* pTarget) +{ + START_HOOK(ITEM_EVENT_ON_DUMMY_EFFECT, pTarget->GetEntry()); + Push(pCaster); + Push(spellId); + Push(effIndex); + Push(pTarget); + CallAllFunctions(ItemEventBindings, key); +} + +bool Eluna::OnQuestAccept(Player* pPlayer, Item* pItem, Quest const* pQuest) +{ + START_HOOK_WITH_RETVAL(ITEM_EVENT_ON_QUEST_ACCEPT, pItem->GetEntry(), false); + Push(pPlayer); + Push(pItem); + Push(pQuest); + return CallAllFunctionsBool(ItemEventBindings, key); +} + +bool Eluna::OnUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets) +{ + ObjectGuid guid = pItem->GET_GUID(); + bool castSpell = true; + + if (!OnItemUse(pPlayer, pItem, targets)) + castSpell = false; + + pItem = pPlayer->GetItemByGuid(guid); + if (pItem) + { + if (!OnItemGossip(pPlayer, pItem, targets)) + castSpell = false; + pItem = pPlayer->GetItemByGuid(guid); + } + + if (pItem && castSpell) + return true; + + // Send equip error that shows no message + // This is a hack fix to stop spell casting visual bug when a spell is not cast on use + WorldPacket data(SMSG_INVENTORY_CHANGE_FAILURE, 18); + data << uint8(59); // EQUIP_ERR_NONE / EQUIP_ERR_CANT_BE_DISENCHANTED + data << guid; + data << ObjectGuid(uint64(0)); + data << uint8(0); +#ifdef CMANGOS + pPlayer->GetSession()->SendPacket(data); +#else + pPlayer->GetSession()->SendPacket(&data); +#endif + return false; +} + +bool Eluna::OnItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets) +{ + START_HOOK_WITH_RETVAL(ITEM_EVENT_ON_USE, pItem->GetEntry(), true); + Push(pPlayer); + Push(pItem); +#if defined TRINITY || AZEROTHCORE + if (GameObject* target = targets.GetGOTarget()) + Push(target); + else if (Item* target = targets.GetItemTarget()) + Push(target); + else if (Corpse* target = targets.GetCorpseTarget()) + Push(target); + else if (Unit* target = targets.GetUnitTarget()) + Push(target); + else if (WorldObject* target = targets.GetObjectTarget()) + Push(target); + else + Push(); +#else + if (GameObject* target = targets.getGOTarget()) + Push(target); + else if (Item* target = targets.getItemTarget()) + Push(target); + else if (Corpse* target = pPlayer->GetMap()->GetCorpse(targets.getCorpseTargetGuid())) + Push(target); + else if (Unit* target = targets.getUnitTarget()) + Push(target); + else + Push(); +#endif + + return CallAllFunctionsBool(ItemEventBindings, key, true); +} + +bool Eluna::OnExpire(Player* pPlayer, ItemTemplate const* pProto) +{ + START_HOOK_WITH_RETVAL(ITEM_EVENT_ON_EXPIRE, pProto->ItemId, false); + Push(pPlayer); + Push(pProto->ItemId); + return CallAllFunctionsBool(ItemEventBindings, key); +} + +bool Eluna::OnRemove(Player* pPlayer, Item* pItem) +{ + START_HOOK_WITH_RETVAL(ITEM_EVENT_ON_REMOVE, pItem->GetEntry(), false); + Push(pPlayer); + Push(pItem); + return CallAllFunctionsBool(ItemEventBindings, key); +} diff --git a/modules/mod-eluna/src/LuaEngine/ItemMethods.h b/modules/mod-eluna/src/LuaEngine/ItemMethods.h new file mode 100644 index 0000000..9c85551 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ItemMethods.h @@ -0,0 +1,786 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef ITEMMETHODS_H +#define ITEMMETHODS_H + +/*** + * Inherits all methods from: [Object] + */ +namespace LuaItem +{ + /** + * Returns 'true' if the [Item] is soulbound, 'false' otherwise + * + * @return bool isSoulBound + */ + int IsSoulBound(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsSoulBound()); + return 1; + } + +#if (!defined(TBC) && !defined(CLASSIC)) + /** + * Returns 'true' if the [Item] is account bound, 'false' otherwise + * + * @return bool isAccountBound + */ + int IsBoundAccountWide(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsBoundAccountWide()); + return 1; + } +#endif + + /** + * Returns 'true' if the [Item] is bound to a [Player] by an enchant, 'false' otehrwise + * + * @return bool isBoundByEnchant + */ + int IsBoundByEnchant(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsBoundByEnchant()); + return 1; + } + + /** + * Returns 'true' if the [Item] is not bound to the [Player] specified, 'false' otherwise + * + * @param [Player] player : the [Player] object to check the item against + * @return bool isNotBound + */ + int IsNotBoundToPlayer(lua_State* L, Item* item) + { + Player* player = Eluna::CHECKOBJ(L, 2); + + Eluna::Push(L, item->IsBindedNotWith(player)); + return 1; + } + + /** + * Returns 'true' if the [Item] is locked, 'false' otherwise + * + * @return bool isLocked + */ + int IsLocked(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsLocked()); + return 1; + } + + /** + * Returns 'true' if the [Item] is a bag, 'false' otherwise + * + * @return bool isBag + */ + int IsBag(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsBag()); + return 1; + } + +#ifndef CLASSIC + /** + * Returns 'true' if the [Item] is a currency token, 'false' otherwise + * + * @return bool isCurrencyToken + */ + int IsCurrencyToken(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsCurrencyToken()); + return 1; + } +#endif + + /** + * Returns 'true' if the [Item] is a not an empty bag, 'false' otherwise + * + * @return bool isNotEmptyBag + */ + int IsNotEmptyBag(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsNotEmptyBag()); + return 1; + } + + /** + * Returns 'true' if the [Item] is broken, 'false' otherwise + * + * @return bool isBroken + */ + int IsBroken(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsBroken()); + return 1; + } + + /** + * Returns 'true' if the [Item] can be traded, 'false' otherwise + * + * @return bool isTradeable + */ + int CanBeTraded(lua_State* L, Item* item) + { +#if (defined(TBC) || defined(CLASSIC)) + Eluna::Push(L, item->CanBeTraded()); +#else + bool mail = Eluna::CHECKVAL(L, 2, false); + Eluna::Push(L, item->CanBeTraded(mail)); +#endif + return 1; + } + + /** + * Returns 'true' if the [Item] is currently in a trade window, 'false' otherwise + * + * @return bool isInTrade + */ + int IsInTrade(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsInTrade()); + return 1; + } + + /** + * Returns 'true' if the [Item] is currently in a bag, 'false' otherwise + * + * @return bool isInBag + */ + int IsInBag(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsInBag()); + return 1; + } + + /** + * Returns 'true' if the [Item] is currently equipped, 'false' otherwise + * + * @return bool isEquipped + */ + int IsEquipped(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsEquipped()); + return 1; + } + + /** + * Returns 'true' if the [Item] has the [Quest] specified tied to it, 'false' otherwise + * + * @param uint32 questId : the [Quest] id to be checked + * @return bool hasQuest + */ + int HasQuest(lua_State* L, Item* item) + { + uint32 quest = Eluna::CHECKVAL(L, 2); +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, item->hasQuest(quest)); +#else + Eluna::Push(L, item->HasQuest(quest)); +#endif + return 1; + } + + /** + * Returns 'true' if the [Item] is a potion, 'false' otherwise + * + * @return bool isPotion + */ + int IsPotion(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsPotion()); + return 1; + } + +#if defined CLASSIC || defined(TBC) || defined(WOTLK) + /** + * Returns 'true' if the [Item] is a weapon vellum, 'false' otherwise + * + * @return bool isWeaponVellum + */ + int IsWeaponVellum(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsWeaponVellum()); + return 1; + } + + /** + * Returns 'true' if the [Item] is an armor vellum, 'false' otherwise + * + * @return bool isArmorVellum + */ + int IsArmorVellum(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsArmorVellum()); + return 1; + } +#endif + + /** + * Returns 'true' if the [Item] is a conjured consumable, 'false' otherwise + * + * @return bool isConjuredConsumable + */ + int IsConjuredConsumable(lua_State* L, Item* item) + { + Eluna::Push(L, item->IsConjuredConsumable()); + return 1; + } + + /*int IsRefundExpired(lua_State* L, Item* item)// TODO: Implement core support + { + Eluna::Push(L, item->IsRefundExpired()); + return 1; + }*/ + + /** + * Returns the chat link of the [Item] + * + *
+     * enum LocaleConstant
+     * {
+     *     LOCALE_enUS = 0,
+     *     LOCALE_koKR = 1,
+     *     LOCALE_frFR = 2,
+     *     LOCALE_deDE = 3,
+     *     LOCALE_zhCN = 4,
+     *     LOCALE_zhTW = 5,
+     *     LOCALE_esES = 6,
+     *     LOCALE_esMX = 7,
+     *     LOCALE_ruRU = 8
+     * };
+     * 
+ * + * @param [LocaleConstant] locale = DEFAULT_LOCALE : locale to return the [Item]'s name in + * @return string itemLink + */ + int GetItemLink(lua_State* L, Item* item) + { + uint8 locale = Eluna::CHECKVAL(L, 2, DEFAULT_LOCALE); + if (locale >= TOTAL_LOCALES) + return luaL_argerror(L, 2, "valid LocaleConstant expected"); + + const ItemTemplate* temp = item->GetTemplate(); + std::string name = temp->Name1; + if (ItemLocale const* il = eObjectMgr->GetItemLocale(temp->ItemId)) + { + ObjectMgr::GetLocaleString(il->Name, static_cast(locale), name); + } + +#ifndef CLASSIC + if (int32 itemRandPropId = item->GetItemRandomPropertyId()) + { +#if defined(CATA) || defined (MISTS) + char* suffix = NULL; +#else +#if TRINITY || AZEROTHCORE + std::array const* suffix = NULL; +#else + char* const* suffix = NULL; +#endif +#endif + if (itemRandPropId < 0) + { + const ItemRandomSuffixEntry* itemRandEntry = sItemRandomSuffixStore.LookupEntry(-item->GetItemRandomPropertyId()); + if (itemRandEntry) + { +#if TRINITY || AZEROTHCORE + suffix = &itemRandEntry->Name; +#else + suffix = itemRandEntry->nameSuffix; +#endif + } + } + else + { + const ItemRandomPropertiesEntry* itemRandEntry = sItemRandomPropertiesStore.LookupEntry(item->GetItemRandomPropertyId()); + if (itemRandEntry) + { +#if TRINITY || AZEROTHCORE + suffix = &itemRandEntry->Name; +#else + suffix = itemRandEntry->nameSuffix; +#endif + } + } + if (suffix) + { +#if TRINITY || AZEROTHCORE + const char* suffixName = (*suffix)[(name != temp->Name1) ? locale : uint8(DEFAULT_LOCALE)]; +#else + const char* suffixName = suffix[(name != temp->Name1) ? locale : uint8(DEFAULT_LOCALE)]; +#endif + if (strcmp(suffixName, "") != 0) + { + name += ' '; + name += suffixName; + } + } + } +#endif + + Player* owner = item->GetOwner(); + std::ostringstream oss; + oss << "|c" << std::hex << ItemQualityColors[temp->Quality] << std::dec << + "|Hitem:" << temp->ItemId << ":" << + item->GetEnchantmentId(PERM_ENCHANTMENT_SLOT) << ":" << +#ifndef CLASSIC + item->GetEnchantmentId(SOCK_ENCHANTMENT_SLOT) << ":" << + item->GetEnchantmentId(SOCK_ENCHANTMENT_SLOT_2) << ":" << + item->GetEnchantmentId(SOCK_ENCHANTMENT_SLOT_3) << ":" << + item->GetEnchantmentId(BONUS_ENCHANTMENT_SLOT) << ":" << +#endif + item->GetItemRandomPropertyId() << ":" << item->GetItemSuffixFactor() << ":" << + (uint32)(owner ? owner->GetLevel() : 0) << "|h[" << name << "]|h|r"; + + Eluna::Push(L, oss.str()); + return 1; + } + + int GetOwnerGUID(lua_State* L, Item* item) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, item->GetOwnerGUID()); +#else + Eluna::Push(L, item->GetOwnerGuid()); +#endif + return 1; + } + + /** + * Returns the [Player] who currently owns the [Item] + * + * @return [Player] player : the [Player] who owns the [Item] + */ + int GetOwner(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetOwner()); + return 1; + } + + /** + * Returns the [Item]s stack count + * + * @return uint32 count + */ + int GetCount(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetCount()); + return 1; + } + + /** + * Returns the [Item]s max stack count + * + * @return uint32 maxCount + */ + int GetMaxStackCount(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetMaxStackCount()); + return 1; + } + + /** + * Returns the [Item]s current slot + * + * @return uint8 slot + */ + int GetSlot(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetSlot()); + return 1; + } + + /** + * Returns the [Item]s current bag slot + * + * @return uint8 bagSlot + */ + int GetBagSlot(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetBagSlot()); + return 1; + } + + /** + * Returns the [Item]s enchantment ID by enchant slot specified + * + * @param [EnchantmentSlot] enchantSlot : the enchant slot specified + * @return uint32 enchantId : the id of the enchant slot specified + */ + int GetEnchantmentId(lua_State* L, Item* item) + { + uint32 enchant_slot = Eluna::CHECKVAL(L, 2); + + if (enchant_slot >= MAX_INSPECTED_ENCHANTMENT_SLOT) + return luaL_argerror(L, 2, "valid EnchantmentSlot expected"); + + Eluna::Push(L, item->GetEnchantmentId(EnchantmentSlot(enchant_slot))); + return 1; + } + + /** + * Returns the spell ID tied to the [Item] by spell index + * + * @param uint32 spellIndex : the spell index specified + * @return uint32 spellId : the id of the spell + */ + int GetSpellId(lua_State* L, Item* item) + { + uint32 index = Eluna::CHECKVAL(L, 2); + if (index >= MAX_ITEM_PROTO_SPELLS) + return luaL_argerror(L, 2, "valid SpellIndex expected"); + + Eluna::Push(L, item->GetTemplate()->Spells[index].SpellId); + return 1; + } + + /** + * Returns the spell trigger tied to the [Item] by spell index + * + * @param uint32 spellIndex : the spell index specified + * @return uint32 spellTrigger : the spell trigger of the specified index + */ + int GetSpellTrigger(lua_State* L, Item* item) + { + uint32 index = Eluna::CHECKVAL(L, 2); + if (index >= MAX_ITEM_PROTO_SPELLS) + return luaL_argerror(L, 2, "valid SpellIndex expected"); + + Eluna::Push(L, item->GetTemplate()->Spells[index].SpellTrigger); + return 1; + } + + /** + * Returns class of the [Item] + * + * @return uint32 class + */ + int GetClass(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->Class); + return 1; + } + + /** + * Returns subclass of the [Item] + * + * @return uint32 subClass + */ + int GetSubClass(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->SubClass); + return 1; + } + + /** + * Returns the name of the [Item] + * + * @return string name + */ + int GetName(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->Name1); + return 1; + } + + /** + * Returns the display ID of the [Item] + * + * @return uint32 displayId + */ + int GetDisplayId(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->DisplayInfoID); + return 1; + } + + /** + * Returns the quality of the [Item] + * + * @return uint32 quality + */ + int GetQuality(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->Quality); + return 1; + } + + /** + * Returns the default purchase count of the [Item] + * + * @return uint32 count + */ + int GetBuyCount(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->BuyCount); + return 1; + } + + /** + * Returns the purchase price of the [Item] + * + * @return uint32 price + */ + int GetBuyPrice(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->BuyPrice); + return 1; + } + + /** + * Returns the sell price of the [Item] + * + * @return uint32 price + */ + int GetSellPrice(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->SellPrice); + return 1; + } + + /** + * Returns the inventory type of the [Item] + * + * @return uint32 inventoryType + */ + int GetInventoryType(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->InventoryType); + return 1; + } + + /** + * Returns the [Player] classes allowed to use this [Item] + * + * @return uint32 allowableClass + */ + int GetAllowableClass(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->AllowableClass); + return 1; + } + + /** + * Returns the [Player] races allowed to use this [Item] + * + * @return uint32 allowableRace + */ + int GetAllowableRace(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->AllowableRace); + return 1; + } + + /** + * Returns the [Item]s level + * + * @return uint32 itemLevel + */ + int GetItemLevel(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->ItemLevel); + return 1; + } + + /** + * Returns the minimum level required to use this [Item] + * + * @return uint32 requiredLevel + */ + int GetRequiredLevel(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->RequiredLevel); + return 1; + } + +#ifdef WOTLK + int GetStatsCount(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->StatsCount); + return 1; + } +#endif + + /** + * Returns the random property ID of this [Item] + * + * @return uint32 randomPropertyId + */ + int GetRandomProperty(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->RandomProperty); + return 1; + } + +#ifndef CLASSIC + int GetRandomSuffix(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->RandomSuffix); + return 1; + } +#endif + + /** + * Returns the item set ID of this [Item] + * + * @return uint32 itemSetId + */ + int GetItemSet(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()->ItemSet); + return 1; + } + + /** + * Returns the bag size of this [Item], 0 if [Item] is not a bag + * + * @return uint32 bagSize + */ + int GetBagSize(lua_State* L, Item* item) + { + if (Bag* bag = item->ToBag()) + Eluna::Push(L, bag->GetBagSize()); + else + Eluna::Push(L, 0); + return 1; + } + + /** + * Returns the [ItemTemplate] for this [Item]. + * + * @return [ItemTemplate] itemTemplate + */ + int GetItemTemplate(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()); + return 1; + } + + /** + * Sets the [Player] specified as the owner of the [Item] + * + * @param [Player] player : the [Player] specified + */ + int SetOwner(lua_State* L, Item* item) + { + Player* player = Eluna::CHECKOBJ(L, 2); +#if defined TRINITY || AZEROTHCORE + item->SetOwnerGUID(player->GET_GUID()); +#else + item->SetOwnerGuid(player->GET_GUID()); +#endif + return 0; + } + + /** + * Sets the binding of the [Item] to 'true' or 'false' + * + * @param bool setBinding + */ + int SetBinding(lua_State* L, Item* item) + { + bool soulbound = Eluna::CHECKVAL(L, 2); + + item->SetBinding(soulbound); + item->SetState(ITEM_CHANGED, item->GetOwner()); + + return 0; + } + + /** + * Sets the stack count of the [Item] + * + * @param uint32 count + */ + int SetCount(lua_State* L, Item* item) + { + uint32 count = Eluna::CHECKVAL(L, 2); + item->SetCount(count); + return 0; + } + + /** + * Sets the specified enchantment of the [Item] to the specified slot + * + * @param uint32 enchantId : the ID of the enchant to be applied + * @param uint32 enchantSlot : the slot for the enchant to be applied to + * @return bool enchantmentSuccess : if enchantment is successfully set to specified slot, returns 'true', otherwise 'false' + */ + int SetEnchantment(lua_State* L, Item* item) + { + Player* owner = item->GetOwner(); + if (!owner) + { + Eluna::Push(L, false); + return 1; + } + + uint32 enchant = Eluna::CHECKVAL(L, 2); + if (!sSpellItemEnchantmentStore.LookupEntry(enchant)) + { + Eluna::Push(L, false); + return 1; + } + + EnchantmentSlot slot = (EnchantmentSlot)Eluna::CHECKVAL(L, 3); + if (slot >= MAX_INSPECTED_ENCHANTMENT_SLOT) + return luaL_argerror(L, 2, "valid EnchantmentSlot expected"); + + owner->ApplyEnchantment(item, slot, false); + item->SetEnchantment(slot, enchant, 0, 0); + owner->ApplyEnchantment(item, slot, true); + Eluna::Push(L, true); + return 1; + } + + /* OTHER */ + /** + * Removes an enchant from the [Item] by the specified slot + * + * @param uint32 enchantSlot : the slot for the enchant to be removed from + * @return bool enchantmentRemoved : if enchantment is successfully removed from specified slot, returns 'true', otherwise 'false' + */ + int ClearEnchantment(lua_State* L, Item* item) + { + Player* owner = item->GetOwner(); + if (!owner) + { + Eluna::Push(L, false); + return 1; + } + + EnchantmentSlot slot = (EnchantmentSlot)Eluna::CHECKVAL(L, 2); + if (slot >= MAX_INSPECTED_ENCHANTMENT_SLOT) + return luaL_argerror(L, 2, "valid EnchantmentSlot expected"); + + if (!item->GetEnchantmentId(slot)) + { + Eluna::Push(L, false); + return 1; + } + + owner->ApplyEnchantment(item, slot, false); + item->ClearEnchantment(slot); + Eluna::Push(L, true); + return 1; + } + + /** + * Saves the [Item] to the database + */ + int SaveToDB(lua_State* /*L*/, Item* item) + { +#if defined TRINITY || defined AZEROTHCORE + CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr); + item->SaveToDB(trans); +#else + item->SaveToDB(); +#endif + return 0; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/ItemTemplateMethods.h b/modules/mod-eluna/src/LuaEngine/ItemTemplateMethods.h new file mode 100644 index 0000000..401572c --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ItemTemplateMethods.h @@ -0,0 +1,191 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef ITEMTEMPLATEMETHODS_H +#define ITEMTEMPLATEMETHODS_H + +#include "Chat.h" + +namespace LuaItemTemplate +{ + /** + * Returns the [ItemTemplate]'s ID. + * + * @return uint32 itemId + */ + int GetItemId(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->ItemId); + return 1; + } + + /** + * Returns the [ItemTemplate]'s class. + * + * @return uint32 class + */ + int GetClass(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->Class); + return 1; + } + + /** + * Returns the [ItemTemplate]'s subclass. + * + * @return uint32 subClass + */ + int GetSubClass(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->SubClass); + return 1; + } + + /** + * Returns the [ItemTemplate]'s name. + * + * @return string name + */ + int GetName(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->Name1); + return 1; + } + + /** + * Returns the [ItemTemplate]'s display ID. + * + * @return uint32 displayId + */ + int GetDisplayId(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->DisplayInfoID); + return 1; + } + + /** + * Returns the [ItemTemplate]'s quality. + * + * @return uint32 quality + */ + int GetQuality(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->Quality); + return 1; + } + + /** + * Returns the [ItemTemplate]'s flags. + * + * @return uint32 flags + */ + int GetFlags(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->Flags); + return 1; + } + + /** + * Returns the [ItemTemplate]'s extra flags. + * + * @return uint32 flags + */ + int GetExtraFlags(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->Flags2); + return 1; + } + + /** + * Returns the [ItemTemplate]'s default purchase count. + * + * @return uint32 buyCount + */ + int GetBuyCount(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->BuyCount); + return 1; + } + + /** + * Returns the [ItemTemplate]'s purchase price. + * + * @return int32 buyPrice + */ + int GetBuyPrice(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->BuyPrice); + return 1; + } + + /** + * Returns the [ItemTemplate]'s sell price. + * + * @return uint32 sellPrice + */ + int GetSellPrice(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->SellPrice); + return 1; + } + + /** + * Returns the [ItemTemplate]'s inventory type. + * + * @return uint32 inventoryType + */ + int GetInventoryType(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->InventoryType); + return 1; + } + + /** + * Returns the [Player] classes allowed to use this [ItemTemplate]. + * + * @return uint32 allowableClass + */ + int GetAllowableClass(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->AllowableClass); + return 1; + } + + /** + * Returns the [Player] races allowed to use this [ItemTemplate]. + * + * @return uint32 allowableRace + */ + int GetAllowableRace(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->AllowableRace); + return 1; + } + + /** + * Returns the [ItemTemplate]'s item level. + * + * @return uint32 itemLevel + */ + int GetItemLevel(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->ItemLevel); + return 1; + } + + /** + * Returns the minimum level required to use this [ItemTemplate]. + * + * @return uint32 requiredLevel + */ + int GetRequiredLevel(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->RequiredLevel); + return 1; + } +} + +#endif diff --git a/modules/mod-eluna/src/LuaEngine/LuaEngine.cpp b/modules/mod-eluna/src/LuaEngine/LuaEngine.cpp new file mode 100644 index 0000000..b238504 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/LuaEngine.cpp @@ -0,0 +1,1373 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#include "Hooks.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaEventMgr.h" +#include "ElunaIncludes.h" +#include "ElunaTemplate.h" +#include "ElunaUtility.h" +#include "ElunaCreatureAI.h" +#include "ElunaInstanceAI.h" + +#if defined(TRINITY_PLATFORM) && defined(TRINITY_PLATFORM_WINDOWS) +#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS +#define ELUNA_WINDOWS +#endif +#elif defined(AC_PLATFORM) && defined(AC_PLATFORM_WINDOWS) +#if AC_PLATFORM == AC_PLATFORM_WINDOWS +#define ELUNA_WINDOWS +#endif +#elif defined(PLATFORM) && defined(PLATFORM_WINDOWS) +#if PLATFORM == PLATFORM_WINDOWS +#define ELUNA_WINDOWS +#endif +#else +#error Eluna could not determine platform +#endif + +// Some dummy includes containing BOOST_VERSION: +// ObjectAccessor.h Config.h Log.h +#if !defined MANGOS +#define USING_BOOST +#endif + +#ifdef USING_BOOST +#include +#else +#include +#include +#include +#endif + +extern "C" +{ +// Base lua libraries +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" + +// Additional lua libraries +}; + +Eluna::ScriptList Eluna::lua_scripts; +Eluna::ScriptList Eluna::lua_extensions; +std::string Eluna::lua_folderpath; +std::string Eluna::lua_requirepath; +Eluna* Eluna::GEluna = NULL; +bool Eluna::reload = false; +bool Eluna::initialized = false; +Eluna::LockType Eluna::lock; + +extern void RegisterFunctions(Eluna* E); + +void Eluna::Initialize() +{ + LOCK_ELUNA; + ASSERT(!IsInitialized()); + +#if defined TRINITY || AZEROTHCORE + // For instance data the data column needs to be able to hold more than 255 characters (tinytext) + // so we change it to TEXT automatically on startup + CharacterDatabase.DirectExecute("ALTER TABLE `instance` CHANGE COLUMN `data` `data` TEXT NOT NULL"); +#endif + + LoadScriptPaths(); + + // Must be before creating GEluna + // This is checked on Eluna creation + initialized = true; + + // Create global eluna + GEluna = new Eluna(); +} + +void Eluna::Uninitialize() +{ + LOCK_ELUNA; + ASSERT(IsInitialized()); + + delete GEluna; + GEluna = NULL; + + lua_scripts.clear(); + lua_extensions.clear(); + + initialized = false; +} + +void Eluna::LoadScriptPaths() +{ + uint32 oldMSTime = ElunaUtil::GetCurrTime(); + + lua_scripts.clear(); + lua_extensions.clear(); + +#if defined(AZEROTHCORE) + lua_folderpath = eConfigMgr->GetOption("Eluna.ScriptPath", "lua_scripts"); +#else + lua_folderpath = eConfigMgr->GetStringDefault("Eluna.ScriptPath", "lua_scripts"); +#endif + +#ifndef ELUNA_WINDOWS + if (lua_folderpath[0] == '~') + if (const char* home = getenv("HOME")) + lua_folderpath.replace(0, 1, home); +#endif + ELUNA_LOG_INFO("[Eluna]: Searching scripts from `{}`", lua_folderpath); + lua_requirepath.clear(); + GetScripts(lua_folderpath); + // Erase last ; + if (!lua_requirepath.empty()) + lua_requirepath.erase(lua_requirepath.end() - 1); + + ELUNA_LOG_DEBUG("[Eluna]: Loaded {} scripts in {} ms", lua_scripts.size() + lua_extensions.size(), ElunaUtil::GetTimeDiff(oldMSTime)); +} + +void Eluna::_ReloadEluna() +{ + LOCK_ELUNA; + ASSERT(IsInitialized()); + + if (eConfigMgr->GetOption("Eluna.PlayerAnnounceReload", false)) + eWorld->SendServerMessage(SERVER_MSG_STRING, "Reloading Eluna..."); + else + eWorld->SendGMText(SERVER_MSG_STRING, "Reloading Eluna..."); + + // Remove all timed events + sEluna->eventMgr->SetStates(LUAEVENT_STATE_ERASE); + + // Close lua + sEluna->CloseLua(); + + // Reload script paths + LoadScriptPaths(); + + // Open new lua and libaraies + sEluna->OpenLua(); + + // Run scripts from laoded paths + sEluna->RunScripts(); + + reload = false; +} + +Eluna::Eluna() : +event_level(0), +push_counter(0), +enabled(false), + +L(NULL), +eventMgr(NULL), +httpManager(), +queryProcessor(), + +ServerEventBindings(NULL), +PlayerEventBindings(NULL), +GuildEventBindings(NULL), +GroupEventBindings(NULL), +VehicleEventBindings(NULL), +BGEventBindings(NULL), + +PacketEventBindings(NULL), +CreatureEventBindings(NULL), +CreatureGossipBindings(NULL), +GameObjectEventBindings(NULL), +GameObjectGossipBindings(NULL), +ItemEventBindings(NULL), +ItemGossipBindings(NULL), +PlayerGossipBindings(NULL), +MapEventBindings(NULL), +InstanceEventBindings(NULL), + +CreatureUniqueBindings(NULL) +{ + ASSERT(IsInitialized()); + + OpenLua(); + + // Replace this with map insert if making multithread version + + // Set event manager. Must be after setting sEluna + // on multithread have a map of state pointers and here insert this pointer to the map and then save a pointer of that pointer to the EventMgr + eventMgr = new EventMgr(&Eluna::GEluna); +} + +Eluna::~Eluna() +{ + ASSERT(IsInitialized()); + + CloseLua(); + + delete eventMgr; + eventMgr = NULL; +} + +void Eluna::CloseLua() +{ + OnLuaStateClose(); + + DestroyBindStores(); + + // Must close lua state after deleting stores and mgr + if (L) + lua_close(L); + L = NULL; + + instanceDataRefs.clear(); + continentDataRefs.clear(); +} + +void Eluna::OpenLua() +{ +#if defined(AZEROTHCORE) + enabled = eConfigMgr->GetOption("Eluna.Enabled", true); +#else + enabled = eConfigMgr->GetBoolDefault("Eluna.Enabled", true); +#endif + + if (!IsEnabled()) + { + ELUNA_LOG_INFO("[Eluna]: Eluna is disabled in config"); + return; + } + + L = luaL_newstate(); + + lua_pushlightuserdata(L, this); + lua_setfield(L, LUA_REGISTRYINDEX, ELUNA_STATE_PTR); + + CreateBindStores(); + + // open base lua libraries + luaL_openlibs(L); + + // open additional lua libraries + + // Register methods and functions + RegisterFunctions(this); + + // Set lua require folder paths (scripts folder structure) + lua_getglobal(L, "package"); + lua_pushstring(L, lua_requirepath.c_str()); + lua_setfield(L, -2, "path"); + lua_pushstring(L, ""); // erase cpath + lua_setfield(L, -2, "cpath"); + lua_pop(L, 1); +} + +void Eluna::CreateBindStores() +{ + DestroyBindStores(); + + ServerEventBindings = new BindingMap< EventKey >(L); + PlayerEventBindings = new BindingMap< EventKey >(L); + GuildEventBindings = new BindingMap< EventKey >(L); + GroupEventBindings = new BindingMap< EventKey >(L); + VehicleEventBindings = new BindingMap< EventKey >(L); + BGEventBindings = new BindingMap< EventKey >(L); + + PacketEventBindings = new BindingMap< EntryKey >(L); + CreatureEventBindings = new BindingMap< EntryKey >(L); + CreatureGossipBindings = new BindingMap< EntryKey >(L); + GameObjectEventBindings = new BindingMap< EntryKey >(L); + GameObjectGossipBindings = new BindingMap< EntryKey >(L); + ItemEventBindings = new BindingMap< EntryKey >(L); + ItemGossipBindings = new BindingMap< EntryKey >(L); + PlayerGossipBindings = new BindingMap< EntryKey >(L); + MapEventBindings = new BindingMap< EntryKey >(L); + InstanceEventBindings = new BindingMap< EntryKey >(L); + + CreatureUniqueBindings = new BindingMap< UniqueObjectKey >(L); +} + +void Eluna::DestroyBindStores() +{ + delete ServerEventBindings; + delete PlayerEventBindings; + delete GuildEventBindings; + delete GroupEventBindings; + delete VehicleEventBindings; + + delete PacketEventBindings; + delete CreatureEventBindings; + delete CreatureGossipBindings; + delete GameObjectEventBindings; + delete GameObjectGossipBindings; + delete ItemEventBindings; + delete ItemGossipBindings; + delete PlayerGossipBindings; + delete BGEventBindings; + delete MapEventBindings; + delete InstanceEventBindings; + + delete CreatureUniqueBindings; + + ServerEventBindings = NULL; + PlayerEventBindings = NULL; + GuildEventBindings = NULL; + GroupEventBindings = NULL; + VehicleEventBindings = NULL; + + PacketEventBindings = NULL; + CreatureEventBindings = NULL; + CreatureGossipBindings = NULL; + GameObjectEventBindings = NULL; + GameObjectGossipBindings = NULL; + ItemEventBindings = NULL; + ItemGossipBindings = NULL; + PlayerGossipBindings = NULL; + BGEventBindings = NULL; + MapEventBindings = NULL; + InstanceEventBindings = NULL; + + CreatureUniqueBindings = NULL; +} + +void Eluna::AddScriptPath(std::string filename, const std::string& fullpath) +{ + ELUNA_LOG_DEBUG("[Eluna]: AddScriptPath Checking file `{}`", fullpath); + + // split file name + std::size_t extDot = filename.find_last_of('.'); + if (extDot == std::string::npos) + return; + std::string ext = filename.substr(extDot); + filename = filename.substr(0, extDot); + + // check extension and add path to scripts to load + if (ext != ".lua" && ext != ".dll" && ext != ".so" && ext != ".ext") + return; + bool extension = ext == ".ext"; + + LuaScript script; + script.fileext = ext; + script.filename = filename; + script.filepath = fullpath; + script.modulepath = fullpath.substr(0, fullpath.length() - filename.length() - ext.length()); + if (extension) + lua_extensions.push_back(script); + else + lua_scripts.push_back(script); + ELUNA_LOG_DEBUG("[Eluna]: AddScriptPath add path `{}`", fullpath); +} + +// Finds lua script files from given path (including subdirectories) and pushes them to scripts +void Eluna::GetScripts(std::string path) +{ + ELUNA_LOG_DEBUG("[Eluna]: GetScripts from path `{}`", path); + +#ifdef USING_BOOST + boost::filesystem::path someDir(path); + boost::filesystem::directory_iterator end_iter; + + if (boost::filesystem::exists(someDir) && boost::filesystem::is_directory(someDir)) + { + lua_requirepath += + path + "/?.lua;" + + path + "/?.ext;" + + path + "/?.dll;" + + path + "/?.so;"; + + for (boost::filesystem::directory_iterator dir_iter(someDir); dir_iter != end_iter; ++dir_iter) + { + std::string fullpath = dir_iter->path().generic_string(); + + // Check if file is hidden +#ifdef ELUNA_WINDOWS + DWORD dwAttrib = GetFileAttributes(fullpath.c_str()); + if (dwAttrib != INVALID_FILE_ATTRIBUTES && (dwAttrib & FILE_ATTRIBUTE_HIDDEN)) + continue; +#else + std::string name = dir_iter->path().filename().generic_string().c_str(); + if (name[0] == '.') + continue; +#endif + + // load subfolder + if (boost::filesystem::is_directory(dir_iter->status())) + { + GetScripts(fullpath); + continue; + } + + if (boost::filesystem::is_regular_file(dir_iter->status())) + { + // was file, try add + std::string filename = dir_iter->path().filename().generic_string(); + AddScriptPath(filename, fullpath); + } + } + } +#else + ACE_Dirent dir; + if (dir.open(path.c_str()) == -1) // Error opening directory, return + return; + + lua_requirepath += + path + "/?.lua;" + + path + "/?.ext;" + + path + "/?.dll;" + + path + "/?.so;"; + + ACE_DIRENT *directory = 0; + while ((directory = dir.read())) + { + // Skip the ".." and "." files. + if (ACE::isdotdir(directory->d_name)) + continue; + + std::string fullpath = path + "/" + directory->d_name; + + // Check if file is hidden +#ifdef ELUNA_WINDOWS + DWORD dwAttrib = GetFileAttributes(fullpath.c_str()); + if (dwAttrib != INVALID_FILE_ATTRIBUTES && (dwAttrib & FILE_ATTRIBUTE_HIDDEN)) + continue; +#else + std::string name = directory->d_name; + if (name[0] == '.') + continue; +#endif + + ACE_stat stat_buf; + if (ACE_OS::lstat(fullpath.c_str(), &stat_buf) == -1) + continue; + + // load subfolder + if ((stat_buf.st_mode & S_IFMT) == (S_IFDIR)) + { + GetScripts(fullpath); + continue; + } + + // was file, try add + std::string filename = directory->d_name; + AddScriptPath(filename, fullpath); + } +#endif +} + +static bool ScriptPathComparator(const LuaScript& first, const LuaScript& second) +{ + return first.filepath < second.filepath; +} + +void Eluna::RunScripts() +{ + LOCK_ELUNA; + if (!IsEnabled()) + return; + + uint32 oldMSTime = ElunaUtil::GetCurrTime(); + uint32 count = 0; + + ScriptList scripts; + lua_extensions.sort(ScriptPathComparator); + lua_scripts.sort(ScriptPathComparator); + scripts.insert(scripts.end(), lua_extensions.begin(), lua_extensions.end()); + scripts.insert(scripts.end(), lua_scripts.begin(), lua_scripts.end()); + + std::unordered_map loaded; // filename, path + + lua_getglobal(L, "package"); + // Stack: package + luaL_getsubtable(L, -1, "loaded"); + // Stack: package, modules + int modules = lua_gettop(L); + for (ScriptList::const_iterator it = scripts.begin(); it != scripts.end(); ++it) + { + // Check that no duplicate names exist + if (loaded.find(it->filename) != loaded.end()) + { + ELUNA_LOG_ERROR("[Eluna]: Error loading `{}`. File with same name already loaded from `{}`, rename either file", it->filepath, loaded[it->filename]); + continue; + } + loaded[it->filename] = it->filepath; + + lua_getfield(L, modules, it->filename.c_str()); + // Stack: package, modules, module + if (!lua_isnoneornil(L, -1)) + { + lua_pop(L, 1); + ELUNA_LOG_DEBUG("[Eluna]: `{}` was already loaded or required", it->filepath); + continue; + } + lua_pop(L, 1); + // Stack: package, modules + + if (luaL_loadfile(L, it->filepath.c_str())) + { + // Stack: package, modules, errmsg + ELUNA_LOG_ERROR("[Eluna]: Error loading `{}`", it->filepath); + Report(L); + // Stack: package, modules + continue; + } + // Stack: package, modules, filefunc + + if (ExecuteCall(0, 1)) + { + // Stack: package, modules, result + if (lua_isnoneornil(L, -1) || (lua_isboolean(L, -1) && !lua_toboolean(L, -1))) + { + // if result evaluates to false, change it to true + lua_pop(L, 1); + Push(L, true); + } + lua_setfield(L, modules, it->filename.c_str()); + // Stack: package, modules + + // successfully loaded and ran file + ELUNA_LOG_DEBUG("[Eluna]: Successfully loaded `{}`", it->filepath); + ++count; + continue; + } + } + // Stack: package, modules + lua_pop(L, 2); + ELUNA_LOG_INFO("[Eluna]: Executed {} Lua scripts in {} ms", count, ElunaUtil::GetTimeDiff(oldMSTime)); + + OnLuaStateOpen(); +} + +void Eluna::InvalidateObjects() +{ + ++callstackid; +#ifdef TRINITY + ASSERT(callstackid, "Callstackid overflow"); +#else + ASSERT(callstackid && "Callstackid overflow"); +#endif +} + +void Eluna::Report(lua_State* _L) +{ + const char* msg = lua_tostring(_L, -1); + ELUNA_LOG_ERROR("{}", msg); + lua_pop(_L, 1); +} + +// Borrowed from http://stackoverflow.com/questions/12256455/print-stacktrace-from-c-code-with-embedded-lua +int Eluna::StackTrace(lua_State *_L) +{ + // Stack: errmsg + if (!lua_isstring(_L, -1)) /* 'message' not a string? */ + return 1; /* keep it intact */ + // Stack: errmsg, debug + lua_getglobal(_L, "debug"); + if (!lua_istable(_L, -1)) + { + lua_pop(_L, 1); + return 1; + } + // Stack: errmsg, debug, traceback + lua_getfield(_L, -1, "traceback"); + if (!lua_isfunction(_L, -1)) + { + lua_pop(_L, 2); + return 1; + } + lua_pushvalue(_L, -3); /* pass error message */ + lua_pushinteger(_L, 1); /* skip this function and traceback */ + // Stack: errmsg, debug, traceback, errmsg, 2 + lua_call(_L, 2, 1); /* call debug.traceback */ + + // dirty stack? + // Stack: errmsg, debug, tracemsg + sEluna->OnError(std::string(lua_tostring(_L, -1))); + return 1; +} + +bool Eluna::ExecuteCall(int params, int res) +{ + int top = lua_gettop(L); + int base = top - params; + + // Expected: function, [parameters] + ASSERT(base > 0); + + // Check function type + if (!lua_isfunction(L, base)) + { + ELUNA_LOG_ERROR("[Eluna]: Cannot execute call: registered value is {}, not a function.", luaL_tolstring(L, base, NULL)); + ASSERT(false); // stack probably corrupt + } + +#if defined(AZEROTHCORE) + bool usetrace = eConfigMgr->GetOption("Eluna.TraceBack", false); +#else + bool usetrace = eConfigMgr->GetBoolDefault("Eluna.TraceBack", false); +#endif + + if (usetrace) + { + lua_pushcfunction(L, &StackTrace); + // Stack: function, [parameters], traceback + lua_insert(L, base); + // Stack: traceback, function, [parameters] + } + + // Objects are invalidated when event_level hits 0 + ++event_level; + int result = lua_pcall(L, params, res, usetrace ? base : 0); + --event_level; + + if (usetrace) + { + // Stack: traceback, [results or errmsg] + lua_remove(L, base); + } + // Stack: [results or errmsg] + + // lua_pcall returns 0 on success. + // On error print the error and push nils for expected amount of returned values + if (result) + { + // Stack: errmsg + Report(L); + + // Force garbage collect + lua_gc(L, LUA_GCCOLLECT, 0); + + // Push nils for expected amount of results + for (int i = 0; i < res; ++i) + lua_pushnil(L); + // Stack: [nils] + return false; + } + + // Stack: [results] + return true; +} + +void Eluna::Push(lua_State* luastate) +{ + lua_pushnil(luastate); +} +void Eluna::Push(lua_State* luastate, const long long l) +{ + ElunaTemplate::Push(luastate, new long long(l)); +} +void Eluna::Push(lua_State* luastate, const unsigned long long l) +{ + ElunaTemplate::Push(luastate, new unsigned long long(l)); +} +void Eluna::Push(lua_State* luastate, const long l) +{ + Push(luastate, static_cast(l)); +} +void Eluna::Push(lua_State* luastate, const unsigned long l) +{ + Push(luastate, static_cast(l)); +} +void Eluna::Push(lua_State* luastate, const int i) +{ + lua_pushinteger(luastate, i); +} +void Eluna::Push(lua_State* luastate, const unsigned int u) +{ + lua_pushunsigned(luastate, u); +} +void Eluna::Push(lua_State* luastate, const double d) +{ + lua_pushnumber(luastate, d); +} +void Eluna::Push(lua_State* luastate, const float f) +{ + lua_pushnumber(luastate, f); +} +void Eluna::Push(lua_State* luastate, const bool b) +{ + lua_pushboolean(luastate, b); +} +void Eluna::Push(lua_State* luastate, const std::string& str) +{ + lua_pushstring(luastate, str.c_str()); +} +void Eluna::Push(lua_State* luastate, const char* str) +{ + lua_pushstring(luastate, str); +} +void Eluna::Push(lua_State* luastate, Pet const* pet) +{ + Push(luastate, pet); +} +void Eluna::Push(lua_State* luastate, TempSummon const* summon) +{ + Push(luastate, summon); +} +void Eluna::Push(lua_State* luastate, Unit const* unit) +{ + if (!unit) + { + Push(luastate); + return; + } + switch (unit->GetTypeId()) + { + case TYPEID_UNIT: + Push(luastate, unit->ToCreature()); + break; + case TYPEID_PLAYER: + Push(luastate, unit->ToPlayer()); + break; + default: + ElunaTemplate::Push(luastate, unit); + } +} +void Eluna::Push(lua_State* luastate, WorldObject const* obj) +{ + if (!obj) + { + Push(luastate); + return; + } + switch (obj->GetTypeId()) + { + case TYPEID_UNIT: + Push(luastate, obj->ToCreature()); + break; + case TYPEID_PLAYER: + Push(luastate, obj->ToPlayer()); + break; + case TYPEID_GAMEOBJECT: + Push(luastate, obj->ToGameObject()); + break; + case TYPEID_CORPSE: + Push(luastate, obj->ToCorpse()); + break; + default: + ElunaTemplate::Push(luastate, obj); + } +} +void Eluna::Push(lua_State* luastate, Object const* obj) +{ + if (!obj) + { + Push(luastate); + return; + } + switch (obj->GetTypeId()) + { + case TYPEID_UNIT: + Push(luastate, obj->ToCreature()); + break; + case TYPEID_PLAYER: + Push(luastate, obj->ToPlayer()); + break; + case TYPEID_GAMEOBJECT: + Push(luastate, obj->ToGameObject()); + break; + case TYPEID_CORPSE: + Push(luastate, obj->ToCorpse()); + break; + default: + ElunaTemplate::Push(luastate, obj); + } +} +void Eluna::Push(lua_State* luastate, ObjectGuid const guid) +{ + ElunaTemplate::Push(luastate, new unsigned long long(guid.GetRawValue())); +} + +static int CheckIntegerRange(lua_State* luastate, int narg, int min, int max) +{ + double value = luaL_checknumber(luastate, narg); + char error_buffer[64]; + + if (value > max) + { + snprintf(error_buffer, 64, "value must be less than or equal to %i", max); + return luaL_argerror(luastate, narg, error_buffer); + } + + if (value < min) + { + snprintf(error_buffer, 64, "value must be greater than or equal to %i", min); + return luaL_argerror(luastate, narg, error_buffer); + } + + return static_cast(value); +} + +static unsigned int CheckUnsignedRange(lua_State* luastate, int narg, unsigned int max) +{ + double value = luaL_checknumber(luastate, narg); + + if (value < 0) + return luaL_argerror(luastate, narg, "value must be greater than or equal to 0"); + + if (value > max) + { + char error_buffer[64]; + snprintf(error_buffer, 64, "value must be less than or equal to %u", max); + return luaL_argerror(luastate, narg, error_buffer); + } + + return static_cast(value); +} + +template<> bool Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return lua_toboolean(luastate, narg) != 0; +} +template<> float Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return static_cast(luaL_checknumber(luastate, narg)); +} +template<> double Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return luaL_checknumber(luastate, narg); +} +template<> signed char Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return CheckIntegerRange(luastate, narg, SCHAR_MIN, SCHAR_MAX); +} +template<> unsigned char Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return CheckUnsignedRange(luastate, narg, UCHAR_MAX); +} +template<> short Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return CheckIntegerRange(luastate, narg, SHRT_MIN, SHRT_MAX); +} +template<> unsigned short Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return CheckUnsignedRange(luastate, narg, USHRT_MAX); +} +template<> int Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return CheckIntegerRange(luastate, narg, INT_MIN, INT_MAX); +} +template<> unsigned int Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return CheckUnsignedRange(luastate, narg, UINT_MAX); +} +template<> const char* Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return luaL_checkstring(luastate, narg); +} +template<> std::string Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return luaL_checkstring(luastate, narg); +} +template<> long long Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + if (lua_isnumber(luastate, narg)) + return static_cast(CHECKVAL(luastate, narg)); + return *(Eluna::CHECKOBJ(luastate, narg, true)); +} +template<> unsigned long long Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + if (lua_isnumber(luastate, narg)) + return static_cast(CHECKVAL(luastate, narg)); + return *(Eluna::CHECKOBJ(luastate, narg, true)); +} +template<> long Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return static_cast(CHECKVAL(luastate, narg)); +} +template<> unsigned long Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return static_cast(CHECKVAL(luastate, narg)); +} +template<> ObjectGuid Eluna::CHECKVAL(lua_State* luastate, int narg) +{ + return ObjectGuid(uint64((CHECKVAL(luastate, narg)))); +} + +template<> Object* Eluna::CHECKOBJ(lua_State* luastate, int narg, bool error) +{ + Object* obj = CHECKOBJ(luastate, narg, false); + if (!obj) + obj = CHECKOBJ(luastate, narg, false); + if (!obj) + obj = ElunaTemplate::Check(luastate, narg, error); + return obj; +} +template<> WorldObject* Eluna::CHECKOBJ(lua_State* luastate, int narg, bool error) +{ + WorldObject* obj = CHECKOBJ(luastate, narg, false); + if (!obj) + obj = CHECKOBJ(luastate, narg, false); + if (!obj) + obj = CHECKOBJ(luastate, narg, false); + if (!obj) + obj = ElunaTemplate::Check(luastate, narg, error); + return obj; +} +template<> Unit* Eluna::CHECKOBJ(lua_State* luastate, int narg, bool error) +{ + Unit* obj = CHECKOBJ(luastate, narg, false); + if (!obj) + obj = CHECKOBJ(luastate, narg, false); + if (!obj) + obj = ElunaTemplate::Check(luastate, narg, error); + return obj; +} + +template<> ElunaObject* Eluna::CHECKOBJ(lua_State* luastate, int narg, bool error) +{ + return CHECKTYPE(luastate, narg, NULL, error); +} + +ElunaObject* Eluna::CHECKTYPE(lua_State* luastate, int narg, const char* tname, bool error) +{ + if (lua_islightuserdata(luastate, narg)) + { + if (error) + luaL_argerror(luastate, narg, "bad argument : userdata expected, got lightuserdata"); + return NULL; + } + + ElunaObject** ptrHold = static_cast(lua_touserdata(luastate, narg)); + + if (!ptrHold || (tname && (*ptrHold)->GetTypeName() != tname)) + { + if (error) + { + char buff[256]; + snprintf(buff, 256, "bad argument : %s expected, got %s", tname ? tname : "ElunaObject", ptrHold ? (*ptrHold)->GetTypeName() : luaL_typename(luastate, narg)); + luaL_argerror(luastate, narg, buff); + } + return NULL; + } + return *ptrHold; +} + +template +static int cancelBinding(lua_State *L) +{ + uint64 bindingID = Eluna::CHECKVAL(L, lua_upvalueindex(1)); + + BindingMap* bindings = (BindingMap*)lua_touserdata(L, lua_upvalueindex(2)); + ASSERT(bindings != NULL); + + bindings->Remove(bindingID); + + return 0; +} + +template +static void createCancelCallback(lua_State* L, uint64 bindingID, BindingMap* bindings) +{ + Eluna::Push(L, bindingID); + lua_pushlightuserdata(L, bindings); + // Stack: bindingID, bindings + + lua_pushcclosure(L, &cancelBinding, 2); + // Stack: cancel_callback +} + +// Saves the function reference ID given to the register type's store for given entry under the given event +int Eluna::Register(lua_State* L, uint8 regtype, uint32 entry, ObjectGuid guid, uint32 instanceId, uint32 event_id, int functionRef, uint32 shots) +{ + uint64 bindingID; + + switch (regtype) + { + case Hooks::REGTYPE_SERVER: + if (event_id < Hooks::SERVER_EVENT_COUNT) + { + auto key = EventKey((Hooks::ServerEvents)event_id); + bindingID = ServerEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, ServerEventBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_PLAYER: + if (event_id < Hooks::PLAYER_EVENT_COUNT) + { + auto key = EventKey((Hooks::PlayerEvents)event_id); + bindingID = PlayerEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, PlayerEventBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_GUILD: + if (event_id < Hooks::GUILD_EVENT_COUNT) + { + auto key = EventKey((Hooks::GuildEvents)event_id); + bindingID = GuildEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, GuildEventBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_GROUP: + if (event_id < Hooks::GROUP_EVENT_COUNT) + { + auto key = EventKey((Hooks::GroupEvents)event_id); + bindingID = GroupEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, GroupEventBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_VEHICLE: + if (event_id < Hooks::VEHICLE_EVENT_COUNT) + { + auto key = EventKey((Hooks::VehicleEvents)event_id); + bindingID = VehicleEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, VehicleEventBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_BG: + if (event_id < Hooks::BG_EVENT_COUNT) + { + auto key = EventKey((Hooks::BGEvents)event_id); + bindingID = BGEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, BGEventBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_PACKET: + if (event_id < Hooks::PACKET_EVENT_COUNT) + { + if (entry >= NUM_MSG_TYPES) + { + luaL_unref(L, LUA_REGISTRYINDEX, functionRef); + luaL_error(L, "Couldn't find a creature with (ID: %d)!", entry); + return 0; // Stack: (empty) + } + + auto key = EntryKey((Hooks::PacketEvents)event_id, entry); + bindingID = PacketEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, PacketEventBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_CREATURE: + if (event_id < Hooks::CREATURE_EVENT_COUNT) + { + if (entry != 0) + { + if (!eObjectMgr->GetCreatureTemplate(entry)) + { + luaL_unref(L, LUA_REGISTRYINDEX, functionRef); + luaL_error(L, "Couldn't find a creature with (ID: %d)!", entry); + return 0; // Stack: (empty) + } + + auto key = EntryKey((Hooks::CreatureEvents)event_id, entry); + bindingID = CreatureEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, CreatureEventBindings); + } + else + { + if (guid.IsEmpty()) + { + luaL_unref(L, LUA_REGISTRYINDEX, functionRef); + luaL_error(L, "guid was 0!"); + return 0; // Stack: (empty) + } + + auto key = UniqueObjectKey((Hooks::CreatureEvents)event_id, guid, instanceId); + bindingID = CreatureUniqueBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, CreatureUniqueBindings); + } + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_CREATURE_GOSSIP: + if (event_id < Hooks::GOSSIP_EVENT_COUNT) + { + if (!eObjectMgr->GetCreatureTemplate(entry)) + { + luaL_unref(L, LUA_REGISTRYINDEX, functionRef); + luaL_error(L, "Couldn't find a creature with (ID: %d)!", entry); + return 0; // Stack: (empty) + } + + auto key = EntryKey((Hooks::GossipEvents)event_id, entry); + bindingID = CreatureGossipBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, CreatureGossipBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_GAMEOBJECT: + if (event_id < Hooks::GAMEOBJECT_EVENT_COUNT) + { + if (!eObjectMgr->GetGameObjectTemplate(entry)) + { + luaL_unref(L, LUA_REGISTRYINDEX, functionRef); + luaL_error(L, "Couldn't find a gameobject with (ID: %d)!", entry); + return 0; // Stack: (empty) + } + + auto key = EntryKey((Hooks::GameObjectEvents)event_id, entry); + bindingID = GameObjectEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, GameObjectEventBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_GAMEOBJECT_GOSSIP: + if (event_id < Hooks::GOSSIP_EVENT_COUNT) + { + if (!eObjectMgr->GetGameObjectTemplate(entry)) + { + luaL_unref(L, LUA_REGISTRYINDEX, functionRef); + luaL_error(L, "Couldn't find a gameobject with (ID: %d)!", entry); + return 0; // Stack: (empty) + } + + auto key = EntryKey((Hooks::GossipEvents)event_id, entry); + bindingID = GameObjectGossipBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, GameObjectGossipBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_ITEM: + if (event_id < Hooks::ITEM_EVENT_COUNT) + { + if (!eObjectMgr->GetItemTemplate(entry)) + { + luaL_unref(L, LUA_REGISTRYINDEX, functionRef); + luaL_error(L, "Couldn't find a item with (ID: %d)!", entry); + return 0; // Stack: (empty) + } + + auto key = EntryKey((Hooks::ItemEvents)event_id, entry); + bindingID = ItemEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, ItemEventBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_ITEM_GOSSIP: + if (event_id < Hooks::GOSSIP_EVENT_COUNT) + { + if (!eObjectMgr->GetItemTemplate(entry)) + { + luaL_unref(L, LUA_REGISTRYINDEX, functionRef); + luaL_error(L, "Couldn't find a item with (ID: %d)!", entry); + return 0; // Stack: (empty) + } + + auto key = EntryKey((Hooks::GossipEvents)event_id, entry); + bindingID = ItemGossipBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, ItemGossipBindings); + return 1; // Stack: callback + } + break; + + case Hooks::REGTYPE_PLAYER_GOSSIP: + if (event_id < Hooks::GOSSIP_EVENT_COUNT) + { + auto key = EntryKey((Hooks::GossipEvents)event_id, entry); + bindingID = PlayerGossipBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, PlayerGossipBindings); + return 1; // Stack: callback + } + break; + case Hooks::REGTYPE_MAP: + if (event_id < Hooks::INSTANCE_EVENT_COUNT) + { + auto key = EntryKey((Hooks::InstanceEvents)event_id, entry); + bindingID = MapEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, MapEventBindings); + return 1; // Stack: callback + } + break; + case Hooks::REGTYPE_INSTANCE: + if (event_id < Hooks::INSTANCE_EVENT_COUNT) + { + auto key = EntryKey((Hooks::InstanceEvents)event_id, entry); + bindingID = InstanceEventBindings->Insert(key, functionRef, shots); + createCancelCallback(L, bindingID, InstanceEventBindings); + return 1; // Stack: callback + } + break; + } + luaL_unref(L, LUA_REGISTRYINDEX, functionRef); + std::ostringstream oss; + oss << "regtype " << static_cast(regtype) << ", event " << event_id << ", entry " << entry << ", guid " << guid.GetRawValue() << ", instance " << instanceId; + luaL_error(L, "Unknown event type (%s)", oss.str().c_str()); + return 0; +} + +/* + * Cleans up the stack, effectively undoing all Push calls and the Setup call. + */ +void Eluna::CleanUpStack(int number_of_arguments) +{ + // Stack: event_id, [arguments] + + lua_pop(L, number_of_arguments + 1); // Add 1 because the caller doesn't know about `event_id`. + // Stack: (empty) + + if (event_level == 0) + InvalidateObjects(); +} + +/* + * Call a single event handler that was put on the stack with `Setup` and removes it from the stack. + * + * The caller is responsible for keeping track of how many times this should be called. + */ +int Eluna::CallOneFunction(int number_of_functions, int number_of_arguments, int number_of_results) +{ + ++number_of_arguments; // Caller doesn't know about `event_id`. + ASSERT(number_of_functions > 0 && number_of_arguments > 0 && number_of_results >= 0); + // Stack: event_id, [arguments], [functions] + + int functions_top = lua_gettop(L); + int first_function_index = functions_top - number_of_functions + 1; + int arguments_top = first_function_index - 1; + int first_argument_index = arguments_top - number_of_arguments + 1; + + // Copy the arguments from the bottom of the stack to the top. + for (int argument_index = first_argument_index; argument_index <= arguments_top; ++argument_index) + { + lua_pushvalue(L, argument_index); + } + // Stack: event_id, [arguments], [functions], event_id, [arguments] + + ExecuteCall(number_of_arguments, number_of_results); + --functions_top; + // Stack: event_id, [arguments], [functions - 1], [results] + + return functions_top + 1; // Return the location of the first result (if any exist). +} + +CreatureAI* Eluna::GetAI(Creature* creature) +{ + if (!IsEnabled()) + return NULL; + + for (int i = 1; i < Hooks::CREATURE_EVENT_COUNT; ++i) + { + Hooks::CreatureEvents event_id = (Hooks::CreatureEvents)i; + + auto entryKey = EntryKey(event_id, creature->GetEntry()); + auto uniqueKey = UniqueObjectKey(event_id, creature->GET_GUID(), creature->GetInstanceId()); + + if (CreatureEventBindings->HasBindingsFor(entryKey) || + CreatureUniqueBindings->HasBindingsFor(uniqueKey)) + return new ElunaCreatureAI(creature); + } + + return NULL; +} + +InstanceData* Eluna::GetInstanceData(Map* map) +{ + if (!IsEnabled()) + return NULL; + + for (int i = 1; i < Hooks::INSTANCE_EVENT_COUNT; ++i) + { + Hooks::InstanceEvents event_id = (Hooks::InstanceEvents)i; + + auto key = EntryKey(event_id, map->GetId()); + + if (MapEventBindings->HasBindingsFor(key) || + InstanceEventBindings->HasBindingsFor(key)) + return new ElunaInstanceAI(map); + } + + return NULL; +} + +bool Eluna::HasInstanceData(Map const* map) +{ + if (!map->Instanceable()) + return continentDataRefs.find(map->GetId()) != continentDataRefs.end(); + else + return instanceDataRefs.find(map->GetInstanceId()) != instanceDataRefs.end(); +} + +void Eluna::CreateInstanceData(Map const* map) +{ + ASSERT(lua_istable(L, -1)); + int ref = luaL_ref(L, LUA_REGISTRYINDEX); + + if (!map->Instanceable()) + { + uint32 mapId = map->GetId(); + + // If there's another table that was already stored for the map, unref it. + auto mapRef = continentDataRefs.find(mapId); + if (mapRef != continentDataRefs.end()) + { + luaL_unref(L, LUA_REGISTRYINDEX, mapRef->second); + } + + continentDataRefs[mapId] = ref; + } + else + { + uint32 instanceId = map->GetInstanceId(); + + // If there's another table that was already stored for the instance, unref it. + auto instRef = instanceDataRefs.find(instanceId); + if (instRef != instanceDataRefs.end()) + { + luaL_unref(L, LUA_REGISTRYINDEX, instRef->second); + } + + instanceDataRefs[instanceId] = ref; + } +} + +/* + * Unrefs the instanceId related events and data + * Does all required actions for when an instance is freed. + */ +void Eluna::FreeInstanceId(uint32 instanceId) +{ + LOCK_ELUNA; + + if (!IsEnabled()) + return; + + for (int i = 1; i < Hooks::INSTANCE_EVENT_COUNT; ++i) + { + auto key = EntryKey((Hooks::InstanceEvents)i, instanceId); + + if (MapEventBindings->HasBindingsFor(key)) + MapEventBindings->Clear(key); + + if (InstanceEventBindings->HasBindingsFor(key)) + InstanceEventBindings->Clear(key); + + if (instanceDataRefs.find(instanceId) != instanceDataRefs.end()) + { + luaL_unref(L, LUA_REGISTRYINDEX, instanceDataRefs[instanceId]); + instanceDataRefs.erase(instanceId); + } + } +} + +void Eluna::PushInstanceData(lua_State* L, ElunaInstanceAI* ai, bool incrementCounter) +{ + // Check if the instance data is missing (i.e. someone reloaded Eluna). + if (!HasInstanceData(ai->instance)) + ai->Reload(); + + // Get the instance data table from the registry. + if (!ai->instance->Instanceable()) + lua_rawgeti(L, LUA_REGISTRYINDEX, continentDataRefs[ai->instance->GetId()]); + else + lua_rawgeti(L, LUA_REGISTRYINDEX, instanceDataRefs[ai->instance->GetInstanceId()]); + + ASSERT(lua_istable(L, -1)); + + if (incrementCounter) + ++push_counter; +} diff --git a/modules/mod-eluna/src/LuaEngine/LuaEngine.h b/modules/mod-eluna/src/LuaEngine/LuaEngine.h new file mode 100644 index 0000000..6955356 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/LuaEngine.h @@ -0,0 +1,590 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef _LUA_ENGINE_H +#define _LUA_ENGINE_H + +#include "Common.h" +#include "SharedDefines.h" +#include "DBCEnums.h" + +#include "Group.h" +#include "Item.h" +#include "Chat.h" +#ifndef TRINITY +#include "Player.h" +#endif +#include "Weather.h" +#include "World.h" +#include "Hooks.h" +#include "LFG.h" +#include "ElunaUtility.h" +#include "HttpManager.h" +#include "EventEmitter.h" +#include +#include + +extern "C" +{ +#include "lua.h" +}; + +#if defined(TRINITY) || AZEROTHCORE +struct ItemTemplate; +typedef BattlegroundTypeId BattleGroundTypeId; +#else +struct ItemPrototype; +typedef ItemPrototype ItemTemplate; +typedef SpellEffectIndex SpellEffIndex; +struct SpellEntry; +typedef SpellEntry SpellInfo; +#ifdef CLASSIC +typedef int Difficulty; +#endif +#endif +#ifndef AZEROTHCORE +struct AreaTriggerEntry; +#else +typedef AreaTrigger AreaTriggerEntry; +#endif +class AuctionHouseObject; +struct AuctionEntry; +#if defined(TRINITY) || AZEROTHCORE +class Battleground; +typedef Battleground BattleGround; +#endif +class Channel; +class Corpse; +class Creature; +class CreatureAI; +class GameObject; +#if defined(TRINITY) || AZEROTHCORE +class GameObjectAI; +#endif +class Guild; +class Group; +#if defined(TRINITY) || AZEROTHCORE +class InstanceScript; +typedef InstanceScript InstanceData; +#else +class InstanceData; +#endif +class ElunaInstanceAI; +class Item; +class Pet; +class Player; +class Quest; +class Spell; +class SpellCastTargets; +#if defined(TRINITY) || AZEROTHCORE +class TempSummon; +#else +class TemporarySummon; +typedef TemporarySummon TempSummon; +#endif +// class Transport; +class Unit; +class Weather; +class WorldPacket; +#ifndef CLASSIC +#ifndef TBC +#if defined(TRINITY) || AZEROTHCORE +class Vehicle; +#else +class VehicleInfo; +typedef VehicleInfo Vehicle; +#endif +#endif +#endif + +struct lua_State; +class EventMgr; +class ElunaObject; +template class ElunaTemplate; + +template class BindingMap; +template struct EventKey; +template struct EntryKey; +template struct UniqueObjectKey; + +struct LuaScript +{ + std::string fileext; + std::string filename; + std::string filepath; + std::string modulepath; +}; + +#define ELUNA_STATE_PTR "Eluna State Ptr" +#define LOCK_ELUNA Eluna::Guard __guard(Eluna::GetLock()) + +#if defined(TRINITY) +#define ELUNA_GAME_API TC_GAME_API +#elif defined(AZEROTHCORE) +#define ELUNA_GAME_API AC_GAME_API +#else +#define ELUNA_GAME_API +#endif + +class ELUNA_GAME_API Eluna +{ +public: + typedef std::list ScriptList; + + typedef std::recursive_mutex LockType; + typedef std::lock_guard Guard; + +private: + static bool reload; + static bool initialized; + static LockType lock; + + // Lua script locations + static ScriptList lua_scripts; + static ScriptList lua_extensions; + + // Lua script folder path + static std::string lua_folderpath; + // lua path variable for require() function + static std::string lua_requirepath; + + // A counter for lua event stacks that occur (see event_level). + // This is used to determine whether an object belongs to the current call stack or not. + // 0 is reserved for always belonging to the call stack + // 1 is reserved for a non valid callstackid + uint64 callstackid = 2; + // A counter for the amount of nested events. When the event_level + // reaches 0 we are about to return back to C++. At this point the + // objects used during the event stack are invalidated. + uint32 event_level; + // When a hook pushes arguments to be passed to event handlers, + // this is used to keep track of how many arguments were pushed. + uint8 push_counter; + bool enabled; + + // Map from instance ID -> Lua table ref + std::unordered_map instanceDataRefs; + // Map from map ID -> Lua table ref + std::unordered_map continentDataRefs; + + Eluna(); + ~Eluna(); + + // Prevent copy + Eluna(Eluna const&) = delete; + Eluna& operator=(const Eluna&) = delete; + + void OpenLua(); + void CloseLua(); + void DestroyBindStores(); + void CreateBindStores(); + void InvalidateObjects(); + + // Use ReloadEluna() to make eluna reload + // This is called on world update to reload eluna + static void _ReloadEluna(); + static void LoadScriptPaths(); + static void GetScripts(std::string path); + static void AddScriptPath(std::string filename, const std::string& fullpath); + + static int StackTrace(lua_State *_L); + static void Report(lua_State* _L); + + // Some helpers for hooks to call event handlers. + // The bodies of the templates are in HookHelpers.h, so if you want to use them you need to #include "HookHelpers.h". + template int SetupStack(BindingMap* bindings1, BindingMap* bindings2, const K1& key1, const K2& key2, int number_of_arguments); + int CallOneFunction(int number_of_functions, int number_of_arguments, int number_of_results); + void CleanUpStack(int number_of_arguments); + template void ReplaceArgument(T value, uint8 index); + template void CallAllFunctions(BindingMap* bindings1, BindingMap* bindings2, const K1& key1, const K2& key2); + template bool CallAllFunctionsBool(BindingMap* bindings1, BindingMap* bindings2, const K1& key1, const K2& key2, bool default_value = false); + + // Same as above but for only one binding instead of two. + // `key` is passed twice because there's no NULL for references, but it's not actually used if `bindings2` is NULL. + template int SetupStack(BindingMap* bindings, const K& key, int number_of_arguments) + { + return SetupStack(bindings, NULL, key, key, number_of_arguments); + } + template void CallAllFunctions(BindingMap* bindings, const K& key) + { + CallAllFunctions(bindings, NULL, key, key); + } + template bool CallAllFunctionsBool(BindingMap* bindings, const K& key, bool default_value = false) + { + return CallAllFunctionsBool(bindings, NULL, key, key, default_value); + } + + // Non-static pushes, to be used in hooks. + // These just call the correct static version with the main thread's Lua state. + void Push() { Push(L); ++push_counter; } + void Push(const long long value) { Push(L, value); ++push_counter; } + void Push(const unsigned long long value) { Push(L, value); ++push_counter; } + void Push(const long value) { Push(L, value); ++push_counter; } + void Push(const unsigned long value) { Push(L, value); ++push_counter; } + void Push(const int value) { Push(L, value); ++push_counter; } + void Push(const unsigned int value) { Push(L, value); ++push_counter; } + void Push(const bool value) { Push(L, value); ++push_counter; } + void Push(const float value) { Push(L, value); ++push_counter; } + void Push(const double value) { Push(L, value); ++push_counter; } + void Push(const std::string& value) { Push(L, value); ++push_counter; } + void Push(const char* value) { Push(L, value); ++push_counter; } + void Push(ObjectGuid const value) { Push(L, value); ++push_counter; } + template + void Push(T const* ptr) { Push(L, ptr); ++push_counter; } + +public: + static Eluna* GEluna; + + lua_State* L; + EventMgr* eventMgr; + HttpManager httpManager; + QueryCallbackProcessor queryProcessor; + EventEmitter OnError; + + BindingMap< EventKey >* ServerEventBindings; + BindingMap< EventKey >* PlayerEventBindings; + BindingMap< EventKey >* GuildEventBindings; + BindingMap< EventKey >* GroupEventBindings; + BindingMap< EventKey >* VehicleEventBindings; + BindingMap< EventKey >* BGEventBindings; + + BindingMap< EntryKey >* PacketEventBindings; + BindingMap< EntryKey >* CreatureEventBindings; + BindingMap< EntryKey >* CreatureGossipBindings; + BindingMap< EntryKey >* GameObjectEventBindings; + BindingMap< EntryKey >* GameObjectGossipBindings; + BindingMap< EntryKey >* ItemEventBindings; + BindingMap< EntryKey >* ItemGossipBindings; + BindingMap< EntryKey >* PlayerGossipBindings; + BindingMap< EntryKey >* MapEventBindings; + BindingMap< EntryKey >* InstanceEventBindings; + + BindingMap< UniqueObjectKey >* CreatureUniqueBindings; + + static void Initialize(); + static void Uninitialize(); + // This function is used to make eluna reload + static void ReloadEluna() { LOCK_ELUNA; reload = true; } + static LockType& GetLock() { return lock; }; + static bool IsInitialized() { return initialized; } + // Never returns nullptr + static Eluna* GetEluna(lua_State* L) + { + lua_pushstring(L, ELUNA_STATE_PTR); + lua_rawget(L, LUA_REGISTRYINDEX); + ASSERT(lua_islightuserdata(L, -1)); + Eluna* E = static_cast(lua_touserdata(L, -1)); + lua_pop(L, 1); + ASSERT(E); + return E; + } + + // Static pushes, can be used by anything, including methods. + static void Push(lua_State* luastate); // nil + static void Push(lua_State* luastate, const long long); + static void Push(lua_State* luastate, const unsigned long long); + static void Push(lua_State* luastate, const long); + static void Push(lua_State* luastate, const unsigned long); + static void Push(lua_State* luastate, const int); + static void Push(lua_State* luastate, const unsigned int); + static void Push(lua_State* luastate, const bool); + static void Push(lua_State* luastate, const float); + static void Push(lua_State* luastate, const double); + static void Push(lua_State* luastate, const std::string&); + static void Push(lua_State* luastate, const char*); + static void Push(lua_State* luastate, Object const* obj); + static void Push(lua_State* luastate, WorldObject const* obj); + static void Push(lua_State* luastate, Unit const* unit); + static void Push(lua_State* luastate, Pet const* pet); + static void Push(lua_State* luastate, TempSummon const* summon); + static void Push(lua_State* luastate, ObjectGuid const guid); + template + static void Push(lua_State* luastate, T const* ptr) + { + ElunaTemplate::Push(luastate, ptr); + } + + bool ExecuteCall(int params, int res); + + /* + * Returns `true` if Eluna has instance data for `map`. + */ + bool HasInstanceData(Map const* map); + + /* + * Use the top element of the stack as the instance data table for `map`, + * then pops it off the stack. + */ + void CreateInstanceData(Map const* map); + + /* + * Retrieve the instance data for the `Map` scripted by `ai` and push it + * onto the stack. + * + * An `ElunaInstanceAI` is needed because the instance data might + * not exist (i.e. Eluna has been reloaded). + * + * In that case, the AI is "reloaded" (new instance data table is created + * and loaded with the last known save state, and `Load`/`Initialize` + * hooks are called). + */ + void PushInstanceData(lua_State* L, ElunaInstanceAI* ai, bool incrementCounter = true); + + void RunScripts(); + bool ShouldReload() const { return reload; } + bool IsEnabled() const { return enabled && IsInitialized(); } + bool HasLuaState() const { return L != NULL; } + uint64 GetCallstackId() const { return callstackid; } + int Register(lua_State* L, uint8 reg, uint32 entry, ObjectGuid guid, uint32 instanceId, uint32 event_id, int functionRef, uint32 shots); + + // Checks + template static T CHECKVAL(lua_State* luastate, int narg); + template static T CHECKVAL(lua_State* luastate, int narg, T def) + { + return lua_isnoneornil(luastate, narg) ? def : CHECKVAL(luastate, narg); + } + template static T* CHECKOBJ(lua_State* luastate, int narg, bool error = true) + { + return ElunaTemplate::Check(luastate, narg, error); + } + static ElunaObject* CHECKTYPE(lua_State* luastate, int narg, const char *tname, bool error = true); + + CreatureAI* GetAI(Creature* creature); + InstanceData* GetInstanceData(Map* map); + void FreeInstanceId(uint32 instanceId); + + /* Custom */ + void OnTimedEvent(int funcRef, uint32 delay, uint32 calls, WorldObject* obj); + bool OnCommand(ChatHandler& handler, const char* text); + void OnWorldUpdate(uint32 diff); + void OnLootItem(Player* pPlayer, Item* pItem, uint32 count, ObjectGuid guid); + void OnLootMoney(Player* pPlayer, uint32 amount); + void OnFirstLogin(Player* pPlayer); + void OnEquip(Player* pPlayer, Item* pItem, uint8 bag, uint8 slot); + void OnRepop(Player* pPlayer); + void OnResurrect(Player* pPlayer); + void OnQuestAbandon(Player* pPlayer, uint32 questId); + void OnLearnTalents(Player* pPlayer, uint32 talentId, uint32 talentRank, uint32 spellid); + InventoryResult OnCanUseItem(const Player* pPlayer, uint32 itemEntry); + void OnLuaStateClose(); + void OnLuaStateOpen(); + bool OnAddonMessage(Player* sender, uint32 type, std::string& msg, Player* receiver, Guild* guild, Group* group, Channel* channel); + void OnPetAddedToWorld(Player* player, Creature* pet); + void OnQuestRewardItem(Player* player, Item* item, uint32 count); + void OnCreateItem(Player* player, Item* item, uint32 count); + void OnStoreNewItem(Player* player, Item* item, uint32 count); + void OnPlayerCompleteQuest(Player* player, Quest const* quest); + + /* Item */ + void OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Item* pTarget); + bool OnQuestAccept(Player* pPlayer, Item* pItem, Quest const* pQuest); + bool OnUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets); + bool OnItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets); + bool OnItemGossip(Player* pPlayer, Item* pItem, SpellCastTargets const& targets); + bool OnExpire(Player* pPlayer, ItemTemplate const* pProto); + bool OnRemove(Player* pPlayer, Item* item); + void HandleGossipSelectOption(Player* pPlayer, Item* item, uint32 sender, uint32 action, const std::string& code); + + /* Creature */ + void OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Creature* pTarget); + bool OnGossipHello(Player* pPlayer, Creature* pCreature); + bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action); + bool OnGossipSelectCode(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action, const char* code); + bool OnQuestAccept(Player* pPlayer, Creature* pCreature, Quest const* pQuest); + bool OnQuestReward(Player* pPlayer, Creature* pCreature, Quest const* pQuest, uint32 opt); + void GetDialogStatus(const Player* pPlayer, const Creature* pCreature); + + bool OnSummoned(Creature* creature, Unit* summoner); + bool UpdateAI(Creature* me, const uint32 diff); + bool EnterCombat(Creature* me, Unit* target); + bool DamageTaken(Creature* me, Unit* attacker, uint32& damage); + bool JustDied(Creature* me, Unit* killer); + bool KilledUnit(Creature* me, Unit* victim); + bool JustSummoned(Creature* me, Creature* summon); + bool SummonedCreatureDespawn(Creature* me, Creature* summon); + bool MovementInform(Creature* me, uint32 type, uint32 id); + bool AttackStart(Creature* me, Unit* target); + bool EnterEvadeMode(Creature* me); + bool JustRespawned(Creature* me); + bool JustReachedHome(Creature* me); + bool ReceiveEmote(Creature* me, Player* player, uint32 emoteId); + bool CorpseRemoved(Creature* me, uint32& respawnDelay); + bool MoveInLineOfSight(Creature* me, Unit* who); + bool SpellHit(Creature* me, WorldObject* caster, SpellInfo const* spell); + bool SpellHitTarget(Creature* me, WorldObject* target, SpellInfo const* spell); + bool SummonedCreatureDies(Creature* me, Creature* summon, Unit* killer); + bool OwnerAttackedBy(Creature* me, Unit* attacker); + bool OwnerAttacked(Creature* me, Unit* target); + void On_Reset(Creature* me); + + /* GameObject */ + void OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, GameObject* pTarget); + bool OnGameObjectUse(Player* pPlayer, GameObject* pGameObject); + bool OnGossipHello(Player* pPlayer, GameObject* pGameObject); + bool OnGossipSelect(Player* pPlayer, GameObject* pGameObject, uint32 sender, uint32 action); + bool OnGossipSelectCode(Player* pPlayer, GameObject* pGameObject, uint32 sender, uint32 action, const char* code); + bool OnQuestAccept(Player* pPlayer, GameObject* pGameObject, Quest const* pQuest); + bool OnQuestReward(Player* pPlayer, GameObject* pGameObject, Quest const* pQuest, uint32 opt); + void GetDialogStatus(const Player* pPlayer, const GameObject* pGameObject); +#ifndef CLASSIC +#ifndef TBC + void OnDestroyed(GameObject* pGameObject, WorldObject* attacker); + void OnDamaged(GameObject* pGameObject, WorldObject* attacker); +#endif +#endif + void OnLootStateChanged(GameObject* pGameObject, uint32 state); + void OnGameObjectStateChanged(GameObject* pGameObject, uint32 state); + void UpdateAI(GameObject* pGameObject, uint32 diff); + void OnSpawn(GameObject* gameobject); + + /* Packet */ + bool OnPacketSend(WorldSession* session, const WorldPacket& packet); + void OnPacketSendAny(Player* player, const WorldPacket& packet, bool& result); + void OnPacketSendOne(Player* player, const WorldPacket& packet, bool& result); + bool OnPacketReceive(WorldSession* session, WorldPacket& packet); + void OnPacketReceiveAny(Player* player, WorldPacket& packet, bool& result); + void OnPacketReceiveOne(Player* player, WorldPacket& packet, bool& result); + + /* Player */ + void OnPlayerEnterCombat(Player* pPlayer, Unit* pEnemy); + void OnPlayerLeaveCombat(Player* pPlayer); + void OnPVPKill(Player* pKiller, Player* pKilled); + void OnCreatureKill(Player* pKiller, Creature* pKilled); + void OnPlayerKilledByCreature(Creature* pKiller, Player* pKilled); + void OnLevelChanged(Player* pPlayer, uint8 oldLevel); + void OnFreeTalentPointsChanged(Player* pPlayer, uint32 newPoints); + void OnTalentsReset(Player* pPlayer, bool noCost); + void OnMoneyChanged(Player* pPlayer, int32& amount); + void OnGiveXP(Player* pPlayer, uint32& amount, Unit* pVictim, uint8 xpSource); + bool OnReputationChange(Player* pPlayer, uint32 factionID, int32& standing, bool incremental); + void OnDuelRequest(Player* pTarget, Player* pChallenger); + void OnDuelStart(Player* pStarter, Player* pChallenger); + void OnDuelEnd(Player* pWinner, Player* pLoser, DuelCompleteType type); + bool OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg); + bool OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Group* pGroup); + bool OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Guild* pGuild); + bool OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Channel* pChannel); + bool OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Player* pReceiver); + void OnEmote(Player* pPlayer, uint32 emote); + void OnTextEmote(Player* pPlayer, uint32 textEmote, uint32 emoteNum, ObjectGuid guid); + void OnSpellCast(Player* pPlayer, Spell* pSpell, bool skipCheck); + void OnLogin(Player* pPlayer); + void OnLogout(Player* pPlayer); + void OnCreate(Player* pPlayer); + void OnDelete(uint32 guid); + void OnSave(Player* pPlayer); + void OnBindToInstance(Player* pPlayer, Difficulty difficulty, uint32 mapid, bool permanent); + void OnUpdateArea(Player* pPlayer, uint32 oldArea, uint32 newArea); + void OnUpdateZone(Player* pPlayer, uint32 newZone, uint32 newArea); + void OnMapChanged(Player* pPlayer); + void HandleGossipSelectOption(Player* pPlayer, uint32 menuId, uint32 sender, uint32 action, const std::string& code); + void OnLearnSpell(Player* player, uint32 spellId); + void OnAchiComplete(Player* player, AchievementEntry const* achievement); + void OnFfaPvpStateUpdate(Player* player, bool hasFfaPvp); + bool OnCanInitTrade(Player* player, Player* target); + bool OnCanSendMail(Player* player, ObjectGuid receiverGuid, ObjectGuid mailbox, std::string& subject, std::string& body, uint32 money, uint32 cod, Item* item); + bool OnCanJoinLfg(Player* player, uint8 roles, lfg::LfgDungeonSet& dungeons, const std::string& comment); + bool OnCanGroupInvite(Player* player, std::string& memberName); + void OnGroupRollRewardItem(Player* player, Item* item, uint32 count, RollVote voteType, Roll* roll); + void OnBattlegroundDesertion(Player* player, const BattlegroundDesertionType type); + +#ifndef CLASSIC +#ifndef TBC + /* Vehicle */ + void OnInstall(Vehicle* vehicle); + void OnUninstall(Vehicle* vehicle); + void OnInstallAccessory(Vehicle* vehicle, Creature* accessory); + void OnAddPassenger(Vehicle* vehicle, Unit* passenger, int8 seatId); + void OnRemovePassenger(Vehicle* vehicle, Unit* passenger); +#endif +#endif + + /* AreaTrigger */ + bool OnAreaTrigger(Player* pPlayer, AreaTriggerEntry const* pTrigger); + + /* Weather */ + void OnChange(Weather* weather, uint32 zone, WeatherState state, float grade); + + /* Auction House */ + void OnAdd(AuctionHouseObject* ah, AuctionEntry* entry); + void OnRemove(AuctionHouseObject* ah, AuctionEntry* entry); + void OnSuccessful(AuctionHouseObject* ah, AuctionEntry* entry); + void OnExpire(AuctionHouseObject* ah, AuctionEntry* entry); + + /* Guild */ + void OnAddMember(Guild* guild, Player* player, uint32 plRank); + void OnRemoveMember(Guild* guild, Player* player, bool isDisbanding); + void OnMOTDChanged(Guild* guild, const std::string& newMotd); + void OnInfoChanged(Guild* guild, const std::string& newInfo); + void OnCreate(Guild* guild, Player* leader, const std::string& name); + void OnDisband(Guild* guild); + void OnMemberWitdrawMoney(Guild* guild, Player* player, uint32& amount, bool isRepair); + void OnMemberDepositMoney(Guild* guild, Player* player, uint32& amount); + void OnItemMove(Guild* guild, Player* player, Item* pItem, bool isSrcBank, uint8 srcContainer, uint8 srcSlotId, bool isDestBank, uint8 destContainer, uint8 destSlotId); + void OnEvent(Guild* guild, uint8 eventType, uint32 playerGuid1, uint32 playerGuid2, uint8 newRank); + void OnBankEvent(Guild* guild, uint8 eventType, uint8 tabId, uint32 playerGuid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId); + + /* Group */ + void OnAddMember(Group* group, ObjectGuid guid); + void OnInviteMember(Group* group, ObjectGuid guid); + void OnRemoveMember(Group* group, ObjectGuid guid, uint8 method); + void OnChangeLeader(Group* group, ObjectGuid newLeaderGuid, ObjectGuid oldLeaderGuid); + void OnDisband(Group* group); + void OnCreate(Group* group, ObjectGuid leaderGuid, GroupType groupType); + + /* Map */ + void OnCreate(Map* map); + void OnDestroy(Map* map); + void OnPlayerEnter(Map* map, Player* player); + void OnPlayerLeave(Map* map, Player* player); + void OnUpdate(Map* map, uint32 diff); + void OnAddToWorld(Creature* creature); + void OnRemoveFromWorld(Creature* creature); + void OnAddToWorld(GameObject* gameobject); + void OnRemoveFromWorld(GameObject* gameobject); + void OnRemove(Creature* creature); + void OnRemove(GameObject* gameobject); + + /* Instance */ + void OnInitialize(ElunaInstanceAI* ai); + void OnLoad(ElunaInstanceAI* ai); + void OnUpdateInstance(ElunaInstanceAI* ai, uint32 diff); + void OnPlayerEnterInstance(ElunaInstanceAI* ai, Player* player); + void OnCreatureCreate(ElunaInstanceAI* ai, Creature* creature); + void OnGameObjectCreate(ElunaInstanceAI* ai, GameObject* gameobject); + bool OnCheckEncounterInProgress(ElunaInstanceAI* ai); + + /* World */ + void OnOpenStateChange(bool open); +#ifndef AZEROTHCORE + void OnConfigLoad(bool reload); +#else + void OnConfigLoad(bool reload, bool isBefore); +#endif + void OnShutdownInitiate(ShutdownExitCode code, ShutdownMask mask); + void OnShutdownCancel(); + void OnStartup(); + void OnShutdown(); + void OnGameEventStart(uint32 eventid); + void OnGameEventStop(uint32 eventid); + + /* Battle Ground */ + void OnBGStart(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId); +#if AZEROTHCORE + void OnBGEnd(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId, TeamId winner); +#else + void OnBGEnd(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId, Team winner); +#endif + void OnBGCreate(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId); + void OnBGDestroy(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId); +}; +template<> Unit* Eluna::CHECKOBJ(lua_State* L, int narg, bool error); +template<> Object* Eluna::CHECKOBJ(lua_State* L, int narg, bool error); +template<> WorldObject* Eluna::CHECKOBJ(lua_State* L, int narg, bool error); +template<> ElunaObject* Eluna::CHECKOBJ(lua_State* L, int narg, bool error); + +#define sEluna Eluna::GEluna +#endif diff --git a/modules/mod-eluna/src/LuaEngine/LuaFunctions.cpp b/modules/mod-eluna/src/LuaEngine/LuaFunctions.cpp new file mode 100644 index 0000000..ebf32d8 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/LuaFunctions.cpp @@ -0,0 +1,1554 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +extern "C" +{ +#include "lua.h" +}; + +// Eluna +#include "LuaEngine.h" +#include "ElunaEventMgr.h" +#include "ElunaIncludes.h" +#include "ElunaTemplate.h" +#include "ElunaUtility.h" + +// Method includes +#include "GlobalMethods.h" +#include "ObjectMethods.h" +#include "WorldObjectMethods.h" +#include "UnitMethods.h" +#include "PlayerMethods.h" +#include "CreatureMethods.h" +#include "GroupMethods.h" +#include "GuildMethods.h" +#include "GameObjectMethods.h" +#include "ElunaQueryMethods.h" +#include "AuraMethods.h" +#include "ItemMethods.h" +#include "WorldPacketMethods.h" +#include "SpellMethods.h" +#include "QuestMethods.h" +#include "MapMethods.h" +#include "CorpseMethods.h" +#include "VehicleMethods.h" +#include "BattleGroundMethods.h" +#include "ChatHandlerMethods.h" +#include "AchievementMethods.h" +#include "ItemTemplateMethods.h" +#include "RollMethods.h" + +luaL_Reg GlobalMethods[] = +{ + // Hooks + { "RegisterPacketEvent", &LuaGlobalFunctions::RegisterPacketEvent }, + { "RegisterServerEvent", &LuaGlobalFunctions::RegisterServerEvent }, + { "RegisterPlayerEvent", &LuaGlobalFunctions::RegisterPlayerEvent }, + { "RegisterGuildEvent", &LuaGlobalFunctions::RegisterGuildEvent }, + { "RegisterGroupEvent", &LuaGlobalFunctions::RegisterGroupEvent }, + { "RegisterCreatureEvent", &LuaGlobalFunctions::RegisterCreatureEvent }, + { "RegisterUniqueCreatureEvent", &LuaGlobalFunctions::RegisterUniqueCreatureEvent }, + { "RegisterCreatureGossipEvent", &LuaGlobalFunctions::RegisterCreatureGossipEvent }, + { "RegisterGameObjectEvent", &LuaGlobalFunctions::RegisterGameObjectEvent }, + { "RegisterGameObjectGossipEvent", &LuaGlobalFunctions::RegisterGameObjectGossipEvent }, + { "RegisterItemEvent", &LuaGlobalFunctions::RegisterItemEvent }, + { "RegisterItemGossipEvent", &LuaGlobalFunctions::RegisterItemGossipEvent }, + { "RegisterPlayerGossipEvent", &LuaGlobalFunctions::RegisterPlayerGossipEvent }, + { "RegisterBGEvent", &LuaGlobalFunctions::RegisterBGEvent }, + { "RegisterMapEvent", &LuaGlobalFunctions::RegisterMapEvent }, + { "RegisterInstanceEvent", &LuaGlobalFunctions::RegisterInstanceEvent }, + + { "ClearBattleGroundEvents", &LuaGlobalFunctions::ClearBattleGroundEvents }, + { "ClearCreatureEvents", &LuaGlobalFunctions::ClearCreatureEvents }, + { "ClearUniqueCreatureEvents", &LuaGlobalFunctions::ClearUniqueCreatureEvents }, + { "ClearCreatureGossipEvents", &LuaGlobalFunctions::ClearCreatureGossipEvents }, + { "ClearGameObjectEvents", &LuaGlobalFunctions::ClearGameObjectEvents }, + { "ClearGameObjectGossipEvents", &LuaGlobalFunctions::ClearGameObjectGossipEvents }, + { "ClearGroupEvents", &LuaGlobalFunctions::ClearGroupEvents }, + { "ClearGuildEvents", &LuaGlobalFunctions::ClearGuildEvents }, + { "ClearItemEvents", &LuaGlobalFunctions::ClearItemEvents }, + { "ClearItemGossipEvents", &LuaGlobalFunctions::ClearItemGossipEvents }, + { "ClearPacketEvents", &LuaGlobalFunctions::ClearPacketEvents }, + { "ClearPlayerEvents", &LuaGlobalFunctions::ClearPlayerEvents }, + { "ClearPlayerGossipEvents", &LuaGlobalFunctions::ClearPlayerGossipEvents }, + { "ClearServerEvents", &LuaGlobalFunctions::ClearServerEvents }, + { "ClearMapEvents", &LuaGlobalFunctions::ClearMapEvents }, + { "ClearInstanceEvents", &LuaGlobalFunctions::ClearInstanceEvents }, + + // Getters + { "GetLuaEngine", &LuaGlobalFunctions::GetLuaEngine }, + { "GetCoreName", &LuaGlobalFunctions::GetCoreName }, + { "GetRealmID", &LuaGlobalFunctions::GetRealmID }, + { "GetCoreVersion", &LuaGlobalFunctions::GetCoreVersion }, + { "GetCoreExpansion", &LuaGlobalFunctions::GetCoreExpansion }, + { "GetQuest", &LuaGlobalFunctions::GetQuest }, + { "GetPlayerByGUID", &LuaGlobalFunctions::GetPlayerByGUID }, + { "GetPlayerByName", &LuaGlobalFunctions::GetPlayerByName }, + { "GetGameTime", &LuaGlobalFunctions::GetGameTime }, + { "GetPlayersInWorld", &LuaGlobalFunctions::GetPlayersInWorld }, + { "GetGuildByName", &LuaGlobalFunctions::GetGuildByName }, + { "GetGuildByLeaderGUID", &LuaGlobalFunctions::GetGuildByLeaderGUID }, + { "GetPlayerCount", &LuaGlobalFunctions::GetPlayerCount }, + { "GetPlayerGUID", &LuaGlobalFunctions::GetPlayerGUID }, + { "GetItemGUID", &LuaGlobalFunctions::GetItemGUID }, + { "GetItemTemplate", &LuaGlobalFunctions::GetItemTemplate }, + { "GetObjectGUID", &LuaGlobalFunctions::GetObjectGUID }, + { "GetUnitGUID", &LuaGlobalFunctions::GetUnitGUID }, + { "GetGUIDLow", &LuaGlobalFunctions::GetGUIDLow }, + { "GetGUIDType", &LuaGlobalFunctions::GetGUIDType }, + { "GetGUIDEntry", &LuaGlobalFunctions::GetGUIDEntry }, + { "GetAreaName", &LuaGlobalFunctions::GetAreaName }, + { "GetOwnerHalaa", &LuaGlobalFunctions::GetOwnerHalaa }, + { "bit_not", &LuaGlobalFunctions::bit_not }, + { "bit_xor", &LuaGlobalFunctions::bit_xor }, + { "bit_rshift", &LuaGlobalFunctions::bit_rshift }, + { "bit_lshift", &LuaGlobalFunctions::bit_lshift }, + { "bit_or", &LuaGlobalFunctions::bit_or }, + { "bit_and", &LuaGlobalFunctions::bit_and }, + { "GetItemLink", &LuaGlobalFunctions::GetItemLink }, + { "GetMapById", &LuaGlobalFunctions::GetMapById }, + { "GetCurrTime", &LuaGlobalFunctions::GetCurrTime }, + { "GetTimeDiff", &LuaGlobalFunctions::GetTimeDiff }, + { "PrintInfo", &LuaGlobalFunctions::PrintInfo }, + { "PrintError", &LuaGlobalFunctions::PrintError }, + { "PrintDebug", &LuaGlobalFunctions::PrintDebug }, + { "GetActiveGameEvents", &LuaGlobalFunctions::GetActiveGameEvents }, + + // Boolean + { "IsInventoryPos", &LuaGlobalFunctions::IsInventoryPos }, + { "IsEquipmentPos", &LuaGlobalFunctions::IsEquipmentPos }, + { "IsBankPos", &LuaGlobalFunctions::IsBankPos }, + { "IsBagPos", &LuaGlobalFunctions::IsBagPos }, + { "IsGameEventActive", &LuaGlobalFunctions::IsGameEventActive }, + + // Other + { "ReloadEluna", &LuaGlobalFunctions::ReloadEluna }, + { "RunCommand", &LuaGlobalFunctions::RunCommand }, + { "SendWorldMessage", &LuaGlobalFunctions::SendWorldMessage }, + { "WorldDBQuery", &LuaGlobalFunctions::WorldDBQuery }, + { "WorldDBQueryAsync", &LuaGlobalFunctions::WorldDBQueryAsync }, + { "WorldDBExecute", &LuaGlobalFunctions::WorldDBExecute }, + { "CharDBQuery", &LuaGlobalFunctions::CharDBQuery }, + { "CharDBQueryAsync", &LuaGlobalFunctions::CharDBQueryAsync }, + { "CharDBExecute", &LuaGlobalFunctions::CharDBExecute }, + { "AuthDBQuery", &LuaGlobalFunctions::AuthDBQuery }, + { "AuthDBQueryAsync", &LuaGlobalFunctions::AuthDBQueryAsync }, + { "AuthDBExecute", &LuaGlobalFunctions::AuthDBExecute }, + { "CreateLuaEvent", &LuaGlobalFunctions::CreateLuaEvent }, + { "RemoveEventById", &LuaGlobalFunctions::RemoveEventById }, + { "RemoveEvents", &LuaGlobalFunctions::RemoveEvents }, + { "PerformIngameSpawn", &LuaGlobalFunctions::PerformIngameSpawn }, + { "CreatePacket", &LuaGlobalFunctions::CreatePacket }, + { "AddVendorItem", &LuaGlobalFunctions::AddVendorItem }, + { "VendorRemoveItem", &LuaGlobalFunctions::VendorRemoveItem }, + { "VendorRemoveAllItems", &LuaGlobalFunctions::VendorRemoveAllItems }, + { "Kick", &LuaGlobalFunctions::Kick }, + { "Ban", &LuaGlobalFunctions::Ban }, + { "SaveAllPlayers", &LuaGlobalFunctions::SaveAllPlayers }, + { "SendMail", &LuaGlobalFunctions::SendMail }, + { "AddTaxiPath", &LuaGlobalFunctions::AddTaxiPath }, + { "CreateInt64", &LuaGlobalFunctions::CreateLongLong }, + { "CreateUint64", &LuaGlobalFunctions::CreateULongLong }, + { "StartGameEvent", &LuaGlobalFunctions::StartGameEvent }, + { "StopGameEvent", &LuaGlobalFunctions::StopGameEvent }, + { "HttpRequest", &LuaGlobalFunctions::HttpRequest }, + { "SetOwnerHalaa", &LuaGlobalFunctions::SetOwnerHalaa }, + + { NULL, NULL } +}; + +ElunaRegister ObjectMethods[] = +{ + // Getters + { "GetEntry", &LuaObject::GetEntry }, + { "GetGUID", &LuaObject::GetGUID }, + { "GetGUIDLow", &LuaObject::GetGUIDLow }, + { "GetInt32Value", &LuaObject::GetInt32Value }, + { "GetUInt32Value", &LuaObject::GetUInt32Value }, + { "GetFloatValue", &LuaObject::GetFloatValue }, + { "GetByteValue", &LuaObject::GetByteValue }, + { "GetUInt16Value", &LuaObject::GetUInt16Value }, + { "GetUInt64Value", &LuaObject::GetUInt64Value }, + { "GetScale", &LuaObject::GetScale }, + { "GetTypeId", &LuaObject::GetTypeId }, + + // Setters + { "SetInt32Value", &LuaObject::SetInt32Value }, + { "SetUInt32Value", &LuaObject::SetUInt32Value }, + { "UpdateUInt32Value", &LuaObject::UpdateUInt32Value }, + { "SetFloatValue", &LuaObject::SetFloatValue }, + { "SetByteValue", &LuaObject::SetByteValue }, + { "SetUInt16Value", &LuaObject::SetUInt16Value }, + { "SetInt16Value", &LuaObject::SetInt16Value }, + { "SetUInt64Value", &LuaObject::SetUInt64Value }, + { "SetScale", &LuaObject::SetScale }, + { "SetFlag", &LuaObject::SetFlag }, + + // Boolean + { "IsInWorld", &LuaObject::IsInWorld }, + { "IsPlayer", &LuaObject::IsPlayer }, + { "HasFlag", &LuaObject::HasFlag }, + + // Other + { "ToGameObject", &LuaObject::ToGameObject }, + { "ToUnit", &LuaObject::ToUnit }, + { "ToCreature", &LuaObject::ToCreature }, + { "ToPlayer", &LuaObject::ToPlayer }, + { "ToCorpse", &LuaObject::ToCorpse }, + { "RemoveFlag", &LuaObject::RemoveFlag }, + + { NULL, NULL } +}; + +ElunaRegister WorldObjectMethods[] = +{ + // Getters + { "GetName", &LuaWorldObject::GetName }, + { "GetMap", &LuaWorldObject::GetMap }, +#if (!defined(TBC) && !defined(CLASSIC)) + { "GetPhaseMask", &LuaWorldObject::GetPhaseMask }, + { "SetPhaseMask", &LuaWorldObject::SetPhaseMask }, +#endif + { "GetInstanceId", &LuaWorldObject::GetInstanceId }, + { "GetAreaId", &LuaWorldObject::GetAreaId }, + { "GetZoneId", &LuaWorldObject::GetZoneId }, + { "GetMapId", &LuaWorldObject::GetMapId }, + { "GetX", &LuaWorldObject::GetX }, + { "GetY", &LuaWorldObject::GetY }, + { "GetZ", &LuaWorldObject::GetZ }, + { "GetO", &LuaWorldObject::GetO }, + { "GetLocation", &LuaWorldObject::GetLocation }, + { "GetPlayersInRange", &LuaWorldObject::GetPlayersInRange }, + { "GetCreaturesInRange", &LuaWorldObject::GetCreaturesInRange }, + { "GetGameObjectsInRange", &LuaWorldObject::GetGameObjectsInRange }, + { "GetNearestPlayer", &LuaWorldObject::GetNearestPlayer }, + { "GetNearestGameObject", &LuaWorldObject::GetNearestGameObject }, + { "GetNearestCreature", &LuaWorldObject::GetNearestCreature }, + { "GetNearObject", &LuaWorldObject::GetNearObject }, + { "GetNearObjects", &LuaWorldObject::GetNearObjects }, + { "GetDistance", &LuaWorldObject::GetDistance }, + { "GetExactDistance", &LuaWorldObject::GetExactDistance }, + { "GetDistance2d", &LuaWorldObject::GetDistance2d }, + { "GetExactDistance2d", &LuaWorldObject::GetExactDistance2d }, + { "GetRelativePoint", &LuaWorldObject::GetRelativePoint }, + { "GetAngle", &LuaWorldObject::GetAngle }, + + // Boolean + { "IsWithinLoS", &LuaWorldObject::IsWithinLoS }, + { "IsInMap", &LuaWorldObject::IsInMap }, + { "IsWithinDist3d", &LuaWorldObject::IsWithinDist3d }, + { "IsWithinDist2d", &LuaWorldObject::IsWithinDist2d }, + { "IsWithinDist", &LuaWorldObject::IsWithinDist }, + { "IsWithinDistInMap", &LuaWorldObject::IsWithinDistInMap }, + { "IsInRange", &LuaWorldObject::IsInRange }, + { "IsInRange2d", &LuaWorldObject::IsInRange2d }, + { "IsInRange3d", &LuaWorldObject::IsInRange3d }, + { "IsInFront", &LuaWorldObject::IsInFront }, + { "IsInBack", &LuaWorldObject::IsInBack }, + + // Other + { "SummonGameObject", &LuaWorldObject::SummonGameObject }, + { "SpawnCreature", &LuaWorldObject::SpawnCreature }, + { "SendPacket", &LuaWorldObject::SendPacket }, + { "RegisterEvent", &LuaWorldObject::RegisterEvent }, + { "RemoveEventById", &LuaWorldObject::RemoveEventById }, + { "RemoveEvents", &LuaWorldObject::RemoveEvents }, + { "PlayMusic", &LuaWorldObject::PlayMusic }, + { "PlayDirectSound", &LuaWorldObject::PlayDirectSound }, + { "PlayDistanceSound", &LuaWorldObject::PlayDistanceSound }, + + { NULL, NULL } +}; + +ElunaRegister UnitMethods[] = +{ + // Getters + { "GetLevel", &LuaUnit::GetLevel }, + { "GetHealth", &LuaUnit::GetHealth }, + { "GetDisplayId", &LuaUnit::GetDisplayId }, + { "GetNativeDisplayId", &LuaUnit::GetNativeDisplayId }, + { "GetPower", &LuaUnit::GetPower }, + { "GetMaxPower", &LuaUnit::GetMaxPower }, + { "GetPowerType", &LuaUnit::GetPowerType }, + { "GetMaxHealth", &LuaUnit::GetMaxHealth }, + { "GetHealthPct", &LuaUnit::GetHealthPct }, + { "GetPowerPct", &LuaUnit::GetPowerPct }, + { "GetGender", &LuaUnit::GetGender }, + { "GetRace", &LuaUnit::GetRace }, + { "GetClass", &LuaUnit::GetClass }, + { "GetRaceMask", &LuaUnit::GetRaceMask }, + { "GetClassMask", &LuaUnit::GetClassMask }, + { "GetRaceAsString", &LuaUnit::GetRaceAsString }, + { "GetClassAsString", &LuaUnit::GetClassAsString }, + { "GetAura", &LuaUnit::GetAura }, + { "GetFaction", &LuaUnit::GetFaction }, + { "GetCurrentSpell", &LuaUnit::GetCurrentSpell }, + { "GetCreatureType", &LuaUnit::GetCreatureType }, + { "GetMountId", &LuaUnit::GetMountId }, + { "GetOwner", &LuaUnit::GetOwner }, + { "GetFriendlyUnitsInRange", &LuaUnit::GetFriendlyUnitsInRange }, + { "GetUnfriendlyUnitsInRange", &LuaUnit::GetUnfriendlyUnitsInRange }, + { "GetOwnerGUID", &LuaUnit::GetOwnerGUID }, + { "GetCreatorGUID", &LuaUnit::GetCreatorGUID }, + { "GetMinionGUID", &LuaUnit::GetPetGUID }, + { "GetCharmerGUID", &LuaUnit::GetCharmerGUID }, + { "GetCharmGUID", &LuaUnit::GetCharmGUID }, + { "GetPetGUID", &LuaUnit::GetPetGUID }, +#if (!defined(TBC) && !defined(CLASSIC)) + { "GetCritterGUID", &LuaUnit::GetCritterGUID }, +#endif + { "GetControllerGUID", &LuaUnit::GetControllerGUID }, + { "GetControllerGUIDS", &LuaUnit::GetControllerGUIDS }, + { "GetStandState", &LuaUnit::GetStandState }, + { "GetVictim", &LuaUnit::GetVictim }, + { "GetSpeed", &LuaUnit::GetSpeed }, + { "GetSpeedRate", &LuaUnit::GetSpeedRate }, + { "GetStat", &LuaUnit::GetStat }, + { "GetBaseSpellPower", &LuaUnit::GetBaseSpellPower }, +#if (!defined(TBC) && !defined(CLASSIC)) + { "GetVehicleKit", &LuaUnit::GetVehicleKit }, + // {"GetVehicle", &LuaUnit::GetVehicle}, // :GetVehicle() - UNDOCUMENTED - Gets the Vehicle kit of the vehicle the unit is on +#endif + { "GetMovementType", &LuaUnit::GetMovementType }, + { "GetAttackers", &LuaUnit::GetAttackers }, + + // Setters + { "SetFaction", &LuaUnit::SetFaction }, + { "SetLevel", &LuaUnit::SetLevel }, + { "SetHealth", &LuaUnit::SetHealth }, + { "SetMaxHealth", &LuaUnit::SetMaxHealth }, + { "SetPower", &LuaUnit::SetPower }, + { "SetMaxPower", &LuaUnit::SetMaxPower }, + { "SetPowerType", &LuaUnit::SetPowerType }, + { "SetDisplayId", &LuaUnit::SetDisplayId }, + { "SetNativeDisplayId", &LuaUnit::SetNativeDisplayId }, + { "SetFacing", &LuaUnit::SetFacing }, + { "SetFacingToObject", &LuaUnit::SetFacingToObject }, + { "SetSpeed", &LuaUnit::SetSpeed }, + { "SetSpeedRate", &LuaUnit::SetSpeedRate }, + // {"SetStunned", &LuaUnit::SetStunned}, // :SetStunned([enable]) - UNDOCUMENTED - Stuns or removes stun + {"SetRooted", &LuaUnit::SetRooted}, + {"SetConfused", &LuaUnit::SetConfused}, + {"SetFeared", &LuaUnit::SetFeared}, + { "SetPvP", &LuaUnit::SetPvP }, +#if (!defined(TBC) && !defined(CLASSIC)) + { "SetFFA", &LuaUnit::SetFFA }, + { "SetSanctuary", &LuaUnit::SetSanctuary }, +#endif + // {"SetCanFly", &LuaUnit::SetCanFly}, // :SetCanFly(apply) - UNDOCUMENTED + // {"SetVisible", &LuaUnit::SetVisible}, // :SetVisible(x) - UNDOCUMENTED + { "SetOwnerGUID", &LuaUnit::SetOwnerGUID }, + { "SetName", &LuaUnit::SetName }, + { "SetSheath", &LuaUnit::SetSheath }, + { "SetCreatorGUID", &LuaUnit::SetCreatorGUID }, + { "SetMinionGUID", &LuaUnit::SetPetGUID }, + { "SetPetGUID", &LuaUnit::SetPetGUID }, +#if (!defined(TBC) && !defined(CLASSIC)) + { "SetCritterGUID", &LuaUnit::SetCritterGUID }, +#endif + { "SetWaterWalk", &LuaUnit::SetWaterWalk }, + { "SetStandState", &LuaUnit::SetStandState }, + { "SetInCombatWith", &LuaUnit::SetInCombatWith }, + { "ModifyPower", &LuaUnit::ModifyPower }, + + // Boolean + { "IsAlive", &LuaUnit::IsAlive }, + { "IsDead", &LuaUnit::IsDead }, + { "IsDying", &LuaUnit::IsDying }, + { "IsPvPFlagged", &LuaUnit::IsPvPFlagged }, + { "IsInCombat", &LuaUnit::IsInCombat }, + { "IsBanker", &LuaUnit::IsBanker }, + { "IsBattleMaster", &LuaUnit::IsBattleMaster }, + { "IsCharmed", &LuaUnit::IsCharmed }, + { "IsArmorer", &LuaUnit::IsArmorer }, + { "IsAttackingPlayer", &LuaUnit::IsAttackingPlayer }, + { "IsInWater", &LuaUnit::IsInWater }, + { "IsUnderWater", &LuaUnit::IsUnderWater }, + { "IsAuctioneer", &LuaUnit::IsAuctioneer }, + { "IsGuildMaster", &LuaUnit::IsGuildMaster }, + { "IsInnkeeper", &LuaUnit::IsInnkeeper }, + { "IsTrainer", &LuaUnit::IsTrainer }, + { "IsGossip", &LuaUnit::IsGossip }, + { "IsTaxi", &LuaUnit::IsTaxi }, + { "IsSpiritHealer", &LuaUnit::IsSpiritHealer }, + { "IsSpiritGuide", &LuaUnit::IsSpiritGuide }, + { "IsTabardDesigner", &LuaUnit::IsTabardDesigner }, + { "IsServiceProvider", &LuaUnit::IsServiceProvider }, + { "IsSpiritService", &LuaUnit::IsSpiritService }, + { "HealthBelowPct", &LuaUnit::HealthBelowPct }, + { "HealthAbovePct", &LuaUnit::HealthAbovePct }, + { "IsMounted", &LuaUnit::IsMounted }, + { "AttackStop", &LuaUnit::AttackStop }, + { "Attack", &LuaUnit::Attack }, + // {"IsVisible", &LuaUnit::IsVisible}, // :IsVisible() - UNDOCUMENTED + // {"IsMoving", &LuaUnit::IsMoving}, // :IsMoving() - UNDOCUMENTED + // {"IsFlying", &LuaUnit::IsFlying}, // :IsFlying() - UNDOCUMENTED + { "IsStopped", &LuaUnit::IsStopped }, + { "HasUnitState", &LuaUnit::HasUnitState }, + { "IsQuestGiver", &LuaUnit::IsQuestGiver }, + { "IsInAccessiblePlaceFor", &LuaUnit::IsInAccessiblePlaceFor }, + { "IsVendor", &LuaUnit::IsVendor }, + { "IsRooted", &LuaUnit::IsRooted }, + { "IsFullHealth", &LuaUnit::IsFullHealth }, + { "HasAura", &LuaUnit::HasAura }, + { "IsCasting", &LuaUnit::IsCasting }, + { "IsStandState", &LuaUnit::IsStandState }, +#ifndef CLASSIC + { "IsOnVehicle", &LuaUnit::IsOnVehicle }, +#endif + + // Other + { "AddAura", &LuaUnit::AddAura }, + { "RemoveAura", &LuaUnit::RemoveAura }, + { "RemoveAllAuras", &LuaUnit::RemoveAllAuras }, +#if !defined(CLASSIC) + { "RemoveArenaAuras", &LuaUnit::RemoveArenaAuras }, +#endif + { "ClearInCombat", &LuaUnit::ClearInCombat }, + { "DeMorph", &LuaUnit::DeMorph }, + { "SendUnitWhisper", &LuaUnit::SendUnitWhisper }, + { "SendUnitEmote", &LuaUnit::SendUnitEmote }, + { "SendUnitSay", &LuaUnit::SendUnitSay }, + { "SendUnitYell", &LuaUnit::SendUnitYell }, + { "CastSpell", &LuaUnit::CastSpell }, + { "CastCustomSpell", &LuaUnit::CastCustomSpell }, + { "CastSpellAoF", &LuaUnit::CastSpellAoF }, + { "Kill", &LuaUnit::Kill }, + { "StopSpellCast", &LuaUnit::StopSpellCast }, + { "InterruptSpell", &LuaUnit::InterruptSpell }, + { "SendChatMessageToPlayer", &LuaUnit::SendChatMessageToPlayer }, + { "PerformEmote", &LuaUnit::PerformEmote }, + { "EmoteState", &LuaUnit::EmoteState }, + { "CountPctFromCurHealth", &LuaUnit::CountPctFromCurHealth }, + { "CountPctFromMaxHealth", &LuaUnit::CountPctFromMaxHealth }, + { "Dismount", &LuaUnit::Dismount }, + { "Mount", &LuaUnit::Mount }, + // {"RestoreDisplayId", &LuaUnit::RestoreDisplayId}, // :RestoreDisplayId() - UNDOCUMENTED + // {"RestoreFaction", &LuaUnit::RestoreFaction}, // :RestoreFaction() - UNDOCUMENTED + // {"RemoveBindSightAuras", &LuaUnit::RemoveBindSightAuras}, // :RemoveBindSightAuras() - UNDOCUMENTED + // {"RemoveCharmAuras", &LuaUnit::RemoveCharmAuras}, // :RemoveCharmAuras() - UNDOCUMENTED + { "ClearThreatList", &LuaUnit::ClearThreatList }, + { "GetThreatList", &LuaUnit::GetThreatList }, + { "ClearUnitState", &LuaUnit::ClearUnitState }, + { "AddUnitState", &LuaUnit::AddUnitState }, + // {"DisableMelee", &LuaUnit::DisableMelee}, // :DisableMelee([disable]) - UNDOCUMENTED - if true, enables + // {"SummonGuardian", &LuaUnit::SummonGuardian}, // :SummonGuardian(entry, x, y, z, o[, duration]) - UNDOCUMENTED - summons a guardian to location. Scales with summoner, is friendly to him and guards him. + { "NearTeleport", &LuaUnit::NearTeleport }, + { "MoveIdle", &LuaUnit::MoveIdle }, + { "MoveRandom", &LuaUnit::MoveRandom }, + { "MoveHome", &LuaUnit::MoveHome }, + { "MoveFollow", &LuaUnit::MoveFollow }, + { "MoveChase", &LuaUnit::MoveChase }, + { "MoveConfused", &LuaUnit::MoveConfused }, + { "MoveFleeing", &LuaUnit::MoveFleeing }, + { "MoveTo", &LuaUnit::MoveTo }, +#if (!defined(TBC) && !defined(CLASSIC)) + { "MoveJump", &LuaUnit::MoveJump }, +#endif + { "MoveStop", &LuaUnit::MoveStop }, + { "MoveExpire", &LuaUnit::MoveExpire }, + { "MoveClear", &LuaUnit::MoveClear }, + { "DealDamage", &LuaUnit::DealDamage }, + { "DealHeal", &LuaUnit::DealHeal }, + { "AddThreat", &LuaUnit::AddThreat }, + { "ModifyThreatPct", &LuaUnit::ModifyThreatPct }, + + { NULL, NULL } +}; + +ElunaRegister PlayerMethods[] = +{ + // Getters + { "GetSelection", &LuaPlayer::GetSelection }, + { "GetGMRank", &LuaPlayer::GetGMRank }, + { "GetGuildId", &LuaPlayer::GetGuildId }, + { "GetCoinage", &LuaPlayer::GetCoinage }, + { "GetTeam", &LuaPlayer::GetTeam }, + { "GetItemCount", &LuaPlayer::GetItemCount }, + { "GetGroup", &LuaPlayer::GetGroup }, + { "GetGuild", &LuaPlayer::GetGuild }, + { "GetAccountId", &LuaPlayer::GetAccountId }, + { "GetAccountName", &LuaPlayer::GetAccountName }, +#if defined (TBC) || defined (WOTLK) + { "GetArenaPoints", &LuaPlayer::GetArenaPoints }, + { "GetHonorPoints", &LuaPlayer::GetHonorPoints }, +#endif + { "GetLifetimeKills", &LuaPlayer::GetLifetimeKills }, + { "GetPlayerIP", &LuaPlayer::GetPlayerIP }, + { "GetLevelPlayedTime", &LuaPlayer::GetLevelPlayedTime }, + { "GetTotalPlayedTime", &LuaPlayer::GetTotalPlayedTime }, + { "GetItemByPos", &LuaPlayer::GetItemByPos }, + { "GetItemByEntry", &LuaPlayer::GetItemByEntry }, + { "GetItemByGUID", &LuaPlayer::GetItemByGUID }, + { "GetMailCount", &LuaPlayer::GetMailCount }, + { "GetMailItem", &LuaPlayer::GetMailItem }, + { "GetReputation", &LuaPlayer::GetReputation }, + { "GetEquippedItemBySlot", &LuaPlayer::GetEquippedItemBySlot }, + { "GetQuestLevel", &LuaPlayer::GetQuestLevel }, + { "GetChatTag", &LuaPlayer::GetChatTag }, + { "GetRestBonus", &LuaPlayer::GetRestBonus }, +#ifdef WOTLK + { "GetPhaseMaskForSpawn", &LuaPlayer::GetPhaseMaskForSpawn }, +#endif + { "GetReqKillOrCastCurrentCount", &LuaPlayer::GetReqKillOrCastCurrentCount }, + { "GetQuestStatus", &LuaPlayer::GetQuestStatus }, + { "GetInGameTime", &LuaPlayer::GetInGameTime }, + { "GetComboPoints", &LuaPlayer::GetComboPoints }, + { "GetComboTarget", &LuaPlayer::GetComboTarget }, + { "GetGuildName", &LuaPlayer::GetGuildName }, + { "GetFreeTalentPoints", &LuaPlayer::GetFreeTalentPoints }, +#if (!defined(TBC) && !defined(CLASSIC)) + { "GetActiveSpec", &LuaPlayer::GetActiveSpec }, + { "GetSpecsCount", &LuaPlayer::GetSpecsCount }, +#endif + { "GetSpellCooldownDelay", &LuaPlayer::GetSpellCooldownDelay }, + { "GetGuildRank", &LuaPlayer::GetGuildRank }, + { "GetDifficulty", &LuaPlayer::GetDifficulty }, + { "GetHealthBonusFromStamina", &LuaPlayer::GetHealthBonusFromStamina }, + { "GetManaBonusFromIntellect", &LuaPlayer::GetManaBonusFromIntellect }, + { "GetMaxSkillValue", &LuaPlayer::GetMaxSkillValue }, + { "GetPureMaxSkillValue", &LuaPlayer::GetPureMaxSkillValue }, + { "GetSkillValue", &LuaPlayer::GetSkillValue }, + { "GetBaseSkillValue", &LuaPlayer::GetBaseSkillValue }, + { "GetPureSkillValue", &LuaPlayer::GetPureSkillValue }, + { "GetSkillPermBonusValue", &LuaPlayer::GetSkillPermBonusValue }, + { "GetSkillTempBonusValue", &LuaPlayer::GetSkillTempBonusValue }, + { "GetReputationRank", &LuaPlayer::GetReputationRank }, + { "GetDrunkValue", &LuaPlayer::GetDrunkValue }, + { "GetBattlegroundId", &LuaPlayer::GetBattlegroundId }, + { "GetBattlegroundTypeId", &LuaPlayer::GetBattlegroundTypeId }, + { "GetXP", &LuaPlayer::GetXP }, + { "GetXPRestBonus", &LuaPlayer::GetXPRestBonus }, + { "GetGroupInvite", &LuaPlayer::GetGroupInvite }, + { "GetSubGroup", &LuaPlayer::GetSubGroup }, + { "GetNextRandomRaidMember", &LuaPlayer::GetNextRandomRaidMember }, + { "GetOriginalGroup", &LuaPlayer::GetOriginalGroup }, + { "GetOriginalSubGroup", &LuaPlayer::GetOriginalSubGroup }, +#if defined(TRINITY) || AZEROTHCORE + { "GetChampioningFaction", &LuaPlayer::GetChampioningFaction }, +#endif + { "GetLatency", &LuaPlayer::GetLatency }, + // {"GetRecruiterId", &LuaPlayer::GetRecruiterId}, // :GetRecruiterId() - UNDOCUMENTED - Returns player's recruiter's ID + { "GetDbLocaleIndex", &LuaPlayer::GetDbLocaleIndex }, + { "GetDbcLocale", &LuaPlayer::GetDbcLocale }, + { "GetCorpse", &LuaPlayer::GetCorpse }, + { "GetGossipTextId", &LuaPlayer::GetGossipTextId }, + { "GetQuestRewardStatus", &LuaPlayer::GetQuestRewardStatus }, +#if defined(CLASSIC) || defined(TBC) || defined(WOTLK) + { "GetShieldBlockValue", &LuaPlayer::GetShieldBlockValue }, +#endif +#ifdef CLASSIC + { "GetHonorStoredKills", &LuaPlayer::GetHonorStoredKills }, + { "GetRankPoints", &LuaPlayer::GetRankPoints }, + { "GetHonorLastWeekStandingPos", &LuaPlayer::GetHonorLastWeekStandingPos }, +#endif + { "GetPlayerSettingValue", &LuaPlayer::GetPlayerSettingValue }, + { "GetTrader", &LuaPlayer::GetTrader }, + + // Setters + { "AdvanceSkillsToMax", &LuaPlayer::AdvanceSkillsToMax }, + { "AdvanceSkill", &LuaPlayer::AdvanceSkill }, + { "AdvanceAllSkills", &LuaPlayer::AdvanceAllSkills }, + { "AddLifetimeKills", &LuaPlayer::AddLifetimeKills }, + { "SetCoinage", &LuaPlayer::SetCoinage }, +#ifndef CLASSIC + { "SetKnownTitle", &LuaPlayer::SetKnownTitle }, + { "UnsetKnownTitle", &LuaPlayer::UnsetKnownTitle }, +#endif + { "SetBindPoint", &LuaPlayer::SetBindPoint }, +#if defined(TBC) || defined(WOTLK) + { "SetArenaPoints", &LuaPlayer::SetArenaPoints }, + { "SetHonorPoints", &LuaPlayer::SetHonorPoints }, +#endif +#ifdef CLASSIC + { "SetHonorStoredKills", &LuaPlayer::SetHonorStoredKills }, + { "SetRankPoints", &LuaPlayer::SetRankPoints }, + { "SetHonorLastWeekStandingPos", &LuaPlayer::SetHonorLastWeekStandingPos }, +#endif + { "SetLifetimeKills", &LuaPlayer::SetLifetimeKills }, + { "SetGameMaster", &LuaPlayer::SetGameMaster }, + { "SetGMChat", &LuaPlayer::SetGMChat }, + { "SetTaxiCheat", &LuaPlayer::SetTaxiCheat }, + { "SetGMVisible", &LuaPlayer::SetGMVisible }, + { "SetPvPDeath", &LuaPlayer::SetPvPDeath }, + { "SetAcceptWhispers", &LuaPlayer::SetAcceptWhispers }, + { "SetRestBonus", &LuaPlayer::SetRestBonus }, + { "SetQuestStatus", &LuaPlayer::SetQuestStatus }, + { "SetReputation", &LuaPlayer::SetReputation }, + { "SetFreeTalentPoints", &LuaPlayer::SetFreeTalentPoints }, + { "SetGuildRank", &LuaPlayer::SetGuildRank }, + // {"SetMovement", &LuaPlayer::SetMovement}, // :SetMovement(type) - UNDOCUMENTED - Sets player's movement type + { "SetSkill", &LuaPlayer::SetSkill }, + { "SetFactionForRace", &LuaPlayer::SetFactionForRace }, + { "SetDrunkValue", &LuaPlayer::SetDrunkValue }, + { "SetAtLoginFlag", &LuaPlayer::SetAtLoginFlag }, + { "SetPlayerLock", &LuaPlayer::SetPlayerLock }, + { "SetGender", &LuaPlayer::SetGender }, + { "SetSheath", &LuaPlayer::SetSheath }, +#if !defined TRINITY && !AZEROTHCORE + { "SetFFA", &LuaPlayer::SetFFA }, +#endif + + // Boolean + { "IsInGroup", &LuaPlayer::IsInGroup }, + { "IsInGuild", &LuaPlayer::IsInGuild }, + { "IsGM", &LuaPlayer::IsGM }, + { "IsImmuneToDamage", &LuaPlayer::IsImmuneToDamage }, + { "IsAlliance", &LuaPlayer::IsAlliance }, + { "IsHorde", &LuaPlayer::IsHorde }, +#ifndef CLASSIC + { "HasTitle", &LuaPlayer::HasTitle }, +#endif + { "HasItem", &LuaPlayer::HasItem }, + { "Teleport", &LuaPlayer::Teleport }, + { "AddItem", &LuaPlayer::AddItem }, +#ifndef CLASSIC + { "IsInArenaTeam", &LuaPlayer::IsInArenaTeam }, +#endif + { "CanRewardQuest", &LuaPlayer::CanRewardQuest }, + { "CanCompleteRepeatableQuest", &LuaPlayer::CanCompleteRepeatableQuest }, + { "CanCompleteQuest", &LuaPlayer::CanCompleteQuest }, + { "CanEquipItem", &LuaPlayer::CanEquipItem }, + { "IsFalling", &LuaPlayer::IsFalling }, + { "ToggleAFK", &LuaPlayer::ToggleAFK }, + { "ToggleDND", &LuaPlayer::ToggleDND }, + { "IsAFK", &LuaPlayer::IsAFK }, + { "IsDND", &LuaPlayer::IsDND }, + { "IsAcceptingWhispers", &LuaPlayer::IsAcceptingWhispers }, + { "IsGMChat", &LuaPlayer::IsGMChat }, + { "IsTaxiCheater", &LuaPlayer::IsTaxiCheater }, + { "IsGMVisible", &LuaPlayer::IsGMVisible }, + { "HasQuest", &LuaPlayer::HasQuest }, + { "InBattlegroundQueue", &LuaPlayer::InBattlegroundQueue }, + // {"IsImmuneToEnvironmentalDamage", &LuaPlayer::IsImmuneToEnvironmentalDamage}, // :IsImmuneToEnvironmentalDamage() - UNDOCUMENTED - Returns true if the player is immune to environmental damage + { "CanSpeak", &LuaPlayer::CanSpeak }, + { "HasAtLoginFlag", &LuaPlayer::HasAtLoginFlag }, + // {"InRandomLfgDungeon", &LuaPlayer::InRandomLfgDungeon}, // :InRandomLfgDungeon() - UNDOCUMENTED - Returns true if the player is in a random LFG dungeon + // {"HasPendingBind", &LuaPlayer::HasPendingBind}, // :HasPendingBind() - UNDOCUMENTED - Returns true if the player has a pending instance bind +#if (!defined(TBC) && !defined(CLASSIC)) + { "HasAchieved", &LuaPlayer::HasAchieved }, + { "GetAchievementCriteriaProgress", &LuaPlayer::GetAchievementCriteriaProgress }, +#if defined(TRINITY) || defined(AZEROTHCORE) + { "SetAchievement", &LuaPlayer::SetAchievement }, +#endif +#endif + { "CanUninviteFromGroup", &LuaPlayer::CanUninviteFromGroup }, + { "IsRested", &LuaPlayer::IsRested }, + // {"CanFlyInZone", &LuaPlayer::CanFlyInZone}, // :CanFlyInZone(mapid, zone) - UNDOCUMENTED - Returns true if the player can fly in the area + // {"IsNeverVisible", &LuaPlayer::IsNeverVisible}, // :IsNeverVisible() - UNDOCUMENTED - Returns true if the player is never visible + { "IsVisibleForPlayer", &LuaPlayer::IsVisibleForPlayer }, + // {"IsUsingLfg", &LuaPlayer::IsUsingLfg}, // :IsUsingLfg() - UNDOCUMENTED - Returns true if the player is using LFG + { "HasQuestForItem", &LuaPlayer::HasQuestForItem }, + { "HasQuestForGO", &LuaPlayer::HasQuestForGO }, + { "CanShareQuest", &LuaPlayer::CanShareQuest }, + // {"HasReceivedQuestReward", &LuaPlayer::HasReceivedQuestReward}, // :HasReceivedQuestReward(entry) - UNDOCUMENTED - Returns true if the player has recieved the quest's reward +#if (!defined(TBC) && !defined(CLASSIC)) + { "HasTalent", &LuaPlayer::HasTalent }, +#endif + { "IsInSameGroupWith", &LuaPlayer::IsInSameGroupWith }, + { "IsInSameRaidWith", &LuaPlayer::IsInSameRaidWith }, + { "IsGroupVisibleFor", &LuaPlayer::IsGroupVisibleFor }, + { "HasSkill", &LuaPlayer::HasSkill }, + { "IsHonorOrXPTarget", &LuaPlayer::IsHonorOrXPTarget }, + { "CanParry", &LuaPlayer::CanParry }, + { "CanBlock", &LuaPlayer::CanBlock }, +#if (!defined(TBC) && !defined(CLASSIC)) + { "CanTitanGrip", &LuaPlayer::CanTitanGrip }, +#endif + { "InBattleground", &LuaPlayer::InBattleground }, +#ifndef CLASSIC + { "InArena", &LuaPlayer::InArena }, +#endif + // {"IsOutdoorPvPActive", &LuaPlayer::IsOutdoorPvPActive}, // :IsOutdoorPvPActive() - UNDOCUMENTED - Returns true if the player is outdoor pvp active + // {"IsARecruiter", &LuaPlayer::IsARecruiter}, // :IsARecruiter() - UNDOCUMENTED - Returns true if the player is a recruiter + { "CanUseItem", &LuaPlayer::CanUseItem }, + { "HasSpell", &LuaPlayer::HasSpell }, + { "HasSpellCooldown", &LuaPlayer::HasSpellCooldown }, + { "IsInWater", &LuaPlayer::IsInWater }, +#ifndef CLASSIC + { "CanFly", &LuaPlayer::CanFly }, +#endif + { "IsMoving", &LuaPlayer::IsMoving }, +#ifndef CLASSIC + { "IsFlying", &LuaPlayer::IsFlying }, +#endif + + // Gossip + { "GossipMenuAddItem", &LuaPlayer::GossipMenuAddItem }, + { "GossipSendMenu", &LuaPlayer::GossipSendMenu }, + { "GossipComplete", &LuaPlayer::GossipComplete }, + { "GossipClearMenu", &LuaPlayer::GossipClearMenu }, + + // Other + { "SendBroadcastMessage", &LuaPlayer::SendBroadcastMessage }, + { "SendAreaTriggerMessage", &LuaPlayer::SendAreaTriggerMessage }, + { "SendNotification", &LuaPlayer::SendNotification }, + { "SendPacket", &LuaPlayer::SendPacket }, + { "SendAddonMessage", &LuaPlayer::SendAddonMessage }, + { "ModifyMoney", &LuaPlayer::ModifyMoney }, + { "LearnSpell", &LuaPlayer::LearnSpell }, + { "LearnTalent", &LuaPlayer::LearnTalent }, + { "SetGlyph", &LuaPlayer::SetGlyph }, +#if !defined(CLASSIC) + { "RemoveArenaSpellCooldowns", &LuaPlayer::RemoveArenaSpellCooldowns }, +#endif + { "RemoveItem", &LuaPlayer::RemoveItem }, + { "RemoveLifetimeKills", &LuaPlayer::RemoveLifetimeKills }, + { "ResurrectPlayer", &LuaPlayer::ResurrectPlayer }, + { "EquipItem", &LuaPlayer::EquipItem }, + { "ResetSpellCooldown", &LuaPlayer::ResetSpellCooldown }, + { "ResetTypeCooldowns", &LuaPlayer::ResetTypeCooldowns }, + { "ResetAllCooldowns", &LuaPlayer::ResetAllCooldowns }, + { "GiveXP", &LuaPlayer::GiveXP }, // :GiveXP(xp[, victim, pureXP, triggerHook]) - UNDOCUMENTED - Gives XP to the player. If pure is false, bonuses are count in. If triggerHook is false, GiveXp hook is not triggered. + // {"RemovePet", &LuaPlayer::RemovePet}, // :RemovePet([mode, returnreagent]) - UNDOCUMENTED - Removes the player's pet. Mode determines if the pet is saved and how + // {"SummonPet", &LuaPlayer::SummonPet}, // :SummonPet(entry, x, y, z, o, petType, despwtime) - Summons a pet for the player + { "Say", &LuaPlayer::Say }, + { "Yell", &LuaPlayer::Yell }, + { "TextEmote", &LuaPlayer::TextEmote }, + { "Whisper", &LuaPlayer::Whisper }, + { "CompleteQuest", &LuaPlayer::CompleteQuest }, + { "IncompleteQuest", &LuaPlayer::IncompleteQuest }, + { "FailQuest", &LuaPlayer::FailQuest }, + { "AddQuest", &LuaPlayer::AddQuest }, + { "RemoveQuest", &LuaPlayer::RemoveQuest }, + // {"RemoveActiveQuest", &LuaPlayer::RemoveActiveQuest}, // :RemoveActiveQuest(entry) - UNDOCUMENTED - Removes an active quest + // {"RemoveRewardedQuest", &LuaPlayer::RemoveRewardedQuest}, // :RemoveRewardedQuest(entry) - UNDOCUMENTED - Removes a rewarded quest + { "AreaExploredOrEventHappens", &LuaPlayer::AreaExploredOrEventHappens }, + { "GroupEventHappens", &LuaPlayer::GroupEventHappens }, + { "KilledMonsterCredit", &LuaPlayer::KilledMonsterCredit }, + // {"KilledPlayerCredit", &LuaPlayer::KilledPlayerCredit}, // :KilledPlayerCredit() - UNDOCUMENTED - Satisfies a player kill for the player + // {"KillGOCredit", &LuaPlayer::KillGOCredit}, // :KillGOCredit(GOEntry[, GUID]) - UNDOCUMENTED - Credits the player for destroying a GO, guid is optional + { "TalkedToCreature", &LuaPlayer::TalkedToCreature }, +#if (!defined(TBC) && !defined(CLASSIC)) + { "ResetPetTalents", &LuaPlayer::ResetPetTalents }, +#endif + { "AddComboPoints", &LuaPlayer::AddComboPoints }, + // {"GainSpellComboPoints", &LuaPlayer::GainSpellComboPoints}, // :GainSpellComboPoints(amount) - UNDOCUMENTED - Player gains spell combo points + { "ClearComboPoints", &LuaPlayer::ClearComboPoints }, + { "RemoveSpell", &LuaPlayer::RemoveSpell }, + { "ResetTalents", &LuaPlayer::ResetTalents }, + { "ResetTalentsCost", &LuaPlayer::ResetTalentsCost }, + // {"AddTalent", &LuaPlayer::AddTalent}, // :AddTalent(spellid, spec, learning) - UNDOCUMENTED - Adds a talent spell for the player to given spec + { "RemoveFromGroup", &LuaPlayer::RemoveFromGroup }, + { "KillPlayer", &LuaPlayer::KillPlayer }, + { "DurabilityLossAll", &LuaPlayer::DurabilityLossAll }, + { "DurabilityLoss", &LuaPlayer::DurabilityLoss }, + { "DurabilityPointsLoss", &LuaPlayer::DurabilityPointsLoss }, + { "DurabilityPointsLossAll", &LuaPlayer::DurabilityPointsLossAll }, + { "DurabilityPointLossForEquipSlot", &LuaPlayer::DurabilityPointLossForEquipSlot }, + { "DurabilityRepairAll", &LuaPlayer::DurabilityRepairAll }, + { "DurabilityRepair", &LuaPlayer::DurabilityRepair }, +#if defined(TBC) || defined(WOTLK) + { "ModifyHonorPoints", &LuaPlayer::ModifyHonorPoints }, + { "ModifyArenaPoints", &LuaPlayer::ModifyArenaPoints }, +#endif + { "LeaveBattleground", &LuaPlayer::LeaveBattleground }, + // {"BindToInstance", &LuaPlayer::BindToInstance}, // :BindToInstance() - UNDOCUMENTED - Binds the player to the current instance + { "UnbindInstance", &LuaPlayer::UnbindInstance }, + { "UnbindAllInstances", &LuaPlayer::UnbindAllInstances }, + { "RemoveFromBattlegroundRaid", &LuaPlayer::RemoveFromBattlegroundRaid }, +#if (!defined(TBC) && !defined(CLASSIC)) + { "ResetAchievements", &LuaPlayer::ResetAchievements }, +#endif + { "KickPlayer", &LuaPlayer::KickPlayer }, + { "LogoutPlayer", &LuaPlayer::LogoutPlayer }, + { "SendTrainerList", &LuaPlayer::SendTrainerList }, + { "SendListInventory", &LuaPlayer::SendListInventory }, + { "SendShowBank", &LuaPlayer::SendShowBank }, + { "SendTabardVendorActivate", &LuaPlayer::SendTabardVendorActivate }, + { "SendSpiritResurrect", &LuaPlayer::SendSpiritResurrect }, + { "SendTaxiMenu", &LuaPlayer::SendTaxiMenu }, + { "SendUpdateWorldState", &LuaPlayer::SendUpdateWorldState }, + { "RewardQuest", &LuaPlayer::RewardQuest }, + { "SendAuctionMenu", &LuaPlayer::SendAuctionMenu }, + { "SendShowMailBox", &LuaPlayer::SendShowMailBox }, + { "StartTaxi", &LuaPlayer::StartTaxi }, + { "GossipSendPOI", &LuaPlayer::GossipSendPOI }, + { "GossipAddQuests", &LuaPlayer::GossipAddQuests }, + { "SendQuestTemplate", &LuaPlayer::SendQuestTemplate }, + { "SpawnBones", &LuaPlayer::SpawnBones }, + { "RemovedInsignia", &LuaPlayer::RemovedInsignia }, + { "SendGuildInvite", &LuaPlayer::SendGuildInvite }, + { "Mute", &LuaPlayer::Mute }, + { "SummonPlayer", &LuaPlayer::SummonPlayer }, + { "SaveToDB", &LuaPlayer::SaveToDB }, + { "GroupInvite", &LuaPlayer::GroupInvite }, + { "GroupCreate", &LuaPlayer::GroupCreate }, + { "SendCinematicStart", &LuaPlayer::SendCinematicStart }, +#if !defined(CLASSIC) && !defined(TBC) + { "SendMovieStart", &LuaPlayer::SendMovieStart }, +#endif +#ifdef CLASSIC + { "UpdateHonor", &LuaPlayer::UpdateHonor }, + { "ResetHonor", &LuaPlayer::ResetHonor }, + { "ClearHonorInfo", &LuaPlayer::ClearHonorInfo }, +#endif + { "UpdatePlayerSetting", &LuaPlayer::UpdatePlayerSetting }, + + { NULL, NULL } +}; + +ElunaRegister CreatureMethods[] = +{ + // Getters + { "GetAITarget", &LuaCreature::GetAITarget }, + { "GetAITargets", &LuaCreature::GetAITargets }, + { "GetAITargetsCount", &LuaCreature::GetAITargetsCount }, + { "GetHomePosition", &LuaCreature::GetHomePosition }, + { "GetCorpseDelay", &LuaCreature::GetCorpseDelay }, + { "GetCreatureSpellCooldownDelay", &LuaCreature::GetCreatureSpellCooldownDelay }, + { "GetScriptId", &LuaCreature::GetScriptId }, + { "GetAIName", &LuaCreature::GetAIName }, + { "GetScriptName", &LuaCreature::GetScriptName }, +#ifndef AZEROTHCORE + { "GetAttackDistance", &LuaCreature::GetAttackDistance }, +#endif + { "GetAggroRange", &LuaCreature::GetAggroRange }, + { "GetDefaultMovementType", &LuaCreature::GetDefaultMovementType }, + { "GetRespawnDelay", &LuaCreature::GetRespawnDelay }, + { "GetWanderRadius", &LuaCreature::GetWanderRadius }, + { "GetCurrentWaypointId", &LuaCreature::GetCurrentWaypointId }, +#if defined(TRINITY) || AZEROTHCORE + { "GetWaypointPath", &LuaCreature::GetWaypointPath }, + { "GetLootMode", &LuaCreature::GetLootMode }, +#endif + { "GetLootRecipient", &LuaCreature::GetLootRecipient }, + { "GetLootRecipientGroup", &LuaCreature::GetLootRecipientGroup }, + { "GetNPCFlags", &LuaCreature::GetNPCFlags }, + { "GetUnitFlags", &LuaCreature::GetUnitFlags }, + { "GetUnitFlagsTwo", &LuaCreature::GetUnitFlagsTwo }, + { "GetExtraFlags", &LuaCreature::GetExtraFlags }, +#if defined(CLASSIC) || defined(TBC) || defined(WOTLK) + { "GetShieldBlockValue", &LuaCreature::GetShieldBlockValue }, +#endif + { "GetDBTableGUIDLow", &LuaCreature::GetDBTableGUIDLow }, + { "GetCreatureFamily", &LuaCreature::GetCreatureFamily }, + + // Setters +#if defined(TRINITY) || defined(AZEROTHCORE) + { "SetRegeneratingHealth", &LuaCreature::SetRegeneratingHealth }, +#endif + { "SetHover", &LuaCreature::SetHover }, + { "SetDisableGravity", &LuaCreature::SetDisableGravity }, + { "SetAggroEnabled", &LuaCreature::SetAggroEnabled }, + { "SetNoCallAssistance", &LuaCreature::SetNoCallAssistance }, + { "SetNoSearchAssistance", &LuaCreature::SetNoSearchAssistance }, + { "SetDefaultMovementType", &LuaCreature::SetDefaultMovementType }, + { "SetRespawnDelay", &LuaCreature::SetRespawnDelay }, + { "SetWanderRadius", &LuaCreature::SetWanderRadius }, + { "SetInCombatWithZone", &LuaCreature::SetInCombatWithZone }, + { "SetDisableReputationGain", &LuaCreature::SetDisableReputationGain }, +#if defined(TRINITY) || AZEROTHCORE + { "SetLootMode", &LuaCreature::SetLootMode }, +#endif + { "SetNPCFlags", &LuaCreature::SetNPCFlags }, + { "SetUnitFlags", &LuaCreature::SetUnitFlags }, + { "SetUnitFlagsTwo", &LuaCreature::SetUnitFlagsTwo }, +#if defined(TRINITY) || AZEROTHCORE + { "SetReactState", &LuaCreature::SetReactState }, +#endif + { "SetDeathState", &LuaCreature::SetDeathState }, + { "SetWalk", &LuaCreature::SetWalk }, + { "SetHomePosition", &LuaCreature::SetHomePosition }, + { "SetEquipmentSlots", &LuaCreature::SetEquipmentSlots }, + + // Boolean + { "IsRegeneratingHealth", &LuaCreature::IsRegeneratingHealth }, +#if defined(TRINITY) || defined(AZEROTHCORE) + { "IsDungeonBoss", &LuaCreature::IsDungeonBoss }, +#endif + { "IsWorldBoss", &LuaCreature::IsWorldBoss }, + { "IsRacialLeader", &LuaCreature::IsRacialLeader }, + { "IsCivilian", &LuaCreature::IsCivilian }, +#if defined(TRINITY) || AZEROTHCORE + { "IsTrigger", &LuaCreature::IsTrigger }, +#endif + { "IsGuard", &LuaCreature::IsGuard }, + { "IsElite", &LuaCreature::IsElite }, + { "IsInEvadeMode", &LuaCreature::IsInEvadeMode }, + { "HasCategoryCooldown", &LuaCreature::HasCategoryCooldown }, + { "CanWalk", &LuaCreature::CanWalk }, + { "CanSwim", &LuaCreature::CanSwim }, + { "CanAggro", &LuaCreature::CanAggro }, +#if defined(TRINITY) || AZEROTHCORE + { "CanStartAttack", &LuaCreature::CanStartAttack }, +#endif + { "HasSearchedAssistance", &LuaCreature::HasSearchedAssistance }, + { "IsTappedBy", &LuaCreature::IsTappedBy }, + { "HasLootRecipient", &LuaCreature::HasLootRecipient }, + { "CanAssistTo", &LuaCreature::CanAssistTo }, + { "IsTargetableForAttack", &LuaCreature::IsTargetableForAttack }, + { "CanCompleteQuest", &LuaCreature::CanCompleteQuest }, + { "IsReputationGainDisabled", &LuaCreature::IsReputationGainDisabled }, +#if defined(TRINITY) || AZEROTHCORE + { "IsDamageEnoughForLootingAndReward", &LuaCreature::IsDamageEnoughForLootingAndReward }, + { "HasLootMode", &LuaCreature::HasLootMode }, +#endif + { "HasSpell", &LuaCreature::HasSpell }, + { "HasQuest", &LuaCreature::HasQuest }, + { "HasSpellCooldown", &LuaCreature::HasSpellCooldown }, + { "CanFly", &LuaCreature::CanFly }, + + // Other + { "FleeToGetAssistance", &LuaCreature::FleeToGetAssistance }, + { "CallForHelp", &LuaCreature::CallForHelp }, + { "CallAssistance", &LuaCreature::CallAssistance }, + { "RemoveCorpse", &LuaCreature::RemoveCorpse }, + { "DespawnOrUnsummon", &LuaCreature::DespawnOrUnsummon }, + { "Respawn", &LuaCreature::Respawn }, + { "AttackStart", &LuaCreature::AttackStart }, +#if defined(TRINITY) || AZEROTHCORE + { "AddLootMode", &LuaCreature::AddLootMode }, + { "ResetLootMode", &LuaCreature::ResetLootMode }, + { "RemoveLootMode", &LuaCreature::RemoveLootMode }, +#endif + { "SaveToDB", &LuaCreature::SaveToDB }, + { "SelectVictim", &LuaCreature::SelectVictim }, + { "MoveWaypoint", &LuaCreature::MoveWaypoint }, + { "UpdateEntry", &LuaCreature::UpdateEntry }, + + { NULL, NULL } +}; + +ElunaRegister GameObjectMethods[] = +{ + // Getters + { "GetDisplayId", &LuaGameObject::GetDisplayId }, + { "GetGoState", &LuaGameObject::GetGoState }, + { "GetLootState", &LuaGameObject::GetLootState }, + { "GetLootRecipient", &LuaGameObject::GetLootRecipient }, + { "GetLootRecipientGroup", &LuaGameObject::GetLootRecipientGroup }, + { "GetDBTableGUIDLow", &LuaGameObject::GetDBTableGUIDLow }, + + // Setters + { "SetGoState", &LuaGameObject::SetGoState }, + { "SetLootState", &LuaGameObject::SetLootState }, + { "SetRespawnTime", &LuaGameObject::SetRespawnTime }, + + // Boolean + { "IsTransport", &LuaGameObject::IsTransport }, + // {"IsDestructible", &LuaGameObject::IsDestructible}, // :IsDestructible() - UNDOCUMENTED + { "IsActive", &LuaGameObject::IsActive }, + { "HasQuest", &LuaGameObject::HasQuest }, + { "IsSpawned", &LuaGameObject::IsSpawned }, + + // Other + { "RemoveFromWorld", &LuaGameObject::RemoveFromWorld }, + { "UseDoorOrButton", &LuaGameObject::UseDoorOrButton }, + { "Despawn", &LuaGameObject::Despawn }, + { "Respawn", &LuaGameObject::Respawn }, + { "SaveToDB", &LuaGameObject::SaveToDB }, + { "AddLoot", &LuaGameObject::AddLoot }, + + { NULL, NULL } +}; + +ElunaRegister ItemMethods[] = +{ + // Getters + { "GetOwnerGUID", &LuaItem::GetOwnerGUID }, + { "GetOwner", &LuaItem::GetOwner }, + { "GetCount", &LuaItem::GetCount }, + { "GetMaxStackCount", &LuaItem::GetMaxStackCount }, + { "GetSlot", &LuaItem::GetSlot }, + { "GetBagSlot", &LuaItem::GetBagSlot }, + { "GetEnchantmentId", &LuaItem::GetEnchantmentId }, + { "GetSpellId", &LuaItem::GetSpellId }, + { "GetSpellTrigger", &LuaItem::GetSpellTrigger }, + { "GetItemLink", &LuaItem::GetItemLink }, + { "GetClass", &LuaItem::GetClass }, + { "GetSubClass", &LuaItem::GetSubClass }, + { "GetName", &LuaItem::GetName }, + { "GetDisplayId", &LuaItem::GetDisplayId }, + { "GetQuality", &LuaItem::GetQuality }, + { "GetBuyCount", &LuaItem::GetBuyCount }, + { "GetBuyPrice", &LuaItem::GetBuyPrice }, + { "GetSellPrice", &LuaItem::GetSellPrice }, + { "GetInventoryType", &LuaItem::GetInventoryType }, + { "GetAllowableClass", &LuaItem::GetAllowableClass }, + { "GetAllowableRace", &LuaItem::GetAllowableRace }, + { "GetItemLevel", &LuaItem::GetItemLevel }, + { "GetRequiredLevel", &LuaItem::GetRequiredLevel }, +#ifdef WOTLK + { "GetStatsCount", &LuaItem::GetStatsCount }, +#endif + { "GetRandomProperty", &LuaItem::GetRandomProperty }, +#ifndef CLASSIC + { "GetRandomSuffix", &LuaItem::GetRandomSuffix }, +#endif + { "GetItemSet", &LuaItem::GetItemSet }, + { "GetBagSize", &LuaItem::GetBagSize }, + { "GetItemTemplate", &LuaItem::GetItemTemplate }, + + // Setters + { "SetOwner", &LuaItem::SetOwner }, + { "SetBinding", &LuaItem::SetBinding }, + { "SetCount", &LuaItem::SetCount }, + + // Boolean + { "IsSoulBound", &LuaItem::IsSoulBound }, +#if (!defined(TBC) && !defined(CLASSIC)) + { "IsBoundAccountWide", &LuaItem::IsBoundAccountWide }, +#endif + { "IsBoundByEnchant", &LuaItem::IsBoundByEnchant }, + { "IsNotBoundToPlayer", &LuaItem::IsNotBoundToPlayer }, + { "IsLocked", &LuaItem::IsLocked }, + { "IsBag", &LuaItem::IsBag }, +#ifndef CLASSIC + { "IsCurrencyToken", &LuaItem::IsCurrencyToken }, +#endif + { "IsNotEmptyBag", &LuaItem::IsNotEmptyBag }, + { "IsBroken", &LuaItem::IsBroken }, + { "CanBeTraded", &LuaItem::CanBeTraded }, + { "IsInTrade", &LuaItem::IsInTrade }, + { "IsInBag", &LuaItem::IsInBag }, + { "IsEquipped", &LuaItem::IsEquipped }, + { "HasQuest", &LuaItem::HasQuest }, + { "IsPotion", &LuaItem::IsPotion }, +#if defined(CLASSIC) || defined(TBC) || defined(WOTLK) + { "IsWeaponVellum", &LuaItem::IsWeaponVellum }, + { "IsArmorVellum", &LuaItem::IsArmorVellum }, +#endif + { "IsConjuredConsumable", &LuaItem::IsConjuredConsumable }, + //{"IsRefundExpired", &LuaItem::IsRefundExpired}, // :IsRefundExpired() - UNDOCUMENTED - Returns true if the item's refund time has expired + { "SetEnchantment", &LuaItem::SetEnchantment }, + { "ClearEnchantment", &LuaItem::ClearEnchantment }, + + // Other + { "SaveToDB", &LuaItem::SaveToDB }, + + { NULL, NULL } +}; + +ElunaRegister ItemTemplateMethods[] = +{ + { "GetItemId", &LuaItemTemplate::GetItemId }, + { "GetClass", &LuaItemTemplate::GetClass }, + { "GetSubClass", &LuaItemTemplate::GetSubClass }, + { "GetName", &LuaItemTemplate::GetName }, + { "GetDisplayId", &LuaItemTemplate::GetDisplayId }, + { "GetQuality", &LuaItemTemplate::GetQuality }, + { "GetFlags", &LuaItemTemplate::GetFlags }, + { "GetExtraFlags", &LuaItemTemplate::GetExtraFlags }, + { "GetBuyCount", &LuaItemTemplate::GetBuyCount }, + { "GetBuyPrice", &LuaItemTemplate::GetBuyPrice }, + { "GetSellPrice", &LuaItemTemplate::GetSellPrice }, + { "GetInventoryType", &LuaItemTemplate::GetInventoryType }, + { "GetAllowableClass", &LuaItemTemplate::GetAllowableClass }, + { "GetAllowableRace", &LuaItemTemplate::GetAllowableRace }, + { "GetItemLevel", &LuaItemTemplate::GetItemLevel }, + { "GetRequiredLevel", &LuaItemTemplate::GetRequiredLevel }, + { NULL, NULL } +}; + +ElunaRegister AuraMethods[] = +{ + // Getters + { "GetCaster", &LuaAura::GetCaster }, + { "GetCasterGUID", &LuaAura::GetCasterGUID }, + { "GetCasterLevel", &LuaAura::GetCasterLevel }, + { "GetDuration", &LuaAura::GetDuration }, + { "GetMaxDuration", &LuaAura::GetMaxDuration }, + { "GetAuraId", &LuaAura::GetAuraId }, + { "GetStackAmount", &LuaAura::GetStackAmount }, + { "GetOwner", &LuaAura::GetOwner }, + + // Setters + { "SetDuration", &LuaAura::SetDuration }, + { "SetMaxDuration", &LuaAura::SetMaxDuration }, + { "SetStackAmount", &LuaAura::SetStackAmount }, + + // Other + { "Remove", &LuaAura::Remove }, + + { NULL, NULL } +}; + +ElunaRegister SpellMethods[] = +{ + // Getters + { "GetCaster", &LuaSpell::GetCaster }, + { "GetCastTime", &LuaSpell::GetCastTime }, + { "GetEntry", &LuaSpell::GetEntry }, + { "GetDuration", &LuaSpell::GetDuration }, + { "GetPowerCost", &LuaSpell::GetPowerCost }, + { "GetTargetDest", &LuaSpell::GetTargetDest }, + { "GetTarget", &LuaSpell::GetTarget }, + + // Setters + { "SetAutoRepeat", &LuaSpell::SetAutoRepeat }, + + // Boolean + { "IsAutoRepeat", &LuaSpell::IsAutoRepeat }, + + // Other + { "Cancel", &LuaSpell::Cancel }, + { "Cast", &LuaSpell::Cast }, + { "Finish", &LuaSpell::Finish }, + + { NULL, NULL } +}; + +ElunaRegister QuestMethods[] = +{ + // Getters + { "GetId", &LuaQuest::GetId }, + { "GetLevel", &LuaQuest::GetLevel }, + // {"GetMaxLevel", &LuaQuest::GetMaxLevel}, // :GetMaxLevel() - UNDOCUMENTED - Returns the quest's max level + { "GetMinLevel", &LuaQuest::GetMinLevel }, + { "GetNextQuestId", &LuaQuest::GetNextQuestId }, + { "GetPrevQuestId", &LuaQuest::GetPrevQuestId }, + { "GetNextQuestInChain", &LuaQuest::GetNextQuestInChain }, + { "GetFlags", &LuaQuest::GetFlags }, + { "GetType", &LuaQuest::GetType }, + + // Boolean + { "HasFlag", &LuaQuest::HasFlag }, +#ifndef CLASSIC + { "IsDaily", &LuaQuest::IsDaily }, +#endif + { "IsRepeatable", &LuaQuest::IsRepeatable }, + + { NULL, NULL } +}; + +ElunaRegister GroupMethods[] = +{ + // Getters + { "GetMembers", &LuaGroup::GetMembers }, + { "GetLeaderGUID", &LuaGroup::GetLeaderGUID }, + { "GetGUID", &LuaGroup::GetGUID }, + { "GetMemberGroup", &LuaGroup::GetMemberGroup }, + { "GetMemberGUID", &LuaGroup::GetMemberGUID }, + { "GetMembersCount", &LuaGroup::GetMembersCount }, + { "GetGroupType", &LuaGroup::GetGroupType }, + + // Setters + { "SetLeader", &LuaGroup::SetLeader }, + { "SetMembersGroup", &LuaGroup::SetMembersGroup }, + { "SetTargetIcon", &LuaGroup::SetTargetIcon }, + { "SetMemberFlag", &LuaGroup::SetMemberFlag }, + + // Boolean + { "IsLeader", &LuaGroup::IsLeader }, + { "AddMember", &LuaGroup::AddMember }, + { "RemoveMember", &LuaGroup::RemoveMember }, + { "Disband", &LuaGroup::Disband }, + { "IsFull", &LuaGroup::IsFull }, + { "IsLFGGroup", &LuaGroup::IsLFGGroup }, + { "IsRaidGroup", &LuaGroup::IsRaidGroup }, + { "IsBGGroup", &LuaGroup::IsBGGroup }, + // {"IsBFGroup", &LuaGroup::IsBFGroup}, // :IsBFGroup() - UNDOCUMENTED - Returns true if the group is a battlefield group + { "IsMember", &LuaGroup::IsMember }, + { "IsAssistant", &LuaGroup::IsAssistant }, + { "SameSubGroup", &LuaGroup::SameSubGroup }, + { "HasFreeSlotSubGroup", &LuaGroup::HasFreeSlotSubGroup }, + + // Other + { "SendPacket", &LuaGroup::SendPacket }, + // {"ConvertToLFG", &LuaGroup::ConvertToLFG}, // :ConvertToLFG() - UNDOCUMENTED - Converts the group to an LFG group + { "ConvertToRaid", &LuaGroup::ConvertToRaid }, + + { NULL, NULL } +}; + +ElunaRegister GuildMethods[] = +{ + // Getters + { "GetMembers", &LuaGuild::GetMembers }, + { "GetLeader", &LuaGuild::GetLeader }, + { "GetLeaderGUID", &LuaGuild::GetLeaderGUID }, + { "GetId", &LuaGuild::GetId }, + { "GetName", &LuaGuild::GetName }, + { "GetMOTD", &LuaGuild::GetMOTD }, + { "GetInfo", &LuaGuild::GetInfo }, + { "GetMemberCount", &LuaGuild::GetMemberCount }, + + // Setters +#ifndef CLASSIC + { "SetBankTabText", &LuaGuild::SetBankTabText }, +#endif + { "SetMemberRank", &LuaGuild::SetMemberRank }, +#if defined(CLASSIC) || defined(TBC) || defined(WOTLK) + { "SetLeader", &LuaGuild::SetLeader }, +#endif + + // Other + { "SendPacket", &LuaGuild::SendPacket }, + { "SendPacketToRanked", &LuaGuild::SendPacketToRanked }, + { "Disband", &LuaGuild::Disband }, + { "AddMember", &LuaGuild::AddMember }, + { "DeleteMember", &LuaGuild::DeleteMember }, + + { NULL, NULL } +}; + +#ifndef CLASSIC +#ifndef TBC +ElunaRegister VehicleMethods[] = +{ + // Getters + { "GetOwner", &LuaVehicle::GetOwner }, + { "GetEntry", &LuaVehicle::GetEntry }, + { "GetPassenger", &LuaVehicle::GetPassenger }, + + // Boolean + { "IsOnBoard", &LuaVehicle::IsOnBoard }, + + // Other + { "AddPassenger", &LuaVehicle::AddPassenger }, + { "RemovePassenger", &LuaVehicle::RemovePassenger }, + + { NULL, NULL } +}; +#endif +#endif + +ElunaRegister QueryMethods[] = +{ + // Getters + { "GetColumnCount", &LuaQuery::GetColumnCount }, + { "GetRowCount", &LuaQuery::GetRowCount }, + { "GetRow", &LuaQuery::GetRow }, + { "GetBool", &LuaQuery::GetBool }, + { "GetUInt8", &LuaQuery::GetUInt8 }, + { "GetUInt16", &LuaQuery::GetUInt16 }, + { "GetUInt32", &LuaQuery::GetUInt32 }, + { "GetUInt64", &LuaQuery::GetUInt64 }, + { "GetInt8", &LuaQuery::GetInt8 }, + { "GetInt16", &LuaQuery::GetInt16 }, + { "GetInt32", &LuaQuery::GetInt32 }, + { "GetInt64", &LuaQuery::GetInt64 }, + { "GetFloat", &LuaQuery::GetFloat }, + { "GetDouble", &LuaQuery::GetDouble }, + { "GetString", &LuaQuery::GetString }, + + // Boolean + { "NextRow", &LuaQuery::NextRow }, + { "IsNull", &LuaQuery::IsNull }, + + { NULL, NULL } +}; + +ElunaRegister PacketMethods[] = +{ + // Getters + { "GetOpcode", &LuaPacket::GetOpcode }, + { "GetSize", &LuaPacket::GetSize }, + + // Setters + { "SetOpcode", &LuaPacket::SetOpcode }, + + // Readers + { "ReadByte", &LuaPacket::ReadByte }, + { "ReadUByte", &LuaPacket::ReadUByte }, + { "ReadShort", &LuaPacket::ReadShort }, + { "ReadUShort", &LuaPacket::ReadUShort }, + { "ReadLong", &LuaPacket::ReadLong }, + { "ReadULong", &LuaPacket::ReadULong }, + { "ReadGUID", &LuaPacket::ReadGUID }, + { "ReadString", &LuaPacket::ReadString }, + { "ReadFloat", &LuaPacket::ReadFloat }, + { "ReadDouble", &LuaPacket::ReadDouble }, + + // Writers + { "WriteByte", &LuaPacket::WriteByte }, + { "WriteUByte", &LuaPacket::WriteUByte }, + { "WriteShort", &LuaPacket::WriteShort }, + { "WriteUShort", &LuaPacket::WriteUShort }, + { "WriteLong", &LuaPacket::WriteLong }, + { "WriteULong", &LuaPacket::WriteULong }, + { "WriteGUID", &LuaPacket::WriteGUID }, + { "WriteString", &LuaPacket::WriteString }, + { "WriteFloat", &LuaPacket::WriteFloat }, + { "WriteDouble", &LuaPacket::WriteDouble }, + + { NULL, NULL } +}; + +ElunaRegister MapMethods[] = +{ + // Getters + { "GetName", &LuaMap::GetName }, + { "GetDifficulty", &LuaMap::GetDifficulty }, + { "GetInstanceId", &LuaMap::GetInstanceId }, + { "GetInstanceData", &LuaMap::GetInstanceData }, + { "GetPlayerCount", &LuaMap::GetPlayerCount }, + { "GetPlayers", &LuaMap::GetPlayers }, + { "GetMapId", &LuaMap::GetMapId }, + { "GetAreaId", &LuaMap::GetAreaId }, + { "GetHeight", &LuaMap::GetHeight }, + { "GetWorldObject", &LuaMap::GetWorldObject }, + + // Setters + { "SetWeather", &LuaMap::SetWeather }, + + // Boolean +#ifndef CLASSIC + { "IsArena", &LuaMap::IsArena }, +#endif + { "IsBattleground", &LuaMap::IsBattleground }, + { "IsDungeon", &LuaMap::IsDungeon }, + { "IsEmpty", &LuaMap::IsEmpty }, +#ifndef CLASSIC + { "IsHeroic", &LuaMap::IsHeroic }, +#endif + { "IsRaid", &LuaMap::IsRaid }, + + // Other + { "SaveInstanceData", &LuaMap::SaveInstanceData }, + + { NULL, NULL } +}; + +ElunaRegister CorpseMethods[] = +{ + // Getters + { "GetOwnerGUID", &LuaCorpse::GetOwnerGUID }, + { "GetGhostTime", &LuaCorpse::GetGhostTime }, + { "GetType", &LuaCorpse::GetType }, + + // Other + { "ResetGhostTime", &LuaCorpse::ResetGhostTime }, + { "SaveToDB", &LuaCorpse::SaveToDB }, + + { NULL, NULL } +}; + +ElunaRegister AuctionMethods[] = +{ + { NULL, NULL } +}; + +ElunaRegister BattleGroundMethods[] = +{ + // Getters + { "GetName", &LuaBattleGround::GetName }, + { "GetAlivePlayersCountByTeam", &LuaBattleGround::GetAlivePlayersCountByTeam }, + { "GetMap", &LuaBattleGround::GetMap }, + { "GetBonusHonorFromKillCount", &LuaBattleGround::GetBonusHonorFromKillCount }, +#ifndef AZEROTHCORE + { "GetBracketId", &LuaBattleGround::GetBracketId }, +#endif + { "GetEndTime", &LuaBattleGround::GetEndTime }, + { "GetFreeSlotsForTeam", &LuaBattleGround::GetFreeSlotsForTeam }, + { "GetInstanceId", &LuaBattleGround::GetInstanceId }, + { "GetMapId", &LuaBattleGround::GetMapId }, + { "GetTypeId", &LuaBattleGround::GetTypeId }, + { "GetMaxLevel", &LuaBattleGround::GetMaxLevel }, + { "GetMinLevel", &LuaBattleGround::GetMinLevel }, + { "GetMaxPlayers", &LuaBattleGround::GetMaxPlayers }, + { "GetMinPlayers", &LuaBattleGround::GetMinPlayers }, + { "GetMaxPlayersPerTeam", &LuaBattleGround::GetMaxPlayersPerTeam }, + { "GetMinPlayersPerTeam", &LuaBattleGround::GetMinPlayersPerTeam }, + { "GetWinner", &LuaBattleGround::GetWinner }, + { "GetStatus", &LuaBattleGround::GetStatus }, + + { NULL, NULL } +}; + +ElunaRegister ChatHandlerMethods[] = +{ + { "SendSysMessage", &LuaChatHandler::SendSysMessage }, + { "IsConsole", &LuaChatHandler::IsConsole }, + { "GetPlayer", &LuaChatHandler::GetPlayer }, + { "SendGlobalSysMessage", &LuaChatHandler::SendGlobalSysMessage }, + { "SendGlobalGMSysMessage", &LuaChatHandler::SendGlobalGMSysMessage }, + { "HasLowerSecurity", &LuaChatHandler::HasLowerSecurity }, + { "HasLowerSecurityAccount", &LuaChatHandler::HasLowerSecurityAccount }, + { "GetSelectedPlayer", &LuaChatHandler::GetSelectedPlayer }, + { "GetSelectedCreature", &LuaChatHandler::GetSelectedCreature }, + { "GetSelectedUnit", &LuaChatHandler::GetSelectedUnit }, + { "GetSelectedObject", &LuaChatHandler::GetSelectedObject }, + { "GetSelectedPlayerOrSelf", &LuaChatHandler::GetSelectedPlayerOrSelf }, + { "IsAvailable", &LuaChatHandler::IsAvailable }, + { "HasSentErrorMessage", &LuaChatHandler::HasSentErrorMessage }, + + { NULL, NULL } +}; + +ElunaRegister AchievementMethods[] = +{ + { "GetId", &LuaAchievement::GetId }, + { "GetName", &LuaAchievement::GetName }, + + { NULL, NULL } +}; + +ElunaRegister RollMethods[] = +{ + { "GetItemGUID", &LuaRoll::GetItemGUID }, + { "GetItemId", &LuaRoll::GetItemId }, + { "GetItemRandomPropId", &LuaRoll::GetItemRandomPropId }, + { "GetItemRandomSuffix", &LuaRoll::GetItemRandomSuffix }, + { "GetItemCount", &LuaRoll::GetItemCount }, + { "GetPlayerVote", &LuaRoll::GetPlayerVote }, + { "GetPlayerVoteGUIDs", &LuaRoll::GetPlayerVoteGUIDs }, + { "GetTotalPlayersRolling", &LuaRoll::GetTotalPlayersRolling }, + { "GetTotalNeed", &LuaRoll::GetTotalNeed }, + { "GetTotalGreed", &LuaRoll::GetTotalGreed }, + { "GetTotalPass", &LuaRoll::GetTotalPass }, + { "GetItemSlot", &LuaRoll::GetItemSlot }, + { "GetRollVoteMask", &LuaRoll::GetRollVoteMask }, + + { NULL, NULL } +}; + +#if (!defined(TBC) && !defined(CLASSIC)) +// fix compile error about accessing vehicle destructor +template<> int ElunaTemplate::CollectGarbage(lua_State* L) +{ + ASSERT(!manageMemory); + + // Get object pointer (and check type, no error) + ElunaObject* obj = Eluna::CHECKOBJ(L, 1, false); + delete obj; + return 0; +} +#endif + +// Template by Mud from http://stackoverflow.com/questions/4484437/lua-integer-type/4485511#4485511 +template<> int ElunaTemplate::Add(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) + Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Substract(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) - Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Multiply(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) * Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Divide(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) / Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Mod(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) % Eluna::CHECKVAL(L, 2)); return 1; } +// template<> int ElunaTemplate::UnaryMinus(lua_State* L) { Eluna::Push(L, -Eluna::CHECKVAL(L, 1)); return 1; } +template<> int ElunaTemplate::Equal(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) == Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Less(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) < Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::LessOrEqual(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) <= Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Pow(lua_State* L) +{ + Eluna::Push(L, static_cast(powl(static_cast(Eluna::CHECKVAL(L, 1)), static_cast(Eluna::CHECKVAL(L, 2))))); + return 1; +} +template<> int ElunaTemplate::ToString(lua_State* L) +{ + unsigned long long l = Eluna::CHECKVAL(L, 1); + std::ostringstream ss; + ss << l; + Eluna::Push(L, ss.str()); + return 1; +} + +template<> int ElunaTemplate::Add(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) + Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Substract(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) - Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Multiply(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) * Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Divide(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) / Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Mod(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) % Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::UnaryMinus(lua_State* L) { Eluna::Push(L, -Eluna::CHECKVAL(L, 1)); return 1; } +template<> int ElunaTemplate::Equal(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) == Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Less(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) < Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::LessOrEqual(lua_State* L) { Eluna::Push(L, Eluna::CHECKVAL(L, 1) <= Eluna::CHECKVAL(L, 2)); return 1; } +template<> int ElunaTemplate::Pow(lua_State* L) +{ + Eluna::Push(L, static_cast(powl(static_cast(Eluna::CHECKVAL(L, 1)), static_cast(Eluna::CHECKVAL(L, 2))))); + return 1; +} +template<> int ElunaTemplate::ToString(lua_State* L) +{ + long long l = Eluna::CHECKVAL(L, 1); + std::ostringstream ss; + ss << l; + Eluna::Push(L, ss.str()); + return 1; +} + +void RegisterFunctions(Eluna* E) +{ + ElunaGlobal::SetMethods(E, GlobalMethods); + + ElunaTemplate::Register(E, "Object"); + ElunaTemplate::SetMethods(E, ObjectMethods); + + ElunaTemplate::Register(E, "WorldObject"); + ElunaTemplate::SetMethods(E, ObjectMethods); + ElunaTemplate::SetMethods(E, WorldObjectMethods); + + ElunaTemplate::Register(E, "Unit"); + ElunaTemplate::SetMethods(E, ObjectMethods); + ElunaTemplate::SetMethods(E, WorldObjectMethods); + ElunaTemplate::SetMethods(E, UnitMethods); + + ElunaTemplate::Register(E, "Player"); + ElunaTemplate::SetMethods(E, ObjectMethods); + ElunaTemplate::SetMethods(E, WorldObjectMethods); + ElunaTemplate::SetMethods(E, UnitMethods); + ElunaTemplate::SetMethods(E, PlayerMethods); + + ElunaTemplate::Register(E, "Creature"); + ElunaTemplate::SetMethods(E, ObjectMethods); + ElunaTemplate::SetMethods(E, WorldObjectMethods); + ElunaTemplate::SetMethods(E, UnitMethods); + ElunaTemplate::SetMethods(E, CreatureMethods); + + ElunaTemplate::Register(E, "GameObject"); + ElunaTemplate::SetMethods(E, ObjectMethods); + ElunaTemplate::SetMethods(E, WorldObjectMethods); + ElunaTemplate::SetMethods(E, GameObjectMethods); + + ElunaTemplate::Register(E, "Corpse"); + ElunaTemplate::SetMethods(E, ObjectMethods); + ElunaTemplate::SetMethods(E, WorldObjectMethods); + ElunaTemplate::SetMethods(E, CorpseMethods); + + ElunaTemplate::Register(E, "Item"); + ElunaTemplate::SetMethods(E, ObjectMethods); + ElunaTemplate::SetMethods(E, ItemMethods); + + ElunaTemplate::Register(E, "ItemTemplate"); + ElunaTemplate::SetMethods(E, ItemTemplateMethods); + +#ifndef CLASSIC +#ifndef TBC + ElunaTemplate::Register(E, "Vehicle"); + ElunaTemplate::SetMethods(E, VehicleMethods); +#endif +#endif + + ElunaTemplate::Register(E, "Group"); + ElunaTemplate::SetMethods(E, GroupMethods); + + ElunaTemplate::Register(E, "Guild"); + ElunaTemplate::SetMethods(E, GuildMethods); + + ElunaTemplate::Register(E, "Aura"); + ElunaTemplate::SetMethods(E, AuraMethods); + + ElunaTemplate::Register(E, "Spell"); + ElunaTemplate::SetMethods(E, SpellMethods); + + ElunaTemplate::Register(E, "Quest"); + ElunaTemplate::SetMethods(E, QuestMethods); + + ElunaTemplate::Register(E, "Map"); + ElunaTemplate::SetMethods(E, MapMethods); + + ElunaTemplate::Register(E, "AuctionHouseEntry"); + ElunaTemplate::SetMethods(E, AuctionMethods); + + ElunaTemplate::Register(E, "BattleGround"); + ElunaTemplate::SetMethods(E, BattleGroundMethods); + + ElunaTemplate::Register(E, "ChatHandler"); + ElunaTemplate::SetMethods(E, ChatHandlerMethods); + + ElunaTemplate::Register(E, "WorldPacket", true); + ElunaTemplate::SetMethods(E, PacketMethods); + + ElunaTemplate::Register(E, "ElunaQuery", true); + ElunaTemplate::SetMethods(E, QueryMethods); + + ElunaTemplate::Register(E, "AchievementEntry"); + ElunaTemplate::SetMethods(E, AchievementMethods); + + ElunaTemplate::Register(E, "Roll"); + ElunaTemplate::SetMethods(E, RollMethods); + + ElunaTemplate::Register(E, "long long", true); + + ElunaTemplate::Register(E, "unsigned long long", true); +} diff --git a/modules/mod-eluna/src/LuaEngine/MapMethods.h b/modules/mod-eluna/src/LuaEngine/MapMethods.h new file mode 100644 index 0000000..aa85ecc --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/MapMethods.h @@ -0,0 +1,373 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef MAPMETHODS_H +#define MAPMETHODS_H + +#include "ElunaInstanceAI.h" + +/*** + * A game map, e.g. Azeroth, Eastern Kingdoms, the Molten Core, etc. + * + * Inherits all methods from: none + */ +namespace LuaMap +{ + +#ifndef CLASSIC + /** + * Returns `true` if the [Map] is an arena [BattleGround], `false` otherwise. + * + * @return bool isArena + */ + int IsArena(lua_State* L, Map* map) + { + Eluna::Push(L, map->IsBattleArena()); + return 1; + } +#endif + + /** + * Returns `true` if the [Map] is a non-arena [BattleGround], `false` otherwise. + * + * @return bool isBattleGround + */ + int IsBattleground(lua_State* L, Map* map) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, map->IsBattleground()); +#else + Eluna::Push(L, map->IsBattleGround()); +#endif + return 1; + } + + /** + * Returns `true` if the [Map] is a dungeon, `false` otherwise. + * + * @return bool isDungeon + */ + int IsDungeon(lua_State* L, Map* map) + { + Eluna::Push(L, map->IsDungeon()); + return 1; + } + + /** + * Returns `true` if the [Map] has no [Player]s, `false` otherwise. + * + * @return bool IsEmpty + */ + int IsEmpty(lua_State* L, Map* map) + { + Eluna::Push(L, map->IsEmpty()); + return 1; + } + +#ifndef CLASSIC + /** + * Returns `true` if the [Map] is a heroic, `false` otherwise. + * + * @return bool isHeroic + */ + int IsHeroic(lua_State* L, Map* map) + { + Eluna::Push(L, map->IsHeroic()); + return 1; + } +#endif + + /** + * Returns `true` if the [Map] is a raid, `false` otherwise. + * + * @return bool isRaid + */ + int IsRaid(lua_State* L, Map* map) + { + Eluna::Push(L, map->IsRaid()); + return 1; + } + + /** + * Returns the name of the [Map]. + * + * @return string mapName + */ + int GetName(lua_State* L, Map* map) + { + Eluna::Push(L, map->GetMapName()); + return 1; + } + + /** + * Returns the height of the [Map] at the given X and Y coordinates. + * + * In case of no height found nil is returned + * + * @param float x + * @param float y + * @return float z + */ + int GetHeight(lua_State* L, Map* map) + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); +#if (defined(TBC) || defined(CLASSIC)) + float z = map->GetHeight(x, y, MAX_HEIGHT); +#else + uint32 phasemask = Eluna::CHECKVAL(L, 4, 1); + float z = map->GetHeight(phasemask, x, y, MAX_HEIGHT); +#endif + if (z != INVALID_HEIGHT) + Eluna::Push(L, z); + return 1; + } + + /** + * Returns the difficulty of the [Map]. + * + * Always returns 0 if the expansion is pre-TBC. + * + * @return int32 difficulty + */ + int GetDifficulty(lua_State* L, Map* map) + { +#ifndef CLASSIC + Eluna::Push(L, map->GetDifficulty()); +#else + Eluna::Push(L, (Difficulty)0); +#endif + return 1; + } + + /** + * Returns the instance ID of the [Map]. + * + * @return uint32 instanceId + */ + int GetInstanceId(lua_State* L, Map* map) + { + Eluna::Push(L, map->GetInstanceId()); + return 1; + } + + /** + * Returns the player count currently on the [Map] (excluding GMs). + * + * @return uint32 playerCount + */ + int GetPlayerCount(lua_State* L, Map* map) + { + Eluna::Push(L, map->GetPlayersCountExceptGMs()); + return 1; + } + + /** + * Returns the ID of the [Map]. + * + * @return uint32 mapId + */ + int GetMapId(lua_State* L, Map* map) + { + Eluna::Push(L, map->GetId()); + return 1; + } + + /** + * Returns the area ID of the [Map] at the specified X, Y, and Z coordinates. + * + * @param float x + * @param float y + * @param float z + * @param uint32 phasemask = PHASEMASK_NORMAL + * @return uint32 areaId + */ + int GetAreaId(lua_State* L, Map* map) + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + float z = Eluna::CHECKVAL(L, 4); +#if defined TRINITY || defined AZEROTHCORE + float phasemask = Eluna::CHECKVAL(L, 5, PHASEMASK_NORMAL); + + Eluna::Push(L, map->GetAreaId(phasemask, x, y, z)); +#else + Eluna::Push(L, map->GetTerrain()->GetAreaId(x, y, z)); +#endif + return 1; + } + + /** + * Returns a [WorldObject] by its GUID from the map if it is spawned. + * + * @param ObjectGuid guid + * @return [WorldObject] object + */ + int GetWorldObject(lua_State* L, Map* map) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + +#if defined TRINITY || AZEROTHCORE + switch (guid.GetHigh()) + { + case HIGHGUID_PLAYER: + Eluna::Push(L, eObjectAccessor()GetPlayer(map, guid)); + break; + case HIGHGUID_TRANSPORT: + case HIGHGUID_MO_TRANSPORT: + case HIGHGUID_GAMEOBJECT: + Eluna::Push(L, map->GetGameObject(guid)); + break; + case HIGHGUID_VEHICLE: + case HIGHGUID_UNIT: + Eluna::Push(L, map->GetCreature(guid)); + break; + case HIGHGUID_PET: + Eluna::Push(L, map->GetPet(guid)); + break; + case HIGHGUID_DYNAMICOBJECT: + Eluna::Push(L, map->GetDynamicObject(guid)); + break; + case HIGHGUID_CORPSE: + Eluna::Push(L, map->GetCorpse(guid)); + break; + default: + break; + } +#else + Eluna::Push(L, map->GetWorldObject(guid)); +#endif + return 1; + } + + /** + * Sets the [Weather] type based on [WeatherType] and grade supplied. + * + * enum WeatherType + * { + * WEATHER_TYPE_FINE = 0, + * WEATHER_TYPE_RAIN = 1, + * WEATHER_TYPE_SNOW = 2, + * WEATHER_TYPE_STORM = 3, + * WEATHER_TYPE_THUNDERS = 86, + * WEATHER_TYPE_BLACKRAIN = 90 + * }; + * + * @param uint32 zone : id of the zone to set the weather for + * @param [WeatherType] type : the [WeatherType], see above available weather types + * @param float grade : the intensity/grade of the [Weather], ranges from 0 to 1 + */ + int SetWeather(lua_State* L, Map* map) + { + (void)map; // ensure that the variable is referenced in order to pass compiler checks + uint32 zoneId = Eluna::CHECKVAL(L, 2); + uint32 weatherType = Eluna::CHECKVAL(L, 3); + float grade = Eluna::CHECKVAL(L, 4); + +#if defined TRINITY + if (Weather * weather = map->GetOrGenerateZoneDefaultWeather(zoneId)) + weather->SetWeather((WeatherType)weatherType, grade); +#elif defined AZEROTHCORE + Weather* weather = WeatherMgr::FindWeather(zoneId); + if (!weather) + weather = WeatherMgr::AddWeather(zoneId); + if (weather) + weather->SetWeather((WeatherType)weatherType, grade); +#else + if (Weather::IsValidWeatherType(weatherType)) + map->SetWeather(zoneId, (WeatherType)weatherType, grade, false); +#endif + return 0; + } + + /** + * Gets the instance data table for the [Map], if it exists. + * + * The instance must be scripted using Eluna for this to succeed. + * If the instance is scripted in C++ this will return `nil`. + * + * @return table instance_data : instance data table, or `nil` + */ + int GetInstanceData(lua_State* L, Map* map) + { +#if defined TRINITY || AZEROTHCORE + ElunaInstanceAI* iAI = NULL; + if (InstanceMap* inst = map->ToInstanceMap()) + iAI = dynamic_cast(inst->GetInstanceScript()); +#else + ElunaInstanceAI* iAI = dynamic_cast(map->GetInstanceData()); +#endif + + if (iAI) + Eluna::GetEluna(L)->PushInstanceData(L, iAI, false); + else + Eluna::Push(L); // nil + + return 1; + } + + /** + * Saves the [Map]'s instance data to the database. + */ + int SaveInstanceData(lua_State* /*L*/, Map* map) + { +#if defined TRINITY || AZEROTHCORE + ElunaInstanceAI* iAI = NULL; + if (InstanceMap* inst = map->ToInstanceMap()) + iAI = dynamic_cast(inst->GetInstanceScript()); +#else + ElunaInstanceAI* iAI = dynamic_cast(map->GetInstanceData()); +#endif + + if (iAI) + iAI->SaveToDB(); + + return 0; + } + + /** + * Returns a table with all the current [Player]s in the map + * + * enum TeamId + * { + * TEAM_ALLIANCE = 0, + * TEAM_HORDE = 1, + * TEAM_NEUTRAL = 2 + * }; + * + * @param [TeamId] team : optional check team of the [Player], Alliance, Horde or Neutral (All) + * @return table mapPlayers + */ + int GetPlayers(lua_State* L, Map* map) + { + uint32 team = Eluna::CHECKVAL(L, 2, TEAM_NEUTRAL); + + lua_newtable(L); + int tbl = lua_gettop(L); + uint32 i = 0; + + Map::PlayerList const& players = map->GetPlayers(); + for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + { +#if defined TRINITY || AZEROTHCORE + Player* player = itr->GetSource(); +#else + Player* player = itr->getSource(); +#endif + if (!player) + continue; + if (player->GetSession() && (team >= TEAM_NEUTRAL || player->GetTeamId() == team)) + { + Eluna::Push(L, player); + lua_rawseti(L, tbl, ++i); + } + } + + lua_settop(L, tbl); + return 1; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/ObjectMethods.h b/modules/mod-eluna/src/LuaEngine/ObjectMethods.h new file mode 100644 index 0000000..d96fbdf --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ObjectMethods.h @@ -0,0 +1,477 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef OBJECTMETHODS_H +#define OBJECTMETHODS_H + +/*** + * A basic game object (either an [Item] or a [WorldObject]). + * + * Objects in MaNGOS/Trinity are stored an a giant block of "values". + * Subclasses of Object, like [WorldObject], extend the block with more data specific to that subclass. + * Further subclasses, like [Player], extend it even further. + * + * A detailed map of all the fields in this data block can be found in the UpdateFields.h file of your emulator + * (it varies depending on the expansion supported). + * + * The GetValue methods in this class (e.g. [Object:GetInt32Value]) provide low-level access to the data block. + * Other methods, like [Object:HasFlag] and [Object:GetScale], merely wrap the GetValue methods and provide a simpler interface. + * + * Inherits all methods from: none + */ +namespace LuaObject +{ + /** + * Returns `true` if the specified flag is set, otherwise `false`. + * + * @param uint16 index : the index of the flags data in the [Object] + * @param uint32 flag : the flag to check for in the flags data + * @return bool hasFlag + */ + int HasFlag(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + uint32 flag = Eluna::CHECKVAL(L, 3); + + Eluna::Push(L, obj->HasFlag(index, flag)); + return 1; + } + + /** + * Returns `true` if the [Object] has been added to its [Map], otherwise `false`. + * + * @return bool inWorld + */ + int IsInWorld(lua_State* L, Object* obj) + { + Eluna::Push(L, obj->IsInWorld()); + return 1; + } + + /** + * Returns 'true' if the [Object] is a player, 'false' otherwise. + * + * @return bool IsPlayer + */ + int IsPlayer(lua_State* L, Object* obj) + { +#ifdef AZEROTHCORE //AC-only + Eluna::Push(L, obj->IsPlayer()); +#endif + return 1; + } + + /** + * Returns the data at the specified index, casted to a signed 32-bit integer. + * + * @param uint16 index + * @return int32 value + */ + int GetInt32Value(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, obj->GetInt32Value(index)); + return 1; + } + + /** + * Returns the data at the specified index, casted to a unsigned 32-bit integer. + * + * @param uint16 index + * @return uint32 value + */ + int GetUInt32Value(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, obj->GetUInt32Value(index)); + return 1; + } + + /** + * Returns the data at the specified index, casted to a single-precision floating point value. + * + * @param uint16 index + * @return float value + */ + int GetFloatValue(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, obj->GetFloatValue(index)); + return 1; + } + + /** + * Returns the data at the specified index and offset, casted to an unsigned 8-bit integer. + * + * E.g. if you want the second byte at index 10, you would pass in 1 as the offset. + * + * @param uint16 index + * @param uint8 offset : should be 0, 1, 2, or 3 + * @return uint8 value + */ + int GetByteValue(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + uint8 offset = Eluna::CHECKVAL(L, 3); + Eluna::Push(L, obj->GetByteValue(index, offset)); + return 1; + } + + /** + * Returns the data at the specified index and offset, casted to a signed 16-bit integer. + * + * E.g. if you want the second half-word at index 10, you would pass in 1 as the offset. + * + * @param uint16 index + * @param uint8 offset : should be 0 or 1 + * @return uint16 value + */ + int GetUInt16Value(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + uint8 offset = Eluna::CHECKVAL(L, 3); + Eluna::Push(L, obj->GetUInt16Value(index, offset)); + return 1; + } + + /** + * Returns the scale/size of the [Object]. + * + * This affects the size of a [WorldObject] in-game, but [Item]s don't have a "scale". + * + * @return float scale + */ + int GetScale(lua_State* L, Object* obj) + { +#ifndef AZEROTHCORE + Eluna::Push(L, obj->GetObjectScale()); +#else + Eluna::Push(L, obj->GetFloatValue(OBJECT_FIELD_SCALE_X)); +#endif + return 1; + } + + /** + * Returns the entry of the [Object]. + * + * [Player]s do not have an "entry". + * + * @return uint32 entry + */ + int GetEntry(lua_State* L, Object* obj) + { + Eluna::Push(L, obj->GetEntry()); + return 1; + } + + /** + * Returns the GUID of the [Object]. + * + * GUID is an unique identifier for the object. + * + * However on MaNGOS and cMangos creatures and gameobjects inside different maps can share + * the same GUID but not on the same map. + * + * On TrinityCore this value is unique across all maps + * + * @return ObjectGuid guid + */ + int GetGUID(lua_State* L, Object* obj) + { + Eluna::Push(L, obj->GET_GUID()); + return 1; + } + + /** + * Returns the low-part of the [Object]'s GUID. + * + * On TrinityCore all low GUIDs are different for all objects of the same type. + * For example creatures in instances are assigned new GUIDs when the Map is created. + * + * On MaNGOS and cMaNGOS low GUIDs are unique only on the same map. + * For example creatures in instances use the same low GUID assigned for that spawn in the database. + * This is why to identify a creature you have to know the instanceId and low GUID. See [Map:GetIntstanceId] + * + * @return uint32 guidLow + */ + int GetGUIDLow(lua_State* L, Object* obj) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, obj->GetGUID().GetCounter()); +#else + Eluna::Push(L, obj->GetGUIDLow()); +#endif + return 1; + } + + /** + * Returns the TypeId of the [Object]. + * + * enum TypeID + * { + * TYPEID_OBJECT = 0, + * TYPEID_ITEM = 1, + * TYPEID_CONTAINER = 2, + * TYPEID_UNIT = 3, + * TYPEID_PLAYER = 4, + * TYPEID_GAMEOBJECT = 5, + * TYPEID_DYNAMICOBJECT = 6, + * TYPEID_CORPSE = 7 + * }; + * + * @return uint8 typeID + */ + int GetTypeId(lua_State* L, Object* obj) + { + Eluna::Push(L, obj->GetTypeId()); + return 1; + } + + /** + * Returns the data at the specified index, casted to an unsigned 64-bit integer. + * + * @param uint16 index + * @return uint64 value + */ + int GetUInt64Value(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, obj->GetUInt64Value(index)); + return 1; + } + + /** + * Sets the specified flag in the data value at the specified index. + * + * If the flag was already set, it remains set. + * + * To remove a flag, use [Object:RemoveFlag]. + * + * @param uint16 index + * @param uint32 value + */ + int SetFlag(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + uint32 flag = Eluna::CHECKVAL(L, 3); + + obj->SetFlag(index, flag); + return 0; + } + + /** + * Sets the data at the specified index to the given value, converted to a signed 32-bit integer. + * + * @param uint16 index + * @param int32 value + */ + int SetInt32Value(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + int32 value = Eluna::CHECKVAL(L, 3); + obj->SetInt32Value(index, value); + return 0; + } + + /** + * Sets the data at the specified index to the given value, converted to an unsigned 32-bit integer. + * + * @param uint16 index + * @param uint32 value + */ + int SetUInt32Value(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + uint32 value = Eluna::CHECKVAL(L, 3); + obj->SetUInt32Value(index, value); + return 0; + } + + /** + * Sets the data at the specified index to the given value, converted to an unsigned 32-bit integer. + * + * @param uint16 index + * @param uint32 value + */ + int UpdateUInt32Value(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + uint32 value = Eluna::CHECKVAL(L, 3); + obj->UpdateUInt32Value(index, value); + return 0; + } + + /** + * Sets the data at the specified index to the given value, converted to a single-precision floating point value. + * + * @param uint16 index + * @param float value + */ + int SetFloatValue(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + float value = Eluna::CHECKVAL(L, 3); + + obj->SetFloatValue(index, value); + return 0; + } + + /** + * Sets the data at the specified index and offset to the given value, converted to an unsigned 8-bit integer. + * + * @param uint16 index + * @param uint8 offset : should be 0, 1, 2, or 3 + * @param uint8 value + */ + int SetByteValue(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + uint8 offset = Eluna::CHECKVAL(L, 3); + uint8 value = Eluna::CHECKVAL(L, 4); + obj->SetByteValue(index, offset, value); + return 0; + } + + /** + * Sets the data at the specified index to the given value, converted to an unsigned 16-bit integer. + * + * @param uint16 index + * @param uint8 offset : should be 0 or 1 + * @param uint16 value + */ + int SetUInt16Value(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + uint8 offset = Eluna::CHECKVAL(L, 3); + uint16 value = Eluna::CHECKVAL(L, 4); + obj->SetUInt16Value(index, offset, value); + return 0; + } + + /** + * Sets the data at the specified index to the given value, converted to a signed 16-bit integer. + * + * @param uint16 index + * @param uint8 offset : should be 0 or 1 + * @param int16 value + */ + int SetInt16Value(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + uint8 offset = Eluna::CHECKVAL(L, 3); + int16 value = Eluna::CHECKVAL(L, 4); + obj->SetInt16Value(index, offset, value); + return 0; + } + + /** + * Sets the [Object]'s scale/size to the given value. + * + * @param float scale + */ + int SetScale(lua_State* L, Object* obj) + { + float size = Eluna::CHECKVAL(L, 2); + + obj->SetObjectScale(size); + return 0; + } + + /** + * Sets the data at the specified index to the given value, converted to an unsigned 64-bit integer. + * + * @param uint16 index + * @param uint64 value + */ + int SetUInt64Value(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + uint64 value = Eluna::CHECKVAL(L, 3); + obj->SetUInt64Value(index, value); + return 0; + } + + /** + * Removes a flag from the value at the specified index. + * + * @param uint16 index + * @param uint32 flag + */ + int RemoveFlag(lua_State* L, Object* obj) + { + uint16 index = Eluna::CHECKVAL(L, 2); + uint32 flag = Eluna::CHECKVAL(L, 3); + + obj->RemoveFlag(index, flag); + return 0; + } + + /** + * Attempts to convert the [Object] to a [Corpse]. + * + * If the [Object] is not a [Corpse], returns `nil`. + * + * @return [Corpse] corpse : the [Object] as a [Corpse], or `nil` + */ + int ToCorpse(lua_State* L, Object* obj) + { + Eluna::Push(L, obj->ToCorpse()); + return 1; + } + + /** + * Attempts to convert the [Object] to a [GameObject]. + * + * If the [Object] is not a [GameObject], returns `nil`. + * + * @return [GameObject] gameObject : the [Object] as a [GameObject], or `nil` + */ + int ToGameObject(lua_State* L, Object* obj) + { + Eluna::Push(L, obj->ToGameObject()); + return 1; + } + + /** + * Attempts to convert the [Object] to a [Unit]. + * + * If the [Object] is not a [Unit], returns `nil`. + * + * @return [Unit] unit : the [Object] as a [Unit], or `nil` + */ + int ToUnit(lua_State* L, Object* obj) + { + Eluna::Push(L, obj->ToUnit()); + return 1; + } + + /** + * Attempts to convert the [Object] to a [Creature]. + * + * If the [Object] is not a [Creature], returns `nil`. + * + * @return [Creature] creature : the [Object] as a [Creature], or `nil` + */ + int ToCreature(lua_State* L, Object* obj) + { + Eluna::Push(L, obj->ToCreature()); + return 1; + } + + /** + * Attempts to convert the [Object] to a [Player]. + * + * If the [Object] is not a [Player], returns `nil`. + * + * @return [Player] player : the [Object] as a [Player], or `nil` + */ + int ToPlayer(lua_State* L, Object* obj) + { + Eluna::Push(L, obj->ToPlayer()); + return 1; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/PacketHooks.cpp b/modules/mod-eluna/src/LuaEngine/PacketHooks.cpp new file mode 100644 index 0000000..d11f3fa --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/PacketHooks.cpp @@ -0,0 +1,139 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaIncludes.h" +#include "ElunaTemplate.h" + +using namespace Hooks; + +#define START_HOOK_SERVER(EVENT) \ + if (!IsEnabled())\ + return;\ + auto key = EventKey(EVENT);\ + if (!ServerEventBindings->HasBindingsFor(key))\ + return;\ + LOCK_ELUNA + +#define START_HOOK_PACKET(EVENT, OPCODE) \ + if (!IsEnabled())\ + return;\ + auto key = EntryKey(EVENT, OPCODE);\ + if (!PacketEventBindings->HasBindingsFor(key))\ + return;\ + LOCK_ELUNA + +bool Eluna::OnPacketSend(WorldSession* session, const WorldPacket& packet) +{ + bool result = true; + Player* player = NULL; + if (session) + player = session->GetPlayer(); + OnPacketSendAny(player, packet, result); + OnPacketSendOne(player, packet, result); + return result; +} +void Eluna::OnPacketSendAny(Player* player, const WorldPacket& packet, bool& result) +{ + START_HOOK_SERVER(SERVER_EVENT_ON_PACKET_SEND); + Push(new WorldPacket(packet)); + Push(player); + int n = SetupStack(ServerEventBindings, key, 2); + + while (n > 0) + { + int r = CallOneFunction(n--, 2, 1); + + if (lua_isboolean(L, r + 0) && !lua_toboolean(L, r + 0)) + result = false; + + lua_pop(L, 1); + } + + CleanUpStack(2); +} + +void Eluna::OnPacketSendOne(Player* player, const WorldPacket& packet, bool& result) +{ + START_HOOK_PACKET(PACKET_EVENT_ON_PACKET_SEND, packet.GetOpcode()); + Push(new WorldPacket(packet)); + Push(player); + int n = SetupStack(PacketEventBindings, key, 2); + + while (n > 0) + { + int r = CallOneFunction(n--, 2, 1); + + if (lua_isboolean(L, r + 0) && !lua_toboolean(L, r + 0)) + result = false; + + lua_pop(L, 1); + } + + CleanUpStack(2); +} + +bool Eluna::OnPacketReceive(WorldSession* session, WorldPacket& packet) +{ + bool result = true; + Player* player = NULL; + if (session) + player = session->GetPlayer(); + OnPacketReceiveAny(player, packet, result); + OnPacketReceiveOne(player, packet, result); + return result; +} + +void Eluna::OnPacketReceiveAny(Player* player, WorldPacket& packet, bool& result) +{ + START_HOOK_SERVER(SERVER_EVENT_ON_PACKET_RECEIVE); + Push(new WorldPacket(packet)); + Push(player); + int n = SetupStack(ServerEventBindings, key, 2); + + while (n > 0) + { + int r = CallOneFunction(n--, 2, 2); + + if (lua_isboolean(L, r + 0) && !lua_toboolean(L, r + 0)) + result = false; + + if (lua_isuserdata(L, r + 1)) + if (WorldPacket* data = CHECKOBJ(L, r + 1, false)) + packet = *data; + + lua_pop(L, 2); + } + + CleanUpStack(2); +} + +void Eluna::OnPacketReceiveOne(Player* player, WorldPacket& packet, bool& result) +{ + START_HOOK_PACKET(PACKET_EVENT_ON_PACKET_RECEIVE, packet.GetOpcode()); + Push(new WorldPacket(packet)); + Push(player); + int n = SetupStack(PacketEventBindings, key, 2); + + while (n > 0) + { + int r = CallOneFunction(n--, 2, 2); + + if (lua_isboolean(L, r + 0) && !lua_toboolean(L, r + 0)) + result = false; + + if (lua_isuserdata(L, r + 1)) + if (WorldPacket* data = CHECKOBJ(L, r + 1, false)) + packet = *data; + + lua_pop(L, 2); + } + + CleanUpStack(2); +} diff --git a/modules/mod-eluna/src/LuaEngine/PlayerHooks.cpp b/modules/mod-eluna/src/LuaEngine/PlayerHooks.cpp new file mode 100644 index 0000000..6d30434 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/PlayerHooks.cpp @@ -0,0 +1,700 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaIncludes.h" +#include "ElunaTemplate.h" + +using namespace Hooks; + +#define START_HOOK(EVENT) \ + if (!IsEnabled())\ + return;\ + auto key = EventKey(EVENT);\ + if (!PlayerEventBindings->HasBindingsFor(key))\ + return;\ + LOCK_ELUNA + +#define START_HOOK_WITH_RETVAL(EVENT, RETVAL) \ + if (!IsEnabled())\ + return RETVAL;\ + auto key = EventKey(EVENT);\ + if (!PlayerEventBindings->HasBindingsFor(key))\ + return RETVAL;\ + LOCK_ELUNA + +void Eluna::OnLearnTalents(Player* pPlayer, uint32 talentId, uint32 talentRank, uint32 spellid) +{ + START_HOOK(PLAYER_EVENT_ON_LEARN_TALENTS); + Push(pPlayer); + Push(talentId); + Push(talentRank); + Push(spellid); + CallAllFunctions(PlayerEventBindings, key); +} + +bool Eluna::OnCommand(ChatHandler& handler, const char* text) +{ + Player* player = handler.IsConsole() ? nullptr : handler.GetSession()->GetPlayer(); + // If from console, player is NULL + if (!player || player->GetSession()->GetSecurity() >= SEC_ADMINISTRATOR) + { + std::string reload = text; + std::transform(reload.begin(), reload.end(), reload.begin(), ::tolower); + if (reload.find("reload eluna") == 0) + { + ReloadEluna(); + return false; + } + } + + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_COMMAND, true); + Push(player); + Push(text); + Push(&handler); + return CallAllFunctionsBool(PlayerEventBindings, key, true); +} + +void Eluna::OnLootItem(Player* pPlayer, Item* pItem, uint32 count, ObjectGuid guid) +{ + START_HOOK(PLAYER_EVENT_ON_LOOT_ITEM); + Push(pPlayer); + Push(pItem); + Push(count); + Push(guid); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnLootMoney(Player* pPlayer, uint32 amount) +{ + START_HOOK(PLAYER_EVENT_ON_LOOT_MONEY); + Push(pPlayer); + Push(amount); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnFirstLogin(Player* pPlayer) +{ + START_HOOK(PLAYER_EVENT_ON_FIRST_LOGIN); + Push(pPlayer); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnRepop(Player* pPlayer) +{ + START_HOOK(PLAYER_EVENT_ON_REPOP); + Push(pPlayer); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnResurrect(Player* pPlayer) +{ + START_HOOK(PLAYER_EVENT_ON_RESURRECT); + Push(pPlayer); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnQuestAbandon(Player* pPlayer, uint32 questId) +{ + START_HOOK(PLAYER_EVENT_ON_QUEST_ABANDON); + Push(pPlayer); + Push(questId); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnEquip(Player* pPlayer, Item* pItem, uint8 bag, uint8 slot) +{ + START_HOOK(PLAYER_EVENT_ON_EQUIP); + Push(pPlayer); + Push(pItem); + Push(bag); + Push(slot); + CallAllFunctions(PlayerEventBindings, key); +} + +InventoryResult Eluna::OnCanUseItem(const Player* pPlayer, uint32 itemEntry) +{ + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_CAN_USE_ITEM, EQUIP_ERR_OK); + InventoryResult result = EQUIP_ERR_OK; + Push(pPlayer); + Push(itemEntry); + int n = SetupStack(PlayerEventBindings, key, 2); + + while (n > 0) + { + int r = CallOneFunction(n--, 2, 1); + + if (lua_isnumber(L, r)) + result = (InventoryResult)CHECKVAL(L, r); + + lua_pop(L, 1); + } + + CleanUpStack(2); + return result; +} +void Eluna::OnPlayerEnterCombat(Player* pPlayer, Unit* pEnemy) +{ + START_HOOK(PLAYER_EVENT_ON_ENTER_COMBAT); + Push(pPlayer); + Push(pEnemy); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnPlayerLeaveCombat(Player* pPlayer) +{ + START_HOOK(PLAYER_EVENT_ON_LEAVE_COMBAT); + Push(pPlayer); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnPVPKill(Player* pKiller, Player* pKilled) +{ + START_HOOK(PLAYER_EVENT_ON_KILL_PLAYER); + Push(pKiller); + Push(pKilled); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnCreatureKill(Player* pKiller, Creature* pKilled) +{ + START_HOOK(PLAYER_EVENT_ON_KILL_CREATURE); + Push(pKiller); + Push(pKilled); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnPlayerKilledByCreature(Creature* pKiller, Player* pKilled) +{ + START_HOOK(PLAYER_EVENT_ON_KILLED_BY_CREATURE); + Push(pKiller); + Push(pKilled); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnLevelChanged(Player* pPlayer, uint8 oldLevel) +{ + START_HOOK(PLAYER_EVENT_ON_LEVEL_CHANGE); + Push(pPlayer); + Push(oldLevel); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnFreeTalentPointsChanged(Player* pPlayer, uint32 newPoints) +{ + START_HOOK(PLAYER_EVENT_ON_TALENTS_CHANGE); + Push(pPlayer); + Push(newPoints); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnTalentsReset(Player* pPlayer, bool noCost) +{ + START_HOOK(PLAYER_EVENT_ON_TALENTS_RESET); + Push(pPlayer); + Push(noCost); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnMoneyChanged(Player* pPlayer, int32& amount) +{ + START_HOOK(PLAYER_EVENT_ON_MONEY_CHANGE); + Push(pPlayer); + Push(amount); + int amountIndex = lua_gettop(L); + int n = SetupStack(PlayerEventBindings, key, 2); + + while (n > 0) + { + int r = CallOneFunction(n--, 2, 1); + + if (lua_isnumber(L, r)) + { + amount = CHECKVAL(L, r); + // Update the stack for subsequent calls. + ReplaceArgument(amount, amountIndex); + } + + lua_pop(L, 1); + } + + CleanUpStack(2); +} + +void Eluna::OnGiveXP(Player* pPlayer, uint32& amount, Unit* pVictim, uint8 xpSource) +{ + START_HOOK(PLAYER_EVENT_ON_GIVE_XP); + Push(pPlayer); + Push(amount); + Push(pVictim); + Push(xpSource); + int amountIndex = lua_gettop(L) - 1; + int n = SetupStack(PlayerEventBindings, key, 4); + + while (n > 0) + { + int r = CallOneFunction(n--, 4, 1); + + if (lua_isnumber(L, r)) + { + amount = CHECKVAL(L, r); + // Update the stack for subsequent calls. + ReplaceArgument(amount, amountIndex); + } + + lua_pop(L, 1); + } + + CleanUpStack(4); +} + +bool Eluna::OnReputationChange(Player* pPlayer, uint32 factionID, int32& standing, bool incremental) +{ + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_REPUTATION_CHANGE, true); + bool result = true; + Push(pPlayer); + Push(factionID); + Push(standing); + Push(incremental); + int standingIndex = lua_gettop(L) - 1; + int n = SetupStack(PlayerEventBindings, key, 4); + + while (n > 0) + { + int r = CallOneFunction(n--, 4, 1); + + if (lua_isnumber(L, r)) + { + standing = CHECKVAL(L, r); + if (standing == -1) + result = false; + // Update the stack for subsequent calls. + ReplaceArgument(standing, standingIndex); + } + + lua_pop(L, 1); + } + + CleanUpStack(4); + return result; +} + +void Eluna::OnDuelRequest(Player* pTarget, Player* pChallenger) +{ + START_HOOK(PLAYER_EVENT_ON_DUEL_REQUEST); + Push(pTarget); + Push(pChallenger); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnDuelStart(Player* pStarter, Player* pChallenger) +{ + START_HOOK(PLAYER_EVENT_ON_DUEL_START); + Push(pStarter); + Push(pChallenger); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnDuelEnd(Player* pWinner, Player* pLoser, DuelCompleteType type) +{ + START_HOOK(PLAYER_EVENT_ON_DUEL_END); + Push(pWinner); + Push(pLoser); + Push(type); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnEmote(Player* pPlayer, uint32 emote) +{ + START_HOOK(PLAYER_EVENT_ON_EMOTE); + Push(pPlayer); + Push(emote); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnTextEmote(Player* pPlayer, uint32 textEmote, uint32 emoteNum, ObjectGuid guid) +{ + START_HOOK(PLAYER_EVENT_ON_TEXT_EMOTE); + Push(pPlayer); + Push(textEmote); + Push(emoteNum); + Push(guid); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnSpellCast(Player* pPlayer, Spell* pSpell, bool skipCheck) +{ + START_HOOK(PLAYER_EVENT_ON_SPELL_CAST); + Push(pPlayer); + Push(pSpell); + Push(skipCheck); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnLogin(Player* pPlayer) +{ + START_HOOK(PLAYER_EVENT_ON_LOGIN); + Push(pPlayer); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnLogout(Player* pPlayer) +{ + START_HOOK(PLAYER_EVENT_ON_LOGOUT); + Push(pPlayer); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnCreate(Player* pPlayer) +{ + START_HOOK(PLAYER_EVENT_ON_CHARACTER_CREATE); + Push(pPlayer); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnDelete(uint32 guidlow) +{ + START_HOOK(PLAYER_EVENT_ON_CHARACTER_DELETE); + Push(guidlow); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnSave(Player* pPlayer) +{ + START_HOOK(PLAYER_EVENT_ON_SAVE); + Push(pPlayer); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnBindToInstance(Player* pPlayer, Difficulty difficulty, uint32 mapid, bool permanent) +{ + START_HOOK(PLAYER_EVENT_ON_BIND_TO_INSTANCE); + Push(pPlayer); + Push(difficulty); + Push(mapid); + Push(permanent); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnUpdateArea(Player* pPlayer, uint32 oldArea, uint32 newArea) +{ + START_HOOK(PLAYER_EVENT_ON_UPDATE_AREA); + Push(pPlayer); + Push(oldArea); + Push(newArea); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnUpdateZone(Player* pPlayer, uint32 newZone, uint32 newArea) +{ + START_HOOK(PLAYER_EVENT_ON_UPDATE_ZONE); + Push(pPlayer); + Push(newZone); + Push(newArea); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnMapChanged(Player* player) +{ + START_HOOK(PLAYER_EVENT_ON_MAP_CHANGE); + Push(player); + CallAllFunctions(PlayerEventBindings, key); +} + +bool Eluna::OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg) +{ + if (lang == LANG_ADDON) + return OnAddonMessage(pPlayer, type, msg, NULL, NULL, NULL, NULL); + + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_CHAT, true); + bool result = true; + Push(pPlayer); + Push(msg); + Push(type); + Push(lang); + int n = SetupStack(PlayerEventBindings, key, 4); + + while (n > 0) + { + int r = CallOneFunction(n--, 4, 2); + + if (lua_isboolean(L, r + 0) && !lua_toboolean(L, r + 0)) + result = false; + + if (lua_isstring(L, r + 1)) + msg = std::string(lua_tostring(L, r + 1)); + + lua_pop(L, 2); + } + + CleanUpStack(4); + return result; +} + +bool Eluna::OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Group* pGroup) +{ + if (lang == LANG_ADDON) + return OnAddonMessage(pPlayer, type, msg, NULL, NULL, pGroup, NULL); + + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_GROUP_CHAT, true); + bool result = true; + Push(pPlayer); + Push(msg); + Push(type); + Push(lang); + Push(pGroup); + int n = SetupStack(PlayerEventBindings, key, 5); + + while (n > 0) + { + int r = CallOneFunction(n--, 5, 2); + + if (lua_isboolean(L, r + 0) && !lua_toboolean(L, r + 0)) + result = false; + + if (lua_isstring(L, r + 1)) + msg = std::string(lua_tostring(L, r + 1)); + + lua_pop(L, 2); + } + + CleanUpStack(5); + return result; +} + +bool Eluna::OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Guild* pGuild) +{ + if (lang == LANG_ADDON) + return OnAddonMessage(pPlayer, type, msg, NULL, pGuild, NULL, NULL); + + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_GUILD_CHAT, true); + bool result = true; + Push(pPlayer); + Push(msg); + Push(type); + Push(lang); + Push(pGuild); + int n = SetupStack(PlayerEventBindings, key, 5); + + while (n > 0) + { + int r = CallOneFunction(n--, 5, 2); + + if (lua_isboolean(L, r + 0) && !lua_toboolean(L, r + 0)) + result = false; + + if (lua_isstring(L, r + 1)) + msg = std::string(lua_tostring(L, r + 1)); + + lua_pop(L, 2); + } + + CleanUpStack(5); + return result; +} + +bool Eluna::OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Channel* pChannel) +{ + if (lang == LANG_ADDON) + return OnAddonMessage(pPlayer, type, msg, NULL, NULL, NULL, pChannel); + + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_CHANNEL_CHAT, true); + bool result = true; + Push(pPlayer); + Push(msg); + Push(type); + Push(lang); + Push(pChannel->IsConstant() ? static_cast(pChannel->GetChannelId()) : -static_cast(pChannel->GetChannelDBId())); + int n = SetupStack(PlayerEventBindings, key, 5); + + while (n > 0) + { + int r = CallOneFunction(n--, 5, 2); + + if (lua_isboolean(L, r + 0) && !lua_toboolean(L, r + 0)) + result = false; + + if (lua_isstring(L, r + 1)) + msg = std::string(lua_tostring(L, r + 1)); + + lua_pop(L, 2); + } + + CleanUpStack(5); + return result; +} + +bool Eluna::OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Player* pReceiver) +{ + if (lang == LANG_ADDON) + return OnAddonMessage(pPlayer, type, msg, pReceiver, NULL, NULL, NULL); + + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_WHISPER, true); + bool result = true; + Push(pPlayer); + Push(msg); + Push(type); + Push(lang); + Push(pReceiver); + int n = SetupStack(PlayerEventBindings, key, 5); + + while (n > 0) + { + int r = CallOneFunction(n--, 5, 2); + + if (lua_isboolean(L, r + 0) && !lua_toboolean(L, r + 0)) + result = false; + + if (lua_isstring(L, r + 1)) + msg = std::string(lua_tostring(L, r + 1)); + + lua_pop(L, 2); + } + + CleanUpStack(5); + return result; +} + +void Eluna::OnPetAddedToWorld(Player* player, Creature* pet) +{ + START_HOOK(PLAYER_EVENT_ON_PET_ADDED_TO_WORLD); + Push(player); + Push(pet); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnLearnSpell(Player* player, uint32 spellId) +{ + START_HOOK(PLAYER_EVENT_ON_LEARN_SPELL); + Push(player); + Push(spellId); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnAchiComplete(Player* player, AchievementEntry const* achievement) +{ + START_HOOK(PLAYER_EVENT_ON_ACHIEVEMENT_COMPLETE); + Push(player); + Push(achievement); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnFfaPvpStateUpdate(Player* player, bool hasFfaPvp) +{ + START_HOOK(PLAYER_EVENT_ON_FFAPVP_CHANGE); + Push(player); + Push(hasFfaPvp); + CallAllFunctions(PlayerEventBindings, key); +} + +bool Eluna::OnCanInitTrade(Player* player, Player* target) +{ + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_CAN_INIT_TRADE, true); + Push(player); + Push(target); + return CallAllFunctionsBool(PlayerEventBindings, key); +} + +bool Eluna::OnCanSendMail(Player* player, ObjectGuid receiverGuid, ObjectGuid mailbox, std::string& subject, std::string& body, uint32 money, uint32 cod, Item* item) +{ + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_CAN_SEND_MAIL, true); + Push(player); + Push(receiverGuid); + Push(mailbox); + Push(subject); + Push(body); + Push(money); + Push(cod); + Push(item); + return CallAllFunctionsBool(PlayerEventBindings, key); +} + +bool Eluna::OnCanJoinLfg(Player* player, uint8 roles, lfg::LfgDungeonSet& dungeons, const std::string& comment) +{ + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_CAN_JOIN_LFG, true); + Push(player); + Push(roles); + + lua_newtable(L); + int table = lua_gettop(L); + uint32 counter = 1; + for (uint32 dungeon : dungeons) + { + Eluna::Push(L, dungeon); + lua_rawseti(L, table, counter); + ++counter; + } + lua_settop(L, table); + ++push_counter; + + Push(comment); + return CallAllFunctionsBool(PlayerEventBindings, key); +} + +void Eluna::OnQuestRewardItem(Player* player, Item* item, uint32 count) +{ + START_HOOK(PLAYER_EVENT_ON_QUEST_REWARD_ITEM); + Push(player); + Push(item); + Push(count); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnCreateItem(Player* player, Item* item, uint32 count) +{ + START_HOOK(PLAYER_EVENT_ON_CREATE_ITEM); + Push(player); + Push(item); + Push(count); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnStoreNewItem(Player* player, Item* item, uint32 count) +{ + START_HOOK(PLAYER_EVENT_ON_STORE_NEW_ITEM); + Push(player); + Push(item); + Push(count); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnPlayerCompleteQuest(Player* player, Quest const* quest) +{ + START_HOOK(PLAYER_EVENT_ON_COMPLETE_QUEST); + Push(player); + Push(quest); + CallAllFunctions(PlayerEventBindings, key); +} + +bool Eluna::OnCanGroupInvite(Player* player, std::string& memberName) +{ + START_HOOK_WITH_RETVAL(PLAYER_EVENT_ON_CAN_GROUP_INVITE, true); + Push(player); + Push(memberName); + return CallAllFunctionsBool(PlayerEventBindings, key); +} + +void Eluna::OnGroupRollRewardItem(Player* player, Item* item, uint32 count, RollVote voteType, Roll* roll) +{ + START_HOOK(PLAYER_EVENT_ON_GROUP_ROLL_REWARD_ITEM); + Push(player); + Push(item); + Push(count); + Push(voteType); + Push(roll); + CallAllFunctions(PlayerEventBindings, key); +} + +void Eluna::OnBattlegroundDesertion(Player* player, const BattlegroundDesertionType type) +{ + START_HOOK(PLAYER_EVENT_ON_BG_DESERTION); + Push(player); + Push(type); + CallAllFunctions(PlayerEventBindings, key); +} diff --git a/modules/mod-eluna/src/LuaEngine/PlayerMethods.h b/modules/mod-eluna/src/LuaEngine/PlayerMethods.h new file mode 100644 index 0000000..c7737c6 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/PlayerMethods.h @@ -0,0 +1,4355 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef PLAYERMETHODS_H +#define PLAYERMETHODS_H + +#include "GameTime.h" + +/*** + * Inherits all methods from: [Object], [WorldObject], [Unit] + */ +namespace LuaPlayer +{ +#if (!defined(TBC) && !defined(CLASSIC)) + /** + * Returns `true` if the [Player] can Titan Grip, `false` otherwise. + * + * @return bool canTitanGrip + */ + int CanTitanGrip(lua_State* L, Player* player) + { + Eluna::Push(L, player->CanTitanGrip()); + return 1; + } + + /** + * Returns `true` if the [Player] has a talent by ID in specified spec, `false` otherwise. + * + * @param uint32 spellId : talent spellId to check + * @param uint8 spec : specified spec. 0 for primary, 1 for secondary. + * @return bool hasTalent + */ + int HasTalent(lua_State* L, Player* player) + { + uint32 spellId = Eluna::CHECKVAL(L, 2); +#ifdef MANGOS + uint8 maxSpecs = MAX_TALENT_SPEC_COUNT; +#else + uint8 maxSpecs = MAX_TALENT_SPECS; +#endif + uint8 spec = Eluna::CHECKVAL(L, 3); + if (spec >= maxSpecs) + return 1; + Eluna::Push(L, player->HasTalent(spellId, spec)); + return 1; + } + + /** + * Returns `true` if the [Player] has completed the specified achievement, `false` otherwise. + * + * @param uint32 achievementId + * @return bool hasAchieved + */ + int HasAchieved(lua_State* L, Player* player) + { + uint32 achievementId = Eluna::CHECKVAL(L, 2); +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, player->HasAchieved(achievementId)); +#else + Eluna::Push(L, player->GetAchievementMgr().HasAchievement(achievementId)); +#endif + return 1; + } + + /** + * Returns the progress of the [Player] for the specified achievement criteria. + * + * @param uint32 criteriaId + * @return uint32 progress : progress value or nil + */ + int GetAchievementCriteriaProgress(lua_State* L, Player* player) + { + uint32 criteriaId = Eluna::CHECKVAL(L, 2); + const AchievementCriteriaEntry* criteria = sAchievementCriteriaStore.LookupEntry(criteriaId); + CriteriaProgress* progress = player->GetAchievementMgr()->GetCriteriaProgress(criteria); + if (progress) + { + Eluna::Push(L, progress->counter); + } + else + { + Eluna::Push(L, (void*)nullptr); + } + return 1; + } +#endif + + /** + * Returns `true` if the [Player] has an active [Quest] by specific ID, `false` otherwise. + * + * @param uint32 questId + * @return bool hasQuest + */ + int HasQuest(lua_State* L, Player* player) + { + uint32 quest = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->IsActiveQuest(quest)); + return 1; + } + + /** + * Returns `true` if the [Player] has a skill by specific ID, `false` otherwise. + * + * @param uint32 skill + * @return bool hasSkill + */ + int HasSkill(lua_State* L, Player* player) + { + uint32 skill = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->HasSkill(skill)); + return 1; + } + + /** + * Returns `true` if the [Player] has a [Spell] by specific ID, `false` otherwise. + * + * @param uint32 spellId + * @return bool hasSpell + */ + int HasSpell(lua_State* L, Player* player) + { + uint32 id = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->HasSpell(id)); + return 1; + } + + /** + * Returns true if [Player] has specified login flag + * + * @param uint32 flag + * @return bool hasLoginFlag + */ + int HasAtLoginFlag(lua_State* L, Player* player) + { + uint32 flag = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->HasAtLoginFlag((AtLoginFlags)flag)); + return 1; + } + + /** + * Returns true if [Player] has [Quest] for [GameObject] + * + * @param int32 entry : entry of a [GameObject] + * @return bool hasQuest + */ + int HasQuestForGO(lua_State* L, Player* player) + { + int32 entry = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->HasQuestForGO(entry)); + return 1; + } + +#ifndef CLASSIC + /** + * Returns `true` if the [Player] has a title by specific ID, `false` otherwise. + * + * @param uint32 titleId + * @return bool hasTitle + */ + int HasTitle(lua_State* L, Player* player) + { + uint32 id = Eluna::CHECKVAL(L, 2); + CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id); + if (titleInfo) + Eluna::Push(L, player->HasTitle(titleInfo)); + return 1; + } +#endif + + /** + * Returns `true` if the [Player] has the given amount of item entry specified, `false` otherwise. + * + * @param uint32 itemId : entry of the item + * @param uint32 count = 1 : amount of items the player needs should have + * @param bool check_bank = false : determines if the item can be in player bank + * @return bool hasItem + */ + int HasItem(lua_State* L, Player* player) + { + uint32 itemId = Eluna::CHECKVAL(L, 2); + uint32 count = Eluna::CHECKVAL(L, 3, 1); + bool check_bank = Eluna::CHECKVAL(L, 4, false); + Eluna::Push(L, player->HasItemCount(itemId, count, check_bank)); + return 1; + } + + /** + * Returns `true` if the [Player] has a quest for the item entry specified, `false` otherwise. + * + * @param uint32 entry : entry of the item + * @return bool hasQuest + */ + int HasQuestForItem(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->HasQuestForItem(entry)); + return 1; + } + + /** + * Returns `true` if the [Player] can use the item or item entry specified, `false` otherwise. + * + * @proto canUse = (item) + * @proto canUse = (entry) + * @param [Item] item : an instance of an item + * @param uint32 entry : entry of the item + * @return bool canUse + */ + int CanUseItem(lua_State* L, Player* player) + { + Item* item = Eluna::CHECKOBJ(L, 2, false); + if (item) + Eluna::Push(L, player->CanUseItem(item) == EQUIP_ERR_OK); + else + { + uint32 entry = Eluna::CHECKVAL(L, 2); + const ItemTemplate* temp = eObjectMgr->GetItemTemplate(entry); + if (temp) + Eluna::Push(L, player->CanUseItem(temp) == EQUIP_ERR_OK); + else + Eluna::Push(L, false); + } + return 1; + } + + /** + * Returns `true` if the [Spell] specified by ID is currently on cooldown for the [Player], `false` otherwise. + * + * @param uint32 spellId + * @return bool hasSpellCooldown + */ + int HasSpellCooldown(lua_State* L, Player* player) + { + uint32 spellId = Eluna::CHECKVAL(L, 2); + +#ifdef TRINITY + Eluna::Push(L, player->GetSpellHistory()->HasCooldown(spellId)); +#else + Eluna::Push(L, player->HasSpellCooldown(spellId)); +#endif + return 1; + } + + /** + * Returns `true` if the [Player] can share [Quest] specified by ID, `false` otherwise. + * + * @param uint32 entryId + * @return bool hasSpellCooldown + */ + int CanShareQuest(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->CanShareQuest(entry)); + return 1; + } + + /** + * Returns `true` if the [Player] can currently communicate through chat, `false` otherwise. + * + * @return bool canSpeak + */ + int CanSpeak(lua_State* L, Player* player) + { +#ifdef TRINITY + Eluna::Push(L, player->GetSession()->CanSpeak()); +#else + Eluna::Push(L, player->CanSpeak()); +#endif + return 1; + } + + /** + * Returns `true` if the [Player] has permission to uninvite others from the current group, `false` otherwise. + * + * @return bool canUninviteFromGroup + */ + int CanUninviteFromGroup(lua_State* L, Player* player) + { + Eluna::Push(L, player->CanUninviteFromGroup() == ERR_PARTY_RESULT_OK); + return 1; + } + +#ifndef CLASSIC + /** + * Returns `true` if the [Player] can fly, `false` otherwise. + * + * @return bool canFly + */ + int CanFly(lua_State* L, Player* player) + { + Eluna::Push(L, player->CanFly()); + return 1; + } +#endif + +#ifdef CLASSIC + /** + * Returns [Player] kills + * + * @param bool honorable = true : if victims are honorable + * @return uint32 kills + */ + int GetHonorStoredKills(lua_State* L, Player* player) + { + bool honorable = Eluna::CHECKVAL(L, 2, true); + + Eluna::Push(L, player->GetHonorStoredKills(honorable)); + return 1; + } + + /** + * Returns rank points + * + * @return float rankPoints + */ + int GetRankPoints(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetRankPoints()); + return 1; + } + + /** + * Returns last week's standing position + * + * @return int32 standingPos + */ + int GetHonorLastWeekStandingPos(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetHonorLastWeekStandingPos()); + return 1; + } +#endif + + /** + * Returns `true` if the [Player] is currently in water, `false` otherwise. + * + * @return bool isInWater + */ + int IsInWater(lua_State* L, Player* player) + { + Eluna::Push(L, player->IsInWater()); + return 1; + } + + /** + * Returns `true` if the [Player] is currently moving, `false` otherwise. + * + * @return bool isMoving + */ + int IsMoving(lua_State* L, Player* player) // enable for unit when mangos support it + { + Eluna::Push(L, player->isMoving()); + return 1; + } + +#ifdef CLASSIC + /** + * Updates the [Player]s weekly honor status + */ + int UpdateHonor(lua_State* L, Player* player) + { + player->UpdateHonor(); + return 0; + } + + /** + * Resets the [Player]s weekly honor status + */ + int ResetHonor(lua_State* L, Player* player) + { + player->ResetHonor(); + return 0; + } + + /** + * Clears all of [Player]s weekly honor status + */ + int ClearHonorInfo(lua_State* L, Player* player) + { + player->ClearHonorInfo(); + return 0; + } +#endif + +#ifndef CLASSIC + /** + * Returns `true` if the [Player] is currently flying, `false` otherwise. + * + * @return bool isFlying + */ + int IsFlying(lua_State* L, Player* player) // enable for unit when mangos support it + { + Eluna::Push(L, player->IsFlying()); + return 1; + } +#endif + + /** + * Returns `true` if the [Player] is in a [Group], `false` otherwise. + * + * @return bool isInGroup + */ + int IsInGroup(lua_State* L, Player* player) + { + Eluna::Push(L, (player->GetGroup() != NULL)); + return 1; + } + + /** + * Returns `true` if the [Player] is in a [Guild], `false` otherwise. + * + * @return bool isInGuild + */ + int IsInGuild(lua_State* L, Player* player) + { + Eluna::Push(L, (player->GetGuildId() != 0)); + return 1; + } + + /** + * Returns `true` if the [Player] is a Game Master, `false` otherwise. + * + * Note: This is only true when GM tag is activated! For alternative see [Player:GetGMRank] + * + * @return bool isGM + */ + int IsGM(lua_State* L, Player* player) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, player->IsGameMaster()); +#else + Eluna::Push(L, player->isGameMaster()); +#endif + return 1; + } + +#ifndef CLASSIC + /** + * Returns `true` if the [Player] is in an arena team specified by type, `false` otherwise. + * + * @param uint32 type + * @return bool isInArenaTeam + */ + int IsInArenaTeam(lua_State* L, Player* player) + { + uint32 type = Eluna::CHECKVAL(L, 2); + if (type < MAX_ARENA_SLOT && player->GetArenaTeamId(type)) + Eluna::Push(L, true); + else + Eluna::Push(L, false); + return 1; + } +#endif + + /** + * Returns `true` if the [Player] is immune to everything. + * + * @return bool isImmune + */ + int IsImmuneToDamage(lua_State* L, Player* player) + { + Eluna::Push(L, player->isTotalImmune()); + return 1; + } + + /** + * Returns `true` if the [Player] satisfies all requirements to complete the quest entry. + * + * @param uint32 questId + * @return bool canCompleteRepeatableQuest + */ + int CanCompleteRepeatableQuest(lua_State* L, Player* player) + { + uint32 questId = Eluna::CHECKVAL(L, 2); + const Quest* quest = sObjectMgr->GetQuestTemplate(questId); // Retrieve the Quest object + if (!quest) + { + Eluna::Push(L, false); + return 1; + } + + Eluna::Push(L, player->CanCompleteRepeatableQuest(quest)); + return 1; + } + + /** + * Returns `true` if the [Player] satisfies all requirements to reward the quest entry. + * + * @param uint32 questId + * @return bool canRewardQuest + */ + int CanRewardQuest(lua_State* L, Player* player) + { + uint32 questId = Eluna::CHECKVAL(L, 2); + const Quest* quest = sObjectMgr->GetQuestTemplate(questId); // Retrieve the Quest object + if (!quest) + { + Eluna::Push(L, false); + return 1; + } + + Eluna::Push(L, player->CanRewardQuest(quest, true)); // Modify the second argument as needed + return 1; + } + + /** + * Returns `true` if the [Player] satisfies all requirements to complete the quest entry. + * + * @param uint32 entry + * @return bool canComplete + */ + int CanCompleteQuest(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->CanCompleteQuest(entry)); + return 1; + } + + /** + * Returns `true` if the [Player] is a part of the Horde faction, `false` otherwise. + * + * @return bool isHorde + */ + int IsHorde(lua_State* L, Player* player) + { +#ifdef AZEROTHCORE + Eluna::Push(L, (player->GetTeamId() == TEAM_HORDE)); +#else + Eluna::Push(L, (player->GetTeam() == HORDE)); +#endif + return 1; + } + + /** + * Returns `true` if the [Player] is a part of the Alliance faction, `false` otherwise. + * + * @return bool isAlliance + */ + int IsAlliance(lua_State* L, Player* player) + { +#ifdef AZEROTHCORE + Eluna::Push(L, (player->GetTeamId() == TEAM_ALLIANCE)); +#else + Eluna::Push(L, (player->GetTeam() == ALLIANCE)); +#endif + return 1; + } + + /** + * Returns `true` if the [Player] is 'Do Not Disturb' flagged, `false` otherwise. + * + * @return bool isDND + */ + int IsDND(lua_State* L, Player* player) + { + Eluna::Push(L, player->isDND()); + return 1; + } + + /** + * Returns `true` if the [Player] is 'Away From Keyboard' flagged, `false` otherwise. + * + * @return bool isAFK + */ + int IsAFK(lua_State* L, Player* player) + { + Eluna::Push(L, player->isAFK()); + return 1; + } + + /** + * Returns `true` if the [Player] is currently falling, `false` otherwise. + * + * @return bool isFalling + */ + int IsFalling(lua_State* L, Player* player) + { + Eluna::Push(L, player->IsFalling()); + return 1; + } + + int IsGroupVisibleFor(lua_State* L, Player* player) + { + Player* target = Eluna::CHECKOBJ(L, 2); + Eluna::Push(L, player->IsGroupVisibleFor(target)); + return 1; + } + + /** + * Returns `true` if the [Player] is currently in the same raid as another [Player] by object, `false` otherwise. + * + * @param [Player] player + * @return bool isInSameRaidWith + */ + int IsInSameRaidWith(lua_State* L, Player* player) + { + Player* target = Eluna::CHECKOBJ(L, 2); + Eluna::Push(L, player->IsInSameRaidWith(target)); + return 1; + } + + /** + * Returns `true` if the [Player] is currently in the same [Group] as another [Player] by object, `false` otherwise. + * + * @param [Player] player + * @return bool isInSameGroupWith + */ + int IsInSameGroupWith(lua_State* L, Player* player) + { + Player* target = Eluna::CHECKOBJ(L, 2); + Eluna::Push(L, player->IsInSameGroupWith(target)); + return 1; + } + + /** + * Returns `true` if the [Player] is eligible for Honor or XP gain by [Unit] specified, `false` otherwise. + * + * @param [Unit] unit + * @return bool isHonorOrXPTarget + */ + int IsHonorOrXPTarget(lua_State* L, Player* player) + { + Unit* victim = Eluna::CHECKOBJ(L, 2); + + Eluna::Push(L, player->isHonorOrXPTarget(victim)); + return 1; + } + + /** + * Returns `true` if the [Player] can see anoter [Player] specified by object, `false` otherwise. + * + * @param [Player] player + * @return bool isVisibleForPlayer + */ + int IsVisibleForPlayer(lua_State* L, Player* player) + { + Player* target = Eluna::CHECKOBJ(L, 2); + + Eluna::Push(L, player->IsVisibleGloballyFor(target)); + return 1; + } + + int IsGMVisible(lua_State* L, Player* player) + { + Eluna::Push(L, player->isGMVisible()); + return 1; + } + + /** + * Returns `true` if the [Player] has taxi cheat activated, `false` otherwise. + * + * @return bool isTaxiCheater + */ + int IsTaxiCheater(lua_State* L, Player* player) + { +#ifdef MANGOS + Eluna::Push(L, player->IsTaxiCheater()); +#else + Eluna::Push(L, player->isTaxiCheater()); +#endif + return 1; + } + + int IsGMChat(lua_State* L, Player* player) + { + Eluna::Push(L, player->isGMChat()); + return 1; + } + + /** + * Returns `true` if the [Player] is accepting whispers, `false` otherwise. + * + * @return bool isAcceptingWhispers + */ + int IsAcceptingWhispers(lua_State* L, Player* player) + { + Eluna::Push(L, player->isAcceptWhispers()); + return 1; + } + + /** + * Returns `true` if the [Player] is currently rested, `false` otherwise. + * + * @return bool isRested + */ + int IsRested(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetRestBonus() > 0.0f); + return 1; + } + + /** + * Returns `true` if the [Player] is currently in a [BattleGround] queue, `false` otherwise. + * + * @return bool inBattlegroundQueue + */ + int InBattlegroundQueue(lua_State* L, Player* player) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, player->InBattlegroundQueue()); +#else + Eluna::Push(L, player->InBattleGroundQueue()); +#endif + return 1; + } + +#ifndef CLASSIC + /** + * Returns `true` if the [Player] is currently in an arena, `false` otherwise. + * + * @return bool inArena + */ + int InArena(lua_State* L, Player* player) + { + Eluna::Push(L, player->InArena()); + return 1; + } +#endif + + /** + * Returns `true` if the [Player] is currently in a [BattleGround], `false` otherwise. + * + * @return bool inBattleGround + */ + int InBattleground(lua_State* L, Player* player) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, player->InBattleground()); +#else + Eluna::Push(L, player->InBattleGround()); +#endif + return 1; + } + + /** + * Returns `true` if the [Player] can block incomming attacks, `false` otherwise. + * + * @return bool canBlock + */ + int CanBlock(lua_State* L, Player* player) + { + Eluna::Push(L, player->CanBlock()); + return 1; + } + + /** + * Returns `true` if the [Player] can parry incomming attacks, `false` otherwise. + * + * @return bool canParry + */ + int CanParry(lua_State* L, Player* player) + { + Eluna::Push(L, player->CanParry()); + return 1; + } + + /*int HasReceivedQuestReward(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->IsQuestRewarded(entry)); + return 1; + }*/ + + /*int IsOutdoorPvPActive(lua_State* L, Player* player) + { + Eluna::Push(L, player->IsOutdoorPvPActive()); + return 1; + }*/ + + /*int IsImmuneToEnvironmentalDamage(lua_State* L, Player* player) + { + Eluna::Push(L, player->IsImmuneToEnvironmentalDamage()); + return 1; + }*/ + + /*int InRandomLfgDungeon(lua_State* L, Player* player) + { + Eluna::Push(L, player->inRandomLfgDungeon()); + return 1; + }*/ + + /*int IsUsingLfg(lua_State* L, Player* player) + { + Eluna::Push(L, player->isUsingLfg()); + return 1; + }*/ + + /*int IsNeverVisible(lua_State* L, Player* player) + { + Eluna::Push(L, player->IsNeverVisible()); + return 1; + }*/ + + /*int CanFlyInZone(lua_State* L, Player* player) + { + uint32 mapid = Eluna::CHECKVAL(L, 2); + uint32 zone = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->IsKnowHowFlyIn(mapid, zone)); + return 1; + }*/ + + /*int HasPendingBind(lua_State* L, Player* player) + { + Eluna::Push(L, player->PendingHasPendingBind()); + return 1; + }*/ + + /*int IsARecruiter(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSession()->IsARecruiter() || (player->GetSession()->GetRecruiterId() != 0)); + return 1; + }*/ + +#if (!defined(TBC) && !defined(CLASSIC)) + /** + * Returns the amount of available specs the [Player] currently has + * + * @return uint8 specCount + */ + int GetSpecsCount(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSpecsCount()); + return 1; + } + + /** + * Returns the [Player]s active spec ID + * + * @return uint32 specId + */ + int GetActiveSpec(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetActiveSpec()); + return 1; + } +#endif + +#ifdef WOTLK + /** + * Returns the normal phase of the player instead of the actual phase possibly containing GM phase + * + * @return uint32 phasemask + */ + int GetPhaseMaskForSpawn(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetPhaseMaskForSpawn()); + return 1; + } +#endif + +#if defined(TBC) || defined (WOTLK) + /** + * Returns the [Player]s current amount of Arena Points + * + * @return uint32 arenaPoints + */ + int GetArenaPoints(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetArenaPoints()); + return 1; + } + + /** + * Returns the [Player]s current amount of Honor Points + * + * @return uint32 honorPoints + */ + int GetHonorPoints(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetHonorPoints()); + return 1; + } +#endif +#if defined(CLASSIC) || defined(TBC) || defined (WOTLK) + /** + * Returns the [Player]s current shield block value + * + * @return uint32 blockValue + */ + int GetShieldBlockValue(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetShieldBlockValue()); + return 1; + } +#endif + + /** + * Returns the [Player]s cooldown delay by specified [Spell] ID + * + * @param uint32 spellId + * @return uint32 spellCooldownDelay + */ + int GetSpellCooldownDelay(lua_State* L, Player* player) + { + uint32 spellId = Eluna::CHECKVAL(L, 2); + +#ifdef TRINITY + if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId)) + Eluna::Push(L, player->GetSpellHistory()->GetRemainingCooldown(spellInfo)); + else + Eluna::Push(L, 0); +#else + Eluna::Push(L, uint32(player->GetSpellCooldownDelay(spellId))); +#endif + return 1; + } + + /** + * Returns the [Player]s current latency in MS + * + * @return uint32 latency + */ + int GetLatency(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSession()->GetLatency()); + return 1; + } + +#if defined TRINITY || AZEROTHCORE + /** + * Returns the faction ID the [Player] is currently flagged as champion for + * + * @return uint32 championingFaction + */ + int GetChampioningFaction(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetChampioningFaction()); + return 1; + } +#endif + + /** + * Returns [Player]s original sub group + * + * @return uint8 subGroup + */ + int GetOriginalSubGroup(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetOriginalSubGroup()); + return 1; + } + + /** + * Returns [Player]s original [Group] object + * + * @return [Group] group + */ + int GetOriginalGroup(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetOriginalGroup()); + return 1; + } + + /** + * Returns a random Raid Member [Player] object within radius specified of [Player] + * + * @param float radius + * @return [Player] player + */ + int GetNextRandomRaidMember(lua_State* L, Player* player) + { + float radius = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetNextRandomRaidMember(radius)); + return 1; + } + + /** + * Returns [Player]s current sub group + * + * @return uint8 subGroup + */ + int GetSubGroup(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSubGroup()); + return 1; + } + + /** + * Returns [Group] invitation + * + * @return [Group] group + */ + int GetGroupInvite(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetGroupInvite()); + return 1; + } + + /** + * Returns the [Player]'s experience points + * + * @return uint32 xp + */ + int GetXP(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetUInt32Value(PLAYER_XP)); + return 1; + } + + /** + * Returns rested experience bonus + * + * @param uint32 xp + * @return uint32 xpBonus + */ + int GetXPRestBonus(lua_State* L, Player* player) + { + uint32 xp = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetXPRestBonus(xp)); + return 1; + } + + /** + * Returns the [Player]s current [BattleGround] type ID + * + * @return [BattleGroundTypeId] typeId + */ + int GetBattlegroundTypeId(lua_State* L, Player* player) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, player->GetBattlegroundTypeId()); +#else + Eluna::Push(L, player->GetBattleGroundTypeId()); +#endif + return 1; + } + + /** + * Returns the [Player]s current [BattleGround] ID + * + * @return uint32 battleGroundId + */ + int GetBattlegroundId(lua_State* L, Player* player) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, player->GetBattlegroundId()); +#else + Eluna::Push(L, player->GetBattleGroundId()); +#endif + return 1; + } + + /** + * Returns the [Player]s reputation rank of faction specified + * + * @param uint32 faction + * @return [ReputationRank] rank + */ + int GetReputationRank(lua_State* L, Player* player) + { + uint32 faction = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetReputationRank(faction)); + return 1; + } + + /** + * Returns the [Player]s current level of intoxication + * + * @return uint16 drunkValue + */ + int GetDrunkValue(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetDrunkValue()); + return 1; + } + + /** + * Returns skill temporary bonus value + * + * @param uint32 skill + * @param int16 bonusVal + */ + int GetSkillTempBonusValue(lua_State* L, Player* player) + { + uint32 skill = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetSkillTempBonusValue(skill)); + return 1; + } + + /** + * Returns skill permanent bonus value + * + * @param uint32 skill + * @param int16 bonusVal + */ + int GetSkillPermBonusValue(lua_State* L, Player* player) + { + uint32 skill = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetSkillPermBonusValue(skill)); + return 1; + } + + /** + * Returns skill value without bonus' + * + * @param uint32 skill + * @return uint16 pureVal + */ + int GetPureSkillValue(lua_State* L, Player* player) + { + uint32 skill = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetPureSkillValue(skill)); + return 1; + } + + /** + * Returns base skill value + * + * @param uint32 skill + * @return uint16 baseVal + */ + int GetBaseSkillValue(lua_State* L, Player* player) + { + uint32 skill = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetBaseSkillValue(skill)); + return 1; + } + + /** + * Returns skill value + * + * @param uint32 skill + * @return uint16 val + */ + int GetSkillValue(lua_State* L, Player* player) + { + uint32 skill = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetSkillValue(skill)); + return 1; + } + + /** + * Returns max value of specified skill without bonus' + * + * @param uint32 skill + * @return uint16 pureVal + */ + int GetPureMaxSkillValue(lua_State* L, Player* player) + { + uint32 skill = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetPureMaxSkillValue(skill)); + return 1; + } + + /** + * Returns max value of specified skill + * + * @param uint32 skill + * @return uint16 val + */ + int GetMaxSkillValue(lua_State* L, Player* player) + { + uint32 skill = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetMaxSkillValue(skill)); + return 1; + } + + /** + * Returns mana bonus from amount of intellect + * + * @return float bonus + */ + int GetManaBonusFromIntellect(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetManaBonusFromIntellect()); + return 1; + } + + /** + * Returns health bonus from amount of stamina + * + * @return float bonus + */ + int GetHealthBonusFromStamina(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetHealthBonusFromStamina()); + return 1; + } + + /** + * Returns raid or dungeon difficulty + * + * @param bool isRaid = true : argument is TrinityCore only + * @return int32 difficulty + */ + int GetDifficulty(lua_State* L, Player* player) + { +#ifdef TBC + Eluna::Push(L, player->GetDifficulty()); +#elif defined(CLASSIC) + Eluna::Push(L, (Difficulty)0); +#else + bool isRaid = Eluna::CHECKVAL(L, 2, true); + Eluna::Push(L, player->GetDifficulty(isRaid)); +#endif + return 1; + } + + /** + * Returns the [Player]s current guild rank + * + * @return uint32 guildRank + */ + int GetGuildRank(lua_State* L, Player* player) // TODO: Move to Guild Methods + { + Eluna::Push(L, player->GetRank()); + return 1; + } + + /** + * Returns the [Player]s free talent point amount + * + * @return uint32 freeTalentPointAmt + */ + int GetFreeTalentPoints(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetFreeTalentPoints()); + return 1; + } + + /** + * Returns the name of the [Player]s current [Guild] + * + * @return string guildName + */ + int GetGuildName(lua_State* L, Player* player) + { + if (!player->GetGuildId()) + return 1; + Eluna::Push(L, eGuildMgr->GetGuildNameById(player->GetGuildId())); + return 1; + } + + /** + * Returns the amount of reputation the [Player] has with the faction specified + * + * @param uint32 faction + * @return int32 reputationAmt + */ + int GetReputation(lua_State* L, Player* player) + { + uint32 faction = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetReputationMgr().GetReputation(faction)); + return 1; + } + + /** + * Returns [Unit] target combo points are on + * + * @return [Unit] target + */ + int GetComboTarget(lua_State* L, Player* player) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, player->GetComboTarget()); +#else + Eluna::Push(L, player->GetMap()->GetUnit(player->GetComboTargetGuid())); +#endif + return 1; + } + + /** + * Returns [Player]'s combo points + * + * @return uint8 comboPoints + */ + int GetComboPoints(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetComboPoints()); + return 1; + } + + /** + * Returns the amount of time the [Player] has spent ingame + * + * @return uint32 inGameTime + */ + int GetInGameTime(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetInGameTime()); + return 1; + } + + /** + * Returns the status of the [Player]s [Quest] specified by entry ID + * + * @param uint32 questId + * @return [QuestStatus] questStatus + */ + int GetQuestStatus(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetQuestStatus(entry)); + return 1; + } + + /** + * Returns `true` if the [Player]s [Quest] specified by entry ID has been rewarded, `false` otherwise. + * + * @param uint32 questId + * @return bool questRewardStatus + */ + int GetQuestRewardStatus(lua_State* L, Player* player) + { + uint32 questId = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetQuestRewardStatus(questId)); + return 1; + } + + /** + * Returns [Quest] required [Creature] or [GameObject] count + * + * @param uint32 quest : entry of a quest + * @param int32 entry : entry of required [Creature] + * @return uint16 count + */ + int GetReqKillOrCastCurrentCount(lua_State* L, Player* player) + { + uint32 questId = Eluna::CHECKVAL(L, 2); + int32 entry = Eluna::CHECKVAL(L, 3); + + Eluna::Push(L, player->GetReqKillOrCastCurrentCount(questId, entry)); + return 1; + } + + /** + * Returns the quest level of the [Player]s [Quest] specified by object + * + * @param uint32 questId + * @return [QuestStatus] questRewardStatus + */ + int GetQuestLevel(lua_State* L, Player* player) + { + Quest* quest = Eluna::CHECKOBJ(L, 2); + +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, player->GetQuestLevel(quest)); +#else + Eluna::Push(L, player->GetQuestLevelForPlayer(quest)); +#endif + return 1; + } + + /** + * Returns a [Player]s [Item] object by gear slot specified + * + * @param uint8 slot + * @return [Item] item + */ + int GetEquippedItemBySlot(lua_State* L, Player* player) + { + uint8 slot = Eluna::CHECKVAL(L, 2); + if (slot >= EQUIPMENT_SLOT_END) + return 1; + + Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot); + Eluna::Push(L, item); + return 1; + } + + /** + * Returns the [Player]s current resting bonus + * + * @return float restBonus + */ + int GetRestBonus(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetRestBonus()); + return 1; + } + + /** + * Returns active GM chat tag + * + * @return uint8 tag + */ + int GetChatTag(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetChatTag()); + return 1; + } + + /** + * Returns an item in given bag on given slot. + * + *
+     * Possible and most commonly used combinations:
+     *
+     * bag = 255
+     * slots 0-18 equipment
+     * slots 19-22 equipped bag slots
+     * slots 23-38 backpack
+     * slots 39-66 bank main slots
+     * slots 67-74 bank bag slots
+     * slots 86-117 keyring
+     *
+     * bag = 19-22
+     * slots 0-35 for equipped bags
+     *
+     * bag = 67-74
+     * slots 0-35 for bank bags
+     * 
+ * + * @param uint8 bag : the bag the [Item] is in, you can get this with [Item:GetBagSlot] + * @param uint8 slot : the slot the [Item] is in within the bag, you can get this with [Item:GetSlot] + * @return [Item] item : [Item] or nil + */ + int GetItemByPos(lua_State* L, Player* player) + { + uint8 bag = Eluna::CHECKVAL(L, 2); + uint8 slot = Eluna::CHECKVAL(L, 3); + + Eluna::Push(L, player->GetItemByPos(bag, slot)); + return 1; + } + + /** + * Returns an [Item] from the player by guid. + * + * The item can be equipped, in bags or in bank. + * + * @param ObjectGuid guid : an item guid + * @return [Item] item + */ + int GetItemByGUID(lua_State* L, Player* player) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetItemByGuid(guid)); + return 1; + } + + /** + * Returns the amount of mails in the player's mailbox. + * + * @return uint32 mailCount + */ + int GetMailCount(lua_State* L, Player* player) + { + const CharacterCacheEntry* cache = sCharacterCache->GetCharacterCacheByGuid(player->GetGUID()); + if (cache) + { + Eluna::Push(L, static_cast(cache->MailCount)); + } + else + { + Eluna::Push(L, player->GetMailSize()); + } + + return 1; + } + + /** + * Returns a mailed [Item] by guid. + * + * @param ObjectGuid guid : an item guid + * @return [Item] item + */ + int GetMailItem(lua_State* L, Player* player) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetMItem(guid.GetCounter())); + return 1; + } + + /** + * Returns an [Item] from the player by entry. + * + * The item can be equipped, in bags or in bank. + * + * @param uint32 entryId + * @return [Item] item + */ + int GetItemByEntry(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, player->GetItemByEntry(entry)); + return 1; + } + + /** + * Returns the database textID of the [WorldObject]'s gossip header text for the [Player] + * + * @param [WorldObject] object + * @return uint32 textId : key to npc_text database table + */ + int GetGossipTextId(lua_State* L, Player* player) + { + WorldObject* obj = Eluna::CHECKOBJ(L, 2); + Eluna::Push(L, player->GetGossipTextId(obj)); + return 1; + } + + /** + * Returns the [Player]s currently selected [Unit] object + * + * @return [Unit] unit + */ + int GetSelection(lua_State* L, Player* player) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, player->GetSelectedUnit()); +#else + Eluna::Push(L, player->GetMap()->GetUnit(player->GetSelectionGuid())); +#endif + return 1; + } + + /** + * Returns the [Player]s GM Rank + * + * @return [AccountTypes] gmRank + */ + int GetGMRank(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSession()->GetSecurity()); + return 1; + } + + /** + * Returns the [Player]s amount of money in copper + * + * @return uint32 coinage + */ + int GetCoinage(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetMoney()); + return 1; + } + + /** + * Returns the [Player]s current [Guild] ID + * + * @return uint32 guildId + */ + int GetGuildId(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetGuildId()); + return 1; + } + + /** + * Returns the [Player]s [TeamId] + * + * @return [TeamId] teamId + */ + int GetTeam(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetTeamId()); + return 1; + } + + /** + * Returns amount of the specified [Item] the [Player] has. + * + * @param uint32 entry : entry of the item + * @param bool checkinBank = false : also counts the items in player's bank if true + * @return uint32 itemamount + */ + int GetItemCount(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + bool checkinBank = Eluna::CHECKVAL(L, 3, false); + Eluna::Push(L, player->GetItemCount(entry, checkinBank)); + return 1; + } + + /** + * Returns the [Player]s lifetime Honorable Kills + * + * @return uint32 lifeTimeKils + */ + int GetLifetimeKills(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); + return 1; + } + + /** + * Returns the [Player]s IP address + * + * @return string ip + */ + int GetPlayerIP(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSession()->GetRemoteAddress()); + return 1; + } + + /** + * Returns the [Player]s time played at current level + * + * @return uint32 currLevelPlayTime + */ + int GetLevelPlayedTime(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetLevelPlayedTime()); + return 1; + } + + /** + * Returns the [Player]s total time played + * + * @return uint32 totalPlayTime + */ + int GetTotalPlayedTime(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetTotalPlayedTime()); + return 1; + } + + /** + * Returns the [Player]s [Guild] object + * + * @return [Guild] guild + */ + int GetGuild(lua_State* L, Player* player) + { + Eluna::Push(L, eGuildMgr->GetGuildById(player->GetGuildId())); + return 1; + } + + /** + * Returns the [Player]s [Group] object + * + * @return [Group] group + */ + int GetGroup(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetGroup()); + return 1; + } + + /** + * Returns the [Player]s account ID + * + * @return uint32 accountId + */ + int GetAccountId(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSession()->GetAccountId()); + return 1; + } + + /** + * Returns the [Player]s account name + * + * @return string accountName + */ + int GetAccountName(lua_State* L, Player* player) + { + std::string accName; +#ifndef AZEROTHCORE + if (eAccountMgr->GetName(player->GetSession()->GetAccountId(), accName)) +#else + if (AccountMgr::GetName(player->GetSession()->GetAccountId(), accName)) +#endif + Eluna::Push(L, accName); + return 1; + } + + /** + * Returns the [Player]s [Corpse] object + * + * @return [Corpse] corpse + */ + int GetCorpse(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetCorpse()); + return 1; + } + + /** + * Returns the [Player]s database locale index + * + * @return int localeIndex + */ + int GetDbLocaleIndex(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSession()->GetSessionDbLocaleIndex()); + return 1; + } + + /** + * Returns the [Player]s game client locale + * + * @return [LocaleConstant] locale + */ + int GetDbcLocale(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSession()->GetSessionDbcLocale()); + return 1; + } + + /*int GetRecruiterId(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSession()->GetRecruiterId()); + return 1; + }*/ + + /*int GetSelectedPlayer(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSelectedPlayer()); + return 1; + }*/ + + /*int GetSelectedUnit(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetSelectedUnit()); + return 1; + }*/ + + /*int GetNearbyGameObject(lua_State* L, Player* player) + { + Eluna::Push(L, ChatHandler(player->GetSession()).GetNearbyGameObject()); + return 1; + }*/ + + /** + * Locks the player controls and disallows all movement and casting. + * + * @param bool apply = true : lock if true and unlock if false + */ + int SetPlayerLock(lua_State* L, Player* player) + { + bool apply = Eluna::CHECKVAL(L, 2, true); + + if (apply) + { + player->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED | UNIT_FLAG_SILENCED); + player->SetClientControl(player, 0); + } + else + { + player->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED | UNIT_FLAG_SILENCED); + player->SetClientControl(player, 1); + } + return 0; + } + + /** + * Sets the [Player]s login flag to the flag specified + * + * @param uint32 flag + */ + int SetAtLoginFlag(lua_State* L, Player* player) + { + uint32 flag = Eluna::CHECKVAL(L, 2); + + player->SetAtLoginFlag((AtLoginFlags)flag); + return 0; + } + + /** + * Sets the [Player]s sheathe state to the state specified + * + * @param uint32 sheatheState + */ + int SetSheath(lua_State* L, Player* player) + { + uint32 sheathed = Eluna::CHECKVAL(L, 2); + if (sheathed >= MAX_SHEATH_STATE) + return 0; + + player->SetSheath((SheathState)sheathed); + return 0; + } + + /** + * Sets the [Player]s intoxication level to the level specified + * + * @param uint8 drunkValue + */ + int SetDrunkValue(lua_State* L, Player* player) + { + uint8 newDrunkValue = Eluna::CHECKVAL(L, 2); + + player->SetDrunkValue(newDrunkValue); + return 0; + } + + /** + * Sets the [Player]s faction standing to that of the race specified + * + * @param uint8 raceId + */ + int SetFactionForRace(lua_State* L, Player* player) + { + uint8 race = Eluna::CHECKVAL(L, 2); + +#if defined TRINITY || AZEROTHCORE + player->SetFactionForRace(race); +#else + player->setFactionForRace(race); +#endif + return 0; + } + + /** + * Sets (increases) skill of the [Player] + * + * @param uint16 id + * @param uint16 step + * @param uint16 currVal + * @param uint16 maxVal + */ + int SetSkill(lua_State* L, Player* player) + { + uint16 id = Eluna::CHECKVAL(L, 2); + uint16 step = Eluna::CHECKVAL(L, 3); + uint16 currVal = Eluna::CHECKVAL(L, 4); + uint16 maxVal = Eluna::CHECKVAL(L, 5); + +#ifdef TRINITY + player->SetSkill(id, step, currVal, maxVal); +#else + player->SetSkill(id, currVal, maxVal, step); +#endif + return 0; + } + + /** + * Sets the [Player]s guild rank to the rank specified + * + * @param uint8 rank + */ + int SetGuildRank(lua_State* L, Player* player) // TODO: Move to Guild Methods + { + uint8 rank = Eluna::CHECKVAL(L, 2); + + if (!player->GetGuildId()) + return 0; + + player->SetRank(rank); + return 0; + } + + /** + * Sets the [Player]s free talent points to the amount specified for the current spec + * + * @param uint32 talentPointAmt + */ + int SetFreeTalentPoints(lua_State* L, Player* player) + { + uint32 points = Eluna::CHECKVAL(L, 2); + + player->SetFreeTalentPoints(points); +#if (!defined(TBC) && !defined(CLASSIC)) + player->SendTalentsInfoData(false); +#endif + return 0; + } + + /** + * Sets the [Player]s reputation amount for the faction specified + * + * @param uint32 factionId + * @param int32 reputationValue + */ + int SetReputation(lua_State* L, Player* player) + { + uint32 faction = Eluna::CHECKVAL(L, 2); + int32 value = Eluna::CHECKVAL(L, 3); + + FactionEntry const* factionEntry = sFactionStore.LookupEntry(faction); + player->GetReputationMgr().SetReputation(factionEntry, value); + return 0; + } + + /** + * Sets [Quest] state + * + * @param uint32 entry : entry of a quest + * @param uint32 status + */ + int SetQuestStatus(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + uint32 status = Eluna::CHECKVAL(L, 3); + if (status >= MAX_QUEST_STATUS) + return 0; + + player->SetQuestStatus(entry, (QuestStatus)status); + return 0; + } + + /** + * Sets the [Player]s rest bonus to the amount specified + * + * @param float restBonus + */ + int SetRestBonus(lua_State* L, Player* player) + { + float bonus = Eluna::CHECKVAL(L, 2); + + player->SetRestBonus(bonus); + return 0; + } + + /** + * Toggles whether the [Player] accepts whispers or not + * + * @param bool acceptWhispers = true + */ + int SetAcceptWhispers(lua_State* L, Player* player) + { + bool on = Eluna::CHECKVAL(L, 2, true); + + player->SetAcceptWhispers(on); + return 0; + } + + /** + * Toggles PvP Death + * + * @param bool on = true + */ + int SetPvPDeath(lua_State* L, Player* player) + { + bool on = Eluna::CHECKVAL(L, 2, true); + + player->SetPvPDeath(on); + return 0; + } + + /** + * Toggles whether the [Player] has GM visibility on or off + * + * @param bool gmVisible = true + */ + int SetGMVisible(lua_State* L, Player* player) + { + bool on = Eluna::CHECKVAL(L, 2, true); + + player->SetGMVisible(on); + return 0; + } + + /** + * Toggles whether the [Player] has taxi cheat enabled or not + * + * @param bool taxiCheat = true + */ + int SetTaxiCheat(lua_State* L, Player* player) + { + bool on = Eluna::CHECKVAL(L, 2, true); + + player->SetTaxiCheater(on); + return 0; + } + + /** + * Toggle Blizz (GM) tag + * + * @param bool on = true + */ + int SetGMChat(lua_State* L, Player* player) + { + bool on = Eluna::CHECKVAL(L, 2, true); + + player->SetGMChat(on); + return 0; + } + + /** + * Toggles the [Player]s GM mode on or off + * + * @param bool setGmMode = true + */ + int SetGameMaster(lua_State* L, Player* player) + { + bool on = Eluna::CHECKVAL(L, 2, true); + + player->SetGameMaster(on); + return 0; + } + + /** + * Sets the [Player]s gender to gender specified + * + * - GENDER_MALE = 0 + * - GENDER_FEMALE = 1 + * + * @param [Gender] gender + */ + int SetGender(lua_State* L, Player* player) + { + uint32 _gender = Eluna::CHECKVAL(L, 2); + + Gender gender; + switch (_gender) + { + case 0: + gender = GENDER_MALE; + break; + case 1: + gender = GENDER_FEMALE; + break; + default: + return luaL_argerror(L, 2, "valid Gender expected"); + } + + player->SetByteValue(UNIT_FIELD_BYTES_0, 2, gender); + player->SetByteValue(PLAYER_BYTES_3, 0, gender); + player->InitDisplayIds(); + return 0; + } + +#if defined(TBC) || defined(WOTLK) + /** + * Sets the [Player]s Arena Points to the amount specified + * + * @param uint32 arenaPoints + */ + int SetArenaPoints(lua_State* L, Player* player) + { + uint32 arenaP = Eluna::CHECKVAL(L, 2); + player->SetArenaPoints(arenaP); + return 0; + } + + /** + * Sets the [Player]s Honor Points to the amount specified + * + * @param uint32 honorPoints + */ + int SetHonorPoints(lua_State* L, Player* player) + { + uint32 honorP = Eluna::CHECKVAL(L, 2); + player->SetHonorPoints(honorP); + return 0; + } +#endif + +#ifdef CLASSIC + /** + * Sets kills + * + * @param uint32 kills + * @param bool honorable = true : if victims were honorable + */ + int SetHonorStoredKills(lua_State* L, Player* player) + { + uint32 kills = Eluna::CHECKVAL(L, 2); + bool honorable = Eluna::CHECKVAL(L, 3, true); + + player->SetHonorStoredKills(kills, honorable); + return 0; + } + + /** + * Sets rank points + * + * @param float rankPoints + */ + int SetRankPoints(lua_State* L, Player* player) + { + float rankPoints = Eluna::CHECKVAL(L, 2); + + player->SetRankPoints(rankPoints); + return 0; + } + + /** + * Sets last week's honor standing position + * + * @param int32 standingPos + */ + int SetHonorLastWeekStandingPos(lua_State* L, Player* player) + { + int32 standingPos = Eluna::CHECKVAL(L, 2); + + player->SetHonorLastWeekStandingPos(standingPos); + return 0; + } +#endif + + /** + * Sets the [Player]s amount of Lifetime Honorable Kills to the value specified + * + * @param uint32 honorableKills + */ + int SetLifetimeKills(lua_State* L, Player* player) + { + uint32 val = Eluna::CHECKVAL(L, 2); + player->SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, val); + return 0; + } + + /** + * Sets the [Player]s amount of money to copper specified + * + * @param uint32 copperAmt + */ + int SetCoinage(lua_State* L, Player* player) + { + uint32 amt = Eluna::CHECKVAL(L, 2); + player->SetMoney(amt); + return 0; + } + + /** + * Sets the [Player]s home location to the location specified + * + * @param float x : X Coordinate + * @param float y : Y Coordinate + * @param float z : Z Coordinate + * @param uint32 mapId : Map ID + * @param uint32 areaId : Area ID + */ + int SetBindPoint(lua_State* L, Player* player) + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + float z = Eluna::CHECKVAL(L, 4); + uint32 mapId = Eluna::CHECKVAL(L, 5); + uint32 areaId = Eluna::CHECKVAL(L, 6); + + WorldLocation loc(mapId, x, y, z); +#if defined TRINITY || AZEROTHCORE + player->SetHomebind(loc, areaId); +#else + player->SetHomebindToLocation(loc, areaId); +#endif + return 0; + } + +#ifndef CLASSIC + /** + * Adds the specified title to the [Player]s list of known titles + * + * @param uint32 titleId + */ + int SetKnownTitle(lua_State* L, Player* player) + { + uint32 id = Eluna::CHECKVAL(L, 2); + CharTitlesEntry const* t = sCharTitlesStore.LookupEntry(id); + if (t) + player->SetTitle(t, false); + return 0; + } + + +#if defined(TRINITY) || defined(AZEROTHCORE) + /** + * Adds the specified achievement to the [Player]s + * + * @param uint32 achievementid + */ + int SetAchievement(lua_State* L, Player* player) + { + uint32 id = Eluna::CHECKVAL(L, 2); + AchievementEntry const* t = sAchievementStore.LookupEntry(id); + if (t) + player->CompletedAchievement(t); + return 0; + } +#endif + +#endif + +#if !defined TRINITY && !AZEROTHCORE + /** + * Toggle the [Player]s FFA flag + * + * @param bool applyFFA = true + */ + int SetFFA(lua_State* L, Player* player) + { + bool apply = Eluna::CHECKVAL(L, 2, true); + + player->SetFFAPvP(apply); + return 0; + } +#endif + + /*int SetMovement(lua_State* L, Player* player) + { + int32 pType = Eluna::CHECKVAL(L, 2); + + player->SetMovement((PlayerMovementType)pType); + return 0; + }*/ + +#if (!defined(TBC) && !defined(CLASSIC)) + /** + * Resets the [Player]s pets talent points + */ + int ResetPetTalents(lua_State* /*L*/, Player* player) + { +#ifndef TRINITY + Pet* pet = player->GetPet(); + Pet::resetTalentsForAllPetsOf(player, pet); + if (pet) + player->SendTalentsInfoData(true); +#else + player->ResetPetTalents(); + player->SendTalentsInfoData(true); +#endif + return 0; + } + + /** + * Reset the [Player]s completed achievements + */ + int ResetAchievements(lua_State* /*L*/, Player* player) + { +#if defined TRINITY || AZEROTHCORE + player->ResetAchievements(); +#else + player->GetAchievementMgr().Reset(); +#endif + return 0; + } +#endif + + /** + * Shows the mailbox window to the player from specified guid. + * + * @param ObjectGuid guid = playerguid : guid of the mailbox window sender + */ + int SendShowMailBox(lua_State* L, Player* player) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2, player->GET_GUID()); + +#if (defined(CLASSIC) || defined(TBC)) + WorldPacket data(CMSG_GET_MAIL_LIST, 8); + data << guid; + player->GetSession()->HandleGetMailList(data); +#else + player->GetSession()->SendShowMailBox(guid); +#endif + return 0; + } + +#if defined(TBC) || defined(WOTLK) + /** + * Adds or detracts from the [Player]s current Arena Points + * + * @param int32 amount + */ + int ModifyArenaPoints(lua_State* L, Player* player) + { + int32 amount = Eluna::CHECKVAL(L, 2); + + player->ModifyArenaPoints(amount); + return 0; + } + + /** + * Adds or detracts from the [Player]s current Honor Points + * + * @param int32 amount + */ + int ModifyHonorPoints(lua_State* L, Player* player) + { + int32 amount = Eluna::CHECKVAL(L, 2); + + player->ModifyHonorPoints(amount); + return 0; + } +#endif + + /** + * Saves the [Player] to the database + */ + int SaveToDB(lua_State* /*L*/, Player* player) + { +#ifndef AZEROTHCORE + player->SaveToDB(); +#else + player->SaveToDB(false, false); +#endif + return 0; + } + + /** + * Sends a summon request to the player from the given summoner + * + * @param [Unit] summoner + */ + int SummonPlayer(lua_State* L, Player* player) + { + Unit* summoner = Eluna::CHECKOBJ(L, 2); + +#ifdef TRINITY + player->SendSummonRequestFrom(summoner); +#else + float x, y, z; + summoner->GetPosition(x,y,z); + player->SetSummonPoint(summoner->GetMapId(), x, y, z); + + WorldPacket data(SMSG_SUMMON_REQUEST, 8 + 4 + 4); + data << summoner->GET_GUID(); + data << uint32(summoner->GetZoneId()); + data << uint32(MAX_PLAYER_SUMMON_DELAY * IN_MILLISECONDS); +#ifdef CMANGOS + player->GetSession()->SendPacket(data); +#else + player->GetSession()->SendPacket(&data); +#endif +#endif + return 0; + } + + /** + * Mutes the [Player] for the amount of seconds specified + * + * @param uint32 muteTime + */ + int Mute(lua_State* L, Player* player) + { + uint32 muteseconds = Eluna::CHECKVAL(L, 2); + /*const char* reason = luaL_checkstring(E, 2);*/ // Mangos does not have a reason field in database. + + time_t muteTime = GameTime::GetGameTime().count() + muteseconds; + player->GetSession()->m_muteTime = muteTime; + LoginDatabase.Execute("UPDATE account SET mutetime = {} WHERE id = {}", muteTime, player->GetSession()->GetAccountId()); + return 0; + } + + /** + * Rewards the given quest entry for the [Player] if he has completed it. + * + * @param uint32 entry : quest entry + */ + int RewardQuest(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + Quest const* quest = eObjectMgr->GetQuestTemplate(entry); + + // If player doesn't have the quest + if (!quest || player->GetQuestStatus(entry) != QUEST_STATUS_COMPLETE) + return 0; + + player->RewardQuest(quest, 0, player); + return 0; + } + + /** + * Sends an auction house window to the [Player] from the [Unit] specified + * + * @param [Unit] sender + */ + int SendAuctionMenu(lua_State* L, Player* player) + { + Unit* unit = Eluna::CHECKOBJ(L, 2); + +#if defined TRINITY || AZEROTHCORE + AuctionHouseEntry const* ahEntry = AuctionHouseMgr::GetAuctionHouseEntry(unit->GetFaction()); +#else + AuctionHouseEntry const* ahEntry = AuctionHouseMgr::GetAuctionHouseEntry(unit); +#endif + if (!ahEntry) + return 0; + + WorldPacket data(MSG_AUCTION_HELLO, 12); + data << unit->GET_GUID(); +#ifdef TRINITY + data << uint32(ahEntry->ID); +#else + data << uint32(ahEntry->houseId); +#endif + data << uint8(1); +#ifdef CMANGOS + player->GetSession()->SendPacket(data); +#else + player->GetSession()->SendPacket(&data); +#endif + return 0; + } + + /** + * Sends a flightmaster window to the [Player] from the [Creature] specified + * + * @param [Creature] sender + */ + int SendTaxiMenu(lua_State* L, Player* player) + { + Creature* creature = Eluna::CHECKOBJ(L, 2); + + player->GetSession()->SendTaxiMenu(creature); + return 0; + } + + /** + * Sends a spirit resurrection request to the [Player] + */ + int SendSpiritResurrect(lua_State* /*L*/, Player* player) + { + player->GetSession()->SendSpiritResurrect(); + return 0; + } + + /** + * Sends a tabard vendor window to the [Player] from the [WorldObject] specified + * + * @param [WorldObject] sender + */ + int SendTabardVendorActivate(lua_State* L, Player* player) + { + WorldObject* obj = Eluna::CHECKOBJ(L, 2); + + player->GetSession()->SendTabardVendorActivate(obj->GET_GUID()); + return 0; + } + + /** + * Sends a bank window to the [Player] from the [WorldObject] specified. + * + * @param [WorldObject] sender + */ + int SendShowBank(lua_State* L, Player* player) + { + WorldObject* obj = Eluna::CHECKOBJ(L, 2); + + player->GetSession()->SendShowBank(obj->GET_GUID()); + return 0; + } + + /** + * Sends a vendor window to the [Player] from the [WorldObject] specified. + * + * @param [WorldObject] sender + */ + int SendListInventory(lua_State* L, Player* player) + { + WorldObject* obj = Eluna::CHECKOBJ(L, 2); + uint32 vendorId = Eluna::CHECKVAL(L, 3, 0); + + player->GetSession()->SendListInventory(obj->GET_GUID(), vendorId); + return 0; + } + + /** + * Sends a trainer window to the [Player] from the [Creature] specified + * + * @param [Creature] sender + */ + int SendTrainerList(lua_State* L, Player* player) + { + Creature* obj = Eluna::CHECKOBJ(L, 2); + +#ifdef TRINITY + player->GetSession()->SendTrainerList(obj); +#else + player->GetSession()->SendTrainerList(obj->GET_GUID()); +#endif + return 0; + } + + /** + * Sends a guild invitation from the [Player]s [Guild] to the [Player] object specified + * + * @param [Player] invitee + */ + int SendGuildInvite(lua_State* L, Player* player) + { + Player* plr = Eluna::CHECKOBJ(L, 2); + +#if defined TRINITY || AZEROTHCORE + if (Guild* guild = player->GetGuild()) + guild->HandleInviteMember(player->GetSession(), plr->GetName()); +#else + player->GetSession()->SendGuildInvite(plr); +#endif + return 0; + } + + /** + * Sends an update for the world state to the [Player] + * + * @param uint32 field + * @param uint32 value + */ + int SendUpdateWorldState(lua_State* L, Player* player) + { + uint32 field = Eluna::CHECKVAL(L, 2); + uint32 value = Eluna::CHECKVAL(L, 3); + + player->SendUpdateWorldState(field, value); + return 0; + } + + /** + * Forces the [Player] to log out + * + * @param bool saveToDb = true + */ + int LogoutPlayer(lua_State* L, Player* player) + { + bool save = Eluna::CHECKVAL(L, 2, true); + + player->GetSession()->LogoutPlayer(save); + return 0; + } + + /** + * Forcefully removes the [Player] from a [BattleGround] raid group + */ + int RemoveFromBattlegroundRaid(lua_State* /*L*/, Player* player) + { +#if defined TRINITY || AZEROTHCORE + player->RemoveFromBattlegroundOrBattlefieldRaid(); +#else + player->RemoveFromBattleGroundRaid(); +#endif + return 0; + } + + /** + * Unbinds the [Player] from his instances except the one he currently is in. + * + * Difficulty is not used on classic. + * + * @param uint32 map = true + * @param uint32 difficulty = 0 + */ + int UnbindInstance(lua_State* L, Player* player) + { + uint32 map = Eluna::CHECKVAL(L, 2); +#ifndef CLASSIC + uint32 difficulty = Eluna::CHECKVAL(L, 3, 0); + + if (difficulty < MAX_DIFFICULTY) +#ifndef AZEROTHCORE + player->UnbindInstance(map, (Difficulty)difficulty); +#else + sInstanceSaveMgr->PlayerUnbindInstance(player->GetGUID(), map, Difficulty(difficulty), true, player); +#endif//AZEROTHCORE +#else//CLASSIC + player->UnbindInstance(map); +#endif + return 0; + } + + /** + * Unbinds the [Player] from his instances except the one he currently is in. + */ + int UnbindAllInstances(lua_State* /*L*/, Player* player) + { +#ifdef CLASSIC + Player::BoundInstancesMap& binds = player->GetBoundInstances(); + for (Player::BoundInstancesMap::iterator itr = binds.begin(); itr != binds.end();) + { + if (itr->first != player->GetMapId()) + player->UnbindInstance(itr); + else + ++itr; + } +#elif defined AZEROTHCORE + for (uint8 i = 0; i < MAX_DIFFICULTY; ++i) + { + const BoundInstancesMap& binds = sInstanceSaveMgr->PlayerGetBoundInstances(player->GetGUID(), Difficulty(i)); + for (BoundInstancesMap::const_iterator itr = binds.begin(); itr != binds.end();) + { + if (itr->first != player->GetMapId()) + { + sInstanceSaveMgr->PlayerUnbindInstance(player->GetGUID(), itr->first, Difficulty(i), true, player); + itr = binds.begin(); + } + else + { + ++itr; + } + } + } +#else + for (uint8 i = 0; i < MAX_DIFFICULTY; ++i) + { + Player::BoundInstancesMap& binds = player->GetBoundInstances(Difficulty(i)); + for (Player::BoundInstancesMap::iterator itr = binds.begin(); itr != binds.end();) + { + if (itr->first != player->GetMapId()) + player->UnbindInstance(itr, Difficulty(i)); + else + ++itr; + } + } +#endif + return 0; + } + + /** + * Forces the [Player] to leave a [BattleGround] + * + * @param bool teleToEntry = true + */ + int LeaveBattleground(lua_State* L, Player* player) + { + (void)L; // ensure that the variable is referenced in order to pass compiler checks +#ifndef AZEROTHCORE + bool teleToEntryPoint = Eluna::CHECKVAL(L, 2, true); + player->LeaveBattleground(teleToEntryPoint); +#else + player->LeaveBattleground(); +#endif + return 0; + } + + /** + * Repairs [Item] at specified position. + * + * @param uint16 position + * @param bool cost = true + * @param float discountMod = 1.0 + */ + int DurabilityRepair(lua_State* L, Player* player) + { + uint16 position = Eluna::CHECKVAL(L, 2); + bool takeCost = Eluna::CHECKVAL(L, 3, true); + float discountMod = Eluna::CHECKVAL(L, 4, 1.0f); + +#ifdef CLASSIC + player->DurabilityRepair(position, takeCost, discountMod); +#elif defined(TRINITY) + player->DurabilityRepair(position, takeCost, discountMod); +#else + player->DurabilityRepair(position, takeCost, discountMod, false); +#endif + return 0; + } + + /** + * Repairs all [Item]s. + * + * @param bool takeCost = true + * @param float discountMod = 1.0 + * @param bool guidBank = false + */ + int DurabilityRepairAll(lua_State* L, Player* player) + { + bool takeCost = Eluna::CHECKVAL(L, 2, true); + float discountMod = Eluna::CHECKVAL(L, 3, 1.0f); + bool guildBank = Eluna::CHECKVAL(L, 4, false); + +#ifdef CLASSIC + player->DurabilityRepairAll(takeCost, discountMod); +#else + player->DurabilityRepairAll(takeCost, discountMod, guildBank); +#endif + return 0; + } + + /** + * Sets durability loss for an [Item] in the specified slot + * + * @param int32 slot + */ + int DurabilityPointLossForEquipSlot(lua_State* L, Player* player) + { + int32 slot = Eluna::CHECKVAL(L, 2); + + if (slot >= EQUIPMENT_SLOT_START && slot < EQUIPMENT_SLOT_END) + player->DurabilityPointLossForEquipSlot((EquipmentSlots)slot); + return 0; + } + + /** + * Sets durability loss on all [Item]s equipped + * + * If inventory is true, sets durability loss for [Item]s in bags + * + * @param int32 points + * @param bool inventory = true + */ + int DurabilityPointsLossAll(lua_State* L, Player* player) + { + int32 points = Eluna::CHECKVAL(L, 2); + bool inventory = Eluna::CHECKVAL(L, 3, true); + + player->DurabilityPointsLossAll(points, inventory); + return 0; + } + + /** + * Sets durability loss for the specified [Item] + * + * @param [Item] item + * @param int32 points + */ + int DurabilityPointsLoss(lua_State* L, Player* player) + { + Item* item = Eluna::CHECKOBJ(L, 2); + int32 points = Eluna::CHECKVAL(L, 3); + + player->DurabilityPointsLoss(item, points); + return 0; + } + + /** + * Damages specified [Item] + * + * @param [Item] item + * @param double percent + */ + int DurabilityLoss(lua_State* L, Player* player) + { + Item* item = Eluna::CHECKOBJ(L, 2); + double percent = Eluna::CHECKVAL(L, 3); + + player->DurabilityLoss(item, percent); + return 0; + } + + /** + * Damages all [Item]s equipped. If inventory is true, damages [Item]s in bags + * + * @param double percent + * @param bool inventory = true + */ + int DurabilityLossAll(lua_State* L, Player* player) + { + double percent = Eluna::CHECKVAL(L, 2); + bool inventory = Eluna::CHECKVAL(L, 3, true); + + player->DurabilityLossAll(percent, inventory); + return 0; + } + + /** + * Kills the [Player] + */ + int KillPlayer(lua_State* /*L*/, Player* player) + { + player->KillPlayer(); + return 0; + } + + /** + * Forces the [Player] to leave a [Group] + */ + int RemoveFromGroup(lua_State* /*L*/, Player* player) + { + if (!player->GetGroup()) + return 0; + + player->RemoveFromGroup(); + return 0; + } + + /** + * Returns the [Player]s accumulated talent reset cost + * + * @return uint32 resetCost + */ + int ResetTalentsCost(lua_State* L, Player* player) + { +#ifdef CATA + Eluna::Push(L, player->GetNextResetTalentsCost()); +#else +#ifdef TRINITY + Eluna::Push(L, player->ResetTalentsCost()); +#else + Eluna::Push(L, player->resetTalentsCost()); +#endif +#endif + return 1; + } + + /** + * Resets the [Player]s talents + * + * @param bool noCost = true + */ + int ResetTalents(lua_State* L, Player* player) + { + bool no_cost = Eluna::CHECKVAL(L, 2, true); + +#ifdef CATA + player->ResetTalents(no_cost); +#else +#ifdef TRINITY + player->ResetTalents(no_cost); +#else + player->resetTalents(no_cost); +#endif +#endif +#if (!defined(TBC) && !defined(CLASSIC)) + player->SendTalentsInfoData(false); +#endif + return 0; + } + + /** + * Removes the [Spell] from the [Player] + * + * @param uint32 entry : entry of a [Spell] + */ + int RemoveSpell(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + +#ifdef TRINITY + player->RemoveSpell(entry); +#elif defined (AZEROTHCORE) + player->removeSpell(entry, SPEC_MASK_ALL, false); +#else + player->removeSpell(entry); +#endif + return 0; + } + + /** + * Clears the [Player]s combo points + */ + int ClearComboPoints(lua_State* /*L*/, Player* player) + { + player->ClearComboPoints(); + return 0; + } + + /** + * Adds combo points to the [Player] + * + * @param [Unit] target + * @param int8 count + */ + int AddComboPoints(lua_State* L, Player* player) + { + Unit* target = Eluna::CHECKOBJ(L, 2); + int8 count = Eluna::CHECKVAL(L, 3); + + player->AddComboPoints(target, count); + return 0; + } + + /** + * Gives [Quest] monster talked to credit + * + * @param uint32 entry : entry of a [Creature] + * @param [Creature] creature + */ + int TalkedToCreature(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + Creature* creature = Eluna::CHECKOBJ(L, 3); + + player->TalkedToCreature(entry, creature->GET_GUID()); + return 0; + } + + /** + * Gives [Quest] monster killed credit + * + * @param uint32 entry : entry of a [Creature] + */ + int KilledMonsterCredit(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + player->KilledMonsterCredit(entry, player->GET_GUID()); + return 0; + } + + /** + * Completes a [Quest] if in a [Group] + * + * @param uint32 quest : entry of a quest + * @param [WorldObject] obj + */ + int GroupEventHappens(lua_State* L, Player* player) + { + uint32 questId = Eluna::CHECKVAL(L, 2); + WorldObject* obj = Eluna::CHECKOBJ(L, 3); + + player->GroupEventHappens(questId, obj); + return 0; + } + + /** + * Completes the [Quest] if a [Quest] area is explored, or completes the [Quest] + * + * @param uint32 quest : entry of a [Quest] + */ + int AreaExploredOrEventHappens(lua_State* L, Player* player) + { + uint32 questId = Eluna::CHECKVAL(L, 2); + + player->AreaExploredOrEventHappens(questId); + return 0; + } + + /** + * Sets the given [Quest] entry failed for the [Player]. + * + * @param uint32 entry : entry of a [Quest] + */ + int FailQuest(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + player->FailQuest(entry); + return 0; + } + + /** + * Sets the given quest entry incomplete for the [Player]. + * + * @param uint32 entry : quest entry + */ + int IncompleteQuest(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + player->IncompleteQuest(entry); + return 0; + } + + /** + * Completes the given quest entry for the [Player] and tries to satisfy all quest requirements. + * + * The player should have the quest to complete it. + * + * @param uint32 entry : quest entry + */ + int CompleteQuest(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + Quest const* quest = eObjectMgr->GetQuestTemplate(entry); + + // If player doesn't have the quest + if (!quest || player->GetQuestStatus(entry) == QUEST_STATUS_NONE) + return 0; + + // Add quest items for quests that require items + for (uint8 x = 0; x < QUEST_ITEM_OBJECTIVES_COUNT; ++x) + { +#if defined TRINITY || AZEROTHCORE + uint32 id = quest->RequiredItemId[x]; + uint32 count = quest->RequiredItemCount[x]; +#else + uint32 id = quest->ReqItemId[x]; + uint32 count = quest->ReqItemCount[x]; +#endif + + if (!id || !count) + continue; + + uint32 curItemCount = player->GetItemCount(id, true); + + ItemPosCountVec dest; + uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, id, count - curItemCount); + if (msg == EQUIP_ERR_OK) + { + Item* item = player->StoreNewItem(dest, id, true); + player->SendNewItem(item, count - curItemCount, true, false); + } + } + + // All creature/GO slain/cast (not required, but otherwise it will display "Creature slain 0/10") + for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; ++i) + { +#if defined TRINITY || AZEROTHCORE + int32 creature = quest->RequiredNpcOrGo[i]; + uint32 creatureCount = quest->RequiredNpcOrGoCount[i]; + + if (creature > 0) + { + if (CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(creature)) + for (uint16 z = 0; z < creatureCount; ++z) + player->KilledMonster(creatureInfo, ObjectGuid::Empty); + } + else if (creature < 0) + for (uint16 z = 0; z < creatureCount; ++z) + player->KillCreditGO(creature); +#else + int32 creature = quest->ReqCreatureOrGOId[i]; + uint32 creaturecount = quest->ReqCreatureOrGOCount[i]; + + if (uint32 spell_id = quest->ReqSpell[i]) + { + for (uint16 z = 0; z < creaturecount; ++z) + player->CastedCreatureOrGO(creature, ObjectGuid(), spell_id); + } + else if (creature > 0) + { + if (CreatureInfo const* cInfo = ObjectMgr::GetCreatureTemplate(creature)) + for (uint16 z = 0; z < creaturecount; ++z) + player->KilledMonster(cInfo, ObjectGuid()); + } + else if (creature < 0) + { + for (uint16 z = 0; z < creaturecount; ++z) + player->CastedCreatureOrGO(-creature, ObjectGuid(), 0); + } +#endif + } + + + // If the quest requires reputation to complete + if (uint32 repFaction = quest->GetRepObjectiveFaction()) + { + uint32 repValue = quest->GetRepObjectiveValue(); + uint32 curRep = player->GetReputationMgr().GetReputation(repFaction); + if (curRep < repValue) + if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(repFaction)) + player->GetReputationMgr().SetReputation(factionEntry, repValue); + } + +#if defined TRINITY || AZEROTHCORE + // If the quest requires a SECOND reputation to complete + if (uint32 repFaction = quest->GetRepObjectiveFaction2()) + { + uint32 repValue2 = quest->GetRepObjectiveValue2(); + uint32 curRep = player->GetReputationMgr().GetReputation(repFaction); + if (curRep < repValue2) + if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(repFaction)) + player->GetReputationMgr().SetReputation(factionEntry, repValue2); + } +#endif + + // If the quest requires money + int32 ReqOrRewMoney = quest->GetRewOrReqMoney(); + if (ReqOrRewMoney < 0) + player->ModifyMoney(-ReqOrRewMoney); + +#ifdef TRINITY + if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER)) // check if Quest Tracker is enabled + { + // prepare Quest Tracker datas + CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_QUEST_TRACK_GM_COMPLETE); + stmt->setUInt32(0, quest->GetQuestId()); + stmt->setUInt32(1, player->GetGUID().GetCounter()); + + // add to Quest Tracker + CharacterDatabase.Execute(stmt); + } +#endif + + player->CompleteQuest(entry); + return 0; + } + + /** + * Tries to add the given quest entry for the [Player]. + * + * @param uint32 entry : quest entry + */ + int AddQuest(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + Quest const* quest = eObjectMgr->GetQuestTemplate(entry); + + if (!quest) + return 0; + +#if defined TRINITY || AZEROTHCORE + // check item starting quest (it can work incorrectly if added without item in inventory) +#ifndef AZEROTHCORE + ItemTemplateContainer const& itc = sObjectMgr->GetItemTemplateStore(); + auto itr = std::find_if(std::begin(itc), std::end(itc), [quest](ItemTemplateContainer::value_type const& value) + { + return value.second.StartQuest == quest->GetQuestId(); + }); + + if (itr != std::end(itc)) + return 0; +#else + ItemTemplateContainer const* itc = sObjectMgr->GetItemTemplateStore(); + ItemTemplateContainer::const_iterator result = find_if(itc->begin(), itc->end(), Finder(entry, &ItemTemplate::StartQuest)); + + if (result != itc->end()) + return 0; +#endif + // ok, normal (creature/GO starting) quest + if (player->CanAddQuest(quest, true)) + player->AddQuestAndCheckCompletion(quest, NULL); +#else + // check item starting quest (it can work incorrectly if added without item in inventory) + for (uint32 id = 0; id < sItemStorage.GetMaxEntry(); ++id) + { + ItemPrototype const* pProto = sItemStorage.LookupEntry(id); + if (!pProto) + continue; + + if (pProto->StartQuest == entry) + return 0; + } + + // ok, normal (creature/GO starting) quest + if (player->CanAddQuest(quest, true)) + { + player->AddQuest(quest, NULL); + + if (player->CanCompleteQuest(entry)) + player->CompleteQuest(entry); + } +#endif + + return 0; + } + + /** + * Removes the given quest entry from the [Player]. + * + * @param uint32 entry : quest entry + */ + int RemoveQuest(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + Quest const* quest = eObjectMgr->GetQuestTemplate(entry); + + if (!quest) + return 0; + + // remove all quest entries for 'entry' from quest log + for (uint8 slot = 0; slot < MAX_QUEST_LOG_SIZE; ++slot) + { + uint32 logQuest = player->GetQuestSlotQuestId(slot); + if (logQuest == entry) + { + player->SetQuestSlot(slot, 0); + + // we ignore unequippable quest items in this case, its' still be equipped + player->TakeQuestSourceItem(logQuest, false); + +#if defined TRINITY || AZEROTHCORE + if (quest->HasFlag(QUEST_FLAGS_FLAGS_PVP)) + { + player->pvpInfo.IsHostile = player->pvpInfo.IsInHostileArea || player->HasPvPForcingQuest(); + player->UpdatePvPState(); + } +#endif + } + } + +#if defined TRINITY || AZEROTHCORE + player->RemoveActiveQuest(entry, false); + player->RemoveRewardedQuest(entry); +#else + // set quest status to not started (will updated in DB at next save) + player->SetQuestStatus(entry, QUEST_STATUS_NONE); + + // reset rewarded for restart repeatable quest + player->getQuestStatusMap()[entry].m_rewarded = false; +#endif + return 0; + } + + /** + * Sends whisper text from the [Player] + * + * @param string text + * @param uint32 lang : language the [Player] will speak + * @param [Player] receiver : is the [Player] that will receive the whisper, if TrinityCore + * @param ObjectGuid guid : is the GUID of a [Player] that will receive the whisper, not TrinityCore + */ + int Whisper(lua_State* L, Player* player) + { + std::string text = Eluna::CHECKVAL(L, 2); + uint32 lang = Eluna::CHECKVAL(L, 3); +#if defined(TRINITY) || defined(AZEROTHCORE) + Player* receiver = Eluna::CHECKOBJ(L, 4); + player->Whisper(text, (Language)lang, receiver); +#else + ObjectGuid guid = Eluna::CHECKVAL(L, 4); + player->Whisper(text, lang, guid); +#endif + return 0; + } + + /** + * Sends a text emote from the [Player] + * + * @param string emoteText + */ + int TextEmote(lua_State* L, Player* player) + { + std::string text = Eluna::CHECKVAL(L, 2); + + player->TextEmote(text); + return 0; + } + + /** + * Sends yell text from the [Player] + * + * @param string text : text for the [Player] to yells + * @param uint32 lang : language the [Player] will speak + */ + int Yell(lua_State* L, Player* player) + { + std::string text = Eluna::CHECKVAL(L, 2); + uint32 lang = Eluna::CHECKVAL(L, 3); +#if defined(TRINITY) || defined(AZEROTHCORE) + player->Yell(text, (Language)lang); +#else + player->Yell(text, lang); +#endif + return 0; + } + + /** + * Sends say text from the [Player] + * + * @param string text : text for the [Player] to say + * @param uint32 lang : language the [Player] will speak + */ + int Say(lua_State* L, Player* player) + { + std::string text = Eluna::CHECKVAL(L, 2); + uint32 lang = Eluna::CHECKVAL(L, 3); +#if defined(TRINITY) || defined(AZEROTHCORE) + player->Say(text, (Language)lang); +#else + player->Say(text, lang); +#endif + return 0; + } + + /** + * Gives the [Player] experience + * + * @param uint32 xp : experience to give + * @param [Unit] victim = nil + */ + int GiveXP(lua_State* L, Player* player) + { + uint32 xp = Eluna::CHECKVAL(L, 2); + Unit* victim = Eluna::CHECKOBJ(L, 3, false); + + player->GiveXP(xp, victim); + return 0; + } + + /** + * Toggle the [Player]s 'Do Not Disturb' flag + */ + int ToggleDND(lua_State* /*L*/, Player* player) + { + player->ToggleDND(); + return 0; + } + + /** + * Toggle the [Player]s 'Away From Keyboard' flag + */ + int ToggleAFK(lua_State* /*L*/, Player* player) + { + player->ToggleAFK(); + return 0; + } + + /** + * Equips the given item or item entry to the given slot. Returns the equipped item or nil. + * + * enum EquipmentSlots // 19 slots + * { + * EQUIPMENT_SLOT_START = 0, + * EQUIPMENT_SLOT_HEAD = 0, + * EQUIPMENT_SLOT_NECK = 1, + * EQUIPMENT_SLOT_SHOULDERS = 2, + * EQUIPMENT_SLOT_BODY = 3, + * EQUIPMENT_SLOT_CHEST = 4, + * EQUIPMENT_SLOT_WAIST = 5, + * EQUIPMENT_SLOT_LEGS = 6, + * EQUIPMENT_SLOT_FEET = 7, + * EQUIPMENT_SLOT_WRISTS = 8, + * EQUIPMENT_SLOT_HANDS = 9, + * EQUIPMENT_SLOT_FINGER1 = 10, + * EQUIPMENT_SLOT_FINGER2 = 11, + * EQUIPMENT_SLOT_TRINKET1 = 12, + * EQUIPMENT_SLOT_TRINKET2 = 13, + * EQUIPMENT_SLOT_BACK = 14, + * EQUIPMENT_SLOT_MAINHAND = 15, + * EQUIPMENT_SLOT_OFFHAND = 16, + * EQUIPMENT_SLOT_RANGED = 17, + * EQUIPMENT_SLOT_TABARD = 18, + * EQUIPMENT_SLOT_END = 19 + * }; + * + * enum InventorySlots // 4 slots + * { + * INVENTORY_SLOT_BAG_START = 19, + * INVENTORY_SLOT_BAG_END = 23 + * }; + * + * @proto equippedItem = (item, slot) + * @proto equippedItem = (entry, slot) + * @param [Item] item : item to equip + * @param uint32 entry : entry of the item to equip + * @param uint32 slot : equipment slot to equip the item to The slot can be [EquipmentSlots] or [InventorySlots] + * @return [Item] equippedItem : item or nil if equipping failed + */ + int EquipItem(lua_State* L, Player* player) + { + uint16 dest = 0; + Item* item = Eluna::CHECKOBJ(L, 2, false); + uint32 slot = Eluna::CHECKVAL(L, 3); + + if (slot >= INVENTORY_SLOT_BAG_END) + return 1; + + if (!item) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + item = Item::CreateItem(entry, 1, player); + if (!item) + return 1; + + InventoryResult result = player->CanEquipItem(slot, dest, item, false); + if (result != EQUIP_ERR_OK) + { + delete item; + return 1; + } + player->ItemAddedQuestCheck(entry, 1); +#if (!defined(TBC) && !defined(CLASSIC)) + player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM, entry, 1); +#endif + } + else + { + InventoryResult result = player->CanEquipItem(slot, dest, item, false); + if (result != EQUIP_ERR_OK) + return 1; + player->RemoveItem(item->GetBagSlot(), item->GetSlot(), true); + } + + Eluna::Push(L, player->EquipItem(dest, item, true)); + player->AutoUnequipOffhandIfNeed(); + return 1; + } + + /** + * Returns true if the player can equip the given [Item] or item entry to the given slot, false otherwise. + * + * @proto canEquip = (item, slot) + * @proto canEquip = (entry, slot) + * @param [Item] item : item to equip + * @param uint32 entry : entry of the item to equip + * @param uint32 slot : equipment slot to test + * @return bool canEquip + */ + int CanEquipItem(lua_State* L, Player* player) + { + Item* item = Eluna::CHECKOBJ(L, 2, false); + uint32 slot = Eluna::CHECKVAL(L, 3); + if (slot >= EQUIPMENT_SLOT_END) + { + Eluna::Push(L, false); + return 1; + } + + if (!item) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + uint16 dest; + InventoryResult msg = player->CanEquipNewItem(slot, dest, entry, false); + if (msg != EQUIP_ERR_OK) + { + Eluna::Push(L, false); + return 1; + } + } + else + { + uint16 dest; + InventoryResult msg = player->CanEquipItem(slot, dest, item, false); + if (msg != EQUIP_ERR_OK) + { + Eluna::Push(L, false); + return 1; + } + } + Eluna::Push(L, true); + return 1; + } + +#ifndef CLASSIC + /** + * Removes a title by ID from the [Player]s list of known titles + * + * @param uint32 titleId + */ + int UnsetKnownTitle(lua_State* L, Player* player) + { + uint32 id = Eluna::CHECKVAL(L, 2); + CharTitlesEntry const* t = sCharTitlesStore.LookupEntry(id); + if (t) + player->SetTitle(t, true); + return 0; + } +#endif + + /** + * Advances all of the [Player]s weapon skills to the maximum amount available + */ + int AdvanceSkillsToMax(lua_State* /*L*/, Player* player) + { +#ifdef TRINITY + player->UpdateWeaponsSkillsToMaxSkillsForLevel(); +#else + player->UpdateSkillsToMaxSkillsForLevel(); +#endif + return 0; + } + + /** + * Advances all of the [Player]s skills to the amount specified + * + * @param uint32 skillStep + */ + int AdvanceAllSkills(lua_State* L, Player* player) + { + uint32 step = Eluna::CHECKVAL(L, 2); + + if (!step) + return 0; + + for (uint32 i = 0; i < sSkillLineStore.GetNumRows(); ++i) + { + if (SkillLineEntry const* entry = sSkillLineStore.LookupEntry(i)) + { +#ifdef TRINITY + if (entry->CategoryID == SKILL_CATEGORY_LANGUAGES || entry->CategoryID == SKILL_CATEGORY_GENERIC) + continue; + + if (player->HasSkill(entry->ID)) + player->UpdateSkill(entry->ID, step); +#else + if (entry->categoryId == SKILL_CATEGORY_LANGUAGES || entry->categoryId == SKILL_CATEGORY_GENERIC) + continue; + + if (player->HasSkill(entry->id)) + player->UpdateSkill(entry->id, step); +#endif + } + } + + return 0; + } + + /** + * Advances a [Player]s specific skill to the amount specified + * + * @param uint32 skillId + * @param uint32 skillStep + */ + int AdvanceSkill(lua_State* L, Player* player) + { + uint32 _skillId = Eluna::CHECKVAL(L, 2); + uint32 _step = Eluna::CHECKVAL(L, 3); + if (_skillId && _step) + { + if (player->HasSkill(_skillId)) + player->UpdateSkill(_skillId, _step); + } + return 0; + } + + /** + * Teleports a [Player] to the location specified + * + * @param uint32 mappId + * @param float xCoord + * @param float yCoord + * @param float zCoord + * @param float orientation + */ + int Teleport(lua_State* L, Player* player) + { + uint32 mapId = Eluna::CHECKVAL(L, 2); + float x = Eluna::CHECKVAL(L, 3); + float y = Eluna::CHECKVAL(L, 4); + float z = Eluna::CHECKVAL(L, 5); + float o = Eluna::CHECKVAL(L, 6); +#if defined AZEROTHCORE + if (player->IsInFlight()) + { + player->GetMotionMaster()->MovementExpired(); + player->m_taxi.ClearTaxiDestinations(); + } +#elif defined TRINITY + if (player->IsInFlight()) + player->FinishTaxiFlight(); + else + player->SaveRecallPosition(); +#else + if (player->IsTaxiFlying()) + { + player->GetMotionMaster()->MovementExpired(); + player->m_taxi.ClearTaxiDestinations(); + } +#endif + Eluna::Push(L, player->TeleportTo(mapId, x, y, z, o)); + return 1; + } + + int AddLifetimeKills(lua_State* L, Player* player) + { + uint32 val = Eluna::CHECKVAL(L, 2); + uint32 currentKills = player->GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS); + player->SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, currentKills + val); + return 0; + } + + /** + * Adds the given amount of the specified item entry to the player. + * + * @param uint32 entry : entry of the item to add + * @param uint32 itemCount = 1 : amount of the item to add + * @return [Item] item : the item that was added or nil + */ + int AddItem(lua_State* L, Player* player) + { + uint32 itemId = Eluna::CHECKVAL(L, 2); + uint32 itemCount = Eluna::CHECKVAL(L, 3, 1); + +#if defined TRINITY || AZEROTHCORE + uint32 noSpaceForCount = 0; + ItemPosCountVec dest; + InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, itemCount, &noSpaceForCount); + if (msg != EQUIP_ERR_OK) + itemCount -= noSpaceForCount; + + if (itemCount == 0 || dest.empty()) + return 1; +#ifndef AZEROTHCORE + Item* item = player->StoreNewItem(dest, itemId, true, GenerateItemRandomPropertyId(itemId)); +#else + Item* item = player->StoreNewItem(dest, itemId, true, Item::GenerateItemRandomPropertyId(itemId)); +#endif + if (item) + player->SendNewItem(item, itemCount, true, false); + Eluna::Push(L, item); +#else + Eluna::Push(L, player->StoreNewItemInInventorySlot(itemId, itemCount)); +#endif + return 1; + } + + /** + * Removes the given amount of the specified [Item] from the player. + * + * @proto (item, itemCount) + * @proto (entry, itemCount) + * @param [Item] item : item to remove + * @param uint32 entry : entry of the item to remove + * @param uint32 itemCount = 1 : amount of the item to remove + */ + int RemoveItem(lua_State* L, Player* player) + { + Item* item = Eluna::CHECKOBJ(L, 2, false); + uint32 itemCount = Eluna::CHECKVAL(L, 3); + if (!item) + { + uint32 itemId = Eluna::CHECKVAL(L, 2); + player->DestroyItemCount(itemId, itemCount, true); + } + else + { + bool all = itemCount >= item->GetCount(); + player->DestroyItemCount(item, itemCount, true); + if (all) + Eluna::CHECKOBJ(L, 2)->Invalidate(); + } + return 0; + } + + /** + * Removes specified amount of lifetime kills + * + * @param uint32 val : kills to remove + */ + int RemoveLifetimeKills(lua_State* L, Player* player) + { + uint32 val = Eluna::CHECKVAL(L, 2); + uint32 currentKills = player->GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS); + if (val > currentKills) + val = currentKills; + player->SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, currentKills - val); + return 0; + } + + /** + * Resets cooldown of the specified spell + * + * @param uint32 spellId + * @param bool update = true + */ + int ResetSpellCooldown(lua_State* L, Player* player) + { + uint32 spellId = Eluna::CHECKVAL(L, 2); + bool update = Eluna::CHECKVAL(L, 3, true); +#ifdef TRINITY + player->GetSpellHistory()->ResetCooldown(spellId, update); +#else + player->RemoveSpellCooldown(spellId, update); +#endif + return 0; + } + + /** + * Resets cooldown of the specified category + * + * @param uint32 category + * @param bool update = true + */ + int ResetTypeCooldowns(lua_State* L, Player* player) + { + uint32 category = Eluna::CHECKVAL(L, 2); + bool update = Eluna::CHECKVAL(L, 3, true); + (void)update; // ensure that the variable is referenced in order to pass compiler checks + +#ifdef TRINITY + player->GetSpellHistory()->ResetCooldowns([category](SpellHistory::CooldownStorageType::iterator itr) -> bool + { + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(itr->first); + return spellInfo && spellInfo->GetCategory() == category; + }, update); +#else +#ifndef AZEROTHCORE + player->RemoveSpellCategoryCooldown(category, update); +#else + player->RemoveCategoryCooldown(category); +#endif +#endif + return 0; + } + + /** + * Resets all of the [Player]'s cooldowns + */ + int ResetAllCooldowns(lua_State* /*L*/, Player* player) + { +#ifdef TRINITY + player->GetSpellHistory()->ResetAllCooldowns(); +#else + player->RemoveAllSpellCooldown(); +#endif + return 0; + } + + /** + * Sends a Broadcast Message to the [Player] + * + * @param string message + */ + int SendBroadcastMessage(lua_State* L, Player* player) + { + const char* message = Eluna::CHECKVAL(L, 2); + if (std::string(message).length() > 0) + ChatHandler(player->GetSession()).SendSysMessage(message); + return 0; + } + + /** + * Sends an Area Trigger Message to the [Player] + * + * @param string message + */ + int SendAreaTriggerMessage(lua_State* L, Player* player) + { + std::string msg = Eluna::CHECKVAL(L, 2); + if (msg.length() > 0) + player->GetSession()->SendAreaTriggerMessage("%s", msg.c_str()); + return 0; + } + + /** + * Sends a Notification to the [Player] + * + * @param string message + */ + int SendNotification(lua_State* L, Player* player) + { + std::string msg = Eluna::CHECKVAL(L, 2); + if (msg.length() > 0) + player->GetSession()->SendNotification("%s", msg.c_str()); + return 0; + } + + /** + * Sends a [WorldPacket] to the [Player] + * + * @param [WorldPacket] packet + * @param bool selfOnly = true + */ + int SendPacket(lua_State* L, Player* player) + { + WorldPacket* data = Eluna::CHECKOBJ(L, 2); + bool selfOnly = Eluna::CHECKVAL(L, 3, true); +#ifdef CMANGOS + if (selfOnly) + player->GetSession()->SendPacket(*data); + else + player->SendMessageToSet(*data, true); +#else + if (selfOnly) + player->GetSession()->SendPacket(data); + else + player->SendMessageToSet(data, true); +#endif + return 0; + } + + /** + * Sends addon message to the [Player] receiver + * + * @param string prefix + * @param string message + * @param [ChatMsg] channel + * @param [Player] receiver + * + */ + int SendAddonMessage(lua_State* L, Player* player) + { + std::string prefix = Eluna::CHECKVAL(L, 2); + std::string message = Eluna::CHECKVAL(L, 3); + uint8 channel = Eluna::CHECKVAL(L, 4); + Player* receiver = Eluna::CHECKOBJ(L, 5); + + std::string fullmsg = prefix + "\t" + message; + + WorldPacket data(SMSG_MESSAGECHAT, 100); + data << uint8(channel); + data << int32(LANG_ADDON); + data << player->GET_GUID(); +#ifndef CLASSIC + data << uint32(0); + data << receiver->GET_GUID(); +#endif + data << uint32(fullmsg.length() + 1); + data << fullmsg; + data << uint8(0); +#ifdef CMANGOS + receiver->GetSession()->SendPacket(data); +#else + receiver->GetSession()->SendPacket(&data); +#endif + return 0; + } + + /** + * Kicks the [Player] from the server + */ + int KickPlayer(lua_State* /*L*/, Player* player) + { +#ifdef TRINITY + player->GetSession()->KickPlayer("PlayerMethods::KickPlayer Kick the player"); +#else + player->GetSession()->KickPlayer(); +#endif + return 0; + } + + /** + * Adds or subtracts from the [Player]s money in copper + * + * @param int32 copperAmt : negative to remove, positive to add + */ + int ModifyMoney(lua_State* L, Player* player) + { + int32 amt = Eluna::CHECKVAL(L, 2); + + player->ModifyMoney(amt); + return 1; + } + + /** + * Teaches the [Player] the [Spell] specified by entry ID + * + * @param uint32 spellId + */ + int LearnSpell(lua_State* L, Player* player) + { + uint32 id = Eluna::CHECKVAL(L, 2); + +#ifdef TRINITY + player->LearnSpell(id, false); +#elif AZEROTHCORE + player->learnSpell(id); +#else + player->learnSpell(id, false); +#endif + return 0; + } + + /** + * Learn the [Player] the talent specified by talent_id and talentRank + * + * @param uint32 talent_id + * @param uint32 talentRank + */ + int LearnTalent(lua_State* L, Player* player) + { + uint32 id = Eluna::CHECKVAL(L, 2); + uint32 rank = Eluna::CHECKVAL(L, 3); + + player->LearnTalent(id, rank); +#if (!defined(TBC) && !defined(CLASSIC)) + player->SendTalentsInfoData(false); +#endif + +#if !defined TRINITY && !AZEROTHCORE + // if player has a pet, update owner talent auras + if (player->GetPet()) + player->GetPet()->CastOwnerTalentAuras(); +#endif + return 0; + } + + /** + * Adds a glyph specified by `glyphId` to the [Player]'s current talent specialization into the slot with the index `slotIndex` + * + * @param uint32 glyphId + * @param uint32 slotIndex + */ + int SetGlyph(lua_State* L, Player* player) + { + uint32 glyphId = Eluna::CHECKVAL(L, 2); + uint32 slotIndex = Eluna::CHECKVAL(L, 3); + + player->SetGlyph(slotIndex, glyphId, true); + player->SendTalentsInfoData(false); // Also handles GlyphData + + return 0; + } + +#if !defined(CLASSIC) + /** + * Remove cooldowns on spells that have less than 10 minutes of cooldown from the [Player], similarly to when you enter an arena. + */ + int RemoveArenaSpellCooldowns(lua_State* /*L*/, Player* player) + { + player->RemoveArenaSpellCooldowns(); + return 0; + } +#endif + + /** + * Resurrects the [Player]. + * + * @param float healthPercent = 100.0f + * @param bool ressSickness = false + */ + int ResurrectPlayer(lua_State* L, Player* player) + { + float percent = Eluna::CHECKVAL(L, 2, 100.0f); + bool sickness = Eluna::CHECKVAL(L, 3, false); + player->ResurrectPlayer(percent, sickness); + player->SpawnCorpseBones(); + return 0; + } + + /** + * Adds a new item to the gossip menu shown to the [Player] on next call to [Player:GossipSendMenu]. + * + * sender and intid are numbers which are passed directly to the gossip selection handler. Internally they are partly used for the database gossip handling. + * code specifies whether to show a box to insert text to. The player inserted text is passed to the gossip selection handler. + * money specifies an amount of money the player needs to have to click the option. An error message is shown if the player doesn't have enough money. + * Note that the money amount is only checked client side and is not removed from the player either. You will need to check again in your code before taking action. + * + * See also: [Player:GossipSendMenu], [Player:GossipAddQuests], [Player:GossipComplete], [Player:GossipClearMenu] + * + * @param uint32 icon : number that specifies used icon + * @param string msg : label on the gossip item + * @param uint32 sender : number passed to gossip handlers + * @param uint32 intid : number passed to gossip handlers + * @param bool code = false : show text input on click if true + * @param string popup = nil : if non empty string, a popup with given text shown on click + * @param uint32 money = 0 : required money in copper + */ + int GossipMenuAddItem(lua_State* L, Player* player) + { + uint32 _icon = Eluna::CHECKVAL(L, 2); + const char* msg = Eluna::CHECKVAL(L, 3); + uint32 _sender = Eluna::CHECKVAL(L, 4); + uint32 _intid = Eluna::CHECKVAL(L, 5); + bool _code = Eluna::CHECKVAL(L, 6, false); + const char* _promptMsg = Eluna::CHECKVAL(L, 7, ""); + uint32 _money = Eluna::CHECKVAL(L, 8, 0); +#if defined TRINITY || AZEROTHCORE + player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, _icon, msg, _sender, _intid, _promptMsg, _money, _code); +#else +#ifndef CLASSIC + player->PlayerTalkClass->GetGossipMenu().AddMenuItem(_icon, msg, _sender, _intid, _promptMsg, _money, _code); +#else + player->PlayerTalkClass->GetGossipMenu().AddMenuItem(_icon, msg, _sender, _intid, _promptMsg, _code); +#endif +#endif//TRINITY + return 0; + } + + /** + * Closes the [Player]s currently open Gossip Menu. + * + * See also: [Player:GossipMenuAddItem], [Player:GossipAddQuests], [Player:GossipSendMenu], [Player:GossipClearMenu] + */ + int GossipComplete(lua_State* /*L*/, Player* player) + { +#if defined TRINITY || AZEROTHCORE + player->PlayerTalkClass->SendCloseGossip(); +#else + player->PlayerTalkClass->CloseGossip(); +#endif + return 0; + } + + /** + * Sends the current gossip items of the player to him as a gossip menu with header text from the given textId. + * + * If sender is a [Player] then menu_id is mandatory, otherwise it is not used for anything. + * menu_id is the ID used to trigger the OnGossipSelect registered for players. See [Global:RegisterPlayerGossipEvent] + * + * See also: [Player:GossipMenuAddItem], [Player:GossipAddQuests], [Player:GossipComplete], [Player:GossipClearMenu] + * + * @proto (npc_text, sender) + * @proto (npc_text, sender, menu_id) + * @param uint32 npc_text : entry ID of a header text in npc_text database table, common default is 100 + * @param [Object] sender : object acting as the source of the sent gossip menu + * @param uint32 menu_id : if sender is a [Player] then menu_id is mandatory + */ + int GossipSendMenu(lua_State* L, Player* player) + { + uint32 npc_text = Eluna::CHECKVAL(L, 2); + Object* sender = Eluna::CHECKOBJ(L, 3); + if (sender->GetTypeId() == TYPEID_PLAYER) + { + uint32 menu_id = Eluna::CHECKVAL(L, 4); + player->PlayerTalkClass->GetGossipMenu().SetMenuId(menu_id); + } + player->PlayerTalkClass->SendGossipMenu(npc_text, sender->GET_GUID()); + return 0; + } + + /** + * Clears the [Player]s current gossip item list. + * + * See also: [Player:GossipMenuAddItem], [Player:GossipSendMenu], [Player:GossipAddQuests], [Player:GossipComplete] + * + * Note: This is needed when you show a gossip menu without using gossip hello or select hooks which do this automatically. + * Usually this is needed when using [Player] is the sender of a Gossip Menu. + */ + int GossipClearMenu(lua_State* /*L*/, Player* player) + { + player->PlayerTalkClass->ClearMenus(); + return 0; + } + + /** + * Attempts to start the taxi/flying to the given pathID + * + * @param uint32 pathId : pathId from DBC or [Global:AddTaxiPath] + */ + int StartTaxi(lua_State* L, Player* player) + { + uint32 pathId = Eluna::CHECKVAL(L, 2); + + player->ActivateTaxiPathTo(pathId); + return 0; + } + + /** + * Sends POI to the location on your map + * + * @param float x + * @param float y + * @param uint32 icon : map icon to show + * @param uint32 flags + * @param uint32 data + * @param string iconText + */ + int GossipSendPOI(lua_State* L, Player* player) + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + uint32 icon = Eluna::CHECKVAL(L, 4); + uint32 flags = Eluna::CHECKVAL(L, 5); + uint32 data = Eluna::CHECKVAL(L, 6); + std::string iconText = Eluna::CHECKVAL(L, 7); + + WorldPacket packet(SMSG_GOSSIP_POI, 4 + 4 + 4 + 4 + 4 + 10); + packet << flags; + packet << x; + packet << y; + packet << icon; + packet << data; + packet << iconText; +#ifdef CMANGOS + player->GetSession()->SendPacket(packet); +#else + player->GetSession()->SendPacket(&packet); +#endif + return 0; + } + + /** + * Adds the gossip items to the [Player]'s gossip for the quests the given [WorldObject] can offer to the player. + * + * @param [WorldObject] source : a questgiver with quests + */ + int GossipAddQuests(lua_State* L, Player* player) + { + WorldObject* source = Eluna::CHECKOBJ(L, 2); + + if (source->GetTypeId() == TYPEID_UNIT) + { + if (source->GetUInt32Value(UNIT_NPC_FLAGS) & UNIT_NPC_FLAG_QUESTGIVER) + player->PrepareQuestMenu(source->GET_GUID()); + } + else if (source->GetTypeId() == TYPEID_GAMEOBJECT) + { + if (source->ToGameObject()->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER) + player->PrepareQuestMenu(source->GET_GUID()); + } + return 0; + } + + /** + * Shows a quest accepting window to the [Player] for the given quest. + * + * @param uint32 questId : entry of a quest + * @param bool activateAccept = true : auto finish the quest + */ + int SendQuestTemplate(lua_State* L, Player* player) + { + uint32 questId = Eluna::CHECKVAL(L, 2); + bool activateAccept = Eluna::CHECKVAL(L, 3, true); + + Quest const* quest = eObjectMgr->GetQuestTemplate(questId); + if (!quest) + return 0; + + player->PlayerTalkClass->SendQuestGiverQuestDetails(quest, player->GET_GUID(), activateAccept); + return 0; + } + + /** + * Converts [Player]'s corpse to bones + */ + int SpawnBones(lua_State* /*L*/, Player* player) + { + player->SpawnCorpseBones(); + return 0; + } + + /** + * Loots [Player]'s bones for insignia + * + * @param [Player] looter + */ + int RemovedInsignia(lua_State* L, Player* player) + { + Player* looter = Eluna::CHECKOBJ(L, 2); + player->RemovedInsignia(looter); + return 0; + } + + /** + * Makes the [Player] invite another player to a group. + * + * @param [Player] invited : player to invite to group + * @return bool success : true if the player was invited to a group + */ + int GroupInvite(lua_State* L, Player* player) + { + Player* invited = Eluna::CHECKOBJ(L, 2); + + if (invited->GetGroup() || invited->GetGroupInvite()) + { + Eluna::Push(L, false); + return 1; + } + + // Get correct existing group if any + Group* group = player->GetGroup(); + if (group && group->isBGGroup()) + group = player->GetOriginalGroup(); + + bool success = false; + + // Try invite if group found + if (group) + success = !group->IsFull() && group->AddInvite(invited); + else + { + // Create new group if one not found + group = new Group; + success = group->AddLeaderInvite(player) && group->AddInvite(invited); + if (!success) + delete group; + } + + if (success) + { +#if defined(CLASSIC) || defined(TBC) + WorldPacket data(SMSG_GROUP_INVITE, 10); // guess size + data << player->GetName(); +#ifdef CMANGOS + invited->GetSession()->SendPacket(data); +#else + invited->GetSession()->SendPacket(&data); +#endif +#else + WorldPacket data(SMSG_GROUP_INVITE, 10); // guess size + data << uint8(1); // invited/already in group flag + data << player->GetName(); // max len 48 + data << uint32(0); // unk + data << uint8(0); // count + data << uint32(0); // unk +#ifdef CMANGOS + invited->GetSession()->SendPacket(data); +#else + invited->GetSession()->SendPacket(&data); +#endif +#endif + } + + Eluna::Push(L, success); + return 1; + } + + /** + * Creates a new [Group] with the creator [Player] as leader. + * + * @param [Player] invited : player to add to group + * @return [Group] createdGroup : the created group or nil + */ + int GroupCreate(lua_State* L, Player* player) + { + Player* invited = Eluna::CHECKOBJ(L, 2); + + if (player->GetGroup() || invited->GetGroup()) + return 0; + + if (player->GetGroupInvite()) + player->UninviteFromGroup(); + if (invited->GetGroupInvite()) + invited->UninviteFromGroup(); + + // Try create new group + Group* group = new Group; + if (!group->AddLeaderInvite(player)) + { + delete group; + return 0; + } + + // Forming a new group, create it + if (!group->IsCreated()) + { + group->RemoveInvite(player); +#if defined TRINITY || AZEROTHCORE + group->Create(player); + sGroupMgr->AddGroup(group); +#else + if (!group->Create(group->GetLeaderGuid(), group->GetLeaderName())) + return 0; + sObjectMgr.AddGroup(group); +#endif + } + +#if defined TRINITY || AZEROTHCORE + if (!group->AddMember(invited)) + return 0; + group->BroadcastGroupUpdate(); +#else + if (!group->AddMember(invited->GetObjectGuid(), invited->GetName())) + return 0; +#endif + Eluna::Push(L, group); + return 1; + } + + /** + * Starts a cinematic for the [Player] + * + * @param uint32 CinematicSequenceId : entry of a cinematic + */ + int SendCinematicStart(lua_State* L, Player* player) + { + uint32 CinematicSequenceId = Eluna::CHECKVAL(L, 2); + + player->SendCinematicStart(CinematicSequenceId); + return 0; + } + +#if !defined(CLASSIC) && !defined(TBC) + /** + * Starts a movie for the [Player] + * + * @param uint32 MovieId : entry of a movie + */ + int SendMovieStart(lua_State* L, Player* player) + { + uint32 MovieId = Eluna::CHECKVAL(L, 2); + + player->SendMovieStart(MovieId); + return 0; + } +#endif + + /** + * Sets a setting value for the [Player] + * + * @param string source + * @param uint32 index + * @param uint32 value + */ + int UpdatePlayerSetting(lua_State* L, Player* player) + { + std::string source = Eluna::CHECKVAL(L, 2); + uint32 index = Eluna::CHECKVAL(L, 3); + uint32 value = Eluna::CHECKVAL(L, 4); + player->UpdatePlayerSetting(source, index, value); + return 0; + } + + /** + * Gets a setting value for the [Player] + * + * @param string source + * @param uint32 index + */ + int GetPlayerSettingValue(lua_State* L, Player* player) + { + std::string source = Eluna::CHECKVAL(L, 2); + uint32 index = Eluna::CHECKVAL(L, 3); + uint32 value = player->GetPlayerSetting(source, index).value; + Eluna::Push(L, value); + return 1; + } + + /** + * Returns the [Player] that is currently trading with this [Player] + * + * @return [Player] trader : the player trading, or nil + */ + int GetTrader(lua_State* L, Player* player) + { + Eluna::Push(L, player->GetTrader()); + return 1; + } + + /*int BindToInstance(lua_State* L, Player* player) + { + player->BindToInstance(); + return 0; + }*/ + + /*int AddTalent(lua_State* L, Player* player) + { + uint32 spellId = Eluna::CHECKVAL(L, 2); + uint8 spec = Eluna::CHECKVAL(L, 3); + bool learning = Eluna::CHECKVAL(L, 4, true); + if (spec >= MAX_TALENT_SPECS) + Eluna::Push(L, false); + else + Eluna::Push(L, player->AddTalent(spellId, spec, learning)); + return 1; + }*/ + + /*int GainSpellComboPoints(lua_State* L, Player* player) + { + int8 count = Eluna::CHECKVAL(L, 2); + + player->GainSpellComboPoints(count); + return 0; + }*/ + + /*int KillGOCredit(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + ObjectGuid guid = Eluna::CHECKVAL(L, 3); + player->KillCreditGO(entry, guid); + return 0; + }*/ + + /*int KilledPlayerCredit(lua_State* L, Player* player) + { + player->KilledPlayerCredit(); + return 0; + }*/ + + /*int RemoveRewardedQuest(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + player->RemoveRewardedQuest(entry); + return 0; + }*/ + + /*int RemoveActiveQuest(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + + player->RemoveActiveQuest(entry); + return 0; + }*/ + + /*int SummonPet(lua_State* L, Player* player) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + float x = Eluna::CHECKVAL(L, 3); + float y = Eluna::CHECKVAL(L, 4); + float z = Eluna::CHECKVAL(L, 5); + float o = Eluna::CHECKVAL(L, 6); + uint32 petType = Eluna::CHECKVAL(L, 7); + uint32 despwtime = Eluna::CHECKVAL(L, 8); + + if (petType >= MAX_PET_TYPE) + return 0; + + player->SummonPet(entry, x, y, z, o, (PetType)petType, despwtime); + return 0; + }*/ + + /*int RemovePet(lua_State* L, Player* player) + { + int mode = Eluna::CHECKVAL(L, 2, PET_SAVE_AS_DELETED); + bool returnreagent = Eluna::CHECKVAL(L, 2, false); + + if (!player->GetPet()) + return 0; + + player->RemovePet(player->GetPet(), (PetSaveMode)mode, returnreagent); + return 0; + }*/ +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/QuestMethods.h b/modules/mod-eluna/src/LuaEngine/QuestMethods.h new file mode 100644 index 0000000..7ca026b --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/QuestMethods.h @@ -0,0 +1,187 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef QUESTMETHODS_H +#define QUESTMETHODS_H + +/*** + * Inherits all methods from: none + */ +namespace LuaQuest +{ + /** + * Returns 'true' if the [Quest] has the specified flag, false otherwise. + * Below flags are based off of 3.3.5a. Subject to change. + * + *
+     * enum QuestFlags
+     * {
+     *     // Flags used at server and sent to client
+     *     QUEST_FLAGS_NONE                    = 0x0,
+     *     QUEST_FLAGS_STAY_ALIVE              = 0x1,       // Not used currently
+     *     QUEST_FLAGS_PARTY_ACCEPT            = 0x2,       // Not used currently. If player in party, all players that can accept this quest will receive confirmation box to accept quest CMSG_QUEST_CONFIRM_ACCEPT/SMSG_QUEST_CONFIRM_ACCEPT
+     *     QUEST_FLAGS_EXPLORATION             = 0x4,       // Not used currently
+     *     QUEST_FLAGS_SHARABLE                = 0x8,       // Can be shared: Player::CanShareQuest()
+     *     QUEST_FLAGS_HAS_CONDITION           = 0x10,      // Not used currently
+     *     QUEST_FLAGS_HIDE_REWARD_POI         = 0x20,      // Not used currently: Unsure of content
+     *     QUEST_FLAGS_RAID                    = 0x40,      // Not used currently
+     *     QUEST_FLAGS_TBC                     = 0x80,      // Not used currently: Available if TBC expansion enabled only
+     *     QUEST_FLAGS_NO_MONEY_FROM_XP        = 0x100,     // Not used currently: Experience is not converted to gold at max level
+     *     QUEST_FLAGS_HIDDEN_REWARDS          = 0x200,     // Items and money rewarded only sent in SMSG_QUESTGIVER_OFFER_REWARD (not in SMSG_QUESTGIVER_QUEST_DETAILS or in client quest log(SMSG_QUEST_QUERY_RESPONSE))
+     *     QUEST_FLAGS_TRACKING                = 0x400,     // These quests are automatically rewarded on quest complete and they will never appear in quest log client side.
+     *     QUEST_FLAGS_DEPRECATE_REPUTATION    = 0x800,     // Not used currently
+     *     QUEST_FLAGS_DAILY                   = 0x1000,    // Used to know quest is Daily one
+     *     QUEST_FLAGS_FLAGS_PVP               = 0x2000,    // Having this quest in log forces PvP flag
+     *     QUEST_FLAGS_UNAVAILABLE             = 0x4000,    // Used on quests that are not generically available
+     *     QUEST_FLAGS_WEEKLY                  = 0x8000,
+     *     QUEST_FLAGS_AUTOCOMPLETE            = 0x10000,   // auto complete
+     *     QUEST_FLAGS_DISPLAY_ITEM_IN_TRACKER = 0x20000,   // Displays usable item in quest tracker
+     *     QUEST_FLAGS_OBJ_TEXT                = 0x40000,   // use Objective text as Complete text
+     *     QUEST_FLAGS_AUTO_ACCEPT             = 0x80000,   // The client recognizes this flag as auto-accept. However, NONE of the current quests (3.3.5a) have this flag. Maybe blizz used to use it, or will use it in the future.
+     *
+     *     // ... 4.x added flags up to 0x80000000 - all unknown for now
+     * };
+     * 
+ * + * @param [QuestFlags] flag : all available flags can be seen above + * @return bool hasFlag + */ + int HasFlag(lua_State* L, Quest* quest) + { + uint32 flag = Eluna::CHECKVAL(L, 2); +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, quest->HasFlag(flag)); +#else + Eluna::Push(L, quest->HasQuestFlag((QuestFlags)flag)); +#endif + return 1; + } + +#ifndef CLASSIC + /** + * Returns 'true' if the [Quest] is a daily quest, false otherwise. + * + * @return bool isDaily + */ + int IsDaily(lua_State* L, Quest* quest) + { + Eluna::Push(L, quest->IsDaily()); + return 1; + } +#endif + + /** + * Returns 'true' if the [Quest] is repeatable, false otherwise. + * + * @return bool isRepeatable + */ + int IsRepeatable(lua_State* L, Quest* quest) + { + Eluna::Push(L, quest->IsRepeatable()); + return 1; + } + + /** + * Returns entry ID of the [Quest]. + * + * @return uint32 entryId + */ + int GetId(lua_State* L, Quest* quest) + { + Eluna::Push(L, quest->GetQuestId()); + return 1; + } + + /** + * Returns the [Quest]'s level. + * + * @return uint32 level + */ + int GetLevel(lua_State* L, Quest* quest) + { + Eluna::Push(L, quest->GetQuestLevel()); + return 1; + } + + /** + * Returns the minimum level required to pick up the [Quest]. + * + * @return uint32 minLevel + */ + int GetMinLevel(lua_State* L, Quest* quest) + { + Eluna::Push(L, quest->GetMinLevel()); + return 1; + } + + /** + * Returns the next [Quest] entry ID. + * + * @return int32 entryId + */ + int GetNextQuestId(lua_State* L, Quest* quest) + { + Eluna::Push(L, quest->GetNextQuestId()); + return 1; + } + + /** + * Returns the previous [Quest] entry ID. + * + * @return int32 entryId + */ + int GetPrevQuestId(lua_State* L, Quest* quest) + { + Eluna::Push(L, quest->GetPrevQuestId()); + return 1; + } + + /** + * Returns the next [Quest] entry ID in the specific [Quest] chain. + * + * @return int32 entryId + */ + int GetNextQuestInChain(lua_State* L, Quest* quest) + { + Eluna::Push(L, quest->GetNextQuestInChain()); + return 1; + } + + /** + * Returns the [Quest]'s flags. + * + * @return [QuestFlags] flags + */ + int GetFlags(lua_State* L, Quest* quest) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, quest->GetFlags()); +#else + Eluna::Push(L, quest->GetQuestFlags()); +#endif + return 1; + } + + /** + * Returns the [Quest]'s type. + * + * TODO: Document types available. + * + * @return uint32 type + */ + int GetType(lua_State* L, Quest* quest) + { + Eluna::Push(L, quest->GetType()); + return 1; + } + + /*int GetMaxLevel(lua_State* L, Quest* quest) + { + Eluna::Push(L, quest->GetMaxLevel()); + return 1; + }*/ +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/RollMethods.h b/modules/mod-eluna/src/LuaEngine/RollMethods.h new file mode 100644 index 0000000..d36fe11 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/RollMethods.h @@ -0,0 +1,212 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef ROLLMETHODS_H +#define ROLLMETHODS_H + +#include "Group.h" + +namespace LuaRoll +{ + /** + * Returns the rolled [Item]'s GUID. + * + * @return ObjectGuid guid + */ + int GetItemGUID(lua_State* L, Roll* roll) + { + Eluna::Push(L, roll->itemGUID.GetCounter()); + return 1; + } + + /** + * Returns the rolled [Item]'s entry. + * + * @return uint32 entry + */ + int GetItemId(lua_State* L, Roll* roll) + { + Eluna::Push(L, roll->itemid); + return 1; + } + + /** + * Returns the rolled [Item]'s random property ID. + * + * @return int32 randomPropId + */ + int GetItemRandomPropId(lua_State* L, Roll* roll) + { + Eluna::Push(L, roll->itemRandomPropId); + return 1; + } + + /** + * Returns the rolled [Item]'s random suffix ID. + * + * @return uint32 randomSuffix + */ + int GetItemRandomSuffix(lua_State* L, Roll* roll) + { + Eluna::Push(L, roll->itemRandomSuffix); + return 1; + } + + /** + * Returns the rolled [Item]'s count. + * + * @return uint8 count + */ + int GetItemCount(lua_State* L, Roll* roll) + { + Eluna::Push(L, roll->itemCount); + return 1; + } + + /** + * Returns the vote type for a [Player] on this [Roll]. + * See [Roll:GetPlayerVoteGUIDs] to obtain the GUIDs of the [Player]s who rolled. + * + *
+     * enum RollVote
+     * {
+     *     PASS              = 0,
+     *     NEED              = 1,
+     *     GREED             = 2,
+     *     DISENCHANT        = 3,
+     *     NOT_EMITED_YET    = 4,
+     *     NOT_VALID         = 5
+     * };
+     * 
+ * + * @param ObjectGuid guid + * @return [RollVote] vote + */ + int GetPlayerVote(lua_State* L, Roll* roll) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + + bool found = false; + for (std::pair& pair : roll->playerVote) + { + if (pair.first == guid) + { + Eluna::Push(L, pair.second); + found = true; + } + } + + if (!found) + { + Eluna::Push(L); + } + + return 1; + } + + /** + * Returns the GUIDs of the [Player]s who rolled. + * See [Roll:GetPlayerVote] to obtain the vote type of a [Player]. + * + * @return table guids + */ + int GetPlayerVoteGUIDs(lua_State* L, Roll* roll) + { + lua_newtable(L); + int table = lua_gettop(L); + uint32 i = 1; + for (std::pair& pair : roll->playerVote) + { + Eluna::Push(L, pair.first); + lua_rawseti(L, table, i); + ++i; + } + + lua_settop(L, table); // push table to top of stack + return 1; + } + + /** + * Returns the total number of players who rolled. + * + * @return uint8 playersCount + */ + int GetTotalPlayersRolling(lua_State* L, Roll* roll) + { + Eluna::Push(L, roll->totalPlayersRolling); + return 1; + } + + /** + * Returns the total number of players who rolled need. + * + * @return uint8 playersCount + */ + int GetTotalNeed(lua_State* L, Roll* roll) + { + Eluna::Push(L, roll->totalNeed); + return 1; + } + + /** + * Returns the total number of players who rolled greed. + * + * @return uint8 playersCount + */ + int GetTotalGreed(lua_State* L, Roll* roll) + { + Eluna::Push(L, roll->totalGreed); + return 1; + } + + /** + * Returns the total number of players who passed. + * + * @return uint8 playersCount + */ + int GetTotalPass(lua_State* L, Roll* roll) + { + Eluna::Push(L, roll->totalPass); + return 1; + } + + /** + * Returns the rolled [Item]'s slot in the loot window. + * + * @return uint8 slot + */ + int GetItemSlot(lua_State* L, Roll* roll) + { + Eluna::Push(L, roll->itemSlot); + return 1; + } + + /** + * Returns the mask applied to this [Roll]. + * + *
+     * enum RollMask
+     * {
+     *     ROLL_FLAG_TYPE_PASS                 = 0x01,
+     *     ROLL_FLAG_TYPE_NEED                 = 0x02,
+     *     ROLL_FLAG_TYPE_GREED                = 0x04,
+     *     ROLL_FLAG_TYPE_DISENCHANT           = 0x08,
+     * 
+     *     ROLL_ALL_TYPE_NO_DISENCHANT         = 0x07,
+     *     ROLL_ALL_TYPE_MASK                  = 0x0F
+     * };
+     * 
+ * + * @return [RollMask] rollMask + */ + int GetRollVoteMask(lua_State* L, Roll* roll) + { + Eluna::Push(L, roll->rollVoteMask); + return 1; + } +} + +#endif diff --git a/modules/mod-eluna/src/LuaEngine/ServerHooks.cpp b/modules/mod-eluna/src/LuaEngine/ServerHooks.cpp new file mode 100644 index 0000000..db2c537 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ServerHooks.cpp @@ -0,0 +1,397 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaEventMgr.h" +#include "ElunaIncludes.h" +#include "ElunaTemplate.h" + +using namespace Hooks; + +#define START_HOOK(EVENT) \ + if (!IsEnabled())\ + return;\ + auto key = EventKey(EVENT);\ + if (!ServerEventBindings->HasBindingsFor(key))\ + return;\ + LOCK_ELUNA + +#define START_HOOK_WITH_RETVAL(EVENT, RETVAL) \ + if (!IsEnabled())\ + return RETVAL;\ + auto key = EventKey(EVENT);\ + if (!ServerEventBindings->HasBindingsFor(key))\ + return RETVAL;\ + LOCK_ELUNA + +bool Eluna::OnAddonMessage(Player* sender, uint32 type, std::string& msg, Player* receiver, Guild* guild, Group* group, Channel* channel) +{ + START_HOOK_WITH_RETVAL(ADDON_EVENT_ON_MESSAGE, true); + Push(sender); + Push(type); + + auto delimeter_position = msg.find('\t'); + if (delimeter_position == std::string::npos) + { + Push(msg); // prefix + Push(); // msg + } + else + { + std::string prefix = msg.substr(0, delimeter_position); + std::string content = msg.substr(delimeter_position + 1, std::string::npos); + Push(prefix); + Push(content); + } + + if (receiver) + Push(receiver); + else if (guild) + Push(guild); + else if (group) + Push(group); + else if (channel) + Push(channel->GetChannelId()); + else + Push(); + + return CallAllFunctionsBool(ServerEventBindings, key, true); +} + +void Eluna::OnTimedEvent(int funcRef, uint32 delay, uint32 calls, WorldObject* obj) +{ + LOCK_ELUNA; + ASSERT(!event_level); + + // Get function + lua_rawgeti(L, LUA_REGISTRYINDEX, funcRef); + + // Push parameters + Push(L, funcRef); + Push(L, delay); + Push(L, calls); + Push(L, obj); + + // Call function + ExecuteCall(4, 0); + + ASSERT(!event_level); + InvalidateObjects(); +} + +void Eluna::OnGameEventStart(uint32 eventid) +{ + START_HOOK(GAME_EVENT_START); + Push(eventid); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnGameEventStop(uint32 eventid) +{ + START_HOOK(GAME_EVENT_STOP); + Push(eventid); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnLuaStateClose() +{ + START_HOOK(ELUNA_EVENT_ON_LUA_STATE_CLOSE); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnLuaStateOpen() +{ + START_HOOK(ELUNA_EVENT_ON_LUA_STATE_OPEN); + CallAllFunctions(ServerEventBindings, key); +} + +// AreaTrigger +bool Eluna::OnAreaTrigger(Player* pPlayer, AreaTriggerEntry const* pTrigger) +{ + START_HOOK_WITH_RETVAL(TRIGGER_EVENT_ON_TRIGGER, false); + Push(pPlayer); +#ifdef TRINITY + Push(pTrigger->ID); +#elif AZEROTHCORE + Push(pTrigger->entry); +#else + Push(pTrigger->id); + +#endif + return CallAllFunctionsBool(ServerEventBindings, key); +} + +// Weather +void Eluna::OnChange(Weather* /*weather*/, uint32 zone, WeatherState state, float grade) +{ + START_HOOK(WEATHER_EVENT_ON_CHANGE); + Push(zone); + Push(state); + Push(grade); + CallAllFunctions(ServerEventBindings, key); +} + +// Auction House +void Eluna::OnAdd(AuctionHouseObject* /*ah*/, AuctionEntry* entry) +{ +#ifdef AZEROTHCORE + Player* owner = eObjectAccessor()FindPlayer(entry->owner); +#else + Player* owner = eObjectAccessor()FindPlayer(MAKE_NEW_GUID(entry->owner, 0, HIGHGUID_PLAYER)); +#endif + +#ifdef TRINITY + Item* item = eAuctionMgr->GetAItem(entry->itemGUIDLow); + uint32 expiretime = entry->expire_time; +#elif AZEROTHCORE + Item* item = eAuctionMgr->GetAItem(entry->item_guid); + uint32 expiretime = entry->expire_time; +#else + Item* item = eAuctionMgr->GetAItem(entry->itemGuidLow); + uint32 expiretime = entry->expireTime; +#endif + + if (!owner || !item) + return; + + START_HOOK(AUCTION_EVENT_ON_ADD); + Push(entry->Id); + Push(owner); + Push(item); + Push(expiretime); + Push(entry->buyout); + Push(entry->startbid); + Push(entry->bid); + Push(entry->bidder); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnRemove(AuctionHouseObject* /*ah*/, AuctionEntry* entry) +{ +#ifdef AZEROTHCORE + Player* owner = eObjectAccessor()FindPlayer(entry->owner); +#else + Player* owner = eObjectAccessor()FindPlayer(MAKE_NEW_GUID(entry->owner, 0, HIGHGUID_PLAYER)); +#endif + +#ifdef TRINITY + Item* item = eAuctionMgr->GetAItem(entry->itemGUIDLow); + uint32 expiretime = entry->expire_time; +#elif AZEROTHCORE + Item* item = eAuctionMgr->GetAItem(entry->item_guid); + uint32 expiretime = entry->expire_time; +#else + Item* item = eAuctionMgr->GetAItem(entry->itemGuidLow); + uint32 expiretime = entry->expireTime; +#endif + + + if (!owner || !item) + return; + + START_HOOK(AUCTION_EVENT_ON_REMOVE); + Push(entry->Id); + Push(owner); + Push(item); + Push(expiretime); + Push(entry->buyout); + Push(entry->startbid); + Push(entry->bid); + Push(entry->bidder); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnSuccessful(AuctionHouseObject* /*ah*/, AuctionEntry* entry) +{ +#ifdef AZEROTHCORE + Player* owner = eObjectAccessor()FindPlayer(entry->owner); +#else + Player* owner = eObjectAccessor()FindPlayer(MAKE_NEW_GUID(entry->owner, 0, HIGHGUID_PLAYER)); +#endif + +#ifdef TRINITY + Item* item = eAuctionMgr->GetAItem(entry->itemGUIDLow); + uint32 expiretime = entry->expire_time; +#elif AZEROTHCORE + Item* item = eAuctionMgr->GetAItem(entry->item_guid); + uint32 expiretime = entry->expire_time; +#else + Item* item = eAuctionMgr->GetAItem(entry->itemGuidLow); + uint32 expiretime = entry->expireTime; +#endif + + + if (!owner || !item) + return; + + START_HOOK(AUCTION_EVENT_ON_SUCCESSFUL); + Push(entry->Id); + Push(owner); + Push(item); + Push(expiretime); + Push(entry->buyout); + Push(entry->startbid); + Push(entry->bid); + Push(entry->bidder); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnExpire(AuctionHouseObject* /*ah*/, AuctionEntry* entry) +{ +#ifdef AZEROTHCORE + Player* owner = eObjectAccessor()FindPlayer(entry->owner); +#else + Player* owner = eObjectAccessor()FindPlayer(MAKE_NEW_GUID(entry->owner, 0, HIGHGUID_PLAYER)); +#endif + +#ifdef TRINITY + Item* item = eAuctionMgr->GetAItem(entry->itemGUIDLow); + uint32 expiretime = entry->expire_time; +#elif AZEROTHCORE + Item* item = eAuctionMgr->GetAItem(entry->item_guid); + uint32 expiretime = entry->expire_time; +#else + Item* item = eAuctionMgr->GetAItem(entry->itemGuidLow); + uint32 expiretime = entry->expireTime; +#endif + + + if (!owner || !item) + return; + + START_HOOK(AUCTION_EVENT_ON_EXPIRE); + Push(entry->Id); + Push(owner); + Push(item); + Push(expiretime); + Push(entry->buyout); + Push(entry->startbid); + Push(entry->bid); + Push(entry->bidder); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnOpenStateChange(bool open) +{ + START_HOOK(WORLD_EVENT_ON_OPEN_STATE_CHANGE); + Push(open); + CallAllFunctions(ServerEventBindings, key); +} + +#ifndef AZEROTHCORE +void Eluna::OnConfigLoad(bool reload) +#else +void Eluna::OnConfigLoad(bool reload, bool isBefore) +#endif +{ + START_HOOK(WORLD_EVENT_ON_CONFIG_LOAD); + Push(reload); +#ifdef AZEROTHCORE + Push(isBefore); +#endif + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnShutdownInitiate(ShutdownExitCode code, ShutdownMask mask) +{ + START_HOOK(WORLD_EVENT_ON_SHUTDOWN_INIT); + Push(code); + Push(mask); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnShutdownCancel() +{ + START_HOOK(WORLD_EVENT_ON_SHUTDOWN_CANCEL); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnWorldUpdate(uint32 diff) +{ + { + LOCK_ELUNA; + if (ShouldReload()) + _ReloadEluna(); + } + + eventMgr->globalProcessor->Update(diff); + httpManager.HandleHttpResponses(); + queryProcessor.ProcessReadyCallbacks(); + + START_HOOK(WORLD_EVENT_ON_UPDATE); + Push(diff); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnStartup() +{ + START_HOOK(WORLD_EVENT_ON_STARTUP); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnShutdown() +{ + START_HOOK(WORLD_EVENT_ON_SHUTDOWN); + CallAllFunctions(ServerEventBindings, key); +} + +/* Map */ +void Eluna::OnCreate(Map* map) +{ + START_HOOK(MAP_EVENT_ON_CREATE); + Push(map); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnDestroy(Map* map) +{ + START_HOOK(MAP_EVENT_ON_DESTROY); + Push(map); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnPlayerEnter(Map* map, Player* player) +{ + START_HOOK(MAP_EVENT_ON_PLAYER_ENTER); + Push(map); + Push(player); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnPlayerLeave(Map* map, Player* player) +{ + START_HOOK(MAP_EVENT_ON_PLAYER_LEAVE); + Push(map); + Push(player); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnUpdate(Map* map, uint32 diff) +{ + START_HOOK(MAP_EVENT_ON_UPDATE); + // enable this for multithread + // eventMgr->globalProcessor->Update(diff); + Push(map); + Push(diff); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnRemove(GameObject* gameobject) +{ + START_HOOK(WORLD_EVENT_ON_DELETE_GAMEOBJECT); + Push(gameobject); + CallAllFunctions(ServerEventBindings, key); +} + +void Eluna::OnRemove(Creature* creature) +{ + START_HOOK(WORLD_EVENT_ON_DELETE_CREATURE); + Push(creature); + CallAllFunctions(ServerEventBindings, key); +} diff --git a/modules/mod-eluna/src/LuaEngine/SpellMethods.h b/modules/mod-eluna/src/LuaEngine/SpellMethods.h new file mode 100644 index 0000000..2036c00 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/SpellMethods.h @@ -0,0 +1,193 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef SPELLMETHODS_H +#define SPELLMETHODS_H + +/*** + * An instance of a spell, created when the spell is cast by a [Unit]. + * + * Inherits all methods from: none + */ +namespace LuaSpell +{ + /** + * Returns `true` if the [Spell] is automatically repeating, `false` otherwise. + * + * @return bool isAutoRepeating + */ + int IsAutoRepeat(lua_State* L, Spell* spell) + { + Eluna::Push(L, spell->IsAutoRepeat()); + return 1; + } + + /** + * Returns the [Unit] that casted the [Spell]. + * + * @return [Unit] caster + */ + int GetCaster(lua_State* L, Spell* spell) + { + Eluna::Push(L, spell->GetCaster()); + return 1; + } + + /** + * Returns the cast time of the [Spell]. + * + * @return int32 castTime + */ + int GetCastTime(lua_State* L, Spell* spell) + { + Eluna::Push(L, spell->GetCastTime()); + return 1; + } + + /** + * Returns the entry ID of the [Spell]. + * + * @return uint32 entryId + */ + int GetEntry(lua_State* L, Spell* spell) + { + Eluna::Push(L, spell->m_spellInfo->Id); + return 1; + } + + /** + * Returns the power cost of the [Spell]. + * + * @return uint32 powerCost + */ + int GetPowerCost(lua_State* L, Spell* spell) + { + Eluna::Push(L, spell->GetPowerCost()); + return 1; + } + + /** + * Returns the spell duration of the [Spell]. + * + * @return int32 duration + */ + int GetDuration(lua_State* L, Spell* spell) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, spell->GetSpellInfo()->GetDuration()); +#else + Eluna::Push(L, GetSpellDuration(spell->m_spellInfo)); +#endif + return 1; + } + + /** + * Returns the target destination coordinates of the [Spell]. + * + * @return float x : x coordinate of the [Spell] + * @return float y : y coordinate of the [Spell] + * @return float z : z coordinate of the [Spell] + */ + int GetTargetDest(lua_State* L, Spell* spell) + { +#if defined TRINITY || AZEROTHCORE + if (!spell->m_targets.HasDst()) + return 3; + float x, y, z; + spell->m_targets.GetDstPos()->GetPosition(x, y, z); +#else + if (!(spell->m_targets.m_targetMask & TARGET_FLAG_DEST_LOCATION)) + return 3; + float x, y, z; + spell->m_targets.getDestination(x, y, z); +#endif + Eluna::Push(L, x); + Eluna::Push(L, y); + Eluna::Push(L, z); + return 3; + } + + /** + * Returns the target [Object] of the [Spell]. + * + * The target can be any of the following [Object] types: + * - [Player] + * - [Creature] + * - [GameObject] + * - [Item] + * - [Corpse] + * + * @return [Object] target + */ + int GetTarget(lua_State* L, Spell* spell) + { +#if defined TRINITY || AZEROTHCORE + if (GameObject* target = spell->m_targets.GetGOTarget()) + Eluna::Push(L, target); + else if (Item* target = spell->m_targets.GetItemTarget()) + Eluna::Push(L, target); + else if (Corpse* target = spell->m_targets.GetCorpseTarget()) + Eluna::Push(L, target); + else if (Unit* target = spell->m_targets.GetUnitTarget()) + Eluna::Push(L, target); + else if (WorldObject* target = spell->m_targets.GetObjectTarget()) + Eluna::Push(L, target); +#else + if (GameObject* target = spell->m_targets.getGOTarget()) + Eluna::Push(L, target); + else if (Item* target = spell->m_targets.getItemTarget()) + Eluna::Push(L, target); + else if (Corpse* target = spell->GetCaster()->GetMap()->GetCorpse(spell->m_targets.getCorpseTargetGuid())) + Eluna::Push(L, target); + else if (Unit* target = spell->m_targets.getUnitTarget()) + Eluna::Push(L, target); +#endif + return 1; + } + + /** + * Sets the [Spell] to automatically repeat. + * + * @param bool repeat : set variable to 'true' for spell to automatically repeat + */ + int SetAutoRepeat(lua_State* L, Spell* spell) + { + bool repeat = Eluna::CHECKVAL(L, 2); + spell->SetAutoRepeat(repeat); + return 0; + } + + /** + * Casts the [Spell]. + * + * @param bool skipCheck = false : skips initial checks to see if the [Spell] can be casted or not, this is optional + */ + int Cast(lua_State* L, Spell* spell) + { + bool skipCheck = Eluna::CHECKVAL(L, 2, false); + spell->cast(skipCheck); + return 0; + } + + /** + * Cancels the [Spell]. + */ + int Cancel(lua_State* /*L*/, Spell* spell) + { + spell->cancel(); + return 0; + } + + /** + * Finishes the [Spell]. + */ + int Finish(lua_State* /*L*/, Spell* spell) + { + spell->finish(); + return 0; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/UnitMethods.h b/modules/mod-eluna/src/LuaEngine/UnitMethods.h new file mode 100644 index 0000000..50e467b --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/UnitMethods.h @@ -0,0 +1,2657 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef UNITMETHODS_H +#define UNITMETHODS_H + +/*** + * Inherits all methods from: [Object], [WorldObject] + */ +namespace LuaUnit +{ + /** + * The [Unit] tries to attack a given target + * + * @param [Unit] who : [Unit] to attack + * @param bool meleeAttack = false: attack with melee or not + * @return didAttack : if the [Unit] did not attack + */ + int Attack(lua_State* L, Unit* unit) + { + Unit* who = Eluna::CHECKOBJ(L, 2); + bool meleeAttack = Eluna::CHECKVAL(L, 3, false); + + Eluna::Push(L, unit->Attack(who, meleeAttack)); + return 1; + } + + /** + * The [Unit] stops attacking its target + * + * @return bool isAttacking : if the [Unit] wasn't attacking already + */ + int AttackStop(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->AttackStop()); + return 1; + } + + /** + * Returns true if the [Unit] is standing. + * + * @return bool isStanding + */ + int IsStandState(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsStandState()); + return 1; + } + + /** + * Returns true if the [Unit] is mounted. + * + * @return bool isMounted + */ + int IsMounted(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsMounted()); + return 1; + } + + /** + * Returns true if the [Unit] is rooted. + * + * @return bool isRooted + */ + int IsRooted(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->isInRoots() || unit->HasUnitMovementFlag(MOVEMENTFLAG_ROOT)); + + return 1; + } + + /** + * Returns true if the [Unit] has full health. + * + * @return bool hasFullHealth + */ + int IsFullHealth(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsFullHealth()); + return 1; + } + + /** + * Returns true if the [Unit] is in an accessible place for the given [Creature]. + * + * @param [WorldObject] obj + * @param float radius + * @return bool isAccessible + */ + int IsInAccessiblePlaceFor(lua_State* L, Unit* unit) + { + Creature* creature = Eluna::CHECKOBJ(L, 2); + + Eluna::Push(L, unit->isInAccessiblePlaceFor(creature)); + + return 1; + } + + /** + * Returns true if the [Unit] an auctioneer. + * + * @return bool isAuctioneer + */ + int IsAuctioneer(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsAuctioner()); + + return 1; + } + + /** + * Returns true if the [Unit] a guild master. + * + * @return bool isGuildMaster + */ + int IsGuildMaster(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsGuildMaster()); + return 1; + } + + /** + * Returns true if the [Unit] an innkeeper. + * + * @return bool isInnkeeper + */ + int IsInnkeeper(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsInnkeeper()); + return 1; + } + + /** + * Returns true if the [Unit] a trainer. + * + * @return bool isTrainer + */ + int IsTrainer(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsTrainer()); + return 1; + } + + /** + * Returns true if the [Unit] is able to show a gossip window. + * + * @return bool hasGossip + */ + int IsGossip(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsGossip()); + return 1; + } + + /** + * Returns true if the [Unit] is a taxi master. + * + * @return bool isTaxi + */ + int IsTaxi(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsTaxi()); + return 1; + } + + /** + * Returns true if the [Unit] is a spirit healer. + * + * @return bool isSpiritHealer + */ + int IsSpiritHealer(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsSpiritHealer()); + return 1; + } + + /** + * Returns true if the [Unit] is a spirit guide. + * + * @return bool isSpiritGuide + */ + int IsSpiritGuide(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsSpiritGuide()); + return 1; + } + + /** + * Returns true if the [Unit] is a tabard designer. + * + * @return bool isTabardDesigner + */ + int IsTabardDesigner(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsTabardDesigner()); + return 1; + } + + /** + * Returns true if the [Unit] provides services like vendor, training and auction. + * + * @return bool isTabardDesigner + */ + int IsServiceProvider(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsServiceProvider()); + return 1; + } + + /** + * Returns true if the [Unit] is a spirit guide or spirit healer. + * + * @return bool isSpiritService + */ + int IsSpiritService(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsSpiritService()); + return 1; + } + + /** + * Returns true if the [Unit] is alive. + * + * @return bool isAlive + */ + int IsAlive(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsAlive()); + return 1; + } + + /** + * Returns true if the [Unit] is dead. + * + * @return bool isDead + */ + int IsDead(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->isDead()); + return 1; + } + + /** + * Returns true if the [Unit] is dying. + * + * @return bool isDying + */ + int IsDying(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->isDying()); + return 1; + } + + /** + * Returns true if the [Unit] is a banker. + * + * @return bool isBanker + */ + int IsBanker(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsBanker()); + return 1; + } + + /** + * Returns true if the [Unit] is a vendor. + * + * @return bool isVendor + */ + int IsVendor(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsVendor()); + return 1; + } + + /** + * Returns true if the [Unit] is a battle master. + * + * @return bool isBattleMaster + */ + int IsBattleMaster(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsBattleMaster()); + return 1; + } + + /** + * Returns true if the [Unit] is a charmed. + * + * @return bool isCharmed + */ + int IsCharmed(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsCharmed()); + return 1; + } + + /** + * Returns true if the [Unit] is an armorer and can repair equipment. + * + * @return bool isArmorer + */ + int IsArmorer(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsArmorer()); + return 1; + } + + /** + * Returns true if the [Unit] is attacking a player. + * + * @return bool isAttackingPlayer + */ + int IsAttackingPlayer(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->isAttackingPlayer()); + return 1; + } + + /** + * Returns true if the [Unit] flagged for PvP. + * + * @return bool isPvP + */ + int IsPvPFlagged(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsPvP()); + return 1; + } + +#ifndef CLASSIC + /** + * Returns true if the [Unit] is on a [Vehicle]. + * + * @return bool isOnVehicle + */ + int IsOnVehicle(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetVehicle()); + return 1; + } +#endif + + /** + * Returns true if the [Unit] is in combat. + * + * @return bool inCombat + */ + int IsInCombat(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsInCombat()); + return 1; + } + + /** + * Returns true if the [Unit] is under water. + * + * @return bool underWater + */ + int IsUnderWater(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsUnderWater()); + return 1; + } + + /** + * Returns true if the [Unit] is in water. + * + * @return bool inWater + */ + int IsInWater(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsInWater()); + return 1; + } + + /** + * Returns true if the [Unit] is not moving. + * + * @return bool notMoving + */ + int IsStopped(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsStopped()); + return 1; + } + + /** + * Returns true if the [Unit] is a quest giver. + * + * @return bool questGiver + */ + int IsQuestGiver(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsQuestGiver()); + return 1; + } + + /** + * Returns true if the [Unit]'s health is below the given percentage. + * + * @param int32 healthpct : percentage in integer from + * @return bool isBelow + */ + int HealthBelowPct(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->HealthBelowPct(Eluna::CHECKVAL(L, 2))); + return 1; + } + + /** + * Returns true if the [Unit]'s health is above the given percentage. + * + * @param int32 healthpct : percentage in integer from + * @return bool isAbove + */ + int HealthAbovePct(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->HealthAbovePct(Eluna::CHECKVAL(L, 2))); + return 1; + } + + /** + * Returns true if the [Unit] has an aura from the given spell entry. + * + * @param uint32 spell : entry of the aura spell + * @return bool hasAura + */ + int HasAura(lua_State* L, Unit* unit) + { + uint32 spell = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, unit->HasAura(spell)); + return 1; + } + + /** + * Returns true if the [Unit] is casting a spell + * + * @return bool isCasting + */ + int IsCasting(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->HasUnitState(UNIT_STATE_CASTING)); + return 1; + } + + /** + * Returns true if the [Unit] has the given unit state. + * + * @param [UnitState] state : an unit state + * @return bool hasState + */ + int HasUnitState(lua_State* L, Unit* unit) + { + uint32 state = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, unit->HasUnitState(state)); + return 1; + } + + /*int IsVisible(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsVisible()); + return 1; + }*/ + + /*int IsMoving(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->isMoving()); + return 1; + }*/ + + /*int IsFlying(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->IsFlying()); + return 1; + }*/ + + /** + * Returns the [Unit]'s owner. + * + * @return [Unit] owner + */ + int GetOwner(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetOwner()); + return 1; + } + + /** + * Returns the [Unit]'s owner's GUID. + * + * @return ObjectGuid ownerGUID + */ + int GetOwnerGUID(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetOwnerGUID()); + return 1; + } + + /** + * Returns the [Unit]'s mount's modelID. + * + * @return uint32 mountId : displayId of the mount + */ + int GetMountId(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetMountID()); + return 1; + } + + /** + * Returns the [Unit]'s creator's GUID. + * + * @return ObjectGuid creatorGUID + */ + int GetCreatorGUID(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetCreatorGUID()); + return 1; + } + + /** + * Returns the [Unit]'s charmer's GUID. + * + * @return ObjectGuid charmerGUID + */ + int GetCharmerGUID(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetCharmerGUID()); + return 1; + } + + /** + * Returns the GUID of the [Unit]'s charmed entity. + * + * @return ObjectGuid charmedGUID + */ + int GetCharmGUID(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetCharmGUID()); + return 1; + } + + /** + * Returns the GUID of the [Unit]'s pet. + * + * @return ObjectGuid petGUID + */ + int GetPetGUID(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetPetGUID()); + return 1; + } + + /** + * Returns the GUID of the [Unit]'s charmer or owner. + * + * @return ObjectGuid controllerGUID + */ + int GetControllerGUID(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetCharmerOrOwnerGUID()); + return 1; + } + + /** + * Returns the GUID of the [Unit]'s charmer or owner or its own GUID. + * + * @return ObjectGuid controllerGUID + */ + int GetControllerGUIDS(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetCharmerOrOwnerOrOwnGUID()); + return 1; + } + + /** + * Returns [Unit]'s specified stat + * + * @param uint32 statType + * @return float stat + */ + int GetStat(lua_State* L, Unit* unit) + { + uint32 stat = Eluna::CHECKVAL(L, 2); + + if (stat >= MAX_STATS) + return 1; + + Eluna::Push(L, unit->GetStat((Stats)stat)); + return 1; + } + + /** + * Returns the [Unit]'s base spell power + * + * @param uint32 spellSchool + * @return uint32 spellPower + */ + int GetBaseSpellPower(lua_State* L, Unit* unit) + { + uint32 spellschool = Eluna::CHECKVAL(L, 2); + + if (spellschool >= MAX_SPELL_SCHOOL) + return 1; + + Eluna::Push(L, unit->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + spellschool)); + return 1; + } + + /** + * Returns the [Unit]'s current victim target or nil. + * + * @return [Unit] victim + */ + int GetVictim(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetVictim()); + return 1; + } + + /** + * Returns the currently casted [Spell] of given type or nil. + * + *
+     * enum CurrentSpellTypes
+     * {
+     *     CURRENT_MELEE_SPELL             = 0,
+     *     CURRENT_GENERIC_SPELL           = 1,
+     *     CURRENT_CHANNELED_SPELL         = 2,
+     *     CURRENT_AUTOREPEAT_SPELL        = 3
+     * };
+     * 
+ * + * @param [CurrentSpellTypes] spellType + * @return [Spell] castedSpell + */ + int GetCurrentSpell(lua_State* L, Unit* unit) + { + uint32 type = Eluna::CHECKVAL(L, 2); + if (type >= CURRENT_MAX_SPELL) + return luaL_argerror(L, 2, "valid CurrentSpellTypes expected"); + + Eluna::Push(L, unit->GetCurrentSpell(type)); + return 1; + } + + /** + * Returns the [Unit]'s current stand state. + * + * @return uint8 standState + */ + int GetStandState(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->getStandState()); + return 1; + } + + /** + * Returns the [Unit]'s current display ID. + * + * @return uint32 displayId + */ + int GetDisplayId(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetDisplayId()); + return 1; + } + + /** + * Returns the [Unit]'s native/original display ID. + * + * @return uint32 displayId + */ + int GetNativeDisplayId(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetNativeDisplayId()); + return 1; + } + + /** + * Returns the [Unit]'s level. + * + * @return uint8 level + */ + int GetLevel(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetLevel()); + return 1; + } + + /** + * Returns the [Unit]'s health amount. + * + * @return uint32 healthAmount + */ + int GetHealth(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetHealth()); + return 1; + } + + Powers PowerSelectorHelper(lua_State* L, Unit* unit, int powerType = -1) + { + if (powerType == -1) + return unit->getPowerType(); + + if (powerType < 0 || powerType >= int(MAX_POWERS)) + luaL_argerror(L, 2, "valid Powers expected"); + + return (Powers)powerType; + } + + /** + * Returns the [Unit]'s power amount for given power type. + * + * enum Powers + * { + * POWER_MANA = 0, + * POWER_RAGE = 1, + * POWER_FOCUS = 2, + * POWER_ENERGY = 3, + * POWER_HAPPINESS = 4, + * POWER_RUNE = 5, + * POWER_RUNIC_POWER = 6, + * MAX_POWERS = 7, + * POWER_ALL = 127, // default for class? + * POWER_HEALTH = 0xFFFFFFFE // (-2 as signed value) + * }; + * + * @param int type = -1 : a valid power type from [Powers] or -1 for the [Unit]'s current power type + * @return uint32 powerAmount + */ + int GetPower(lua_State* L, Unit* unit) + { + int type = Eluna::CHECKVAL(L, 2, -1); + Powers power = PowerSelectorHelper(L, unit, type); + + Eluna::Push(L, unit->GetPower(power)); + return 1; + } + + /** + * Returns the [Unit]'s max power amount for given power type. + * + * enum Powers + * { + * POWER_MANA = 0, + * POWER_RAGE = 1, + * POWER_FOCUS = 2, + * POWER_ENERGY = 3, + * POWER_HAPPINESS = 4, + * POWER_RUNE = 5, + * POWER_RUNIC_POWER = 6, + * MAX_POWERS = 7, + * POWER_ALL = 127, // default for class? + * POWER_HEALTH = 0xFFFFFFFE // (-2 as signed value) + * }; + * + * @param int type = -1 : a valid power type from [Powers] or -1 for the [Unit]'s current power type + * @return uint32 maxPowerAmount + */ + int GetMaxPower(lua_State* L, Unit* unit) + { + int type = Eluna::CHECKVAL(L, 2, -1); + Powers power = PowerSelectorHelper(L, unit, type); + + Eluna::Push(L, unit->GetMaxPower(power)); + return 1; + } + + /** + * Returns the [Unit]'s power percent for given power type. + * + * enum Powers + * { + * POWER_MANA = 0, + * POWER_RAGE = 1, + * POWER_FOCUS = 2, + * POWER_ENERGY = 3, + * POWER_HAPPINESS = 4, + * POWER_RUNE = 5, + * POWER_RUNIC_POWER = 6, + * MAX_POWERS = 7, + * POWER_ALL = 127, // default for class? + * POWER_HEALTH = 0xFFFFFFFE // (-2 as signed value) + * }; + * + * @param int type = -1 : a valid power type from [Powers] or -1 for the [Unit]'s current power type + * @return float powerPct + */ + int GetPowerPct(lua_State* L, Unit* unit) + { + int type = Eluna::CHECKVAL(L, 2, -1); + Powers power = PowerSelectorHelper(L, unit, type); + + float percent = ((float)unit->GetPower(power) / (float)unit->GetMaxPower(power)) * 100.0f; + + Eluna::Push(L, percent); + return 1; + } + + /** + * Returns the [Unit]'s current power type. + * + * enum Powers + * { + * POWER_MANA = 0, + * POWER_RAGE = 1, + * POWER_FOCUS = 2, + * POWER_ENERGY = 3, + * POWER_HAPPINESS = 4, + * POWER_RUNE = 5, + * POWER_RUNIC_POWER = 6, + * MAX_POWERS = 7, + * POWER_ALL = 127, // default for class? + * POWER_HEALTH = 0xFFFFFFFE // (-2 as signed value) + * }; + * + * @return [Powers] powerType + */ + int GetPowerType(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->getPowerType()); + return 1; + } + + /** + * Returns the [Unit]'s max health. + * + * @return uint32 maxHealth + */ + int GetMaxHealth(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetMaxHealth()); + return 1; + } + + /** + * Returns the [Unit]'s health percent. + * + * @return float healthPct + */ + int GetHealthPct(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetHealthPct()); + return 1; + } + + /** + * Returns the [Unit]'s gender. + * + * @return uint8 gender : 0 for male, 1 for female and 2 for none + */ + int GetGender(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->getGender()); + return 1; + } + + /** + * Returns the [Unit]'s race ID. + * + * @return [Races] race + */ + int GetRace(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->getRace()); + return 1; + } + + /** + * Returns the [Unit]'s class ID. + * + * @return [Classes] class + */ + int GetClass(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->getClass()); + return 1; + } + + /** + * Returns the race mask + * + * @return uint32 racemask + */ + int GetRaceMask(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->getRaceMask()); + return 1; + } + + /** + * Returns the class mask + * + * @return uint32 classmask + */ + int GetClassMask(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->getClassMask()); + return 1; + } + + /** + * Returns the [Unit]'s creature type ID (enumerated in CreatureType.dbc). + * + *
+     * enum CreatureType
+     * {
+     *     CREATURE_TYPE_BEAST            = 1,
+     *     CREATURE_TYPE_DRAGONKIN        = 2,
+     *     CREATURE_TYPE_DEMON            = 3,
+     *     CREATURE_TYPE_ELEMENTAL        = 4,
+     *     CREATURE_TYPE_GIANT            = 5,
+     *     CREATURE_TYPE_UNDEAD           = 6,
+     *     CREATURE_TYPE_HUMANOID         = 7,
+     *     CREATURE_TYPE_CRITTER          = 8,
+     *     CREATURE_TYPE_MECHANICAL       = 9,
+     *     CREATURE_TYPE_NOT_SPECIFIED    = 10,
+     *     CREATURE_TYPE_TOTEM            = 11,
+     *     CREATURE_TYPE_NON_COMBAT_PET   = 12,     // This and below is TBC+
+     *     CREATURE_TYPE_GAS_CLOUD        = 13
+     * };
+     * 
+ * + * @return [CreatureType] creatureType + */ + int GetCreatureType(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetCreatureType()); + return 1; + } + + /** + * Returns the [Unit]'s class' name in given or default locale or nil. + * + *
+     * enum LocaleConstant
+     * {
+     *     LOCALE_enUS = 0,
+     *     LOCALE_koKR = 1,
+     *     LOCALE_frFR = 2,
+     *     LOCALE_deDE = 3,
+     *     LOCALE_zhCN = 4,
+     *     LOCALE_zhTW = 5,
+     *     LOCALE_esES = 6,
+     *     LOCALE_esMX = 7,
+     *     LOCALE_ruRU = 8
+     * };
+     * 
+ * + * @param [LocaleConstant] locale = DEFAULT_LOCALE + * @return string className : class name or nil + */ + int GetClassAsString(lua_State* L, Unit* unit) + { + uint8 locale = Eluna::CHECKVAL(L, 2, DEFAULT_LOCALE); + if (locale >= TOTAL_LOCALES) + return luaL_argerror(L, 2, "valid LocaleConstant expected"); + + const ChrClassesEntry* entry = sChrClassesStore.LookupEntry(unit->getClass()); + if (!entry) + return 1; + + Eluna::Push(L, entry->name[locale]); + return 1; + } + + /** + * Returns the [Unit]'s race's name in given or default locale or nil. + * + *
+     * enum LocaleConstant
+     * {
+     *     LOCALE_enUS = 0,
+     *     LOCALE_koKR = 1,
+     *     LOCALE_frFR = 2,
+     *     LOCALE_deDE = 3,
+     *     LOCALE_zhCN = 4,
+     *     LOCALE_zhTW = 5,
+     *     LOCALE_esES = 6,
+     *     LOCALE_esMX = 7,
+     *     LOCALE_ruRU = 8
+     * };
+     * 
+ * + * @param [LocaleConstant] locale = DEFAULT_LOCALE : locale to return the race name in + * @return string raceName : race name or nil + */ + int GetRaceAsString(lua_State* L, Unit* unit) + { + uint8 locale = Eluna::CHECKVAL(L, 2, DEFAULT_LOCALE); + if (locale >= TOTAL_LOCALES) + return luaL_argerror(L, 2, "valid LocaleConstant expected"); + + const ChrRacesEntry* entry = sChrRacesStore.LookupEntry(unit->getRace()); + if (!entry) + return 1; + + Eluna::Push(L, entry->name[locale]); + return 1; + } + + /** + * Returns the [Unit]'s faction ID. + * + * @return uint32 faction + */ + int GetFaction(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetFaction()); + return 1; + } + + /** + * Returns the [Aura] of the given spell entry on the [Unit] or nil. + * + * @param uint32 spellID : entry of the aura spell + * @return [Aura] aura : aura object or nil + */ + int GetAura(lua_State* L, Unit* unit) + { + uint32 spellID = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, unit->GetAura(spellID)); + return 1; + } + + /** + * Returns a table containing friendly [Unit]'s within given range of the [Unit]. + * + * @param float range = 533.333 : search radius + * @return table friendyUnits : table filled with friendly units + */ + int GetFriendlyUnitsInRange(lua_State* L, Unit* unit) + { + float range = Eluna::CHECKVAL(L, 2, SIZE_OF_GRIDS); + + std::list list; + + Acore::AnyFriendlyUnitInObjectRangeCheck checker(unit, unit, range); + Acore::UnitListSearcher searcher(unit, list, checker); + Cell::VisitAllObjects(unit, searcher, range); + + ElunaUtil::ObjectGUIDCheck guidCheck(unit->GET_GUID()); + list.remove_if(guidCheck); + + lua_createtable(L, list.size(), 0); + int tbl = lua_gettop(L); + uint32 i = 0; + + for (std::list::const_iterator it = list.begin(); it != list.end(); ++it) + { + Eluna::Push(L, *it); + lua_rawseti(L, tbl, ++i); + } + + lua_settop(L, tbl); + return 1; + } + + /** + * Returns a table containing unfriendly [Unit]'s within given range of the [Unit]. + * + * @param float range = 533.333 : search radius + * @return table unfriendyUnits : table filled with unfriendly units + */ + int GetUnfriendlyUnitsInRange(lua_State* L, Unit* unit) + { + float range = Eluna::CHECKVAL(L, 2, SIZE_OF_GRIDS); + + std::list list; + Acore::AnyUnfriendlyUnitInObjectRangeCheck checker(unit, unit, range); + Acore::UnitListSearcher searcher(unit, list, checker); + Cell::VisitAllObjects(unit, searcher, range); + ElunaUtil::ObjectGUIDCheck guidCheck(unit->GET_GUID()); + list.remove_if(guidCheck); + + lua_createtable(L, list.size(), 0); + int tbl = lua_gettop(L); + uint32 i = 0; + + for (std::list::const_iterator it = list.begin(); it != list.end(); ++it) + { + Eluna::Push(L, *it); + lua_rawseti(L, tbl, ++i); + } + + lua_settop(L, tbl); + return 1; + } + +#if (!defined(TBC) && !defined(CLASSIC)) + /** + * Returns [Unit]'s [Vehicle] methods + * + * @return [Vehicle] vehicle + */ + int GetVehicleKit(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetVehicleKit()); + return 1; + } + + /* + int GetVehicle(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetVehicle()); + return 1; + } + */ + + /** + * Returns the Critter Guid + * + * @return ObjectGuid critterGuid + */ + int GetCritterGUID(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetCritterGUID()); + return 1; + } +#endif + + /** + * Returns the [Unit]'s speed of given [UnitMoveType]. + * + *
+     * enum UnitMoveType
+     * {
+     *     MOVE_WALK           = 0,
+     *     MOVE_RUN            = 1,
+     *     MOVE_RUN_BACK       = 2,
+     *     MOVE_SWIM           = 3,
+     *     MOVE_SWIM_BACK      = 4,
+     *     MOVE_TURN_RATE      = 5,
+     *     MOVE_FLIGHT         = 6,
+     *     MOVE_FLIGHT_BACK    = 7,
+     *     MOVE_PITCH_RATE     = 8
+     * };
+     * 
+ * + * @param [UnitMoveType] type + * @return float speed + */ + int GetSpeed(lua_State* L, Unit* unit) + { + uint32 type = Eluna::CHECKVAL(L, 2); + if (type >= MAX_MOVE_TYPE) + return luaL_argerror(L, 2, "valid UnitMoveType expected"); + + Eluna::Push(L, unit->GetSpeed((UnitMoveType)type)); + + return 1; + } + + /** + * Returns the [Unit]'s speed rate of given [UnitMoveType]. + * + *
+    * enum UnitMoveType
+    * {
+    *     MOVE_WALK           = 0,
+    *     MOVE_RUN            = 1,
+    *     MOVE_RUN_BACK       = 2,
+    *     MOVE_SWIM           = 3,
+    *     MOVE_SWIM_BACK      = 4,
+    *     MOVE_TURN_RATE      = 5,
+    *     MOVE_FLIGHT         = 6,
+    *     MOVE_FLIGHT_BACK    = 7,
+    *     MOVE_PITCH_RATE     = 8
+    * };
+    * 
+ * + * @param [UnitMoveType] type + * @return float speed + */ + int GetSpeedRate(lua_State* L, Unit* unit) + { + uint32 type = Eluna::CHECKVAL(L, 2); + if (type >= MAX_MOVE_TYPE) + { + return luaL_argerror(L, 2, "valid UnitMoveType expected"); + } + + Eluna::Push(L, unit->GetSpeedRate((UnitMoveType)type)); + + return 1; + } + + /** + * Returns the current movement type for this [Unit]. + * + *
+     * enum MovementGeneratorType
+     * {
+     *     IDLE_MOTION_TYPE                = 0,
+     *     RANDOM_MOTION_TYPE              = 1,
+     *     WAYPOINT_MOTION_TYPE            = 2,
+     *     MAX_DB_MOTION_TYPE              = 3,
+     *     ANIMAL_RANDOM_MOTION_TYPE       = 3, // TC
+     *
+     *     CONFUSED_MOTION_TYPE            = 4,
+     *     CHASE_MOTION_TYPE               = 5,
+     *     HOME_MOTION_TYPE                = 6,
+     *     FLIGHT_MOTION_TYPE              = 7,
+     *     POINT_MOTION_TYPE               = 8,
+     *     FLEEING_MOTION_TYPE             = 9,
+     *     DISTRACT_MOTION_TYPE            = 10,
+     *     ASSISTANCE_MOTION_TYPE          = 11,
+     *     ASSISTANCE_DISTRACT_MOTION_TYPE = 12,
+     *     TIMED_FLEEING_MOTION_TYPE       = 13,
+     *     FOLLOW_MOTION_TYPE              = 14,
+     *     EFFECT_MOTION_TYPE              = 15, // mangos
+     *     ROTATE_MOTION_TYPE              = 15, // TC
+     *     EFFECT_MOTION_TYPE              = 16, // TC
+     *     NULL_MOTION_TYPE                = 17, // TC
+     * };
+     * 
+ * + * @return [MovementGeneratorType] movementType + */ + int GetMovementType(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->GetMotionMaster()->GetCurrentMovementGeneratorType()); + return 1; + } + + /** + * Returns the [Unit]'s attackers. + * + * @return table attackers : table of [Unit]s attacking the unit + */ + int GetAttackers(lua_State* L, Unit* unit) + { + const Unit::AttackerSet& attackers = unit->getAttackers(); + + lua_newtable(L); + int table = lua_gettop(L); + uint32 i = 1; + for (Unit* attacker : attackers) + { + if (!attacker) + { + continue; + } + + Eluna::Push(L, attacker); + lua_rawseti(L, table, i); + ++i; + } + + lua_settop(L, table); // push table to top of stack + return 1; + } + + /** + * Sets the [Unit]'s owner GUID to given GUID. + * + * @param ObjectGuid guid : new owner guid + */ + int SetOwnerGUID(lua_State* L, Unit* unit) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + + unit->SetOwnerGUID(guid); + return 0; + } + + /** + * Sets the [Unit]'s PvP on or off. + * + * @param bool apply = true : true if set on, false if off + */ + int SetPvP(lua_State* L, Unit* unit) + { + bool apply = Eluna::CHECKVAL(L, 2, true); + + unit->SetPvP(apply); + return 0; + } + + /** + * Sets the [Unit]'s sheath state. + * + * enum SheathState + * { + * SHEATH_STATE_UNARMED = 0, // non prepared weapon + * SHEATH_STATE_MELEE = 1, // prepared melee weapon + * SHEATH_STATE_RANGED = 2 // prepared ranged weapon + * }; + * + * @param [SheathState] sheathState : valid SheathState + */ + int SetSheath(lua_State* L, Unit* unit) + { + uint32 sheathed = Eluna::CHECKVAL(L, 2); + if (sheathed >= MAX_SHEATH_STATE) + return luaL_argerror(L, 2, "valid SheathState expected"); + + unit->SetSheath((SheathState)sheathed); + return 0; + } + + /** + * Sets the [Unit]'s name internally. + * + * @param string name : new name + */ + int SetName(lua_State* L, Unit* unit) + { + const char* name = Eluna::CHECKVAL(L, 2); + if (std::string(name).length() > 0) + unit->SetName(name); + return 0; + } + + /** + * Sets the [Unit]'s speed of given [UnitMoveType] to given speed. + * If forced, packets sent to clients forcing the visual change. + * + *
+     * enum UnitMoveType
+     * {
+     *     MOVE_WALK           = 0,
+     *     MOVE_RUN            = 1,
+     *     MOVE_RUN_BACK       = 2,
+     *     MOVE_SWIM           = 3,
+     *     MOVE_SWIM_BACK      = 4,
+     *     MOVE_TURN_RATE      = 5,
+     *     MOVE_FLIGHT         = 6,
+     *     MOVE_FLIGHT_BACK    = 7,
+     *     MOVE_PITCH_RATE     = 8
+     * };
+     * 
+ * + * @param [UnitMoveType] type + * @param float rate + * @param bool forced = false + */ + int SetSpeed(lua_State* L, Unit* unit) + { + uint32 type = Eluna::CHECKVAL(L, 2); + float rate = Eluna::CHECKVAL(L, 3); + bool forced = Eluna::CHECKVAL(L, 4, false); + (void)forced; // ensure that the variable is referenced in order to pass compiler checks + if (type >= MAX_MOVE_TYPE) + return luaL_argerror(L, 2, "valid UnitMoveType expected"); + + unit->SetSpeed((UnitMoveType)type, rate); + + return 0; + } + + /** + * Sets the [Unit]'s speed rate of given [UnitMoveType] to given rate. + * If forced, packets sent to clients forcing the visual change. + * + *
+     * enum UnitMoveType
+     * {
+     *     MOVE_WALK           = 0,
+     *     MOVE_RUN            = 1,
+     *     MOVE_RUN_BACK       = 2,
+     *     MOVE_SWIM           = 3,
+     *     MOVE_SWIM_BACK      = 4,
+     *     MOVE_TURN_RATE      = 5,
+     *     MOVE_FLIGHT         = 6,
+     *     MOVE_FLIGHT_BACK    = 7,
+     *     MOVE_PITCH_RATE     = 8
+     * };
+     * 
+ * + * @param [UnitMoveType] type + * @param float rate + * @param bool forced = false + */ + int SetSpeedRate(lua_State* L, Unit* unit) + { + uint32 type = Eluna::CHECKVAL(L, 2); + float rate = Eluna::CHECKVAL(L, 3); + if (type >= MAX_MOVE_TYPE) + return luaL_argerror(L, 2, "valid UnitMoveType expected"); + + unit->SetSpeedRate((UnitMoveType)type, rate); + + return 0; + } + + /** + * Sets the [Unit]'s faction. + * + * @param uint32 faction : new faction ID + */ + int SetFaction(lua_State* L, Unit* unit) + { + uint32 factionId = Eluna::CHECKVAL(L, 2); + + unit->SetFaction(factionId); + + return 0; + } + + /** + * Sets the [Unit]'s level. + * + * @param uint8 level : new level + */ + int SetLevel(lua_State* L, Unit* unit) + { + uint8 newlevel = Eluna::CHECKVAL(L, 2); + + if (newlevel < 1) + return luaL_argerror(L, 2, "level cannot be below 1"); + + if (Player* player = unit->ToPlayer()) + { + player->GiveLevel(newlevel); + player->InitTalentForLevel(); + player->SetUInt32Value(PLAYER_XP, 0); + } + else + unit->SetLevel(newlevel); + + return 0; + } + + /** + * Sets the [Unit]'s health. + * + * @param uint32 health : new health + */ + int SetHealth(lua_State* L, Unit* unit) + { + uint32 amt = Eluna::CHECKVAL(L, 2); + unit->SetHealth(amt); + return 0; + } + + /** + * Sets the [Unit]'s max health. + * + * @param uint32 maxHealth : new max health + */ + int SetMaxHealth(lua_State* L, Unit* unit) + { + uint32 amt = Eluna::CHECKVAL(L, 2); + unit->SetMaxHealth(amt); + return 0; + } + + /** + * Sets the [Unit]'s power amount for the given power type. + * + * enum Powers + * { + * POWER_MANA = 0, + * POWER_RAGE = 1, + * POWER_FOCUS = 2, + * POWER_ENERGY = 3, + * POWER_HAPPINESS = 4, + * POWER_RUNE = 5, + * POWER_RUNIC_POWER = 6, + * MAX_POWERS = 7, + * POWER_ALL = 127, // default for class? + * POWER_HEALTH = 0xFFFFFFFE // (-2 as signed value) + * }; + * + * @param uint32 amount : new power amount + * @param int type = -1 : a valid power type from [Powers] or -1 for the [Unit]'s current power type + */ + int SetPower(lua_State* L, Unit* unit) + { + uint32 amt = Eluna::CHECKVAL(L, 2); + int type = Eluna::CHECKVAL(L, 3, -1); + Powers power = PowerSelectorHelper(L, unit, type); + + unit->SetPower(power, amt); + return 0; + } + + /** + * modifies the [Unit]'s power amount for the given power type. + * + * enum Powers + * { + * POWER_MANA = 0, + * POWER_RAGE = 1, + * POWER_FOCUS = 2, + * POWER_ENERGY = 3, + * POWER_HAPPINESS = 4, + * POWER_RUNE = 5, + * POWER_RUNIC_POWER = 6, + * MAX_POWERS = 7, + * POWER_ALL = 127, // default for class? + * POWER_HEALTH = 0xFFFFFFFE // (-2 as signed value) + * }; + * + * @param int32 amount : amount to modify + * @param int type = -1 : a valid power type from [Powers] or -1 for the [Unit]'s current power type + */ + int ModifyPower(lua_State* L, Unit* unit) + { + int32 amt = Eluna::CHECKVAL(L, 2); + int type = Eluna::CHECKVAL(L, 3, -1); + Powers power = PowerSelectorHelper(L, unit, type); + + unit->ModifyPower(power, amt); + return 0; + } + + /** + * Sets the [Unit]'s max power amount for the given power type. + * + * enum Powers + * { + * POWER_MANA = 0, + * POWER_RAGE = 1, + * POWER_FOCUS = 2, + * POWER_ENERGY = 3, + * POWER_HAPPINESS = 4, + * POWER_RUNE = 5, + * POWER_RUNIC_POWER = 6, + * MAX_POWERS = 7, + * POWER_ALL = 127, // default for class? + * POWER_HEALTH = 0xFFFFFFFE // (-2 as signed value) + * }; + * + * @param int type = -1 : a valid power type from [Powers] or -1 for the [Unit]'s current power type + * @param uint32 maxPower : new max power amount + */ + int SetMaxPower(lua_State* L, Unit* unit) + { + int type = Eluna::CHECKVAL(L, 2, -1); + uint32 amt = Eluna::CHECKVAL(L, 3); + Powers power = PowerSelectorHelper(L, unit, type); + + unit->SetMaxPower(power, amt); + return 0; + } + + /** + * Sets the [Unit]'s power type. + * + * enum Powers + * { + * POWER_MANA = 0, + * POWER_RAGE = 1, + * POWER_FOCUS = 2, + * POWER_ENERGY = 3, + * POWER_HAPPINESS = 4, + * POWER_RUNE = 5, + * POWER_RUNIC_POWER = 6, + * MAX_POWERS = 7, + * POWER_ALL = 127, // default for class? + * POWER_HEALTH = 0xFFFFFFFE // (-2 as signed value) + * }; + * + * @param [Powers] type : a valid power type + */ + int SetPowerType(lua_State* L, Unit* unit) + { + uint32 type = Eluna::CHECKVAL(L, 2); + if (type >= int(MAX_POWERS)) + return luaL_argerror(L, 2, "valid Powers expected"); + + unit->setPowerType((Powers)type); + return 0; + } + + /** + * Sets the [Unit]'s modelID. + * + * @param uint32 displayId + */ + int SetDisplayId(lua_State* L, Unit* unit) + { + uint32 model = Eluna::CHECKVAL(L, 2); + unit->SetDisplayId(model); + return 0; + } + + /** + * Sets the [Unit]'s native/default modelID. + * + * @param uint32 displayId + */ + int SetNativeDisplayId(lua_State* L, Unit* unit) + { + uint32 model = Eluna::CHECKVAL(L, 2); + unit->SetNativeDisplayId(model); + return 0; + } + + /** + * Sets the [Unit]'s facing/orientation. + * + * @param uint32 orientation + */ + int SetFacing(lua_State* L, Unit* unit) + { + float o = Eluna::CHECKVAL(L, 2); + unit->SetFacingTo(o); + return 0; + } + + /** + * Sets the [Unit] to face the given [WorldObject]'s direction. + * + * @param [WorldObject] target + */ + int SetFacingToObject(lua_State* L, Unit* unit) + { + WorldObject* obj = Eluna::CHECKOBJ(L, 2); + unit->SetFacingToObject(obj); + return 0; + } + + /** + * Sets creator GUID + * + * @param ObjectGuid guid + */ + int SetCreatorGUID(lua_State* L, Unit* unit) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + unit->SetCreatorGUID(guid); + return 0; + } + + /** + * Sets pet GUID + * + * @param ObjectGuid guid + */ + int SetPetGUID(lua_State* L, Unit* unit) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + unit->SetPetGUID(guid); + return 0; + } + + /** + * Toggles (Sets) [Unit]'s water walking + * + * @param bool enable = true + */ + int SetWaterWalk(lua_State* L, Unit* unit) + { + bool enable = Eluna::CHECKVAL(L, 2, true); + unit->SetWaterWalking(enable); + return 0; + } + + /** + * Sets the [Unit]'s stand state + * + * @param uint8 state : stand state + */ + int SetStandState(lua_State* L, Unit* unit) + { + uint8 state = Eluna::CHECKVAL(L, 2); + unit->SetStandState(state); + return 0; + } + + /** + * Sets the [Unit] in combat with the `enemy` [Unit]. + * + * @param [Unit] enemy : the [Unit] to start combat with + */ + int SetInCombatWith(lua_State* L, Unit* unit) + { + Unit* enemy = Eluna::CHECKOBJ(L, 2); + unit->SetInCombatWith(enemy); + return 0; + } + +#if (!defined(TBC) && !defined(CLASSIC)) + /** + * Sets the [Unit]'s FFA flag on or off. + * + * @param bool apply = true + */ + int SetFFA(lua_State* L, Unit* unit) + { + bool apply = Eluna::CHECKVAL(L, 2, true); + + if (apply) + { + unit->SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP); + for (Unit::ControlSet::iterator itr = unit->m_Controlled.begin(); itr != unit->m_Controlled.end(); ++itr) + (*itr)->SetByteValue(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP); + } + else + { + unit->RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP); + for (Unit::ControlSet::iterator itr = unit->m_Controlled.begin(); itr != unit->m_Controlled.end(); ++itr) + (*itr)->RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP); + } + return 0; + } + + /** + * Sets the [Unit]'s sanctuary flag on or off. + * + * @param bool apply = true + */ + int SetSanctuary(lua_State* L, Unit* unit) + { + bool apply = Eluna::CHECKVAL(L, 2, true); + + if (apply) + { + unit->SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY); + unit->CombatStop(); + unit->CombatStopWithPets(); + } + else + unit->RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY); + + return 0; + } + + int SetCritterGUID(lua_State* L, Unit* unit) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + unit->SetCritterGUID(guid); + return 0; + } +#endif + + /*int SetStunned(lua_State* L, Unit* unit) + { + bool apply = Eluna::CHECKVAL(L, 2, true); + unit->SetControlled(apply, UNIT_STATE_STUNNED); + return 0; + }*/ + + /** + * Roots the [Unit] to the ground, if 'false' specified, unroots the [Unit]. + * + * @param bool apply = true + */ + int SetRooted(lua_State* L, Unit* unit) + { + bool apply = Eluna::CHECKVAL(L, 2, true); + unit->SetControlled(apply, UNIT_STATE_ROOT); + return 0; + } + + /** + * Confuses the [Unit], if 'false' specified, the [Unit] is no longer confused. + * + * @param bool apply = true + */ + int SetConfused(lua_State* L, Unit* unit) + { + bool apply = Eluna::CHECKVAL(L, 2, true); + unit->SetControlled(apply, UNIT_STATE_CONFUSED); + return 0; + } + + /** + * Fears the [Unit], if 'false' specified, the [Unit] is no longer feared. + * + * @param bool apply = true + */ + int SetFeared(lua_State* L, Unit* unit) + { + bool apply = Eluna::CHECKVAL(L, 2, true); + unit->SetControlled(apply, UNIT_STATE_FLEEING); + return 0; + } + + /*int SetCanFly(lua_State* L, Unit* unit) + { + bool apply = Eluna::CHECKVAL(L, 2, true); + unit->SetCanFly(apply); + return 0; + }*/ + + /*int SetVisible(lua_State* L, Unit* unit) + { + bool x = Eluna::CHECKVAL(L, 2, true); + unit->SetVisible(x); + return 0; + }*/ + + /** + * Clears the [Unit]'s threat list. + */ + int ClearThreatList(lua_State* /*L*/, Unit* unit) + { + unit->GetThreatMgr().ClearAllThreat(); + return 0; + } + + /** + * Returns the [Unit]'s threat list. + * + * @return table threatList : table of [Unit]s in the threat list + */ + int GetThreatList(lua_State* L, Unit* unit) + { + if (!unit->CanHaveThreatList()) + { + Eluna::Push(L); + return 1; + } + + ThreatContainer::StorageType const& list = unit->GetThreatMgr().GetThreatList(); + + lua_newtable(L); + int table = lua_gettop(L); + uint32 i = 1; + for (ThreatReference* item : list) + { + if (!item) + { + continue; + } + Unit* victim = item->GetVictim(); + if (!victim) + { + continue; + } + + Eluna::Push(L, victim); + lua_rawseti(L, table, i); + ++i; + } + + lua_settop(L, table); // push table to top of stack + return 1; + } + + /** + * Mounts the [Unit] on the given displayID/modelID. + * + * @param uint32 displayId + */ + int Mount(lua_State* L, Unit* unit) + { + uint32 displayId = Eluna::CHECKVAL(L, 2); + + unit->Mount(displayId); + return 0; + } + + /** + * Dismounts the [Unit]. + */ + int Dismount(lua_State* /*L*/, Unit* unit) + { + if (unit->IsMounted()) + { + unit->Dismount(); + unit->RemoveAurasByType(SPELL_AURA_MOUNTED); + } + + return 0; + } + + /** + * Makes the [Unit] perform the given emote. + * + * @param uint32 emoteId + */ + int PerformEmote(lua_State* L, Unit* unit) + { + unit->HandleEmoteCommand(Eluna::CHECKVAL(L, 2)); + return 0; + } + + /** + * Makes the [Unit] perform the given emote continuously. + * + * @param uint32 emoteId + */ + int EmoteState(lua_State* L, Unit* unit) + { + uint32 emoteId = Eluna::CHECKVAL(L, 2); + + unit->SetUInt32Value(UNIT_NPC_EMOTESTATE, emoteId); + return 0; + } + + /** + * Returns calculated percentage from Health + * + * @return int32 percentage + */ + int CountPctFromCurHealth(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->CountPctFromCurHealth(Eluna::CHECKVAL(L, 2))); + return 1; + } + + /** + * Returns calculated percentage from Max Health + * + * @return int32 percentage + */ + int CountPctFromMaxHealth(lua_State* L, Unit* unit) + { + Eluna::Push(L, unit->CountPctFromMaxHealth(Eluna::CHECKVAL(L, 2))); + return 1; + } + + /** + * Sends chat message to [Player] + * + * @param uint8 type : chat, whisper, etc + * @param uint32 lang : language to speak + * @param string msg + * @param [Player] target + */ + int SendChatMessageToPlayer(lua_State* L, Unit* unit) + { + uint8 type = Eluna::CHECKVAL(L, 2); + uint32 lang = Eluna::CHECKVAL(L, 3); + std::string msg = Eluna::CHECKVAL(L, 4); + Player* target = Eluna::CHECKOBJ(L, 5); + + if (type >= MAX_CHAT_MSG_TYPE) + return luaL_argerror(L, 2, "valid ChatMsg expected"); + if (lang >= LANGUAGES_COUNT) + return luaL_argerror(L, 3, "valid Language expected"); + + WorldPacket data; + ChatHandler::BuildChatPacket(data, ChatMsg(type), Language(lang), unit, target, msg); + target->GetSession()->SendPacket(&data); + return 0; + } + + /*static void PrepareMove(Unit* unit) + { + unit->GetMotionMaster()->MovementExpired(); // Chase + unit->StopMoving(); // Some + unit->GetMotionMaster()->Clear(); // all + }*/ + + /** + * Stops the [Unit]'s movement + */ + int MoveStop(lua_State* /*L*/, Unit* unit) + { + unit->StopMoving(); + return 0; + } + + /** + * The [Unit]'s movement expires and clears movement + * + * @param bool reset = true : cleans movement + */ + int MoveExpire(lua_State* L, Unit* unit) + { + bool reset = Eluna::CHECKVAL(L, 2, true); + unit->GetMotionMaster()->MovementExpired(reset); + return 0; + } + + /** + * Clears the [Unit]'s movement + * + * @param bool reset = true : clean movement + */ + int MoveClear(lua_State* L, Unit* unit) + { + bool reset = Eluna::CHECKVAL(L, 2, true); + unit->GetMotionMaster()->Clear(reset); + return 0; + } + + /** + * The [Unit] will be idle + */ + int MoveIdle(lua_State* /*L*/, Unit* unit) + { + unit->GetMotionMaster()->MoveIdle(); + return 0; + } + + /** + * The [Unit] will move at random + * + * @param float radius : limit on how far the [Unit] will move at random + */ + int MoveRandom(lua_State* L, Unit* unit) + { + float radius = Eluna::CHECKVAL(L, 2); + float x, y, z; + unit->GetPosition(x, y, z); + unit->GetMotionMaster()->MoveRandom(radius); + return 0; + } + + /** + * The [Unit] will move to its set home location + */ + int MoveHome(lua_State* /*L*/, Unit* unit) + { + unit->GetMotionMaster()->MoveTargetedHome(); + return 0; + } + + /** + * The [Unit] will follow the target + * + * @param [Unit] target : target to follow + * @param float dist = 0 : distance to start following + * @param float angle = 0 + */ + int MoveFollow(lua_State* L, Unit* unit) + { + Unit* target = Eluna::CHECKOBJ(L, 2); + float dist = Eluna::CHECKVAL(L, 3, 0.0f); + float angle = Eluna::CHECKVAL(L, 4, 0.0f); + unit->GetMotionMaster()->MoveFollow(target, dist, angle); + return 0; + } + + /** + * The [Unit] will chase the target + * + * @param [Unit] target : target to chase + * @param float dist = 0 : distance start chasing + * @param float angle = 0 + */ + int MoveChase(lua_State* L, Unit* unit) + { + Unit* target = Eluna::CHECKOBJ(L, 2); + float dist = Eluna::CHECKVAL(L, 3, 0.0f); + float angle = Eluna::CHECKVAL(L, 4, 0.0f); + unit->GetMotionMaster()->MoveChase(target, dist, angle); + return 0; + } + + /** + * The [Unit] will move confused + */ + int MoveConfused(lua_State* /*L*/, Unit* unit) + { + unit->GetMotionMaster()->MoveConfused(); + return 0; + } + + /** + * The [Unit] will flee + * + * @param [Unit] target + * @param uint32 time = 0 : flee delay + */ + int MoveFleeing(lua_State* L, Unit* unit) + { + Unit* target = Eluna::CHECKOBJ(L, 2); + uint32 time = Eluna::CHECKVAL(L, 3, 0); + unit->GetMotionMaster()->MoveFleeing(target, time); + return 0; + } + + /** + * The [Unit] will move to the coordinates + * + * @param uint32 id : unique waypoint Id + * @param float x + * @param float y + * @param float z + * @param bool genPath = true : if true, generates path + */ + int MoveTo(lua_State* L, Unit* unit) + { + uint32 id = Eluna::CHECKVAL(L, 2); + float x = Eluna::CHECKVAL(L, 3); + float y = Eluna::CHECKVAL(L, 4); + float z = Eluna::CHECKVAL(L, 5); + bool genPath = Eluna::CHECKVAL(L, 6, true); + unit->GetMotionMaster()->MovePoint(id, x, y, z, genPath); + return 0; + } + +#if (!defined(TBC) && !defined(CLASSIC)) + /** + * Makes the [Unit] jump to the coordinates + * + * @param float x + * @param float y + * @param float z + * @param float zSpeed : start velocity + * @param float maxHeight : maximum height + * @param uint32 id = 0 : unique movement Id + */ + int MoveJump(lua_State* L, Unit* unit) + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + float z = Eluna::CHECKVAL(L, 4); + float zSpeed = Eluna::CHECKVAL(L, 5); + float maxHeight = Eluna::CHECKVAL(L, 6); + uint32 id = Eluna::CHECKVAL(L, 7, 0); + Position pos(x, y, z); + unit->GetMotionMaster()->MoveJump(pos, zSpeed, maxHeight, id); + return 0; + } +#endif + + /** + * The [Unit] will whisper the message to a [Player] + * + * @param string msg : message for the [Unit] to emote + * @param uint32 lang : language for the [Unit] to speak + * @param [Player] receiver : specific [Unit] to receive the message + * @param bool bossWhisper = false : is a boss whisper + */ + int SendUnitWhisper(lua_State* L, Unit* unit) + { + const char* msg = Eluna::CHECKVAL(L, 2); + uint32 lang = Eluna::CHECKVAL(L, 3); + (void)lang; // ensure that the variable is referenced in order to pass compiler checks + Player* receiver = Eluna::CHECKOBJ(L, 4); + bool bossWhisper = Eluna::CHECKVAL(L, 5, false); + if (std::string(msg).length() > 0) + unit->Whisper(msg, (Language)lang, receiver, bossWhisper); + return 0; + } + + /** + * The [Unit] will emote the message + * + * @param string msg : message for the [Unit] to emote + * @param [Unit] receiver = nil : specific [Unit] to receive the message + * @param bool bossEmote = false : is a boss emote + */ + int SendUnitEmote(lua_State* L, Unit* unit) + { + const char* msg = Eluna::CHECKVAL(L, 2); + Unit* receiver = Eluna::CHECKOBJ(L, 3, false); + bool bossEmote = Eluna::CHECKVAL(L, 4, false); + if (std::string(msg).length() > 0) + unit->TextEmote(msg, receiver, bossEmote); + return 0; + } + + /** + * The [Unit] will say the message + * + * @param string msg : message for the [Unit] to say + * @param uint32 language : language for the [Unit] to speak + */ + int SendUnitSay(lua_State* L, Unit* unit) + { + const char* msg = Eluna::CHECKVAL(L, 2); + uint32 language = Eluna::CHECKVAL(L, 3); + if (std::string(msg).length() > 0) + unit->Say(msg, (Language)language, unit); + return 0; + } + + /** + * The [Unit] will yell the message + * + * @param string msg : message for the [Unit] to yell + * @param uint32 language : language for the [Unit] to speak + */ + int SendUnitYell(lua_State* L, Unit* unit) + { + const char* msg = Eluna::CHECKVAL(L, 2); + uint32 language = Eluna::CHECKVAL(L, 3); + if (std::string(msg).length() > 0) + unit->Yell(msg, (Language)language, unit); + return 0; + } + + /** + * Unmorphs the [Unit] setting it's display ID back to the native display ID. + */ + int DeMorph(lua_State* /*L*/, Unit* unit) + { + unit->DeMorph(); + return 0; + } + + /** + * Makes the [Unit] cast the spell on the target. + * + * @param [Unit] target = nil : can be self or another unit + * @param uint32 spell : entry of a spell + * @param bool triggered = false : if true the spell is instant and has no cost + */ + int CastSpell(lua_State* L, Unit* unit) + { + Unit* target = Eluna::CHECKOBJ(L, 2, false); + uint32 spell = Eluna::CHECKVAL(L, 3); + bool triggered = Eluna::CHECKVAL(L, 4, false); + SpellInfo const* spellEntry = sSpellMgr->GetSpellInfo(spell); + if (!spellEntry) + return 0; + + unit->CastSpell(target, spell, triggered); + return 0; + } + + /** + * Casts the [Spell] at target [Unit] with custom basepoints or casters. + * See also [Unit:CastSpell]. + * + * @param [Unit] target = nil + * @param uint32 spell + * @param bool triggered = false + * @param int32 bp0 = nil : custom basepoints for [Spell] effect 1. If nil, no change is made + * @param int32 bp1 = nil : custom basepoints for [Spell] effect 2. If nil, no change is made + * @param int32 bp2 = nil : custom basepoints for [Spell] effect 3. If nil, no change is made + * @param [Item] castItem = nil + * @param ObjectGuid originalCaster = ObjectGuid() + */ + int CastCustomSpell(lua_State* L, Unit* unit) + { + Unit* target = Eluna::CHECKOBJ(L, 2, false); + uint32 spell = Eluna::CHECKVAL(L, 3); + bool triggered = Eluna::CHECKVAL(L, 4, false); + bool has_bp0 = !lua_isnoneornil(L, 5); + int32 bp0 = Eluna::CHECKVAL(L, 5, 0); + bool has_bp1 = !lua_isnoneornil(L, 6); + int32 bp1 = Eluna::CHECKVAL(L, 6, 0); + bool has_bp2 = !lua_isnoneornil(L, 7); + int32 bp2 = Eluna::CHECKVAL(L, 7, 0); + Item* castItem = Eluna::CHECKOBJ(L, 8, false); + ObjectGuid originalCaster = Eluna::CHECKVAL(L, 9, ObjectGuid()); + + unit->CastCustomSpell(target, spell, has_bp0 ? &bp0 : NULL, has_bp1 ? &bp1 : NULL, has_bp2 ? &bp2 : NULL, triggered, castItem, NULL, ObjectGuid(originalCaster)); + return 0; + } + + /** + * Makes the [Unit] cast the spell to the given coordinates, used for area effect spells. + * + * @param float x + * @param float y + * @param float z + * @param uint32 spell : entry of a spell + * @param bool triggered = false : if true the spell is instant and has no cost + */ + int CastSpellAoF(lua_State* L, Unit* unit) + { + float _x = Eluna::CHECKVAL(L, 2); + float _y = Eluna::CHECKVAL(L, 3); + float _z = Eluna::CHECKVAL(L, 4); + uint32 spell = Eluna::CHECKVAL(L, 5); + bool triggered = Eluna::CHECKVAL(L, 6, true); + unit->CastSpell(_x, _y, _z, spell, triggered); + return 0; + } + + /** + * Clears the [Unit]'s combat + */ + int ClearInCombat(lua_State* /*L*/, Unit* unit) + { + unit->ClearInCombat(); + return 0; + } + + /** + * Stops the [Unit]'s current spell cast + * + * @param uint32 spell = 0 : entry of a spell + */ + int StopSpellCast(lua_State* L, Unit* unit) + { + uint32 spellId = Eluna::CHECKVAL(L, 2, 0); + unit->CastStop(spellId); + return 0; + } + + /** + * Interrupts [Unit]'s spell state, casting, etc. + * + * if spell is not interruptible, it will return + * + * @param int32 spellType : type of spell to interrupt + * @param bool delayed = true : skips if the spell is delayed + */ + int InterruptSpell(lua_State* L, Unit* unit) + { + int spellType = Eluna::CHECKVAL(L, 2); + bool delayed = Eluna::CHECKVAL(L, 3, true); + switch (spellType) + { + case 0: + spellType = CURRENT_MELEE_SPELL; + break; + case 1: + spellType = CURRENT_GENERIC_SPELL; + break; + case 2: + spellType = CURRENT_CHANNELED_SPELL; + break; + case 3: + spellType = CURRENT_AUTOREPEAT_SPELL; + break; + default: + return luaL_argerror(L, 2, "valid CurrentSpellTypes expected"); + } + + unit->InterruptSpell((CurrentSpellTypes)spellType, delayed); + return 0; + } + + /** + * Adds the [Aura] of the given spell entry on the given target from the [Unit]. + * + * @param uint32 spell : entry of a spell + * @param [Unit] target : aura will be applied on the target + * @return [Aura] aura + */ + int AddAura(lua_State* L, Unit* unit) + { + uint32 spell = Eluna::CHECKVAL(L, 2); + Unit* target = Eluna::CHECKOBJ(L, 3); + SpellInfo const* spellEntry = sSpellMgr->GetSpellInfo(spell); + if (!spellEntry) + return 1; + + Eluna::Push(L, unit->AddAura(spell, target)); + return 1; + } + + /** + * Removes [Aura] of the given spell entry from the [Unit]. + * + * @param uint32 spell : entry of a spell + */ + int RemoveAura(lua_State* L, Unit* unit) + { + uint32 spellId = Eluna::CHECKVAL(L, 2); + unit->RemoveAurasDueToSpell(spellId); + return 0; + } + + /** + * Removes all [Aura]'s from the [Unit]. + * + * Note: talents and racials are also auras, use with caution + */ + int RemoveAllAuras(lua_State* /*L*/, Unit* unit) + { + unit->RemoveAllAuras(); + return 0; + } + +#if !defined(CLASSIC) + /** + * Removes all positive visible [Aura]'s from the [Unit]. + */ + int RemoveArenaAuras(lua_State* /*L*/, Unit* unit) + { + unit->RemoveArenaAuras(); + return 0; + } +#endif + + /** + * Adds the given unit state for the [Unit]. + * + * @param [UnitState] state + */ + int AddUnitState(lua_State* L, Unit* unit) + { + uint32 state = Eluna::CHECKVAL(L, 2); + + unit->AddUnitState(state); + return 0; + } + + /** + * Removes the given unit state from the [Unit]. + * + * @param [UnitState] state + */ + int ClearUnitState(lua_State* L, Unit* unit) + { + uint32 state = Eluna::CHECKVAL(L, 2); + + unit->ClearUnitState(state); + return 0; + } + + /** + * Makes the [Unit] teleport to given coordinates within same map. + * + * @param float x + * @param float y + * @param float z + * @param float o : orientation + */ + int NearTeleport(lua_State* L, Unit* unit) + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + float z = Eluna::CHECKVAL(L, 4); + float o = Eluna::CHECKVAL(L, 5); + + unit->NearTeleportTo(x, y, z, o); + return 0; + } + + /** + * Makes the [Unit] damage the target [Unit] + * + *
+     * enum SpellSchools
+     * {
+     *     SPELL_SCHOOL_NORMAL  = 0,
+     *     SPELL_SCHOOL_HOLY    = 1,
+     *     SPELL_SCHOOL_FIRE    = 2,
+     *     SPELL_SCHOOL_NATURE  = 3,
+     *     SPELL_SCHOOL_FROST   = 4,
+     *     SPELL_SCHOOL_SHADOW  = 5,
+     *     SPELL_SCHOOL_ARCANE  = 6,
+     *     MAX_SPELL_SCHOOL     = 7
+     * };
+     * 
+ * + * @param [Unit] target : [Unit] to damage + * @param uint32 damage : amount to damage + * @param bool durabilityloss = true : if false, the damage does not do durability damage + * @param [SpellSchools] school = MAX_SPELL_SCHOOL : school the damage is done in or MAX_SPELL_SCHOOL for direct damage + * @param uint32 spell = 0 : spell that inflicts the damage + */ + int DealDamage(lua_State* L, Unit* unit) + { + Unit* target = Eluna::CHECKOBJ(L, 2); + uint32 damage = Eluna::CHECKVAL(L, 3); + bool durabilityloss = Eluna::CHECKVAL(L, 4, true); + uint32 school = Eluna::CHECKVAL(L, 5, MAX_SPELL_SCHOOL); + uint32 spell = Eluna::CHECKVAL(L, 6, 0); + if (school > MAX_SPELL_SCHOOL) + return luaL_argerror(L, 6, "valid SpellSchool expected"); + + // flat melee damage without resistence/etc reduction + if (school == MAX_SPELL_SCHOOL) + { + Unit::DealDamage(unit, target, damage, NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, durabilityloss); + unit->SendAttackStateUpdate(HITINFO_AFFECTS_VICTIM, target, 1, SPELL_SCHOOL_MASK_NORMAL, damage, 0, 0, VICTIMSTATE_HIT, 0); + return 0; + } + + SpellSchoolMask schoolmask = SpellSchoolMask(1 << school); + + if (Unit::IsDamageReducedByArmor(schoolmask)) + damage = Unit::CalcArmorReducedDamage(unit, target, damage, NULL, BASE_ATTACK); + + if (!spell) + { + DamageInfo dmgInfo(unit, target, damage, nullptr, schoolmask, SPELL_DIRECT_DAMAGE); + unit->CalcAbsorbResist(dmgInfo); + + if (!dmgInfo.GetDamage()) + damage = 0; + else + damage = dmgInfo.GetDamage(); + + uint32 absorb = dmgInfo.GetAbsorb(); + uint32 resist = dmgInfo.GetResist(); + unit->DealDamageMods(target, damage, &absorb); + Unit::DealDamage(unit, target, damage, NULL, DIRECT_DAMAGE, schoolmask, NULL, false); + unit->SendAttackStateUpdate(HITINFO_AFFECTS_VICTIM, target, 0, schoolmask, damage, absorb, resist, VICTIMSTATE_HIT, 0); + return 0; + } + + if (!spell) + return 0; + + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spell); + if (!spellInfo) + return 0; + + SpellNonMeleeDamage dmgInfo(unit, target, spellInfo, spellInfo->GetSchoolMask()); + Unit::DealDamageMods(dmgInfo.target, dmgInfo.damage, &dmgInfo.absorb); + unit->SendSpellNonMeleeDamageLog(&dmgInfo); + unit->DealSpellDamage(&dmgInfo, true); + return 0; + } + + /** + * Makes the [Unit] heal the target [Unit] with given spell + * + * @param [Unit] target : [Unit] to heal + * @param uint32 spell : spell that causes the healing + * @param uint32 amount : amount to heal + * @param bool critical = false : if true, heal is logged as critical + */ + int DealHeal(lua_State* L, Unit* unit) + { + Unit* target = Eluna::CHECKOBJ(L, 2); + uint32 spell = Eluna::CHECKVAL(L, 3); + uint32 amount = Eluna::CHECKVAL(L, 4); + bool critical = Eluna::CHECKVAL(L, 5, false); + + if (const SpellInfo* info = sSpellMgr->GetSpellInfo(spell)) + { + HealInfo healInfo(unit, target, amount, info, info->GetSchoolMask()); + unit->HealBySpell(healInfo, critical); + } + return 0; + } + + /** + * Makes the [Unit] kill the target [Unit] + * + * @param [Unit] target : [Unit] to kill + * @param bool durLoss = true : when true, the target's items suffer durability loss + */ + int Kill(lua_State* L, Unit* unit) + { + Unit* target = Eluna::CHECKOBJ(L, 2); + bool durLoss = Eluna::CHECKVAL(L, 3, true); + + Unit::Kill(unit, target, durLoss); + return 0; + } + + /** + * Adds threat to the [Unit] from the victim. + * + *
+     * enum SpellSchoolMask
+     * {
+     *     SPELL_SCHOOL_MASK_NONE    = 0,
+     *     SPELL_SCHOOL_MASK_NORMAL  = 1,
+     *     SPELL_SCHOOL_MASK_HOLY    = 2,
+     *     SPELL_SCHOOL_MASK_FIRE    = 4,
+     *     SPELL_SCHOOL_MASK_NATURE  = 8,
+     *     SPELL_SCHOOL_MASK_FROST   = 16,
+     *     SPELL_SCHOOL_MASK_SHADOW  = 32,
+     *     SPELL_SCHOOL_MASK_ARCANE  = 64,
+     * }
+     * 
+ * + * @param [Unit] victim : [Unit] that caused the threat + * @param float threat : threat amount + * @param [SpellSchoolMask] schoolMask = 0 : [SpellSchoolMask] of the threat causer + * @param uint32 spell = 0 : spell entry used for threat + */ + int AddThreat(lua_State* L, Unit* unit) + { + Unit* victim = Eluna::CHECKOBJ(L, 2); + float threat = Eluna::CHECKVAL(L, 3, true); + uint32 spell = Eluna::CHECKVAL(L, 4, 0); + + uint32 schoolMask = Eluna::CHECKVAL(L, 5, 0); + if (schoolMask > SPELL_SCHOOL_MASK_ALL) + { + return luaL_argerror(L, 4, "valid SpellSchoolMask expected"); + } + unit->AddThreat(victim, threat, (SpellSchoolMask)schoolMask, spell ? sSpellMgr->GetSpellInfo(spell) : NULL); + return 0; + } + + /** + * Modifies threat in pct to the [Unit] from the victim + * + * @param [Unit] victim : [Unit] that caused the threat + * @param int32 percent : threat amount in pct + */ + int ModifyThreatPct(lua_State* L, Unit* unit) + { + Unit* victim = Eluna::CHECKOBJ(L, 2); + int32 threatPct = Eluna::CHECKVAL(L, 3, true); + + unit->GetThreatMgr().ModifyThreatByPercent(victim, threatPct); + return 0; + } + + /*int RestoreDisplayId(lua_State* L, Unit* unit) + { + unit->RestoreDisplayId(); + return 0; + }*/ + + /*int RestoreFaction(lua_State* L, Unit* unit) + { + unit->RestoreFaction(); + return 0; + }*/ + + /*int RemoveBindSightAuras(lua_State* L, Unit* unit) + { + unit->RemoveBindSightAuras(); + return 0; + }*/ + + /*int RemoveCharmAuras(lua_State* L, Unit* unit) + { + unit->RemoveCharmAuras(); + return 0; + }*/ + + /*int DisableMelee(lua_State* L, Unit* unit) + { + bool apply = Eluna::CHECKVAL(L, 2, true); + + if (apply) + unit->AddUnitState(UNIT_STATE_CANNOT_AUTOATTACK); + else + unit->ClearUnitState(UNIT_STATE_CANNOT_AUTOATTACK); + return 0; + }*/ + + /*int SummonGuardian(lua_State* L, Unit* unit) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + float x = Eluna::CHECKVAL(L, 3); + float y = Eluna::CHECKVAL(L, 4); + float z = Eluna::CHECKVAL(L, 5); + float o = Eluna::CHECKVAL(L, 6); + uint32 desp = Eluna::CHECKVAL(L, 7, 0); + + SummonPropertiesEntry const* properties = sSummonPropertiesStore.LookupEntry(61); + if (!properties) + return 1; + Position pos; + pos.Relocate(x,y,z,o); + TempSummon* summon = unit->GetMap()->SummonCreature(entry, pos, properties, desp, unit); + + if (!summon) + return 1; + + if (summon->HasUnitTypeMask(UNIT_MASK_GUARDIAN)) + ((Guardian*)summon)->InitStatsForLevel(unit->getLevel()); + + if (properties && properties->Category == SUMMON_CATEGORY_ALLY) + summon->setFaction(unit->getFaction()); + if (summon->GetEntry() == 27893) + { + if (uint32 weapon = unit->GetUInt32Value(PLAYER_VISIBLE_ITEM_16_ENTRYID)) + { + summon->SetDisplayId(11686); + summon->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, weapon); + } + else + summon->SetDisplayId(1126); + } + summon->AI()->EnterEvadeMode(); + + Eluna::Push(L, summon); + return 1; + }*/ +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/VehicleHooks.cpp b/modules/mod-eluna/src/LuaEngine/VehicleHooks.cpp new file mode 100644 index 0000000..44eaf23 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/VehicleHooks.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaTemplate.h" + +#ifndef CLASSIC +#ifndef TBC + +using namespace Hooks; + +#define START_HOOK(EVENT) \ + if (!IsEnabled())\ + return;\ + auto key = EventKey(EVENT);\ + if (!VehicleEventBindings->HasBindingsFor(key))\ + return;\ + LOCK_ELUNA + +void Eluna::OnInstall(Vehicle* vehicle) +{ + START_HOOK(VEHICLE_EVENT_ON_INSTALL); + Push(vehicle); + CallAllFunctions(VehicleEventBindings, key); +} + +void Eluna::OnUninstall(Vehicle* vehicle) +{ + START_HOOK(VEHICLE_EVENT_ON_UNINSTALL); + Push(vehicle); + CallAllFunctions(VehicleEventBindings, key); +} + +void Eluna::OnInstallAccessory(Vehicle* vehicle, Creature* accessory) +{ + START_HOOK(VEHICLE_EVENT_ON_INSTALL_ACCESSORY); + Push(vehicle); + Push(accessory); + CallAllFunctions(VehicleEventBindings, key); +} + +void Eluna::OnAddPassenger(Vehicle* vehicle, Unit* passenger, int8 seatId) +{ + START_HOOK(VEHICLE_EVENT_ON_ADD_PASSENGER); + Push(vehicle); + Push(passenger); + Push(seatId); + CallAllFunctions(VehicleEventBindings, key); +} + +void Eluna::OnRemovePassenger(Vehicle* vehicle, Unit* passenger) +{ + START_HOOK(VEHICLE_EVENT_ON_REMOVE_PASSENGER); + Push(vehicle); + Push(passenger); + CallAllFunctions(VehicleEventBindings, key); +} + +#endif // CLASSIC +#endif // TBC diff --git a/modules/mod-eluna/src/LuaEngine/VehicleMethods.h b/modules/mod-eluna/src/LuaEngine/VehicleMethods.h new file mode 100644 index 0000000..3bbfea5 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/VehicleMethods.h @@ -0,0 +1,117 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef VEHICLEMETHODS_H +#define VEHICLEMETHODS_H +#ifndef CLASSIC +#ifndef TBC + +/*** + * Inherits all methods from: none + */ +namespace LuaVehicle +{ + /** + * Returns true if the [Unit] passenger is on board + * + * @param [Unit] passenger + * @return bool isOnBoard + */ + int IsOnBoard(lua_State* L, Vehicle* vehicle) + { + Unit* passenger = Eluna::CHECKOBJ(L, 2); +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, passenger->IsOnVehicle(vehicle->GetBase())); +#else + Eluna::Push(L, vehicle->HasOnBoard(passenger)); +#endif + return 1; + } + + /** + * Returns the [Vehicle]'s owner + * + * @return [Unit] owner + */ + int GetOwner(lua_State* L, Vehicle* vehicle) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, vehicle->GetBase()); +#else + Eluna::Push(L, vehicle->GetOwner()); +#endif + return 1; + } + + /** + * Returns the [Vehicle]'s entry + * + * @return uint32 entry + */ + int GetEntry(lua_State* L, Vehicle* vehicle) + { +#ifdef TRINITY + Eluna::Push(L, vehicle->GetVehicleInfo()->ID); +#elif AZEROTHCORE + Eluna::Push(L, vehicle->GetVehicleInfo()->m_ID); +#else + Eluna::Push(L, vehicle->GetVehicleEntry()->m_ID); +#endif + return 1; + } + + /** + * Returns the [Vehicle]'s passenger in the specified seat + * + * @param int8 seat + * @return [Unit] passenger + */ + int GetPassenger(lua_State* L, Vehicle* vehicle) + { + int8 seatId = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, vehicle->GetPassenger(seatId)); + return 1; + } + + /** + * Adds [Unit] passenger to a specified seat in the [Vehicle] + * + * @param [Unit] passenger + * @param int8 seat + */ + int AddPassenger(lua_State* L, Vehicle* vehicle) + { + Unit* passenger = Eluna::CHECKOBJ(L, 2); + int8 seatId = Eluna::CHECKVAL(L, 3); +#if defined TRINITY || AZEROTHCORE + vehicle->AddPassenger(passenger, seatId); +#else + if (vehicle->CanBoard(passenger)) + vehicle->Board(passenger, seatId); +#endif + return 0; + } + + /** + * Removes [Unit] passenger from the [Vehicle] + * + * @param [Unit] passenger + */ + int RemovePassenger(lua_State* L, Vehicle* vehicle) + { + Unit* passenger = Eluna::CHECKOBJ(L, 2); +#if defined TRINITY || AZEROTHCORE + vehicle->RemovePassenger(passenger); +#else + vehicle->UnBoard(passenger, false); +#endif + return 0; + } +} + +#endif // CLASSIC +#endif // TBC +#endif // VEHICLEMETHODS_H diff --git a/modules/mod-eluna/src/LuaEngine/WorldObjectMethods.h b/modules/mod-eluna/src/LuaEngine/WorldObjectMethods.h new file mode 100644 index 0000000..babf66d --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/WorldObjectMethods.h @@ -0,0 +1,1233 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef WORLDOBJECTMETHODS_H +#define WORLDOBJECTMETHODS_H + +/*** + * Inherits all methods from: [Object] + */ +namespace LuaWorldObject +{ + /** + * Returns the name of the [WorldObject] + * + * @return string name + */ + int GetName(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetName()); + return 1; + } + + /** + * Returns the current [Map] object of the [WorldObject] + * + * @return [Map] mapObject + */ + int GetMap(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetMap()); + return 1; + } + +#if (!defined(TBC) && !defined(CLASSIC)) + /** + * Returns the current phase of the [WorldObject] + * + * @return uint32 phase + */ + int GetPhaseMask(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetPhaseMask()); + return 1; + } + + /** + * Sets the [WorldObject]'s phase mask. + * + * @param uint32 phaseMask + * @param bool update = true : update visibility to nearby objects + */ + int SetPhaseMask(lua_State* L, WorldObject* obj) + { + uint32 phaseMask = Eluna::CHECKVAL(L, 2); + bool update = Eluna::CHECKVAL(L, 3, true); + obj->SetPhaseMask(phaseMask, update); + return 0; + } +#endif + + /** + * Returns the current instance ID of the [WorldObject] + * + * @return uint32 instanceId + */ + int GetInstanceId(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetInstanceId()); + return 1; + } + + /** + * Returns the current area ID of the [WorldObject] + * + * @return uint32 areaId + */ + int GetAreaId(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetAreaId()); + return 1; + } + + /** + * Returns the current zone ID of the [WorldObject] + * + * @return uint32 zoneId + */ + int GetZoneId(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetZoneId()); + return 1; + } + + /** + * Returns the current map ID of the [WorldObject] + * + * @return uint32 mapId + */ + int GetMapId(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetMapId()); + return 1; + } + + /** + * Returns the current X coordinate of the [WorldObject] + * + * @return float x + */ + int GetX(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetPositionX()); + return 1; + } + + /** + * Returns the current Y coordinate of the [WorldObject] + * + * @return float y + */ + int GetY(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetPositionY()); + return 1; + } + + /** + * Returns the current Z coordinate of the [WorldObject] + * + * @return float z + */ + int GetZ(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetPositionZ()); + return 1; + } + + /** + * Returns the current orientation of the [WorldObject] + * + * @return float orientation / facing + */ + int GetO(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetOrientation()); + return 1; + } + + /** + * Returns the coordinates and orientation of the [WorldObject] + * + * @return float x : x coordinate of the [WorldObject] + * @return float y : y coordinate of the [WorldObject] + * @return float z : z coordinate (height) of the [WorldObject] + * @return float o : facing / orientation of the [WorldObject] + */ + int GetLocation(lua_State* L, WorldObject* obj) + { + Eluna::Push(L, obj->GetPositionX()); + Eluna::Push(L, obj->GetPositionY()); + Eluna::Push(L, obj->GetPositionZ()); + Eluna::Push(L, obj->GetOrientation()); + return 4; + } + + /** + * Returns the nearest [Player] object in sight of the [WorldObject] or within the given range + * + * @param float range = 533.33333 : optionally set range. Default range is grid size + * @param uint32 hostile = 0 : 0 both, 1 hostile, 2 friendly + * @param uint32 dead = 1 : 0 both, 1 alive, 2 dead + * + * @return [Player] nearestPlayer + */ + int GetNearestPlayer(lua_State* L, WorldObject* obj) + { + float range = Eluna::CHECKVAL(L, 2, SIZE_OF_GRIDS); + uint32 hostile = Eluna::CHECKVAL(L, 3, 0); + uint32 dead = Eluna::CHECKVAL(L, 4, 1); + + Unit* target = NULL; + ElunaUtil::WorldObjectInRangeCheck checker(true, obj, range, TYPEMASK_PLAYER, 0, hostile, dead); +#ifdef TRINITY + Trinity::UnitLastSearcher searcher(obj, target, checker); + Cell::VisitAllObjects(obj, searcher, range); + +#elif AZEROTHCORE + Acore::UnitLastSearcher searcher(obj, target, checker); + Cell::VisitAllObjects(obj, searcher, range); +#else + MaNGOS::UnitLastSearcher searcher(target, checker); + Cell::VisitWorldObjects(obj, searcher, range); +#endif + + Eluna::Push(L, target); + return 1; + } + + /** + * Returns the nearest [GameObject] object in sight of the [WorldObject] or within the given range and/or with a specific entry ID + * + * @param float range = 533.33333 : optionally set range. Default range is grid size + * @param uint32 entryId = 0 : optionally set entry ID of game object to find + * @param uint32 hostile = 0 : 0 both, 1 hostile, 2 friendly + * + * @return [GameObject] nearestGameObject + */ + int GetNearestGameObject(lua_State* L, WorldObject* obj) + { + float range = Eluna::CHECKVAL(L, 2, SIZE_OF_GRIDS); + uint32 entry = Eluna::CHECKVAL(L, 3, 0); + uint32 hostile = Eluna::CHECKVAL(L, 4, 0); + + GameObject* target = NULL; + ElunaUtil::WorldObjectInRangeCheck checker(true, obj, range, TYPEMASK_GAMEOBJECT, entry, hostile); +#ifdef TRINITY + Trinity::GameObjectLastSearcher searcher(obj, target, checker); + Cell::VisitAllObjects(obj, searcher, range); +#elif AZEROTHCORE + Acore::GameObjectLastSearcher searcher(obj, target, checker); + Cell::VisitAllObjects(obj, searcher, range); +#else + MaNGOS::GameObjectLastSearcher searcher(target, checker); + Cell::VisitGridObjects(obj, searcher, range); +#endif + + Eluna::Push(L, target); + return 1; + } + + /** + * Returns the nearest [Creature] object in sight of the [WorldObject] or within the given range and/or with a specific entry ID + * + * @param float range = 533.33333 : optionally set range. Default range is grid size + * @param uint32 entryId = 0 : optionally set entry ID of creature to find + * @param uint32 hostile = 0 : 0 both, 1 hostile, 2 friendly + * @param uint32 dead = 1 : 0 both, 1 alive, 2 dead + * + * @return [Creature] nearestCreature + */ + int GetNearestCreature(lua_State* L, WorldObject* obj) + { + float range = Eluna::CHECKVAL(L, 2, SIZE_OF_GRIDS); + uint32 entry = Eluna::CHECKVAL(L, 3, 0); + uint32 hostile = Eluna::CHECKVAL(L, 4, 0); + uint32 dead = Eluna::CHECKVAL(L, 5, 1); + + Creature* target = NULL; + ElunaUtil::WorldObjectInRangeCheck checker(true, obj, range, TYPEMASK_UNIT, entry, hostile, dead); +#ifdef TRINITY + Trinity::CreatureLastSearcher searcher(obj, target, checker); + Cell::VisitAllObjects(obj, searcher, range); +#elif AZEROTHCORE + Acore::CreatureLastSearcher searcher(obj, target, checker); + Cell::VisitAllObjects(obj, searcher, range); +#else + MaNGOS::CreatureLastSearcher searcher(target, checker); + Cell::VisitGridObjects(obj, searcher, range); + +#endif + + Eluna::Push(L, target); + return 1; + } + + /** + * Returns a table of [Player] objects in sight of the [WorldObject] or within the given range + * + * @param float range = 533.33333 : optionally set range. Default range is grid size + * @param uint32 hostile = 0 : 0 both, 1 hostile, 2 friendly + * @param uint32 dead = 1 : 0 both, 1 alive, 2 dead + * + * @return table playersInRange : table of [Player]s + */ + int GetPlayersInRange(lua_State* L, WorldObject* obj) + { + float range = Eluna::CHECKVAL(L, 2, SIZE_OF_GRIDS); + uint32 hostile = Eluna::CHECKVAL(L, 3, 0); + uint32 dead = Eluna::CHECKVAL(L, 4, 1); + + std::list list; + ElunaUtil::WorldObjectInRangeCheck checker(false, obj, range, TYPEMASK_PLAYER, 0, hostile, dead); +#ifdef TRINITY + Trinity::PlayerListSearcher searcher(obj, list, checker); + Cell::VisitAllObjects(obj, searcher, range); +#elif AZEROTHCORE + Acore::PlayerListSearcher searcher(obj, list, checker); + Cell::VisitAllObjects(obj, searcher, range); +#else + MaNGOS::PlayerListSearcher searcher(list, checker); + Cell::VisitWorldObjects(obj, searcher, range); +#endif + + lua_createtable(L, list.size(), 0); + int tbl = lua_gettop(L); + uint32 i = 0; + + for (std::list::const_iterator it = list.begin(); it != list.end(); ++it) + { + Eluna::Push(L, *it); + lua_rawseti(L, tbl, ++i); + } + + lua_settop(L, tbl); + return 1; + } + + /** + * Returns a table of [Creature] objects in sight of the [WorldObject] or within the given range and/or with a specific entry ID + * + * @param float range = 533.33333 : optionally set range. Default range is grid size + * @param uint32 entryId = 0 : optionally set entry ID of creatures to find + * @param uint32 hostile = 0 : 0 both, 1 hostile, 2 friendly + * @param uint32 dead = 1 : 0 both, 1 alive, 2 dead + * + * @return table creaturesInRange : table of [Creature]s + */ + int GetCreaturesInRange(lua_State* L, WorldObject* obj) + { + float range = Eluna::CHECKVAL(L, 2, SIZE_OF_GRIDS); + uint32 entry = Eluna::CHECKVAL(L, 3, 0); + uint32 hostile = Eluna::CHECKVAL(L, 4, 0); + uint32 dead = Eluna::CHECKVAL(L, 5, 1); + + std::list list; + ElunaUtil::WorldObjectInRangeCheck checker(false, obj, range, TYPEMASK_UNIT, entry, hostile, dead); +#ifdef TRINITY + Trinity::CreatureListSearcher searcher(obj, list, checker); + Cell::VisitAllObjects(obj, searcher, range); +#elif defined AZEROTHCORE + Acore::CreatureListSearcher searcher(obj, list, checker); + Cell::VisitAllObjects(obj, searcher, range); +#else + MaNGOS::CreatureListSearcher searcher(list, checker); + Cell::VisitGridObjects(obj, searcher, range); +#endif + + lua_createtable(L, list.size(), 0); + int tbl = lua_gettop(L); + uint32 i = 0; + + for (std::list::const_iterator it = list.begin(); it != list.end(); ++it) + { + Eluna::Push(L, *it); + lua_rawseti(L, tbl, ++i); + } + + lua_settop(L, tbl); + return 1; + } + + /** + * Returns a table of [GameObject] objects in sight of the [WorldObject] or within the given range and/or with a specific entry ID + * + * @param float range = 533.33333 : optionally set range. Default range is grid size + * @param uint32 entryId = 0 : optionally set entry ID of game objects to find + * @param uint32 hostile = 0 : 0 both, 1 hostile, 2 friendly + * + * @return table gameObjectsInRange : table of [GameObject]s + */ + int GetGameObjectsInRange(lua_State* L, WorldObject* obj) + { + float range = Eluna::CHECKVAL(L, 2, SIZE_OF_GRIDS); + uint32 entry = Eluna::CHECKVAL(L, 3, 0); + uint32 hostile = Eluna::CHECKVAL(L, 4, 0); + + std::list list; + ElunaUtil::WorldObjectInRangeCheck checker(false, obj, range, TYPEMASK_GAMEOBJECT, entry, hostile); +#ifdef TRINITY + Trinity::GameObjectListSearcher searcher(obj, list, checker); + Cell::VisitAllObjects(obj, searcher, range); +#elif AZEROTHCORE + Acore::GameObjectListSearcher searcher(obj, list, checker); + Cell::VisitAllObjects(obj, searcher, range); +#else + MaNGOS::GameObjectListSearcher searcher(list, checker); + Cell::VisitGridObjects(obj, searcher, range); +#endif + + lua_createtable(L, list.size(), 0); + int tbl = lua_gettop(L); + uint32 i = 0; + + for (std::list::const_iterator it = list.begin(); it != list.end(); ++it) + { + Eluna::Push(L, *it); + lua_rawseti(L, tbl, ++i); + } + + lua_settop(L, tbl); + return 1; + } + + /** + * Returns nearest [WorldObject] in sight of the [WorldObject]. + * The distance, type, entry and hostility requirements the [WorldObject] must match can be passed. + * + * @param float range = 533.33333 : optionally set range. Default range is grid size + * @param [TypeMask] type = 0 : the [TypeMask] that the [WorldObject] must be. This can contain multiple types. 0 will be ingored + * @param uint32 entry = 0 : the entry of the [WorldObject], 0 will be ingored + * @param uint32 hostile = 0 : specifies whether the [WorldObject] needs to be 1 hostile, 2 friendly or 0 either + * @param uint32 dead = 1 : 0 both, 1 alive, 2 dead + * + * @return [WorldObject] worldObject + */ + int GetNearObject(lua_State* L, WorldObject* obj) + { + float range = Eluna::CHECKVAL(L, 2, SIZE_OF_GRIDS); + uint16 type = Eluna::CHECKVAL(L, 3, 0); // TypeMask + uint32 entry = Eluna::CHECKVAL(L, 4, 0); + uint32 hostile = Eluna::CHECKVAL(L, 5, 0); // 0 none, 1 hostile, 2 friendly + uint32 dead = Eluna::CHECKVAL(L, 6, 1); // 0 both, 1 alive, 2 dead + + float x, y, z; + obj->GetPosition(x, y, z); + ElunaUtil::WorldObjectInRangeCheck checker(true, obj, range, type, entry, hostile, dead); + + WorldObject* target = NULL; +#ifdef TRINITY + Trinity::WorldObjectLastSearcher searcher(obj, target, checker); + Cell::VisitAllObjects(obj, searcher, range); +#elif AZEROTHCORE + Acore::WorldObjectLastSearcher searcher(obj, target, checker); + Cell::VisitAllObjects(obj, searcher, range); +#else + MaNGOS::WorldObjectLastSearcher searcher(target, checker); + Cell::VisitAllObjects(obj, searcher, range); +#endif + + Eluna::Push(L, target); + return 1; + } + + /** + * Returns a table of [WorldObject]s in sight of the [WorldObject]. + * The distance, type, entry and hostility requirements the [WorldObject] must match can be passed. + * + * @param float range = 533.33333 : optionally set range. Default range is grid size + * @param [TypeMask] type = 0 : the [TypeMask] that the [WorldObject] must be. This can contain multiple types. 0 will be ingored + * @param uint32 entry = 0 : the entry of the [WorldObject], 0 will be ingored + * @param uint32 hostile = 0 : specifies whether the [WorldObject] needs to be 1 hostile, 2 friendly or 0 either + * @param uint32 dead = 1 : 0 both, 1 alive, 2 dead + * + * @return table worldObjectList : table of [WorldObject]s + */ + int GetNearObjects(lua_State* L, WorldObject* obj) + { + float range = Eluna::CHECKVAL(L, 2, SIZE_OF_GRIDS); + uint16 type = Eluna::CHECKVAL(L, 3, 0); // TypeMask + uint32 entry = Eluna::CHECKVAL(L, 4, 0); + uint32 hostile = Eluna::CHECKVAL(L, 5, 0); // 0 none, 1 hostile, 2 friendly + uint32 dead = Eluna::CHECKVAL(L, 6, 1); // 0 both, 1 alive, 2 dead + + float x, y, z; + obj->GetPosition(x, y, z); + ElunaUtil::WorldObjectInRangeCheck checker(false, obj, range, type, entry, hostile, dead); + + std::list list; +#ifdef TRINITY + Trinity::WorldObjectListSearcher searcher(obj, list, checker); + Cell::VisitAllObjects(obj, searcher, range); +#elif AZEROTHCORE + Acore::WorldObjectListSearcher searcher(obj, list, checker); + Cell::VisitAllObjects(obj, searcher, range); +#else + MaNGOS::WorldObjectListSearcher searcher(list, checker); + Cell::VisitAllObjects(obj, searcher, range); +#endif + + lua_createtable(L, list.size(), 0); + int tbl = lua_gettop(L); + uint32 i = 0; + + for (std::list::const_iterator it = list.begin(); it != list.end(); ++it) + { + Eluna::Push(L, *it); + lua_rawseti(L, tbl, ++i); + } + + lua_settop(L, tbl); + return 1; + } + + /** + * Returns the distance from this [WorldObject] to another [WorldObject], or from this [WorldObject] to a point in 3d space. + * + * The function takes into account the given object sizes. See also [WorldObject:GetExactDistance], [WorldObject:GetDistance2d] + * + * @proto dist = (obj) + * @proto dist = (x, y, z) + * + * @param [WorldObject] obj + * @param float x : the X-coordinate of the point + * @param float y : the Y-coordinate of the point + * @param float z : the Z-coordinate of the point + * + * @return float dist : the distance in yards + */ + int GetDistance(lua_State* L, WorldObject* obj) + { + WorldObject* target = Eluna::CHECKOBJ(L, 2, false); + if (target) + Eluna::Push(L, obj->GetDistance(target)); + else + { + float X = Eluna::CHECKVAL(L, 2); + float Y = Eluna::CHECKVAL(L, 3); + float Z = Eluna::CHECKVAL(L, 4); + Eluna::Push(L, obj->GetDistance(X, Y, Z)); + } + return 1; + } + + /** + * Returns the distance from this [WorldObject] to another [WorldObject], or from this [WorldObject] to a point in 3d space. + * + * The function does not take into account the given object sizes, which means only the object coordinates are compared. See also [WorldObject:GetDistance], [WorldObject:GetDistance2d] + * + * @proto dist = (obj) + * @proto dist = (x, y, z) + * + * @param [WorldObject] obj + * @param float x : the X-coordinate of the point + * @param float y : the Y-coordinate of the point + * @param float z : the Z-coordinate of the point + * + * @return float dist : the distance in yards + */ + int GetExactDistance(lua_State* L, WorldObject* obj) + { + float x, y, z; + obj->GetPosition(x, y, z); + WorldObject* target = Eluna::CHECKOBJ(L, 2, false); + if (target) + { + float x2, y2, z2; + target->GetPosition(x2, y2, z2); + x -= x2; + y -= y2; + z -= z2; + } + else + { + x -= Eluna::CHECKVAL(L, 2); + y -= Eluna::CHECKVAL(L, 3); + z -= Eluna::CHECKVAL(L, 4); + } + + Eluna::Push(L, std::sqrt(x*x + y*y + z*z)); + return 1; + } + + /** + * Returns the distance from this [WorldObject] to another [WorldObject], or from this [WorldObject] to a point in 2d space. + * + * The function takes into account the given object sizes. See also [WorldObject:GetDistance], [WorldObject:GetExactDistance2d] + * + * @proto dist = (obj) + * @proto dist = (x, y) + * + * @param [WorldObject] obj + * @param float x : the X-coordinate of the point + * @param float y : the Y-coordinate of the point + * + * @return float dist : the distance in yards + */ + int GetDistance2d(lua_State* L, WorldObject* obj) + { + WorldObject* target = Eluna::CHECKOBJ(L, 2, false); + if (target) + Eluna::Push(L, obj->GetDistance2d(target)); + else + { + float X = Eluna::CHECKVAL(L, 2); + float Y = Eluna::CHECKVAL(L, 3); + Eluna::Push(L, obj->GetDistance2d(X, Y)); + } + return 1; + } + + /** + * Returns the distance from this [WorldObject] to another [WorldObject], or from this [WorldObject] to a point in 2d space. + * + * The function does not take into account the given object sizes, which means only the object coordinates are compared. See also [WorldObject:GetDistance], [WorldObject:GetDistance2d] + * + * @proto dist = (obj) + * @proto dist = (x, y) + * + * @param [WorldObject] obj + * @param float x : the X-coordinate of the point + * @param float y : the Y-coordinate of the point + * + * @return float dist : the distance in yards + */ + int GetExactDistance2d(lua_State* L, WorldObject* obj) + { + float x, y, z; + obj->GetPosition(x, y, z); + WorldObject* target = Eluna::CHECKOBJ(L, 2, false); + if (target) + { + float x2, y2, z2; + target->GetPosition(x2, y2, z2); + x -= x2; + y -= y2; + } + else + { + x -= Eluna::CHECKVAL(L, 2); + y -= Eluna::CHECKVAL(L, 3); + } + + Eluna::Push(L, std::sqrt(x*x + y*y)); + return 1; + } + + /** + * Returns the x, y and z of a point dist away from the [WorldObject]. + * + * @param float distance : specifies the distance of the point from the [WorldObject] in yards + * @param float angle : specifies the angle of the point relative to the orientation / facing of the [WorldObject] in radians + * + * @return float x + * @return float y + * @return float z + */ + int GetRelativePoint(lua_State* L, WorldObject* obj) + { + float dist = Eluna::CHECKVAL(L, 2); + float rad = Eluna::CHECKVAL(L, 3); + + float x, y, z; + obj->GetClosePoint(x, y, z, 0.0f, dist, rad); + + Eluna::Push(L, x); + Eluna::Push(L, y); + Eluna::Push(L, z); + return 3; + } + + /** + * Returns the angle between this [WorldObject] and another [WorldObject] or a point. + * + * The angle is the angle between two points and orientation will be ignored. + * + * @proto dist = (obj) + * @proto dist = (x, y) + * + * @param [WorldObject] object + * @param float x + * @param float y + * + * @return float angle : angle in radians in range 0..2*pi + */ + int GetAngle(lua_State* L, WorldObject* obj) + { + WorldObject* target = Eluna::CHECKOBJ(L, 2, false); +#if defined TRINITY && !AZEROTHCORE + if (target) + Eluna::Push(L, obj->GetAbsoluteAngle(target)); + else + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + Eluna::Push(L, obj->GetAbsoluteAngle(x, y)); + } +#else + if (target) + Eluna::Push(L, obj->GetAngle(target)); + else + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + Eluna::Push(L, obj->GetAngle(x, y)); + } +#endif + return 1; + } + + /** + * Sends a [WorldPacket] to [Player]s in sight of the [WorldObject]. + * + * @param [WorldPacket] packet + */ + int SendPacket(lua_State* L, WorldObject* obj) + { + WorldPacket* data = Eluna::CHECKOBJ(L, 2); +#ifdef CMANGOS + obj->SendMessageToSet(*data, true); +#else + obj->SendMessageToSet(data, true); +#endif + return 0; + } + + /** + * Spawns a [GameObject] at specified location. + * + * @param uint32 entry : [GameObject] entry ID + * @param float x + * @param float y + * @param float z + * @param float o + * @param uint32 respawnDelay = 30 : respawn time in seconds + * @return [GameObject] gameObject + */ + int SummonGameObject(lua_State* L, WorldObject* obj) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + float x = Eluna::CHECKVAL(L, 3); + float y = Eluna::CHECKVAL(L, 4); + float z = Eluna::CHECKVAL(L, 5); + float o = Eluna::CHECKVAL(L, 6); + uint32 respawnDelay = Eluna::CHECKVAL(L, 7, 30); +#ifdef TRINITY + QuaternionData rot = QuaternionData::fromEulerAnglesZYX(o, 0.f, 0.f); + Eluna::Push(L, obj->SummonGameObject(entry, Position(x, y, z, o), rot, Seconds(respawnDelay))); +#elif AZEROTHCORE + Eluna::Push(L, obj->SummonGameObject(entry, x, y, z, o, 0, 0, 0, 0, respawnDelay)); +#else + Eluna::Push(L, obj->SummonGameObject(entry, x, y, z, o, respawnDelay)); +#endif + return 1; + } + + /** + * Spawns the creature at specified location. + * + * enum TempSummonType + * { + * TEMPSUMMON_TIMED_OR_DEAD_DESPAWN = 1, // despawns after a specified time OR when the creature disappears + * TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN = 2, // despawns after a specified time OR when the creature dies + * TEMPSUMMON_TIMED_DESPAWN = 3, // despawns after a specified time + * TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT = 4, // despawns after a specified time after the creature is out of combat + * TEMPSUMMON_CORPSE_DESPAWN = 5, // despawns instantly after death + * TEMPSUMMON_CORPSE_TIMED_DESPAWN = 6, // despawns after a specified time after death + * TEMPSUMMON_DEAD_DESPAWN = 7, // despawns when the creature disappears + * TEMPSUMMON_MANUAL_DESPAWN = 8, // despawns when UnSummon() is called + * TEMPSUMMON_TIMED_OOC_OR_CORPSE_DESPAWN = 9, // despawns after a specified time (OOC) OR when the creature dies + * TEMPSUMMON_TIMED_OOC_OR_DEAD_DESPAWN = 10 // despawns after a specified time (OOC) OR when the creature disappears + * }; + * + * @param uint32 entry : [Creature]'s entry ID + * @param float x + * @param float y + * @param float z + * @param float o + * @param [TempSummonType] spawnType = MANUAL_DESPAWN : defines how and when the creature despawns + * @param uint32 despawnTimer = 0 : despawn time in milliseconds + * @return [Creature] spawnedCreature + */ + int SpawnCreature(lua_State* L, WorldObject* obj) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + float x = Eluna::CHECKVAL(L, 3); + float y = Eluna::CHECKVAL(L, 4); + float z = Eluna::CHECKVAL(L, 5); + float o = Eluna::CHECKVAL(L, 6); + uint32 spawnType = Eluna::CHECKVAL(L, 7, 8); + uint32 despawnTimer = Eluna::CHECKVAL(L, 8, 0); + +#if defined TRINITY || AZEROTHCORE + TempSummonType type; + switch (spawnType) + { + case 1: + type = TEMPSUMMON_TIMED_OR_DEAD_DESPAWN; + break; + case 2: + type = TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN; + break; + case 3: + type = TEMPSUMMON_TIMED_DESPAWN; + break; + case 4: + type = TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT; + break; + case 5: + type = TEMPSUMMON_CORPSE_DESPAWN; + break; + case 6: + type = TEMPSUMMON_CORPSE_TIMED_DESPAWN; + break; + case 7: + type = TEMPSUMMON_DEAD_DESPAWN; + break; + case 8: + type = TEMPSUMMON_MANUAL_DESPAWN; + break; + default: + return luaL_argerror(L, 7, "valid SpawnType expected"); + } +#else + TempSpawnType type; + switch (spawnType) + { + case 1: + type = TEMPSPAWN_TIMED_OR_DEAD_DESPAWN; + break; + case 2: + type = TEMPSPAWN_TIMED_OR_CORPSE_DESPAWN; + break; + case 3: + type = TEMPSPAWN_TIMED_DESPAWN; + break; + case 4: + type = TEMPSPAWN_TIMED_OOC_DESPAWN; + break; + case 5: + type = TEMPSPAWN_CORPSE_DESPAWN; + break; + case 6: + type = TEMPSPAWN_CORPSE_TIMED_DESPAWN; + break; + case 7: + type = TEMPSPAWN_DEAD_DESPAWN; + break; + case 8: + type = TEMPSPAWN_MANUAL_DESPAWN; + break; + case 9: + type = TEMPSPAWN_TIMED_OOC_OR_CORPSE_DESPAWN; + break; + case 10: + type = TEMPSPAWN_TIMED_OOC_OR_DEAD_DESPAWN; + break; + default: + return luaL_argerror(L, 7, "valid SpawnType expected"); + } +#endif +#ifdef TRINITY + Eluna::Push(L, obj->SummonCreature(entry, x, y, z, o, type, Seconds(despawnTimer))); +#else + Eluna::Push(L, obj->SummonCreature(entry, x, y, z, o, type, despawnTimer)); +#endif + return 1; + } + + /** + * Registers a timed event to the [WorldObject] + * When the passed function is called, the parameters `(eventId, delay, repeats, worldobject)` are passed to it. + * Repeats will decrease on each call if the event does not repeat indefinitely + * + * Note that for [Creature] and [GameObject] the timed event timer ticks only if the creature is in sight of someone + * For all [WorldObject]s the timed events are removed when the object is destoryed. This means that for example a [Player]'s events are removed on logout. + * + * local function Timed(eventid, delay, repeats, worldobject) + * print(worldobject:GetName()) + * end + * worldobject:RegisterEvent(Timed, 1000, 5) -- do it after 1 second 5 times + * worldobject:RegisterEvent(Timed, {1000, 10000}, 0) -- do it after 1 to 10 seconds forever + * + * @proto eventId = (function, delay) + * @proto eventId = (function, delaytable) + * @proto eventId = (function, delay, repeats) + * @proto eventId = (function, delaytable, repeats) + * + * @param function function : function to trigger when the time has passed + * @param uint32 delay : set time in milliseconds for the event to trigger + * @param table delaytable : a table `{min, max}` containing the minimum and maximum delay time + * @param uint32 repeats = 1 : how many times for the event to repeat, 0 is infinite + * @return int eventId : unique ID for the timed event used to cancel it or nil + */ + int RegisterEvent(lua_State* L, WorldObject* obj) + { + luaL_checktype(L, 2, LUA_TFUNCTION); + uint32 min, max; + if (lua_istable(L, 3)) + { + Eluna::Push(L, 1); + lua_gettable(L, 3); + min = Eluna::CHECKVAL(L, -1); + Eluna::Push(L, 2); + lua_gettable(L, 3); + max = Eluna::CHECKVAL(L, -1); + lua_pop(L, 2); + } + else + min = max = Eluna::CHECKVAL(L, 3); + uint32 repeats = Eluna::CHECKVAL(L, 4, 1); + + if (min > max) + return luaL_argerror(L, 3, "min is bigger than max delay"); + + lua_pushvalue(L, 2); + int functionRef = luaL_ref(L, LUA_REGISTRYINDEX); + if (functionRef != LUA_REFNIL && functionRef != LUA_NOREF) + { + obj->elunaEvents->AddEvent(functionRef, min, max, repeats); + Eluna::Push(L, functionRef); + } + return 1; + } + + /** + * Removes the timed event from a [WorldObject] by the specified event ID + * + * @param int eventId : event Id to remove + */ + int RemoveEventById(lua_State* L, WorldObject* obj) + { + int eventId = Eluna::CHECKVAL(L, 2); + obj->elunaEvents->SetState(eventId, LUAEVENT_STATE_ABORT); + return 0; + } + + /** + * Removes all timed events from a [WorldObject] + * + */ + int RemoveEvents(lua_State* /*L*/, WorldObject* obj) + { + obj->elunaEvents->SetStates(LUAEVENT_STATE_ABORT); + return 0; + } + + /** + * Returns true if the given [WorldObject] or coordinates are in the [WorldObject]'s line of sight + * + * @proto isInLoS = (worldobject) + * @proto isInLoS = (x, y, z) + * + * @param [WorldObject] worldobject + * @param float x + * @param float y + * @param float z + * @return bool isInLoS + */ + int IsWithinLoS(lua_State* L, WorldObject* obj) + { + WorldObject* target = Eluna::CHECKOBJ(L, 2, false); + + if (target) + Eluna::Push(L, obj->IsWithinLOSInMap(target)); + else + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + float z = Eluna::CHECKVAL(L, 4); + Eluna::Push(L, obj->IsWithinLOS(x, y, z)); + } + + return 1; + } + + /** + * Returns true if the [WorldObject]s are on the same map + * + * @param [WorldObject] worldobject + * @return bool isInMap + */ + int IsInMap(lua_State* L, WorldObject* obj) + { + WorldObject* target = Eluna::CHECKOBJ(L, 2, true); + Eluna::Push(L, obj->IsInMap(target)); + return 1; + } + + /** + * Returns true if the point is in the given distance of the [WorldObject] + * + * Notice that the distance is measured from the edge of the [WorldObject]. + * + * @param float x + * @param float y + * @param float z + * @param float distance + * @return bool isInDistance + */ + int IsWithinDist3d(lua_State* L, WorldObject* obj) + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + float z = Eluna::CHECKVAL(L, 4); + float dist = Eluna::CHECKVAL(L, 5); + Eluna::Push(L, obj->IsWithinDist3d(x, y, z, dist)); + return 1; + } + + /** + * Returns true if the point is in the given distance of the [WorldObject] + * + * The distance is measured only in x,y coordinates. + * Notice that the distance is measured from the edge of the [WorldObject]. + * + * @param float x + * @param float y + * @param float distance + * @return bool isInDistance + */ + int IsWithinDist2d(lua_State* L, WorldObject* obj) + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + float dist = Eluna::CHECKVAL(L, 4); + Eluna::Push(L, obj->IsWithinDist2d(x, y, dist)); + return 1; + } + + /** + * Returns true if the target is in the given distance of the [WorldObject] + * + * Notice that the distance is measured from the edge of the [WorldObject]s. + * + * @param [WorldObject] target + * @param float distance + * @param bool is3D = true : if false, only x,y coordinates used for checking + * @return bool isInDistance + */ + int IsWithinDist(lua_State* L, WorldObject* obj) + { + WorldObject* target = Eluna::CHECKOBJ(L, 2, true); + float distance = Eluna::CHECKVAL(L, 3); + bool is3D = Eluna::CHECKVAL(L, 4, true); + Eluna::Push(L, obj->IsWithinDist(target, distance, is3D)); + return 1; + } + + /** + * Returns true if the [WorldObject] is on the same map and within given distance + * + * Notice that the distance is measured from the edge of the [WorldObject]s. + * + * @param [WorldObject] target + * @param float distance + * @param bool is3D = true : if false, only x,y coordinates used for checking + * @return bool isInDistance + */ + int IsWithinDistInMap(lua_State* L, WorldObject* obj) + { + WorldObject* target = Eluna::CHECKOBJ(L, 2); + float distance = Eluna::CHECKVAL(L, 3); + bool is3D = Eluna::CHECKVAL(L, 4, true); + + Eluna::Push(L, obj->IsWithinDistInMap(target, distance, is3D)); + return 1; + } + + /** + * Returns true if the target is within given range + * + * Notice that the distance is measured from the edge of the [WorldObject]s. + * + * @param [WorldObject] target + * @param float minrange + * @param float maxrange + * @param bool is3D = true : if false, only x,y coordinates used for checking + * @return bool isInDistance + */ + int IsInRange(lua_State* L, WorldObject* obj) + { + WorldObject* target = Eluna::CHECKOBJ(L, 2); + float minrange = Eluna::CHECKVAL(L, 3); + float maxrange = Eluna::CHECKVAL(L, 4); + bool is3D = Eluna::CHECKVAL(L, 5, true); + + Eluna::Push(L, obj->IsInRange(target, minrange, maxrange, is3D)); + return 1; + } + + /** + * Returns true if the point is within given range + * + * Notice that the distance is measured from the edge of the [WorldObject]. + * + * @param float x + * @param float y + * @param float minrange + * @param float maxrange + * @return bool isInDistance + */ + int IsInRange2d(lua_State* L, WorldObject* obj) + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + float minrange = Eluna::CHECKVAL(L, 4); + float maxrange = Eluna::CHECKVAL(L, 5); + + Eluna::Push(L, obj->IsInRange2d(x, y, minrange, maxrange)); + return 1; + } + + /** + * Returns true if the point is within given range + * + * Notice that the distance is measured from the edge of the [WorldObject]. + * + * @param float x + * @param float y + * @param float z + * @param float minrange + * @param float maxrange + * @return bool isInDistance + */ + int IsInRange3d(lua_State* L, WorldObject* obj) + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + float z = Eluna::CHECKVAL(L, 4); + float minrange = Eluna::CHECKVAL(L, 5); + float maxrange = Eluna::CHECKVAL(L, 6); + + Eluna::Push(L, obj->IsInRange3d(x, y, z, minrange, maxrange)); + return 1; + } + + /** + * Returns true if the target is in the given arc in front of the [WorldObject] + * + * @param [WorldObject] target + * @param float arc = pi + * @return bool isInFront + */ + int IsInFront(lua_State* L, WorldObject* obj) + { + WorldObject* target = Eluna::CHECKOBJ(L, 2); + float arc = Eluna::CHECKVAL(L, 3, static_cast(M_PI)); + +#ifdef MANGOS + Eluna::Push(L, obj->IsInFront(target, arc)); +#else + Eluna::Push(L, obj->isInFront(target, arc)); +#endif + return 1; + } + + /** + * Returns true if the target is in the given arc behind the [WorldObject] + * + * @param [WorldObject] target + * @param float arc = pi + * @return bool isInBack + */ + int IsInBack(lua_State* L, WorldObject* obj) + { + WorldObject* target = Eluna::CHECKOBJ(L, 2); + float arc = Eluna::CHECKVAL(L, 3, static_cast(M_PI)); + +#ifdef MANGOS + Eluna::Push(L, obj->IsInBack(target, arc)); +#else + Eluna::Push(L, obj->isInBack(target, arc)); +#endif + return 1; + } + + /** + * The [WorldObject] plays music to a [Player] + * + * If no [Player] provided it will play the music to everyone near. + * This method does not interrupt previously played music. + * + * See also [WorldObject:PlayDistanceSound], [WorldObject:PlayDirectSound] + * + * @param uint32 music : entry of a music + * @param [Player] player = nil : [Player] to play the music to + */ + int PlayMusic(lua_State* L, WorldObject* obj) + { + uint32 musicid = Eluna::CHECKVAL(L, 2); + Player* player = Eluna::CHECKOBJ(L, 3, false); + + WorldPacket data(SMSG_PLAY_MUSIC, 4); + data << uint32(musicid); +#ifdef CMANGOS + if (player) + player->SendDirectMessage(data); + else + obj->SendMessageToSet(data, true); +#else + if (player) + player->SendDirectMessage(&data); + else + obj->SendMessageToSet(&data, true); +#endif + return 0; + } + + /** + * The [WorldObject] plays a sound to a [Player] + * + * If no [Player] provided it will play the sound to everyone near. + * This method will play sound and does not interrupt prvious sound. + * + * See also [WorldObject:PlayDistanceSound], [WorldObject:PlayMusic] + * + * @param uint32 sound : entry of a sound + * @param [Player] player = nil : [Player] to play the sound to + */ + int PlayDirectSound(lua_State* L, WorldObject* obj) + { + uint32 soundId = Eluna::CHECKVAL(L, 2); + Player* player = Eluna::CHECKOBJ(L, 3, false); + if (!sSoundEntriesStore.LookupEntry(soundId)) + return 0; + + if (player) + obj->PlayDirectSound(soundId, player); + else + obj->PlayDirectSound(soundId); + return 0; + } + + /** + * The [WorldObject] plays a sound to a [Player] + * + * If no [Player] it will play the sound to everyone near. + * Sound will fade the further you are from the [WorldObject]. + * This method interrupts previously playing sound. + * + * See also [WorldObject:PlayDirectSound], [WorldObject:PlayMusic] + * + * @param uint32 sound : entry of a sound + * @param [Player] player = nil : [Player] to play the sound to + */ + int PlayDistanceSound(lua_State* L, WorldObject* obj) + { + uint32 soundId = Eluna::CHECKVAL(L, 2); + Player* player = Eluna::CHECKOBJ(L, 3, false); + if (!sSoundEntriesStore.LookupEntry(soundId)) + return 0; + + if (player) + obj->PlayDistanceSound(soundId, player); + else + obj->PlayDistanceSound(soundId); + return 0; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/WorldPacketMethods.h b/modules/mod-eluna/src/LuaEngine/WorldPacketMethods.h new file mode 100644 index 0000000..750c096 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/WorldPacketMethods.h @@ -0,0 +1,310 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef WORLDPACKETMETHODS_H +#define WORLDPACKETMETHODS_H + +/*** + * A packet used to pass messages between the server and a client. + * + * Each packet has an opcode that determines the type of message being sent, + * e.g. if a CMSG_LOGOUT_REQUEST packet is sent to the server, + * the client has sent a message that its [Player] wants to logout. + * + * The packet can contain further data, the format of which depends on the opcode. + * + * Inherits all methods from: none + */ +namespace LuaPacket +{ + /** + * Returns the opcode of the [WorldPacket]. + * + * @return uint16 opcode + */ + int GetOpcode(lua_State* L, WorldPacket* packet) + { + Eluna::Push(L, packet->GetOpcode()); + return 1; + } + + /** + * Returns the size of the [WorldPacket]. + * + * @return uint32 size + */ + int GetSize(lua_State* L, WorldPacket* packet) + { + Eluna::Push(L, packet->size()); + return 1; + } + + /** + * Sets the opcode of the [WorldPacket] to the specified opcode. + * + * @param [Opcodes] opcode : see Opcodes.h for all known opcodes + */ + int SetOpcode(lua_State* L, WorldPacket* packet) + { + uint32 opcode = Eluna::CHECKVAL(L, 2); + if (opcode >= NUM_MSG_TYPES) + return luaL_argerror(L, 2, "valid opcode expected"); + packet->SetOpcode((OpcodesList)opcode); + return 0; + } + + /** + * Reads and returns a signed 8-bit integer value from the [WorldPacket]. + * + * @return int8 value + */ + int ReadByte(lua_State* L, WorldPacket* packet) + { + int8 _byte; + (*packet) >> _byte; + Eluna::Push(L, _byte); + return 1; + } + + /** + * Reads and returns an unsigned 8-bit integer value from the [WorldPacket]. + * + * @return uint8 value + */ + int ReadUByte(lua_State* L, WorldPacket* packet) + { + uint8 _ubyte; + (*packet) >> _ubyte; + Eluna::Push(L, _ubyte); + return 1; + } + + /** + * Reads and returns a signed 16-bit integer value from the [WorldPacket]. + * + * @return int16 value + */ + int ReadShort(lua_State* L, WorldPacket* packet) + { + int16 _short; + (*packet) >> _short; + Eluna::Push(L, _short); + return 1; + } + + /** + * Reads and returns an unsigned 16-bit integer value from the [WorldPacket]. + * + * @return uint16 value + */ + int ReadUShort(lua_State* L, WorldPacket* packet) + { + uint16 _ushort; + (*packet) >> _ushort; + Eluna::Push(L, _ushort); + return 1; + } + + /** + * Reads and returns a signed 32-bit integer value from the [WorldPacket]. + * + * @return int32 value + */ + int ReadLong(lua_State* L, WorldPacket* packet) + { + int32 _long; + (*packet) >> _long; + Eluna::Push(L, _long); + return 1; + } + + /** + * Reads and returns an unsigned 32-bit integer value from the [WorldPacket]. + * + * @return uint32 value + */ + int ReadULong(lua_State* L, WorldPacket* packet) + { + uint32 _ulong; + (*packet) >> _ulong; + Eluna::Push(L, _ulong); + return 1; + } + + /** + * Reads and returns a single-precision floating-point value from the [WorldPacket]. + * + * @return float value + */ + int ReadFloat(lua_State* L, WorldPacket* packet) + { + float _val; + (*packet) >> _val; + Eluna::Push(L, _val); + return 1; + } + + /** + * Reads and returns a double-precision floating-point value from the [WorldPacket]. + * + * @return double value + */ + int ReadDouble(lua_State* L, WorldPacket* packet) + { + double _val; + (*packet) >> _val; + Eluna::Push(L, _val); + return 1; + } + + /** + * Reads and returns an unsigned 64-bit integer value from the [WorldPacket]. + * + * @return ObjectGuid value : value returned as string + */ + int ReadGUID(lua_State* L, WorldPacket* packet) + { + ObjectGuid guid; + (*packet) >> guid; + Eluna::Push(L, guid); + return 1; + } + + /** + * Reads and returns a string value from the [WorldPacket]. + * + * @return string value + */ + int ReadString(lua_State* L, WorldPacket* packet) + { + std::string _val; + (*packet) >> _val; + Eluna::Push(L, _val); + return 1; + } + + /** + * Writes an unsigned 64-bit integer value to the [WorldPacket]. + * + * @param ObjectGuid value : the value to be written to the [WorldPacket] + */ + int WriteGUID(lua_State* L, WorldPacket* packet) + { + ObjectGuid guid = Eluna::CHECKVAL(L, 2); + (*packet) << guid; + return 0; + } + + /** + * Writes a string to the [WorldPacket]. + * + * @param string value : the string to be written to the [WorldPacket] + */ + int WriteString(lua_State* L, WorldPacket* packet) + { + std::string _val = Eluna::CHECKVAL(L, 2); + (*packet) << _val; + return 0; + } + + /** + * Writes a signed 8-bit integer value to the [WorldPacket]. + * + * @param int8 value : the int8 value to be written to the [WorldPacket] + */ + int WriteByte(lua_State* L, WorldPacket* packet) + { + int8 byte = Eluna::CHECKVAL(L, 2); + (*packet) << byte; + return 0; + } + + /** + * Writes an unsigned 8-bit integer value to the [WorldPacket]. + * + * @param uint8 value : the uint8 value to be written to the [WorldPacket] + */ + int WriteUByte(lua_State* L, WorldPacket* packet) + { + uint8 byte = Eluna::CHECKVAL(L, 2); + (*packet) << byte; + return 0; + } + + /** + * Writes a signed 16-bit integer value to the [WorldPacket]. + * + * @param int16 value : the int16 value to be written to the [WorldPacket] + */ + int WriteShort(lua_State* L, WorldPacket* packet) + { + int16 _short = Eluna::CHECKVAL(L, 2); + (*packet) << _short; + return 0; + } + + /** + * Writes an unsigned 16-bit integer value to the [WorldPacket]. + * + * @param uint16 value : the uint16 value to be written to the [WorldPacket] + */ + int WriteUShort(lua_State* L, WorldPacket* packet) + { + uint16 _ushort = Eluna::CHECKVAL(L, 2); + (*packet) << _ushort; + return 0; + } + + /** + * Writes a signed 32-bit integer value to the [WorldPacket]. + * + * @param int32 value : the int32 value to be written to the [WorldPacket] + */ + int WriteLong(lua_State* L, WorldPacket* packet) + { + int32 _long = Eluna::CHECKVAL(L, 2); + (*packet) << _long; + return 0; + } + + /** + * Writes an unsigned 32-bit integer value to the [WorldPacket]. + * + * @param uint32 value : the uint32 value to be written to the [WorldPacket] + */ + int WriteULong(lua_State* L, WorldPacket* packet) + { + uint32 _ulong = Eluna::CHECKVAL(L, 2); + (*packet) << _ulong; + return 0; + } + + /** + * Writes a 32-bit floating-point value to the [WorldPacket]. + * + * @param float value : the float value to be written to the [WorldPacket] + */ + int WriteFloat(lua_State* L, WorldPacket* packet) + { + float _val = Eluna::CHECKVAL(L, 2); + (*packet) << _val; + return 0; + } + + /** + * Writes a 64-bit floating-point value to the [WorldPacket]. + * + * @param double value : the double value to be written to the [WorldPacket] + */ + int WriteDouble(lua_State* L, WorldPacket* packet) + { + double _val = Eluna::CHECKVAL(L, 2); + (*packet) << _val; + return 0; + } +}; + +#endif diff --git a/modules/mod-eluna/src/LuaEngine/docs/.gitignore b/modules/mod-eluna/src/LuaEngine/docs/.gitignore new file mode 100644 index 0000000..3fd1eba --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/docs/.gitignore @@ -0,0 +1,2 @@ +# Ignore the temporary "build" folder. +build \ No newline at end of file diff --git a/modules/mod-eluna/src/LuaEngine/docs/CONTRIBUTING.md b/modules/mod-eluna/src/LuaEngine/docs/CONTRIBUTING.md new file mode 100644 index 0000000..2a287f4 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/docs/CONTRIBUTING.md @@ -0,0 +1,19 @@ +# Contributing +Eluna uses C for the Lua engine, C++ for the server modifications and system code, Lua for scripting side code and scripts, python for the web documentation generation - but you do not have to be able to code to help. + +You can contribute to Eluna in various ways: +* Improve our documentation: [Documentation generation](DOC_GEN.md) +* Create new features or enhance old features: [Eluna source](https://github.com/ElunaLuaEngine/Eluna) +* Notify us about your concerns, problems and needs regarding Eluna: [Issue tracker](https://github.com/ElunaLuaEngine/Eluna/issues) +* Create and improve Lua scripts, systems, releases and guides: [Eluna forum section](https://www.getmangos.eu/forums/forum/118-eluna-lua-engine/) + +### Features and documentation +To contribute to the source code and documentation within it, create a pull request for our github repository: + +1. [Set up git](https://help.github.com/articles/set-up-git/) +2. [Fork](https://help.github.com/articles/fork-a-repo/) our repository: [Eluna repository](https://github.com/ElunaLuaEngine/Eluna) +3. Create a branch: `git checkout -b mybranch` +4. Make your contribution changes +5. Commit your changes `git commit -a -m "commit message"` +6. Push your commit to github: `git push` +7. Open a [pull request](https://help.github.com/articles/using-pull-requests/) diff --git a/modules/mod-eluna/src/LuaEngine/docs/DOC_GEN.md b/modules/mod-eluna/src/LuaEngine/docs/DOC_GEN.md new file mode 100644 index 0000000..6acac22 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/docs/DOC_GEN.md @@ -0,0 +1,165 @@ +# Documentation generation +Eluna uses a custom made documentation generator to create it's [web documentation](http://elunaluaengine.github.io/). +The generator is written in python by Patman. It works by parsing Eluna's source files for comments and then generates the HTML and javascript for the documentation based on them. + +This page guides you through generating the web documentation locally and explains the standards of the documentation comments for you to help us improve our documentation. To contribute with your documentation changes, create a [pull request](https://help.github.com/articles/using-pull-requests/) + +# Generating locally +- install [python](https://www.python.org/)(2) + - when installing, tick to install the path variable + - you may need restart afterwards for the installation to properly take effect +- install a package manager like [pip](https://pip.pypa.io/en/latest/) + - if you installed pip and it does not work, restart or try easy_install command +- install the dependencies with manager + - [Jinja2](https://pypi.python.org/pypi/Jinja2) + - [typedecorator](https://pypi.python.org/pypi/typedecorator) + - [markdown](https://pypi.python.org/pypi/Markdown) +- Run in cmd `python -m ElunaDoc` when at `\LuaEngine\docs\` + +# Documenting +You can document functions in the Eluna source code. To find examples simply open a method header file like `PlayerMethods.h` and see the comments. + +## Templates +Here are some basic templates for a function documentation. When defining a parameter or a return value the type and value name are mandatory, unless the parameter type is `...`, which is used for variable arguments; do not include a name in this case. + +```c++ +/** + * Short description (about 80 characters long). + * + * @param Type paramName + * @return Type returnName + */ +``` + +```c++ +/** + * Short description (about 80 characters long). + * + * @param Type paramName = defaultValue : parameter description + * @return Type returnName : return value description + */ +``` + +This is a template for a function that takes in different parameters. When defining a parameter or a return value, the type and value name are mandatory. + +```c++ +/** + * Short description (about 80 characters long). + * + * @proto returnValue = (object) + * @proto returnValue = (x, y, z) + * @param [WorldObject] object = defaultValue : parameter description + * @param float x = defaultValue : parameter description + * @param float y = defaultValue : parameter description + * @param float z = defaultValue : parameter description + * @return Type returnName : return value description + */ +``` + +## Standard +A documentation comment block will always start with `/**` and end with `*/`. +All lines start with `*` character followed by one space before any content. + +The first paragrph is used as a short description of the function/class, so it should be kept to about 80 characters. The other paragraphs can be as long as desired. + +All paragraphs in the description (including the first) should start with a capital letter and end with a period. +**Paragraphs must be separated by an empty line**, e.g.: + +```c++ +/** + * This is a short description (about 80 characters). + * + * Here's another paragraph with more info. NOTE THE EMPTY LINE BETWEEN THE PARAGRAPHS. + * This does need to be short, and this line is still part of the same paragraph because + * there is no empty line. + */ + ``` + +The parameter and return value descriptions should start with a lowercase letter and not end with a period. If more than one sentence is needed, start the *first* without a capital letter and end the *last* without a period. + +Any class, enum or function can be referenced (made a link to) with square brackets. +`[Player]` will reference a player. `[WeatherType]` will reference an enum. `[Player:GetName]` will reference a function. + +Use correct indentation with documentation comments. + +```c++ +/** + * Correct indentation. + */ +``` + +```c++ +/** +* Invalid indentation. +*/ +``` + +## Markdown +You can use [markdown](http://pythonhosted.org//Markdown/) in your descriptions. +For syntax see http://daringfireball.net/projects/markdown/syntax and http://pythonhosted.org//Markdown/#differences + +``` +/** + * Description. + * + * - list item + * - list item + * - list item + * + * + * // Codeblock + * // Code goes here. + * // Note the 4-space indent. + * + * + * `code line` + * + * *italic* + * **bold** + */ +``` + +**The above markdown code produces the output below:** + +Description. + +- list item +- list item +- list item + +``` +// Codeblock +// Code goes here. +// Note the 4-space indent. +``` + +`code line` + +*italic* +**bold** + +## Types +Here are some examples of possible types and most commonly used ones: + +``` +string +uint64 +uint32 +uint16 +uint8 +int64 +int32 +int16 +int8 +double +float +... +[EnumName] +[Player] +[Creature] +[GameObject] +[Item] +[Unit] +[WorldObject] +[Object] +``` diff --git a/modules/mod-eluna/src/LuaEngine/docs/Eluna.png b/modules/mod-eluna/src/LuaEngine/docs/Eluna.png new file mode 100644 index 0000000000000000000000000000000000000000..b450d336e26ae35f47541220697a61448cbf36d4 GIT binary patch literal 2570 zcmV+l3ib7gP)1^@s6O0H^40000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU*tVu*cRCwC#olkb!IuyoLPUd9?aaT|> z$hfe8oRVQiF=GZKD>nf1&_Ca_bjel8(Rkdkz_%?-#KpH zBLo{;{`}pmE2+f*0KhOUoB{xVY0j)UlHt+`|LutFYq+(=Z#s$p_QlUlxcv&ZAl%mM z@oJ4r2>^trsMz$wf4_wr|LI8H!3AXzZod@^;d}_$qxZ!py5u1$= znz!xG$E!^ZLE}y+z$FIYZx$XBoUsrcnX{SK5}WM)?u46~AQS`OZxo*4@*(_pBngXr zAq>8z{qj)kNeJ7$GEoBnSS&nr_>2m)t$L2j1mv zMMziId9~x_J#Kx5oDTp;=6I;L$Sv?rSGbE05$f2$fKjf8JGCjA0|3Y1c&JY2XT`tf z?qa?Td75+@!(~^5i6lfOYKs7X-=VIq#VjgSifTSF~!1s^Os_Ud}4Kro(TXW!HpX%-^nFrb=>oBzbLK`3Sh1dA#CX>R-0*CYzMz&S+&Y@$8A8 zE_%2Cut9j@WO0&>vRn)oAjZBh>San24Q+4@oRg%8_R&NDXx{P2ZbY>SU~)h_RJagf zR+1;};zRk7XusdlL;z4v*;OWFH{uUX0~g zPH`7ITn3OkSgIk*6Q7P{;v*A~U7>k@@gyk*CloE^iRLoGlP#38NzthhEdIpW>cC=u zK!%fOcl*TWqw!iF5)LQz>MRtRK=N+ccNwehUN0j&|K^-nn-~a((mlG`3UJJh+e?J| zX__rGB*7RM1(ehR&O$#+ni!l>tX>}vqYI91h&QuVz9aY3tY2>I-8d)#gJ4v0?^ z55qCbcAw8hPA3mpuIEnliYei&3Wdk z0j%VG(%aK+OcomM>pnlkMB?7~I4&i%a%Fq9(vyC5EWY?$v7H({TwO-9D?)fcm5{&3 z@+ZmDUua0(=V_7fMbFh?DDgZmC}!G)Cp{Y7(KJ9)1(C9kD*pXBQ$4#P_`AgC@#>oG z4roro3k_d2_6*l?I}tM`?_RI%*veKeFC<^6&*CM3ZMyKh^4Jp>*r_nQqr>VY!eev+_DXns*X)R>Y$SVAuiam_BIUsp=yava!J0Eext;LsplDNRdp{I~z zEC~osU3|DhFjHtq-RHWO;jZ1iUZrw*o;h*0hFc_*eg$#tBFqAc+oH$fIy1TWsNs&8 znMKkSc_c%^LnknO^2Qcl@_7Yu{9Yj*2B65j)7v9HqgtO&-RC2N->C9^e^%pW9`D4e z!{xn|qo;Xc*KirIa=EAtmH`Hu+GAAf^UAWr82So?AnkVeXs!xw<&^wE)2J~y-)YTdQdJBkvJv51#nwW3|e#uuR35(yHY z3#M|`0Xko9rY)!t9S%<<=M@!R-YgDOLMsv;?rgZj*&XpZ+V&#Z=@gz>@u?hrP0r0_ z`Lp_~WK#11pgJ+>v;Ebsf#k`rGUt)E&!(NvCgFTki0nA0EvV#PxU%-nL!yG|Xw^7z z9@`x*VIrGe{RzVxTM@^B$+ntsqo#SYq+RlmKD}~E6}RI`#4D&00v&KYo1AE%^fak; z=i^Cd>HCVOA64DJySUG-W6sPDfZf!-(bWskfYqyoGvRh3W;xfZl<810=W==^>yuUU z^z4RP-*BH>1{I<8423@w_La;>7!sd*mS5|$&+R-&LRIx{=dkPPm&wbWDL7$#H27B* z=TO=rKEJRo+%i{hK{t_9L5HM|by?Al#>Ghj0sOHJ~J!Dhq~3_cmOy#;h`Hm%Fu5T;$zEFA093{0L}7A z>!(vM5_daY@k+obx$EQ90|4RC3(c;dTr8f4ViWW(0RZ9AEk4nhj%aWxEk%RLwg7{}'.format(url, full_name)) + + for name in class_names: + # Take the [] off the front of the class's name. + class_name = name[1:-1] + url = '{}{}/index.html'.format(('../' * level), class_name) + # Replace occurrencies of &Class:Method with the url created + content = content.replace(name, '{}'.format(url, class_name)) + + return content + + # Links to the "Programming in Lua" documentation for each Lua type. + lua_type_documentation = { + 'nil': 'http://www.lua.org/pil/2.1.html', + 'boolean': 'http://www.lua.org/pil/2.2.html', + 'number': 'http://www.lua.org/pil/2.3.html', + 'string': 'http://www.lua.org/pil/2.4.html', + 'table': 'http://www.lua.org/pil/2.5.html', + 'function': 'http://www.lua.org/pil/2.6.html', + '...': 'http://www.lua.org/pil/5.2.html', + } + + def data_type_parser(content): + # If the type is a Lua type, return a link to Lua documentation. + if content in lua_type_documentation: + url = lua_type_documentation[content] + return '{}'.format(url, content) + + # Otherwise try to build a link to the proper page. + if content in class_names: + class_name = content[1:-1] + url = '{}{}/index.html'.format(('../' * level), class_name) + return '{}'.format(url, class_name) + + # Case for enums to direct to a search on github + enum_name = content[1:-1] + url = 'https://github.com/ElunaLuaEngine/ElunaTrinityWotlk/search?l=cpp&q=%22enum+{}%22&type=Code&utf8=%E2%9C%93'.format(enum_name) + return '{}'.format(url, enum_name) + + # By default we just return the name without the [] around it + return content[1:-1] + + return link_parser, data_type_parser + + # Create the render function with the template path and parser maker. + render = make_renderer('ElunaDoc/templates', make_parsers) + + # Render the index. + render('index.html', 'index.html', level=0, classes=classes) + # Render the search index. + render('search-index.js', 'search-index.js', level=0, classes=classes) + # Render the date. + render('date.js', 'date.js', level=0, currdate=time.strftime("%d/%m/%Y")) + + for class_ in classes: + print(f'Rendering pages for class {class_.name}...') + + # Make a folder for the class. + os.mkdir('build/' + class_.name) + index_path = '{}/index.html'.format(class_.name) + sidebar_path = '{}/sidebar.js'.format(class_.name) + + # Render the class's index page. + render('class.html', index_path, level=1, classes=classes, current_class=class_) + + # Render the class's sidebar script. + render('sidebar.js', sidebar_path, level=1, classes=classes, current_class=class_) + + # Render each method's page. + for method in class_.methods: + method_path = '{}/{}.html'.format(class_.name, method.name) + render('method.html', method_path, level=1, current_class=class_, current_method=method) diff --git a/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/parser.py b/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/parser.py new file mode 100644 index 0000000..471c87f --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/parser.py @@ -0,0 +1,333 @@ +import re +import typing +import markdown +from typedecorator import params, returns, Nullable + + +class ParameterDoc(object): + """The documentation data of a parameter or return value for an Eluna method.""" + + # The integer ranges that each C++ type is valid for. None means valid for all numbers. + valid_ranges = { + 'float': None, + 'double': None, + 'int': ('-2,147,483,647', '2,147,483,647'), # This should be -32767..32767, but it's pretty safe to assume 32-bit. + 'int8': ('-127', '127'), + 'uint8': ('0', '255'), + 'int16': ('-32,767', '32,767'), + 'uint16': ('0', '65,535'), + 'int32': ('-2,147,483,647', '2,147,483,647'), + 'uint32': ('0', '4,294,967,295'), + 'int64': ('-9,223,372,036,854,775,808', '9,223,372,036,854,775,807'), + 'uint64': ('0', '18,446,744,073,709,551,615'), + 'ObjectGuid': ('0', '18,446,744,073,709,551,615'), + } + + @params(self=object, name=Nullable(str), data_type=str, description=str, default_value=Nullable(str)) + def __init__(self, name, data_type, description, default_value=None): + """If `name` is not provided, the Parameter is a returned value instead of a parameter.""" + self.name = name + self.data_type = data_type + self.default_value = default_value + + if self.data_type == '...': + self.name = '...' + else: + assert(self.name is not None) + + if description: + # Capitalize the first letter, add a period, and parse as Markdown. + self.description = '{}{}. '.format(description[0].capitalize(), description[1:]) + self.description = markdown.markdown(self.description) + else: + self.description = '' + + # If the data type is a C++ number, convert to Lua number and add range info to description. + if self.data_type in self.valid_ranges.keys(): + range = ParameterDoc.valid_ranges[self.data_type] + if range: + self.description += '

Valid numbers: integers from {0} to {1}.

'.format(range[0], range[1]) + else: + self.description += '

Valid numbers: all decimal numbers.

' + + self.data_type = 'number' + + elif self.data_type == 'bool': + self.data_type = 'boolean' + + elif self.data_type == 'int64' or self.data_type == 'uint64': + self.data_type = '[' + self.data_type + ']' + + elif not self.data_type in ['nil', 'boolean', 'number', 'string', 'table', 'function', '...'] and self.data_type[:1] != '[': + print(f"Missing angle brackets [] around the data type name: `{self.data_type}`") + + +class MethodDoc(object): + """The documentation data of an Eluna method.""" + @params(self=object, name=str, description=str, prototypes=[str], parameters=[ParameterDoc], returned=[ParameterDoc]) + def __init__(self, name, description, prototypes, parameters, returned): + self.name = name + self.prototypes = prototypes + self.parameters = parameters + self.returned = returned + + # Parse the description as Markdown. + self.description = markdown.markdown(description) + # Pull the first paragraph out of the description as the short description. + self.short_description = self.description.split('

')[0][3:] + # If it has a description, it is "documented". + self.documented = self.description != '' + + +class MangosClassDoc(object): + """The documentation of a MaNGOS class that has Lua methods.""" + @params(self=object, name=str, description=str, methods=[MethodDoc]) + def __init__(self, name, description, methods): + self.name = name + # Parse the description as Markdown. + self.description = markdown.markdown(description) + # Pull the first paragraph out of the description as the short description. + self.short_description = self.description.split('

')[0][3:] + # Sort the methods by their names. + self.methods = sorted(methods, key=lambda m: m.name) + + # If any of our methods are not documented, we aren't fully documented. + for method in methods: + if not method.documented: + self.fully_documented = False + break + else: + self.fully_documented = True + + # In the same vein, if any of our methods are documented, we aren't fully *un*documented. + for method in methods: + if method.documented: + self.fully_undocumented = False + break + else: + self.fully_undocumented = True + + +class ClassParser(object): + """Parses a file line-by-line and returns methods when enough information is received to build them.""" + + # Various regular expressions to parse different parts of the doc string. + # There are used to parse the class's description. + class_start_regex = re.compile(r"\s*/\*\*\*") # The start of class documentation, i.e. /*** + class_body_regex = re.compile(r"\s*\*\s*(.*)") # The "body", i.e. a * and optionally some descriptive text. + class_end_regex = re.compile(r"\s*\*/") # The end of the comment portion, i.e. */ + + # These are used to parse method documentation. + start_regex = re.compile(r"\s*/\*\*") # The start of documentation, i.e. /** + body_regex = re.compile(r"\s*\s?\*\s?(.*)") # The "body", i.e. a * and optionally some descriptive text. + # An extra optional space (\s?) was thrown in to make it different from `class_body_regex`. + + param_regex = re.compile(r"""\s*\*\s@param\s # The @param tag starts with opt. whitespace followed by "* @param ". + ([^\s]+)\s(\w+)? # The data type, a space, and the name of the param. + (?:\s=\s(\w+))? # The default value: a = surrounded by spaces, followed by text. + (?:\s:\s(.+))? # The description: a colon surrounded by spaces, followed by text. + """, re.X) + # This is the same as the @param tag, minus the default value part. + return_regex = re.compile(r"""\s*\*\s@return\s + ([\[\]\w]+)\s(\w+) + (?:\s:\s(.+))? + """, re.X) + proto_regex = re.compile(r"""\s*\*\s@proto\s + ([\w\s,]+)? # The list of arguments. + (?:=\s)? # An equals sign and a space separate the args and returns. + (?:\(([\w\s,]+)\))? # The list of return values, in parens. + """, re.X) + + comment_end_regex = re.compile(r"\s*\*/") # The end of the comment portion, i.e. */ + end_regex = re.compile(r"\s*int\s(\w+)\s*\(") # The end of the documentation, i.e. int MethodName( + + def __init__(self, class_name): + assert ClassParser.class_body_regex is not ClassParser.body_regex + # The methods that have been parsed. + self.methods = [] + # The name of the class being parsed. + self.class_name = class_name + # The description of the class being parsed. + self.class_description = '' + # Reset the parser's state machine. + self.reset() + + def reset(self): + # What the last handled regex was, to determine what the next should be. + self.last_regex = None + + # These are used to piece together the next `Method`. + self.description = '' + self.params = [] + self.returned = [] + self.method_name = None + self.prototypes = [] + + def handle_class_body(self, match): + text = match.group(1) + self.class_description += text + '\n' + + def handle_body(self, match): + text = match.group(1) + self.description += text + '\n' + + def handle_param(self, match): + data_type, name, default, description = match.group(1), match.group(2), match.group(3), match.group(4) + self.params.append(ParameterDoc(name, data_type, description, default)) + + def handle_return(self, match): + data_type, name, description = match.group(1), match.group(2), match.group(3) + self.returned.append(ParameterDoc(name, data_type, description)) + + def handle_proto(self, match): + return_values, parameters = match.group(1), match.group(2) + parameters = ' '+parameters+' ' if parameters else '' + return_values = return_values + '= ' if return_values else '' + + if self.class_name == 'Global': + prototype = '{0}{{0}}({1})'.format(return_values, parameters) + else: + prototype = '{0}{1}:{{0}}({2})'.format(return_values, self.class_name, parameters) + + self.prototypes.append(prototype) + + def handle_end(self, match): + self.method_name = match.group(1) + + def make_prototype(parameters): + if parameters != '': + parameters = ' ' + parameters + ' ' + + if self.class_name == 'Global': + if self.returned: + return_values = ', '.join([param.name for param in self.returned]) + prototype = '{0} = {1}({2})'.format(return_values, self.method_name, parameters) + else: + prototype = '{0}({1})'.format(self.method_name, parameters) + else: + if self.returned: + return_values = ', '.join([param.name for param in self.returned]) + prototype = '{0} = {1}:{2}({3})'.format(return_values, self.class_name, self.method_name, parameters) + else: + prototype = '{0}:{1}({2})'.format(self.class_name, self.method_name, parameters) + + return prototype + + # If there's no prototype, make one with all params and returns. + if not self.prototypes: + # A list of all parameters with default values. + params_with_default = [] + # The index of the last non-default parameter. + last_non_default_i = 0 + # If False, a parameter WITHOUT a default value follows one WITH a default value. + # In this case, don't bother generating prototypes. + simple_order = True + + for i, param in enumerate(self.params): + if param.default_value: + params_with_default.append(param) + else: + last_non_default_i = i + if params_with_default: + simple_order = False + + if not params_with_default or not simple_order: + # Just generate one prototype with all the parameters. + parameters = ', '.join([param.name for param in self.params]) + self.prototypes.append(make_prototype(parameters)) + else: + # Generate a prototype for all the non-default parameters, + # then one for each default parameter with all the previous parameters. + for i in range(last_non_default_i, len(self.params)): + parameters = ', '.join([param.name for param in self.params[:i+1]]) + self.prototypes.append(make_prototype(parameters)) + + else: + # Format the method name into each prototype. + self.prototypes = [proto.format(self.method_name) for proto in self.prototypes] + + self.methods.append(MethodDoc(self.method_name, self.description, self.prototypes, self.params, self.returned)) + + # Table of which handler is used to handle each regular expressions. + regex_handlers = { + class_start_regex: None, + class_body_regex: handle_class_body, + class_end_regex: None, + start_regex: None, + body_regex: handle_body, + param_regex: handle_param, + return_regex: handle_return, + proto_regex: handle_proto, + comment_end_regex: None, + end_regex: handle_end, + } + + # Table of which regular expressions can follow the last handled regex. + # `body_regex` must always come LAST when used, since it also matches param, return, and comment_end. + next_regexes = { + None: [class_start_regex, start_regex, end_regex], + class_start_regex: [class_end_regex, class_body_regex], + class_body_regex: [class_end_regex, class_body_regex], + class_end_regex: [], + start_regex: [param_regex, return_regex, proto_regex, comment_end_regex, body_regex], + body_regex: [param_regex, return_regex, proto_regex, comment_end_regex, body_regex], + proto_regex: [param_regex, return_regex, proto_regex, comment_end_regex, body_regex], + param_regex: [param_regex, return_regex, comment_end_regex, body_regex], + return_regex: [return_regex, comment_end_regex], + comment_end_regex: [end_regex], + end_regex: [], + } + + @returns(Nullable(MethodDoc)) + @params(self=object, line=str) + def next_line(self, line): + """Parse the next line of the file. + + This method returns a `Method` when enough data to form a `Method` has been parsed. + Otherwise, it returns None. + """ + # Get the list of expected regular expressions using the last one handled. + valid_regexes = self.next_regexes[self.last_regex] + + # Try to find a match. + for regex in valid_regexes: + match = regex.match(line) + + if match: + handler = self.regex_handlers[regex] + + if handler: + handler(self, match) + + # Not every regex has a handler, but keep track of where we are anyway. + self.last_regex = regex + # Break at the first match. + break + else: + # No valid regex was found, reset everything. + self.reset() + + @returns(MangosClassDoc) + def to_class_doc(self): + """Create an instance of `MangosClassDoc` from the parser's data. + + Is called by `parse_file` once parsing is finished. + """ + return MangosClassDoc(self.class_name, self.class_description, self.methods) + + @staticmethod + @returns(MangosClassDoc) + @params(file=typing.IO) + def parse_file(file): + """Parse the file `file` into a documented class.""" + # Get the class name from "ClassMethods.h" by stripping off "Methods.h". + class_name = file.name[:-len('Methods.h')] + parser = ClassParser(class_name) + + line = file.readline() + + while line: + parser.next_line(line) + line = file.readline() + + return parser.to_class_doc() diff --git a/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/FiraSans-Medium.woff b/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/FiraSans-Medium.woff new file mode 100644 index 0000000000000000000000000000000000000000..5627227744ae5b2ffb83e632cb32b237428c8962 GIT binary patch literal 89883 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%0Dk_#%Y{EcU_rFP4oA@FKf8}T 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�*_BmXVd#S5mW8HYZxRlrC2S%~o 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 literal 0 HcmV?d00001 diff --git a/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceCodePro-Regular.woff b/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceCodePro-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..5576670903aea90041f214624c8dd1176fdf6081 GIT binary patch literal 55472 zcmagEV|1iV)GpjfCYac^ZCev#Voq$^NyoO$iEZ1M*tTuwpWqrlAC$?dy; zz5oCi1pt76I@hG`Y-MZstp_jh-9MFYMCzax9$V|XeYXqx^9D*(XTHKKcVXJ_l^1OSvyeAi|0t)?9)@uSqv!T8%2Zu{F#=s%FxlhnAa8tNJ8 z>FF7TAzv`_<4@V%CHW=1fd3BMsW|rcV5B1-x&Aur1}zfNvzLP)kEH}Cxx@N@8~-1> zuA3`9FfgTouZ*u^COiW`I3d_!0ie|r3jbRN0P;PWL4Ya%5nv5~_%HXJpuch2ta1 zF|Z2ax9GD}1W;$#cgrhF#hHy(PATafw!--FG|9jC41s=pV(;>*aG3)s%;2g%P(HW3CgqNOtz+s1nJma zg62H|J?9$YrUT{2U-@-|O>oe*+W*MJ9!oRUP91X{{pV-m-_fvq3BxW&Ho1&}7i9IZ zN1o@3R@!llx3)4z=!uYD1+4rxV@5e;%Qg$yu<9d^)&6Mfz`l)U)%GhoUQ`8dOa9+{ zxWPo65L0;>Z_O#gI)|P6J{>AvAyNaH@;fY(H4IbRh#eu;cCknmd!n=fBn@$n_S_dk z=`Z1&3XxwB%S2sdWq24b9XNJ>u0<%;16?qE)vm$#qlI^&C~*bY{nXq6%?y0twb|{O5jIVm8}UHD%W8lAP(AYGWY^;SI<$|e zFs0pV$Qa7196nuGPzdF?Yb=+s=e($7)16w&7RGmT(9;ilJt;sjXwlM%98$9W9Z^xq-A9TybUWK4#-ti&h3|-o|R7(Ut34I zrdJ=CK!GjD9$yAUOwmOJDbxFZAI}m;FW1w}5G!Y&A^qF(9aMux4HMgvpTwwfpmnjO zUIXRvA;p-(bG-fayu)`LJrNxPtVQDv8ss$3^{7Jh`@saagw;BH0?<7K;7GoLKk^X$ zk^K88{qree1KTiLCuK0pMU9mAvEE13gve*DJb$?P(xv^g_pmeoj>=Ka`i7L#h>|-f) zDovvvE2P$iojPlWZymj7b#m0b zq-o@F9m8+$;aY`+Ebbw$#^k4jpp7>m+y_yiX1}tg)qjt8o&&|vp%E?3R zszVp@TWnj2lKFT$^Gf+eg*IthtTLG*sRsTxmld+N{aoB+f`>A-DDB{GB(p%wJTZ-e z4u#PY3tam^o^)iR0ERh`SD7e=s6qH4)C=PJ!CyBb$DEv;*s)Ojj57JW=Z>r>|(+A{Sg zr6!vu=_lRk?O$3!|MXT7SH;uMsmv@4Ec{zo>m0+|+dSAjo zlpk#J_Uz2PtfwAp^^3oZmKdO1xw3=6*b&0M+$OTD;d(o$3EN@M)@!@G+2v=iOq315 zSf04AU7_+k@bx08eVuZH!}J*=S6@kF>dUS-udv!wVZX?!zu};(uh8hNFlT4wNeh^u zWLeETGejw{@~_-gr5eAjEj3wCWhc<=ue?!BWTOfB=V4jjD6;bYA#b(HNs{U4u#Bq6 zPL^GNau8g%a6{Td0{;7Ja{Gj>^W zwFDEgK{2;wW8Peov9jah-Jbks)MXW(r)Tr@jaxA7$g}H_;w}B6mf`HU!<(IjuaYqq z{qN5iR4Kkh4@T!FV6w85ffS`3+x^PACu^bO80eK>q8RsP{>uKwcIU3_ExFsCv&#_9 z5#P?A9rxYVqtR=*2f4?^yT#i!UL4*tJ|DW#P10^sNnrzs z*cKKhVtsL8-EO*-Xk!Igwtr{oVpc^tITp#5?B>xDa3{o$byw1l#~F3HuEHIppN$R& zo?O{1;YplaPgjk*?)ftQdILD4451&2 zE;^hjPr6dQODiuCwrZcc&U^A~yT7&s9GiEP9Zk|)6WiFjf0Wn<{G}rp;pSI`(N$y^ z4y7tw7{pnaNIS(3X*d!|D^yMYhjaRoZ1EXw(FWCc7>a9IM52jq80En*o<1DwYl$1V zc4}e4M!8)MsjrDtciPL$9!qw5y`u@&fNlq$Ql4|Rqt@Z4W#%W-AueQzZ8pAc)~{_Q zF5slc@1#%I#tgNg4)vjdoTY&Xh8gZh8zkhU$0!S10MmamWY!f}TM;VJ6-lYu%ef&- zP|r#fVZ^$>XpON}6ICb#V3nyX)S9%##dWE?>Uk|2TpQe3} z=CMcav6udF(B^S?={y7sH~a(FA83c#b%5zLTpMak`Z;RPIVf)zRv$Yu6&Hv~FHD`X zO^soQ$3q;g)L>zx$E(}R+!b-fg)d+S8tq8@IY{|F62lZ&Sey2zHU!KrmOzT*gd$)e zcm<70qg=`VKK7GYv?^4sN-AAD;mkqAW{hq$w%tLOd62yX{el$9Vm5nL9AZSU!4$t^ zssmFBhM*SqbEqzLj5~FxEw$=u1GdYL3wHR(DzMcHW^EZ|Z3TvB8OM_g@r@HIgcEk_ znnZgWR(oGY+k`cq3&C8wtgAa9xFy1FU4&$PSj)|~xlzd?Qrygc*esmFEV$SWvOAB< zN8A;n08(T+A!sJz*R&SibjaXz%HT{48KYkkV_Z^gW@U~4l|Gr4A=(;Yuyt+v#Wnbv zAs>%E7)ecB)(x3J54lV4Pq{uxxgm455iGeu4Y__UxnXyoV7JL3w8@YVnC%1M&%-lZ zpQ%%v27!@N!b^*4#oz6TinA(xe>3mnC6P< zquLg)Y_-P1TW|F+Zd6g6@{aDPFsT*r*6?=m9P7do{$+;BEHeat$msPjFl4ohC3Kkg zi{$pwQ1ek6I{h-lF}oilyj?s^O*|6^HX3zpPn5H9q(Dkxlqmne+!N9e5s9R}t>g3P2C|NX23gM_510TBN3Hpdi|uF+FeuK~fS0cg~K zME}PHPywRf?BJVPeX#&wK@I`1p#0zP`9|zFMgXw?%{5;iP(m{d3~;@uZCS}yU)(jf zG+zBupDl2x{dC%4a@w(|b9unEq{DIJK|jj zy^On{sH9MhtFWu(boofeN9P9r8c5rBa4PVsWzx!_*`gIkAVk!oA_vL%QG$kN=Ks}0 zMHv*cS9(vRB-4r4HK1CdmQ2A-HUdEwgdh|IjDUduM!@t{?E!iAMP!8NfH3g|*8^9F zZ1UqH1bfeIQp8gxU=zhF=qj50jZs1~?|jNGE7@=MkCmn}VNp6_n%vCR{K`C{LEee| zk4$x*<%vgInoY6i3DGO&2g?V|hwdxW2c$Y+R*;<%!cvf~1oB@l-o3w&-H%Mr;$C+< zEN!rE-*&x2iYY`|KgVj`V2L@cK<%rLn9C#C2LbEG(=T&13*<+pKL5Fzy8 zX@k)0_^f=j^dZj!M6NO4v9tX!wv(70((=wlRuoq(R!ml!>jLVORO!n@2lZ~$nN{h^ z{fvz?)UzsdR0G+1J;q~Y=oN`v@sBQcYlh3MV5X zx%pNOGvH9G7#XI7 zTq;Ubnu1AMi5xOO@l$e$w3>`19(*+1=uaKpN`evTR^f}H;8;BI?4V_x<)tMBbGy}5 z+xhGAgLkWVmy3uii4VyiaFt(Wk3Pwtyb%t+fBaH_3ooEE<2e-qqx2h^`N17RK7-m8 zR5U|!U%_3St_Y__vT(MbwQzFUe`*C+8mtYr0A>K`g+Gcs? z%^py@fqSRv3L)58DOxY;BiBS(AFxE`0MF<;5$Y80E)jV1zI~z-=@PO{W&C?tdzp46 zyTQY>J5*x-#P6`>E-;h1Wo40Vz3D^fgXmFXVURH-n?nGNA1%OZX>R`V8gdxpY7*f7 zB)>bgr)qh2qC46BNY`>uU_5ubP-n?y}{J5cM7E}?6)~s2%w|T>j|AV*p%Jm?k>z;l{-? z#Jl3==LUqV`*Gn$#~NY-bMD+=5;KuV$6z&TYUC}(&}7z@ndnl{8J}r z^<4WlpF26w!~@-p{ljV_~qMIwQEDc$fSt`l`v9 zpE_B(&v^5ED}FtCTY7r}{R^P@jl&4}?l;;atVd(VEQpVYa145xfS3qr~=1!i|cZjxPm=7d)!3 zp-%7^ytgxWE%!Xk$XkKk1Q!x=6x>s2sPX0yP5h!hjwilmRSdB+&kJZ=7;^RbT3pI*4)NdlV- zECq3_vyq4At<~9Yi<$AxTk&)&$#gH_F{G0_r2ET1`mp+hp?-jJwN}>z(jXcv8>5^H z)Zpr)Kvg7zgGOMCcvB$m_Rv2bf0dQB7kRQK>_2_I17YG!?^Rrv%GFe^Iz1jXE#-!z z9B{7=Z4X$rA(sZzIC(hwHu~*ZJhyW?j*CqnZ5!K z-Vyb&Td#7cua!iOBiI}v6CRfMVdO@5A_jn{e3XZgr%k^{ole8Nib|WVBH(S>C^7Kt zWGOF+;_TObJ;hm!uH)y+Qf^Ryt=FCqVHixG0N8t!U_x3(EETf>Xe4yF2h(%}6?Zh1 ze|e*M3oPXFe@4cFD z#7^#Fx3@RK@9|Oq%`9M147;;^j7{gT#G98t9yH;i0u2UQ{Bn0;@!!- z>FuJIi?}cr3xVgpvA)^es{Zn~rwjgxEwiwwzi-WH4Z)RjK`;I&o#slF>0c@z!-h&E z0l))amV`5g8>-I)?NFS=x7>cxGgR+u{hp9F0Px4E2UHUO^I@)XviOVQ4AHTp1T2o9 zj=;NSJRo=Yg zi4~H95K}{@+C;iT7u~2~Pqfc4(42NZ*8uC*^(a3ZDSg9D=O_I|X)mYWp9`c-X==7_ z(-gZADRk?fVdM0j_jT@{Lk!*)XIg6Yb64%BWtMVamcATnf@|nzYdv(0)+@dsA_c~9 zSSoyiPJbU5XElYRKt5L`OMkAcd{qk)lmRi)PJzN&r=~X?lb=?XFI?-7p1IZ(X-7)d zYnOe3OG8cV>8mykX6Rc1Hf2D9hsCcB6zsPRs}F&^O6Um?o(Vs%2>GqqHy|ZTxgm9a> zEa}`PpO51PQ72-`U5}#tmz3>84zLWGy^M=Ktr!C+e(pAbRJV;Iy?GvB{uR*nGX-9Wc0jL}d?VW@CNqUSw`TNXG`gE(ME`-#8hWn}~E z;gns_;Aph%e@&M*pKR>(V&zTT%uAaLdBe+#n%obxxXNGXC7wEa$<4QkFV#lHRobwuF_OM}@+GXj- zPcU7)H*0;8K+duQ!!QcQQW0$Fnw$0tPB?p&O>*Xqm0cKO`l6%X$zil(PivgJre1G{ z{K3zh?!?Aja!Jxz3tgCwHbt(E#5V0id@R^KWP_gaL;z(T@b=U%Vd*C8q3fb67SN#S zgUiS@i2X$^2I;>%7UNNH-VQwPvyy z6y=3B55%6uHX;_-e25BplJb)sdfFv!*|u|TSVXS>#O~yRuH3EH68j0*2=CkKXT+Ep zIMl~|W8t0j1B0Ww4TfM5sbG=1P+1KYP1p%U5VGg!$a3mL(X2?wU;wF5&3QD2_|6k9 zgEVp?*0KOvl-vbD30_YQq{Ylk!(1AEl>cPFR9tr7W_h!9yM-%#_gh)zTGghOdgwnq zd^|2sZtScf10#9}r)-K7dlCveM{Dsv%#2VJp4%{4jePD05>GuGLZywhZA=k$+3Y#4 zK~oz^>^cGs#Zoq;X0ahs}SjEJgNDpmm|9<}l>xVtLg2Owu(0K9|7QOhWu zI5jZTpPU0?-HH6M{}|ecye%yX#m|=f_8;6{TK}HpzHLAR)cCeKZ?Qt1hWw9T7n($T z$Pv+h!Jh|U(WZ}HiK90#+Ha-VfJVrvT|nkt8r#uyjue?H`Ud0u%vLwA%gngAewLZz ziJiF^C#TD_(~65O2l!yZoUMS2KHpDL-I*&y(CV0gr9~o-6F3IfE&w z7stM_hDD+ib>ndx=?h(KE6oj_xv08p9iDOL+iu~(L19GP!<_B%i=e$RX@~b|gxS^d zv*^pc0I}x>)~A@INmE0^mNqbTB#VoHlmT9-V@UeA%~+XDKJAJuNz*`rBCp#285r}1%K@~nt*S} zf{}yeJh9l{hLLY@3%Q4zLQn_hDtTb-p7(chLx9O59mj}WLO4knqOCy4yyvt(U0pdp znnyimdwX7f?tJ!(#b{VMJ!N-7UWk(DBG2;cYCbD|v_Dh>H#BbFq$jHl+YAL=<09{# z%TIb2ceP_=HH0;lf2HG*KZfyzR3c?8qSxcEIvX6A-v<#4G?5}l)Ltz;@xjr_2(IB{ z-c=24st4p$D6lTnccR_aX5R;ZxoJQ$IK-KZ)cG z{YX$P#L)LX=6JO|pCRo%o`nta0~V^Gn7c)pus?r%PS%8DZDcSk^c0*_4q^eELu0g& z{@F4-9(rqbK6SuEMh)m@UYX0sEYZQY^L#z34;$^!itP1Tf&X}n z<(lqLTk1aS^teEKI$fK~Kv)WPeM|TZQ@3c^Iy=dcG;aPu9M-?kTYrec5RID-TkM6_ zyrq;WSy=SOm*0*o8At&iXO9)kH?}p>B8t6N=O;W0Wfd6#4u(G1a<7*g5-m-!Zb`If z5NLS}Ki4M)b_Qg4S)@AASUt-vtF~XZp*}1wP_9rhdkQIF#9TS4F&S>q+1pB^qlJ4` zYnGXk4;=FE)tr6Voz5GTSZ=<0KJmK|WaqWFbDCO#Vc6AA3;vwcTLTRBBi!kgSp$ZWgA%%NRpTe@{aouSrBoQ zyx$x&2h!~=b#i){DZ;{4Cwlz(b2Ae;XI>4hZ@;_E1*2ts;|DbpvkYV#{Q@1bz$jK7 z#X*nk8tj=K%!@;Z++?2nCCq{71``s>wI@PmMbfj`1hHDDjQZTsjhcz;we5HC)crNx zdN=p375PW0Kdtl?g&ace|F{T97fm$ss1JYe}6zALlZ{( zwScDf^`I78u0&8RMr8As`CeGgCvJ&O?}pjh*Nd{NZr4i`>4I0?_o@7Bp_Z%)XTib> zveg>ZgLcc_c|c&Nl=$&`;ea~Z1?>earV+57m(54Z*7NKLOLSW5zg0Oe_IG^VzW;V{ z-l&F{c%V=DB6qT6r0E|%!(<0W{&e)VwoIX%VqR?g zf9|F;zY5UQ#%$T&l&Z!kzg;OvDi1{6SbJNvB@yO}Lu;1wS%R~no8d3K%I-iRi;31G~Vnn@m)M9#cT#Dtq z87v>6{K{dFS*@xZmRxg*T}828ORliOYeJ4xY`=}hRN4kWcO-(ESB;z+gYh-JFXk5^0Z7~?u^M2t$b^{H*1av@1G@nQ=Js-9{UuG>!5MUn-p8O=r z8nRrafEm&Db@DbLP(Wg3!=AQ-?que$I=%*~TIUy-ckg1L#y^+>zC*tDnf_FQ{+<}v zkzB&3)+W{9`ArCj6D{=*oQY$&;87-zzTS$HNw!mtCT6@NJyj?^n(egi0nNT5nvujI z#ol1?Jx4d~>e~Bab}ifkqtd3z-DnL8%gaz_91kzvOwF)^Wc1VKf`vab>L2VUBDI@- z2;mQ#ldB$4XIUYhc(P|%Y89@l2}KY5l}kg)F!+33^#>jVLytt$<+ps+)8k_sIT7Xt zwUQ`v7p9e?j?B0@>whTEvm?iI%A@ylDdEZSZYh|O`VvCKf)Qi`dj+wF7LiloO6O%} zz!p&&4W$F+Ak7+F+1#CRoTRj%y(37-8uw=vNV+31FNe2FRjVRi2!FWL?VDupFrKmT zStHlHrPX!mkFjT>xuI_a!4+O_T797#jF|MT33qUwrEAAoE$?5v3q(UG=?%a~XS2}- zzZ-%)xtmI$)8b_yzv7(S(X52xs4hU@DBQxH%(Lg021S{9$g&%Rac)~$TMuX$)K~_L zTU!n2J>1UkvKz)rkt6D((lGt*buko1Xzo`3~r;$E6c<~QAYPNPFK`?rv|HAXLM z9hL;O-Dx!erNU-LjfVs5Y(G5jguY)}?P%HH1F5a(NIweGuga>wx>27atxr(uVo6GJ zP1v0rZx7T?Ug}`Uq6HQ04K`$&(TQFfKQj|IX9XvN`gNnQ(BMLX6lpyj?x=&0ha7?6 zb}@PU&URAgB*w^pGqPZuu4uhWaUS1U23X46^BgswQx)`VK|tLw3%l< zb54^1%wy+OmIv`X0sE5^!c(eu(mxF|AVh2ZYO6YEVx?@+2HC>4o<(=Sdu0SjC1P)r!@U0 zb*8;84o@NaaOgG5?9k|Gc1x%)Iwtl{79QJVQmos70+>WoVn?F(^x;;{sRA`FTs}Mv zSi3r3t80la)Nq7>e!p?L#UXiVNtq(r3a;@*axY8RFB^lk${dX)whHD>qq0Qm`?H4R zDmSN@8Xo%kGw%7aR-?14{Oa@Mq*ENz}vBFvd2Xeco@tL~*1>apd*PXhv&)pc$>Me!qfa`My zyJ$<+F~Z;}W#281)kh57#}vUnm}jyWu2=?w?)q#nqyLiXmL`bRQ8nQ_=1TI>!&`)eLfh^WpgV74zB3)u8;v_UiP3 zVb})nGe>r{JNTPeXZ!C7)!jzLU-!AU9v;0p>~YV&A}aYQ;!GY zJp5OueiF@8%CAu^r%W>|kFKMW1Ve7@TIqY-YT?P`J=W+^s5bO9#&A3Gdm+Qgm*e&*&|P53u$up6UztKZb19 z%XqVLP6?NKH^zoU8lhOG9xkl1{`C`oUAa9=K(qW0D3Dbm#aNpf=tB6lfuD0Q?Q!U` z-fziTh%xBp7|L7UY^{Ckz&7*aWF4kvjBggp5TS;59M9&Kh^^$&u%|k5hOt6H3$O;R zUM5!9`Ln6aGi)NCB8tch&nx^I3nIS2;Ws+@JS~9`w8OP3IIWBeYM4Pe&y7eNRMFSb%*|&jD6nL%R?eOUgJQpQV<L=SBWpv5jbvMT@sSu(TQYmv584SG{LpN`@+PcveL`q zU5m6UsRH&I4r9xwOiyZEcmyK{A#XQd1*CTzIu49?Q9>Gyt+Fj@ZvZj`yt zL<&^)(ZB+ecYfmH3}3e`zj85@XB+B2Cs20`*tus)o@2X53mHRN1>Bqv-;LzXwy!Nl zNNE@B9H(LO0lSd?W=}7xNk{%xXWCgvp_VN(KD6k(@Dr83+d4GRMrankX^r~ zGB%Ql3HP>0j~EnjHMG#VatL8~-N&?gWIk%rbF1F6Ez$%i6S?AK`vK-JQ!YResD}TE zKI92Xmu{R&i;ymg}d0bT~=Aa}kLF=aI@FP0-qyXh!de54VyuDj=3~z{z z?i5vZiap;K?9=2cF!t=D>`Y#ANnSrQvNdd^kHR+YQ|eMfWwT)B@VG_!Z%hAX@Rz8j zbd-G@yZb~{&k?Rf9X@M#sCb8u9jqB@awxtQ)M5G`+avD>nB){!-uLVEb&``(*tXoy z4G!7vlaRn_AKYRn)`wCfu&|$`?<`86&J9DlsypASihi$04bPo_@T}}e4fB(>eY3hP zdj_mSY5RNGCM*jI$NXw+%J_dxt4%=nJOnUp#|QUrxS zR44jQ)Q?h(2=!+OcUYg6gzV>f%sOOKJFMAtC&^7WOf9ohg`?+<(mId=YvZo<-Of)6 zZ(RTK2in8ra{b9$#IDc_)jQAA_c;b8A9&+CgFwGw@7*yJEp6G?y=*CjdvpT53@OYx zJr{uP?SuQ#YTKcRc?WJMc>Gyw@%dmw0RObk!@vEw<2EI-cf4^zb7+ryJkqr7cb){p z$%@*g_<=?ImXYDBgg-rck?)@9PL@SmE!t1q;_+640txK@7`!B>h~A-AlfJzKpC@!? zMCg4aUq^cFQ5pI8(6aT;{mhuDFCuAIby>M+SDj9l2bw=_^)!rDbvd7{Rqyd^4H{TP zVB>|s7}u6z$ta2m8DfIzAJ~wSWHsP{70^x?k5G;><;@(HXihxAcTRY7{ZPaFwOk#+ zEX&k1Vsnf&VFK+2*tc7+mExT#B`}9?I=Etis9eb>^4`F5L)_n97Yy05t#KZ|YmqoS zJL0GSl6^v=`2_9&mH+#XtJD#C1cGzot%^aH+c{Oa#^Bg@t;s^H%B^79Se9aIhl|s) z**vn54NYmmv3n;HiSWA8sU)s5pWn=hxvtmpQ(n*!&~t?X8g0gxXr*@+>q_) zhCExHjt$syI;KN$$h>Q}MR0BP^3$0fe6ogeg}{$((dv`tIjD`kEy4n73<+V7hQSuQ zZIJKzp!rCJpYBJ=51)>;1gGNt zkf*fo+N|`F3)-2&#(wm@eO21Pjj*Ka<(0G-Up*WpWr|f^Hi)Xv+#@tXw2Esm_rk^B z^*16)FGNir5?W_M6jGR!`Ix(9lG?i##p2U0VCpxq&v3PynqI6A;y7Q~nTRGER=#l`3Kyo{y{Ph`)n4|j@gYAE z2!kPiM^k>K1AqS)cY{I+#LE7?>xDPkq8pTB@LYDvrAc~atrPz!EVsaIJ49d;AW+sP z4GYu`GR6ArfNo}dA7!5cY6j^JTw|4;tU@bY7TmwzqOmRBe;Wq2_5l*aD zMRvb~fy@zE=57{J8=k=nv-YbLRy|wC4z#o_#+X(BQiT2CzleGxWEFJ|38DFhonfXz zC`b?Sa33Jmsd{#)3iNC;!T6v~# z?2Z@gJ+q?<<;!}{Bx{G*g}yM$%d<%(rg0}G#=|A)`v_Pbw4W^^(aNT^X9oGxrAsY> zNNvQI{C_??xJ>Z8l~=y6Vh5-d@XKjN*EQA{pOT&ll)s(smqJhq=4XpRG$00(ehO(< zo^Z;wJbNorU>yRe{5>1=)m+HUvQbbtjgYY}v zMStpgC3QfYf9>VgiYe08{+?Q{JE(8=*+t=y46Ef>_a#^4Mtz?x=6_&|$MqxzVjuIU zjb)sIy+Y`U1cN(^PS3$c?Z*?wc}HnewU5L*PW@?(CzG!9Qjb3a)4YmQnJ3Az+NFAw*L{jA8!>{<5KU2NFxgr9wWrG`k`h?gso>E z;WNB{e>wTe0ou+EcZmZdPX4%L;VIq^m8Zo@vzCBDzu$U2#_`A3qL&oYXsxLeZ>`N% zYyRQ5s)Kw#`JK2U_{$a3Q2^_13x}%;?ejOzI}(~t;!aHIwIM7}E@*4wnnL-x6BZ~H zBrtL<(3p2b+W)~R?zdCSTA6d_zssec{ipgwg|FK$1GPnHZrHB=)AV|ru88#=2$vURZm>0g-gwx4UWWRQN5lyI>_krO!Xa+P)B(#;P>7J% zf?zCEiZ3zqmaLx&FjOJ8BcT(vo;cx08z{m(-F#Y@%-p8XGn(^#cMokQZX+4ZZ`vre zV;wB5bnLtli#*murar%)iba?CPA}(48h~qC4ChU%rrO?MP1}Ohy5W&lQ`j4w5sbn3xjnF0|{Y@}i>RgGZ-pKkgRD57zGOP9T~&NFgPL%ZeWTs>fuYI?%!q zZQcN<1xaA30jre~^gS6i>6!Dxt)tGJwAEz9?(x^A25>l5HDFpwqWMh0@6qhRaDJJH_)qrrMeDxr-uk{({E2`ZSa#w>!e3FsG3y|!P^{72}gW|u!44<%p7?C|+ zw-Fre=w*)SkIM6Obd?RTt-?nSj?48v_f^QsD%hhP+7_!bN?g^3X2 z{YDN036J<0=S9HGuV2)dH*Fz()te5>wxS{x_Tcv|sYRayv zf{u7rV^OwAj)m-^&Tba|V*z2&aDpgnTl#)VM&@?`qDJBzxRL?z%5p3!MXK7+%16#S z6~o(&*cBTthUlz%F|v%Dee9We3)G(DBxKgcS)&pq2#>XRq8}P0LTYNos+pXe9Yh&t zHe4|zMPrhhL;}`gp~EQJX@;y>FpDi$K34K))k_f3o7k`~=GQb%!2A1_~7S5DXYn z@5obLZ|$^_?#MTqKm7&mh8ais2^1Oe!TZ}l?djF`=GhBa>T{(I^ zq-Lo`7%gkMXnW)tMov#un9~4X=X5783{x1o?ykHGG zQK^idL&cS+jK9gkI)BS}o1?ygTJ$X#Kcp+`23ToYJ)gnOXC}*4gn|Ddl&c2$c>N_= zl$nVq&ax{(jEm)%`6YHVQmpKF*Z1&ak}aS$)@)#5gv)HYix|>cA#4!rC zVly_cbTgJ3vJ%~TKi51~XG};WrrOc$ZUOS$?bs6%q&9$7pTBP896N-3(ev5yM$u?`fN*TiDGgkd~) zmcb2DZs_CHpPHJzcdEZH>*X3)_U79drv6QSxR?3dMz*r}DE)(p?+m{?_kBdYsCRl4 zy_2cElvHvzHIK?s-Vw+8OpOGqhTDHZt$w1e?#|hns`($PGP(p7gVrJ@?S$O@$@*R& zF^pfOZn!9w*A*q%)+?cqtZZ4QY1fE@S1h?#?~uOb8rffLLcHc340Xj;P_jrw{Ue#b zY*vi)qneZx8cjBa2~!>%WpI#cp2nuyN^3ohW>|cer|980;LVY41!IoB5ri@ zB(FLUKt?f~5cY~Oy%*sWd5w>F$1CEDOmRgu|19#&#g(5Gf(45DVwm2!zOOC&bAInU zF~3uxeHsRTwZidHU|kM#xxuDPl^j1HFu#K@I4(cT)0+EbBy!ezQ`xBQ=m%>h-7|6< z2HHAI3|+q}37(n9s>4@JhpxnCVn&6b^$7Y-l0bTmN@)19nvf8J19wuRU@?9VS{W%b z;rQ<}z*o++lPFF=MB|i_QP(33=y&z8hy+ivM_J`OG}fW2qfBJ?c1z9JxMfie#AiVi-)JbTr#R!Gi4sOH-Fiv(>toBIS7i3pdhK3=f>b z4p@|#LF9Ionrt0Z8k|A8#ya1)O&>?pGP;7$C>#J*_YoL9!%)9d_7f;o{MjbxH;1J- zw2a$-A=k6HIGX2C^p2noval_TPImB|)lSqIG~dv|Lt zl2ggj&5Rw#bv_nNF%Y^mYj}~5zux(;^q*~0uopZZLE3V+q?`ji9bDntD?}<+7=HuN z2G+BPgMOIRxYDPzPu-HCR_KUc_>#b2W5?%Trw`9mf`Hv({=%NHsu7fx7g4EKns@7; zYvNI!tgG^)Zwo1IB<2Nz=Cch$1m*!bMsCvECBy#XHpok6%~Y!kk>eM)Q)3&rKO7Gq3H9{uWQ(t9u;z1&Y5 zPMz;jmSJBy|3%dp|Kop#>;w)m`sJM!GxswR+;vn>UQOQf*q=$L-!c0SKA=Za$d}Yk z?iwp^LRPn9O8!rD{=FJ7@rT@3k*h-R`ir^f+CPO{K4AWg9pQfO?6Zy%ldO5gVkZra zL-J+UZ&;s^kzilef%xG$%p8;HneV{9cx)@>MEX5*4OKH{V^El?G?U+CHMo0Qc!!sw$CKUDu_w~W@9mYIPm`4+1$t8^|5YA9sq8#+gV}G{~+4C?t~Y zJS^{vqZfHIe2wo_qi$|SrcB+tY|;DtwAy?4@WaR%{Z~j3UP&*Jz4{}=nQ3{9(Q^k% zB)aZ**E_9lc1Es^4UUwl;r}u-)TQLKL=NlN4zeZ3*x;lUWkr6`VUEt2SUhT-Whluw z(Lon(r~1m3(ud>a%7t+_(4~q6B~Gd~>e*rcR#FkkBZfR3Hls_$>u7-?Nb|VX*EC`Z z9Kdp|Nk$|`_rI&nvEX<5vQeChP4xfy_6YP}WLft~o%a_S;0X1OdW3t()R8u>SX`*l zROwk&e-6KWC!F|IudH+@CCB%`PKn?>uEu@5t#}q(1EVdVG<0y9UP)t4tZ1)6{ZO2j zuUgepkm3^Xr~qdxSJ8zttbsbvr^7Y5dv4xIZZAj0n-5jN$$TgzZf6vOuv;cYzSaWfZb_g?A+IX}dnRUKXmLB4V{F0vYwlZ!8ll5h^%@}|`a z9HOji@c)KRs~uaCq(=saTKwf84CKVYalmHU4ICF%B-7?1TpaS6RA`Gnce-6fz4>Vc zp9{=V54D01XTi6ksotFq9C1-Nz3uYR4nASvK@cZlfcSH{Yb8XD8;&2s-`^L&#t!Oz zN$S|~zW`-Gn!nO^hAZpiH`fb|HmxvePD(Kqd}ng@tlHo?@u+Vpo1E$QxO0>7%xoYP zI5b%~Fq?c4@5B?4id&TTf_`_!mx3)Lo_k|Jo3*)qro`=5)E&oLUyx*27c^>{x>^0q zCR%aCp1c*7%MkI_9Kg1tGBc=91jBGAA6?LdsgkfAA zdsw5E*9_02x9V0`Qkz4*$iczE{S%SM#NG;4DT~XK^E>pvGrGDq?-gtVf-gKtPmMw6 zq_=I|v4yPjI9cad*0uMPZ78fGrGM#K=9>By?;P=yxsPYOUs?s-OsnWw&0MFXU+5}G zP)#G%eo+T-;AL;?Afw4d0$ABs#kNOhxA4fflEuqCGP0aWZw|tGxbot{S&8q>PKCyU zcm$U&blPW!&W5Qrb_Vcj9IuMHe*cAT_wx%62i)$$M104Y)UL+$$R3B;epcJsOdDMJ zl9tl7DAt6d$GS=V;Ei=Gby9&bW>3Q$g^j`AnhRO}^lO(VYO>vo4~WrDqAznW=lnox zuo0!R!Hcv(TWxTDDz`eV-`1h*4Ucm)$jEj=I|ixp#cQibDA%EiH#$xC5b`JQmrD}b z%gNFJDM>h0bw{mR<${E0fBh@FqA_%)^g;Llas&Mc_@Jn%CLNHz#`0OX+^D&!rkaM; zRAc3{B)D3M+~&$7^kY`#pv(T8Tp4SB&o?7bAunko)_3caJG_t2LF+ozK9milgI6L{~ z!81=ypb5#ft_Z1(B3S(PSFhsbQrGaRKY<=s)bQ$ue#QA;fZp8EBt2hKm`QWlD|%dD zlwLMOYbBeIRmo`*hb!oLeV4tbFk<#73t&Cm8!3#&%^{#J%cLJX1rdR7gCM^J(&s4m&L(SY!)g30uwX-vmGL64 z)?*hlmsh&8t?9gfls{DDUZ?*OD@>vPC zJNORtna1zLzw;UDAJKCy@rT;rkErmY41Y|8A7l7)D*R@KKcT|!W%yGn{6U8QsSQ0R z8SW?jl<`wtt)KHk<2k&CXV+_b70*AVz)gzlwfG!a!p%y0@Hw)CTb1-MI%9-y#0$pm zv9o*Zs%JHDL50sT+|{OSkE-o^S=&#^ZA)iiePq8`;l9w;lexh#?Z-fWo5QgUyR?2L zYjbcD-EijECKMOO?PrB?)tgXy!WLw&P0Fmj!nU-X-?!~PHJkEUZ8jQ))gSD9rA@2a zAv{dCu!Og9X+7P}vERu!-`=!7;?fx0-ZZZE^>g)4_#2C78Vm`8aATwX`*~E;~F4&`$ z(8#1KQFI4)X1z({qNN-euH5Cx2F+e)>YS=~1Z6#&{H8!C>hPtjr|-Ab#Du3Xl?Ya| zaZ7TW7#c`9=Qjn*`J}CMFrGLxIB{h;XU069!~QJ(eW1!cu%q76RIA(2((da}MY`G~ z&y9^#ZO6>NhYO#;?_z6&7-{6ddy<2$QASHSP*Zc>{{e%~RkrGx7k;Q=!9ef1sRd~a#dKQcW%jeb?>6#7p8h_*LF?2z}t4r!`s zPi1IXAJ8kchh2Xr&QG{xVg=1=^0ZNI;`O6w2-!mm%U7*trsuLtfqeS#bYZFLOK*MM zgm1+6^ZHo-{OiwJNz`Vu!F;CT>7Pwy&p7LXAzn-0WrgjA4xq8r$OM(F2E!}7gRB?+ zPBX%K^Rn+$_UqtiGWs?(MfH^&FIF1f-FPEX#ol-w+2P>cQ5amoHLz!Fa9dHB8_I4E zW)kO(W|szoi^IXej4Lv>QrLN!c#S`2_NP7GeAqH(31(dRYQ$F-vyS9&eA8x|R_{qx zL#gS!t0odZWSr!az8!?Ht?@=fX;)`xS%1aI@?FiUw>99mz!{}@CTy4XNl{Ezdi>OdOBJs&n)6=|0{qQ#F9i1A5dp(Y;(9?G~@=Mw|rj2&H2|AX0EiRQKsh2xW}x%5meYx#Sl$JS$yRYQ}TZB{QT&3(Ja z=Ira95APPVbZY3&@3iC+om_T-i?d(hGV_SGF3{WM6*)Fyd3*O zI^#!HNq;sc)>3tfCcMRneReXolI&W2$Tb;>%~nDvcBqh9sQAQ9OX>37$!KQtS>>VK z!HO+f3Qo?%^9RmEzY{#(@e7t>Sy%t&{@j+TKelwm(wXmBjmLd-eb18fskbZN11If& zTFXN{i}}J8x$qm{aP42CMlU|Bbr+Xv^&8R8#Pnq6mn=-RhW&6Vb_x$dI}sg9e* z{!GGCH|)9@SEa%=JN>}c^5n(nIlB@f@Z2o zNpAQ+3!5g5SIaal-5h_z?#=Uyf$BmkKl<<6C&#Lj?%c>P?6?T5`CnX zoW9KoI#g~US9B%Sy>rgjAFezF4eYF^U6B+lQ-Y^ z(U0DE^Cx-hrB{yZ-Q@Ld+BPT@0#T}`>kIhqECRQHs}l3eogwMtMSSq ztU81?s-xeb-L-lDN3VOw^jvA--PeEOOuBE9bO*HaAV=lr9Uwn96ZtvYBtN_4avE7y z9Q@SN z1Ri}J*MUC)CvB+kM~SQt!Wa#3cz-3pD9m#0qO3N!vXz@!Y?9(qx;Tl(v!?EGyYIoI z&zDH}e90fdmn8oA*985N7z-zp;ZQ0SYWl=;=n?4O8~9I?_nu|jz8$p@69&WqVLF^0 z7cc2GqFzA)>fpEY-2>UQ-=D@m{P@9x^)G!vOeVz$ZjH7#kKTY@B<*=yolxP&Yq4q* z#G18Kvo%sz&<^$E_Z>Wl_IxptOh!c7my4k^hoj^tn@ zR7xi@rJ#ZVJonc1Ve~BYA6o*cjc+VGj*tC;PE2DIXbhad>4>l{9Y$?)=AJgL;?DV$ z#sN%YA#`BV%DF&c#HKwzLn+ME3597_s_MrSuFMnqilGJzq3M(8OmvvP3&sbp9UeRM zaSfh$$%Mqe@R#te0e<3=OCBO?;9YR-ulT$87<%@D9ISw6ub{g7-_b$zHj?XvpMjr* zpMi`>-{2_rgrT?Pan4a7o(jfGi_`r3J=@A1iJ+Jo8{G0n$?o_KJnNbb&$4dFY5I*i zeMz0Jgli|mb6((&1Fg>!TA#my%GC1#{|muiAovRs{+smxx`uljuSYL%-0APpYXSQU zU~%-q`Ue5Sf4c(z4a*#^jNXlYh!b0SVAsddj;rGz`&j(c=f&H$-xikY>Xy-8(GP*nmk6CNNpzmYl|dh1 z{3O9oO86>D^BQyk*eM^`_&a`2Eca`^69q{fljHdH3V5v3wA}i3bWeRA1?Ool^{@Hq zHrLts!s#{Xy4UnPphJ2d(EK+lUy&YNg^mKBu^hD$+CIWvfxd@62D=^18ywtDc+;eV zP{vB>~w;r6CqyCe%_3h|) z{0T7GaGM=cn>zX~PJwuF1wH!ukvG5jNcP-AhtAC&U4HbYn;u3%MCT=341a`W$@!!|O-T%lr@FPJwHb#c$#!j=2jx zjBNk$AN6PX9~Mq)3xxi|aPJ%0y%^Dvd$o-o0(e!|= zni&lCbUAXf`H^z0-_zX@FPGyT-Jbqfc_crZb67q7xtz=7aTv=+hsRVnP>z@Uy@hVO z=uDrH?=N*}yGs3~m7G(wcNcp7C8_^^V0|EwgM@Ool(|o1L=&VBJ@6T)?-Y_rmtVVz zJCsHh$p9z&DZ3O4D!rcL!?AvEcSo#Tj&*c<`(ve%{7lZ#C3gz?=g7_EM~+}xb1Nl@ z*8CZ1nbvsuK!NqlmCN;eNZ;rfo{3KKKZ3dHY#H5o0*73p(w&>p{N~#<=iy!={dxyl z=AXxzZZPNYJR!0cwpd8Nc{Bg~DJRFZdA9Psm^?n)EFtkQem4K3Qy&LirFga;*5WZT zr!=JYk)E|8m_;*g3Aa_REY%BWjkLGIUCL|u46G-dBW}#&yN%L&_Ym{N$?sI_mi%!& zVC;+`5Q4RmKqO~e|GwA#L*Ey>3SD39`-j)1-t?vqe10}p`}VhMx!KSAKl2&dx2xBW zqTlfM0SB_2vc{e4>BDbnL2HeA>bO-NAF1mr0vIthd)z7_;|(|HW_9=<^o(v!ciV07 z&*^(r&$n~C;rSg>j22y&^c6Kou0gXVzZ;5HY{&jZtyJY1Q-b@clj=g?4ND(+nK0-H zAzov|2;?8JroZ|Iold4o`f{`W>tEMX>ex48SDdl_FX%M?Rj{JwxNRJ*RFxo9;x`Oh z$-FNDBER=>n#+@KK|pEcouIU}8-~BqmlzLAMgOB%f)Q5|iHWB5WJ&5zN2{8%T2jpz zF}K|nK`}YH5DY|c?GF~+BdKIIHM)5;RZ1Am*4RL- zxa|KIV=NrbgnX91WFV9ddC^5Schv2PfH^agD-1jO;%OP@>^AyiF9xqRW-RT)_2-HClg7oo?0YEu(_+ z9f}=F6EVm8lM9Cj2M;eK<v3TcnO3ctR0 zxwja#+oMHq|HP4aDjkbI`l?()FB!dAf2cpycg5$UsYvh^`>U`9cyJjSLr?PeOYfH* z6dCfldED!4|nf(0=yDwu&X z@tKkjzwKpiW=J66n}DJA0nlY_d$z`UZbPm+;g4?a*Hjx6I+A_T$*$1!E;! zA=D8jXP7%AS&T>6O-^2@glzadO;UCSu8xmN0aO}8o;q`wzy0#<+b^&G___;@AHU!_#8s>K^<UEW4vG3thYxqs4^m_qki{$AsGS)C7_$XPbnOG%v4C0DE3W-Sa-z!oi zjl50+QU;Z^Mc1whRfUi>>Jr>mA?Jt=6ud>V-z1s^r`?wG1x?=M2b=qh&UOh=v)yj7 znG8-tT#WaFeC)9ZCX=;GFvdhn&}~AKN|w<5c>nrke3*YL$es~csmF0tCdf(5i@c=W zj^o5($r2qRS{&;Vyu-;$@1T}tRa8-84Gb#9{8YXdRi4H=8Zu!-e7LCBI_Bb@yl8vx zJIs;6cy`BFG%~u&4&Qp_nKz!<9~s|WIw~f{-)^kYzCI6q{Uqrti{#B?5tLWx z0%DcdvfAswOVD1OF_cy({ z)6g7RW@wQyydib+IIbE&_8Zhr(vh{)AzOHBG)bL=TCCApOMx{SdWNLrbz%*{$|gT0 zJ^8VVKV?8a1Hz{@3!tb;Hog`)}yG1&q#H`fk{tI{$pM_m;t2=Chwk zx640bf{!KU+4F{Wme2Jr|&Y&9_9m{s=x^$(Xfm9_pTJ#5M zTk{<~9i9PiYTg}p4F)5Dp_~`Qd|Kbr;Tmv-%0k8#wVjXpW08ynb)am_AM3OA_~PYA zWGF45TRT2th&Tq#fvz9)cq4_7IGC`bYxUQ4haClz90&GU^i^~>e-h@^0I=yEf~}!@ z&{_ObfDJP2Yk+-`TnDQ~!oCXk-cGO~cHLLux^IzthZWdY(U%D}!my)&-AV2pW!T+t z?;Yg2F^1hm?#0)QGwe==O)%_P^g8q|%@kmh4ErTuuOrwL!|LcL+Q*v!n`YQcXd0bE zuo;GZc6|%Fo4b|rWqmj0%ld9~7WZDt7YX|sU|%HH0beBSt8nk_1RG-4eHE_z7P)s= zfo(xwCfEqWjskWkxp$Odcf-ARkn6@6b{Dz#R>~I%yOUuP410FnfZoMDO!*>VzXa@c z1e;=5eSI6+xBfNC7YTc*{s=mUU^5hhHS^i^m(bm4g!s!7+=hctDn=|!CHK%I35Dk` zUS!AH4wM<$x^)Eq1ar9{{PgVEwsmD?>$W|`!QtUbWq5dy_jS&Ok zcK6nu0iP{qj0;1N>Zmo8alQA2$k5i1Cn#7$Zn09d#p6jwh03z80?%%Twj+)6$HwUa zHM>kipmdR7drU zmc%L7vc=_am117OCRj}|n=6y3**ar^Y{Ba$WBXMg_FKSb9qhdZxE8O->0|1ZX9i-Q zWFS(dfzK6dq6rE3Oc5+3T&;DhR+Fv%v^e+=x6Tz`Kd@tBA-%8=xc}P?-h3I_^fk^A zl_iDoCZmtEXk)Ktax>mo@G+=VUKVdRnu`S2uo`Oku;UMyvwmMR60rG90rR)t-|Y+* zM`x?4VGnS|@A3J147N{HXM0M8!Y0BJ=;l$N?@lt`V~x|H<`??X(X+ET)JST!z-1yU zfZHXX*|7*3seUw@Tg*o;paHMn8?cGCj?AS-zb#$XShJo|*&Il_hPJNG_%qg+&n5W# ztg-OV4822xW=kbykNNtR=XRZ8F%sV14gcH$yfp#sEmmqLQ~0{RMraJS(((D`X};GP zaen#F!GyD$pNLNkZ3FB%K6(WXHSAt_>C?x!^3Gz&?6zKN&k6L`$6x{TWs z@E8NOR8ecqx=W?;5*~D4*7{4qXR^d1{;wN)1_%3K%rnDy#I4xgeRlny(7Vw4C4aU? zI(w-p9O60jY^|8fCKB0PvG$oQmli|W!$U)dv%&sL;r?I3{jX#9r@Zu57GyOikH&$Twnhy+6R`Z0aow^2|{Oq`h2wRw%OeHC+={&9d@^yKIf(N>(M#z z95a{ZHk34Mk>hHhd51u!`kd({pUCUXKCjj7EoHYE;yz@z+g;H}cG@i2KjUEkTqoH- zi<14b2=>oalKrzN**}Y5|6C{8KZ}xGGYq&*b;llixoGzyFy0elA%r()FAR1R{QS zh$Tpo7E#;plWDNd~1ss&mmS#TrSGWQ8OFvxqBYa@xznvJ7C_iaG; z{bVi%VXjeMfSr-(V;()Xl5b!{DXaJ8_!`yGw|UZo{^@zm6WWoyGi4K;L!vmGb^j@y z5NjQjh@CUGp8i^IPts@u&P`?u1)8tshu+uarRA z$Fc|&sa&#k@RT`hOGV!Cj+B?Y`a|61=waZ6 ziJRb-xO18!7+Cz<7-0%7Zah!E)tGjhl%nJCg6-mJ(t@Q_7T~jp9fE7rrIJwSIpWbI z@4nENrNcUfHW#2ntgs|Z)*-|eOii&t_zBJ;kBUPk!C*I6E4?2^Q8TK8ePE< zuzHeSlfh^UN0QEDz>+-~3kDO3U@%7Y&s{Kf50JUPiNk5Xit%fl!%_KQV)DVp3XNOT zvH;|mWb)a?yT-N7fyiKaJP?6x{Wz@o86h+=`ja1|;x6YSc-`T)-w*Q!$K2qU6HQag zBr2^D9N%%`9D4`vbkfYQmkh*uuel5D4*l?KZC$2>E~T zd((QmbLMmc*%c%~bKi!(p9H@5ki3Y_)_hlIuy)}L)^1h@x|`KP?ZTTWRW2(Kj6GBW zsR;e;asD%NZ@Yf(qFES(`p<5A$M-)vwTfx@A<=EWh7KpV7Go}p+y+-DCzR1XX7PtN z`P>Gfug4Y^s>Nk!;MSnGLs!&w4iBIzon!BWzWxH%W`Ic7Kpt;NaVDr*Bax9XNVYUR zAn%YIn*ow6O&xQcQt4~@Vjw%|EUh>qG^QZvA3OQL6Y-rz9p4l3_V@HgJmKg_z-O-n zO+wEIKbvxRYc7Ae@c2We9Q+8vA@h5x^-pnXWBj4pHBDVAF2RBa3|!? z%J_JtJTW2diLVBGfwqfB3FS9TKDuwGYDJKu!EoqP7pX^p<))eJ;HjZwV+V-=DlP4- zG>jwx<4SYk+3_;4rs|&{217o_OU6Px_w+^RUn3SbwHBf|W-DO5eKoe#+UjiNN0?lVThGCKWzj*RG7m`yKw&`yiZZ8eyU-MWrGhtHm< zI82G&K9|{G>H)~)2nfkRH;uKr9q9cx{x+Cs3vKff8ZWS=BHSi<_2nr44yif?CvE$! zVr2}`S6irr*q@fRcUEq?DV((hOue>(dwzho7Bu_zm2OO>Iy-WmhRq{{rq2LP$N5=k zhsFL&RHe+KV48Ky88T=zak!16i(D8ByFAPR&<#E60PCCbtw&bSr zAtreLfN8h|=FU%nhF+2r)RTXeoQE!DQAjdzSX~K?c+2ESm$8%YGGx+899V8$$c z^9zng6hhveHC3aI-J!Wm0q%ds1CrRToWrHyS`)( z-TcdMBjFdnt^XLso-2i)E5Y4#AM*&=$3%$EReGUJa>8W0tqpy3nt0+>w>U7>#8=$r z7-ok1+irDGW?^KyEv?_huQ=sC4zzwBWWEzr zFy0@+!s8t5)L74ADK(N+QLUAfP6>IRLZ#EkdHyj?Deq3%9YDw2E@!e9oLU;pCgXV> z`e>KABVRH0B>Sv;mg8e-=gMfI(4S{}>#eY)sE&3uRn=jWnd)e>v>(Ie*!@zSBR5Mx zwZq^2tQ4dq(iHl*McuvFPjabD+?KG#Dw9}Sd$U+u%iC=9c}Xi*Wo7*xyvHVVznRb- z;4+P>)zV1{quEPnwn#6ppHgPmARLwQ$|iOG)IQDu+~5tg%$tTW^}{hgGGn zfsVM_RTi>Ygsdf?+yz#WH|szhmF3NW3D3KPgbjDHn!m5FHx(H$J9lr1j-&;v)nEU{ z@RY@To85k^**IJ*4O74GUFc492Y)BCGrL(#t&JTsZH(?w9%;F9%0ZAzizh%agb2Z zDu2FXRoEnoL&C1?zG!q`c9#IlYLl><-D|bR_P*@zk65jde!ujIW#8)h%{<3H%k`5t z3pn!l#RB(m=@W9w6pk4ZPGEPCz@^Dh+t#S!qi;V6fz3rdfNAN?0*Jh?R4!AF_bT+< zToI^PDcM1IqaT<9;e@L+l%Lx%mv`kS;==>yi1FANgTo{F*`2fby$i#&&3^P;uiey{ zjd>$}e`+`vtR+3#n{U!(e1o23e=Lv;`jdm1vF)ALyi1qz(OT3n7&zZI*~oB}Dw!Bs z%aSb1v18eZ z<0YHZ;s7C}BqWrCvV{u;YAD>>?~$^!rH@C_a&Z&FzO+E05D0x;ps%dA1e(&@*7b$Q zeJw4ebfItyv3$=g|DweX(C0*!^=szLIcH|hoH=vm9AhLpKAvgby37~oF@y#~iB;Xc zWGLkcuILF3g!=q}+*pf&(31mtWPAmTrE|*mvX=7o)3Qi3R43oPNb~}}5_W(%e|YJg zC$_U=k%%lx0yW(VOY}?ja4+;px*`*grE0#Tc9O~hdZe9)WMwK=JNM~rwJ~3{ zRyFN{;|LR+&8jK4OP2+S^i#Aaw;aJzoo9Jo`Sv304jWzWX5Y7cBe-dLMrognC5FGr^-_S;zov<+7Do2EyvPPjn3-#mFV( z8&mA=CsEVLhOlmyIr5Q&FrE~>?nAv+tcXrK>ZZac8}U)G7f>Gc_YDs%`$2FbmhD`V z3$*mENn|^QLBe+WLOpKu>-tSAM>f^h_*%uCyQH?kjk%tw5|cR?+m8y?&#oz0l!HG}x>GTTf@Lch^|lSpSKQzHU2SV=_0krJ9C@-Xb@{ zEvABG-mv~x1BSjccGZ~yg>4}7T0!R3!1gmQd|N0DU1X^mp5AvvkqjPgn_?k}YE)@a z!#%D99@~O!0$lvPahByK^l`$YJU=dZkIb_18s}bZ%=0l$gB&rh_AK|?BA%%|DdMT* zAr9dQ(8t-CphQ)3;-6%asXXc>YCBn8vWkBa$w-A-JmEsE(*pa9SYbt*jH2?!-nwXA zL$kF$+OTT!;+^D!%TpJ%`a11ti>H3MocE2_i?|Mp$n3uAjCB`=ZSCEL9XpU@IQMdS z=7MYQbL`wM?ffT8$eFS@%|(MG2dNC6R`m*AsSLLA_!Ww0sD(=a zJLhtf8WzeLvaq#oHutK$3elY<6}bowWZ<`Nlh zGXCUyQjPenyA(Mtbw~|?hE9Vc;?&7&@$}s*$PJf`XP&)c0uB1QtjRlH8bFQFGas5=p8OO1 zM5W~sX&!zO7s3|!C}xPVo7Vd9&6 z66Hd6+udYeA<0&exWuyrqo7iHvPc-6G{5qSd2$pbhNZ~z^_`;|)~>y=b8;Xe4Wq99 zWfvmPIRok2J60sze?tee(jAW2P$xa_ITvVY#W%rU4j3CJ2^Ha$o*)`Fx9TftCt24j z_6U-A+da!Vg)ECH`jog&r^s|5H*jI))2D0h%{$$?%o1h!nm>o8i+hmE-x>78TO7-J zntObEC;N>CPa(GM)IfSD9LxC(H{U#-PNUB?Ivt^8Q(?5J8C}{T6{nJ(;OSf9D^pG0 z#;Mly2ytFFsQqPzu}bnM%6?jfqWx=s< z86j{fYviHHY*a?D_blmK<|`q)JsDjegQnh$i07EDvss6O+(0*jW`JH9*d2c1S^Ib| zO00m7!xOdfzOfkTdFcDe3*Bqbt;Tv&jmW%T%blCPc^tm=^ zAY!;QPh*5`gmuaa>r_Jc?4mKSDgqsqBmpgt)16Rrs9}EHoj6_DXPL80>HQdxn8s>q zgx;f?j1Fua*|a>fad|j2u(4-(*9JdPmO4gKUT^1$M5y0((f0=nHD{b*%xt`9V(h{b zv*u6lFm$wZ`NNS_+m{!%uZlD_+%rn|ZERis9o3UAE8CY^%H^GsdQ7+C{KPVHEPYo`t=k49^R16^_)~_4G*52%cV9nr#+caYp)NF zTCY84_m}FMqTSLNJEZi+i&u|dw6Vu@`Zh7ylJc||=Kn0oY_D<-5MD=h``tomh?NSF zZ>bs?I-uI3$O*28i+YbL(oNj7N2Uo|7KoBkOSDD4(gB%HnD;r-p<%i>CQ&Yo>%I|A znpclYpIUw7w5LzmFttr8{(aqJb)Qx=q&N{IQY#PeM(rY!+4kzHD(RD5of3Nd3GaC=Kkp+K8wl9(?~NUl8p)3wkQ$Z*bQIUz1vBa zQxnbZO!AzP*E^BP6>%huN@D++*KF7YKN}x~pOvUFJ{U8*tq!}te(1D903&;Mu6v@p zC;jyPlX53boYZsjADA7XSqS0fcsIR!$!-@jZ>k{}2gnr5Hy;Y$h2Dl=>%SX(9?S5H z`D62X*od#L{u%Z{gZNs|0s0m$L+gboc`gv|r9I?b=!WlyFpFnFVishDAz`hS38Nxz zpgt61g$EzmTXd;L2thqYVEeshe&Wye82x;UHGG7`<$O#SW0z{G`u#?vSOhKd-D1AN zcl4}S(L-K-S@!$e+R!7#J}dfO@rv^2iSh?mjSda2S~WN{nnJRYx z?0Ztbe~Ira>kn7dA6VjhQh)F`-w#!OPwYU#E-c~>7;^zZyHUc{2_wHNQbW&na#@~2 zT}Bp|PGm+U3r{^&c#6ScF%PQV(Kr#^UpxVwMV#e?GleVAUoh}pjI`<#wyyX^p-$U32v}F1Gi3r-QdUn%O zm}L$ZME*C-5=DvF19efo^v;|_P3rKpw0PjPp8kf{K}yLpL9Ztm^mv2CpRo7fn+3w_ ze@7-X&EhL8%#-*EBo>75L*UC%9K~M~&K5{Sh<%h_mkQnJExZe6{Q$p1Z&L436a5{h zn0P1QpP;|g4AA68vy@T|#Symz|00*7&lZ1*I*Zq#v*$NFZ+L#gJb`#NwDGFihNE@hF}^FhTbNCK(MA1&Bo*-8BTBc>Tbm9@Kl`{DrrFe7~zW2Stw^tPC2s$4%qu=5Ez}{%J+t+xOOgO-g zah_iFbjm3tljA+}#7z?`(}wiQ3B12}#e-K}^`OAz!wR5h3Y3a*K89Fl5?#tVt2!3( z{kO>Xhz7o2GS6yx%bD|$dgCmt-Zl%H%o zor`Pni)glYEoGB>4*?TRp!3lBt||c zci5#5hK=?hjM3vJ(^Q>#>lpgcNzkc{9+S&rX>u-0pXVGuX-oUgpPen8^V1ze(yI8@ zQ^p;>M&poVEC}MlF<~Fxf<6F=niiI8Cr4V8@F$27iywJpN-kdK>B&(@&At`lhJyxf zW@r1;5H)ha(9j*uC>fVjS6r)DazP}MS8O+5@TVhg*s-=W#pPy;p=CpFcv;-zi7#u- zZ-^Q!&2sV^;X<^tyQfMLF+Bd5@9tg&Mk>5h(TY`l+5}&S*5|n!=*ZVlbKNoPlVYB!)hj zk_TKE<0HMLfhNJ`x@1*IK>to3rF&84o6G- z=Fo=J=@&-Fwhy$e%mjmdpUB2H1kk$SP@lK&oHG)w-uSXGIjqBxko@(VH(s|R?@y0+ zrl*#-MqABx^XGT_nZM%Uh3)8Z(GAkl!*w4P_OO9Vm+rJjx!qE3FjU56EdNxUC(%@I ztGBfDCL4UlT9e%p_trPi&n>o^Qw%3e=CAm|m3`eC2W0~;V0_~GUih3(!)Ftd+l7UL zcwFouK`{ijU|QIfICc(`cVb7F{>#F?ao3&!TgV3g@!yY~i@q7^ z8~_?fGOQf_Dz%4=E*fJ_%O9dFd6pyERWOmqe&8{*omr+Us6YjPfCumljGAp_Id1B!#Ko>+#_ZPiv}#&J{}JZw!_rhC z8n6M7%I3=QYLgW*M>dDr-EWUu4qWDHZ*jJbY#SKZHqz#7X?I=rvNs;Edpd^W@!<}S zJrMW4yvpFtk4%+y%kZCEwf*f(}!Pwv!_XmsS%T+fMPeT{=WhVjDH zI0Ad!dSOkOreRT{%2`xR!@v`A)pAY4#LssOIz^YUkYKR(#;- z9J-_!Mj{%^jT?$D6<;)r^LvRsfI}PLV1kVvJ0L3eG`1+7#%w{d!>b4V>BQn=Q}~Mc zTKui~DKghTyYLSBGd==3Lzfoko6D?*DwdVQM4RA}szsNWSLq-JU+J58bXcBNQN0@G zWGgXoEr-P_Z`WNAcBaOi` zQkD^_zRH5j7BWBW##&W=x%hdF;^aV*4d_D)1W>p&fLx6zGl+U(?4;3(;7Rs&-*`NC znjDQ^uxivd5EUyF(Es$C7(r)7S}wREdHs8 zYPz0S^+XpU*3|IAZ*d+sKwYMv>FNv3L`e_+s9P+Pl;!XtI?rn z6Uat!2mlUaDh@`~^Ckj&ws0;CLJN---&QNx-!HyLffe6l{)x>gHS@P+Jx*0MpmNuHiPr5a4WhVom&>0%Lzi^*&qKHo%=lVb-WBcj{cWghFNu- zu(Leyl`nk>nZ88A4Zzb&gbnC5^nJ1-3t6gfhPdl0yYQQ!qaws7a)SG(NAy?MjuS%$ zc9yNJ9`cH;Oa}t#l@aB=sjJQHZtH5|@6WaR{o%0R-+CFjBSB7=l=rkl&V)i)+2N40 zp-@J4Fx%Cg!ZdmaT}S-a)aZ0(^*R)bP8Z3^ZgRiYB%{ylj}E+){?-0F?)Yx{=l$?~ zREXjXZY+yQnMYaV4o8t>K;ry6?dXq12WIUlNd2j z_;jCIpIljSLjQ+&dq|0a3H6XXfzew5 zh526~eLIEeDF5Y5n2{=%>XWqyBzebf7=d@elOaRQjg3U z4fGD|-hM)}YwG&Z=+GBOPI>5#8~QW(>u!Ji(`>x0Uw8xC@uR?F5A{DKW2cRJztqsk zE#$H-Q#H7n*qk=hG@-QZskWiPS?}#iWt(H8o_cTG-#z6lo)sTTxNDuwbZl*3co)4(;}bV%*=aw7?ugV3 zx_*>(it-SqMuir%{q}XY-@dMWXn1(YKz^Y$Xk+o4#cz&Yb?r5K_FQxARg@1fmL5X8 z@IwI9qOL{6I6>?Zo=@6Zd+|eO%)mbU9w_$%{1EKJpT39WGJ1Lw+n@6oxY$Uh6p1Ix z;@HCHw|Si1chDE`FUXx$E}`nFL^SbT3(PmRt<3dO%k|%~9Ua-xiHT9{OUSK>HeBe* z6}Y_m6~Nl1!ZNBS$@Mx9LwbSJZ6wQq2kpuxlML9yiB_2aBMSq?^Km?g&c!cbn)Mz& zzX_iY(9bO9@7?hELHhaivd@2`xcnV`8EwTcEFEW3l>dIFrw_kSWN~%BjZZ;$;Tr(P zZ>zRhf)ip+MxZ`4zIzovr{nzu z5|`*TW`0?kS?`>)ik_>)2zBf2Xo|8cx0>YrQnK9fVRLzmRiru!Q| zZFAXtzSJPR`J1}PeI!2KD$gT8BmDNe@8TPlF@8LVe}V269aYOc_+S4eI(RugUP0y) zzSpR9)Yw=y7$e6zmgRx`vsMvxgj29P&l;i;N3*jIXR$4m!b9Fz${WgBJwcl{74uSD ze}wLWKDAeYO)rR+!0u(BgB?Men2}oHN6Lt{UQ|Mh>TQSU1M|!{a#yeM&xo2?7i)X8%0^@mE`f*1I!N^mu|$=o4Wd?x$9d! zyyI+7PaBXt>+Cyx@cP*t5$tF0eL>+$XdL7Y%HFzIS9LH|SO8u~NZ36ncmR+t}$ z6c%?QIWV?oG1cRY7Dm(Mc!LFdVd_y`flA7`PB$*NeT#_rHsccSL#5^?5#VP;3*{+F zRVYF6y;EQID(^mfDkx-i=}u46J1=vj$&oUrixT6&yk!LSlN-b}--36D^S%>U7V@Rq zc(8NuNZ}|H9b9g2U*4)__Kq)ZU0B^EvbSB70L1|<(iX8Xx0jmy6dM?%&_zRLb5~oY9?X(<~4~YzI3Xu2WQbM9G3Bl+8a$B z{yL@Y1^>A??O+{kdXaD*dBj~g%)IoKOw>+ck zqnF!B%5+{BpRdbtF)U6j2azf==V#k#_51HTd8&_BVV;d{NAS1cu>#0uw1a#tmdZ6- zGWiDNcPKW~&M`bw7a#6Zch}70l@Ub~KKs-y`c#z&TuZ{gBb~+%o!kHZxn=I-e>drOe>yj8RSlkgrOdT4L za@p!F{K}F5gl+`Ia3iC)OfKitdc2>DUNc+vo1QnV@g!VXt{I4IwiBGTdF*eJE+@)E z5t`K6ZX*^4u_v)LjXP%&MdAdN=Xw%nM+d4>&#htIGG?3ai@L53Ja+KHPmxoMx6^h2 zyPvOs7WGZnf85@LnEF1+5@f2DF19%)eIYOm6io8ix`joA+1UK>^htS_9CmyVYwx+n zRZ11S0;t3`1MoK}S}GuSddLyOwQy&tM?oO39_4b_@r^dtjqjnGS}d_(58U)P=Ah`m zAi63a0ABA%9SDi_L3d*vqUu;TED z8b%OJ&OA2bSzGid;kwRt?558P7JG|e%nqHHmqPlaj z5a*e!lTTJ?pTgL*(NLw2lV_hi9J*th?;s8+1naLSqnH>2qgDaHitSQ;{gob0|F2B6 zLr}QbeW8nifc%`;WFA##Y0I2t_cEjcpXD0v{My~Q-7xIY7Sme~dadra_yFTuj+?|b zrLNyse>1`T=7bxOhYeGrPtzI>KgWm4`84Ehv4V(LN%bB54_HD$bqqil9$Lk2E4T)- z%}~3-`HK$N(zcnUZ?Tnbg}>V=^;vy}X;&*zyS^F$OMkmz^V@hfoH zt>#+`&}NljGZ?FnL;jU^J}krSoj-$is1EgTv((}j*1}m+v)h>7=o)#g7 zSF2{~steO7UvZb`ybST$s5o44dZNDlp6NiUG}aItaie%d#QF0s_s4zxpM?xixFqC> zqQ`DE0?ojBc4ZToc)>9YwBH*JKIs0fA%oV%+c-5KcxA#?`Qjygwe2bSaq03H^{>f##cs6 zPy&L-0qwA%dwmlcv`~9aoNNqWCq;npmU;M&0%h}880EjC1`w;`CYU8a438DJa;@w<%_@q@Bu&Q+1AZ5?T$FF6||ZpM$JC zcW)&A@poVj*KfX0BqPA2;r&i}`h2jtOW2H9xh*~M!3`p2{@KC2l;QQq`nhhQi!yb# z4Owxi#fih-eKoZ$1sz`)0=ht&QC@Pxv7?MMbDb!C+^at5YTq%GQ*~ti+4zAHD;q(d z4}{+98FOz+!ouR{&M<(=tTgqvpJU035ZA?-n9JA)7V7E})h&#s<_R%pn`77_z_54|hCE(_^_QGg=D53!t7laLR3Y}$Y-5_7VO zI*ZD~YZLt>V=VC-Bh{puS@xP@q~B-K1CynWt-F#ZSv;|n^QD027%+14zv);syO-(D zSazdP&YF=Ec8L1HS=-RFAh23`Od_=^?VMb(K2jqOsGgxxc9n?xBU9; zeluG5N|?= zeWG751XW^ae4Emdb10xVqeu+)EqNTqktBjdgts>iK>ddD^nlL)7Nv(yb;x zklo8L0r%R?_=eI}s_PRTrJ+=IYu!3Wgn!=^Fey-Lj&}kyBk= zt0rDd80CEVZ9Fq zu3Mi0`zjE2nwoIT-8q}IpfYPTX=cAK_ExVp!?^d@hNlq0A;(s{?E`KYtbNKt80D(D zFs0yPe?+&IGbto(I~EPe-}Jq|#9l8xo#cJ6GF&gMLrzq)Epk9As73+Ok3gdze z_XwKN4I6(swUlxVJyvTkH%hBM(vi{dJq}MZ$CIF_&OPA%-mAb^$1_3z5N;c!7@H`s zs+q?-Dhr0qu?+JivXq&`?1?ma2PGIg%q^O#=bu)?aCLC2yo1e!AmIBT#j@-$V?qUz zmyD)QbPbPl`fkEe~x&5FF8U=>X z9WFsSg#)qhg$_lIV>YTcNMoEkhYo$S1iu~mqzZ?1iBZmG;-$4Qi4t9g`5R2sRLK?? zaG^rcm5PhSi$gC-vvFag5__f1~>$;ICUKfvJ& zJQZv(h}zJvH)hJX@yo-FVKVnb_}L~OiNkXPEI$t);QE7vhz<)KVxo{>di^hkcMqM6 z8C2}hQV{1EDlUcV4R~v0@%c|){c8r4g&WEKYH^R8oU9!cBkQL37HAt3IibSPqd)rR z*sn0c2(Bt~yM&Xbkw8y7dFAaFT^?fDv5_g4x0r@iJtT35-f&*4=jz&&k zp>!{oMIRJDMR1V^pDoA_*MV<=<|TG~mK56#E8A{q>Vcr$La83|jK5^5KoIK5ilK4* z)y^>aI9jbRF3ncJinVknp_V#=4vl@$w~DzK4}|c+>Ug^8p*rqAc&BW& z#~4W=Hl#vh+0c)=%@cn_so1v>j4oKDx5JF9|` zF@nvuG%`(d!T;qd#UjgW?H#Ey#xM?YqGfuly5{;-={<7_2Rm2qgCR++b?QR=BNS>-oW24$2(EhpCi@h(x{eT&80?p*8CSqyGdD4!Z#^N zp@i9bR;B_DcgUePb_$y}hVeL6DD+5Y-fB9?2f_P$>%o{YKE0hTHFnszTW9nz(InMj zTyA8v^$Fbrj?Cg0ym&P%*vfGZeU>OIXgQ8KMmcI^{F~xoB`RiMWotDHrupLxr?VDT z25}U{t|Z(~#M|hDD`j5viytOgo68XX&#-3O zk~8}cM<3gX2QNoV*QRD#e{D*TDT~`_dlHiPppmmTIX%}QiT;^+vR$}W#sA?Wem0Bd z{gDv=9!*th&o<}zb59=(bLofa5(p~luISbH0n{)ed3@)~326rsAFtLFdSl}0{=u8n zgTv{rtIflbF<_E4oSM&oyi4b9D=n9Y5nm%PtZb(6#}QzzNtey@Xi3sTT=`Qs6Z8q|(G= zhqyWDx%jbdT&6j?2Mg!txi~;#b_|VPw6!r?X%-@@m5$4h=w(22FDQn!vI913lf+zR zf|T{!lu!ONXLw?pC7`~pH=G;oBe$`^)<93{~x6V|nUen{<{`T6Nk|d&_ zP8XI#i!ME>r`)|oHf$q3>88p6HCSAfb)#*@g-KJ}JtAGt{9ci=-l||=Znw;AvwFu| zR!BYjYglSNsrL~N8g@HwQ?Ii&ki8smwmyyHo{;{%C12^3zQ3kG+lKXOoCPK^S8qi`(Jy72?iJ**nwjXz9%3X)v2Zt6pcOIge>1wEBzK0F_(MYz87avp6r+BuLR~d5KX<23Z`>pv!*)+ zG9p|1n=iao7)_EHqTFrm4{yBjKihiVd_%dSfyr9c6B!i^8Ng*(^~P5NCHc(nDpI}J zlq5Z}1_RSu3CSge6B^kGrf}O!;^KOF{Y*?;v1zLJqzLaAH%BNrBk2M1-NB;p0UvjYm&Hr@i zh8Y;WC6&N-Lj zivODpAAj8y|ECAv7xdxx!eMN6F8}AXdxCv~VGrd{;bGV)`=>8ymKAfnanm>))^P#K zyHpB!y2hB545tz0pC&>Kk@QL1(8xm5^jGDk#B$VNTC9mz=7)x`f2RV494?C4Z3}DA z?a@mTKZ4e`*=-Hx$zW1+>nB4}YmAuKT)Kn-g#$D{8$K?7bT0=pR$lG7yTntWdZ}Zd0{W}VWY=AEV4h}@|F2Rh-S8X? zsoQAKz0A)qWC2#*R)_5#Hhn=}8&+xa;f+bpUd9`8gMI~+sgbHEe_jiQv!$n2vjgo-mgHxkm_spE%K zlV%E>=DJ%27b1RNKhd!p?>!A!^>UzZ%WqyrZ*}}UkmP-9=S)ttJu}1c{CF96Xg|Kx z3C;&*30!x8$DrPWuOy4qkWn4i8-TE#l#3h&C~ymfUoh7OXJ;M5kcS8|ejZhXEtLHSk@m=eLr|@bB;t z%7zks^`X81q@oBYS>-`FLe~ulJ;9tTIm*A~rXmF4`UgQj>rxhfLn<-KMV$aK@MK*3}Z$LU}Z zxskHsKr7H{D;5U1K>ibE|G&MaR8x{0{1ldv%FiJv3USLn4fV6yO0)GXw$7f#TOIJ& z6IO|q(gFpVV5BC^M$R-oa@W(-m!Fv8hu_r{mxPT@T;58WivB+F-jP|!U>Zq z!fR~x{h_wF|HEGPt8bJ$k;=ldk_&P@V{m&wu{9`9*?(5$%*MF#GL(bH)%{6E#aa5b z39L%#?!66ZNZ;~qi(NcPIF5mm;zxx!ogk!Sq9${)vl7MaF=mC{tQ_jqx*Lrzu_-|U zK#r>|VrXPr5&gv&1@7(`{H#oK0m8}EbOCbvKsPb(&mJ?1M~NKuGJCo^9C#-C1BN~? zMLwbP5!J*#GnuT&Fgb2fXZW%9m?xU4lq@HWOSW0PWP={by&=9zo79Hn0`x7PL`{^X zu4Dib6#tU81;}ed)dE!!sV#2QUzw%mNo?(UP%sbA9jxeIC~8QLVy3da3&*}0@|CRcf6lXl?jWu_L&CZ)1oiE<`cX@Ci-wPEr{V{(8stG z0Y`EyNEHb|yg2MCPt5ea&d+fM4Rn@5ZZn3=GG(%H4L@wLf92knf=>^=7f^sD&%5(t zQ=}8g{{RKo{Cm+EB0-IybW#f)0VT>lP{DJ*l$`0umLQ+FC0ZHKIgI@TWXD84}_0gCsg8nk5S;mb?pl;>tWEYDpi; z&kX5{Xz!e(g{paOk~65W?MlI#${~mm^NZZvK>YC-9r|Zj^t~(GPixi9K7YS7{Y+X%%t@<=SSN#@K3O~>+bzUOEt}~?_G#$pTP$61XS;YnpIOv!H$=ac9Eu+sXyd^k&)to2z_s%D=1R$X9Yy521t`{59mR`hq+H}5)Bt#uZesP;4_jGmk))UY zIu8$I!S&d{(6gX~#26GJu#hSB0Ilzqzjh7R+j7AW7gX#N@MO8@;>6k1WE~OHi3*$f z>vIL)+bA{2FN+VGvk;ULN3^BU=H{*CyNs> z1LvVSUTn1y1Ph{lGjQ21Qfd=9-)HAx`QwyZq?PX^{Ws2thn5H{7RmE51ifL-Iw(J< zix=GK#ojmjyolCTa44z87D0@Rn!bm44PBOzg(!6v!nY4Cf_|jVXX2-+d*ET+LZJjKU7^M*V934eeU>N3U&~72+^=n5tht*TKe6Q>XF*W(^fUBYk@s zsjr*sGOone{&{^YW?|L*iDLrEpaU`m`1dQ@*La{5{*HgRp~AeUdJjJ79&QHb@lRWo zbe>Yi=(+;k4Z7QbCSg;##6LU-(`Q(lfhZ)?yhHYYJ3*he_lsi(i%OZwLpfPYPmz|T zW_+e{4=}8LHHcJF4)K9-mu71bz+DY>yXJH4nB}R#S{=^u{Ix>m65)CwBs|pN zyJ*t|0|)s+=B|IR`;EuA^f``bTf>(PV#SuSkuhh0~)Fc`Y zNEQosqhRaAG+Gm4I`Lsy|3u`Ea_6#jZQ|G3w0G)p7wcZb%Oq%jRj=pwf!|2M9d6XY zJuo}@K}h)5_!ZEl4q6S*PoZw>8bv_D^KD;UH2Z_;e82)wCaf0)?=sftqFLnYKs?X* z=>10-UwNl%)>d&|kuj3eA8e?$f+Ex$$%zmg7_LxpvM`%`Vm8q(aarU_^z|p>FZmr< z4uj*aWwJBGJHCeBNtWKC@!w8r8&tNLco1>8)B`9aI+LRTg8EC%Q1BI#DXP&}{{w8wiaiQwgfW(427p$j3YCK))Qjx%5+Ml$7u| za+EK2x>~(Zu|{t7mgW1N1^V4`e>q46Hgx<#Q*|>QK8Y%=tm}Svtve&LM$a1vk@cr3qa1I_uHVk2wPmf#g1{>H4dwrr!}R5+nL7uMQ=C^*BiB zS2?O7_RpB_ognAcs4FAPvG>Mh?U}4EssFNqN@S8rq947+H;fUlq^b{LJiB(m)Ot9D z)VRf_FZWqSN@tT(uW_IXv#H?;a+1UED?goZxW#eD@aX(+=VJ+;Zb( z)(bypkj>50bX#s0eEdN*8`oTw#B%q}avOG2XAgXpr|U|u*3ih6eC8Jyh^3K9217RA zQk784zg{z=C+wAX^-!&AHoruAo}0EGtg3j+5X}`?x}ZLsY3XW;d~#RtVMDoC5YDyH ztOCqTM&UBitEH$k%7wLOqtzOR_3PF3*wkz=t1ZEM4Y>^%u-F3E3!>>O$%LA z!;x}#-+b-gGe|;5D0m)C`mn`t?UrBV%+!jTm-tnohqQS*=fg4=!_Tt;Z>~E-omM=2 zla#K>HQZg)VRkI{&cMp-lw%i=MKA}~*#grFea#its<%G#+^+TplB!%~RRJ9Rbu)(a z>P?SI3&d9+?aGEwu35W#(~?G~f$ef(btc;i1#K9Ool-IzeCO&bCl2N7`I^{yO_#28 zC(vvV(C*T6zf^AVr(>edDf3P&$xBDQotb8+OpEptEYUNuuZ(5m6C|DQ{r8j$g+omaZH!a_8O4wu}OoMXBNG!?e<=9U4%5Z)wv>*=>H~lUw+|^tcnad*dxs&=VXJ%Iqq5a*UVyxcR;tLjMYZu*DC!iNa! zwW@&4wlcu=Ic{#sy87!u2Ys_wiW0Nx2gmzan=g8zHP2Cwy)F}TMg347N~!|`D$l}Q zyNIvUtWlSqK&1cVSjN3qSE%P=F9#n5d31!z^}*9*cLc{dOiso4GyrwkCGo9sI2cyggk>K?w0Kx#E237S+mjO?g<{Y%S+?KnHAHc@5Yxe6?37JNk6zTy4BP zmb8ejP!5p4H9}H#0yqWpXn1gS;w3KF8gQ8HzC;y~GH?yRGtgJIQPYEdvYNUK0Nd*9hbG;-uG-hXzX7HkT*pz9D)NZ%?11#j-DkNr9r+0hTBcqv7@HpLefzxJ%UOCp zF$WKUO})pfMQycP;OyP0>q<+V9uf-m{wD zQ96PE25&za_iN0lkT`8~ zY`vi#)W^x}^1UU*x>G;VGTC* z_Vn%oNg&^{vB`SJjZSuNrYWa& zPGFbYD6-E$U2QR@sVCEDI3P7M|KF>vvt{+EW;M~Be;udw72xyke)8Fqo$f~y7V;4g zup_RnmL~qWI9efPL{{8vg{PgmQut^Ewh_l(5N(BGT_{H-8-K2wS#T65!xW(s#9laU z1-FsFoK)b1A<%ukrw{ zr;xqXXHpg^vNdMX{x`EdbkvE4VdT)uNk1s{sQ6S=KcnLeQUA}^k(n2levZZ-+8Nfw zd}0?e-!#oVbr*H*Naa0t7kTZl%{_M)eeEc4v9=4uVGQSXqzk6?wgmSCx?6B|!Nqp| z-qt0_-y%#e#wiP>3(H|f=O(2K&0%`eF@gUCwUkSwk!$jjH;`h1=7G3dltU3w;lR#| zCueH&9yMoz=O%_Xx^z*>mE?K|uZv}NPtTKl_CU{zV<-E0kI#$YsV$NJnEvVnclHGT z>X>(SzkN%hcCqpS`&oqnqiqbVizBsdDp+^li+AYW3xwgw&(mNh_89>7BFG<(cp~zm z`1S{}(C5XGKPdL7@Wt{iD|X-HjOHySwva2Sw0%jz&zCn>5Q0Bm;UMu9l|NbGaPbwM zKXLY;@fDXpb+!=h)t7qV`vsJ|CywDD@)g;9BNMW0C{;O~;c)U5wkM(Xpz;;FC#Cif z_zKw*?@+M&V%`(#aJ>2A-V=O%)cImxF-JIk=wlgvef<97@Bf?NDD1_^JD6Z!;+4ri zD|e6LmC8ROci-X+#Xlw&fMLnsJH~K3`2pK24QB;%De^ww^MTzv<8YJtf!;fPebf1Y z-#be%C+3P0Fh+1Y`T-L#k$VgHfCv~jxLy7D88Eqf`}~0Q-6wD-@RI9_`W+c?ko$`9 z#qli-HTUI8_$>}~`;WNx#qiz#eJBtbA|_faG$JX9ZC1r9)z~z~X_Y)|+C?kBJAv%l zN=qd(zR(awD`PO`+`#K6w>t^jP*6omGfCZ0QAJ)kiQQ0AMP@U}-B43S0bC4zh_fZc znGkQNwF9u82Y>CbP)g zL`x?zxd_`tTrEm7DVk2YIpNN%)sjlZtmYnvX9a_;P&rrO`jc&rtchGtcAE8%eJRhW zdPg*V@#v|)_wSm5N-L*yagIegW@O;vn2Ynl&q-~{Ile)srdE>xT#c#2F0g%KQn=K1B5uRV?r)Xgm{r-MlRi$IFe&ZF723jlVeUU zefc<)V^S_H`TYAMRc-_M#KmKHE|r;t#$#MAjhV#zW6*X*`h>`1bb?^A~9l>ku2hn$;K;>n&nrgGqsHG&1TNS%iW6LS0-SV(&7k!P) zX+lR5ef8vNLq`^UEzM~}M?y_i)X+}p%O*Qbeqa&xL7U%R&N4$Mire&sm zg;8`_af|q}l7G+^4)Wd!u+eV{v_>usdUwi(BKp$pB7!31nMG zMteo5`ji)M;k82$v_Nw$92;!ZGUjzjt@-D+K2?HW|7vUF60GYh2@JmO5Fx~|@ zMHE0P?~0s~QXrOhNlvi^kjuL!rxXB$@XpsS!T^$am+P0L0@1vS^@}xtY~I!SrK`Z7 z-i13w96&nn%AJx{Af9*WPO%4&&%1V~^ce{Dmd9U&2qbwc<1dK?qP!LH7b^f+-m3UZ zXMu2U1wBO!9I|I=yjly3*omL|8s(bMWIQtMUhN~&LWgJ#(Di}offZMNyZ965~Q z@AkvZLdn5(wf9rBxpAXIFYC6MolMEE3OkZ*)7H+Cg%cs~{kGdjq)xCDnWOzI!%%pI zxYs#hVp{Z?>^Y4)^T+iy%os5;crQvaHJWP@FB3jATd0 zyv>Yw-~_Z@#*Mc(2J^A_$Q<2rlbw%!xmXto7MWch)}vP^`$T!r z+xYM^j#q7R*v_|Q41*6Yqw&=T;MlQIWe=K2?I>sTng30xhaLA09)L?2_&_}=WfVZO zc>s+jM@DRQh0s5)i5FkQvt=#Aw?{md<%YWES~PMlo{ucf!J`r+imG?BJ5&J#6zOj4TD+=v#u}Fw zzRa7w==A-5Zgi2mPH)%++;4P=*S7dA>zwA1S3J(`kKxB;?NhSjlKm-Ma!kUC*#Ih8 zx9R_{u24tpZk}GO_;>yj%PE0!AB}cx?68=u*?v}V?#@yRZHDa7X6t3tpl(5fOa7`? z`vU_RCR^fF*Sg{NQD@~|uPmID8|HNU;mcB^+pNfFM8CVpV+o0VNBK{l&6#eMlYL#D z|shpgY|yFw^!da=1fq+WF5H{HJHJHQdZJJIBa-YVm#` z9hh3~usus}<=XCb`m5uLmdAgZ>!8YIO$$)hIMdNMgJh9SGQ%B~?M8oI<&xAm^ZS27 zjw^bU8FZ7&@kwC4%(~t2j#Lj%MU&K1^o)SE1KP>uOweQp8DSQk`~Z zgx|1mfSUzm_d?L09^Y{m2d9OfKaVDsZACol=S-YWQjOK<%E06VKNYgg#IjDD4Vnp> zrfd8cZ94haG8x?d1!NNuZvD@x=m&i2&#;zHG(zhNA1b5 z^3_{>@h(YJoMH)JQWpR{K|HHa$GQIDjC4dCm=&6ZHnu*t9;l1jZb=9r20%J99T^Ae z;ZNmioX8}YC0|=L zIt#&HkWXX`429_6jQ!X4jIvC^;PrjVJJ81e!cv5?98(yABt0h>gnYr%nSz-tY7pSh z6N+`~6D+c9Vx!K{R?jn#zvVP z;I4j`mB~n`>}BBu3)ItS8V0wj>*QMEmGs4Ac`|@B9X} z@D;1xp8SB1nd{eVz>8?w^80-hj<@B>Mrkl^vl!`?dQK={Lj zS2a$kv6zB~0tfc+N$`7YSBQFjbgn386cVU7^!IF|86Q%UvcOB$FP4E1{RdP%HK0gHZv*ON&XCnEy6u%!_{*UbXHWA&5$+)O`4f* z8)c4GPULI}_DP zxXth=GgEJ30}tAz{t3|r)bTp0`uJ`t)x+b-Uzpe3U%=rk*`?J#7uCkPAL<6x8X<#s z4`Vrre#53YQ)P1={R?Ck}cZePlA45L6+5q!>Yy6e5=@pqMKh98X z_dV@@A3=J4`9c0j0w@|0Vh2*UbWW)+ftVOj!=S5odG8I%edn6EeBEV0h>h2^-VV+B zcm0o`ce|Qdyj47lEA?NgXl*)I41~~75Mzi359)KBSsYor)umn-DJBBNpxsH*StD3q z(fp-LhRCaRSOQAcOcLt@^2j3D$y&&d7tTEO%NTsNhQlEn?twVD4o~2VhDfQMZ3ZO``TgL!jh-AUW+KAt@mfz}piB!Ht~+ z5mP_DU&EV_@l&2X@Bjo{PIek|2_Ok^E~5fbC}z_lx1LgxVOWXdaP{;~X@vRA@=G5I z#*#@9UnxbIj44IBGE4f2g78m6aUaA99z+6A^PtHn#ke5z3W|&U$ae19Dyzx7aQN@q zTC45WVK44IU6qVqnX_Q#>)Hy7ryF>mGy~;L!Z%p9Y(Cdfy5c5Y5y|HG8+zLNf$xB3TOgYS5G}7Mq#mJX}cd#4iH?CAeT(3OdC=p;_yr?FtUMy;BseHYn$$US;iJqK zz3a@!bk<|r+!i&oVKEqWR>3o(xSq5ZW7&&&rUKM0OcgBJ_^_@nxMmuZTO%U9u#&sW z)cyc8b=Qu2E2mF6OdlM^$B?nsgR$1>zjaEtvXd0N&aP;{gJt3;$Fl~?vqsLk{;+T+ z%4H1$Il~&gs#%Q}ERTk9XJtI87!JYpXJ|ahD4daN50<$ZFc3p5BDEE>xZbl!cjN~0 zh!y#REji%slxALa`*1u-9E@2o?#y=vbk+ydTbz&_R4#XB$aE)oJSjHYqhRO(usg#D zl!1@BV51Hs*VKJ>obBmlLk4{M2hMKu?M+=*l@>{aHq9b>T^suV}9aJMxrMF ztN?dW2xUJLX;r{e8NiGjL|?quPg*12w4Gf;_gQJ#aA}#&X~nn@^BLD~(YR3anbvRR zxRCRi+-bRdLZ}5y)P+85V$4mtuXVO8?lkH>^<1_fu3@#r^Xqi1$e6%obiRJ)c6}SP zP$~nqb7j3o2j=A68K4K(1lSaJ~1nw-p1{US>9kpsoC*74&fo~nWsn@W2 z^^xt&r9Ez$eql>__$Z8c_e(@Davf~vac-WlI&8=86>le-T4v{}gJsU!!Xp(5j0lYG{W;(@K{JCc$m%75n`e86dUC%ectuVE7N2 zq!*bTsu*{i;vLkL@2mWZh%fqWeb61&0$}z7h3L&z2hm|7sXctuuiu@Hbmtz{zm}Q6)ft^vz3=R+=s`}j3@9N z?$s$}+|L6#^J{*qbHC>?p5PDsiKqB0yPUa*>*0F29M{|Ras6C>SKx|Vi7O2!Eu8JK zy{hDcb_m%thMO<6R&!K1nX`PCOV4S7DT}^dnh-pF~@HK(>GV9bX}F=5$=UJ z8YIZJ9K>wBt=GGf^iuapubc%JY`0=)r|mc9_&2jS!ufPqGuSwnb5W#OG+*%yZK&2C ztW@*YG?fn&chxeJWG<7=L`+3j*^ZCCspYgcw`+4r=xqsL9x~}Je!C-LamvMxlEuo_* zjQK&EfOxbaJC}Omy2MX>a1KO4JbDFGrHp{XF+6~aolS!uiI8H00RlU>20I)Dk2gTT zQ3ZJ505n-@WRAXDCtc*B75#%66X=A5a)s z!EHk>{zdR)LAL)DOD&8XH!()zR*5<-0ly*Hnm2jMB)l5}wowB_Z68ymEo&8S}A^qG3Z>6Fs zhXp>LQrZ@@Vr6kl;!t%i`YygCVaW9AuH4z>R=T~RVq*fwgS~A@+Ht;CWe6lBr|-4| z3C*j{R#>B5Qw3%(D$-Z_Wrka5Px3EnGCmnPQ5Tw~`zPKUx+0tAuX)0umDW{!4L@P` zSmjzM+&M18Lt(O`dT!{xf=e4&;+3V$5lKs<{qDU-U;<7lh@7$G2d!)e>I92TC$LEV z$$OvQv^XTc_R4>qe{I)A>XDX}tNilqPRx1pd4qW5IP`NaKqBA>gkW^$=$EKlc3Vbl za>F{=XN*~A%m#@lE{SCmT`e$TK!j1?6ybFy(dZ;O}|) zCHwo6Fal6-%pGTU^d*GRNf=omJ-^eU^A+FjEJhy4GMbSh;tS1=8X&iQ#bB|RuZm;H4J<0o<6Ffo496`ZijN2&1ky=FG>$?IqEP3D13-IzIMtHIz&w(V(HxTIjV{$nF%sS6nSXm51=B6=e<6$e+w)fB$8ntF3FvXS1Z_@pKahWNB$tfA(j<#NBaZC1t| zmiKVNG>P~ma*f8_9Jy0eX_XDZ^3|BWFAf9*zO>?lwI*A*Rf*32dqX)xv&k==%}j4) z^sfILsXGwC{beF#pT&{6CZt17#S{PhO!8jRiron}JVkHbZZQ_^xfVAe&qsfjp?LDn zr!Vv<)z_caOUINo9@DBiFjD%uLREYh;nU$@p(`&p7TOGMogU;b)6B0Rp&xc-zquV% zVzm9qROag^w` z+z)~7t*!Lj&c0pm%$~lrjn(c0Sawc`jcjZja5zc@EC-5Csx?_)|i-PL!_yxb}4Y%HpY>>j0tI~0YB93*!~UjXr_gOJ7lx?u6rT*l#^**ykz z#SU3(ZfA#oZ}I;Lw*gjSFp#HMGGYu=G*~p^xI2Gy1`D|05fNW(Ks!=HXmqq4i5^Cw z`e9Z9!}$|1YQz<2EC4If-*y36^%@ElO_-nCPLek|ghoPB0{tT}Rsc7@#U@Lg|Fd;6 zh@tX^=S>&A{rut#B@-}AwR>e2! z6{SC&OZ!~A`C|1&n{%^i(Hzci-{GEa_Yxztd-4@`J^TE;(Tmg6QDoHm&KAc6l|hX( z>HN_Th3PkRt-El<9h+<(q`e7p*wC?`9N8T7@m#Mk{b}S@8>ffa4Ps%1XQqxTzdtRL z;j?UTiXHXtVC?{Gpl{WA$vMR3DUOG|djE04^mJcHx~`YJL=9-*uUQiyB!nUHtion2e65pCaesEYq+X9w<@5ABsGXY`<1KJAh&cl%Z| zy}j87#_?~I#pa0-4|jv^h%*paGH^D4gbn~RZ{6xZ4X6|>FHlTGvsia1v@tYjW0>|G zL?q}k?fHAtHD#31CjvGD!bA5 zwr&D&{em-^Mx55g=z@SHjParfU|ZqV0ynS)ID^gNT#!0^NIE{`?NDSV4>%TLJCtbJ z;6tgzQz@x_jqR~JI@c}JjFi*{%Hm23EAyxLP`;f;D2-Xi=t+--n$Rr)%UP(ojFpgXXP!Cyv{F-GeN*6Eq6vPpfY?2hnZ|GB+1cG!2@yPQEw+iFgU@j` ziigH;XyC5rclp+&n%j>j7}g3kDZTf0nGnNL?3@d$_7x+ZsLQq4yyzo7lGu-RJL8e# zdg7?sMt+I$?56}{D+k$jVJDu9wKFHHK5jQ%dn$-JlrgleO|bUnZtpC~dga&`ZyqR? z+`o+2Ss0e-Mrs_FpkJ{_RPW`qP0mP8*E$wvDewFE1U>92zZ*8mDM`1!n|Ry$=&Gis z5nY}KlSR@~NmskiIVTxELzV4RJiEL~yE&-os@-lC&M!Rm<@Pz8F9g-76>W>8aE9&( z9`G)a0s&w^oaw_Er9W}w9I=4LVm>~A1k_o~M{dD<=rk>+1%=VHX$#xOG$Mnga}kLe zU(Y3w3E!UzRnxSH1T7z|HjzXHCi4u_2f6@Lpi`j5dNl)Me{wa1v%ed8U|C4D<`%h# zf4!*OBio)$Lp;!e57K&2xJxen%uO0H$rocVb1F z=8LmauI2F4Vn;M}tfikS)-}$CXE`(`R>$w#I$>JlP#B@Bp&ePOkBeWRk7A(+`k)Uuakd9f+ zv>9mi`j%uLGM(U$wzgbaf);uMnMkG3DBJ01JoG1wKqaA_pow_T2VkMt#etE3Ht=8a z_Tmj8{8qK&gomik;HxG^t6i_j$y^?Lnbp{AxcmC3mY=}-O9xcvB*fV6JR7ko49oE5 zxBvM5;YaqXIfu>>rEZgDD`0?!59hYdTd1dHpZn&nc-DKN(eTwjj$4BvQOj_b^zufKQ` zp7sjZR92h2ID0-$+x<(@=(YMsID3+i8C6Weqq1i%nCz zjq_OLB5xz1I}*m+epwMFY`=%9`8?l@0F)6F=oVlSbrxeZ8c|n^Au_GsMQb=bZoY}h zILrAE%@if2xcKZ2@wBgz+}wA`rogHf&4#O4a9p^ z(6;B4k3_0W*|emlJ(*xrdH3o;*-^-PxaQaR6ErF49-;&x2ln+zq4a!q3uDB;KVWi& zFQNW)-zLP(REv^blzqpp&eq<&=r?x5kR^Tn ze4hMt$EIJqbJYb`Cs+S0ZJ}K*57(hsbM^XP)VLSZrPJHG>mymNKTEcyDYWF}Cq0eO zhf~_CMPH8Wuz24;7Q?U8J6`pX&7a%ce9~Uw!0z3}7g9NV#Au!Dp1n7FB$I5^^eJ*KfxyH)RHBHp{eicr&~irn27L zA}5Wx6V7A-D&Iy@Y4NWdUJ9eQ?8k634^v0cF}IX z6=&we^tZh$4te)Z?Bm*@&yv(GZ9S>dnljty`Z{}FQ|C$WxO8Rehrp9jx40pcvD?)^NR+e@9HPRMgv`^6Clu z0Rdk8w3x>%{jl}&gg6zMbkVhEY>CNrg?gR0tlsb?sL+u2%agqWdV@1wTd{eHZE-M~ zaS`>K?JORP@Z;pQpbi-*vU6Qk8aA`cl^Z4;ZLL1&K4bbI<-gYH$n(654wh33A+ zR{m-UziA=6{FC9@RHgJ>Qx=b?LA*5d`9i>C@L>q<-XC|N5>+Y)aRiVidl~S za@8}lr?hfeDV@!DY)U?JJg7)yw?bESjqKs=t4$m@nk)VKpJtz*b030z@yG@GEASjK zQp5z;GP$8=7hT3aIz=mdfIsx~>))Yfe)75Nsn@$}Bdl^mV8If?G(oif3< ze$L(a<(}%WLPt*S{!1@5dk_ob5j-Fs!SVI(v18)lpCNEhF(gX;w;yHw;8_}rl(vFp zteWBZ`dS+fNoJ{q4I{wJ0Wr|W2&>PCEWVdRP)f(k!&Ry_pCyxWtZlkfm74;LejtZs zxq?+$6Z#j8_Cy*5+&+14@3aTj@*IEA?TiMML-$gWRkBc*i;fp4xY%&QKgDGd4cO&G$aY;skclE#$B;I8|?!dpX)tK*Gov& zcvMO9CZNV||Ey#8p=)4Sltg5Mj*S=Dehq!^_WpO95j=18DrK!Q zS`P2}B4gL-7rXg3&vYAdyUqCI>;IzI;AQgCCVglBd1aAvmxR}3#m#JgA?Oy8SG`(u zZN$U#wL=C9PW2vCmzLS#`&=7*FSpMa2jtH78BeyrV3hZ*M_uZ68HU10gT+o1=M%fU N>i-Ak^d1HP005RYhx7md literal 0 HcmV?d00001 diff --git a/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceCodePro-Semibold.woff b/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceCodePro-Semibold.woff new file mode 100644 index 0000000000000000000000000000000000000000..ca972a11dc428209dd66212e382b884f168e83f7 GIT binary patch literal 55360 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

d?~=$y_z?$}zMRxO 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

-nf}~4k^lgCB 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 d&xU0F2O@Pp9zf@HhMqK>r}n002Tsb2$J2 literal 0 HcmV?d00001 diff --git a/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceSerifPro-Bold.woff b/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceSerifPro-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..ac1b1b3a0bb7a673d52495743d8f86fd55188b44 GIT binary patch literal 48720 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

9E8XSY2)E(Vq?32Bxtg&VLnC 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 QJ&hM32>KVoT7vcf00b!O^8f$< literal 0 HcmV?d00001 diff --git a/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceSerifPro-Regular.woff b/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/SourceSerifPro-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..e8c43b852e10e1556268d6c17b47bd0644d6edec GIT binary patch literal 49960 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%0AHnr$&HP)99eOG;&C)H59oX7tVW8CpZqiv(kJ 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 T#x!RM8#a#Gm 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 T`>xjor2he>K@jvWkwJRWB`#{9 literal 0 HcmV?d00001 diff --git a/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/dark.css b/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/dark.css new file mode 100644 index 0000000..a284615 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/dark.css @@ -0,0 +1,361 @@ +/* + _______ + / \ + .==. .==. + (( ))==(( )) + / "==" "=="\ + /____|| || ||___\ + ________ ____ ________ ___ ___ + | ___ \ / \ | ___ \ | | / / + | | \ \ / /\ \ | | \ \| |_/ / + | | ) / /__\ \ | |__/ /| ___ \ + | |__/ / ______ \| ____ \| | \ \ +_______|_______/__/ ____ \__\__|___\__\__|___\__\____ +| ___ \ | ____/ / \ | ___ \ | ____| ___ \ +| | \ \| |___ / /\ \ | | \ \| |___| | \ \ +| |__/ /| ____/ /__\ \ | | ) | ____| |__/ / +| ____ \| |__/ ______ \| |__/ /| |___| ____ \ +|__| \__\____/__/ \__\_______/ |______|__| \__\ + https://darkreader.org +*/ + +/*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/main/LICENSE */ + +/* User-Agent Style */ +html { + background-color: #181a1b !important; +} +html { + color-scheme: dark !important; +} +html, body, input, textarea, select, button, dialog { + background-color: #181a1b; +} +html, body, input, textarea, select, button { + border-color: #736b5e; + color: #e8e6e3; +} +a { + color: #3391ff; +} +table { + border-color: #545b5e; +} +::placeholder { + color: #b2aba1; +} +input:-webkit-autofill, +textarea:-webkit-autofill, +select:-webkit-autofill { + background-color: #404400 !important; + color: #e8e6e3 !important; +} +::-webkit-scrollbar { + background-color: #202324; + color: #aba499; +} +::-webkit-scrollbar-thumb { + background-color: #454a4d; +} +::-webkit-scrollbar-thumb:hover { + background-color: #575e62; +} +::-webkit-scrollbar-thumb:active { + background-color: #484e51; +} +::-webkit-scrollbar-corner { + background-color: #181a1b; +} +::selection { + background-color: #004daa !important; + color: #e8e6e3 !important; +} +::-moz-selection { + background-color: #004daa !important; + color: #e8e6e3 !important; +} + +/* Invert Style */ +.jfk-bubble.gtx-bubble, .captcheck_answer_label > input + img, span#closed_text > img[src^="https://www.gstatic.com/images/branding/googlelogo"], span[data-href^="https://www.hcaptcha.com/"] > #icon, #bit-notification-bar-iframe, ::-webkit-calendar-picker-indicator { + filter: invert(100%) hue-rotate(180deg) contrast(90%) !important; +} + +/* Variables Style */ +:root { + --darkreader-neutral-background: #131516; + --darkreader-neutral-text: #d8d4cf; + --darkreader-selection-background: #004daa; + --darkreader-selection-text: #e8e6e3; +} + +/* Modified CSS */ +body { + color: rgb(200, 195, 188); +} +h1, +h2, +h3:not(.impl):not(.method), +h4:not(.method) { + color: rgb(232, 230, 227); +} +h1.fqn { + border-bottom-color: rgb(60, 65, 67); +} +h2, +h3:not(.impl):not(.method), +h4:not(.method) { + border-bottom-color: rgb(58, 62, 65); +} +.docblock code { + background-color: rgb(30, 32, 33); +} +pre { + background-color: rgb(30, 32, 33); +} +.sidebar .location { + background-image: initial; + background-color: rgb(41, 44, 46); + color: rgb(200, 195, 188); +} +.block a:hover { + background-image: initial; + background-color: rgb(30, 32, 33); +} +.content pre.line-numbers { + border-color: initial; +} +.line-numbers span { + color: rgb(214, 149, 75); +} +.line-numbers .line-highlighted { + background-color: rgb(68, 73, 2); +} +.content .highlighted { + background-color: rgb(53, 57, 59); + color: rgb(232, 230, 227) !important; +} +.content .highlighted a { + color: rgb(232, 230, 227) !important; +} +.content .highlighted.trait { + background-color: rgb(128, 80, 1); +} +.content .highlighted.mod { + background-color: rgb(29, 54, 86); +} +.content .highlighted.enum { + background-color: rgb(47, 77, 58); +} +.content .highlighted.struct { + background-color: rgb(98, 42, 25); +} +.content .highlighted.fn { + background-color: rgb(78, 55, 59); +} +.docblock h1, +.docblock h2, +.docblock h3, +.docblock h4, +.docblock h5 { + border-bottom-color: rgb(58, 62, 65); +} +nav { + border-bottom-color: rgb(57, 61, 64); +} +nav.main .current { + border-top-color: rgb(140, 130, 115); + border-bottom-color: rgb(140, 130, 115); +} +nav.main .separator { + border-color: rgb(140, 130, 115); +} +a { + text-decoration-color: initial; + color: rgb(232, 230, 227); + background-image: initial; + background-color: transparent; +} +p a { + color: rgb(92, 155, 206); +} +p a:hover { + text-decoration-color: initial; +} +.content a.trait, +.block a.current.trait { + color: rgb(252, 173, 39); +} +.content a.mod, +.block a.current.mod { + color: rgb(115, 156, 193); +} +.content a.enum, +.block a.current.enum { + color: rgb(155, 146, 133); +} +.content a.struct, +.block a.current.struct { + color: rgb(255, 94, 44); +} +.content a.fn, +.block a.current.fn { + color: rgb(157, 149, 136); +} +.content .fnname { + color: rgb(157, 149, 136); +} +.search-input { + outline-color: initial; + border-color: initial; + color: rgb(178, 172, 162); + box-shadow: rgb(42, 45, 47) 0px 0px 0px 1px, + rgba(0, 0, 0, 0) 0px 0px 0px 2px; +} +.search-input:focus { + border-color: initial; + outline-color: initial; + box-shadow: rgb(6, 113, 173) 0px 0px 8px; +} +#help { + background-image: initial; + background-color: rgb(36, 39, 41); + box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 6px; + border-color: rgb(66, 72, 74); +} +#help dt { + border-color: rgb(66, 72, 74); + background-image: initial; + background-color: rgb(24, 26, 27); +} +.stability { + border-left-color: initial; +} +.stability.Deprecated { + border-color: rgb(100, 65, 106); + color: rgb(179, 123, 188); +} +.stability.Experimental { + border-color: rgb(124, 38, 36); + color: rgb(202, 101, 98); +} +.stability.Unstable { + border-color: rgb(124, 95, 36); + color: rgb(202, 167, 98); +} +.stability.Stable { + border-color: rgb(60, 120, 64); + color: rgb(123, 211, 128); +} +.stability.Frozen { + border-color: rgb(0, 211, 70); + color: rgb(121, 255, 164); +} +.stability.Locked { + border-color: rgb(0, 145, 200); + color: rgb(106, 215, 255); +} +.stability.Unmarked { + border-color: rgb(67, 73, 76); +} +.summary.Deprecated { + background-color: rgb(110, 72, 117); +} +.summary.Experimental { + background-color: rgb(129, 40, 37); +} +.summary.Unstable { + background-color: rgb(97, 74, 28); +} +.summary.Stable { + background-color: rgb(67, 134, 71); +} +.summary.Unmarked { + background-color: rgb(62, 68, 70); +} +:target { + background-image: initial; + background-color: rgb(56, 58, 0); +} +pre.rust .kw { + color: rgb(149, 105, 177); +} +pre.rust .kw-2, +pre.rust .prelude-ty { + color: rgb(114, 160, 201); +} +pre.rust .number, +pre.rust .string { + color: rgb(226, 255, 106); +} +pre.rust .self, +pre.rust .boolval, +pre.rust .prelude-val, +pre.rust .attribute, +pre.rust .attribute .ident { + color: rgb(219, 73, 73); +} +pre.rust .comment { + color: rgb(161, 152, 140); +} +pre.rust .doccomment { + color: rgb(184, 178, 168); +} +pre.rust .macro, +pre.rust .macro-nonterminal { + color: rgb(107, 192, 197); +} +pre.rust .lifetime { + color: rgb(236, 158, 81); +} +.methods .section-header { + border-bottom-color: initial !important; +} +.collapse-toggle { + color: rgb(168, 160, 149); +} +.toggle-label { + color: rgb(168, 160, 149); +} + +/* Override Style */ +.vimvixen-hint { + background-color: #7b5300 !important; + border-color: #d8b013 !important; + color: #f3e8c8 !important; +} +::placeholder { + opacity: 0.5 !important; +} +#edge-translate-panel-body, +.MuiTypography-body1, +.nfe-quote-text { + color: var(--darkreader-neutral-text) !important; +} +gr-main-header { + background-color: #0f3a48 !important; +} +.tou-z65h9k, +.tou-mignzq, +.tou-1b6i2ox, +.tou-lnqlqk { + background-color: var(--darkreader-neutral-background) !important; +} +.tou-75mvi { + background-color: #032029 !important; +} +.tou-ta9e87, +.tou-1w3fhi0, +.tou-1b8t2us, +.tou-py7lfi, +.tou-1lpmd9d, +.tou-1frrtv8, +.tou-17ezmgn { + background-color: #0a0a0a !important; +} +.tou-uknfeu { + background-color: #231603 !important; +} +.tou-6i3zyv { + background-color: #19576c !important; +} +embed[type="application/pdf"][src="about:blank"] { filter: invert(100%) contrast(90%); } diff --git a/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/eluna-logo.png b/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/eluna-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..66947689a9cef6f9d031cbae11901b340c95f30b GIT binary patch literal 8484 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 PZ~$njJy%6Nfk*rwISJ%v literal 0 HcmV?d00001 diff --git a/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/favicon.ico b/modules/mod-eluna/src/LuaEngine/docs/ElunaDoc/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9c83cadf1e11e0421498245a72b795ede12cdb79 GIT binary patch literal 2016 zcmV<62Os!}P)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ@W=TXrRCwCV+JB5)RS^g9&%FMir9XfI1uQ>W5K0Xp2nqxeFbG6MF%*Opqlt(= zP+~+<6VyVC5H%7&W0atYh^ZJrL<|x@qA_4WDj+{CrIt`iXbWxG(sp;d-SLlmy1Q@p zz1{bAx5i0MviI)2=g#-c%y;I@dEqPfX)J-P{>&(sS$Dh0B;jD`2plUMFU=#8oQV$n z8=LSl-o%SoRX10Zi!7fOjlUQ5T23^2nT=C$w)9~fi5}?P=61S6Yk0XFQR9cM7h$$qIk4iUJtFGJF zWGnF?Ud3YEO8kKQ$4D>MM%LY_xLw2*!W3Z}u9q$*em4%v_xn;OVkx=PDEy@b*@COdF6qbEA3tjr;LQPKo-g93g>A^}z*V?=Sjrtr zv!jttEGZOygVb9<43P;=T+}EBoQz)(bE?ZkY%73gV`EvV-a2xQXr59AUPP0J>hJgB zNnt*&z)QqSgWnBb9+JrB;#b0H{WIo3ExKgBjKAPF7460LDzFD6qh=s-Fs%*(kOOW; zkPadLBw{a_3x(zN7Wm+zfpbj4b;5=9%MtZ%7jb}al5n2zUSbPgZEArA8FZ)>8d#>9 zucNTjrNW`a{X|#wa0~_z=MmQudz95!ga2SUF+pUljyNKw;r%!V2NSOd8(RX<%!MNQ z$FBDxR$+e;pO(2+#FOjCZ*gA*B|--=59d~H8c)@vka>#C=`zXeB_65hvgM@ID?BS) zO@3VFQW-mmeT3_9J*Ku+QVcUPd&s+lPJ9H@Yvleod%!F&%6xL@1TD!<=_y=FUQWIw zV=}Iit}DSlR(VDG7d|A+sR@S&CseKxN}^aX)DPQ|Zu}gV;NIeTU&nV#yp1Is)|JY2 zmds;n(gI>~DH(cXJXfXhA?6#!V#PD~yl@k`@HJdROdVFyk=(T^E8xT$=JzWXn+t1< zpMlHu)3wGgJ=^kMrxoFt+$ZS01 z4w-7$I)Lh9q+HVf?3lJ)8}UtI74dCy-YDj%;oX|BroRK1Q!%66z4#~}ULo^Z@<@Dv zoY+2q=%~qDJ-`?Cz+NNAz^D`4V7UuRg)d6SHMaC{Je6x}STSHDu{Y+AAA63N0K4)1 zk{>?XJfMfjRP2YRYE_+|8%l7@Bo>S&TaCdQ&*K(cfTM;QxuMl(RTXb6uSsjAW&OJ3 z;pBu-^`?^c+^|d{yK>53{zVzjf#)(b&x6!C;hm4d%8jPwXvs9WwoY4Y(&cSk_vve6^IUX9& zT{|B$>pBF@Mnj4WE$5TIk*mo^$+JdmG*>&phh?ahw|7XtEq+Bh6DN(W3T@k`dPUq@ z`F9*V3|s75o%G~7vaUP*NZF+CIt#c=<{quHP!kaC44x>RjuVDjx$ih@TiJgPZm(yj zbR$-mSU6YsWc^lkFguL9Y^=`Da(}YmA@HFv5qFb0IT`6 zXBTQ&S_QD{<~w+>a;xaZML1i;o~j>n^q}ki8Ne=iUBtt9pgJpXOo@-f(Ia9a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=o.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return o.each(this,a,b)},map:function(a){return this.pushStack(o.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},o.extend=o.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||o.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(o.isPlainObject(d)||(e=o.isArray(d)))?(e?(e=!1,f=c&&o.isArray(c)?c:[]):f=c&&o.isPlainObject(c)?c:{},g[b]=o.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},o.extend({expando:"jQuery"+(n+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===o.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isPlainObject:function(a){if("object"!==o.type(a)||a.nodeType||o.isWindow(a))return!1;try{if(a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=o.trim(a),a&&(1===a.indexOf("use strict")?(b=m.createElement("script"),b.text=a,m.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":k.call(a)},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?o.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),o.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||o.guid++,f):void 0},now:Date.now,support:l}),o.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=o.type(a);return"function"===c||o.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="

",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="
","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);o.find=t,o.expr=t.selectors,o.expr[":"]=o.expr.pseudos,o.unique=t.uniqueSort,o.text=t.getText,o.isXMLDoc=t.isXML,o.contains=t.contains;var u=o.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(o.isFunction(b))return o.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return o.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return o.filter(b,a,c);b=o.filter(b,a)}return o.grep(a,function(a){return g.call(b,a)>=0!==c})}o.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?o.find.matchesSelector(d,a)?[d]:[]:o.find.matches(a,o.grep(b,function(a){return 1===a.nodeType}))},o.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(o(a).filter(function(){for(b=0;c>b;b++)if(o.contains(e[b],this))return!0}));for(b=0;c>b;b++)o.find(a,e[b],d);return d=this.pushStack(c>1?o.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?o(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=o.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof o?b[0]:b,o.merge(this,o.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:m,!0)),v.test(c[1])&&o.isPlainObject(b))for(c in b)o.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=m.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=m,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):o.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(o):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),o.makeArray(a,this))};A.prototype=o.fn,y=o(m);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};o.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&o(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),o.fn.extend({has:function(a){var b=o(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(o.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?o(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&o.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?o.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(o(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(o.unique(o.merge(this.get(),o(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}o.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return o.dir(a,"parentNode")},parentsUntil:function(a,b,c){return o.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return o.dir(a,"nextSibling")},prevAll:function(a){return o.dir(a,"previousSibling")},nextUntil:function(a,b,c){return o.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return o.dir(a,"previousSibling",c)},siblings:function(a){return o.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return o.sibling(a.firstChild)},contents:function(a){return a.contentDocument||o.merge([],a.childNodes)}},function(a,b){o.fn[a]=function(c,d){var e=o.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=o.filter(d,e)),this.length>1&&(C[a]||o.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return o.each(a.match(E)||[],function(a,c){b[c]=!0}),b}o.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):o.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){o.each(b,function(b,c){var d=o.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&o.each(arguments,function(a,b){var c;while((c=o.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?o.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},o.extend({Deferred:function(a){var b=[["resolve","done",o.Callbacks("once memory"),"resolved"],["reject","fail",o.Callbacks("once memory"),"rejected"],["notify","progress",o.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return o.Deferred(function(c){o.each(b,function(b,f){var g=o.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&o.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?o.extend(a,d):d}},e={};return d.pipe=d.then,o.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&o.isFunction(a.promise)?e:0,g=1===f?a:o.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&o.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;o.fn.ready=function(a){return o.ready.promise().done(a),this},o.extend({isReady:!1,readyWait:1,holdReady:function(a){a?o.readyWait++:o.ready(!0)},ready:function(a){(a===!0?--o.readyWait:o.isReady)||(o.isReady=!0,a!==!0&&--o.readyWait>0||(H.resolveWith(m,[o]),o.fn.trigger&&o(m).trigger("ready").off("ready")))}});function I(){m.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),o.ready()}o.ready.promise=function(b){return H||(H=o.Deferred(),"complete"===m.readyState?setTimeout(o.ready):(m.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},o.ready.promise();var J=o.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===o.type(c)){e=!0;for(h in c)o.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,o.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(o(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};o.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=o.expando+Math.random()}K.uid=1,K.accepts=o.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,o.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(o.isEmptyObject(f))o.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,o.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{o.isArray(b)?d=b.concat(b.map(o.camelCase)):(e=o.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!o.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?o.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}o.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),o.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length; +while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=o.camelCase(d.slice(5)),P(f,d,e[d]));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=o.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),o.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||o.isArray(c)?d=L.access(a,b,o.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=o.queue(a,b),d=c.length,e=c.shift(),f=o._queueHooks(a,b),g=function(){o.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:o.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),o.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";l.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return m.activeElement}catch(a){}}o.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=o.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof o!==U&&o.event.triggered!==b.type?o.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],n=q=h[1],p=(h[2]||"").split(".").sort(),n&&(l=o.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=o.event.special[n]||{},k=o.extend({type:n,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&o.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(n,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),o.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],n=q=h[1],p=(h[2]||"").split(".").sort(),n){l=o.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||o.removeEvent(a,n,r.handle),delete i[n])}else for(n in i)o.event.remove(a,n+b[j],c,d,!0);o.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,p=[d||m],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||m,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+o.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[o.expando]?b:new o.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:o.makeArray(c,[b]),n=o.event.special[q]||{},e||!n.trigger||n.trigger.apply(d,c)!==!1)){if(!e&&!n.noBubble&&!o.isWindow(d)){for(i=n.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||m)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:n.bindType||q,l=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),l&&l.apply(g,c),l=k&&g[k],l&&l.apply&&o.acceptData(g)&&(b.result=l.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||n._default&&n._default.apply(p.pop(),c)!==!1||!o.acceptData(d)||k&&o.isFunction(d[q])&&!o.isWindow(d)&&(h=d[k],h&&(d[k]=null),o.event.triggered=q,d[q](),o.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=o.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=o.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=o.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((o.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?o(e,this).index(i)>=0:o.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return o.nodeName(a,"table")&&o.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)o.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=o.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&o.nodeName(a,b)?o.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}o.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=o.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||o.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,n=a.length;n>m;m++)if(e=a[m],e||0===e)if("object"===o.type(e))o.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;o.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===o.inArray(e,d))&&(i=o.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f,g,h=o.event.special,i=0;void 0!==(c=a[i]);i++){if(o.acceptData(c)&&(f=c[L.expando],f&&(b=L.cache[f]))){if(d=Object.keys(b.events||{}),d.length)for(g=0;void 0!==(e=d[g]);g++)h[e]?o.event.remove(c,e):o.removeEvent(c,e,b.handle);L.cache[f]&&delete L.cache[f]}delete M.cache[c[M.expando]]}}}),o.fn.extend({text:function(a){return J(this,function(a){return void 0===a?o.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?o.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||o.cleanData(ob(c)),c.parentNode&&(b&&o.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(o.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return o.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(o.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,o.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,n=k-1,p=a[0],q=o.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(c=o.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=o.map(ob(c,"script"),kb),g=f.length;k>j;j++)h=c,j!==n&&(h=o.clone(h,!0,!0),g&&o.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,o.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&o.contains(i,h)&&(h.src?o._evalUrl&&o._evalUrl(h.src):o.globalEval(h.textContent.replace(hb,"")))}return this}}),o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){o.fn[a]=function(a){for(var c,d=[],e=o(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),o(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d=o(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:o.css(d[0],"display");return d.detach(),e}function tb(a){var b=m,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||o("

rQ7r=Q~sI zyla2=R<~s4UvkLmJDu}=``df%wb$^jcbyG%Hk_Ke;OQr?L`?a;4{-i72?h@7gtkD5 zT1ST5MXahoq9^d47+0>2;sQybv*1Q;u;8KFECk+Pye(yE5o#t5VJsGj1*b5Gv7M3S z2P^9Mu$33eEORjfhr^=_0$KurFuy{z9+gd4ufdp-8jG&n0}Tb_!U!bN5q9qdZ%Q76 z4a7i?lHKMs*vMcE{}_1fCu`Xtva*i!)fAhoH;X61)Y_BRKkTkP(&2>F>w{LL&E|rZYR@_QQ(-ATO${_ zJjB?s>Uc4ZI9LLKVZ1a6wUjflB6Vk;ux8^xpi4HMM69o)V6i>CFW4$^KGUoKC4Vu0 z`QP}8d^1K~@JaA89F-&~YiRbkuEb zjqlucA58AC-EF%uDk!J>hkciBZ}-|F_RCt+)t&Vmrvm^329yX5P8;=_X7jb4cG-6tZ+z!fD|euOqdv-bY<)xl z&2W~PF|Ukpv0VI1#_jnNF~Q6omA+Wardb4^%zgxj&*uWL;35+iJcVz4I-7T!bxCoj zB1iySJzKU^@eo%Ei;$+5IadW6ae#Cj!uU@R6CTB%kw&eBK#jB(0B7Z3{t=%1txg%lVPY{JZzWx)_R3$$a;P%Z{< zvYD_LM2g{s8yf8CV4b;!|4cGshC+@wF3)P&B?gHl2^kVfJ!H|A5=}B(vW?m!gpt;a z&B?rBO}U$gF;Af|a7Qs$oRsou6S3k_Y3&V*U}6DdA#vImK86lA^%mb?K?Q3Z_eO|v z!3S}YTjD5P)&*-3XBAhFq4UqrjFnWxl8I1_(JB-atb*ziBui}Mr0DD=(6^4nsjp&% zjE-iLc+-M~CLx;Ul=&c(WA0%T@e)ech1)4X)Wf(D6h;eU;-4*Z z!zi)n!TY1+$&bJf&Y{5fp;WA9lT!8~@J@0_<+aft+_$t`r~;wB$+dE;D!tpCN9vB9 z6X$*EiG7VH6P@+Pmd$q_o?7lfS0Jko4o`J9oLHW>yHNt2H{d1jF`7W{P}KHT*RkZc z?>z`2A|J*p8+SC-Sh!vw%CDgUzO=ig*WP$XZ@qnA>%~-)(a3O0>JKJ!4AHu_cek~@ z(=*?C+3s@MZYji=Kffm!eTSmzek5=J03ZNKL_t(#L9MyTIw$Lyx&t$F<%UY?7QtS@ z0>(&T!A)R<5>4?`V|0`70&8JG1NMT#jtw)hGmn+nYJX#B#PPVzVf2gxuC{+B66Qa3Z_txbbXUpPs=+#sqQTU|mp# zjYaOty=4@C;66HY?q_5xG9Lj&;94AnVX=gwjtR%IWaCv-Kq#@4Erd}iiTB87xfq8V zdIZnJii$Nda$ptc5}&?(z_Eb^=um(S>u^6g6iN6YXP`C^eiXXz&2P`E$^rt$=YwMf*Ezyu zb2_YSuzG`M0~{{zquYc%1}DP8mxkBb@lf-QaPWn-M$DcAh@ad{7jZ_JC$Eb*o0E37 z3X9$0-aqUxLmc^n1)-m&tb*yBrnGuG8_y+{bhNwK@BQp1t zOTl#!o?xL8-V%ch?;zk{gsv!#aVUXjwxW#$YpGZ@a)>eULh(_Gg{&CzwgM6tyw|a& zX&)Bw_4v-zv$wydZ}|z8txmTv_`NC!|Ja z8=xANGplhM8H^qIWS@X0iQal^vGxQ6TIg=F=cW_gy(=G z)@rKNn!38bYZ^~1*mkRK=o$yX(HR!)NT}qJ3Lo zrga63{alc&ji%^;XdJPjlL^AR0Qz>M{!!EM>FIQ0;}%1yULzdS&}dOsuhFn_9^N}K zP4Ih;7C-yNe^3A+(@BX~w){Jk0*b<+jdkz`_<%EeR;;z{5B6*55(|o5&jc?+$6(=k z;ebtH^&t@RmE*MtQDk~4YmEv!gbj-r0q}{RMmwKV;)>ENs|ptYr*7JGxH%{rqYP|? zMw3yj00fNR^LK0ok}6iJ$qI{;34lCFym$}@aO}Msv>$lOv?qKmD;hG?1m3+-W-3Cj zNI^x4GZO-##=v?OrHZv<%OjEAI}~C=%JYmhZIm4_we;*%1L5{s=!ki)h&_Xo4nLCL zGfu)9C{J6>BwUCi@dC9{qrf4o7&bPXzFd>}CC1JsSu7`3p19l06IL$k0Hi7dl2t6( zjdL*thyj59oxnTyXn}PJs}q?D>zM;Eyof+@@C<%&Qx17{5DDiBG8f1W*1!-) z_)bzd2IUL`9YrB{cwCpSw&;^3%cWT}^nnSY651p7X@srvP#qxBOGqWIQ!Au2UZNzErilbs+ywwg@H6IFs}M6-C|W~A$5*)bqwh`D?8 zWI@m2k|Cfw4tmY$MEMm!9f88mofwC3KeBCBe%J?2YhPz1+}j zIW?9WIpTL#zQu~Y1)kqZ$(|4)ytU<&5E2T~nDx!Z+%3G9qLo;OAg{SY9|r>mp~FRZZp6hHOxhI87k|qSOuQd|oc)-ftj1##3Ih(xf$UHZxtI&z znj$8K!2Vzk*|V%VzeAQe7V%4w3sdA`G`RvYtZw>S+6zIp;9RzGL0HDa@qZrPA8NYH z+{%l6;77)b=U_|5q32zTUZaXm&k_hweQ%)k(FWryuL-)~zS>sZZU| zt?O5!lT5Xw#cZat(^DVpglTtsEpu?pfQh0X)=LeBL%n|6l*P$vdiOK zY!;KS1jS(}X2@Xp9wmcSoh#5qR!|KZ%qk}$$%|{F7@S}(M)wZ(C`!eUFX%O~!ravZ zG>LbMKTEt4%gV_!1k}w&NqoiF7$6FkI41W+*Az>{Nx{BCk;zGmfQ=mDAU3#|fsrMo zLdi3hMo1C~#3(=r%Nl{;8VFsrhB)JZL*05N4W;IDPr4{0~JOrT( z5@e9;)Z)-%{U#ik$vS85c@K#m6ao~HD6>^LTz1CEbJKZ*_hF3@`$mV93n**)*@U&` zFcel5i8rdm92$uniP0m4qAhH)`=&T`H|?S-&1RH5=ck?uYBmBt>n5EJ!yxArI#dER zVZn(mEvz?+GDvkOyo$AI)d^)q0g5|ZTk!Do!!SVZnTNs}Pa-&)-Luiz9JCh&7IQ5| zaFmo)s6pomZ%9!qTqWcI7$u>Zr8FlmfiMuTAVFp(#<{z)ApN-6_RJ7YCt|UNBNRtY zh6Jr;3Gc0#yhRT0O`@MQN(U4SNpki=H0k9To%ka;O^c&wpl+FBO1UOsAO1Nhj(347 zcZ|AV;{b#U#9O?dLaKVb>2>FD0Mx`iZ2i;GWWCmOFjXO=o`Ay!ewDD61r;D+jB>y@ z$Ap^LRw$51s5@_7yR4hnnmX-I^y-~6^~Z;rOlN9Ti~88pSM}LXen7wfhi~X%f1)e9 zU47`ut7=mNT`1@hUg~10@nE3gaO8rg!4RvNBz(o_jpAkL=G7~D-_6S&yDouFK7sz5hp3=I37hC zEJ{%%#lt;Lc;Rwcm3q~j9d^l3q97H_Awer5i00$KfJ*>&H596?){5LZoO@ys<1WH% zRl{{hln^{DWkdBYXdt~8uwn=mAOk3C&;WL^p^Bx_s-k+U=j7dNI<;c3LUv~SLOHTQ zNN&&xm_s76%CXrX7qaD%-!NG?e8K8qxA8se5*|r{xv>$-!;s5m(4b6wCj$4 z+1i94hwA`yV;6BQ5oaZ4Y8*GQ2X?da$nC+^f1GnKF8TED3FL3Rumca zic%P0c0mc5ZK8s#TxqzReChZ-&(48KY?N!nxKPmCm&1fjhq5RY0q@7}3BxefN~2;c zjsu`oud3Xvxw);^JU4~8aH^Q}{5y^sh!)D>kv-OraL#6hQ2}(2!!i^c*Fy2*^%06- zT)rML%o0>inUyg-!`@}=A-hMBRK|McBgQLxEb)wtnPfFzc~Ke<=Nzk7t@D_#D$i$kL{lg(O0s`Mmj}EJ>P2zG4VK`a|fV+pK7R3oP+Q zho=+WIT(7}5GqxRkm?Uq+B9sW;6(#P#fzw$R(EDtUawizehUQ9T_xVZ~V?|dd5EmVpb&KR5 z;fj;9itfH}rfGNAmJ*lYUZGm!qOryD8=#~Ct$RfNC8urt6bU7e5&2{m>QMsC8%y1$ z%35lEaHi@u4}fV-!Ad0Kwy#{$vs(|fn9i*P%5`{-S&U#2t#1 zJS4$kjFq^AvStb_}GlkJ)R!1mcNp_P|gvo3+_dyxS*_fn3HVC=OfyR=V;)vt(LPk0E zK@=bx$O*>Iaz!G&;BtDRD=1)Irjbecrua=9o+Od;mkoES0kPJBht9@2>tk@C;3Id$ z7*WXZzwolfzg*eUtWpF<-YESozb*%9yIFU&UH-fLD;D;({f<8TM)F%(Q~RIdat257L|t%j}T@qDAf-GO7^+~>tN?z^(s zR&@p{1bM4yxSVM|rOFRQ9T5PObd6_BMGwtdLF3s-r=!#kic{&2ePNJ56i#nGln&Wt zlyL*pML|brMUBPN%c{bR4SGFLS3jp(BxkV8G)-T+x#DR13j1DWj*RkUQU9QVc0P$W936yz- zFhMp|rB)R5kO;M3e68b3uH9jqm^KO=#YxSmDfyxNP2D0yn*;}!2 z5VJGcS;QjUh%}O>#(`JMwpJM@UK8FIhXRnXVzH+C2Q$6(`k8v~e_U@L088>r#2DZ6 z-$!K$Ys!{${+>q{8NJvjYeDxKUKqIni?4aUMlEY_p7?O zwNaaUq@*p@F)t1n4p+igyhuXfQe!~_=fnDRgHd2>>@S{&k5&U^u%x?%twKH>_*bqs znNGEshLOPhEZqNntxctF55~{FUYo5hJS7YQT1kbWvw{_FNvP1KiXmTdW5NlMJK?%4 zQ*jeAWnK&TpmRJcLnZ8&61|Mehc)9*o1F8FI4+Oo+(vSX@@B>$DDmEEMk&=r$CiM) z(Me`)Bn1kI!zl#c+)hLsJBlvf7v{R)1GC}-A1MYZSAZ+g#vkkjcr z)4}nXhNH2qmwQJ;D{uA;`7H`SA{+11qTY@&2f+oD?dcCU2bZ$kB zheBeMLXp?sxU2qPu2!R=?N-CdSZXUUg6zpGmqs}aR%?yNu=j1$ZPwfd>dx87Misia zj6iq0&EP#YgGhQJVtfUOI5bsID1D<}h%GOq)BZ-s4`*sTeqCSs&RdSfyk{={KmGB+ zy#syf2cOYX*Q$DFSkzW(@`~W%ijh27*!4jO3fkC3Eor`-SO7C1Qz#_jeI+apgpLhI z5{=kha%ZhgBA!fjmP99$vI?7k#bLQ2&?rI_;+hLBi1TscV;PqNz5^DUcH_(v*71^x zuN)#4ur2P3i%0^9O^w0?2{F&&0AZh_yiAknIC+A>agew=5kx~k3sJ}@+r^xu7fL-6 zn43+e!Xn1(cx|DsmFBj_8Gi$^8*Mb1FA|QutU1Z86g*^%Y*g@@fr#bD2>bA8SPcj} zEvk4~A*-O7=M==lQpZO#z4qNx)%N%F^|z0-uC(>Z=RT?aX|NCSIU{Hu$>soc3-##B zzUx2SKi}-Wr^6r@?*<-)V)CmXbrU_ncrw{PKg(wDn+E)U%gMj`_ncy`G8_dT1SkRgbniMLl*`?tU~4|p$<62ut1lfSva7G>p4;eXN@E3Y z_NL?gvsLDz4LnNZu(-lfb1%mDcUlF1^V8^}u_Ys9t*Qxppkeq@f!z*KjM8F*F9&Gpu1or7Q6&8W&7`Xh5Ep3Kuj_3Y~G8Y^Q|R7l*I2j2s;0 zvg+lUM%i442eY6j-K_NFmAcxk%X;a~iALjjbWN#-%MOZ#LzO({t9R!b%`-jo*lv*G z&zJ5}J)O>!P3PvZU|+EZD%=!jdNI>#vk;K#)uL)|hs@w7YsV$`C^Op8s+%629Oo^NmcRi-zNg$~PX@@4k3PCo~NF|M@juZ}gR~zocdM zm_GJoN8_xdZZXmSv2&6OWNsdtEiqsOg=#XCDVi^eC*pbenazu(NQQi7;vzEd6~Vi( zT3{j1Y-z!@>_iI|t1S)`14q%%1#K2m3wntE8=C$fBrjuk1}H8l0;=ykSoGP#oo5Qet)1< zxvro5+@H{c2k+?io3F+7lQQR;=P#_i^B>;*4flIwiESuy@BH;%Pc2Uj@9ggCPyg)C z>G`jGMc?@SFKMyZ*JnPmqti)2O}eDOUScaVaPlO9fu_w2qXID#s2@T(C}m#6(mfV) zXYf4~p0pl{)nRT?z_AWssTYouyO@V0CP}@GM3*NHVX*lexF}t$bqMv5F)VZrBH(g? zVhEXK3_QAZrLX0bo2}-HX9+Wx_qjoWr;jSdlt46$F}PcD`EtS`xBmGY&rq#9q0C4( zZKh+{9btV9i5C&pheT2V$nj)3jP`1Y>HC29}qa&(;c4- z1SvkhBUiy*f#U*H6Bue{h^8HM6vsnH);VOzd$@#rwbb4F1NFzV#0kP)*@(VzW)5z{SFlKgEtQKk(&)IRzcoF zd=G);6k>z0VX!_UnH35MB}7FKoBljh0c?#br$UUI8(<~aG{Q>A7B2DTdPZBge3+`F zC<$glBaW6fA7uiR+=7H4Y?2fqAqF1Tip0|qik9&*fw;v^y19xm%8%Iqd0dcrrEL^r z_a^0VVN-Ekmjly=CX$Xk1NX7_U_~DmTd;O{6mc&jByepDhVqc`V!rGX<0*iXObXjO z9uq8CR*ZvtpeP>w%Dr>Nh&tu4!&R%Ngw8|_%{0@$@iRZI+qZA)dtd&tu1@>5sOIU+ zCte8_6r%tIg3Q*N(c+2gBcBYf(Wb3ZL8HOaEw3^g9kN_1`Y* z`Hl2LKk}o#_;-Hi_qBeet0ik!WnIFCu|;Uw%23XTr4?F&BJ!Mmc2GI?RFIt@#p3t; z9a$jh8}pPy5}CKa@Pbr`sySluB$J#+H$n!QSw2Vdnu8)=R}@-)eSSy6@Z3t~d2O7; z{_}oMmN%vuR%w2aU?tl$NYtcOxb8Gk)w-DS1e`hiV|xJmUPL2TZionCTtL;yEwK_A zD_y!-1jzUobM^;)Eupj}ejFMhpEo$l{VY6FI@~Q=e%esRd`n!Nz3}~B!|~X0`ewVR z@nWTKzwy8agg*uZZ=UIBzEGo1Jin|OE(sWEX2JarX`DLKcDJGJZpXM}!YZ|LS>xGE zGm`p%0c=oFY3W9dS}f<9j^-NA7WSm@CU^#;Fe)WAsL&)CU90HucxlWs>s)3{Y4{mR z;60C)Toa5WTDl|D=vEdwMB(E7pM35)edL2r>!1JQzZFW))=fa_TD6+!kU^nBr(Sd{ zt=T3ETT;2%GOVQ5DyzHG(BA%*p`)ui0QwU$w{M%Bn%LisQZEiY(aKbs6 z4lom#AQ%>GxFw~h~9=AIy?{0;dVhB`1Uvw4&0SyE0;MJfe${CAX}}b zdhNAW_0reAtY_C_?QTVQWKm2p&Lhi-X4KtJ zz*NKQ61gACC`CVME=W`&7a%C`F!|^EyQLLljpRF}=Ijp?Giz4fkOu*~4BRm0k>6wR zj0O|Urc3dRuD(USFp?;vu0}GRspZ*>DDo+pX1iE4z8ISV2;jn;Cdh5{zQoh%G%!F) zhQMuin>L)N>;uY{&1QnND%%ttO9nkcAvtAJ)p_YmB*Qz(_s&;B>b!&!cUA=Kh-EK?e zYAEA+VttzS$C{338dWA5p3dD;$k^3lQBS{bPtSiowV-3s+k{Kco5U`tjTKOZ?3mzgs2jtmsG$-@q;xI zKf7Qjo&)#V$dSZx!ZR{9cQ`iui;BEtfzrWwHZu|fFa&)UNEBVU<|#3Z>f}V)+7FC8 za#*j0!IpzH@P zHY&QMJ#KM~h{Hcu$_@#bdxT*H_XyAG|dxEAP~IM^@_Aa6p; zx&nX#7l&v97C0Nvb#geeG1%K?UgLf%{&hHc!Woa%mm$;Uxx2DME@13^2TzrH+o5Y800`I2r3`5G|;<&J=HGBi*l*_4a!t{)Zl9L6;t)!wXuav~n zLLqQ_3_3Q(dJ`R%*$u2E@lRr*ym&8|QDR9PO#D07U|h$W9gCTGHF2!4^!cpkhl41^ zk3$ItG!DgOZ^Kobc7)GmB7UOiAXxOU_IW>KJNb(zCCmW+m9G>lA>UBQf;gnY)aM2z z=UKduXPr%eKCaYkZPct6l}*pNxsZP9V{mFE)}mQgWOEjo&UF;9TIYee3hIL@wimOjhHS!-g0zpjq6{ z5&=&3L9HH&oiLjV%AEWLEfUv6!Sdp8Ga*pIKF43qTai%e?+3+1Oz7{LZR?^YQT+`V`O>p;YoApM$YQ?m~6v)*oMRgl%x10iv z#a!(6+Pb#gFlTZ`yQ@-3{b?r1_3M?OC!mYVQGetR2Zqx5PN+BQ7LrFF!~&Q$c&?b) z3>&1^+1#j{%Rj@K;ZmUFSXjC*x9cTc*`bo9qE5S_Zl_^uxYjPHx7}8y+t&7#eQjU9 zq*A@ATD_@;+hwyuW}4OpS`|+{wsrPE&2~-G*~~Wde4bkX`3MM?U>QawAiuRGlH#0x z7dtTtIYNctAb_}ySiD3=u&yn9N&fjlatuCcM+kUMS2!Z5D6g1CDPN}Jv=wy?638ROUiAI%RAHc6S2mw0_hvGG_}4X*lQ<41QRgToaLX0+#tEPMnve zvu0_XLFOToQK*r)C6W%s6XO(%kONY{AAmDPr~r3Bh`){>S!2suIw%%KH24IH5Ec_? z4Ha|1T1NPa7%^TRNg+HviRoC^E1(So?Y zq}e2LFDOFphXR~FQsy0_`ab`KxNNa7y5Yu7*~*>XdMg?y6EY~WMhne|jnCGaOfYcZ zcY#U(KX#+j$=rIt9#K(hyGbs4Ee^b1qoV8kJlP(#q~za_dZB6t(%7UBtwQN2TGOD;};Di8gKn#UctXXd>+br%g-j zHVDlTP;jo%UD}Fzjpdy-xBCmCh=~6|@ws$`Ah0XOnp+;WQc;k&MY_ND==dro-=eDv%IZTvWWV1}3|Q?>SFi;jIvp=TOd*T7(0rYMsqguht!Y zawifzhZH+CX%yE?RyuNs%;otOUm%49xCZ0lcRX`Wti^r7Ci@wZh3f;r;VhIcdmwmF zI9O52@P9br4gF{y4|aDNl9U@2K!f1BnOi;3DEuDFa<$;^C?P+D$AsLn6`5{wG+>o0 z<)AZQw1nHRy65AOEmHI2l*34>dZGg{0__6qY!tE>H=Pbg_CveXa>xRUv{KqQAxCY( z$uRT#a|e;I1!G^V3Ti>D56Z&_E6)*CtBluqJYv(tux&4GbmMYcTg|H3=BWClK`Zg^ zH}0PqQtL*to0Ynqs*ZGxhd&)b2FZ>Fue#|BQNEx9nV(I< ziZ4~2Y{A8w%)yJIOHd@%DgJzJg~h%N(+gQ38A1pHhCCDs8xtW1I?CpSK9Or#V4!4l zIdWL-@RDE!!7+?Hkpn<^n<|v&H31Q2w+Q3AUu+Uvz#D02Pim#O?|gg_!XR1a@e<|; z%4An-X4zU(dP-7ERmIo{rOq`;6cQOipYk(9C&7pIgj|d8h7;O(T~Znr&oP`%f*XYk zdlv(jjPMmX1FV0nTnM3%p^H6)g5rR{gTROg^bMQPN_a!n8pS#(=E}O5u`tO+Ql<>W z8yBk?>oPI_F*feS0gLkI_pFJPG@r#vwR}bH$ZNs1mTc)bG=pN45Lq0KgjgK$D8|9! zgC->iSwpVxbq9Zr2IOyejL_VsYZ%cJXKY}SjmC-l`g#s=z(R<+TWBjIPnR+jX( zasD)8s5L6CBqX7ZRaq*K589|*tGZx=ePP9ptfha<8HQ1v+4tc^r4S`OxHi~VZXDqe8pee?XIegu2gAhGPW8m5mqfQjGkHmVJcNDb|Bi5bFM^38G@9$9L&8v1g|N3CiDf@BGlzG!iqA+!Cqlq2}uB9 zw6gJtFAOadXPy3dyBm$pCQbsASe#`TWh?Iq#z!LlU-ddVISwYh;>uPu{3?Vb2)lI} zRb}ioNvCwoc4wiI*(&X6CTBgn5 z!&Kh0+Gw{^*ZZz@!>B41&8IOMPXt$UyD9TBGk@g?ro_MMMH~n|YA6$I^~FBJ=<|X2 z=tS7^D5zO03!;v#c3r)8T~B`CgL>b`e@xe&_^7eK(-XKGCMvg@D%E=`R9mXlabsKB zD0m}^#a)$(O_fVsEwUGt6%Ue$-cV=%vMPs%mKR3OfrF(IkS#3CIUxuHh!|d+j{Ju;9HYuiOH* za%SV0ye6z=1d$i9!up7cN{%IS6DfDk#a>csTw{tU=6uHVe)S8%>}H$`$8JAV{(@iL=LZ z&ws3p(*)p5)d#0WXs}uNU#(Wx5xsS2&5MSCpxfe|8jc;eF1dUhF*GdzM@EE5V{r(* zvJul}VeXPAuEzFG{@nfwc#a)nI3B;}2MAR2v<;JcVLQ z^~#lW^VHhgSLMd=A8%<{eqgfr3fCwcSvk0#{*eU*qI2cewl=u$rBFtVc12eozpK;3 z9raHdNs%CsSh{pAS!nbQ`s?QE7=DMPG- zLgU4vgME%tZ1BvuY73QW@bE6x>D^cVgy#(f%`;-vv0!9U5#CC5tli7^bbRkap@7r1 z$w(ofr7FA@2_4~(dBpRq42B~!=kY$yPX1wale$7jLtbM@+dQ?OO0Jw0E0svD`dg^G z_fV(D`)14H@L?x`Ht}Kih@jv+W8v{XlyXrO6^%&+lZ;ha(Ig84fHB3mQ0jORMK!j! zrF-w>y4m>S78qoxA;;3CoAEuK5sH_CxUo%T+eYKFx$5lzGp{CCn^M0oHCmMCF4fwq zX#ZAIqyEA`eq8q@ZFnHlr|()TLFdANKeyOen=7|=bX4xE<~Cdrn&IHVtH4#?lwi?g zK0qG9nX=MkIWd%@R;$`AMiyp^ndc0Ti_ha$d+j-W9Kt3+9Hq*`$%tf+EoBZRTx%>% zl#o3=AI?E+v)V)mfY4E;O8$nDec+iPhbTg)$lOUk({K#o{agilVNF~9);8MT-l$XTYcsj6{#{^C z_>>i?(^jS2QMKIBvU*v#6ZH+Q64qT@5nz7BPQ^k6@V^?V(!H+As-oS;xAoL|Uq{DZ zR7Q*Vgf8Hd#JEn6M%vxN1tfSVl~!f7Iz#=PUt8*O^O8PzqwSka<`Y%QO?9`*selCRJ)JUuIJxju;0Qzp&ND{1fM#FV*VKw0HG^ z{>c~D`jHQGl8uD|L+rU}tQTvBs|}AxcvMlqvRp42UHFAcJL zyd)CRpiCCisR}h9S`q$2RtYyC!-Th>;moTDQKTq)8iCG;6&c4Ja+CK>B!^LU(_WU9 zuvX@0C5g{}kH5+2RL(2&csw9B{55C{S7x!r{Osn7uyVL-yv92rd_EcN{{d zv7GDWvb#MGhBH6ol^bnkQ^+%lGQ+w8BgDF(M5i;VrIHT}h_PTZJy9Xx|9iGih26ppOPqzq7l#9kT4~M53ovqDa z2h7c3b^ri`qu>o+X1af}(kriL-dD&y92dPd{M$=GZo~rM5f9FW7m&C|p5c#tOWtWQ zjX_peyo4XkOC$3SP+h}`03%ep848P&uz&ET%9^ON|FlZowgs?O?x|dEtGrHy1U_LS zi7_uM6}@@$E5}zX+r7u0Rd<(@x}`T?e?un+-+I@Zuoa0tkH=%}f?q~36UE=#hZ9|U zg37|C2GgOi7MQ^CNa|%Jedo=7D3{gRgz&w+hbk6U8uhzcE_x=M$BJI-RGsaC5F)Hy zU`UPD(u#kXZK>5c)M8Q4>Cv8+^GwzHT%Emvreny9Mw(3;dgYZp{rXq$>T@64(bnD_ z9rT+jEE}pW_bINnvL)ooYqmaBee1TetS*f%`FG{oLiOgchDZC(0N0yimCH*_M_pAa zGu2yTO-D_&yQf;r+gi+e>g^qs1XGu;4v54x^%3~rlQGk&n2mi22}D( zz5L3KKL7PY{lq8QYP9-(hThe_W|Okcj`wVFunVv{)=N+Y#KyyogD{^1W-%UXR;aiv zoxx*q;fAB2P&y>YmZ@!$9}bcrtXJ^G!$4savOr?&T-j(bU#r<6nHAq7#miY{!kAL6 zqld>syS&93W>4T}E6tKO#Iz3$XHg~Ka_fSc^{PtkIMv8Wo>6G=z@ucGo&z8!~dFH_S7F|GqOU{ABJWw3M&wm@@YV>O5bH-76$ptm8bLuvFT@!M=?Is(U}1%F2#<*PG~owO6nvf1 z&WN~Zg?(GK6>JyV`3cY+kpQIe0k~ch^<#9PxU@ zX->b1FPFM?U9U&(!$t%-76E;u?<9GpARVK7J4w^JooI3`tSSfYN_)MUuJ5;1E3R~Q zeByk}beh@w0`j|=XF3C6QY@(3s_5yPTcX1?*CWJ(EWG{Bu^yfdRWW2R(|o;1ZcZjE9o@g8PV>-K5w7Zur@yJ=gRA<|x0m|# zr(V|a!%HeI9#gF`(xn?O>FeLTsgu!A4^Qst6YsmFc6q7Yt1sx)H+nj}x37Bp9bI|s zbsfC%NiF6D?OlCMx8Lq))Zfv|Z_M>?|J+^u?2mrH)+pC}@$F2#WE?UP^;N}N4a3Z;Cc9k%jg0aX+D##J{EF^awdeae>1!_a)Q-*SjfFL z9#On+JXvZzU2A8*u7?k%s@F@JPL@&=Ln3h5onCNtlh9mFIiMmw&i%3ECPOy%MWX3k zo;WItSV2^h0ShbpAaQtrT3j-5LVwQ?}e7~vP zHjK4H;zlAsH$2NCeh#(ha-lhg%?kap(P_V+m)?9Bb(wfNc%IPnQg8-(rnFH5Y0GHnu0Hw$z{5nlFI_-$7 zm76NHud7&Usa(6Eta1@IUKW?aI-VQ#N^fdMB;&deI{O6VBwcCPe?>=!uj%N)TN?I{ z&hPz4zA@hg8Dokq*tPKvCyuhj21OCZa-&+Qr1|)ge(JevuEJ?vZR0SzwYb*`20xUec=gPuD|m9 z^HCEl>CgWcL;cb}qm4`)5`XL0U)E%_rNyG8fAob+ue@H3DLeFMjo{z;H?W`(J#+nR!m<tB5RP?N>N79s~8ZY>=vAfKVN(`qq|YQQDcOhm7+N+N^r zFaXK0yaKC8lshaY?t69|x3vMVk=PHjNkOe1$e2`EfNPvEwu3>Y@eq){bop9St!_o# zZq*(Q8@yU8sk>WKy-BVhLM$9S^(GnqKx|~Qd9g?waCmf(tCu#EWzXG3 z#Bo-jb@aC*;aIB*{OvlMI}AaqDXd`#eXvx6*)WoD%r}egzrdqvY4+6PiB}w!mm%u^Ym;nH~LyGV- z)4imi0$k+4YK&9Hvn{yG_hbqAJX@z|$YT@Fo7_XQ;zFf$si<1BrqOUf5&uY~0aI^=v%xzqcL^^wK+h-98)&6b6{%!DyoX zVC;DF*=VABCj-58Jk*x$~)A2&tqZNH=J>K<&4NGEW(@cSJ zva@i4Q$EU}XFP3ugfIXQsz$A-{cc&EW>t+=Q?<^X>f5(e?p#sU*j1s})v8)mYXxOr zMT_D}GhChM2xrTgSTfeKH7NxxtC=>diKfGQS}rr4-apZUJNGoa_mU%o(v26jX!uppLzCE z`s&v{psn7^`q3YHQMX^eq-=0A5_BpU&-j;q`WbKFqS~rf#`@-K$9i813ICNp^C1;W z{q=;l001BWNkl;Jqv)(?MZ+nYVG zxM2-(@L)Z~0YtJftj~o>oIs4Qb679ibxEM&`k^R;0gmuIocdVGvVFPn4Cq)e;%Oq8- zJLnyFP0H}_uC$~b7}c6s!5j>DktEz$Z+n6i_jP=DqPJguB@}Sn?qU=)b1em4)Y;$-IM%S9c#}6SVSyUfTzVkx z?^7lOX+G}h+LQNHDK&L{`;rrOH@6G==;MJc-D_Xb@P13b{EuJN5C6cS{`vDY{hObI zH75=dPT*2`rCNQcx9&Ez{k{vg0;_@X<*z&$0#1=l1*Z+dOroQZyY*Iz2}|u0M_QMl zr$o_~9TTk8GZh9g{&ycjl;To}6`>`pJ%$NBnUd1Z)~OyISM^u^#;HE@(JlSL2c^j@ zb!|zOa?IN!As{T>RNu=61a*+(SJ_m#mC5Eq7oeQo+b$^%@V&qpOEn0U4YziwBYk53c_+O_H zOU^wAc_0_$Jm<6IQZW`1gRW9Vxs{_7ACwX_uf%0dshKQm-k*>MflLYQgEC=kSO+LH z#!M`h1I%g@h#2#X!HtZk&# z%q8dheT6&-)XrMd<;sLn55^ zZa)kdtlaYH zhE6Fj>dGPq=gmjk`UUMwNCIt060j)~uw|7gTTGnsnfDLO>c2R92s?mr!PVj;-yTuC;GV`-}l}B^pCG~`NsDgd%p9= z6Z-1+ZtLfNIzlxagB}3g2P%P|aqmbL{>@*wt5;v{t5|4xp2@J+oAl~KJ>>;4OLg1P z?PR?w>-1<}zx3ZdR2i##Q&FQq{c%&3T3EQgAJ$!Yt!^iX3Ggb4<)tp|8W5-c@xJzN zy`;bXA69g!wykV_rvL2c=eC&2)qt>Zok}eZV7>_8@gyitM2?XZ^NPJkRL zo2JI6bOy$ft_3`E1{uv9B6<4C!Tc3Q1@if5$PU4-i4y`DibDu1ITFi^j`#b$Y<4FH ztYQP!tsGb(vY#kIfI_z+)8}Nco^n1 zFT)8Dvc`4&jP^K4M{f)x^8t@wxQY?4h%sFlK7N36HO`!@bYr`$*0QL1vIh7#)w#_| zQCB);wURN3MGr=rHG-v(N99bNWE=m()1x>FVk9e5-wZ{+RDV1*>l@5-tdF5}1r)Ee z)d>7QYdM;)jQ+T~LvF34)8X6(()(}hsN1CJ1&hEs#9B~I!ZBwnfm0PPiDsz`j=jXQ z+X5o#*SLra=M(Y&_O)mtjd<6R`uWn*6oA!rMOiVLYW{K8AW6t#k55l6z<=C(_#KuY ztamly(|HN+s;aO4)`#>9|J(P}tkJX-a_S>}_M=7p+0VAMKuBG{5f(Q0=~SN5Kls(Q ze&>ZZbYpKz)7e;$U%jKB`P6m&=9i`CUp`W++SXf#1O4=m-15D+|F8c}QCHec{lRxO zdh_7E{^Fl{zZ!)dec@kxOvCXXdeKU=mcH<4b^?C5>^`~OmU{-sl&@U1!+?3pH` zn!fm(&uTdSjs|05wvXu_{%%2sry~pb@$DbgKl`mO>8GBX>e=j?zVv$^)Zh8y%i3-n z=(8WWrC1<95@Q_R zgfseVtZ?a}gCw5;Z70f}!WK{#Mpkc18jj{h$xy+Ml{|&04?2en2f(fEA91QYlJRI7 zjch9o!@_I@6Ml%IW-C-wE{ZXpJNO~kZ1jDbXIYA0hlj#N9glV)PtbOvuuzn>a!qsa z%!yYS3p%Xq6t*CY0G63}EioPnbPP|mPi>?CMg>)fV44YkF&iAjVU?!IwNVf5xa=}` z3#@TybVIn|QztZV2 zGnfDZ`$napPAy33Ij@e#D`Cy@w_`(dp#Q(O5v|C`tk+&!Gz8 z+O6H1dJPT`>14bz8frLO>vV#bQq+y@nr`klZ8=Y7D>a%m4d!#*ef>;hP$w$r`fkI9 z03A{u5y|&FQTmZZXMvXW?$RecS|hpV-qm^G@v+PL?8h$~=uKFLq8L8*=?`Di zM<3rerj$4>!25EAI4?pcJ@?ctJ+?pBrLCqn0~_MjrKW!QuYEc!ob^&ScI*13|NO`N ze#ZZ^Km4RV_pzIfEz`jl7mdyG?33I2yMOI7iS%c!f9EHjFq>F>Q2Mie; zacMR;|DL$o(l7m|&uIe}b5Z(ppSxx9p2ceBLWaNbmp*JILVWPas~!FIfA^C*Jf3N{ zQ_+9_?|;;f!nEGH+|)1r)gScrZ|yhri~q@Uu}PLo{c9iJ)lYunk_r@}(El%y+c>TX z2Qc%&zJ`r093f$lV1?iWqoZ@>4RAkytw{c?pc#!=GT7rzC3q<;i+mPhA{$iU1~-~j zD-+NNR67B&Ln#+&SW9NVUDIMVH>}Zw_#{zH85-6&n;kEXf9Efcy`)wTTss?#?Gu%A zp_EaOR#SdXLItdKvsTqYODA_wK)}r~5O@;`hfU5JMQ9-`Wh`Wn9kx2b!V@=6rx?l} zi;>T`=)|Zpu7@&9#8Z40Mn2FO5dBvx0tt$;!J*=DKycj8v zCar+c#aMk2?w5FoIfS?-GD_DG_7ojzR?zO5|2ZIF$QN@0WhT}$ zBDT))gS_&>!UikNi)Z4q%mItQLBrU~)o4EKH}MQ0A#mm2^V(|F^xT!Y_Bs{yM{`@u zM{_?NC`qUT-; z@;Y&nl8l^$UXFs3Z&+bWs26>La62nRkOCdj>jW?vS2pH8*ARAoy`kBh%-Jf100=cfj-An?&n$RBo$0ZIg+;*A zWe}tamInuCwdv<$auF?D=e?~!tK{)OaJzIyz&f1L_|;0RWL}31a&CgT43ukFR&Z65 zRR-3Y1Hm%{T=>Gh^ckA}0ln?2y|Kq>@djQT{NO$}N$>$(W53rZB!Lqh4i1#ETh#{+ zwpb}Bn_$T-R0Zd}l;*{#LaWtCu7OR)4L#Qfc0mb$&XF++RI2Hb823hMZFSw$6uuFx zY~rH%3x&l4qL@%(B&hsiGE!MFN{%;0@-K`8)&%@-+4FUgELFS?UL^dAjGw<* z=?0#e`O2+pmwB`25@!lZd75SF)ElZ-uzrIjkTK?C;@Y`F_4xUZiJd~8iOu`v1D^Rv z#9WnFPb*f&2NRkVGeSmLHZ-!Z%Ei9p#I*s${WyKo{=`bQnaM9)a*r?&Kj%;?Sht{< zm|k+-R>X>2$8dm^9ESk+FR!ciWPEX7g)8O4mH$?Tcw#dXh8WG3?(0YLk616uHJGk- z@8p4+#FqDKy1L)?Apmp^#o21qbY-XQ1n0?Qse`krvgO8>@xfrOW;JlvOf%Lt+PGcw z5o4L7i3=eT;_!4d$$3MXjiSL3+w6UZuTtYwEC4q9V!hC^Ueji|P=(;TPxG>qPsC5W zt~ny(;(7fYvda0i!1ZeF>VrT13p#rBx3!+$W4&EUh)WgGI^G+mQ)yim1;2>lqCnJW zqv{$;%oEM$CtA(Uw4RK#81{91aH26?NG4=THyYzg%vW~X9vzN3D8`wV?Wm_DX#d?; z-qO=gT-SGBc~jS~Ueb-Lm%Sl9B!q>{!&;UoY2{RoEIQNr;NV2}9~|kqA9~i73X5yz zHd}0K^@l^9oSf@kifDc)Fl6Wf7Bz3mAo91 zaPC&jI2a$UE^A5bjO8NvL|Y$RT_9lTpsBd@JX#0YicF=eB>cPq6a31Gi}^))MPqM| zZ^gv9z1X&m@&?c+tjb6ucBv_6;GduLoxZhh?>fTMN+=&q(9i*w79| ztU=)LyS3`Ax}jshAn~yB7n>66ncui_5VQla@1(p&r(;*Cq9oZXJb>}Ig|w!`RQ>yS z79%rAtf6oSj3fUj7u)R7D1hGJC=V-bs7%+C7>82i{rpUYAmIVOCv=*xWvbJpcL)zL ze$G5BZFUx)on|Rk?dyV@4#UF#8GtS4lYH)(Xt%}3eVx$a-mT)a&S)q zBA+Dhi2X0I{K06O|hSBWQQ-7$H)>v+)-dgt4}DJ{pT1O(wFk#QkeObQc-ofxP_R(PVq2CH+fY;~s9ysy>pK;y%=G&y>p zY?^7>pJ_H(YBXGGI$dfog_!!n3S&5AnhTJzBcOy-OuApv-cHwvqvMmlF756T3DIyg zHkR*I`6F1cBb_{qogBlfz{h`kK1MTnc`fpUTu_^br8ro^o zLVT>#e&56;S1#|zh9$aZ%b}$4BoiB#$|)?)>(?&ZJ;UlfIqB=HKh)mNwtAhmKlAYT zM3d=EmoM#@r+TAI4^IXfji%b&>1unstt}b`RHKxaL!{ens@rW_5!}6Zs3#t~=FN6G z80qw+Z)6M%erzf$6jTIC$EL!{YX(Y#5m2 z2xS08s`250{bueTebKyu@x&U3RnL78?%blJ{2FWA2O_9~4MqnZ6^bn#&bFRGT7-hP z$LB*J8NG~i9h7@09}|AT!;PU~vn-UeLlExW7hxdAy3ryUqoe)s=HTqMi^mvIauL&| z0HoKcsZlQK^lWYmltV9|qj7!T%Em+}WruTon5M!T6UqnYGSAQYg>SrZVsEzEs9P_o zRSOrBFat`L`6Ka{pXHo2%nkf0w1uLY*~w+96bU0?yskFd+ivT|)h%sx8t!s(d^*&_ z)tT=Lm4Xo_g|&ddjo>cb=Lp%t4D4N_cgw&2ps0x)y_85VDvnn+!GSpK5S6 z(0DM`XafIglsEP#@b;dMIxGeOd7(3P#hH2dF?i3>Nna07`ugBg!EXU?YgVsmw_MgY zzx6$R=2IWnWIolmUwB#1e)ws-Nwr!_!_leky>p-yj`PsOG%Kz?PV|MJUk=m$RjjE2LBe*X`?r62qB zCtN{A<DG-a8V|>MzMR=zA#$qN_vf=DKeQsx{YkN3G);*hm>d|UFp?yxmz*@8Rz`fk%`36gmZ!Q!>i9tyhA8Z4AW?e$u^|FEyGzxlw3 zCUg#Sz@FGP_r=21e&Z=tboA>C-|CUUpMOhyn98JT*)AO}Z56Nu>pdsjZn7%M-0MatsU*f1oAms#U2Bs%Z_GPkEqfqiwE+ z(O|5T!BoR3Sj-I++iae93Hu37=8nU2aBKoBgl8|-gn9BYp=iM4a6K}GZH2d zm*Xq{yK-e$op#Gz5m3Ct;aH9OQil(Z+y#aPi&&UfF7N2||A)9Y54J5m&-$J{&u2b& zzC90WNiAzI5|U!DgeurL#zWzh%OrS6VpmdzfC;Hos4}5!Ob9kr`~egxOrdf@kSiDu z@_=PwOR}w@HA^k^c)RaBo@vi(?X~w#{hs&R=iY8f9XkbNb>Dl>u=m<)ee3<+@p+&3 z<;(i?XrkA@?jZ~N_V&6iT)3t$eCb6!_9%@jWEq?zvB!A&#I~M)@d`16F1&n2_nkju zA-H_?roFdko`1)deq_)yUG@XUA? zq&LVhFN=kSBbdabtxb3*g4(g$W3on}>5!t-Tn34im+GyPT8de1KV=Jl6}m%u=tH9wnd|1h zNWt;5X+HHeT45*e7Hoepr#q0;R}}5M!3nS3@{Mv{dfhDpq`^o>!F%GuWZ@CmZG)zRURPHc6RnKUQH zt|M?1Vm|lzuWDy|Q{VK)M|5=9w~|K4+0ir=kk{PaT+@?pdRzt89;=wAd{GjxlF3L& zV6iD^ihw-3s;@r#l7-}v2hTbM0@%OSXy|?Kd581GAAjnL`qn@7cC~8_z3Uxs@ESbz z>1XubZ+VOFoX_Gv+G|nF&p!LI_73|xdumHXHZ}mh+iB{thtIf!3&S*@O+Cc{+~oo) zIrI{Fu{zBFcr%23kbuLa7dE`e$oqm1ZaF0YZWIMU3W3}on}-4%|6;hBCd(mDO&e)U zFY&YsHX7#&{pZidi{m~x5CP`$wJGjRX&kYg5u8EH>BIBJOT!=FHG`ov7!=Msq8EY1 z5#>2IO-hiCzc#b_P$1#qHd?rGC=xzzsj0b?xuClj<==UVa^!yPEko(ZOUT8tX6}{X zdB>t3it3FhQq%p35jG{PkxVhM8l`SUjTuAa2}qKr1=>fOxF2ZL zHnp5FNFWq41_LZH2YKQJIO|bW?RKV0Jv{b?+Un2H5v&cVnzYIMuDgGoTB~RW12kJ| ztrHC!q!2&%+%*?rS!P(|Kv_Mo+tN<2p|jgvjV3cg+i1Gfwwv_eNsJB#^*K~8A{_=&cGEF`kpf2Cfx^FmHVQL;BLwFPQgvcV|nNE?-xz-ZHJ^ z%a^X{q5ID0sn2~yPd{_XUiJ3wrc-4mqJgOB%n7}C;j(eV-A+rFFI`i&+Y04Vuj+}% zAJiwG`m+Au4?d@EucLOmsrw%|YcIkyeyNppGMVbx=Px*aeCG5Cb=qy6KDntEU%KYp zZl}}I3l}bV#v7cg2;2Slowl{TcI}qa9_-=!?>ptqiS>0(lhCQz)DurUq~H3TkLxW@ zKBi7Lpm~ozbXK4F!gKok(=Tdcy{m4A&)hP+2*I#dPiF=;c?jt@UNE6v zlYYSP;QiuzuTVZ9P>P9jxs?PToDCU+y5!UkfSf^QZlyc47r)%&f#(GuN++YSL z0%EJDY>bzj1jfa#S3bGbcMt)+>rrYbV3srUzHr~PL-U772; zV4{s48+xMB;Z@a(T*YkDFE7tWnoke3%ttDQ`zrFOn+@`OqOPez57nr*wSVmk+PiaG z{r;h@?F|G(1=PjSDA%}HxDs#gJzWIX=o(-0za>v!?@if=g z_Ga>C%KDafy;+ml%!N-ju00GRAh5@AkZ*ka(TD8KuL>2XPi~7p1ji>&ZpUZSUOOuc z^yi&;;yYVC?QXBfP);63xul)-HEnge_L8BiBpiFsyWZkPgKU!7vq6sE_NK=SL8ILp zMMJm^_W=sSVJWS+crzyKp?F6)P7xzKmeuv6!12h*XR~=Y@Ypa89LJ$LG@WTkC^U(! zRx1jH+__WJX@Ui?hjegD%rWTD&JUSihBB48l6eW z#_*nrF+?DYbi&Y~j7gW-(*-R7*D_iiqgW-^T=(l%ik5#@h#B~%9(l;9gFpr_Z;;fYhD)< zBbUrMkx3$iIG@yNS5=;ayhuto9^xPAZ}#zX7xyC~ayxauN_2q`Bd(Xn}xQE;X6WV^-fVv*88;N25v!`rpyWd!pAQH8s}& zD^do#_1ex(~7&3&EU$J)8de768?_H5;k-ITr zGHa-v*EJeWwKyE9s2r)bxUL2}XjOoi9{H_#|Hx>M$h$@MboDD*R_fZj zbz5Kk!sqqrFJ9HngOTWnA<;iBmKrjV0Qf8ymJSr){;j@tHli9ys0l=eMgfN?0OUPQ zAgb{|rQj6?8rEoboa@3c7)OdYBwa+9jclzV%*X?>7ECA!SQ=Q~nL+g7d8|SyloxcM zJUAARK6-yyDtVJ&=pclz)j?Yz44DgM&`sj~n!eEjD^Ni;yzYbQD9Vj zO&*waum^?uVsk`zNQ-ahrOiCNjanzYvWYuoa#n9Ama50}c6~(zQs-TA$DHSP#nx6*W_|!5TEbK2er-5XLH1ZrV*{PO zxEmSKbY#oR-a-zusnZv$luO(znuxiJ6*U-qK#6LKb`O2T{j#B6!%=qO|K!e^y3LyU z!>Jt|bjitH%MB{9T2jy>?+rwhW~9l{MAgz#`-6#cG6A&w17U;h(0m*)OiG8t-0W^# zB{~ARDb1MPlMqDZl2FE2q)T_E#x`SXh$P5GL(Y#L!O)`HAiYiIi<_Lfh_k4a3_Pz; zS+7c2KSr+;A{vRohq>Q+B_4PGMSvzb;Ox1|5ON$1qWdOCIqn%=#jEq=No0e4cY{rb zV`W3a-HI;0bl?-_d7*y)NS}WCYS7?~AoiYXJX>my_FLHM!r3{#06c{46Kg6JP$A;E zu+gbt6Q0ymrBdp`O#r-C%878CyzX)t%F~++$k8lvq)`Hrc6Luh{&&IsOiii}VLI1_GABefjH#$p}}y4b52s(PEq1&l%?KIj4`7NaFu_i@x(>z zW=u7~L7$V>r0|%GE_c7$T&K=$Y46&Big`(`N;Ec5%xN?OJpddNqygN`+&9-)b^$FQ zOUK1vWDyKCxnz(*iFwVbk7=e3EN~bS8nQ}dwVQ3rY#Ag(@)|8mC33wWHRkSIC8zAq zqkaNkaUx$GVnOPlBdTq8$`Ns(=gPH;(Gjpl zlHP#}1&O91W}4?}^_n^ykgDSeNsXn{2b`E^%0o~4=db?j&S9qKhU35~n~4vHNV;$> zI8k64+~|=CD(T<|&X-_sb1r*PGUA8lgK^+*nt^yuM^mB+yyh@OYb_kKlE%~Mx!`N$ z?O-r7cAO>^W9b1-RHaUZJyy~LnCEDzy%B}J*E;YdT)+r#lvD;?Pe@BP9BJOUM^$>!3XB2Zd*JN$_*hqw_Qptl$Ll1eoT$c9_FQ|x$lFWPMho-o{O zlrZEh2rmi>VMM`UWKfVOZNfdqIHYqK?4m$&7 z0*(#4cCtV5qftz(QQ~v1EK>46XgS@_?X>`+-<@1hiLyb#{&dJ3Hsy> z2(NZ3@{uC(&ysh(f;6GDa`P|W-BB1di0rxK4WMx2NL|n{!q3P3P|(~97-r@b;A9yt zmyze@51uetz8ELPd|*-=q$ubEKpB&#hU|#c292iV#mOrIz2e}#PFeWxk|v2gk9~;( z_HWa?yy-NWHX{EU?a;^+3N46-r)-kk zFlQ0U$$6EgDw-V<(GlAT$fRoq4M#z&S&30G#yR^}#}Ovq;c;Wsxqdf4EhA0H8X$$7 zf91(z0DRqC2lCX6R6+VSPL4rN*LnPdSAD@bFrK{@w49N80)tG;G^*j`R$JXx-9@|8 zTOA#ZXvLQ>1FvaD%b(HA{ zvMfgsWwmf>omQf7ywoB4jOSb8UK#N58V3;=P)r0h=?^a?&w2?a{vJ^0^B11?7$Jby zjVfUb1nq^k&Q$ckiR za-gKBCL=#A6r92ozN(F;&jm*Vt69Z5vLPTKNt-o7`e@-qv9gwIDzLLnIDgA6jV2>| zvnXKz^u{|Tz`pM#DP-Qq1I6_qrGXOT8K8JVHIO$YR1G{Z0&nk^(e%}dp*OQdm@CeU zvLUy~HM1rx8ZwQ5a6a;q_UKp-o{2HBK%624!2nh646#fI~ZmNf^3K-4fEY5Uy6`oy(o^|q~rM*UEv*bh=@$X%lsDK*xB_hZ@! z1raS!Bkf-BecZTGs9BHew_!$!<-j8O&(82jkYTOJn=*|9rATyT4wdBLQgvS)JR4wYAPt=^fHty4o);uUye^b# z_+;E)Wmyelo4Urp!V(3d*zro4q*JRlY~)EVQ9wt*@yBT^=wr{#*M59Emp_LdagMi)$iE|mAj0e*V56Vi`f^$!gmTkQZYW=x$i zB`S>{L_Z~6x;fUU72P(OiQZW;pK2w#WOE95ZQ~ z>aftWx5jRqBBug*Jy(iBIJb@AimpfCxhR(#hZEg8V(`G+H4w@=$N#}86(7MijPSu= z`?QhS^G*lYTEFtH5fC=`Z+#)c)zxyTbW!D>`DO2VysG0P+yH+Y;&=R;yIkSFDmC^VExH7%hVMVaAUkp5^j1LB1M;&!1-$>s5x^ehv?QMoT@O$|sBzo%gZ zv86Etq2&+P089<##)Egh%bJCyMER562&2h^=l;B*XmD^;fFVfXG7p23B(IM9&1boD zg`iYW`ra`3P8KrmkJvNvu7;Ah zaGJx|7D|ENk)P#Q>+I^*jXS#k!TWWz`=EaNCOje`eCZ?Od%rsVTJ1}I&tY$pXXHyv z>8Nm0L$v*xcrAag-pALqW=Cfpe!@lN(f+>22ym~{ajyA#6qv}>LIKMAP*}9gW1!G; zmT$a2yj`%{&{MJ&qyQk)!MpS`!E1`=!}%WSyHZV2p+fc<%h1kL8v)H~;cJGu|abvx+<@`uUy7V6e_e5Do*c z$tH!74p>3U9txZ(*_K6$mg!+9x#3w@wnN~25%wEY)@UwW9Yut=)~@OP6CD7h9<{Z1 zFw)`CSfAV*nn4aF4wD=!&}{^XKRImV!B9okf<_&vUSW}21jj}^U+L^-RXb}HX8^A6 zPtCcJnbSIK{d%jU)7`jt?1UReQARVPxL1mk5C}+7-5v@~;fhn)-t1D^>~;0l#~#sV zpL@X%i(=Z>JMfDBy&U)Mpmahji1hWFT4lZI4d-J#Qm3J%2$_>NX;={zVkVwIVgxA& zmN_+&xM{5t#R7+WK{CT6XbVy*RB=8$3VycoM!_MoA!%17Ps=rVGs2BPIEH{AsIDd_ z?t|sbd1$%Qr#X1eb$6&@(0Se{L!L9n z9S0(ukNBD8Jx%gnVadJsh?pr_E@s9O6VxMrAVrY5s2R{I&6+c@gES4bmT(k^0K;%C z&D6#?BxWUY_?jsev);UXw$$ios%1fkrj(mgKgPN7dd^MM5XFIb#9-vnKkUO%QPTAT zzz7Sq>OuH#@*qd-xvt$AIh{ee5{HNbpTZeQ_FR?ELK8=Qfet~OE%g1JdP~d0fuAMH znU{g8*yvVuI4X3xKhtP!SNnU{TzA;$R!nk__f3J%N+0igmbfqc>EGzDl)FSB+f7Ux z0E;-haaC`9%Nx{O4E2XEtVRHTqZ9py{rT(KWxeYiPwM=mZQZmVe4AARnoFbqY*ongL=UP!OObLK$6 zQGSH(2p=IU%8ak^R=FNFbQ%1*4D=;&Q2NMF}IHp*naoxLPUS zh!R@PG8ZMe4(`dD&0bb`PAi@TybN;U;rWn8i7=FF_Ro!6Nj>^x=-Jp@YcX?CrrloU zk;9XklPk6IkC|!|4?(WbA;yX<%Xc|55MEFo5I_}&dpi5%3H8cjeg5iFPk-r45{mHO z$AK>TWB3J|z#`xDxZd#g9ldGpn_SWxH*Ge%a3xr>vW=8V`! z^;-2f4HO?1e_uT+G#^e~RNLxRwb80*3W6)gaL_b@(ZeZ`O4v1H*`tHA25hcg(tLWC zCK&V=2jc~Kj(f|6HoWGf1{wHKR=!whIIEcIp;0QdwOd!Oc~Y~zeH)59!$K1Z@tlCD zw<2{KubO6k?@f5)HJWZ=1^3EAEK<>r*PYmIYj)+1ZhY$FddD|Cq@8+AjV>)$;e#Yv z0DtdrDAm*Y;|GiR)RQxs$AtP7jRt)++juWkfmq;N2;1)c z=XCR{zpr+yp^Y{$FE$MpKa?`VBw@ls_z<+P;*8x1%Zxw}W^#meo!j~&^!F+?&PRBN zBE$RRz*FH^<<)o(>3cj7AZ#c({`kF>NO!P_P}Yzi#LTt8At!lusslkKZ1ePGZ%}aK zY_dFgHUWd;^HJ_7;lSZ@-*Z)JDDlYmvdKAkokLsaM8h-UH{KM&~lj zvZCU|>6C_voU%W}mlM3*d{6$g1svmES>kfylKht1J+g!xE|z0;dTZ%)VaIJhS6jAzezxi=J<(=~1%CKVH}U|+B{ zc-8j8@x-yy)Ga(ACFMesOk%u|VG3P18q_?H731VnREojDTP5)D$GFxJY-$1#?!~84+%zZxFD}&7I?4(KsnrZ$?=eP_2E ze!z)+ z8eKz~;(}iKkk# z?BKRD3=i$LK)bwwa)-ve*+vD0?gj(&Hl1B7p5M7sJJltHr@+h-Ss;{P#4F8`9(iI% zD&5gbU%li4GGm2S3O^6tA3uGR0m_vlAJ;S+XZM0{ULi}oW@qP=U&~*3MB{$n*APFX z@S1q2YZy+rOhPGN_|zvof9jFfJuC`CC<~0Mi@l_hc=mXb&g<7rbhKRJ71u30?Jg~c zq?;m-F6aO37+R58fm9iW3fv5Agc3u6H0qJEAod4!5LjMPZvl(rXUGtW(`%Y?xU5S=SL}-v$)NaCB*yPi(ohBP z+yg$BP!klQQ^N-cC7^eln|txUs1u^kWYqbZ`-iI+0S_ zH~M4E1|vr7Hv1kPatv zwfZ9)=lf68b$c+2sUsdZUD63CKr1EP|6oH^PKX?usmk)m%CSkyDtp#cRK2bDB63wi zk*QXl>w)_^=0_m;xGaGni2NRU7jy#N7asU4*bJL=3vMVZzJ~hKbL8*@ z68)#MhVz9RJZ$Y}lc1L*Peg8xH8LEiPytO}YM5XHaiGu< z>}{rEP!!El_{18`fl1-ngtE0q#7EC)P8h4vUbBKIW>X^$P{;^1DGuI)*TxNV9_O2B z?S&6yv2-<^=gG4H89?=%uU8w0Yo8a<+HG!JI4g>Yih?vsHRZ+wa%ZG~&&7S0O?1xZ z;-zyPJaN1m56HE0i^3uvQ;eOD4cVwy^!Sq}^uS|WZxqES+Hn0C!{dYECpmUwebY!G zhq=j1OAZ965%PkS3Zz)11Ar@*)LUD3ngM0RvnZE4E)?PMf!aagz&FCts&zC4%H-&Y z2!QZsVW=H;!8J@g#U@@d=cYae*R-JrX0~QF(zo#xumIJB>kfSxZqE7o0|3v18e< z>{UE>Hzz0AV-L)73ee@K3#BNGeZn=Snz7*sNCb9{6yvdY+#@D_fYdJR6qR(nKhv@b zNmHOZDBA6hW_s@W*qwPR_BQtSB*)011InTR*lyx*1x6hNGvni&<4*MvoXm5(O*JbG z{m8dG>W<@!*ALXEE0A3F3|L*E#co~sWK+A1p}L)l_J@TIhB031>fy{I-FBz$=sOno zum437a+H{FKHa#L6J7$Np8{bcI&W@NB_4hZRNH%z>>rmyPgH6^=X`NCrFw>~!13ln~bN%&jSG;e*5_ z1hQPEcfV}z0u&QTeGUYP2aIwBvV*tav$%#idMAuxalEssa&T$4vZZCflp4* zr800d;AOCP)mj!Xvz|MB5S@i9fkv6I;n*N}0c@W6tPo?4YONSEUpt=Qi>Cs!RRH|? zd=!oStO_ZDiWZ)i7uFQ-6QShZR>s14L?B#V@7Q!Sitw=O^_F=r>a~_8lYu6LwoEBc zg{9Rfc)T-n8L;GRI2VnUn&&e|Pn?@|Wy6{&%vJlq(lRlbunj}T5LDn^c#AYdKp#eH z_G-$pjZ3wnA#I$?!Z5962_yq*C_FM8fUKCS*Px85Cunb2FACT&W+!V^&(fAyxt^-JXa1oJSb)c)4E5TnS%jE<@&5> zsgIDhE3s$TZ?tMB_?j8rg8v$s$RQs~ks=Ngx#{D`kJ?8XWa>6&PG+x}Ts4^IsFUy^ zyq9NceUVTp>_J~M(&+~l?dbCuAETDZt(Y2Jw=(1!^DG7w-~l%~b**i7G|Kihg(84` z=rb~`Ii(-d_h0WH_B`-67v_le$gd|@T(cg|BPT@1R~s~|M2;H1Zs2xVO3%^v`q^K9UX{tnddj|;C&!mm$|@@QOI^M_(Eb9n70(IBHJWVb5QNE~ z-O64Yr|b{L5aIRafeodFmFMBhD#(ikDg%Ijg@~;Td@F$bv?L;&Y)VYDnf{Y?sibBK zWE_XeW6aGmWsal>`v9z`@QQ2UYYUoNJ}I%!RfjBOlG#f@NNFPmGs)L1I{)G60KqYa z(*j9hj488JwO3Y#(=Aj6K1ZRQ>M;tAG=VKrRCiIx$dsHT;u6TH8!IQPcdeUwPJoA%AI2+53DQe zkK=$b#E?VmQ>HICeFln`t>OK~6XN<(sttMe6z!B}4kS=acm~aYv9ps)#*)Xs(wo-+ZNZ|=OQrePhs&T)|Ssf82OT>(}ji;TI83S?j31RFqMd?qphvdRJ9#CpK5BC3Kd5q zF;|x7Zdjp1IfRFHJr)f7TzRH~!d+#$$^>|Ts&!aAyMW5Uc!{A3SZmBrW0|J_>Z#U8 zUJCV(_eWnjg2X!3Dv{4_)xiUowV+th4bOTpiDCiq={z$?0<95eXl!BOG$A^k*DR*EK=oK`?Y-NiYGjbJdM z0uKz46k5|!jqj0k0nY{_!F;(y5RI`11;P47Q8*$O;=NX-X+y+b!Ehm`Q*!2XBHB|8 ztT##&1Zq!FQ zy;;>J)SY1UmvqxH(=eiFujw4U5EvRRIqDiq4Hqr-vWXhCxekX*9ZjSg`%Fm!UI!Nj z=|gF6SkghMsp`?lkhl};Ww(zHb~bf%Ks}?Z@_J1-vZhLh(!=Lqo+~RWqE-K)(#Bm+ zd24g+u0_M3E#|6D`YLs>Dn!w22$QTdoXSAyuTlh2q{hRG?mj*XLB#r-%fhJ<1duSW=F3I+ zumn_G2{Sv1A9tmcxOu$LS`AYA5L7;o&4!YXjh2AohPH)g-0rj;5@xeP^=3ek9L^;{ z#~VSa@v5-I9Gn-0yYe`>=Bmd~5pqWHh+G(z{0LQJ4ekAsav@ho&;JCGM(C;X>>bc@JOQ^X+j!KJBP=G9lvjo|a3(xQIF5M^W!Dhqsy1OagZMl5>;$mhc-J;E zsUpADj;MyVSkhXsZ273xR3j|6!b!@-Dunxr_IP%?4TbZIGaE3xZxkvi9OQzg9i9o( zn@O*cwt{B?>PGIr8bI3m}B$4_IvL1U$>gX)mx8L}rG^f&AbW zm!1{_RVR{eC&{vom5HJ*>uBd8A#>0V_;j%|Lg6=fKIjhDMi$CIU6jk}FkF;$4Fg)u z`C(D=^BCD+qVd1}!M;KXUpdHi^&lb^wj+M}Rs?O|Gbu=vW+)-Woqg=gu02dF&bDdn@(!90MMs;iwqnrIg5B1s_mZ^=E zbz-Zn3zx_G%8P~S4>ombt*-BR@<|P5&8l0NR^A)A*=oWFuR!AnKO2dEvr(?Bv{bvBJl!mYan2@V z7x>`)`C)FKgcFNymP2_uXBt* z;PY3Cne%gZLf1SaSeV}n3x7?V1TMsPS;(lm$eGAUwSi#4{AqbN~Vg%iTkyIh!X z>i8MeE1J{(OFqq%0Sv{hDoZW?Tz{jD$4~RkLK$8e1v|Hw&(vvlOd@akO;QP^YD_Ol z_r8K$;zVFXQS6gpLJ3tMJQ|w>%eR;0hI=Mu-tzc461@Rdw{j z`lISP&8B%4c$OHjg*(|GbIxpK>)lO9LKp+25QWUazxdajm!n{xk?yP4G#Cynmvt!V z{QM)GgiQKjIf9El$#V{sivndoPGhRMVV#lAj0iBC18$oLgW;uaXaXXb#XP}A8~iu; z-{2*2Ez`wmo<(LO=;+6-<5GJKlte{yPrQME$;o)jY^TxIKCD&W-~bZGt@j!wZTFn$ zR)4xMY69JcoMz<_?^Ixv))NnPbab@PrCSTlw;TGG&p)rz z%{rcSNgL}BUB6N#BLavz>53}3;*_F5%h^+Pfg>4c66A>@k+a}gBM`7q0juNTLukV4 z;VHBmZO_MYYp~%~B`q=<9v~2i%4@Sk=onKexDN8YYusaAl85LcyYJ zDT<)n=nCU|6bBw3NDJ11JU0qCyyWoAyh?uZtjk>OF_J@#z-kSFB>^OJaifta?mj3 z#21CKqg$#ICbrhJWUdoy4tGPR8-RU^WKJ`YuUyy*#w*6?bRY*G%{;1!wMULn{-iwc z*!WR|^Cjh3q;pV|jvO!+ZoDWN5@qkrQ?D^!!6!yuv6)gl6lOewkCUc69c1h%B-WA0 z#NDTOZ+^DHPPX0dYGmq2x-)C`-hs(c1ZFx1sUHr$$0)X%VZ2Ejv^sb!Q9$K2D|wuZ zsn=$t&kQ=bz2=fD`p8ayl};#5(Q@>1DF@B3`<~|gRGtct2GjdQMw&c ziU2Ru#(q9?E|lmHV?#7&Z=0Ee)tJ@if^>SlRRC?mq)dn^R|PZ_r6awv&%v@*LDVdA z)$411tqY;>vBVM?tBsN6S~1}8Cxc!h$|7P0QpkQ_&!bupTk_aJyBZBT(7dunlTqe~ zq}6U{bGxluw{lHJ5mnfrrwb2cihtrY=P&MqgNY&KdbB}b+=s@N*Oj%^t823tQ3%g; zWEdQ_sHAqQq@9h1mzBM}(WL`Y`mGlWJ-S)Z;kcx$^M;=6mh}K#zNMxv?PuCr@91bS zcCmTXtZQ?Tsak1id!wnRk6`yJY1Gf1)@U@D6tvLMQ0mlcdhdx2!&qyYjt0&lojbj* z0ZBM2*lJkzi3(86_L7L}ORFS)e$`fia9xf?}0%U;UWe8?f^J(BI z`5pIzA|a;+juRySP#%ShvT_O|dCaI14vJ5_ZaI$-*x3YoudB~tLj?&1ZLtV)6$Lh( zYf*tw3Q$oIWHA`fTEpHom1{N%9x5pYLT)gw`FyMzl#Hu6ZM9a+QcGm~*b`uK3p}hP z+{zX2`|@(3R&UeAp$Q{{D887<~VnXsn2f`)VxZ@wvoKV6u1q2(rye<9 zHm{Wcyuv1nhu8;WBO4+hM-c7|M?>Em*-ngDk&*8Yu89nHM-g$5+QeH!fMKR3%{`qI zY62&#LgItBN?4zZ4n$sGuGcgLFzmI*Q=}1rMumn4_YS8cwHgc(E~%7q-5`Wf8oXyV z!$T&5tE*bBX)+$D-Pv$UFgLOURpRbWAb!Zi!t0Lln}R`heW~P>Ny7x@F>sZy*`pkM z7JsG`i3|2XC6F+5!69qzP9+rt+amH+QifAxlmIA~fTEE{M;7yC3{z$Qp**X#sCQIK zbt?*7OOPr4>?$=PigBSZQ3`m?MLr513tUknEFf;@2?dhGpKeHOV36l|KlTs!gG$vo z<&x8s6;I*7n1Ewu&B)c`AlWE;S!wKmaQW&&0xSD+a!oXb@Q}S9Rx3S$nspnyhWc57YTx z>%<5X4|H`TRGPo_=4{n9C$E86)v>5aF?X7(s?cnIpjxkCu)P>)meMb4TU|Z2wx_Lb zcwV$%BE<06@*+lfqtx)eP=ugEs;X)PPpdf?7}J7MjZ}lN%Y40JYvW;~)FJ=o!MZsj z;BM~eFNX(&vbHz4xg;_l&Zn6+;1`{tT^}T@%3P(r&Coh4#s6iCmPpdLq$W(Y_1#E zN4os{k%rZt7AcR*&SHvP@M&_zd~FR(mN%}Ahmj69IE8cMpD<2oJ`MMc$OV|@Vlq>8 zqZ!RWgOMSQ5$Pp%e4?+-4Lw}DV>(3&RUit0D{@aL8Vn35f>o~GeA5szcsj+QU&95U zbn#Nhqfsc)FA1jX+2ZBj8r07UnxI>QA1LX6mm6;`B zM&vw?5nQd-nhi09J+7B1#PUY&IpxPmp^(eY=eZ!>pN>f>0kfpo9=LVy0YgV4m+brZ z`oa_x8l{wQCtA-~??A5%<7G=|ov_q;IPb#I6gKY8@*2|c>8 zre|)~bbhwb875Mslo&$k1{OjxTYs)U&aq;(;(;RAK(r7b9=uT(?u?6K8QyRFJOBW^ zg(4b?pOgcigF@!s9GbC#ljlh4g*@Ntcf1EhZpc`=9f~XbjNCNg5`{jVmW!3?yp3i< zr8HitRfoB4h2|g>iBadIZSdIm3?MRi??ec!0j-`i4b&1+fL{ReFU`0fAY_H+Gjhl@ zKoE|{z2nh0+C)!bw4js3izK|KNXIP%>IC)-lzkSwzSJHJWdt!(^=4d7GeM3{4wdJ@ zE!@7A>Gt(po%>Gf^UvSbVo825@}aMmlvg}`3(VbDyjrYE2dSau9vSkNiK-=%bgN&o zUeac#qbD~ubYZWet=2+2E#eUhfaF!l)3OF(bcmXaqqdVl+c9*ZT~#X)UDb(7$f?$% zVA!lToH_wU#(JZ0QBs@`8NmRWHLyfYB*?9Jc2J7gGiL0Q+r>$tu+ALDp(Dk<@$cuKyC_2JH$1+jJEM|zI}i%7StDezVM(MY=qhxwp;L1R zwnKrVnEkrs+1e-a^XK{Ic`dx6)w^5o%~h|OVWmOX6lDlogS zy_KAxk3t6<#^?ajP^k-&^*|wWZ(I{TDjS=D09i4xN9UGm)&?(`6~_~I^b!dxcguk; z7?1s48;Q}>9u(_!`_5RGU+SxQa$6ty>UC}Ip49u^_h)qH)}7TYtKNXmcU5H$1$F$( zSAD^{Vcb@Sl?e|$9dKu(q*lk)_LjdK^!xhQM}Ak&e)%g}e&%Vt^R1^f$jUm=oqK#d zUO&$rS)hTy#-7|e6q>9J&m%Qh->R|s0Rh#ewQx32=qOK|xyA-{oQ9`XlP0`+ zyRSR@Q{CR129BO*J+Et#4b&>n)ofQhp{Cbq=)`8zU7pfzVU+uQGY0H1|Nl z$#|;hG+qfaGj#B7q%t=Gb0c`kWI=}0sj{sH^?RRv{&-RDU5o$NUqgHR>E|wc6TI`u z9gSyYbs#3kNT*gzhc4vx+@>0#RI3&3-3Sa~gU}vtSaNW@*8)P3E>amrNL1#|P2=TQ z4B=a5gOIOGiYq)-AW-~Is1`XRuF0%d6t@=~0BkSTP%qBHP04&(R9MU^)PoY-&*6 zPZ1`<^zm?P<-*9JVmwjPorRzvJ8W>8C!WXP^0!-xGh~<=ykGzx zojXwZiJq3gGz+6RY=rGiqmV;UQ+ptVi$_Iqnxd?q51ZSHDtNZ}Fz82*i{~ii zEO^X4Kox`%#W;#;_Ta;a(d>gUFe=I^k%sFZL{7W`9vq54E85BuQ@Uk%fw(oseYlDjIfpf*6vc zQ4CZjWetVqcry2dko}{9*Nt_iMV|ws!_?_l9GnP#2|V3eG`KJcD4Q&tis-hR>U65E zCDEistNM+bI1JIP2O_FbE4v7f1b`r-QKX(GuoR0-lUYeGT@9y+rZoHkZkMkc8mQXA z6OVcc-t8jKb>rqt`~BSOaB8QnlbcO#?lg3J@3qnwgx<_o10c^zQ82-{@eI&9bnb~z zY^B7dzxX5nwSMsz-X9YcUa>O&VZOoE+0v}6F{6%d^|dHAHG>4+n1QXt-Rc)>;q1o8tV&|>uj>Jj`nA&yDKyhW30(4;D~&o#HdL078!)= zm-qF74=nXP-}|3CmGFrV{+7e=!Zn6qFC&G3*UDORP=j9~uvZ+hQN2_mggm{g#ZM zKk_anJ3cQS+R`okz_;SF%WxZOskY}z-c_)4x!$C&(8^{G3Vp}4ypkU#d&?q);XcHMn#Q0g#Z8`07*naRK1E|mK%;|TI=B5S9NuXi@I#pfY8|$#2%Pgwg*klqo)YVNM|9iaPMrcLi+hJPdTaI5R z>3x6hJM=pr{Gi_Zp7&}1GgGahb_XWvObC1m7-fnQ> zy=VHPe{I`DPL#awD(|p*yYsmr%*UJGiWw3Y>gH^8s?fl05LWV~Y_`amded2{Q;-NU zAJ80;_e+B34nYV-LIH6dgvuNy5K1mT;TR#_#zIHU(ZZ zVI$BzEHoYpe+cqm_i7hBMnhX$mejn}aoEHo)1xh{#v`SF{J`{O-Udy_1 zWO-j7`{+mY;^#i8ceiIo`k-tX^T#bS#)+$Et{!i}donD188iCG17i5VR|8!nT&x1i zl(fEO=UmL{J30#a<@G?XQOML4cQ&NX;g|F;{@IaXe!eLFLgq|fs>1i<{evwfa&!Vc7SMUj zyKTwHA_}Hn4*|zOue@T*33+V$aMWHxvGcvdNiKx~*ECnJ+e~uf%k!E{v)mo5~N*VP4f&7`1O+hR_9OQcW>VeTzXHPY>y;WDM$sEQ& zlVP-5ZQ!W5AAlSmHwsSr&cLYtV{gcw2W<2z(+*g}O_+nAO@k-<0?Ie@|C0-O~T~SARskjZf+){`QBoarTWmy!z$X zU1?L^v(A5vFX7jHRmj4-Q7nLu@MxS%4QO9%YknOH5D$i9z6c?9K?fmB2g(u2v6A(a zVm1fXoUk2l7%w#-dL@N-6Jadxi}Tovu;&`ekIg}DnT_G97@rR`F7aZZ0Pq~xWEcm2 z4yX|?itpW!GN-@;%m_3GN<9rhrHvgTq-Gc@QVMW6;2Cp1yDdB|ufY;!QC73j&~yan2VIMi z0tf|Qw`#TIR=g{ZmI!xqJAOrad^nJ{Plwp>DYR9S_M>B*K%+{CN+eW3_`Xmhy4yv+ z2uhv6k4=JD@E)iZ_&_UtroQljchmRB*M#9jLD>kxss}2B6a&nGcx!InKp)Ye$NfUC z1aAqPBEh#o?Z${2eukAs(NarjG;BDL7P^C1CT}J0BX#sFG7;nxwSG^r=>o^OnMW@x! zX0L7RKT+h)c2kYorq|n%61plyM{)9`yR5%fTMPH2Fy?rzSJvLa*pdEZGI!dc*(hl+ z$u+n#Gc0a*GmtjpG3iPQaO`c27&9qZi(qh^Of#+Z8hY%3jxqX|t_IcTQ9sw?53O6_ zKKIg*`h&SWVMxPV0$-4JVp_~XBO}a8>a91d^w9y_IoK`DvQ)w6&X6!}io6j`3{7&L zK`?{_uqQoS0{-Phamd>a5BK%P*S}t8PoLFa_}=f)a4^vOKk%(%%S0k~&}MEtZzUtd;vNW-YtA7z+ZT0s=VVmOxkijHn`1!> zWk@Y!hX{F5l59$pzmWiDOA9RbXdM0h9VU#R^-`G4)Md6cirL$H4y@MaL*VN3Q`;VN=uGm5rrY zpBl;1@Ft>o!ceHVx#dnn${3Oh9c*fHz?N|?`~rRyK+L#~T4k<{-3^WUjH?O`7p|E< z?1?;w0DU#3yX@kS3qUn6&xP>x;K z-1zbI95G%LvA9m6HGA4TA1tAZyU9=>1w>p)g&_3EEU))2fq?)s0sg_}J zL}g{QFw$lA8p9@*Zd{o&Vhxxad=&XyBeqKcM{-4-HuoIP-fXti-)~<-gBxy`j_5ODZH|OHWxVEb}wi?5vK0i zL}wm)Mj!iwbNYqf=^9gxBi=VO9st{LO>}bhg_A~p<3M+^s66U=-c1@pvhA>kMnKh^WeGgV9kXpwOji8 z|L14)KmX7pYOTMZU;cMXz4y&$tRQ(00u3Jr|KdIHFJ1}Cz@APDdl81t+8xcZbrnTj z)p}nW+n4n#A71J`Z#m=5VFUtewF+_Qu*4%@v4J_Vh_IN?VUwU>5Jr?X8N!kmu=7~+b1{F&s6fJ2A zHZnmC>x}XR77vsTr`EO{uemKX@Gi?G_4_~&!-K?$=%(Z3Z;6dyt)^R9g-iwk4 zb>I&n#3$E?XYWWZb~&6Z`4r_AG>^eP*fdELN}*%e;L_0vd3nx7Dud$HiZ_E%@{uYd z9Tm^nYZ7}q^0?-wz++`HIj}_B1`6$X=Wr)SbcnHc8YRy^-i~#jrr}+Ggw(<%-DP`Ch)! zU#Ctqb@D{XGbQs0pR=%hZ1iddFN~*!d6ZrBrs)QSJe^yabFbA(7-AYeh>R)z)oZLP z4n#oeX!~ZJHa6?d8~67z*RIx@bTkLg2_jJ^-Bc^9Lwc=R)?hT(v~=8kVSKfaKJd|Xedi}H>ASzJX~px`|Hfa|rOVfJ z`N~y2^@V-C{jHDb_3h8-XMgTD_1FH|UsbC%)%!nqUUyD^r>;HwOVapbR;yndlf3%F zUgLYv6^0Md{l+F_f^f9D{>(32(U1MP*XecV+q$|JoC~%3RGscb`LwIf+MdA73=hv( z30Q#W3ff@U;Y_#s6aDoccw0yo9wN~~`;MyhBVTtmejNL*ixi>s zd;NwM^P2hxTUyq-DMuHI;tODM7f zv7zx`*BY*}I8dWGR*`L}x3Q;U*3z)QESK`WtjYH(3xndUZjq>PqkBIJ4D{iBGdsd)tmT+}22R>%2yodt>YY7*9# zl?`&IlNvpW>@kT1Zw}=cq(QLZRW;3MTc3NV1M5HvfB+by-D!6;E74gOjs{RMlyR*L zk2DzcJPLk%{BjxHl6ByH!93>_237z_8Z!f7Oa@P!s5vowDA7eiHaVd~T8nfvu^@7&1`1R*Xbladyb6E zv}h!YW=Z_ozh1t4q{aT&MucuX3UZ`>_6LRW!kZgSZ4)^fF|>3(7-#j`?Mw&#g=#o= z5MwnXr3WEVd1I;J7+#j8js^=;bmogf&%QhihhYx&ENQ#4hD^<->7`lHTCZjfn^r4| zei(q;2UAV2<$5d8Dwoe94h}}Dfqi3xL5sPlsxq7gD?i8!9y&W?A-nyS!LPk{{iXl@ zH}xyO5!0<-xU{do`}coJFT8X?-A+?aeeQXEp{3D0S6$({l4G*@ozu(X={+#rVw+z*8l|4>;yG>qqu9N4UQC@jLH*eRq zH@>2cvmc8{s8rU;2R^PvxvYPtgC z_Snn%&Ucu`EeYbQRXY{+2Mo=%^CR)hHq+9&t5{j~O`&$;ku zkINnR3*(_7fq^i;gf??)CmRgxaMjAhO)#$PQ)sIS@}^=mHb({ub8s*)ag#kM@~$4@ zh^GZ{(OvxU>VacWInJDycFsxLXX1MbdrS+%ONOZtWwg?3Xk~Dwx9*_)APh%IMwExQ zy|W{Aw!<@CMK;JWN_qyL53hZ7j?xN+mS^@t&3gq6&IX%}rpiYnrz1jH!m$8ahe5nx z!E?9if^9_}hm(boKg3w{K5%2JM zN>;SHL9Eptmkx2W?f=Tc6z3sZ$-(kKh5rrSahTrXD(9)5)!xPHeRF=Et}6 zt#3c2_q_d#-uTFt+Kr~`BjLUg)d*!2Y&T4 z`kVjN1NyVy^@IA!AAf`1{CG_dKK3rDc#AZDU3jU!7(B4>!d~$~ul3Cmo&-`Cv^UP( zhKvyGU4FCv#V?VVysDEAepZ#{EuV!hsG_Lo2Y>QV|MK4+>BScwQMFp=1Ap-QYWJ?F zR4(+ppM72roFAyHu1=l1s1JSax?0`KDwT8n#LtfPYag5FaPJ8X#<^#LapHgUOJB5N z$VNMQ=0*DIYo03bzx?x0-*fdVk02^b|MXYBoVYM1y14g@He09Es;!&*qSNYVk)P7@ z7fWh4tLk)e{exfpiXl+>WLvXYMgRAQGre?iO+}jW@bka4)*9^l!iTS*IoV<&XaKo<8uKg`WD{jz+U<`tWD2`n<60Wwf;#0YX8i;Zam5n_8pm zYvp&KIt-5jH3Av{+RxF@O2HbFaqGRF1(?snqnk0hhy+~r7W2#=YR4Sc|`^pSI= z6&P=fKS0xHPj5HdTJNrTeQ8GNb$b3eN*l-}#h(5_Uz5?qp6GZmJ~n2JX4A}Rq#6j_ zJDs+9hr{#5Yo1xLQk-?_s1AQaOYK_QL`-TR?Ef$17eoKWhVovO9zXZ+)jbk>ReS9SX~ zyvJ}^oaoiG)v2gOdX3sdwp6!HBvDqsztFAQb6vR^>5Fy;dfK{bm8RA@6dp_JG-`V6 zzOFer_U=pt{%Cg{uOKf9Ze!2S2Ev z`q|&szq)ck``4d|*IW_9YV>xrf4HS)!nTz!G-D`5L z5nLOGQ7K`R_?BEPuLLPU`ho*RNm_S3&C{I@8DCXWYptTrMorzFrg;N+Z=+7}Xs(S- zyk@-4x;o_e4swl-D6mj8EUVq4;b!jig+u@3nOh%CxPrJ|jL!b$q1GO($8;Ntt}x?u zJ622}6CB2q9sp6}LT>IHt(7sT2%c}bYK2Iu2XEPFi$us(CqgB+JC3=Egywt(o*@l8 zZK z6Zeotqd;)@{GdE?lqy(#_`+l3<1xE?lr&AE)`S|j4)%)z9-x4E6bNZ8^8FDYq{%Cs z2SrUjwpr^O=fN{za3i?4@vh4{bKknASx^1Fp(cZ=u3SDmrXyXYTX|A&S3q+1jSfin z;YqJF%35nx)a^84h-@zPM|07kjKbboCmJd=%mUo7(WBCYQD?eKpOV>U9sm z$#T5RtL46XTUa$?Ln&(1BqQW1cmHh@55D4n;%}g@{{GKtXKPOtjzwtBrfggIG{`7Zzhj!oaU0T-e)3SOVB&h$q z;v@cFz9Dgb`oS%=*Bjmh2vcu;;!QwK?kx{(>1_|4Rew;^`#*HScTXWJ_8{KMO!ekK zm#(&S=~`3Un^VCJ@bKCD_3-KY_05kxuAlrb->Rb6(EaBIdg4I<>CAc?dEOgd((0%+ zZfNhIssG|{Ue^ad8vMq?35Bw@6&kN&^Th^@caah}wS7*N>D%=Szp|lWaZ$hahZoi8 zT-B{Rb^Y+)zO4^_EI4~dQ;6wnG3Kfixl?w73ry)Ero&C0Iyuq^Cp{`tS z>u`Km86tSz_+X7oWlgh*iB^z08if8I;@$+x((|nI``>-PxAyL;-gl{`mbKfKkZo*Z zr3dNtP_hYDwKv?|WBu zRo8O&d%y2)Ilt%mZgtrfHss`-`TA5>)vbHK<$a&`d7tI~{2$18cn@X4gdTV=To}bl z(aN9UL$E9ktBwYs*{srqf-;t|1N#}l77dBQ24|vYaZcM%rlw5*4H$w_&a)BtLtq$` z`7;(6U8nkl4xk1lfihHesbyAXI_nz(Ik5FLk0ZCLp3ItB$ce9sxs+d-V8auH z)`f^lEYmqWDPPk3o+(Z5DjNksHj|BbCfurH-fT=FbOOaR+$81TRH9*J=b~6T8+sw1 zS1#+Jx}>3g#^DfjwwE)zvVto(G|QJ*Je(;gVg81^pp+RuT>dZ&9AQI(409hWH&m#w z8G4{htzOHLV|WkfROW(Q0H}^MeFSkwqUR;I#I*<|kT)3T40ui|F)ir{0)>Jgo;3sa z2OE`hV!(OQYj^B(JTuCOd!@Jvx=-eiq9)cUuKxJoS{x*lfxeB8LNTY=g(+>@J*`|R zt5!Qut=6_Lo(1J+M-&_1x|YW0;QMr`puKZ*+BG$)_|R!&iRDrpGf_@x_d>zq`RmQl zAaXJ27Y3nPjkZ=+T2{+3Kbx}RkF^cvW}sr0<_qv(CN)t=3GtgQCUtagPV>`vOVUI> zp+X{|LMo&A$(&00w89{!uoJV&&PpMpVlJah0t|Ls7Z)4Ga;YJ(RWjXMp8^q}0*cKQ zfH%x=;6NeLa*k+!!`9FE%xKs>rSo6?kaoZ6&-A(t1uM5ExMWztd2|Ih=7 z&-%@lCb5KgD1^eaDgNu&OGBS+~4CAHS~sN0#))t8s`lmGP%#fHx+oy1xrvF8F+Dv;UV zrE>Wz`sE)_YtQtodc7O^`5z`02qX>~N|KE!`F1TpH?_8QP+xlXoc`zcy9>noESsDhsF)(_omALrC{rk@P@r2me7;>!*opzY zN+yIw!vaA`Fzu$E4D0H=ziE028mz0Qgc0OtH5m0w(SvakJBb454~dg~mcd`Edo zu-z~SJHQIfd6zqsnezY^28|~EK&Tyl{$%p85mog}=bDBrB0#P`_!Y?BVVo=VJ zdk$u<-!(Ye%v?d8c3JHfoz)$}y4m6y$YDSDdg{*2S(MhB9W56j+efDjENQuWXTdt! zuiOk&YlliEhsq_TZqmu_2lR&Pv9%>VSx0|B(O6l^#2u2D&c>BVr_>IdjCb#zf~Lwj zb-H~mt+lka4vbXVx08+4t2(Q-j0jHyo)}$MYQ6XXv7H%dFe-0GmJJN>YNF za$G0Lep`UiL>f`}=9{FTF{>izna zU;6`9idjAL*wcE$JHA_=|H38B{o60=_kZJ^`p!51wB`=HTk9`AYXl@-*BxEdF0=LL zE!Q=19VwYDsu#AEpCWlYQoB*sCqH#SpM3hfcFyE=Whtp|=qhW78cs_%LIK22wj>7ySn>nksv z*L0bk@0#BFnmsD!zC$MF;|Bl$AOJ~3K~#;_V_I9!>&Cg)>JL8kl;$R`>bvegra%1n z2^~LpLht{cJN22*#ntLOt6o^qmmYmUjn>n;xw>7SeXOr%PTf>FU(todn%@2JUbWjr zox1pdKK$utH9K)b-+A{P`geczlAhW7l78^*2er1mPoH?Kug`qtoIdcqcPfA3el=Rp zs8(+)letrW@`=kjw|HHJY(*EYUDA8suvb%=X?@{~_o&f&PSqxOY3MexGvmNQYjR zQL-4hA_Rk#Zx;Pn7^3g=Tm-dIsT9<1cU5n+HBpINspviCas55iota!*_a2*8nzm4| z!x8tV;;tU3(T47}r%W-STsAIcdMfsvT#S%Ir!&%83-T`KVm7CRxl6{hYdWi4+lp4E zjS{91r5hFP;IRQ|r2?=rL1EcQ=PotWYV@>iBCYk+rWr$XG-2%ywXxAtvpZ1i=#l-S zR5MAnl4hsMdhD^s^@%_K zs1EJlq1)f`RRxI+HJ|u^x~!5dX>ouzUM&v;FwzyJ;3eHNk<**sb)PcBwhqkW!comc zNvtdKwR+dG##8yEeNPud&Fy?a@Az@)cYfwUt=2>Bo-5k!ut@??B5b+(0XJxISnSyg` zSY;S|7Lf&qGNGc(3K#(AQ%-Dc*j<^9dJZ?l`Xg2uj=&guTn&Xx*n&7?*kz1K5_!T2 z1q8}~ZXOL1SY+-aDom8}rE4`Uws+{UQ!i=Xf!lQB)N#G8(9`UK)T;aRGKL^92t~IW zC?7aPq;wv)-;0Dul))3hMo?Q1ERT>((29zxORth+;d0Md)`q8!V0H*`CXvwD)sdcQ z?@&HpQ1k3*z4r%RXG(dx00M@v1)c#Lk+Dx(n8D#$V066z1WyP$RFo8oE}bK042eAP zS@^9fwI#H{Vlo)F$s1#B?*7mT;?1&!dn8K?*|~se-b)212eQK#1VSW|nMX+NEol~y zTlkLm5#mAtqwKhUtYEIo{DeT`k}0$Jv4m~2pil`5Ip!e@J29-05#I{u0D5Sf5c`mY zD7@kih0JC{Tpv0Eo{6$%$nnQ((1?1h1AEUDRBgRw z=RJRZQT2M;P+P~Vd6TDHCaINrpt<>Nmgi|SJG!y5q1Qd~kY4+m2Nb{h=X&))T4+%k z-O>3gO{J3~O~DA)a||+@HDNl!V-3ox;pSrVrrj6xooO)0P^uClgyWhJOwzt@G(uGy zJ@X96PtDF`RBQHh_Cm)hP9M5^N^?^=y?Cao<@KIWA=$il3}4;|Rcj11Sx)G{p1jAD zZ4mz+oC8RUUfXpno)X~sx@>V!t;Ms`Y5F=>(wQVx*@GZi6R;|nec5VqW-lpil_>#RIj0|Cc z5CDClu!34CS^~jdHCM{md&nAFrx%J*u+$W@O@Z?gqeIBCW_T`UI_L+QpU5Z;1Q9DJ z>Whg|qdg8Cmg!;0?6S~U+~Z^tV@F9kC|S3xN=2rV#++Bcmouz zwd{&%c6&~^mNaW+6R_^elpp7l7E2|b%GjVpa(UW$!T;cvt|`YYa>Vlh)9Qv@3*!X6 zt`W*p4M}-ARx8Oc#smd}#m9VPapgT<=kFxyQ@dgZ1O4P_F_ z7PHniDGUc{wgTg6Fj)Z&L4l8v$Mc!E`h;sDx#|Yq`iuEzG(Agy4o# zkksoaPT4f_Zu~0bN$3#cJS+@{kBcKR7-u$cI?yw|gh$L$hbn-7ko3btlJboVh3p#{ z9t!9i6lBUmB-Ukydo_-fuDU^BoA=F)hQ+ao)%PeS>Gid~URM^BL@J?;M#nseE*kR{ z6cUjXygaT=DCxqr4IMvyQl3`CcbKC)_Z zkWe9)RH@>8D!o`t%e7FocHg@H1b8u-geql9w1?Vgh9ci{U{68!zpAVwhl(0yrR7dn z!;I7(_H?5anrD}F5YO?l)&@vfkJjH+?Q;R{?#%aUxq zdFu~6irHTp4X>$o`BTc3FX?>wzty{c>Ae2)*CqAk&-_33fw{`8mTG-fn_V?KL;dsj zzez7X`eD8KZSTmNt!2dL-+|0x3RL_%k(ZbRDRF5CizMT_#`MHm)zxHPbG=S%S?Ip)7WrKWH<% zU4hd^!9fOuvK!Mmry2K=kNJSMWLP;Ck95V#GgC-`tP%zx!I#RUHL~vJFaSoxRE$4z z1tEa7(V}&IR51fA&}0mYIb$1yZNzN)Mo#543MfSs^0>M)2`7nl)b`FaiBZhtfqP;+ zMkdGH7nGbNF^L^}p2m!AHWJ3oNbQM1g9!7r!1%M)_&c)1Bv6`9V^NF^h=bTH2>9!!XdbsB7+N25n*bxh7{B@N`#u_~wf2(2)yGwR_MchV z;uoIvwlm`$eAncZEliShKmVbRX#c@OdiKe$s8WpUWB+=)c0K$Hnm+I@9eVZKwfDY9 z^dElr9=-m7yo&SR@y%Cdu|^9C3k+q_@5PlX)byFh1AX|<`}+8o+xp07E|`_a31%m9 zy6?!82^YdcSuB%+u#GK}WU{JLrw{92eB`T}R;c~mD(%MBgA<9fAoyae&^wm&j>c{L zyCL66IP+_2~{8Kaf~{Y8m&#*@wM7L|C!kq6egDCqY5 zvoYs4Kv{vk4S{P>8ehO#i;xyz*Kyr@z#9YgTV16Sgqg57;fuy2xkbujw*nKL%?*f$ zlx zcp?#|nxBbLTdziYMo(TcZ@k8r2fggn7Uo3pj$_m&cj!usH?yg^=fJzMrg<+LJ=kqN zV+Y6@6mq|BZIvj$#yahG`)bs>+PK+tjvfkVpfd&jm;%wV1+VL8dd2@&ZgzxMOxZS- zszHdU;|y@%{&y_ov~7Dr&}%Ye%54J@NdqKKoc;{QR zEB=(4{gg`OlCqVY&R)2xeLH6Kq5u6a^zJv_uSb9T-{_GC@7HI3^F8|Y-?^@{$Dh%j zL`QFa;9WxzWjMTrjc_)Mb2HjAxX=m`lWkgAS?Q~a%w(ZfbiK5bb ziJwW?Tu-@tRbi*BTxnS}jcio6o7FP*i3&xENP1eWb@a3U#a(tTi_r~+Dn%vOK`^6U z?^fc$C=YStJnv;f#8}#R5|vg9V;6 zyfP<>v3PL_2(_RH#_>zwlvraU?_AxBibU+ZW@Sa!qjU zd%&)0Eu|}ThjA--%)P*7Lb982Vk4tR9?Hhz#Uwo=qkt)m-APi_-Nmj)czOd+s^8<;oPfyjW$O zVVYeY@nG0Y@dh{tazgHgIP-Wj<{TKs5J7Py;UYIkTiWK^-xtZZZD8XKo>1J-HUP$B zET3cXV-uYsJZBrjKRqduLPr#sdQZ3eaLUsrlKs zhts-*LmF1;hmk;qU$^V+pO#m;+JB&=Ju&Ih)xb~^^Ydw4U4%$wq?w*{d8wn_I|^p4 zgJI4Wl4`UQDi<=^y->E+Pw`GqyNfwx!jbw{8b;K=5BOsyrdT?zdNmY;MVB{vdUi3? z_U##S0;6a$yLN;njh={s!mH$qJR2Sxc{~P;G0BuG-}vl*@9(2wPlK?kVZWtIU-}`n z-ublR$-Wkn&#NDXnwgkTXMS2Mt2G_oGp|p6;The1a6y0hcc0T|pAGas{LI_+;4dH6 zyZ-6NtmE<8Mo+);p&!*tXK(6>&!5@6u31aXj>a8gS=D3w>f2v8)ZV#usaw(RnQ1dJ zfkkcG@v_ccoKSOho6?1An%i+v)f*3)g4@3HF*Ry?^&g+^={5H)sk#AH^MDEK!rmv; ztnJaG&-V42`<_$S*`Y%0pbZcU*W%5Q@?|Xfk4xJ-Q5s?!wt36R>UYOu)|lH@SZ3&p4}FT(&N8e&6?EG~)lk4M8Tqm(%(nQjV(GG?uf zj6H5RjM?uKaB4uq$ho&DWfU6-kF7_2qv1X2h7j)K%DWOId5ls4;$?F^fER-p^HA|z z(a5bvFtvf@1*Z!Vg!hcR(+qCAZKAmK>9iG_ph)RJK32xWkJ)VDpP`=~KZ6@nkpWq2~yk zUwHP0QJZ!;BtoUUM%uZLjtMtaZH3yE9;rB;Qg@itN;9U*&6t7?tdr8p#fFwQ1`0;f zR3)K(`*WTXvDL{#*jMCAL{iBhG2VoP%u}W!CyFCsZ44o){Rba#{&uBAPGM(Ni+_4p z@&EEkRVHWDXi8J*6&*WT(PuyXH(Kq6ny=(_>e902rb;?kd0Fp%_y4LpZ@XVlK6_f} z#LubUI-#BOS-tk2IX&@rUJ=EuFeSNCQOOvK$Qx6-rt(&wRNk;QgyG1iyNVS z6nmx$k1Q{WC62Yt{1X}gNsD$c1KDGuC}dva+I(j-U>xx>*!jo_kbFZ65T~c8f;qKD z!S0m1x5IfY!H6DUqjsJRBbMh`BTJvx$6*OXl5+xsG&zwIDjm-o-n8!BA2FZ z65$C`_8#-bLp0JM?0hb>%nj%i#-~3Ts@7)Dh%3ZeHF(@m ztKGg98*EcCC37+D-kvhjAQIYyIv#$oZ2bYxU8<|y8|dy}Bl^Yv@waqz z{|?Pe74_no>zc1D=$HQa`!qw~UO}#=q}9w;9+zA<916TCS~YluBBeb>sGo^s=;GpVVg_Kd1lf ztvj_*OX~Aa_S8I@w!dxEC-v7)oYi+dxZAZy!U6x`E?>z06#7J4Xub9>1 z*?dc2q4*FYn7sxPRkU`#SVoOTL%DoTz$nKDolW?nOxUvBSXhZD`3FCBFff-rm&t9$ z5?QENO}L~av%&zk5QRIocr5~Ai8o+y)pa)xX#a!)HLJGcn=n>~x%i2=f+m52fwE`&rlXF>zRC3&8lfQS0K<<_EC1ed9i8n z9I<%LT85#N891Jcjf;iIYgliFHMSxSXNhCFA^ztnu#&AB6eX2mgBhb1ysHhG2-(5% z=A_`ZM&xe4IUCP zb(%vhhcOj1z$s~{kTIUBD$#5IviYNHk^mrCg1 zd`dILq*4%fmA%V-kED4#Wg&{o%U!J)WR5DpxQY|Veq7g=db+YWRH-;Hl6^M*Z>f}- ze+XMB8o}E{L6eJ^G_R`lxpAzgIJp z1*L~K)m~rMLvQGR)K6WExd18(tEZQ zbm!iR(%F`R4$2Ji|dyV^d@2qs+p}4xOKyy1T zDU&Q{@9a)n%$kkq{zIN+G#W*tOLQw3!6i<}F|Jk`3$tC`tgvWQ{dT!(!8ca#v28=D~I90b^`i37Rqm6}x1!oF~1!^$32!jigTY`kA z)P{1=Dxn&-0NMDm`K-lIZBbK<5n*3RL}BT(S&XfJFuOdfEmmKm_Mia?ChH0wtzND- zx>emrT)AG85}x?CICHx$b)!;$7Cn|f)&?7uRZM|&Fd9n_MGWJig&!D~LOHJ?@UK-r9>*N z0ig!MN2#Rfu|eU4@nHb#iJ&>0!#c;H$RJT7kZyFJV7>8fJZ{a{vB6Lc$oY_2u+~^$ zY=}%YBtTff6!+Ms&*sqQoX)Y#$Qo=9?}v#UTec%F?BKnG%23Xco{i=W2pd*EyBE5E zT6aeW5sGkCjveAy=4>`+Btv-Dcpq4)0kTEs6;MMF$%a)dVztKx*1ZFvfF~I_CcMMC zV4R_kEmv}?ZnVuX=@&$)SGbr>?6XoU+O)%B*YadlYo?I&pHBe)XrXsvlgi($g?3t6AG;0)-8bjW`il zh`6j+?siZ{3N0d*49f{Q#TdiL!U(35G?j2s7=zCMjAPM+y_g9U8xO*ZGNk&R#c1(I zD{+l1F~f$Et#(p;&civeW-LKPypoke+?d5;3c%Yu(FVOYOevm5*{~3MmKB5q9L0+w zpyCT|WfU{SJm9anclbLjerj41g&tEd2&_-vW`_*;4=~)YS~r)q4-c|N*o<+(kSt9= z{ptPq#)bl64Z1bZR>#PB($1&R%Y^F1q)s)0)n!95>hMwUteg`FlCmVZC=~G6C$~xi z3(l!6xx@X4V;1F?<`@;9KdEQAwD!IWm!f7mmnjsj&~Jh2v6$_g?@ z8rWv%8xdA3G5#FI6h>}@C7QA}Q&^r9m>?@CQ!6@&SnH@}1RIO%&)*0upop;?Nu_~I zpz|~LkDN5y4GS${i7^I*nJnsr_GO)CylRjc0MkvxKOSepU=sq@*f;u8^9sPJW6{}| z$E+_Q`vOHMATt;vV(w6uX7~e!k5$7(i9!oopu`Rq6rO#y2js}S^_6Qz;)XCYh z72VWoj$uv?V@Bo^w~dPK&^^U+dFA2_+qBwvUFd1%Gn-Yr-BG(5Xem2Vz8F`w5)+m% z&vNhHk}AVcrFcq}+(?~9PeBmV3+LA~$Rw=)Ve{p_*6M-Qse2d#AvL>gHG&1*d+dOYKk>MhgQEWS=_U267p%pP zR~Pu5prpFPKxtU5;z?yw86)~Q@yz}DvEPI?v!~gKjN08bJ#cuWBl~yS2mkufxE3mT zJ$W*wi;IhT-#ZU$u9DFxc0hmjse-=z{CVx(7L{2qT-JLY*`ulCQT_R+i~7>@XSI87 zO6^Wv`xh?iJ&)`&>j`B{9FZ?}N4k8t7DirhU)<}kSf%SkbNRqJvXD$=CmH8~dR^Ra zPjX>#v53M}Xk5lvYFKO>2s*!;^@MUWIFgS!N~x49SqOndn=ROM+~U5(C9z7dUV4MR zs;$0l0-TS7xL&X2iD0Wdj6x!WML->3&L{IZjmQdHJleSdfL5V)v6i@Jc1e&M$y~B(NMPcL z5brbvheZf>d|(zL-UxA3IIP)x3I#VZm^MO0bSObi@IbOjEM`wE6Ut#j1h&V07g8w; zuZ)XqU}@vv`W|v4yl@LGVSkHqO>Cl8;ABupicTEfNX(Y!iW6uh2HhW6-@Q?M;O)*B zH#`M)3A6S2?l>gl|A1i-4r>b!xdForT3Dp{QdA zI_mVgI&(f$YPqL7=HqHDHFUW%(rUG(m0+Ygb3P8+Ww4%s-TC@qUFPC3)#^iQF*aH8 zs=n1W3wfluS)hNcMSf1}RgcVQy%y@k=?yc2;8}*!wL>ZOaHwn|p}dA_Rhvd!^vHcP zsyCx{P~!)9rSCitn%)=z+4PbKPV~+#%KMc*`^v8|m=-wo@A0IDon@_G`I`Ry-)+|e zuiC4FJL39*ANnzU>{CCX+Ime>6VmVf@tS`97hkInfAk6Mee*xj9S^-#OD8_A)6YC= zgGM>-<`LZ&N}00Bu}l1Kf9^r0GYMXd-WfV6a0AWC$zt{M_+4zuZHe=QWm2nng zqF$!gvvcz~&QFY&_&Z7(rN?*@qbEj9qSrc?M==fq10bMmsKn1LNr^=`@Mp30fR_?e z3)l-Tm02S0x$$}PChZKUg@J_v4A&m5mNZybVe^E+Ce18i&5i8_%k>Da-t z{`+753;p~L?9_etyjG<`O3yrV+=xdOZ}#=^&#&n%kId=+_|jLDsq9c9DCsvou|wtT zS9L4xNtu{Q|nN!kuOp#VhF_Td7=ekAq@}?ggzqO0!)efLUCZ(VhQsZUhBd28o}9Y zPSHyia~xQVj%Uaga)MZg12jb1gi}03fYr_A>9WBXj44eKbK{0c zdPi)k*(|wdXZOw*4wH)vfwZ@0MgmaOe?v z5QElHWRZ%gRmThP!O8T8YB$)RT*-UihG^iTd*Yi_M1pY+DNgB_wa+HY{8*=RLPb zNw3phwmW?*o*2s*2n9ozKpv0cC;18&NeG{~$AgWJ!h9F08TPCU8srU!%~vNhYr0RmR8{L6fw}>f_E3lRl$FgU^wsCr4C;F0W<$yB zP@Q&P4cb(N(%ej1ufA*A@*L-`Hgx7{)i^WIMY9um6>@25qGWjgM!P9mN98hcg~3Qm zE1`nxfp*Q|u_lvhRIBDjkPvGoqIgWCNXSU1>47$;>||}y2^`%NDf4d_hkw|wk>cXb z#384SyjP{v*Yv%2|BZg@w>$d%-;L`NfBOB}sI|3kp`e`$6UG($mmhviuiBB<&;It` z>h6WCiixwjiYXKwOfdq$Lg|E|8K+nXz{fNr~gvxrC83~{X z44e`aT(Cc}Q=5Jzab)l%x3CCx@LX8ShOgxptJo#Y?GKLtLd$51H0?G2D13`KMiwd- zZmQ_X6e~jEUJ{fCCybkcxTVF1Nx*SWcuB_f8}TBbNZ6!9C&nR0hO$SAU`df!Od@gcYq{nFK`GM?WF(|j1Q9~lTYy45XgcXPAZei zZYER-`+%JVRX}(FZVjMqT^Q_wrV`1F`h6%)DaQ^BL6k~ntxXcr)s6K%7LS562V$rM z?lYbUH$E7uGp^Z249V*d!#9o(SL}o@P&~{v{1uSncLr@!pa_%ABc<7v6pO+Vkwr}9 z+<0@auFeT4K$9l(bRb8W`zB3n83>@m+ptYQ%#fHQ!A4@6Y2={UGKN1Q3g-l5L?qQv z+O(;n-yO=DgAEQ4L7QHPhP$R=1Btk#;I8SkS;K7$Hx(yS+BTfh#zxB!7bJ>Psf>Mg z6hdGdlQD>gZmteAJ(*NK8&|v8GY*S*IMUsF(%QB?r)#I1I=#^~ zSsGS{25sGSq^Nc{&~mk_y}OI1)bVg8EAYT{4aEYmW&hri*;_B4saY#49~nM)XKZfUnbN)c(@KyGp*Y4y=G*;eO3noqq314QJ?IGCV*7R<|E9l_ z(ZYp^j)`OM(?fS$*Y3gRwG_NY_uO?=ANXg#r!W8Af2TWdUx>_ffAhP3=pkMD$a&qr zFwnJDOjA2=)AHF9l5W@=fDFa0^w)Pd+;bM=@e^ls?C3t7I(b$*7Ur~P&w^K;#p0SS zWi@>SrGX$}z2p933Gm?3;*Aw8EwAXlSKVpgc`k&-jId&PZd7Z!d2>zo-+PBkqAi|C zS@9lrYZ6Ro00UD|SvT%Y=T?RT_3h8jEEmm;DQPzZqR~QOxwX#qvDDcd78h5vxU{VM z?>n}+Sz>`9?ASLJu0b(_jDVev7EZyy;DVgTzubBz1j2KvM`8v`C8-{5G22p2*KEU8g% z8YHRFY#DjXp~D9(6V5{{Ev=f8Us#yY)KtYRqpMe!)M&J|eVf0=`>tJEGIqV~+h#R8 zHLbasX_39AdhF`;8`cvKzFF?;>ZR-2zkjzW@J6Sl^`+~|B-2{hzRhBVoX_|v&@m`b zgQ*QfR-6h#?i&}(T~&sKD#^5kS*+DP8%~;}s4py#7sCW$6|WLxgJWK>*jUIE(Qsdo z-J@W@Qzx?yTeMAv1SL4xUW6TH!NBQFW6!88Jgm9p3!SV%G>zxMEo@#x#JbHWePLB! zo)m=m-gKaKI(Lz#U}U_c`HnNl7Y0|e*0$#-j%pqQH^sq8BJN{i?QCSjLCo4g1?{fl z*_;w7yfFyOLk(j|^F|4EfyTh%WYod>3b*KkOkCrD`)n*BY$DtZg3MZqqz0Fv*MsN|DbncWfs7%%w@5 zv9Z@{Jzcq0b&ik(vGTOi1cJ%^SWG^;hgbNP%Z!v6_0_5NwA_lRnNR4{;z*rKYnmvg zb@!c9T3&7G{Pm{dsgY=oTA9e`@NCW=@A(Z~A1b7jyCgFY@3eT5PDwl75|-txY4Uwcevy06uq^z-)W>mS*ndabR8U-$F+ zr{Dj3dfPkxmEQS1zosAm$q(x{fA47c|K^MO&`-VJOFN@;VaZh{3$~EpWAN5U z4ADq8me;hrvaUl1cDeP4JC{jnW~QX)Up#HY&68k&d$T7E!s932_^sH%jdOs&w}dBrd~LC+A4{#;6pH_v4k3}ww`|G1x=Lm zDwc}+?B9IJtUD~cY$j#O_wgs5vjuhT>}B0pUe&<^yOquY^^>k#S=7zdb?x7`%dxVc zC2BQYU%X+KEDQDgh0Eq4V7c*LtRgm&mrkA2zJ0sZ2?M=!_M9(J+~Y_qjV)^C-@WHh zLp-9mTicum#fkDD77S#HaDaU-TCgZ>TzSf0$=G8pv#@v{_dkG#nQqIR!3qelyvDM} zrr-(}YZoQTW(;M9t$$qnwiL8IoY8H$;>IP!Sm%rI4&Mn`U{RZ=%mOFH!1W0ed5woz z$n;dBAcZ}GzoW*Y;n38a_i(f{D&4$cv>W4lv6fLDaivT{Ikm@JQ z10t5}^XLYF=}todxk6@My!!1{2m=@=pJ5Kin=tat`^+0LI34%oBZMbv28(?rs{ADs zGtQ?#A3%jpWX%(5X|+3+*dq^NO(+6l+s-x!cQFf*Fp}Z0EqOXnyX75LARuA`${K_Z zPLt5I7u`Q%bcZo_H&SPIua1r@Qe2XcD>0eU^q#zu6DjpGQe}odcOyM_W>r^jG>yUT zz+6rbA1>?gR7%%RuIt7BxT-yaq29PFp+mz^+j~RpDJ8XcA*1GCq-;KJ3B4OP0mJqpt#;MUWK&c*`kYA7A;Y6;^p(UnAq-VC2tA{7b}LFBkkI`UDH#O zws6m1xT5v-nsq0>v9fAHOR|F{IyXC^Q)e#f@#b@S)tyJw2Oc&%rPF85>#I*cuRD$& zb{uT9&tWla+qO+Fym-bEmY1$v)8QlgOp#u?e9bKL6EB>OD)w0P{(Kg$;2id#Uf{w; z0|5~)r87}%F~X1%JBGL(D+&vWl4ZgLSk+_830Infq!zIuEI9i|a@350k;P+acZ7l( zAFL}9Zs_=Igs#9+21AUcfdaNLn%$RED^h5J(g?AftQbP7uMI2)4?=^_p`gtIkBUnO zYmmT)ea`lTXd@cmhYu+hC`n;Da!_4|!iWO=aSume*q{udnM7fOco~MiaS?NMWePNs zUBP3i7E(Y3n`}`YO>qjOMbu?DvmN0ILK-M%-j5aA11<NtKy471yt0b@3|W&Oi zk;)BKsU+2_4^=%^wGwNZ5`+oq@6H8ko*XHkk>+Pdnn}b|U2{s*`MIol0Ob;6BtvO| zVP<2(SP9yF#rq?}D&x3Z!UJq${l~OxKBv3(l(cKUD0s6kT&;flnDST|vv?6MOT^;2 zF~$}nbrEjVYqmg50scc1faA;nr-;S1eEbhJsGimOjs;~?19hic`s1gzYj&SdCTy#2580BN6J)=8jVKf^pBMo}y*%O+Zoz~IY4{BqhX74B#3wr0< zUa#fVHGS!^uj+f=^<65JihA33f2V~}9((*5z588n-i&pdQk1lB-!5Igdflw#Lnvj# zwL<7!)~oKm-7BUTb}X65`XV99;^&zygh8;y%qy%^5Cgso^Bks}%vI(!6bkWKU~*oC zWRVr{9`Qfc{<>r zgwb&f=Rm?@W{xuXh-1M3GZaX$$lY2-EK$BzAmSqDAra4AYOyIj(b%qqg#}%?dd1U5 z6jjxG)-RBICxL9#m7B7Q^&b~xZ74A_ZTdYc6yd@o(ivZd5%^#_fkj6zJxJbNL8GV~ z>*z`v)DJOk#-6H6lp-ex`lxOm*zvzCdNyI+XBHyeQ!>y$i-Il{7L z)8^UmD8@Ml#uO{OOAp9o$~So27Q@>Q1>$67HMHc~_E}HlwYohsqBvJ7kyctC+k*ex%ZBuCU)kvxESh*uXS|cW~lXGsO~5x z40I5%gd_^^0GTHSPYexS6RK8wy0P5Vy@yIVe5hzuhbP0B+Jt~esxxP)r0T=C>K*t; zqBWF?S@-$r>4YA9)i!Iq!I&S~Rr>Zy*_6?EgLh<@Eer&45S zAk61;I)DDM_U_rKr=LBc=bk^MVj-vLsVPg|5C&io>|EHcGv_Z_7@}Cn>+IQ!$`|s+ zU4SB^*yV|@JS&vtWTj*l_x^pmZLqLL8F*^0a4larc~0x=Rqfg}uW~tW=RS4jg2f37 zg}hFkxnzs1+3J|2AK1U!o|*e>0R@W3P5H8@=zL+!V^Q*L|NcGt>}S8EyY9Np%eCV% z9X)zbPd@pa9((L*(IvQ8C}{sK?#&edZm-3ZZ9%%_hQb>!My#IEknFqj8!*<`Y$ygx zv_Muv;?W4q6QZ**Cuc#Tlrxa<7zc!7R#~!RI41WnS)9|#(wg?}FR8Hei2i!<@;A-# z|ECw&XtsEDE+F50rb3~peFqO|b#+<6#s-a{?O@)6UR${gy&tIr^G%7lv_&vJl`jKR zGT@9kTtRx(ofYhW#ol7fxYao{UgtR82+EH&WxI{v={RJ;dpTT*df7S?1b!}!!bYIL3^JP}Q87m|?(Kv*A97f4pLPl@oNj-;;n#E_H4V#iP#4(^2lP26i zp$f77XpGr5@Sc3;eN*ANOreusFgU0e#-N;Sv$uGCzojy)o3%N}yyM z@5lXN+q{~$zy^%dD=Fntv8dr%pm4RNCe@9xm};$oGLu=g;z^xYk$Q_=fj;RaQaZ3F zt^4!tLEy1wvT-ZYdg)52o9%(^`Mx-v3I>=nj_`yL-CMYlM|ulV<{7ixLw zx*8kn+SU*C`qv-R!l8L>EZtN&+c0_X@p1gQx%2Q`z;Z^GhlB`uw{ZZMftMt!3qb@?ON2n3R_0te4v6_t2M#+TyOF}LpR zpW+IPa|3=51P`m5{7!_+2POxJma(__CWPFY3=>2p1Ysc=I59%4Z?tv!T+JYIiHwuu z6RN`NIo+I4uOF&hn$&9Tre@}M-|EqKb3<=<q{)0t z6Zx1r!?=b~89d#sAr~r$la-}qKfR3aA7`h8Nn;F(Wm2a)z6*M!Fz90@!oy< z@^cs2+HQT6Rl4Qa`YS@RdGK@O0*znavVJVKG=6>aGtm#cZXX{>d-Dms;kzEvRHdoQ z7f)&b?kPhL;A-M#;UdLi#06ccAgTQ0@8)*m3y;`^(+2lpp^-2%*9#PZDNHyte2l#M z>((71sGOVc2so}7KaYn5>xb7l4~vNymo2K8H~!?b=y{%<_t|q<#Vs5WDN7!W$AyX} z@YbXNMx@)#GKuCcvN#ZMPryWj&3ZD#0ocxzVOde`EL<9;8di0D0jn_cg-UiAtDcR9 z_w+*GRg?$QMcMJi^mGHOOS^RLopA`r#MuVHeL>IYt);kI>^06o9F$FuUTyu=MHQ#A z`i>)$dgA1=F2D4m1cui(K_6%4`x}kZ=;`bY_IG~TV!-l#d#va+i#m+ObnA!5`-P;r z_&{%d%WJfM??@+JIIj8mNeeHTw-uvwIW&%5%46u`Mlz3%Bng@TL~&PS%jU>$eUq?> zU)ju1W)`nSW-KA<A+gv$>)M11~f}DW}s}_dFRJ41`G5P^PRO^sN(qx|fWF z&0O2&6D0~Q`~p6oa(>FPiH%c{$GlibB&H6Ypc%#vv1G$%tW8$fqbU7vW0?|a8z`3^ z8lN_QM}9!J@a9|FZZv)tGIElueNzcNytl7HVol*vUxh+U`D8*<+jH8sqoO2$ zY*jZGyGA4w)Y?kl40L#JS>>su?kJbk>ZEmP5uW9NTAhIw=JJ{-Cw1jUN40iOGg!!d zX>EO=jRd9e>uR?8s@8kjIiItQNa`9B-R_-vO%$Q*47IenVJ)Is!MEu=!r&4^Nk$MO zv(zF%o|(-{Hv(P$>T^1B??L76J*2`EHL>o|Mc$kJJ{kg$cQ>OnQBpcf2ij=h__k#) zz$T+ce|&_b-(v&iOQq%|h zyP}J-aB%(2S|Z_rKo~uyC$q3@#+C$mP=t@28LJxQgn)C56)`_!eVR2Mx%T!3-sVQ8 z-6KN8nC{pyubn#=Hre8^KyFzfK7Ncl?=>audd+vBF;)xtN0Ea&MX^)dz(Rw=wNGz6 z3vybR#TJoCF!9)w!e*#J-1(PH8IK`xxVB?t0ZdkOIv%-INodA4sVI(VV`uSahe{aw z0=GMYd10XuFD5+E?|02*N5$eTpiuBStekcvEo`qSIMUadlc%)n@D9EDz@*~Y-Bvlq zII{n29x#zn-iMqNaw?R|W-x62JsR)v@A)mVMA9A@&wG2o1y2bto0Y-%PmCM;2$6udEL1}YM*$?3qn2{v`CZalywCGSyqgJ-9K zcB@Nh$*DhqqG5Cp=E8gAI!0*<3=Ld0l#@e@7h=+VWzt!L;}LgeZn;0KWh{68;j*XG zC`p&o0AeSUFQE@p&JKsfF2O1U(#FAauoinm_YfEp)()TH3-1nth1?7>N7;D05n7`P zo^=%C9;p=FLiaG9>~HbCm``b9Dj_&ME-eMRyw+2z)6+yX)Q(1A2|nO#7q8cJeW|I{ zb$BR;W~Q?05B~whBghDcSv3)X4!@I)rHwWhed*~l z*4%Ub%96jCjWlw<>;)@Ma79LmCZ(jToy}v5#lm8qnw{VLQy4VV?QWPd^cMk^dx3(v zKNiRuPq?&uS59-2MJq@^fDm-EUUA1!sF5XyBD2IxwqTiLD$5`z@AN}cmMkPz2fEFi zwkYm8Ca6b%d{Me`9xtfP#f4Qd-fXba+<^1!I?6V>kMVaisw1}>t2r`4J>JK)3Ayu_ z3>-Ja7yHftYEN%>k9ExX5N0+OEN?R(xHvzPqyT=EO;{6E^A@NCGuIXicbxU6dJBNR z(~YtbabO)|jS+V=NEDkBe`7HX1{OEw?<91{?sIXf*%%X)0;RWx_A<_myeO_fQBtU| z@8G1x7SEo%YJzEDBUU`J7S$%$FI!{@WkDsPAqwn|CYa-&?ECEYU7NpSQMH;&nGT=N=y?|^lqdeDYVWLj0v|z+pwfT-F$P0nv(g+rm}*Bh=cGDs1oGP zt!!6f%neteA}*Hl-hU`U428{uA;*rv^GTreNgTN+f~=uqIry3NL_8Tq#)uh`geeDi z93>N3D}-D4;ypCqMLG6c9YG|ODr7aX_%6jVBx|WubtbhO5EVC1G!y_Vc`7WTw`7f)*x$%d9ZbAo!ALm(3Cf+Ts~#)zvHnz zAIkGFep{x>2jg4(f4$n%7f(cF0&Zma~V*Fr5WcFZ%X6cXAq zms6>bRx+Jdxt!JfbXnJKY^c#4Sd}q+&EIj)cI`VbWotF8hDriz-vo0eiBm)io=J^* zxRF^#NmxHOM%TR*qf=VgmG#BXPR?Z0yphuEl#E`F@>rX^A#pgWo0t?w!=2;&Eh)#g!NEEO zF2%xiSkrjn7{>=OHI@X6+Is3aGGM$G87Bm7XuJqmHePv_f{ZaXR5%QcUhGLR(fxGyVz?zq*Q%t6ISJeU?T%nO#WH}{O2NsdDI9%_aZVIdR0hKe$s zQlB>OBz-9`L0PaNMqUH=4KAGVW+rL*4^b&7Jyn0=OE}^WsKSDiZ(GMN0 z=)nGp2E5Ntec0!(vTODO~@t|9iL%=v$^1&ce@P@hR(y;4FeVP z1(k{i?fD5=QK1O>1eQB2dSs1zX45Ygi{_>T&9>s{v~6O;VHhPZc@7GJpvZJGc4()F z^P(jA3IJ1MbFWphQNQY&Srl$i;DHyd_0 zN|8hL;8iwc20YGSspTc^%n=oWgbn&sH4ZH1Z@E1S%K8SbOwY)sAlz>^+Qy2ll z&vvX!GwaGNY&I!2Qji1|0;A1VCZR%}96?OoL15Ia6b11aE=9PCP*1nhS1FqjowV1g zD7Uy`QLLKo+>8h9o4_B}JE2yWYuZ?)pd+SSk>VA?K9Pmj^HoNEMPY_K3`aj94+ z+J;!|_EZZ3AjyV?IJ~Q@H@yZ(YFszhnznfsifL_|Eor*lQ=4uu`MB;pxJ`%lOlWbn zq0c>eU90O|Qo{XzpiECmiui`{b<>`uMwoh3@ z$mQjmN+gDwD(5V2zg!P&Z3T@`FQ4DAF5X-1+32ahe!H>VC@OcgE!NkZ4*<}(7B6_$ z;le~zuF6>>A~-k-Okr4=rt2(=@qv$Q_Eee7C|f{zKu|rc6wF_!cGF=2nVPO;;PJ*Wz91g4MRGTz~7oN;_e=xSKD=2ki(8E1H-kA2T{nGyDDA zEaXI%hhT)<6*fzM1Z>JfA>2O-f$P8o1S1>0aPdM?*^DJLxi(fFUJe@^WyOVbUVV}g zSUx=#DK2T=LK&$f6rY|GN}P*w|8b2{kzz*XjI?GDb^4Zy z8LH(dG-(@NZn84XHf1@3cBgI1vKvrMiS_DAlzL}yt|(bHbh>hnM!?o61I#L(aaCIS<*0`o=4qiOhGKL%Rd7-h)#aKM^`mmkoO~i?1^IjC+>` zg-o*52T&#G;R7~C4DvAS+9pECjTeBJWpduA6|5^oA$;L6^^HJ^=ZYyGk8397&4im> z`d`HrPsh}6IeT1h)K@Z-vakl-Y(P&_iqE|yGHe8x6rM9dPB@T9I4bgmga%z?i6uZ0 zP0p@~G1PdXT1)(3L#ruyB}t+GF6kY)Y$ZP3t@!fOsfl(fP0#11$ab zP|kkITi>H|jK8s=v%c=RV^Z&Y?KVvmNs3A3d`1Q86=1%LkM#1Tn_9fk)WsWBE!_-s z{&Gj*RS6WIf6jjS7)k&mu zVLec=($pglRix}tr%qqd(?E$k7O=_Gm80xXFt&elO<41Vq@60{x z3xmbX;Vrw7p?k2X3$Bo@hzNNiZ`SovSI&yNgHcIw7)m-*NGg*fx#7vCZs>~?Yh|O+ zQz7GIE0ly{Wgz1yf^^O&GMmO4aaupOdd%FW2~}7ps7Gp$Y$=F+el9{7f7SB#JmN?V4!uZV7N71^NrnpQ*=h`9hpGD zkw_>;-oI^p$d_#Zd`Iw!y}C=6jc1J{9@IdZWD*+!&k8;jVs(@i;Sfk{P@d)*JF&f4 zDrD+$O)Y%j{o$~{jGxzbNc)I~cJL5@#zl!JENkw++uFi4is9WIDNKaE8AOCMF^V5Z zHkpOXMEio9I!c#HmOH=;va)QHF-gY^ zR+*ztm=6otL>$!R(zH6=rovvJOgbkNG8;=aomDGnn?lY3DWXdWMC8ErQW-;g)SC?( z_lZiyn?5i!gj)(l^O#bZyg-c*Fv5I5cG^MP&Qr=&OwqKvZEes^9YvT zI94)c!-^8I#ORG2AM4*M8%Z{&5=qtCbrsmO(vZJ9`T+!tCF$Z(-UWk%mRGDX!VJtk zyBgl8brOlG*Xk=(zzU72+JdN``~%gjapRI^<3_o)>Mffx$m+vpN9kNjiHysF4})(G zoEKR_ejqGDPO-#^{UiFU#Zkmt%^b0LFiwm=RH{}G)9b5L0ND^%wHgtMMGBVrT;FJ^ z)eKacN-Lg0``$WenoCUEgyh!C-}0yaXkdN!=4Nxo%Gc=xYP4InULdC0wWDm_MYRzs z4BO^Gv80=A5{_Nt-7s&XKU5|$)JCLSrYI1aHQ%)O4lw@bTU+<?hPKZf`tP4~w9akxb zZ?}14HgNqA2DF~Kt)B4`lq)Igvq#*Fw&1piEn|!5xxiYugz{kGzeaM>H+Pc7O_DH` z%PQ;!CMa;<8Xv)^Z){a8C{r3Ji^wIli?HEDijUuER!N-MVl#FVUaQMgnyYOVq%(oes>Zf=k0TMiM#}zfT(tC}Yjx*M=yG5@nB(!qd!HVui!!kj&=H zE$?-J+{LUy(@1h`cN;0_G>kp0)2Z7An$PCc4m#@4O*@jSu-CPa31eU(i_t)hW?)uo zp-`}U;n{-fO(hFu1@)?WgTNF_GMzX1!3J-sWfgRZWKP`>*Pk(RyRVYZ+w+hF!vaUq za;>gey39SsM#6YRxFD5!W~oBAiALZxzDLap42O>LO{UE=AxuMf0pTGYJW4sGXQLXb zJekpu-iPq~MpiQ+EyQX3)$h2GlBuLc^<&gS#UUSA7FQ zq>&00ctD_r_10u#6M<{l;URq+Z-3$I|8KVYy0O~P{9M6k2cLTBx}JVQGe@dC1C%UZg%c1!BLyQ;eO zAKbdrll0)0uPI+G*}7m5XbtoK~gQ)7LN5 z^yp3q?onw-5eSATm3-{6eX}Xe%w)B=P}IzHK`X0OXIU_giLsbY9xCfC-+impOK9VT zWj*uUvYvZ-!(&Ly%}#uro?AF@;}a9cr-tc_l51<8bW3e2o(K{RLe4Tm7-7wepSxV1 zpfP2Z7#85ju61VzMYNv?Ad=Lh3RTKK36zi&jsPN>iQsM4>2?epN;AoUzt}K|)X+rx z+#A;hVbsS>N@UcDq#6!@g_D`Ff)xfGAizHODjUMZ4=G%|;EtJklD0_>CCL=Jg1ulpnh}qn1 zEyIox^aEyW>$XD|-kyam4PX&~_MDmMXg~7ZV!#&(>oVG`BTJb%E-%@+E`;hm6!;sZbueB7T+qAIAdtwbyu-Q!3ME1-b zR({rf=>qZ2U`RS5-K$edr!s;Mf=mw9l=Ww9C64c0e!XB2)r72KGk|niFDrQsMGJM)@teGiQ}4{nbM6bPiuE)N4t%NE-&rs+=ZHE zrgCnYi)WF8$iA3Xy+Nv5PxX2b;uo$}w6)h(yV+N*)>pMc02~>Bryf(KPIYEXB!}hm zu3j^F*33-C>2eL=jo83{C+1SGc2#NgwY=8R9TO$x@0?a)F014FCp5TGw*pAa&P;wh z>z-T)ru&B!kuL)E+c?ltsXX9rokuwGoejSC>-Kb_WaRwSWVM-w|454;sTAc!{zG zVZ%LJcveCL8UDM*;d=s%v9dwZKQ>D+iEj1i8Ovq9KmxgbcHFJF)Q zGKcoQ36O+TzIN1DlEdLcKC(0{I=N;z-25Ja>@g5z!YX3}pa89*v9cIYxQ{t9;uHwb z>y5OgpndU%*!19bV6wcAhX+&U5QEi^I5P;eGH)md3RD;$1sKc$W3k`>PKoA}1CR3T z(+xS&_UUZa@Wx0faqt}+1_o2ysgw74H%K!c}S4R zb8f?c2B}m^ttOnu{EqzL(9IeMhRg|IM;j$p;FQesTs^^i!81{<$7jgO;om41Zi-UL z=ZP@{1;p89oZ(!I6b>nIZ9_$)ZAv^KTr+INW|HC&QWbMfX`C3JauE+owAO6tjZEo14u!Rc*J@bLVLcLGqGO z#A{o9RT{`3ny~udnya}~;PkTE(Rd$D3U#lp&ydy2| zsd!*aGugCWy-Ml#w|hm{F!F^jEI%rRm>_El78Lg+63#bC+6ho#yb#1<69gIQJJBJB zA{1!)c6SFV77{L_B;k5g;@g41BOkOsLa5i~IK@nC&L#qfcB9EoU-d>{aARDqZYU>6?$j!sETfp!v4gf|1g&T%au4qvS z^M}bD1?%kAvQ|-3P1ed5EKN!&)UnoP{v&};?sp{E;l#kgAp*}~0!hQA-$_P6?V~tY($LnGA6oarQi)zyqg7cY3I|!Pl+#~Bb19r@! zo8d25*F-1%e^}bmhIZ!su?e=!taK>__q1pL4sS%Ur^E!EFIS6IAVo|YJQ+|yMATvk>3)!^@ z1mH*fwXQY_zpK`QV8*aQ4r2AuQw^=nC6ifc5OL!YUt#~y9fE)X?NpQ_^(|;VBFU*7 z)-3-H-5jV2!qP&NA?Se_uu|<};Uc9&iW-$?xD`MUw#XuFO_NLnCUA&Kd|>%<8dk9Ad~XyPdc;jVS@-a7HyOoxg|pXryc~AY;1IT8 ztGqWTI)n}n7G_D#ZFRmb^Vtn)VC+aNBR8G(I&qMLcSE6pJr|!&lvoIQS+Tl$a-bM4 zdV=0|q>uH~ZPo*P5+^q{l!@C)L+BaGVJ`X(6k_edj>iMwUSl<~F02RZYR(4s5@p-K z2QUvpXPQWfj@g|~V87!t2r}~q^ZrCUlr3XrV>!dJ7X=(0j23}0C_vfq;T*7UPy~1u zJm1jQ0gtBNU}%Et`9xuPtwInKtBFNI@}}gk(SG6#V~p673hNM3 zNQomv&+XzXlz8Zz!Tb_%rspD`vmwIuP%K#Z36wf#36Ci>I-sd-X)LQwXQ&i=noic8 zu9~g3=bCfCUQG|uhAzOYlL?Auu*Bhg#vUM=$sO3|7)IPXZ0FIr7=7p5Pn6TT^Y$5C zyrzbz&tcU3I+{}!KN)E{*Tw3#n;NdBXvN09WDB!Ju4|CY; z<%NtZ&j~`<0ycQjj(=f+MTVv!5Y`Rr$z!2}x#OMW#*f}5xIMVP#KgeMf=B61!9A&) zC%}Us1TTxFX@=SfN&axedP9XWO^YuZAEBogmKC{)2u^xn0u!bH03ZNKL_t)J4I(0M z+!1gr4j-F=gM<~rp5V%HGxCPnm^dII#f+btx{}W-DxN^- zI%5FbmBSZsF@!TOe#iZ}H)DyrCN*IC%q_;01#tBKkp=AWM#>}zf^Zb3JTMcpiz zUpRfSkB2n&gw{0V2OCd}@`YVIk_f+pj~5ahZyr}JM!38^o*-}x520kph@fi+R#`mm zz#SGZum)v>3T0^47Fe++4IB7;r*t}?1?r_2ugxs z95$ZMd&dE3Vg!tqp^f+@eA6Jj7#*9)u@3|tLM|8q_F2M51B^2yR>FBes0O+Mdr%=t zVDHb+2hJ&8gVRZQKSCe`yx7BGUx%D}&JoYg8KeO*21}Q!-CRmth^?V0$mMKNJEj5b z){*-tg6p<=T@_uwfDjz2($ATVja0Qdxx&SwD*{o7H{pxPDRn9@sNZdCZL^_$6KQ?l zdls};>FDJPRka;YBG8x8$)jUBak!|-VoDRagkCyd*UD-~kKCHq4<66yj&@hct2Iq0 z`Z_Qb*P+8@m6I_+*ZkJIOS*Gf--uI{1O*fU!WgfOe^W@p z?v9|fus9rmC?9il9rhGfbUFpr2Q6W!2*YA_F0q?Xh75o}mKZ*1oRTD3TM-;$usKc% z?l4#j2O`>(2m)6yh0eiXrt~Oe(;54V1ftzl1{6UL9C|jD@j7?o2-ma_gOG%vRKFdp zm2lEbcM30rtCuXK1J(zo$wsCCU|@^cChbl9m-n-w;mv?Em#MO(W}`>f=E)8F7<&lw z;6pzW@V4wC3mOf=>vh-RpIi&!M1agMg0$eqC?pqhz|#?~5iBjv+(4~%%P<4?8)bxW zZO;$mL1E!OaoLa#?rS3CSR3XVA;>}GGrZF2oJ(!36kQpJ7u5}cS}O`*fmTpje8w1d z$mbp@60XyR-3wgJHxFZSo^ikHjyXdJmB{9ZtT;a7c|)*xB)+BZ!*xRrI||({oX2h< z#Qg`MY7r|DO2_bGy#omk3JSp&&8~$!ipU-iLO#ORSZm&cRo!TJl!FG9i!o18x+BJe z;RAD6hZ1E&8Ez4k&@fJlTEG~s@NGe|&6v18 zb%1?WXYxz|kF-@Bd9$M+qYVU8soHJ;J()om?buDhMrrCLmrW7638P-7D@X=$MGL{GOrJS`Q{+PTrtQ?JJL zr7OD{#0Q$4h-q#FvYwWyZo}0;LHV|-pbKoGr6U-rd7H(UVcswf;hj1OvCg1TkoaIBpK0yL3 z+iWrAGFTR*90lAG!JWzgJA?p!K!Lwa#@K?831AnSZuH`B z5I8YEA!Q1M#^*-XXyAfig1o6C!Dd^N0rMOYDH7iiSiCq0L6Bg@qhwx(K?fPi6W0PO_p4VM_p8VflU3vN4Ng?T~H^86!Ql%FAVxc}%Lj3>CN!Q=5~ z7@vb-Sjc2IaQK42$5lt6`8oI*o(h(9f?@`g98F2b!t=5o2s5%Lu+R*pg=`z1jTAIq zg-pg4Di3U2n*f}f2iSbGpkiMI<;=u{9N=EBqfDmYJ;xf5G0|(0wGm*0Fy}$303~pJ zJ{`u4bs2XqFiS_Fk}YWz42#Dby;p)a#B$(s%v2?Si|!(8C_qg>A7Nl@yqc&7JA5&>Ornxzk z4qhsm8AD}~G40iw`r6ZVd)C#xjxH@VwA&o&@N`uV9^TSqHl|vAsGV(!sBT7(m^7ls zLC_-fz3B*N^htrr6gNt)P8Y{va#mat+nrXP!0?WCB zrEOn4V7FvY82jo;UD^jF191l%0ZYa5B+fmeoJA^(P!hlh3`7YFcihN$s z;(+-5;H*)lA=oa8k84sgPA~`-HDDmJI`|kaCoE-1C14d40?I9!A;3lSABz;$FR74& zm5mbfp1UIl8#Bs=Fq{xm7j6lZ9~J^GYNzd}x!v)I1PWK%jX$k00#`4jJe2Cwq!XAR z5lcG5h&iY5!9?W_28S|s1aFYFF=qe_jX$RigJ6LY5Tm752=S9Z00y{1~Vqhcv-b~VmyyG6BbT-{o@KV|xZ zVO=eR409LVhH-IzYP)UiI~3E~?wiw*#c{oOep6SjHB_yHB!Xftp_9joE_0@oy4xP= z_<^EkifO%cX;05yZ|HP?sC`pu&E8n|Rk!xK+O3DqBq{jPC<=;_lhS$QinOuS6YvL| zACpr_74k`~ZMU^o9ja0rYBko;xpCkj>DpRHyEO}CgxTmT1g$tcJV^9x#*|~EA+mnJ z7C{bq0DRJ=!Zc3+TO!dkG6{lrd&R)W(~oL5Fofiuqw3g0n;V&NMgEO#u$POOqfj;Q!~o{ z91cU;Q;@46)rdoYHG9)?2{wSMa8M@x4@{WABO4!U*qal9kD$Tw4T2rPXQP5o@f=tc z915^KXHSIZz z$w|RV4)aU!42TNi9uCRtaQ)%H843j1Ixdk>`B3f;`8}a!xGO?`KWng?W!Kh)bSQ~9Jlyr%jR7L>$Z2@NJgdTGJEY*h8&u)^ufcM|<_QbDpQm1x=T;I)80PFTPUMjkT`krqNj_cDk^~G&Pw} zz13HxI&=}-;!I{_`$nVxOTO8255|;TqY;cjzA*wilLZ2ZJ{V!P-V({7YMr5CnA}mT z9`*wkw5_c!hbN&7sTgR@eq6iTp-zY5kXV1HdSl>psfn?O)Fh;~dh-qFH%6+@fPxba zyhIx?AO*XlcE4ey!(yRNU%-?ZsjV#{;@0-08jX5PpeMpXBg&06ftyHxE}P7H1Az@Q zeqO=)MiRo6fZG;?BZAd#E$_428cbOWVP{fAkxTE|uzQRPbFWA!`dslbPN@-q03DDS zK_LL|vqcFjKvjTlx=s~&W>P1GNZ009AZThp!F!7GR5yvpd7T( zcdT!O-e`Q}sUuVo;u$bp?nk!BDD@BgA1-V|Eg2=VJo8X}nruedHCW*tO1Gic^fC>c zb;30%%SHhV5?JySOr+HAwj#>V;B}C3!I=2sy?mjVbGf{Qc>@98AF7y5IWB@G=6QHN z1TBhuWP$Qr{EWb4g9!bfv^AsBTT?a_ZOXH{l(|gG>L~yd(H~*ePnY2CCLWoj|yM@L1Uhz$bi< zplo}}Yzb^Il%ZkFC}W2v#gk(LjZqB2E85G<5%ZNurnK+SgkqVvRbYb zV9UL|eu!B_56gZhRkjJQ$DeyW^zMCn!&^&QS*hyu%d6VlX{kJxR3@9!+wPs$eRoWm z>}YeRDVn?XhjCrG(a?d}mX3il-!zP; zl$lI|dI@$eiX~ca#|5HV0^%vQ{;2xv$#vh`t)9PQmUD0|$b#V(EENaI;1Lep4ZL|A zw@D~gL&ydfHa;9`x;D^(a@O3YaA@Gtp|Yuz0`CK0=KbLd*O(NcAUSL8+RgSotWz!% z++H?LqtRs_yK62%H>_(0>*RiyIHRqD)nQ>m)&Pf_O&0@tN!j873kCCpbHhTMlu-&E zc%Lnsfnv!}=RXP}+Rb3%Y_b2$l*h(G zjeZ}UdwvjI9~_n!&**{=o6sTH$LD>G2rnL8XJj!Un8|OY`Z50cea~TxU?`X5`Eg*9 z8%gZ2K8&9i+zKcZ#*T1KBV>3C(!M&B)lvloWED6mf|48f=M)7H6wPMR>NF5aTrsQ> z%EK@R*(-)C`s&7diZvR(wuO&f@Tg3f5#TXId&N8{WN*MV;gq~EM%I)ufYq`OjHP1h z(}pX;b#qh@(s3s8y!f}3U!QSv2s+B;N&>H@C?k=}n6ttYg0hTwxKU8BrXe`FK9rq6 zKLwwHX)3`0qkyh630*rv57hTo1cY-uIxHxNj8H6Bw~13W37*)P&}qk0B@#P%SliigS$MX9zs zT}_Yob#fuDxv4N;Z2c581l_JX*HGze541-U)xKisp(>Sui#1FG8r_a>JR|S@%U-Kj z+S{D?x0O}4wk6F^8$ZTSW6rY_d_>PmzA-t-C}XF~ zk%>W09|lWG+G`H9Qt4^CmDKFfH#oO5n|pnVMo@^OwR`;pG6vkwnWSXxQaWaz4!h$~wx1z}~u$umT$VF&~YK3F{j zbS`bu84ea%8l6_n1S_W5M3GQR8(}rJ?6AzhV53*N({=!nERjq)Sncd`D*V`V>=I-; zxwPP#2tf*N2?F$)SOlyy1aQSI!Glsj+0cHS_VXwh+~-J$!DWHq<`oo02!^B+fhEk1 zYdL6Y(ij7WF3?5OU6KWTEgl_xYjLYE{MS1IH#gg=R7q>8Yd+FXru;$KyTCOu_Tq z*LJ0WP-Zg2gz_il&EDm9sif?pde+OSD=l9BbPdn|n7Vmt} z%{@;)ciOHcZqV*t#0E85r9b!mz`_A-Zg1WcHn-h+n;v@Ty?W;BU(nU9>&j&_njM4p zB4lu+Xi?*p2!XNWSjeOR2OPcZ1{zKX))X^~OwMLfs??hfGGW#5GH!^xBPpFTX~tZ* z9Ks<7?<74h2U$1Rq4SnQYE!$_a|#om!(um<=&J&`8JT8 zj}E^_00AAP$-}^DfHi7?V^X*aPhJ; zReTIx6IEyiYaRSFkhOD77vq@T5^EI8j}$_8Y>L>_f`x~L<8(nZHaE!Ps)xBx=f*-n zG=Z>b+p0u3jueR33S#y+9!Ruaw9~CMLPcM+Pe;#)B8VxYUbm@4I;TV?r!;|9TzyEr zCHKs$x9T^U0Qni#C;=>>E!G_2Z)}qi;&{rL7mO>F%$jyG+%KjgRHf0}CE^2RQ+cls z%x9Z>o7&jj@V~R!oM}9BsjTk-Q4v8*ge=$1xt%sRJgHrwOc^1_f9y>Jau{cz)C5N0 zb0`DHVf+js(=HK|6E_J`~+!t*S+?y6shrj~o2GVX4hI@9rbH(b0>R&SX2pa_3-c79WOZq&>U6!Gy|#9CI&Q|g z7K5m2DC*?8^zBT=Ri4bMSj?+hYpK~Cs@cK=im9#Ew}&sV^1Ag1oF}USvzxVy0_jw- z6bm+BeOxxS25JssI&|vorsF$z?nT{k%Tc$`3Ds+1ii|e}L(-qaD#Kj`t67}NJI$@y zXzAL;m-N-)P;Y(fd-U8lKC7+TriwgJ4je5k0TqG>lL7VLysT5mcML)cmmAB0a!y<= znp=`)L~9>jxT+iuTgB{7WI@#F0*jV^TWEj@!Xcc(f}?S1Xi<~S&?L1l%Df?3Cq<8! zvoo+#onA-Tbl_ST9XLpR?CX&s0CtxxL>RSCrRN1fits={acE(7;}_Xn)?;!mCrXAE zP!YaJAc^rJWcWLR4xvFu46fB`wt~yaAV<5{psI)cSN?&r;DCU``lGn+Kmn@u|aI_n3 zQ$P~b*{Sb%1G8McR?~CTXJ5Q7T?~QD3k%tTkJ4Vp8Hg7I0)N8+F`6b6L$L`Z)NrCi zhdq^~k!ahIeY`4Oq_Cmn;85n;6Jrye=e_El)QTyW$!a`5u9jO@@jTF%QlcH;rD)oO zYl{uRS>ryu$V`Ep-Z0v5s9Y*%a{6Wu3)udREnJKtu8);w>>GTW-g>U|;+ea)wAteb zR-$oC58kBrk`1o_(KPFU@7M$2=LF47uoVPR#46r=QZn{WCiH*880D zb?UYQ{%C~ujV=?-Ay11p(J{P&PT$yC)vy2hztGS8^gqxr_8zUi@)a$Nr*&vy%mSHo zNt8P&j3HhV0^qF4{B&Li<_o&KR1J~;n|J%xzl`RXpOVT7zW=#DThcQx?uLd8?Vi>* z_naBAxId?2E~&}MxU+)@d9HkCBD}-@I5=WxK0|>AcF& z!fy7ov(pzc;pqIN+U0@PSE{&y#Ex{n_&=+gDQ zZxza%QLHvLH4_nDv>OV16%-ahGUO=^d&_bqq9*p+u_kwRc69co7xciX+i=2_9JDn~z$Qc*&K}sVKMizg|g*_a2oNO}^N_8T^;9PO_ ztpo!^1H6Qyfar!7>k=43LTaI{vt-I{F0MJhC!mWU!Ajz@lr)zMWx;UB-w|L#lN&`I zj}IaO4}le)gLz0NQx;@=x0Q^-N`q&HctDnY###`cZtVFi@HyZJrvk<)Ee0u7r+m6(OPOo8J1B8d|1rw=nDRf{jzrXwPXl zP-!BgWU^o^`i?tqRpF^8^)G+@*Ywwa>?3Lwa!MCQ1WwF%P^LUL&o$cjen3fcb2%-q z)q(1REb%k*+<*BCW${N}zN#DR4UHG$%H`tP-tDVhAF3Odu3RI718xYZ)sCrVN|&w{ z=Lb5tFQ?@jb?xnTP5RVr?x|I8tE_<*_Z75neoXroN@{iE+8*yZ0G=h*wO3K6($>~4 zjZucqVxyr44G6%)*Ebs4-s@^^Dych9mUZ84lY08OO(hYK2{Iz+q1BUW#k>afwz9pp zH7Wrx1TioHOHTF)i$)Zcmp$32Xap$3Z(>8&>w4wv8BOIWdk*tvVeXPl4tm_g-&jnE z^q4yJil)Yry0UfMZzhHIA zYUYYyj~bQYbzs4w$SfCPJZsnkSa7(E2uHd*yKQ}(3>RLcs)f1o4~A`{qdXFOiC{1j z0d5WsNX|3D6s`zZ?NF>8I%V?0&1bIMjn3BV^Eg{Y&G>Ys62OfdTy93d=1#6MA zWCRGfEr-05P@$3001BWNklU6`sT#?7S zNwWhYf*3vtrb-@nKM*OgE_f;f;G)3D#~LPv%s-77h_8%k##T@?oy*xYbKM4y5+y0I7cA!y@)d1uw$1uhOA8Z2_u$*y?mB;%f-bm?)2Wz_EEenqL)*E! z(bvvy-+QOB)7Hx`Z5vjaFC?^|hRoHvD!UzZ8bjsMU5yn7n&3>7GnyZdp;a|(4fMpW zbfeYN;t4#Rp?3BkUQrGnrW6EK#|Ajx%P~ZwI9&P9_ z9_mr&`NeR{WkV^oH_&Jw_=Ax)=bS`1m=BeZ??s#lfBkE<{w@*jeWE*D3e!{tmihU@MF?#71^5Crs45KfaKy(Z$cfM6S; z;wUWvg7!e^LLm9(1Ga3VK$-(&q+B`T9(DDItW!40=!-{nN*EJ@kVfbYL;1GH;0h&* z1wxun&sZ&FGC|4Nc){dkiZft>q0F>Dpy(uEvcV<}lL#3N!AL%V5M+Feg^g{C(SpgB zyGaVe`Q))E&PbBp$L9%D4T2SEVHa78MmO;kqUyfRtwu}vvAhK{f|D0Y6prCoCg7d? zjC;3fM-lBY)&gZ{3lPYo-F94~0U?q5%!OwQ!mO)dI|wGMMp)$R$L$%ou*yhn|RN&vG4L4E6?lJ_O}_1Jivn z7%W-F7=t6+U2))7#|Gd}=r_r%4*$LWczeE~U+stP+Wlcd55Dy~^v$pRi9IulNwVgy zLHLIpVhd^K><@M6)mIIX5Jwt~AxW1E4=UUn!G)6Xo&nB?Jaj+f|BpW~q;5Z2){S)- z=YsVPR|b@unQT&*mS}J=P(BCY{XqG2Uo+!rEtIn=&;cF*kZ9y$v!+2#1uz6< zLNKu1ADT=gU!K$3-}Bv05o%HSMcHy>fg=zG{y=Dcm`%1^o{bll84HzyqwzXrj9ypp z(3)D22z_AABI^NHz7tw{xS|N}lw4*8ivYw`>znhJbRit+z}&^*=2;LbTmu&n;eq9V zwQD#h684lOce))1dKednl^2_xIl-bN_}A-z=>`{)X+qI3cN`kO5evw~BETNNBGE+i zd)xv@fXF;>K?fQ#IR1Q|1L(ud6O5F`An?!f@sJS}+7uy}NzV!*;^xX)!C{K@;d3w@ zCi$r>BoBk23%D{0ivvSNB8m)=!@LEJ8q&tBgv_Cgl^CAGilaqpT>YCRHyqPi5VhlV-CUxt`2V&jk=XGjNVUrU=J(CW?C}hP>ov{WX{d zi`{+UV&pid{LIWP!ZuAKfC#GbK1Pt@Nha_f0`Wdj3A2F3$@BDDEq4lWc2741@VuX+ zCIiG3n9q^&V4m31+y^#BJc&_!CXo%8_Mp{r0G#o0AFOVQZwOF_^T1}{^_nrjJOJtK z)vCJpO%LmZXC7Cr83Oxs!{!qqFdJk7=V|oXH@8pMZUisR=RQ*8Kz^*Z^W|9qQ|Shx zux0~_&j2%xuJi4_uWhxowjEP>BCYM6uJ)=@xkOeL;|X;T@nlbxD#jGNEE>-2R{k0SzJ?N z@Zu!2SL5Svb?V#WDFmT<KSDPo3W zkw=@G?P@Qc%?^B9qaHoDnxpq|5C0wB*a5Mhp-MCR^`^JK$GM8Qs1C?=z_mi;6@ln+ zL^B=M5H~*@D&kF8fBE7-?|omzLXC~KwUyJ8Pfz*~a$s?NTs{iE<}{g-xfl`R4R3K|2=2*_!Dn%3Kj217;`AuWSLA)ci(kd z&p&^kIT^6ja3Kj0y4SboC6Ewt_SAPM@ZdIMH1y^Sk#~M(0dDJt z;2DJg{|H!QC2Qm4aqdY*i7g{mmV5E}5TnOjAlkN?J5+TqRtW~P|LI-H$pysIvgr?{kf}@Ou4j+y;xXEhM!iK;i zbKZhm+v%2JQ({q(72#*4BFva2)>M=~O@*Yr0zZr?Q$vABAhoioWn&@y9sy237hyvV zx96taRHjf=zt>c&xu;|@KpAANkm?w$eGXc%qMNOzg=aCJbN)2zL#7ami}259GcF}& z9Z+CBb9oGP_;6isdEG^Yj-THK8T?z;aidg=5xRBdegojICIP{rzP9a(kWc;SFsk@ost zd%DG-gh>PJlja%;WDEf47LYx)dQUH$-BUa=qAZ|ncm%wCBs-WdtaNxSnvJ1$cN&_S z%;+um&uYAwcADQ)&u{9b^C;%HrYGX=CbCrqe`L?Wxx5a| z=XCe6lD)!wHsR*6%@*(`-LQLl_EJ;ZdkA@H@nA-a2gh{bN=+NvZKp$)#!$jT9onDM z+;qW9evmXdh)B9I+O0-hiw9f!)E9dC z`G3{d`0S3}|Gk$jOt5f#*rJXc2wbpggvr!YTmR{^hxNaH`n(kZrIwI^b60XZIXqZd zq`mx@S=BDoI$H&2k!-24sw;{Wqhm_N$Kqf*j1z5hsQLjd)= z&g=I4fQ?)BhJ0g`z~cT*6$oNB?l-GyRlg50M=NB z!BP$>dI;Hsv0s!RY!?IacwLyw@g~KttpO$HY!M5pzHx01jfF54u>~L85>&*&Ilf@&*0}W-PQCEj9*N#zu&pJ6hYIp#qUln{T zB%Y9UA?vAF)uFZcBOUtiKrrKK1_NN{=Za{|S~gmQ_DQn94=%{26;`&RVC%WK|~aTg#_ z;KfFQ&X(s3d?)-H1>y0T>jMQ8@NvUM5&4hzMk1zmy(Uu3ZaKcKVxi`Y6V?bA4V>HA zNYQ!ZtlBe)=mNMdhnVY5O-?D7FY2y)-=eX}eX2EkYIR9N42cA+4`+UK?zyCmFbouz z=3~CXN*4t**>7kx$8>_nw|FqGLkFoyO!$kY5y4}N3a=tL#qTcb~ zls@p@1Nv{?b6AUqCR9krwX{}y4ZbMkL$y*g=av*PTC0nqgz!_cEZDaM)cFw$hL;|t zRoXqa!F2N?LD2Gf%9HEufy(m-b=Q3lsyH^Ta=Gk@XXAv03OBMw=SE?j!_~0Zs0Jbj zD`^ofswqbX^;0kRROnCYu|JbO_TyXn#AlZE&;HuH4j!s&eIuiZ@xIPqC@MaP>&`n! zgXyT=?db1)|1rB8#-Wo5&Cl(sJW(|~asJ|=5QK`wbnM8g(y6|?0sn&^Ic1Bw+3pz* zIdXVKv3Oe>>+>G#S6^6*1ZqkL4qQ_*+0oY4v>MHE&t$+nIjy{Oe^i%R7t)o9FAF5(vtJt5V=u1hzkOHmCazp7`Jff@LmgV&)AKJutV0vfp6)rd zu2w6d7tR&cXuzi))8u$t3-fKQtmbsv$sKL)q;>Yy39oTF*49IB+R|5^%sNkab0hF* zBXAizYagDE@0`(KGz?#tf`!*t9xtnz&FT$re230F^_XfqtF}bbk$|;8=I_25!w=px zdx0+7$O9TkU|oBU`c|*~eS9pfqlb%nc@0ZEyjX`!nv9#j2s|&$X0^C~=s+7;Ue{J? zdiLC&^4X*wx^JIW)>?Y@Y~87cbCY`r&J!NZ6#dZhk z&Bc@&lJ1&NZMCabE2iD{KreLq+UyLpFrC);WJ=f8_H=Enshvts_2y9LFIBa%UDr%G ztIpkXE@*lF!mif0y7q3B%acPnnx4@k2CNgzn9L>S97_a&Jc`eZg1-Em*<~&`z}9g5 zC=#k@eCoavxd|OSeuoOhaTN>Tb!f)G2|HSBIes!Sz2cJ%G#Emy%5|#YdEff(4}Et->2z0zX2&!+ zmiBbM^KGko`uvWq^Fs$KI&f%HXRmFjTJ7t@Kd_;_#jf_v zw{&H#u8m4XuU^~n9Kob#g%VlZtPShTe45fUVpqgdsB;7S#&kxRY+m~h-zudF5uIr` z$8L@g33$KRUiIsY0hP(Q4j#>DVmhN?r)T!JFI}kXvzMA`Cu6$rmZDCc99J(L*YXBD&Y{auqdC;lT2Gg+ z_w@X$HGS%{m-TNx{fZuYYR!0e9G3)&^H!6nJe?Kj_a$}uDRp{D(G-CAQdAil36*fh zIA3vsRdfSEV3Wrj1^TjCaJX>(ID8It^*XwG<+3(5H=G8;rsj+2EiVKv777BwRZKzF z`*&D)oL7{G*{O(NbH7L!@TOCDG<5Y!MnCzBDcyajpl&BD*n=Nw>z{wJrFXogu1vbG zr!HLA{io_`HM4rln{Mc9FK+AhTep=?_4NHe-O#80xT(|69a5v!)!_rzlumW^)fdj| zzB?-Fbqadm4OjK$r9$aQm+M zy`tW5*Cl=KiEB57vP|{s*SBlwc1Jj#_zZE=a7Yl~~myag;USfQgHcx-wC zN(dWi-+WcS^T%!d{QuEcX>v{Pe)qYMo@7mkuR8KtxPM>CI2CcY(cvqe3_Q@pH62AK zk`5_N8Vne`ode1}!{^}G1B0fjloDi#adJ==%~z>ZboEuQ zUJ+Jwv5-+QpK)GxCOI^reLkB~K1XRZ6`r9>N#Lr0t&Qp}QpU&(f*ydtpN&iB8voXB z9ne4e)s$|zZCiiqqZf7f@Ro7nth=m8UpT$$UY1z-)mBeum#Y@??61$9Uf0X7PS~T_ z>0fbH%{_N*=+Qr!(HEavwYI#zJf<_}V#=iwnw#$FxBqm>nJst>ygu-=75$6f>FGB= zUDEW-j?P@#)Af~c)thnsyFcja%a6xI0A8eL;*FT+nr8|{Nmyc>abgSzNX#Pwtc^y) z)rDleaMm|B)(mBlvT7lYaS>%Pc_2RLwBsU^E5sa7jE=`dSyXuAd|AFw3F+2ual>z9 zZVyvA^@e?y{bMh%MNu3mO|H`$#LZWH@k-MW$(^@OXns1Y&p)=N-+gpNTa~URiqhff zxc24R>Ngtd(vhiN(Zryxefhph=}^qo8uqnRmp=DgM}PcMPmexX*PmP)=!t4ltwKtR z2U03d#kJgM>+H2%2SCS)DearfYu`*piwkL;Jet;>w`O(6$$}0pWHmFHQZ5r$p%BBH z34|w59~hHEWbm^gZF?f2I`TeUqUrezz4~yA$rEN~EsRIFb40)$!5ai|sF3M&8rodG zV&Th23Wb8kOXC(0jKe9oky*zzjZ;Od7JeMYhNeRv7^{Arr*iuFjGpL8C+4zx!_hHQ zbB-4MWA8txyH9NB#zsQF`}v;Ucxzf;(oox#F@5^6CH=#X&g;^WTvPv(KX$?v(%py0 zl+Rt!jg6%KXt1fB52g{r$hTUze7l;7jQv?>lC;td^!<3R*+X6Bp6wzPinjvgUd= z$mk&m;w4tjYx=;um-UlBpVY(U!p;4GzzgezVk2!ZcoP1Z z;(F?tIsN?)uj=1_s-@d+-POES!3b#P`+lM`)SyiwN!Cnv4&v#EscI$YAs1gU!g>Io-3WMg0<1!~#|!hny%k}!BV zlzbBaU0S-Vwd=1c7w=hdjf@EtCjxr(atIIzs6TLbZ(GS=-tB=6IuslHGGuO%vQEV; zJD-9HpgL#($N=J4FpQB<#^CEXwlPpKA6IESZW5vEYjs_@-qhv}X^BJ4lww+#Olqgu z)tP5n8jr_RNJ`MI%ugp(YQ(iw@9XLY1u=4IG%>QlE^LO-HpDbuNEk1s=nUenO1-Ok zv#)q#ps}%(7WWtR-iHoqET6K)UgQQmgXvVIwY7$pH(rM+k0$3^zDIe;c%C$DhWjG& zh@B&xE(F2oGSTS0+ye`NeA8hXye-SumFbtoM=c1)#W$!m?K#nA>v zK!|wnv3r6ycvI*jbfBtewU~&ApE(*d8uB*MSE9<6(RY4LS?tPcNq3)GS2CX0L~2Uy zZcis>lKS}%XSBWD(wpAAq^7a@d7D!Q3n&=VHnHB zL8F_<`I-;jQ_-0h^SZXt@HnQYTH4r1sF$qhk@sxt_x|Ie+kc@jf8@g}dg{q>ee-Nr zKmMVr9)CKm$DT_op|*bMA8zTJPmbx)uMPD#erR1!pULaet3_Kc*(_;daSeJ=kp?6@ z@mPpqVA;Dvc0$>7-h#W;s(G)CxQY$OP&q|54E^cM(F;}`g2HUHOs?Pn8QBcvb+Ts8 z@g>;oVvNv&tI@72!6tNyV$VGSQDiWiIq1orf}n~jH0IiHMo8%5Faf@=$#Wq>!<$Ks$PC@Sx-M(){9qn^)ugpi|)E(S?8~$^u0g3r#IbJ(nmfdr)-62 z{pbp#%D#Zrq6|l`iPF$K)}w#>eA+DyTqO{L*-Va7FGElxyqoLPYBk+hzNWRM^U5Xr zE;7Mu;9Lb9f2e_R&+r-M7Tg`-+ilWqJgx-7%{}@;+9Z3H&6iEb)XO3CUK?+qLLH6v zFMb~%Pw9K!vrnx~S5H5?t(A4445>Up;1hK!-Kd2;=u!#F(wI82p>A{ry1v}8x128| zRGdtyR7`7bGN-X3&{s^`RPF6F)oeoHN{s?Z0(~VjF~vJE?N$4#Hu|bH`l?j=W~R$z zWF?g%38~0f{;WgGH-XBfrKmXd6R&Oku>$FxW>7^G7x^}g! zt@@1q^*`HCqxPJMZkDd^*Y@_bKKGSHefksERoT7dMu*Mjw3e4|(fV3LTa8)$=C7=) z-+5X~OUM1(M-NDq%ACIP_%Z#5|Lvmc)w6a@YPFJS<~W*uYbw zYfA_8U;gD~edTNG>h=%#=k^++`KD;bFTUFf3<8un1B!y%!L*_X6@piIG<1Q1tZWe8 zOE8A_2Yv%s?8q<)3kKBi`qw>oHng-{&_De@2fFuYaD8vA6}4L3)f?ZC(9C2@zy8@3 z{rBIypz-mZ=H}Y^JD=FoBd5moN$ID5w5@DrpqJP7^x!=i)v76d=Ob19 z#OITG<8cHn${ax$?oK+{=!I34NEICLtJimK(y?MmlJe-6@o8uu$*~4c1~(abZ|E|f zm%^4%Jm4I5CdWnqO)PWHCFfcQPcyzXnxdeA89@kR36rHkDLn!e3>hI5j6OMFF5FcuE<)4w#K$zo00yKOyrx}=x>b4AVi zD>gvP{MJpXn6LOz**lD}+imHIr)KoA53cEbKi<~;$IHfIpE*<35BQnYIAj5 z+q)J0>;I{vjZ1Nr%fVaX98*~4001BWNkl>JQ)$ggWP_T7~l@ zrr9|PHefc4IWHN5fS6gO-gA&|XD0}>QZcUm`?8uYXKeXG!&z^4b#VWrZohLeG$Uh-7VZN79bv9nWEojeJ~FQ)wMJRMc%JrbH!z zienkI8tuULh2V|63gjc_v=|9t%B@q8qDHCmWo5@9!a^S5K2gw+-|>ap&37W1c;2v! zvB+!JUN!&3vBSqamlpiU1#k4gr$8PhuC>3YrfNuAZG>@%c{ST{ef$^p>6iZChTeN; zSN9z$noI?&dv_(;rXinJXJwm?)}Juj%Cen7;FYY1K9k z>Zkr`UT3Z>x%=#(x1{&p*V6;H9?{2tHK#8>e^G~~%c?cEb#n2XKK!0TYVDrV-~ISS zy?FJyQt=D=;YaS(rKQulw!W+VGq>wkeq&6Zd-6pc-8ZFby`mEbF6c+zb435{N~s84>ruhs2UA03B(ArHM<7mnQQDsNQ%JkL-qsmaG*{z%JuYuNH3ku z>zmE4?l_dwn@>(^ZedRkJ+!7v7a@hoIDLu@mx%QQAJ58-l>W)zZfhnn)H~kX)NlV` zRy)woy4Pw26;7Zo3D>hq5;=riA3 z(eZsZ^no|-)8GBMW7?@)RI}O87avRMnSWo@Zmn)F;PYQD>zDuCKwo}#O+Wl_S_fxS zW}EYhMFJJemiu+m^z}3AI)AOMW^1Uu%21h9Op6Oi@!9EeS|^W;t5)yp z=@-}a%qv^ExZG5uCEb7LKIzbeQVS&=9?a=*udg?+Zt2X~HJ!V%==d#%RN3xGV@USGfy;b5CyrMzU=t~8zrWXPUt4gg(1qQ3xh3WX(n3?%Ij^r0VoNk8zjM4T6O>R8G7x3G{s{Ps1>c(kfVP8Iaw_a*hc zAK2DIA5QAc$ESP%nK#yFaVl-W>a;k5J7Lf2qaV4dANZM}=8|JNK9};|NCET__h{4H zmAN8yD&VaF)(jtJzJP@$g0W`~2?fDj`6Y zAWI1f%pd@qMj26Hc3W8B1C5o(!dN24w^qI8rmNX(L9KR8*-X*AC*3}sSV$3!>Dn6C z&uHJwgx8+_jjc{ASdhJ#(iu2=V`k{HvKa8rR8nKdNnOh z=QJ@E7|LqZhIU&+%^tZ^D;Hi+DHl_zkaqhfaAcGebB86&7agf{)5rA6#dSUW&Ufm@ zi=WX0x0F@RIx*VajBJRT6C}Va2yv<^M-5k()*Jf6$FC}#FDhFqtGT_Q@wtPlHDF&O zrn95>zwbMA%Pl9gb?H<3g^$f@@la7`POs}LPp+ywkH7T&d}?Cs*{$*&S6HFfqn;>_AEP-!ZG(PfV*gKPgR* zhlnJHw%SyGv!)AIw{`a7re3_bsihk&b2a-s#{x~o;=YvbIytU;@0wC#W~%)0d?DjW zD^HHAjgq@C z8{mfVpztGD5Gr#JLYL3KY73gP*y)e~LezJlZakyjFk$RB6YneCt!chY*=)eTprz$& ztdR2|;vm6sYT|QTP!3imVpcOwitEWq4SdI7Q^kB%g-p))E$wN*!m+v_TA?2ptXUj% zcd_pER7gYdm{A7?uvpSWN&F7CwNxDCz;@MbHSHFUT;=f+5$mwo+3;*Egh0E2)qt#w zn<$BiB;nmPc@U3B_3Vtn`Qf~m&qu-+{FQd=h#{_t1x>L7*JOQcZSof{9%jT)%F(_$ zWJaVgu_>Rx@*(BHCG#kVp6F9&+N-5qdYI`fGODjYD{NHQq*ulQubWcZ%a|7*d zkqb}GGDRkR(@kO|6bmige_vJSF4M%cpb0QK%nB;lTA^wX%Nb|`tCr88@OTURv6y4N z!#p6rB02Bh(aMa>qfrb4>lZ50W~Zw>>1@zjLX*ig>8DmIx@!#+8~BZZ>_T>rvHKWq zcfn)W+u76Z=0>331V`;tg_u#h({x$2GZ}ha)gfJnbuJlqR!6h^b_Z!5+BxuY$c>*|OC=y_cMAF$j2;^3` zZ9&O%x5<25KE$y|F+N-r?f^|p=pm1e>4F;;WdfM4sRX&%ru)Fb&y!KD$40Ql=Vmml9hJduG3<5Mtsw``~ zveD4xYc*|mgMvzCaxQ-9N7yPIY7ovRk000c^pvvwi+caN7M058wYJ*Q##Td96B%vq zwe%Di^IAtUlWBeTyAJ3B?>;2joxSkto-VC)OyPOtKvA<(d9(Yyd~sLxdRO_#IJ|bF zrDtE+(c@=Ubmq*mZoG0s*=kc|im*ya#iz5HJ~E-(ZlBg$j+R{*1pyiCf2@gRXP1)f zj$VGX5-jC7lmk zRTVN>Z)P^BHv-ot<%~!^Run}Qz0mpzypj!u!r`8@iwXD5cthJFVQ^sTDX1>VeTB>? z;G}Rqz@n8az<&^gDuS4-2c{r|9ztrMIhAP&Y2_CwIFtu&HTQSvFYaLArrWVk|8)i;2;-{6~s^w#TU8BMHIj{c907rKw<|H49PJPSqL2}RwRm|NRd2;XZ@D> zzS(Dbuj;PquCCzsyj3%O2+4ZSnXhN6YkBKkp8fehzJBfRdm4?3`i*~G(wDzIGp*qt z|HD{+@?KHX7k#s>|KZ1Tedlzlt$M{U2<~i^^b?F=hkfW6`& zfVg!r4FMJ+^2Obns@FkCCMJx1tq9c+fy0pBupig57+4pnF}S=o;utOFwx&9rZ37g- z;mmc5MPMc)aE_OWXSgc#gV^aty{ge`gr z9P8<*qVC=+dgtADwG0L(lvy9lf#*WxOxw%GE!)mEh`b+-xkFmMny&RDKk}C?ugTfd%aB&+->lJdXz(|=WOzWIjs zz2DJ)@^>GowqEJ~`Rxz&m9L(t*QpqUCQSUny|(ThHbk+C%dS7S-TEh!ac8IZt7}S|mrC02?4)m3L-lI~wQH!D&K}zEDe3MYACYD%wUPnS#0yt4%EdaP@PRkr z?0gVc%pE>b0I-e#tw5Q$zJdzx95=*lBO(DP4@@Rb9mX2ZF^eKbUG-db1_u^{jnNU_ zIKvM1fYd~ivnspvsUW}Xs%qm|HiFJ$4DiRU0?V7EuBXI}8^B8ed@0T0c0X3t|I8xN!+iHi|k#*rHI5ilJXO|__> z`->gDc7T+hS|TOR9!h6*>e63&wV{W5B^~rU{lsURdi#DwZ+<#ZuwLl*{-~gz|AChN z>K7~e(H~mqpZ=z&k6%cy?^pD&U)GmiZD_Au)@L93dh@Vqwo#sGKLz@On3bwpSnH?0 z*wo{G#p=y5JS7OWMV*lP>r!@Mo=B1|aRff)LjFiwui~J~OW0F2n|CiDNKh1&G+oce ziSsbyFrT$bS>>#<26oRc54l)+noJ^xZis24Sg`~I5=Ao4-%V_CIG6Lpm%iTWtaH#mjRDJgTG}gUd zO`rShww0QD|M^rOJe}$MY_7p*rRmI>8()8=rPm)ejk%3ym^0XOo@R6D_&UE#BC@-Ar?ru?U-S_p@I@WF+sb86EuesEn9uR4NPDA3rm<^M|jtpf& z(tv@QM3+e(gs8O|MU$S(tfQ)In@TE-JBSzJDDa_w< zvCh-ucXe2s>#$c*y9%t{Cp!#a^=e%b6-Y`I7fyxL+H5*>EXu7w;A%)R)rxUiq-5-d zNUoGuGPQq&iipH&RLiQM_%$c>#&cKIf;3*jp?uW;nsj;T)K64U0_FMKY?S)J>r3e= z?3MtmELJPk@WR8Avg|p4!`W;W+6CZ>g|Xygy)sD$$pV`tVC&^Fp*Su@8VQ{B%gCXs znwFYHs4$i$O=F=if^3Ex3y&|P4~9*ZilY5kB8u;r52_IFvc%(V>MLdeCy`aGpe*4_ zVEh)f-}TJAWX{5Ms^9tTo`!`h{o>yW^l&FOpq+pI>uvqZuT1nef5b`ItU8!_uj#P1 zVW?J(hT+5X-~=j@_DvB%8e%h|7?c<%pjL~REZ}%&nxElR@czyzYPix_Bm+wqA;m)j zT+B=$A-mBu5_8a1)NK}Zf2XX9cxx4($oTg49CziZiyfYDELTM}lkkNHM7v z^R;~cmH^sjWZz;_wQ@P&JAjo6auc?^q7fyer#Y2L0J94gHUJQ02U_ncb<}FaxH^mt z!o_$`Oc^xp&qCoEi%l)%FrEcX=QAZMByDF80KlfvEU8}0osXd7fi#6pEz#1b5Vl5V z6XSmF$6?#D$Qd`=6qeZGBtmS9s8|pbSMbuARXD$lT56ccnN0#Z#-_!753FOOrUDuR z6wxFjXG>-wbBH;C`oXN+dt+AwK)&ppOxa@Re44}Cb%5_km`GeCbClCP{V)G)s&`%h zZnRdT8tHHUXjk|5Gos9%K>{P4o=uwl7~!P^8BskJp<|D6i;R`Zb(k+lC$?aW@?T(_-W0VG$5Qs%PIu<3v6$Y%!+2yrC>qcc#ioRV3IGY1IZb$K5kl!KLnY$a4>us!@wMJyeo4^s(CS! za^1Wm05B!JW>X7bIw_KBP@JAQu0eJ5i!f3ufIGpVQLkG82Kt3GPW*1Q<{YCW8Bql# zx63*#a_6u|0_EHS(hX)h5?six&C=PSyl57?9qJCQ)CsT;Pi?PQxEa^jx^gB+h$T$U z)|O#OyZy|(myO^`1>aMq*uSRrN&`PfB4Q=zwv*Z>GU$z zgZ-jDlPq=jPF;Hkb+x+K;PEA__3~t)XU9u@^lYKk>|9&LRIgG%p+}Y>K$pJ)*frh_fl)se$776y@R zAczzk7-u74Rh&}+4U8Il9%X`Z8y1ogAyh65isF5(uJdw2?2*1P`-JmQmzN`*90Q;o z8>a?cY)Y-f8&`Z-K=RTxKREBMpMZN@IaS*pQMT4D@XY zF~E6h4y4?U?8+HIoG^bt&{@!IcqTl-iDniVIK6YcpxQFV#BjrZFn61#kfDp2*(Iw4 zZRVS`BYf7eOyZ%Jwi(H)$`%Qv{YT%d>qpRXsL<2NQu75>x{E4S3Th#h77{JuNVCvYHJJ_)RU1W( zu4A1YueE=Nxx=J_%^AYaI!V>UDQD{~5#_Pagl1;1#{7hBH?<^%X04`hK|Ma;McqDu z38F#e8c;Z&nCTDG4w}!BeU&T?2@eM;ngiOI3m75cg|S3(XGX~|te6Q82lfh1xn7tJ z8rw2Og3E=H%B`~eN}_rNG&`4M;g}QaaIJX=N}mk#0s#UuAN2{5_-SsfxP&Mi>7~R| zp^8rkG&jt4%qL8cP&w!9!!&AZIb-C|hO4W&K7Kw?2@cD;v+!G2;tLXI(z1nyA}Gab zHxg}atu1r&GAw8oOXDj~lX;?t_kG>%?io7dFbuVbojDJ)&E@q%#WFslvf&=@b$sh9 zdy+*PPh7=$a;m%)K7mx_dQtP`TGL>y;Uv*~z0_FmKf2+>oz`n%RzvZXe z?QTlS%(ELe8$AADP!RmgUdgy{G2w9RIyMW?i#SrUSWxVA*nVopxET1N)}_>Hr>z%> ziX=*q9*NY}UaQ%r6iTWvSgJ(ccgt}+-ZzP`sY>w_PU!5rNXg+Sv516=q@XyesJ~k_ zTPINxNO%x7!jt061b{RL_;fCjGk?BihB;|E3qDY-MwN+zI*pn+TAB^tB(m$Pu@Sa# z7O7CIsy&TVZ~7`$tIqzobdZK<6X)lbnWvnvqN1jQsfO1x+c<2-X3N*kUQavw9RYj} z1G9!C%*$rYB+-mfnn8!Ja@#XiRVo$p=;L&pV>hymo=GLd=w?zkfbTYEm}i+tVr{K# zl#^!I+|43t`E7~5(5=HW%T+ERq z@fA2cXcj+=114a3B}Vw&Sd`07rC+b9F<7$7#Zl~;`H6R8-I_TnUTHF!TL`0%DWOI6 zYhQ5^YaJ$Ls5cnRWMQU^`7qYSi-op!YHDsbjgexLu2q~VZ8lq|CRfW2Nf@&Xak;gu z(hAyLvZ8WIEFxv1HFKU}A{QOOVV_n>6SsM1e}LmrG{Rb~64`=g>P%9YOp2CDj{uUb z86;$;pj=ehqyC|TmPG<(ToD-f1;&N_yHs^mOt4W?N{NJ;by6|E&B8EE3aZpyWtc^{ zH2XhV91TH;{u1fJn0ggYbBbO>j#)yCL9$~GS%X|fp&o+?0J7IjyZk!nbX2P#&6ssS zXl2#31Xdwqz;V`6vq`&Yy5FhltKS;vyB|__u%Nd;+q7s4s@E^#xq7X& zRU4_-J@xw)-8pF3ePE(!`E;h!ubE|FTyh06DoxMAWa;mG;V?3S(pq!0GK%6RQWQHF z0^9)j;;=oVt+0;K47(kK%zszq5yzZNePTR$M>rOQ*D}L0^%Av$?~H(Fn+Rh!@N{ez zYjE}Ys8=Z&M4Nft=im=o$Pa1%VW`_5SyE!J8Di3XRF zUr0@*ms|!PmQ!FgZ4fKeQG@f6#e<59D$62RnWRm1=bOf6trRS@t=}UAs-)RCFtvOh z#47oT0I{yutC~&cY7urq+IOw2MHm~}83dzFT{hyZSJHSG+U+rCpyE!)p%L!cB-F*Z z%g$osVdh`~(a&bLqLS|b(vgN}PL(ZMvW=qHRr&QWrI1EUCYj5kMC*V6n+@489gu?B!;R;ZJi-h>28r9YRB^Xv@Ex!Y=qJ%g zriocdS!(MAEssbY-hof2H931fJc02|ST6`$tc{G>bFWH)aigj`1HRVU3c(hQuya2e zT1Tw`*2mhkWyTId%qRU1qpTEC*F_+4jAvG>RE&4eHAGP6o&1Qo3p9X%AMUj@o<79=T78QbZvE3=^?%jqSK5T0= ziFI-o>ilZ1>+8s>P@5LM!ckk)_KvUJt(wNOr7m8~bUjZ6Wr6t<=w$DmW#Y1a+1C(o zwjoL!;~htdE-&W)Zksai$(*v^88BP?t|Xid0UV5Y&znXhM&i8wObhm1v+tx*!;(mD z&a_x$Bp?Vf4T78#WuAj0k&dI{KxFfVlf`e9Y@yDl4%dKZQD+NVE7w#>8RUi6sr*J+ z<(m5&qHMOif~UzivI3R`>RjcG2N#^ZnT0jMSz+GsqUz16QmfY{g<)hrC&|zjv|ld^ zNgD4s4X-#}{{&)?H6kgn_j2vi4^M5g<=@%HE?~C>Ev=w~yDjy0eBmI1V8__#84E)- z13cbIq-+YDgLFHNz(_`}b`BOJ7;FHG>~MsW=i}ltsXQYn+=C5A8%-A)g-i9(1kACR zST<~8fg?ez?44(t)P{*Zo6EzE{Hic^L2wT5Gm zy<8SmtL5y@^T@4fTgzlLX5(f~K`VnrP&x#U2%ALXA-D$xO((8k01_v*XQWvkXUQ%A zAmKnI9UCbRb65=~Bl!(*oeM_DFVCh%oFVoURHcp|l~uq{t~N?)w|ujs&cfK3Gbn|f zrmt=jqFZo?^5U?q?q;ctwcXDFPM{=!N?j4 z74~HxV1Kj>cn^|o>Y|>A$z~ofHOw>VmP?yBvbl%=B0z%B!YtF&6KToQnbUmDgoEYM z%66qjn3n^mC2=2!7xf!yR<8jEpW}aS{4U3%axK>*2kQ8lO>p}6RR+R#LLFTKDk&sZGcca!v099hEZG(XGXlRmm_H~L4f4Xrd0g!w2Ee$ z2Tg4q_AROB=)+6(w=sP*O!BRjaK^B|up@h#&s-U!>2zW7r@Q-r8o25clkq~+>D&?l zkeV7bi1mV2!6nv{k4HMYinPC5Rkw{@D%EThYxizl;cThx9q0UlkSB>* z{xqE~HJ`0?bslMWjWp;8cDQhvV3a-zgQD&~KvF|(jZ~|z%ru0M(7SGFPUZS!4_0T=7y@*E0>TN#%8Fe!Z13-AdV#lB`mS*=dP02L6*Z zl~J=SHX0`q*d`d%<3()P5X<#a(Q2tiN2=C|Fj#3GEbaSnI#(PnG#{sW_Kea+b$#LU z71JniQbT0RKGj)Vw8<)Rgw>5r>V$)C7U{t&$YPL$M*9o7K2A69!I%Q)DwVJQ0?;8=sTxv|ktV9JB5aUfwcRno$HCh}i z)6%e2G+_njC^h*$dLFA$qk=VA#wB$-QZ2%4x7Lf3AY*i?cDJSNF40Yio;-7S=Eui@ z#*>x8SY|qDH40|B>9oq0smorRN3oe=(KyJZz;sHak1?kTaJtS{&3?zEM)ooc6^1n) ztQ3TfK2loC2p0A`Jlh^NQYcuKRlu)tTi~3>FM( zI0H*`37c$d-`Dus#eMesZov@gK~Y3DSHE9(Hcuah<*I9#b=D(Y8=_AL!OAl6AkvtY zks50?)Lcg#CfBGbMa_mY9X}f>nEHDD^i1g9ZYfDB6 zr;(Xbwhr1F4g(z@T?pGE_Qd{HL%n`eR*A09=bBu5YPSkn zOqOZ~B|ZOOq~QgC-Yz$&9+Oi=YD8WoCn|# z=K$(NgV~m>0tZNl75UAwrFWybL~*28k;Oi9EgB#(>WNinFPNZHUb=OG7BwD)u2MEy z9!nKpNfhhqa;D*6ZV6J&PEGBtrkNyg?4SX`tdK&l&L`q~G`B_uT9Xq_r+PT4$TD9O zXAhc<7izS8wRh@HK!9i)wz<<{qeY@HT&dAY6KF$pNCu87(&rYUW0 z)pYlM*Q&Tg)0KvoGnZ*gh-j7}i+YDy0|#G7Na3((CafS>nIo*6X}iAftH0A$wN|o7 zDoipEX0#a7{pss`Za!qz2JebsV;T(RJ)F0csOmIyr|YEKe!HZ83*jX5KP@7at7|nI zp4y#?*`r?`%@tiQwQf}O>g!!I8(mGVRBNPqaJQ~Dnvj`%AW$o%vq-axP|<8@W?t;Y zz<~~@si0jDXEYb2YcvpiDj?y(A+ZE7hDgyUt&a8EaNhn?=x*Qq!Hb&X3H5eFbq1t8 zXBucWh>mdFiUb6RtErUWHcV{|oB0F6A4XX+L&d415L`G%sUc04(sxdzot88LLj(1w zBvso|>Ki7xb+!SVB}AFHR7pXQ>Uz9VF_sWUFr{D;A#fX&2dNySr)JZsLbF+_#WEEJ zeC%YyL88KBt?h%d5oQJ~Z>S!iNd=T|nYx0iXjN>imrnv)6x9ZmkXMGe!RQha$L1gk z1nPmU6=xF!pwX*1hnBEa`6?%Xpp*Sf2pr7Dd9o>mV`2KF%@3wl1MlE|OBKJU!TDUX zajd6{fk`_^QlsHQ^j^HU()D1b z`3U5%g8W8BHQ!Tt7c&r%9;DNkg~=iemkOpN&lJQ4ZEuxzb~M*;IJfa=n2MgNT5~Dh z&?>@)OhqdrS-9vG?D;S~2<7#}!LBmm2$z^D;8jR3CufNkQKCl=it4lr<{)|YbfJE) zWPmV~Zm;>6u$;q?g^bCg4jcfB+(OqJ_vc;M0JCvo?*(28^%$uloZ^?TY&j=fARu6u zjfhVsWU@|19roX%*+eToS(^^Ho=u-Oq@8l5u5b}#_I46hT(MOmTeiAe@(PK9U~Ze6 zNCc!P))M!Fh-0?8zM7d-4uj*n{e!9z|Ir9vMC8mA%asOaq;XG;sP*?d>g~04{c>P` zU!G3X-D>LjhZkxzs(SEn%bad`U-{&n&yGeG@dRhvPB zwJ#R2mJ1Tj42@dREYh5fml0)5SCvvx7soT3BgWJi6!F_uW!q)j;yZ$XlG2R8PCw9K zQnVOX8&}uoGYu{mmK1h)zpI18u0=TE+p*`>VI;S6!7+p$w2#dO5q|Z4O?9-R3TDj2 zOc6mCYZ)xmua)%a*Lvn~etHyI$r1WS5nk}+CCqDoDp7V>BDb%EL~CI$ zz$VmOB?Z21R$?pjG!9VjJgse!I~9YCg7i(Ncp;>WdQ0jzq}j?z&Ygy|B%E#{kxqXx zaS}5`9J2%F4K`|x+E~6cB4*4k;Nif4F7vV=Hr4y@_`{bkyL(nOU= zRd0B@a~H=#s`1F#elCvzph1EwXn^UW;`+@3agu#%4#H-?>=IO{H#lbUR|bKiI*O8!f+JoY7hu@mN9}k3@-ykNhH5swMCCJ=#q$#Nno3U>s#HL{f=~v_q|#t zkpaciIa}$=#U<4gG#L=fC7rz(S(SNvFvG>VOgyzZ#6c4kg4Pq-nuEYH_B@XWp9YB^Ry-iP zdY$U|heI1vj#R2e!O)m9m`%A>R!pP{W{(b z9bF}cvD54lu3FIJyKTMssHoWt$bc)oyjZAHOw?;uHCa~_;rIaKs}NZ}2KHivvSsYT zMF{IeYmbZ0*~!=fr_21qQu^I2PMzozWKJs2`h<9On+i`ty^@Cdc&9DDSW>&@AhuXU zc%o51GSoQ@SBXwePSogb8D!$g=*YaaNWi!q>-Cyyg|!yNx`kd{6^bgS*vFQd&If9g z+VYo?N}Y~otCCL7PgRE7l*-z!_Z5Xx#j{9hL^a<;>taJ`Qc$h9)LyNp2X_xNKRs7# zyQQNSXDTIg1@oBVRw@%FghQe1O4tLU1fegKQ!UGVd45IhhIH}#$QTP$9OqD@OjQag z%+v~`bz1H2BUQKerSMwCBvuC?D7Z=1a85*PW+jvtTv_TTm642x6Gae9v(a4P#M7lo zpKDe6_Z1J0oSh6QABR<~sUnDVaHjm;?3xV%Ma=MKV@+f0GK~i4$lQZK_#(a+BmB;Z zX-2zDh`=F}wp-4D)FUZqA+i^(6{JbIr6mZ0yKPIV7|kd0c2YIAV0y9q(wUMdeS1%87nO{T&8Ago?`SnRxAJE0 z1^L$n`P;bB#|*L5zL|R}v<|c!9?KiKDIzkZP$?@dHnh4r)_OKIhPZ0=6bDUB=0(*H z4z;*A*J|=imEK*&CofGXC=`8FI=hy#SgN&EW!yV zN)`A-UQ-Itb{l1R^+4;nTYJ@(GeN|om#X&e$X_m1-Myn)vQl(?Zkb}~a;{`H&?<p_nL{JeO4&F9AyC z7>SJ?1#R0~R?^FENKy=;emD=Jz_Ls+En*5yh-}$?plI;iG)E8Y5x=L|^xOu$*lep* z>uNb0sMc&L4rWSo4o-IFs%wnYS4lxyR)vV8oJfOZf`5!iqA-!q+FC6&9j~+uQIO(pDB{T_5g0(6CYqw%fC)r&Nklv{ z@yw1Zb{lw4whx(uX`~ONuNAKNC6e=yY)x05`Mro?)>QwO(hnOQmET&3fscyPd5J@M~ zKuaWpOv~U7U`vdaP7PmAsJ%u>bqx08U#=9Kp4elI>n$7zk9iOwkOfepCOWy8=_ds*j3XXS z+%562rA|+294i^0n?#MVjH<`Q`h7FRr_)oJi3=x8ttI(QlQfD>7;wYI!X2GxiRuTC z6KcxYk$KCFmgP|_%c+tPYF|FewvUZ|Fs_)PHXDC#DxN%YlVoG+%O#P`>mY=F??B=C z<;`Ji&Us}L4o1VVBRT^|Fv|p2g6DC4Wc~3l@K+mJULRS1H#Nq3cSl~u*J^ZXvC(V) zp@Oq#H_x&i2#uzCNU^2L;h}w(3;_V2Yc)A{#aK8Bs2Q}USW>BTXxbBpNuoe{Hf>`v zz}}<6_Kr$bU(uC&FPwQiD;b?>IX+P^y6wWB``gJ2$0<3{1PynES8Z6@HuDSoZm>bx`N?mfwhZ3QRv=3u@KGMr{j)*kr;D;F~LZ9WTB)=b4$_ST*Ycl z<#tb6&5S@gHX&8IcT@nQW9xzS!&@bauc*;yH&CJGtFX1J^ek067@BraY;DP_0!WVU z$n9s$iRI>Ftw&GXwS|h*=t;r3Or^2YvJk8ol@>r8PEA$nJvQ@UJj|}e$($3$tRJiS zSZmZ-BC9%kN+v@~(<^P?({%9scAQs{;t2#fqcfN?!?BY2RPttK+SsrhSz^>HZ+%Kv z7Z;W=)bxGJ)`gj2&qvebR`pIn_a0Vs&_XMz8G3D~ik1bJa7NI=(`O^2f7NQLo$ZP~ z^HxuvdbMv3xxr|zCr2ZF@O+|i;LJ;RcItZde%Ii5pS+k_+B>i}Tg|HaR8b!+tfIQ_ z6;v6g@+Pt3uBS$qm}aV{r1CpujT2ALXR%hnQXys`n}IadkNwmSS&>6jlHdH_|7ZP; zzxj9cxBt^$(f{_V|Am_*ED!|-+h)R!@f$yWac#uni~G`(iKjs(Y`s7BGAYg3`m$lp z?#DvTmX<{lxOmUJKZKOgobe%Fg6>j;Mt%&%AKUHxcBlCTPrKMq=RxYE`Sc6Yr)`Z0hQ8K2)-<;=i>lunJ=T{K}qJFU<_7h0R0X3+0wA z3ML&wO9BBgu9zk0cjlP3PJ>UpNV|%YP$jb8)(cByV7yl;KrtnGek04)0;j?`TP)Du z5XBPJJ6rO?5tRv4=^rQ_oLU-eq2AGYa^(hRW6W&)J}G41oP*tRasAR|Q)EX;y2=u- z>g>*NK*c4Tz?x92X$7fK=* zQ=WIRyn8SI)c}2#qm0-wyA2#3H(x6nUMjWJIJb^-!r_rt-M_E(JWxD3&n`$+ZM9Xc zH#J8?Fx&!OccXJ=LRcvpyKAiI>*d@uAIc166j94D;gzl!a}bQ| z$E&5P^l!&X4F)+=caUnstL$&2EQd#q#Eb`iHNBQnyzxb?#?K8IHs}5z>M<6}QMM+z zCFob#T&-BEXm3Z#ZF4Kuv4AnR_W>*+$zP9r@zU+H`d)_XyvAk~zD8skJ~ z*Rd{#a~+=tIzA`lZLJpmnivo={4QiJgY{ih6CkKbWZ9HB?rM~M>eto#bW2{7Yu5Jj z^fc1+Y^C8i)`U>q0x;*PW@u}ld;4?gM<0A-;`lHAoxi2|aH0?1|AuktpZaV6k$M<& zvla${f?2*ZrOV+=|MvHOPftJoSmlC)pX5}=6KcQ*{VoAz>5gjX2Wt)_Q9TDz9EQ< z6=7^{fm+3qB}G;f^*be1!0xD2wcBwXXR}{zNVd@`QJ9Ik+#Vl2?_*{`frH!X6E1Mr;W-^00J-(?S1}*cn^lqOM zMS3Rwf6rqVr>mxK9RW@+|ix{|lvSXbudxLwn^$t1s*lH2>bO?&f=rGZ;UVRk4k zcN7fHv|i$LOmsCK>!Wwx({i!U8=rey*Qci@?Vewc48!E}pMP7Q{miE|e)c=M(+N$} zWttYGxqAhxXnnX{GwkILk0zE>LV;E!<;VA0>UVri!=+}kNP|hNt6`*Y=8CXBy3^9b zgO-Tqz$bJ0Y^Z1uYXw{}aohN4faTn(nMU{Wc&70}(SptaSb6Ky zZ|dKE<=^P)?B%V>0Wrx!?N}3Vx7(?A1Ti<6vbI?l`PyM2v3!k~X2g z!XV1!iux@)?9vb~_ugCXybvBAMTbBerF5d0Umc`oJAsjH9CJ3WD8?>luf#kPWZ!$|l^EOVkIm;9l zdF#kFYJ?psV=zP(D4CiL zyeQ#b*ts{y`4bz>_7Rm*GD6H^-RL88v?=Z{z~;@G?VsFv#C`_WbfX`+pp%~uVaXfL zJQ8GXo3nf8f75sRoww>HGc&qzyP2Hhl(>I)EFz>XQ{V7sEfc_)R=R)ZuFX3DTBGq; zFON@DZ`SnJ{{5fU!$SBBnTyeIVe#=77lF=4OO2LA1&ODI zPsQ`Zq;hgFcI(n^!_#iV6{J3%rkYm?SEUYMUEW{$D?gTg=?8v5U;gr!^__2jM|ThJ z>SurMXLa=ANDuGdcNH|K&ODvy^7>j^Tf6FYdm0P|26XcB`H>DD+|m2r{u7-LWSTW3 z)?9^S0yEQ{X@p);tiq*}LHZTbFf#bdIfHt3LA^~`gbJ?3`#J4Tq#3HQf+ zkTbIv$4}I0Z-z>OtaeM#n)RC6#Pnp%K-II&!=Wpp_p=6L=yW=IdHm9jVCu=uR2*2Y zNN90`@aVw4cIC_ zA;x~1H~LHlRn|y!fl-}boNGK8tKDed#7o;L8*2&TH;?DKb8yF9&1TtPq$E2aBm$Cq zOaK5N07*naROD^3@mvTW&a1q^fH#?NzuUV>?dP1u1_L85xZAp23$_3^2rmF$2zhyH zf#04rQpe|pNA3~_`$5z! zm9#AXr6{$UWwl#m^-A6k{?M1wPP?zqe(tmS-QWG)n~h>GZH)DH@Jx=%C5bfE7r*%Z z@{+^|^ux!G^zCo_p`LvBku6m=x0w(~(2{C((4KB{P{c>Vc~b6^}Wsamb3SN1xJNY^fwt$yM0WToK@ zAfsCqlxLv5gFFV7feTe~P7b6C>&Hf4D4Ucwo|%sm$6%Z}^R)ZsoG`n9jRf(pLljM- z$+!o7pxO!QOV%*U+)#9!k;FA-4GH!pp~2=DaQWMQEmscmGe5ud3G>BTDOp5WqqZGz zh=eDSO}BX;P9ebm6K#X&63SKruqGn8VsnqN`)b{9;nrWMB|V(9CYy#)NX-C&%NH zb3*ik^X#~*i=f?s8?%_J?$_nrgwwDt9mo!6vNmUcf`{3)=(Tl8Q_q9zvKIDnj7w$BJrrYBx*jv?;rl zS{}$8&AHbqr=NQJ`_$`h>+@guyuSP0cWe-;S^#yAH#UIV;cgP9A8ilCxyEV((cjgPeW11jJ2t`P~4M0aS;>GtjzoWKgM4rLR z33VZ<0yX))(AIdDv4%JXynh$N7*2_5kaO3UXLnE4_Xvn^G+m49U$9}~|_V=OlQ1f`6$)x6b+6v!IH zAs{m;YwdQ&Bw7ebquDS?Y10${aQtm!LT=v>>9$_0YCN7On1_Z@aXaHuyPj2CweGQ* zZYAYTv!mf)Y}d6~P5Bj9R5gFr+4Z^hclYu?Kk;eVW*buVEC`J$+?=%D=rfC`P!t*f zjDRvxpwi`Sv7m^<2IJZI-C}|>peoL{`OOzJ!Vpz=@`X&8f1_bi`1SBw{qB}U0_4xZ z+>oEUy}fP17obczi2YXAIZWvb*F$h`nr(#Jaqo898c#;*cl)MYTwI*qoXRh`d4k_7 zm8$&!Sqh>d0RNljxjHGtSwqSW!q7r-$pn1y;)RxrGo_37)vZU`>Xo&(Q#F7ok~c6> zQowaE#*D>&_0($@b+G5#-o3b7SSoe1UUKJ+976;T8f3ifc3In9UkAIsC4s&7WU7yz z&o!J;A;m3dGJ3K4Acc3EF1t4f6C>Kx_mvn|v4PQ0pUmvD+&m+c43^oivWgV1zW%xu5zeXn@}QbibCPLP3Y<{8Kx z+>_t^3}A)VVqZW|^ZOvBat%b$xLQUlc(nC7V=_EHH@8?nGCGHu0Aido3;JsP%?J+J zw=ji#d2$|R7bNyvQ?xP4&d(PcpZD+G*VB*RQ4?I$%puBrkkv*3Pl#;;5PKs!gaNq# zdd^|r@wW}5hwand+0<{tM0798aW_RSd4#^(HSWWn%fdZ=_MVl$3FiyjAf>WznOGb2 zz?ea9HsNt8p89MZrEBn_0b9Dgzx65mo=(_4&Oh`1@;yJp0H$G{&5+IZ!LEuUI#kQvjzR0QAe=H_ghHZN9wS zh5nM{#gE$yKq(OR$^9YV0O{9jr^Z0xP9 zTDC6CU*moUFsoWwYaO4c+laNUd4}wEJ#r?ucC%pc2@J6fdj=Ol7Z@X+?*PGIUgT&1 zdJvj|^=h|1l!<)>ka$o|$H4v&vp;mlU zFgtu7fE!hd1(mit1;xu$$4|a(1Hyno#HM3xdv2HD*mCRD{fm|gqLJTd=qG>t$2FbJ zG&#$|ecWW(fMtX;C(H~0ci_eOF+%B1cam;Kjk%WPh$;<1=UlfnoCNEZt{eRP9uPRr z&81|{;cqvwj)?Pc&SPWbn<^*B^a}#X{(`tzAG5_vf9(D&k4y@$U<%1LFd%fuDiC!h znD^v-?q% z8?V$hbG=Yfvrsm|z(U}A5X1NZkcNT48%*Y6v|3y0C&Ze*=7if3IY(sZ4(6bom@^}6 z+-Wi|8yg`x}|30&H}Z>f-K|C2(M{D z8DWFD`UMNfM>-;nm3Oc;WdzzSD(2qem@`3=_oH!~bFsHG9`uWTGk+YXUr0xd2HBGC zJzKT1sM5@vlHxleuGCWGsnX$aQMgaHRkiX#jH^LIMk`Cv204te+uf>at5sDvU+QAy zz@YkFU;UPEec_t%ge0D&twY`qDUSO&hU;Fyh_TI`Be1+1W638e+e``1V;(rhJQ7C^ zW;PnItxd+m-WTkUg027gYm`V;9VUHwBL*BfK`Y zAUrxeW0(+HC|QIMJ4#rwW*|&J5;U8>VU}2@h;kZXyImM=Gz$#EZEJ6xYBs-}C-5a$ z2jI>C8pXOJiRe1`|c8 zX2CMcu61;Yd$I0q-z+_i4D;PVk^+-ZqtefMZGtM6H*kH3=wM!~SU`qDkExM4Wqxod za^G&JtP-im3?^RySPdnFGcbu}2k|`NNaaO%X*L&j_*&UhG@S}O;%=|4#bls$vUF0W zTl=o#3~ILFvcosTiisks0b@7x#fU1ap8OH)%o#zposeD3Vqz`j#Mu63ak9QPiFbCb zf&H+cv+udRkr2w#WW=8Z&$IY}(88EFC$}*hQO?da%O?w;y}_b2$;R2p*#I=ohuHI( zxBPEh8W4px_z+0Vna!Q^zz(r{K#Yi@utJ&z1Ldcv=YHQ)qY7bi$b2lKX1#3nzwi#v z7OvFQPP-%)6z_qW2506u%pV&FG^zz!A1e!FEsz2;2Fykyu_xmT)_wYf?T>NFi8S|O z(>H2GQitapA^8w-J!>rY*^wB6M4ho`+W-(J z`qya{Rj(CX78NR%4;F?a()1gUBC0;j7i5@y54+sOZ`sOqMI%Up+-~oS;g$Q*cfNQ${bXT8~e|Q zY_=&_gS<1xm}5RkZAY>NsjS^7snaMMaS1>@j3~s8rO5&2vp|O<312JPRZ{L z9m%b$IRS*Q=FYwBwstT2!aeyO#~^cq^AWAUcoFx_F5nzGluN48=`ERB|DGbc~2&u>&D=Fm^9%2hCtGoEbMp~5+KMh$o+0XyFFLxi7{e> zg5iov#P49rbecsyJgBJKshCahax=BZd`k-}^}&0}c<1S^?OzQcZH z42k$K29*(X%21)wT9JaxtI7iGcZ%9-S5z$nj-Tpk66+;Up3}rKm-e=RLX}2iiBRYM z1FBXREajIm0F{rq#?Fky0yq(Y9Z2IQN!XaVDh(9MZPswSBpS{NYL=#dV+8xfOH^Ut%6>A=0X$pg@qE?seJ`l^R;Zm2^&YZHw=Qtq1oi`r@Z|b?~6?)F7}R-o4OQzkRO3*a-_Ta0I!Xt*Y+tGcR>@nq|`*F0L0k zKA-9QDi(MqK)F(`X*`Ma`0jx|{pOy8oo^WG_rH+fEg{gqhYUc08#%eh{j#~Mu? zE(|LF+pjhC_}A3ieyay1C`{3x_4 z)fBmS^-)`|-S3)ai4&HFtpH4zR=uRX-I}^!Xy6-~$7U9>-J5u7`bA;(c;iuDomN$s z*K@194c>dBTGpMNmf@HjosRVKVq%3h4tJV*^HI(A0UBHBy(h;iky4pAM9YFRn4>=b z(l7m@_6`p8uYdE`&C^U?0-GC-TJsj4@EYg0fasWXl}n`?pS%bgf**d*TTWCV_z*=J zM1o)Q^YYV;Kxf3)QNr5?3i@Jz{j#Jj`he}ruSp1bFsXLa)8hkQNQrAobVZ4& z>(mn)PhuTkMjBCXj0!FcP!=^qAUu-mYY!TF{nfS&+}FNwDL{K5PCLDl9^9{5Rfh8` zDs!)e1BLSL3I75TP@w) ztLx=isN>_A73bY)Q%QtgBDs`|p@M^g=NI*SFiO;_Nwr=<`#V*={YKlo@@E%wefzs3 zU5!_Ic(1C@zR|Y0)aNe)d-m>OUAx;g)hcBdiUvdhnByV?EYb&0hx+&^(B%+lRwwxr z@nr&r*&I_f>TGc|5>L}`p>KaMx0rR*dBy-_J9u-skeZL9UoYvES9~?9o;-ll!KyA4 zRO?ku7>c7v*OOS!E@PWF%R&`nnP?iPng&i|LE_ZdX(-G;1be)u-XJPJ&rQvo#_Z0+ zl`&F?D{F^huUq}H-g?~Co3Hm>Jl87KaJtYnekh8mg5pT{7iKeyw_a%$M4AO4qpfr` zTxc+k6f7vAMyj$4Lo(QbB?3mQsuI=Uc-^udosae5QBmi^NF{1au9s>zQ|%zgEIrfs zo*ystz1#$oBS#NVwuy(Imyx91MK^fr(UaQ#I;_d5(b)Rs*{UAS3}ZwNuqJ4!o6-m+pUteI%V~{6~ns* zOPJ6{OnYW$#@@VMDPaMYi?xh0!@!`G@{%tyAo+ss5u$x_+qN3FF+lPjHwjsPF_Zo(Ywb(D<6f4>A~H$X_+tg;80ziC4 z8EqU)(x-m-P+$ATOZ_*$`VaNX|M}n3Zx{Z#9fxZ~lp-?fCH1%anoeDwJ2q1eBk^U< zWFtD5lpsDxgEYQ_$YHm|#&nTaAJr2Nidh+j_JZnDmhD%~aaK%R*-V$w1DA@4`_ zJ9h1yphJ+kAGT};okju*L>OYiAv>H&^_O_J*W)&PLg@T4jK_4Cm(mCi^NNA~LN^a z9;TXtOC?XAzgN~BKUES%8je!Msi%v%1bu}#HY=VU-D~JmuXQvGm-@y#*Lv?sVC9J( z->vE1AxQ_Zp1%w=3lmj+Ps>rP3zOQ$mVWCMsgx3FJfpB_<}50v!d8s8pQ6;^LS`Of z?PE3p77m{PcGb~zYQ$?AIy?Mo=?cPP+JJbQoj#Gq^R)``Qi~`usok)jTKas_5$M0btJ>e*Jz&_wKiJbw1O} zlc^?wTl@{*nOV@jaG3r6H%|2OY+_E_>%m;TZqZ5R=~|b=SeKUz`Q=oP?^QIX_(XzT z8jR$kwmTIo3VV7vQCP!-Bb`mx8lHl@=BfX2Mgl)OHW_; z;t%O7zxOr0`~G`cTh$RHG)HvvV0wb*Guq||no%Z4c-dTRG6)$hC)AwJUWefEI}#g? z2Y%<65vL7eoD;K57tn2N%Hf_rWwP$8I0kix=(G!CWVl`MsvM63I|&Npx|AbnKo_dGqg>zi8t?gumN z_(lDNt&-YRRR4nNWhViJ(^M<$l?1%+Hx&C-y%@(TEmvw$S=&kzInb(V(Mea}06*Ao zX%8n(CNbbV!PG#!Cc*&YiPVuhaCm2I+n6V;#vm16)kEr6YvI_DL zR#J}NdepVztVbt-KKMA)XtEI-R+jB>zpA~xhB??6Gg4Ho0tkZ+B3_I+l+cWV z$oyQboZpJEtAL43)g9LFT1MUj!Nl zOVvtFt7ue9ik6sKq>HgD%z#;d?`}^t~k^=W`q(=rrXmOe)uQV z?e+BjpL|{Ke)H=$lB-FqIi=2s9SlDwnwx#3AKX9x&ZKq1XfkGiWu5z3e=>;}hGJ#` zXZ~{i%7`=fh7lkDZ8oH82o2+41UY*_K9G(vVUQ?8C>?8+{*tAd3o6_z2m;mcAi3Vy z?Q2R6n-$0fb4q$yiZQszR{11V8m%-PFEt6*R>cJj9UL#+wzPlf3O5pMOop*wX?SHrm@vNFq*lu@bj$=u)Hp2pVMAi8e$XoD z&7LRUTU$**B#F3E)M@DHg{8Bm8U#qG1-)^vrtf>BZ4ndS{2hBg-nOq^2d7)jfZpNU zt=+m>dkwuR=`Vh|r@?fttI|5eL7xh8Un|gs47?eq}43wl?M&IalbF5-qXvenPsr48-iQt!Yvv1Zl`J* z61f66@emr0j>mfPVq~=sf)PXR3n8Y#03eWb8Hqe6%zT%dFqmMT`&0kH z&+8}t`p@eh{L(MDi?e^ZmOkgIBH}tTWY?hlI~Ju6HyP5K0;`EUFXz8mA<%6 zO~NFYeKAi}ppr);)nUgoz_UuBU{$;8E#JyXkw{;JhO^ih!*;Kx&%Cy!Pd)0($KV_;^{o%C^atO$&~Or)MpUo3m`;e9NeA7E zytJv&G}8HHq)9*=mejy;xk~lB7l~DWK>CM}mqXNlO2Vg_Oo@+O8(8@;i1dGb^<30> zBTaU1yP}<*Z&koo>qK|98+v@Ft8p0XX*f5{fDB3BhqM%|)KsAutJkflSE}lI;L0Ci zZzu6_vB18Us7zQQv87qK81qP&C}3&!QtG1xfZm<%Qf!E&Sw ziIA}W0NGI@WQY_Ql87V{im(DCfJ9;^F#-Zv3?wm50?a7J?7?mudl+}qGrhik`+Ij^ z>ej7Wm3+>x?sO*-kZQet?{0N#`TfrCobUOb@7Y?-X=kHo#X3yt(byGLFqTP@uC3&a zQ+;?88gww4;5{cseeCpDeCftb-T)&FCSJ6}C){Wl1QveROUhRY^6E{k@N+Rul8i={ zAj5D3v#c5F?tn%Tb6wf3XuVz1=6cBt6};>Fhhw{@wOT=qYF?#0y%`hLt2v{4m8v=U zxw$E`!II(lAPkU*ggmf5^VDv+W1P=swh&SeancRV``uhES{IY~A~Jmnym+JJ9ZYrJ zr+W}%-YrfT|Fdx^jJ^cw2tKSY&~=H%q#* zTea&B9u4DY*rP4`LiJifo2wQ1jUs^NBZydh zNfkZsvdYJvdNUNdq&O{}U~sZ0>`jXz6ew#c9*ft__P7x>qn#Sf#|_vL7J2R)p4ap5 zeL?T}`sb{V-+EE{z2A7ryv;^V+P-vE+n2BEskc6>pZ@WW>g6w7*WO82uMVVlz4@v( zE?w1y%U8`9|CgWrxW4myKB9iNt6%=vkDCz$#@M-ZRquJ<3mWvgdhx%0Qj>nyyz%|B zu3j5Rf8otnwROpT$G`i@kJ`CC@s?-xweNafhxhO3GoSjTc|uroCQ2&LY?I2Jv0KD2 z=u0?c`8>Zl2D~g57Ch**OOAORIaYImV^$HaYptY*qeLeU;Ij6O0N!f))^ck!UT6Yo z-Lxt2f>FA2#@R|pQ=c0=nY#!bkSGOa+sws}p+bjc1zoV?8{N)SIT5bn00* z>+~7RnYZ@ZK5~v6Kjo=;OR~J>+J^Gb8VE%X2KxP%k96l@--=k;RmTm*3$7G%T5T7t zn1D{f;LE`{wm}V@3omj^)_f8hJKz|-bRR$D7B z)TEam?U$}>HMFx{*EC${_WsC{a`bV7ayK;5@>nbIX$yc6c)wgrH)%|lVh&pZZ_blH zURawZTlCGVcgz=!WKBFXpLdE~80Wz-u?)$hY(aJ*_FFq(W)aPq{Zx>lQ6UEN*i%QptPyBDYr?{=}|vQwGoD0-*e ziAwoE+(Rnb;Mx`ozS@nl+8FCJ%bV;SPE9MFWTiQCtY}1~GwHM! z*?q)8q0=^ra%h*(B(H4O_2z3Uy0}v}w$Rb}$dauz^qmHrLsoD9>XyFha#c59?di__ zk(Fw1t`tqs{?^@&j?MymA9ypzIvCBY;WLSB#sLXwY+okp@+IMHuG7v)g+jxwd9O3k z+}JO`HL-QJ_6^fBQoi%YIG;B?nbrDgMtAPTW=QM|sdy`7w6a1|P%i31>sxCoKz8jf z-{F39NtWIyo-u#(9G(Ne@lr|nF{t_B`6UFvYdnV$`{wt(p#S#EpHwH5-cWa5_U5Il z8uz;<4$j|y??*nSfArxG>1Zmw?ebN<``cd7=RW(Ab}zfve(-xgr0@FhNA%8beL)}l zq3_q<_&Xm_rrOdk{?teH^jn|R5B%82^iRI`Lu%|?)la|pdA;wsuQFrKet!2iUb4SG z@}nQqKlt#6bbl;8|Bh$%JwN!v`koJbyWabqAJhl_{txSC{^|GIU|yWvRi%{E}X=gK|1v{t9sN4m7*Yim7kICHlj z>AXv8dm1_>su|tUoL6g33*9O3Jbme4q0#NBtkGjBqk7rXMlGXD?VO&9<|=!!65rF= z9NJf?;WSYvf|CnIm{F@$($iN~_2lI>%bF*{nXcbB)R%6ZSTc#QyIIevX1xM4)^rn& z@BaS4SOoLfRgfVKS*g>r&Ed4A(7`lRi!sp&1INK5Ptl^h91Q`OM2R)UeACsMo_TV` zJgV_Dknbg0Z!}cQ<#gwEN1wZSu7~Gip^?q;d%1duPxQXWiB3;vD)@a(*9tb7S=i8hb}bejL1(}&%qu)esD&Ht zymq(B24^5M02X@d!N81Ne^ArKt%mCDvL$z6^K^PJLlzE0j}jdpqdyXfPVbj@t6Fat zb$P9#awel2NzW2;h*M3*bKM@zw0Ar;~yd>Y!ZWlx(1UrTMI2cCik0Q+$v1UW;Mx^x>Ut6uB z(bM2cv!6=2pn5H@-f*hHh_2k+Tj^}Du)M)H|M@k&@yUkn+#l-h!>KiYe(P34jao^s z-5(eie=y{|6e%c`sB@1cqaHxZaBTE*OgMof} zGKLZdhDZBr%3->)I_} z*ZaTggW7!Vd3!$#Nr&r_NWb%$m-HV${gN(Jr1!r6gDN*#`p`f8VO3KP_rX|#qRaK; z(qNpI#V59Cr_ln&nD?01oEmM;(KJ7nrQPgcdBM}`x%`C}n9C;C$g;;drW4e`6u#rX z!mv1>oA<%JBb4=XiKgIN7!OK|af)NdQHHG$M4qxGPpyh{p(btR6IGK)nIJSHGWTgH z>#0LANeymhtSX^<1_nn}?|5cMYugRGSo?R6b^R-cIyxJh2Lb*Dh78BKUWpuqG^O|RWDI>7i#aUuRq!w>TDQlwdorjk8uoL3Pa!PM>?B;BZISNY}|J`js{q*WsJIq zaRZwrBqy<#%{nf!g~JrylsuL4G{AISnK@3Q`}v6~1u7r?w2BL@X1J*fh0|EaslI=u z49t)-50i02VvzYk)g;L<3R04EoD)H@2#-gR?u_h4%5oD+o_oka47 zbCq^VYLxQIb^~o^61A!>T2A7O&SAyCp&obbo?!Sk)`}{XGFHZpairQ3$cN-;*5`g_ zboFvYYb#|9Mxk!J)>pTiyq&Oe5jb~=97L?cv%ZS=7RIc=${}EXd_GgNLF7>}3MBf;uiP0JGvtYjRqbpRbk>{b z=AFJRAWK_DR>~UQd||U<4UYdP>}wFS@Dp{=ta)ZA0~MdsexP7HQ#@Oklhn&3 zR=Ma8=%t!vQc1 z9yr(|ZR|;yV9!z<*}U@({UAZ~v_i87|B*bABZ3_-*Hd^d|S;!eHmI*s*c`gtuuZ%Z@ot z=$d%dTt}{hGs+B;)H?GVgNrX?HTIq7gOMf-!<$1=aK3=GkWoZe6Pj`wTLw{YX?+tQ zQ#$K7%()5`DJ%0hs06&QmNnjQ5$ z?XKlCrvf!Efq&QQ$Vfs_f;T(2g$~@2mOoTJPI`&<_G29!1}Yb4cKjr8xD(6`JY2j_ z3@(NfAsjqleq+?2YjN#z*0CCVajyP2Fpmse-z2FMrxStUE*D%947?F$0!>EntO=zt zpcrzJWF*U|_%!_uprtv+%sEV4)7i|k^8%U)=(5f~%IwEdryJ?P!;vML5QslK9a*JZ z6j7?4v(+AamBNR?Fi?&1^Tbn#W<=Ffx9_Sz4?BrUnW@T)P{WevnlA*gH9v;Iu*hVz zRm-cMOY~s0(1X*7dVet2#qF{RMH*#ts}GGj;%;^kXo zopt8M<7NRt<9Po7?;Q~!t{=w^pWNwwRLfb7fkQ%?D99oSu2&Gm=Ab|)TttDwS)`q< zvfV3+N?0r?!KUB{D&*nu*uLx1c2UimuP@*1nidAro5blfj0~s7?l2bC+9f@GscD)u z`{R*8y(C?6#yTf61w}kzl8 zh>qA?wxy3R%_w8u6Jlj#C{lZ2H>6m5B+qEZBZVsrjz}R33>Suu=S+>wa|Vq{QM4eI zp*{P(@rCR9z7Kr6e&JVM)aQQlB@KIBearh^(2xJfM{OU)dQ0_Y%Z`B?Rc*M(7(kxq z2Rl}&w^VDi%<$oP^FE&cnV|PK-u?Dx)o8Zt#H;Ck zI9{U2AN|MQub=v*7xh1W{YBk*`MMt5yJJa6uwe`;#|@^AappYv9z17W<3?hX`GZBo znys>UQ6Y)`I4q^q4nr5>2OQdwp2^;0q&%&y*_dx))eN%1VB7Bo-63n;C7d_|{4uEsHs!b;D8ZmV!p}AlCWVRf|Cl z0}sBo-88X|&;IT`JvbWcus2hH#zr<{3p9x@&Yg7{kIt@NfHz0OgjgMlJMx~^+hEjG zSvey@q6SGtCKcXryIE4ZRkBX%i*TXMMpf0dye)tWvM7T<&FNgNN^GQlWnip8acJtn zd8k+RkM;1RZ*)Nx7>ZB8!O>%2()uTKoInr63Bs`OO=gLD16UWX5{?2Lq=iGkV4@&& zQ_N6G)q)FGfgm_;3^JlSb1LP=fzEr5nn(hOTZ!Su>%f@elu!;#*o_cP8;mxOYM6^M z`7VqHLN**kG6+{U1yomiMyqIJ%~lt_0TjCFK8HN3o5D{6HmZ%TWNH6oZ+!>JMu zhq0BcGr6aQg)Nr5nXFo^q7{L#Fw=7nRuF|k+zg*I)c6~2wS5zwIj0Hj| zHQr#WkvEzn%pS%8&eO$>vclfXJY2{)kDM&#R!JhEKbT7-3o(HFyk5z?;n`L zGzZAabL?qj(gEG1Fyg>IZmrYC#)fuwcdP>Io$vfQjizJGk3XermvdJAb?+hNtBLVD zSK9D*N#DsB859?6ZxpN=46WF^d(h1yE2Z9CBZSTx(|{X-!Q^vzbI1=;5MrJls#@c@ zq8VBagxj&k!-f1XQG;q~s>;GdnOvgIG|~RpQ;>$iIe>Da25u((>r5~Ro-{(P#M7Iydx_;|G2WNdtun@MA#iul#4ICFn1?OezT;}z{uy7(gaD6di6n+o^@+pg3 zY;kqE4s;_nT3;n+Qk*EqL1p9KW7vsaW>b{OfSU{&wImZ1L@U>An?>qj+=#wH=1y!*1u!d%5_5<2)=G=&R8PZEY|I==&fod9B=ah| zd1s{G{ezz14?`1WTwdJC>rGG9g^?YN=2o}@7QC@qu}&Zqe!TWz8!?WApl}^@27x8^*q1p@rVq?**DbnL9qmS`3=!A|ZY4se>HFM7R0cG$!Mv-$V&ALV#;`{Mvd49e z47&C{<^=nOH33d*3wa8|V4HydVUyUR!!bHmm7Vv}L+1OI3(@j=5WdnjiH!1cgMgCQK$%ix7V^}luoOrA?M0MI3#bKg28!O5tdN`2ICK(ybk%|DZXpNzdneGJg ziu~0~89Dh&ymmA`N@YUlSkr~`ZnhDa zsT2Bn+CK_(=fT8=8twvXp3mB%4))My_yZHl?dkV4Cfm0}%=ecwRQKxkj`}AWssQTv!I_ zSc7XasupsJG7DYa$!iUWY8>fgf23>@8AL%fCIKrYI1Epe!qo)NCk2wiQ-%L7I>0+s> z!C zomwRxv%h6=2~T6(`RwDHGY1ZCV4rphjOR4Tw%qUQ&`f$b%kN@$7-tTL&EVlQd5KYF zV?|#cub;|{x>ww(VY}IfnWLrmpBB=9t5d1Wz6{Pt@nnuGo6l*py`m@HaLp!k*dM7k z7%1asOoO*tgp-SL@vRU70y;?xOF}h@>JH|5`Bq1VXOI(Jfd&{UlL9Q4Yhdltm;f<` z%QFvWwVG9dlGS-=9PkitY3O7=2`7tnPhP=Ocb4d3H`WoQ%X7C-H|sDQ9Jbx*JHx`* zK-;3-%&FDN8*Pe8E#|_;T2{qMMx7whIXq*GV;!*}&tyj7t-`n&3}PLg5@Jr}`B3P} zYBvxr>Z#ius}n?)DIY+S3oYPN9uFnWk-$1(z+j+BqOtg3*huPe?eUml2t3$dSoP{? zl<2HSnD3ksJTPt`_&mlHubIh@Cyf>Z#~YVp<@{I&M=&;G^@ez*iNX*{8dZ21t2m27 zPe;RrX7k7lIvivsAx4(#YZN@-D@4>`LoxRjo`y+e29$&?CXK33GeT2fh**e)WL1(xM=TT* z)CPlC#d2OxUT*60PD3~E4770)=+tC87djgzS_~3Z%btkH)>jLLeZ!^4qENNT{b1Zs z>1I$-5ZQOGG-Zn!5CMx5iy({ez$zFsmduUN5vMAD;Y!R|$YP?9g|t%5>e2=hrI86a zf!(*)r1gg6g)^O;Otsa>YJ01xlL1wBj@L}_$l3W=hleA(f9QiS{}H4zoO=%2gQT*n zn&j9|&qEdbg2}?#O6_NjyIjoqnoXTPccYS+gS62unKVJSJGBLK5=5HJTx3Lv(O>pQ;V{d(%jr}Y#6{Ku9yDz$2l9=eQN`Z)DGA8UZ)K-tIM{%8I9 ze|`2(dviL;{<<)b+RYoC;(RBY{U|}gm7Oeb)w3Dez zOi|f{p<&QLCu^26YSY*;lc?L9>tLFw;=%isc{S*3SQ3&%YB@1nZ#R9sEyy5vcN znWvuB&X5ocls}%?Vu)u0D+AA}lt|lNqDCRH`LW0*n&mT^P#TUQGi={!+VY(|CUj;0 zB=b%?=oQDJO&p5@9x#yw8xR41S`?PjI{BOL9+;wCX<61i zfk~3)9kPT}W~3ZDgHYETAiPMVa}5GF`~d%9oEb-*L89Z%T&2R? z;4BO=3kG;IY>rwr?}|B4%ftBrw_bp+yX#ykf#FiXC5Zq45AaDuK~($NY!|fJ$_pu8 z3?|GGc)eDomPVqt?~lv@c*`5wdj1`oI_=N&mD>Zoe5-4H5-DZx^b!4!EPt`FLKK!! zP|s*Ok4;_^EBf$oqz4BiCw*Pmu2~b-0Yx_jKI^DyEPP%7dr-& zifS^p$Igmx@K}`OH5o)|wX<4XqaRY%3PJp4N%=U@U`#PhVh{ud_V6Uo$r%en!8qTw zN>2Co#_IG&mf+(Gb1fMcByVxixi-DgOoPE(J7z^;#~`RxQlSvoc%ZoH;51OKkXN@i z(ZMNY)hq-q>VgGT@rfofhO?6gV!ko1eBzbcdvhI~E%dIp<+a-K^~ZM|Z`3@&)TAI7 z!%$@f<02!3et!Hwm0Cjw2Xnpu1K+Jr{M&zJ{lZ@O_V3W}v9|Ehd~PAg(mGX&j�! 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 literal 0 HcmV?d00001 diff --git a/modules/mod-arac/patch-contents/DBFilesContent/CharStartOutfit.dbc b/modules/mod-arac/patch-contents/DBFilesContent/CharStartOutfit.dbc new file mode 100644 index 0000000000000000000000000000000000000000..aee4a2cdd3e7d32dc36d00cc5420cd495752845d GIT binary patch literal 65733 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, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 +# + +[worldserver] + +######################################## +# Auto Resurrect configuration +######################################## +# +# AutoResurrect.Enable +# Description: Enable or Disable the Auto Resurrect mod +# Default: 0 - Disabled +# 1 - Enabled +# + +AutoResurrect.Enable = 0 + +# +# AutoResurrect.Notification +# Description: Notify players about this module on login +# Default: 0 - Disabled +# 1 - Enabled +# +AutoResurrect.Notification = 0 + +# +# AutoResurrect.Dungeon +# Description: Auto resurrect in normal dungeons +# Default: 0 - Disabled +# 1 - Enabled +# +AutoResurrect.Dungeon = 0 + +# +# AutoResurrect.HeroicDungeon +# Description: Auto resurrect in heroic dungeons +# Default: 0 - Disabled +# 1 - Enabled +# +AutoResurrect.HeroicDungeon = 0 + +# +# AutoResurrect.Raid +# Description: Auto resurrect in raids +# Default: 0 - Disabled +# 1 - Enabled +# +AutoResurrect.Raid = 0 + +# +# AutoResurrect.HeroicRaid +# Description: Auto resurrect in heroic raids +# Default: 0 - Disabled +# 1 - Enabled +# +AutoResurrect.HeroicRaid = 0 diff --git a/modules/mod-auto-resurrect/include.sh b/modules/mod-auto-resurrect/include.sh new file mode 100644 index 0000000..08efb33 --- /dev/null +++ b/modules/mod-auto-resurrect/include.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +MOD_AUTO_RESURRECT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/" && pwd )" + +source $MOD_AUTO_RESURRECT_ROOT"/conf/conf.sh.dist" + +if [ -f $MOD_AUTO_RESURRECT_ROOT"/conf/conf.sh" ]; then + source $MOD_AUTO_RESURRECT_ROOT"/conf/conf.sh" +fi diff --git a/modules/mod-auto-resurrect/setup_git_commit_template.sh b/modules/mod-auto-resurrect/setup_git_commit_template.sh new file mode 100644 index 0000000..7b52062 --- /dev/null +++ b/modules/mod-auto-resurrect/setup_git_commit_template.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +## Set a local git commit template +git config --local commit.template ".git_commit_template.txt" ; diff --git a/modules/mod-auto-resurrect/src/AR_loader.cpp b/modules/mod-auto-resurrect/src/AR_loader.cpp new file mode 100644 index 0000000..a7883e4 --- /dev/null +++ b/modules/mod-auto-resurrect/src/AR_loader.cpp @@ -0,0 +1,15 @@ +/* + * Copyright (C) 2016+ AzerothCore , released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 + */ + +// From SC +void AddAutoResurrectScripts(); + +// Add all +// cf. the naming convention https://github.com/azerothcore/azerothcore-wotlk/blob/master/doc/changelog/master.md#how-to-upgrade-4 +// additionally replace all '-' in the module folder name with '_' here +void Addmod_auto_resurrectScripts() +{ + AddAutoResurrectScripts(); +} + diff --git a/modules/mod-auto-resurrect/src/mod_auto_resurrect.cpp b/modules/mod-auto-resurrect/src/mod_auto_resurrect.cpp new file mode 100644 index 0000000..0e80939 --- /dev/null +++ b/modules/mod-auto-resurrect/src/mod_auto_resurrect.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2016+ AzerothCore , released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 + */ + +#include "ScriptMgr.h" +#include "Player.h" +#include "Config.h" +#include "Chat.h" + + // Add player scripts +class AutoResurrect : public PlayerScript +{ +public: + AutoResurrect() : PlayerScript("AutoResurrect") { } + std::map playerLocation = {}; + + void DebugLog(Player* player, std::string log) { + if (sConfigMgr->GetOption("AutoResurrect.Enable", false) && sConfigMgr->GetOption("AutoResurrect.Notification", false)) { + ChatHandler(player->GetSession()).SendSysMessage(log); + } + } + + void OnLogin(Player* player) override + { + if (sConfigMgr->GetOption("AutoResurrect.Enable", false) && sConfigMgr->GetOption("AutoResurrect.Notification", false)) + { + DebugLog(player, "Auto Resurrect module enabled"); + } + } + + void OnPlayerReleasedGhost(Player* player) override { + if (!sConfigMgr->GetOption("AutoResurrect.Enable", false)) { + return; + } + + Map* map = player->GetMap(); + + bool dungeons = sConfigMgr->GetOption("AutoResurrect.Dungeon", false); + bool heroics = sConfigMgr->GetOption("AutoResurrect.HeroicDungeon", false); + bool raids = sConfigMgr->GetOption("AutoResurrect.Raid", false); + bool heroicRaids = sConfigMgr->GetOption("AutoResurrect.HeroicRaid", false); + + if ((dungeons && !map->IsHeroic() && map->IsDungeon()) || + (heroics && map->IsHeroic() && map->IsDungeon()) || + (raids && !map->IsHeroic() && map->IsRaid()) || + (heroicRaids && map->IsHeroic() && map->IsRaid())) { + AreaTriggerTeleport const* at = sObjectMgr->GetMapEntranceTrigger(player->GetMapId()); + playerLocation[player->GetGUID()] = at; + } + } + + virtual void OnMapChanged(Player* player) override { + if (!sConfigMgr->GetOption("AutoResurrect.Enable", false)) { + return; + } + + if (!playerLocation.count(player->GetGUID())) { + return; + } + + AreaTriggerTeleport const* at = playerLocation[player->GetGUID()]; + if (at == NULL) { + return; + } + + player->ResurrectPlayer(1.0f); + player->TeleportTo(at->target_mapId, at->target_X, at->target_Y, at->target_Z, at->target_Orientation); + player->SaveToDB(false, false); + + playerLocation[player->GetGUID()] = NULL; + } +}; + +// Add all scripts in one +void AddAutoResurrectScripts() +{ + new AutoResurrect(); +} diff --git a/modules/mod-character-tools/.editorconfig b/modules/mod-character-tools/.editorconfig new file mode 100644 index 0000000..eb64e2f --- /dev/null +++ b/modules/mod-character-tools/.editorconfig @@ -0,0 +1,8 @@ +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +tab_width = 4 +insert_final_newline = true +trim_trailing_whitespace = true +max_line_length = 80 diff --git a/modules/mod-character-tools/.git_commit_template.txt b/modules/mod-character-tools/.git_commit_template.txt new file mode 100644 index 0000000..708b551 --- /dev/null +++ b/modules/mod-character-tools/.git_commit_template.txt @@ -0,0 +1,49 @@ +### TITLE +## Type(Scope/Subscope): Commit ultra short explanation +## |---- Write below the examples with a maximum of 50 characters ----| +## Example 1: fix(DB/SAI): Missing spell to NPC Hogger +## Example 2: fix(CORE/Raid): Phase 2 of Ragnaros +## Example 3: feat(CORE/Commands): New GM command to do something + + +### DESCRIPTION +## Explain why this change is being made, what does it fix etc... +## |---- Write below the examples with a maximum of 72 characters per lines ----| +## Example: Hogger (id: 492) was not charging player when being engaged. + + +## Provide links to any issue, commit, pull request or other resource +## Example 1: Closes issue #23 +## Example 2: Ported from other project's commit (link) +## Example 3: References taken from wowpedia / wowhead / wowwiki / https://wowgaming.altervista.org/aowow/ + + + +## ======================================================= +## EXTRA INFOS +## ======================================================= +## "Type" can be: +## feat (new feature) +## fix (bug fix) +## refactor (refactoring production code) +## style (formatting, missing semi colons, etc; no code change) +## docs (changes to documentation) +## test (adding or refactoring tests; no production code change) +## chore (updating bash scripts, git files etc; no production code change) +## -------------------- +## Remember to +## Capitalize the subject line +## Use the imperative mood in the subject line +## Do not end the subject line with a period +## Separate subject from body with a blank line +## Use the body to explain what and why rather than how +## Can use multiple lines with "-" for bullet points in body +## -------------------- +## More info here https://www.conventionalcommits.org/en/v1.0.0-beta.2/ +## ======================================================= +## "Scope" can be: +## CORE (core related, c++) +## DB (database related, sql) +## ======================================================= +## "Subscope" is optional and depends on the nature of the commit. +## ======================================================= diff --git a/modules/mod-character-tools/.gitattributes b/modules/mod-character-tools/.gitattributes new file mode 100644 index 0000000..7ef9001 --- /dev/null +++ b/modules/mod-character-tools/.gitattributes @@ -0,0 +1,105 @@ +## AUTO-DETECT +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto eol=lf + +# Text +*.conf text +*.conf.dist text +*.cmake text + +## Scripts +*.sh text +*.fish text +*.lua text + +## SQL +*.sql text + +## C++ +*.c text +*.cc text +*.cxx text +*.cpp text +*.c++ text +*.hpp text +*.h text +*.h++ text +*.hh text + + +## For documentation + +# Documents +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain + +## DOCUMENTATION +*.markdown text +*.md text +*.mdwn text +*.mdown text +*.mkd text +*.mkdn text +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +copyright text +*COPYRIGHT* text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +## GRAPHICS +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +*.svg text +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + + +## ARCHIVES +*.7z binary +*.gz binary +*.jar binary +*.rar binary +*.tar binary +*.zip binary + +## EXECUTABLES +*.exe binary +*.pyc binary diff --git a/modules/mod-character-tools/.github/workflows/core-build.yml b/modules/mod-character-tools/.github/workflows/core-build.yml new file mode 100644 index 0000000..921c9eb --- /dev/null +++ b/modules/mod-character-tools/.github/workflows/core-build.yml @@ -0,0 +1,12 @@ +name: core-build +on: + push: + branches: + - 'master' + pull_request: + +jobs: + build: + uses: azerothcore/reusable-workflows/.github/workflows/core_build_modules.yml@main + with: + module_repo: ${{ github.event.repository.name }} diff --git a/modules/mod-character-tools/.gitignore b/modules/mod-character-tools/.gitignore new file mode 100644 index 0000000..c6e1299 --- /dev/null +++ b/modules/mod-character-tools/.gitignore @@ -0,0 +1,48 @@ +!.gitignore + +# +#Generic +# + +.directory +.mailmap +*.orig +*.rej +*.*~ +.hg/ +*.kdev* +.DS_Store +CMakeLists.txt.user +*.bak +*.patch +*.diff +*.REMOTE.* +*.BACKUP.* +*.BASE.* +*.LOCAL.* + +# +# IDE & other softwares +# +/.settings/ +/.externalToolBuilders/* +# exclude in all levels +nbproject/ +.sync.ffs_db +*.kate-swp + +# +# Eclipse +# +*.pydevproject +.metadata +.gradle +tmp/ +*.tmp +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.project +.cproject diff --git a/modules/mod-character-tools/LICENSE b/modules/mod-character-tools/LICENSE new file mode 100644 index 0000000..dbbe355 --- /dev/null +++ b/modules/mod-character-tools/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/modules/mod-character-tools/README.md b/modules/mod-character-tools/README.md new file mode 100644 index 0000000..07cdaea --- /dev/null +++ b/modules/mod-character-tools/README.md @@ -0,0 +1,40 @@ +# ![logo](https://raw.githubusercontent.com/azerothcore/azerothcore.github.io/master/images/logo-github.png) AzerothCore +## Character Tools +- Latest build status with azerothcore: [![Build Status](https://github.com/azerothcore/mod-character-tools/workflows/core-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/mod-character-tools) + + +This is a module for [AzerothCore](http://www.azerothcore.org) + +Current features: + +-**This Module is for a item with a use function to show gossip menu to allow players to change faction/race/name or customise + +Upcoming features: + + +## Requirements + +Character tools Module currently requires: + +AzerothCore v1.0.1+ + +## How to install + +###1) Simply place the module under the `modules` folder of your AzerothCore source folder. + +###2) Input the SQL file to the world database. + +###3) Re-run cmake and launch a clean build of AzerothCore + +**That's it.** + +### (Optional) Edit module configuration + +If you need to change the module configuration, go to your server configuration folder (e.g. **etc**), copy `mod_charactertools.conf.dist` to `mod_charactertools.conf` and edit it as you prefer. + + +# Show your appreciation +[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SBJFTAJKUNEXC) + + + diff --git a/modules/mod-character-tools/conf/conf.sh.dist b/modules/mod-character-tools/conf/conf.sh.dist new file mode 100644 index 0000000..6db05f9 --- /dev/null +++ b/modules/mod-character-tools/conf/conf.sh.dist @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# +# CUSTOM +# + + DB_WORLD_CUSTOM_PATHS+=( + $MOD_CHARACTER_TOOLS_ROOT"/sql/world" + ) diff --git a/modules/mod-character-tools/conf/mod_charactertools.conf.dist b/modules/mod-character-tools/conf/mod_charactertools.conf.dist new file mode 100644 index 0000000..a85e8c6 --- /dev/null +++ b/modules/mod-character-tools/conf/mod_charactertools.conf.dist @@ -0,0 +1,10 @@ +[worldserver] +##################################################################################################### +# # +# CharacterTools # +# Description: Enables of disable the script for character_tools # +# Default: 1 (Enable) # +# 0 (Disable) # +# # +CharacterTools = 1 # +##################################################################################################### \ No newline at end of file diff --git a/modules/mod-character-tools/include.sh b/modules/mod-character-tools/include.sh new file mode 100644 index 0000000..646951e --- /dev/null +++ b/modules/mod-character-tools/include.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + + MOD_CHARACTER_TOOLS_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/" && pwd )" + + source $MOD_CHARACTER_TOOLS_ROOT"/conf/conf.sh.dist" + + if [ -f $MOD_CHARACTER_TOOLS_ROOT"/conf/conf.sh" ]; then + source $MOD_CHARACTER_TOOLS_ROOT"/conf/conf.sh" + fi diff --git a/modules/mod-character-tools/setup_git_commit_template.sh b/modules/mod-character-tools/setup_git_commit_template.sh new file mode 100644 index 0000000..7b52062 --- /dev/null +++ b/modules/mod-character-tools/setup_git_commit_template.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +## Set a local git commit template +git config --local commit.template ".git_commit_template.txt" ; diff --git a/modules/mod-character-tools/sql/world/world.sql b/modules/mod-character-tools/sql/world/world.sql new file mode 100644 index 0000000..d375a0a --- /dev/null +++ b/modules/mod-character-tools/sql/world/world.sql @@ -0,0 +1,2 @@ +-- Adding script to the Item 6948 ( Hearthstone ) +UPDATE `item_template` SET `ScriptName`='character_tools' WHERE `entry`=6948; diff --git a/modules/mod-character-tools/src/CT_loader.cpp b/modules/mod-character-tools/src/CT_loader.cpp new file mode 100644 index 0000000..f2c9d0f --- /dev/null +++ b/modules/mod-character-tools/src/CT_loader.cpp @@ -0,0 +1,6 @@ +void AddCharacterToolsScripts(); + +void Addmod_character_toolsScripts() +{ + AddCharacterToolsScripts(); +} diff --git a/modules/mod-character-tools/src/mod_charactertools.cpp b/modules/mod-character-tools/src/mod_charactertools.cpp new file mode 100644 index 0000000..a58b4a6 --- /dev/null +++ b/modules/mod-character-tools/src/mod_charactertools.cpp @@ -0,0 +1,64 @@ +#include "Define.h" +#include "GossipDef.h" +#include "Item.h" +#include "Player.h" +#include "ScriptedGossip.h" +#include "ScriptMgr.h" +#include "Spell.h" +#include "Configuration/Config.h" +#include "Chat.h" + +class character_tools : public ItemScript +{ +public: + character_tools() : ItemScript("character_tools") {} + + bool OnUse(Player* p, Item* i, SpellCastTargets const& /*targets*/) override + { + p->PlayerTalkClass->ClearMenus(); + + if (p->IsInCombat()) + return false; + + if (!sConfigMgr->GetOption("CharacterTools", true)) + return false; + + AddGossipItemFor(p, GOSSIP_ICON_CHAT, "|TInterface/Icons/Ability_Paladin_BeaconofLight:50:50|tChange My Race", GOSSIP_SENDER_MAIN, 1); + AddGossipItemFor(p, GOSSIP_ICON_CHAT, "|TInterface/Icons/INV_BannerPVP_01:50:50|tChange My Faction", GOSSIP_SENDER_MAIN, 2); + AddGossipItemFor(p, GOSSIP_ICON_CHAT, "|TInterface/Icons/Achievement_BG_returnXflags_def_WSG:50:50|tChange My Appearance", GOSSIP_SENDER_MAIN, 3); + AddGossipItemFor(p, GOSSIP_ICON_CHAT, "|TInterface/Icons/INV_Inscription_Scroll:50:50|tChange My Name", GOSSIP_SENDER_MAIN, 4); + SendGossipMenuFor(p, DEFAULT_GOSSIP_MESSAGE, i->GetGUID()); + + return false; // If item has spell cast it normal. + } + + void OnGossipSelect(Player* player, Item* /*item*/, uint32 /*sender*/, uint32 action) override + { + player->PlayerTalkClass->ClearMenus(); + switch (action) + { + case 1: + player->SetAtLoginFlag(AT_LOGIN_CHANGE_RACE); + ChatHandler(player->GetSession()).PSendSysMessage("CHAT OUTPUT: Please log out for race change."); + break; + case 2: + player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION); + ChatHandler(player->GetSession()).PSendSysMessage("CHAT OUTPUT: Please log out for faction change."); + break; + case 3: + player->SetAtLoginFlag(AT_LOGIN_CUSTOMIZE); + ChatHandler(player->GetSession()).PSendSysMessage("CHAT OUTPUT: Please log out for Character Customize."); + break; + case 4: + player->SetAtLoginFlag(AT_LOGIN_RENAME); + ChatHandler(player->GetSession()).PSendSysMessage("CHAT OUTPUT: Please log out for name change."); + break; + } + } + +}; + +void AddCharacterToolsScripts() +{ + new character_tools(); +} diff --git a/modules/mod-dynamic-xp/.github/workflows/core-build.yml b/modules/mod-dynamic-xp/.github/workflows/core-build.yml new file mode 100644 index 0000000..c44f754 --- /dev/null +++ b/modules/mod-dynamic-xp/.github/workflows/core-build.yml @@ -0,0 +1,45 @@ +name: core-build +on: + push: + pull_request: + +jobs: + build: + strategy: + fail-fast: false + matrix: + compiler: [clang] + runs-on: ubuntu-latest + name: ${{ matrix.compiler }} + env: + COMPILER: ${{ matrix.compiler }} + steps: + - uses: actions/checkout@v2 + with: + repository: 'azerothcore/azerothcore-wotlk' + ref: 'master' + submodules: 'recursive' + - uses: actions/checkout@v2 + with: + submodules: 'recursive' + path: 'modules/mod-dynamic-xp' + - name: Cache + uses: actions/cache@v1.1.2 + with: + path: /home/runner/.ccache + key: ccache:${{ matrix.compiler }}:${{ github.ref }}:${{ github.sha }} + restore-keys: | + ccache:${{ matrix.compiler }}:${{ github.ref }} + ccache:${{ matrix.compiler }} + - name: Configure OS + run: source ./apps/ci/ci-install.sh + env: + CONTINUOUS_INTEGRATION: true + - name: Import db + run: source ./apps/ci/ci-import-db.sh + - name: Build + run: source ./apps/ci/ci-compile.sh + - name: Dry run + run: source ./apps/ci/ci-worldserver-dry-run.sh + - name: Check startup errors + run: source ./apps/ci/ci-error-check.sh \ No newline at end of file diff --git a/modules/mod-dynamic-xp/.gitignore b/modules/mod-dynamic-xp/.gitignore new file mode 100644 index 0000000..d011fdd --- /dev/null +++ b/modules/mod-dynamic-xp/.gitignore @@ -0,0 +1,48 @@ +!.gitignore + +# +#Generic +# + +.directory +.mailmap +*.orig +*.rej +*~ +.hg/ +*.kdev* +.DS_Store +CMakeLists.txt.user +*.bak +*.patch +*.diff +*.REMOTE.* +*.BACKUP.* +*.BASE.* +*.LOCAL.* + +# +# IDE & other softwares +# +/.settings/ +/.externalToolBuilders/* +# exclude in all levels +nbproject/ +.sync.ffs_db +*.kate-swp + +# +# Eclipse +# +*.pydevproject +.metadata +.gradle +tmp/ +*.tmp +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.project +.cproject diff --git a/modules/mod-dynamic-xp/LICENSE b/modules/mod-dynamic-xp/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/modules/mod-dynamic-xp/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/modules/mod-dynamic-xp/README.md b/modules/mod-dynamic-xp/README.md new file mode 100644 index 0000000..72dae1e --- /dev/null +++ b/modules/mod-dynamic-xp/README.md @@ -0,0 +1,22 @@ +# Dynamic XP +- Latest build status with azerothcore: [![Build Status](https://travis-ci.com/milestorme/mod-dynamic-xp.svg?branch=master)](https://travis-ci.com/milestorme/mod-dynamic-xp) + +## Description +Set xp per level range e.g in dynamicxp.conf. + +## Features + +* Dynamic.XP.Rate.1-9 = 1.0 +* Dynamic.XP.Rate.10-19 = 2.0 +* Dynamic.XP.Rate.20-29 = 3.0 +* Dynamic.XP.Rate.30-39 = 4.0 +* Dynamic.XP.Rate.40-49 = 5.0 +* Dynamic.XP.Rate.50-59 = 6.0 +* Dynamic.XP.Rate.60-69 = 7.0 +* Dynamic.XP.Rate.70-79 = 8.0 + + +## Credits +* [Micrah/Milestorme: Script/Module Creator](https://github.com/milestorme). +* [Poszer: Script Support](https://github.com/poszer) +* [Conan513: Original Script from AshmaneCore](https://github.com/conan513). diff --git a/modules/mod-dynamic-xp/conf/dynamicxp.conf.dist b/modules/mod-dynamic-xp/conf/dynamicxp.conf.dist new file mode 100644 index 0000000..5db58a5 --- /dev/null +++ b/modules/mod-dynamic-xp/conf/dynamicxp.conf.dist @@ -0,0 +1,28 @@ +[worldserver] + +################################################################################################################ +# Dynamic.XP.Rate +# Description: You can setup the personal XP rate for different level ranges. +# +# Dynamic.XP.Rate.Announce: 1 (Enable) Default +# 0 (Disable) +# +# Dynamic.XP.Rate: 1 (Enable) Default +# 0 (Disable) +# +# Dynamic.XP.Rate.X-X: 1+ (Set a custom XP rate on that level range) +# 0 (Reset custom XP rate to default on that level range) +# +Dynamic.XP.Rate.Announce = 1 + +Dynamic.XP.Rate = 1 + +Dynamic.XP.Rate.1-9 = 1 +Dynamic.XP.Rate.10-19 = 2 +Dynamic.XP.Rate.20-29 = 3 +Dynamic.XP.Rate.30-39 = 4 +Dynamic.XP.Rate.40-49 = 5 +Dynamic.XP.Rate.50-59 = 6 +Dynamic.XP.Rate.60-69 = 7 +Dynamic.XP.Rate.70-79 = 8 +################################################################################################################## diff --git a/modules/mod-dynamic-xp/include.sh b/modules/mod-dynamic-xp/include.sh new file mode 100644 index 0000000..e69de29 diff --git a/modules/mod-dynamic-xp/src/DXP_loader.cpp b/modules/mod-dynamic-xp/src/DXP_loader.cpp new file mode 100644 index 0000000..58c36a7 --- /dev/null +++ b/modules/mod-dynamic-xp/src/DXP_loader.cpp @@ -0,0 +1,5 @@ +void AddSC_dynamic_xp_rate(); + +void Addmod_dynamic_xpScripts() { + AddSC_dynamic_xp_rate(); +} diff --git a/modules/mod-dynamic-xp/src/dynamicxp.cpp b/modules/mod-dynamic-xp/src/dynamicxp.cpp new file mode 100644 index 0000000..5290e3a --- /dev/null +++ b/modules/mod-dynamic-xp/src/dynamicxp.cpp @@ -0,0 +1,63 @@ +/* +Credits +Script reworked by Micrah/Milestorme and Poszer (Poszer is the Best) +Module Created by Micrah/Milestorme +Original Script from AshmaneCore https://github.com/conan513 Single Player Project +*/ +#include "Configuration/Config.h" +#include "ScriptMgr.h" +#include "Player.h" +#include "Chat.h" + + +class spp_dynamic_xp_rate : public PlayerScript +{ + public: + spp_dynamic_xp_rate() : PlayerScript("spp_dynamic_xp_rate") { }; + + void OnLogin(Player* player) override + { + if (sConfigMgr->GetBoolDefault("Dynamic.XP.Rate.Announce", true)) + { + ChatHandler(player->GetSession()).SendSysMessage("This server is running the |cff4CFF00Level Dynamic XP |rmodule."); + } + } + void OnGiveXP(Player* player, uint32& amount, Unit* /*victim*/, uint8 xpSource) override + { + if (sConfigMgr->GetBoolDefault("Dynamic.XP.Rate", true)) + + { + if (player->getLevel() <= 9) + amount *= sConfigMgr->GetIntDefault("Dynamic.XP.Rate.1-9", 1); + + else if (player->getLevel() <= 19) + amount *= sConfigMgr->GetIntDefault("Dynamic.XP.Rate.10-19", 2); + + else if (player->getLevel() <= 29) + amount *= sConfigMgr->GetIntDefault("Dynamic.XP.Rate.20-29", 3); + + else if (player->getLevel() <= 39) + amount *= sConfigMgr->GetIntDefault("Dynamic.XP.Rate.30-39", 4); + + else if (player->getLevel() <= 49) + amount *= sConfigMgr->GetIntDefault("Dynamic.XP.Rate.40-49", 5); + + else if (player->getLevel() <= 59) + amount *= sConfigMgr->GetIntDefault("Dynamic.XP.Rate.50-59", 6); + + else if (player->getLevel() <= 69) + amount *= sConfigMgr->GetIntDefault("Dynamic.XP.Rate.60-69", 7); + + else if (player->getLevel() <= 79) + amount *= sConfigMgr->GetIntDefault("Dynamic.XP.Rate.70-79", 8); + + } + + } + +}; + +void AddSC_dynamic_xp_rate() +{ + new spp_dynamic_xp_rate(); +} diff --git a/modules/mod-eluna/.editorconfig b/modules/mod-eluna/.editorconfig new file mode 100644 index 0000000..eb64e2f --- /dev/null +++ b/modules/mod-eluna/.editorconfig @@ -0,0 +1,8 @@ +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +tab_width = 4 +insert_final_newline = true +trim_trailing_whitespace = true +max_line_length = 80 diff --git a/modules/mod-eluna/.git_commit_template.txt b/modules/mod-eluna/.git_commit_template.txt new file mode 100644 index 0000000..708b551 --- /dev/null +++ b/modules/mod-eluna/.git_commit_template.txt @@ -0,0 +1,49 @@ +### TITLE +## Type(Scope/Subscope): Commit ultra short explanation +## |---- Write below the examples with a maximum of 50 characters ----| +## Example 1: fix(DB/SAI): Missing spell to NPC Hogger +## Example 2: fix(CORE/Raid): Phase 2 of Ragnaros +## Example 3: feat(CORE/Commands): New GM command to do something + + +### DESCRIPTION +## Explain why this change is being made, what does it fix etc... +## |---- Write below the examples with a maximum of 72 characters per lines ----| +## Example: Hogger (id: 492) was not charging player when being engaged. + + +## Provide links to any issue, commit, pull request or other resource +## Example 1: Closes issue #23 +## Example 2: Ported from other project's commit (link) +## Example 3: References taken from wowpedia / wowhead / wowwiki / https://wowgaming.altervista.org/aowow/ + + + +## ======================================================= +## EXTRA INFOS +## ======================================================= +## "Type" can be: +## feat (new feature) +## fix (bug fix) +## refactor (refactoring production code) +## style (formatting, missing semi colons, etc; no code change) +## docs (changes to documentation) +## test (adding or refactoring tests; no production code change) +## chore (updating bash scripts, git files etc; no production code change) +## -------------------- +## Remember to +## Capitalize the subject line +## Use the imperative mood in the subject line +## Do not end the subject line with a period +## Separate subject from body with a blank line +## Use the body to explain what and why rather than how +## Can use multiple lines with "-" for bullet points in body +## -------------------- +## More info here https://www.conventionalcommits.org/en/v1.0.0-beta.2/ +## ======================================================= +## "Scope" can be: +## CORE (core related, c++) +## DB (database related, sql) +## ======================================================= +## "Subscope" is optional and depends on the nature of the commit. +## ======================================================= diff --git a/modules/mod-eluna/.gitattributes b/modules/mod-eluna/.gitattributes new file mode 100644 index 0000000..7ef9001 --- /dev/null +++ b/modules/mod-eluna/.gitattributes @@ -0,0 +1,105 @@ +## AUTO-DETECT +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto eol=lf + +# Text +*.conf text +*.conf.dist text +*.cmake text + +## Scripts +*.sh text +*.fish text +*.lua text + +## SQL +*.sql text + +## C++ +*.c text +*.cc text +*.cxx text +*.cpp text +*.c++ text +*.hpp text +*.h text +*.h++ text +*.hh text + + +## For documentation + +# Documents +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain + +## DOCUMENTATION +*.markdown text +*.md text +*.mdwn text +*.mdown text +*.mkd text +*.mkdn text +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +copyright text +*COPYRIGHT* text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +## GRAPHICS +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +*.svg text +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + + +## ARCHIVES +*.7z binary +*.gz binary +*.jar binary +*.rar binary +*.tar binary +*.zip binary + +## EXECUTABLES +*.exe binary +*.pyc binary diff --git a/modules/mod-eluna/.github/workflows/core_build.yml b/modules/mod-eluna/.github/workflows/core_build.yml new file mode 100644 index 0000000..921c9eb --- /dev/null +++ b/modules/mod-eluna/.github/workflows/core_build.yml @@ -0,0 +1,12 @@ +name: core-build +on: + push: + branches: + - 'master' + pull_request: + +jobs: + build: + uses: azerothcore/reusable-workflows/.github/workflows/core_build_modules.yml@main + with: + module_repo: ${{ github.event.repository.name }} diff --git a/modules/mod-eluna/.github/workflows/create-pr.sh b/modules/mod-eluna/.github/workflows/create-pr.sh new file mode 100644 index 0000000..b84d341 --- /dev/null +++ b/modules/mod-eluna/.github/workflows/create-pr.sh @@ -0,0 +1,41 @@ +# Adapted from https://github.com/paygoc6/action-pull-request-another-repo + +CLONE_DIR=$(mktemp -d) + +echo "Setting git variables" +export GITHUB_TOKEN=$API_TOKEN_GITHUB +git config --global user.email "$USER_EMAIL" +git config --global user.name "$USER_NAME" + +date=$(date '+%Y-%m-%d_%H-%M') +DESTINATION_HEAD_BRANCH="$DESTINATION_HEAD_BRANCH-$date" + +echo "Cloning destination git repository" +git clone "https://$API_TOKEN_GITHUB@github.com/$DESTINATION_REPO.git" "$CLONE_DIR" +cd "$CLONE_DIR" +git checkout "$DESTINATION_BASE_BRANCH" +git pull origin "$DESTINATION_BASE_BRANCH" +git checkout -b "$DESTINATION_HEAD_BRANCH" + +echo "Copying contents to git repo" +mkdir -p "$CLONE_DIR/$DESTINATION_FOLDER" +cp -r "$SOURCE_FOLDER/." "$CLONE_DIR/$DESTINATION_FOLDER/" + +echo "Adding files" +git add . +echo "Git status:" +git status -- ":!pages/eluna/date.js" +if git status -- ":!pages/eluna/date.js" | grep -q "Changes to be committed" +then + echo "Adding git commit" + git commit -m "$COMMIT_MESSAGE" + echo "Pushing git commit" + git push -u origin "$DESTINATION_HEAD_BRANCH" + echo "Creating a pull request" + gh pr create -t "$PR_TITLE" \ + -B "$DESTINATION_BASE_BRANCH" \ + -b "" \ + -H "$DESTINATION_HEAD_BRANCH" +else + echo "No changes detected" +fi diff --git a/modules/mod-eluna/.github/workflows/documentation.yml b/modules/mod-eluna/.github/workflows/documentation.yml new file mode 100644 index 0000000..1fe2396 --- /dev/null +++ b/modules/mod-eluna/.github/workflows/documentation.yml @@ -0,0 +1,38 @@ +name: documentation +on: + push: + branches: + - 'main' + - 'master' +jobs: + Push-Docs-To-AzerothCore-Website: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.x' + architecture: 'x64' + - name: Install Python dependencies + run: pip install jinja2 typedecorator markdown + - name: Compile documentation + run: | + cd ${{ github.workspace }}/src/LuaEngine/docs/ + python -m ElunaDoc + - name: Create pull request + run: | + chmod +x "${GITHUB_WORKSPACE}/.github/workflows/create-pr.sh" + "${GITHUB_WORKSPACE}/.github/workflows/create-pr.sh" + env: + API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }} + SOURCE_FOLDER: '${{ github.workspace }}/src/LuaEngine/docs/build' + DESTINATION_REPO: 'azerothcore/azerothcore.github.io' + DESTINATION_FOLDER: 'pages/eluna' + DESTINATION_BASE_BRANCH: 'master' + DESTINATION_HEAD_BRANCH: 'eluna-docs' + PR_TITLE: 'chore: update eluna documentation' + COMMIT_MESSAGE: 'chore: update eluna documentation' + USER_EMAIL: 'ax.cocat@gmail.com' + USER_NAME: 'r-o-b-o-t-o' diff --git a/modules/mod-eluna/.gitignore b/modules/mod-eluna/.gitignore new file mode 100644 index 0000000..c6e1299 --- /dev/null +++ b/modules/mod-eluna/.gitignore @@ -0,0 +1,48 @@ +!.gitignore + +# +#Generic +# + +.directory +.mailmap +*.orig +*.rej +*.*~ +.hg/ +*.kdev* +.DS_Store +CMakeLists.txt.user +*.bak +*.patch +*.diff +*.REMOTE.* +*.BACKUP.* +*.BASE.* +*.LOCAL.* + +# +# IDE & other softwares +# +/.settings/ +/.externalToolBuilders/* +# exclude in all levels +nbproject/ +.sync.ffs_db +*.kate-swp + +# +# Eclipse +# +*.pydevproject +.metadata +.gradle +tmp/ +*.tmp +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.project +.cproject diff --git a/modules/mod-eluna/LICENSE b/modules/mod-eluna/LICENSE new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/modules/mod-eluna/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/modules/mod-eluna/README.md b/modules/mod-eluna/README.md new file mode 100644 index 0000000..d48c1ea --- /dev/null +++ b/modules/mod-eluna/README.md @@ -0,0 +1,137 @@ +### [![Eluna](src/LuaEngine/docs/Eluna.png)](https://github.com/ElunaLuaEngine/Eluna) + +## About + +Eluna Lua Engine © is a lua engine embedded to World of Warcraft emulators. Eluna supports MaNGOS, CMaNGOS, TrinityCore and AzerothCore. +We are currently working hard to make Eluna better from inside and outside. + +If you are having trouble with installation or scripts, please feel free to open an issue. +For documentation and reference see [Eluna API (AC version)](https://www.azerothcore.org/pages/eluna/index.html) and [Lua reference manual](http://www.lua.org/manual/5.2/). + + +## Community + +You can join the official Eluna Discord server, where you'll be able to find resources, releases and support provided by the community: + + + + +The official Azerothcore Discord server offers a channel dedicated to lua development as well: + + + + +# ![logo](https://raw.githubusercontent.com/azerothcore/azerothcore.github.io/master/images/logo-github.png) mod-eluna for AzerothCore +- Latest build status with azerothcore: [![Build Status](https://github.com/azerothcore/mod-eluna/workflows/core-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/mod-eluna) + +[english](README.md) | [中文说明](README_CN.md) | [Español](README_ES.md) + +An [Eluna](https://github.com/ElunaLuaEngine/Eluna) module for AzerothCore. + + +## How to install: + +### 1) Download the sources + +You can get the sources using git. + +#### download with git + +1. open a terminal inside your `azerothcore-wotlk` folder +2. go inside the **modules** folder: `cd modules` +3. download the module sources using: +``` +git clone https://github.com/azerothcore/mod-eluna.git mod-eluna +``` + +### 2) Build + +You need to run the cmake again and rebuild the project. + +Eluna API for AC: +[https://www.azerothcore.org/pages/eluna/index.html](https://www.azerothcore.org/pages/eluna/index.html) + + +## Documentation + +* [Getting started](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/USAGE.md) +* [Eluna features](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/IMPL_DETAILS.md) +* [Function documentation (AC version)](https://www.azerothcore.org/pages/eluna/index.html) +* [Hook documentation](https://github.com/ElunaLuaEngine/Eluna/blob/master/Hooks.h) +* [Lua reference manual](http://www.lua.org/manual/5.2/) +* [Forum - support, releases, guides](https://www.getmangos.eu/forums/forum/119-eluna-central/) +* [Example scripts](https://github.com/ElunaLuaEngine/Scripts) +* [Contributing](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/CONTRIBUTING.md) + + +## Links + +* [MaNGOS](http://getmangos.eu/) +* [cMaNGOS](http://cmangos.net/) +* [TrinityCore](http://www.trinitycore.org/) +* [AzerothCore](http://www.azerothcore.org/) +* [Lua.org](http://www.lua.org/) +* [License](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/LICENSE.md) + + +## Additions from Eluna/master + +### Player +- Added `RegisterPlayerEvent` `43` (`PLAYER_EVENT_ON_PET_ADDED_TO_WORLD`) fires for pets and summoned creatures: https://github.com/azerothcore/mod-eluna/pull/3 +- Added `RegisterPlayerEvent` `44` (`PLAYER_EVENT_ON_LEARN_SPELL`): https://github.com/azerothcore/mod-eluna/pull/46 +- Added `RegisterPlayerEvent` `45` (`PLAYER_ON_ACHIEVEMENT_COMPLETE`): https://github.com/azerothcore/mod-eluna/pull/47 +- Added `RegisterPlayerEvent` `46` (`PLAYER_EVENT_ON_FFAPVP_CHANGE`): https://github.com/azerothcore/mod-eluna/pull/63 +- Added `RegisterPlayerEvent` `47` (`PLAYER_EVENT_ON_UPDATE_AREA`): https://github.com/azerothcore/mod-eluna/pull/65 +- Added `RegisterPlayerEvent` `48` (`PLAYER_EVENT_ON_CAN_INIT_TRADE`): https://github.com/azerothcore/mod-eluna/pull/83 +- Added `RegisterPlayerEvent` `49` (`PLAYER_EVENT_ON_CAN_SEND_MAIL`): https://github.com/azerothcore/mod-eluna/pull/85 +- Added `RegisterPlayerEvent` `50` (`PLAYER_EVENT_ON_CAN_JOIN_LFG`): https://github.com/azerothcore/mod-eluna/pull/86 +- Added `RegisterPlayerEvent` `51` (`PLAYER_EVENT_ON_QUEST_REWARD_ITEM`): https://github.com/azerothcore/mod-eluna/pull/88 +- Added `RegisterPlayerEvent` `52` (`PLAYER_EVENT_ON_CREATE_ITEM`): https://github.com/azerothcore/mod-eluna/pull/88 +- Added `RegisterPlayerEvent` `53` (`PLAYER_EVENT_ON_STORE_NEW_ITEM`): https://github.com/azerothcore/mod-eluna/pull/88 +- Added `RegisterPlayerEvent` `54` (`PLAYER_EVENT_ON_COMPLETE_QUEST`): https://github.com/azerothcore/mod-eluna/pull/90 +- Added `RegisterPlayerEvent` `55` (`PLAYER_EVENT_ON_CAN_GROUP_INVITE`): https://github.com/azerothcore/mod-eluna/pull/100 +- Added `RegisterPlayerEvent` `56` (`PLAYER_EVENT_ON_GROUP_ROLL_REWARD_ITEM`): https://github.com/azerothcore/mod-eluna/pull/119 +- Added `RegisterPlayerEvent` `57` (`PLAYER_EVENT_ON_BG_DESERTION`): https://github.com/azerothcore/mod-eluna/pull/146 +- Added `Player:GetMailCount()`: https://github.com/azerothcore/mod-eluna/pull/76 +- Added `Player:GetXP()`: https://github.com/azerothcore/mod-eluna/pull/77 +- Added `Player:GetAchievementCriteriaProgress()`: https://github.com/azerothcore/mod-eluna/pull/78 +- Added vendor entry as argument to `Player:SendListInventory(object, vendorentry)`: https://github.com/azerothcore/mod-eluna/pull/48 +- Added `Player:GetPlayerSettingValue()` and `Player:UpdatePlayerSetting()`: https://github.com/azerothcore/mod-eluna/pull/125 +- Added `Player:GetTrader()`: https://github.com/azerothcore/mod-eluna/pull/126 +- Added `Player:CanCompleteRepeatableQuest(questId)`: https://github.com/azerothcore/mod-eluna/pull/141 +- Added `Player:CanRewardQuest(questId)`: https://github.com/azerothcore/mod-eluna/pull/141 +- Added `Player:SetGlyph(glyphId, slotIndex)`: https://github.com/azerothcore/mod-eluna/pull/152 + +### Group +- Added `Group:GetGroupType()`: https://github.com/azerothcore/mod-eluna/pull/82 +- Added `Group:SetMemberFlag()`: https://github.com/azerothcore/mod-eluna/pull/102 + +### Unit +- Added `Unit:ModifyThreatPct()`: https://github.com/azerothcore/mod-eluna/pull/25 +- Added `Unit:GetAttackers()`: https://github.com/azerothcore/mod-eluna/pull/116 +- Added `Unit:GetThreatList()`: https://github.com/azerothcore/mod-eluna/pull/117 +- Added `Unit:GetUnitFlags()`: https://github.com/azerothcore/mod-eluna/pull/137 +- Added `Unit:GetUnitFlagsTwo()`: https://github.com/azerothcore/mod-eluna/pull/137 +- Added `Unit:SetUnitFlags(flags)`: https://github.com/azerothcore/mod-eluna/pull/137 +- Added `Unit:SetUnitFlagsTwo(flags)`: https://github.com/azerothcore/mod-eluna/pull/137 +- Added `Unit:SetSpeedRate(unitMoveType, speed)`: https://github.com/azerothcore/mod-eluna/pull/155 +- Added `Unit:SetSpeedRate()`: https://github.com/azerothcore/mod-eluna/pull/155 + +### GameObject +- Added `GameObject:AddLoot()` to add loot at runtime to an **empty** container: https://github.com/azerothcore/mod-eluna/pull/52 + +### Object +- Added `Object:IsPlayer()`: https://github.com/azerothcore/mod-eluna/pull/42 + +### Item +- Added `Item:GetItemTemplate()`: https://github.com/azerothcore/mod-eluna/pull/84 + +### Misc +- Added `HttpRequest()`: https://github.com/azerothcore/mod-eluna/pull/2 +- Added `GetItemTemplate(itemEntry)`: https://github.com/azerothcore/mod-eluna/pull/84 +- Added `ChatHandler` methods: https://github.com/azerothcore/mod-eluna/pull/23 +- Added `ItemTemplate` methods: https://github.com/azerothcore/mod-eluna/pull/84 +- Added `Roll` methods: https://github.com/azerothcore/mod-eluna/pull/119 +- Added logging with `ELUNA_LOG_INFO` for `RunCommand()`: https://github.com/azerothcore/mod-eluna/pull/75 +- Added `GetOwnerHalaa` and `SetOwnerHalaa`: https://github.com/azerothcore/mod-eluna/pull/79 +- Added `WorldDBQueryAsync`, `CharDBQueryAsync` and `AuthDBQueryAsync`: https://github.com/azerothcore/mod-eluna/pull/113 diff --git a/modules/mod-eluna/README_CN.md b/modules/mod-eluna/README_CN.md new file mode 100644 index 0000000..1789c31 --- /dev/null +++ b/modules/mod-eluna/README_CN.md @@ -0,0 +1,92 @@ +### [![Eluna](src/LuaEngine/docs/Eluna.png)](https://github.com/ElunaLuaEngine/Eluna) + +## 关于 + +Eluna Lua Engine © 是嵌入到魔兽世界模拟器中的lua引擎。 Eluna支持MaNGOS,CMaNGOS,TrinityCore和AzerothCore。 +我们目前正在努力使Eluna从内到外变得更好。 + +如果您在安装或脚本方面遇到问题,请随时提出问题。 +有关文档和参考,请参阅[Eluna API (AC版)](https://www.azerothcore.org/pages/eluna/index.html) and [Lua 参考手册](http://www.lua.org/manual/5.2/). + + +## 社区 + +您可以加入官方的Eluna Discord服务器,在那里您将能够找到社区提供的资源,版本和支持: + + + + +官方的Azerothcore Discord服务器也提供了一个专门用于lua开发的通道: + + + + +# ![logo](https://raw.githubusercontent.com/azerothcore/azerothcore.github.io/master/images/logo-github.png) mod-eluna for AzerothCore +- azerothcore 的最新构建状态:[![Build Status](https://github.com/azerothcore/mod-eluna/workflows/core-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/mod-eluna) + +[english](README.md) | [中文说明](README_CN.md) | [Español](README_ES.md) + +一个AzerothCore的[Eluna](https://github.com/ElunaLuaEngine/Eluna)模块。 + + +## 如何安装: + +### 1) 下载源代码 + +您可以使用 git 获取源代码。 + + +#### 使用 git 下载 + +1. 在命令行中打开 `azerothcore-wotlk` 的文件夹。 +2. 进入 **modules** 文件夹: `cd modules` +3. 使用以下命令下载模块源代码。 +``` +git clone https://github.com/azerothcore/mod-eluna.git mod-eluna +``` + +### 2) 构建 + +您需要再次运行 cmake 并重新生成项目。 + +AC版的Eluna API: +[https://www.azerothcore.org/pages/eluna/index.html](https://www.azerothcore.org/pages/eluna/index.html) + + +## 文档 + +* [入门指南](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/USAGE.md) +* [Eluna特性](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/IMPL_DETAILS.md) +* [功能文档(AC版本)](https://www.azerothcore.org/pages/eluna/index.html) +* [Hook文档](https://github.com/ElunaLuaEngine/Eluna/blob/master/Hooks.h) +* [Lua参考手册](http://www.lua.org/manual/5.2/) +* [论坛 - 支持, 发布, 指南](https://www.getmangos.eu/forums/forum/119-eluna-central/) +* [示例脚本](https://github.com/ElunaLuaEngine/Scripts) +* [贡献](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/CONTRIBUTING.md) + + +## 链接 + +* [MaNGOS](http://getmangos.eu/) +* [cMaNGOS](http://cmangos.net/) +* [TrinityCore](http://www.trinitycore.org/) +* [AzerothCore](http://www.azerothcore.org/) +* [Lua.org](http://www.lua.org/) +* [License](https://github.com/ElunaLuaEngine/Eluna/blob/master/docs/LICENSE.md) + + +## 来自Eluna/master的拓展 + +- 添加了 HttpRequest 方法. https://github.com/azerothcore/Eluna/pull/2 +- 添加玩家注册事件43(当宠物添加到世界中时): `PLAYER_EVENT_ON_PET_ADDED_TO_WORLD` https://github.com/azerothcore/Eluna/pull/3 +- 添加聊天处理方法到玩家事件中。 https://github.com/azerothcore/Eluna/pull/23 +- 暴露方法 `ModifyThreatPct()`. https://github.com/azerothcore/Eluna/pull/25 +- 暴露方法 `Object:IsPlayer()`. https://github.com/azerothcore/Eluna/pull/42 +- 添加玩家注册事件44(当玩家学习技能时): `PLAYER_EVENT_ON_LEARN_SPELL`. https://github.com/azerothcore/mod-eluna/pull/46 +- 添加玩家注册事件45(当玩家完成成就时): `PLAYER_ON_ACHIEVEMENT_COMPLETE`。 https://github.com/azerothcore/mod-eluna/pull/47 +- 添加玩家注册事件51(当玩家获得任务奖励时) `PLAYER_EVENT_ON_QUEST_REWARD_ITEM`。https://github.com/azerothcore/mod-eluna/pull/88 +- 添加玩家注册事件52(当玩家创建物品时) `PLAYER_EVENT_ON_CREATE_ITEM`。https://github.com/azerothcore/mod-eluna/pull/88 +- 添加玩家注册事件53(当玩家创建物品实例时) `PLAYER_EVENT_ON_STORE_NEW_ITEM`。https://github.com/azerothcore/mod-eluna/pull/88 +- 添加玩家注册事件54(当玩家完成任务时) `PLAYER_EVENT_ON_COMPLETE_QUEST`。https://github.com/azerothcore/mod-eluna/pull/90 +- 新增参数*商人Id*到方法player:SendListInventory(object, vendorentry)中。 https://github.com/azerothcore/mod-eluna/pull/48 +- 添加方法`gameobject:AddLoot()`, 可以在线给**空**的容器中添加战利品。 https://github.com/azerothcore/mod-eluna/pull/52 diff --git a/modules/mod-eluna/README_ES.md b/modules/mod-eluna/README_ES.md new file mode 100644 index 0000000..0be2db3 --- /dev/null +++ b/modules/mod-eluna/README_ES.md @@ -0,0 +1,26 @@ +# Esta traducción proviene de una versión desactualizada. +## +## +## +## + +# mod-LuaEngine + [English](README.md) | [中文说明](README_CN.md) | [Español](README_ES.md) + +Un módulo de Eluna para AzerothCore. + +Cómo instalar: + +1. Descargar o clonar este módulo: +> [Descargar archivo zip](https://github.com/azerothcore/mod-eluna-lua-engine/archive/master.zip) +> o clonar `git clone https://github.com/azerothcore/mod-eluna-lua-engine.git` +2. Póngalo en la carpeta de módulos del Azerothcore. +> $HOME/azerothcore/modules/ +3. Descargar o clonar el archivo central de ELUNA: +> [Descargar archivo zip](https://github.com/ElunaLuaEngine/Eluna/archive/master.zip) +> o clonar `git clone https://github.com/ElunaLuaEngine/Eluna.git .` +4. Dentro de la carpeta del módulo de Eluna de Azeroth, se encuentra una carpeta / directorio llamado: `LuaEngine` (mod-eluna-lua-engine/LuaEngine). Debe depositar los ficheros de lua, directamente dentro de esa carpeta. Los archivos directamente, no un directorio y luego los ficheros dentro. Por eso te utiliza el “.” cuando se está clonando, para que no genere un directorio nuevo. +5. Una vez copiado los ficheros y descargado el modulo, debes volver a compilar. Si seguiste la guía de instalación, debiste haber generado un directorio build, dentro de azerothcore. Dirígete a él y realiza la compilación como lo menciona en la guía. + +Eluna API : +[http://elunaluaengine.github.io/](http://elunaluaengine.github.io/) diff --git a/modules/mod-eluna/_config.yml b/modules/mod-eluna/_config.yml new file mode 100644 index 0000000..3397c9a --- /dev/null +++ b/modules/mod-eluna/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-architect \ No newline at end of file diff --git a/modules/mod-eluna/conf/mod_LuaEngine.conf.dist b/modules/mod-eluna/conf/mod_LuaEngine.conf.dist new file mode 100644 index 0000000..d94eb23 --- /dev/null +++ b/modules/mod-eluna/conf/mod_LuaEngine.conf.dist @@ -0,0 +1,120 @@ +[worldserver] + +################################################################################################### +# ELUNA SETTINGS +# +# Eluna.Enabled +# Description: Enable or disable Eluna LuaEngine +# Default: true - (enabled) +# false - (disabled) +# +# Eluna.TraceBack +# Description: Sets whether to use debug.traceback function on a lua error or not. +# Notice that you can redefine the function. +# Default: false - (use default error output) +# true - (use debug.traceback function) +# +# Eluna.ScriptPath +# Description: Sets the location of the script folder to load scripts from +# The path can be relative or absolute. +# Default: "lua_scripts" +# +# Eluna.PlayerAnnounceReload +# Description: Enable or disable whether the reload announcement is sent to players (Lowest security level). +# Default: false - (disabled) +# true - (enabled) +# + +Eluna.Enabled = true +Eluna.TraceBack = false +Eluna.ScriptPath = "lua_scripts" +Eluna.PlayerAnnounceReload = false + + +################################################################################################### +# LOGGING SYSTEM SETTINGS +# +# Appender config values: Given an appender "name" +# Appender.name +# Description: Defines 'where to log'. +# Format: Type,LogLevel,Flags,optional1,optional2,optional3 +# +# Type +# 0 - (None) +# 1 - (Console) +# 2 - (File) +# 3 - (DB) +# +# LogLevel +# 0 - (Disabled) +# 1 - (Fatal) +# 2 - (Error) +# 3 - (Warning) +# 4 - (Info) +# 5 - (Debug) +# 6 - (Trace) +# +# Flags: +# 0 - None +# 1 - Prefix Timestamp to the text +# 2 - Prefix Log Level to the text +# 4 - Prefix Log Filter type to the text +# 8 - Append timestamp to the log file name. Format: YYYY-MM-DD_HH-MM-SS +# (Only used with Type = 2) +# 16 - Make a backup of existing file before overwrite +# (Only used with Mode = w) +# +# Colors (read as optional1 if Type = Console) +# Format: "fatal error warn info debug trace" +# 0 - BLACK +# 1 - RED +# 2 - GREEN +# 3 - BROWN +# 4 - BLUE +# 5 - MAGENTA +# 6 - CYAN +# 7 - GREY +# 8 - YELLOW +# 9 - LRED +# 10 - LGREEN +# 11 - LBLUE +# 12 - LMAGENTA +# 13 - LCYAN +# 14 - WHITE +# Example: "1 9 3 6 5 8" +# +# File: Name of the file (read as optional1 if Type = File) +# Allows to use one "%s" to create dynamic files +# +# Mode: Mode to open the file (read as optional2 if Type = File) +# a - (Append) +# w - (Overwrite) +# +# MaxFileSize: Maximum file size of the log file before creating a new log file +# (read as optional3 if Type = File) +# Size is measured in bytes expressed in a 64-bit unsigned integer. +# Maximum value is 4294967295 (4 GB). Leave blank for no limit. +# NOTE: Does not work with dynamic filenames. +# Example: 536870912 (512 MB) +# +Appender.ElunaLog=2,5,0,eluna.log,w +Appender.ElunaConsole=1,4,0,"0 9 0 3 5 0" + +# Logger config values: Given a logger "name" +# Logger.name +# Description: Defines 'What to log' +# Format: LogLevel,AppenderList +# +# LogLevel +# 0 - (Disabled) +# 1 - (Fatal) +# 2 - (Error) +# 3 - (Warning) +# 4 - (Info) +# 5 - (Debug) +# 6 - (Trace) +# +# AppenderList: List of appenders linked to logger +# (Using spaces as separator). +# +Logger.eluna=6,ElunaLog ElunaConsole diff --git a/modules/mod-eluna/icon.png b/modules/mod-eluna/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..35e9047b02d06cf73c245878dfc1ad1ef38aed04 GIT binary patch literal 4095 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. + */ + +#include "Chat.h" +#include "ElunaEventMgr.h" +#include "Log.h" +#include "LuaEngine.h" +#include "Pet.h" +#include "Player.h" +#include "ScriptMgr.h" +#include "ScriptedGossip.h" + +class Eluna_AllCreatureScript : public AllCreatureScript +{ +public: + Eluna_AllCreatureScript() : AllCreatureScript("Eluna_AllCreatureScript") { } + + // Creature + bool CanCreatureGossipHello(Player* player, Creature* creature) override + { + if (sEluna->OnGossipHello(player, creature)) + return true; + + return false; + } + + bool CanCreatureGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override + { + if (sEluna->OnGossipSelect(player, creature, sender, action)) + return true; + + return false; + } + + bool CanCreatureGossipSelectCode(Player* player, Creature* creature, uint32 sender, uint32 action, const char* code) override + { + if (sEluna->OnGossipSelectCode(player, creature, sender, action, code)) + return true; + + return false; + } + + void OnCreatureAddWorld(Creature* creature) override + { + sEluna->OnAddToWorld(creature); + + if (creature->IsGuardian() && creature->ToTempSummon() && creature->ToTempSummon()->GetSummonerGUID().IsPlayer()) + sEluna->OnPetAddedToWorld(creature->ToTempSummon()->GetSummonerUnit()->ToPlayer(), creature); + } + + void OnCreatureRemoveWorld(Creature* creature) override + { + sEluna->OnRemoveFromWorld(creature); + } + + bool CanCreatureQuestAccept(Player* player, Creature* creature, Quest const* quest) override + { + sEluna->OnQuestAccept(player, creature, quest); + return false; + } + + bool CanCreatureQuestReward(Player* player, Creature* creature, Quest const* quest, uint32 opt) override + { + if (sEluna->OnQuestReward(player, creature, quest, opt)) + { + ClearGossipMenuFor(player); + return true; + } + + return false; + } + + CreatureAI* GetCreatureAI(Creature* creature) const override + { + if (CreatureAI* luaAI = sEluna->GetAI(creature)) + return luaAI; + + return nullptr; + } +}; + +class Eluna_AllGameObjectScript : public AllGameObjectScript +{ +public: + Eluna_AllGameObjectScript() : AllGameObjectScript("Eluna_AllGameObjectScript") { } + + void OnGameObjectAddWorld(GameObject* go) override + { + sEluna->OnAddToWorld(go); + } + + void OnGameObjectRemoveWorld(GameObject* go) override + { + sEluna->OnRemoveFromWorld(go); + } + + void OnGameObjectUpdate(GameObject* go, uint32 diff) override + { + sEluna->UpdateAI(go, diff); + } + + bool CanGameObjectGossipHello(Player* player, GameObject* go) override + { + if (sEluna->OnGossipHello(player, go)) + return true; + + if (sEluna->OnGameObjectUse(player, go)) + return true; + + return false; + } + + void OnGameObjectDamaged(GameObject* go, Player* player) override + { + sEluna->OnDamaged(go, player); + } + + void OnGameObjectDestroyed(GameObject* go, Player* player) override + { + sEluna->OnDestroyed(go, player); + } + + void OnGameObjectLootStateChanged(GameObject* go, uint32 state, Unit* /*unit*/) override + { + sEluna->OnLootStateChanged(go, state); + } + + void OnGameObjectStateChanged(GameObject* go, uint32 state) override + { + sEluna->OnGameObjectStateChanged(go, state); + } + + bool CanGameObjectQuestAccept(Player* player, GameObject* go, Quest const* quest) override + { + sEluna->OnQuestAccept(player, go, quest); + return false; + } + + bool CanGameObjectGossipSelect(Player* player, GameObject* go, uint32 sender, uint32 action) override + { + if (sEluna->OnGossipSelect(player, go, sender, action)) + return true; + + return false; + } + + bool CanGameObjectGossipSelectCode(Player* player, GameObject* go, uint32 sender, uint32 action, const char* code) override + { + if (sEluna->OnGossipSelectCode(player, go, sender, action, code)) + return true; + + return false; + } + + bool CanGameObjectQuestReward(Player* player, GameObject* go, Quest const* quest, uint32 opt) override + { + if (sEluna->OnQuestAccept(player, go, quest)) + return false; + + if (sEluna->OnQuestReward(player, go, quest, opt)) + return false; + + return true; + } + + GameObjectAI* GetGameObjectAI(GameObject* go) const override + { + sEluna->OnSpawn(go); + return nullptr; + } +}; + +class Eluna_AllItemScript : public AllItemScript +{ +public: + Eluna_AllItemScript() : AllItemScript("Eluna_AllItemScript") { } + + bool CanItemQuestAccept(Player* player, Item* item, Quest const* quest) override + { + if (sEluna->OnQuestAccept(player, item, quest)) + return false; + + return true; + } + + bool CanItemUse(Player* player, Item* item, SpellCastTargets const& targets) override + { + if (!sEluna->OnUse(player, item, targets)) + return true; + + return false; + } + + bool CanItemExpire(Player* player, ItemTemplate const* proto) override + { + if (sEluna->OnExpire(player, proto)) + return false; + + return true; + } + + bool CanItemRemove(Player* player, Item* item) override + { + if (sEluna->OnRemove(player, item)) + return false; + + return true; + } + + void OnItemGossipSelect(Player* player, Item* item, uint32 sender, uint32 action) override + { + sEluna->HandleGossipSelectOption(player, item, sender, action, ""); + } + + void OnItemGossipSelectCode(Player* player, Item* item, uint32 sender, uint32 action, const char* code) override + { + sEluna->HandleGossipSelectOption(player, item, sender, action, code); + } +}; + +class Eluna_AllMapScript : public AllMapScript +{ +public: + Eluna_AllMapScript() : AllMapScript("Eluna_AllMapScript") { } + + void OnBeforeCreateInstanceScript(InstanceMap* instanceMap, InstanceScript* instanceData, bool /*load*/, std::string /*data*/, uint32 /*completedEncounterMask*/) override + { + instanceData = sEluna->GetInstanceData(instanceMap); + } + + void OnDestroyInstance(MapInstanced* /*mapInstanced*/, Map* map) override + { + sEluna->FreeInstanceId(map->GetInstanceId()); + } + + void OnCreateMap(Map* map) override + { + sEluna->OnCreate(map); + } + + void OnDestroyMap(Map* map) override + { + sEluna->OnDestroy(map); + } + + void OnPlayerEnterAll(Map* map, Player* player) override + { + sEluna->OnPlayerEnter(map, player); + } + + void OnPlayerLeaveAll(Map* map, Player* player) override + { + sEluna->OnPlayerLeave(map, player); + } + + void OnMapUpdate(Map* map, uint32 diff) override + { + sEluna->OnUpdate(map, diff); + } +}; + +class Eluna_AuctionHouseScript : public AuctionHouseScript +{ +public: + Eluna_AuctionHouseScript() : AuctionHouseScript("Eluna_AuctionHouseScript") { } + + void OnAuctionAdd(AuctionHouseObject* ah, AuctionEntry* entry) override + { + sEluna->OnAdd(ah, entry); + } + + void OnAuctionRemove(AuctionHouseObject* ah, AuctionEntry* entry) override + { + sEluna->OnRemove(ah, entry); + } + + void OnAuctionSuccessful(AuctionHouseObject* ah, AuctionEntry* entry) override + { + sEluna->OnSuccessful(ah, entry); + } + + void OnAuctionExpire(AuctionHouseObject* ah, AuctionEntry* entry) override + { + sEluna->OnExpire(ah, entry); + } +}; + +class Eluna_BGScript : public BGScript +{ +public: + Eluna_BGScript() : BGScript("Eluna_BGScript") { } + + void OnBattlegroundStart(Battleground* bg) override + { + sEluna->OnBGStart(bg, bg->GetBgTypeID(), bg->GetInstanceID()); + } + + void OnBattlegroundEnd(Battleground* bg, TeamId winnerTeam) override + { + sEluna->OnBGEnd(bg, bg->GetBgTypeID(), bg->GetInstanceID(), winnerTeam); + } + + void OnBattlegroundDestroy(Battleground* bg) override + { + sEluna->OnBGDestroy(bg, bg->GetBgTypeID(), bg->GetInstanceID()); + } + + void OnBattlegroundCreate(Battleground* bg) override + { + sEluna->OnBGCreate(bg, bg->GetBgTypeID(), bg->GetInstanceID()); + } +}; + +class Eluna_CommandSC : public CommandSC +{ +public: + Eluna_CommandSC() : CommandSC("Eluna_CommandSC") { } + + bool CanExecuteCommand(ChatHandler& handler, std::string_view cmdStr) override + { + if (!sEluna->OnCommand(handler, std::string(cmdStr).c_str())) + { + return false; + } + + return true; + } +}; + +class Eluna_ElunaScript : public ElunaScript +{ +public: + Eluna_ElunaScript() : ElunaScript("Eluna_ElunaScript") { } + + // Weather + void OnWeatherChange(Weather* weather, WeatherState state, float grade) override + { + sEluna->OnChange(weather, weather->GetZone(), state, grade); + } + + // AreaTriger + bool CanAreaTrigger(Player* player, AreaTrigger const* trigger) override + { + if (sEluna->OnAreaTrigger(player, trigger)) + return true; + + return false; + } +}; + +class Eluna_GameEventScript : public GameEventScript +{ +public: + Eluna_GameEventScript() : GameEventScript("Eluna_GameEventScript") { } + + void OnStart(uint16 eventID) override + { + sEluna->OnGameEventStart(eventID); + } + + void OnStop(uint16 eventID) override + { + sEluna->OnGameEventStop(eventID); + } +}; + +class Eluna_GroupScript : public GroupScript +{ +public: + Eluna_GroupScript() : GroupScript("Eluna_GroupScript") { } + + void OnAddMember(Group* group, ObjectGuid guid) override + { + sEluna->OnAddMember(group, guid); + } + + void OnInviteMember(Group* group, ObjectGuid guid) override + { + sEluna->OnInviteMember(group, guid); + } + + void OnRemoveMember(Group* group, ObjectGuid guid, RemoveMethod method, ObjectGuid /* kicker */, const char* /* reason */) override + { + sEluna->OnRemoveMember(group, guid, method); + } + + void OnChangeLeader(Group* group, ObjectGuid newLeaderGuid, ObjectGuid oldLeaderGuid) override + { + sEluna->OnChangeLeader(group, newLeaderGuid, oldLeaderGuid); + } + + void OnDisband(Group* group) override + { + sEluna->OnDisband(group); + } + + void OnCreate(Group* group, Player* leader) override + { + sEluna->OnCreate(group, leader->GetGUID(), group->GetGroupType()); + } +}; + +class Eluna_GuildScript : public GuildScript +{ +public: + Eluna_GuildScript() : GuildScript("Eluna_GuildScript") { } + + void OnAddMember(Guild* guild, Player* player, uint8& plRank) override + { + sEluna->OnAddMember(guild, player, plRank); + } + + void OnRemoveMember(Guild* guild, Player* player, bool isDisbanding, bool /*isKicked*/) override + { + sEluna->OnRemoveMember(guild, player, isDisbanding); + } + + void OnMOTDChanged(Guild* guild, const std::string& newMotd) override + { + sEluna->OnMOTDChanged(guild, newMotd); + } + + void OnInfoChanged(Guild* guild, const std::string& newInfo) override + { + sEluna->OnInfoChanged(guild, newInfo); + } + + void OnCreate(Guild* guild, Player* leader, const std::string& name) override + { + sEluna->OnCreate(guild, leader, name); + } + + void OnDisband(Guild* guild) override + { + sEluna->OnDisband(guild); + } + + void OnMemberWitdrawMoney(Guild* guild, Player* player, uint32& amount, bool isRepair) override + { + sEluna->OnMemberWitdrawMoney(guild, player, amount, isRepair); + } + + void OnMemberDepositMoney(Guild* guild, Player* player, uint32& amount) override + { + sEluna->OnMemberDepositMoney(guild, player, amount); + } + + void OnItemMove(Guild* guild, Player* player, Item* pItem, bool isSrcBank, uint8 srcContainer, uint8 srcSlotId, + bool isDestBank, uint8 destContainer, uint8 destSlotId) override + { + sEluna->OnItemMove(guild, player, pItem, isSrcBank, srcContainer, srcSlotId, isDestBank, destContainer, destSlotId); + } + + void OnEvent(Guild* guild, uint8 eventType, ObjectGuid::LowType playerGuid1, ObjectGuid::LowType playerGuid2, uint8 newRank) override + { + sEluna->OnEvent(guild, eventType, playerGuid1, playerGuid2, newRank); + } + + void OnBankEvent(Guild* guild, uint8 eventType, uint8 tabId, ObjectGuid::LowType playerGuid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId) override + { + sEluna->OnBankEvent(guild, eventType, tabId, playerGuid, itemOrMoney, itemStackCount, destTabId); + } +}; + +class Eluna_LootScript : public LootScript +{ +public: + Eluna_LootScript() : LootScript("Eluna_LootScript") { } + + void OnLootMoney(Player* player, uint32 gold) override + { + sEluna->OnLootMoney(player, gold); + } +}; + +class Eluna_MiscScript : public MiscScript +{ +public: + Eluna_MiscScript() : MiscScript("Eluna_MiscScript") { } + + void GetDialogStatus(Player* player, Object* questgiver) override + { + if (questgiver->GetTypeId() == TYPEID_GAMEOBJECT) + sEluna->GetDialogStatus(player, questgiver->ToGameObject()); + else if (questgiver->GetTypeId() == TYPEID_UNIT) + sEluna->GetDialogStatus(player, questgiver->ToCreature()); + } +}; + +class Eluna_PetScript : public PetScript +{ +public: + Eluna_PetScript() : PetScript("Eluna_PetScript") { } + + void OnPetAddToWorld(Pet* pet) override + { + sEluna->OnPetAddedToWorld(pet->GetOwner(), pet); + } +}; + +class Eluna_PlayerScript : public PlayerScript +{ +public: + Eluna_PlayerScript() : PlayerScript("Eluna_PlayerScript") { } + + void OnPlayerResurrect(Player* player, float /*restore_percent*/, bool /*applySickness*/) override + { + sEluna->OnResurrect(player); + } + + bool CanPlayerUseChat(Player* player, uint32 type, uint32 lang, std::string& msg) override + { + if (type != CHAT_MSG_SAY && type != CHAT_MSG_YELL && type != CHAT_MSG_EMOTE) + return true; + + if (!sEluna->OnChat(player, type, lang, msg)) + return false; + + return true; + } + + bool CanPlayerUseChat(Player* player, uint32 type, uint32 lang, std::string& msg, Player* target) override + { + if (!sEluna->OnChat(player, type, lang, msg, target)) + return false; + + return true; + } + + bool CanPlayerUseChat(Player* player, uint32 type, uint32 lang, std::string& msg, Group* group) override + { + if (!sEluna->OnChat(player, type, lang, msg, group)) + return false; + + return true; + } + + bool CanPlayerUseChat(Player* player, uint32 type, uint32 lang, std::string& msg, Guild* guild) override + { + if (!sEluna->OnChat(player, type, lang, msg, guild)) + return false; + + return true; + } + + bool CanPlayerUseChat(Player* player, uint32 type, uint32 lang, std::string& msg, Channel* channel) override + { + if (!sEluna->OnChat(player, type, lang, msg, channel)) + return false; + + return true; + } + + void OnLootItem(Player* player, Item* item, uint32 count, ObjectGuid lootguid) override + { + sEluna->OnLootItem(player, item, count, lootguid); + } + + void OnPlayerLearnTalents(Player* player, uint32 talentId, uint32 talentRank, uint32 spellid) override + { + sEluna->OnLearnTalents(player, talentId, talentRank, spellid); + } + + bool CanUseItem(Player* player, ItemTemplate const* proto, InventoryResult& result) override + { + result = sEluna->OnCanUseItem(player, proto->ItemId); + return result != EQUIP_ERR_OK ? false : true; + } + + void OnEquip(Player* player, Item* it, uint8 bag, uint8 slot, bool /*update*/) override + { + sEluna->OnEquip(player, it, bag, slot); + } + + void OnPlayerEnterCombat(Player* player, Unit* enemy) override + { + sEluna->OnPlayerEnterCombat(player, enemy); + } + + void OnPlayerLeaveCombat(Player* player) override + { + sEluna->OnPlayerLeaveCombat(player); + } + + bool CanRepopAtGraveyard(Player* player) override + { + sEluna->OnRepop(player); + return true; + } + + void OnQuestAbandon(Player* player, uint32 questId) override + { + sEluna->OnQuestAbandon(player, questId); + } + + void OnMapChanged(Player* player) override + { + sEluna->OnMapChanged(player); + } + + void OnGossipSelect(Player* player, uint32 menu_id, uint32 sender, uint32 action) override + { + sEluna->HandleGossipSelectOption(player, menu_id, sender, action, ""); + } + + void OnGossipSelectCode(Player* player, uint32 menu_id, uint32 sender, uint32 action, const char* code) override + { + sEluna->HandleGossipSelectOption(player, menu_id, sender, action, code); + } + + void OnPVPKill(Player* killer, Player* killed) override + { + sEluna->OnPVPKill(killer, killed); + } + + void OnCreatureKill(Player* killer, Creature* killed) override + { + sEluna->OnCreatureKill(killer, killed); + } + + void OnPlayerKilledByCreature(Creature* killer, Player* killed) override + { + sEluna->OnPlayerKilledByCreature(killer, killed); + } + + void OnLevelChanged(Player* player, uint8 oldLevel) override + { + sEluna->OnLevelChanged(player, oldLevel); + } + + void OnFreeTalentPointsChanged(Player* player, uint32 points) override + { + sEluna->OnFreeTalentPointsChanged(player, points); + } + + void OnTalentsReset(Player* player, bool noCost) override + { + sEluna->OnTalentsReset(player, noCost); + } + + void OnMoneyChanged(Player* player, int32& amount) override + { + sEluna->OnMoneyChanged(player, amount); + } + + void OnGiveXP(Player* player, uint32& amount, Unit* victim, uint8 xpSource) override + { + sEluna->OnGiveXP(player, amount, victim, xpSource); + } + + bool OnReputationChange(Player* player, uint32 factionID, int32& standing, bool incremental) override + { + return sEluna->OnReputationChange(player, factionID, standing, incremental); + } + + void OnDuelRequest(Player* target, Player* challenger) override + { + sEluna->OnDuelRequest(target, challenger); + } + + void OnDuelStart(Player* player1, Player* player2) override + { + sEluna->OnDuelStart(player1, player2); + } + + void OnDuelEnd(Player* winner, Player* loser, DuelCompleteType type) override + { + sEluna->OnDuelEnd(winner, loser, type); + } + + void OnEmote(Player* player, uint32 emote) override + { + sEluna->OnEmote(player, emote); + } + + void OnTextEmote(Player* player, uint32 textEmote, uint32 emoteNum, ObjectGuid guid) override + { + sEluna->OnTextEmote(player, textEmote, emoteNum, guid); + } + + void OnSpellCast(Player* player, Spell* spell, bool skipCheck) override + { + sEluna->OnSpellCast(player, spell, skipCheck); + } + + void OnLogin(Player* player) override + { + sEluna->OnLogin(player); + } + + void OnLogout(Player* player) override + { + sEluna->OnLogout(player); + } + + void OnCreate(Player* player) override + { + sEluna->OnCreate(player); + } + + void OnSave(Player* player) override + { + sEluna->OnSave(player); + } + + void OnDelete(ObjectGuid guid, uint32 /*accountId*/) override + { + sEluna->OnDelete(guid.GetCounter()); + } + + void OnBindToInstance(Player* player, Difficulty difficulty, uint32 mapid, bool permanent) override + { + sEluna->OnBindToInstance(player, difficulty, mapid, permanent); + } + + void OnUpdateArea(Player* player, uint32 oldArea, uint32 newArea) override + { + sEluna->OnUpdateArea(player, oldArea, newArea); + } + + void OnUpdateZone(Player* player, uint32 newZone, uint32 newArea) override + { + sEluna->OnUpdateZone(player, newZone, newArea); + } + + void OnFirstLogin(Player* player) override + { + sEluna->OnFirstLogin(player); + } + + void OnLearnSpell(Player* player, uint32 spellId) override + { + sEluna->OnLearnSpell(player, spellId); + } + + void OnAchiComplete(Player* player, AchievementEntry const* achievement) override + { + sEluna->OnAchiComplete(player, achievement); + } + + void OnFfaPvpStateUpdate(Player* player, bool IsFlaggedForFfaPvp) override + { + sEluna->OnFfaPvpStateUpdate(player, IsFlaggedForFfaPvp); + } + + bool CanInitTrade(Player* player, Player* target) override + { + return sEluna->OnCanInitTrade(player, target); + } + + bool CanSendMail(Player* player, ObjectGuid receiverGuid, ObjectGuid mailbox, std::string& subject, std::string& body, uint32 money, uint32 cod, Item* item) override + { + return sEluna->OnCanSendMail(player, receiverGuid, mailbox, subject, body, money, cod, item); + } + + bool CanJoinLfg(Player* player, uint8 roles, lfg::LfgDungeonSet& dungeons, const std::string& comment) override + { + return sEluna->OnCanJoinLfg(player, roles, dungeons, comment); + } + + void OnQuestRewardItem(Player* player, Item* item, uint32 count) override + { + sEluna->OnQuestRewardItem(player, item, count); + } + + void OnGroupRollRewardItem(Player* player, Item* item, uint32 count, RollVote voteType, Roll* roll) override + { + sEluna->OnGroupRollRewardItem(player, item, count, voteType, roll); + } + + void OnCreateItem(Player* player, Item* item, uint32 count) override + { + sEluna->OnCreateItem(player, item, count); + } + + void OnStoreNewItem(Player* player, Item* item, uint32 count) override + { + sEluna->OnStoreNewItem(player, item, count); + } + + void OnPlayerCompleteQuest(Player* player, Quest const* quest) override + { + sEluna->OnPlayerCompleteQuest(player, quest); + } + + bool CanGroupInvite(Player* player, std::string& memberName) override + { + return sEluna->OnCanGroupInvite(player, memberName); + } + + void OnBattlegroundDesertion(Player* player, const BattlegroundDesertionType type) override + { + sEluna->OnBattlegroundDesertion(player, type); + } +}; + +class Eluna_ServerScript : public ServerScript +{ +public: + Eluna_ServerScript() : ServerScript("Eluna_ServerScript") { } + + bool CanPacketSend(WorldSession* session, WorldPacket& packet) override + { + if (!sEluna->OnPacketSend(session, packet)) + return false; + + return true; + } + + bool CanPacketReceive(WorldSession* session, WorldPacket& packet) override + { + if (!sEluna->OnPacketReceive(session, packet)) + return false; + + return true; + } +}; + +class Eluna_SpellSC : public SpellSC +{ +public: + Eluna_SpellSC() : SpellSC("Eluna_SpellSC") { } + + void OnDummyEffect(WorldObject* caster, uint32 spellID, SpellEffIndex effIndex, GameObject* gameObjTarget) override + { + sEluna->OnDummyEffect(caster, spellID, effIndex, gameObjTarget); + } + + void OnDummyEffect(WorldObject* caster, uint32 spellID, SpellEffIndex effIndex, Creature* creatureTarget) override + { + sEluna->OnDummyEffect(caster, spellID, effIndex, creatureTarget); + } + + void OnDummyEffect(WorldObject* caster, uint32 spellID, SpellEffIndex effIndex, Item* itemTarget) override + { + sEluna->OnDummyEffect(caster, spellID, effIndex, itemTarget); + } +}; + +class Eluna_UnitScript : public UnitScript +{ +public: + Eluna_UnitScript() : UnitScript("Eluna_UnitScript") { } + + void OnUnitUpdate(Unit* unit, uint32 diff) override + { + unit->elunaEvents->Update(diff); + } +}; + +class Eluna_VehicleScript : public VehicleScript +{ +public: + Eluna_VehicleScript() : VehicleScript("Eluna_VehicleScript") { } + + void OnInstall(Vehicle* veh) override + { + sEluna->OnInstall(veh); + } + + void OnUninstall(Vehicle* veh) override + { + sEluna->OnUninstall(veh); + } + + void OnInstallAccessory(Vehicle* veh, Creature* accessory) override + { + sEluna->OnInstallAccessory(veh, accessory); + } + + void OnAddPassenger(Vehicle* veh, Unit* passenger, int8 seatId) override + { + sEluna->OnAddPassenger(veh, passenger, seatId); + } + + void OnRemovePassenger(Vehicle* veh, Unit* passenger) override + { + sEluna->OnRemovePassenger(veh, passenger); + } +}; + +class Eluna_WorldObjectScript : public WorldObjectScript +{ +public: + Eluna_WorldObjectScript() : WorldObjectScript("Eluna_WorldObjectScript") { } + + void OnWorldObjectDestroy(WorldObject* object) override + { + delete object->elunaEvents; + object->elunaEvents = nullptr; + } + + void OnWorldObjectCreate(WorldObject* object) override + { + object->elunaEvents = nullptr; + } + + void OnWorldObjectSetMap(WorldObject* object, Map* /*map*/) override + { + if (!object->elunaEvents) + object->elunaEvents = new ElunaEventProcessor(&Eluna::GEluna, object); + } + + void OnWorldObjectUpdate(WorldObject* object, uint32 diff) override + { + object->elunaEvents->Update(diff); + } +}; + +class Eluna_WorldScript : public WorldScript +{ +public: + Eluna_WorldScript() : WorldScript("Eluna_WorldScript") { } + + void OnOpenStateChange(bool open) override + { + sEluna->OnOpenStateChange(open); + } + + void OnBeforeConfigLoad(bool reload) override + { + if (!reload) + { + ///- Initialize Lua Engine + LOG_INFO("eluna", "Initialize Eluna Lua Engine..."); + Eluna::Initialize(); + } + + sEluna->OnConfigLoad(reload, true); + } + + void OnAfterConfigLoad(bool reload) override + { + sEluna->OnConfigLoad(reload, false); + } + + void OnShutdownInitiate(ShutdownExitCode code, ShutdownMask mask) override + { + sEluna->OnShutdownInitiate(code, mask); + } + + void OnShutdownCancel() override + { + sEluna->OnShutdownCancel(); + } + + void OnUpdate(uint32 diff) override + { + sEluna->OnWorldUpdate(diff); + } + + void OnStartup() override + { + sEluna->OnStartup(); + } + + void OnShutdown() override + { + sEluna->OnShutdown(); + } + + void OnAfterUnloadAllMaps() override + { + Eluna::Uninitialize(); + } + + void OnBeforeWorldInitialized() override + { + ///- Run eluna scripts. + // in multithread foreach: run scripts + sEluna->RunScripts(); + sEluna->OnConfigLoad(false, false); // Must be done after Eluna is initialized and scripts have run. + } +}; + +// Group all custom scripts +void AddSC_ElunaLuaEngine() +{ + new Eluna_AllCreatureScript(); + new Eluna_AllGameObjectScript(); + new Eluna_AllItemScript(); + new Eluna_AllMapScript(); + new Eluna_AuctionHouseScript(); + new Eluna_BGScript(); + new Eluna_CommandSC(); + new Eluna_ElunaScript(); + new Eluna_GameEventScript(); + new Eluna_GroupScript(); + new Eluna_GuildScript(); + new Eluna_LootScript(); + new Eluna_MiscScript(); + new Eluna_PetScript(); + new Eluna_PlayerScript(); + new Eluna_ServerScript(); + new Eluna_SpellSC(); + new Eluna_UnitScript(); + new Eluna_VehicleScript(); + new Eluna_WorldObjectScript(); + new Eluna_WorldScript(); +} diff --git a/modules/mod-eluna/src/LuaEngine/.editorconfig b/modules/mod-eluna/src/LuaEngine/.editorconfig new file mode 100644 index 0000000..a34283a --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/.editorconfig @@ -0,0 +1,7 @@ +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +tab_width = 4 +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/modules/mod-eluna/src/LuaEngine/.github/workflows/build.yml b/modules/mod-eluna/src/LuaEngine/.github/workflows/build.yml new file mode 100644 index 0000000..f2bbef4 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/.github/workflows/build.yml @@ -0,0 +1,63 @@ +name: build + +on: + push: + pull_request: + +jobs: + + AC-Eluna: + strategy: + fail-fast: false + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + repository: azerothcore/azerothcore-wotlk + ref: 'master' + - uses: actions/checkout@v2 + with: + submodules: false + repository: azerothcore/mod-eluna-lua-engine + path: modules/mod-eluna-lua-engine + - uses: actions/checkout@v2 + with: + path: modules/mod-eluna-lua-engine/LuaEngine + - name: Configure OS + run: | + # Copy paste of https://github.com/azerothcore/azerothcore-wotlk/blob/master/apps/ci/ci-install.sh + + cat >>conf/config.sh <> ./conf/config.sh + echo "CCOMPILERCXX=\"clang++-11\"" >> ./conf/config.sh + - name: Import db + run: source ./apps/ci/ci-import-db.sh + - name: Build + run: source ./apps/ci/ci-compile.sh + - name: Dry run + run: source ./apps/ci/ci-worldserver-dry-run.sh + - name: Check startup errors + run: source ./apps/ci/ci-error-check.sh diff --git a/modules/mod-eluna/src/LuaEngine/.github/workflows/create-pr.sh b/modules/mod-eluna/src/LuaEngine/.github/workflows/create-pr.sh new file mode 100644 index 0000000..3788970 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/.github/workflows/create-pr.sh @@ -0,0 +1,36 @@ +# Adapted from https://github.com/paygoc6/action-pull-request-another-repo + +CLONE_DIR=$(mktemp -d) + +echo "Setting git variables" +export GITHUB_TOKEN=$API_TOKEN_GITHUB +git config --global user.email "$USER_EMAIL" +git config --global user.name "$USER_NAME" + +echo "Cloning destination git repository" +git clone "https://$API_TOKEN_GITHUB@github.com/$DESTINATION_REPO.git" "$CLONE_DIR" +cd "$CLONE_DIR" +git checkout "$DESTINATION_BASE_BRANCH" +git pull origin "$DESTINATION_BASE_BRANCH" +git checkout -b "$DESTINATION_HEAD_BRANCH" + +echo "Copying contents to git repo" +mkdir -p "$CLONE_DIR/$DESTINATION_FOLDER" +cp -r "$SOURCE_FOLDER/." "$CLONE_DIR/$DESTINATION_FOLDER/" + +echo "Adding files" +git add . +if git status | grep -q "Changes to be committed" +then + echo "Adding git commit" + git commit -m "$COMMIT_MESSAGE" + echo "Pushing git commit" + git push -u origin "$DESTINATION_HEAD_BRANCH" + echo "Creating a pull request" + gh pr create -t "$PR_TITLE" \ + -B "$DESTINATION_BASE_BRANCH" \ + -b "" \ + -H "$DESTINATION_HEAD_BRANCH" +else + echo "No changes detected" +fi diff --git a/modules/mod-eluna/src/LuaEngine/.github/workflows/documentation.yml b/modules/mod-eluna/src/LuaEngine/.github/workflows/documentation.yml new file mode 100644 index 0000000..9cdcdbd --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/.github/workflows/documentation.yml @@ -0,0 +1,38 @@ +name: Documentation +on: + push: + branches: + - 'main' + - 'master' +jobs: + Push-Docs-To-AzerothCore-Website: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.x' + architecture: 'x64' + - name: Install Python dependencies + run: pip install jinja2 typedecorator markdown + - name: Compile documentation + run: | + cd ${{ github.workspace }}/docs/ + python -m ElunaDoc + - name: Create pull request + run: | + chmod +x "${GITHUB_WORKSPACE}/.github/workflows/create-pr.sh" + "${GITHUB_WORKSPACE}/.github/workflows/create-pr.sh" + env: + API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }} + SOURCE_FOLDER: '${{ github.workspace }}/docs/build' + DESTINATION_REPO: 'azerothcore/azerothcore.github.io' + DESTINATION_FOLDER: 'pages/eluna' + DESTINATION_BASE_BRANCH: 'master' + DESTINATION_HEAD_BRANCH: 'eluna-docs' + PR_TITLE: 'chore: update eluna documentation' + COMMIT_MESSAGE: 'chore: update eluna documentation' + USER_EMAIL: 'ax.cocat@gmail.com' + USER_NAME: 'r-o-b-o-t-o' diff --git a/modules/mod-eluna/src/LuaEngine/AchievementMethods.h b/modules/mod-eluna/src/LuaEngine/AchievementMethods.h new file mode 100644 index 0000000..e508f09 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/AchievementMethods.h @@ -0,0 +1,54 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef ACHIEVEMENTMETHODS_H +#define ACHIEVEMENTMETHODS_H + +namespace LuaAchievement +{ + /** + * Returns the [Achievement]'s ID. + * + * @return uint32 id + */ + int GetId(lua_State* L, AchievementEntry* const achievement) + { + Eluna::Push(L, achievement->ID); + return 1; + } + + /** + * Returns the [Achievement]'s name. + * + * enum LocaleConstant + * { + * LOCALE_enUS = 0, + * LOCALE_koKR = 1, + * LOCALE_frFR = 2, + * LOCALE_deDE = 3, + * LOCALE_zhCN = 4, + * LOCALE_zhTW = 5, + * LOCALE_esES = 6, + * LOCALE_esMX = 7, + * LOCALE_ruRU = 8 + * }; + * + * @param [LocaleConstant] locale = DEFAULT_LOCALE : locale to return the [Achievement] name in + * @return string name + */ + int GetName(lua_State* L, AchievementEntry* const achievement) + { + uint8 locale = Eluna::CHECKVAL(L, 2, DEFAULT_LOCALE); + if (locale >= TOTAL_LOCALES) + { + return luaL_argerror(L, 2, "valid LocaleConstant expected"); + } + + Eluna::Push(L, achievement->name[locale]); + return 1; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/AuraMethods.h b/modules/mod-eluna/src/LuaEngine/AuraMethods.h new file mode 100644 index 0000000..081da95 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/AuraMethods.h @@ -0,0 +1,211 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef AURAMETHODS_H +#define AURAMETHODS_H + +/*** + * The persistent effect of a [Spell] that remains on a [Unit] after the [Spell] + * has been cast. + * + * As an example, if you cast a damage-over-time spell on a target, an [Aura] is + * put on the target that deals damage continuously. + * + * [Aura]s on your player are displayed in-game as a series of icons to the left + * of the mini-map. + * + * Inherits all methods from: none + */ +namespace LuaAura +{ + /** + * Returns the [Unit] that casted the [Spell] that caused this [Aura] to be applied. + * + * @return [Unit] caster + */ + int GetCaster(lua_State* L, Aura* aura) + { + Eluna::Push(L, aura->GetCaster()); + return 1; + } + + /** + * Returns the GUID of the [Unit] that casted the [Spell] that caused this [Aura] to be applied. + * + * @return string caster_guid : the GUID of the Unit as a decimal string + */ + int GetCasterGUID(lua_State* L, Aura* aura) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, aura->GetCasterGUID()); +#else + Eluna::Push(L, aura->GetCasterGuid()); +#endif + return 1; + } + + /** + * Returns the level of the [Unit] that casted the [Spell] that caused this [Aura] to be applied. + * + * @return uint32 caster_level + */ + int GetCasterLevel(lua_State* L, Aura* aura) + { + Eluna::Push(L, aura->GetCaster()->GetLevel()); + return 1; + } + + /** + * Returns the amount of time left until the [Aura] expires. + * + * @return int32 duration : amount of time left in milliseconds + */ + int GetDuration(lua_State* L, Aura* aura) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, aura->GetDuration()); +#else + Eluna::Push(L, aura->GetAuraDuration()); +#endif + return 1; + } + + /** + * Returns the ID of the [Spell] that caused this [Aura] to be applied. + * + * @return uint32 aura_id + */ + int GetAuraId(lua_State* L, Aura* aura) + { + Eluna::Push(L, aura->GetId()); + return 1; + } + + /** + * Returns the amount of time this [Aura] lasts when applied. + * + * To determine how much time has passed since this Aura was applied, + * subtract the result of [Aura]:GetDuration from the result of this method. + * + * @return int32 max_duration : the maximum duration of the Aura, in milliseconds + */ + int GetMaxDuration(lua_State* L, Aura* aura) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, aura->GetMaxDuration()); +#else + Eluna::Push(L, aura->GetAuraMaxDuration()); +#endif + return 1; + } + + /** + * Returns the number of times the [Aura] has "stacked". + * + * This is the same as the number displayed on the [Aura]'s icon in-game. + * + * @return uint32 stack_amount + */ + int GetStackAmount(lua_State* L, Aura* aura) + { + Eluna::Push(L, aura->GetStackAmount()); + return 1; + } + + /** + * Returns the [Unit] that the [Aura] has been applied to. + * + * @return [Unit] owner + */ + int GetOwner(lua_State* L, Aura* aura) + { +#if defined TRINITY || defined AZEROTHCORE + Eluna::Push(L, aura->GetOwner()); +#else + Eluna::Push(L, aura->GetTarget()); +#endif + return 1; + } + + /** + * Change the amount of time before the [Aura] expires. + * + * @param int32 duration : the new duration of the Aura, in milliseconds + */ + int SetDuration(lua_State* L, Aura* aura) + { + int32 duration = Eluna::CHECKVAL(L, 2); +#if defined TRINITY || defined AZEROTHCORE + aura->SetDuration(duration); +#else + aura->GetHolder()->SetAuraDuration(duration); +#if (defined(TBC) || defined(CLASSIC)) + aura->GetHolder()->UpdateAuraDuration(); +#else + aura->GetHolder()->SendAuraUpdate(false); +#endif +#endif + return 0; + } + + /** + * Change the maximum amount of time before the [Aura] expires. + * + * This does not affect the current duration of the [Aura], but if the [Aura] + * is reset to the maximum duration, it will instead change to `duration`. + * + * @param int32 duration : the new maximum duration of the Aura, in milliseconds + */ + int SetMaxDuration(lua_State* L, Aura* aura) + { + int32 duration = Eluna::CHECKVAL(L, 2); +#if defined TRINITY || defined AZEROTHCORE + aura->SetMaxDuration(duration); +#else + aura->GetHolder()->SetAuraMaxDuration(duration); +#if (defined(TBC) || defined(CLASSIC)) + aura->GetHolder()->UpdateAuraDuration(); +#else + aura->GetHolder()->SendAuraUpdate(false); +#endif +#endif + return 0; + } + + /** + * Change the amount of times the [Aura] has "stacked" on the [Unit]. + * + * If `amount` is greater than or equal to the current number of stacks, + * then the [Aura] has its duration reset to the maximum duration. + * + * @param uint32 amount + */ + int SetStackAmount(lua_State* L, Aura* aura) + { + uint8 amount = Eluna::CHECKVAL(L, 2); +#if defined TRINITY || defined AZEROTHCORE + aura->SetStackAmount(amount); +#else + aura->GetHolder()->SetStackAmount(amount); +#endif + return 0; + } + + /** + * Remove this [Aura] from the [Unit] it is applied to. + */ + int Remove(lua_State* L, Aura* aura) + { +#if defined TRINITY || defined AZEROTHCORE + aura->Remove(); +#else + aura->GetTarget()->RemoveSpellAuraHolder(aura->GetHolder(), AURA_REMOVE_BY_CANCEL); +#endif + Eluna::CHECKOBJ(L, 1)->Invalidate(); + return 0; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/BattleGroundHooks.cpp b/modules/mod-eluna/src/LuaEngine/BattleGroundHooks.cpp new file mode 100644 index 0000000..497256d --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/BattleGroundHooks.cpp @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaTemplate.h" + +using namespace Hooks; + +#define START_HOOK(EVENT) \ + if (!IsEnabled())\ + return;\ + auto key = EventKey(EVENT);\ + if (!BGEventBindings->HasBindingsFor(key))\ + return;\ + LOCK_ELUNA + +void Eluna::OnBGStart(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId) +{ + START_HOOK(BG_EVENT_ON_START); + Push(bg); + Push(bgId); + Push(instanceId); + CallAllFunctions(BGEventBindings, key); +} + +#if AZEROTHCORE +void Eluna::OnBGEnd(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId, TeamId winner) +#else +void Eluna::OnBGEnd(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId, Team winner) +#endif +{ + START_HOOK(BG_EVENT_ON_END); + Push(bg); + Push(bgId); + Push(instanceId); + Push(winner); + CallAllFunctions(BGEventBindings, key); +} + +void Eluna::OnBGCreate(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId) +{ + START_HOOK(BG_EVENT_ON_CREATE); + Push(bg); + Push(bgId); + Push(instanceId); + CallAllFunctions(BGEventBindings, key); +} + +void Eluna::OnBGDestroy(BattleGround* bg, BattleGroundTypeId bgId, uint32 instanceId) +{ + START_HOOK(BG_EVENT_ON_PRE_DESTROY); + Push(bg); + Push(bgId); + Push(instanceId); + CallAllFunctions(BGEventBindings, key); +} diff --git a/modules/mod-eluna/src/LuaEngine/BattleGroundMethods.h b/modules/mod-eluna/src/LuaEngine/BattleGroundMethods.h new file mode 100644 index 0000000..98b4a8d --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/BattleGroundMethods.h @@ -0,0 +1,250 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef BATTLEGROUNDMETHODS_H +#define BATTLEGROUNDMETHODS_H + +/*** + * Contains the state of a battleground, e.g. Warsong Gulch, Arathi Basin, etc. + * + * Inherits all methods from: none + */ +namespace LuaBattleGround +{ + /** + * Returns the name of the [BattleGround]. + * + * @return string name + */ + int GetName(lua_State* L, BattleGround* bg) + { + Eluna::Push(L, bg->GetName()); + return 1; + } + + /** + * Returns the amount of alive players in the [BattleGround] by the team ID. + * + * @param [Team] team : team ID + * @return uint32 count + */ + int GetAlivePlayersCountByTeam(lua_State* L, BattleGround* bg) + { + uint32 team = Eluna::CHECKVAL(L, 2); + +#ifndef AZEROTHCORE + Eluna::Push(L, bg->GetAlivePlayersCountByTeam((Team)team)); +#else + Eluna::Push(L, bg->GetAlivePlayersCountByTeam((TeamId)team)); +#endif + return 1; + } + + /** + * Returns the [Map] of the [BattleGround]. + * + * @return [Map] map + */ + int GetMap(lua_State* L, BattleGround* bg) + { + Eluna::Push(L, bg->GetBgMap()); + return 1; + } + + /** + * Returns the bonus honor given by amount of kills in the specific [BattleGround]. + * + * @param uint32 kills : amount of kills + * @return uint32 bonusHonor + */ + int GetBonusHonorFromKillCount(lua_State* L, BattleGround* bg) + { + uint32 kills = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, bg->GetBonusHonorFromKill(kills)); + return 1; + } + +#ifndef AZEROTHCORE + /** + * Returns the bracket ID of the specific [BattleGround]. + * + * @return [BattleGroundBracketId] bracketId + */ + int GetBracketId(lua_State* L, BattleGround* bg) + { + Eluna::Push(L, bg->GetBracketId()); + return 1; + } +#endif + + /** + * Returns the end time of the [BattleGround]. + * + * @return uint32 endTime + */ + int GetEndTime(lua_State* L, BattleGround* bg) + { +#ifdef CATA + Eluna::Push(L, bg->GetRemainingTime()); +#else + Eluna::Push(L, bg->GetEndTime()); +#endif + return 1; + } + + /** + * Returns the amount of free slots for the selected team in the specific [BattleGround]. + * + * @param [Team] team : team ID + * @return uint32 freeSlots + */ + int GetFreeSlotsForTeam(lua_State* L, BattleGround* bg) + { + uint32 team = Eluna::CHECKVAL(L, 2); + +#ifndef AZEROTHCORE + Eluna::Push(L, bg->GetFreeSlotsForTeam((Team)team)); +#else + Eluna::Push(L, bg->GetFreeSlotsForTeam((TeamId)team)); +#endif + return 1; + } + + /** + * Returns the instance ID of the [BattleGround]. + * + * @return uint32 instanceId + */ + int GetInstanceId(lua_State* L, BattleGround* bg) + { + Eluna::Push(L, bg->GetInstanceID()); + return 1; + } + + /** + * Returns the map ID of the [BattleGround]. + * + * @return uint32 mapId + */ + int GetMapId(lua_State* L, BattleGround* bg) + { + Eluna::Push(L, bg->GetMapId()); + return 1; + } + + /** + * Returns the type ID of the [BattleGround]. + * + * @return [BattleGroundTypeId] typeId + */ + int GetTypeId(lua_State* L, BattleGround* bg) + { +#ifndef AZEROTHCORE + Eluna::Push(L, bg->GetTypeID()); +#else + Eluna::Push(L, bg->GetBgTypeID()); +#endif + return 1; + } + + /** + * Returns the max allowed [Player] level of the specific [BattleGround]. + * + * @return uint32 maxLevel + */ + int GetMaxLevel(lua_State* L, BattleGround* bg) + { + Eluna::Push(L, bg->GetMaxLevel()); + return 1; + } + + /** + * Returns the minimum allowed [Player] level of the specific [BattleGround]. + * + * @return uint32 minLevel + */ + int GetMinLevel(lua_State* L, BattleGround* bg) + { + Eluna::Push(L, bg->GetMinLevel()); + return 1; + } + + /** + * Returns the maximum allowed [Player] count of the specific [BattleGround]. + * + * @return uint32 maxPlayerCount + */ + int GetMaxPlayers(lua_State* L, BattleGround* bg) + { +#ifndef AZEROTHCORE + Eluna::Push(L, bg->GetMaxPlayers()); +#else + Eluna::Push(L, bg->GetMaxPlayersPerTeam() * 2); +#endif + return 1; + } + + /** + * Returns the minimum allowed [Player] count of the specific [BattleGround]. + * + * @return uint32 minPlayerCount + */ + int GetMinPlayers(lua_State* L, BattleGround* bg) + { +#ifndef AZEROTHCORE + Eluna::Push(L, bg->GetMinPlayers()); +#else + Eluna::Push(L, bg->GetMaxPlayersPerTeam() * 2); +#endif + return 1; + } + + /** + * Returns the maximum allowed [Player] count per team of the specific [BattleGround]. + * + * @return uint32 maxTeamPlayerCount + */ + int GetMaxPlayersPerTeam(lua_State* L, BattleGround* bg) + { + Eluna::Push(L, bg->GetMaxPlayersPerTeam()); + return 1; + } + + /** + * Returns the minimum allowed [Player] count per team of the specific [BattleGround]. + * + * @return uint32 minTeamPlayerCount + */ + int GetMinPlayersPerTeam(lua_State* L, BattleGround* bg) + { + Eluna::Push(L, bg->GetMinPlayersPerTeam()); + return 1; + } + + /** + * Returns the winning team of the specific [BattleGround]. + * + * @return [Team] team + */ + int GetWinner(lua_State* L, BattleGround* bg) + { + Eluna::Push(L, bg->GetWinner()); + return 1; + } + + /** + * Returns the status of the specific [BattleGround]. + * + * @return [BattleGroundStatus] status + */ + int GetStatus(lua_State* L, BattleGround* bg) + { + Eluna::Push(L, bg->GetStatus()); + return 1; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/BindingMap.h b/modules/mod-eluna/src/LuaEngine/BindingMap.h new file mode 100644 index 0000000..287d489 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/BindingMap.h @@ -0,0 +1,375 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef _BINDING_MAP_H +#define _BINDING_MAP_H + +#include +#include "Common.h" +#include "ElunaUtility.h" +#include + +extern "C" +{ +#include "lua.h" +#include "lauxlib.h" +}; + + +/* + * A set of bindings from keys of type `K` to Lua references. + */ +template +class BindingMap : public ElunaUtil::Lockable +{ +private: + lua_State* L; + uint64 maxBindingID; + + struct Binding + { + uint64 id; + lua_State* L; + uint32 remainingShots; + int functionReference; + + Binding(lua_State* L, uint64 id, int functionReference, uint32 remainingShots) : + id(id), + L(L), + remainingShots(remainingShots), + functionReference(functionReference) + { } + + ~Binding() + { + luaL_unref(L, LUA_REGISTRYINDEX, functionReference); + } + }; + + typedef std::vector< std::unique_ptr > BindingList; + + std::unordered_map bindings; + /* + * This table is for fast removal of bindings by ID. + * + * Instead of having to look through (potentially) every BindingList to find + * the Binding with the right ID, this allows you to go directly to the + * BindingList that might have the Binding with that ID. + * + * However, you must be careful not to store pointers to BindingLists + * that no longer exist (see `void Clear(const K& key)` implementation). + */ + std::unordered_map id_lookup_table; + +public: + BindingMap(lua_State* L) : + L(L), + maxBindingID(0) + { } + + /* + * Insert a new binding from `key` to `ref`, which lasts for `shots`-many pushes. + * + * If `shots` is 0, it will never automatically expire, but can still be + * removed with `Clear` or `Remove`. + */ + uint64 Insert(const K& key, int ref, uint32 shots) + { + Guard guard(GetLock()); + + uint64 id = (++maxBindingID); + BindingList& list = bindings[key]; + list.push_back(std::unique_ptr(new Binding(L, id, ref, shots))); + id_lookup_table[id] = &list; + return id; + } + + /* + * Clear all bindings for `key`. + */ + void Clear(const K& key) + { + Guard guard(GetLock()); + + if (bindings.empty()) + return; + + auto iter = bindings.find(key); + if (iter == bindings.end()) + return; + + BindingList& list = iter->second; + + // Remove all pointers to `list` from `id_lookup_table`. + for (auto i = list.begin(); i != list.end(); ++i) + { + std::unique_ptr& binding = *i; + id_lookup_table.erase(binding->id); + } + + bindings.erase(key); + } + + /* + * Clear all bindings for all keys. + */ + void Clear() + { + Guard guard(GetLock()); + + if (bindings.empty()) + return; + + id_lookup_table.clear(); + bindings.clear(); + } + + /* + * Remove a specific binding identified by `id`. + * + * If `id` in invalid, nothing is removed. + */ + void Remove(uint64 id) + { + Guard guard(GetLock()); + + auto iter = id_lookup_table.find(id); + if (iter == id_lookup_table.end()) + return; + + BindingList* list = iter->second; + auto i = list->begin(); + + for (; i != list->end(); ++i) + { + std::unique_ptr& binding = *i; + if (binding->id == id) + break; + } + + if (i != list->end()) + list->erase(i); + + // Unconditionally erase the ID in the lookup table because + // it was either already invalid, or it's no longer valid. + id_lookup_table.erase(id); + } + + /* + * Check whether `key` has any bindings. + */ + bool HasBindingsFor(const K& key) + { + Guard guard(GetLock()); + + if (bindings.empty()) + return false; + + auto result = bindings.find(key); + if (result == bindings.end()) + return false; + + BindingList& list = result->second; + return !list.empty(); + } + + /* + * Push all Lua references for `key` onto the stack. + */ + void PushRefsFor(const K& key) + { + Guard guard(GetLock()); + + if (bindings.empty()) + return; + + auto result = bindings.find(key); + if (result == bindings.end()) + return; + + BindingList& list = result->second; + for (auto i = list.begin(); i != list.end();) + { + std::unique_ptr& binding = (*i); + auto i_prev = (i++); + + lua_rawgeti(L, LUA_REGISTRYINDEX, binding->functionReference); + + if (binding->remainingShots > 0) + { + binding->remainingShots -= 1; + + if (binding->remainingShots == 0) + { + id_lookup_table.erase(binding->id); + list.erase(i_prev); + } + } + } + } +}; + + +/* + * A `BindingMap` key type for simple event ID bindings + * (ServerEvents, GuildEvents, etc.). + */ +template +struct EventKey +{ + T event_id; + + EventKey(T event_id) : + event_id(event_id) + { } +}; + +/* + * A `BindingMap` key type for event ID/Object entry ID bindings + * (CreatureEvents, GameObjectEvents, etc.). + */ +template +struct EntryKey +{ + T event_id; + uint32 entry; + + EntryKey(T event_id, uint32 entry) : + event_id(event_id), + entry(entry) + { } +}; + +/* + * A `BindingMap` key type for event ID/unique Object bindings + * (currently just CreatureEvents). + */ +template +struct UniqueObjectKey +{ + T event_id; + ObjectGuid guid; + uint32 instance_id; + + UniqueObjectKey(T event_id, ObjectGuid guid, uint32 instance_id) : + event_id(event_id), + guid(guid), + instance_id(instance_id) + { } +}; + +class hash_helper +{ +public: + typedef std::size_t result_type; + + template + static inline result_type hash(T1 const & t1, T2 const & t2, T const &... t) + { + result_type seed = 0; + _hash_combine(seed, t1, t2, t...); + return seed; + } + + template ::value>::type* = nullptr> + static inline result_type hash(T const & t) + { + return std::hash::type>()(t); + } + + template ::value>::type* = nullptr> + static inline result_type hash(T const & t) + { + return std::hash()(t); + } + +private: + template + static inline void _hash_combine(result_type& seed, T const & v) + { + // from http://www.boost.org/doc/libs/1_40_0/boost/functional/hash/hash.hpp + seed ^= hash(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); + } + + template + static inline void _hash_combine(result_type& seed, H const & h, T1 const & t1, T const &... t) + { + _hash_combine(seed, h); + _hash_combine(seed, t1, t...); + } +}; + +/* + * Implementations of various std functions on the above key types, + * so that they can be used within an unordered_map. + */ +namespace std +{ + template + struct equal_to < EventKey > + { + bool operator()(EventKey const& lhs, EventKey const& rhs) const + { + return lhs.event_id == rhs.event_id; + } + }; + + template + struct equal_to < EntryKey > + { + bool operator()(EntryKey const& lhs, EntryKey const& rhs) const + { + return lhs.event_id == rhs.event_id + && lhs.entry == rhs.entry; + } + }; + + template + struct equal_to < UniqueObjectKey > + { + bool operator()(UniqueObjectKey const& lhs, UniqueObjectKey const& rhs) const + { + return lhs.event_id == rhs.event_id + && lhs.guid == rhs.guid + && lhs.instance_id == rhs.instance_id; + } + }; + + template + struct hash < EventKey > + { + typedef EventKey argument_type; + + hash_helper::result_type operator()(argument_type const& k) const + { + return hash_helper::hash(k.event_id); + } + }; + + template + struct hash < EntryKey > + { + typedef EntryKey argument_type; + + hash_helper::result_type operator()(argument_type const& k) const + { + return hash_helper::hash(k.event_id, k.entry); + } + }; + + template + struct hash < UniqueObjectKey > + { + typedef UniqueObjectKey argument_type; + + hash_helper::result_type operator()(argument_type const& k) const + { + return hash_helper::hash(k.event_id, k.instance_id, k.guid.GetRawValue()); + } + }; +} + +#endif // _BINDING_MAP_H diff --git a/modules/mod-eluna/src/LuaEngine/CMakeLists.txt b/modules/mod-eluna/src/LuaEngine/CMakeLists.txt new file mode 100644 index 0000000..39483d6 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/CMakeLists.txt @@ -0,0 +1,80 @@ +# +# Copyright (C) 2010 - 2016 Eluna Lua Engine +# This program is free software licensed under GPL version 3 +# Please see the included DOCS/LICENSE.md for more information +# + +if( ${CMAKE_PROJECT_NAME} STREQUAL "MaNGOS" ) + + if ( USE_COREPCH ) + include_directories(${CMAKE_CURRENT_BINARY_DIR}) + include_directories(${CMAKE_SOURCE_DIR}) + endif () + + # Iterates through all the source files and adds them to the solution + file(GLOB sources_localdir *.cpp *.h) + + # Adds all the method headers to its own source group + file(GLOB method_headers *Methods.h) + source_group("Methods" FILES ${method_headers}) + + set(LuaEngine_STAT_SRCS + ${LuaEngine_STAT_SRCS} + ${sources_localdir} + ) + + include_directories( + ${CMAKE_SOURCE_DIR}/dep/zlib + ${CMAKE_SOURCE_DIR}/dep/lualib + ${CMAKE_BINARY_DIR} + ${ACE_INCLUDE_DIR} + ${MYSQL_INCLUDE_DIR} + ${OPENSSL_INCLUDE_DIR} + ) + + add_library(LuaEngine STATIC + ${LuaEngine_STAT_SRCS} + ${game_STAT_SRCS} + ${game_STAT_PCH_SRC} + ) + + include_directories( + ${CMAKE_SOURCE_DIR}/dep/g3dlite + ${CMAKE_SOURCE_DIR}/src/shared + ${CMAKE_SOURCE_DIR}/src/shared/Common + ${CMAKE_SOURCE_DIR}/src/shared/Utilities + ${CMAKE_SOURCE_DIR}/src/shared/Log + ${CMAKE_SOURCE_DIR}/src/shared/DataStores + ${CMAKE_SOURCE_DIR}/src/shared/Threading + ${CMAKE_SOURCE_DIR}/src/framework + ${CMAKE_SOURCE_DIR}/src/framework/Platform + ${CMAKE_SOURCE_DIR}/src/game/BattleGround + ${CMAKE_SOURCE_DIR}/src/game/Server + ${CMAKE_SOURCE_DIR}/src/game/vmap + ${CMAKE_SOURCE_DIR}/src/game/Maps + ${CMAKE_SOURCE_DIR}/src/game/MotionGenerators + ${CMAKE_SOURCE_DIR}/src/game/Tools + ${CMAKE_SOURCE_DIR}/src/game/References + ${CMAKE_SOURCE_DIR}/src/game/WorldHandlers + ${CMAKE_SOURCE_DIR}/src/game/Object + ) + + if( WIN32 ) + if ( MSVC ) + add_custom_command(TARGET LuaEngine + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/lua_scripts/extensions/" + COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/extensions" "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/lua_scripts/extensions/" + ) + elseif ( MINGW ) + add_custom_command(TARGET LuaEngine + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/lua_scripts/extensions/" + COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/extensions" "${CMAKE_BINARY_DIR}/bin/ua_scripts/extensions/" + ) + endif() + endif() + + install(DIRECTORY extensions DESTINATION "${BIN_DIR}/lua_scripts/") + +endif() diff --git a/modules/mod-eluna/src/LuaEngine/ChatHandlerMethods.h b/modules/mod-eluna/src/LuaEngine/ChatHandlerMethods.h new file mode 100644 index 0000000..aa9f795 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/ChatHandlerMethods.h @@ -0,0 +1,192 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef CHATHANDLERMETHODS_H +#define CHATHANDLERMETHODS_H + +#include "Chat.h" + +namespace LuaChatHandler +{ + /** + * Sends text to the chat handler + * + * @proto (text) + * @proto (entry) + * @param string text : text to display in chat or console + * @param uint32 entry : id of the string to display + */ + int SendSysMessage(lua_State* L, ChatHandler* handler) + { + if (lua_isnumber(L, 2)) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + handler->SendSysMessage(entry); + } + else + { + std::string text = Eluna::CHECKVAL(L, 2); + handler->SendSysMessage(text); + } + return 0; + } + + /** + * Returns `true` if the [ChatHandler] comes from the console, `false` if it comes from a player + * + * @return bool isConsole + */ + int IsConsole(lua_State* L, ChatHandler* handler) + { + Eluna::Push(L, handler->IsConsole()); + return 1; + } + + /** + * Returns the [Player] associated with the handler. Returns `nil` in the case of a console handler + * + * @return [Player] player + */ + int GetPlayer(lua_State* L, ChatHandler* handler) + { + Eluna::Push(L, handler->GetPlayer()); + return 1; + } + + /** + * Sends a message to all connected players + * + * @param string text : text to send + */ + int SendGlobalSysMessage(lua_State* L, ChatHandler* handler) + { + std::string text = Eluna::CHECKVAL(L, 2); + handler->SendGlobalSysMessage(text.c_str()); + return 0; + } + + /** + * Sends a message to all connected Game Masters + * + * @param string text : text to send + */ + int SendGlobalGMSysMessage(lua_State* L, ChatHandler* handler) + { + std::string text = Eluna::CHECKVAL(L, 2); + handler->SendGlobalGMSysMessage(text.c_str()); + return 0; + } + + /** + * Checks if the current security level is lower than the specified [Player]'s account + * + * @param [Player] player + * @param [bool] strong = false : Forces non-player accounts (security level greater than `0`) to go through the regular check if set to `true`.
Also, if set to `true`, the current security level will be considered as lower than the [Player]'s security level if the two levels are equal + * @return [bool] lower + */ + int HasLowerSecurity(lua_State* L, ChatHandler* handler) + { + Player* player = Eluna::CHECKOBJ(L, 2); + bool strong = Eluna::CHECKVAL(L, 3); + Eluna::Push(L, handler->HasLowerSecurity(player, ObjectGuid::Empty, strong)); + return 1; + } + + /** + * Checks if the current security level is lower than the specified `account`'s level + * + * @param [uint32] account : the target account ID to compare security levels with + * @param [bool] strong = false : Forces non-player accounts (security level greater than `0`) to go through the regular check if set to `true`.
Also, if set to `true`, the current security level will be considered as lower than the `account`'s security level if the two levels are equal + * @return [bool] lower + */ + int HasLowerSecurityAccount(lua_State* L, ChatHandler* handler) + { + uint32 account = Eluna::CHECKVAL(L, 2); + bool strong = Eluna::CHECKVAL(L, 3); + Eluna::Push(L, handler->HasLowerSecurityAccount(nullptr, account, strong)); + return 1; + } + + /** + * Returns the selected [Player] + * + * @return [Player] player + */ + int GetSelectedPlayer(lua_State* L, ChatHandler* handler) + { + Eluna::Push(L, handler->getSelectedPlayer()); + return 1; + } + + /** + * Returns the selected [Creature] + * + * @return [Creature] creature + */ + int GetSelectedCreature(lua_State* L, ChatHandler* handler) + { + Eluna::Push(L, handler->getSelectedCreature()); + return 1; + } + + /** + * Returns the selected [Unit] + * + * @return [Unit] unit + */ + int GetSelectedUnit(lua_State* L, ChatHandler* handler) + { + Eluna::Push(L, handler->getSelectedUnit()); + return 1; + } + + /** + * Returns the selected [WorldObject] + * + * @return [WorldObject] object + */ + int GetSelectedObject(lua_State* L, ChatHandler* handler) + { + Eluna::Push(L, handler->getSelectedObject()); + return 1; + } + + /** + * Returns the selected [Player] or the current [Player] if nothing is targeted or the target is not a player + * + * @return [Player] player + */ + int GetSelectedPlayerOrSelf(lua_State* L, ChatHandler* handler) + { + Eluna::Push(L, handler->getSelectedPlayerOrSelf()); + return 1; + } + + /** + * Checks if the `securityLevel` is available + * + * @param [uint32] securityLevel + * @return [bool] isAvailable + */ + int IsAvailable(lua_State* L, ChatHandler* handler) + { + uint32 securityLevel = Eluna::CHECKVAL(L, 2); + Eluna::Push(L, handler->IsAvailable(securityLevel)); + return 1; + } + + /** + * Returns `true` if other previously called [ChatHandler] methods sent an error + * + * @return [bool] sentErrorMessage + */ + int HasSentErrorMessage(lua_State* L, ChatHandler* handler) + { + Eluna::Push(L, handler->HasSentErrorMessage()); + return 1; + } +} +#endif diff --git a/modules/mod-eluna/src/LuaEngine/CorpseMethods.h b/modules/mod-eluna/src/LuaEngine/CorpseMethods.h new file mode 100644 index 0000000..aba7d20 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/CorpseMethods.h @@ -0,0 +1,81 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef CORPSEMETHODS_H +#define CORPSEMETHODS_H + +/*** + * The remains of a [Player] that has died. + * + * Inherits all methods from: [Object], [WorldObject] + */ +namespace LuaCorpse +{ + /** + * Returns the GUID of the [Player] that left the [Corpse] behind. + * + * @return ObjectGuid ownerGUID + */ + int GetOwnerGUID(lua_State* L, Corpse* corpse) + { +#if defined TRINITY || AZEROTHCORE + Eluna::Push(L, corpse->GetOwnerGUID()); +#else + Eluna::Push(L, corpse->GetOwnerGuid()); +#endif + return 1; + } + + /** + * Returns the time when the [Player] became a ghost and spawned this [Corpse]. + * + * @return uint32 ghostTime + */ + int GetGhostTime(lua_State* L, Corpse* corpse) + { + Eluna::Push(L, corpse->GetGhostTime()); + return 1; + } + + /** + * Returns the [CorpseType] of a [Corpse]. + * + * enum CorpseType + * { + * CORPSE_BONES = 0, + * CORPSE_RESURRECTABLE_PVE = 1, + * CORPSE_RESURRECTABLE_PVP = 2 + * }; + * + * @return [CorpseType] corpseType + */ + int GetType(lua_State* L, Corpse* corpse) + { + Eluna::Push(L, corpse->GetType()); + return 1; + } + + /** + * Sets the "ghost time" to the current time. + * + * See [Corpse:GetGhostTime]. + */ + int ResetGhostTime(lua_State* /*L*/, Corpse* corpse) + { + corpse->ResetGhostTime(); + return 0; + } + + /** + * Saves the [Corpse] to the database. + */ + int SaveToDB(lua_State* /*L*/, Corpse* corpse) + { + corpse->SaveToDB(); + return 0; + } +}; +#endif diff --git a/modules/mod-eluna/src/LuaEngine/CreatureHooks.cpp b/modules/mod-eluna/src/LuaEngine/CreatureHooks.cpp new file mode 100644 index 0000000..e2bd6d1 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/CreatureHooks.cpp @@ -0,0 +1,333 @@ +/* + * Copyright (C) 2010 - 2016 Eluna Lua Engine + * This program is free software licensed under GPL version 3 + * Please see the included DOCS/LICENSE.md for more information + */ + +#include "Hooks.h" +#include "HookHelpers.h" +#include "LuaEngine.h" +#include "BindingMap.h" +#include "ElunaIncludes.h" +#include "ElunaTemplate.h" + +using namespace Hooks; + +#define START_HOOK(EVENT, CREATURE) \ + if (!IsEnabled())\ + return;\ + auto entry_key = EntryKey(EVENT, CREATURE->GetEntry());\ + auto unique_key = UniqueObjectKey(EVENT, CREATURE->GET_GUID(), CREATURE->GetInstanceId());\ + if (!CreatureEventBindings->HasBindingsFor(entry_key))\ + if (!CreatureUniqueBindings->HasBindingsFor(unique_key))\ + return;\ + LOCK_ELUNA + +#define START_HOOK_WITH_RETVAL(EVENT, CREATURE, RETVAL) \ + if (!IsEnabled())\ + return RETVAL;\ + auto entry_key = EntryKey(EVENT, CREATURE->GetEntry());\ + auto unique_key = UniqueObjectKey(EVENT, CREATURE->GET_GUID(), CREATURE->GetInstanceId());\ + if (!CreatureEventBindings->HasBindingsFor(entry_key))\ + if (!CreatureUniqueBindings->HasBindingsFor(unique_key))\ + return RETVAL;\ + LOCK_ELUNA + +void Eluna::OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Creature* pTarget) +{ + START_HOOK(CREATURE_EVENT_ON_DUMMY_EFFECT, pTarget); + Push(pCaster); + Push(spellId); + Push(effIndex); + Push(pTarget); + CallAllFunctions(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +bool Eluna::OnQuestAccept(Player* pPlayer, Creature* pCreature, Quest const* pQuest) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_QUEST_ACCEPT, pCreature, false); + Push(pPlayer); + Push(pCreature); + Push(pQuest); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +bool Eluna::OnQuestReward(Player* pPlayer, Creature* pCreature, Quest const* pQuest, uint32 opt) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_QUEST_REWARD, pCreature, false); + Push(pPlayer); + Push(pCreature); + Push(pQuest); + Push(opt); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +void Eluna::GetDialogStatus(const Player* pPlayer, const Creature* pCreature) +{ + START_HOOK(CREATURE_EVENT_ON_DIALOG_STATUS, pCreature); + Push(pPlayer); + Push(pCreature); + CallAllFunctions(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +void Eluna::OnAddToWorld(Creature* pCreature) +{ + START_HOOK(CREATURE_EVENT_ON_ADD, pCreature); + Push(pCreature); + CallAllFunctions(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +void Eluna::OnRemoveFromWorld(Creature* pCreature) +{ + START_HOOK(CREATURE_EVENT_ON_REMOVE, pCreature); + Push(pCreature); + CallAllFunctions(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +bool Eluna::OnSummoned(Creature* pCreature, Unit* pSummoner) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_SUMMONED, pCreature, false); + Push(pCreature); + Push(pSummoner); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +bool Eluna::UpdateAI(Creature* me, const uint32 diff) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_AIUPDATE, me, false); + Push(me); + Push(diff); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +//Called for reaction at enter to combat if not in combat yet (enemy can be NULL) +//Called at creature aggro either by MoveInLOS or Attack Start +bool Eluna::EnterCombat(Creature* me, Unit* target) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_ENTER_COMBAT, me, false); + Push(me); + Push(target); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called at any Damage from any attacker (before damage apply) +bool Eluna::DamageTaken(Creature* me, Unit* attacker, uint32& damage) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_DAMAGE_TAKEN, me, false); + bool result = false; + Push(me); + Push(attacker); + Push(damage); + int damageIndex = lua_gettop(L); + int n = SetupStack(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key, 3); + + while (n > 0) + { + int r = CallOneFunction(n--, 3, 2); + + if (lua_isboolean(L, r + 0) && lua_toboolean(L, r + 0)) + result = true; + + if (lua_isnumber(L, r + 1)) + { + damage = Eluna::CHECKVAL(L, r + 1); + // Update the stack for subsequent calls. + ReplaceArgument(damage, damageIndex); + } + + lua_pop(L, 2); + } + + CleanUpStack(3); + return result; +} + +//Called at creature death +bool Eluna::JustDied(Creature* me, Unit* killer) +{ + On_Reset(me); + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_DIED, me, false); + Push(me); + Push(killer); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +//Called at creature killing another unit +bool Eluna::KilledUnit(Creature* me, Unit* victim) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_TARGET_DIED, me, false); + Push(me); + Push(victim); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called when the creature summon successfully other creature +bool Eluna::JustSummoned(Creature* me, Creature* summon) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_JUST_SUMMONED_CREATURE, me, false); + Push(me); + Push(summon); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called when a summoned creature is despawned +bool Eluna::SummonedCreatureDespawn(Creature* me, Creature* summon) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_SUMMONED_CREATURE_DESPAWN, me, false); + Push(me); + Push(summon); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +//Called at waypoint reached or PointMovement end +bool Eluna::MovementInform(Creature* me, uint32 type, uint32 id) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_REACH_WP, me, false); + Push(me); + Push(type); + Push(id); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called before EnterCombat even before the creature is in combat. +bool Eluna::AttackStart(Creature* me, Unit* target) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_PRE_COMBAT, me, false); + Push(me); + Push(target); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called for reaction at stopping attack at no attackers or targets +bool Eluna::EnterEvadeMode(Creature* me) +{ + On_Reset(me); + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_LEAVE_COMBAT, me, false); + Push(me); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called when creature is spawned or respawned (for reseting variables) +bool Eluna::JustRespawned(Creature* me) +{ + On_Reset(me); + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_SPAWN, me, false); + Push(me); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called at reaching home after evade +bool Eluna::JustReachedHome(Creature* me) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_REACH_HOME, me, false); + Push(me); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called at text emote receive from player +bool Eluna::ReceiveEmote(Creature* me, Player* player, uint32 emoteId) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_RECEIVE_EMOTE, me, false); + Push(me); + Push(player); + Push(emoteId); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// called when the corpse of this creature gets removed +bool Eluna::CorpseRemoved(Creature* me, uint32& respawnDelay) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_CORPSE_REMOVED, me, false); + bool result = false; + Push(me); + Push(respawnDelay); + int respawnDelayIndex = lua_gettop(L); + int n = SetupStack(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key, 2); + + while (n > 0) + { + int r = CallOneFunction(n--, 2, 2); + + if (lua_isboolean(L, r + 0) && lua_toboolean(L, r + 0)) + result = true; + + if (lua_isnumber(L, r + 1)) + { + respawnDelay = Eluna::CHECKVAL(L, r + 1); + // Update the stack for subsequent calls. + ReplaceArgument(respawnDelay, respawnDelayIndex); + } + + lua_pop(L, 2); + } + + CleanUpStack(2); + return result; +} + +bool Eluna::MoveInLineOfSight(Creature* me, Unit* who) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_MOVE_IN_LOS, me, false); + Push(me); + Push(who); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called on creature initial spawn, respawn, death, evade (leave combat) +void Eluna::On_Reset(Creature* me) // Not an override, custom +{ + START_HOOK(CREATURE_EVENT_ON_RESET, me); + Push(me); + CallAllFunctions(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called when hit by a spell +bool Eluna::SpellHit(Creature* me, WorldObject* caster, SpellInfo const* spell) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_HIT_BY_SPELL, me, false); + Push(me); + Push(caster); + Push(spell->Id); // Pass spell object? + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called when spell hits a target +bool Eluna::SpellHitTarget(Creature* me, WorldObject* target, SpellInfo const* spell) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_SPELL_HIT_TARGET, me, false); + Push(me); + Push(target); + Push(spell->Id); // Pass spell object? + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +#if defined TRINITY || AZEROTHCORE + +bool Eluna::SummonedCreatureDies(Creature* me, Creature* summon, Unit* killer) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_SUMMONED_CREATURE_DIED, me, false); + Push(me); + Push(summon); + Push(killer); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called when owner takes damage +bool Eluna::OwnerAttackedBy(Creature* me, Unit* attacker) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_OWNER_ATTACKED_AT, me, false); + Push(me); + Push(attacker); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +// Called when owner attacks something +bool Eluna::OwnerAttacked(Creature* me, Unit* target) +{ + START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_OWNER_ATTACKED, me, false); + Push(me); + Push(target); + return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); +} + +#endif // TRINITY diff --git a/modules/mod-eluna/src/LuaEngine/CreatureMethods.h b/modules/mod-eluna/src/LuaEngine/CreatureMethods.h new file mode 100644 index 0000000..cb85860 --- /dev/null +++ b/modules/mod-eluna/src/LuaEngine/CreatureMethods.h @@ -0,0 +1,1531 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef CREATUREMETHODS_H +#define CREATUREMETHODS_H + +/*** + * Non-[Player] controlled [Unit]s (i.e. NPCs). + * + * Inherits all methods from: [Object], [WorldObject], [Unit] + */ +namespace LuaCreature +{ + /** + * Returns `true` if the [Creature] can regenerate health, + * and returns `false` otherwise. + * + * @return bool isRegenerating + */ + int IsRegeneratingHealth(lua_State* L, Creature* creature) + { +#if defined(AZEROTHCORE) + Eluna::Push(L, creature->isRegeneratingHealth()); +#elif defined(TRINITY) + Eluna::Push(L, creature->CanRegenerateHealth()); +#else + Eluna::Push(L, creature->IsRegeneratingHealth()); +#endif + return 1; + } + +#if defined(TRINITY) || defined(AZEROTHCORE) + /** + * Sets whether the [Creature] can regenerate health or not. + * + * @param bool enable = true : `true` to enable health regeneration, `false` to disable it + */ + int SetRegeneratingHealth(lua_State* L, Creature* creature) + { + bool enable = Eluna::CHECKVAL(L, 2, true); + +#if defined(AZEROTHCORE) + creature->SetRegeneratingHealth(enable); +#else + creature->SetRegenerateHealth(enable); +#endif + return 0; + } +#endif + + /** + * Returns `true` if the [Creature] is set to not give reputation when killed, + * and returns `false` otherwise. + * + * @return bool reputationDisabled + */ + int IsReputationGainDisabled(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->IsReputationGainDisabled()); + return 1; + } + + /** + * Returns `true` if the [Creature] completes the [Quest] with the ID `questID`, + * and returns `false` otherwise. + * + * @param uint32 questID : the ID of a [Quest] + * @return bool completesQuest + */ + int CanCompleteQuest(lua_State* L, Creature* creature) + { + uint32 quest_id = Eluna::CHECKVAL(L, 2); + +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->hasInvolvedQuest(quest_id)); +#else + Eluna::Push(L, creature->HasInvolvedQuest(quest_id)); +#endif + return 1; + } + + /** + * Returns `true` if the [Creature] can be targeted for attack, + * and returns `false` otherwise. + * + * @param bool mustBeDead = false : if `true`, only returns `true` if the [Creature] is also dead. Otherwise, it must be alive. + * @return bool targetable + */ + int IsTargetableForAttack(lua_State* L, Creature* creature) + { + bool mustBeDead = Eluna::CHECKVAL(L, 2, false); + +#ifdef MANGOS + Eluna::Push(L, creature->IsTargetableForAttack(mustBeDead)); +#else + Eluna::Push(L, creature->isTargetableForAttack(mustBeDead)); +#endif + return 1; + } + + /** + * Returns `true` if the [Creature] can assist `friend` in combat against `enemy`, + * and returns `false` otherwise. + * + * @param [Unit] friend : the Unit we will be assisting + * @param [Unit] enemy : the Unit that we would attack if we assist `friend` + * @param bool checkFaction = true : if `true`, the [Creature] must be the same faction as `friend` to assist + * @return bool canAssist + */ + int CanAssistTo(lua_State* L, Creature* creature) + { + Unit* u = Eluna::CHECKOBJ(L, 2); + Unit* enemy = Eluna::CHECKOBJ(L, 3); + bool checkfaction = Eluna::CHECKVAL(L, 4, true); + + Eluna::Push(L, creature->CanAssistTo(u, enemy, checkfaction)); + return 1; + } + + /** + * Returns `true` if the [Creature] has searched for combat assistance already, + * and returns `false` otherwise. + * + * @return bool searchedForAssistance + */ + int HasSearchedAssistance(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->HasSearchedAssistance()); + return 1; + } + + /** + * Returns `true` if the [Creature] will give its loot to `player`, + * and returns `false` otherwise. + * + * @return bool tapped + */ + int IsTappedBy(lua_State* L, Creature* creature) + { + Player* player = Eluna::CHECKOBJ(L, 2); + +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->isTappedBy(player)); +#else + Eluna::Push(L, creature->IsTappedBy(player)); +#endif + return 1; + } + + /** + * Returns `true` if the [Creature] will give its loot to a [Player] or [Group], + * and returns `false` otherwise. + * + * @return bool hasLootRecipient + */ + int HasLootRecipient(lua_State* L, Creature* creature) + { +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->hasLootRecipient()); +#else + Eluna::Push(L, creature->HasLootRecipient()); +#endif + return 1; + } + + /** + * Returns `true` if the [Creature] can start attacking nearby hostile [Unit]s, + * and returns `false` otherwise. + * + * @return bool canAggro + */ + int CanAggro(lua_State* L, Creature* creature) + { +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, !creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC)); +#else + // Eluna::Push(L, creature->CanInitiateAttack()); + Eluna::Push(L, !creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE)); +#endif + return 1; + } + + /** + * Returns `true` if the [Creature] can move through deep water, + * and returns `false` otherwise. + * + * @return bool canSwim + */ + int CanSwim(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->CanSwim()); + return 1; + } + + /** + * Returns `true` if the [Creature] can move on land, + * and returns `false` otherwise. + * + * @return bool canWalk + */ + int CanWalk(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->CanWalk()); + return 1; + } + + /** + * Returns `true` if the [Creature] is returning to its spawn position from combat, + * and returns `false` otherwise. + * + * @return bool inEvadeMode + */ + int IsInEvadeMode(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->IsInEvadeMode()); + return 1; + } + + /** + * Returns `true` if the [Creature]'s rank is Elite or Rare Elite, + * and returns `false` otherwise. + * + * @return bool isElite + */ + int IsElite(lua_State* L, Creature* creature) + { +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->isElite()); +#else + Eluna::Push(L, creature->IsElite()); +#endif + return 1; + } + + /** + * Returns `true` if the [Creature] is a city guard, + * and returns `false` otherwise. + * + * @return bool isGuard + */ + int IsGuard(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->IsGuard()); + return 1; + } + + /** + * Returns `true` if the [Creature] is a civilian, + * and returns `false` otherwise. + * + * @return bool isCivilian + */ + int IsCivilian(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->IsCivilian()); + return 1; + } + + /** + * Returns `true` if the [Creature] is the leader of a player faction, + * and returns `false` otherwise. + * + * @return bool isLeader + */ + int IsRacialLeader(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->IsRacialLeader()); + return 1; + } + + /** + * Returns `true` if the [Creature]'s flags_extra includes Dungeon Boss (0x1000000), + * and returns `false` otherwise. + * + * @return bool isDungeonBoss + */ +#if defined(TRINITY) || defined(AZEROTHCORE) + int IsDungeonBoss(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->IsDungeonBoss()); + return 1; + } +#endif + + /** + * Returns `true` if the [Creature]'s rank is Boss, + * and returns `false` otherwise. + * + * @return bool isWorldBoss + */ + int IsWorldBoss(lua_State* L, Creature* creature) + { +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->isWorldBoss()); +#else + Eluna::Push(L, creature->IsWorldBoss()); +#endif + return 1; + } + + /** + * Returns `true` if the [Creature] cannot cast `spellId` due to a category cooldown, + * and returns `false` otherwise. + * + * @param uint32 spellId : the ID of a [Spell] + * @return bool hasCooldown + */ + int HasCategoryCooldown(lua_State* L, Creature* creature) + { + uint32 spell = Eluna::CHECKVAL(L, 2); + +#if defined(TRINITY) + if (const SpellInfo* info = sSpellMgr->GetSpellInfo(spell)) + Eluna::Push(L, info->GetCategory() && creature->GetSpellHistory()->HasCooldown(spell)); + else + Eluna::Push(L, false); +#elif defined(AZEROTHCORE) + if (const SpellInfo* info = sSpellMgr->GetSpellInfo(spell)) + Eluna::Push(L, info->GetCategory() && creature->HasSpellCooldown(spell)); + else + Eluna::Push(L, false); +#else + Eluna::Push(L, creature->HasCategoryCooldown(spell)); +#endif + return 1; + } + + /** + * Returns `true` if the [Creature] can cast `spellId` when mind-controlled, + * and returns `false` otherwise. + * + * @param uint32 spellId : the ID of a [Spell] + * @return bool hasSpell + */ + int HasSpell(lua_State* L, Creature* creature) + { + uint32 id = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, creature->HasSpell(id)); + return 1; + } + + /** + * Returns `true` if the [Creature] starts the [Quest] `questId`, + * and returns `false` otherwise. + * + * @param uint32 questId : the ID of a [Quest] + * @return bool hasQuest + */ + int HasQuest(lua_State* L, Creature* creature) + { + uint32 questId = Eluna::CHECKVAL(L, 2); + +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->hasQuest(questId)); +#else + Eluna::Push(L, creature->HasQuest(questId)); +#endif + return 1; + } + + /** + * Returns `true` if the [Creature] has `spellId` on cooldown, + * and returns `false` otherwise. + * + * @param uint32 spellId : the ID of a [Spell] + * @return bool hasCooldown + */ + int HasSpellCooldown(lua_State* L, Creature* creature) + { + uint32 spellId = Eluna::CHECKVAL(L, 2); + +#if defined(TRINITY) + Eluna::Push(L, creature->GetSpellHistory()->HasCooldown(spellId)); +#else + Eluna::Push(L, creature->HasSpellCooldown(spellId)); +#endif + return 1; + } + + /** + * Returns `true` if the [Creature] can fly, + * and returns `false` otherwise. + * + * @return bool canFly + */ + int CanFly(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->CanFly()); + return 1; + } + +#if defined(TRINITY) || defined(AZEROTHCORE) + /** + * Returns `true` if the [Creature] is an invisible trigger, + * and returns `false` otherwise. + * + * @return bool canFly + */ + int IsTrigger(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->IsTrigger()); + return 1; + } + + /** + * Returns true if the [Creature] is damaged enough for looting + * + * @return bool isDamagedEnough + */ + int IsDamageEnoughForLootingAndReward(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->IsDamageEnoughForLootingAndReward()); + return 1; + } + + /** + * Returns true if the [Creature] can start attacking specified target + * + * Does not work on most targets + * + * @param [Unit] target + * @param bool force = true : force [Creature] to attack + */ + int CanStartAttack(lua_State* L, Creature* creature) // TODO: Implement core side + { + Unit* target = Eluna::CHECKOBJ(L, 2); +#ifndef AZEROTHCORE + bool force = Eluna::CHECKVAL(L, 3, true); + Eluna::Push(L, creature->CanStartAttack(target, force)); +#else + Eluna::Push(L, creature->CanStartAttack(target)); +#endif + return 1; + } + + /** + * Returns true if [Creature] has the specified loot mode + * + * @param uint16 lootMode + * @return bool hasLootMode + */ + int HasLootMode(lua_State* L, Creature* creature) // TODO: Implement LootMode features + { + uint16 lootMode = Eluna::CHECKVAL(L, 2); + + Eluna::Push(L, creature->HasLootMode(lootMode)); + return 1; + } +#endif + + /** + * Returns the time it takes for this [Creature] to respawn once killed. + * + * This value does not usually change over a [Creature]'s lifespan, + * but can be modified by [Creature:SetRespawnDelay]. + * + * @return uint32 respawnDelay : the respawn delay, in seconds + */ + int GetRespawnDelay(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetRespawnDelay()); + return 1; + } + + /** + * Returns the radius the [Creature] is permitted to wander from its + * respawn point. + * + * @return float wanderRadius + */ + int GetWanderRadius(lua_State* L, Creature* creature) + { +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->GetWanderDistance()); +#else + Eluna::Push(L, creature->GetRespawnRadius()); +#endif + return 1; + } + +#if defined(TRINITY) || defined(AZEROTHCORE) + /** + * Returns the current waypoint path ID of the [Creature]. + * + * @return uint32 pathId + */ + int GetWaypointPath(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetWaypointPath()); + return 1; + } +#endif + + /** + * Returns the current waypoint ID of the [Creature]. + * + * @return uint32 wpId + */ + int GetCurrentWaypointId(lua_State* L, Creature* creature) + { +#if defined(TRINITY) + Eluna::Push(L, creature->GetCurrentWaypointInfo().first); +#elif defined(AZEROTHCORE) + Eluna::Push(L, creature->GetCurrentWaypointID()); +#else + Eluna::Push(L, creature->GetMotionMaster()->getLastReachedWaypoint()); +#endif + return 1; + } + + /** + * Returns the default movement type for this [Creature]. + * + * @return [MovementGeneratorType] defaultMovementType + */ + int GetDefaultMovementType(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetDefaultMovementType()); + return 1; + } + + /** + * Returns the aggro range of the [Creature] for `target`. + * + * @param [Unit] target + * @return float aggroRange + */ + int GetAggroRange(lua_State* L, Creature* creature) + { + Unit* target = Eluna::CHECKOBJ(L, 2); + +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->GetAggroRange(target)); +#else + float AttackDist = creature->GetAttackDistance(target); + float ThreatRadius = sWorld.getConfig(CONFIG_FLOAT_THREAT_RADIUS); + Eluna::Push(L, ThreatRadius > AttackDist ? ThreatRadius : AttackDist); +#endif + return 1; + } + +#ifndef AZEROTHCORE + /** + * Returns the effective aggro range of the [Creature] for `target`. + * + * If this is smaller than the minimum aggro range set in the config file, + * that is used as the aggro range instead. + * + * @param [Unit] target + * @return float attackDistance + */ + int GetAttackDistance(lua_State* L, Creature* creature) + { + Unit* target = Eluna::CHECKOBJ(L, 2); + + Eluna::Push(L, creature->GetAttackDistance(target)); + return 1; + } +#endif + + /** + * Returns the [Group] that can loot this [Creature]. + * + * @return [Group] lootRecipientGroup : the group or `nil` + */ + int GetLootRecipientGroup(lua_State* L, Creature* creature) + { +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->GetLootRecipientGroup()); +#else + Eluna::Push(L, creature->GetGroupLootRecipient()); +#endif + return 1; + } + + /** + * Returns the [Player] that can loot this [Creature]. + * + * @return [Player] lootRecipient : the player or `nil` + */ + int GetLootRecipient(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetLootRecipient()); + return 1; + } + + /** + * Returns the [Creature]'s script name. + * + * This is used by the core to apply C++ scripts to the Creature. + * + * It is not used by Eluna. Eluna will override AI scripts. + * + * @return string scriptName + */ + int GetScriptName(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetScriptName()); + return 1; + } + + /** + * Returns the [Creature]'s AI name. + * + * This is used by the core to assign the Creature's default AI. + * + * If the Creature is scripted by Eluna, the AI is overriden. + * + * @return string AIName + */ + int GetAIName(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetAIName()); + return 1; + } + + /** + * Returns the [Creature]'s script ID. + * + * Every C++ script name is assigned a unique ID by the core. + * This returns the ID for this [Creature]'s script name. + * + * @return uint32 scriptID + */ + int GetScriptId(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetScriptId()); + return 1; + } + + /** + * Returns the [Creature]'s cooldown for `spellID`. + * + * @param uint32 spellID + * @return uint32 cooldown : the cooldown, in milliseconds + */ + int GetCreatureSpellCooldownDelay(lua_State* L, Creature* creature) + { + uint32 spell = Eluna::CHECKVAL(L, 2); + +#if defined(TRINITY) + if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spell)) + Eluna::Push(L, creature->GetSpellHistory()->GetRemainingCooldown(spellInfo)); + else + Eluna::Push(L, 0); +#elif defined(AZEROTHCORE) + if (sSpellMgr->GetSpellInfo(spell)) + Eluna::Push(L, creature->GetSpellCooldown(spell)); + else + Eluna::Push(L, 0); +#else + Eluna::Push(L, creature->GetCreatureSpellCooldownDelay(spell)); +#endif + return 1; + } + + /** + * Returns the delay between when the [Creature] dies and when its body despawns. + * + * @return uint32 corpseDelay : the delay, in seconds + */ + int GetCorpseDelay(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetCorpseDelay()); + return 1; + } + + /** + * Returns position the [Creature] returns to when evading from combat + * or respawning. + * + * @return float x + * @return float y + * @return float z + * @return float o + */ + int GetHomePosition(lua_State* L, Creature* creature) + { + float x, y, z, o; +#if defined(TRINITY) || defined(AZEROTHCORE) + creature->GetHomePosition(x, y, z, o); +#else + creature->GetRespawnCoord(x, y, z, &o); +#endif + + Eluna::Push(L, x); + Eluna::Push(L, y); + Eluna::Push(L, z); + Eluna::Push(L, o); + return 4; + } + + /** + * Sets the position the [Creature] returns to when evading from combat + * or respawning. + * + * @param float x + * @param float y + * @param float z + * @param float o + */ + int SetHomePosition(lua_State* L, Creature* creature) + { + float x = Eluna::CHECKVAL(L, 2); + float y = Eluna::CHECKVAL(L, 3); + float z = Eluna::CHECKVAL(L, 4); + float o = Eluna::CHECKVAL(L, 5); + +#if defined(TRINITY) || defined(AZEROTHCORE) + creature->SetHomePosition(x, y, z, o); +#else + creature->SetRespawnCoord(x, y, z, o); +#endif + + return 0; + } + + enum SelectAggroTarget + { + SELECT_TARGET_RANDOM = 0, // Just selects a random target + SELECT_TARGET_TOPAGGRO, // Selects targes from top aggro to bottom + SELECT_TARGET_BOTTOMAGGRO, // Selects targets from bottom aggro to top + SELECT_TARGET_NEAREST, + SELECT_TARGET_FARTHEST + }; + + /** + * Returns a target from the [Creature]'s threat list based on the + * supplied arguments. + * + * enum SelectAggroTarget + * { + * SELECT_TARGET_RANDOM = 0, //Just selects a random target + * SELECT_TARGET_TOPAGGRO, //Selects targets from top aggro to bottom + * SELECT_TARGET_BOTTOMAGGRO, //Selects targets from bottom aggro to top + * SELECT_TARGET_NEAREST, + * SELECT_TARGET_FARTHEST + * }; + * + * For example, if you wanted to select the third-farthest [Player] + * within 50 yards that has the [Aura] "Corrupted Blood" (ID 24328), + * you could use this function like so: + * + * target = creature:GetAITarget(4, true, 3, 50, 24328) + * + * @param [SelectAggroTarget] targetType : how the threat list should be sorted + * @param bool playerOnly = false : if `true`, skips targets that aren't [Player]s + * @param uint32 position = 0 : used as an offset into the threat list. If `targetType` is random, used as the number of players from top of aggro to choose from + * @param float distance = 0.0 : if positive, the maximum distance for the target. If negative, the minimum distance + * @param int32 aura = 0 : if positive, the target must have this [Aura]. If negative, the the target must not have this Aura + * @return [Unit] target : the target, or `nil` + */ + int GetAITarget(lua_State* L, Creature* creature) + { + uint32 targetType = Eluna::CHECKVAL(L, 2); + bool playerOnly = Eluna::CHECKVAL(L, 3, false); + uint32 position = Eluna::CHECKVAL(L, 4, 0); + float dist = Eluna::CHECKVAL(L, 5, 0.0f); + int32 aura = Eluna::CHECKVAL(L, 6, 0); + +#if defined(CMANGOS) + ThreatList const& threatlist = creature->getThreatManager().getThreatList(); +#elif defined(MANGOS) + ThreatList const& threatlist = creature->GetThreatManager().getThreatList(); +#elif defined(TRINITY) + auto const& threatlist = creature->GetThreatManager().GetSortedThreatList(); +#elif defined(AZEROTHCORE) + auto const& threatlist = creature->GetThreatMgr().GetThreatList(); +#endif +#ifndef TRINITY + if (threatlist.empty()) + return 1; + if (position >= threatlist.size()) + return 1; +#endif + std::list targetList; +#if defined(TRINITY) + for (ThreatReference const* itr : threatlist) +#else + for (auto itr = threatlist.begin(); itr != threatlist.end(); ++itr) +#endif + { +#if defined(TRINITY) + Unit* target = itr->GetVictim(); +#else + Unit* target = (*itr)->getTarget(); +#endif + if (!target) + continue; + if (playerOnly && target->GetTypeId() != TYPEID_PLAYER) + continue; + if (aura > 0 && !target->HasAura(aura)) + continue; + else if (aura < 0 && target->HasAura(-aura)) + continue; + if (dist > 0.0f && !creature->IsWithinDist(target, dist)) + continue; + else if (dist < 0.0f && creature->IsWithinDist(target, -dist)) + continue; + targetList.push_back(target); + } + + if (targetList.empty()) + return 1; + if (position >= targetList.size()) + return 1; + + if (targetType == SELECT_TARGET_NEAREST || targetType == SELECT_TARGET_FARTHEST) + targetList.sort(ElunaUtil::ObjectDistanceOrderPred(creature)); + + switch (targetType) + { + case SELECT_TARGET_NEAREST: + case SELECT_TARGET_TOPAGGRO: + { + std::list::const_iterator itr = targetList.begin(); + if (position) + std::advance(itr, position); + Eluna::Push(L, *itr); + } + break; + case SELECT_TARGET_FARTHEST: + case SELECT_TARGET_BOTTOMAGGRO: + { + std::list::reverse_iterator ritr = targetList.rbegin(); + if (position) + std::advance(ritr, position); + Eluna::Push(L, *ritr); + } + break; + case SELECT_TARGET_RANDOM: + { + std::list::const_iterator itr = targetList.begin(); + if (position) + std::advance(itr, urand(0, position)); + else + std::advance(itr, urand(0, targetList.size() - 1)); + Eluna::Push(L, *itr); + } + break; + default: + luaL_argerror(L, 2, "SelectAggroTarget expected"); + break; + } + + return 1; + } + + /** + * Returns all [Unit]s in the [Creature]'s threat list. + * + * @return table targets + */ + int GetAITargets(lua_State* L, Creature* creature) + { +#if defined(TRINITY) + auto const& threatlist = creature->GetThreatManager().GetThreatenedByMeList(); +#elif defined(AZEROTHCORE) +auto const& threatlist = creature->GetThreatMgr().GetThreatList(); +#else + ThreatList const& threatlist = creature->GetThreatManager().getThreatList(); +#endif + lua_createtable(L, threatlist.size(), 0); + int tbl = lua_gettop(L); + uint32 i = 0; + for (auto itr = threatlist.begin(); itr != threatlist.end(); ++itr) + { +#if defined(TRINITY) + Unit* target = itr->second->GetOwner(); +#else + Unit* target = (*itr)->getTarget(); +#endif + if (!target) + continue; + Eluna::Push(L, target); + lua_rawseti(L, tbl, ++i); + } + + lua_settop(L, tbl); + return 1; + } + + /** + * Returns the number of [Unit]s in this [Creature]'s threat list. + * + * @return int targetsCount + */ + int GetAITargetsCount(lua_State* L, Creature* creature) + { +#if defined(TRINITY) + Eluna::Push(L, creature->GetThreatManager().GetThreatenedByMeList().size()); +#elif defined(AZEROTHCORE) + Eluna::Push(L, creature->GetThreatMgr().GetThreatListSize()); +#else + Eluna::Push(L, creature->GetThreatManager().getThreatList().size()); +#endif + return 1; + } + + /** + * Returns the [Creature]'s NPC flags. + * + * These are used to control whether the NPC is a vendor, can repair items, + * can give quests, etc. + * + * @return [NPCFlags] npcFlags + */ + int GetNPCFlags(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetUInt32Value(UNIT_NPC_FLAGS)); + return 1; + } + + /** + * Returns the [Creature]'s Unit flags. + * + * These are used to control whether the NPC is attackable or not, among other things. + * + * @return [UnitFlags] unitFlags + */ + int GetUnitFlags(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetUInt32Value(UNIT_FIELD_FLAGS)); + return 1; + } + + /** + * Returns the [Creature]'s Unit flags 2. + * + * @return [UnitFlags2] unitFlags2 + */ + int GetUnitFlagsTwo(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetUInt32Value(UNIT_FIELD_FLAGS_2)); + return 1; + } + + /** + * Returns the [Creature]'s Extra flags. + * + * These are used to control whether the NPC is a civilian, uses pathfinding, + * if it's a guard, etc. + * + * @return [ExtraFlags] extraFlags + */ + int GetExtraFlags(lua_State* L, Creature* creature) + { +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->GetCreatureTemplate()->flags_extra); +#else + Eluna::Push(L, creature->GetCreatureInfo()->ExtraFlags); +#endif + return 1; + } + +#if defined(CLASSIC) || defined(TBC) || defined(WOTLK) + /** + * Returns the [Creature]'s shield block value. + * + * @return uint32 shieldBlockValue + */ + int GetShieldBlockValue(lua_State* L, Creature* creature) + { + Eluna::Push(L, creature->GetShieldBlockValue()); + return 1; + } +#endif + +#if defined(TRINITY) || defined(AZEROTHCORE) + int GetLootMode(lua_State* L, Creature* creature) // TODO: Implement LootMode features + { + Eluna::Push(L, creature->GetLootMode()); + return 1; + } +#endif + + /** + * Returns the guid of the [Creature] that is used as the ID in the database + * + * @return uint32 dbguid + */ + int GetDBTableGUIDLow(lua_State* L, Creature* creature) + { +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->GetSpawnId()); +#else + // on mangos based this is same as lowguid + Eluna::Push(L, creature->GetGUIDLow()); +#endif + return 1; + } + + /** + * Sets the [Creature]'s NPC flags to `flags`. + * + * @param [NPCFlags] flags + */ + int SetNPCFlags(lua_State* L, Creature* creature) + { + uint32 flags = Eluna::CHECKVAL(L, 2); + + creature->SetUInt32Value(UNIT_NPC_FLAGS, flags); + return 0; + } + + /** + * Sets the [Creature]'s Unit flags to `flags`. + * + * @param [UnitFlags] flags + */ + int SetUnitFlags(lua_State* L, Creature* creature) + { + uint32 flags = Eluna::CHECKVAL(L, 2); + creature->SetUInt32Value(UNIT_FIELD_FLAGS, flags); + return 0; + } + + /** + * Sets the [Creature]'s Unit flags2 to `flags`. + * + * @param [UnitFlags2] flags + */ + int SetUnitFlagsTwo(lua_State* L, Creature* creature) + { + uint32 flags = Eluna::CHECKVAL(L, 2); + creature->SetUInt32Value(UNIT_FIELD_FLAGS_2, flags); + return 0; + } + +#if defined(TRINITY) || defined(AZEROTHCORE) + /** + * Sets the [Creature]'s ReactState to `state`. + * + * @param [ReactState] state + */ + int SetReactState(lua_State* L, Creature* creature) + { + uint32 state = Eluna::CHECKVAL(L, 2); + + creature->SetReactState((ReactStates)state); + return 0; + } +#endif + + /** + * Makes the [Creature] able to fly if enabled. + * + * @param bool disable + */ + int SetDisableGravity(lua_State* L, Creature* creature) + { + bool disable = Eluna::CHECKVAL(L, 2); + +#if defined(TRINITY) || defined(AZEROTHCORE) + creature->SetDisableGravity(disable); +#else + creature->SetLevitate(disable); +#endif + return 0; + } + +#if defined(TRINITY) || defined(AZEROTHCORE) + int SetLootMode(lua_State* L, Creature* creature) // TODO: Implement LootMode features + { + uint16 lootMode = Eluna::CHECKVAL(L, 2); + + creature->SetLootMode(lootMode); + return 0; + } +#endif + + /** + * Sets the [Creature]'s death state to `deathState`. + * + * @param [DeathState] deathState + */ + int SetDeathState(lua_State* L, Creature* creature) + { + int32 state = Eluna::CHECKVAL(L, 2); + +#if defined(TRINITY) || defined(AZEROTHCORE) + creature->setDeathState((DeathState)state); +#else + creature->SetDeathState((DeathState)state); +#endif + return 0; + } + + /** + * Sets whether the [Creature] is currently walking or running. + * + * @param bool enable = true : `true` to enable walking, `false` for running + */ + int SetWalk(lua_State* L, Creature* creature) // TODO: Move same to Player ? + { + bool enable = Eluna::CHECKVAL(L, 2, true); + + creature->SetWalk(enable); + return 0; + } + + /** + * Equips given [Item]s to the [Unit]. Using 0 removes the equipped [Item] + * + * @param uint32 main_hand : main hand [Item]'s entry + * @param uint32 off_hand : off hand [Item]'s entry + * @param uint32 ranged : ranged [Item]'s entry + */ + int SetEquipmentSlots(lua_State* L, Creature* creature) + { + uint32 main_hand = Eluna::CHECKVAL(L, 2); + uint32 off_hand = Eluna::CHECKVAL(L, 3); + uint32 ranged = Eluna::CHECKVAL(L, 4); + +#if defined(TRINITY) || defined(AZEROTHCORE) + creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, main_hand); + creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, off_hand); + creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 2, ranged); +#else + creature->SetVirtualItem(VIRTUAL_ITEM_SLOT_0, main_hand); + creature->SetVirtualItem(VIRTUAL_ITEM_SLOT_1, off_hand); + creature->SetVirtualItem(VIRTUAL_ITEM_SLOT_2, ranged); +#endif + return 0; + } + + /** + * Sets whether the [Creature] can be aggroed. + * + * @param bool allow = true : `true` to allow aggro, `false` to disable aggro + */ + int SetAggroEnabled(lua_State* L, Creature* creature) + { + bool allow = Eluna::CHECKVAL(L, 2, true); + +#if defined(TRINITY) || defined(AZEROTHCORE) + if (allow) + creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC); + else + creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC); +#else + if (allow) + creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE); + else + creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE); +#endif + + return 0; + } + + /** + * Sets whether the [Creature] gives reputation or not. + * + * @param bool disable = true : `true` to disable reputation, `false` to enable + */ + int SetDisableReputationGain(lua_State* L, Creature* creature) + { + bool disable = Eluna::CHECKVAL(L, 2, true); + + creature->SetDisableReputationGain(disable); + return 0; + } + + /** + * Sets the [Creature] as in combat with all [Player]s in the dungeon instance. + * + * This is used by raid bosses to prevent Players from using out-of-combat + * actions once the encounter has begun. + */ + int SetInCombatWithZone(lua_State* /*L*/, Creature* creature) + { +#if defined(AZEROTHCORE) + if (creature->IsAIEnabled) + creature->AI()->DoZoneInCombat(); +#elif defined(TRINITY) + if (creature->IsAIEnabled()) + creature->AI()->DoZoneInCombat(); +#else + creature->SetInCombatWithZone(); +#endif + return 0; + } + + /** + * Sets the distance the [Creature] can wander from it's spawn point. + * + * @param float distance + */ + int SetWanderRadius(lua_State* L, Creature* creature) + { + float dist = Eluna::CHECKVAL(L, 2); + +#if defined(TRINITY) || defined(AZEROTHCORE) + creature->SetWanderDistance(dist); +#else + creature->SetRespawnRadius(dist); +#endif + return 0; + } + + /** + * Sets the time it takes for the [Creature] to respawn when killed. + * + * @param uint32 delay : the delay, in seconds + */ + int SetRespawnDelay(lua_State* L, Creature* creature) + { + uint32 delay = Eluna::CHECKVAL(L, 2); + + creature->SetRespawnDelay(delay); + return 0; + } + + /** + * Sets the default movement type of the [Creature]. + * + * @param [MovementGeneratorType] type + */ + int SetDefaultMovementType(lua_State* L, Creature* creature) + { + int32 type = Eluna::CHECKVAL(L, 2); + + creature->SetDefaultMovementType((MovementGeneratorType)type); + return 0; + } + + /** + * Sets whether the [Creature] can search for assistance at low health or not. + * + * @param bool enable = true : `true` to disable searching, `false` to allow + */ + int SetNoSearchAssistance(lua_State* L, Creature* creature) + { + bool val = Eluna::CHECKVAL(L, 2, true); + + creature->SetNoSearchAssistance(val); + return 0; + } + + /** + * Sets whether the [Creature] can call nearby enemies for help in combat or not. + * + * @param bool enable = true : `true` to disable calling for help, `false` to enable + */ + int SetNoCallAssistance(lua_State* L, Creature* creature) + { + bool val = Eluna::CHECKVAL(L, 2, true); + + creature->SetNoCallAssistance(val); + return 0; + } + + /** + * Sets whether the creature is hovering / levitating or not. + * + * @param bool enable = true : `true` to enable hovering, `false` to disable + */ + int SetHover(lua_State* L, Creature* creature) + { + bool enable = Eluna::CHECKVAL(L, 2, true); + +#if defined(TRINITY) || defined(AZEROTHCORE) + creature->SetHover(enable); +#else + // Copy paste from Aura::HandleAuraHover + // TODO: implement core side properly + WorldPacket data; + if (enable) + data.Initialize(SMSG_MOVE_SET_HOVER, 8 + 4); + else + data.Initialize(SMSG_MOVE_UNSET_HOVER, 8 + 4); + data << creature->GetPackGUID(); + data << uint32(0); +#if defined(CMANGOS) + creature->SendMessageToSet(data, true); +#else + creature->SendMessageToSet(&data, true); +#endif +#endif + return 0; + } + + /** + * Despawn this [Creature]. + * + * @param uint32 delay = 0 : dely to despawn in milliseconds + */ + int DespawnOrUnsummon(lua_State* L, Creature* creature) + { + uint32 msTimeToDespawn = Eluna::CHECKVAL(L, 2, 0); + +#if defined(TRINITY) + creature->DespawnOrUnsummon(Milliseconds(msTimeToDespawn)); +#elif defined(AZEROTHCORE) + creature->DespawnOrUnsummon(msTimeToDespawn); +#else + creature->ForcedDespawn(msTimeToDespawn); +#endif + return 0; + } + + /** + * Respawn this [Creature]. + */ + int Respawn(lua_State* /*L*/, Creature* creature) + { + creature->Respawn(); + return 0; + } + + /** + * Remove this [Creature]'s corpse. + */ + int RemoveCorpse(lua_State* /*L*/, Creature* creature) + { + creature->RemoveCorpse(); + return 0; + } + + /** + * Make the [Creature] start following its waypoint path. + */ + int MoveWaypoint(lua_State* /*L*/, Creature* creature) + { +#if defined(TRINITY) || defined(AZEROTHCORE) + creature->GetMotionMaster()->MovePath(creature->GetWaypointPath(), true); +#else + creature->GetMotionMaster()->MoveWaypoint(); +#endif + return 0; + } + + /** + * Make the [Creature] call for assistance in combat from other nearby [Creature]s. + */ + int CallAssistance(lua_State* /*L*/, Creature* creature) + { + creature->CallAssistance(); + return 0; + } + + /** + * Make the [Creature] call for help in combat from friendly [Creature]s within `radius`. + * + * @param float radius + */ + int CallForHelp(lua_State* L, Creature* creature) + { + float radius = Eluna::CHECKVAL(L, 2); + + creature->CallForHelp(radius); + return 0; + } + + /** + * Make the [Creature] flee combat to get assistance from a nearby friendly [Creature]. + */ + int FleeToGetAssistance(lua_State* /*L*/, Creature* creature) + { + creature->DoFleeToGetAssistance(); + return 0; + } + + /** + * Make the [Creature] attack `target`. + * + * @param [Unit] target + */ + int AttackStart(lua_State* L, Creature* creature) + { + Unit* target = Eluna::CHECKOBJ(L, 2); + + creature->AI()->AttackStart(target); + return 0; + } + + /** + * Save the [Creature] in the database. + */ + int SaveToDB(lua_State* /*L*/, Creature* creature) + { + creature->SaveToDB(); + return 0; + } + + /** + * Make the [Creature] try to find a new target. + * + * This should be called every update cycle for the Creature's AI. + */ + int SelectVictim(lua_State* L, Creature* creature) + { +#if defined(TRINITY) || defined(AZEROTHCORE) + Eluna::Push(L, creature->SelectVictim()); +#else + Eluna::Push(L, creature->SelectHostileTarget()); +#endif + return 1; + } + + /** + * Transform the [Creature] into another Creature. + * + * @param uint32 entry : the Creature ID to transform into + * @param uint32 dataGUIDLow = 0 : use this Creature's model and equipment instead of the defaults + */ + int UpdateEntry(lua_State* L, Creature* creature) + { + uint32 entry = Eluna::CHECKVAL(L, 2); + uint32 dataGuidLow = Eluna::CHECKVAL(L, 3, 0); + +#if defined(TRINITY) || defined(AZEROTHCORE) + creature->UpdateEntry(entry, dataGuidLow ? eObjectMgr->GetCreatureData(dataGuidLow) : NULL); +#else + creature->UpdateEntry(entry, ALLIANCE, dataGuidLow ? eObjectMgr->GetCreatureData(dataGuidLow) : NULL); +#endif + return 0; + } + +#if defined(TRINITY) || defined(AZEROTHCORE) + /** + * Resets [Creature]'s loot mode to default + */ + int ResetLootMode(lua_State* /*L*/, Creature* creature) // TODO: Implement LootMode features + { + creature->ResetLootMode(); + return 0; + } + + /** + * Removes specified loot mode from [Creature] + * + * @param uint16 lootMode + */ + int RemoveLootMode(lua_State* L, Creature* creature) // TODO: Implement LootMode features + { + uint16 lootMode = Eluna::CHECKVAL(L, 2); + + creature->RemoveLootMode(lootMode); + return 0; + } + + /** + * Adds a loot mode to the [Creature] + * + * @param uint16 lootMode + */ + int AddLootMode(lua_State* L, Creature* creature) // TODO: Implement LootMode features + { + uint16 lootMode = Eluna::CHECKVAL(L, 2); + + creature->AddLootMode(lootMode); + return 0; + } +#endif + + /** + * Returns the [Creature]'s creature family ID (enumerated in CreatureFamily.dbc). + * + *

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�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

3i-mR$~tn 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�g;12bH5Ui+XRlZ=P+uF%?8}@NBOzRnUnd= zKS6p(RaZ6)kZ8jN%-Pe`gXfyi$AW@wbUN=+FD(|We0FzlEyxY9%X-kcSw`CcJNC}r z(qllPqwVqET<4$InB_;gr{lg_8~*m}gnh!+p#yf zyGe4=z1h=Pnl|_Oy(I;-rc;<4;j!l|0aW$Q7mG~^p5tK zwaaxqx;Y2PG=pMtJsM!yTAC*8`Muv4;D{daH&5$&*nkFP7&h_r$krUvwkW?h7)Aw@ z^uu!AN@9r5Ud?vCfe*l7;6hlbvXsM*l zhy-vB0BM!IZy1I?&&|7@5As^Svln?@k20_;e~n$?ABz{>zZ=KXQ!iGlLA3V$xVS(H zXvg)9%8?>!^gBT3VT^~P@|S?o;?{k!-TCg{et8kG@5i@q{~}&qOrqQU6lb&QLFV2r zUlEFv12~FA1Ti8yqC!>_tEC?eT7({kj3! zbh&3^Ltzv^WJ5WA^>^WhI;Kfd0r<36Y7dH`=R5%_`CVEi zAkJjk4yboP{;9p#EPHW!)s54a-Iy6Hc4nAcC%RprdON=U_N&B^td;%39+k-9x2+cI zY(=AY_im%=LQ9{1##YNGILLDtoVNl@^Ou`*-|w&E@nI6(kvR=2LkvUF8myADp4)51 zo=4lqw$Y8*8Y+j^G(I8UG+Qqe$mw&CtMqZUfb^9U!{4JP$ftiMz&B4x&Z;BCDe{AL zoWm7WUh9ptBEKix~B=mxeLyZ=xlOWinOL6)7|g zysI96^;8}P;qwGpZ=Yki^`&YjW9{IekhV0a*i^2EjfGuPG*b8e_<;V{&P7F!<%>>~ z3(fX%K5fTx)rrfKMQ|28Hy}wi%OVj(U#Xa78+OW0^!2jR(CcC*c?}^@uDe(jfM;5p z0AMyHuGxP$t3&bx1v00<^|nr$Pf>5q$kes;1o8VEuywch3{J_!8Ia|26t7>O#KXfpE=+AbAH;gKO#tZEzkSU8 zeSO)9Z{GCd`EDNH{pu#3uNTqU?nD2DzEWrUybNB zqtD(BoUO)tSF)-Mn;ZeDDuYu%zQ?w=CP7k=fINYRa&1nqeqQ>LJ!SA)2AIr}<5Z}? zB4>)OAsbC_#Mw;RG6t*W`_pz@UKYzC&u6kFDj?^0VDc#sFECsZpwxBe7>nE zWaL?2Fz1gE2Qd0_vr7tvjAVrb0# zKH}x8aZFG9aeKdt_a9dA^r-y1zy|mD_VqZ+DZQiGIl(vWsXnI^Q zaH(^f;SaB0j^nE@PSPRZSm_x`o?c&BW8QDX=j&o;(kt`;xt*Q%5I!uswddA5e z#aCa>;`LSa`@?X2eRY}xFO+@V-7RA_9mk)2a~ZE+ous^C!1l9@rp8Ay(&T+QH4(Wc zMSBkV&(Me0mxBc3&rW5syUEG}jLlB^ad|aKCatmb1d6Sob~vveumD1utGx6Jg(e-Jej-ah1 zL6g<50JuPfv;z%b(fx{IKg90FP$Y^e;_0(8@_jr$8TL^n5}4kceaTPH=h^rzO1t?| zX;geJCils=A}8QwC0W0wgr2?d~;`*s$O z{*WoJst%HscI=tQCu=6#a`0V~yaD&fnPsC31OwU?7_MXZli-CM&`;VvNG$o*A1H&V z#-We2Qvd)U07*naRO!b^;_Kv4gi$x!BV_aaEXC7{v*dzqvnZa==N<1G5at?wFKFUB zvW0Fe#pek4sW@rCnDo<{-f4W+T>nPq{mpZ_))Bzuzb1pJ>5c0;WQ_h25b+7qmqS_<`zVJ&^eS-V2hwl(d}}sN;M$6BUi~72#7z9RyRlwj zZSUfr|Kq=wijM703kiXBG4>5ek(LGGEmy1TaS6cNks(2Q|X4zh}-SRw`r@HK$I z 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 n&JNyF(t{T{k6 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�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 z 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%0D)D(721>i-ec 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%0DD!*CK-myL_@K_yYNHANWQu#X zutUe^(DBU~T@tKXe1S6#G~iW=%`KxZm~90m73dIj_~napjZ_T8RfRq4yk|o+5_6AJzIp}O7JDFYK001BWNkla-1g$a=)I?wDeWOrT@a9MBV6n^}*X=^;oJMvgxf(<1Hs z=sSdNPo{uStTFwjVlpl3OpwX-hpq`mic5z>o;auI4iYS^!*07* zb?)7C8-0xIk^I6BNZmt|K&7*MU~ta)to`A|+4|6j$PY}>n*vE+nFFK0!s*@``bEQ@_f zoutAJ0t8#e0AFE>^(16c_4!e=%|*x0E8BbC%{`Fu_1wOOgvZ>;KHjw`dtJ_nnu_y> zUCng@EGuFd3jNQXKc2N-&&_;BM(ooK2}ENLA;IsU%78t@RzBPX$UI42bhiqdiyu$R z2JAaMi%Aktq2N+F{OuX6@Xn>I=z^Q|-0xF2R0nXTU|^n9pP4|+dG8Gf;EPO`0nFnY z4nwWO*h`wl>W9*aH_c`>mEl`0|cwl5=)Ux_46ukU~Q+2{RcwemaCa%sJsxxLEC z3D5w@uurUg+lFn_t0M-Od8`u_Dh?S zHVj8^;|JhhV#BTfD8+R-Z>M2one|PyOtG@?c?tb!V1>9JAdzbs&j19+?;$R_xQ}B8 zhc^kVB5Xl`)&MK9#?c0Wmme>$F6osH0h)0RonWyC0l>zcM`m{5Qa%rf*;rPM*30K3 z$rb#L=uP|XLut8Bb8Jbg+gqw*0@&kvd^HU%L-txMHufL&ugSy5X~c~;^B^ei@nBs6Ql+VeAR3nS9iStGP%&}sxh`K|S3E2Dc(XsVQJQ4mb{}G!|LE^XY zQ#x5({6S51W1pn$e^i!#>-FUwS>EgW`5k-%{*U#}Rrmr7N@Gs~NX+Reg<)eoSbTt| z{)|V!3$ba@s|}-Q=f&lyF<8J0OHgHyi89z|jLp*~CVCKjMX4vo3I&F8r4)hE4^J!W zIEaWBuOHFg!}MjR5HQl1Zh0Hd0j@f1S3r)&;(8zbY3M4JVDiwbQIuni)+&f1W5n-qiQ(^Pd1 zP!s}`Pv&Njt+EJ|aOzP$T$6XgI36#JOP_cj08|by3>2Kd^@4J^sV+4?Wpn9~2iq<{ z3LF=Jkj0b$3=lAec(AtT9!H(EfklV68A3&t9VZtMi}KCwORGaclWC^TAw3}j7;e;_dwVHyl}EEBRB!@hS9*#e~~Tswt$uz z44K{&Q9~ARGzh3!^Z9(OmVlQ`ep0ILPI`J`8Xq@fS{?v<1U)zgtRv1pjz7*+D9B(; z;w(ld8F)ge2nITH881ElIH#-ufcUG&D5s&EnZXeBkfNmC z%mMbo%@7+;4y5TjYvndTu*wX0AN=e%fH=17{pq;ZyDqMQvSDxxCWN!d&yihvVD3%< zuJFF`Uz}~ug2DVtlxN=DY|K93z8^k3xo6rpU)}5Vs~i3B(_5j#s*!Dl0|_vOQdV1d3umBzbf>Iiu zWu^5G48PWs{KAR%5Tb_Q6(&jm)QA-4nBR5aV&fK!>Q7I5XF@S}U%(6ZvaB44CevIA zz-}L<<(!M+6|>y3RAB%PdQMw2*)q zz&UbB`1#;O0J0BwX!aM*Q$>Ii2@C>O*0io`CqXz*>m@^7VwxZ@RxYy{wdncKk zbu4FUhgNI%9SgQ$I9des1n99(W>Sp~XV;JHq)=}@dpNJ0PaGa>6KlztG$YiGTx4gt zHUKe-@ze9c_RQ`v3?Y&w^tBx`wg5|<0Rnuq8w{TMd!goAGl8(z zVpZzLcLzP*5CmjO&6uM!9A6=ZO%0lga%ki