Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using NWN.FinalFantasy.Core;
- using NWN.FinalFantasy.Core.NWNX;
- using NWN.FinalFantasy.Core.NWScript.Enum;
- using static NWN.FinalFantasy.Core.NWScript.NWScript;
- namespace NWN.FinalFantasy.Feature
- {
- public class EventRegistration
- {
- [NWNEventHandler("mod_preload")]
- public static void OnModulePreload()
- {
- Console.WriteLine("Hooking all module events.");
- HookModuleEvents();
- Console.WriteLine("Hooking all area events.");
- HookAreaEvents();
- Console.WriteLine("Hooking all NWNX events");
- HookNWNXEvents();
- }
- private static void HookModuleEvents()
- {
- var module = GetModule();
- SetEventScript(module, EventScript.Module_OnAcquireItem, "mod_acquire");
- SetEventScript(module, EventScript.Module_OnActivateItem, "mod_activate");
- SetEventScript(module, EventScript.Module_OnClientEnter, "mod_enter");
- SetEventScript(module, EventScript.Module_OnClientExit, "mod_exit");
- SetEventScript(module, EventScript.Module_OnPlayerCancelCutscene, "mod_abort_cs");
- SetEventScript(module, EventScript.Module_OnHeartbeat, "mod_heartbeat");
- SetEventScript(module, EventScript.Module_OnModuleLoad, "mod_load");
- SetEventScript(module, EventScript.Module_OnPlayerChat, "mod_chat");
- SetEventScript(module, EventScript.Module_OnPlayerDying, "mod_dying");
- SetEventScript(module, EventScript.Module_OnPlayerDeath, "mod_death");
- SetEventScript(module, EventScript.Module_OnEquipItem, "mod_equip");
- SetEventScript(module, EventScript.Module_OnPlayerLevelUp, "mod_level_up");
- SetEventScript(module, EventScript.Module_OnRespawnButtonPressed, "mod_respawn");
- SetEventScript(module, EventScript.Module_OnPlayerRest, "mod_rest");
- SetEventScript(module, EventScript.Module_OnUnequipItem, "mod_unequip");
- SetEventScript(module, EventScript.Module_OnLoseItem, "mod_unacquire");
- SetEventScript(module, EventScript.Module_OnUserDefined, "mod_user_def");
- }
- private static void HookAreaEvents()
- {
- for (var area = GetFirstArea(); GetIsObjectValid(area); area = GetNextArea())
- {
- SetEventScript(area, EventScript.Area_OnEnter, "area_enter");
- SetEventScript(area, EventScript.Area_OnExit, "area_exit");
- SetEventScript(area, EventScript.Area_OnHeartbeat, "area_heartbeat");
- SetEventScript(area, EventScript.Area_OnUserDefined, "area_user_def");
- }
- }
- private static void HookNWNXEvents()
- {
- // Associate events
- Events.SubscribeEvent("NWNX_ON_ADD_ASSOCIATE_BEFORE", "asso_add_bef");
- Events.SubscribeEvent("NWNX_ON_ADD_ASSOCIATE_AFTER", "asso_add_aft");
- Events.SubscribeEvent("NWNX_ON_REMOVE_ASSOCIATE_BEFORE", "asso_rem_bef");
- Events.SubscribeEvent("NWNX_ON_REMOVE_ASSOCIATE_AFTER", "asso_rem_aft");
- // Stealth events
- Events.SubscribeEvent("NWNX_ON_ENTER_STEALTH_BEFORE", "stlent_add_bef");
- Events.SubscribeEvent("NWNX_ON_ENTER_STEALTH_AFTER", "stlent_add_aft");
- Events.SubscribeEvent("NWNX_ON_EXIT_STEALTH_BEFORE", "stlex_add_bef");
- Events.SubscribeEvent("NWNX_ON_EXIT_STEALTH_AFTER", "stlex_add_aft");
- // Examine events
- Events.SubscribeEvent("NWNX_ON_EXAMINE_OBJECT_BEFORE", "examine_bef");
- Events.SubscribeEvent("NWNX_ON_EXAMINE_OBJECT_AFTER", "examine_aft");
- // Use Item events
- Events.SubscribeEvent("NWNX_ON_USE_ITEM_BEFORE", "useitem_bef");
- Events.SubscribeEvent("NWNX_ON_USE_ITEM_AFTER", "useitem_aft");
- // Item Container events
- Events.SubscribeEvent("NWNX_ON_ITEM_INVENTORY_OPEN_BEFORE", "inv_open_bef");
- Events.SubscribeEvent("NWNX_ON_ITEM_INVENTORY_OPEN_AFTER", "inv_open_aft");
- Events.SubscribeEvent("NWNX_ON_ITEM_INVENTORY_CLOSE_BEFORE", "inv_close_bef");
- Events.SubscribeEvent("NWNX_ON_ITEM_INVENTORY_CLOSE_AFTER", "inv_close_aft");
- // Ammunition Reload events
- Events.SubscribeEvent("NWNX_ON_ITEM_AMMO_RELOAD_BEFORE", "ammo_reload_bef");
- Events.SubscribeEvent("NWNX_ON_ITEM_AMMO_RELOAD_AFTER", "ammo_reload_aft");
- // Scroll Learn events
- Events.SubscribeEvent("NWNX_ON_ITEM_SCROLL_LEARN_BEFORE", "scroll_lrn_bef");
- Events.SubscribeEvent("NWNX_ON_ITEM_SCROLL_LEARN_AFTER", "scroll_lrn_aft");
- // Item Equip events
- Events.SubscribeEvent("NWNX_ON_ITEM_EQUIP_BEFORE", "item_eqp_bef");
- Events.SubscribeEvent("NWNX_ON_ITEM_EQUIP_AFTER", "item_eqp_aft");
- // Item Unequip events
- Events.SubscribeEvent("NWNX_ON_ITEM_UNEQUIP_BEFORE", "item_uneqp_bef");
- Events.SubscribeEvent("NWNX_ON_ITEM_UNEQUIP_AFTER", "item_uneqp_aft");
- // Item Destroy events
- Events.SubscribeEvent("NWNX_ON_ITEM_DESTROY_OBJECT_BEFORE", "item_dest_bef");
- Events.SubscribeEvent("NWNX_ON_ITEM_DESTROY_OBJECT_AFTER", "item_dest_aft");
- Events.SubscribeEvent("NWNX_ON_ITEM_DECREMENT_STACKSIZE_BEFORE", "item_dec_bef");
- Events.SubscribeEvent("NWNX_ON_ITEM_DECREMENT_STACKSIZE_AFTER", "item_dec_aft");
- // Item Use Lore to Identify events
- Events.SubscribeEvent("NWNX_ON_ITEM_USE_LORE_BEFORE", "lore_id_bef");
- Events.SubscribeEvent("NWNX_ON_ITEM_USE_LORE_AFTER", "lore_id_aft");
- // Item Pay to Identify events
- Events.SubscribeEvent("NWNX_ON_ITEM_PAY_TO_IDENTIFY_BEFORE", "pay_id_bef");
- Events.SubscribeEvent("NWNX_ON_ITEM_PAY_TO_IDENTIFY_AFTER", "pay_id_aft");
- // Item Split events
- Events.SubscribeEvent("NWNX_ON_ITEM_SPLIT_BEFORE", "item_splt_bef");
- Events.SubscribeEvent("NWNX_ON_ITEM_SPLIT_AFTER", "item_splt_aft");
- // Feat Use events
- Events.SubscribeEvent("NWNX_ON_USE_FEAT_BEFORE", "feat_use_bef");
- Events.SubscribeEvent("NWNX_ON_USE_FEAT_AFTER", "feat_use_aft");
- // todo: rest of events
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement