summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFate <fate-tmw@googlemail.com>2009-09-26 18:19:42 +0000
committerFate <fate-tmw@googlemail.com>2009-09-26 18:19:42 +0000
commitcf2958ed8eb277addacf594d5953d59b682af84c (patch)
treed9992e9db65b4161f7d81e5ce4f384c90c2a1bc0
parentc379d97d40d11edcb370c213fe22a56c1e5a84c7 (diff)
parent625fc46be8a0a94a0ba828ef78e5e8ce01dbe817 (diff)
downloadserverdata-cf2958ed8eb277addacf594d5953d59b682af84c.tar.gz
serverdata-cf2958ed8eb277addacf594d5953d59b682af84c.tar.bz2
serverdata-cf2958ed8eb277addacf594d5953d59b682af84c.tar.xz
serverdata-cf2958ed8eb277addacf594d5953d59b682af84c.zip
Merge branch 'skill'
-rw-r--r--db/const.txt3
-rw-r--r--db/skill_db.txt65
-rw-r--r--npc/001-1_Tulimshar/bard.txt17
-rw-r--r--npc/001-1_Tulimshar/man.txt100
4 files changed, 156 insertions, 29 deletions
diff --git a/db/const.txt b/db/const.txt
index 3c7400ed..99f14f38 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -194,6 +194,9 @@ NIBBLE_6_MASK 251658240
NIBBLE_7_SHIFT 28 // Only three bits available in this one
NIBBLE_7_MASK 1879048192 // should be 4026531840
+// Skill pools
+SKILL_FOCUS 349
+
// Magic skills
SKILL_MAGIC 340
SKILL_MAGIC_LIFE 341
diff --git a/db/skill_db.txt b/db/skill_db.txt
index d1563303..7b36e74e 100644
--- a/db/skill_db.txt
+++ b/db/skill_db.txt
@@ -1,27 +1,38 @@
-//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, 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
-343, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0 //TMW_MAGIC_TRANSMUTE
-344, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0 //TMW_MAGIC_NATURE
-345, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0 //TMW_MAGIC_ASTRAL
+//id, range, hit, inf, pl, nk, maxrse, max, list_num, castcancel, cast_defence_rate, inf2, maxcount, skill_type, blow_count, pool, stat, name
+1, 0, 0, 0, 0, 0, 0, 1, 0, no, 0, 0, 0, none, 0, no, none, Emote //NV_EMOTE
+2, 0, 0, 0, 0, 0, 0, 1, 0, no, 0, 0, 0, none, 0, no, none, Trade //NV_TRADE
+3, 0, 0, 0, 0, 0, 0, 2, 0, no, 0, 0, 0, none, 0, no, none, Party //NV_PARTY
+4, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, weapon, 0, no, none, X0 //SM_SWORD
+6, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, none, 0, no, none, X1 //SM_RECOVERY
+11, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, none, 0, no, none, X2 //MG_SRECOVERY
+38, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, none, 0, no, none, X3 //MC_INCCARRY
+39, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, none, 0, no, none, X4 //MC_DISCOUNT
+40, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, none, 0, no, none, X5 //MC_OVERCHARGE
+50, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, weapon, 0, no, none, X6 //TF_DOUBLE
+51, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, weapon, 0, no, none, X7 //TF_MISS
+54, 1, 6, 4, 0, 0, 0, 100, 1, no, 0, 1, 0, none, 0, no, none, X8 //TF_POISON
+144, 0, 6, 4, 0, 1, 0, 1, 1, no, 0, 1, 0, none, 0, no, none, X9 //NV_FIRSTAID
+146, 0, 0, 0, 0, 0, 0, 1, 0, no, 0, 1, 0, none, 0, no, none, X10 //SM_MOVINGRECOVERY
+148, 0, 0, 0, 0, 0, 0, 1, 0, no, 0, 1, 0, weapon, 0, no, none, X11 //SM_AUTOBERSERK
+152, 0, 6, 4, 0, 1, 0, 1, 1, no, 0, 1, 0, weapon, 5, no, none, X12 //TF_BACKSLIDING
+178, 1, 6, 4, 0, 0, 0, 100, 1, no, 0, 1, 0, none, 0, no, none, X13 //NPC_POISON
+190, 1, 6, 4, 0, 0, 0, 100, 1, no, 0, 1, 0, none, 0, no, none, X14 //NPC_POISONATTACK
+198, 0, 0, 4, 0, 1, 0, 10, 1, no, 0, 2, 0, magic, 0, no, none, X15 //NPC_SUMMONSLAVE
+199, 0, 0, 4, 0, 1, 0, 10, 1, no, 0, 2, 0, none, 0, no, none, X16 //NPC_EMOTION
+339 0, 0, 0, 0, 0, 0, 3, 0, no, 0, 0, 0, none, 0, no, none, Skill_Pool //TMW_SKILLPOOL
+340, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, Magic //TMW_MAGIC
+341, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, Life_Magic //TMW_MAGIC_LIFE
+342, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, War_Magic //TMW_MAGIC_WAR
+343, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, Transmutation_Magic //TMW_MAGIC_TRANSMUTE
+344, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, Nature_Magic //TMW_MAGIC_NATURE
+345, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, Astral_Magic //TMW_MAGIC_ASTRAL
+350, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, weapon, 0, passive,agi, Brawling //TMW_BRAWLING
+351, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, weapon, 0, passive,luk, Lucky_Counter //TMW_LUCKY_COUNTER
+352, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, none, 0, passive,agi, Speed //TMW_SPEED
+353, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, none, 0, passive,vit, Poison_Resistance //TMW_POISON_RESISTANCE
+354, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, magic, 0, passive,int, Astral_Soul //TMW_ASTRAL_SOUL
+45, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, weapon, 0, passive,dex, Mallard's_Eye //AC_OWL
+// maxrse describes the max. level that the skill can be raised to through the `raise skill' option. Further raising has to happen via quests.
+// maxrse < max.
+// `pool' can be `no', `active', or `passive'.
+// `stat' can be `none', `str', `dex', `agi', `vit', `int', `luk'.
diff --git a/npc/001-1_Tulimshar/bard.txt b/npc/001-1_Tulimshar/bard.txt
index 8b416ec5..e7fdd883 100644
--- a/npc/001-1_Tulimshar/bard.txt
+++ b/npc/001-1_Tulimshar/bard.txt
@@ -1,6 +1,7 @@
//
-001-1.gat,37,73,0 script Bard 152,{
+//001-1.gat,46,76,0 script Bard 152,{
+001-1.gat,40,73,0 script Bard 152,{
setarray @songs$, "\"There once was a bard, who had it hard, because a man in dark green, was very mean.\"",
"\"At Hurnscald inn, there was a person of fairest skin, declining wedding bands from quite a many hands.\"",
"\"As the Sun sets down in the forest's brown, she whom the fragrance holds counts her gold.\"";
@@ -20,6 +21,20 @@ L_Main:
close;
L_News:
+// mes "[" + @name$ + "]";
+// mes "\"Quite, quite! Rumour has it that Luca the Hunter, from this very town of Tulimshar, has returned from a long journey.\"";
+// next;
+// mes "[" + @name$ + "]";
+// mes "\"Many perilous battles he fought, or so his tales go... I am still working on a sonnet that I wish to dedicate to his exploits.\"";
+// next;
+// mes "[" + @name$ + "]";
+// mes "\"He says that he learned some new skills along the way and wishes to pass them on to others like him, who do not fear the fire of battle!\"";
+// next;
+// mes "[" + @name$ + "]";
+// mes "\"If you are experienced enough, perhaps he will teach you?\"";
+// next;
+// goto L_Main;
+
mes "[" + @name$ + "]";
mes "\"News I have for you indeed, lest you have already overheard (for then it would no longer be news to you!)\"";
next;
diff --git a/npc/001-1_Tulimshar/man.txt b/npc/001-1_Tulimshar/man.txt
index 804acf8e..831e8b0f 100644
--- a/npc/001-1_Tulimshar/man.txt
+++ b/npc/001-1_Tulimshar/man.txt
@@ -1,6 +1,13 @@
//
001-1.gat,108,55,0 script Luca 102,{
+
+ if (BaseLevel >= 45)
+ goto L_teach_soon;
+
+ if (BaseLevel >= 50)
+ goto L_teach;
+
mes "[Luca the Hunter]";
mes "\"Ouch! It hurts, this wound I got from battle.\"";
next;
@@ -8,7 +15,10 @@
L_Exp:
mes "[Luca the Hunter]";
- mes "\"I was fighting scorpions for experience and I bumped into a RED one. I had NEVER seen it before!\"";
+ mes "\"I was just coming back from a long journey. I ran into a group of scorpions and started fighting them for experience.\"";
+ next;
+ mes "[Luca the Hunter]";
+ mes "\"Then, out of a cave came a BLACK one! I had NEVER seen it before!\"";
next;
mes "[Luca the Hunter]";
mes "\"Luckily i had a camera with me! Here's a picture of it... Let me find it, I put it in my pocket somewhere...\"";
@@ -21,4 +31,92 @@ L_Nev:
mes "[Luca the Hunter]";
mes "\"Hmpf!\"";
close;
+
+
+L_teach_soon:
+ mes "[Luca the Hunter]";
+ mes "\"Hey, you look like you're quite a hunter yourself! If you train a little more, maybe I can teach you a special skill or two?\"";
+ close;
+
+L_teach:
+ if (getskilllv(SKILL_POOL))
+ goto L_teachmore;
+
+ mes "[Luca the Hunter]";
+ mes "\"Hey there! You're quite the adventurer, aren't you? But if you want to become stronger, you need to learn a skill or two!\"";
+ next;
+ mes "[Luca the Hunter]";
+ mes "\"If you want, I can help you a bit with that!\"";
+ next;
+ menu
+ "Sure, that sounds fun!", -,
+ "I'm not interested.", L_Nev;
+
+ mes "[Luca the Hunter]";
+ mes "\"All right! It's not all that easy, though. First I have to teach you teach you how to focus. That's because you can learn many skills, but you can't focus on all of them all the time.\"";
+ next;
+
+ mes "[Luca the Hunter]";
+ mes "\"Then I can teach you some skills, and you can tell me which ones you want to focus on. Deal?\"";
+ next;
+
+ menu
+ "Yeah!", L_teach0_follow,
+ "Certainly!", L_teach0_follow,
+ "Wait... what do you mean?", -,
+ "Please explain it first.", -,
+ "No.", L_Nev;
+
+ callsub S_explain;
+L_teach0_follow:
+
+
+S_explain:
+ mes "[Luca the Hunter]";
+ mes "\"Alright, what do you want to know?\"";
+ next;
+S_explain_loop:
+ menu
+ "What's skill focus?", L_explain_focus,
+ "What skills are there?", L_explain_skills,
+ "How do skills work?", L_explain_work,
+ "Thanks, I think I got it!", -;
+ return;
+
+L_explain_focus:
+ mes "[Luca the Hunter]";
+ mes "\"Well, you can learn many, many skills. But you can't really use all of them at once, not even old Aulsbels' head is big enough for that! So you have to focus.\"";
+ next;
+ mes "[Luca the Hunter]";
+ mes "\"But you can change that focus whenever you want. It works like this: You come to me, you tell me what you want to focus on, and we do exercises until it's stuck in your head.\"";
+ next;
+ mes "[Luca the Hunter]";
+ mes "\"If there's not enough space in your head, you'll first have to stop thinking about some other thing. There's an exercise I learned to do that, so when you talk to me you can just let me know what you want to forget.\"";
+ next;
+ mes "[Luca the Hunter]";
+ if (getskilllv(SKILL_POOL) == 0)
+ mes "\"Right now you can't focus on anything yet, so I'll first have to teach you a simple skill to keep your focus.\"";
+ if (getskilllv(SKILL_POOL) == 1)
+ mes "\"Right now you can only focus on one thing at a time. So if you want to change, you have to forget whatever else you've focused on.\"";
+ if (getskilllv(SKILL_POOL) > 1)
+ mes "\"You can focus on " + getskilllv(SKILL_POOL) " skills right now.\"";
+ next;
+ mes "[Luca the Hunter]";
+ mes "\"You can come back to me to focus or unfocus whenever you want, I'm here all day.\"";
+ next;
+ goto S_explain_loop;
+
+L_explain_skills:
+ mes "[Luca the Hunter]";
+ mes "\"\"";
+ next;
+ goto S_explain_loop;
+
+L_explain_work:
+ mes "[Luca the Hunter]";
+ mes "\"\"";
+ next;
+ goto S_explain_loop;
+
+L_teachmore:
}