Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //================================================================
- // Tier Stone Refining ( Up to +10 ver)
- // Written By Angst, equipment menu snippet taken from refiner.txt.
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // Using 'Catalyst' items, in this case Enhancement Stone; requires the
- // player to have at least 10 in inventory to get the full chance to refine.
- // Support Stone prevents item breaking should the refinement process fail.
- //
- // 'Tier Stone' 1-4 + 'Enhancement Stone' x10 = 100%
- // 'Tier Stone' 5-6 + 'Enhancement Stone' x10 = 95%
- // 'Tier Stone' 7-8 + 'Enhancement Stone' x10 = 85%
- // 'Tier Stone' 9-10 + 'Enhancement Stone' x10 = 75%
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- // v1.3
- //
- // Item Db2 Inserts:
- // If you change the id' of these then be sure to change them in the Settings below, too.
- //
- //32098,Support_Stone,Support Stone,11,,,,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
- //32099,Enhancement_Stone,Enhancement Stone,11,,,,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
- //================================================================
- function script AMRA {
- //------ SETTINGS ---------------------------------------------------------------------
- // Enhancement Stone Item_ID
- set .enstid, 32099;
- // Support Stone Item_ID
- set .sustid, 32098;
- //Tier Stone ID's 1-10
- set .ts0, 32100;
- set .ts1, 32101;
- set .ts2, 32102;
- set .ts3, 32103;
- set .ts4, 32104;
- set .ts5, 32105;
- set .ts6, 32106;
- set .ts7, 32107;
- set .ts8, 32108;
- set .ts9, 32109;
- set .ts10, 32110;
- //============================================================
- set .@id, getarg(0);
- if (.@id == .ts0) {
- if (countitem(.@id) > 2) {
- set .@del, ((countitem(.@id)/3)*3);
- getitem (1 + .@id), (countitem(.@id)/3);
- delitem .@id, .@del;
- }
- end;
- }
- if (.@id >= .ts1 && .@id <= .ts9) {
- prompt "Merge 3 "+getitemname(.@id)+"'s","Apply "+getitemname(.@id)+" to Equipment";
- if (@menu == 1) {
- if (countitem(.@id) == 2) {
- message strcharinfo(0), "Merge Failed: "+(3 - countitem(.@id))+" more "+getitemname(.@id)+" is needed to merge.";
- close;
- }
- if (countitem(.@id) == 1) {
- message strcharinfo(0), "Merge Failed: "+(3 - countitem(.@id))+" more "+getitemname(.@id)+"'s are needed to merge.";
- close;
- } else {
- set .@del, ((countitem(.@id)/3)*3);
- getitem (1 + .@id), (countitem(.@id)/3);
- delitem .@id, .@del;
- if (countitem(.@id) == 1) dispbottom "One "+getitemname(.@id)+" could not merge.";
- if (countitem(.@id) == 2) dispbottom "Two "+getitemname(.@id)+"'s could not merge.";
- }
- close;
- }
- if (@menu == 2) goto AMRACOMB;
- if (@menu == 255) close;
- }
- if (.@id == .ts10) {
- prompt "Apply to Equipment";
- if (@menu == 1) goto AMRACOMB;
- }
- AMRACOMB:
- set .@id, getarg(0);
- mes "Select what you wish to refine.";
- mes " ";
- mes "You can refine an item up to +"+(.@id - .ts0)+" using this stone.";
- setarray .@position$[1], "Head (Upper)","Armor","Left hand","Right hand","Robe","Shoes","Accessory (Left)","Accessory (Right)","Head (Mid)","Head (Lower)";
- set .@menu$,"";
- for (set .@i, 1; .@i <= 10; set .@i, .@i + 1) {
- if (getequipisequiped(.@i))
- if (getequiprefinerycnt(.@i) > 0) {
- set .@menu$, .@menu$ + .@position$[.@i] + " - " + "[+" + getequiprefinerycnt(.@i) + " " + getequipname(.@i) + " [" + getitemslots(.@i) + "] ]";
- } else {
- set .@menu$, .@menu$ + .@position$[.@i] + " - " + "[" + getequipname(.@i) + " [" + getitemslots(.@i) + "] ]";
- }
- set .@menu$, .@menu$ + ":";
- }
- set .@part, select(.@menu$);
- if (!getequipisequiped(.@part)) {
- next;
- mes "Nothing equipped in that slot.";
- close;
- }
- if (!getequipisenableref(.@part)) {
- next;
- mes "This item is not refineable.";
- close;
- }
- if (!getequipisidentify(.@part)) {
- next;
- mes "This has not been identified. Please identify it before attempting to refine.";
- close;
- }
- if (getequiprefinerycnt(.@part) >= 10) {
- next;
- mes "Max level reached, the process has failed.";
- close;
- }
- close2;
- if (.@id >= 1) {
- set .@tlevel, (.@id - .ts0);
- set .@currefine, getequiprefinerycnt(.@part);
- if (getequiprefinerycnt(.@part) > 0) {
- if (.@currefine == .@tlevel) {
- mes "You cannot use this stone on your " + getequipname(.@part) + ".";
- mes "Current equipment's refinement is equal to the stone's power.";
- close;
- }
- if (.@currefine > .@tlevel) {
- mes "You cannot use this stone on your " + getequipname(.@part) + ".";
- mes "Current equipment's refinement is higher than the stone's power.";
- close;
- }
- if (.@currefine < .@tlevel) {
- set .@sust, (countitem(.sustid) > 0 ? 1 : 0);
- switch(.@id) {
- case 32101: case 32102: case 32103: case 32104:
- set .@rate, 10; break;
- case 32105: case 32106: set .@rate, 9; break;
- case 32107: case 32108: set .@rate, 8; break;
- case 32109: case 32110: set .@rate, 7; break;
- }
- set .@p, (countitem(.enstid) >= 10) ? (10 * .@rate) + 5 >= rand(100) : (countitem(.enstid) * .@rate) + 5 >= rand(100);
- if (.@p == 1) {
- delitem .@id, 1;
- if (.@id > .ts4) {
- delitem .enstid, (countitem(.enstid) >= 10 ? 10 : countitem(.enstid));
- delitem .sustid, (.@sust == 1 ? 1 : 0);
- }
- set .@r, 1;
- set .@diff, .@tlevel - .@currefine;
- while(.@r <= .@diff) {
- successrefitem .@part;
- set .@r, .@r + 1;
- }
- close;
- }
- if (.@p == 0) {
- mes "Sorry, the merging failed.";
- delitem .@id, 1;
- delitem .enstid, (countitem(.enstid) >= 10 ? 10 : countitem(.enstid));
- delitem .sustid, (.@sust == 1 ? 1 : 0);
- if(.@sust == 0) {
- failedrefitem .@part;
- }
- close;
- }
- }
- }
- if (getequiprefinerycnt(.@part) == 0) {
- delitem .@id, 1;
- if (.@id > .ts4) {
- delitem .enstid, (countitem(.enstid) >= 10 ? 10 : countitem(.enstid));
- delitem .sustid, (.@sust == 1 ? 1 : 0);
- }
- set .@r, 1;
- while(.@r <= .@tlevel) {
- successrefitem .@part;
- set .@r, .@r + 1;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement