// Author: // Crazyfefe // Caution if you revove items from @Items$ that add void in the array, not sure how to fix that but i don't thing that matter. // note : the rare item system suck. not sure how to fix it. 001-1,88,116,0 script ishi NPC_PLAYER,{ if (getq(MPQUEST) == 0) { speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("[Ishi the Rewards Master]"), l("\"Hey, it seems like you didn't register as a quest participant yet! You can sign up with Aidan.\""); close; } if (Mobpt < BaseLevel ** 2) { speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("[Ishi the Rewards Master]"), l("\"Welcome! I see you have " + Mobpt + " Monster Points. But isn't enought for get items\""); close; } setarray @Items$, "Bread", "Croconut","Plushroom","RedApple","Beer","Candy","Orange","ChocolateBar","BugLeg","CoinBag","PinkieAntenna","Coal","SnakeSkin","CottonCloth","GrassSeeds","HardSpike","CobaltHerb","GambogeHerb","MauveHerb","IronOre","MaggotSlime","RawLog","ScorpionStinger","SilkCocoon","TreasureKey","FluffyFur","EmptyBottle","RustyKnife","TolchiArrow","Arrow","IronArrow","BlueCottonDye"; .Item1$ = "BrimedHat"; .Item2$ = "IronIngot"; .Item3$ = "BronzeGift"; // should be a event. speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("[Ishi the Rewards Master]"), l("\"Welcome! I see you have " + Mobpt + " Monster Points. Would you like to exchange some of those for items?\""); next; do { select rif(Mobpt >= BaseLevel ** 2,l("1")), rif(Mobpt >= (BaseLevel ** 2)*2,l("2")), rif(Mobpt >= (BaseLevel ** 2)*3,l("3")), rif(Mobpt >= (BaseLevel ** 2)*4,l("4")), rif(Mobpt >= (BaseLevel ** 2)*5,l("5")), rif(Mobpt >= (BaseLevel ** 2)*6,l("6")), rif(Mobpt >= (BaseLevel ** 2)*7,l("7")), rif(Mobpt >= (BaseLevel ** 2)*8,l("8")), rif(Mobpt >= (BaseLevel ** 2)*9,l("9")), rif(Mobpt >= (BaseLevel ** 2)*10,l("10")), rif(Mobpt >= (BaseLevel ** 2)*11,l("Gimme as many as I deserve!")), l("Sorry, I have to go now."); switch (@menu) { case 1 : @var = 1; goto L_Items; break; case 2 : @var = 2; goto L_Items; break; case 3 : @var = 3; goto L_Items; break; case 4 : @var = 4; goto L_Items; break; case 5 : @var = 5; goto L_Items; break; case 6 : @var = 6; goto L_Items; break; case 7 : @var = 7; goto L_Items; break; case 8 : @var = 8; goto L_Items; break; case 9 : @var = 9; goto L_Items; break; case 10 : @var = 10; goto L_Items; break; case 11 : goto L_Give_all; break; default : goto L_Close; break; } } while (@menu != 12); closedialog; goodbye; close; L_Close: @var =0; @reward =""; close; L_LuckyReward1: mesq l("Wow !"); next; mesq l("I don't believe."); next; mesq l("you get lucky and got a @@", getitemlink(.Item1$)); next; mesq l("Come back later for more items i' m so suprised"); set Mobpt, Mobpt - BaseLevel ** 2; getitem .Item1$,1; close; L_LuckyReward2: mesq l("Wow !"); next; mesq l("I don't believe."); next; mesq l("you get lucky and got a @@", getitemlink(.Item2$)); next; mesq l("Come back later for more items i' m so suprised"); set Mobpt, Mobpt - BaseLevel ** 2; getitem .Item2$,1; close; L_LuckyReward3: mesq l("Wow !"); next; mesq l("I don't believe."); next; mesq l("you get lucky and got a @@", getitemlink(.Item3$)); next; mesq l("Come back later for more items i' m so suprised"); set Mobpt, Mobpt - BaseLevel ** 2; getitem .Item3$,1; close; L_Items: for (.@i = 0; .@i < @var; .@i ++) { getinventorylist; .@weight = checkweight(@Items$,1); if (.@weight == 0) goto L_NoPlaceWeight; if (@inventorylist_count == 100) goto L_NoPlace; .@lucky = rand(10000); // 0 - 99999 if (.@lucky >= 0 && .@lucky <= 5000) goto L_LuckyReward1; if (.@lucky >= 1 && .@lucky <= 4) goto L_LuckyReward2; if (.@lucky >= 5 && .@lucky <= 10) goto L_LuckyReward3; set .@reward$, @Items$[rand(getarraysize(@Items$))]; mesq l("You received one @@ !", getitemlink(.@reward$)); set Mobpt, Mobpt - BaseLevel ** 2; getitem .@reward$,1; } close; L_Continue: mesq l("You still have @@ Monster Points ! Do you want more items ?", Mobpt); do { select l("Yes"), l("No"); switch (@menu) { case 1: goto L_Give_all; break; case 2: goto L_Close; break; } } while (@menu != 2); L_NoPlace : mesq l("You seem to run out of place, you should go to the storage."); close; L_NoPlaceWeight : mesq l("You can't carry more items, you should go to the storage."); close; L_Give_all: @var = Mobpt / BaseLevel ** 2; if (@var > 50) // limite for avoid lag server @var = 50; for (.@i = 0; .@i < @var; .@i ++) { getinventorylist; .@weight = checkweight(@Items$,1); if (.@weight == 0) goto L_NoPlaceWeight; if (@inventorylist_count == 100) goto L_NoPlace; .@lucky = rand(10000); // 0 - 99999 if (.@lucky == 0) goto L_LuckyReward1; if (.@lucky >= 1 && .@lucky <= 4) goto L_LuckyReward2; if (.@lucky >= 5 && .@lucky <= 10) goto L_LuckyReward3; set .@reward$, @Items$[rand(getarraysize(@Items$))]; mesq l("You received one @@ !", getitemlink(.@reward$)); set Mobpt, Mobpt - BaseLevel ** 2; getitem .@reward$,1; } if (Mobpt / BaseLevel ** 2 > 0) goto L_Continue; close; OnInit: .sex = G_MALE; .distance = 3; end; }