From ec99d2b3b41046ae0ddb7de1db6ac9702d13ffbd Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Wed, 7 Aug 2019 23:18:09 -0300 Subject: Split Estate Functions in half. One will take primary functions. The later one will take auxiliar functions (dialog helpers) --- npc/functions/estate.txt | 273 +-------------------------------------------- npc/functions/estate2.txt | 275 ++++++++++++++++++++++++++++++++++++++++++++++ npc/scripts.conf | 1 + 3 files changed, 277 insertions(+), 272 deletions(-) create mode 100644 npc/functions/estate2.txt (limited to 'npc') 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, ) -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, ) -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, ) +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, ) +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", -- cgit v1.2.3-60-g2f50