From 62818a6f6312793dd20eb47f4ab817e0ae53f0ef Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Thu, 7 Mar 2019 16:37:00 -0300 Subject: Regenerate maps now that 013-1 is fixed. Add the [Red Plush Wine] barrel. --- npc/017-3/chagashroom.txt | 156 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 npc/017-3/chagashroom.txt (limited to 'npc/017-3/chagashroom.txt') diff --git a/npc/017-3/chagashroom.txt b/npc/017-3/chagashroom.txt new file mode 100644 index 000000000..12bc44429 --- /dev/null +++ b/npc/017-3/chagashroom.txt @@ -0,0 +1,156 @@ +// TMW2 Scripts +// Author: +// Jesusalva +// Description: +// Chagashroom → Red Plush Wine +// Variables: +// REDWINE_DATE = When the wine started being done +// REDWINE_DONE = When the wine will be ready +// REDWINE_AMMO = How much Wine you're trying to make +// Success Rate is based on how much you're trying to do and how long ago that was + +017-3,25,78,0 script Wine Making Barrel NPC_NO_SPRITE,{ + goto L_Main; + // redwine_chance() + // Returns chance (0~10,000) to successfully obtain wine + // REDWINE_DONE/REDWINE_DATE is taken in account + function redwine_chance { + .@max=10000; + .@base=REDWINE_DATE;//-(REDWINE_DONE-REDWINE_DATE); + // .@c = how much time is left until completion + // .@d = original amount of time required + // .@e = Current time + .@c=REDWINE_DONE-.@base; //-gettimetick(2); + .@d=REDWINE_DATE-.@base; //-REDWINE_DONE; + .@e=gettimetick(2)-.@base; + debugmes "%d - %d - %d", .@d, .@e, .@c; + debugmes "Start - Now - Finish"; + if (.@c == 0) + return .@max; + debugmes "Ratio: %d/%d = %d", .@e, .@c, (.@e*.@max)/.@c; + return min(10000, (.@e*.@max)/.@c); + } + +L_Main: + if (!REDWINE_DATE) { + mesn; + mesc l("Do you want to make wine?"); + next; + select + l("Information"), + l("Yes"), + l("No"); + mes ""; + + switch (@menu) { + case 1: + mesc l("Produced item:"); + mesc l("@@", getitemlink(RedPlushWine)); + mes ""; + mesc l("Cost per two glass:"); + mesc l("* @@/@@ @@", countitem(SeaDrops), 1, getitemlink(SeaDrops)); + mesc l("* @@/@@ @@", countitem(Plushroom), 1, getitemlink(Plushroom)); + mesc l("* @@/@@ @@", countitem(Chagashroom), 30, getitemlink(Chagashroom)); + mesc l("* @@ Water Bottle", 1); + next; + break; + case 2: + mesc l("How many batches do you want to produce? (max. 5)"); + input .@glass_count; + if (.@glass_count < 1 || + .@glass_count > 5 || + countitem(SeaDrops) < .@glass_count || + countitem(Plushroom) < .@glass_count || + countitem(Chagashroom) < .@glass_count*30 + ) { + mesc l("Not enough ingredients or invalid amount."), 1; + break; + } + mesc l("Which water will you use?"); + mesc l("The bottom-most the water, the better the bonus."); + menuint + l("Cancel"), -1, + rif(countitem(BottleOfSewerWater) > .@glass_count, l("Sewer Water")), 0, + rif(countitem(BottleOfSeaWater) > .@glass_count, l("Sea Water")), 3600, + rif(countitem(BottleOfTonoriWater) > .@glass_count, l("Tonori Water")), 11760, + rif(countitem(BottleOfWoodlandWater) > .@glass_count, l("Woodland Water")), 12000, + rif(countitem(BottleOfDivineWater) > .@glass_count, l("Divine Water")), 21600; + mes ""; + if (@menuret < 0) + break; + switch (@menuret) { + case 0: + .@bonus=@menuret; + .@water=BottleOfSewerWater; + break; + case 3600: + .@bonus=@menuret; + .@water=BottleOfSeaWater; + break; + case 11760: + .@bonus=@menuret; + .@water=BottleOfTonoriWater; + break; + case 12000: + .@bonus=@menuret; + .@water=BottleOfWoodlandWater; + break; + case 21600: + .@bonus=@menuret; + .@water=BottleOfDivineWater; + break; + default: + mesc l("Error, invalid return code, blame Saulc"), 1; + mes "==== SCRIPT ABORTED"; + close; + } + + // Save data + delitem SeaDrops, .@glass_count; + delitem Plushroom, .@glass_count; + delitem Chagashroom, .@glass_count*30; + delitem .@water, .@glass_count; + REDWINE_AMMO=.@glass_count; + REDWINE_DATE=gettimetick(2); + REDWINE_DONE=gettimetick(2)-.@bonus+.mintime; + REDWINE_DONE+=.cuptime*REDWINE_AMMO; + break; + case 3: + close; + break; + } + goto L_Main; + } else { + mesn; + mesc l("Your request for @@ @@ are being fermented for @@.", REDWINE_AMMO, getitemlink(RedPlushWine), FuzzyTime(REDWINE_DATE)); + next; + inventoryplace RedPlushWine, REDWINE_AMMO; + mesn; + mes l("Trying to retrieve it now will have @@ % chance to be successful.", redwine_chance()/100); + mes l("Attempt to retrieve it now?"); + next; + if (askyesno() == ASK_YES) { + if (rand(1000,10000) < redwine_chance()) { + mesc l("Success!"), 3; + getitem RedPlushWine, REDWINE_AMMO*2; + } else { + mesc l("The wine wasn't ready yet and you lost it..."), 1; + } + REDWINE_DATE=0; + REDWINE_AMMO=0; + } + } + close; + +OnInit: + .sex = G_OTHER; + .distance = 4; + + // Time to make each batch + .cuptime=(60*60*6); + // Base time to make any amount of cups + .mintime=(60*60*24); + end; + +} + -- cgit v1.2.3-60-g2f50