summaryrefslogtreecommitdiff
path: root/npc/sample
diff options
context:
space:
mode:
Diffstat (limited to 'npc/sample')
-rw-r--r--npc/sample/PCLoginEvent.txt53
-rw-r--r--npc/sample/bank_test.txt58
-rw-r--r--npc/sample/basejob_baseclass_upper.txt7
-rw-r--r--npc/sample/delitem2.txt29
-rw-r--r--npc/sample/getequipcardid.txt34
-rw-r--r--npc/sample/getiteminfo.txt16
-rw-r--r--npc/sample/gstorage_test.txt33
-rw-r--r--npc/sample/npc_card_remover.txt197
-rw-r--r--npc/sample/npc_equip_sample.txt17
-rw-r--r--npc/sample/npc_extend_shop.txt60
-rw-r--r--npc/sample/npc_sample.txt457
-rw-r--r--npc/sample/npc_shop_test.txt31
-rw-r--r--npc/sample/npc_test_arena.txt104
-rw-r--r--npc/sample/npc_test_array.txt35
-rw-r--r--npc/sample/npc_test_chat.txt28
-rw-r--r--npc/sample/npc_test_ev.txt146
-rw-r--r--npc/sample/npc_test_func.txt27
-rw-r--r--npc/sample/npc_test_npctimer.txt33
-rw-r--r--npc/sample/npc_test_npctimer2.txt16
-rw-r--r--npc/sample/npc_test_skill.txt19
-rw-r--r--npc/sample/npc_test_str.txt17
-rw-r--r--npc/sample/npc_testchkoption.txt15
-rw-r--r--npc/sample/npc_time_sample.txt19
23 files changed, 1451 insertions, 0 deletions
diff --git a/npc/sample/PCLoginEvent.txt b/npc/sample/PCLoginEvent.txt
new file mode 100644
index 000000000..4a8994986
--- /dev/null
+++ b/npc/sample/PCLoginEvent.txt
@@ -0,0 +1,53 @@
+// eAthena Special NPC
+
+// PCLoginEvent NPC (davidsiaw)
+//==============================================================================
+// How it works:
+// When a player logs in, the NPC will run as if he just clicked it. Which means
+// if the script is like this:
+//
+// [code]
+// prontera.gat,0,0,0 script PCLoginEvent -1,{
+// mes "lmao";
+// close;
+// }
+// [/code]
+//
+// every player who logs in will recieve a message 'lmao' in their face as soon
+// as they can see the map.
+//-----------------------------------------------------------------------------
+// Note:
+// 1) This NPC will only run if its name is 'PCLoginEvent'
+// 2) I made it invisible because you don't need to see it. Its an abstract NPC
+// 3) If you don't want it, simply delete it
+// 4) If you have more than one PCLoginEvent NPC, strange things will happen.
+// 5) You can put this script in ANY file.
+// 6) I put an end; there because that just makes it do nothing.
+// 7) Modify this script to your liking and give your players a surprise
+// 8) Remember: IT RUNS LIKE A NORMAL NPC. BUT THE ONLY WAY TO 'CLICK' IT IS BY
+// LOGGING ON
+// 9) There are 2 ways to use this - check the examples below!
+
+//
+// The 1st type -- with 'event_script_type' set to 0
+//
+prontera.gat,0,0,0 script PCLoginEvent -1,{
+ end;
+}
+
+//
+// The 2nd type -- with 'event_script_type' set to 1
+//
+prontera.gat,155,175,0 script An NPC 46,{
+ close;
+PCLoginEvent:
+ // this part will run
+ close;
+}
+
+prontera.gat,156,176,0 script Another NPC 46,{
+ close;
+PCLoginEvent:
+ // this part runs AS WELL
+ close;
+} \ No newline at end of file
diff --git a/npc/sample/bank_test.txt b/npc/sample/bank_test.txt
new file mode 100644
index 000000000..cea5a1946
--- /dev/null
+++ b/npc/sample/bank_test.txt
@@ -0,0 +1,58 @@
+// Bank Test
+prontera.gat,162,188,1 script Bank Test 112,{
+ cutin "kafra_06",2;
+
+ mes "[Bank Test]";
+ mes "Welcome to Prontera's Bank Test.";
+ mes "You can only deposit a minimal of";
+ mes "1000z. What do you want to do?";
+ next;
+ menu "Deposit",BANK_IN,"Withdraw",BANK_OUT,"Exit",B_EXIT2;
+BANK_IN:
+ mes "[Bank Test]";
+ mes "You must deposit the same of less";
+ mes "amount of zeny that you carry.";
+ mes "How much do you want to deposit?";
+ next;
+ input @kafrabank;
+
+ if(@kafrabank<1000) goto B_EXIT2;
+ set @kafrabank2,@kafrabank*1/100;
+ if(@kafrabank+@kafrabank2>Zeny) goto BANK_F;
+ set Zeny,Zeny-@kafrabank-@kafrabank2;
+ set #kafrabank,#kafrabank+@kafrabank;
+ mes "You now have: ^135445" + @kafrabank2 + "z^000000";
+
+ goto B_EXIT;
+BANK_OUT:
+ if(#kafrabank==0) goto BANK_F2;
+ mes "[Bank Test]";
+ mes "You can only withdraw equally or below this quantity:";
+ mes "^135445" + #kafrabank + "^000000z";
+ mes "How much do you want to withdraw?";
+ next;
+ input @kafrabank;
+
+ if(@kafrabank<1) goto B_EXIT2;
+ if(@kafrabank>#kafrabank) goto BANK_F;
+ set #kafrabank,#kafrabank-@kafrabank;
+ set Zeny,Zeny+@kafrabank;
+
+ goto B_EXIT;
+
+BANK_F:
+ mes "[Bank Test]";
+ mes "You can't withdraw more than ^135445"+ #kafrabank + "^000000z.";
+ goto B_EXIT2;
+BANK_F2:
+ mes "[Bank Test]";
+ mes "Your account is empty, you may not withdraw at this time.";
+ goto B_EXIT2;
+
+B_EXIT:
+ mes "Thanks for using depositing";
+B_EXIT2:
+ mes "Good bye!";
+ cutin "kafra_06",255;
+ close;
+}
diff --git a/npc/sample/basejob_baseclass_upper.txt b/npc/sample/basejob_baseclass_upper.txt
new file mode 100644
index 000000000..5d77c7412
--- /dev/null
+++ b/npc/sample/basejob_baseclass_upper.txt
@@ -0,0 +1,7 @@
+prontera.gat,155,177,1 script Tell Me 725,{
+ mes "[Tell Me]";
+ mes "Class: " + Class;
+ mes "BaseClass: " + BaseClass;
+ mes "BaseJob: " + BaseJob;
+ mes "Upper: " + Uppser;
+}
diff --git a/npc/sample/delitem2.txt b/npc/sample/delitem2.txt
new file mode 100644
index 000000000..3c93a37f5
--- /dev/null
+++ b/npc/sample/delitem2.txt
@@ -0,0 +1,29 @@
+prontera.gat,160,182,5 script Deleter2 51,{
+ mes "Input item ID";
+ next;
+ input @nameid;
+ mes "Amount?";
+ next;
+ input @amount;
+ mes "Identified?";
+ next;
+ input @iden;
+ mes "How many times refined?";
+ next;
+ input @ref;
+ mes "Attribute?";
+ next;
+ input @attr;
+ mes "4 cards (one after another):";
+ next;
+ input @c1;
+ input @c2;
+ input @c3;
+ input @c4;
+ mes "Your command is:";
+ mes "delitem2 "+@nameid+","+@amount+","+@iden+","+@ref+","+@attr+","+@c1+","+@c2+","+@c3+","+@c4;
+ next;
+ delitem2 @nameid,@amount,@iden,@ref,@attr,@c1,@c2,@c3,@c4;
+ mes "And here is the moment when Your item should disappear :P";
+ close;
+}
diff --git a/npc/sample/getequipcardid.txt b/npc/sample/getequipcardid.txt
new file mode 100644
index 000000000..0dcec60d8
--- /dev/null
+++ b/npc/sample/getequipcardid.txt
@@ -0,0 +1,34 @@
+//===== eAthena Script =======================================
+//===== By: ==================================================
+//= Lupus
+//= Shows your HAT's slots IDs
+//= Use it for some checks... e.g.
+//= is your EQUPPED weapon has FIRE property?
+//= is your EQUPPED item produced?
+//============================================================
+
+prontera.gat,155,177,4 script Check My Hat 810,{
+ mes "Checking your head...";
+ set @ref,0;
+
+ if (getequipisequiped(1)) goto L_CHECK1;
+ mes "Nothing?";
+ emotion e_hmm;
+ close;
+
+L_CHECK1:
+ set @id,getequipid(1);
+ if(getequipisidentify(1)) goto L_CHECK2;
+ mes "How can you wear not identified hats?";
+ npctalk "You're a cheater!";
+ emotion e_wah;
+ close;
+
+L_CHECK2:
+ set @ref,getequiprefinerycnt(1);
+ mes "Your hat is... "+getitemname(@id)+"...";
+ if(@ref)mes "It has been refined "+@ref+" times.";
+ mes "Card Slot 0:"+getequipcardid(1,0)+" 1:"+getequipcardid(1,1);
+ mes "Card Slot 2:"+getequipcardid(1,2)+" 3:"+getequipcardid(1,3);
+ close;
+}
diff --git a/npc/sample/getiteminfo.txt b/npc/sample/getiteminfo.txt
new file mode 100644
index 000000000..338c5e946
--- /dev/null
+++ b/npc/sample/getiteminfo.txt
@@ -0,0 +1,16 @@
+//by Lupus
+
+prontera.gat,156,179,6 script test_getiteminfo 117,{
+ mes "Please enter an item ID (501 ... 14000)";
+ input @value;
+//WOW! this line uses INTERNAL function of your client to show item name by its ID!
+// ^nItemID^XXXX -> Item Name
+ mes "Item ID: "+@value+" ^nItemID^"+@value;
+ mes "Current Item info:";
+ set @id,0;
+L_LOOP:
+ mes " getiteminfo("+@value+","+@id+") = "+getiteminfo(@value,@id);
+ set @id,@id+1;
+ if(@id<14) goto L_LOOP;
+ close;
+} \ No newline at end of file
diff --git a/npc/sample/gstorage_test.txt b/npc/sample/gstorage_test.txt
new file mode 100644
index 000000000..aa6749ec0
--- /dev/null
+++ b/npc/sample/gstorage_test.txt
@@ -0,0 +1,33 @@
+// �J�v���M���h�q�ɃT�[�r�X �e�X�g�X�N���v�g
+prontera.gat,165,188,4 script �M���h�q�ɃJ�v�� 112,{
+ cutin "kafra_06",2;
+
+ mes"[�M���h�q�ɃJ�v��]";
+ mes "�J�v���M���h�q�ɃT�[�r�X�ł��B";
+ mes "���x�����p���肪�Ƃ��������܂���";
+ mes "�e�X�g�p�Ȃ̂ŋ��͖Ⴂ�܂���B";
+ next;
+ menu "�M���h�q�ɂ𗘗p����",GS_OPEN,"����ς�߂�",GS_EXIT3;
+
+GS_OPEN:
+ set @flag,guildopenstorage(0);
+ if(@flag == 1) goto GS_EXIT1;
+ if(@flag == 2) goto GS_EXIT2;
+ goto GS_EXIT4;
+
+GS_EXIT1:
+ mes "�M���h�����o�[���q�ɂ��g�p���ł��B";
+ mes "���΂炭�҂��Ă��痘�p���Ă��������B";
+ goto GS_EXIT4;
+
+GS_EXIT2:
+ mes "�M���h�ɏ������ĂȂ����͗��p���邱�Ƃ��ł��܂���B";
+ goto GS_EXIT4;
+
+GS_EXIT3:
+ mes "�܂��̂����p�����҂����Ă��܂���";
+
+GS_EXIT4:
+ cutin "kafra_06",255;
+ close;
+}
diff --git a/npc/sample/npc_card_remover.txt b/npc/sample/npc_card_remover.txt
new file mode 100644
index 000000000..c341c4d1b
--- /dev/null
+++ b/npc/sample/npc_card_remover.txt
@@ -0,0 +1,197 @@
+// Card removal NPC by TyrNemesis^ ���{���F�Ӓ���
+prt_in.gat,28,73,4 script �����V�� 78,{
+
+UPGRADEROOT:
+// mes "[Wise Old Woman]";
+// mes "Good day, young one. I have the power to remove cards that you have compounded onto your equipment. Does this idea please you?";
+ mes "[�����V��]";
+ mes "�����V�C���ˁA�Ⴂ�́B";
+ mes "�Ƃ���ŁA�A�^�V�͕���ɑ������Ă���";
+ mes "�J�[�h�����O���͂������Ă��邯�ǁA";
+ mes "�͂�݂������ˁH";
+ next;
+// menu "Yes, it does.",REMOVEMENU,
+// "What do you charge?",REMOVEPRICE,
+// "No thanks.",CLOSEOUT;
+ menu "���肢���܂��B",REMOVEMENU,
+ "�����炩�����ł����H",REMOVEPRICE,
+ "�K�v�Ȃ��ł��B",CLOSEOUT;
+
+REMOVEPRICE:
+// mes "[Wise Old Woman]";
+// mes "I charge a flat fee of 200000 zeny, plus 25000 zeny for each card I remove from the item. In addition, I need a star crumb and a yellow gemstone to work my magic.";
+ mes "[�����V��]";
+ mes "�������ˁA";
+ mes "�܂���{�����Ƃ���^4040FF200000z^000000�B";
+ mes "�����ăJ�[�h�P���ɂ‚�^4040FF25000z^000000�Ⴄ��B";
+ mes "���Ƃ́A���@���g�����߂�^4040FF���̂�����^000000��";
+ mes "^4040FF�C�G���[�W�F���X�g�[��^000000���P�‚��•K�v����B";
+ next;
+// menu "Very well. Let's do it.",REMOVEMENU,
+// "No thanks.",CLOSEOUT;
+ menu "���肢���܂��B",REMOVEMENU,
+ "�K�v�Ȃ��ł��B",CLOSEOUT;
+
+REMOVEMENU:
+// mes "[Wise Old Woman]";
+// mes "Very well. Which item shall I examine for you?";
+ mes "[�����V��]";
+ mes "�悵�悵�B";
+ mes "�ǂ̕���̃J�[�h�����O���񂾂ˁH";
+ next;
+// menu "I changed my mind.",CLOSEOUT,
+ menu "����ς��߂܂��B",CLOSEOUT,
+ getequipname(1),-,
+ getequipname(2),-,
+ getequipname(3),-,
+ getequipname(4),-,
+ getequipname(5),-,
+ getequipname(6),-,
+ getequipname(7),-,
+ getequipname(8),-,
+ getequipname(9),-,
+ getequipname(10),-;
+ set @part,@menu-1;
+ if(getequipcardcnt(@part) == 0) goto DENYCARDCOUNT;
+ set @cardcount,getequipcardcnt(@part);
+// if(@cardcount > 1) goto CARDNUMMULTIMSG;
+// mes "[Wise Old Woman]";
+// mes "This item has " + @cardcount + " card compounded on it. To perform my magic, I will need 225000 zeny, a ^0000FFStar Crumb^000000, and a ^0000FFYellow Gemstone^000000.";
+// goto CARDNUMPOSTMSG;
+//CARDNUMMULTIMSG:
+// mes "[Wise Old Woman]";
+// mes "This item has " + @cardcount + " cards compounded on it. To perform my magic, I will need " + (200000+(@cardcount * 25000)) + " zeny, a ^0000FFStar Crumb^000000, and a ^0000FFYellow Gemstone^000000.";
+ mes "[�����V��]";
+ mes "���̕���ɂ�" + @cardcount + "�ƒJ�[�h���‚��Ă�ˁB";
+ mes "^0000FF" + (200000+(@cardcount * 25000)) + "z^000000��^0000FF���̂�����^000000��^0000FF�C�G���[�W�F���X�g�[��^000000���K�v����B";
+//CARDNUMPOSTMSG:
+ next;
+// menu "Very well. Do it.",REMOVECARDWARNING,
+// "Never mind.",CLOSEOUT;
+ menu "�킩��܂����A���肢���܂��B",REMOVECARDWARNING,
+ "����ς��߂܂��B",CLOSEOUT;
+
+REMOVECARDWARNING:
+// mes "[Wise Old Woman]";
+// mes "Before I begin, I must warn you--I may fail. If I do, I may destroy the cards, the item, or both. I do not give refunds. That being said, which is more important to you: The cards, or the item?";
+ mes "[�����V��]";
+ mes "�����ƌ����Y���Ƃ��낾�����ˁB";
+ mes "���̖��@�͂ƂĂ��������A";
+ mes "^FF4040���s���邩������Ȃ�^000000�̂��B";
+ mes "���s������J�[�h������A���邢��";
+ mes "���̗�����^FF4040�j�󂳂�Ă��܂�^000000����";
+ mes "����Ȃ��񂾂�B";
+ next;
+ mes "[�����V��]";
+ mes "���s���Ă�^FF4040�ԋ��͂��Ȃ�^000000����A";
+ mes "�ꉞ�����Ēu�����ǁA��ׂ�Ȃ�";
+ mes "�J�[�h�ƕ���̂ǂ�������؂����H";
+ next;
+// menu "I changed my mind about this.",CLOSEOUT,
+// "The item.",PRIORITYITEM,
+// "The cards.",PRIORITYCARD;
+ menu "����Ȃ��߂܂��B",CLOSEOUT,
+ "����̕�����؂ł��B",PRIORITYITEM,
+ "�J�[�h�̕�����؂ł�",PRIORITYCARD;
+
+PRIORITYITEM:
+ set @failtype,1;
+ goto REMOVECARD;
+
+PRIORITYCARD:
+ set @failtype,2;
+ goto REMOVECARD;
+
+REMOVECARD:
+// mes "[Wise Old Woman]";
+// mes "Very well. I shall begin.";
+ mes "[�����V��]";
+ mes "�悵�A�n�߂��B";
+ next;
+ if((zeny < (200000+(@cardcount * 25000))) || (countitem(1000) < 1) || (countitem(715) < 1)) goto DENYMATERIAL;
+ set zeny,zeny - (200000+(@cardcount * 25000));
+ delitem 1000,1;
+ delitem 715,1;
+
+// Replace the constants in the next 3 lines with failure chance values defined in refine_db.txt
+// First value = Total failure chance (item and cards destroyed)
+// Second value = Partial failure chance (one or the other is destroyed, player decides which one is safe)
+// Third value = Harmless failure chance (all that's lost is your investment)
+
+ set @failchance,rand(100);
+ if(@failchance < 2) goto FAILREMOVECARD0;
+ if((@failchance < 6) && (@failtype == 1)) goto FAILREMOVECARD1;
+ if((@failchance < 6) && (@failtype == 2)) goto FAILREMOVECARD2;
+ if(@failchance < 10) goto FAILREMOVECARD3;
+ successremovecards @part;
+// mes "[Wise Old Woman]";
+// mes "The process was a success. Here are your cards and your item. Farewell.";
+ mes "[�����V��]";
+ mes "���܂���������B";
+ mes "����炪����ƃA�C�e�����B���Ⴀ�ˁB";
+ close;
+
+FAILREMOVECARD0:
+// mes "[Wise Old Woman]";
+// mes "The process was a total failure. I am afraid the item and the cards were destroyed.";
+ mes "[�����V��]";
+ mes "�c�O�����NJ��S�Ɏ��s������B";
+ mes "������J�[�h�����Ă��܂����B";
+ failedremovecards @part,0;
+ close;
+
+FAILREMOVECARD1:
+// mes "[Wise Old Woman]";
+// mes "While I have managed to remove the cards from the item, they were destroyed in the process. The item, however, is okay.";
+ mes "[�����V��]";
+ mes "�撣�������ǂˁA";
+ mes "�J�[�h�̂ق��͑S�����Ă��܂�����B";
+ mes "�ł�����̕��͖�����������B";
+ failedremovecards @part,1;
+ close;
+
+FAILREMOVECARD2:
+// mes "[Wise Old Woman]";
+// mes "Most unfortunate. I succeeded at removing the cards, but the item itself was destroyed in the process.";
+ mes "[�����V��]";
+ mes "�s�^�������ˁB";
+ mes "�J�[�h�����O���̂͂��܂�����������";
+ mes "������Ă��܂�����B";
+ failedremovecards @part,2;
+ close;
+
+FAILREMOVECARD3:
+// mes "[Wise Old Woman]";
+// mes "I have failed to remove the cards. Luckily, however, both the item and the cards are still okay.";
+ mes "[�����V��]";
+ mes "�J�[�h�����O���̂Ɏ��s������B";
+ mes "�ł��A�s�K���̍K�����B";
+ mes "������J�[�h����������B";
+ failedremovecards @part,3;
+ close;
+
+DENYCARDCOUNT:
+// mes "[Wise Old Woman]";
+// mes "Young one... There are no cards compounded on this item. I can do nothing with it, I'm afraid.";
+ mes "[�����V��]";
+ mes "�Ⴂ�́A�J�[�h���‚��ĂȂ���B";
+ mes "���ꂶ��A�^�V�̏o�Ԃ͂Ȃ����B";
+ close;
+
+DENYMATERIAL:
+// mes "[Wise Old Woman]";
+// mes "You do not have all the items I require to work my magic, child. Come again when you do.";
+ mes "[�����V��]";
+ mes "�K�v�ȃA�C�e��������Ȃ��悤���ˁB";
+ mes "�A�C�e���𑵂��Ă�����x���ȁB";
+ close;
+
+CLOSEOUT:
+// mes "[Wise Old Woman]";
+// mes "Very well. Return at once if you seek my services.";
+ mes "[�����V��]";
+ mes "�킩������B";
+ mes "�A�^�V�̗͂��K�v�Ȃ炢�‚ł����ȁB";
+ close;
+
+}
diff --git a/npc/sample/npc_equip_sample.txt b/npc/sample/npc_equip_sample.txt
new file mode 100644
index 000000000..942ec47eb
--- /dev/null
+++ b/npc/sample/npc_equip_sample.txt
@@ -0,0 +1,17 @@
+
+prontera.gat,161,181,6 script GetEquipID Sample 105,{
+ mes "[GetEquipID Sample]";
+ mes " GetEquipID(01) : " + getequipid(1);
+ mes " GetEquipID(02) : " + getequipid(2);
+ mes " GetEquipID(03) : " + getequipid(3);
+ mes " GetEquipID(04) : " + getequipid(4);
+ mes " GetEquipID(05) : " + getequipid(5);
+ mes " GetEquipID(06) : " + getequipid(6);
+ mes " GetEquipID(07) : " + getequipid(7);
+ mes " GetEquipID(08) : " + getequipid(8);
+ mes " GetEquipID(09) : " + getequipid(9);
+ mes " GetEquipID(10) : " + getequipid(10);
+ close;
+ end;
+}
+
diff --git a/npc/sample/npc_extend_shop.txt b/npc/sample/npc_extend_shop.txt
new file mode 100644
index 000000000..015973ed2
--- /dev/null
+++ b/npc/sample/npc_extend_shop.txt
@@ -0,0 +1,60 @@
+//SuperNovice
+prontera.gat,182,213,3 shop Super Novice Shop 716,1243:-1,2112:-1,2340:-1,2352:-1,2414:-1,2510:-1,2628:-1,5055:-1
+
+//Whips
+prontera.gat,149,139,5 shop Whips Merchant 58,1951:-1,1953:-1,1955:-1,1957:-1,1959:-1,1961:-1,1962:-1,1963:-1,1964:-1
+
+//Headgears
+prontera.gat,162,175,3 shop Headgears Merchant 1 73,2209:-1,2210:-1,2211:-1,2221:-1,2223:-1,2217:-1,2227:-1,2231:-1,2225:-1,2229:-1
+
+//Headgears
+prontera.gat,162,172,3 shop Headgears Merchant 2 73,2203:-1,2212:-1,2218:-1,2239:-1,2241:-1,2242:-1,2243:-1,2263:-1,2265:-1,2276:-1,2288:-1,2291:-1,2297:-1
+
+//Armor
+prontera.gat,162,169,3 shop Armours Merchant 73,2311:-1,2313:-1,2315:-1,2317:-1,2318:-1,2320:-1,2322:-1,2324:-1,2326:-1,2327:-1,2329:-1,2331:-1,2334:-1,2336:-1,2337:-1,2342:-1
+
+//Shields
+prontera.gat,162,166,3 shop Shields Merchant 73,2102:-1,2104:-1,2106:-1,2108:-1,2109:-1,2110:-1,2111:-1
+
+//Boots
+prontera.gat,162,163,3 shop Boots Merchant 73,2402:-1,2404:-1,2406:-1,2407:-1,2412:-1,2413:-1
+
+//Robes
+prontera.gat,162,160,3 shop Robes Merchant 73,2502:-1,2504:-1,2506:-1,2507:-1,2508:-1,2509:-1
+
+//Accessory
+prontera.gat,162,157,3 shop Accessory Merchant 73,2601:-1,2602:-1,2603:-1,2604:-1,2605:-1,2607:-1,2608:-1,2615:-1,2616:-1,2618:-1,2619:-1
+
+//Arrows
+prontera.gat,162,154,3 shop Arrows Merchant 73,1750:-1,1751:-1,1752:-1,1753:-1,1754:-1,1755:-1,1756:-1,1757:-1,1758:-1,1759:-1,1760:-1,1761:-1,1762:-1,1763:-1,1764:-1,1765:-1,1766:-1,1767:-1,1768:-1,1769:-1
+
+//Alchemist
+prontera.gat,162,151,3 shop Alchemist Shop 73.7127:-1,7128:-1,7129:-1,7130:-1,7131:-1,7132:-1,7133:-1,7144:-1,7134:-1,1093:-1
+
+//Taming Merchant
+prontera.gat,162,148,3 shop Taming Merchant 73,619:-1,620:-1,621:-1,623:-1,624:-1,625:-1,626:-1,627:-1,628:-1,629:-1,630:-1,631:-1,632:-1,633:-1,634:-1,635:-1,636:-1,637:-1,638:-1,639:-1,640:-1,641:-1,642:-1,659:-1
+
+//Pet Equipment
+prontera.gat,162,145,3 shop Pet Equipment 73,10001:-1,10002:-1,10003:-1,10004:-1,10005:-1,10006:-1,10007:-1,10008:-1,10009:-1,10010:-1,10011:-1,10012:-1,10013:-1,10014:-1,10015:-1,10016:-1,10017:-1,10018:-1,10019:-1,10020:-1
+
+
+//Weapon Cards
+prontera.gat,148,234,5 shop Weapon Card's Merchant 80,4004:100000,4018:100000,4025:100000,4026:100000,4019:100000,4029:100000,4043:100000,4017:100000,4020:100000,4024:100000,4037:100000,4055:100000,4057:100000,4076:100000,4096:100000,4104:100000,4030:100000,4049:100000,4062:100000,4069:100000,4085:100000,4007:100000,4060:100000,4063:100000,4068:100000,4080:100000,4094:100000,4111:100000,4118:100000,4082:20700,4092:100000,4126:100000,4072:100000,4115:100000,4035:100000,4086:100000,4106:100000,4117:100000,4125:100000
+
+//Headgear Cards
+prontera.gat,148,231,5 shop Headgear Card's Merchant 80,4010:100000,4039:100000,4046:100000,4052:100000,4087:100000,4110:100000,4112:100000,4122:100000,4127:100000
+
+//Armor Cards
+prontera.gat,146,229,5 shop Armor Card's Merchant 80,4003:100000,4008:100000,4011:100000,4014:100000,4016:100000,4021:100000,4023:100000,4031:100000,4078:100000,4089:100000,4098:100000,4099:100000,4101:100000,4114:100000,4119:100000,4141:100000,4061:100000,4105:100000
+
+//Shield Cards
+prontera.gat,144,227,5 shop Shield Card's Merchant 80,4013:100000,4032:100000,4058:100000,4059:100000,4066:100000,4074:100000,4083:100000,4120:100000,4124:100000,4136:100000,4138:100000,4045:100000,4067:100000,4075:100000,4090:100000
+
+//Robe Cards
+prontera.gat,142,225,5 shop Robe Card's Merchant 80,4056:100000,4071:100000,4081:100000,4095:100000,4108:100000,4109:100000,4113:100000,4116:100000,4133:100000,4015:100000,4088:100000,4102:100000,4129:100000
+
+//Shoe Cards
+prontera.gat,140,223,5 shop Shoes Card's Merchant 80,4009:100000,4038:100000,4050:100000,4070:100000,4097:100000,4100:100000,4107:100000
+
+//Accessory Cards
+prontera.gat,138,221,5 shop Accessory Card's Merchant 80,4022:100500,4027:100500,4028:100500,4034:100500,4051:100500,4064:100500,4091:100500,4079:100500,4033:100500,4040:100500,4044:100500,4048:100500,4053:100500,4073:100500,4077:100500,4084:100500,4093:100500,4103:100500,4139:100500 \ No newline at end of file
diff --git a/npc/sample/npc_sample.txt b/npc/sample/npc_sample.txt
new file mode 100644
index 000000000..f589ef370
--- /dev/null
+++ b/npc/sample/npc_sample.txt
@@ -0,0 +1,457 @@
+//
+// Athena Sample Script
+// (c) 2003 Athena Project.
+//
+// $Id: npc_sample.txt,v 1.1.1.1 2004/09/10 17:26:47 MagicalTux Exp $
+
+// ���̃t�@�C���́AAthena�Ŏg�p�����X�N���v�g�̉���Ǝg�p��̃T���v����
+// �Ȃ��Ă��܂��B
+
+// =============
+// *��{�I�ȏ���
+// =============
+// <parameters_1>\t<command>\t<displayname>\t<parameters_2>
+// \t��TAB������킵�܂��B
+// command �� "warp" / "monster" / "shop" / "script" �̂����ꂩ�ɂȂ�܂��B
+// �e�s�ɂ�����"//"�ȍ~�̓R�����g�Ƃ��Ė�������܂��B
+// �ȉ��A�X�ɂ‚��ĉ�������Ă����܂��B
+//
+// ������<n>�Ƃ�����Ă��镔����n�Ƃ��������ł͂Ȃ��A�C�ӂ̕�����/�l�������܂��B
+// �܂��A[n]�͕K�v�ɉ����Ďw�肷��C�ӂ̕�����/�l�ƂȂ��Ă��܂��B
+
+// ========
+// *command
+// ========
+//
+// ---------------
+// *�ʏ�warp(warp)
+// ---------------
+// ���� : <gatname>,<x>,<y> warp <displayname(hidden)> <dx>,<dy>,<destination_gatname>[.gat],<destination_x>,<destination_y>
+//
+// <gatname> - �}�b�v�f�[�^�t�@�C�����B�g���q�͕K�{�ł��B
+// <x>,<y> - ���[�v�|�C���g�̒��S���W(x,y)
+// <displayname(hidden)> - npc���B�ꕶ���ȏ�̔C�ӂ̕����Ŏw�肵�܂��B���j�[�N�Ȗ��O�ł���K�v�͂���܂���B
+// ���ۂɂ͕\������܂���B
+// <dx>,<dy> - ����͈�(x,y) <x,y>�𒆐S��(dx+1,dy+1)�͈̔͂�PC������Ɣ������܂�
+// <destination_gatname>,<destination_x>,<destination_y> -
+// �ړ���̃}�b�v�f�[�^�t�@�C����,���W(x,y)
+// destination_gatname�ɂ‚��Ă͊g���q".gat"�͂����Ă������Ă��\���܂���B
+// �ړ����map�f�[�^�t�@�C�������݂��Ȃ�(���邢��map_config�Ŏw�肳��Ă��Ȃ�)�ꍇ�͔������܂���B
+// �ړ���̍��W���i���֎~���ł������ꍇ�́A�����_���ȍ��W�Ƀ��[�v���܂��B
+// �܂��A������W�ɕ�����warp���u����Ă����ꍇ�A��ɋL�q����Ă�����̂��L���ɂȂ�܂�
+// ����́Aconf�t�@�C�����Ŏw�肳���Anpc*.txt�t�@�C�����܂�����warp���L�q����Ƃ����������Ƃ������܂��B
+// ��:
+prontera.gat,156,185,4 warp sample1 0,0,prontera.gat,156,225
+prontera.gat,156,185,4 warp sample1a 0,0,prontera.gat,156,230
+// sample1�̕�����ɋL�q����Ă���̂ŁA156,225�Ɉړ����܂�
+prontera.gat,156,220,4 warp sample1-1 0,0,prontera.gat,156,180
+
+// --------------------
+// *�����X�^�[(monster)
+// --------------------
+// ����:<gatname>,<x>,<y>[,<xs>,<ys>] monster <displayname> <npcid>,<number>[,<spawn_delay1>,<spawn_delay2>]
+// <gatname> - �}�b�v�f�[�^�t�@�C�����B�g���q�͕K�{�ł��B
+// <x>,<y> - �����z�u���W(x,y) 0,0�ł���΃����_���Ȉʒu�ɔz�u����܂��B
+// [,<xs>,<ys>] - ����͈͓��ɔz�u���鎞�Ɏw�肵�܂��B
+// <displayname> - �}�E�X�J�[�\�������킹���Ƃ��ɕ\������閼�O�B���O�͈ꕶ���ȏ�w�肵�Ă�������
+// <npcid> - �L�����N�^�[��B�ڍׂɂ‚��Ă͂��@����������(db/mob_db.txt���Q�l�ɂȂ�Ǝv���܂���...)
+// <number> - �z�u��
+// [,<spawn_delay1>,<spawn_delay2>] - ����pc_id�����ƒ����X�^�[�̐������Ԃɂ‚��Ă̒�`
+// �O��o������+�o���x��1,�|���ꂽ����+�o���x��2,�|���ꂽ����+5�b �ŎZ�o�����l�̂����A�ł��傫������
+// �o�����ԂƂ��܂�
+// ��:
+prontera.gat,0,0 monster �|���� 1002,5
+
+// ---------
+// *�X(shop)
+// ---------
+// ����:<gatname>,<x>,<y>,<direction> shop <displayname> <npcid>,<item_id1>:<price1>[,<item_id2>:<price2>[,.....<item_id_N>:<priceN>]]
+// <gatname> - �}�b�v�f�[�^�t�@�C�����B�g���q�͕K�{�ł��B
+// <x>,<y> - NPC�̔z�u���W(x,y)
+// <direction> - npc�̌����Ă�������B0��k(y���W����+)�Ƃ��āA�����v���45�x�����݂ɂȂ��Ă��܂�
+// <displayname> - �}�E�X�J�[�\�������킹���Ƃ��ɕ\������閼�O�B���O�͈ꕶ���ȏ�w�肵�Ă�������
+// <npcid> - �L�����N�^�[��B�ڍׂɂ‚��Ă͂��@����������
+// <item_id_N>:<price_N> - item_id_N�̏��i�����iprice_N�Ƃ��Ĕ̔����E�C���h�E�ɕ\�����܂��B
+// item_id�ɂ‚��Ă�db/item_db.txt���Q�Ƃ��Ă��������B
+// ��:
+prontera.gat,136,203,6 shop ����l 73,501:5,502:20,503:55,504:120,506:20,645:80,656:150,601:30,602:30,611:20,610:400
+
+// -====================-
+// *NPC�X�N���v�g(script)
+// -====================-
+// ����:
+// <gatname>,<x>,<y>,<direction> script <displayname> <npcid>[,<xs>,<ys>],{ <script> ... }
+// <gatname> - �}�b�v�f�[�^�t�@�C�����B�g���q�͕K�{�ł��B
+// <x>,<y> - NPC�̔z�u���W(x,y)
+// <direction> - npc�̌����Ă�������B0��k(y���W����+)�Ƃ��āA�����v���45�x�����݂ɂȂ��Ă��܂�
+// <displayname> - �}�E�X�J�[�\�������킹���Ƃ��ɕ\������閼�O�B���O�͈ꕶ���ȏ�w�肵�Ă�������
+// <npcid> - �L�����N�^�[��B�ڍׂɂ‚��Ă͂��@����������
+// [,<xs>,<ys>] - (x,y)�𒆐S�Ƃ���(xs,ys)�ȓ���PC���ߊ��ƃX�N���v�g���������܂�
+// (warp�Ɠ����悤�Ȕ����̂������ɂȂ�܂�)
+//
+// ���̌�ɑ���{}�����X�N���v�g�Ƃ��ĔF������܂���
+// }(�s��) �ŃX�N���v�g�̏I���Ɣ��f���Ă��܂��B
+// ���̂��߁A}�̌�ɂ̓R�����g(//�`)�͕t���Ȃ��ł��������B
+// (������̎d�l�͕ύX�\��ł�)
+//
+// ------------------------
+// *{}���̃X�N���v�g�ɂ‚���
+// ------------------------
+// �X�̖��ߌ�␔��,������,���x��,���Z�q���̊Ԃ�
+// �X�y�[�X��^�u�A���s�A/* */�ɂ��͂܂ꂽ�R�����g�A//������s�܂ł̃R�����g��
+// ���R�ɓ���鎖���o���܂� (C����)
+// �e���߂͍Ō��";"���‚��܂� (C����)
+//
+// ---
+// *�l
+// ---
+// script���Ŏg�p�����l�� ���� / ������ / �ϐ��� / ���x�� ��4��ނɕ�����܂��B
+//
+// *���� [0-9]�̗�ŕ\�킳���10�i�����A0x�Ŏn�܂�16�i��
+// ���l�Ƃ��Ĉ�����͕̂����t32bit�����݂̂ŁA�����͈����܂���
+// *������ ""�ň͂܂ꂽ��ʂ�̕����񂪎g���܂��B
+// �����񒆂�"����ꂽ���ꍇ��\"�A\����ꂽ���ꍇ��\\�Ƃ��܂�
+// *�ϐ���/���x���� [A-Za-z0-9_]��@(�ꕶ���ڂ̂�)���g���܂��B
+// ����ȃ��x���Ƃ���-�����݂��܂��B����͎��̖��߂��Ӗ����܂�
+// �ȉ��Ő�������萔�▄�ߍ��ݕϐ�������ɂ�����܂�
+//
+// -----------------------
+// *�萔�܂��͖��ߍ��ݕϐ�
+// -----------------------
+// db/const.txt��<�萔��> <���l>�ƋL�q���鎖��
+// �X�N���v�g���ŗ��p�”\�Ȓ萔��錾�o���܂��B
+// (NPC�X�̏��i���X�g,�����ڂ̐ݒ蕔�����ɂ͗��p�o���܂���)
+//
+// �܂��A���̒��ŃL�����N�^�[�̃X�e�[�^�X���Q�Ƃ���
+// ���ߍ��ݕϐ��̒�`�����Ă��܂��B���ݗL���ȕ��͈ȉ���7�‚ł�
+//
+// BaseLevel : �x�[�X���x��
+// JobLevel : �W���u���x��
+// StatusPoint : �U�蕪���”\�ȃX�e�[�^�X�|�C���g��
+// SkillPoint : �U�蕪���”\�ȃX�L���|�C���g��
+// Class : �L�����N�^�[�̐E�Ƃ̎��
+// Class�l�ɂ‚��Ă�Job_Novice��db/const.txt�Œ萔��`����Ă܂��̂ł�������g���Ɨǂ��ł��傤
+// Zeny : ����
+// Sex : ����[0=��, 1=��]
+//
+// �����̕ϐ��́Aif���߂�set���߂Ŏ��R�ɎQ�Ƃ��o���܂����A
+// �ύX��StatusPoint��SkillPoint��Zeny�݂̂ő��̖��ߍ��ݕϐ��͕ύX���Ă��Ӗ��������܂���B
+// �܂��A���̂R�‚̖��ߍ��ݕϐ���ύX�����ꍇ�A�ύX�̓N���C�A���g�ɑ����ɔ��f����܂��B
+//
+// -------
+// *���x��
+// -------
+// ���x���́A���x�����̌��:��t��
+// label:
+// �̂悤�ɋL�q���܂��B
+// goto����menu���Aif�����̔�ѐ�Ƃ��Ďg���܂��B
+//
+// ---
+// *��
+// ---
+// ���߂̈����Ƃ��Đ��l���v������Ă��鏊�́A�S�Ă̏��Ŏ������p�”\�ł��B
+// �������Z�݂̂ł����AC�̎��̃T�u�Z�b�g�ɂȂ��Ă��܂�
+// ���p�”\�ȉ��Z�q��()�A�P�����Z�q - ! ~�A2�����Z�q + - * / % & | ^ && || == != > >= < <= �ł�
+//
+// ������̏ꍇ�� + �ŘA�����”\�ł��B
+// ������ + ���l �� ���l + ������ �Ƃ����ꍇ�͐��l�𕶎���ւƕϊ����A�����܂��B
+//
+// -----------------
+// *{}���Ŏg���閽��
+// -----------------
+//
+// mes "<message>";
+// ���b�Z�[�W�E�C���h�E��message��\�����܂�
+// �����̐F��^000000��^�ɑ�����16�i��6���Ŏw�肵�܂�(�����F�͍�(^000000)�ł�)
+//
+// next;
+// ���b�Z�[�W�E�C���h�E��"next"�̃{�^����\�����܂�
+//
+// close;
+// ���b�Z�[�W�E�C���h�E��"close"�̃{�^����\�����A�X�N���v�g�̎��s���I�����܂�
+//
+// menu "<choice1>",<Label1>[,"<choice2>",<Label2>....];
+// �I�����E�C���h�E��\�����܂��B"choice1","choice2"�����I�����ɕ\������
+// ���j���[�őI�񂾏ꍇ�́A���̌�ɋL�q����郉�x���ɃW�����v���܂��B
+// �܂��A�I���������ڂ̓��[�J���ϐ�l15�ɂĎQ�Ƃł��܂��B
+// ��̗�ł��ƑI������"choice1"������A�����I�Ԃ�Label1:�Ŏn�܂�s�ɃW�����v���܂��B
+// �����āA�ϐ�l15�ɂ�1�Ƃ����l���Z�b�g����܂�
+// cancel��I�񂾏ꍇ�A�X�N���v�g�̎��s���I�����܂�
+//
+// goto <Label>;
+// Label:�Ŏn�܂�s���瑱�������s���܂�
+//
+// cutin "<filename>[.bmp]",<pos>;
+// ��ʏ��filename�Ŏw�肷��摜��\�����܂�
+// filename - �\������bmp�t�@�C�����B�g���q�͖����Ă��\���܂���
+// pos - �\���ʒu 0-���� 1-������ 2-�E�� 3-? 4-? 255-��\��
+// ���݂̃N���C�A���g�ł́Acutin�����s����Ƃ��ɈȑOcutin�����s����Ă���摜���\������Ă���ꍇ�́A
+// ��ɕ\�����Ă���摜���������Ă����Ŏw�肳���摜��\�����܂�
+//
+// jobchange <Jobid>;
+// PC�̐E��Jobname�Ŏw�肵���E�ɕύX���܂��B�w��ł���Jobid�ɂ‚��Ă�db/const.txt��Job_�ł͂��܂�s��
+// �Q�Ƃ��Ă��������Bconst�Ŏw�肵�Ă��閄�߂��ݕϐ������g�p�ł��܂��B
+// jobchange���s���ƁAJobLv��1�ɁA�X�e�[�^�X�{�[�i�X�͂��̐E��
+// ���킹�����ɕω����܂��BAthena-d2.1�ł̓X�L���͎g���Ȃ��̂ŁA�����ڕύX�����Ǝv���Ă��������B
+// [����]
+// 1.�lj�2���E(�N���Z�C�_�[��)��jobchange������ꍇ�A���F�p���b�g��ύX���Ă���ꍇ�̓��\�[�X�G���[��
+// �N���܂��̂ŁA���s���Ȃ��悤�ɂ��Ă��������B
+// 2.�o�[�h�ƃ_���T�[��Jobname�͕ʂɂȂ��Ă��܂��B
+// ���̂��߁A�j��PC�ɑ΂���Job_Dancer�����s������A����PC�ɑ΂���job_Bird�����s���Ȃ��悤�ɂ��Ă��������B
+// �N���C�A���g�ɂ���Ă̓��\�[�X�G���[�ŗ����܂��B
+// map���ł͐����`�F�b�N���s���Ă��Ȃ����߁A�X�N���v�g���Ń`�F�b�N����K�v������܂��B
+// npc_testJ.txt�̗���Q�Ƃ��Ă��������B
+// 3.db/const.txt�ɂ�knight2/crusader2�̋L�q������܂����A����job�ւ�jobchange�͍s��Ȃ��ق�������ł��B
+// ���ۂ̃Q�[���ł�����job�͎g�p����Ă��Ȃ��悤�ł��B
+//
+// input [<variable>];
+// �������̓E�C���h�E���J���܂��B
+// ���͂��ꂽ������variable���������ꍇ���̕ϐ��ɁA
+// ���������ꍇ�̓��[�J���ϐ�l14�ɃZ�b�g����܂��B
+//
+// warp "<destination_gatname>",<destination_x>,<destination_y>;
+// �w�肵���}�b�v��x,y���W�Ƀ��[�v���܂��B�ڍׂ͏�Lwarp(NPC)�̍����Q�Ƃ��Ă��������B
+//
+// setlook <n1>,<n2>;
+// PC�̊O����ݒ肵�܂��B
+// <n1> - (1 .. 8)
+// 1-���^
+// 2-����
+// 3-����
+// 4-����
+// 5-����
+// 6-���F
+// 7-���F
+// 8-��
+// <n2> - �C��
+// �O���ݒ�͊Y���A�C�e���𑕔����Ă��Ȃ��Ă��t������܂��B
+// �z��O�̔ԍ���ݒ肷��ƁA�N���C�A���g�����\�[�X�G���[�ŗ����܂��B
+// �A�T�V���j,�lj�2���E�Ɋւ��Ă͕��F�̕ύX�͍s��Ȃ��ł�������(��͂胊�\�[�X�G���[�������܂�)
+// ����⓪����,���̐ݒ�̓X�e�[�^�X�Čv�Z���ɏ㏑������Ă��܂����߁A
+// �����I�ȗp�r�ɂ̂ݗ��p�”\�ł��B
+//
+// set <variable>,<n>;
+// �ϐ�<variable>�̒l��<n>�ɃZ�b�g���܂��B
+// ����<n>�͐��l�݂̂ŕ����񂪈����܂��񂪁A����Ή��\��ł��B
+//
+// if (<cond>) goto <Label>;
+// ��������ł��B<cond>�̌v�Z���ʂ�0�ȊO�̏ꍇ�ALabel�ɃW�����v���܂��B
+//
+// getitem <item_id>,<num>;
+// PC�̏����i���X�g��item_id�Ŏw�肳���A�C�e����num�����lj����܂��B
+//
+// delitem <item_id>,<num>;
+// PC�̏����i���X�g����item_id�Ŏw�肳���A�C�e����num�����폜���܂��B
+//
+// viewpoint <type>,<x>,<y>,<id>,<color>;
+// �~�j�}�b�v��x,y�̍��W�Ƀ}�[�N(color�F���w��)��t���܂��B
+// <type> 1-�\��
+// 2-�폜
+//
+// heal <hp>,<sp>;
+// PC��HP/SP��hp,sp�Ŏw�肵���l�����񕜂����܂��B
+//
+// end;
+// �����ŃX�N���v�g�̎��s���I�����܂��B
+//
+// setoption <str>;
+// PC�Ɉȉ��Ŏ����t���i(?)��t���܂��B
+// 0x0000 - �t���i�폜
+// 0x0001 - ?
+// 0x0002 - �n�C�h(�e�t��)
+// 0x0004 - ??
+// 0x0008 - �J�[�g
+// 0x0010 - ��
+// 0x0020 - �y�R�y�R(�i�C�g,�N���Z�C�_�[�̎��̂ݗL��)
+// 0x0040 - �n�C�h(�e����)
+// 0x0080 - �J�[�g2
+// 0x0100 - �J�[�g3
+// 0x0200 - �J�[�g4
+// 0x0400 - �J�[�g5
+// 0x0800 - �����I�[�N(Sage�̃X�L���A���o�[�X�I�[�L�b�V��������������ԂɂȂ�)
+// setoption�����s����Ƃ��A���X�Z�b�g����Ă����l�̓N���A����܂��B
+// ���ꂼ��̒l�͉��Z�����l��ݒ肷�邱�Ƃɂ��A�����ɕt���i���t�����܂��B
+// �Ⴆ�΁A0x38�ŃJ�[�g�������āA���A�ꂽ�y�R���i�C�g�Ƃ��������̂��ł��܂��B
+// setoption�ŃZ�b�g���ꂽ�l�̓N���C�A���g�I������L������܂��B
+// [memo]�b��I�Ȃ̂Ŏd�l�ύX�̉”\��������܂��B
+//
+// savepoint "<gatname>",<x>,<y>;
+// �Z�[�u�|�C���g��gatname,x,y�ɐݒ肵�܂�
+//
+// -----
+// *�֐�
+// -----
+// �������߂Ȃǂňȉ��̊֐����g�p�ł��܂��B
+//
+// rand(<n>[,n2])
+// n�݂̂̏ꍇ�A0����(n-1)�܂ł̐��������_���ɕԂ��܂��B
+// n2���^�����Ă����ꍇ�� n ���� n2 �܂ł̐��������_���ɕԂ��܂�
+//
+// countitem(<item_id>)
+// �v���C���[�̏�������Aitem_id�Ŏw�肷��A�C�e���̐���Ԃ��܂�
+//
+// [memo]
+// �����_�����[�v�������������ꍇ�A�͈͎��s��script�𗘗p���܂�(npc_warp.txt���Q��)
+//
+
+// script�̗�:
+prontera.gat,146,203,2 script �f�o�b�K�[�v�� 116,{
+ cutin "kafra_02",2;
+ if(countitem(515)<10) goto Llesscarrot;
+ mes "[�f�o�b�K�[�v��]";
+ mes "���炠��A�ɂ񂶂���R�����Ă܂��ˁB";
+ mes "�Ƃ������ŁA���������D���Ə���ɂ킽�����F�肵�܂����B";
+ mes "�ɂ񂶂�10�{�ƌ����ł����݂݃w�A�o���h�����������܂��ˁB";
+ next;
+ if(countitem(515)<10) goto Llesscarrot_err;
+ delitem 515,10;
+ getitem 2214,1;
+ goto Llesscarrot;
+Llesscarrot_err:
+ mes "[�f�o�b�K�[�v��]";
+ mes "����H�ɂ񂶂񂪑���Ȃ��Ȃ��Ă܂��ˁB";
+ mes "�Ƃ������ō���̎��͖����������ɂ��܂��B";
+ next;
+// �ʏ�͂�������
+Llesscarrot:
+ mes "[�f�o�b�K�[�v��]";
+ mes "��������Ⴂ�܂��B";
+ mes "�������܂���?";
+ next;
+ menu "�X�e�[�^�X�|�C���g��200���₷",Lstp,"�X�L���|�C���g��20���₷",Lskill,
+ "�������~�����ł�",Lzeny,"�ē��̃e�X�g",Lviewpoint,"�]�E����",Ljobchange,"�J�[�g���‚���",Lcart,"��߂�",Lend;
+Lstp: set StatusPoint,StatusPoint+200;
+ goto Lend;
+Lskill: set SkillPoint,SkillPoint+20;
+ goto Lend;
+Lzeny: set Zeny,Zeny+1000;
+ goto Lend;
+Lviewpoint:
+ viewpoint 1,156,360,1,0x0000ff;
+ mes "[�f�o�b�K�[�v��]";
+ mes "�v�����e����";
+ next;
+ viewpoint 2,156,360,1,0x0000ff;
+ viewpoint 1,156,22,2,0x00ff00;
+ viewpoint 1,22,203,3,0x00ff00;
+ viewpoint 1,289,203,4,0x00ff00;
+ mes "[�f�o�b�K�[�v��]";
+ mes "����3�ӏ�����O�ɏo���܂��B";
+ next;
+ viewpoint 2,156,22,2,0x00ff00;
+ viewpoint 2,22,203,3,0x00ff00;
+ viewpoint 2,289,203,4,0x00ff00;
+ goto Lend;
+Ljobchange:
+ cutin "kafra_02",255;
+ mes "[�f�o�b�K�[�v��]";
+ mes "�����ڂ݂̂ł���";
+ mes "�]�E�”\�ł��B";
+ mes "�]�E�����A�X�L������";
+ mes "�������̂��ߎg���܂���B";
+ mes "�ǂ̐E�Ƃɓ]�E�����܂���?";
+ next;
+ menu "���S��",Lnv,
+ "���m",Lsm,
+ "�}�W�V����",Lmg,
+ "�A�[�`���[",Lac,
+ "�A�R���C�g",Lal,
+ "���l",Lmc,
+ "�V�[�t",Ltf,
+ "�i�C�g",Lkn,
+ "�v���[�X�g",Lpr,
+ "�E�B�U�[�h",Lwz,
+ "�b�艮",Lbs,
+ "�n���^�[",Lht,
+ "�A�T�V��",Las,
+ "���܂���",Lrandom,
+ "��߂�",Ljchcancel;
+Lnv: jobchange Job_Novice; goto Lend;
+Lsm: jobchange Job_Swordman; goto Lend;
+Lmg: jobchange Job_Mage; goto Lend;
+Lac: jobchange Job_Archer; goto Lend;
+Lal: jobchange Job_Acolyte; goto Lend;
+Lmc: jobchange Job_Merchant; goto Lend;
+Ltf: jobchange Job_Thief; goto Lend;
+Lkn: jobchange Job_Knight; goto Lend;
+Lpr: jobchange Job_Priest; goto Lend;
+Lwz: jobchange Job_Wizard; goto Lend;
+Lbs: jobchange Job_Blacksmith; goto Lend;
+Lht: jobchange Job_Hunter; goto Lend;
+Las: jobchange Job_Assassin; goto Lend;
+Lrandom:
+ mes "[�f�o�b�K�[�v��]";
+ mes "�ł́c";
+ set l0,rand(13);
+ jobchange l0;
+ mes "���̐E�ƂŊ撣���Ă��������ˁB";
+ goto Lend;
+Ljchcancel: mes "����A��߂�̂ł����c";
+ mes "�]�E�����Ƃ���";
+ mes "�C�y�ɐ��������Ă���������"; close;
+ goto Lend;
+Lcart:
+ mes "[�f�o�b�K�[�v��]";
+ mes "�J�[�g�ł��ˁB";
+ mes "�t���܂����H����Ƃ��O���܂����H";
+ menu "�‚���",LattachC,"�O��",LremoveC;
+LattachC:
+ mes "�͂��A�ǂ����B";
+ setoption 0x08;
+ goto Lend;
+LremoveC:
+ mes "�ł́A�O���܂��ˁB";
+ setoption 0x00;
+ goto Lend;
+Lend: cutin "kafra_02",255;
+ close;
+ end; }
+
+prontera.gat,156,195,4 script �J�v���E�� 112,{
+ mes "[�J�v���E��]";
+ mes "��������Ⴂ�܂�";
+ mes "������ł́A���݂�Athena�̏󋵂�����������܂��B";
+ next;
+ menu "����",Lcont,"�����Ȃ�",Lend;
+Lcont: mes "[�J�v���E��]";
+ mes "Athena�ł�RO�G�~���I�J���X��35����̃v���O�������x�[�X�Ƃ��ĊJ�����͂��܂�܂���"
+ mes "�r���A�\�[�X�̕��������}���A���݂̏�ԂɂȂ��Ă��܂��B";
+ next;
+ mes "���ݎ�������Ă�����̂͂‚��̒ʂ�ł�";
+ mes "�E�}�b�v�Ԉړ��|�C���g";
+ mes "�E���lNPC";
+ mes "�E��bNPC�@(��������,���x���W�����v�A�����_���ϐ��A�A�C�e���󂯓n���A�ϐ��Q�ƁAcutin��";
+ mes "�E�ϐ��ۑ�";
+ mes "�E���A�C�e��";
+ mes "�E�`���b�g";
+ mes "�E�퓬(����)";
+ mes "�EEpisode 4�ȍ~�^�C�v�̃p�P�b�g�d�l";
+ mes "�E�o���l,lv�㏸";
+ mes "�E�A�C�e���̗��p�̈ꕔ";
+ next;
+ mes "[�J�v���E��]";
+ mes "�t�Ɍ����������Ă��Ȃ����̂͑�̈ȉ��̒ʂ�ł��B";
+ mes "�E�X�L��";
+ mes "�E�����ɂ��p�����[�^�ω�";
+ mes "�E�p�[�e�B/�M���h";
+ mes "�E�y�b�g";
+ mes "�E���B/����쐬";
+ next;
+ mes "[�J�v���E��]";
+ mes "����ƒ��ӓ_�ł����AAthena�ł�ID�̍Ō��_F�܂���_M��t����ƐV�KID�����s�����d�g�ɂȂ��Ă��܂����A";
+Lcont2: mes "2��ڈȍ~��_F,_M��t���Ă���ƃp�X���[�h�G���[�����ɂȂ�܂��B";
+ next;
+ mes "[�J�v���E��]";
+ mes "�Ⴆ�΁A�����ID:^ff0000hoge^0000ff_F^000000�@pass:0123��login�����ꍇ�Ahoge��ID�Ƃ��ēo�^����܂��B";
+ mes "����āA2��ڈȍ~��ID:^ff0000hoge^000000�@pass:0123�Ƃ���login���ĉ������B";
+ next;
+ mes "[�J�v���E��]";
+ mes "keep�Ƀ`�F�b�N�����Ă���ꍇ�A�኱�s�ւȎd�l�ł����A�ȏ�̓_����낵�����肢���܂��B";
+ close;
+Lend: mes "[�J�v���E��]";
+ mes "�ł͒��ӓ_�̂݁A���������Ē����܂��B";
+ next;
+ mes "[�J�v���E��]";
+ mes "Athena�ł�ID�̍Ō��_F�܂���_M��t����ƐV�KID�����s�����d�g�ɂȂ��Ă��܂����A";
+ goto Lcont2; }
+
diff --git a/npc/sample/npc_shop_test.txt b/npc/sample/npc_shop_test.txt
new file mode 100644
index 000000000..e8075b1c8
--- /dev/null
+++ b/npc/sample/npc_shop_test.txt
@@ -0,0 +1,31 @@
+// �v�����e����������
+prontera.gat,156,192,3 shop �J�[�h�V���b�v1 95,4001:100,4002:100,4003:100,4004:100,4005:100,4006:100,4007:100,4008:100,4009:100,4010:100,4011:100,4012:100,4013:100,4014:100,4015:100,4016:100,4017:100,4018:100,4019:100,4020:100,4021:100,4022:100,4023:100,4024:100,4025:100,4026:100,4027:100,4028:100,4029:100,4030:100,4031:100,4032:100,4033:100,4034:100,4035:100,4036:100,4037:100,4038:100,4039:100,4040:100,4041:100,4042:100,4043:100,4044:100,4045:100,4046:100,4047:100,4048:100,4049:100,4050:100
+prontera.gat,154,192,1 shop �J�[�h�V���b�v2 123,4051:100,4052:100,4053:100,4054:100,4055:100,4056:100,4057:100,4058:100,4059:100,4060:100,4061:100,4062:100,4063:100,4064:100,4065:100,4066:100,4067:100,4068:100,4069:100,4070:100,4071:100,4072:100,4073:100,4074:100,4075:100,4076:100,4077:100,4078:100,4079:100,4080:100,4081:100,4082:100,4083:100,4084:100,4085:100,4086:100,4087:100,4088:100,4089:100,4090:100,4091:100,4092:100,4093:100,4094:100,4095:100,4096:100,4097:100,4098:100,4099:100,4100:100
+prontera.gat,158,192,1 shop �J�[�h�V���b�v3 67,4101:100,4102:100,4103:100,4104:100,4105:100,4106:100,4107:100,4108:100,4109:100,4110:100,4111:100,4112:100,4113:100,4114:100,4115:100,4116:100,4117:100,4118:100,4119:100,4120:100,4121:100,4122:100,4123:100,4124:100,4125:100,4126:100,4127:100,4128:100,4129:100,4130:100,4131:100,4132:100,4133:100,4134:100,4135:100,4136:100,4137:100,4138:100,4139:100,4140:100,4141:100,4142:100,4143:100,4144:100,4145:100,4146:100,4147:100,4148:100
+prontera.gat,144,205,1 shop ��������1 71,2201:100,2202:100,2203:100,2204:100,2205:100,2206:100,2207:100,2208:100,2209:100,2210:100,2211:100,2212:100,2213:100,2214:100,2215:100,2216:100,2217:100,2218:100,2219:100,2220:100,2221:100,2222:100,2223:100,2224:100,2225:100,2226:100,2227:100,2228:100,2229:100,2230:100,2231:100,2232:100,2233:100,2234:100,2235:100,2236:100,2237:100,2239:100,2240:100,2241:100,2242:100,2243:100,2244:100,2245:100,2246:100,2247:100,2248:100,2249:100,2250:100
+prontera.gat,144,203,3 shop ��������2 101,2251:100,2252:100,2253:100,2254:100,2255:100,2256:100,2257:100,2258:100,2259:100,2260:100,2261:100,2262:100,2263:100,2264:100,2265:100,2266:100,2267:100,2268:100,2269:100,2270:100,2271:100,2272:100,2273:100,2274:100,2275:100,2276:100,2277:100,2278:100,2279:100,2280:100,2281:100,2282:100,2283:100,2284:100,2285:100,2286:100,2287:100,2288:100,2289:100,2290:100,2291:100,2292:100,2293:100,2294:100,2295:100,2296:100,2297:100,2298:100,2299:100
+prontera.gat,144,201,3 shop ��������3 69,5001:100,5002:100,5003:100,5004:100,5005:100,5006:100,5007:100,5008:100,5009:100,5010:100,5011:100,5012:100,5013:100,5014:100,5015:100,5016:100,5017:100,5018:100,5019:100
+prontera.gat,167,202,5 shop �A�N�Z�T���[�V���b�v 102,2601:100,2602:100,2603:100,2604:100,2605:100,2607:100,2608:100,2609:100,2610:100,2611:100,2612:100,2613:100,2614:100,2615:100,2616:100,2617:100,2618:100,2619:100,2620:100,2621:100,2622:100,2623:100,2624:100,2625:100,2626:100,2627:100,2628:100
+prontera.gat,167,204,6 shop �G�݉� 96,501:100,502:100,503:100,504:100,505:100,506:100,507:100,508:100,509:100,510:100,511:100,512:100,513:100,514:100,515:100,516:100,517:100,518:100,519:100,520:100,521:100,522:100,523:100,525:100,526:100,528:100,529:100,530:100,531:100,532:100,533:100,534:100,535:100,536:100,537:100,538:100,539:100,601:100,602:100,603:100,604:100,605:100,606:100,607:100,608:100,609:100,610:100
+prontera.gat,167,206,6 shop �b�艮���X 90,714:100,715:100,716:100,717:100,718:100,719:100,720:100,721:100,722:100,723:100,724:100,725:100,726:100,727:100,728:100,729:100,730:100,731:100,732:100,733:100,756:100,757:100,984:100,985:100,990:100,991:100,992:100,993:100,994:100,995:100,996:100,997:100,1010:100,1011:100,998:100,999:100,1000:100,1001:100,1002:100,1003:100,913:100,920:100,718:100,958:100,957:100,922:100,963:100,923:100,968:100,1005:100,612:100,615:100,989:100
+prontera.gat,164,204,5 shop ���{����i�X 81,542:100,543:100,1766:100
+// �v�����e��������
+prontera.gat,141,175,5 shop �|�� 102,1705:100,1711:100,1716:100,1719:100,1720:100,1750:1,1751:1,1752:1,1753:1,1754:1,1755:1,1756:1,1766:1,1065:1
+prontera.gat,141,173,5 shop ���� 102,1117:100,1125:100,1155:100,1162:100,1130:100,1131:100,1132:100,1133:100,1134:100,1135:100,1136:100,1137:100,1138:100,1139:100,1140:100,1141:100,1161:100,1162:100,1163:100,1164:100,1165:100,1166:100,1167:100,1168:100,1169:100,1170:100
+prontera.gat,141,171,5 shop ���� 102,1408:100,1461:100,1464:100,1413:100,1414:100,1415:100,1416:100,1466:100,1467:100,1468:100,1469:100,1470:100,1471:100
+prontera.gat,141,169,5 shop ���� 102,1352:100,1355:100,1361:100,1363:100,1364:100,1365:100,1366:100,1367:100,1368:100,1369:100
+prontera.gat,141,167,5 shop �Z���� 102,1208:100,1220:100,1223:100,1224:100,1225:100,1226:100,1227:100,1228:100,1229:100,1230:100,1231:100,1232:100,1233:100,1234:100,1235:100,1236:100,1237:100
+prontera.gat,141,165,5 shop �݊퉮 102,1505:100,1520:100,1514:100,1517:100,1522:100,1523:100,1524:100,1525:100,1526:100,1527:100,1528:100
+prontera.gat,141,163,5 shop �J�^�[���� 102,1251:100,1253:100,1255:100,1256:100,1257:100,1258:100,1259:100,1260:100,1261:100
+prontera.gat,141,161,5 shop �� 102,1602:100,1608:100,1611:100,1613:100,1614:100,1615:100
+prontera.gat,141,159,5 shop �{�� 102,1550:100,1551:100,1552:100,1553:100,1554:100,1555:100,1556:100,1557:100,1558:100
+prontera.gat,141,177,5 shop �h� 102,2306:100,2339:100,2311:100,2331:100,2336:100,2337:100,2326:100,2327:100,2315:100,2317:100,2102:100,2104:100,2106:100,2108:100,2402:100,2404:100,2406:100,2407:100,2408:100,2409:100,2502:100,2504:100,2506:100,2507:100,2508:100
+
+// �e�C�~���O���l
+prontera.gat,218,211,4 shop �e�C�~���O���l 125,537:2500,643:3000,10013:1500,10014:2000
+izlude.gat,164,138,4 shop �e�C�~���O���l 124,537:2500,643:3000,10013:1500,10014:2000
+morocc.gat,269,167,4 shop �e�C�~���O���l 125,537:2500,643:3000,10013:1500,10014:2000
+geffen.gat,193,152,4 shop �e�C�~���O���l 124,537:2500,643:3000,10013:1500,10014:2000
+payon.gat,142,104,4 shop �e�C�~���O���l 124,537:2500,643:3000,10013:1500,10014:2000
+
+// EOF //
diff --git a/npc/sample/npc_test_arena.txt b/npc/sample/npc_test_arena.txt
new file mode 100644
index 000000000..52766e750
--- /dev/null
+++ b/npc/sample/npc_test_arena.txt
@@ -0,0 +1,104 @@
+// ------------------------------------------------------------------
+// �A���|�i�̐ݒ�
+// ------------------------------------------------------------------
+
+// ���̃}�b�v���g���܂�
+//map: prontera.gat
+//map: prt_are_in.gat
+//map: force_1-1.gat
+
+// �e���|�Ȃǂ̋֎~����
+prt_are_in.gat mapflag nomemo dummy
+prt_are_in.gat mapflag noteleport dummy
+prt_are_in.gat mapflag nosave prontera.gat,156,191
+force_1-1.gat mapflag nomemo dummy
+force_1-1.gat mapflag noteleport dummy
+force_1-1.gat mapflag nosave prontera.gat,156,191
+
+// �v�����e���ɓ������u��
+prontera.gat,160,185,0 script �A���[�i����� 116,{
+ mes "�A���[�i������ɔ�т܂����H";
+ next;
+ menu "���",L_GOARENA,"��߂�",L_YAME;
+L_GOARENA:
+ warp "prt_are_in.gat",31,82;
+ close;
+L_YAME:
+ close;
+}
+
+// �ҋ@�����珀�����ւ̓]��
+prt_are_in.gat,29,79,0 script �^�C���A�^�b�N�P 116,{
+ if( getmapusers("force_1-1.gat")>0 ) goto L_WAIT;
+ mes "�����̓^�C���A�^�b�NLv1�ł�";
+ mes "���킵�܂����H";
+ menu "�͂�",L_GOLV1,"��߂�",L_YAME;
+L_GOLV1:
+ if( getmapusers("force_1-1.gat")>0 ) goto L_WAIT;
+ disablenpc "fc103-1";
+ disablenpc "fc105";
+ disablenpc "fc107";
+ addtimer 5000,"arenatestev0000";
+ warp "force_1-1.gat",99,12;
+ end;
+L_WAIT:
+ mes "���ݒ��풆�̕������܂��̂ŁA";
+ mes "���΂炭���҂����������B";
+L_YAME:
+ close;
+}
+
+// �������i�P�O�b�������ԁj
+force_1-1.gat,99,12,0 script arenatestev0000 -1,{
+ announce "�P�O�b��ɊJ�n���܂�",3;
+ addtimer 10000,"arenatestev0001";
+}
+
+// ���ۂ̕����ւ̓]����MOB�̐ݒ�
+force_1-1.gat,99,12,0 script arenatestev0001 -1,{
+ killmonster "force_1-1.gat","arenatestev1000";
+ monster "force_1-1.gat",25,25,"--ja--",1002,1,"arenatestev1000";
+ monster "force_1-1.gat",20,25,"--ja--",1002,1,"arenatestev1000";
+ monster "force_1-1.gat",25,20,"--ja--",1002,1,"arenatestev1000";
+ monster "force_1-1.gat",30,25,"--ja--",1002,1,"arenatestev1000";
+ monster "force_1-1.gat",25,30,"--ja--",1002,1,"arenatestev1000";
+ set $arenatest00,5;
+ disablenpc "fc101";
+ disablenpc "fc103";
+ warp "force_1-1.gat",25,26;
+ enablenpc "fc103-1";
+ enablenpc "fc105";
+ enablenpc "fc107";
+ announce "30�b�ȓ��ɟr�ł���",19;
+ addtimer 30000,"arenatestev8000";
+}
+
+// �|��������
+force_1-1.gat,25,26,0 script arenatestev1000 -1,{
+ set $arenatest00, $arenatest00 - 1;
+ if( $arenatest00 > 0 ) goto L_CONT;
+ deltimer "arenatestev8000";
+ announce "�N���b�V��!!",3;
+ enablenpc "fc101";
+ enablenpc "fc103";
+ areaannounce "prt_are_in.gat",25,75,40,90,
+ strcharinfo(0) + " ���^�C���A�^�b�NLv1���N���A���܂���",0;
+ addtimer 5000,"arenatestev9000";
+L_CONT:
+ end;
+}
+
+// �^�C���A�E�g
+force_1-1.gat,25,26,0 script arenatestev8000 -1,{
+ set $arenatest00,99;
+ killmonster "force_1-1.gat","arenatestev1000";
+ announce "�^�C���I�[�o�[!!",3;
+ areaannounce "prt_are_in.gat",25,75,40,90,
+ strcharinfo(0) + " ���^�C���A�^�b�NLv1�Ɏ��s���܂���",0;
+ addtimer 5000,"arenatestev9000";
+}
+
+// �v�����e���ɋA��
+force_1-1.gat,25,26,0 script arenatestev9000 -1,{
+ warp "prontera.gat",156,191;
+}
diff --git a/npc/sample/npc_test_array.txt b/npc/sample/npc_test_array.txt
new file mode 100644
index 000000000..9d77843c8
--- /dev/null
+++ b/npc/sample/npc_test_array.txt
@@ -0,0 +1,35 @@
+// �z��̃e�X�g
+prontera.gat,164,190,1 script �z��e�X�g 112,{
+ set @hoge[0],1;
+ set @hoge[1],5;
+ mes "hoge[2]����͂��Ă�������";
+ next;
+ input @hoge[2];
+ mes "hoge => " + @hoge;
+ mes "hoge[0]=> " + @hoge[0];
+ mes "hoge[1]=> " + @hoge[1];
+ mes "hoge[2]=> " + @hoge[2];
+ next;
+ setarray @hoge[1],2,3,4,5;
+ mes "true: 5,1,2,3,4";
+ mes "hoge size = "+ getarraysize(@hoge);
+ mes "hoge[0]=> " + @hoge[0];
+ mes "hoge[1]=> " + @hoge[1];
+ mes "hoge[2]=> " + @hoge[2];
+ mes "hoge[3]=> " + @hoge[3];
+ next;
+ copyarray @fuga[0],@hoge[2],2;
+ mes "true: 3,4,0";
+ mes "fuga[0]=> " + @fuga[0];
+ mes "fuga[1]=> " + @fuga[1];
+ mes "fuga[2]=> " + @fuga[2];
+ next;
+ deletearray @hoge[1],2;
+ mes "true: 1,4,5,0";
+ mes "hoge[0]=> " + @hoge[0];
+ mes "hoge[1]=> " + @hoge[1];
+ mes "hoge[2]=> " + @hoge[2];
+ mes "hoge[3]=> " + @hoge[3];
+
+ close;
+}
diff --git a/npc/sample/npc_test_chat.txt b/npc/sample/npc_test_chat.txt
new file mode 100644
index 000000000..267dc4b66
--- /dev/null
+++ b/npc/sample/npc_test_chat.txt
@@ -0,0 +1,28 @@
+
+
+prontera.gat,158,182,0 script chat�e�X�g::test0001 116,{
+ mes "�g���K�[�l��" + getwaitingroomstate(2);
+ mes "�g���K�[���" + getwaitingroomstate(3);
+ menu "�L����",L_ENA,"������",L_DISA,"�폜",L_DEL,"�쐬",L_MAKE;
+ close;
+L_ENA:
+ enablewaitingroomevent;
+ close;
+L_DISA:
+ disablewaitingroomevent;
+ close;
+L_DEL:
+ delwaitingroom;
+ close;
+L_MAKE:
+ waitingroom "�e�X�g",15,"test0001::OnChatEvent",1;
+ close;
+OnInit:
+ waitingroom "�e�X�g",15,"test0001::OnChatEvent",1;
+ end;
+OnChatEvent:
+ disablewaitingroomevent;
+ warpwaitingpc "prontera.gat",160,180;
+ end;
+
+}
diff --git a/npc/sample/npc_test_ev.txt b/npc/sample/npc_test_ev.txt
new file mode 100644
index 000000000..a324f8800
--- /dev/null
+++ b/npc/sample/npc_test_ev.txt
@@ -0,0 +1,146 @@
+// �C�x���g�̃e�X�g�Ɖ��
+//
+
+
+// * NPC�̕\���N���X��-1�ɂ���ƃC�x���g�ɂȂ�A���s�”\�ɂȂ�܂��B
+// * �ʏ��NPC�ł��ȉ��̃��x���t���C�x���g���g�����ƂŃC�x���g�ɂȂ�܂��B
+// * NPC�X�N���v�g��On�`�Ŏn�܂郉�x�����`����ƁA
+// ���x���t���̃C�x���g�Ƃ��ăG�N�X�|�[�g���A���s�”\�ɂȂ�܂��B
+// * NPC�C�x���g��"NPC��(or�C�x���g��)::���x����"�Ƃ���ƁA
+// �w�肵�����x��������s�ł��܂��B
+// * ���x������24�o�C�g�ȓ��ɂ��ĉ������B
+
+
+// ------------------------------------------------------------------
+// �C�x���g�̋N������/�N�����
+// ------------------------------------------------------------------
+
+// 1.doevent�R�}���h�ŋN����
+// 2.MOB��|�����Ƃ��ɋN����
+// �@a. �X�N���v�gmonster�R�}���h�̑�V�����ŃC�x���g����ݒ�
+// b. monster�̔z�u�̍Ō�̈����ŃC�x���g����ݒ�
+// 3.�}�b�v���������ɋN����iOnInit�j
+// 4.NPC�`���b�g���[���������ɂȂ����Ƃ��ɋN����
+// 5.���v�ɂ���ċN����
+// (OnMinute??,OnHour??,OnClock????,OnDate????) : ?�͐���
+
+// 3,5�̏������C�x���g�A���v�C�x���g�́A�Ώۂ�PC�������Ȃ��C�x���g�ɂȂ�܂�
+// �����PC��ΏۂƂ���X�N���v�g���g�����Ƃ͏o���܂���B
+// �܂��Aannounce�R�}���h�Ȃǂ�0x08�t���O���w�肵��NPC��̂ɂ���K�v������܂�
+
+// ----------�C�x���g�쓮�̃T���v�� -------------
+// �N���b�N����ƃC�x���g�uevent_test2�v���N����NPC
+prontera.gat,155,180,0 script ev_do�e�X�g 116,{
+ doevent "event_test2";
+}
+
+// ----------MOB�ɂ��C�x���g�쓮�̃T���v�� -------------
+// �|���ƃC�x���g�uevent_test�v���N���������X�^�[��[����]
+prontera.gat,150,185,0 script ev_mob�e�X�g 116,{
+ monster "this",0,0,"Event_Mob2",1002,1,"event_test";
+}
+
+// ----------MOB�ɂ��C�x���g�쓮�̃T���v��2-------------
+// �|���ƃC�x���g�uevent_test3�v���N���������X�^�[��[�z�u]
+prontera.gat,150,180,0 monster Event_Mob 1008,1,0,0,event_test3
+
+// ----------�^�C�}�ɂ��C�x���g�쓮�̃T���v�� -------------
+// �N���b�N����ƂT�b��Ƀ��x���uOnTimer�v�����s����NPC
+// �i�C�x���g���ɁuNPC��::On�`�Ŏn�܂郉�x���v���w�肷��ƃ��x�������s�ł���j
+prontera.gat,155,185,0 script ev_timer�e�X�g 116,{
+ addtimer 5000,"ev_timer�e�X�g::OnTimer";
+ end;
+OnTimer:
+ mes "�T�b�o���܂���";
+ close;
+}
+
+// ----------OnInit/�`���b�g���[���ɂ��C�x���g�쓮�̃T���v�� -------------
+// �}�b�v�T�[�o�[�N�����Ƀ��x���uOnInit�v�����s����A�`���b�g�����
+// �܂��Awaitingroom�̑�3�����ɃC�x���g��ݒ肷��
+prontera.gat,145,180,0 script ev_init�e�X�g 116,{
+ end;
+OnInit:
+ waitingroom "OnInit�e�X�g",1,"ev_init�e�X�g::OnMax";
+ end;
+OnMax:
+ warpwaitingpc "prontera.gat",155,190;
+ end;
+
+}
+
+// ----------���v�ɂ��C�x���g�쓮�̃T���v�� -------------
+// �w��̎�������t�ŃC�x���g�����s����
+// announce��0x08�t���O���w�肵�Ă���Ƃ���ɒ��ӂ��Ă��������B
+prontera.gat,145,185,0 script ev_clock�e�X�g 116,{
+ end;
+// ����5��
+OnMinute05:
+ announce "�����T�������m�点���܂�",8;
+ end;
+// ����12��(24H)
+OnHour12:
+ announce "���߂̃j���[�X�ł�",8;
+ end;
+// 23��59��
+OnClock2359:
+ announce "���ƂP���Ŗ����ł�",8;
+ end;
+// �P���P��
+OnDate0101:
+ announce "�����܂��Ă��߂łƂ��������܂�",8;
+ end;
+}
+
+
+// ------------------------------------------------------------------
+// �C�x���g�X�N���v�g�̍���
+// ------------------------------------------------------------------
+// �\���N���X��-1�ɂ���ƃC�x���g�����ɂȂ�A���O���C�x���g���ɂȂ�B
+// �G���A���w�肵�Ȃ��ꍇ�A�����}�b�v�����C�x���g���N�����͈͂ɂȂ�B
+// �G���A���w�肷��ꍇ�A����-1�ɂ���Ɠ����}�b�v�I�Ȃ�}�b�v������Ă�
+// �쓮����B�G���A�͔��a�ł���B�Ȃ��A�C�x���g�̋N����ʒu�Ƃ����̂́A
+// �ΏۂƂȂ�PC�̍��W�ł���B���Ƃ��΁A�������U����MOB��|�����Ƃ���
+// �N����C�x���g��MOB�̍��W�ł͂Ȃ��APC�̍��W�Ȃ̂Œ��ӁB
+
+// ----------�C�x���g�ŁA�G���A�͎w�肵�Ă��Ȃ��T���v��------------
+// �����}�b�v���ŃC�x���g�uevent_test�v���N����Ǝ��s�����
+prontera.gat,150,185,0 script event_test -1,{
+ announce strcharinfo(0) + " ������MOB��|���܂���",2;
+ close;
+}
+
+// ----------�C�x���g�ŁA�G���A���w�肵���T���v��------------
+// (155,185)���甼�a5�Z���ȓ��ŃC�x���g�uevent_test2�v���N����Ǝ��s�����
+prontera.gat,155,180,0 script event_test2 -1,5,5 {
+ announce "�T�Z���ȓ��ŃN���b�N���܂�����",19;
+ close;
+}
+
+// ----------�C�x���g�ŁA�G���A��-1�ɂ����T���v��------------
+// �����}�b�v�I�ŃC�x���g�uevent_test3�v���N����Ǝ��s�����
+prontera.gat,150,180,0 script event_test3 -1,-1,-1 {
+ mes "�z�uMOB�|���܂�����";
+ close;
+}
+
+
+
+// ------------------------------------------------------------------
+// �C�x���g�}�b�v�p�̐ݒ�
+// ------------------------------------------------------------------
+// �i�S�ăR�����g�A�E�g���Ă܂��j
+
+// ----------�Z�[�u�֎~�̃T���v��---------
+// ���̃}�b�v�Ń��O�A�E�g����ƁA�K�� �v�����e�� �̍��W(156,190)��
+// �Z�[�u�����
+//prontera.gat mapflag nosave prontera.gat,156,190
+
+// ----------�����֎~�̃T���v��---------
+// ���̃}�b�v�ł̓������Ƃ�Ȃ�
+//prontera.gat mapflag nomemo dummy
+
+// ----------�e���|�֎~�̃T���v��---------
+// ���̃}�b�v�ł͔��A���A�e���|�A�|�^���g���Ȃ�
+// ���ӁF�X�N���v�g��warp��"Random","SavePoint"�������ɂȂ�܂�
+//prontera.gat mapflag noteleport dummy
diff --git a/npc/sample/npc_test_func.txt b/npc/sample/npc_test_func.txt
new file mode 100644
index 000000000..db659fc1b
--- /dev/null
+++ b/npc/sample/npc_test_func.txt
@@ -0,0 +1,27 @@
+
+// �l��Ԃ��Ȃ��֐�
+function script func001 {
+ mes "���[�U�[��`�֐�";
+ next;
+ return; // �ȗ��ł��Ȃ�
+}
+
+// �l��Ԃ��֐�
+function script func002 {
+ return "���[�U�[��`�֐��Q";
+}
+
+// �֐��̌Ăяo���ƃT�u���[�e�B���̃e�X�g
+prontera.gat,168,189,1 script �֐��e�X�g 112,{
+ callfunc "func001"; // ���[�U�[��`�֐��͕�����Ŏw��
+ mes callfunc("func002");
+ next;
+ callsub L_SUB001; // �T�u���[�e�B���̓��x���𒼐ڎw��
+ close;
+ end;
+
+L_SUB001:
+ mes "�T�u���[�e�B��";
+ return; // �ȗ��ł��Ȃ�
+}
+
diff --git a/npc/sample/npc_test_npctimer.txt b/npc/sample/npc_test_npctimer.txt
new file mode 100644
index 000000000..f40d36847
--- /dev/null
+++ b/npc/sample/npc_test_npctimer.txt
@@ -0,0 +1,33 @@
+
+prontera.gat,156,183,0 script NPCtimer�e�X�g::npctimerX0000 116,{
+ mes "�^�C�}�[�l" + getnpctimer(0);
+ mes "�^�C�}�[���" + getnpctimer(1,"npctimerX0000");
+ mes "�C�x���g��" + getnpctimer(2);
+ menu "������",L_INIT,"��~",L_STOP,"�ĊJ",L_START,"�ݒ�",L_SET;
+ close;
+L_INIT:
+ initnpctimer;
+ close;
+L_STOP:
+ stopnpctimer;
+ close;
+L_START:
+ startnpctimer;
+ close;
+L_SET:
+ input @temp;
+ setnpctimer @temp;
+ close;
+
+OnTimer1000:
+ announce "1�b�o��",0;
+ end;
+
+OnTimer5000:
+ announce "5�b�o��",0;
+ end;
+
+OnTimer10000:
+ announce "10�b�o��",0;
+ end;
+}
diff --git a/npc/sample/npc_test_npctimer2.txt b/npc/sample/npc_test_npctimer2.txt
new file mode 100644
index 000000000..de9895f3c
--- /dev/null
+++ b/npc/sample/npc_test_npctimer2.txt
@@ -0,0 +1,16 @@
+prontera.gat,156,183,0 script NPCtimer�e�X�g::npctimerX0000 116,{
+L_INIT:
+ mes "What would you like to know?";
+ menu "Tell me my level",L_WAIT;
+
+L_WAIT:
+ mes "I need time to think...";
+ initnpctimer;
+ attachnpctimer;
+ close;
+
+OnTimer5000:
+ mes "Ah, your level is " + readparam(11);
+ detachnpctimer;
+ close;
+} \ No newline at end of file
diff --git a/npc/sample/npc_test_skill.txt b/npc/sample/npc_test_skill.txt
new file mode 100644
index 000000000..969c1ca77
--- /dev/null
+++ b/npc/sample/npc_test_skill.txt
@@ -0,0 +1,19 @@
+// �X�L�������e�X�g
+
+// skill �X�L��ID ,�X�L��LV [,�t���O];
+// �t���O�͏ȗ��”\�A�ȗ����͂P�B
+// �t���O=1�ŃJ�[�h�Ȃǂ̈ꎞ�I�ȏ����A
+// �t���O=2�ŃN�G�X�g�Ȃǂɂ��P�v�I�ȏ���(skill_tree.txt�Ɉˑ�)
+
+prontera.gat,157,182,0 script �X�L�������e�X�g 116,{
+ mes "�X�L�������e�X�g";
+ menu "���}���u����",L_GETSKILL142,"���񂾐U�菊��",L_GETSKILL143,"��߂�",L_YAME;
+L_GETSKILL142:
+ skill 142,1,0;
+ close;
+L_GETSKILL143:
+ skill 143,1,0;
+ close;
+L_YAME:
+ close;
+}
diff --git a/npc/sample/npc_test_str.txt b/npc/sample/npc_test_str.txt
new file mode 100644
index 000000000..cc50124ab
--- /dev/null
+++ b/npc/sample/npc_test_str.txt
@@ -0,0 +1,17 @@
+// Some Test Example
+prontera.gat,164,188,1 script sTrInG2compare 112,{
+ set @str$, "StRiNg1";
+ mes "sTrInG2 isn't equal to " + @str$ ;
+ mes "Our Var is equal to " + @str$ + " ...OK?";
+ next;
+ mes "Comparision eqOK�F" + (@str$=="StRiNg1");
+ mes "Comparision eqNG�F" + (@str$=="sTrInG2");
+ mes "Comparision neOK�F" + (@str$!="00000");
+ mes "Comparision neNG�F" + (@str$!="StRiNg1");
+ mes "Comparision gtOK�F" + ("aab">"aaa");
+ mes "Comparision ltNG�F" + ("aab"<"aaa");
+ next;
+ input @str2$;
+ mes "You've entered '" + @str2$ + "' string.";
+ close;
+}
diff --git a/npc/sample/npc_testchkoption.txt b/npc/sample/npc_testchkoption.txt
new file mode 100644
index 000000000..970da233f
--- /dev/null
+++ b/npc/sample/npc_testchkoption.txt
@@ -0,0 +1,15 @@
+prontera.gat,156,89,6 script test_chkoption 117,{
+ mes "Please enter a value of type!";
+ input @value;
+ if(checkoption(@value) == 1) goto L1;
+ if(checkoption(@value) == 0) goto L0;
+ end;
+ L1:
+ mes "True!";
+ close;
+ end;
+ L0:
+ mes "False!";
+ close;
+ end;
+} \ No newline at end of file
diff --git a/npc/sample/npc_time_sample.txt b/npc/sample/npc_time_sample.txt
new file mode 100644
index 000000000..56d442c7a
--- /dev/null
+++ b/npc/sample/npc_time_sample.txt
@@ -0,0 +1,19 @@
+
+prontera.gat,157,181,6 script Time Sample 105,{
+ mes "[Time Sample]";
+ mes "System Tick : " + gettimetick(0);
+ mes " Time Tick : " + gettimetick(1);
+ mes " GetTime(0) : " + gettime(0);
+ mes " GetTime(1) : " + gettime(1) + " (Sec)";
+ mes " GetTime(2) : " + gettime(2) + " (Min)";
+ mes " GetTime(3) : " + gettime(3) + " (Hour)";
+ mes " GetTime(4) : " + gettime(4) + " (WeekDay)";
+ mes " GetTime(5) : " + gettime(5) + " (MonthDay)";
+ mes " GetTime(6) : " + gettime(6) + " (Month)";
+ mes " GetTime(7) : " + gettime(7) + " (Year)";
+ mes " GetTimeStr : " + gettimestr("%Y-%m/%d %H:%M:%S",19);
+ close;
+ end;
+}
+
+