diff options
Diffstat (limited to 'npc/025-1')
-rw-r--r-- | npc/025-1/_import.txt | 1 | ||||
-rw-r--r-- | npc/025-1/ihclot.txt | 136 |
2 files changed, 137 insertions, 0 deletions
diff --git a/npc/025-1/_import.txt b/npc/025-1/_import.txt index b534e2772..8077fd8b5 100644 --- a/npc/025-1/_import.txt +++ b/npc/025-1/_import.txt @@ -3,4 +3,5 @@ "npc/025-1/_config.txt", "npc/025-1/_mobs.txt", "npc/025-1/ctrl.c", +"npc/025-1/ihclot.txt", "npc/025-1/salohcin.txt", diff --git a/npc/025-1/ihclot.txt b/npc/025-1/ihclot.txt new file mode 100644 index 000000000..d4f260d67 --- /dev/null +++ b/npc/025-1/ihclot.txt @@ -0,0 +1,136 @@ +// 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; + + 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)) + return false; + + // 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; + return; + } + // Multiple + if (countitem(.@handle) != 1) { + mesn; + mesq l("Sorry, but you have multiple %s.", getitemlink(.@handle)); + next; + return; + } + // 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; + return; + } + // Aleady slotted + if (getitemoptionidbyindex(.@id, 0) > 0) { + mesn; + mesq l("I'm not going to try to improve this masterpiece. Look its options!"); + next; + return; + } + + // Calculate price + .@price=.@lv**3; // Cubic function to determine price. + 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)) + return false; + + // 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); + close; + +/* *************************************************************************** */ +function apRefresh { + .@left=gettimeparam(GETTIME_HOUR)-SMITH_TWEAKS; + if (.@left > 6) { + .@left=6; + SMITH_TWEAKS=gettimeparam(GETTIME_HOUR)-6; + } + return; +} + +function getPriceInt { + .@price=getarg(0); + .@level=getarg(1); + return .@price*.@level/3; +} + +function getPrice { + .@price=getarg(0); + .@level=getarg(1); + .@final=getPriceInt(.@price, .@level); + if (Zeny >= .@final) + return l("Level %d (%d GP)", .@level, fnum(.@final)); + else + return ""; +} + +OnInit: + .sex = G_OTHER; + .distance = 5; + .minLevel = 50; + end; +} + + |