Gostei da ideia e fiz um npc, se quiseres usar, meu teclado nao eh portugues entao esta faltando acentos!
Nao esqueca de trocar "MAPA,X,Y" pelas posicoes do NPC!
//==============Made by DoomSlayer=============
//Ferreiro Custom - Quanto mais materiais maior
//a chance de sucesso!
//=============================================
MAPA,X,Y,3 script Blacksmith Custom 63,{
disable_items;
mes "^0000FF"+.name$+"^000000";
mes "Eu sou o melhor Ferreiro da cidade!";
mes "Meu custo de trabalho e "+.price+" Zeny!";
mes "Quanto mais materiais voce ultilizar, mais chances de sucesso voce tem!";
next;
switch(select("Refinar:Sair")){
case 1:
mes "^0000FF"+.name$+"^000000";
mes "Qual o equipament que voce quer refinar?";
next;
goto OnRefine;
end;
case 2:
mes "^0000FF"+.name$+"^000000";
mes "Boa sorte!";
close;
end;
}
OnRefine:
setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW;
for(set .@i,1; .@i<=10; set .@i,.@i+1)
set .@menu$, .@menu$ + ( getequipisequiped(.@indices[.@i]) ? getequipname(.@indices[.@i]) : F_getpositionname(.@indices[.@i]) +"-[Unequipped]" ) +":";
set .@part, .@indices[ select(.@menu$) ];
if (!getequipisequiped(.@part)) {
mes "^0000FF"+.name$+"^000000";
mes "Voce nao tem nennhum equipamento!";
close;
}
if (!getequipisenableref(.@part)) {
mes "^0000FF"+.name$+"^000000";
mes "Este equipament nao pode ser refinado!";
close;
}
.@equip_id = getequipid(.@part);
.@equip_refine = getequiprefinerycnt(.@part);
setarray .@card[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3);
if (.@equip_refine >= 20) {
mes "^0000FF"+.name$+"^000000";
mes "Este equipamento ja esta no maximo!";
close;
}
if (getequipweaponlv(.@part) == 0){
set .@matuse,2;
} else {
set .@matuse,1;
}
mes "^0000FF"+.name$+"^000000";
mes "Quantos "+.namemat$[.@matuse]+" voce quer usar?";
mes "A cada material sua chance aumenta por "+.matchance+"%.";
next;
input .@amount;
if (.@amount == 0) {
mes "^0000FF"+.name$+"^000000";
mes "Nenhum material? como vou refinar assim?";
close;
end;
}
if (countitem(.material[.@matuse]) < .@amount){
mes $npc$;
mes "Voce nao tem essa quantidade de materiais";
close;
end;
}
if (.@amount > .maxmat){
mes $npc$;
mes "Voce so pode ultilizar um maximo de "+.maxmat+" materiais!";
close;
end;
}
mes "^0000FF"+.name$+"^000000";
mes "Entao vamos la!";
next;
delitem .material[.@matuse],.@amount;
set .@failchance,rand(1,100);
set .@schance, (.chance + (.@amount * .matchance));
if (.@failchance > .@schance){
specialeffect2 EF_SUI_EXPLOSION;
if (.break == 1){ failedrefitem .@part; }
if (.break == 2){ downrefitem .@part; }
mes "^0000FF"+.name$+"^000000";
mes "Nao foi desta vez...";
close;
end;
}
successrefitem .@part;
mes "^0000FF"+.name$+"^000000";
mes "Muito facil!";
close;
end;
OnInit:
set .name$,"Ferreiro"; //Nome do NPC
set .chance,10; //Chance de refinar 10 = 10% (sem material)
set .matchance,1; //Quantos % sobem por material
set .maxmat,90; //Maximo de materiais que se pode usar (90 x 1 = 90%)
setarray .namemat$,"Oridecon","Elunium"; //Nome dos materiais abaixo
setarray .material[1],984,985; //Material que vai ser usado (984 - Oridecon 985 - Elunium)
set .break,1; //1 - Errar quebra / 2 - Errar desce refinamento / 3 - Nada acontece ao errar
set .price,25000; //Preco para refinar
end;
}