// 029-1,47,97,0|script|Ishi|106 { if (MPQUEST == 0) goto L_Register; if (tvis == 0) set tvis, 1; if (Mobpt < tvis) goto L_NotEnough; setarray @Items$, "AppleCake", "Arrow", "Beer", "Boots", "InsectLeg", "CactusDrink", "CactusPotion", "Cake", "Candy", "CasinoCoins", "CherryCake", "BirdLeg", "ChocolateBar", "ChocolateCake", "CottonBoots", "CottonCloth", "CottonShirt", "CottonShorts", "FancyHat", "GreenApple", "HardSpike", "IronOre", "Lifestone", "LightBlueDye", "InsectSlime", "Milk", "Orange", "OrangeCake", "OrangeCupcake", "PinkPetal", "PileOfAsh", "PinkAntenna", "PoltergeistPowder", "RawLog", "RedApple", "RedDye", "ScorpionStinger", "SerfHat", "SmallHealingPotion", "SmallMushroom", "SnakeSkin", "SpectrePowder", "Steak", "TinyHealingPotion", "WhiteCake", "WhiteFur", "WispPowder", "YellowDye", "Coal", "ManaDust"; 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 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; set @req, @menu; set @rec, 0; goto L_Item_Loop; L_Item_Loop: if (@rec == @req || Mobpt < tvis) goto L_Item_Done; callsub S_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."; 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. set @gotocounter, 50; goto L_Give_all_loop; L_Give_all_loop: set @gotocounter, @gotocounter - 1; if (@gotocounter < 1) goto L_Give_all_next; set @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: set @gotocounter, 0; set @itemgiveerror, 0; set @pts, 0; set @dif, 0; set @i, 0; cleararray @Menu$[0], "", 10; cleararray @Items$[0], "", 10; close; ////////////////////////////////////////////////// // Subroutines ////////////////////////////////////////////////// S_prep_menu: set @pts, Mobpt; set @dif, tvis; goto L_Menu_Loop; L_Menu_Loop: 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; goto L_Menu_Done; L_Menu_Done: set @Menu$[@i], "No thanks"; return; S_give_item: set @itemgiveerror, 0; getinventorylist; if (@inventorylist_count == 100) goto S_give_noinv; if (Mobpt < tvis) goto S_give_nomobpts; set Mobpt, Mobpt - tvis; set tvis, tvis + 1; set @item$, @Items$[rand(getarraysize(@Items$))]; getitem @item$, 1; mes "You received one " + getitemlink(@item$) + "!"; return; S_give_noinv: mes "Your inventory is full!"; set @itemgiveerror, 1; return; S_give_nomobpts: mes "It looks like your Monster Points were over estimated."; set @itemgiveerror, 1; return; }