// 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;
}