Jump to content

  •  

Photo

How to make equipment +10 above won't drop and stay +10 if fail


  • Please log in to reply
No replies to this topic

#1 fallen0519

fallen0519

    Newbie

  • Members
  • Pip
  • 8 posts
  • Github:Aika

Posted 25 February 2017 - 05:13 PM

//================= Hercules Script =======================================
//=       _   _                     _
//=      | | | |                   | |
//=      | |_| | ___ _ __ ___ _   _| | ___  ___
//=      |  _  |/ _ \ '__/ __| | | | |/ _ \/ __|
//=      | | | |  __/ | | (__| |_| | |  __/\__ \
//=      \_| |_/\___|_|  \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright © 2012-2015  Hercules Dev Team
//= Copyright ©  rAthena Dev Team
//= Copyright ©  Euphy
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program.  If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
//= Renewal Refining NPCs
//================= Description ===========================================
//= Renewal-specific refining NPCs and material merchants.
//================= Current Version =======================================
//= 1.3
//=========================================================================

//== +11 and above Refiners ================================
prt_in,90,72,5	script	Vestri#prt	4_M_DWARF,{
	callfunc "refinenew","Vestri",0;
	end;
}
morocc_in,64,41,5	script	Vestri#moc	4_M_DWARF,{
	callfunc "refinenew","Vestri",0;
	end;
}
payon_in01,18,132,3	script	Vestri#pay	4_M_DWARF,{
	callfunc "refinenew","Vestri",0;
	end;
}

//== +11 and above Refiner Function ========================
// To allow auto safe refining/multiple refining set the second argument to '1'
// in the function call.
// If you enable this function, be sure to edit the value of .@safe to the max
// safe refine in refine_db.txt as well.
//
// On official servers, if an item is unsuccessfully refined it will break at a
// 20% rate and downgrade at an 80% rate.
function	script	refinenew	{
	disable_items;
	mes "["+ getarg(0) +"]";
	mes "I am the best Armsmith ever!";
	mes "I don't refine normal, boring items.";
	mes "I only refine items that are Level 10 or higher.";
	next;
	mes "["+ getarg(0) +"]";
	mes "Anyway, you may use my services if your item is Level 10 or higher.";
	mes "What do you want me to refine?";
	next;

	setarray .@position$[1],"Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
	.@menu$ = "";
	for(.@i = 1; .@i<=10; ++.@i) {
		if (getequipisequiped(.@i)) {
			.@menu$ += .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]";
			.@equipped = 1;
		}
		.@menu$ += ":";
	}
	if (.@equipped == 0) {
		mes "[" + getarg(0) + "]";
		mes "I don't think I can refine any items you have...";
		close;
	}
	.@part = select(.@menu$);

	if (!getequipisequiped(.@part)) { //custom check
		mes "[" + getarg(0) + "]";
		mes "You're not wearing";
		mes "anything there that";
		mes "I can refine.";
		emotion e_an;
		close;
	}
	if (!getequipisenableref(.@part)) {
		mes "[" + getarg(0) + "]";
		mes "I don't think I can";
		mes "refine this item at all...";
		close;
	}
	if (getequiprefinerycnt(.@part) < 10) {
		mes "["+ getarg(0) +"]";
		mes "I said I don't work with items that are lower than Level 10.";
		close;
	}
	if (getequiprefinerycnt(.@part) >= 20) { //custom check
		mes "["+ getarg(0) +"]";
		mes "I can't refine this";
		mes "any more. This is as";
		mes "refined as it gets!";
		close;
	}
	.@refineitemid = getequipid(.@part); // save id of the item
	.@refinerycnt = getequiprefinerycnt(.@part); //save refinery count
	if ((getequipweaponlv(.@part) >= 1) && (getequipweaponlv(.@part) <= 4)) {
		.@type$ = "weapon";
		.@material = 6224; //Bradium
		.@price = 100000;
		switch(getequipweaponlv(.@part)) {
			case 1: .@safe = 10; break;
			case 2: .@safe = 10; break;
			case 3: .@safe = 10; break;
			case 4: .@safe = 10; break;
		}
		mes "["+ getarg(0) +"]";
		mes "Hmm a weapon, is that ok?";
		mes "If you want to refine this weapon,";
		mes "I will need 1 ^003366Bradium^000000 and 100,000 zeny.";
	} else {
		.@type$ = "armor";
		.@material = 6223; //Carnium
		.@price = 100000;
		.@safe = 10;
		mes "["+ getarg(0) +"]";
		mes "Hmm an armor, is that ok?";
		mes "If you want to refine this armor,";
		mes "I will need 1 ^003366Carnium^000000 and 100,000 zeny.";
	}
	mes "Are you sure you want to continue?";
	next;
	if(select("Yes", "No") == 2){
		mes "["+ getarg(0) +"]";
		mes "Hm... if you mind... never mind...";
		close;
	}
	if (getarg(1) != 1) {
		if (getequippercentrefinery(.@part) < 100) {
			mes "["+ getarg(0) +"]";
			mes "This "+.@type$+" already has been refined serveral times.";
			mes "It could be downgraded if I try again.";
			mes "It won't break for sure.";
			next;
			mes "["+ getarg(0) +"]";
			mes "You could be ^FF0000lowering the upgrade level^000000 of the "+.@type$+" by -2 or -3,";
			mes "but it won't breaks, you won't lose ^FF0000any cards^000000 or special properties added to it.";
			next;
			mes "["+ getarg(0) +"]";
			mes "Do you still want me to refine it?";
			mes "I think I have given you enough warning.";
			next;
			if(select("Yes.", "No.") == 2) {
				mes "["+ getarg(0) +"]";
				mes "Well, no challenge is one way to go...";
				mes "No risk... that could be wise.";
				close;
			}
		}
		if (countitem(.@material) < 1 || Zeny < .@price) {
			mes "["+ getarg(0) +"]";
			mes "Hm. You don't seem to have enough money or "+getitemname(.@material)+".";
			mes "Please come back when you have them.";
			close;
		}
		Zeny -= .@price;
		delitem .@material,1;

		//custom checks
		if (getequipisequiped(.@part) == 0) { // hacker has removed the item (not changed, why?)
			mes "[" + getarg(0) + "]";
			mes "Look here... you don't have any items on...";
			close;
		}
		if (getequiprefinerycnt(.@part) != .@refinerycnt || getequipid(.@part) != .@refineitemid) { // hacker has changed the item
			mes "[" + getarg(0) + "]";
			emotion e_an;
			mes "Wait a second...";
			mes "Do you think I'm stupid?!";
			mes "You switched the item while I wasn't looking! Get out of here!";
			close;
		}

		if (getequippercentrefinery(.@part) > rand(100)) {
			mes "Clang! Clang! Clang! Clang!";
			successrefitem .@part;
			if ( getequiprefinerycnt( .@part ) > 10 ) announce strcharinfo( 0 ) + " refine his/her item for +" + getequiprefinerycnt( .@part ) + " now!", 0;
			next;
			emotion e_no1;
			mes "["+ getarg(0) +"]";
			mes "Good! Succes!!!";
			mes "I am the best Armsmith.";
			close;
		} else {
			if (rand(100) < 80) {
				mes "["+ getarg(0) +"]";
				mes "Clang! Clang! Clang! Clang!";
				downrefitem .@part, 2; // Failed refine attempts decrease the item's refine level by 3
				next;
				emotion (!rand(5))?e_cash:e_omg;
				mes "["+ getarg(0) +"]";
				mes "Ahhh!!!";
				next;
				mes "["+ getarg(0) +"]";
				mes "Oh my god!";
				mes "The upgrade level has dropped...";
			} else {
				mes "["+ getarg(0) +"]";
				mes "Clang! Clang! Clang!";
				downrefitem .@part, 3;
				next;
				emotion (!rand(5))?e_cash:e_omg;
				mes "["+ getarg(0) +"]";
				mes "Hmmm!";
				next;
				mes "["+ getarg(0) +"]";
				mes "Oh my! I've failed to refine stuff...";
				mes "I didn't mean it!";
			}
			mes "I could have made a mistake even though I am the best Armsmith ever.";
			mes "It just wasn't meant to be.";
			next;
			mes "["+ getarg(0) +"]";
			mes "I will do a better job next time! Don't worry!";
			close;
		}
	}
//- New +11 and above Refining Functions -
	if (getequiprefinerycnt(.@part) < .@safe) {
		mes "[" + getarg(0) + "]";
		mes "I can refine this to the safe limit or a desired number of times. It's your choice.";
		next;
		.@menu2 = select("To the safe limit, please.","I'll decide how many times.","I've changed my mind...");
	} else
		.@menu2 = 2;
	switch(.@menu2){
	case 1:
		.@refinecnt = .@safe - getequiprefinerycnt(.@part);
		break;
	case 2:
		mes "[" + getarg(0) + "]";
		mes "How many times would you like me to refine your item?";
		next;
		input .@refinecnt;
		.@refinecheck = .@refinecnt + getequiprefinerycnt(.@part);
		if (.@refinecnt < 1 || .@refinecheck > 20) {
			mes "[" + getarg(0) + "]";
			mes "I can't refine this item that many times.";
			close;
		}
		if (.@refinecheck > .@safe) {
			.@refinecheck -= .@safe;
			mes "[" + getarg(0) + "]";
			mes "This will try to refine the equipment " + .@refinecheck + " times past the safe limit. Your equipment may be destroyed... is that ok?";
			next;
			if(select("Yes...","No...") == 2){
				mes "[" + getarg(0) + "]";
				mes "You said so... So be it.";
				close;
			}
		}
		break;
	case 3:
		mes "[" + getarg(0) + "]";
		mes "You said so... So be it.";
		close;
	}
	.@fullprice = .@price * .@refinecnt;
	mes "[" + getarg(0) + "]";
	mes "That will cost you " + .@refinecnt + " " + getitemname(.@material) + " and " + .@fullprice + " Zeny. Is that ok?";
	next;
	if(select("Yes", "No...") == 2){
		mes "[" + getarg(0) + "]";
		mes "You said so... So be it.";
		close;
	}
	if (countitem(.@material) < .@refinecnt || Zeny < .@fullprice) {
		mes "[" + getarg(0) + "]";
		mes "Hm. You don't seem to have enough money or "+getitemname(.@material)+".";
		mes "Please come back when you have them.";
		close;
	}
	Zeny -= .@fullprice;
	delitem .@material,.@refinecnt;
	while(.@refinecnt){
		if (getequipisequiped(.@part) == 0) {
			mes "[" + getarg(0) + "]";
			mes "Look here... you don't have any items on...";
			close;
		}
		if (getequipid(.@part) != .@refineitemid || (.@menu2 == 1 && getequippercentrefinery(.@part) < 100)) {
			mes "[" + getarg(0) + "]";
			mes "Clang... No, but did you imagine I could be so stupid?!";
			mes "You changed it...";
			mes "Get out before I stun you with my Hammer!!";
			close;
		}
		if (getequippercentrefinery(.@part) > rand(100)) {
			mes "Clang! Clang! Clang! Clang!";
			successrefitem .@part;
			if ( getequiprefinerycnt( .@part ) > 10 ) announce strcharinfo( 0 ) + " refine his/her item for +" + getequiprefinerycnt( .@part ) + " now!", 0;
			--.@refinecnt;
			next;
		} else {
			if (rand(100) < 80) {
				mes "["+ getarg(0) +"]";
				mes "Clang! Clang! Clang! Clang!";
				downrefitem .@part, 2; // Failed refine attempts decrease the item's refine level by 3
				next;
				emotion (!rand(5))?e_cash:e_omg;
				mes "["+ getarg(0) +"]";
				mes "Ahhh!!!";
				next;
				mes "["+ getarg(0) +"]";
				mes "Oh my god!";
				mes "The upgrade level has dropped...";
			} else {
				mes "["+ getarg(0) +"]";
				mes "Clang! Clang! Clang!";
				downrefitem .@part, 3;
				next;
				emotion (!rand(5))?e_cash:e_omg;
				mes "["+ getarg(0) +"]";
				mes "Hmmm!";
				next;
				mes "["+ getarg(0) +"]";
				mes "Oh my! I've failed to refine stuff...";
				mes "I didn't mean it!";
			}
			mes "I could have made a mistake even though I am the best Armsmith ever.";
			mes "It just wasn't meant to be.";
			next;
			mes "["+ getarg(0) +"]";
			mes "I will do a better job next time! Don't worry!";
			close;
		}
	}
	emotion e_no1;
	mes "["+ getarg(0) +"]";
	mes "Good! Succes!!!";
	mes "I am the best Blacksmith.";
	close;
}

//== Ori/Elu to Carnium/Bradium Refiners ===================
-	script	Austri#ref	FAKE_NPC,{
	if (checkweight(Knife,1) == 0) {
		mes "- Wait a minute !! -";
		mes "- Currently you're carrying -";
		mes "- too many items with you. -";
		mes "- Please try again -";
		mes "- after you lose some weight. -";
		close;
	}
	mes "[Austri]";
	mes "If you bring me 3";
	mes "Oridecon or Elunium";
	mes "I can exchange them for";
	mes "Bradium or Carnium.";
	mes "Just give me 50,000z.";
	next;
	switch(select("Oridecon to Bradium.", "Elunium to Carnium.", "Purified Bradium to Carnium.", "No thanks.")) {
	case 1:
		setarray .@i[0],984,3,6224;  //Oridecon -> Bradium
		break;
	case 2:
		setarray .@i[0],985,3,6223;  //Elunium -> Carnium
		break;
	case 3:
		setarray .@i[0],6090,1,6223; //Purified_Bradium -> Carnium
		break;
	case 4:
		mes "[Austri]";
		mes "Hmm...";
		close;
	}
	if (countitem(.@i[0]) >= .@i[1] && Zeny >= 50000) {
		delitem .@i[0],.@i[1];
		Zeny -= 50000;
		getitem .@i[2],1;
		mes "[Austri]";
		if (.@i[0] == 6090) {
			mes "Refining with Refined Bradium";
			mes "can be a little expensive.";
			mes "I can exchange it for some Carnium.";
		} else
			mes "Ok! Here's your "+getitemname(.@i[2])+".";
		mes "Take it and use it well.";
		close;
	}
	mes "[Austri]";
	mes "You better not be trying";
	mes "to cheat me because you";
	mes "don't have enough money";
	mes "or "+getitemname(.@i[0])+".";
	close;
}
prt_in,85,71,5	duplicate(Austri#ref)	Austri#prt	4_M_DWARF
payon_in01,14,125,5	duplicate(Austri#ref)	Austri#pay	4_M_DWARF
morocc_in,60,38,5	duplicate(Austri#ref)	Austri#moc	4_M_DWARF

//== Malangdo Refiner ======================================
malangdo,224,172,6	script	Clink#mal_normal	4_CAT_SAILOR1,{
	disable_items;
	mes "[Clink]";
	mes "My cool dad Holink said I have the world's greatest refine hammer!!";
	mes "Meow Meow~";
	mes "Who do you think I am?";
	mes "Yes!!! You!! You want to refine?";
	next;
	setarray .@position$[1],"Head","Body","Left Hand","Right Hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
	.@menu$ = "";
	for(.@i = 1; .@i<=10; ++.@i)
		.@menu$ += ((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Empty]")+":";
	.@part = select(.@menu$);
	if (!getequipisequiped(.@part)) {
		mes "[Clink]";
		switch(.@part) {
		case 1:
			mes "Dad said. There's no cure for stupidity...";
			break;
		case 2:
			mes "There's nothing to see here!!";
			break;
		case 3:
			mes "What an arrogant left hand this is!";
			break;
		case 4:
			mes "What an arrogant right hand this is!";
			break;
		case 5:
			mes "Get that dirty thing off my face!!";
			break;
		case 6:
			mes "Kyaong~! Do not provoke me.";
			break;
		case 7:
		case 8:
			mes "Where is the accessory?";
			break;
		case 9:
		case 10:
			mes "Are you talking about the other head part?";
			break;
		}
		close;
	}
	if (!getequipisenableref(.@part)) {
		mes "[Clink]";
		mes "This can't be refined!!";
		close;
	}
	if (getequiprefinerycnt(.@part) >= 10) {
		mes "[Clink]";
		mes "Perfect refining. Did I do this for you?";
		close;
	}
	mes "[Clink]";
	switch(getequipweaponlv(.@part)) {
	default:
	case 0: // Armor
		.@price = 2000;
		.@material = 985; //Elunium
		.@type$ = "armor";
		mes "Hmm, an armor refine? Someone like you?";
		break;
	case 1: // Level 1 Weapon
		.@price = 50;
		.@material = 1010; //Phracon
		.@type$ = "weapon";
		mes "A level 1 weapon?";
		mes "Urr... Annoying... Okay, let's try...";
		break;
	case 2: // Level 2 Weapon
		.@price = 200;
		.@material = 1011; //Emveretarcon
		.@type$ = "weapon";
		mes "A level 2 weapon?";
		break;
	case 3: // Level 3 Weapon
		.@price = 20000;
		.@material = 984; //Oridecon
		.@type$ = "weapon";
		mes "Woot!! A level 3 weapon? Impressive~";
		break;
	case 4: // Level 4 Weapon
		.@price = 50000;
		.@material = 984; //Oridecon
		.@type$ = "weapon";
		mes "Wow!... A level 4 weapon~!!";
		break;
	}
	mes "You need ^ff9999"+getitemname(.@material)+"^000000 and ^ff9999"+.@price+"^000000 Zeny. Do you have them?";
	next;
	if(select("Yes, I do!!", "Forget about it!!") == 2) {
		mes "[Clink]";
		mes "I knew it!!";
		mes "I knew you were not worth trying my magical refining hammer for.";
		close;
	}
	if (getequippercentrefinery(.@part) < 100) {
		mes "[Clink]";
		mes "Wow!!";
		mes "This "+.@type$+" has been refined quite a bit, huh?";
		mes "You do know that this might break, right?";
		next;
		mes "[Clink]";
		mes "If you break the "+.@type$+", you can never use it again.";
		mes "Cards and enchant effects...";
		mes "the ^ff0000whole thing will disappear^000000.";
		mes "You still up for this~?";
		next;
		if(select("Yes, I am!!", "Forget about it!!") == 2) {
			mes "[Clink]";
			mes "I knew it!!";
			mes "You can't even take this big step. Don't think about refining...";
			close;
		}
	}
	if (countitem(.@material) == 0 || Zeny < .@price) {
		mes "[Clink]";
		mes "Hey you!! Didn't I tell you";
		mes "that you need ^ff9999"+getitemname(.@material)+"^000000 and ^ff9999"+.@price+"^000000 Zeny??!!";
		close;
	}
	delitem .@material,1;
	Zeny -= .@price;
	if (getequippercentrefinery(.@part) <= rand(100)) {
		downrefitem .@part, 2;
		mes "[Clink]";
		mes "Cry Hammer!! Cry!!!";
		next;
		switch(rand(1,5)) {
			case 1: emotion e_sob; break;
			case 2: emotion e_swt2; break;
			case 3: emotion e_wah; break;
			case 4: emotion e_hmm; break;
			case 5: emotion e_lv2; break;
		}
		mes "[Clink]";
		mes "Huh?! I failed?!";
		next;
		mes "[Clink]";
		mes "Arrgg~ It's all~ Broken...? What a pity~";
		next;
		mes "[Clink]";
		mes "Hey...!! Get me another one.";
		mes "This is not possible.";
		mes "How can my hammer fail from refining?";
		close;
	}
	successrefitem .@part;
	mes "[Clink]";
	mes "Cry Hammer!! Cry!!!";
	next;
	emotion e_kis;
	mes "[Clink]";
	mes "Ok!! Perfect!!";
	mes "There's nothing I can't refine";
	mes "with this special hammer.";
	mes "You can praise me!!";
	mes "What a day!!";
	close;
}

How to make equipment +10 above won't drop and stay +10 if fail.

 

Below Scipts too because there is 2 refiner +10 above, thanks!

 

//================= Hercules Script =======================================
//=       _   _                     _
//=      | | | |                   | |
//=      | |_| | ___ _ __ ___ _   _| | ___  ___
//=      |  _  |/ _ \ '__/ __| | | | |/ _ \/ __|
//=      | | | |  __/ | | (__| |_| | |  __/\__ \
//=      \_| |_/\___|_|  \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright © 2012-2015  Hercules Dev Team
//= Copyright ©  Euphy
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program.  If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
//= HD Refiners
//================= Description ===========================================
//= Refiners that use HD ores to refine equipment.
//================= Additional Comments ===================================
//= Upon failure, the equipment is not destroyed; rather, its refine level
//= decreases by 1. The success rate is identical to that for Enriched ores.
//= - "Blacksmith Mighty Hammer" only refines from +7~9.
//= - "Basta" only refines from +10 and up.
//================= Current Version =======================================
//= 1.0
//=========================================================================

//== Blacksmith Mighty Hammer (+7~9) =======================
-	script	::MightyHammer	FAKE_NPC,{
	disable_items;
	mes "[Blacksmith Mighty Hammer]";
	mes "Unlike others, I am a blacksmith who refines a very limited number of items.";
	mes "I refine only items that are ^CC0000+7 to +9^000000.";
	next;
	mes "[Blacksmith Mighty Hammer]";
	mes "My specialty is that even if my refining fails, the refine level decreases by 1 without losing the gear. Isn't it great?";
	next;
	mes "[Blacksmith Mighty Hammer]";
	mes "So lets kick this into overdrive, what d' ya say? What item do you want to refine?";
	next;
	setarray .@position$[1],"Head","Body","Left Hand","Right Hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
	.@menu$ = "";
	for(.@i = 1; .@i<=10; ++.@i)
		.@menu$ += ((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Not equipped]")+":";
	.@part = select(.@menu$);
	if (!getequipisequiped(.@part)) {
		mes "[Blacksmith Mighty Hammer]";
		switch(.@part) {
		case 1:
			mes "I'm a blacksmith, not a hairstylist.";
			break;
		case 2:
			mes "With my hammer, I will make you a star of the sky.";
			break;
		case 3:
		case 4:
			mes "Making artificial hands is not my specialty.";
			break;
		case 5:
			mes "Bring out the item so I can refine it!";
			break;
		case 6:
			mes "Where is this foot odor coming from?";
			break;
		case 7:
		case 8:
			mes "Where is the accessory?";
			break;
		case 9:
			mes "What do you want me to refine?";
			break;
		case 10:
			mes "Huh? What do you want me to do?";
			break;
		}
		close;
	}
	if (!getequipisenableref(.@part)) {
		mes "[Blacksmith Mighty Hammer]";
		mes "This item can't be refined.";
		close;
	}
	if (getequiprefinerycnt(.@part) < 7 || getequiprefinerycnt(.@part) > 9) {
		mes "[Blacksmith Mighty Hammer]";
		mes "I only handle items with refine levels from +7 to +9.";
		close;
	}
	switch(getequipweaponlv(.@part)) {
	default:
	case 0:
		.@price = 20000;
		.@material = 6241; //HD_Elunium
		break;
	case 1:
	case 2:
	case 3:
	case 4:
		.@price = 20000;
		.@material = 6240; //HD_Oridecon
		break;
	}
	mes "[Blacksmith Mighty Hammer]";
	mes "In order to refine the gear you selected you need ^ff9999"+getitemname(.@material)+"^000000 and 20,000 zeny as a fee.";
	mes "Do you have them ready?";
	next;
	if(select("Yes", "No") == 2) {
		mes "[Blacksmith Mighty Hammer]";
		mes "I will wait until you are ready.";
		close;
	}
	if (getequippercentrefinery(.@part) < 100) {
		mes "[Blacksmith Mighty Hammer]";
		mes "It looks like this item will likely fail to be refined.";
		mes "Well, even if it fails, it only decreases by 1 refine level.";
		mes "Would you like to continue refining?";
		next;
		if(select("Yes", "No") == 2) {
			mes "[Blacksmith Mighty Hammer]";
			mes "Only those who overcome fear of failure will obtain a masterpiece.";
			close;
		}
	}
	if (countitem(.@material) == 0 || Zeny < .@price) {
		mes "[Blacksmith Mighty Hammer]";
		mes "Didn't you just say you had everything ready?";
		close;
	}
	delitem .@material,1;
	Zeny -= .@price;
	mes "[Blacksmith Mighty Hammer]";
	mes "Tac! Tac! Tac!";
	if (getequippercentrefinery(.@part) > rand(100) || getequippercentrefinery(.@part) > rand(100)) {
		successrefitem .@part;
		if ( getequiprefinerycnt( .@part ) > 9 ) announce strcharinfo( 0 ) + " refine his/her item for +" + getequiprefinerycnt( .@part ) + " now!", 0;
		next;
		emotion e_no1;
		mes "[Blacksmith Mighty Hammer]";
		mes "The sound refreshes my mind everytime I hear it.";
		mes "Here, have it. Refine succeeded flawlessly!";
		close;
	}
	downrefitem .@part;
	next;
	emotion e_omg;
	mes "[Blacksmith Mighty Hammer]";
	mes "Oops!!";
	next;
	mes "[Blacksmith Mighty Hammer]";
	mes "I am sure a person like you would never blame me for a decrease in refine level by 1. Hmm.";
	close;
}
prt_in,59,54,3	duplicate(MightyHammer)	Mighty Hammer#prt	4_M_DWARF
morocc_in,65,30,3	duplicate(MightyHammer)	Mighty Hammer#morocc	4_M_DWARF
payon,148,176,3	duplicate(MightyHammer)	Mighty Hammer#pay	4_M_DWARF
alberta_in,16,56,3	duplicate(MightyHammer)	Mighty Hammer#alb	4_M_DWARF
yuno_in01,171,18,3	duplicate(MightyHammer)	Mighty Hammer#yuno	4_M_DWARF
ein_in01,22,82,3	duplicate(MightyHammer)	Mighty Hammer#ein	4_M_DWARF
lhz_in02,280,19,3	duplicate(MightyHammer)	Mighty Hammer#lhz	4_M_DWARF

//- iRO NPC locations -
//moc_para01,38,185,4	duplicate(MightyHammer)	Mighty Hammer#ed	4_M_DWARF
//payon,174,133,4	duplicate(MightyHammer)	Mighty Hammer#im	4_M_DWARF

//== Basta (+10 and up) ====================================
-	script	::Basta	FAKE_NPC,{
	disable_items;
	mes "[Basta]";
	mes "I'm the best Blacksmith in the whole world, Basta.";
	mes "But I don't provide a normal refine service.";
	mes "I only refine equipment ^CC0000over +10^000000.";
	next;
	mes "[Basta]";
	mes "Which equipment do you want to refine?";
	next;
	setarray .@position$[1],"Head","Body","Left Hand","Right Hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
	.@menu$ = "";
	for(.@i = 1; .@i<=10; ++.@i)
		.@menu$ += ((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Unequipped]")+":";
	.@part = select(.@menu$);
	if (!getequipisequiped(.@part)) {
		mes "[Basta]";
		switch(.@part) {
		case 1:
			mes "Is your head an equipment?";
			break;
		case 2:
			mes "What do you want me to do?";
			break;
		case 3:
		case 4:
			mes "Making artificial hands is not my specialty.";
			break;
		case 5:
			mes "Do you even know what a robe is?";
			break;
		case 6:
			mes "If you want to refine your feet, don't come to me, try running a marathon.";
			break;
		case 7:
		case 8:
			mes "Where is the accessory?";
			break;
		case 9:
			mes "Well... I don't see any equipment worth refining.";
			break;
		case 10:
			mes "I can't make you smart. Go see a school teacher for that.";
			break;
		}
		close;
	}
	if (!getequipisenableref(.@part)) {
		mes "[Basta]";
		mes "Even I cannot refine this item. There's no way.";
		close;
	}
	if (getequiprefinerycnt(.@part) < 10) {
		mes "[Basta]";
		mes "Haven't I told you? I only refine equipments that are +10 and above.";
		close;
	}
	if (getequiprefinerycnt(.@part) == 20) {
		mes "[Basta]";
		mes "This weapon is perfect, no need to refine it anymore~";
		close;
	}
	switch(getequipweaponlv(.@part)) {
	default:
	case 0:
		.@price = 100000;
		.@material = 6225; //HD_Carnium
		.@type$ = "armor";
		break;
	case 1:
	case 2:
	case 3:
	case 4:
		.@price = 100000;
		.@material = 6226; //HD_Bradium
		.@type$ = "weapon";
		break;
	}
	mes "[Basta]";
	mes "Hmm... is this the one you want to refine?";
	mes "To refine this equipment, I need 1 ^ff9999"+getitemname(.@material)+"^000000 and 100,000 zeny as a fee.";
	mes "Do you really want to refine this?";
	next;
	if(select("Yes", "No") == 2) {
		mes "[Basta]";
		mes "Okay. If that's what you want...";
		close;
	}
	if (getequippercentrefinery(.@part) < 100) {
		mes "[Basta]";
		mes "This "+.@type$+" has already been refined pretty high.";
		mes "If you try to refine it more, the refine level could decrease.";
		next;
		mes "[Basta]";
		mes "I am different from the blacksmiths in others places.";
		mes "It is impossible that the refine level will drop by, say, 3 or 4... that sounds scary.";
		mes "Here it can only decrease by 1 level.";
		next;
		mes "[Basta]";
		mes "Compared to other blacksmiths, the risk is smaller.";
		mes "I've given all precautions. Do you want to try it?";
		next;
		if(select("Yes", "No") == 2) {
			mes "[Basta]";
			mes "Well~";
			mes "Not challenging at all could also be a kind of wisdom in life.";
			close;
		}
	}
	if (countitem(.@material) == 0 || Zeny < .@price) {
		mes "[Basta]";
		mes "Hmm... You didn't bring all the materials needed.";
		mes "Come back when you have them all.";
		close;
	}
	delitem .@material,1;
	Zeny -= .@price;
	mes "Pow! Pow! Pow! Pow!";
	if (getequippercentrefinery(.@part) > rand(100) || getequippercentrefinery(.@part) > rand(100)) {
		successrefitem .@part;
		if ( getequiprefinerycnt( .@part ) > 10 ) announce strcharinfo( 0 ) + " refine his/her item for +" + getequiprefinerycnt( .@part ) + " now!", 0;
		next;
		emotion e_no1;
		mes "[Basta]";
		mes "Great! Nicely done!!";
		mes "I really am the best blacksmith in the whole wide world!";
		close;
	}
	downrefitem .@part;
	next;
	emotion (!rand(5))?e_cash:e_omg;
	mes "[Basta]";
	mes "Aaaaaaaaaaak!!!";
	next;
	mes "[Basta]";
	mes "Damn it!";
	mes "Refining failed and refine level has decreased!";
	mes "Even the best blacksmith in the world doesn't guarantee 100% success!";
	mes "Too bad.";
	next;
	mes "[Basta]";
	mes "I'll do better next time! Don't worry!";
	close;
}
prt_in,57,54,3	duplicate(Basta)	Basta#prt	4_M_DWARF
morocc_in,68,30,3	duplicate(Basta)	Basta#morocc	4_M_DWARF
payon,148,174,3	duplicate(Basta)	Basta#payon	4_M_DWARF
alberta_in,18,56,3	duplicate(Basta)	Basta#alberta	4_M_DWARF
yuno_in01,173,18,3	duplicate(Basta)	Basta#yuno	4_M_DWARF
ein_in01,24,82,3	duplicate(Basta)	Basta#einbroch	4_M_DWARF
lhz_in02,280,17,3	duplicate(Basta)	Basta#lighthalzen	4_M_DWARF

 






1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users


This topic has been visited by 15 user(s)