Advertisement
existence_dev92

Enchant Ragnarok M: Eternal Love

Dec 23rd, 2019
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.45 KB | None | 0 0
  1. veil,154,171,3 script Cat Friend 112,{
  2. function Add;
  3. mes .@npc_name$ = "[Cat Friend]";
  4. mes "Select an enchant type from menu below";
  5. .@menu = select("Basic Enchantment:Intermediate Enchantment:Advanced Enchantment");
  6. clear;
  7. setarray .@indices[1], EQI_ARMOR, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R;
  8. for (.@i = 1; .@i <= 10; .@i+=1) {
  9. // Shield can't be enchanted.
  10. if (getequipisequiped(.@indices[.@i])) {
  11. .@avail = 1;
  12. .@menu$ += getequipname(.@indices[.@i]);
  13. }
  14. .@menu$ += ":";
  15. }
  16. mes .@npc_name$;
  17. if (.@avail == 0) {
  18. mes "Please equip an equipment to enchant.";
  19. close;
  20. }
  21. setarray .@type$, "^777777Basic", "^5FCCCCIntermediate", "^FF77FFAdvanced";
  22. mes "Enchantment Type : "+.@type$[.@menu-1]+"^000000";
  23. mes "Select an equip to enchant";
  24. .@part = .@indices[select(.@menu$)];
  25. .@refinerycnt = getequiprefinerycnt(.@part); //save refinery count
  26. if (.@refinery >=6)
  27. .@ComboBonusIsActivated = 1;
  28. freeloop(1);
  29. // .@a$ = variable for enchant name (string).
  30. // .@b = min value for enchant.
  31. // .@c = max value for enchant.
  32. switch(.@menu) {
  33. case 1: // Basic Enchantment.
  34. Add(.@opt, RDMOPT_VAR_STRAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "STR", 1, 4);
  35. Add(.@opt, RDMOPT_VAR_AGIAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "AGI", 1, 4);
  36. Add(.@opt, RDMOPT_VAR_VITAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "VIT", 1, 4);
  37. Add(.@opt, RDMOPT_VAR_INTAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "INT", 1, 4);
  38. Add(.@opt, RDMOPT_VAR_DEXAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "DEX", 1, 4);
  39. Add(.@opt, RDMOPT_VAR_LUKAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "LUK", 1, 4);
  40. // Garment, Shoes & Accessory didn't have Stats except Luk.
  41.  
  42. // Different max value for LUK.
  43. Add(.@opt, RDMOPT_VAR_LUKAMOUNT, .@part, EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "LUK", 1, 2);
  44.  
  45. Add(.@opt, RDMOPT_VAR_MAXHPAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Max HP", 1, 160);
  46. Add(.@opt, RDMOPT_VAR_MAXSPAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Max SP", 1, 16);
  47. Add(.@opt, RDMOPT_VAR_ATTPOWER, .@part, EQI_ARMOR|EQI_HAND_R|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Atk", 1, 8);
  48. Add(.@opt, RDMOPT_VAR_ATTMPOWER, .@part, EQI_ARMOR|EQI_HAND_R|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "M.Atk", 1, 8);
  49. Add(.@opt, RDMOPT_VAR_ITEMDEFPOWER, .@part, EQI_ARMOR|EQI_HAND_R|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Def", 1, 4);
  50. Add(.@opt, RDMOPT_VAR_MDEFPOWER, .@part, EQI_ARMOR|EQI_HAND_R|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "M.Def", 1, 8);
  51. break;
  52. case 2: // Intermediate Enchantment.
  53. Add(.@opt, RDMOPT_VAR_STRAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "STR", 2, 8);
  54. Add(.@opt, RDMOPT_VAR_AGIAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "AGI", 2, 8);
  55. Add(.@opt, RDMOPT_VAR_VITAMOUNT, .@part, EQI_GARMENT, .@a$, .@b, .@c, "VIT", 2, 8);
  56. Add(.@opt, RDMOPT_VAR_INTAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "INT", 2, 8);
  57. Add(.@opt, RDMOPT_VAR_DEXAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "DEX", 2, 8);
  58. Add(.@opt, RDMOPT_VAR_LUKAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "LUK", 2, 8);
  59. Add(.@opt, RDMOPT_VAR_LUKAMOUNT, .@part, EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "LUK", 2, 6);
  60.  
  61. Add(.@opt, RDMOPT_VAR_MAXHPAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Max HP", 20, 240);
  62. Add(.@opt, RDMOPT_VAR_MAXHPAMOUNT, .@part, EQI_GARMENT, .@a$, .@b, .@c, "Max HP", 20, 250);
  63.  
  64. // Max SP have different value for min max
  65. Add(.@opt, RDMOPT_VAR_MAXSPAMOUNT, .@part, EQI_ARMOR, .@a$, .@b, .@c, "Max SP", 20, 240);
  66. Add(.@opt, RDMOPT_VAR_MAXSPAMOUNT, .@part, EQI_HAND_R|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Max SP", 8, 24);
  67. Add(.@opt, RDMOPT_VAR_MAXSPAMOUNT, .@part, EQI_GARMENT, .@a$, .@b, .@c, "Max SP", 8, 25);
  68. Add(.@opt, RDMOPT_VAR_ATTPOWER, .@part, EQI_GARMENT, .@a$, .@b, .@c, "Atk", 5, 12);
  69. Add(.@opt, RDMOPT_VAR_ATTMPOWER, .@part, EQI_GARMENT, .@a$, .@b, .@c, "M.Atk", 5, 12);
  70. Add(.@opt, RDMOPT_VAR_MDEFPOWER, .@part, EQI_GARMENT, .@a$, .@b, .@c, "M.Def", 5, 12);
  71.  
  72. Add(.@opt, RDMOPT_VAR_ATTPOWER, .@part, EQI_ARMOR|EQI_HAND_R|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Atk", 4, 12);
  73. Add(.@opt, RDMOPT_VAR_ATTMPOWER, .@part, EQI_ARMOR|EQI_HAND_R|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "M.Atk", 4, 12);
  74. Add(.@opt, RDMOPT_VAR_ITEMDEFPOWER, .@part, EQI_ARMOR|EQI_HAND_R|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Def", 2, 6);
  75. Add(.@opt, RDMOPT_VAR_MDEFPOWER, .@part, EQI_ARMOR|EQI_HAND_R|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "M.Def", 4, 12);
  76. Add(.@opt, RDMOPT_VAR_HITSUCCESSVALUE, .@part, EQI_ARMOR|EQI_HAND_R|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Hit", 1, 5);
  77. Add(.@opt, RDMOPT_VAR_CRITICALSUCCESSVALUE, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "Critical", 1, 5);
  78. Add(.@opt, RDMOPT_VAR_PLUSAVOIDSUCCESSVALUE, .@part, EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Flee", 1, 5);
  79.  
  80. Add(.@opt, RDMOPT_VAR_MAXHPPERCENT, .@part, EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Max HP%%", 1, 5);
  81. Add(.@opt, RDMOPT_VAR_MAXSPPERCENT, .@part, EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Max SP%%", 1, 5);
  82. break;
  83. case 3: // Advanced Enchantment.
  84. Add(.@opt, RDMOPT_VAR_STRAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "STR", 4, 10);
  85. Add(.@opt, RDMOPT_VAR_AGIAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "AGI", 4, 10);
  86. Add(.@opt, RDMOPT_VAR_VITAMOUNT, .@part, EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "VIT", 4, 10);
  87. Add(.@opt, RDMOPT_VAR_INTAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "INT", 4, 10);
  88. Add(.@opt, RDMOPT_VAR_DEXAMOUNT, .@part, EQI_ARMOR|EQI_HAND_R, .@a$, .@b, .@c, "DEX", 4, 10);
  89. Add(.@opt, RDMOPT_VAR_LUKAMOUNT, .@part, EQI_HAND_R, .@a$, .@b, .@c, "LUK", 4, 10);
  90. Add(.@opt, RDMOPT_VAR_LUKAMOUNT, .@part, EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "LUK", 4, 8);
  91.  
  92. Add(.@opt, RDMOPT_VAR_MAXHPAMOUNT, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Max HP", 40, 400);
  93. Add(.@opt, RDMOPT_VAR_MAXHPPERCENT, .@part, EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Max HP%%", 2, 10);
  94. Add(.@opt, RDMOPT_VAR_MAXSPAMOUNT, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Max SP", 10, 80);
  95. Add(.@opt, RDMOPT_VAR_MAXSPPERCENT, .@part, EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Max SP%%", 1, 5);
  96. Add(.@opt, RDMOPT_VAR_ATTPOWER, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Atk", 8, 40);
  97. Add(.@opt, RDMOPT_VAR_ATTMPOWER, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "M.Atk", 8, 40);
  98. Add(.@opt, RDMOPT_VAR_ITEMDEFPOWER, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Def", 4, 20);
  99. Add(.@opt, RDMOPT_VAR_MDEFPOWER, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "M.Def", 6, 20);
  100. Add(.@opt, RDMOPT_VAR_HITSUCCESSVALUE, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Hit", 3, 20);
  101. Add(.@opt, RDMOPT_VAR_CRITICALSUCCESSVALUE, .@part, EQI_HAND_R, .@a$, .@b, .@c, "Critical", 1, 10);
  102. Add(.@opt, RDMOPT_VAR_CRITICALSUCCESSVALUE, .@part, EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Critical", 5, 10);
  103. Add(.@opt, RDMOPT_VAR_PLUSAVOIDSUCCESSVALUE, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Flee", 3, 20);
  104. Add(.@opt, RDMOPT_DAMAGE_CRI_USER, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Crit. Res.", 1, 10);
  105. Add(.@opt, RDMOPT_DAMAGE_CRI_TARGET, .@part, EQI_HAND_R|EQI_ARMOR|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Crit. Dmg%%", 1, 10);
  106. Add(.@opt, RDMOPT_DAMAGE_CRI_TARGET, .@part, EQI_GARMENT, .@a$, .@b, .@c, "Crit. Dmg%%", 1, 5);
  107.  
  108. // Add(.@opt, RDMOPT_VAR_STRAMOUNT, .@part, EQI_HAND_R|EQI_ARMOR|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Crit. Def.%%", 1, 10);
  109. // Add(.@opt, RDMOPT_VAR_STRAMOUNT, .@part, EQI_GARMENT, .@a$, .@b, .@c, "Crit. Def.%%", 1, 5);
  110.  
  111. Add(.@opt, RDMOPT_HEAL_VALUE, .@part, EQI_HAND_R|EQI_SHOES, .@a$, .@b, .@c, "Healing Increase%%", 1, 5);
  112. Add(.@opt, RDMOPT_HEAL_VALUE, .@part, EQI_GARMENT, .@a$, .@b, .@c, "Healing Increase%%", 1, 4);
  113. Add(.@opt, RDMOPT_HEAL_MODIFY_PERCENT, .@part, EQI_ARMOR|EQI_SHOES, .@a$, .@b, .@c, "Healing Received%%", 1, 5);
  114. Add(.@opt, RDMOPT_HEAL_MODIFY_PERCENT, .@part, EQI_GARMENT, .@a$, .@b, .@c, "Healing Received%%", 1, 4);
  115. Add(.@opt, RDMOPT_CLASS_DAMAGE_NORMAL_TARGET, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Dmg Inc%%.", 1, 4);
  116. Add(.@opt, RDMOPT_CLASS_DAMAGE_NORMAL_USER, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "Dmg Reduc%%.", 1, 4);
  117. Add(.@opt, RDMOPT_VAR_PLUSASPDPERCENT, .@part, EQI_HAND_R|EQI_ARMOR|EQI_SHOES|EQI_ACC_L|EQI_ACC_R, .@a$, .@b, .@c, "ASPD%%", 1, 4);
  118. Add(.@opt, RDMOPT_VAR_PLUSASPDPERCENT, .@part, EQI_GARMENT, .@a$, .@b, .@c, "ASPD%%", 1, 25);
  119. // Add(.@opt, RDMOPT_RES_SILENCE, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Silence Resistance%%", 1, 25);
  120. // Add(.@opt, RDMOPT_RES_FREEZE, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Freeze Resistance%%", 1, 25);
  121. // Add(.@opt, RDMOPT_RES_STONE, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Stone Resistance%%", 1, 25);
  122. // Add(.@opt, RDMOPT_RES_STUN, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Stun Resistance%%", 1, 25);
  123. // Add(.@opt, RDMOPT_RES_BLIND, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Blind Resistance%%", 1, 25);
  124. // Add(.@opt, RDMOPT_RES_POISON, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Poison Resistance%%", 1, 25);
  125. // Add(.@opt, RDMOPT_RES_SNARE, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Snare Resistance%%", 1, 25);
  126. // Add(.@opt, RDMOPT_RES_FEAR, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Fear Resistance%%", 1, 25);
  127. // Add(.@opt, RDMOPT_RES_CURSE, .@part, EQI_HAND_R|EQI_ARMOR|EQI_GARMENT|EQI_SHOES, .@a$, .@b, .@c, "Curse Resistance%%", 1, 25);
  128. break;
  129. }
  130. freeloop(0);
  131. clear;
  132. mes .@npc_name$;
  133. mes "Please chose an action from menu bellow";
  134. .@action = select("See Possible Enchantment List:Enchant ^0000FF"+getequipname(.@part));
  135. clear;
  136. mes .@npc_name$;
  137. if (.@action == 1) { // See Possible Enchantment List
  138. // mes "Currently not available.";
  139. mes "Enchantment Type : "+.@type$[.@menu-1]+"^000000";
  140. for (.@i = 0; .@i < getarraysize(.@a$); .@i++) {
  141. mes "- "+sprintf(.@a$[.@i]+" +%d~%d", .@b[.@i], .@c[.@i]);
  142. }
  143. close;
  144. }
  145. // Enchant Equip
  146. mes "Wait a momment, Please don't move.";
  147. progressbar "0xFFFFFF",1;
  148. specialeffect2 154;
  149. clear;
  150. mes .@npc_name$;
  151. mes "Result :";
  152. //for (.@i = 0; .@i < 3; .@i++) {
  153. // .@rand = rand(getarraysize(.@a$));
  154. // .@val = rand(.@b[.@rand], .@c[.@rand]);
  155. // .@rnd_opt[.@i] = .@opt[.@rand];
  156. // mes "- Slot "+(.@i+1)+". "+sprintf(.@a$[.@rand]+" +%d", .@val);
  157. // setrandomoption(.@part, .@i, .@opt[.@rand], .@val, 0);
  158. //}
  159.  
  160. freeloop(1);
  161. .@i = 0;
  162. while(1) {
  163. deletearray .@optlist, getarraysize(.@optlist);
  164. .@rarity = rand(100);
  165. switch(.@menu) {
  166. case 1: // Basic Enchantment
  167. if (.@rarity < 15) {
  168. setarray .@optlist, RDMOPT_VAR_STRAMOUNT, RDMOPT_VAR_AGIAMOUNT, RDMOPT_VAR_VITAMOUNT,
  169. RDMOPT_VAR_INTAMOUNT, RDMOPT_VAR_DEXAMOUNT, RDMOPT_VAR_LUKAMOUNT;
  170. }
  171. else {
  172. setarray .@optlist, RDMOPT_VAR_MAXHPAMOUNT, RDMOPT_VAR_MAXSPAMOUNT, RDMOPT_VAR_ATTPOWER,
  173. RDMOPT_VAR_ATTMPOWER, RDMOPT_VAR_ITEMDEFPOWER, RDMOPT_VAR_MDEFPOWER;
  174. }
  175. break;
  176. case 2: // Intermediate Enchantment
  177. if (.@rarity < 10) {
  178. setarray .@optlist, RDMOPT_VAR_STRAMOUNT, RDMOPT_VAR_AGIAMOUNT, RDMOPT_VAR_VITAMOUNT,
  179. RDMOPT_VAR_INTAMOUNT, RDMOPT_VAR_DEXAMOUNT, RDMOPT_VAR_LUKAMOUNT;
  180. }
  181. else {
  182. setarray .@optlist, RDMOPT_VAR_MAXHPAMOUNT, RDMOPT_VAR_MAXSPAMOUNT, RDMOPT_VAR_ATTPOWER,
  183. RDMOPT_VAR_ATTMPOWER, RDMOPT_VAR_ITEMDEFPOWER, RDMOPT_VAR_MDEFPOWER,
  184. RDMOPT_VAR_HITSUCCESSVALUE, RDMOPT_VAR_CRITICALSUCCESSVALUE,
  185. RDMOPT_VAR_PLUSAVOIDSUCCESSVALUE, RDMOPT_VAR_MAXHPPERCENT, RDMOPT_VAR_MAXSPPERCENT;
  186. }
  187. break;
  188. case 3: // Advanced Enchantment
  189. if (.@rarity < 5) {
  190. setarray .@optlist, RDMOPT_VAR_STRAMOUNT, RDMOPT_VAR_AGIAMOUNT, RDMOPT_VAR_VITAMOUNT,
  191. RDMOPT_VAR_INTAMOUNT, RDMOPT_VAR_DEXAMOUNT, RDMOPT_VAR_LUKAMOUNT;
  192. }
  193. else if (.@rarity > 4 && .@rarity < 75) {
  194. setarray .@optlist, RDMOPT_VAR_MAXHPAMOUNT, RDMOPT_VAR_MAXSPAMOUNT, RDMOPT_VAR_ATTPOWER,
  195. RDMOPT_VAR_ATTMPOWER, RDMOPT_VAR_ITEMDEFPOWER, RDMOPT_VAR_MDEFPOWER,
  196. RDMOPT_VAR_HITSUCCESSVALUE, RDMOPT_VAR_CRITICALSUCCESSVALUE,
  197. RDMOPT_VAR_PLUSAVOIDSUCCESSVALUE, RDMOPT_VAR_MAXHPPERCENT, RDMOPT_VAR_MAXSPPERCENT,
  198. RDMOPT_DAMAGE_CRI_USER, RDMOPT_DAMAGE_CRI_TARGET, RDMOPT_HEAL_VALUE,
  199. RDMOPT_HEAL_MODIFY_PERCENT, RDMOPT_CLASS_DAMAGE_NORMAL_TARGET,
  200. RDMOPT_CLASS_DAMAGE_NORMAL_USER, RDMOPT_VAR_PLUSASPDPERCENT;
  201. }
  202. else {
  203. setarray .@optlist, RDMOPT_RES_SILENCE, RDMOPT_RES_FREEZE, RDMOPT_RES_STONE,
  204. RDMOPT_RES_STUN, RDMOPT_RES_BLIND, RDMOPT_RES_POISON,
  205. RDMOPT_RES_SNARE, RDMOPT_RES_FEAR, RDMOPT_RES_CURSE;
  206. }
  207. break;
  208. }
  209.  
  210. .@rand = rand(getarraysize(.@a$));
  211.  
  212. // Rarity check.
  213. if (inarray(.@optlist, .@opt[.@rand]) == -1) continue;
  214.  
  215. .@val = rand(.@b[.@rand], .@c[.@rand]);
  216.  
  217. // check if this option has been there before?
  218. // if yes continue!
  219. if (inarray(.@rnd_opt, .@opt[.@rand]) > -1)
  220. continue;
  221.  
  222. .@rnd_opt[.@i] = .@opt[.@rand];
  223. mes "- Slot "+(.@i+1)+". "+sprintf(.@a$[.@rand]+" +%d", .@val);
  224. setrandomoption(.@part, .@i, .@opt[.@rand], .@val, 0);
  225. .@i++;
  226. if (.@i > 2) break;
  227. }
  228. freeloop(0);
  229.  
  230. // Option Combo Bonus!
  231. if (.@ComboBonusIsActivated) {
  232. switch(.@menu) {
  233. case 2: // Intermediate.
  234. if (.@part == EQI_ARMOR || .@part == EQI_HAND_R) {
  235. if (inarray(.@rnd_opt, RDMOPT_VAR_STRAMOUNT) > -1 && inarray(.@rnd_opt, RDMOPT_VAR_ATTPOWER) > -1)
  236. setarray .@ext_opt, RDMOPT_CLASS_IGNORE_DEF_PERCENT_NORMAL, 5, 10, 15, 20;
  237. else if (inarray(.@rnd_opt, RDMOPT_VAR_INTAMOUNT) > -1 && inarray(.@rnd_opt, RDMOPT_VAR_ATTMPOWER) > -1)
  238. setarray .@ext_opt, RDMOPT_CLASS_IGNORE_DEF_PERCENT_NORMAL, 2, 5, 7, 10;
  239. else if (inarray(.@rnd_opt, RDMOPT_VAR_DEXAMOUNT) > -1 && inarray(.@rnd_opt, RDMOPT_VAR_HITSUCCESSVALUE) > -1)
  240. setarray .@ext_opt, RDMOPT_RANGE_ATTACK_DAMAGE_TARGET, 2, 5, 7, 10;
  241. else if (inarray(.@rnd_opt, RDMOPT_VAR_AGIAMOUNT) > -1 && inarray(.@rnd_opt, RDMOPT_VAR_LUKAMOUNT) > -1)
  242. setarray .@ext_opt, RDMOPT_DAMAGE_CRI_TARGET, 5, 10, 15, 20;
  243. }
  244. else if (.@part == EQI_GARMENT || .@part == EQI_SHOES) {
  245. if (inarray(.@rnd_opt, RDMOPT_VAR_MAXSPPERCENT) > -1 && inarray(.@rnd_opt, RDMOPT_VAR_ATTMPOWER) > -1)
  246. setarray .@ext_opt, RDMOPT_CLASS_MDAMAGE_NORMAL, 2, 4, 6, 8;
  247. }
  248. break;
  249. case 3: // Advanced.
  250. if (.@part == EQI_ARMOR || .@part == EQI_HAND_R) {
  251. if (inarray(.@rnd_opt, RDMOPT_VAR_STRAMOUNT) > -1 && inarray(.@rnd_opt, RDMOPT_VAR_ATTPOWER) > -1)
  252. setarray .@ext_opt, RDMOPT_CLASS_IGNORE_DEF_PERCENT_NORMAL, 5, 10, 15, 20;
  253. else if (inarray(.@rnd_opt, RDMOPT_VAR_INTAMOUNT) > -1 && inarray(.@rnd_opt, RDMOPT_VAR_ATTMPOWER) > -1)
  254. setarray .@ext_opt, RDMOPT_CLASS_IGNORE_DEF_PERCENT_NORMAL, 2, 5, 7, 10;
  255. else if (inarray(.@rnd_opt, RDMOPT_VAR_DEXAMOUNT) > -1 && inarray(.@rnd_opt, RDMOPT_VAR_HITSUCCESSVALUE) > -1)
  256. setarray .@ext_opt, RDMOPT_RANGE_ATTACK_DAMAGE_TARGET, 2, 5, 7, 10;
  257. else if (inarray(.@rnd_opt, RDMOPT_VAR_AGIAMOUNT) > -1 && inarray(.@rnd_opt, RDMOPT_VAR_LUKAMOUNT) > -1)
  258. setarray .@ext_opt, RDMOPT_DAMAGE_CRI_TARGET, 5, 10, 15, 20;
  259. else if (inarray(.@rnd_opt, RDMOPT_VAR_PLUSASPDPERCENT) > -1 && inarray(.@rnd_opt, RDMOPT_CLASS_DAMAGE_NORMAL_TARGET) > -1)
  260. setarray .@ext_opt, RDMOPT_CLASS_DAMAGE_NORMAL_TARGET, 2, 5, 7, 10;
  261. }
  262. else if (.@part == EQI_ACC_L || .@part == EQI_ACC_R) {
  263. if (inarray(.@rnd_opt, RDMOPT_VAR_PLUSASPDPERCENT) > -1 && inarray(.@rnd_opt, RDMOPT_CLASS_DAMAGE_NORMAL_TARGET) > -1)
  264. setarray .@ext_opt, RDMOPT_CLASS_DAMAGE_NORMAL_TARGET, 2, 5, 7, 10;
  265. else if (inarray(.@rnd_opt, RDMOPT_VAR_CRITICALSUCCESSVALUE) > -1 && inarray(.@rnd_opt, RDMOPT_VAR_ITEMDEFPOWER) > -1)
  266. setarray .@ext_opt, RDMOPT_CLASS_DAMAGE_NORMAL_USER, 2, 5, 7, 10;
  267. }
  268. break;
  269. default:
  270. break;
  271. }
  272. .@ext_size = getarraysize(.@ext_opt);
  273. if (.@ext_size) {
  274. copyarray .@ext_val, .@ext_opt[1], .@ext_size-1;
  275. .@rand_val = rand(getarraysize(.@ext_val));
  276. mes "- Get extra Advanced Option.";
  277. setrandomoption(.@part, 3, .@ext_opt[0], .@ext_val[.@rand_val], 0);
  278. }
  279. }
  280.  
  281. next;
  282. mes .@npc_name$;
  283. mes "Done! please come again if you feel the enchantment isn't good enough for you.";
  284. close;
  285.  
  286. function Add {
  287. if (getarg(3)&getarg(2)) {
  288. set getelementofarray(getarg(0), getarraysize(getarg(0))), getarg(1);
  289. set getelementofarray(getarg(4), getarraysize(getarg(4))), getarg(7);
  290. set getelementofarray(getarg(5), getarraysize(getarg(5))), getarg(8);
  291. set getelementofarray(getarg(6), getarraysize(getarg(6))), getarg(9);
  292. }
  293. return;
  294. }
  295.  
  296. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement