summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--npc/functions/estate.txt273
-rw-r--r--npc/functions/estate2.txt275
-rw-r--r--npc/scripts.conf1
3 files changed, 277 insertions, 272 deletions
diff --git a/npc/functions/estate.txt b/npc/functions/estate.txt
index aa6bb33e4..6f8c2acfd 100644
--- a/npc/functions/estate.txt
+++ b/npc/functions/estate.txt
@@ -3,7 +3,7 @@
// Jesusalva
// Description:
// Real Estate System
-// Script Helpers
+// Primary Script Helpers
// WARNING: They affect directly the real estate global variables!
// This function reduces payment accordingly
@@ -94,274 +94,3 @@ function script realestate_hasmobilia {
return false;
}
-
-
-//////////////////////////////////////////////////////////////////////////////
-///////////// Dialog Helpers
-// "If you copy-paste the same line too often, make a function for it"
-
-
-// Rent_Available Label
-// Returns true regardless of player decision
-// realestate_rent ( estate_id, price, <rent time> )
-function script realestate_rent {
- .id=getarg(0);
- .price=getarg(1);
- .time=getarg(2, 2592000); // Defaults to 30 days
-
- 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) {
- if ($ESTATE_RENTTIME[.id] > gettimetick(2)) {
- mesc l("Somebody already rented it before you!");
- close;
- }
- REAL_ESTATE_CREDITS=REAL_ESTATE_CREDITS-.price;
- if (REAL_ESTATE_CREDITS < 0) {
- Zeny+=REAL_ESTATE_CREDITS;
- REAL_ESTATE_CREDITS=0;
- }
-
- // Payment done, you can now acquire the house for a month
- $ESTATE_RENTTIME[.id]=gettimetick(2)+.time;
-
- // If you're not the previous owner
- // Remove previous owner furniture and reset room password
- if ($ESTATE_OWNER[.id] != getcharid(3)) {
- /*
- $ESTATE_MOBILIA_2[.id]=0;
- $ESTATE_MOBILIA_4[.id]=0;
- $ESTATE_MOBILIA_8[.id]=0;
- $ESTATE_MOBILIA_32[.id]=0;
- $ESTATE_MOBILIA_64[.id]=0;
- $ESTATE_MOBILIA_128[.id]=0;
- */
- $ESTATE_PASSWORD$[.id]="";
- $ESTATE_DOORBELL[.id]=false;
- }
-
- // Register your info so you can manage it
- $ESTATE_OWNER[.id]=getcharid(3);
- $ESTATE_OWNERNAME$[.id]=strcharinfo(0);
-
- 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("The door is password-protected, so your friends can enter but strangers stay outside.");
- 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);
- return true;
-}
-
-
-
-
-
-// L_Manage Label
-// Returns true regardless of player decision
-// realestate_manage ( estate_id, price, <rent time> )
-function script realestate_manage {
- .id=getarg(0);
- .price=getarg(1);
- .time=getarg(2, 2592000); // Defaults to 30 days
-
- do
- {
- mesc l("@@'s Estate", strcharinfo(0));
- mesc ".:: "+ l("Managment Menu") + " ::.";
-
- .@gp=REAL_ESTATE_CREDITS+Zeny;
- mesc l("Rent time available: @@", FuzzyTime($ESTATE_RENTTIME[.id]));
- mesc l("Total Credits and GP: @@", format_number(.@gp));
- mes "";
- mesc l("Rent Renew Price: @@ GP", format_number(.price));
- mesc l("Room password: @@", $ESTATE_PASSWORD$[.id]);
- if ($ESTATE_DOORBELL[.id])
- mesc l("Doorbell is disabled"), 1;
-
- next;
- select
- l("Leave"),
- l("Enable/disable doorbell"),
- l("Set room password"),
- rif(.@gp >= .price && $ESTATE_RENTTIME[.id] < gettimetick(2)+.time, l("Renew Rent")),
- rif($@GM_OVERRIDE, l("Destroy all mobilia")),
- rif($@GM_OVERRIDE, l("Expire rent time"));
-
- switch (@menu) {
- case 1:
- break;
- case 2:
- $ESTATE_DOORBELL[.id]=!$ESTATE_DOORBELL[.id];
- break;
- case 3:
- mesc l("(Leave the password blank to disable)");
- mesc l("Current Room password: @@", $ESTATE_PASSWORD$[.id]);
- mesc l("Input new password: ");
- input .@password$;
- mesc l("Repeat new password: ");
- input .@passwordc$;
- if (.@password$ == .@passwordc$) {
- $ESTATE_PASSWORD$[.id]=.@password$;
- mesc l("Password changed with success!"), 3;
- } else {
- mesc l("The passwords doesn't match."), 1;
- }
- break;
- case 4:
- // The check is performed before showing the menu option
- // I guess it could be hacked, but I'll probably see negative GP...
- REAL_ESTATE_CREDITS=REAL_ESTATE_CREDITS-.price;
- if (REAL_ESTATE_CREDITS < 0) {
- Zeny+=REAL_ESTATE_CREDITS;
- REAL_ESTATE_CREDITS=0;
- }
-
- // Payment done, you can now acquire the house for a month
- // If you lost the rent on the meanwhile, it'll renew
- // If you lost the rent and somebody else rented it, you lose the GP
- $ESTATE_RENTTIME[.id]+=.time;
- break;
- case 5:
- mesc l("Are you sure? This cannot be undone!"), 1;
- next;
- if (validatepin()) {
- $ESTATE_MOBILIA_2[.id]=0;
- $ESTATE_MOBILIA_4[.id]=0;
- $ESTATE_MOBILIA_8[.id]=0;
- $ESTATE_MOBILIA_32[.id]=0;
- $ESTATE_MOBILIA_64[.id]=0;
- $ESTATE_MOBILIA_128[.id]=0;
- $ESTATE_PASSWORD$[.id]="";
- $ESTATE_DOORBELL[.id]=false;
- }
- case 6:
- mesc l("Are you sure? This cannot be undone!"), 1;
- next;
- if (validatepin()) {
- $ESTATE_RENTTIME[.id]=gettimetick(2);
- }
- }
- } while (@menu != 1);
- return true;
-}
-
-
-// Piano Mobilia
-// realestate_piano ( {mapname} )
-function script realestate_piano {
- .@loc$=getarg(0, getmap());
- mesc l("Do you want to play a song?");
- mesc l("This is not saved.");
- select
- l("Nothing"),
- l("Default"),
- l("Indoors 1 (Peace)"),
- l("Indoors 2 (Dimonds)"),
- l("TMW Adventure"),
- l("Sailing Away!"),
- l("Magick Real"),
- l("The Forest"),
- l("Dragons and Toast"),
- l("Unforgiving Lands"),
- l("Arabesque (Action)"),
- l("No Chains (Tulimshar)"),
- l("School of Quirks (Candor)"),
- l("Cake Town (Hurnscald)"),
- l("Steam (LoF Village)"),
- l("Woodland Fantasy"),
- l("Birds in the Sunrise");
-
- mes "";
- .@m$="";
- switch (@menu) {
- case 1:
- return; break;
- case 2:
- .@m$="8bit_the_hero.ogg"; break;
- case 3:
- .@m$="peace.ogg"; break;
- case 4:
- .@m$="peace2.ogg"; break;
- case 5:
- .@m$="tmw_adventure.ogg"; break;
- case 6:
- .@m$="sail_away.ogg"; break;
- case 7:
- .@m$="magick_real.ogg"; break;
- case 8:
- .@m$="dariunas_forest.ogg"; break;
- case 9:
- .@m$="dragon_and_toast.ogg"; break;
- case 10:
- .@m$="Unforgiving_Lands.ogg"; break;
- case 11:
- .@m$="Arabesque.ogg"; break;
- case 12:
- .@m$="mvrasseli_nochains.ogg"; break;
- case 13:
- .@m$="school_of_quirks.ogg"; break;
- case 14:
- .@m$="caketown.ogg"; break;
- case 15:
- .@m$="steam.ogg"; break;
- case 16:
- .@m$="woodland_fantasy.ogg"; break;
- case 17:
- .@m$="tws_birds_in_the_sunrise.ogg"; break;
-
- }
- changemusic .@loc$, .@m$;
- return;
-}
-
-
-
-// Cauldron Mobilia
-// realestate_cauldron ( )
-function script realestate_cauldron {
- select
- l("Alchemy"),
- l("Crafting");
- mes "";
- if (@menu == 1) {
- do {
- mesc l("What will you brew today?");
- if (AlchemySystem(CRAFT_PLAYER))
- mesc l("Success!"), 3;
- else
- mesc l("That didn't work!"), 1;
- next;
- mesc l("Try again?");
- } while (askyesno() == ASK_YES);
- }
- else if (@menu == 2) {
- do {
- mesc l("What will you craft today?");
- if (SmithSystem(CRAFT_PLAYER))
- mesc l("Success!"), 3;
- else
- mesc l("That didn't work!"), 1;
- next;
- mesc l("Try again?");
- } while (askyesno() == ASK_YES);
- }
- return;
-}
-
diff --git a/npc/functions/estate2.txt b/npc/functions/estate2.txt
new file mode 100644
index 000000000..758a73e4b
--- /dev/null
+++ b/npc/functions/estate2.txt
@@ -0,0 +1,275 @@
+// TMW2: Moubootaur Legends scripts.
+// Author:
+// Jesusalva
+// Description:
+// Real Estate System
+// Secondary Script Helpers
+// WARNING: They affect directly the real estate global variables!
+//////////////////////////////////////////////////////////////////////////////
+///////////// Dialog Helpers
+// "If you copy-paste the same line too often, make a function for it"
+
+// Rent_Available Label
+// Returns true regardless of player decision
+// realestate_rent ( estate_id, price, <rent time> )
+function script realestate_rent {
+ .id=getarg(0);
+ .price=getarg(1);
+ .time=getarg(2, 2592000); // Defaults to 30 days
+
+ 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) {
+ if ($ESTATE_RENTTIME[.id] > gettimetick(2)) {
+ mesc l("Somebody already rented it before you!");
+ close;
+ }
+ REAL_ESTATE_CREDITS=REAL_ESTATE_CREDITS-.price;
+ if (REAL_ESTATE_CREDITS < 0) {
+ Zeny+=REAL_ESTATE_CREDITS;
+ REAL_ESTATE_CREDITS=0;
+ }
+
+ // Payment done, you can now acquire the house for a month
+ $ESTATE_RENTTIME[.id]=gettimetick(2)+.time;
+
+ // If you're not the previous owner
+ // Remove previous owner furniture and reset room password
+ if ($ESTATE_OWNER[.id] != getcharid(3)) {
+ /*
+ $ESTATE_MOBILIA_2[.id]=0;
+ $ESTATE_MOBILIA_4[.id]=0;
+ $ESTATE_MOBILIA_8[.id]=0;
+ $ESTATE_MOBILIA_32[.id]=0;
+ $ESTATE_MOBILIA_64[.id]=0;
+ $ESTATE_MOBILIA_128[.id]=0;
+ */
+ $ESTATE_PASSWORD$[.id]="";
+ $ESTATE_DOORBELL[.id]=false;
+ }
+
+ // Register your info so you can manage it
+ $ESTATE_OWNER[.id]=getcharid(3);
+ $ESTATE_OWNERNAME$[.id]=strcharinfo(0);
+
+ 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("The door is password-protected, so your friends can enter but strangers stay outside.");
+ 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);
+ return true;
+}
+
+
+
+
+
+// L_Manage Label
+// Returns true regardless of player decision
+// realestate_manage ( estate_id, price, <rent time> )
+function script realestate_manage {
+ .id=getarg(0);
+ .price=getarg(1);
+ .time=getarg(2, 2592000); // Defaults to 30 days
+
+ do
+ {
+ mesc l("@@'s Estate", strcharinfo(0));
+ mesc ".:: "+ l("Managment Menu") + " ::.";
+
+ .@gp=REAL_ESTATE_CREDITS+Zeny;
+ mesc l("Rent time available: @@", FuzzyTime($ESTATE_RENTTIME[.id]));
+ mesc l("Total Credits and GP: @@", format_number(.@gp));
+ mes "";
+ mesc l("Rent Renew Price: @@ GP", format_number(.price));
+ mesc l("Room password: @@", $ESTATE_PASSWORD$[.id]);
+ if ($ESTATE_DOORBELL[.id])
+ mesc l("Doorbell is disabled"), 1;
+
+ next;
+ select
+ l("Leave"),
+ l("Enable/disable doorbell"),
+ l("Set room password"),
+ rif(.@gp >= .price && $ESTATE_RENTTIME[.id] < gettimetick(2)+.time, l("Renew Rent")),
+ rif($@GM_OVERRIDE, l("Destroy all mobilia")),
+ rif($@GM_OVERRIDE, l("Expire rent time"));
+
+ switch (@menu) {
+ case 1:
+ break;
+ case 2:
+ $ESTATE_DOORBELL[.id]=!$ESTATE_DOORBELL[.id];
+ break;
+ case 3:
+ mesc l("(Leave the password blank to disable)");
+ mesc l("Current Room password: @@", $ESTATE_PASSWORD$[.id]);
+ mesc l("Input new password: ");
+ input .@password$;
+ mesc l("Repeat new password: ");
+ input .@passwordc$;
+ if (.@password$ == .@passwordc$) {
+ $ESTATE_PASSWORD$[.id]=.@password$;
+ mesc l("Password changed with success!"), 3;
+ } else {
+ mesc l("The passwords doesn't match."), 1;
+ }
+ break;
+ case 4:
+ // The check is performed before showing the menu option
+ // I guess it could be hacked, but I'll probably see negative GP...
+ REAL_ESTATE_CREDITS=REAL_ESTATE_CREDITS-.price;
+ if (REAL_ESTATE_CREDITS < 0) {
+ Zeny+=REAL_ESTATE_CREDITS;
+ REAL_ESTATE_CREDITS=0;
+ }
+
+ // Payment done, you can now acquire the house for a month
+ // If you lost the rent on the meanwhile, it'll renew
+ // If you lost the rent and somebody else rented it, you lose the GP
+ $ESTATE_RENTTIME[.id]+=.time;
+ break;
+ case 5:
+ mesc l("Are you sure? This cannot be undone!"), 1;
+ next;
+ if (validatepin()) {
+ $ESTATE_MOBILIA_2[.id]=0;
+ $ESTATE_MOBILIA_4[.id]=0;
+ $ESTATE_MOBILIA_8[.id]=0;
+ $ESTATE_MOBILIA_32[.id]=0;
+ $ESTATE_MOBILIA_64[.id]=0;
+ $ESTATE_MOBILIA_128[.id]=0;
+ $ESTATE_PASSWORD$[.id]="";
+ $ESTATE_DOORBELL[.id]=false;
+ }
+ case 6:
+ mesc l("Are you sure? This cannot be undone!"), 1;
+ next;
+ if (validatepin()) {
+ $ESTATE_RENTTIME[.id]=gettimetick(2);
+ }
+ }
+ } while (@menu != 1);
+ return true;
+}
+
+
+// Piano Mobilia
+// realestate_piano ( {mapname} )
+function script realestate_piano {
+ .@loc$=getarg(0, getmap());
+ mesc l("Do you want to play a song?");
+ mesc l("This is not saved.");
+ select
+ l("Nothing"),
+ l("Default"),
+ l("Indoors 1 (Peace)"),
+ l("Indoors 2 (Dimonds)"),
+ l("TMW Adventure"),
+ l("Sailing Away!"),
+ l("Magick Real"),
+ l("The Forest"),
+ l("Dragons and Toast"),
+ l("Unforgiving Lands"),
+ l("Arabesque (Action)"),
+ l("No Chains (Tulimshar)"),
+ l("School of Quirks (Candor)"),
+ l("Cake Town (Hurnscald)"),
+ l("Steam (LoF Village)"),
+ l("Woodland Fantasy"),
+ l("Birds in the Sunrise");
+
+ mes "";
+ .@m$="";
+ switch (@menu) {
+ case 1:
+ return; break;
+ case 2:
+ .@m$="8bit_the_hero.ogg"; break;
+ case 3:
+ .@m$="peace.ogg"; break;
+ case 4:
+ .@m$="peace2.ogg"; break;
+ case 5:
+ .@m$="tmw_adventure.ogg"; break;
+ case 6:
+ .@m$="sail_away.ogg"; break;
+ case 7:
+ .@m$="magick_real.ogg"; break;
+ case 8:
+ .@m$="dariunas_forest.ogg"; break;
+ case 9:
+ .@m$="dragon_and_toast.ogg"; break;
+ case 10:
+ .@m$="Unforgiving_Lands.ogg"; break;
+ case 11:
+ .@m$="Arabesque.ogg"; break;
+ case 12:
+ .@m$="mvrasseli_nochains.ogg"; break;
+ case 13:
+ .@m$="school_of_quirks.ogg"; break;
+ case 14:
+ .@m$="caketown.ogg"; break;
+ case 15:
+ .@m$="steam.ogg"; break;
+ case 16:
+ .@m$="woodland_fantasy.ogg"; break;
+ case 17:
+ .@m$="tws_birds_in_the_sunrise.ogg"; break;
+
+ }
+ changemusic .@loc$, .@m$;
+ return;
+}
+
+
+
+// Cauldron Mobilia
+// realestate_cauldron ( )
+function script realestate_cauldron {
+ select
+ l("Alchemy"),
+ l("Crafting");
+ mes "";
+ if (@menu == 1) {
+ do {
+ mesc l("What will you brew today?");
+ if (AlchemySystem(CRAFT_PLAYER))
+ mesc l("Success!"), 3;
+ else
+ mesc l("That didn't work!"), 1;
+ next;
+ mesc l("Try again?");
+ } while (askyesno() == ASK_YES);
+ }
+ else if (@menu == 2) {
+ do {
+ mesc l("What will you craft today?");
+ if (SmithSystem(CRAFT_PLAYER))
+ mesc l("Success!"), 3;
+ else
+ mesc l("That didn't work!"), 1;
+ next;
+ mesc l("Try again?");
+ } while (askyesno() == ASK_YES);
+ }
+ return;
+}
+
diff --git a/npc/scripts.conf b/npc/scripts.conf
index ab3194008..db4c0ca55 100644
--- a/npc/scripts.conf
+++ b/npc/scripts.conf
@@ -127,6 +127,7 @@
"npc/magic/zarkor.txt",
// These are to be proccessed later
+"npc/functions/estate2.txt",
"npc/functions/hub.txt",
"npc/functions/gmbot.txt",
"npc/functions/instances.txt",