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
openkore/trunk$ find src -name .svn -prune -o -exec grep -Hn "^[^#]*callHook" {} \;
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.
functions.pl:74: Plugins::callHook('mainLoop_pre'); functions.pl:76: Plugins::callHook('mainLoop_post'); functions.pl:83: Plugins::callHook('start'); functions.pl:136: Plugins::callHook( 'parse_command_line' ); functions.pl:378: Plugins::callHook('start2'); functions.pl:402: Plugins::callHook('start3'); functions.pl:645: Plugins::callHook('initialized'); functions.pl:804: Plugins::callHook('packet_mapChange'); functions.pl:1013: Plugins::callHook('mainLoop::setTitle',\%args); Actor\Item.pm:520: Plugins::callHook( 'get_item_weight', $self ) if !defined $self->{weight}; Actor\You.pm:262: Plugins::callHook('attack_start', {ID => $targetID}); Actor.pm:579: Plugins::callHook('Actor::setStatus::change', { AI\Attack.pm:181: Plugins::callHook("target_died", {monster => $monsters_old{$ID}}); AI\Attack.pm:222: Plugins::callHook('attack_end', {ID => $ID}) AI\Attack.pm:592: Plugins::callHook('AI::Attack::main', {target => $target}) AI\CoreLogic.pm:57: Plugins::callHook('AI_start', {state => AI::state}); AI\CoreLogic.pm:68: Plugins::callHook('AI_pre/manual'); AI\CoreLogic.pm:118: Plugins::callHook('AI_pre'); AI\CoreLogic.pm:218: Plugins::callHook('AI_post'); AI\CoreLogic.pm:548: Plugins::callHook('portal_exist2', { AI\CoreLogic.pm:573: Plugins::callHook('portal_exist2', { AI\CoreLogic.pm:1227: Plugins::callHook("AI_storage_item_out_of_stock", { AI\CoreLogic.pm:1404: Plugins::callHook("AI_storage_open", \%pluginArgs); # we can hook here to perform actions BEFORE any storage function AI\CoreLogic.pm:1419: Plugins::callHook("AI_storage_full", \%pluginArgs); AI\CoreLogic.pm:1443: Plugins::callHook("AI_storage_item_full", { AI\CoreLogic.pm:1504: Plugins::callHook("AI_storage_done", \%hookArgs); AI\CoreLogic.pm:1588: Plugins::callHook("AI_storage_item_out_of_stock", { AI\CoreLogic.pm:1785: Plugins::callHook("AI_sell_auto"); AI\CoreLogic.pm:1814: Plugins::callHook('AI_sell_auto_done'); AI\CoreLogic.pm:1871: Plugins::callHook('AI_buy_auto_done'); AI\CoreLogic.pm:1880: Plugins::callHook('AI_buy_auto'); AI\CoreLogic.pm:2191: Plugins::callHook("AI/lockMap", \%args); AI\CoreLogic.pm:2587: Plugins::callHook("ai_follow", $args); AI\CoreLogic.pm:3082: Plugins::callHook("checkMonsterAutoAttack", \%hookArgs); AI\Slave.pm:367: Plugins::callHook("homonulus_target_died"); AI.pm:97: Plugins::callHook('AI_state_change', {old => $AI, new => $_[0]}); ChatQueue.pm:64: Plugins::callHook('ChatQueue::add', \%item); ChatQueue.pm:616: Plugins::callHook('ChatQueue::processChatResponse', $cmd); Commands.pm:857: Plugins::callHook("Commands::run/pre", \%params); Commands.pm:859: Plugins::callHook("Commands::run/post", \%params); Commands.pm:863: Plugins::callHook('Command_post', \%params); Commands.pm:2078: Plugins::callHook('Commands::cmdConf', { FileParsers.pm:784: Plugins::callHook("FileParsers::ROLUT", \%ret); FileParsers.pm:811: Plugins::callHook("FileParsers::RODescLUT", \%ret); FileParsers.pm:861: Plugins::callHook ('FileParsers::ROQuestsLUT', \%ret); FileParsers.pm:1480: Plugins::callHook('updatePortalLUT', $plugin_args); FileParsers.pm:1494: Plugins::callHook('updatePortalLUT2', $plugin_args); Interface\Console\Curses.pm:683: Plugins::callHook( 'curses/updateStatus' ); Interface\Console\Curses.pm:808: Plugins::callHook( 'curses/updateObjects' ); InventoryList\Cart.pm:41: Plugins::callHook('cart_ready'); InventoryList\Cart.pm:43: Plugins::callHook('cart_info_updated'); InventoryList\Cart.pm:102: Plugins::callHook('cart_ready'); InventoryList\Inventory.pm:41: Plugins::callHook('inventory_ready'); InventoryList\Inventory.pm:71: Plugins::callHook('inventory_ready'); InventoryList\Storage.pm:44: Plugins::callHook('storage_first_session_openning'); InventoryList\Storage.pm:46: Plugins::callHook('packet_storage_open'); InventoryList\Storage.pm:53: Plugins::callHook('packet_storage_close'); InventoryList\Storage.pm:89: Plugins::callHook('storage_ready'); Misc.pm:312: Plugins::callHook('configModify', { Misc.pm:363: Plugins::callHook('configModify', { Misc.pm:403: Plugins::callHook('setTimeout', { Misc.pm:1530: Plugins::callHook('charSelectScreen', \%plugin_args); Misc.pm:2274: Plugins::callHook('inventory_item_removed', {item => $item, index => $binID, amount => $amount, remaining => ($item->{amount} <= 0 ? 0 : $item->{amount})}); Misc.pm:2293: Plugins::callHook('storage_item_removed', {item => $item, index => $binID, amount => $amount, remaining => ($item->{amount} <= 0 ? 0 : $item->{amount})}); Misc.pm:2312: Plugins::callHook('cart_item_removed', {item => $item, index => $binID, amount => $amount, remaining => ($item->{amount} <= 0 ? 0 : $item->{amount})}); Misc.pm:2941: Plugins::callHook('objectAdded', { Misc.pm:2958: Plugins::callHook('objectRemoved', { Misc.pm:3350: Plugins::callHook('changed_status',{actor => $actor, changed => $changed}); Misc.pm:3359: # Plugins::callHook('perfect_hidden_player',undef); Misc.pm:3360: Plugins::callHook('perfect_hidden_player',{actor => $actor, changed => $changed}); Misc.pm:3372: Plugins::callHook('perfect_hidden_npc',{actor => $actor, changed => $changed}); Misc.pm:3833: Plugins::callHook('teleport_sent', \%args); Misc.pm:3839: Plugins::callHook('teleport_sent', \%args); Misc.pm:3871: Plugins::callHook('teleport_sent', \%args); Misc.pm:3880: Plugins::callHook('teleport_sent', \%args); Misc.pm:3890: Plugins::callHook('teleport_sent', \%args); Misc.pm:3902: Plugins::callHook('teleport_sent', \%args); Misc.pm:3961: Plugins::callHook('teleport_sent', \%args); Misc.pm:4349: Plugins::callHook('avoidGM_near', \%args); Misc.pm:4401: Plugins::callHook('avoidGM_talk', \%args); Misc.pm:4440: Plugins::callHook('avoidList_near', \%args); Misc.pm:5088: Plugins::callHook("checkSelfCondition", \%hookArgs); Misc.pm:5240: Plugins::callHook('checkPlayerCondition', \%args); Misc.pm:5315: Plugins::callHook('checkMonsterCondition', \%args); Misc.pm:5405: Plugins::callHook ('open_shop', {title => $shop{title}, items => \@items}); Misc.pm:5419: Plugins::callHook("shop_closed"); Misc.pm:5514: Plugins::callHook ('buyer_open_shop', {title => $buyer_shop{title}, limitZeny=> $limitZeny, items => \@items}); Misc.pm:5531: Plugins::callHook("buyer_shop_closed"); Network\ClientReceive.pm:75: Plugins::callHook('map_loaded'); Network\DirectConnection.pm:140: Plugins::callHook('Network::connectTo', { Network\DirectConnection.pm:173: Plugins::callHook("Network::serverSend/pre", { msg => \$msg }); Network\DirectConnection.pm:178: Plugins::callHook("Network::serverSend", { msg => $msg }); Network\DirectConnection.pm:196: Plugins::callHook("Network::serverRecv", { msg => \$msg }); Network\DirectConnection.pm:245: Plugins::callHook("serverDisconnect/fail"); Network\DirectConnection.pm:248: Plugins::callHook("serverDisconnect/success"); Network\DirectConnection.pm:260: Plugins::callHook('Network::stateChanged'); Network\DirectConnection.pm:274: Plugins::callHook('Network::clientAlive', \%args); Network\DirectConnection.pm:286: Plugins::callHook('Network::clientSend', \%args); Network\DirectConnection.pm:301: Plugins::callHook('Network::clientRecv', \%args); Network\DirectConnection.pm:355: Plugins::callHook("Network::serverConnect/master"); Network\DirectConnection.pm:486: Plugins::callHook("Network::serverConnect/special"); Network\DirectConnection.pm:526: Plugins::callHook("Network::serverConnect/char"); Network\DirectConnection.pm:562: Plugins::callHook("Network::serverConnect/charselect"); Network\DirectConnection.pm:600: Plugins::callHook("Network::serverConnect/mapserver"); Network\DirectConnection.pm:618: Plugins::callHook('disconnected'); Network\DirectConnection.pm:633: Plugins::callHook('disconnected'); Network\PacketParser.pm:272: Plugins::callHook("packet_pre/$handler->[0]", \%args); Network\PacketParser.pm:274: Plugins::callHook("$self->{hook_prefix}/packet_pre/$handler->[0]", \%args); Network\PacketParser.pm:289: Plugins::callHook("packet/$handler->[0]", \%args); Network\PacketParser.pm:291: Plugins::callHook("$self->{hook_prefix}/packet/$handler->[0]", \%args); Network\PacketParser.pm:368: Plugins::callHook("$self->{hook_prefix}/willMangle", \%args); Network\PacketParser.pm:390: Plugins::callHook("$self->{hook_prefix}/mangle", \%hook_args); Network\PacketParser.pm:494: Plugins::callHook($hook, {switch => $switch, msg => $msg, msg_size => length($msg), realMsg => \$msg}); Network\Receive\kRO\Sakexe_0.pm:972: Plugins::callHook($args->{hook}, {index => $index, item => $local_item}); Network\Receive\kRO\Sakexe_0.pm:1019: Plugins::callHook('packet_guildMsg', { Network\Receive\kRO\Sakexe_0.pm:1072: Plugins::callHook('item_skill', { Network\Receive\kRO\Sakexe_0.pm:1123: Plugins::callHook('packet_pubMsg', { Network\Receive\kRO\Sakexe_0.pm:1139: Plugins::callHook('packet_sentPM', { Network\Receive\kRO\Sakexe_0.pm:1172: Plugins::callHook('pvp_mode', { Network\Receive\kRO\Sakexe_0.pm:1188: Plugins::callHook('pvp_mode', { Network\Receive\kRO\Sakexe_0.pm:1263: Plugins::callHook('packet_skilluse', { Network\Receive\kRO\Sakexe_0.pm:1302: Plugins::callHook('packet_skilluse', { Network\Receive\kRO\Sakexe_0.pm:1380: Plugins::callHook('packet_skilluse', { Network\Receive\kRO\Sakexe_0.pm:1432: Plugins::callHook($hook, { Network\Receive\ServerType0.pm:1011: Plugins::callHook($args->{hook}, {index => $index, item => $local_item}); Network\Receive\ServerType0.pm:1060: Plugins::callHook('packet_guildMsg', { Network\Receive\ServerType0.pm:1113: Plugins::callHook('item_skill', { Network\Receive\ServerType0.pm:1164: Plugins::callHook('packet_pubMsg', { Network\Receive\ServerType0.pm:1194: Plugins::callHook('pvp_mode', { Network\Receive\ServerType0.pm:1211: Plugins::callHook('pvp_mode', { Network\Receive\ServerType0.pm:1291: Plugins::callHook('packet_skilluse', { Network\Receive\ServerType0.pm:1338: Plugins::callHook('packet_skilluse', { Network\Receive\ServerType0.pm:1423: Plugins::callHook('packet_skilluse', { Network\Receive\ServerType0.pm:1467: Plugins::callHook($hook, { Network\Receive\twRO.pm:97: Plugins::callHook($hook, { Network\Receive.pm:770: Plugins::callHook('parseMsg/recvChars', $args->{options}); Network\Receive.pm:918: Plugins::callHook('char_created', { char => $character }); Network\Receive.pm:1205: Plugins::callHook('in_game'); Network\Receive.pm:1247: Plugins::callHook('disconnected'); Network\Receive.pm:1347: Plugins::callHook('exp_gained'); Network\Receive.pm:1403: Plugins::callHook('base_level_changed', { Network\Receive.pm:1436: Plugins::callHook('zeny_change', { Network\Receive.pm:1507: Plugins::callHook('job_level_changed', { Network\Receive.pm:1625: Plugins::callHook('packet_charStats', { Network\Receive.pm:1725: Plugins::callHook('packet_pre/actor_display', $args); Network\Receive.pm:1727: Plugins::callHook('packet/actor_display', $args); Network\Receive.pm:2076: Plugins::callHook('add_player_list', $actor); Network\Receive.pm:2080: Plugins::callHook('add_monster_list', $actor); Network\Receive.pm:2084: Plugins::callHook('add_pet_list', $actor); Network\Receive.pm:2088: Plugins::callHook('add_portal_list', $actor); Network\Receive.pm:2097: Plugins::callHook('add_npc_list', $actor); Network\Receive.pm:2101: Plugins::callHook('add_slave_list', $actor); Network\Receive.pm:2104: Plugins::callHook('add_elemental_list', $actor); Network\Receive.pm:2125: Plugins::callHook('player', {player => $actor}); #backwards compatibility Network\Receive.pm:2127: Plugins::callHook('player_exist', {player => $actor}); Network\Receive.pm:2131: Plugins::callHook('npc_exist', {npc => $actor}); Network\Receive.pm:2135: Plugins::callHook('portal_exist', {portal => $actor}); Network\Receive.pm:2170: Plugins::callHook('player', {player => $actor}); #backwards compatibailty Network\Receive.pm:2172: Plugins::callHook('player_connected', {player => $actor}); Network\Receive.pm:2200: Plugins::callHook('player_moved', $actor); Network\Receive.pm:2203: Plugins::callHook('monster_moved', $actor); Network\Receive.pm:2206: Plugins::callHook('pet_moved', $actor); Network\Receive.pm:2209: Plugins::callHook('slave_moved', $actor); Network\Receive.pm:2213: Plugins::callHook('portal_moved', $actor); Network\Receive.pm:2217: Plugins::callHook('npc_moved', $actor); Network\Receive.pm:2220: Plugins::callHook('pet_moved', $actor); Network\Receive.pm:2268: Plugins::callHook('self_died'); Network\Receive.pm:2307: Plugins::callHook('monster_disappeared', {monster => $monster}); Network\Receive.pm:2343: Plugins::callHook('player_disappeared', {player => $player}); Network\Receive.pm:2363: Plugins::callHook('portal_disappeared', {portal => $portal}); Network\Receive.pm:2372: Plugins::callHook('npc_disappeared', {npc => $npc}); Network\Receive.pm:2380: Plugins::callHook('pet_disappeared', {pet => $pet}); Network\Receive.pm:2404: Plugins::callHook('slave_disappeared', {slave => $slave}); Network\Receive.pm:2420: Plugins::callHook('elemental_disappeared', {elemental => $elemental}); Network\Receive.pm:2508: Plugins::callHook('packet_attack', {sourceID => $args->{sourceID}, targetID => $args->{targetID}, msg => \$msg, dmg => $totalDamage, type => $args->{type}}); Network\Receive.pm:2573: Plugins::callHook('charNameUpdate', {player => $player}); Network\Receive.pm:2585: Plugins::callHook('mobNameUpdate', {monster => $monster}); Network\Receive.pm:2603: Plugins::callHook('npcNameUpdate', {npc => $npc}); Network\Receive.pm:2615: Plugins::callHook('petNameUpdate', {pet => $pet}); Network\Receive.pm:2626: Plugins::callHook('slaveNameUpdate', {slave => $slave}); Network\Receive.pm:2638: Plugins::callHook('elementalNameUpdate', {elemental => $elemental}); Network\Receive.pm:2665: Plugins::callHook('base_level', {name => $actor}); Network\Receive.pm:2668: Plugins::callHook('job_level', {name => $actor}); Network\Receive.pm:2929: Plugins::callHook('packet_localBroadcast', { Network\Receive.pm:3167: Plugins::callHook('show_script', { Network\Receive.pm:3298: Plugins::callHook('packet_sysMsg', { Network\Receive.pm:3450: Plugins::callHook('equipped_item', {slot => 'arrow', item => $item}); Network\Receive.pm:3502: Plugins::callHook('item_gathered',{item => $item->{name}, amount => $amount}); Network\Receive.pm:3563: Plugins::callHook('packet_item_removed', {index => $item->{binID}}); Network\Receive.pm:3575: Plugins::callHook('rental_expired', { Network\Receive.pm:3616: Plugins::callHook( Network\Receive.pm:3631: Plugins::callHook( Network\Receive.pm:3666: Plugins::callHook( Network\Receive.pm:3683: Plugins::callHook( Network\Receive.pm:3761: Plugins::callHook('packet_vender_store', { item => $item }); Network\Receive.pm:3776: Plugins::callHook('packet_vender_store2', { Network\Receive.pm:4060: Plugins::callHook('pvp_mode', { Network\Receive.pm:4104: Plugins::callHook('packet_areaSpell', { Network\Receive.pm:4151: Plugins::callHook('packet_areaSpell', { Network\Receive.pm:4200: Plugins::callHook('packet_areaSpell', { Network\Receive.pm:4472: Plugins::callHook('quest_mission_added', { Network\Receive.pm:4479: Plugins::callHook('quest_list'); Network\Receive.pm:4532: Plugins::callHook('quest_mission_added', { Network\Receive.pm:4600: Plugins::callHook('quest_mission_added', { Network\Receive.pm:4606: Plugins::callHook('quest_added', { Network\Receive.pm:4701: Plugins::callHook('quest_mission_updated', { Network\Receive.pm:4794: Plugins::callHook('makable_item_list', { Network\Receive.pm:5130: Plugins::callHook('invalid_password'); Network\Receive.pm:5158: Plugins::callHook('dial'); Network\Receive.pm:5177: Plugins::callHook('invalid_password'); Network\Receive.pm:5342: Plugins::callHook('chat_created', { Network\Receive.pm:5371: Plugins::callHook('packet_chatinfo', { Network\Receive.pm:5415: Plugins::callHook('chat_joined', { Network\Receive.pm:5482: Plugins::callHook('chat_modified', { Network\Receive.pm:5557: Plugins::callHook('chat_leave'); Network\Receive.pm:5571: Plugins::callHook('chat_removed', { Network\Receive.pm:5603: Plugins::callHook("error_deal", { type =>$args->{type}} ); Network\Receive.pm:5606: Plugins::callHook("error_deal", { type =>$args->{type}} ); Network\Receive.pm:5624: Plugins::callHook("engaged_deal", {name => $currentDeal{name}}); Network\Receive.pm:5627: Plugins::callHook("error_deal", { type =>$args->{type}} ); Network\Receive.pm:5630: Plugins::callHook("error_deal", { type =>$args->{type}} ); Network\Receive.pm:5639: Plugins::callHook("cancelled_deal"); Network\Receive.pm:5647: Plugins::callHook("complete_deal"); Network\Receive.pm:5655: Plugins::callHook("finalized_deal", {name => $currentDeal{name}}); Network\Receive.pm:5674: Plugins::callHook("incoming_deal", { Network\Receive.pm:5772: Plugins::callHook('packet_emotion', { Network\Receive.pm:5815: Plugins::callHook('disconnected') if ($net->getState() == Network::IN_GAME); Network\Receive.pm:5955: Plugins::callHook("friend_request", { Network\Receive.pm:6677: Plugins::callHook('packet_useitem', \%hook_args); Network\Receive.pm:6724: Plugins::callHook('item_appeared', { Network\Receive.pm:6754: Plugins::callHook('item_exists', { Network\Receive.pm:6973: Plugins::callHook('Network::Receive::map_changed', { Network\Receive.pm:7087: Plugins::callHook('Network::Receive::map_changed', { Network\Receive.pm:7153: Plugins::callHook('npc_autotalk', { Network\Receive.pm:7174: Plugins::callHook('npc_talk', { Network\Receive.pm:7198: Plugins::callHook('npc_talk_done', {ID => $ID}); Network\Receive.pm:7246: Plugins::callHook('npc_autotalk', { Network\Receive.pm:7277: Plugins::callHook('npc_talk_responses', { Network\Receive.pm:7571: Plugins::callHook("deal_you_added", {id => $id, item => $item}); Network\Receive.pm:7697: Plugins::callHook('add_player_list', $actor); Network\Receive.pm:7698: Plugins::callHook('player', {player => $actor}); #backwards compatibility Network\Receive.pm:7699: Plugins::callHook('player_exist', {player => $actor}); Network\Receive.pm:7712: Plugins::callHook('player_disappeared', {player => $player}); Network\Receive.pm:7907: Plugins::callHook('packet_partyJoin', { partyName => bytesToString($info->{name}) }); Network\Receive.pm:7960: Plugins::callHook('packet_partyMsg', { Network\Receive.pm:8027: Plugins::callHook("party_invite", { Network\Receive.pm:8176: Plugins::callHook('party_users_info_ready'); Network\Receive.pm:8273: Plugins::callHook('rodex_mail_list', { Network\Receive.pm:8346: Plugins::callHook('rodex_mail', { Network\Receive.pm:8360: Plugins::callHook('rodex_unread_mail'); Network\Receive.pm:8502: Plugins::callHook('rodex_mail_deleted', { Network\Receive.pm:8636: Plugins::callHook('packet_clanMsg', { Network\Receive.pm:8832: Plugins::callHook('cooking_list', { Network\Receive.pm:8947: Plugins::callHook("search_store", $universalCatalogInfo); Network\Receive.pm:8995: Plugins::callHook('packet_message_string', { Network\Receive.pm:9017: Plugins::callHook('packet_charSkills', { Network\Receive.pm:9243: Plugins::callHook ('captcha_image', $hookArgs); Network\Receive.pm:9252: Plugins::callHook ('captcha_file', $hookArgs); Network\Receive.pm:9266: Plugins::callHook ('captcha_answer', {flag => $args->{flag}}); Network\Receive.pm:9328: Plugins::callHook('packet_open_buying_store', { Network\Receive.pm:9346: Plugins::callHook('packet_buying', {ID => $ID}); Network\Receive.pm:9393: Plugins::callHook('packet_buying_store', { Network\Receive.pm:9418: Plugins::callHook('packet_buying_store2', { Network\Receive.pm:9469: Plugins::callHook('packet_buyer', {ID => $ID}); Network\Receive.pm:9489: Plugins::callHook("buyer_shop_closed"); Network\Receive.pm:9541: Plugins::callHook('packet_special_item_obtain', { Network\Receive.pm:9568: Plugins::callHook('packet_sentPM', { Network\Receive.pm:9701: Plugins::callHook('memo_fail', { "field" => $field->baseName }); Network\Receive.pm:9704: Plugins::callHook('memo_success', { "field" => $field->baseName }); Network\Receive.pm:10201: Plugins::callHook('equipped_item', {slot => $equipSlot_lut{$_}, item => $item}); Network\Receive.pm:10229: Plugins::callHook('equipped_item_sw', {slot => $equipSlot_lut{$_}, item => $item}); Network\Receive.pm:10407: Plugins::callHook('packet_item_removed', {index => $item->{binID}}); Network\Receive.pm:10765: Plugins::callHook('parseMsg/addPrivMsgUser', { Network\Receive.pm:10777: Plugins::callHook('packet_privMsg', { Network\Receive.pm:10940: Plugins::callHook('packet_selfChat', { Network\Receive.pm:11047: Plugins::callHook('is_casting', { Network\Receive.pm:11118: Plugins::callHook('packet_castCancelled', { Network\Receive.pm:11166: Plugins::callHook('unequipped_item', {slot => $equipSlot_lut{$_}, item => $item}); Network\Receive.pm:11194: Plugins::callHook('unequipped_item_sw', {slot => $equipSlot_lut{$_}, item => $item}); Network\Receive.pm:11227: Plugins::callHook('packet_vender', {ID => $ID, title => bytesToString($args->{title})}); Network\Receive.pm:11260: Plugins::callHook('packet_charSkills', { Network\Receive.pm:11325: Plugins::callHook('packet_skillfail', { Network\Receive.pm:11338: Plugins::callHook('open_store_success'); Network\Receive.pm:11342: Plugins::callHook('open_store_fail', { flag => $args->{flag} }); Network\Receive.pm:11480: Plugins::callHook("banking_opened"); Network\Receive.pm:11496: Plugins::callHook("banking_deposit_success"); Network\Receive.pm:11505: Plugins::callHook("banking_deposit_failed", {'reason' => $args->{reason}}); Network\Receive.pm:11520: Plugins::callHook("banking_withdraw_success"); Network\Receive.pm:11527: Plugins::callHook("banking_withdraw_failed", {'reason' => $args->{reason}}); Network\Receive.pm:11546: Plugins::callHook('navigate_to', $args); Network\Send\ServerType1.pm:37: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7); Network\Send\ServerType1.pm:38: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3); Network\Send\ServerType1.pm:56: Plugins::callHook('packet_pre/sendSit', \%args); Network\Send\ServerType1.pm:74: Plugins::callHook('packet_pre/sendStand', \%args); Network\Send\ServerType1.pm:151: Plugins::callHook('packet_pre/sendSkillUse', \%args); Network\Send\ServerType10.pm:39: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7); Network\Send\ServerType10.pm:40: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3); Network\Send\ServerType10.pm:59: Plugins::callHook('packet_pre/sendAttack', \%args); Network\Send\ServerType2.pm:44: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7); Network\Send\ServerType2.pm:45: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3); Network\Send\ServerType3.pm:59: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7); Network\Send\ServerType3.pm:60: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3); Network\Send\ServerType4.pm:45: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7); Network\Send\ServerType4.pm:46: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3); Network\Send\ServerType5.pm:57: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7); Network\Send\ServerType5.pm:58: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3); Network\Send\ServerType6.pm:36: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7); Network\Send\ServerType6.pm:37: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3); Network\Send\ServerType7.pm:35: Plugins::callHook('packet_pre/sendAttack', \%args); Network\Send\ServerType7.pm:55: Plugins::callHook('packet_pre/sendSit', \%args); Network\Send\ServerType7.pm:73: Plugins::callHook('packet_pre/sendStand', \%args); Network\Send\ServerType7.pm:96: Plugins::callHook('packet_pre/sendSkillUse', \%args); Network\Send\ServerType8.pm:65: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7); Network\Send\ServerType8.pm:66: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3); Network\Send\ServerType8.pm:85: Plugins::callHook('packet_pre/sendAttack', \%args); Network\Send\ServerType8.pm:103: Plugins::callHook('packet_pre/sendStand', \%args); Network\Send\ServerType8.pm:120: Plugins::callHook('packet_pre/sendSit', \%args); Network\Send\ServerType8.pm:140: Plugins::callHook('packet_pre/sendSkillUse', \%args); Network\Send\ServerType8_1.pm:54: Plugins::callHook('packet_pre/sendAttack', \%args); Network\Send\ServerType8_1.pm:141: Plugins::callHook('packet_pre/sendSit', \%args); Network\Send\ServerType8_1.pm:160: Plugins::callHook('packet_pre/sendStand', \%args); Network\Send\ServerType8_1.pm:182: Plugins::callHook('packet_pre/sendSkillUse', \%args); Network\Send\ServerType8_3.pm:48: Plugins::callHook('packet_pre/sendSit', \%args); Network\Send\ServerType8_3.pm:66: Plugins::callHook('packet_pre/sendAttack', \%args); Network\Send\ServerType8_3.pm:94: Plugins::callHook('packet_pre/sendStand', \%args); Network\Send\ServerType8_5.pm:46: Plugins::callHook('packet_pre/sendSkillUse', \%args); Network\Send\ServerType8_5.pm:180: Plugins::callHook('packet_pre/sendAttack', \%args); Network\Send.pm:245: Plugins::callHook($hookName, \%args); Network\Send.pm:487: Plugins::callHook('packet/sendMapLoaded'); Network\Send.pm:536: Plugins::callHook('packet_pre/sendAttack', \%args) if $flag == ACTION_ATTACK || $flag == ACTION_ATTACK_REPEAT; Network\Send.pm:537: Plugins::callHook('packet_pre/sendSit', \%args) if $flag == ACTION_SIT || $flag == ACTION_STAND; Network\Send.pm:819: Plugins::callHook('packet_pre/sendSkillUse', \%args); Network\XKore.pm:120: Plugins::callHook("Network::serverSend/pre", { msg => \$msg }); Network\XKore.pm:140: Plugins::callHook('Network::stateChanged'); Network\XKore.pm:243: Plugins::callHook('disconnected'); Network\XKore.pm:264: Plugins::callHook('XKore_start'); Plugins.pm:288:# Add a hook for $hookname. Whenever Kore calls Plugins::callHook('foo'), Plugins.pm:291:# See also Plugins::callHook() for information about how callback is called. Plugins.pm:307:# Plugins::callHook('AI_pre'); # <-- ai_called() is now also called. Plugins.pm:415:# void Plugins::callHook(String hookName, [argument]) Plugins.pm:420:# Adding or removing callbacks during callHook will not affect the current call. Plugins.pm:428:sub callHook { Poseidon\Client.pm:82: Plugins::callHook('Poseidon/client_authenticate', { Poseidon\QueryServer.pm:77: Plugins::callHook('Poseidon/server_authenticate', { Settings.pm:344: Plugins::callHook( usage => $data ); Settings.pm:498: Plugins::callHook('pre_load_'.$internalFilename, $pre_load); Settings.pm:546: Plugins::callHook('load_'.$internalFilename, $load); Settings.pm:551: Plugins::callHook('pos_load_'.$internalFilename, $pos_load); Settings.pm:553: Plugins::callHook('load_'.$internalFilename, $load); Settings.pm:557: Plugins::callHook('pos_load_'.$internalFilename, $pos_load); Settings.pm:599: Plugins::callHook('preloadfiles', {files => $files}); Settings.pm:603: Plugins::callHook('loadfiles', {files => $files, current => $i}); Settings.pm:608: Plugins::callHook('postloadfiles', {files => $files}); Task\MapRoute.pm:369: Plugins::callHook('Task::MapRoute::iterate::missing_portal', \%plugin_args); Task\MapRoute.pm:446: Plugins::callHook('Task::MapRoute::iterate::route_portal_near', \%plugin_args); Task\Route.pm:299: Plugins::callHook('route', {status => 'success'}); Task\Route.pm:400: Plugins::callHook('route', {status => 'success'}); Task\Route.pm:412: Plugins::callHook('route', {status => 'success'}); Task\Route.pm:455: Plugins::callHook('route', {status => 'stuck'}); test\PluginsHookTest.pm:29: Plugins::callHook('hook2'); test\PluginsHookTest.pm:31: Plugins::callHook('hook1'); test\PluginsHookTest.pm:39: Plugins::callHook('hook1'); test\PluginsHookTest.pm:41: Plugins::callHook('hook2'); test\PluginsHookTest.pm:43: Plugins::callHook('hook3'); test\PluginsHookTest.pm:51: Plugins::callHook('hook1'); test\PluginsHookTest.pm:53: Plugins::callHook('hook2'); test\PluginsHookTest.pm:61: Plugins::callHook('hook2'); test\PluginsHookTest.pm:63: Plugins::callHook('hook1'); test\PluginsHookTest.pm:71: Plugins::callHook('hook2'); test\PluginsHookTest.pm:73: Plugins::callHook('hook1'); test\PluginsHookTest.pm:93: Plugins::callHook('hook1'); test\PluginsHookTest.pm:95: Plugins::callHook('hook2'); test\PluginsHookTest.pm:102: Plugins::callHook('hook1'); test\PluginsHookTest.pm:124: Plugins::callHook( 'add_during_call' ); test\PluginsHookTest.pm:129: Plugins::callHook( 'add_during_call' ); test\PluginsHookTest.pm:134: Plugins::callHook( 'add_during_call' ); test\PluginsHookTest.pm:139: Plugins::callHook( 'add_during_call' ); test\PluginsHookTest.pm:156: Plugins::callHook( 'del_during_call' ); test\PluginsHookTest.pm:161: Plugins::callHook( 'del_during_call' ); test\PluginsHookTest.pm:166: Plugins::callHook( 'del_during_call' ); test\PluginsHookTest.pm:171: Plugins::callHook( 'del_during_call' ); test\PluginsHookTest.pm:176: Plugins::callHook( 'del_during_call' ); Utils\PathFinding.pm:103: Plugins::callHook("PathFindingReset", \%hookArgs);