// TMW2 scripts. // Author: // Jesusalva // Description: // Ihclot is Tolchi spelled backwards 025-1,96,66,0 script Ihclot NPC_RAIJIN_FEMALE_LEGION_ARTIS,{ function apRefresh; function getPrice; function getPriceInt; .@left=apRefresh(); mesn; mesq l("I put options on items upon request, but I am very expensive! This is deducted from your tweaking quota."); if (!.@left) { mesc l("You currently have no Tweaking AP, so you will need to wait %02d minute(s).", 60-gettime(GETTIME_MINUTE)), 1; close; } next; mesn; mesq l("I'll read the options from you, but the level will be paid by me, and failure rate is non-existant. I am the best. blacksmith. in. the. universe! Use %s if you need to change any options.", b("@ucp")); csysGUI_Report(); mesc l("Please select the item you plan in tweaking."), 1; // Request and confirm .@id=requestitemindex(); if (!csys_Confirm(.@id)) close; // Find numeric ID delinventorylist(); getinventorylist(); .@handle=@inventorylist_id[.@id]; .@lv=getiteminfo(.@handle, ITEMINFO_ELV); // Invalid (absolutely should never happen) if (.@handle < 1) { mesn; mesq l("...What? Which item? Sorry, too much smoke around here."); next; close; } // Multiple if (countitem(.@handle) != 1) { mesn; mesq l("Sorry, but you have multiple %s.", getitemlink(.@handle)); next; close; } // Permission NG: (Not Granted) if (.@lv < .minLevel) { mesn; mesq l("Sorry, but I won't dare touch a %s.", getitemlink(.@handle)); next; mesn; mesq l("Depending on the case, Nicholas, in Hurnscald, can do a better job than me."); tutmes l("The selected item is too weak. %s will only tweak items level %d or higher.", .name$, .minLevel); next; close; } // Aleady slotted if (getitemoptionidbyindex(.@id, 0) > 0) { mesn; mesq l("I'm not going to try to improve this masterpiece. Look its options!"); next; close; } // Calculate price .@price=.@lv**3; // Cubic function to determine price. .@price=max(1, .@price/7); mesn; mesq l("Please select the level I should use."); menuint l("Abort (%d GP)", fnum(.@price*0)), 0, getPrice(.@price, 10), 10, getPrice(.@price, 20), 20, getPrice(.@price, 30), 30, getPrice(.@price, 40), 40, getPrice(.@price, 50), 50, getPrice(.@price, 60), 60, getPrice(.@price, 70), 70, getPrice(.@price, 80), 80, getPrice(.@price, 90), 90, getPrice(.@price, 100), 100; mes ""; if (@menuret == 0) close; // Ask player to confirm if (!csys_Confirm(.@id)) close; // Perform payment Zeny-=getPriceInt(.@price, @menuret); SMITH_TWEAKS+=1; // Apply the bonuses csys_ApplyPerfect(.@id, .@level); mesn; mesc l("Well, here you are. I hope you enjoy ^^", 3); // Act 5+ Grace Reroll if ($GAME_STORYLINE >= 5) { next; mesc l("DO YOU WANT TO REROLL THE ITEM? THIS CANNOT BE UNDONE! (free)"), 1; next; if (askyesno() == ASK_YES) csys_ApplyPerfect(.@id, .@level); } close; /* *************************************************************************** */ function apRefresh { .@left=gettimeparam(GETTIME_HOUR)-SMITH_TWEAKS; if (.@left > 6) { .@left=6; SMITH_TWEAKS=gettimeparam(GETTIME_HOUR)-6; } return .@left; } function getPriceInt { .@price=getarg(0); .@level=getarg(1); .@final=.@price*.@level/5; if (strcharinfo(0) == $MOST_HEROIC$) .@final=max(1, .@final-(.@level*5000)); return .@final; } function getPrice { .@price=getarg(0); .@level=getarg(1); .@final=getPriceInt(.@price, .@level); if (Zeny >= .@final) return l("Level %d (%s GP)", .@level, fnum(.@final)); else return ""; } OnInit: .sex = G_OTHER; .distance = 5; .minLevel = 50; end; }