// Moubootaur Legends Script
// Author:
// Jesusalva
// Description:
// Guild Facility - Contains recipe list
guilds,47,39,0 script Guild Logs NPC_NO_SPRITE,{
function showRecipe;
function calcRecipe;
.@gid=getcharid(2);
mes ".:: " + l("Alchemy Recipes") + " ::.";
showRecipe(CraftPiberriesInfusion, PiberriesInfusion,
5, Piberries, 1, Curshroom);
showRecipe(CraftSacredManaPot, SacredManaPot,
1, GoldenApple, 15, CelestiaTea);
showRecipe(CraftSacredLifePot, SacredLifePot,
1, GoldenApple, 1, ElixirOfLife);
if (getguildrole(.@gid, getcharid(3)) > GPOS_VICELEADER)
close;
do
{
select
l("Do nothing"),
rif(strcharinfo(0) == getguildmaster(.@gid), l("Raise max members"));
l("Learn Alchemy Recipes");
mes "";
switch (@menu) {
case 2:
.@cur_lv=getguildlvl(.@gid);
.@min_lv=(getskilllv(GD_EXTENSION)+1)*4;
.@price=.@min_lv*274;
if (.@cur_lv < .@min_lv)
{
mesc l("Guild Level is not enough: @@/@@", .@cur_lv, .@min_lv);
next;
break;
}
mesc l("Raising this skill will allow to recruit 4 more members.");
mesc l("The cost for Guild Vault is @@ GP.", .@price);
next;
select
rif($GUILD_BANK[.@gid] >= .@price, l("Upgrade it")),
l("Don't upgrade it");
mes "";
if (@menu == 1 && $GUILD_BANK[.@gid] >= .@price)
{
$GUILD_BANK[.@gid]-=.@price;
skill GD_EXTENSION, getskilllv(GD_EXTENSION)+1, 0;
break;
}
break;
case 3:
mes ".:: " + l("Alchemy Recipes") + " ::.";
do {
clearRecipe();
// Setup the Recipes
if (!showRecipe(CraftPiberriesInfusion, false))
calcRecipe(CraftPiberriesInfusion, 3, 10000, l("Piberries Infusion"));
if (!showRecipe(CraftSacredManaPot, false))
calcRecipe(CraftSacredManaPot, 5, 100000, l("Sacred Mana Potion"));
if (!showRecipe(CraftSacredLifePot, false))
calcRecipe(CraftSacredLifePot, 5, 100000, l("Sacred Life Potion"));
} while (!hudRecipe());
break;
}
} while (@menu != 1);
close;
// showRecipe (Craft, Bonus, Req1No, Req1Id, Req2No, Req2Id)
// Bonus must NOT be zero to display text
function showRecipe {
if ($RECIPES_ALCHEMY[getcharid(2)] & getarg(0)) {
if (getarg(1)) {
mesn l("Craft @@", getitemlink(getarg(1)));
mesc l("* @@ @@", getarg(2), getitemlink(getarg(3)));
mesc l("* @@ @@", getarg(4), getitemlink(getarg(5)));
mes "";
}
return 1;
}
return 0;
}
// calcRecipe (CraftID, GLV, GGP, TXT)
function calcRecipe {
array_push(@tmp_alcrep_id, getarg(0));
array_push(@tmp_alcrep_glv, getarg(1));
array_push(@tmp_alcrep_ggp, getarg(2));
array_push(@tmp_alcrep_txt$, getarg(3) + " - GLV "+getarg(1)+", "+getarg(2)+" GP");
return;
}
// clearRecipe ()
function clearRecipe {
deletearray(@tmp_alcrep_id);
deletearray(@tmp_alcrep_glv);
deletearray(@tmp_alcrep_ggp);
deletearray(@tmp_alcrep_txt$);
return;
}
// hudRecipe ()
function hudRecipe {
// Select
select (implode(@tmp_alcrep_txt$, ":")+":Nothing");
if (@tmp_alcrep_glv[@menu] == 0)
return 1;
if (getguildlvl(.@gid) < @tmp_alcrep_glv[@menu]) {
mesc l("Insufficient Guild Level!"), 1;
next;
return 0;
}
if ($GUILD_BANK[.@gid] < @tmp_alcrep_ggp[@menu]) {
mesc l("Insufficient Guild Money! (Guild has: @@ GP)", format_number($GUILD_BANK[.@gid])), 1;
next;
return 0;
}
// All fine, proceed
$GUILD_BANK[.@gid] -= @tmp_alcrep_ggp[@menu];
$RECIPES_ALCHEMY[getcharid(2)]=$RECIPES_ALCHEMY[getcharid(2)]|@tmp_alcrep_id[@menu];
mesc l("Skill learnt!"), 2;
next;
return 0;
}
OnInit:
.distance=2;
end;
}