aboutsummaryrefslogtreecommitdiff
path: root/src/moveuse.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/moveuse.hh')
-rw-r--r--src/moveuse.hh186
1 files changed, 186 insertions, 0 deletions
diff --git a/src/moveuse.hh b/src/moveuse.hh
index 1036142..83d0944 100644
--- a/src/moveuse.hh
+++ b/src/moveuse.hh
@@ -2,8 +2,194 @@
#define TIBIA_MOVEUSE_HH_ 1
#include "common.hh"
+#include "containers.hh"
#include "map.hh"
+#include "script.hh"
+#define MOVEUSE_MAX_PARAMETERS 5
+
+struct TPlayerData;
+
+enum MoveUseActionType: int {
+ MOVEUSE_ACTION_CREATEONMAP = 0,
+ MOVEUSE_ACTION_CREATE = 1,
+ MOVEUSE_ACTION_MONSTERONMAP = 2,
+ MOVEUSE_ACTION_MONSTER = 3,
+ MOVEUSE_ACTION_EFFECTONMAP = 4,
+ MOVEUSE_ACTION_EFFECT = 5,
+ MOVEUSE_ACTION_TEXTONMAP = 6,
+ MOVEUSE_ACTION_TEXT = 7,
+ MOVEUSE_ACTION_CHANGEONMAP = 8,
+ MOVEUSE_ACTION_CHANGE = 9,
+ MOVEUSE_ACTION_CHANGEREL = 10,
+ MOVEUSE_ACTION_SETATTRIBUTE = 11,
+ MOVEUSE_ACTION_CHANGEATTRIBUTE = 12,
+ MOVEUSE_ACTION_SETQUESTVALUE = 13,
+ MOVEUSE_ACTION_DAMAGE = 14,
+ MOVEUSE_ACTION_SETSTART = 15,
+ MOVEUSE_ACTION_WRITENAME = 16,
+ MOVEUSE_ACTION_WRITETEXT = 17,
+ MOVEUSE_ACTION_LOGOUT = 18,
+ MOVEUSE_ACTION_MOVEALLONMAP = 19,
+ MOVEUSE_ACTION_MOVEALL = 20,
+ MOVEUSE_ACTION_MOVEALLREL = 21,
+ MOVEUSE_ACTION_MOVETOPONMAP = 22,
+ MOVEUSE_ACTION_MOVETOP = 23,
+ MOVEUSE_ACTION_MOVETOPREL = 24,
+ MOVEUSE_ACTION_MOVE = 25,
+ MOVEUSE_ACTION_MOVEREL = 26,
+ MOVEUSE_ACTION_RETRIEVE = 27,
+ MOVEUSE_ACTION_DELETEALLONMAP = 28,
+ MOVEUSE_ACTION_DELETETOPONMAP = 29,
+ MOVEUSE_ACTION_DELETEONMAP = 30,
+ MOVEUSE_ACTION_DELETE = 31,
+ MOVEUSE_ACTION_DELETEININVENTORY = 32,
+ MOVEUSE_ACTION_DESCRIPTION = 33,
+ MOVEUSE_ACTION_LOADDEPOT = 34,
+ MOVEUSE_ACTION_SAVEDEPOT = 35,
+ MOVEUSE_ACTION_SENDMAIL = 36,
+ MOVEUSE_ACTION_NOP = 37,
+};
+
+enum MoveUseConditionType: int {
+ MOVEUSE_CONDITION_ISPOSITION = 0,
+ MOVEUSE_CONDITION_ISTYPE = 1,
+ MOVEUSE_CONDITION_ISCREATURE = 2,
+ MOVEUSE_CONDITION_ISPLAYER = 3,
+ MOVEUSE_CONDITION_HASFLAG = 4,
+ MOVEUSE_CONDITION_HASTYPEATTRIBUTE = 5,
+ MOVEUSE_CONDITION_HASINSTANCEATTRIBUTE = 6,
+ MOVEUSE_CONDITION_HASTEXT = 7,
+ MOVEUSE_CONDITION_ISPEACEFUL = 8,
+ MOVEUSE_CONDITION_MAYLOGOUT = 9,
+ MOVEUSE_CONDITION_HASPROFESSION = 10,
+ MOVEUSE_CONDITION_HASLEVEL = 11,
+ MOVEUSE_CONDITION_HASRIGHT = 12,
+ MOVEUSE_CONDITION_HASQUESTVALUE = 13,
+ MOVEUSE_CONDITION_TESTSKILL = 14,
+ MOVEUSE_CONDITION_COUNTOBJECTS = 15,
+ MOVEUSE_CONDITION_COUNTOBJECTSONMAP = 16,
+ MOVEUSE_CONDITION_ISOBJECTTHERE = 17,
+ MOVEUSE_CONDITION_ISCREATURETHERE = 18,
+ MOVEUSE_CONDITION_ISPLAYERTHERE = 19,
+ MOVEUSE_CONDITION_ISOBJECTININVENTORY = 20,
+ MOVEUSE_CONDITION_ISPROTECTIONZONE = 21,
+ MOVEUSE_CONDITION_ISHOUSE = 22,
+ MOVEUSE_CONDITION_ISHOUSEOWNER = 23,
+ MOVEUSE_CONDITION_ISDRESSED = 24,
+ MOVEUSE_CONDITION_RANDOM = 25,
+};
+
+enum MoveUseEventType: int {
+ MOVEUSE_EVENT_USE = 0,
+ MOVEUSE_EVENT_MULTIUSE = 1,
+ MOVEUSE_EVENT_MOVEMENT = 2,
+ MOVEUSE_EVENT_COLLISION = 3,
+ MOVEUSE_EVENT_SEPARATION = 4,
+};
+
+enum MoveUseModifierType: int {
+ MOVEUSE_MODIFIER_NORMAL = 0,
+ MOVEUSE_MODIFIER_INVERT = 1,
+ MOVEUSE_MODIFIER_TRUE = 2,
+};
+
+enum MoveUseParameterType: int {
+ MOVEUSE_PARAMETER_OBJECT = 0,
+ MOVEUSE_PARAMETER_TYPE = 1,
+ MOVEUSE_PARAMETER_FLAG = 2,
+ MOVEUSE_PARAMETER_TYPEATTRIBUTE = 3,
+ MOVEUSE_PARAMETER_INSTANCEATTRIBUTE = 4,
+ MOVEUSE_PARAMETER_COORDINATE = 5,
+ MOVEUSE_PARAMETER_VECTOR = 6,
+ MOVEUSE_PARAMETER_RIGHT = 7,
+ MOVEUSE_PARAMETER_SKILL = 8,
+ MOVEUSE_PARAMETER_NUMBER = 9,
+ MOVEUSE_PARAMETER_TEXT = 10,
+ MOVEUSE_PARAMETER_COMPARISON = 11,
+};
+
+struct TMoveUseAction {
+ MoveUseActionType Action;
+ int Parameters[MOVEUSE_MAX_PARAMETERS];
+};
+
+struct TMoveUseRule {
+ int FirstCondition;
+ int LastCondition;
+ int FirstAction;
+ int LastAction;
+};
+
+struct TMoveUseCondition {
+ MoveUseModifierType Modifier;
+ MoveUseConditionType Condition;
+ int Parameters[MOVEUSE_MAX_PARAMETERS];
+};
+
+struct TMoveUseDatabase {
+ TMoveUseDatabase(void) : Rules(1, 100, 100), NumberOfRules(0) {}
+
+ vector<TMoveUseRule> Rules;
+ int NumberOfRules;
+};
+
+struct TDelayedMail {
+ uint32 CharacterID;
+ int DepotNumber;
+ uint8 *Packet;
+ int PacketSize;
+};
+
+int PackAbsoluteCoordinate(int x, int y, int z);
+void UnpackAbsoluteCoordinate(int Packed, int *x, int *y, int *z);
+int PackRelativeCoordinate(int x, int y, int z);
+void UnpackRelativeCoordinate(int Packed, int *x, int *y, int *z);
+
+Object GetEventObject(int Nr, Object User, Object Obj1, Object Obj2, Object Temp);
+bool Compare(int Value1, int Operator, int Value2);
+bool CheckCondition(MoveUseEventType EventType, TMoveUseCondition *Condition,
+ Object User, Object Obj1, Object Obj2, Object *Temp);
+Object CreateObject(Object Con, ObjectType Type, uint32 Value);
void ChangeObject(Object Obj, ObjectType NewType, uint32 Value);
+void MoveOneObject(Object Obj, Object Con);
+void MoveAllObjects(Object Obj, Object Dest, Object Exclude, bool MoveUnmovable);
+void DeleteAllObjects(Object Obj, Object Exclude, bool DeleteUnmovable);
+void ClearField(Object Obj, Object Exclude);
+void LoadDepotBox(uint32 CreatureID, int Nr, Object Con);
+void SaveDepotBox(uint32 CreatureID, int Nr, Object Con);
+void SendMail(Object Obj);
+void SendMails(TPlayerData *PlayerData);
+void TextEffect(const char *Text, int x, int y, int z, int Radius);
+void ExecuteAction(MoveUseEventType EventType, TMoveUseAction *Action,
+ Object User, Object Obj1, Object Obj2, Object *Temp);
+bool HandleEvent(MoveUseEventType EventType, Object User, Object Obj1, Object Obj2);
+
+void UseContainer(uint32 CreatureID, Object Con, int NextContainerNr);
+void UseChest(uint32 CreatureID, Object Chest);
+void UseLiquidContainer(uint32 CreatureID, Object Obj, Object Dest);
+void UseFood(uint32 CreatureID, Object Obj);
+void UseTextObject(uint32 CreatureID, Object Obj);
+void UseAnnouncer(uint32 CreatureID, Object Obj);
+void UseKeyDoor(uint32 CreatureID, Object Key, Object Door);
+void UseNameDoor(uint32 CreatureID, Object Door);
+void UseLevelDoor(uint32 CreatureID, Object Door);
+void UseQuestDoor(uint32 CreatureID, Object Door);
+void UseWeapon(uint32 CreatureID, Object Weapon, Object Target);
+void UseChangeObject(uint32 CreatureID, Object Obj);
+void UseObject(uint32 CreatureID, Object Obj);
+void UseObjects(uint32 CreatureID, Object Obj1, Object Obj2);
+void MovementEvent(Object Obj, Object Start, Object Dest);
+void SeparationEvent(Object Obj, Object Start);
+void CollisionEvent(Object Obj, Object Dest);
+
+void LoadParameters(TReadScriptFile *Script, int *Parameters, int NumberOfParameters, ...);
+void LoadCondition(TReadScriptFile *Script, TMoveUseCondition *Condition);
+void LoadAction(TReadScriptFile *Script, TMoveUseAction *Action);
+void LoadDataBase(void);
+
+
+void InitMoveUse(void);
+void ExitMoveUse(void);
#endif //TIBIA_MOVEUSE_HH_