aboutsummaryrefslogtreecommitdiff
path: root/src/houses.hh
diff options
context:
space:
mode:
authorfusion32 <marcopuzziello@gmail.com>2025-06-29 18:25:23 -0300
committerfusion32 <marcopuzziello@gmail.com>2025-06-29 18:25:23 -0300
commitc09d30cb144ce421ef0e1a786d2965f9abcde0aa (patch)
tree877611a3837996b9acddc5eaa8d30a9aa4424955 /src/houses.hh
parente59667ec6be0a21ce702ce077154357a1c7f7c04 (diff)
downloadgame-c09d30cb144ce421ef0e1a786d2965f9abcde0aa.tar.gz
game-c09d30cb144ce421ef0e1a786d2965f9abcde0aa.zip
`houses.cc`
Diffstat (limited to 'src/houses.hh')
-rw-r--r--src/houses.hh104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/houses.hh b/src/houses.hh
new file mode 100644
index 0000000..9326e65
--- /dev/null
+++ b/src/houses.hh
@@ -0,0 +1,104 @@
+#ifndef TIBIA_HOUSES_HH_
+#define TIBIA_HOUSES_HH_ 1
+
+#include "common.hh"
+#include "containers.hh"
+#include "cr.hh"
+#include "map.hh"
+
+#define MAX_HOUSE_GUEST_NAME 60
+
+struct THelpDepot {
+ uint32 CharacterID;
+ Object Box;
+ int DepotNr;
+};
+
+struct THouseArea {
+ uint16 ID;
+ int SQMPrice;
+ int DepotNr;
+};
+
+struct THouseGuest {
+ char Name[MAX_HOUSE_GUEST_NAME];
+};
+
+struct THouse {
+ THouse(void) : Subowner(0, 4, 5), Guest(0, 9, 10) {}
+
+ // TODO(fusion): Same as `TChannel` in `operate.hh`.
+ THouse(const THouse &Other);
+ void operator=(const THouse &Other);
+
+ // DATA
+ // =================
+ uint16 ID;
+ char Name[50];
+ char Description[500];
+ int Size;
+ int Rent;
+ int DepotNr;
+ bool NoAuction;
+ bool GuildHouse;
+ int ExitX;
+ int ExitY;
+ int ExitZ;
+ int CenterX;
+ int CenterY;
+ int CenterZ;
+ uint32 OwnerID;
+ char OwnerName[30];
+ int LastTransition;
+ int PaidUntil;
+ vector<THouseGuest> Subowner;
+ int Subowners;
+ vector<THouseGuest> Guest;
+ int Guests;
+ int Help;
+};
+
+THouseArea *GetHouseArea(uint16 ID);
+int CheckAccessRight(const char *Rule, TPlayer *Player);
+THouse *GetHouse(uint16 ID);
+bool IsOwner(uint16 HouseID, TPlayer *Player);
+bool IsSubowner(uint16 HouseID, TPlayer *Player, int TimeStamp);
+bool IsGuest(uint16 HouseID, TPlayer *Player, int TimeStamp);
+bool IsInvited(uint16 HouseID, TPlayer *Player, int TimeStamp);
+const char *GetHouseName(uint16 HouseID);
+const char *GetHouseOwner(uint16 HouseID);
+void ShowSubownerList(uint16 HouseID, TPlayer *Player, char *Buffer);
+void ShowGuestList(uint16 HouseID, TPlayer *Player, char *Buffer);
+void ChangeSubowners(uint16 HouseID, TPlayer *Player, const char *Buffer);
+void ChangeGuests(uint16 HouseID, TPlayer *Player, const char *Buffer);
+void GetExitPosition(uint16 HouseID, int *x, int *y, int *z);
+void KickGuest(uint16 HouseID, TPlayer *Guest);
+void KickGuest(uint16 HouseID, TPlayer *Host, TPlayer *Guest);
+void KickGuests(uint16 HouseID);
+bool MayOpenDoor(Object Door, TPlayer *Player);
+void ShowNameDoor(Object Door, TPlayer *Player, char *Buffer);
+void ChangeNameDoor(Object Door, TPlayer *Player, const char *Buffer);
+void CleanField(int x, int y, int z, Object Depot);
+void CleanHouse(THouse *House, TPlayerData *PlayerData);
+void ClearHouse(THouse *House);
+bool FinishAuctions(void);
+bool TransferHouses(void);
+bool EvictFreeAccounts(void);
+bool EvictDeletedCharacters(void);
+bool EvictExGuildLeaders(void);
+void CollectRent(void);
+void ProcessRent(void);
+bool StartAuctions(void);
+bool UpdateHouseOwners(void);
+void PrepareHouseCleanup(void);
+void FinishHouseCleanup(void);
+void CleanHouseField(int x, int y, int z);
+void LoadHouseAreas(void);
+void LoadHouses(void);
+void LoadOwners(void);
+void SaveOwners(void);
+void ProcessHouses(void);
+void InitHouses(void);
+void SaveHouses(void);
+
+#endif //TIBIA_HOUSES_HH_