hooks
Recommended hooks
Initialization
start
Called once after loading all plugins, but before loading or configuring load of any control or tables files. %config
and all other stuff would be unavailable at this moment. Reconfiguration for the following initialization steps (like profiles plugin does) should be performed there, as well as anything else that needs to be performed as soon as possible.
start2
Called once before loading any control or tables files, but when that load is already being configured. %config
etc would still be unavailable at this moment. Monkey-patching of whatever will be loaded next can be performed there.
start3
Called once after all control and tables files are loaded. You probably should use initialized hook instead.
initialized
Called once when all initialization is done and it's ready to connect to the server or start XKore. Additional initialization should be performed there.
Continuous Work
mainLoop_pre
Called continuously.
mainLoop_post
Called continuously, after processing all other routines.
AI_pre/manual
Called continuously when in game unless AI is turned off.
AI_pre
Called continuously when in game if AI is set to automatic.
AI_post
Called continuously when in game if AI is set to automatic, after processing all other AI routines.
Discovering all existing hooks Unix Distro
find src -type f \( -name "*.pl" -or -name "*.pm" -not -name "Plugins.pm" -not -name "PluginsHookTest.pm" \) -exec grep -Hn "^[^#]*callHook" {} \; | sed -E s/\\t+/\\t/ | sed s/\\sif.*//
Discovering all existing hooks Windows Distro
open cmd cd openkore\src findstr /S /n "callHook" *.pl; findstr /S /n "callHook" *.pm;
Note that some hooks, like packet/<name>
, packet_pre/<name>
and mangle/<name>
, actually are many hooks, for example, one hook for each network packet type. See about it here.
Hook List
This list might be outdated.
src/Actor/Item.pm:526: Plugins::callHook('get_item_weight', $self) src/Actor/You.pm:282: Plugins::callHook('attack_start', {ID => $targetID}); src/Actor.pm:589: Plugins::callHook('Actor::setStatus::change', { src/AI/Attack.pm:218: Plugins::callHook('target_died', {monster => $monsters_old{$ID}}); src/AI/Attack.pm:259: Plugins::callHook('attack_end', {ID => $ID}) src/AI/Attack.pm:690: Plugins::callHook('AI::Attack::main', {target => $target}) src/AI/CoreLogic.pm:57: Plugins::callHook('AI_start', {state => AI::state}); src/AI/CoreLogic.pm:68: Plugins::callHook('AI_pre/manual'); src/AI/CoreLogic.pm:118: Plugins::callHook('AI_pre'); src/AI/CoreLogic.pm:218: Plugins::callHook('AI_post'); src/AI/CoreLogic.pm:549: Plugins::callHook('portal_exist2', { src/AI/CoreLogic.pm:575: Plugins::callHook('portal_exist2', { src/AI/CoreLogic.pm:968: Plugins::callHook('AI_storage_auto_queued'); src/AI/CoreLogic.pm:1190: Plugins::callHook('AI_storage_auto_weight_start' => \%plugin_args); src/AI/CoreLogic.pm:1201: Plugins::callHook('AI_storage_auto_queued'); src/AI/CoreLogic.pm:1212: Plugins::callHook('AI_storage_auto_get_auto_start' => \%plugin_args); src/AI/CoreLogic.pm:1256: Plugins::callHook('AI_storage_item_out_of_stock', { src/AI/CoreLogic.pm:1281: Plugins::callHook('AI_storage_auto_queued'); src/AI/CoreLogic.pm:1298: Plugins::callHook('AI_sell_auto_queued'); src/AI/CoreLogic.pm:1302: Plugins::callHook('AI_sell_auto_queued'); src/AI/CoreLogic.pm:1445: Plugins::callHook('AI_storage_open', \%pluginArgs); # we can hook here to perform actions BEFORE any storage function src/AI/CoreLogic.pm:1460: Plugins::callHook('AI_storage_full', \%pluginArgs); src/AI/CoreLogic.pm:1484: Plugins::callHook('AI_storage_item_full', { src/AI/CoreLogic.pm:1545: Plugins::callHook('AI_storage_done', \%hookArgs); src/AI/CoreLogic.pm:1629: Plugins::callHook('AI_storage_item_out_of_stock', { src/AI/CoreLogic.pm:1663: Plugins::callHook('AI_storage_done_after_getAuto', \%hookArgs); src/AI/CoreLogic.pm:1699: Plugins::callHook('AI_sell_auto_start' => \%plugin_args ); src/AI/CoreLogic.pm:1707: Plugins::callHook('AI_sell_auto_queued'); src/AI/CoreLogic.pm:1724: Plugins::callHook('AI_buy_auto_queued'); src/AI/CoreLogic.pm:1728: Plugins::callHook('AI_buy_auto_queued'); src/AI/CoreLogic.pm:1845: Plugins::callHook('AI_sell_auto'); src/AI/CoreLogic.pm:1874: Plugins::callHook('AI_sell_auto_done'); src/AI/CoreLogic.pm:1885: Plugins::callHook('AI_buy_auto_start' => \%plugin_args); src/AI/CoreLogic.pm:1921: Plugins::callHook('AI_buy_auto_queued'); src/AI/CoreLogic.pm:1937: Plugins::callHook('AI_buy_auto_done'); src/AI/CoreLogic.pm:1941: Plugins::callHook('AI_storage_auto_queued'); src/AI/CoreLogic.pm:1945: Plugins::callHook('AI_storage_auto_queued'); src/AI/CoreLogic.pm:1949: Plugins::callHook('AI_buy_auto'); src/AI/CoreLogic.pm:2266: Plugins::callHook('AI/lockMap', \%args); src/AI/CoreLogic.pm:2384: Plugins::callHook('ai_processRandomWalk' => \%plugin_args); src/AI/CoreLogic.pm:2703: Plugins::callHook('ai_follow', $args); src/AI/CoreLogic.pm:3223: Plugins::callHook('checkMonsterAutoAttack', \%hookArgs); src/AI/CoreLogic.pm:3286: Plugins::callHook('ai_items_take'); src/AI/SlaveAttack.pm:186: Plugins::callHook('slave_target_died', { src/AI/SlaveAttack.pm:227: Plugins::callHook('slave_attack_end', { src/AI.pm:98: Plugins::callHook('AI_state_change', { src/ChatQueue.pm:64: Plugins::callHook('ChatQueue::add', \%item); src/ChatQueue.pm:616: Plugins::callHook('ChatQueue::processChatResponse', $cmd); src/Commands.pm:870: Plugins::callHook('Commands::run/pre', \%params); src/Commands.pm:872: Plugins::callHook('Commands::run/post', \%params); src/Commands.pm:876: Plugins::callHook('Command_post', \%params); src/Commands.pm:1244: Plugins::callHook('AI_buy_auto_queued'); src/Commands.pm:1273: Plugins::callHook('AI_sell_auto_queued'); src/Commands.pm:1281: Plugins::callHook('AI_storage_auto_queued'); src/Commands.pm:2094: Plugins::callHook('Commands::cmdConf', { src/FileParsers.pm:784: Plugins::callHook('FileParsers::ROLUT', \%ret); src/FileParsers.pm:811: Plugins::callHook('FileParsers::RODescLUT', \%ret); src/FileParsers.pm:861: Plugins::callHook ('FileParsers::ROQuestsLUT', \%ret); src/FileParsers.pm:1480: Plugins::callHook('updatePortalLUT', $plugin_args); src/FileParsers.pm:1494: Plugins::callHook('updatePortalLUT2', $plugin_args); src/functions.pl:74: Plugins::callHook('mainLoop_pre'); src/functions.pl:76: Plugins::callHook('mainLoop_post'); src/functions.pl:83: Plugins::callHook('start'); src/functions.pl:136: Plugins::callHook('parse_command_line'); src/functions.pl:378: Plugins::callHook('start2'); src/functions.pl:402: Plugins::callHook('start3'); src/functions.pl:633: Plugins::callHook('initialized'); src/functions.pl:793: Plugins::callHook('packet_mapChange'); src/functions.pl:1002: Plugins::callHook('mainLoop::setTitle',\%args); src/Interface/Console/Curses.pm:683: Plugins::callHook('curses/updateStatus'); src/Interface/Console/Curses.pm:808: Plugins::callHook('curses/updateObjects'); src/InventoryList/Cart.pm:41: Plugins::callHook('cart_ready'); src/InventoryList/Cart.pm:43: Plugins::callHook('cart_info_updated'); src/InventoryList/Cart.pm:102: Plugins::callHook('cart_ready'); src/InventoryList/Inventory.pm:41: Plugins::callHook('inventory_ready'); src/InventoryList/Inventory.pm:71: Plugins::callHook('inventory_ready'); src/InventoryList/Storage.pm:44: Plugins::callHook('storage_first_session_openning'); src/InventoryList/Storage.pm:46: Plugins::callHook('packet_storage_open'); src/InventoryList/Storage.pm:53: Plugins::callHook('packet_storage_close'); src/InventoryList/Storage.pm:89: Plugins::callHook('storage_ready'); src/Misc.pm:315: Plugins::callHook('configModify', { src/Misc.pm:366: Plugins::callHook('configModify', { src/Misc.pm:406: Plugins::callHook('setTimeout', { src/Misc.pm:1283: Plugins::callHook('charSelectScreen', \%plugin_args); src/Misc.pm:1515: Plugins::callHook('ai_check_Aggressiveness' => \%plugin_args); src/Misc.pm:1550: Plugins::callHook('ai_slave_check_Aggressiveness' => \%plugin_args); src/Misc.pm:2143: Plugins::callHook('inventory_item_removed', { src/Misc.pm:2167: Plugins::callHook('storage_item_removed', { src/Misc.pm:2191: Plugins::callHook('cart_item_removed', { src/Misc.pm:2883: Plugins::callHook('objectAdded', { src/Misc.pm:2900: Plugins::callHook('objectRemoved', { src/Misc.pm:3292: Plugins::callHook('changed_status',{ src/Misc.pm:3305: Plugins::callHook('perfect_hidden_player', { src/Misc.pm:3320: Plugins::callHook('perfect_hidden_npc', { src/Misc.pm:3784: Plugins::callHook('teleport_sent', \%args); src/Misc.pm:3790: Plugins::callHook('teleport_sent', \%args); src/Misc.pm:3822: Plugins::callHook('teleport_sent', \%args); src/Misc.pm:3831: Plugins::callHook('teleport_sent', \%args); src/Misc.pm:3841: Plugins::callHook('teleport_sent', \%args); src/Misc.pm:3853: Plugins::callHook('teleport_sent', \%args); src/Misc.pm:3911: Plugins::callHook('teleport_sent', \%args); src/Misc.pm:4299: Plugins::callHook('avoidGM_near', \%args); src/Misc.pm:4351: Plugins::callHook('avoidGM_talk', \%args); src/Misc.pm:4390: Plugins::callHook('avoidList_near', \%args); src/Misc.pm:5058: Plugins::callHook('checkSelfCondition', \%hookArgs); src/Misc.pm:5210: Plugins::callHook('checkPlayerCondition', \%args); src/Misc.pm:5285: Plugins::callHook('checkMonsterCondition', \%args); src/Misc.pm:5375: Plugins::callHook('open_shop', { src/Misc.pm:5392: Plugins::callHook('shop_closed'); src/Misc.pm:5487: Plugins::callHook ('buyer_open_shop', { src/Misc.pm:5508: Plugins::callHook('buyer_shop_closed'); src/Network/ClientReceive.pm:75: Plugins::callHook('map_loaded'); src/Network/DirectConnection.pm:140: Plugins::callHook('Network::connectTo', { src/Network/DirectConnection.pm:173: Plugins::callHook('Network::serverSend/pre', {msg => \$msg}); src/Network/DirectConnection.pm:178: Plugins::callHook('Network::serverSend', {msg => $msg}); src/Network/DirectConnection.pm:196: Plugins::callHook('Network::serverRecv', {msg => \$msg}); src/Network/DirectConnection.pm:245: Plugins::callHook('serverDisconnect/fail'); src/Network/DirectConnection.pm:248: Plugins::callHook('serverDisconnect/success'); src/Network/DirectConnection.pm:260: Plugins::callHook('Network::stateChanged'); src/Network/DirectConnection.pm:274: Plugins::callHook('Network::clientAlive', \%args); src/Network/DirectConnection.pm:286: Plugins::callHook('Network::clientSend', \%args); src/Network/DirectConnection.pm:301: Plugins::callHook('Network::clientRecv', \%args); src/Network/DirectConnection.pm:355: Plugins::callHook('Network::serverConnect/master'); src/Network/DirectConnection.pm:486: Plugins::callHook('Network::serverConnect/special'); src/Network/DirectConnection.pm:526: Plugins::callHook('Network::serverConnect/char'); src/Network/DirectConnection.pm:562: Plugins::callHook('Network::serverConnect/charselect'); src/Network/DirectConnection.pm:600: Plugins::callHook('Network::serverConnect/mapserver'); src/Network/DirectConnection.pm:618: Plugins::callHook('disconnected'); src/Network/DirectConnection.pm:633: Plugins::callHook('disconnected'); src/Network/PacketParser.pm:272: Plugins::callHook('packet_pre/$handler->[0]', \%args); src/Network/PacketParser.pm:274: Plugins::callHook('$self->{hook_prefix}/packet_pre/$handler->[0]', \%args); src/Network/PacketParser.pm:289: Plugins::callHook('packet/$handler->[0]', \%args); src/Network/PacketParser.pm:291: Plugins::callHook('$self->{hook_prefix}/packet/$handler->[0]', \%args); src/Network/PacketParser.pm:368: Plugins::callHook('$self->{hook_prefix}/willMangle', \%args); src/Network/PacketParser.pm:390: Plugins::callHook('$self->{hook_prefix}/mangle', \%hook_args); src/Network/PacketParser.pm:494: Plugins::callHook($hook, { src/Network/Receive/kRO/Sakexe_0.pm:1011: Plugins::callHook($args->{hook}, { src/Network/Receive/kRO/Sakexe_0.pm:1051: Plugins::callHook('packet_guildMsg', { src/Network/Receive/kRO/Sakexe_0.pm:1104: Plugins::callHook('item_skill', { src/Network/Receive/kRO/Sakexe_0.pm:1155: Plugins::callHook('packet_pubMsg', { src/Network/Receive/kRO/Sakexe_0.pm:1171: Plugins::callHook('packet_sentPM', { src/Network/Receive/kRO/Sakexe_0.pm:1204: Plugins::callHook('pvp_mode', { src/Network/Receive/kRO/Sakexe_0.pm:1220: Plugins::callHook('pvp_mode', { src/Network/Receive/kRO/Sakexe_0.pm:1295: Plugins::callHook('packet_skilluse', { src/Network/Receive/kRO/Sakexe_0.pm:1336: Plugins::callHook('packet_skilluse', { src/Network/Receive/kRO/Sakexe_0.pm:1415: Plugins::callHook('packet_skilluse', { src/Network/Receive/ServerType0.pm:1044: Plugins::callHook($args->{hook}, { src/Network/Receive/ServerType0.pm:1086: Plugins::callHook('packet_guildMsg', { src/Network/Receive/ServerType0.pm:1139: Plugins::callHook('item_skill', { src/Network/Receive/ServerType0.pm:1190: Plugins::callHook('packet_pubMsg', { src/Network/Receive/ServerType0.pm:1220: Plugins::callHook('pvp_mode', { src/Network/Receive/ServerType0.pm:1237: Plugins::callHook('pvp_mode', { src/Network/Receive/ServerType0.pm:1317: Plugins::callHook('packet_skilluse', { src/Network/Receive/ServerType0.pm:1366: Plugins::callHook('packet_skilluse', { src/Network/Receive/ServerType0.pm:1452: Plugins::callHook('packet_skilluse', { src/Network/Receive.pm:795: Plugins::callHook('parseMsg/recvChars', $args->{options}); src/Network/Receive.pm:943: Plugins::callHook('char_created', {char => $character}); src/Network/Receive.pm:1230: Plugins::callHook('in_game'); src/Network/Receive.pm:1274: Plugins::callHook('disconnected'); src/Network/Receive.pm:1374: Plugins::callHook('exp_gained'); src/Network/Receive.pm:1430: Plugins::callHook('base_level_changed', {level => $actor->{lv}}); src/Network/Receive.pm:1461: Plugins::callHook('zeny_change', { src/Network/Receive.pm:1532: Plugins::callHook('job_level_changed', {level => $actor->{lv_job}}); src/Network/Receive.pm:1648: Plugins::callHook('packet_charStats', { src/Network/Receive.pm:1748: Plugins::callHook('packet_pre/actor_display', $args); src/Network/Receive.pm:1750: Plugins::callHook('packet/actor_display', $args); src/Network/Receive.pm:2119: Plugins::callHook('add_player_list', $actor); src/Network/Receive.pm:2123: Plugins::callHook('add_monster_list', $actor); src/Network/Receive.pm:2127: Plugins::callHook('add_pet_list', $actor); src/Network/Receive.pm:2131: Plugins::callHook('add_portal_list', $actor); src/Network/Receive.pm:2140: Plugins::callHook('add_npc_list', $actor); src/Network/Receive.pm:2144: Plugins::callHook('add_slave_list', $actor); src/Network/Receive.pm:2147: Plugins::callHook('add_elemental_list', $actor); src/Network/Receive.pm:2168: Plugins::callHook('player', {player => $actor}); #backwards compatibility src/Network/Receive.pm:2170: Plugins::callHook('player_exist', {player => $actor}); src/Network/Receive.pm:2174: Plugins::callHook('npc_exist', {npc => $actor}); src/Network/Receive.pm:2178: Plugins::callHook('portal_exist', {portal => $actor}); src/Network/Receive.pm:2213: Plugins::callHook('player', {player => $actor}); #backwards compatibailty src/Network/Receive.pm:2215: Plugins::callHook('player_connected', {player => $actor}); src/Network/Receive.pm:2243: Plugins::callHook('player_moved', $actor); src/Network/Receive.pm:2246: Plugins::callHook('monster_moved', $actor); src/Network/Receive.pm:2249: Plugins::callHook('pet_moved', $actor); src/Network/Receive.pm:2252: Plugins::callHook('slave_moved', $actor); src/Network/Receive.pm:2256: Plugins::callHook('portal_moved', $actor); src/Network/Receive.pm:2260: Plugins::callHook('npc_moved', $actor); src/Network/Receive.pm:2263: Plugins::callHook('pet_moved', $actor); src/Network/Receive.pm:2311: Plugins::callHook('self_died'); src/Network/Receive.pm:2350: Plugins::callHook('monster_disappeared', {monster => $monster}); src/Network/Receive.pm:2386: Plugins::callHook('player_disappeared', {player => $player}); src/Network/Receive.pm:2406: Plugins::callHook('portal_disappeared', {portal => $portal}); src/Network/Receive.pm:2415: Plugins::callHook('npc_disappeared', {npc => $npc}); src/Network/Receive.pm:2423: Plugins::callHook('pet_disappeared', {pet => $pet}); src/Network/Receive.pm:2456: Plugins::callHook('slave_disappeared', {slave => $slave}); src/Network/Receive.pm:2472: Plugins::callHook('elemental_disappeared', {elemental => $elemental}); src/Network/Receive.pm:2560: Plugins::callHook('packet_attack', { src/Network/Receive.pm:2631: Plugins::callHook('charNameUpdate', {player => $player}); src/Network/Receive.pm:2643: Plugins::callHook('mobNameUpdate', {monster => $monster}); src/Network/Receive.pm:2661: Plugins::callHook('npcNameUpdate', {npc => $npc}); src/Network/Receive.pm:2673: Plugins::callHook('petNameUpdate', {pet => $pet}); src/Network/Receive.pm:2684: Plugins::callHook('slaveNameUpdate', {slave => $slave}); src/Network/Receive.pm:2696: Plugins::callHook('elementalNameUpdate', {elemental => $elemental}); src/Network/Receive.pm:2723: Plugins::callHook('base_level', {name => $actor}); src/Network/Receive.pm:2726: Plugins::callHook('job_level', {name => $actor}); src/Network/Receive.pm:3027: Plugins::callHook('packet_localBroadcast', { src/Network/Receive.pm:3265: Plugins::callHook('show_script', { src/Network/Receive.pm:3396: Plugins::callHook('packet_sysMsg', { src/Network/Receive.pm:3548: Plugins::callHook('equipped_item', { src/Network/Receive.pm:3603: Plugins::callHook('item_gathered', { src/Network/Receive.pm:3667: Plugins::callHook('packet_item_removed', {index => $item->{binID}}); src/Network/Receive.pm:3679: Plugins::callHook('rental_expired', { src/Network/Receive.pm:3720: Plugins::callHook('vending_item_sold', { src/Network/Receive.pm:3732: Plugins::callHook('vending_item_sold_out', { src/Network/Receive.pm:3764: Plugins::callHook('vending_item_sold', { src/Network/Receive.pm:3778: Plugins::callHook('vending_item_sold_out', { src/Network/Receive.pm:3853: Plugins::callHook('packet_vender_store', { item => $item }); src/Network/Receive.pm:3868: Plugins::callHook('packet_vender_store2', { src/Network/Receive.pm:4146: Plugins::callHook('pvp_mode', {pvp => $pvp});# 1 PvP, 2 GvG, 3 Battleground src/Network/Receive.pm:4188: Plugins::callHook('packet_areaSpell', { src/Network/Receive.pm:4235: Plugins::callHook('packet_areaSpell', { src/Network/Receive.pm:4284: Plugins::callHook('packet_areaSpell', { src/Network/Receive.pm:4556: Plugins::callHook('quest_mission_added', { src/Network/Receive.pm:4563: Plugins::callHook('quest_list'); src/Network/Receive.pm:4616: Plugins::callHook('quest_mission_added', { src/Network/Receive.pm:4684: Plugins::callHook('quest_mission_added', { src/Network/Receive.pm:4690: Plugins::callHook('quest_added', {questID => $args->{questID}}); src/Network/Receive.pm:4783: Plugins::callHook('quest_mission_updated', { src/Network/Receive.pm:4854: Plugins::callHook('npc_chat', { src/Network/Receive.pm:4880: Plugins::callHook('makable_item_list', {item_list => $makableList}); src/Network/Receive.pm:5218: Plugins::callHook('invalid_password'); src/Network/Receive.pm:5246: Plugins::callHook('dial'); src/Network/Receive.pm:5265: Plugins::callHook('invalid_password'); src/Network/Receive.pm:5432: Plugins::callHook('chat_created', {chat => $chatRooms{$accountID}}); src/Network/Receive.pm:5459: Plugins::callHook('packet_chatinfo', { src/Network/Receive.pm:5503: Plugins::callHook('chat_joined', {chat => $chat}); src/Network/Receive.pm:5568: Plugins::callHook('chat_modified', { src/Network/Receive.pm:5643: Plugins::callHook('chat_leave'); src/Network/Receive.pm:5657: Plugins::callHook('chat_removed', { src/Network/Receive.pm:5689: Plugins::callHook('error_deal', {type => $args->{type}}); src/Network/Receive.pm:5692: Plugins::callHook('error_deal', {type => $args->{type}}); src/Network/Receive.pm:5710: Plugins::callHook('engaged_deal', {name => $currentDeal{name}}); src/Network/Receive.pm:5713: Plugins::callHook('error_deal', {type =>$args->{type}}); src/Network/Receive.pm:5716: Plugins::callHook('error_deal', {type =>$args->{type}}); src/Network/Receive.pm:5725: Plugins::callHook('cancelled_deal'); src/Network/Receive.pm:5733: Plugins::callHook('complete_deal'); src/Network/Receive.pm:5741: Plugins::callHook('finalized_deal', {name => $currentDeal{name}}); src/Network/Receive.pm:5760: Plugins::callHook('incoming_deal', { src/Network/Receive.pm:5858: Plugins::callHook('packet_emotion', { src/Network/Receive.pm:5901: Plugins::callHook('disconnected') src/Network/Receive.pm:6041: Plugins::callHook('friend_request', { src/Network/Receive.pm:6841: Plugins::callHook('packet_useitem', \%hook_args); src/Network/Receive.pm:6888: Plugins::callHook('item_appeared', { src/Network/Receive.pm:6918: Plugins::callHook('item_exists', { src/Network/Receive.pm:7139: Plugins::callHook('Network::Receive::map_changed', { src/Network/Receive.pm:7255: Plugins::callHook('Network::Receive::map_changed', { src/Network/Receive.pm:7321: Plugins::callHook('npc_autotalk', { src/Network/Receive.pm:7342: Plugins::callHook('npc_talk', { src/Network/Receive.pm:7366: Plugins::callHook('npc_talk_done', {ID => $ID}); src/Network/Receive.pm:7414: Plugins::callHook('npc_autotalk', { src/Network/Receive.pm:7445: Plugins::callHook('npc_talk_responses', { src/Network/Receive.pm:7596: Plugins::callHook('buy_result', {fail => $args->{fail}}); src/Network/Receive.pm:7751: Plugins::callHook('deal_you_added', { src/Network/Receive.pm:7881: Plugins::callHook('add_player_list', $actor); src/Network/Receive.pm:7882: Plugins::callHook('player', {player => $actor}); #backwards compatibility src/Network/Receive.pm:7883: Plugins::callHook('player_exist', {player => $actor}); src/Network/Receive.pm:7896: Plugins::callHook('player_disappeared', {player => $player}); src/Network/Receive.pm:8091: Plugins::callHook('packet_partyJoin', { partyName => bytesToString($info->{name}) }); src/Network/Receive.pm:8144: Plugins::callHook('packet_partyMsg', { src/Network/Receive.pm:8211: Plugins::callHook('party_invite', { src/Network/Receive.pm:8360: Plugins::callHook('party_users_info_ready'); src/Network/Receive.pm:8457: Plugins::callHook('rodex_mail_list', { src/Network/Receive.pm:8530: Plugins::callHook('rodex_mail', { src/Network/Receive.pm:8544: Plugins::callHook('rodex_unread_mail'); src/Network/Receive.pm:8686: Plugins::callHook('rodex_mail_deleted', { src/Network/Receive.pm:8820: Plugins::callHook('packet_clanMsg', { src/Network/Receive.pm:9016: Plugins::callHook('cooking_list', { src/Network/Receive.pm:9131: Plugins::callHook('search_store', $universalCatalogInfo); src/Network/Receive.pm:9179: Plugins::callHook('packet_message_string', { src/Network/Receive.pm:9237: Plugins::callHook($hook, { src/Network/Receive.pm:9263: Plugins::callHook('packet_charSkills', { src/Network/Receive.pm:9491: Plugins::callHook ('captcha_image', $hookArgs); src/Network/Receive.pm:9500: Plugins::callHook ('captcha_file', $hookArgs); src/Network/Receive.pm:9514: Plugins::callHook ('captcha_answer', {flag => $args->{flag}}); src/Network/Receive.pm:9576: Plugins::callHook('packet_open_buying_store', { src/Network/Receive.pm:9594: Plugins::callHook('packet_buying', {ID => $ID}); src/Network/Receive.pm:9646: Plugins::callHook('packet_buying_store', { src/Network/Receive.pm:9671: Plugins::callHook('packet_buying_store2', { src/Network/Receive.pm:9722: Plugins::callHook('packet_buyer', {ID => $ID}); src/Network/Receive.pm:9742: Plugins::callHook('buyer_shop_closed'); src/Network/Receive.pm:9794: Plugins::callHook('packet_special_item_obtain', { src/Network/Receive.pm:9821: Plugins::callHook('packet_sentPM', { src/Network/Receive.pm:9954: Plugins::callHook('memo_fail', {field => $field->baseName}); src/Network/Receive.pm:9957: Plugins::callHook('memo_success', {field => $field->baseName}); src/Network/Receive.pm:10324: Plugins::callHook('instance_ready'); src/Network/Receive.pm:10473: Plugins::callHook('equipped_item', {slot => $equipSlot_lut{$_}, item => $item}); src/Network/Receive.pm:10501: Plugins::callHook('equipped_item_sw', {slot => $equipSlot_lut{$_}, item => $item}); src/Network/Receive.pm:10679: Plugins::callHook('packet_item_removed', {index => $item->{binID}}); src/Network/Receive.pm:11040: Plugins::callHook('parseMsg/addPrivMsgUser', { src/Network/Receive.pm:11052: Plugins::callHook('packet_privMsg', { src/Network/Receive.pm:11225: Plugins::callHook('packet_selfChat', { src/Network/Receive.pm:11332: Plugins::callHook('is_casting', { src/Network/Receive.pm:11403: Plugins::callHook('packet_castCancelled', { src/Network/Receive.pm:11451: Plugins::callHook('unequipped_item', { src/Network/Receive.pm:11482: Plugins::callHook('unequipped_item_sw', { src/Network/Receive.pm:11518: Plugins::callHook('packet_vender', { src/Network/Receive.pm:11554: Plugins::callHook('packet_charSkills', { src/Network/Receive.pm:11635: Plugins::callHook('packet_skillfail', { src/Network/Receive.pm:11648: Plugins::callHook('open_store_success'); src/Network/Receive.pm:11652: Plugins::callHook('open_store_fail', { flag => $args->{flag} }); src/Network/Receive.pm:11790: Plugins::callHook('banking_opened'); src/Network/Receive.pm:11806: Plugins::callHook('banking_deposit_success'); src/Network/Receive.pm:11815: Plugins::callHook('banking_deposit_failed', {'reason' => $args->{reason}}); src/Network/Receive.pm:11830: Plugins::callHook('banking_withdraw_success'); src/Network/Receive.pm:11837: Plugins::callHook('banking_withdraw_failed', {'reason' => $args->{reason}}); src/Network/Receive.pm:11856: Plugins::callHook('navigate_to', $args); src/Network/Receive.pm:12094: Plugins::callHook ('captcha_image', $hookArgs); src/Network/Send/ServerType1.pm:37: Plugins::callHook('packet_pre/sendAttack', \%args) src/Network/Send/ServerType1.pm:38: Plugins::callHook('packet_pre/sendSit', \%args) src/Network/Send/ServerType1.pm:56: Plugins::callHook('packet_pre/sendSit', \%args); src/Network/Send/ServerType1.pm:74: Plugins::callHook('packet_pre/sendStand', \%args); src/Network/Send/ServerType1.pm:151: Plugins::callHook('packet_pre/sendSkillUse', \%args); src/Network/Send/ServerType10.pm:39: Plugins::callHook('packet_pre/sendAttack', \%args) src/Network/Send/ServerType10.pm:40: Plugins::callHook('packet_pre/sendSit', \%args) src/Network/Send/ServerType10.pm:59: Plugins::callHook('packet_pre/sendAttack', \%args); src/Network/Send/ServerType2.pm:44: Plugins::callHook('packet_pre/sendAttack', \%args) src/Network/Send/ServerType2.pm:45: Plugins::callHook('packet_pre/sendSit', \%args) src/Network/Send/ServerType3.pm:59: Plugins::callHook('packet_pre/sendAttack', \%args) src/Network/Send/ServerType3.pm:60: Plugins::callHook('packet_pre/sendSit', \%args) src/Network/Send/ServerType4.pm:45: Plugins::callHook('packet_pre/sendAttack', \%args) src/Network/Send/ServerType4.pm:46: Plugins::callHook('packet_pre/sendSit', \%args) src/Network/Send/ServerType5.pm:57: Plugins::callHook('packet_pre/sendAttack', \%args) src/Network/Send/ServerType5.pm:58: Plugins::callHook('packet_pre/sendSit', \%args) src/Network/Send/ServerType6.pm:36: Plugins::callHook('packet_pre/sendAttack', \%args) src/Network/Send/ServerType6.pm:37: Plugins::callHook('packet_pre/sendSit', \%args) src/Network/Send/ServerType7.pm:35: Plugins::callHook('packet_pre/sendAttack', \%args); src/Network/Send/ServerType7.pm:55: Plugins::callHook('packet_pre/sendSit', \%args); src/Network/Send/ServerType7.pm:73: Plugins::callHook('packet_pre/sendStand', \%args); src/Network/Send/ServerType7.pm:96: Plugins::callHook('packet_pre/sendSkillUse', \%args); src/Network/Send/ServerType8.pm:65: Plugins::callHook('packet_pre/sendAttack', \%args) src/Network/Send/ServerType8.pm:66: Plugins::callHook('packet_pre/sendSit', \%args) src/Network/Send/ServerType8.pm:85: Plugins::callHook('packet_pre/sendAttack', \%args); src/Network/Send/ServerType8.pm:103: Plugins::callHook('packet_pre/sendStand', \%args); src/Network/Send/ServerType8.pm:120: Plugins::callHook('packet_pre/sendSit', \%args); src/Network/Send/ServerType8.pm:140: Plugins::callHook('packet_pre/sendSkillUse', \%args); src/Network/Send/ServerType8_1.pm:54: Plugins::callHook('packet_pre/sendAttack', \%args); src/Network/Send/ServerType8_1.pm:141: Plugins::callHook('packet_pre/sendSit', \%args); src/Network/Send/ServerType8_1.pm:160: Plugins::callHook('packet_pre/sendStand', \%args); src/Network/Send/ServerType8_1.pm:182: Plugins::callHook('packet_pre/sendSkillUse', \%args); src/Network/Send/ServerType8_3.pm:48: Plugins::callHook('packet_pre/sendSit', \%args); src/Network/Send/ServerType8_3.pm:66: Plugins::callHook('packet_pre/sendAttack', \%args); src/Network/Send/ServerType8_3.pm:94: Plugins::callHook('packet_pre/sendStand', \%args); src/Network/Send/ServerType8_5.pm:46: Plugins::callHook('packet_pre/sendSkillUse', \%args); src/Network/Send/ServerType8_5.pm:180: Plugins::callHook('packet_pre/sendAttack', \%args); src/Network/Send.pm:245: Plugins::callHook($hookName, \%args); src/Network/Send.pm:487: Plugins::callHook('packet/sendMapLoaded'); src/Network/Send.pm:536: Plugins::callHook('packet_pre/sendAttack', \%args) src/Network/Send.pm:537: Plugins::callHook('packet_pre/sendSit', \%args) src/Network/Send.pm:826: Plugins::callHook('packet_pre/sendSkillUse', \%args); src/Network/XKore.pm:120: Plugins::callHook('Network::serverSend/pre', {msg => \$msg}); src/Network/XKore.pm:140: Plugins::callHook('Network::stateChanged'); src/Network/XKore.pm:243: Plugins::callHook('disconnected'); src/Network/XKore.pm:264: Plugins::callHook('XKore_start'); src/Poseidon/Client.pm:82: Plugins::callHook('Poseidon/client_authenticate', { src/Poseidon/QueryServer.pm:78: Plugins::callHook('Poseidon/server_authenticate', { src/Settings.pm:344: Plugins::callHook( usage => $data ); src/Settings.pm:498: Plugins::callHook('pre_load_'.$internalFilename, $pre_load); src/Settings.pm:546: Plugins::callHook('load_'.$internalFilename, $load); src/Settings.pm:551: Plugins::callHook('pos_load_'.$internalFilename, $pos_load); src/Settings.pm:553: Plugins::callHook('load_'.$internalFilename, $load); src/Settings.pm:557: Plugins::callHook('pos_load_'.$internalFilename, $pos_load); src/Settings.pm:599: Plugins::callHook('preloadfiles', {files => $files}); src/Settings.pm:603: Plugins::callHook('loadfiles', { src/Settings.pm:611: Plugins::callHook('postloadfiles', {files => $files}); src/Task/MapRoute.pm:193: Plugins::callHook('npc_teleport_missing' => \%plugin_args ); src/Task/MapRoute.pm:406: Plugins::callHook('Task::MapRoute::iterate::missing_portal', \%plugin_args); src/Task/MapRoute.pm:483: Plugins::callHook('Task::MapRoute::iterate::route_portal_near', \%plugin_args); src/Task/Route.pm:313: Plugins::callHook('route', {status => 'success'}); src/Task/Route.pm:414: Plugins::callHook('route', {status => 'success'}); src/Task/Route.pm:426: Plugins::callHook('route', {status => 'success'}); src/Task/Route.pm:469: Plugins::callHook('route', {status => 'stuck'}); src/Task/Route.pm:599: Plugins::callHook('getRoute' => \%plugin_args); src/Utils/PathFinding.pm:103: Plugins::callHook('PathFindingReset', \%hookArgs);