summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--npc/001-1_Tulimshar/rewards_master.txt84
1 files changed, 68 insertions, 16 deletions
diff --git a/npc/001-1_Tulimshar/rewards_master.txt b/npc/001-1_Tulimshar/rewards_master.txt
index 571fe1c8..bd55b0ae 100644
--- a/npc/001-1_Tulimshar/rewards_master.txt
+++ b/npc/001-1_Tulimshar/rewards_master.txt
@@ -5,16 +5,16 @@
if (tvis == 0) set tvis, 1;
if (Mobpt < tvis) goto L_NotEnough;
- setarray @Items$, "AppleCake", "Arrow", "Beer", "Boots", "BugLeg", "CactusDrink", "CactusPotion", "Cake", "Candy", "CasinoCoins", "CherryCake", "ChickenLeg", "ChocolateBar", "ChocolateCake", "CottonBoots", "CottonCloth", "CottonShirt", "CottonShorts", "FancyHat", "GreenApple", "HardSpike", "IronOre", "Lifestone", "LightBlueDye", "MaggotSlime", "Milk", "Orange", "OrangeCake", "OrangeCupcake", "PinkPetal", "PileOfAsh", "PinkAntenna", "PoltergeistPowder", "RawLog", "RedApple", "RedDye", "ScorpionStinger", "SerfHat", "SmallHealingPotion", "SmallMushroom", "SnakeSkin", "SpectrePowder", "Steak", "TinyHealingPotion", "WhiteCake", "WhiteFur", "WispPowder", "YellowDye";
+ setarray @Items$, "AppleCake", "Arrow", "Beer", "Boots", "BugLeg", "CactusDrink", "CactusPotion", "Cake", "Candy", "CasinoCoins", "CherryCake", "ChickenLeg", "ChocolateBar", "ChocolateCake", "CottonBoots", "CottonCloth", "CottonShirt", "CottonShorts", "FancyHat", "GreenApple", "HardSpike", "IronOre", "Lifestone", "LightBlueDye", "MaggotSlime", "Milk", "Orange", "OrangeCake", "OrangeCupcake", "PinkPetal", "PileOfAsh", "PinkAntenna", "PoltergeistPowder", "RawLog", "RedApple", "RedDye", "ScorpionStinger", "SerfHat", "SmallHealingPotion", "SmallMushroom", "SnakeSkin", "SpectrePowder", "Steak", "TinyHealingPotion", "WhiteCake", "WhiteFur", "WispPowder", "YellowDye", "Coal";
mes "[Ishi the Rewards Master]";
mes "\"Welcome! I see you have " + Mobpt + " Monster Points. Would you like to exchange some of those for items?\"";
next;
-
+
set @i, 0;
setarray @Menu$, "", "", "", "", "", "", "", "", "", "", "";
callsub SUB_prep_menu;
-
+
menu
@Menu$[0], -,
@Menu$[1], -,
@@ -26,20 +26,24 @@
@Menu$[7], -,
@Menu$[8], -,
@Menu$[9], -,
- @Menu$[10], -;
+ @Menu$[10], -,
+ @Menu$[11], -;
+ // this is for the last entry "No thanks":
if (@menu > @i) close;
-
+ // this is for the "Give all" entry:
+ if (@menu == @i) goto L_Give_all;
+
set @req, @menu;
set @rec, 0;
-
+
L_Item_Loop:
if (@rec == @req || Mobpt < tvis) goto L_Item_Done;
-
+
callsub SUB_give_item;
set @rec, @rec + 1;
goto L_Item_Loop;
-
+
L_Item_Done:
if (@rec < @req) mes "It looks like your Monster Points were over estimated.";
close;
@@ -54,6 +58,34 @@ L_NotEnough:
mes "\"You don't have enough Monster Points for a reward. You'll need to kill some more monsters first.\"";
close;
+
+
+L_Give_all:
+ // we need to count how many loop iterations are done there,
+ // since the server complains about more than 250 (70 according to Jaxad0127)
+ // gotos without interrupting next statement.
+ set @gotocounter, 50;
+
+L_Give_all_loop:
+ set @gotocounter, @gotocounter - 1;
+ if (@gotocounter < 1) goto L_Give_all_next;
+ set @itemgiveerror, 0;
+ callsub SUB_give_item;
+ if (@itemgiveerror != 0) goto L_Give_all_done;
+ goto L_Give_all_loop;
+
+L_Give_all_next:
+ next;
+ mes "[Ishi the Rewards Master]";
+ mes "\"You have brought lots of items now. You have still " + Mobpt + " monster points. Shall we continue?\"";
+ menu
+ "yes", L_Give_all,
+ "no", L_Give_all_done;
+ close;
+
+L_Give_all_done:
+ close;
+
//////////////////////////////////////////////////
// Subroutines
//////////////////////////////////////////////////
@@ -61,29 +93,49 @@ L_NotEnough:
SUB_prep_menu:
set @pts, Mobpt;
set @dif, tvis;
-
+
L_Menu_Loop:
- if (@pts < @dif || @i == 10) goto L_Menu_Done;
-
+ if (@pts < @dif || @i == 10) goto L_Menu_Check;
+
set @Menu$[@i], @i + 1;
-
+
set @i, @i + 1;
set @pts, @pts - @dif;
set @dif, @dif + 1;
-
+
goto L_Menu_Loop;
+
+L_Menu_Check:
+ // if we are able to give 10, we can enable the option to give all we can have
+ if (@i != 10) goto L_Menu_Done;
+ set @Menu$[@i], "Please give me as many as I deserve!";
+ set @i, @i + 1;
+
L_Menu_Done:
set @Menu$[@i], "No thanks";
return;
SUB_give_item:
+ set @itemgiveerror, 0;
+ getinventorylist;
+ if (@inventorylist_count == 100) goto SUB_give_noinv;
+ if (Mobpt < tvis) goto SUB_give_nomobpts;
set Mobpt, Mobpt - tvis;
set tvis, tvis + 1;
set @item$, @Items$[rand(getarraysize(@Items$))];
-
+
getitem @item$, 1;
-
+
mes "You received one " + getitemname(@item$) + "!";
-
+ return;
+
+SUB_give_noinv:
+ mes "Your inventory is full!";
+ set @itemgiveerror, 1;
+ return;
+
+SUB_give_nomobpts:
+ mes "It looks like your Monster Points were over estimated.";
+ set @itemgiveerror, 1;
return;
}