00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __TRIGGER_H__
00011 #define __TRIGGER_H__
00012
00013 #include "scp_parser.h"
00014
00015 class cTriggerContext
00016 {
00017 char m_szFailMsg[50];
00018 char m_szDisableMsg[50];
00019 int m_nColor1, m_nColor2;
00020
00021 int m_nTriggerType;
00022
00023 NXWSOCKET m_socket;
00024 P_ITEM m_pi;
00025 P_ITEM m_piEnvoked;
00026 P_ITEM m_piAdded;
00027 P_ITEM m_piNeededItem;
00028 P_CHAR m_pcNpc;
00029 P_CHAR m_pcCurrChar;
00030 P_CHAR m_pcAdded;
00031 bool m_bStop;
00032 int m_nNumber;
00033 cScpIterator* m_iter;
00034
00035 void parseIfCommand(char* cmd, char* par, int comparevalue);
00036 void parseIAddCommand(char* par);
00037 void parseMaxDurCommand(P_ITEM pi, char* par);
00038 void parseDurCommand(P_ITEM pi, char* par);
00039 void parseLine(char* cmd, char* par);
00040 void init(int number, NXWSOCKET s, int trigtype, UI16 id = 0);
00041 void checkPtrsValidity();
00042
00043 public:
00044 cTriggerContext(int number, NXWSOCKET s, P_ITEM itm, int trigtype);
00045 cTriggerContext(int number, NXWSOCKET s, P_CHAR itm, int trigtype);
00046 ~cTriggerContext();
00047 void exec();
00048 };
00049
00050
00051 void triggernpc(NXWSOCKET ts,int ti, int ttype);
00052 bool checkenvoke( UI16 eid );
00053
00054 #define TRIGTYPE_DBLCLICK 1
00055 #define TRIGTYPE_WALKOVER 2
00056 #define TRIGTYPE_NPCWORD 3
00057 #define TRIGTYPE_NPCTARG 4
00058 #define TRIGTYPE_ENVOKED 64
00059 #define TRIGTYPE_NPCENVOKED 65
00060 #define TRIGTYPE_TARGET 128
00061
00063
00066 void triggerItem(NXWSOCKET ts, P_ITEM pi, int eventType);
00067 void triggerNpc(NXWSOCKET ts, P_CHAR pc, int eventType);
00068 void triggerTile(NXWSOCKET ts);
00070
00071 extern bool g_bStepInTriggers;
00072
00073 #endif //__TRIGGER_H__