From bdc83ba6d744a563c83f295d5910ca6b2819ac1a Mon Sep 17 00:00:00 2001
From: Jared Adams <jaxad0127@gmail.com>
Date: Fri, 18 Sep 2009 15:56:01 -0600
Subject: Add some NPCs to give out the new skils

---
 conf/battle_athena.conf                     |  2 +-
 db/skill_db.txt                             | 38 ++++++++---------
 npc/001-1_Tulimshar/_import.txt             |  1 +
 npc/001-1_Tulimshar/trader.txt              | 56 +++++++++++++++++++++++++
 npc/021-2_Tulimshar/government_building.txt | 63 ++++++++++++++++++++++++++++-
 5 files changed, 140 insertions(+), 20 deletions(-)
 create mode 100644 npc/001-1_Tulimshar/trader.txt

diff --git a/conf/battle_athena.conf b/conf/battle_athena.conf
index 5bd98111..782a05bd 100644
--- a/conf/battle_athena.conf
+++ b/conf/battle_athena.conf
@@ -231,7 +231,7 @@ mob_count_rate: 100
 
 // Quest skills can be learned? (Note 1)
 // Setting this to yes can open an exploit on your server!
-quest_skill_learn: no
+quest_skill_learn: yes
 
 // When skills are reset, quest skills are reset as well? (Note 1)
 // Setting this to yes can open an exploit on your server!
diff --git a/db/skill_db.txt b/db/skill_db.txt
index f43ee8c6..d1563303 100644
--- a/db/skill_db.txt
+++ b/db/skill_db.txt
@@ -1,22 +1,24 @@
 //id,	range,	hit,	inf,	pl,	nk,	max,	list_num,	castcancel,	cast_defence_rate,	inf2,	maxcount,	skill_type,	blow_count
-1,	0,	0,	0,	0,	0,	9,	0,		no,		0,			0,	0,		none,		0	//NV_BASIC
-2,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		weapon,		0	//SM_SWORD
-4,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		none,		0	//SM_RECOVERY
-9,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		none,		0	//MG_SRECOVERY
-36,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		none,		0	//MC_INCCARRY
-37,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		none,		0	//MC_DISCOUNT
-38,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		none,		0	//MC_OVERCHARGE
-48,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		weapon,		0	//TF_DOUBLE
-49,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		weapon,		0	//TF_MISS
-52,	1,	6,	4,	0,	0,	100,	1,		no,		0,			1,	0,		none,		0	//TF_POISON
-142,	0,	6,	4,	0,	1,	1,	1,		no,		0,			1,	0,		none,		0	//NV_FIRSTAID
-144,	0,	0,	0,	0,	0,	1,	0,		no,		0,			1,	0,		none,		0	//SM_MOVINGRECOVERY
-146,	0,	0,	0,	0,	0,	1,	0,		no,		0,			1,	0,		weapon,		0	//SM_AUTOBERSERK
-150,	0,	6,	4,	0,	1,	1,	1,		no,		0,			1,	0,		weapon,		5	//TF_BACKSLIDING
-176,	1,	6,	4,	0,	0,	100,	1,		no,		0,			1,	0,		none,		0	//NPC_POISON
-188,	1,	6,	4,	0,	0,	100,	1,		no,		0,			1,	0,		none,		0	//NPC_POISONATTACK
-196,	0,	0,	4,	0,	1,	10,	1,		no,		0,			2,	0,		magic,		0	//NPC_SUMMONSLAVE
-197,	0,	0,	4,	0,	1,	10,	1,		no,		0,			2,	0,		none,		0	//NPC_EMOTION
+1,	0,	0,	0,	0,	0,	1,	0,		no,		0,			0,	0,		none,		0	//NV_EMOTE
+2,	0,	0,	0,	0,	0,	1,	0,		no,		0,			0,	0,		none,		0	//NV_TRADE
+3,	0,	0,	0,	0,	0,	2,	0,		no,		0,			0,	0,		none,		0	//NV_PARTY
+4,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		weapon,		0	//SM_SWORD
+6,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		none,		0	//SM_RECOVERY
+11,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		none,		0	//MG_SRECOVERY
+38,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		none,		0	//MC_INCCARRY
+39,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		none,		0	//MC_DISCOUNT
+40,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		none,		0	//MC_OVERCHARGE
+50,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		weapon,		0	//TF_DOUBLE
+51,	0,	0,	0,	0,	0,	10,	0,		no,		0,			0,	0,		weapon,		0	//TF_MISS
+54,	1,	6,	4,	0,	0,	100,	1,		no,		0,			1,	0,		none,		0	//TF_POISON
+144,	0,	6,	4,	0,	1,	1,	1,		no,		0,			1,	0,		none,		0	//NV_FIRSTAID
+146,	0,	0,	0,	0,	0,	1,	0,		no,		0,			1,	0,		none,		0	//SM_MOVINGRECOVERY
+148,	0,	0,	0,	0,	0,	1,	0,		no,		0,			1,	0,		weapon,		0	//SM_AUTOBERSERK
+152,	0,	6,	4,	0,	1,	1,	1,		no,		0,			1,	0,		weapon,		5	//TF_BACKSLIDING
+178,	1,	6,	4,	0,	0,	100,	1,		no,		0,			1,	0,		none,		0	//NPC_POISON
+190,	1,	6,	4,	0,	0,	100,	1,		no,		0,			1,	0,		none,		0	//NPC_POISONATTACK
+198,	0,	0,	4,	0,	1,	10,	1,		no,		0,			2,	0,		magic,		0	//NPC_SUMMONSLAVE
+199,	0,	0,	4,	0,	1,	10,	1,		no,		0,			2,	0,		none,		0	//NPC_EMOTION
 340,	0,	0,	0,	0,	0,	5,	0,		no,		0,			0,	0,		magic,		0	//TMW_MAGIC
 341,	0,	0,	0,	0,	0,	5,	0,		no,		0,			0,	0,		magic,		0	//TMW_MAGIC_LIFE
 342,	0,	0,	0,	0,	0,	5,	0,		no,		0,			0,	0,		magic,		0	//TMW_MAGIC_WAR
diff --git a/npc/001-1_Tulimshar/_import.txt b/npc/001-1_Tulimshar/_import.txt
index b66c4168..6e189ffd 100644
--- a/npc/001-1_Tulimshar/_import.txt
+++ b/npc/001-1_Tulimshar/_import.txt
@@ -17,4 +17,5 @@ npc: npc/001-1_Tulimshar/rewards_master.txt
 npc: npc/001-1_Tulimshar/rules.txt
 npc: npc/001-1_Tulimshar/sandra.txt
 npc: npc/001-1_Tulimshar/soul-menhir.txt
+npc: npc/001-1_Tulimshar/trader.txt
 npc: npc/001-1_Tulimshar/vincent.txt
diff --git a/npc/001-1_Tulimshar/trader.txt b/npc/001-1_Tulimshar/trader.txt
new file mode 100644
index 00000000..73221326
--- /dev/null
+++ b/npc/001-1_Tulimshar/trader.txt
@@ -0,0 +1,56 @@
+//
+
+001-1.gat,57,33,0	script	Trader	115,{
+	set @TRADE_SKILL, 2;
+	if (getskilllv(@TRADE_SKILL) > 0) goto L_Has;
+
+	mes "[Trader]";
+	mes "\"Hello. I came here to trade wares with the people of Tulimshar. Unfortunately for you, I've traded everything I had.\"";
+	next;
+	menu
+		"Oh. I'll go then.", -,
+		"You don't have anything?", L_More;
+	close;
+
+L_More:
+	mes "[Trader]";
+	mes "\"No. I have nothing for you. Except...\"";
+	next;
+	menu
+		"Yes?", L_Except,
+		"Ok then.",  -;
+	close;
+
+L_Except:
+	mes "[Trader]";
+	mes "\"I could teach you how to trade.  It'll cost you 5GP.\"";
+	next;
+	menu
+		"Sure", L_Teach,
+		"No thank you", -;
+	close;
+
+L_Teach:
+	if (zeny < 5) L_NotEnoughMoney;
+	set zeny, zeny - 5;
+	setskill @TRADE_SKILL, 1;
+	mes "[Trader]";
+	mes "\"You can initiate trade with someone by right-clicking on them and choosing trade.";
+	mes "You'll both add the items and set the GP you're putting up then press propose trade.";
+	mes "After both parties have proposed their side, you can both review the trade, and then accept or reject by closing the window.\"";
+	next;
+	mes "[Trader]";
+	mes "\"Items added to the trade cannot be removed, and so mistakes have to be dealt with by canceling the trade.";
+	mes "You need to press the change button to let the other person know about GP changes.\"";
+	close;
+
+L_Has:
+	mes "[Trader]";
+	mes "\"I still don't have anything to trade. I wonder where that shipment is....\"";
+	close;
+
+L_NotEnoughMoney:
+	mes "[Trader]";
+	mes "\"You don't have enough GP\"";
+	close;
+}
diff --git a/npc/021-2_Tulimshar/government_building.txt b/npc/021-2_Tulimshar/government_building.txt
index 92ca1f35..894a8f67 100644
--- a/npc/021-2_Tulimshar/government_building.txt
+++ b/npc/021-2_Tulimshar/government_building.txt
@@ -140,14 +140,75 @@ S_give_rings:
 	return;
 }
 
-// A clerk (TODO: give out party skill levels)
 021-2.gat,36,17,0	script	Tathin	107,{
+	set @PARTY_SKILL, 3;
+
 	mes "[Tathin]";
 	mes "\"Hello what Can I do for you?\"";
 	next;
+
+	if (getskilllv(@PARTY_SKILL) == 2 ) goto L_Base_Menu;
+	if (BaseLevel >= 15 && getskilllv(@PARTY_SKILL) == 1) goto L_Can_Make_Party;
+	if (BaseLevel >= 10) goto L_Can_Party;
+
+L_Base_Menu:
+	menu
+		"Nothing, I guess.", -;
+	close;
+
+L_Can_Party:
+	menu
+		"I'd like to get a party permit.", L_Get_Party,
+		"Nothing, I guess.", -;
+	close;
+
+L_Can_Make_Party:
 	menu
+		"I'd like to get a party creator permit.", L_Get_Make_Party,
 		"Nothing, I guess.", -;
 	close;
+
+L_Get_Party:
+	mes "[Tathin]";
+	mes "\"A permit to join parties costs 10 GP.\"";
+	next;
+	menu
+		"OK", L_Give_Party,
+		"No thank you", -;
+	close;
+
+L_Give_Party:
+	if (zeny < 10) L_NotEnoughMoney;
+	set zeny, zeny - 10;
+	setskill @PARTY_SKILL, 1;
+	mes "[Tathin]";
+	mes "\"Here's your permit. You'll need to be invited by an existing member of a party to join it.\"";
+	next;
+	mes "[Tathin]";
+	mes "\"Remember, parties cannot share experience if any members are more than 10 levels apart.\"";
+	close;
+
+L_Get_Make_Party:
+	mes "[Tathin]";
+	mes "\"A permit to create parties costs 50 GP.\"";
+	next;
+	menu
+		"OK", L_Give_Make_Party,
+		"No thank you", -;
+	close;
+
+L_Give_Make_Party:
+	if (zeny < 50) L_NotEnoughMoney;
+	set zeny, zeny - 50;
+	setskill @PARTY_SKILL, 2;
+	mes "[Tathin]";
+	mes "\"Here's your permit. You can create parties with the 'new' or 'create' commands on the Party tab in the client. Parties need to have unique names.\"";
+	close;
+
+L_NotEnoughMoney:
+	mes "[Tathin]";
+	mes "\"You don't have enough GP\"";
+	close;
 }
 
 // Guard
-- 
cgit v1.2.3-70-g09d2