#pragma once //============================================================================================================================= /// ¾×¼Ç Æ®¸®°ÅµéÀÇ ±¸Çö Ŭ·¡½º /** @author Kim Min Wook < taiyo@webzen.com > @since 2004. 12. 29 @remark - @note - @history - */ //============================================================================================================================= #include "..\\..\\SolarTrigger\\ActionInfo.h" #include "IActionTriggerEx.h" #include #include __BEGIN_DECL_ACTION( ACTION_CHANGE_OBJECTANI ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_CHANGE_PATHTILE ) virtual VOID OnInit(); virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_CHANGE_OBJECTSTATE ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_PLAY_EVENT ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_SET_ISATTACK ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_PORTAL_PLAYER ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_SET_OBJECTTHRUST ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_APPLY_DAMAGE ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_REFLECT_DAMAGE ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_CREATE_MONSTER ) virtual VOID OnAction(); virtual BOOL OnActionUpdate(); private: INT m_iRegenCount; INT m_iMaxCreateCount; util::Timer m_RegenTimer; __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_DISPLAY_MSGBOX ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_REMOVE_ITEM ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_REWARD_PLAYER ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_CLEAR_MISSION ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_PORTAL_RANDOM ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_NPC_RANDOM_AREA_MOVE ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_ACTIVATE_TRIGGER ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_AREA_DAMAGE ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_OPERATE_SWITCH ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_OPERATE_SWITCH_EX ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_ROAD_CONNECT ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_CREATE_DIR_MONSTER ) virtual VOID OnAction(); virtual BOOL OnActionUpdate(); private: INT m_iRegenCount; INT m_iMaxCreateCount; util::Timer m_RegenTimer; __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_CHANGE_LIGHT ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_CHANGE_OBJECT_TYPE ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_QUEST_SATISFACTION ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_QUEST_GRANT ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_QUEST_SETUP ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_USE_CATEGORY ) virtual VOID OnAction(); __END_DECL_ACTION // ±âÁ¸¿¡ Á¸ÀçÇÏ´Â ¾×¼Ç Æ®¸®°Å //__BEGIN_DECL_ACTION( ACTION_CREATE_MONSTER ) //__END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_CREATE_MONSTER_GROUP ) virtual VOID OnAction(); virtual BOOL OnActionUpdate(); private: INT m_iRegenCount; INT m_iMaxCreateCount; DWORD m_dwTimeout; __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_SHOW_OR_HIDE_UNIT ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_SHOW_GUIDE_MSGBOX ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_SHOW_OR_HIDE_MSGBOX ) virtual VOID OnAction(); __END_DECL_ACTION // ¸ó½ºÅÍ ·£´ý ½ºÆù __BEGIN_DECL_ACTION( ACTION_RANDOM_MONSTER_SPAWN ) virtual VOID OnAction(); virtual BOOL OnActionUpdate(); INT GetMonsterCount(); INT GetRandomMonster(); enum { MAX_RANDOM_STEP_NUM = 50+3, MAX_MONSTER_RATIO = 100 }; typedef ReliableRatioRandomizer RANDOMIZER; private: INT m_nCurRegenCount; util::Timer m_RegenTimer; RANDOMIZER m_MonsterRandomizer; __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_TOWER_OF_TRIAL_SHOW_THE_FLOOR ) virtual VOID OnAction(); __END_DECL_ACTION ////////////////////////////////////////////////////////////////////////// // struct sSingletonValue { sSingletonValue() : m_bInit(FALSE) {} inline BOOL IsInited() { return m_bInit; } inline VOID Inited() { m_bInit = TRUE; } BOOL m_bInit; }; __BEGIN_DECL_ACTION( ACTION_RANDOM_MAP_MOVE ) virtual VOID OnInit(); virtual VOID OnAction(); ////////////////////////////////////////////////////////////////////////// public: DWORD PrepareNextCode(); private: typedef STLX_VECTOR FIELDCODE_LIST; typedef FIELDCODE_LIST::iterator FIELDCODE_LIST_IT; typedef ACTION_RANDOM_MAP_MOVE_INFO::eENUM ENUM_T; // sSingletonValue m_INIT; FIELDCODE_LIST m_List; __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_RANDOM_AREA_MOVE ) virtual VOID OnInit(); virtual VOID OnAction(); ////////////////////////////////////////////////////////////////////////// public: DWORD PrepareNextCode(); private: typedef STLX_VECTOR AREA_ID_LIST; typedef AREA_ID_LIST::iterator AREA_ID_LIST_IT; typedef ACTION_RANDOM_AREA_MOVE_INFO::eENUM ENUM_T; // sSingletonValue m_INIT; AREA_ID_LIST m_List; __END_DECL_ACTION // ////////////////////////////////////////////////////////////////////////// __BEGIN_DECL_ACTION( ACTION_REMOVE_MONSTER ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_ADD_EXP ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_MONSTER_STAT_UP_OR_DOWN ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_RANDUM_TRIGER_ON_OR_OFF ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_PLAY_MUSIC ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_DOWN_OBJETC_HP ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_CHANGE_ATTACK_KIND ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_ACTIVE_STAMP ) virtual VOID OnAction(); __END_DECL_ACTION // implemented by _NA_0_20100222_UNIT_TRIGGERS_ADD = { __BEGIN_DECL_ACTION( ACTION_ATTACK_OBJECTKIND ) typedef VOID (ACTION_ATTACK_OBJECTKIND::*ProcessFunction)(const DWORD, const eACTION_ATTACK_TYPE); ProcessFunction GetProcessFunction(const eOBJECTCODE_TYPE object_type); VOID ActionDefaultType(const DWORD object_key, const eACTION_ATTACK_TYPE attack_type); VOID ActionNPCCodeType(const DWORD object_key, const eACTION_ATTACK_TYPE attack_type); VOID ActionUnitIDType(const DWORD object_key, const eACTION_ATTACK_TYPE attack_type); VOID ActionMapNpcType(const DWORD object_key, const eACTION_ATTACK_TYPE attack_type); static VOID StatusProc( StatusManager& status_manager, const eACTION_ATTACK_TYPE attack_type); virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_ACTIVE_SKILL_OBJECTKIND ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_SHOW_MESSAGEBOX_OBJECTKIND ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_SET_ATTACK_STATE_OBJECTKIND ) static VOID StatusProc(NPC* src_npc, const eACTION_ATTACK_TYPE attack_type, const eTARGET_SEARCH_TYPE search_type, const DWORD dest_object_key); virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_DESTROY_OBJECTKIND ) virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION( ACTION_CREATE_MONSTER_LINKED_MAPOBJECT ) virtual VOID OnAction(); __END_DECL_ACTION //} end implement '_NA_0_20100222_UNIT_TRIGGERS_ADD' __BEGIN_DECL_ACTION(ACTION_CONTROL_TIMER) virtual VOID OnAction(); __END_DECL_ACTION // added by _NA_0_20100705_DOMINATION_EVENT __BEGIN_DECL_ACTION(ACTION_DO_COMMAND) virtual VOID OnAction(); __END_DECL_ACTION //_NA_0_20100817_HELLON_LAST_TRIGGER __BEGIN_DECL_ACTION(ACTION_MOVE_CONTROL) static VOID StatusProc(NPC* npc, const eACTION_MOVE_TYPE move_type); virtual VOID OnAction(); __END_DECL_ACTION __BEGIN_DECL_ACTION(ACTION_ANIMATION_CONTROL) virtual VOID OnAction(); __END_DECL_ACTION // _NA_002098_20110307_ADD_NPC_CONTROL_TRIGGER __BEGIN_DECL_ACTION(ACTION_NPC_APPLY_DAMAGE) virtual VOID OnAction(); __END_DECL_ACTION //_NA_004777_20120428_ADD_COMPLETE_COLLECTION_TRIGGER __BEGIN_DECL_ACTION(ACTION_COMPLETE_COLLECTION) virtual VOID OnAction(); __END_DECL_ACTION //_NA_000000_20130104_ADD_ACTION_TRIGGER_APPLY_HPMPSD __BEGIN_DECL_ACTION(ACTION_APPLY_HPMPSD) virtual VOID OnAction(); __END_DECL_ACTION // _NA_006654_20120422_MISSION_TRIGGER_ADD_AND_MODIFY __BEGIN_DECL_ACTION(ACTION_CHANGE_OBJECT_HP) virtual VOID OnAction(); __END_DECL_ACTION //_NA_006619_20130422_ADD_ACTION_TRIGGER_CHANGE_RADAR_MAP __BEGIN_DECL_ACTION(ACTION_CHANGE_RADAR_MAP) virtual VOID OnAction(); __END_DECL_ACTION // _NA_006654_20120422_MISSION_TRIGGER_ADD_AND_MODIFY __BEGIN_DECL_ACTION(ACTION_ATTACH_STATE_RANGE) virtual VOID OnAction(); __END_DECL_ACTION // _NA_000000_20130925_ADD_ACTION_TRIGGER_CHANGE_PLAYER_HP __BEGIN_DECL_ACTION(ACTION_CHANGE_PLAYER_HP) virtual VOID OnAction(); __END_DECL_ACTION