// TMW2 Script
// Author:
// Jesusalva
// Description:
// Refine functions
// (No arguments)
function script refineMaster {
mesn;
mesq l("Ah, hello there, funny face! Do you want to refine items?");
mesc l("There's always some chance that THE ITEM WILL BREAK, beware!");
next;
mesn;
mesq l("First - item must be equipped.");
mesq l("If you succeed, the defense and/or attack will raise. If you fail, refine level goes down.");
//mesq l("And if the item breaks, that is definitive - no repair is possible. What to refine?");
mesq l("And if the item breaks, that's your loss. What to refine?");
next;
// Dark magic from hercules used, take care
menuint
l("Nothing, thanks"), 0,
rif(getequipisequiped(EQI_ARMOR), l("My chestplate, @@", getequipname(EQI_ARMOR))), EQI_ARMOR,
rif(getequipisequiped(EQI_HAND_R), l("My weapon, @@", getequipname(EQI_HAND_R))), EQI_HAND_R,
l("Definitive item break? Too dangerous! I don't want it!!"), 0;
if (@menuret == 0) {
mesn;
//mesq l("Wait a moment - you are naked! YOU WILL DIE IN THE FREEZE! o.o");
mesq l("Well... we'll see around!");
close;
}
.@it=@menuret;
.@item=getequipid(.@it);
/*
mes "##B" + l("Drag and drop an item from your inventory.") + "##b";
.@item = requestitem();
// Check if we received an item
if (.@item < 1) {
mesn;
mesq l("Well, no risk, no gain.");
close;
return;
}
*/
// Not all items are refinable
if (!getequipisenableref(.@item)) {
mesn;
mesq l("Well, sorry, but only weapons and body armor can be refined.");
mesq l("There may be some exceptions. Anyway, this item clearly cannot be refined.");
return;
}
// Max refining level: 10
if (getequiprefinerycnt(.@it) >= 10) {
mesn;
mesq l("This item cannot be refined further.");
return;
}
.@rlv=getequiprefinerycnt(.@it);
.@price=(.@rlv+1)*1000;
.@amount=(.@rlv/2)+1;
// required item
switch (.@rlv) {
case 0:
case 1:
case 2:
.@rg=IronIngot; break;
case 3:
case 4:
.@rg=TitaniumIngot; break;
case 5:
case 6:
.@rg=LeadIngot; break;
case 7:
case 8:
.@rg=Bloodstone; break;
default:
.@rg=BlueManaPearl; break;
}
mesn;
mesq l("This @@ is a nice stuff. I can refine it for @@ GP and @@ @@.", getitemlink(.@item), .@price, .@amount, getitemlink(.@rg));
mesc l("Success ratio is of aprox. @@ %%" % (100-(.@rlv*10)));
next;
if (askyesno() != ASK_YES)
close;
// Anti-Crazyfefe™ System
// Item is gone, 100% warranted cheater
if (countitem(.@item) < 1) {
mesn;
mesc l("All cheaters must die."), 1;
percentheal -100, -100;
close;
}
// No money
if (Zeny < .@price) {
mesn;
mesq l("Where's the money? Go away.");
close;
}
// No reagents
if (countitem(.@rg) < .@amount) {
mesn;
mesq l("Where's the reagent? You don't expect me to find it, right? Go bring them!");
close;
}
// Item removed
if (getequipisequiped(.@it) == 0) {
mesn;
mesc l("All cheaters must die."), 1;
percentheal -100, -100;
close;
}
// Item changed
if (getequiprefinerycnt(.@it) != .@rlv || getequipid(.@it) != .@item) {
mesn;
mesc l("All cheaters must die."), 1;
percentheal -100, -100;
close;
}
///// This should cover most of Crazyfefe tricks ¬.¬ I hope ¬.¬
mesn;
mesq l("HA, HA, HA! The blacksmiths from the Land of Fire are the best from the world! There's no challenge too big for us!");
mesq l("It's time to show this shiny @@ who is the boss! HAHAHAHAHAHAHAH!", getitemlink(.@item));
next;
// If you cheat somewhere along the way, the script will explode
Zeny=Zeny-.@price;
delitem .@rg, .@amount;
// Cheater should be locked for eternity.
if (getequiprefinerycnt(.@it) != .@rlv || getequipid(.@it) != .@item || getequipisequiped(.@it) == 0) {
atcommand "@jail "+strcharinfo(0);
close;
}
// Were we successful?
if (getequippercentrefinery(.@it) > rand(100)) {
successrefitem .@it;
mesn;
mesq l("HAHAHAHAH! Shiny as new, and stronger than ever! Have fun!");
next;
// Perhaps the item has broken?
} else if (rand(100) < .@rvl*2) {
failedrefitem .@it;
mesc l("*CRASH*");
next;
mesn;
mesq l("Ops... I hammered this stuff too hard... It's junk now.");
next;
mesn;
mesq l("Well, you were warned. Do you have any other stuff for me?");
next;
// Item is weakened.
} else {
downrefitem .@it, 1;
mesn;
mesq l("A masterpiece!... Whaaaat, this stuff got ##Bweaker##b??");
next;
mesn;
mesq l("Well, I did my best, but this had been so refined, that it was difficult to find my way.");
next;
mesn;
mesq l("I'm sure I could refine this again, if you bring me the payment and the reagents again.");
next;
}
return;
}