From cf18ce071c79ae37e14ea38943e0b1d88da70a7b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 9 Apr 2021 13:33:57 -0300 Subject: Override --- npc/029-1/rewards_master.txt | 146 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100755 npc/029-1/rewards_master.txt (limited to 'npc/029-1/rewards_master.txt') diff --git a/npc/029-1/rewards_master.txt b/npc/029-1/rewards_master.txt new file mode 100755 index 00000000..a945f479 --- /dev/null +++ b/npc/029-1/rewards_master.txt @@ -0,0 +1,146 @@ + +029-1,47,97,0 script Ishi NPC106,{ + if (MPQUEST == 0) goto L_Register; + 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", "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; + + @i = 0; + setarray @Menu$, "", "", "", "", "", "", "", "", "", "", "", ""; + callsub S_prep_menu; + + menu + @Menu$[0], L_MenuItems, + @Menu$[1], L_MenuItems, + @Menu$[2], L_MenuItems, + @Menu$[3], L_MenuItems, + @Menu$[4], L_MenuItems, + @Menu$[5], L_MenuItems, + @Menu$[6], L_MenuItems, + @Menu$[7], L_MenuItems, + @Menu$[8], L_MenuItems, + @Menu$[9], L_MenuItems, + @Menu$[10], L_MenuItems, + @Menu$[11], L_MenuItems; + +L_MenuItems: + // this is for the last entry "No thanks": + if (@menu > @i) goto L_close; + // this is for the "Give all" entry: + if (@menu == 11) goto L_Give_all; + + @req = @menu; + @rec = 0; + goto L_Item_Loop; + +L_Item_Loop: + if (@rec == @req || Mobpt < tvis) goto L_Item_Done; + + callsub S_give_item; + @rec = @rec + 1; + goto L_Item_Loop; + +L_Item_Done: + if (@rec < @req) mes "It looks like your Monster Points were over estimated."; + goto L_close; + +L_Register: + mes "[Ishi the Rewards Master]"; + mes "\"Hey, it seems like you didn't register as a quest participant yet! You can sign up with Aidan.\""; + goto L_close; + +L_NotEnough: + mes "[Ishi the Rewards Master]"; + mes "\"You don't have enough Monster Points for a reward. You'll need to kill some more monsters first.\""; + goto L_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. + @gotocounter = 50; + goto L_Give_all_loop; + +L_Give_all_loop: + @gotocounter = @gotocounter - 1; + if (@gotocounter < 1) goto L_Give_all_next; + @itemgiveerror = 0; + callsub S_give_item; + if (@itemgiveerror != 0) goto L_close; + goto L_Give_all_loop; + +L_Give_all_next: + next; + mes "[Ishi the Rewards Master]"; + mes "\"You have received a lot of items. You still have " + Mobpt + " monster points. Shall we continue?\""; + menu + "Yes", L_Give_all, + "No", L_close; + +L_close: + @gotocounter = 0; + @itemgiveerror = 0; + @pts = 0; + @dif = 0; + @i = 0; + cleararray @Menu$[0], "", 10; + cleararray @items$[0], "", 10; + close; + + +S_prep_menu: + @pts = Mobpt; + @dif = tvis; + goto L_Menu_Loop; + +L_Menu_Loop: + if (@pts < @dif || @i == 10) goto L_Menu_Check; + + @Menu$[@i] = @i + 1; + + @i = @i + 1; + @pts = @pts - @dif; + @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; + @Menu$[@i] = "Please give me as many as I deserve!"; + @i = @i + 1; + goto L_Menu_Done; + +L_Menu_Done: + @Menu$[@i] = "No thanks"; + return; + +S_give_item: + @itemgiveerror = 0; + getinventorylist; + if (@inventorylist_count == 100) goto S_give_noinv; + if (Mobpt < tvis) goto S_give_nomobpts; + Mobpt = Mobpt - tvis; + tvis = tvis + 1; + @item$ = @items$[rand(getarraysize(@items$))]; + + getitem @item$, 1; + + mes "You received one " + getitemlink(@item$) + "!"; + return; + +S_give_noinv: + mes "Your inventory is full!"; + @itemgiveerror = 1; + return; + +S_give_nomobpts: + mes "It looks like your Monster Points were over estimated."; + @itemgiveerror = 1; + return; +} -- cgit v1.2.3-60-g2f50