summaryrefslogtreecommitdiff
path: root/npc/024-13
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
committerJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
commita7c45a192268da2601cef47a4cdba987ae2327ca (patch)
treec5fb5b97db109fe7106496dd96498c475881046b /npc/024-13
downloadserverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/024-13')
-rw-r--r--npc/024-13/_import.txt4
-rw-r--r--npc/024-13/_warps.txt3
-rw-r--r--npc/024-13/manager.txt123
3 files changed, 130 insertions, 0 deletions
diff --git a/npc/024-13/_import.txt b/npc/024-13/_import.txt
new file mode 100644
index 0000000..b264542
--- /dev/null
+++ b/npc/024-13/_import.txt
@@ -0,0 +1,4 @@
+// Map 024-13: Frostia Indoors
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/024-13/_warps.txt",
+"npc/024-13/manager.txt",
diff --git a/npc/024-13/_warps.txt b/npc/024-13/_warps.txt
new file mode 100644
index 0000000..522fb3e
--- /dev/null
+++ b/npc/024-13/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 024-13: Frostia Indoors warps
+024-13,30,37,0 warp #024-13_30_37 0,0,024-1,50,55
diff --git a/npc/024-13/manager.txt b/npc/024-13/manager.txt
new file mode 100644
index 0000000..9931f4c
--- /dev/null
+++ b/npc/024-13/manager.txt
@@ -0,0 +1,123 @@
+// TMW2: Moubootaur Legends scripts.
+// Author:
+// Jesusalva
+// Description:
+// Real Estate System
+
+// ESTATE_ID → Instance ID of the Estate (required for NPCs, expire)
+// ESTATE_RENTTIME → When the rent will expire
+// ESTATE_MOBILIA_2 → Bitmask of mobilia currently purchased on Monster Collision (6) (Use on walls only)
+// ESTATE_MOBILIA_4 → Bitmask of mobilia currently purchased on Air Collision (2)
+// ESTATE_MOBILIA_8 → Bitmask of mobilia currently purchased on Water Collision (3)
+// ESTATE_MOBILIA_32 → Bitmask of mobilia currently purchased on Yellow Collision (4)
+// ESTATE_MOBILIA_64 → Bitmask of mobilia currently purchased on Normal Collision (1)
+// ESTATE_MOBILIA_128 → Bitmask of mobilia currently purchased on Player Collision (5)
+
+// REAL_ESTATE_CREDITS → Credits equivalent to GP the player have. Will be used first.
+
+// The sign is the main controller
+024-13,31,32,0 script Apartment Manager NPC_ELF,{
+ if (ESTATE_RENTTIME < gettimetick(2))
+ goto L_RentAvailable;
+
+ mesn;
+ mesq l("Your rent is valid for @@.", FuzzyTime(ESTATE_RENTTIME));
+ mesc l("Apartment rents cannot be renewed until they expire. Furniture won't be lost.");
+ close;
+
+L_RentAvailable:
+ do
+ {
+ mesc l("This Real Estate is available for rent for only @@ GP!", format_number(.price));
+ .@gp=REAL_ESTATE_CREDITS+Zeny;
+ mesc l("You currently have: @@ GP and mobiliary credits", format_number(.@gp));
+ next;
+ select
+ rif(.@gp > .price, l("Rent it! Make it mine!")),
+ l("Information"),
+ l("Don't rent it");
+
+ // You want to rent
+ if (@menu == 1) {
+ realestate_payment(.price);
+
+ // Payment done, you can now acquire the house for a month
+ ESTATE_RENTTIME=gettimetick(2)+.time;
+
+ mesc l("Rent successful for 30 days!");
+ } else if (@menu == 2) {
+ mesc l("You can rent this house to make it yours.") + " " + l("The rent lasts 30 days.");
+ mesc l("Then you'll be able to buy furniture and utility.");
+ mesc l("This is an apartment. You cannot renew until it expire, and cannot invite guests.");
+ next;
+ mesc l("Both rent and furniture are bought using money, however, there are mobiliary credits.");
+ mesc l("Mobiliary Credits is a special currency which can only be used on real estate.");
+ mesc l("It's obtained with ADMINS or by selling furniture. It is sumed to money and used first.");
+ next;
+ }
+ } while (@menu == 2);
+ close;
+
+OnInit:
+ .sex = G_OTHER;
+ .distance = 3;
+
+ .@npcId = getnpcid(.name$);
+ setunitdata(.@npcId, UDT_HEADTOP, BowlerHat);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, CreasedShirt);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes);
+ setunitdata(.@npcId, UDT_WEAPON, LeatherTrousers);
+
+ .price=5000; // Monthly rent price.
+ .time=2592000; // Defaults to 30 days
+ end;
+
+}
+
+// Door entrance
+024-13,29,28,0 script #RES_PPL NPC_HIDDEN,0,0,{
+ end;
+OnTouch:
+ if (ESTATE_RENTTIME < gettimetick(2))
+ goto L_RentAvailable;
+
+ // Warp you to your apartment if exists in memory already.
+ // Build the instance otherwise.
+
+ // Well, "checking if instance exist by mapname" is an illusion.
+ // So we try to build and if we fail, we warp the player to the instance.
+ .@ID=getcharid(0);
+ @MAP_NAME$="ples@"+str(.@ID); // Max 4 chars for map name
+
+ .@INSTID = instance_create("ples@a"+(.@ID), getcharid(3), IOT_CHAR);
+
+ // Instance already exists - .@INSTID returns "-4"
+ if (.@INSTID == -4) {
+ warp @MAP_NAME$, 33, 33;
+ end;
+ }
+
+ // Attach the map
+ .@instanceMapName$ = instance_attachmap("024-14", .@INSTID, 0, @MAP_NAME$);
+
+ // Record important stuff & load furniture
+ ESTATE_ID=.@INSTID;
+ addtimer(20, instance_npcname("Doorbell#RES_PPL", .@INSTID)+"::OnReload");
+ addtimer(70, instance_npcname("NPCs#RES_PPL", .@INSTID)+"::OnReload");
+
+ // It'll be self-destroyed eventually...
+ instance_set_timeout(1000000, 1000000, .@INSTID);
+ instance_init(.@INSTID);
+ warp @MAP_NAME$, 33, 33;
+ end;
+
+L_RentAvailable:
+ dispbottom l("You do not have booked an apartment here.");
+ close;
+
+OnInit:
+ .distance=1;
+ end;
+
+}
+