summaryrefslogtreecommitdiff
path: root/npc/custom/item_signer.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/custom/item_signer.txt')
-rw-r--r--npc/custom/item_signer.txt133
1 files changed, 133 insertions, 0 deletions
diff --git a/npc/custom/item_signer.txt b/npc/custom/item_signer.txt
new file mode 100644
index 000000000..a3aba3771
--- /dev/null
+++ b/npc/custom/item_signer.txt
@@ -0,0 +1,133 @@
+//===== rAthena Script =======================================
+//= Sign Your Items
+//===== By: ==================================================
+//= Lupus
+//===== Current Version: =====================================
+//= 1.1
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Write you name on your rare equipment or weapon ^_-
+//===== Additional Comments: =================================
+//= 1.1 Cleaned and edited for general use. [Euphy]
+//============================================================
+
+prt_in,24,61,7 script Perchik 47,{
+
+ setarray .@Item[0],644,3; // Item requirements: <ID>,<Count>{,...} (0 to disable)
+ setarray .@Cost[0],0,5000; // Zeny requirements: <base price>,<price per refine>
+
+ mes "[Perchik]";
+ mes "I can ^0055FFsign your name^000000 on almost any rare item you hold.";
+ next;
+ if(select("Tell me more...:Sign my items, please!") == 1) {
+ mes "[Perchik]";
+ mes "I can put your name on any slotless equipment or weapon.";
+ emotion e_ic;
+ next;
+ mes "[Perchik]";
+ if (getarraysize(.@Item) || getarraysize(.@Cost)) {
+ mes "For my work I accept:";
+ if (getarraysize(.@Item)) for(set .@i,0; .@i<getarraysize(.@Item); set .@i,.@i+2)
+ mes " ~ "+.@Item[.@i+1]+"x "+getitemname(.@Item[.@i]);
+ if (.@Cost[0]) mes " ~ "+.@Cost[0]+" Zeny";
+ if (.@Cost[1]) mes " ~ "+.@Cost[1]+" Zeny per refine";
+ }
+ else mes "I work for free, but...";
+ next;
+ emotion e_cry;
+ mes "[Perchik]";
+ mes "Alas, I have 12 hungry children";
+ mes "and a very angry wife.";
+ next;
+ mes "[Perchik]";
+ mes "Or it was 12 angry children";
+ mes "and a very hungry wife...";
+ emotion e_hmm;
+ close;
+ }
+ mes "[Perchik]";
+ mes "Show me your items to sign...";
+ next;
+ setarray .@pos$[1],"Upper Headgear","Armor","Left hand","Right hand","Garment","Footgear","Left Accessory","Right Accessory","Mid Headgear","Lower Headgear";
+ set .@menu$,"";
+ for (set .@i,1; .@i<=10; set .@i,.@i+1) {
+ if (getequipisequiped(.@i))
+ set .@menu$, .@menu$+.@pos$[.@i]+" [^0055FF"+getequipname(.@i)+"^000000]";
+ set .@menu$, .@menu$+":";
+ }
+ set .@part, select(.@menu$);
+ set .@id, getequipid(.@part);
+ set .@ref, getequiprefinerycnt(.@part);
+ mes "[Perchik]";
+ if (!getequipisequiped(.@part)) {
+ mes "Nothing is equipped there!";
+ emotion e_wah;
+ close;
+ }
+ for(set .@i,0; .@i<4; set .@i,.@i+1)
+ set .@slot[.@i], getequipcardid(.@part,.@i);
+ if (.@slot[0]==255 || .@slot[0]==254 || .@slot[0]<0) {
+ mes "Alas, this item's already signed.";
+ mes "I would never touch a master's work.";
+ emotion e_hmm;
+ close;
+ }
+ if (.@slot[0]>4000 && .@slot[0]<5000) {
+ mes "A card? Here?!";
+ mes "As I said before, I don't sign items with cards.";
+ emotion e_hmm;
+ close;
+ }
+ if (getiteminfo(.@id,10)) {
+ mes "Sorry, I don't sign slotted items.";
+ emotion e_sry;
+ close;
+ }
+ getinventorylist;
+ for(set .@i,0; .@i<@inventorylist_count; set .@i,.@i+1)
+ if (@inventorylist_expire[.@i] != 0) {
+ mes "Sorry, I don't sign rental items!";
+ emotion e_hmm;
+ close;
+ }
+ set .@price, .@Cost[0]+(.@Cost[1]*.@ref);
+ if (getarraysize(.@Item) || .@price) {
+ mes "I will need:";
+ if (getarraysize(.@Item)) for(set .@i,0; .@i<getarraysize(.@Item); set .@i,.@i+2) {
+ mes " ~ "+.@Item[.@i+1]+"x "+getitemname(.@Item[.@i]);
+ if (countitem(.@Item[.@i]) < .@Item[.@i+1]) set .@nr,1;
+ }
+ if (.@price) mes " ~ "+.@price+" Zeny";
+ }
+ mes "Shall I sign your ^0055FF"+getitemname(.@id)+"^000000?";
+ next;
+ if(select("Ok!:Leave")==2) {
+ mes "[Perchik]";
+ mes "See you...";
+ emotion e_yawn;
+ close;
+ }
+ mes "[Perchik]";
+ if (Zeny < .@price || .@nr) {
+ mes "I don't work for 'thanks'.";
+ emotion e_sry;
+ close;
+ }
+ if (!countitem2(.@id,1,.@ref,0,.@slot[0],.@slot[1],.@slot[2],.@slot[3])) {
+ mes "Where is "+getitemname(@id)+"...?";
+ npctalk "You're a snoozy cheater!";
+ logmes "CHEATER: Tried to sign an item not having it: "+getitemname(@id);
+ emotion e_wah;
+ close;
+ }
+ if (.@price) set Zeny, Zeny-.@price;
+ if (getarraysize(.@Item)) for(set .@i,0; .@i<getarraysize(.@Item); set .@i,.@i+2)
+ delitem .@Item[.@i], .@Item[.@i+1];
+ delitem2 .@id,1,1,.@ref,0,.@slot[0],.@slot[1],.@slot[2],.@slot[3];
+ mes "Done!";
+ emotion e_proud;
+ getitem2 .@id,1,1,.@ref,0,254,0,getcharid(0)&0xffff,(getcharid(0)>>16)&0xffff;
+ equip .@id;
+ close;
+}