Jump to content
  • 0

question about transfer enchant npc (random option)


Question

Posted

I was wondering, would it be possible to make a NPC that takes an enchantment from a costume item you are wearing, then transfers it to an item you have in your inventory?

please help me 🙏

thanks!!! 💖

 

3 answers to this question

Recommended Posts

  • 0
Posted

Hi. It is possible. Here's a example for you.

//===== Script for rAthena by Racaae =========================
//= https://rathena.org/board/topic/142357-question-about-transfer-enchant-npc-random-option/
//===== Additional Comments: ================================= 
//= Modified from Sader1992' enchant npc
//============================================================ 

prontera,165,215,5	script	Costume Enchant Transfer	4_BULL,{
	disable_items;
	mes "[Costume Enchant Transferer]";
	mes "Hello!";
	mes "Do you want to transfer enchantment from your equipped costume to another item?";
	if (.ZenyCost)
		mes "This will cost ^0000FF" + F_InsertComma(.ZenyCost) + "z^000000 only!";
	next;
	if (select("Random Option Transfer", "Enchant Socket Transfer") == 1)
		.@mode = true;
	for(.@i = 0; .@i < getarraysize(.s_all$); .@i++) {
		if (getequipid(.s_all_loc[.@i])>-1)
			set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^E81B02" + getitemname(getequipid(.s_all_loc[.@i])) + "^000000 ]:";
		else
			set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^D6C4E8" + "No Equip" + "^000000 ]:";
	}
	.@input_loc = select(.@armor_menu$) -1;
	mes "[Costume Enchant Transferer]";
	if (getequipid(.s_all_loc[.@input_loc]) < 0){
		mes "You don't have item equipped there.";
		close;
	}
	.@item = getequipid(.s_all_loc[.@input_loc]);
	.@refine = getequiprefinerycnt(.s_all_loc[.@input_loc]);
	.@card0 = getequipcardid(.s_all_loc[.@input_loc],0);
	.@card1 = getequipcardid(.s_all_loc[.@input_loc],1);
	.@card2 = getequipcardid(.s_all_loc[.@input_loc],2);
	.@card3 = getequipcardid(.s_all_loc[.@input_loc],3);
	for(.@i=0; .@i < (MAX_ITEM_RDM_OPT); .@i++) {
		.@r_id[.@i] = getequiprandomoption(.s_all_loc[.@input_loc],.@i,ROA_ID);
		.@r_v[.@i] = getequiprandomoption(.s_all_loc[.@input_loc],.@i,ROA_VALUE);
		.@r_p[.@i] = getequiprandomoption(.s_all_loc[.@input_loc],.@i,ROA_PARAM);
	}
	if (.@mode) {
		if (getarraysize(.@r_id) == 0) {
			mes "This costume has no Random Options...";
			close;
		}
	}
	else if (!.@card0 && !.@card1 && !.@card2 && !.@card3) {
		mes "This costume has no enchants...";
		close;
	}
	mes "Which enchantment to transfer?";
	if (.@mode) {
		for(.@i=0; .@i < 5; .@i++) {
			if (.@r_id[.@i])
				.@slot_menu$ += F_RDMOPT_Name(.@r_id[.@i],.@r_v[.@i]);
			.@slot_menu$ += ":";
		}
		.@input_slot = select(.@slot_menu$) -1;
	}
	else {
		for(.@i=0; .@i < 4; .@i++) {
			if (getequipcardid(.s_all_loc[.@input_loc], .@i))
				.@slot_menu$ += "[ ^E81B02" + getitemname(getequipcardid(.s_all_loc[.@input_loc],.@i)) + "^000000 ]:";
			else
				.@slot_menu$ += ":";
		}
		.@input_slot = select(.@slot_menu$) -1;
	}
	set .@item, getequipid(.s_all_loc[.@input_loc]);
	clear;
	mes "[Costume Enchant Transferer]";
	mes "To what costume in your inventory you want to transfer?";
	next;
	.@armor_menu$ = "";
	for(.@i=0; .@i < getarraysize(.s_all$); .@i++)
		.@armor_menu$ += .s_all$[.@i] + ":";
	.@output_type = select(.@armor_menu$) -1;
	getinventorylist;
	for(.@i = 0; .@i < @inventorylist_count; .@i++) {
		.@item_type = getiteminfo(@inventorylist_id[.@i], ITEMINFO_LOCATIONS);
		.@item_id = @inventorylist_id[.@i];
		if (.@item_type & .s_all_loc2[.@output_type] && !@inventorylist_equip[.@i]) {
			.@item_ref = getarraysize(.@equipment_id_list);
			if (countinarray(.@equipment_id_list, .@item_id))
				continue;
			.@equipment_id_list[.@item_ref] = @inventorylist_id[.@i];
			.@menu_labels$[.@item_ref] = getitemname(@inventorylist_id[.@i]);
		}
	}
	if (!getarraysize(.@equipment_id_list[0])) {
		mes "[Costume Enchant Transferer]";
		mes "There are no items of this category in your inventory.";
		close;
	}
	.@index = select(implode(.@menu_labels$, ":")) - 1;
	.@output_id = .@equipment_id_list[.@index];
	mes "[Costume Enchant Transferer]";
	mes "You selected " + getitemname(.@output_id) + ".";	
	if (countitem(.@output_id) > 1) {
		mes "You have more than one of this item.";
		close;
	}
	getinventorylist;
	.@i2 = inarray(@inventorylist_id, .@output_id);
	.@output_refine = @inventorylist_refine[.@i2];
	.@output_card0 = @inventorylist_card1[.@i2];
	.@output_card1 = @inventorylist_card2[.@i2];
	.@output_card2 = @inventorylist_card3[.@i2];
	.@output_card3 = @inventorylist_card4[.@i2];
	for(.@i = 0; .@i < (MAX_ITEM_RDM_OPT); .@i++) {
		.@output_r_id[.@i] = getd("@inventorylist_option_id" + (.@i + 1) + "[" + .@i2 + "]");
		.@output_r_v[.@i] = getd("@inventorylist_option_value" + (.@i + 1) + "[" + .@i2 + "]");
		.@output_r_p[.@i] = getd("@inventorylist_option_parameter" + (.@i + 1) + "[" + .@i2 + "]");
	}
	if (.@mode) {
		for(.@i = 0; .@i < MAX_ITEM_RDM_OPT; .@i++) {
			if (.@output_r_id[.@i] == 0) {
				.@output_slot = .@i;
				.@ok = true;
				break;
			}
		}
		if (!.@ok) {
			mes "You already have full Random Options in this item.";
			close;
		}
	}
	else {
		mes "Transfer to which slot?";
		.@slot_menu$ = "";
		for(.@i = 0; .@i < 4; .@i++) {
			if (getd(".@output_card" + .@i))
				.@slot_menu$ += "[^E81B02" + getitemname(getd(".@output_card" + .@i)) + "^000000 ]:";
			else
				.@slot_menu$ += "[^D6C4E8" + "Empty" + "^000000 ]:";
		}
		.@output_slot = select(.@slot_menu$) -1;
		if (!.Overwrite) {
			if(getd(".@output_card" + .@output_slot)) {
				mes "You already have enchant in this slot.";
				close;
			}
		}
	}
	clear;
	mes "[Costume Enchant Transferer]";
	if (.@mode)
		mes "Transfer: ^FF7700" + F_RDMOPT_Name(.@r_id[.@input_slot],.@r_v[.@input_slot]) + "^000000";
	else
		mes "Transfer: " + mesitemlink(getequipcardid(.s_all_loc[.@input_loc], .@input_slot));
	mes "^FF0000From: " + getitemname(getequipid(.s_all_loc[.@input_loc])) + "^000000";
	mes "^0000FFTo: " + getitemname(.@output_id) + "^000000";
	mes "Are you sure?";
	next;
	if(select("Cancel.", "Confirm") == 1)
		close;
	mes "[Costume Enchant Transferer]";
	if (.ZenyCost && Zeny < .ZenyCost) {
		mes "Sorry, but you don't have enough zeny.";
		close;
	}
	mes "Stay put while the process is ongoing.";
	close2;
	specialeffect2 EF_MAPPILLAR;
	progressbar "ffff00", .progress_time;

	// anti-hack
	if (callfunc("F_IsEquipIDHack", .s_all_loc[.@input_loc], .@item) || callfunc("F_IsEquipCardHack", .s_all_loc[.@input_loc], .@card0, .@card1, .@card2, .@card3) ||
	    callfunc("F_IsEquipRefineHack", .s_all_loc[.@input_loc], .@refine) ||
	    countitem(.@output_id) != 1) {
		mes "[Costume Enchant Transferer]";
		mes "You switched the item while I wasn't looking! Get out of here!";
		close;
	}

	if (.ZenyCost && Zeny < .ZenyCost) {
		mes "Sorry, but you don't have enough zeny.";
		close;
	}
	Zeny -= .ZenyCost;
	if (.@mode) {
		.@output_r_id[.@output_slot] = .@r_id[.@input_slot];
		.@output_r_v[.@output_slot] = .@r_v[.@input_slot];
		.@output_r_p[.@output_slot] = .@r_p[.@input_slot];
		deletearray .@r_id[.@input_slot], 1;
		deletearray .@r_v[.@input_slot], 1;
		deletearray .@r_p[.@input_slot], 1;
	}
	else {
		setd(".@output_card" + .@output_slot, getd(".@card" + .@input_slot));
		setd(".@card" + .@input_slot, 0);
	}
	delequip .s_all_loc[.@input_loc];
	delitem .@output_id, 1;
	getitem3 .@item, 1, 1, .@input_refine, 0, .@card0, .@card1, .@card2, .@card3,.@r_id,.@r_v,.@r_p;
	getitem3 .@output_id, 1, 1, .@output_refine, 0, .@output_card0, .@output_card1, .@output_card2, .@output_card3,.@output_r_id,.@output_r_v,.@output_r_p;
	equip .@item;
	npctalk "Enchant Transfer successful!", strnpcinfo(0), bc_self;
	end;

OnInit:
	//--------------------------------------------------------------//
	//--------------------   configuration   -----------------------//
	//--------------------------------------------------------------//
	
	//--------------------------------------------------------------//
	//if you want to remove one from the menu you need to remove it down too!! /or add
	//--------------------------------------------------------------//
	setarray .s_all$,"Upper","Middle","Lower","Garment";
	setarray .s_all_loc,EQI_COSTUME_HEAD_TOP,EQI_COSTUME_HEAD_MID,EQI_COSTUME_HEAD_LOW,EQI_COSTUME_GARMENT;
	setarray .s_all_loc2,EQP_COSTUME_HEAD_TOP,EQp_COSTUME_HEAD_MID,EQP_COSTUME_HEAD_LOW,EQP_COSTUME_GARMENT;
	
	//--------------------------------------------------------------//
	//other configuration
	//--------------------------------------------------------------//
	.ZenyCost = 1000000;	//if you don't want zeny requirment set it to 0
	.Overwrite = true;	//if true then you can overwrite the enchant
	.progress_time = 4;	//the time that needed to wait until the socket end
	
	end;
}

 

You need to use this function to display random options in the NPC.

//////////////////////////////////////////////////////////////////////////////////
// Returns Random Option name and value
// -- callfunc "F_RDMOPT_Name",<ROA_ID>{,<Value>{,<2nd value>}};
//////////////////////////////////////////////////////////////////////////////////
function	script	F_RDMOPT_Name	{
	if (getargcount() > 2)
		.@s$ = getarg(1) + "~" + getarg(2);
	else if (getargcount() > 1)
		.@s$ = getarg(1);
	else
		.@s$ = "?";

	if (#langtype = 8) {
		//POR
		switch(getarg(0)){
			case 3: return "FOR +" + .@s$;
			case 6: return "INT +" + .@s$;
			case 7: return "DES +" + .@s$;
			case 8: return "SOR +" + .@s$;
			case 232: return "EXP ganha de Amorfos +" + .@s$ + "%";
			case 233: return "EXP ganha de Morto-Vivos +" + .@s$ + "%";
			case 234: return "EXP ganha de Brutos +" + .@s$ + "%";
			case 235: return "EXP ganha de Plantas +" + .@s$ + "%";
			case 236: return "EXP ganha de Insetos +" + .@s$ + "%";
			case 237: return "EXP ganha de Peixes +" + .@s$ + "%";
			case 238: return "EXP ganha de Demônios +" + .@s$ + "%";
			case 239: return "EXP ganha de Humanoides +" + .@s$ + "%";
			case 240: return "EXP ganha de Anjos +" + .@s$ + "%";
			case 241: return "EXP ganha de Dragões +" + .@s$ + "%";
			case 242: return "EXP ganha de todas raças +" + .@s$ + "%";
		}
	}
	switch(getarg(0)){
		case 1: return "MaxHP +" + .@s$;
		case 2: return "MaxSP +" + .@s$;
		case 3: return "STR +" + .@s$;
		case 4: return "AGI +" + .@s$;
		case 5: return "VIT +" + .@s$;
		case 6: return "INT +" + .@s$;
		case 7: return "DEX +" + .@s$;
		case 8: return "LUK +" + .@s$;
		case 9: return "MaxHP +" + .@s$ + "%";
		case 10: return "MaxSP +" + .@s$ + "%";
		case 11: return "HP regen +" + .@s$ + "%";
		case 12: return "SP regen +" + .@s$ + "%";
		case 13: return "ATK +" + .@s$ + "%";
		case 14: return "MATK +" + .@s$ + "%";
		case 15: return "ASPD +" + .@s$;
		case 16: return "Delay after attack -" + .@s$ + "%";
		case 17: return "ATK +" + .@s$;
		case 18: return "HIT +" + .@s$;
		case 19: return "MATK +" + .@s$;
		case 20: return "DEF +" + .@s$;
		case 21: return "MDEF +" + .@s$;
		case 22: return "FLEE +" + .@s$;
		case 23: return "Perfect dodge +" + .@s$;
		case 24: return "CRIT +" + .@s$;
		case 25: return "Neutral elemental resistance +" + .@s$ + "%";
		case 26: return "Water elemental resistance +" + .@s$ + "%";
		case 27: return "Earth elemental resistance +" + .@s$ + "%";
		case 28: return "Fire elemental resistance +" + .@s$ + "%";
		case 29: return "Wind elemental resistance +" + .@s$ + "%";
		case 30: return "Poison elemental resistance +" + .@s$ + "%";
		case 31: return "Holy elemental resistance +" + .@s$ + "%";
		case 32: return "Shadow elemental resistance +" + .@s$ + "%";
		case 33: return "Ghost elemental resistance +" + .@s$ + "%";
		case 34: return "Undead elemental resistance +" + .@s$ + "%";
		case 35: return "All elemental (except Neutral) resistance +" + .@s$ + "%";
		case 36: return "Neutral monster resistance +" + .@s$ + "%";
		case 37: return "ATK +" + .@s$ + "% against Neutral monster";
		case 38: return "Water monster resistance +" + .@s$ + "%";
		case 39: return "ATK +" + .@s$ + "% against Water monster";
		case 40: return "Earth monster resistance +" + .@s$ + "%";
		case 41: return "ATK +" + .@s$ + "% against Earth monster";
		case 42: return "Fire monster resistance +" + .@s$ + "%";
		case 43: return "ATK +" + .@s$ + "% against Fire monster";
		case 44: return "Wind monster resistance +" + .@s$ + "%";
		case 45: return "ATK +" + .@s$ + "% against Wind monster";
		case 46: return "Poison monster resistance +" + .@s$ + "%";
		case 47: return "ATK +" + .@s$ + "% against Poison monster";
		case 48: return "Holy monster resistance +" + .@s$ + "%";
		case 49: return "ATK +" + .@s$ + "% against Holy monster";
		case 50: return "Shadow monster resistance +" + .@s$ + "%";
		case 51: return "ATK +" + .@s$ + "% against Shadow monster";
		case 52: return "Ghost monster resistance +" + .@s$ + "%";
		case 53: return "ATK +" + .@s$ + "% against Ghost monster";
		case 54: return "Undead monster resistance +" + .@s$ + "%";
		case 55: return "ATK +" + .@s$ + "% against Undead monster";
		case 56: return "Neutral monster magic resistance +" + .@s$ + "%";
		case 57: return "MATK +" + .@s$ + "% against Neutral monster";
		case 58: return "Water monster magic resistance +" + .@s$ + "%";
		case 59: return "MATK +" + .@s$ + "% against Water monster";
		case 60: return "Earth monster magic resistance +" + .@s$ + "%";
		case 61: return "MATK +" + .@s$ + "% against  Earth monster";
		case 62: return "Fire monster magic resistance +" + .@s$ + "%";
		case 63: return "MATK +" + .@s$ + "% against Fire monster";
		case 64: return "Wind monster magic resistance +" + .@s$ + "%";
		case 65: return "MATK +" + .@s$ + "% against Wind monster";
		case 66: return "Poison monster magic resistance +" + .@s$ + "%";
		case 67: return "MATK +" + .@s$ + "% against Poison monster";
		case 68: return "Holy monster magic resistance +" + .@s$ + "%";
		case 69: return "MATK +" + .@s$ + "% against Holy monster";
		case 70: return "Shadow monster magic resistance +" + .@s$ + "%";
		case 71: return "MATK +" + .@s$ + "% against Shadow monster";
		case 72: return "Ghost monster magic resistance +" + .@s$ + "%";
		case 73: return "MATK +" + .@s$ + "% against Ghost monster";
		case 74: return "Undead monster magic resistance +" + .@s$ + "%";
		case 75: return "MATK +" + .@s$ + "% against Undead monster";
		case 76: return "Armor element Neutral";
		case 77: return "Armor element Water";
		case 78: return "Armor element Earth";
		case 79: return "Armor element Fire";
		case 80: return "Armor element Wind";
		case 81: return "Armor element Poison";
		case 82: return "Armor element Holy";
		case 83: return "Armor element Shadow";
		case 84: return "Armor element Ghost";
		case 85: return "Armor element Undead";
		case 87: return "Formless monster resistance +" + .@s$ + "%";
		case 88: return "Undead monster resistance +" + .@s$ + "%";
		case 89: return "Brute monster resistance +" + .@s$ + "%";
		case 90: return "Plant monster resistance +" + .@s$ + "%";
		case 91: return "Insect monster resistance +" + .@s$ + "%";
		case 92: return "Fish monster resistance +" + .@s$ + "%";
		case 93: return "Demon monster resistance +" + .@s$ + "%";
		case 94: return "Demihuman monster resistance +" + .@s$ + "%";
		case 95: return "Angel monster resistance +" + .@s$ + "%";
		case 96: return "Dragon monster resistance +" + .@s$ + "%";
		case 97: return "ATK +" + .@s$ + "% against Formless monster";
		case 98: return "ATK +" + .@s$ + "% against Undead monster";
		case 99: return "ATK +" + .@s$ + "% against Brute monster";
		case 100: return "ATK +" + .@s$ + "% against Plant monster";
		case 101: return "ATK +" + .@s$ + "% against Insect monster";
		case 102: return "ATK +" + .@s$ + "% against Fish monster";
		case 103: return "ATK +" + .@s$ + "% against Demon monster";
		case 104: return "ATK +" + .@s$ + "% against Demihuman monster";
		case 105: return "ATK +" + .@s$ + "% against Angel monster";
		case 106: return "ATK +" + .@s$ + "% against Dragon monster";
		case 107: return "MATK +" + .@s$ + "% against Formless monster";
		case 108: return "MATK +" + .@s$ + "% against Undead monster";
		case 109: return "MATK +" + .@s$ + "% against Brute monster";
		case 110: return "MATK +" + .@s$ + "% against Plant monster";
		case 111: return "MATK +" + .@s$ + "% against Insect monster";
		case 112: return "MATK +" + .@s$ + "% against Fish monster";
		case 113: return "MATK +" + .@s$ + "% against Devil monster";
		case 114: return "MATK +" + .@s$ + "% against Demihuman monster";
		case 115: return "MATK +" + .@s$ + "% against Angel monster";
		case 116: return "MATK +" + .@s$ + "% against Dragon monster";
		case 117: return "CRIT +" + .@s$ + " against Formless monster";
		case 118: return "CRIT +" + .@s$ + " against Undead monster";
		case 119: return "CRIT +" + .@s$ + " against Brute monster";
		case 120: return "CRIT +" + .@s$ + " against Plant monster";
		case 121: return "CRIT +" + .@s$ + " against Insect monster";
		case 122: return "CRIT +" + .@s$ + " against Fish monster";
		case 123: return "CRIT +" + .@s$ + " against Demon monster";
		case 124: return "CRIT +" + .@s$ + " against Demihuman monster";
		case 125: return "CRIT +" + .@s$ + " against Angel monster";
		case 126: return "CRIT +" + .@s$ + " against Dragon monster";
		case 127: return "Pierces " + .@s$ + "% DEF of Formless monster";
		case 128: return "Pierces " + .@s$ + "% DEF of Undead monster";
		case 129: return "Pierces " + .@s$ + "% DEF of Brute monster";
		case 130: return "Pierces " + .@s$ + "% DEF of Plant monster";
		case 131: return "Pierces " + .@s$ + "% DEF of Insect monster";
		case 132: return "Pierces " + .@s$ + "% DEF of Fish monster";
		case 133: return "Pierces " + .@s$ + "% DEF of Demon monster";
		case 134: return "Pierces " + .@s$ + "% DEF of Demihuman monster";
		case 135: return "Pierces " + .@s$ + "% DEF of Angel monster";
		case 136: return "Pierces " + .@s$ + "% DEF of Dragon monster";
		case 137: return "Pierces " + .@s$ + "% MDEF of Formless monster";
		case 138: return "Pierces " + .@s$ + "% MDEF of Undead monster";
		case 139: return "Pierces " + .@s$ + "% MDEF of Brute monster";
		case 140: return "Pierces " + .@s$ + "% MDEF of Plant monster";
		case 141: return "Pierces " + .@s$ + "% MDEF of Insect monster";
		case 142: return "Pierces " + .@s$ + "% MDEF of Fish monster";
		case 143: return "Pierces " + .@s$ + "% MDEF of Demon monster";
		case 144: return "Pierces " + .@s$ + "% MDEF of Demihuman monster";
		case 145: return "Pierces " + .@s$ + "% MDEF of Angel monster";
		case 146: return "Pierces " + .@s$ + "% MDEF of Dragon monster";
		case 147: return "ATK +" + .@s$ + "% against Normal monster";
		case 148: return "ATK +" + .@s$ + "% against Boss monster";
		case 149: return "Normal monster resistance +" + .@s$ + "%";
		case 150: return "Boss monster resistance +" + .@s$ + "%";
		case 151: return "MATK +" + .@s$ + "% against Normal monster";
		case 152: return "MATK +" + .@s$ + "% against Boss monster";
		case 153: return "Pierces " + .@s$ + "% DEF of Normal monster";
		case 154: return "Pierces " + .@s$ + "% DEF of Boss monster";
		case 155: return "Pierces " + .@s$ + "% MDEF of Normal monster";
		case 156: return "Pierces " + .@s$ + "% MDEF of Boss monster";
		case 157: return "ATK +" + .@s$ + "% against Small size monster";
		case 158: return "ATK +" + .@s$ + "% against Medium size monster";
		case 159: return "ATK +" + .@s$ + "% against Large size monster";
		case 160: return "Small monster resistance +" + .@s$ + "%";
		case 161: return "Medium monster resistance +" + .@s$ + "%";
		case 162: return "Large monster resistance +" + .@s$ + "%";
		case 163: return "Nullify weapon's DMG size penalty";
		case 164: return "Critical attack +" + .@s$ + "%";
		case 165: return "Critical DMG -" + .@s$ + "%";
		case 166: return "Long range physical attack +" + .@s$ + "%";
		case 167: return "Long range physical DMG -" + .@s$ + "%";
		case 168: return "Healing skills +" + .@s$ + "%";
		case 169: return "Restoration gained from Healing skills +" + .@s$ + "%";
		case 170: return "Variable cast time -" + .@s$ + "%";
		case 171: return "After cast delay -" + .@s$ + "%";
		case 172: return "Reduces SP cost by " + .@s$ + "%";
		case 175: return "Weapon element Neutral";
		case 176: return "Weapon element Water";
		case 177: return "Weapon element Earth";
		case 178: return "Weapon element Fire";
		case 179: return "Weapon element Wind";
		case 180: return "Weapon element Poison";
		case 181: return "Weapon element Holy";
		case 182: return "Weapon element Shadow";
		case 183: return "Weapon element Ghost";
		case 184: return "Weapon element Undead";
		case 185: return "Indestructible in battle";
		case 186: return "Indestructible in battle";
		case 187: return "MATK against Small size monster +" + .@s$ + "%";
		case 188: return "MATK against Medium size monster +" + .@s$ + "%";
		case 189: return "MATK against Large size monster +" + .@s$ + "%";
		case 190: return "Small monster magic resistance +" + .@s$ + "%";
		case 191: return "Medium monster magic resistance +" + .@s$ + "%";
		case 192: return "Large monster magic resistance +" + .@s$ + "%";
		case 193: return "Elemental attacks resistance +" + .@s$ + "%";
		case 194: return "Formless monster resistance +" + .@s$ + "%";
		case 195: return "Undead monster resistance +" + .@s$ + "%";
		case 196: return "Brute monster resistance +" + .@s$ + "%";
		case 197: return "Plant monster resistance +" + .@s$ + "%";
		case 198: return "Insect monster resistance +" + .@s$ + "%";
		case 199: return "Fish monster resistance +" + .@s$ + "%";
		case 200: return "Demon monster resistance +" + .@s$ + "%";
		case 201: return "Demihuman monster resistance +" + .@s$ + "%";
		case 202: return "Angel monster resistance +" + .@s$ + "%";
		case 203: return "Dragon monster resistance +" + .@s$ + "%";
		case 206: return "Demi-Human players resistance + " + .@s$ + "%";
		case 207: return "Doram players resistance +" + .@s$ + "%";
		case 208: return "ATK against Demi-Human players +" + .@s$ + "%";
		case 209: return "ATK against Doram players +" + .@s$ + "%";
		case 210: return "MATK against Demi-Human players +" + .@s$ + "%";
		case 211: return "MATK against Doram players +" + .@s$ + "%";
		case 212: return "Critical +" + .@s$ + " for Demi-Human players";
		case 213: return "Critical +" + .@s$ + " for Doram players";
		case 214: return "Pierces " + .@s$ + "% DEF of Demi-Human players";
		case 215: return "Pierces " + .@s$ + "% DEF of Doram players";
		case 216: return "Pierces " + .@s$ + "% MDEF of Demi-Human players";
		case 217: return "Pierces " + .@s$ + "% MDEF of Doram players";
		case 218: return "Received reflected DMG -" + .@s$ + "%";
		case 219: return "Melee physical DMG +" + .@s$ + "%";
		case 220: return "Melee physical DMG -" + .@s$ + "%";
		case 221: return "Neutral elemental magic skill DMG +" + .@s$ + "%";
		case 222: return "Water elemental magic skill DMG +" + .@s$ + "%";
		case 223: return "Earth elemental magic skill DMG +" + .@s$ + "%";
		case 224: return "Fire elemental magic skill DMG +" + .@s$ + "%";
		case 225: return "Wind elemental magic skill DMG +" + .@s$ + "%";
		case 226: return "Poison elemental magic skill DMG +" + .@s$ + "%";
		case 227: return "Holy elemental magic skill DMG +" + .@s$ + "%";
		case 228: return "Shadow elemental magic skill DMG +" + .@s$ + "%";
		case 229: return "Ghost elemental magic skill DMG +" + .@s$ + "%";
		case 230: return "Undead elemental magic skill DMG +" + .@s$ + "%";
		case 231: return "All elemental magic skill DMG +" + .@s$ + "%";
		case 232: return "EXP gained from Formless race +" + .@s$ + "%";
		case 233: return "EXP gained from Undead race +" + .@s$ + "%";
		case 234: return "EXP gained from Brute race +" + .@s$ + "%";
		case 235: return "EXP gained from Plant race +" + .@s$ + "%";
		case 236: return "EXP gained from Insect race +" + .@s$ + "%";
		case 237: return "EXP gained from Fish race +" + .@s$ + "%";
		case 238: return "EXP gained from Demon race +" + .@s$ + "%";
		case 239: return "EXP gained from Demi-Human race +" + .@s$ + "%";
		case 240: return "EXP gained from Angel race +" + .@s$ + "%";
		case 241: return "EXP gained from Dragon race +" + .@s$ + "%";
		case 242: return "EXP gained from all races +" + .@s$ + "%";
		case 243: return "POW + " + .@s$;
		case 244: return "SPL + " + .@s$;
		case 245: return "STA + " + .@s$;
		case 246: return "WIS + " + .@s$;
		case 247: return "CON + " + .@s$;
		case 248: return "CRT + " + .@s$;
		case 249: return "P.ATK + " + .@s$;
		case 250: return "S.MATK + " + .@s$;
		case 251: return "RES + " + .@s$;
		case 252: return "MRES + " + .@s$;
		case 253: return "H.PLUS + " + .@s$;
		case 254: return "C.RATE + " + .@s$;
		default: return "Unknow Random Option";
	}
}

 

  • Love 1
  • 0
Posted
14 hours ago, Racaae said:

Hi. It is possible. Here's a example for you.

//===== Script for rAthena by Racaae =========================
//= https://rathena.org/board/topic/142357-question-about-transfer-enchant-npc-random-option/
//===== Additional Comments: ================================= 
//= Modified from Sader1992' enchant npc
//============================================================ 

prontera,165,215,5	script	Costume Enchant Transfer	4_BULL,{
	disable_items;
	mes "[Costume Enchant Transferer]";
	mes "Hello!";
	mes "Do you want to transfer enchantment from your equipped costume to another item?";
	if (.ZenyCost)
		mes "This will cost ^0000FF" + F_InsertComma(.ZenyCost) + "z^000000 only!";
	next;
	if (select("Random Option Transfer", "Enchant Socket Transfer") == 1)
		.@mode = true;
	for(.@i = 0; .@i < getarraysize(.s_all$); .@i++) {
		if (getequipid(.s_all_loc[.@i])>-1)
			set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^E81B02" + getitemname(getequipid(.s_all_loc[.@i])) + "^000000 ]:";
		else
			set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^D6C4E8" + "No Equip" + "^000000 ]:";
	}
	.@input_loc = select(.@armor_menu$) -1;
	mes "[Costume Enchant Transferer]";
	if (getequipid(.s_all_loc[.@input_loc]) < 0){
		mes "You don't have item equipped there.";
		close;
	}
	.@item = getequipid(.s_all_loc[.@input_loc]);
	.@refine = getequiprefinerycnt(.s_all_loc[.@input_loc]);
	.@card0 = getequipcardid(.s_all_loc[.@input_loc],0);
	.@card1 = getequipcardid(.s_all_loc[.@input_loc],1);
	.@card2 = getequipcardid(.s_all_loc[.@input_loc],2);
	.@card3 = getequipcardid(.s_all_loc[.@input_loc],3);
	for(.@i=0; .@i < (MAX_ITEM_RDM_OPT); .@i++) {
		.@r_id[.@i] = getequiprandomoption(.s_all_loc[.@input_loc],.@i,ROA_ID);
		.@r_v[.@i] = getequiprandomoption(.s_all_loc[.@input_loc],.@i,ROA_VALUE);
		.@r_p[.@i] = getequiprandomoption(.s_all_loc[.@input_loc],.@i,ROA_PARAM);
	}
	if (.@mode) {
		if (getarraysize(.@r_id) == 0) {
			mes "This costume has no Random Options...";
			close;
		}
	}
	else if (!.@card0 && !.@card1 && !.@card2 && !.@card3) {
		mes "This costume has no enchants...";
		close;
	}
	mes "Which enchantment to transfer?";
	if (.@mode) {
		for(.@i=0; .@i < 5; .@i++) {
			if (.@r_id[.@i])
				.@slot_menu$ += F_RDMOPT_Name(.@r_id[.@i],.@r_v[.@i]);
			.@slot_menu$ += ":";
		}
		.@input_slot = select(.@slot_menu$) -1;
	}
	else {
		for(.@i=0; .@i < 4; .@i++) {
			if (getequipcardid(.s_all_loc[.@input_loc], .@i))
				.@slot_menu$ += "[ ^E81B02" + getitemname(getequipcardid(.s_all_loc[.@input_loc],.@i)) + "^000000 ]:";
			else
				.@slot_menu$ += ":";
		}
		.@input_slot = select(.@slot_menu$) -1;
	}
	set .@item, getequipid(.s_all_loc[.@input_loc]);
	clear;
	mes "[Costume Enchant Transferer]";
	mes "To what costume in your inventory you want to transfer?";
	next;
	.@armor_menu$ = "";
	for(.@i=0; .@i < getarraysize(.s_all$); .@i++)
		.@armor_menu$ += .s_all$[.@i] + ":";
	.@output_type = select(.@armor_menu$) -1;
	getinventorylist;
	for(.@i = 0; .@i < @inventorylist_count; .@i++) {
		.@item_type = getiteminfo(@inventorylist_id[.@i], ITEMINFO_LOCATIONS);
		.@item_id = @inventorylist_id[.@i];
		if (.@item_type & .s_all_loc2[.@output_type] && !@inventorylist_equip[.@i]) {
			.@item_ref = getarraysize(.@equipment_id_list);
			if (countinarray(.@equipment_id_list, .@item_id))
				continue;
			.@equipment_id_list[.@item_ref] = @inventorylist_id[.@i];
			.@menu_labels$[.@item_ref] = getitemname(@inventorylist_id[.@i]);
		}
	}
	if (!getarraysize(.@equipment_id_list[0])) {
		mes "[Costume Enchant Transferer]";
		mes "There are no items of this category in your inventory.";
		close;
	}
	.@index = select(implode(.@menu_labels$, ":")) - 1;
	.@output_id = .@equipment_id_list[.@index];
	mes "[Costume Enchant Transferer]";
	mes "You selected " + getitemname(.@output_id) + ".";	
	if (countitem(.@output_id) > 1) {
		mes "You have more than one of this item.";
		close;
	}
	getinventorylist;
	.@i2 = inarray(@inventorylist_id, .@output_id);
	.@output_refine = @inventorylist_refine[.@i2];
	.@output_card0 = @inventorylist_card1[.@i2];
	.@output_card1 = @inventorylist_card2[.@i2];
	.@output_card2 = @inventorylist_card3[.@i2];
	.@output_card3 = @inventorylist_card4[.@i2];
	for(.@i = 0; .@i < (MAX_ITEM_RDM_OPT); .@i++) {
		.@output_r_id[.@i] = getd("@inventorylist_option_id" + (.@i + 1) + "[" + .@i2 + "]");
		.@output_r_v[.@i] = getd("@inventorylist_option_value" + (.@i + 1) + "[" + .@i2 + "]");
		.@output_r_p[.@i] = getd("@inventorylist_option_parameter" + (.@i + 1) + "[" + .@i2 + "]");
	}
	if (.@mode) {
		for(.@i = 0; .@i < MAX_ITEM_RDM_OPT; .@i++) {
			if (.@output_r_id[.@i] == 0) {
				.@output_slot = .@i;
				.@ok = true;
				break;
			}
		}
		if (!.@ok) {
			mes "You already have full Random Options in this item.";
			close;
		}
	}
	else {
		mes "Transfer to which slot?";
		.@slot_menu$ = "";
		for(.@i = 0; .@i < 4; .@i++) {
			if (getd(".@output_card" + .@i))
				.@slot_menu$ += "[^E81B02" + getitemname(getd(".@output_card" + .@i)) + "^000000 ]:";
			else
				.@slot_menu$ += "[^D6C4E8" + "Empty" + "^000000 ]:";
		}
		.@output_slot = select(.@slot_menu$) -1;
		if (!.Overwrite) {
			if(getd(".@output_card" + .@output_slot)) {
				mes "You already have enchant in this slot.";
				close;
			}
		}
	}
	clear;
	mes "[Costume Enchant Transferer]";
	if (.@mode)
		mes "Transfer: ^FF7700" + F_RDMOPT_Name(.@r_id[.@input_slot],.@r_v[.@input_slot]) + "^000000";
	else
		mes "Transfer: " + mesitemlink(getequipcardid(.s_all_loc[.@input_loc], .@input_slot));
	mes "^FF0000From: " + getitemname(getequipid(.s_all_loc[.@input_loc])) + "^000000";
	mes "^0000FFTo: " + getitemname(.@output_id) + "^000000";
	mes "Are you sure?";
	next;
	if(select("Cancel.", "Confirm") == 1)
		close;
	mes "[Costume Enchant Transferer]";
	if (.ZenyCost && Zeny < .ZenyCost) {
		mes "Sorry, but you don't have enough zeny.";
		close;
	}
	mes "Stay put while the process is ongoing.";
	close2;
	specialeffect2 EF_MAPPILLAR;
	progressbar "ffff00", .progress_time;

	// anti-hack
	if (callfunc("F_IsEquipIDHack", .s_all_loc[.@input_loc], .@item) || callfunc("F_IsEquipCardHack", .s_all_loc[.@input_loc], .@card0, .@card1, .@card2, .@card3) ||
	    callfunc("F_IsEquipRefineHack", .s_all_loc[.@input_loc], .@refine) ||
	    countitem(.@output_id) != 1) {
		mes "[Costume Enchant Transferer]";
		mes "You switched the item while I wasn't looking! Get out of here!";
		close;
	}

	if (.ZenyCost && Zeny < .ZenyCost) {
		mes "Sorry, but you don't have enough zeny.";
		close;
	}
	Zeny -= .ZenyCost;
	if (.@mode) {
		.@output_r_id[.@output_slot] = .@r_id[.@input_slot];
		.@output_r_v[.@output_slot] = .@r_v[.@input_slot];
		.@output_r_p[.@output_slot] = .@r_p[.@input_slot];
		deletearray .@r_id[.@input_slot], 1;
		deletearray .@r_v[.@input_slot], 1;
		deletearray .@r_p[.@input_slot], 1;
	}
	else {
		setd(".@output_card" + .@output_slot, getd(".@card" + .@input_slot));
		setd(".@card" + .@input_slot, 0);
	}
	delequip .s_all_loc[.@input_loc];
	delitem .@output_id, 1;
	getitem3 .@item, 1, 1, .@input_refine, 0, .@card0, .@card1, .@card2, .@card3,.@r_id,.@r_v,.@r_p;
	getitem3 .@output_id, 1, 1, .@output_refine, 0, .@output_card0, .@output_card1, .@output_card2, .@output_card3,.@output_r_id,.@output_r_v,.@output_r_p;
	equip .@item;
	npctalk "Enchant Transfer successful!", strnpcinfo(0), bc_self;
	end;

OnInit:
	//--------------------------------------------------------------//
	//--------------------   configuration   -----------------------//
	//--------------------------------------------------------------//
	
	//--------------------------------------------------------------//
	//if you want to remove one from the menu you need to remove it down too!! /or add
	//--------------------------------------------------------------//
	setarray .s_all$,"Upper","Middle","Lower","Garment";
	setarray .s_all_loc,EQI_COSTUME_HEAD_TOP,EQI_COSTUME_HEAD_MID,EQI_COSTUME_HEAD_LOW,EQI_COSTUME_GARMENT;
	setarray .s_all_loc2,EQP_COSTUME_HEAD_TOP,EQp_COSTUME_HEAD_MID,EQP_COSTUME_HEAD_LOW,EQP_COSTUME_GARMENT;
	
	//--------------------------------------------------------------//
	//other configuration
	//--------------------------------------------------------------//
	.ZenyCost = 1000000;	//if you don't want zeny requirment set it to 0
	.Overwrite = true;	//if true then you can overwrite the enchant
	.progress_time = 4;	//the time that needed to wait until the socket end
	
	end;
}

 

You need to use this function to display random options in the NPC.

//////////////////////////////////////////////////////////////////////////////////
// Returns Random Option name and value
// -- callfunc "F_RDMOPT_Name",<ROA_ID>{,<Value>{,<2nd value>}};
//////////////////////////////////////////////////////////////////////////////////
function	script	F_RDMOPT_Name	{
	if (getargcount() > 2)
		.@s$ = getarg(1) + "~" + getarg(2);
	else if (getargcount() > 1)
		.@s$ = getarg(1);
	else
		.@s$ = "?";

	if (#langtype = 8) {
		//POR
		switch(getarg(0)){
			case 3: return "FOR +" + .@s$;
			case 6: return "INT +" + .@s$;
			case 7: return "DES +" + .@s$;
			case 8: return "SOR +" + .@s$;
			case 232: return "EXP ganha de Amorfos +" + .@s$ + "%";
			case 233: return "EXP ganha de Morto-Vivos +" + .@s$ + "%";
			case 234: return "EXP ganha de Brutos +" + .@s$ + "%";
			case 235: return "EXP ganha de Plantas +" + .@s$ + "%";
			case 236: return "EXP ganha de Insetos +" + .@s$ + "%";
			case 237: return "EXP ganha de Peixes +" + .@s$ + "%";
			case 238: return "EXP ganha de Demônios +" + .@s$ + "%";
			case 239: return "EXP ganha de Humanoides +" + .@s$ + "%";
			case 240: return "EXP ganha de Anjos +" + .@s$ + "%";
			case 241: return "EXP ganha de Dragões +" + .@s$ + "%";
			case 242: return "EXP ganha de todas raças +" + .@s$ + "%";
		}
	}
	switch(getarg(0)){
		case 1: return "MaxHP +" + .@s$;
		case 2: return "MaxSP +" + .@s$;
		case 3: return "STR +" + .@s$;
		case 4: return "AGI +" + .@s$;
		case 5: return "VIT +" + .@s$;
		case 6: return "INT +" + .@s$;
		case 7: return "DEX +" + .@s$;
		case 8: return "LUK +" + .@s$;
		case 9: return "MaxHP +" + .@s$ + "%";
		case 10: return "MaxSP +" + .@s$ + "%";
		case 11: return "HP regen +" + .@s$ + "%";
		case 12: return "SP regen +" + .@s$ + "%";
		case 13: return "ATK +" + .@s$ + "%";
		case 14: return "MATK +" + .@s$ + "%";
		case 15: return "ASPD +" + .@s$;
		case 16: return "Delay after attack -" + .@s$ + "%";
		case 17: return "ATK +" + .@s$;
		case 18: return "HIT +" + .@s$;
		case 19: return "MATK +" + .@s$;
		case 20: return "DEF +" + .@s$;
		case 21: return "MDEF +" + .@s$;
		case 22: return "FLEE +" + .@s$;
		case 23: return "Perfect dodge +" + .@s$;
		case 24: return "CRIT +" + .@s$;
		case 25: return "Neutral elemental resistance +" + .@s$ + "%";
		case 26: return "Water elemental resistance +" + .@s$ + "%";
		case 27: return "Earth elemental resistance +" + .@s$ + "%";
		case 28: return "Fire elemental resistance +" + .@s$ + "%";
		case 29: return "Wind elemental resistance +" + .@s$ + "%";
		case 30: return "Poison elemental resistance +" + .@s$ + "%";
		case 31: return "Holy elemental resistance +" + .@s$ + "%";
		case 32: return "Shadow elemental resistance +" + .@s$ + "%";
		case 33: return "Ghost elemental resistance +" + .@s$ + "%";
		case 34: return "Undead elemental resistance +" + .@s$ + "%";
		case 35: return "All elemental (except Neutral) resistance +" + .@s$ + "%";
		case 36: return "Neutral monster resistance +" + .@s$ + "%";
		case 37: return "ATK +" + .@s$ + "% against Neutral monster";
		case 38: return "Water monster resistance +" + .@s$ + "%";
		case 39: return "ATK +" + .@s$ + "% against Water monster";
		case 40: return "Earth monster resistance +" + .@s$ + "%";
		case 41: return "ATK +" + .@s$ + "% against Earth monster";
		case 42: return "Fire monster resistance +" + .@s$ + "%";
		case 43: return "ATK +" + .@s$ + "% against Fire monster";
		case 44: return "Wind monster resistance +" + .@s$ + "%";
		case 45: return "ATK +" + .@s$ + "% against Wind monster";
		case 46: return "Poison monster resistance +" + .@s$ + "%";
		case 47: return "ATK +" + .@s$ + "% against Poison monster";
		case 48: return "Holy monster resistance +" + .@s$ + "%";
		case 49: return "ATK +" + .@s$ + "% against Holy monster";
		case 50: return "Shadow monster resistance +" + .@s$ + "%";
		case 51: return "ATK +" + .@s$ + "% against Shadow monster";
		case 52: return "Ghost monster resistance +" + .@s$ + "%";
		case 53: return "ATK +" + .@s$ + "% against Ghost monster";
		case 54: return "Undead monster resistance +" + .@s$ + "%";
		case 55: return "ATK +" + .@s$ + "% against Undead monster";
		case 56: return "Neutral monster magic resistance +" + .@s$ + "%";
		case 57: return "MATK +" + .@s$ + "% against Neutral monster";
		case 58: return "Water monster magic resistance +" + .@s$ + "%";
		case 59: return "MATK +" + .@s$ + "% against Water monster";
		case 60: return "Earth monster magic resistance +" + .@s$ + "%";
		case 61: return "MATK +" + .@s$ + "% against  Earth monster";
		case 62: return "Fire monster magic resistance +" + .@s$ + "%";
		case 63: return "MATK +" + .@s$ + "% against Fire monster";
		case 64: return "Wind monster magic resistance +" + .@s$ + "%";
		case 65: return "MATK +" + .@s$ + "% against Wind monster";
		case 66: return "Poison monster magic resistance +" + .@s$ + "%";
		case 67: return "MATK +" + .@s$ + "% against Poison monster";
		case 68: return "Holy monster magic resistance +" + .@s$ + "%";
		case 69: return "MATK +" + .@s$ + "% against Holy monster";
		case 70: return "Shadow monster magic resistance +" + .@s$ + "%";
		case 71: return "MATK +" + .@s$ + "% against Shadow monster";
		case 72: return "Ghost monster magic resistance +" + .@s$ + "%";
		case 73: return "MATK +" + .@s$ + "% against Ghost monster";
		case 74: return "Undead monster magic resistance +" + .@s$ + "%";
		case 75: return "MATK +" + .@s$ + "% against Undead monster";
		case 76: return "Armor element Neutral";
		case 77: return "Armor element Water";
		case 78: return "Armor element Earth";
		case 79: return "Armor element Fire";
		case 80: return "Armor element Wind";
		case 81: return "Armor element Poison";
		case 82: return "Armor element Holy";
		case 83: return "Armor element Shadow";
		case 84: return "Armor element Ghost";
		case 85: return "Armor element Undead";
		case 87: return "Formless monster resistance +" + .@s$ + "%";
		case 88: return "Undead monster resistance +" + .@s$ + "%";
		case 89: return "Brute monster resistance +" + .@s$ + "%";
		case 90: return "Plant monster resistance +" + .@s$ + "%";
		case 91: return "Insect monster resistance +" + .@s$ + "%";
		case 92: return "Fish monster resistance +" + .@s$ + "%";
		case 93: return "Demon monster resistance +" + .@s$ + "%";
		case 94: return "Demihuman monster resistance +" + .@s$ + "%";
		case 95: return "Angel monster resistance +" + .@s$ + "%";
		case 96: return "Dragon monster resistance +" + .@s$ + "%";
		case 97: return "ATK +" + .@s$ + "% against Formless monster";
		case 98: return "ATK +" + .@s$ + "% against Undead monster";
		case 99: return "ATK +" + .@s$ + "% against Brute monster";
		case 100: return "ATK +" + .@s$ + "% against Plant monster";
		case 101: return "ATK +" + .@s$ + "% against Insect monster";
		case 102: return "ATK +" + .@s$ + "% against Fish monster";
		case 103: return "ATK +" + .@s$ + "% against Demon monster";
		case 104: return "ATK +" + .@s$ + "% against Demihuman monster";
		case 105: return "ATK +" + .@s$ + "% against Angel monster";
		case 106: return "ATK +" + .@s$ + "% against Dragon monster";
		case 107: return "MATK +" + .@s$ + "% against Formless monster";
		case 108: return "MATK +" + .@s$ + "% against Undead monster";
		case 109: return "MATK +" + .@s$ + "% against Brute monster";
		case 110: return "MATK +" + .@s$ + "% against Plant monster";
		case 111: return "MATK +" + .@s$ + "% against Insect monster";
		case 112: return "MATK +" + .@s$ + "% against Fish monster";
		case 113: return "MATK +" + .@s$ + "% against Devil monster";
		case 114: return "MATK +" + .@s$ + "% against Demihuman monster";
		case 115: return "MATK +" + .@s$ + "% against Angel monster";
		case 116: return "MATK +" + .@s$ + "% against Dragon monster";
		case 117: return "CRIT +" + .@s$ + " against Formless monster";
		case 118: return "CRIT +" + .@s$ + " against Undead monster";
		case 119: return "CRIT +" + .@s$ + " against Brute monster";
		case 120: return "CRIT +" + .@s$ + " against Plant monster";
		case 121: return "CRIT +" + .@s$ + " against Insect monster";
		case 122: return "CRIT +" + .@s$ + " against Fish monster";
		case 123: return "CRIT +" + .@s$ + " against Demon monster";
		case 124: return "CRIT +" + .@s$ + " against Demihuman monster";
		case 125: return "CRIT +" + .@s$ + " against Angel monster";
		case 126: return "CRIT +" + .@s$ + " against Dragon monster";
		case 127: return "Pierces " + .@s$ + "% DEF of Formless monster";
		case 128: return "Pierces " + .@s$ + "% DEF of Undead monster";
		case 129: return "Pierces " + .@s$ + "% DEF of Brute monster";
		case 130: return "Pierces " + .@s$ + "% DEF of Plant monster";
		case 131: return "Pierces " + .@s$ + "% DEF of Insect monster";
		case 132: return "Pierces " + .@s$ + "% DEF of Fish monster";
		case 133: return "Pierces " + .@s$ + "% DEF of Demon monster";
		case 134: return "Pierces " + .@s$ + "% DEF of Demihuman monster";
		case 135: return "Pierces " + .@s$ + "% DEF of Angel monster";
		case 136: return "Pierces " + .@s$ + "% DEF of Dragon monster";
		case 137: return "Pierces " + .@s$ + "% MDEF of Formless monster";
		case 138: return "Pierces " + .@s$ + "% MDEF of Undead monster";
		case 139: return "Pierces " + .@s$ + "% MDEF of Brute monster";
		case 140: return "Pierces " + .@s$ + "% MDEF of Plant monster";
		case 141: return "Pierces " + .@s$ + "% MDEF of Insect monster";
		case 142: return "Pierces " + .@s$ + "% MDEF of Fish monster";
		case 143: return "Pierces " + .@s$ + "% MDEF of Demon monster";
		case 144: return "Pierces " + .@s$ + "% MDEF of Demihuman monster";
		case 145: return "Pierces " + .@s$ + "% MDEF of Angel monster";
		case 146: return "Pierces " + .@s$ + "% MDEF of Dragon monster";
		case 147: return "ATK +" + .@s$ + "% against Normal monster";
		case 148: return "ATK +" + .@s$ + "% against Boss monster";
		case 149: return "Normal monster resistance +" + .@s$ + "%";
		case 150: return "Boss monster resistance +" + .@s$ + "%";
		case 151: return "MATK +" + .@s$ + "% against Normal monster";
		case 152: return "MATK +" + .@s$ + "% against Boss monster";
		case 153: return "Pierces " + .@s$ + "% DEF of Normal monster";
		case 154: return "Pierces " + .@s$ + "% DEF of Boss monster";
		case 155: return "Pierces " + .@s$ + "% MDEF of Normal monster";
		case 156: return "Pierces " + .@s$ + "% MDEF of Boss monster";
		case 157: return "ATK +" + .@s$ + "% against Small size monster";
		case 158: return "ATK +" + .@s$ + "% against Medium size monster";
		case 159: return "ATK +" + .@s$ + "% against Large size monster";
		case 160: return "Small monster resistance +" + .@s$ + "%";
		case 161: return "Medium monster resistance +" + .@s$ + "%";
		case 162: return "Large monster resistance +" + .@s$ + "%";
		case 163: return "Nullify weapon's DMG size penalty";
		case 164: return "Critical attack +" + .@s$ + "%";
		case 165: return "Critical DMG -" + .@s$ + "%";
		case 166: return "Long range physical attack +" + .@s$ + "%";
		case 167: return "Long range physical DMG -" + .@s$ + "%";
		case 168: return "Healing skills +" + .@s$ + "%";
		case 169: return "Restoration gained from Healing skills +" + .@s$ + "%";
		case 170: return "Variable cast time -" + .@s$ + "%";
		case 171: return "After cast delay -" + .@s$ + "%";
		case 172: return "Reduces SP cost by " + .@s$ + "%";
		case 175: return "Weapon element Neutral";
		case 176: return "Weapon element Water";
		case 177: return "Weapon element Earth";
		case 178: return "Weapon element Fire";
		case 179: return "Weapon element Wind";
		case 180: return "Weapon element Poison";
		case 181: return "Weapon element Holy";
		case 182: return "Weapon element Shadow";
		case 183: return "Weapon element Ghost";
		case 184: return "Weapon element Undead";
		case 185: return "Indestructible in battle";
		case 186: return "Indestructible in battle";
		case 187: return "MATK against Small size monster +" + .@s$ + "%";
		case 188: return "MATK against Medium size monster +" + .@s$ + "%";
		case 189: return "MATK against Large size monster +" + .@s$ + "%";
		case 190: return "Small monster magic resistance +" + .@s$ + "%";
		case 191: return "Medium monster magic resistance +" + .@s$ + "%";
		case 192: return "Large monster magic resistance +" + .@s$ + "%";
		case 193: return "Elemental attacks resistance +" + .@s$ + "%";
		case 194: return "Formless monster resistance +" + .@s$ + "%";
		case 195: return "Undead monster resistance +" + .@s$ + "%";
		case 196: return "Brute monster resistance +" + .@s$ + "%";
		case 197: return "Plant monster resistance +" + .@s$ + "%";
		case 198: return "Insect monster resistance +" + .@s$ + "%";
		case 199: return "Fish monster resistance +" + .@s$ + "%";
		case 200: return "Demon monster resistance +" + .@s$ + "%";
		case 201: return "Demihuman monster resistance +" + .@s$ + "%";
		case 202: return "Angel monster resistance +" + .@s$ + "%";
		case 203: return "Dragon monster resistance +" + .@s$ + "%";
		case 206: return "Demi-Human players resistance + " + .@s$ + "%";
		case 207: return "Doram players resistance +" + .@s$ + "%";
		case 208: return "ATK against Demi-Human players +" + .@s$ + "%";
		case 209: return "ATK against Doram players +" + .@s$ + "%";
		case 210: return "MATK against Demi-Human players +" + .@s$ + "%";
		case 211: return "MATK against Doram players +" + .@s$ + "%";
		case 212: return "Critical +" + .@s$ + " for Demi-Human players";
		case 213: return "Critical +" + .@s$ + " for Doram players";
		case 214: return "Pierces " + .@s$ + "% DEF of Demi-Human players";
		case 215: return "Pierces " + .@s$ + "% DEF of Doram players";
		case 216: return "Pierces " + .@s$ + "% MDEF of Demi-Human players";
		case 217: return "Pierces " + .@s$ + "% MDEF of Doram players";
		case 218: return "Received reflected DMG -" + .@s$ + "%";
		case 219: return "Melee physical DMG +" + .@s$ + "%";
		case 220: return "Melee physical DMG -" + .@s$ + "%";
		case 221: return "Neutral elemental magic skill DMG +" + .@s$ + "%";
		case 222: return "Water elemental magic skill DMG +" + .@s$ + "%";
		case 223: return "Earth elemental magic skill DMG +" + .@s$ + "%";
		case 224: return "Fire elemental magic skill DMG +" + .@s$ + "%";
		case 225: return "Wind elemental magic skill DMG +" + .@s$ + "%";
		case 226: return "Poison elemental magic skill DMG +" + .@s$ + "%";
		case 227: return "Holy elemental magic skill DMG +" + .@s$ + "%";
		case 228: return "Shadow elemental magic skill DMG +" + .@s$ + "%";
		case 229: return "Ghost elemental magic skill DMG +" + .@s$ + "%";
		case 230: return "Undead elemental magic skill DMG +" + .@s$ + "%";
		case 231: return "All elemental magic skill DMG +" + .@s$ + "%";
		case 232: return "EXP gained from Formless race +" + .@s$ + "%";
		case 233: return "EXP gained from Undead race +" + .@s$ + "%";
		case 234: return "EXP gained from Brute race +" + .@s$ + "%";
		case 235: return "EXP gained from Plant race +" + .@s$ + "%";
		case 236: return "EXP gained from Insect race +" + .@s$ + "%";
		case 237: return "EXP gained from Fish race +" + .@s$ + "%";
		case 238: return "EXP gained from Demon race +" + .@s$ + "%";
		case 239: return "EXP gained from Demi-Human race +" + .@s$ + "%";
		case 240: return "EXP gained from Angel race +" + .@s$ + "%";
		case 241: return "EXP gained from Dragon race +" + .@s$ + "%";
		case 242: return "EXP gained from all races +" + .@s$ + "%";
		case 243: return "POW + " + .@s$;
		case 244: return "SPL + " + .@s$;
		case 245: return "STA + " + .@s$;
		case 246: return "WIS + " + .@s$;
		case 247: return "CON + " + .@s$;
		case 248: return "CRT + " + .@s$;
		case 249: return "P.ATK + " + .@s$;
		case 250: return "S.MATK + " + .@s$;
		case 251: return "RES + " + .@s$;
		case 252: return "MRES + " + .@s$;
		case 253: return "H.PLUS + " + .@s$;
		case 254: return "C.RATE + " + .@s$;
		default: return "Unknow Random Option";
	}
}

 

Thank you for replying, I'll try this one. Hope you're always here to guide and help me! ❤️ ^^

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...