// TMW2 scripts.
// Author:
// Jesusalva
// Description:
// Ihclot is Tolchi spelled backwards
025-1,96,66,0 script Ihclot NPC_RAIJIN_FEMALE_LEGION_ARTIS,{
function apRefresh;
function getPrice;
function getPriceInt;
.@left=apRefresh();
mesn;
mesq l("I put options on items upon request, but I am very expensive! This is deducted from your tweaking quota.");
if (!.@left) {
mesc l("You currently have no Tweaking AP, so you will need to wait %02d minute(s).", 60-gettime(GETTIME_MINUTE)), 1;
close;
}
next;
mesn;
mesq l("I'll read the options from you, but the level will be paid by me, and failure rate is non-existant. I am the best. blacksmith. in. the. universe! Use %s if you need to change any options.", b("@ucp"));
csysGUI_Report();
mesc l("Please select the item you plan in tweaking."), 1;
// Request and confirm
.@id=requestitemindex();
if (!csys_Confirm(.@id))
return false;
// Find numeric ID
delinventorylist();
getinventorylist();
.@handle=@inventorylist_id[.@id];
.@lv=getiteminfo(.@handle, ITEMINFO_ELV);
// Invalid (absolutely should never happen)
if (.@handle < 1) {
mesn;
mesq l("...What? Which item? Sorry, too much smoke around here.");
next;
return;
}
// Multiple
if (countitem(.@handle) != 1) {
mesn;
mesq l("Sorry, but you have multiple %s.", getitemlink(.@handle));
next;
return;
}
// Permission NG: (Not Granted)
if (.@lv < .minLevel) {
mesn;
mesq l("Sorry, but I won't dare touch a %s.", getitemlink(.@handle));
next;
mesn;
mesq l("Depending on the case, Nicholas, in Hurnscald, can do a better job than me.");
tutmes l("The selected item is too weak. %s will only tweak items level %d or higher.", .name$, .minLevel);
next;
return;
}
// Aleady slotted
if (getitemoptionidbyindex(.@id, 0) > 0) {
mesn;
mesq l("I'm not going to try to improve this masterpiece. Look its options!");
next;
return;
}
// Calculate price
.@price=.@lv**3; // Cubic function to determine price.
mesn;
mesq l("Please select the level I should use.");
menuint
l("Abort (%d GP)", fnum(.@price*0)), 0,
getPrice(.@price, 10), 10,
getPrice(.@price, 20), 20,
getPrice(.@price, 30), 30,
getPrice(.@price, 40), 40,
getPrice(.@price, 50), 50,
getPrice(.@price, 60), 60,
getPrice(.@price, 70), 70,
getPrice(.@price, 80), 80,
getPrice(.@price, 90), 90,
getPrice(.@price, 100), 100;
mes "";
if (@menuret == 0)
close;
// Ask player to confirm
if (!csys_Confirm(.@id))
return false;
// Perform payment
Zeny-=getPriceInt(.@price, @menuret);
SMITH_TWEAKS+=1;
// Apply the bonuses
csys_ApplyPerfect(.@id, .@level);
mesn;
mesc l("Well, here you are. I hope you enjoy ^^", 3);
// Act 5+ Grace Reroll
if ($GAME_STORYLINE >= 4) {
next;
mesc l("DO YOU WANT TO REROLL THE ITEM? THIS CANNOT BE UNDONE! (free)"), 1;
next;
if (askyesno() == ASK_YES)
csys_ApplyPerfect(.@id, .@level);
}
close;
/* *************************************************************************** */
function apRefresh {
.@left=gettimeparam(GETTIME_HOUR)-SMITH_TWEAKS;
if (.@left > 6) {
.@left=6;
SMITH_TWEAKS=gettimeparam(GETTIME_HOUR)-6;
}
return .@left;
}
function getPriceInt {
.@price=getarg(0);
.@level=getarg(1);
.@final=.@price*.@level/5;
if (strcharinfo(0) == $MOST_HEROIC$)
.@final=max(1, .@final-(.@level*5000));
return .@final;
}
function getPrice {
.@price=getarg(0);
.@level=getarg(1);
.@final=getPriceInt(.@price, .@level);
if (Zeny >= .@final)
return l("Level %d (%d GP)", .@level, fnum(.@final));
else
return "";
}
OnInit:
.sex = G_OTHER;
.distance = 5;
.minLevel = 50;
end;
}