diff options
author | Stefan Beller <stefanbeller@googlemail.com> | 2010-12-04 17:30:14 +0100 |
---|---|---|
committer | Stefan Beller <stefanbeller@googlemail.com> | 2011-01-02 21:21:17 +0100 |
commit | 1d4add86fd5182a0501cda01da154921843ff9a2 (patch) | |
tree | 96328792f4035bfc920947b86bbd7a9e9962d742 /npc | |
parent | bb0fdcdda1750458cd4cbd64931e6d17850bf442 (diff) | |
download | serverdata-1d4add86fd5182a0501cda01da154921843ff9a2.tar.gz serverdata-1d4add86fd5182a0501cda01da154921843ff9a2.tar.bz2 serverdata-1d4add86fd5182a0501cda01da154921843ff9a2.tar.xz serverdata-1d4add86fd5182a0501cda01da154921843ff9a2.zip |
ishi improved
Ishi now checks your inventory before giving you items!
(if there is space in the inventory)
The option to get all items was added as well.
Coal was added to the list as well.
Diffstat (limited to 'npc')
-rw-r--r-- | npc/001-1_Tulimshar/rewards_master.txt | 84 |
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; } |