summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicksha <Micksha@users.noreply.github.com>2018-10-24 21:03:20 +0200
committerMicksha <Micksha@users.noreply.github.com>2018-11-05 21:34:37 +0100
commit11dd6fe5569be003d6582319594c315bac193d21 (patch)
tree28c23eb319cdd745c6edf1661ca80f77e8a1c123
parent12a7c290fec01b70f269818faab0f7860dbab63a (diff)
downloadserverdata-11dd6fe5569be003d6582319594c315bac193d21.tar.gz
serverdata-11dd6fe5569be003d6582319594c315bac193d21.tar.bz2
serverdata-11dd6fe5569be003d6582319594c315bac193d21.tar.xz
serverdata-11dd6fe5569be003d6582319594c315bac193d21.zip
Add Gumis scripts - delete placeholders. Disable debugs.
-rw-r--r--db/constants.conf5
-rw-r--r--db/re/item_db.conf81
-rw-r--r--maps/re/008-1.mcachebin6866 -> 6870 bytes
-rw-r--r--npc/001-1/_import.txt1
-rw-r--r--npc/001-3-0/_import.txt1
-rw-r--r--npc/008-1/_import.txt8
-rw-r--r--npc/008-1/hinnak.txt4
-rw-r--r--npc/008-1/jack.txt (renamed from npc/placeholder/jack.txt)11
-rw-r--r--npc/008-1/lady.txt20
-rw-r--r--npc/008-1/lumberjack.txt19
-rw-r--r--npc/008-1/mikhail.txt (renamed from npc/placeholder/mikhail.txt)8
-rw-r--r--npc/008-1/milly.txt108
-rw-r--r--npc/008-1/old-man.txt (renamed from npc/placeholder/old-man.txt)4
-rw-r--r--npc/008-1/old-woman.txt (renamed from npc/placeholder/old-woman.txt)8
-rw-r--r--npc/008-1/sabine.txt (renamed from npc/placeholder/sabine.txt)4
-rw-r--r--npc/008-1/soul-menhir.txt (renamed from npc/placeholder/soul-menhir.txt)4
-rw-r--r--npc/008-2-1/inspector.txt188
-rw-r--r--npc/008-2-12/nurse.txt101
-rw-r--r--npc/008-2-14/doctor.txt80
-rw-r--r--npc/008-2-18/malik.txt64
-rw-r--r--npc/008-2-19/_import.txt1
-rw-r--r--npc/008-2-19/books.txt (renamed from npc/placeholder/books.txt)2
-rw-r--r--npc/008-2-2/_import.txt4
-rw-r--r--npc/008-2-2/ledmitz.txt (renamed from npc/placeholder/ledmitz.txt)8
-rw-r--r--npc/008-2-2/micksha.txt20
-rw-r--r--npc/008-2-2/note.txt (renamed from npc/placeholder/note.txt)2
-rw-r--r--npc/008-2-2/roamingo.txt20
-rw-r--r--npc/008-2-24/_import.txt1
-rw-r--r--npc/008-2-24/troupe-leader.txt (renamed from npc/placeholder/troupe-leader.txt)6
-rw-r--r--npc/008-2-4/_import.txt1
-rw-r--r--npc/008-2-4/bernard.txt (renamed from npc/placeholder/bernard.txt)12
-rw-r--r--npc/008-2-6/alan.txt299
-rw-r--r--npc/008-2-8/_import.txt2
-rw-r--r--npc/008-2-8/apprentice.txt20
-rw-r--r--npc/008-2-8/macgowan.txt (renamed from npc/placeholder/macgowan.txt)9
-rw-r--r--npc/008-2-8/nicholas.txt25
-rw-r--r--npc/placeholder/alan.txt323
-rw-r--r--npc/placeholder/doctor.txt80
-rw-r--r--npc/placeholder/hinnak.txt352
-rw-r--r--npc/placeholder/inspector.txt190
-rw-r--r--npc/placeholder/malek.txt65
-rw-r--r--npc/placeholder/milly.txt109
-rw-r--r--npc/placeholder/nicholas.txt26
-rw-r--r--npc/placeholder/nurse.txt101
-rw-r--r--npc/scripts.conf20
45 files changed, 943 insertions, 1474 deletions
diff --git a/db/constants.conf b/db/constants.conf
index 043ce489..ab0f14cf 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -4062,6 +4062,11 @@ constants_db: {
NPC_CAUL: 179
NPC_MALIK: 180
NPC_SNARFLES: 181
+ NPC_OLD_MAN_HURNS: 182
+ NPC_BERNARD: 183
+ NPC_SABINE: 184
+ NPC_MIKHAIL: 185
+ NPC_TROUPE_LEADER: 186
NPC_CONFUSED_TREE: 400
NPC_ALIGE: 401
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index 7428287d..560cc22b 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -1299,6 +1299,60 @@ item_db: (
">
},
{
+ Id: 564
+ AegisName: "RoastedMaggot"
+ Name: "Roasted Maggot"
+ Type: "IT_HEALING"
+ Buy: 500
+ Sell: 50
+ Weight: 25
+ Job: {
+ All: true
+ }
+ Gender: "SEX_ANY"
+ Refine: false
+ ViewSprite: 564
+ BindOnEquip: false
+ BuyingStore: true
+ Delay: 750
+ Sprite: 0
+ UseEffect: "EFFECT_HEAL"
+ Script: <"
+ @min = 100;
+ @max = 250;
+ @delay = 25;
+ @type = 1;
+ doevent "rand_sc_heal::OnUse";
+ ">
+},
+{
+ Id: 565
+ AegisName: "CherryCake"
+ Name: "Cherry Cake"
+ Type: "IT_HEALING"
+ Buy: 800
+ Sell: 75
+ Weight: 35
+ Job: {
+ All: true
+ }
+ Gender: "SEX_ANY"
+ Refine: false
+ ViewSprite: 564
+ BindOnEquip: false
+ BuyingStore: true
+ Delay: 450
+ Sprite: 0
+ UseEffect: "EFFECT_HEAL"
+ Script: <"
+ @min = 180;
+ @max = 360;
+ @delay = 50;
+ @type = 1;
+ doevent "rand_sc_heal::OnUse";
+ ">
+},
+{
Id: 700
AegisName: "SmallTentacles"
Name: "Small Tentacles"
@@ -3881,6 +3935,33 @@ item_db: (
Sprite: 0
},
{
+ Id: 2914
+ AegisName: "NohMask"
+ Name: "Noh Mask"
+ Type: "IT_ARMOR"
+ Buy: 25000
+ Sell: 5200
+ Weight: 150
+ Atk: 0
+ Matk: 0
+ Def: 20
+ Range: 0
+ Slots: 0
+ Job: {
+ All: true
+ }
+ Gender: "SEX_ANY"
+ Loc: "EQP_HEAD_TOP"
+ WeaponLv: 0
+ EquipLv: 15
+ Refine: false
+ ViewSprite: 2914
+ BindOnEquip: false
+ BuyingStore: true
+ Delay: 0
+ Sprite: 0
+},
+{
Id: 3200
AegisName: "Shemagh"
Name: "Shemagh"
diff --git a/maps/re/008-1.mcache b/maps/re/008-1.mcache
index e8534b08..8672702d 100644
--- a/maps/re/008-1.mcache
+++ b/maps/re/008-1.mcache
Binary files differ
diff --git a/npc/001-1/_import.txt b/npc/001-1/_import.txt
index eb522c73..a8cfa7d7 100644
--- a/npc/001-1/_import.txt
+++ b/npc/001-1/_import.txt
@@ -32,6 +32,7 @@
"npc/001-1/salem.txt",
"npc/001-1/shop.txt",
"npc/001-1/sign.txt",
+"npc/001-1/sophialla.txt",
"npc/001-1/taree.txt",
"npc/001-1/treeleaf.txt",
"npc/001-1/trees.txt",
diff --git a/npc/001-3-0/_import.txt b/npc/001-3-0/_import.txt
index 320f28ce..5ead6439 100644
--- a/npc/001-3-0/_import.txt
+++ b/npc/001-3-0/_import.txt
@@ -2,3 +2,4 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/001-3-0/_mobs.txt",
"npc/001-3-0/_warps.txt",
+"npc/001-3-0/mundane.txt",
diff --git a/npc/008-1/_import.txt b/npc/008-1/_import.txt
index 12348cb0..31bb5966 100644
--- a/npc/008-1/_import.txt
+++ b/npc/008-1/_import.txt
@@ -6,11 +6,15 @@
"npc/008-1/banu.txt",
"npc/008-1/confused-tree.txt",
"npc/008-1/hinnak.txt",
-"npc/008-1/lady.txt",
-"npc/008-1/lumberjack.txt",
+"npc/008-1/jack.txt",
"npc/008-1/mapflags.txt",
+"npc/008-1/mikhail.txt",
"npc/008-1/milly.txt",
+"npc/008-1/old-man.txt",
+"npc/008-1/old-woman.txt",
"npc/008-1/oscar.txt",
+"npc/008-1/sabine.txt",
"npc/008-1/snarfles.txt",
+"npc/008-1/soul-menhir.txt",
"npc/008-1/voltain.txt",
"npc/008-1/wateranimation.txt",
diff --git a/npc/008-1/hinnak.txt b/npc/008-1/hinnak.txt
index 13f06be7..08b6242a 100644
--- a/npc/008-1/hinnak.txt
+++ b/npc/008-1/hinnak.txt
@@ -13,7 +13,7 @@
008-1,270,74,0 script Hinnak#008-1 NPC_HINNAK,{
- if (BaseLevel < .min_level)
+ if (BaseLevel < .min_level)
{
npctalk3 generic(1 | 16 | 64);
end;
@@ -346,7 +346,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/placeholder/jack.txt b/npc/008-1/jack.txt
index 1f205a59..d8f1ff2d 100644
--- a/npc/placeholder/jack.txt
+++ b/npc/008-1/jack.txt
@@ -24,9 +24,10 @@
// Description:
// Jack Lumber, the handsome lumberjack
-008-1,242,117,0 script Jack NPC_HUMAN_M_ARTIS,{
- function bow_intro {
+008-1,241,116,0 script Jack NPC_LUMBERJACK,{
+
+ function bow_intro {
speech(4,
l("Why not?!"),
l("I value my life, that's why!"));
@@ -288,11 +289,11 @@
close;
OnInit:
- .logs_item = Aquada; // FIXME: change this when we get RawLog
+ .logs_item = RawLog;
.logs_amount = 40; // XXX: maybe nlogn?
.shield_cost = 5000; // XXX: maybe nlogn?
.shield_exp = 2500;
- .shield_item = Aquada; // FIXME: change this when we get WoodenShield
+ .shield_item = WoodenShield;
.quest_bow = HurnscaldQuests_ForestBow;
.quest_shield = HurnscaldQuests_WoodenShield;
@@ -306,7 +307,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/008-1/lady.txt b/npc/008-1/lady.txt
deleted file mode 100644
index 8d7869eb..00000000
--- a/npc/008-1/lady.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-// Evol scripts.
-// Author:
-// Micksha
-// Description:
-// Old Lady in the flower field.
-// THIS IS A PLACEHOLDER!
-
-008-1,231,114,0 script Lady#008-1 NPC_OLD_LADY,{
- speech
- l("Oh, good day to you."),
- l("Aren't these flowers lovely? I wish I could stay here all day."),
- lg("I wish you the best, see you around.");
-
- close;
-
-OnInit:
- .sex = G_FEMALE;
- .distance = 2;
- end;
-}
diff --git a/npc/008-1/lumberjack.txt b/npc/008-1/lumberjack.txt
deleted file mode 100644
index c158e5a6..00000000
--- a/npc/008-1/lumberjack.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// Evol scripts.
-// Author:
-// Micksha
-// Description:
-// The Legendary Lumberjack.
-
-008-1,241,116,0 script Lumberjack NPC_LUMBERJACK,{
- speech
- l("Oh hey!"),
- lg("If you feel bored or anxious, you can always pixel an axe. Wait, what does that even mean?");
- l("Anyhow, it's better than running around in circles doing nothing.");
-
- close;
-
-OnInit:
- .sex = G_MALE;
- .distance = 2;
- end;
-}
diff --git a/npc/placeholder/mikhail.txt b/npc/008-1/mikhail.txt
index e071e914..3e442499 100644
--- a/npc/placeholder/mikhail.txt
+++ b/npc/008-1/mikhail.txt
@@ -16,7 +16,7 @@
// Description:
// takes part in the slime soup quest (Bernard)
-008-1,308,72,0 script Mikhail NPC_HUMAN_M_ARTIS,{
+008-1,298,95,0 script Mikhail NPC_MIKHAIL,{
function soup_scared {
speech 4,
@@ -108,9 +108,9 @@
close;
OnInit:
- .third_item = Aquada; // FIXME: change this when we have MaggotSlime
+ .third_item = MaggotSlime;
.third_item_qty = 5;
- .third_item_mob = Fluffy; // FIXME: change this when we have Maggot
+ .third_item_mob = Maggot;
.third_reward_exp = 100;
@@ -124,7 +124,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/008-1/milly.txt b/npc/008-1/milly.txt
index 93daaa9a..0ea17a1c 100644
--- a/npc/008-1/milly.txt
+++ b/npc/008-1/milly.txt
@@ -1,21 +1,109 @@
// Evol scripts.
// Author:
-// Micksha
+// gumi
+// Quest states (inspector):
+// [1] 0 - cannot do the quest
+// [1] 1 - can do the quest
+// [1] 2 - talked to inspector (1) <= start
+// [1] 3 - talked to old woman (1)
+// [1] 4 - talked to old woman (2)
+// [1] 5 - talked to inspector (2)
+// [1] 6 - talked to troupe leader (1)
+// [1] 7 - talked to inspector (3)
+// [1] 8 - talked to old man
+// [1] 9 - talked to old woman (3)
+// [1] 10 - talked to inspector (4)
+// [1] 11 - talked to old woman (4)
+// [1] 12 - talked to malek
+// [1] 13 - searched the bookcase
+// [1] 14 - talked to inspector (5)
+// [1] 15 - talked to troupe leader (2) <= reward
+// [1] 16 - talked to inspector (6) <= reward, end
+// [2] unused
+// [3] unused
+// [t] unused
// Description:
-// Little Milly, looking for a new hero.
-// THIS IS A PLACEHOLDER!
+// robberies in hurnscald
-008-1,282,114,0 script Milly#008-1 NPC_GIRL_MILLY,{
- speech
- l("Oh, hi."),
- l("Are you a hero? For sure not such a great hero than Kfahr!"),
- l("If you could prove it, I would give you my Beanie Copter, but unfortunately someone threw it away."),
- lg("My beautiful Beanie Copter!");
+008-1,282,114,0 script Milly NPC_GIRL_MILLY,{
+
+ // TODO: make the actual beanie copter quest after those are finished:
+ // [X] Inspector quest
+ // [ ] Bone knife quest
+ // [ ] Setzer quest
+ // [ ] Rossy quest
+ // [ ] Cindy quest
+
+ .@q_inspector = getq(.quest_inspector);
+
+ speech(4,
+ l("Hello traveler, welcome to Hurnscald."),
+ l("Have you met Kfahr yet?"),
+ l("He is the greatest hero that ever walked the land of Hurnscald!"));
+
+ selectd(
+ l("Hi! No, I haven't seen him yet."),
+ l("Where can I find him?"),
+ l("Mh, I don't care for heroes."),
+ l("Hello, yes I have met him."),
+ rif(.@q_inspector == 2, l("Have you seen anything strange lately?")),
+ rif(.@q_inspector == 2, l("Do you know anything about the recent robberies?")));
+
+ switch (@menu)
+ {
+ case 3:
+ speech(4,
+ l("What?"),
+ l("Surely you do not appreciate what a hero he is!"),
+ l("Mh, or perhaps honor is dead in you; for you to be so slow to comprehend the good that his exploits have wrought for us."), // XXX: this sentence seems too complicated to come from a child's mouth
+ l("Put on your thinking cap and be propelled into high adventure!"),
+ l("Go to Kfahr, and listen to his stories."),
+ l("You can't have met him."),
+ l("No one who has met him would say such silly things."));
+ // fallthrough
+
+ case 1:
+ speech(4,
+ l("I highly recommend you seek him out!"));
+ // fallthrough
+
+ case 2:
+ speech(
+ l("He is a regular at the inn, located in the north-west part of town."),
+ l("If you are lucky he might tell you a story about his adventures."));
+ break;
+
+ case 4:
+ speech(
+ l("Oh, I hope you stayed and listened to his stories about his adventures."));
+ break;
+
+ case 5:
+ speech(
+ l("I haven't seen anything strange."));
+ break;
+
+ case 6:
+ speech(
+ l("No, sorry."));
+ break;
+ }
close;
OnInit:
+ .quest_inspector = HurnscaldQuests_Inspector;
+ .quest_debug = .quest_inspector; // TODO: change this to the milly quest debug when it exists
.sex = G_FEMALE;
- .distance = 2;
+ .distance = 3;
+
+////////// UNFINISHED //////////
+////////////////////////////////
+// REMOVE THIS CODE WHEN THIS //
+// NPC IS NO LONGER A WIP //////
+////////////////////////////////
+//if (!debug) disablenpc(.name$);
+///////// UNFINISHED ///////////
+
end;
}
diff --git a/npc/placeholder/old-man.txt b/npc/008-1/old-man.txt
index 6914e50c..c2004a7d 100644
--- a/npc/placeholder/old-man.txt
+++ b/npc/008-1/old-man.txt
@@ -25,7 +25,7 @@
// Description:
// robberies in hurnscald
-008-1,293,124,0 script Old Man NPC_HUMAN_M_ARTIS,{
+008-1,290,139,0 script Old Man NPC_OLD_MAN_HURNS,{
function oldman_ask {
speech(4,
@@ -83,7 +83,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/placeholder/old-woman.txt b/npc/008-1/old-woman.txt
index 2a2591b4..c6ca467b 100644
--- a/npc/placeholder/old-woman.txt
+++ b/npc/008-1/old-woman.txt
@@ -1,4 +1,4 @@
-// Evol scripts.
+/// Evol scripts.
// Author:
// gumi
// Quest states:
@@ -23,9 +23,9 @@
// [3] unused
// [t] unused
// Description:
-// robberies in hurnscald
+// Old Lady in the flower field, Robberies in Hurnscald.
-008-1,230,113,0 script Old Woman NPC_HUMAN_M_ARTIS,{
+008-1,231,114,0 script Old Woman NPC_OLD_LADY,{
function is_inspector {
return (getequipcardid(EQI_HEAD_MID, 0) == NavyBlueCottonDye /*&&
@@ -130,7 +130,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/placeholder/sabine.txt b/npc/008-1/sabine.txt
index 1d0cc38a..87026efb 100644
--- a/npc/placeholder/sabine.txt
+++ b/npc/008-1/sabine.txt
@@ -25,7 +25,7 @@
// Description:
// robberies in hurnscald
-008-1,291,97,0 script Sabine NPC_HUMAN_M_ARTIS,{
+008-1,291,97,0 script Sabine NPC_SABINE,{
if (getq(.quest_inspector) != 2)
{
@@ -57,7 +57,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/placeholder/soul-menhir.txt b/npc/008-1/soul-menhir.txt
index 0b2d177d..dd1a6e38 100644
--- a/npc/placeholder/soul-menhir.txt
+++ b/npc/008-1/soul-menhir.txt
@@ -4,7 +4,7 @@
// Description:
// place of power, mana refills faster when sitting nearby
-008-1,253,112,0 script Soul Menhir#hurnscald NPC_HUMAN_M_ARTIS,{
+008-1,253,112,0 script Soul Menhir#hurnscald NPC_NO_SPRITE,{
end;
@@ -51,7 +51,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/008-2-1/inspector.txt b/npc/008-2-1/inspector.txt
index 7bcc7cb0..725f5cbd 100644
--- a/npc/008-2-1/inspector.txt
+++ b/npc/008-2-1/inspector.txt
@@ -1,20 +1,190 @@
// Evol scripts.
// Author:
-// Micksha
+// gumi
+// Quest states:
+// [1] 0 - cannot do the quest
+// [1] 1 - can do the quest
+// [1] 2 - talked to inspector (1) <= start
+// [1] 3 - talked to old woman (1)
+// [1] 4 - talked to old woman (2)
+// [1] 5 - talked to inspector (2)
+// [1] 6 - talked to troupe leader (1)
+// [1] 7 - talked to inspector (3)
+// [1] 8 - talked to old man
+// [1] 9 - talked to old woman (3)
+// [1] 10 - talked to inspector (4)
+// [1] 11 - talked to old woman (4)
+// [1] 12 - talked to malek
+// [1] 13 - searched the bookcase
+// [1] 14 - talked to inspector (5)
+// [1] 15 - talked to troupe leader (2) <= reward
+// [1] 16 - talked to inspector (6) <= reward, end
+// [2] unused
+// [3] unused
+// [t] unused
// Description:
-// The Inspector not willing to do his job.
-// THIS IS A PLACEHOLDER!
+// robberies in hurnscald
-008-2-1,30,34,0 script Inspector#008-1 NPC_INSPECTOR,{
- speech
- l("Oh hey!"),
- l("Got a beer for me? No? Then I am too busy for your stupid problems.");
- lg("Go away, and bring a beer next time you pass by.");
+008-2-1,30,34,0 script Inspector NPC_INSPECTOR,{
+ if (BaseLevel < .min_level)
+ {
+ npctalk3(l("I'm sorry, but I'm busy looking into this string of robberies."));
+ end;
+ }
+
+ // OnTalk:
+ switch (getq(.quest))
+ {
+ case 0:
+ case 1:
+ speech(4,
+ l("Hmm... what to do."));
+ narrator(4,
+ l("He looks up and into your face."));
+ speech(4,
+ l("You look capable, will you help me solve these robberies?"),
+ l("I would go myself, but for some reason I'm a non-walking NPC."));
+
+ if (selectd("Yes", "No") == 2) {
+ closeclientdialog();
+ close;
+ }
+
+ speech(
+ l("Ok then."),
+ l("I'd like you to ask the villagers about the recent string of robberies."));
+
+ close2;
+ setq(.quest, 2);
+ end;
+
+ case 2:
+ npctalk3(l("Please continue talking to the villagers."));
+ end;
+
+ case 3:
+ speech(
+ l("Hm..."),
+ l("I don't know if I trust her eyesight or memory."),
+ l("See if someone else knows anything."));
+ close;
+
+ case 4:
+ speech(
+ l("Someone in a theater mask, eh?"),
+ l("There was a traveling theater troupe in town recently, but they've moved on to Tulimshar."),
+ l("Please go talk to their leader about this."));
+
+ close2;
+ setq(.quest, 5);
+ end;
+
+ case 5:
+ npctalk3(l("Please go talk to the leader of the traveling troupe about the theater mask."));
+ end;
+
+ case 6:
+ speech(
+ l("Hm... an old man?"),
+ l("Could you interrogate him for me?"));
+
+ close2;
+ setq(.quest, 7);
+ end;
+
+ case 7:
+ npctalk3(l("Have you talked with the old man yet?"));
+ end;
+
+ case 8:
+ npctalk3(l("Can you verify that with his wife?"));
+ end;
+
+ case 9:
+ speech(
+ l("Hm... then it couldn't be him."),
+ l("I'm not sure where to go from here, maybe you can find something else."),
+ l("Try talking to everyone again."));
+
+ close2;
+ setq(.quest, 10);
+ end;
+
+ case 10:
+ npctalk3(l("Made any progress yet?"));
+ end;
+
+ case 11:
+ npctalk3(l("Then go north and investigate!"));
+ end;
+
+ case 12:
+ npctalk3(l("Did you look over the basement?"));
+ end;
+
+ case 13:
+ speech(
+ l("What a strange note."),
+ l("I'll keep track of this, while you return the mask to the troupe."),
+ l("I would go myself, but the developers were too lazy to make me walk."),
+ "...",
+ l("By the way, stay sharp! I may call upon you again."));
+
+ close2;
+ setq(.quest, 14);
+ end;
+
+ case 14:
+ npctalk3(l("Please return the mask to the traveling troupe."));
+ end;
+
+ case 15:
+ speech(
+ l("My men have found all of the stolen items."),
+ l("They were all in the mining camp."),
+ l("We still don't know who did it.")); // XXX: feel free to extend this quest beyond this point
+
+ close2;
+ setq(.quest, 16);
+ getexp(.reward_exp, 0);
+ end;
+
+ case 16:
+ npctalk3(l("Remember to stay sharp. I might need your help on another case."));
+ end;
+ }
+
+ closeclientdialog();
close;
+OnPCLoginEvent:
+OnPCBaseLvUpEvent:
+ if (BaseLevel >= .min_level && getq(.quest) < 1)
+ {
+ setq(.quest, 1); // allow the player to do the quest
+ dispbottom(l("New quest available: %s (level %d+)",
+ getquestlink(.quest), .min_level)); // XXX: requires new manaplus versions, maybe show a different message for old versions?
+ }
+ end;
+
OnInit:
+ .min_level = 20; // min level to do the quest
+
+ .reward_exp = 2500;
+
+ .quest = HurnscaldQuests_Inspector;
+ .quest_debug = .quest;
.sex = G_MALE;
- .distance = 2;
+ .distance = 3;
+
+////////// UNFINISHED //////////
+////////////////////////////////
+// REMOVE THIS CODE WHEN THIS //
+// NPC IS NO LONGER A WIP //////
+////////////////////////////////
+//if (!debug) disablenpc(.name$);
+///////// UNFINISHED ///////////
+
end;
}
diff --git a/npc/008-2-12/nurse.txt b/npc/008-2-12/nurse.txt
index 4fd65257..29452258 100644
--- a/npc/008-2-12/nurse.txt
+++ b/npc/008-2-12/nurse.txt
@@ -1,20 +1,101 @@
// Evol scripts.
// Author:
-// Micksha
+// gumi
+// Quest states:
+// [1] 0 - cannot do the quest
+// [1] 1 - can do the quest
+// [1] 2 - talked to inspector (1) <= start
+// [1] 3 - talked to old woman (1)
+// [1] 4 - talked to old woman (2)
+// [1] 5 - talked to inspector (2)
+// [1] 6 - talked to troupe leader (1)
+// [1] 7 - talked to inspector (3)
+// [1] 8 - talked to old man
+// [1] 9 - talked to old woman (3)
+// [1] 10 - talked to inspector (4)
+// [1] 11 - talked to old woman (4)
+// [1] 12 - talked to malek
+// [1] 13 - searched the bookcase
+// [1] 14 - talked to inspector (5)
+// [1] 15 - talked to troupe leader (2) <= reward
+// [1] 16 - talked to inspector (6) <= reward, end
+// [2] unused
+// [3] unused
+// [t] unused
// Description:
-// Hurnscald Nurse.
-// THIS IS A PLACEHOLDER!
+// Hurnscald Nurse. Robberies in Hurnscald.
-008-2-12,28,30,0 script Nurse#008-2-12 NPC_NURSE_LEGACY,{
- speech
- l("Hey."),
- l("The doctor is upstairs, but perhaps he can't help you much today."),
- lg("Just smile, everything will be better soon then.");
+008-2-12,28,30,0 script Nurse NPC_NURSE_LEGACY,{
- close;
+ speech(4,
+ l("How can I help you?"));
+
+ // TODO: check for AxeHat when we get it
+ // XXX: this npc used to teach the resist poison skill, do we still want that?
+
+ selectd(
+ l("Oooh, these wounds! They hurt so much!"),
+ l("I don't feel so well, I might be sick."),
+ l("No, I'm fine."),
+ rif(getq(.quest_inspector) == 2, l("Have you seen anything out of the ordinary?")));
+
+ switch (@menu)
+ {
+ case 1:
+ if (BaseLevel > .heal_max_level)
+ {
+ speech(
+ l("I'm sorry but I'm here only to help young people."), // XXX: this sounds cruel towards elderly people
+ l("Your level is already higher than %d.", .heal_max_level),
+ l("You can get some rest at the inn near here."));
+ close;
+ }
+ speech(4,
+ l("Here, let me heal you."));
+
+ npcskill(AL_HEAL, .heal_skill_level, .heal_npc_stats, .heal_npc_level);
+
+ speech(
+ l("There you go, like new."));
+ close;
+ case 2:
+ speech(
+ l("Then you should better see the doctor."),
+ l("He is usually in his office on the 3rd floor."));
+ close;
+ case 3:
+ speech(
+ l("Then I would ask you to leave."),
+ l("There are people who really need our help."));
+ close;
+ case 4:
+ speech(
+ l("I'm too busy here to observe the town."));
+ close;
+ }
+
+
+ end;
OnInit:
+ .heal_max_level = 20; // she will only heal low level players
+
+ .heal_skill_level = 10; // what level of the healing skill to use
+ .heal_npc_stats = 99; // what stat points the NPC has
+ .heal_npc_level = 60; // what level the npc has
+
+ .quest_inspector = HurnscaldQuests_Inspector;
+ .quest_debug = .quest_inspector;
.sex = G_FEMALE;
- .distance = 2;
+ .distance = 3;
+
+////////// UNFINISHED //////////
+////////////////////////////////
+// REMOVE THIS CODE WHEN THIS //
+// NPC IS NO LONGER A WIP //////
+////////////////////////////////
+if (!debug) disablenpc(.name$);
+///////// UNFINISHED ///////////
+
end;
}
diff --git a/npc/008-2-14/doctor.txt b/npc/008-2-14/doctor.txt
index 2a450ae2..52c8653c 100644
--- a/npc/008-2-14/doctor.txt
+++ b/npc/008-2-14/doctor.txt
@@ -1,20 +1,80 @@
// Evol scripts.
// Author:
-// Micksha
+// gumi
+// Quest states:
+// [1] 0 - cannot do the quest
+// [1] 1 - can do the quest
+// [1] 2 - talked to inspector (1) <= start
+// [1] 3 - talked to old woman (1)
+// [1] 4 - talked to old woman (2)
+// [1] 5 - talked to inspector (2)
+// [1] 6 - talked to troupe leader (1)
+// [1] 7 - talked to inspector (3)
+// [1] 8 - talked to old man
+// [1] 9 - talked to old woman (3)
+// [1] 10 - talked to inspector (4)
+// [1] 11 - talked to old woman (4)
+// [1] 12 - talked to malek
+// [1] 13 - searched the bookcase
+// [1] 14 - talked to inspector (5)
+// [1] 15 - talked to troupe leader (2) <= reward
+// [1] 16 - talked to inspector (6) <= reward, end
+// [2] unused
+// [3] unused
+// [t] unused
// Description:
// The crazy Hurnscald Doctor.
-// THIS IS A PLACEHOLDER!
-008-2-14,27,27,0 script Doctor#008-2-14 NPC_DOCTOR_LEGACY,{
- speech
- l("Hey."),
- l("Do you have some kind of pain?"),
- lg("Oh, I see. You should go see your pixcialist.");
+008-2-14,27,27,0 script Doctor NPC_DOCTOR_LEGACY,{
- close;
+ speech(4,
+ l("Hello, can I help you?"));
+
+ // TODO: check for AxeHat when we get it
+ // TODO: check for EyePatch when we get it
+
+ selectd(
+ l("I think I am sick!"),
+ l("No, I feel fine."),
+ rif(getq(.quest_inspector) == 2, l("Have you seen anything strange in town? Anything that might have to do with the robberies?")));
+
+ switch (@menu)
+ {
+ case 1:
+ narrator(4,
+ l("The doctor examines you briefly."));
+ // TODO: check for poison or other status conditions currently in use
+ speech(
+ l("Nonsense!"),
+ l("You look fine and dandy to me."),
+ l("All you need is a bit more exercise and fresh fruit in your diet!"));
+ close;
+ case 2:
+ speech(
+ l("Then please stop wasting my precious time."));
+ close;
+ case 3:
+ speech(
+ l("No, I haven't seen anything."));
+ close;
+ }
+
+
+ end;
OnInit:
- .sex = G_FEMALE;
- .distance = 2;
+ .quest_inspector = HurnscaldQuests_Inspector;
+ .quest_debug = .quest_inspector;
+ .sex = G_MALE;
+ .distance = 3;
+
+////////// UNFINISHED //////////
+////////////////////////////////
+// REMOVE THIS CODE WHEN THIS //
+// NPC IS NO LONGER A WIP //////
+////////////////////////////////
+//if (!debug) disablenpc(.name$);
+///////// UNFINISHED ///////////
+
end;
}
diff --git a/npc/008-2-18/malik.txt b/npc/008-2-18/malik.txt
index 3d43332c..ab95dc92 100644
--- a/npc/008-2-18/malik.txt
+++ b/npc/008-2-18/malik.txt
@@ -1,21 +1,65 @@
// Evol scripts.
// Author:
-// Micksha
+// gumi
+// Quest states:
+// [1] 0 - cannot do the quest
+// [1] 1 - can do the quest
+// [1] 2 - talked to inspector (1) <= start
+// [1] 3 - talked to old woman (1)
+// [1] 4 - talked to old woman (2)
+// [1] 5 - talked to inspector (2)
+// [1] 6 - talked to troupe leader (1)
+// [1] 7 - talked to inspector (3)
+// [1] 8 - talked to old man
+// [1] 9 - talked to old woman (3)
+// [1] 10 - talked to inspector (4)
+// [1] 11 - talked to old woman (4)
+// [1] 12 - talked to malek
+// [1] 13 - searched the bookcase
+// [1] 14 - talked to inspector (5)
+// [1] 15 - talked to troupe leader (2) <= reward
+// [1] 16 - talked to inspector (6) <= reward, end
+// [2] unused
+// [3] unused
+// [t] unused
// Description:
-// Malik.
-// THIS IS A PLACEHOLDER!
+// robberies in hurnscald
+// TODO: Make Malik prepare Crude Gem from shards, and make him produce Gem Powder later, once the player visited Tulim(dont tell WildX, though)
008-2-18,32,24,0 script Malik#008-2-18 NPC_MALIK,{
- speech
- l("Hi there."),
- l("My name is Malik. I used to make the finest Gempowder. But since Overlord WildX prohibited magic in Hurns, and along with this making gem powders, I can only try to melt gem shards into crude gems."),
- l("Anyhow, this does not work well yet. Perhaps you should come back later."),
- lg("Psst, if one day you may need gem powder, meet me in the basement.");
+ if (getq(.quest_inspector) == 11)
+ {
+ speech(4,
+ l("Hi, can I help you at all?"));
- close;
+ selectd(
+ l("The inspector sent me here to investigate."));
+
+ speech(4,
+ l("Yeah, we did hear a commotion."),
+ l("We thought we heard someone go down to the basement, but we checked the whole place over and didn't see anything out of the ordinary."));
+
+ close2;
+ setq(.quest_inspector, 12);
+ end;
+ }
+
+ npctalk3(generic(32 | 256));
+ end;
OnInit:
+ .quest_inspector = HurnscaldQuests_Inspector;
+ .quest_debug = .quest_inspector;
.sex = G_MALE;
- .distance = 2;
+ .distance = 3;
+
+////////// UNFINISHED //////////
+////////////////////////////////
+// REMOVE THIS CODE WHEN THIS //
+// NPC IS NO LONGER A WIP //////
+////////////////////////////////
+//if (!debug) disablenpc(.name$);
+///////// UNFINISHED ///////////
+
end;
}
diff --git a/npc/008-2-19/_import.txt b/npc/008-2-19/_import.txt
index c080bfb8..1d12e589 100644
--- a/npc/008-2-19/_import.txt
+++ b/npc/008-2-19/_import.txt
@@ -1,3 +1,4 @@
// Map 008-2-19: Mining Camp Basement
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/008-2-19/_warps.txt",
+"npc/008-2-19/books.txt",
diff --git a/npc/placeholder/books.txt b/npc/008-2-19/books.txt
index 3407e0cd..81cd4b98 100644
--- a/npc/placeholder/books.txt
+++ b/npc/008-2-19/books.txt
@@ -25,7 +25,7 @@
// Description:
// robberies in hurnscald
-008-1,247,40,0 script bookcase NPC_HUMAN_M_ARTIS,{
+008-2-19,33,21,0 script bookcase NPC_NO_SPRITE,{
if (getq(.quest_inspector) != 12)
{
diff --git a/npc/008-2-2/_import.txt b/npc/008-2-2/_import.txt
index e7ccd597..9fc64957 100644
--- a/npc/008-2-2/_import.txt
+++ b/npc/008-2-2/_import.txt
@@ -3,8 +3,8 @@
"npc/008-2-2/_warps.txt",
"npc/008-2-2/bartender.txt",
"npc/008-2-2/kfahr.txt",
+"npc/008-2-2/ledmitz.txt",
"npc/008-2-2/mapflags.txt",
"npc/008-2-2/melinda.txt",
-"npc/008-2-2/micksha.txt",
+"npc/008-2-2/note.txt",
"npc/008-2-2/receptionist.txt",
-"npc/008-2-2/roamingo.txt",
diff --git a/npc/placeholder/ledmitz.txt b/npc/008-2-2/ledmitz.txt
index df7b8d8e..5939428e 100644
--- a/npc/placeholder/ledmitz.txt
+++ b/npc/008-2-2/ledmitz.txt
@@ -2,7 +2,7 @@
// Author:
// gumi
-008-2-2,43,34,0 script Ledd NPC_HUMAN_M_ARTIS,{
+008-2-2,43,34,0 script Ledd NPC_DRINKER_ROAMINGO,{
// XXX: ^ I know it should be Led and Mitz but 4144 made names
// shorter than 4 characters illegal
@@ -24,13 +24,13 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
}
-008-2-2,46,34,0 script Mitz NPC_HUMAN_M_ARTIS,{
+008-2-2,46,34,0 script Mitz NPC_DRINKER_MICKSHA,{
deltimer("Ledd::OnTalk");
addtimer(rand(500, 900), "Ledd::OnTalk");
@@ -48,7 +48,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/008-2-2/micksha.txt b/npc/008-2-2/micksha.txt
deleted file mode 100644
index 099bff34..00000000
--- a/npc/008-2-2/micksha.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-// Evol scripts.
-// Author:
-// Micksha
-// Description:
-// Drinker Micksha
-// THIS IS A PLACEHOLDER!
-
-008-2-2,46,34,0 script Micksha#008-2-2 NPC_DRINKER_MICKSHA,{
- speech
- l("Hello Sir *hicks*."),
- l("Umm, can you perhaps spring for a beer? *hicks* I'm broken.");
- lg("*burp* ... .");
-
- close;
-
-OnInit:
- .sex = G_MALE;
- .distance = 2;
- end;
-}
diff --git a/npc/placeholder/note.txt b/npc/008-2-2/note.txt
index f449ac89..2fcce90f 100644
--- a/npc/placeholder/note.txt
+++ b/npc/008-2-2/note.txt
@@ -21,7 +21,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/008-2-2/roamingo.txt b/npc/008-2-2/roamingo.txt
deleted file mode 100644
index 98c82ef8..00000000
--- a/npc/008-2-2/roamingo.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-// Evol scripts.
-// Author:
-// Micksha
-// Description:
-// Drinker Roamingo
-// THIS IS A PLACEHOLDER!
-
-008-2-2,43,34,0 script Roamingo#008-2-2 NPC_DRINKER_ROAMINGO,{
- speech
- l("Oh hi my friend *hicks*"),
- l("Eh... shiver me timbers! *hicks* Where did you find this hat??");
- lg("Know what *hicks*, if you give me the hat, the next round will be on me.");
-
- close;
-
-OnInit:
- .sex = G_MALE;
- .distance = 2;
- end;
-}
diff --git a/npc/008-2-24/_import.txt b/npc/008-2-24/_import.txt
index e8f862f4..63cfe25c 100644
--- a/npc/008-2-24/_import.txt
+++ b/npc/008-2-24/_import.txt
@@ -1,3 +1,4 @@
// Map 008-2-24: Dimond's Cove Ground Floor
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/008-2-24/_warps.txt",
+"npc/008-2-24/troupe-leader.txt",
diff --git a/npc/placeholder/troupe-leader.txt b/npc/008-2-24/troupe-leader.txt
index 05f20e6a..8b10fed8 100644
--- a/npc/placeholder/troupe-leader.txt
+++ b/npc/008-2-24/troupe-leader.txt
@@ -25,7 +25,7 @@
// Description:
// robberies in hurnscald
-008-1,306,115,0 script Troupe Leader NPC_HUMAN_M_ARTIS,{
+008-2-24,41,39,0 script Troupe Leader NPC_DIMOND,{
function nohmask_question {
// XXX: shouldn't the player ask a question before she replies Yes? this feels too abrupt
@@ -99,7 +99,7 @@
close;
OnInit:
- .reward_item = Aquada; // FIXME: change this when we get NohMask
+ .reward_item = NohMask; // FIXME: change this when we get NohMask
.reward_exp = 1500;
.quest_inspector = HurnscaldQuests_Inspector;
@@ -112,7 +112,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/008-2-4/_import.txt b/npc/008-2-4/_import.txt
index 61c043be..826aa135 100644
--- a/npc/008-2-4/_import.txt
+++ b/npc/008-2-4/_import.txt
@@ -2,5 +2,6 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/008-2-4/_savepoints.txt",
"npc/008-2-4/_warps.txt",
+"npc/008-2-4/bernard.txt",
"npc/008-2-4/mapflags.txt",
"npc/008-2-4/olana.txt",
diff --git a/npc/placeholder/bernard.txt b/npc/008-2-4/bernard.txt
index 5c3f25ff..a528bcc3 100644
--- a/npc/placeholder/bernard.txt
+++ b/npc/008-2-4/bernard.txt
@@ -16,7 +16,7 @@
// Description:
// Bernard wants to make a maggot slime soup
-008-2-4,34,29,0 script Bernard NPC_HUMAN_M_ARTIS,{
+008-2-4,34,29,0 script Bernard NPC_BERNARD,{
if (BaseLevel < .min_level)
{
@@ -202,14 +202,14 @@ OnPCBaseLvUpEvent:
OnInit:
.min_level = 10; // min level to do the quest
- .first_item = Aquada; // FIXE: change this when we have RoastedMaggot
- .first_reward_item = Aquada; // reward item // FIXME: change this when we have CherryCake
+ .first_item = RoastedMaggot;
+ .first_reward_item = CherryCake;
.first_reward_amount = 5;
.first_reward_exp = 100;
- .second_item = Aquada; // FIXE: change this when we have MaggotSlime
+ .second_item = MaggotSlime;
.second_item_qty = 3;
- .second_reward_item = Aquada; // reward item // FIXME: change this when we have Beer
+ .second_reward_item = Beer;
.second_reward_amount = 3;
.second_reward_exp = 100;
@@ -223,7 +223,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/008-2-6/alan.txt b/npc/008-2-6/alan.txt
index b34f7bef..eebd11cd 100644
--- a/npc/008-2-6/alan.txt
+++ b/npc/008-2-6/alan.txt
@@ -2,19 +2,302 @@
// Author:
// Micksha
// Description:
-// Alan the bow-seller.
-// THIS IS A PLACEHOLDER!
+// Alan the bow-maker.
-008-2-6,31,25,0 script Alan#008-2-4 NPC_YOUNG_MAN_KFAHR,{
- speech
- l("Hi Sir."),
- l("Bad timing when you are asking for bows. Our bowmaker Gumi hasn't been seen for days now."),
- lg("Come back later, perhaps we are lucky and he teaches you how to chop trees for wood.");
+008-2-6,32,24,0 script Alan NPC_YOUNG_MAN_KFAHR,{
+ function bow_intro {
+ speech(4,
+ l("When you want to buy something then please speak to my apprentice."),
+ l("I am only doing special requests."));
+
+ selectd(
+ l("OK, thanks."),
+ rif(BaseLevel >= .min_level, l("Can you make me a really good bow?")),
+ rif(getq(.quest_inspector) == 2, l("Have you seen anything strange recently that might be connected to the robberies?")));
+
+ switch (@menu)
+ {
+ case 1: closeclientdialog(); close;
+ case 3: speech(l("No.")); close;
+ }
+
+ speech(4,
+ l("You mean like one of my legendary forest bows?"));
+
+ selectd(
+ l("Yes, that would be nice."));
+
+ speech(4,
+ l("Sorry, I am not making these anymore."));
+
+ selectd(
+ l("Oh, too bad."),
+ l("What? Why not?"));
+
+ if (@menu == 1) {
+ closeclientdialog();
+ close;
+ }
+
+ speech(4,
+ l("The problem is that I am short of material."),
+ l("My forestbows are not made of regular wood, you know."),
+ l("They are made of special living wood."),
+ l("And only the best logs of living wood are good enough for them."),
+ l("I used to get these logs from Jack, the handsome lumberjack."),
+ l("But the last time I asked him for a new delivery he said that he would never again get any for me."));
+
+ selectd(
+ l("Too bad."),
+ l("Did you ask him why?"));
+
+ if (@menu == 1) {
+ closeclientdialog();
+ close;
+ }
+
+ speech(4,
+ l("Sure I did."),
+ l("But he just told me to leave him alone."),
+ l("Maybe you could ask him what's wrong?"));
+
+ selectd(
+ l("OK, I'll ask him."),
+ l("I am sure he got his reasons."));
+
+ setq(.quest_bow, 2);
+ closeclientdialog();
+ close;
+ }
+
+ function bow_reminder {
+ if (getq(.quest_inspector) == 2)
+ {
+ speech(4,
+ l("Did you already ask Jack why he won't deliver me any more living wood?"));
+
+ selectd(
+ l("Have you seen anything strange recently that might be connected to the robberies?"));
+
+ speech(l("No."));
+ close;
+ }
+
+ npctalk3(l("Did you already ask Jack why he won't deliver me any more living wood?"));
+ end;
+ }
+
+ function bow_explain {
+ speech(4,
+ l("Did you already ask Jack why he won't deliver me any more living wood?"));
+
+ selectd(
+ l("Yes, I did. He said that the trees turned into dangerous monsters."),
+ rif(getq(.quest_inspector) == 2, l("Have you seen anything strange recently that might be connected to the robberies?")));
+
+ if (@menu != 1)
+ {
+ speech(l("No."));
+ close;
+ }
+
+ speech(
+ l("Oh, that's really bad news."),
+ l("Maybe you can do his job?"),
+ l("If you kill some of these tree monsters and bring me their wood I could take a look at them."),
+ l("Maybe you will find a piece of wood that is strong enough to become one of my forest bows."));
+
+ close2;
+ setq(.quest_bow, 4);
+ end;
+ }
+
+ function bow_make {
+ speech(4,
+ l("I can make you a really nice forest bow out of this."),
+ l("I just need %s E for material and work time.",
+ format_number(.req_esp)));
+
+ selectd(
+ l("%s??? What a ripoff!", format_number(.req_esp)),
+ rif(Zeny >= .req_esp, l("Sure, here you go!")),
+ rif(getq(.quest_inspector) == 2, l("Have you seen anything strange recently that might be connected to the robberies?")));
+
+ switch (@menu)
+ {
+ case 1: speech(l("Fine, I'll just hold on to this log should you ever change your mind.")); close;
+ case 3: speech(l("No.")); close;
+ }
+
+ // XXX: maybe here we could make the player wait real-world hours for Alan to finish?
+
+ if (checkweight(.reward_item, 1) != true)
+ {
+ speech(
+ l("It seems you can't carry the bow right now."),
+ l("Go clean up your inventory and come back."));
+ close;
+ }
+
+ if (Zeny < .req_esp)
+ close; // double-check
+
+ setq(.quest_bow, 6);
+ Zeny -= .req_esp;
+ getitem(.reward_item, 1);
+ getexp(.reward_exp, 0);
+
+ speech(
+ l("Here you go - have fun with it."));
+ close;
+ }
+
+ function bow_check_wood {
+ speech(4,
+ l("How is the hunt going?"),
+ l("Did you bring me any wood?"));
+
+ selectd(
+ l("No, sorry."),
+ rif(countitem(.req_item) >= 1, l("Here, take a look!")),
+ rif(getq(.quest_inspector) == 2, l("Have you seen anything strange recently that might be connected to the robberies?")));
+
+ switch (@menu)
+ {
+ case 1: closeclientdialog(); close;
+ case 3: speech(l("No.")); close;
+ }
+
+ .@first = true;
+
+ do {
+ if (countitem(.req_item) < 1)
+ break;
+
+ if (.@first == false)
+ {
+ narrator(4,
+ l("You hand him another log."));
+ }
+
+ delitem(.req_item, 1);
+ .@first = false;
+
+ speech(4,
+ l("Hmmm... looks ok, but is it strong enough?"));
+
+ narrator(4,
+ l("Alan bends the log over his knee."));
+
+ if (rand(.success_rate) == 0)
+ {
+ narrator(4 | 8,
+ l("Alan tries as hard as he can but the log won't bend."));
+
+ speech(4,
+ l("Aaah!"),
+ l("Yes!"),
+ l("That is a really fine piece of wood you brought me."),
+ l("It will make an excellent bow!"));
+
+ setq(.quest_bow, 5);
+ setq(.quest_shield, 1);
+
+ narrator(4,
+ l("He proceeds to further scrutinize the log."));
+
+ bow_make;
+ end;
+ }
+
+ narrator(4 | 8,
+ l("The log breaks with a loud crack."));
+
+ speech(4,
+ l("Sorry, this log was too weak for one of my forest bows."),
+ l("Now it is junk."),
+ l("Do you wish to try again?"));
+
+ selectd(
+ l("Sure, here you go."),
+ l("Hey! Stop breaking my stuff!"));
+
+ if (@menu != 1) {
+ closeclientdialog();
+ close;
+ }
+
+ } while (true);
+
+ speech(l("It seems you have no wood left."));
+ close;
+ }
+
+ function bow_done {
+ speech(4,
+ l("I hope you are satisfied with your forest bow."),
+ l("It is one of my best works."));
+
+ selectd(
+ l("I am!"),
+ rif(getq(.quest_inspector) == 2, l("Have you seen anything strange recently that might be connected to the robberies?")));
+
+ switch (@menu)
+ {
+ case 2: speech(l("No.")); close;
+ default: closeclientdialog(); close;
+ }
+ }
+
+ // OnTalk:
+ switch (getq(.quest_bow))
+ {
+ case 0:
+ case 1: bow_intro; break;
+ case 2: bow_reminder; break;
+ case 3: bow_explain; break;
+ case 4: bow_check_wood; break;
+ case 5: bow_make; break;
+ default: bow_done; break;
+ }
+
+ closeclientdialog();
close;
+OnPCLoginEvent:
+OnPCBaseLvUpEvent:
+ if (BaseLevel >= .min_level && getq(.quest_bow) < 1)
+ {
+ setq(.quest_bow, 1); // allow the player to do the quest
+ dispbottom(l("New quest available: %s (level %d+)",
+ getquestlink(.quest_bow), .min_level)); // XXX: requires new manaplus versions, maybe show a different message for old versions?
+ }
+ end;
+
OnInit:
+ .min_level = 25; // min level to do the quest
+
+ .req_item = RawLog; // item required to make the bow
+ .req_esp = 10000; // amount of Esperin required to make the bow
+ .reward_item = ForestBow; // quest reward (item)
+ .reward_exp = 500; // quest reward (exp)
+ .success_rate = 20; // one in X chances to get a perfect log
+
+ .quest_bow = HurnscaldQuests_ForestBow;
+ .quest_shield = HurnscaldQuests_WoodenShield;
+ .quest_inspector = HurnscaldQuests_Inspector;
+ .quest_debug = .quest_bow;
.sex = G_MALE;
- .distance = 2;
+ .distance = 3;
+
+////////// UNFINISHED //////////
+////////////////////////////////
+// REMOVE THIS CODE WHEN THIS //
+// NPC IS NO LONGER A WIP //////
+////////////////////////////////
+//if (!debug) disablenpc(.name$);
+///////// UNFINISHED ///////////
+
end;
}
diff --git a/npc/008-2-8/_import.txt b/npc/008-2-8/_import.txt
index 8b3da720..8bb44bb1 100644
--- a/npc/008-2-8/_import.txt
+++ b/npc/008-2-8/_import.txt
@@ -1,6 +1,6 @@
// Map 008-2-8: Hurnscald Forge
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/008-2-8/_warps.txt",
-"npc/008-2-8/apprentice.txt",
+"npc/008-2-8/macgowan.txt",
"npc/008-2-8/mapflags.txt",
"npc/008-2-8/nicholas.txt",
diff --git a/npc/008-2-8/apprentice.txt b/npc/008-2-8/apprentice.txt
deleted file mode 100644
index e15e7db7..00000000
--- a/npc/008-2-8/apprentice.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-// Evol scripts.
-// Author:
-// Micksha
-// Description:
-// The Smith's apprentice.
-// THIS IS A PLACEHOLDER!
-
-008-2-8,38,29,0 script Apprentice#008-2-8 NPC_YOUNG_MAN_APPRENTICE,{
- speech
- l("Hi Sir."),
- l("If you bring us ores, we will be able to make the finest equipment."),
- lg("Come back a bit later when you are interested.");
-
- close;
-
-OnInit:
- .sex = G_MALE;
- .distance = 2;
- end;
-}
diff --git a/npc/placeholder/macgowan.txt b/npc/008-2-8/macgowan.txt
index 2f65b9fe..efeee33e 100644
--- a/npc/placeholder/macgowan.txt
+++ b/npc/008-2-8/macgowan.txt
@@ -1,8 +1,11 @@
// Evol scripts.
// Author:
-// gumi
+// Micksha
+// Description:
+// The Smith's apprentice.
+// THIS IS A PLACEHOLDER!
-008-2-8,38,29,0 script Macgowan NPC_HUMAN_M_ARTIS,{
+008-2-8,38,29,0 script Macgowan NPC_YOUNG_MAN_APPRENTICE,{
npctalk3(l("Hello, I am Macgowan, apprentice to Nicholas."));
end;
@@ -14,7 +17,7 @@ OnInit:
// REMOVE THIS CODE WHEN THIS //
// NPC IS NO LONGER A WIP //////
////////////////////////////////
-if (!debug) disablenpc(.name$);
+//if (!debug) disablenpc(.name$);
///////// UNFINISHED ///////////
end;
diff --git a/npc/008-2-8/nicholas.txt b/npc/008-2-8/nicholas.txt
index 9dab65e8..7b62090d 100644
--- a/npc/008-2-8/nicholas.txt
+++ b/npc/008-2-8/nicholas.txt
@@ -1,19 +1,28 @@
// Evol scripts.
// Author:
-// Micksha
+// gumi, Micksha
// Description:
// Nicholas the Smith.
-// THIS IS A PLACEHOLDER!
-008-2-8,39,27,0 script Nicholas#008-2-8 NPC_NICHOLAS,{
- speech
- l("Hi Sir."),
- lg("If you need stable metal gear, you are right! But first I must bring the steel atoms in the right order, hold on.");
+008-2-8,40,27,0 script Nicholas NPC_NICHOLAS,{
+ speech(
+ l("Hello, there!"),
+ l("I'm an expert blacksmith."),
+ l("If you get me some Coal and Iron Ingots, I could make you a very valuable shield or helmet."));
+ // TODO: setzer quest
close;
OnInit:
- .sex = G_MALE;
- .distance = 2;
+ .distance = 3;
+
+////////// UNFINISHED //////////
+////////////////////////////////
+// REMOVE THIS CODE WHEN THIS //
+// NPC IS NO LONGER A WIP //////
+////////////////////////////////
+//if (!debug) disablenpc(.name$);
+///////// UNFINISHED ///////////
+
end;
}
diff --git a/npc/placeholder/alan.txt b/npc/placeholder/alan.txt
deleted file mode 100644
index 8e8e42b7..00000000
--- a/npc/placeholder/alan.txt
+++ /dev/null
@@ -1,323 +0,0 @@
-// Evol scripts.
-// Author:
-// gumi
-// Quest states (forest bow):
-// [1] 0 - cannot do the quest
-// [1] 1 - can do the quest
-// [1] 2 - alan wants to ask jack
-// [1] 3 - jack explained problem
-// [1] 4 - alan asks to find wood
-// [1] 5 - found perfect wood
-// [1] 6 - got the bow
-// [2] unused
-// [3] unused
-// [t] unused
-// Quest states (wooden shield):
-// [1] 0 - cannot do the quest
-// [1] 1 - can do the quest
-// [1] 2 - jack proposes shield
-// [1] 3 - player accepted quest
-// [1] 4 - got the shield
-// [2] unused
-// [3] unused
-// [t] unused
-// Description:
-// Jack Lumber, the handsome lumberjack
-
-008-2-6,31,26,0 script Alan NPC_HUMAN_M_ARTIS,{
-
- function bow_intro {
- speech(4,
- l("When you want to buy something then please speak to my apprentice."),
- l("I am only doing special requests."));
-
- selectd(
- l("OK, thanks."),
- rif(BaseLevel >= .min_level, l("Can you make me a really good bow?")),
- rif(getq(.quest_inspector) == 2, l("Have you seen anything strange recently that might be connected to the robberies?")));
-
- switch (@menu)
- {
- case 1: closeclientdialog(); close;
- case 3: speech(l("No.")); close;
- }
-
- speech(4,
- l("You mean like one of my legendary forest bows?"));
-
- selectd(
- l("Yes, that would be nice."));
-
- speech(4,
- l("Sorry, I am not making these anymore."));
-
- selectd(
- l("Oh, too bad."),
- l("What? Why not?"));
-
- if (@menu == 1) {
- closeclientdialog();
- close;
- }
-
- speech(4,
- l("The problem is that I am short of material."),
- l("My forestbows are not made of regular wood, you know."),
- l("They are made of special living wood."),
- l("And only the best logs of living wood are good enough for them."),
- l("I used to get these logs from Jack, the handsome lumberjack."),
- l("But the last time I asked him for a new delivery he said that he would never again get any for me."));
-
- selectd(
- l("Too bad."),
- l("Did you ask him why?"));
-
- if (@menu == 1) {
- closeclientdialog();
- close;
- }
-
- speech(4,
- l("Sure I did."),
- l("But he just told me to leave him alone."),
- l("Maybe you could ask him what's wrong?"));
-
- selectd(
- l("OK, I'll ask him."),
- l("I am sure he got his reasons."));
-
- setq(.quest_bow, 2);
- closeclientdialog();
- close;
- }
-
- function bow_reminder {
- if (getq(.quest_inspector) == 2)
- {
- speech(4,
- l("Did you already ask Jack why he won't deliver me any more living wood?"));
-
- selectd(
- l("Have you seen anything strange recently that might be connected to the robberies?"));
-
- speech(l("No."));
- close;
- }
-
- npctalk3(l("Did you already ask Jack why he won't deliver me any more living wood?"));
- end;
- }
-
- function bow_explain {
- speech(4,
- l("Did you already ask Jack why he won't deliver me any more living wood?"));
-
- selectd(
- l("Yes, I did. He said that the trees turned into dangerous monsters."),
- rif(getq(.quest_inspector) == 2, l("Have you seen anything strange recently that might be connected to the robberies?")));
-
- if (@menu != 1)
- {
- speech(l("No."));
- close;
- }
-
- speech(
- l("Oh, that's really bad news."),
- l("Maybe you can do his job?"),
- l("If you kill some of these tree monsters and bring me their wood I could take a look at them."),
- l("Maybe you will find a piece of wood that is strong enough to become one of my forest bows."));
-
- close2;
- setq(.quest_bow, 4);
- end;
- }
-
- function bow_make {
- speech(4,
- l("I can make you a really nice forest bow out of this."),
- l("I just need %s E for material and work time.",
- format_number(.req_esp)));
-
- selectd(
- l("%s??? What a ripoff!", format_number(.req_esp)),
- rif(Zeny >= .req_esp, l("Sure, here you go!")),
- rif(getq(.quest_inspector) == 2, l("Have you seen anything strange recently that might be connected to the robberies?")));
-
- switch (@menu)
- {
- case 1: speech(l("Fine, I'll just hold on to this log should you ever change your mind.")); close;
- case 3: speech(l("No.")); close;
- }
-
- // XXX: maybe here we could make the player wait real-world hours for Alan to finish?
-
- if (checkweight(.reward_item, 1) != true)
- {
- speech(
- l("It seems you can't carry the bow right now."),
- l("Go clean up your inventory and come back."));
- close;
- }
-
- if (Zeny < .req_esp)
- close; // double-check
-
- setq(.quest_bow, 6);
- Zeny -= .req_esp;
- getitem(.reward_item, 1);
- getexp(.reward_exp, 0);
-
- speech(
- l("Here you go - have fun with it."));
- close;
- }
-
- function bow_check_wood {
- speech(4,
- l("How is the hunt going?"),
- l("Did you bring me any wood?"));
-
- selectd(
- l("No, sorry."),
- rif(countitem(.req_item) >= 1, l("Here, take a look!")),
- rif(getq(.quest_inspector) == 2, l("Have you seen anything strange recently that might be connected to the robberies?")));
-
- switch (@menu)
- {
- case 1: closeclientdialog(); close;
- case 3: speech(l("No.")); close;
- }
-
- .@first = true;
-
- do {
- if (countitem(.req_item) < 1)
- break;
-
- if (.@first == false)
- {
- narrator(4,
- l("You hand him another log."));
- }
-
- delitem(.req_item, 1);
- .@first = false;
-
- speech(4,
- l("Hmmm... looks ok, but is it strong enough?"));
-
- narrator(4,
- l("Alan bends the log over his knee."));
-
- if (rand(.success_rate) == 0)
- {
- narrator(4 | 8,
- l("Alan tries as hard as he can but the log won't bend."));
-
- speech(4,
- l("Aaah!"),
- l("Yes!"),
- l("That is a really fine piece of wood you brought me."),
- l("It will make an excellent bow!"));
-
- setq(.quest_bow, 5);
- setq(.quest_shield, 1);
-
- narrator(4,
- l("He proceeds to further scrutinize the log."));
-
- bow_make;
- end;
- }
-
- narrator(4 | 8,
- l("The log breaks with a loud crack."));
-
- speech(4,
- l("Sorry, this log was too weak for one of my forest bows."),
- l("Now it is junk."),
- l("Do you wish to try again?"));
-
- selectd(
- l("Sure, here you go."),
- l("Hey! Stop breaking my stuff!"));
-
- if (@menu != 1) {
- closeclientdialog();
- close;
- }
-
- } while (true);
-
- speech(l("It seems you have no wood left."));
- close;
- }
-
- function bow_done {
- speech(4,
- l("I hope you are satisfied with your forest bow."),
- l("It is one of my best works."));
-
- selectd(
- l("I am!"),
- rif(getq(.quest_inspector) == 2, l("Have you seen anything strange recently that might be connected to the robberies?")));
-
- switch (@menu)
- {
- case 2: speech(l("No.")); close;
- default: closeclientdialog(); close;
- }
- }
-
- // OnTalk:
- switch (getq(.quest_bow))
- {
- case 0:
- case 1: bow_intro; break;
- case 2: bow_reminder; break;
- case 3: bow_explain; break;
- case 4: bow_check_wood; break;
- case 5: bow_make; break;
- default: bow_done; break;
- }
-
- closeclientdialog();
- close;
-
-OnPCLoginEvent:
-OnPCBaseLvUpEvent:
- if (BaseLevel >= .min_level && getq(.quest_bow) < 1)
- {
- setq(.quest_bow, 1); // allow the player to do the quest
- dispbottom(l("New quest available: %s (level %d+)",
- getquestlink(.quest_bow), .min_level)); // XXX: requires new manaplus versions, maybe show a different message for old versions?
- }
- end;
-
-OnInit:
- .min_level = 25; // min level to do the quest
-
- .req_item = RawLog; // item required to make the bow
- .req_esp = 10000; // amount of Esperin required to make the bow
- .reward_item = ForestBow; // quest reward (item)
- .reward_exp = 0; // quest reward (exp)
- .success_rate = 20; // one in X chances to get a perfect log
-
- .quest_bow = HurnscaldQuests_ForestBow;
- .quest_shield = HurnscaldQuests_WoodenShield;
- .quest_inspector = HurnscaldQuests_Inspector;
- .quest_debug = .quest_bow;
- .sex = G_MALE;
- .distance = 3;
-
-////////// UNFINISHED //////////
-////////////////////////////////
-// REMOVE THIS CODE WHEN THIS //
-// NPC IS NO LONGER A WIP //////
-////////////////////////////////
-if (!debug) disablenpc(.name$);
-///////// UNFINISHED ///////////
-
- end;
-}
diff --git a/npc/placeholder/doctor.txt b/npc/placeholder/doctor.txt
deleted file mode 100644
index af36d1e2..00000000
--- a/npc/placeholder/doctor.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-// Evol scripts.
-// Author:
-// gumi
-// Quest states:
-// [1] 0 - cannot do the quest
-// [1] 1 - can do the quest
-// [1] 2 - talked to inspector (1) <= start
-// [1] 3 - talked to old woman (1)
-// [1] 4 - talked to old woman (2)
-// [1] 5 - talked to inspector (2)
-// [1] 6 - talked to troupe leader (1)
-// [1] 7 - talked to inspector (3)
-// [1] 8 - talked to old man
-// [1] 9 - talked to old woman (3)
-// [1] 10 - talked to inspector (4)
-// [1] 11 - talked to old woman (4)
-// [1] 12 - talked to malek
-// [1] 13 - searched the bookcase
-// [1] 14 - talked to inspector (5)
-// [1] 15 - talked to troupe leader (2) <= reward
-// [1] 16 - talked to inspector (6) <= reward, end
-// [2] unused
-// [3] unused
-// [t] unused
-// Description:
-// robberies in hurnscald
-
-008-2-14,29,30,0 script Doctor NPC_HUMAN_M_ARTIS,{
-
- speech(4,
- l("Hello, can I help you?"));
-
- // TODO: check for AxeHat when we get it
- // TODO: check for EyePatch when we get it
-
- selectd(
- l("I think I am sick!"),
- l("No, I feel fine."),
- rif(getq(.quest_inspector) == 2, l("Have you seen anything strange in town? Anything that might have to do with the robberies?")));
-
- switch (@menu)
- {
- case 1:
- narrator(4,
- l("The doctor examines you briefly."));
- // TODO: check for poison or other status conditions currently in use
- speech(
- l("Nonsense!"),
- l("You look fine and dandy to me."),
- l("All you need is a bit more exercise and fresh fruit in your diet!"));
- close;
- case 2:
- speech(
- l("Then please stop wasting my precious time."));
- close;
- case 3:
- speech(
- l("No, I haven't seen anything."));
- close;
- }
-
-
- end;
-
-OnInit:
- .quest_inspector = HurnscaldQuests_Inspector;
- .quest_debug = .quest_inspector;
- .sex = G_MALE;
- .distance = 3;
-
-////////// UNFINISHED //////////
-////////////////////////////////
-// REMOVE THIS CODE WHEN THIS //
-// NPC IS NO LONGER A WIP //////
-////////////////////////////////
-if (!debug) disablenpc(.name$);
-///////// UNFINISHED ///////////
-
- end;
-}
diff --git a/npc/placeholder/hinnak.txt b/npc/placeholder/hinnak.txt
deleted file mode 100644
index 0dd211fd..00000000
--- a/npc/placeholder/hinnak.txt
+++ /dev/null
@@ -1,352 +0,0 @@
-// Evol scripts.
-// Author:
-// gumi
-// Quest states:
-// [1] 0 - cannot do the quest
-// [1] 1 - can do the quest
-// [1] 2 - hinnak asked for help
-// [1] 3 - helped hinnak
-// [2] kill counter
-// Description:
-// Hinnak needs help to get rid of {mobname}
-
-008-1,270,77,0 script Hinnak NPC_HUMAN_M_ARTIS,{
-
- if (BaseLevel < .min_level)
- {
- npctalk3 generic(1 | 16 | 64);
- end;
- }
-
- function hinn_new_player
- {
- if(getequipid(EQI_HEAD_TOP) == .bad_hat)
- {
- narrator 4,
- l("The farmer lunges at you with a farming implement.");
- heal -50, 0;
-
- selectd
- l("I'm out of here."),
- l("Whoa, what are you doing?");
-
- if (@menu == 1)
- {
- return;
- }
-
- speech 4 | 1,
- l("Sorry, you look like a pinkie."),
- l("They've been destroying my fields, and I guess I got a bit worked up.");
- }
-
- else
- {
- speech 4,
- l("Argh!"),
- l("I hate them!"),
- l("I @#$% hate them!"),
- l("I @#$% hate these @#$% pinkies!");
-
- selectd
- l("You need some anger control therapy."),
- l("Why do you hate them?");
-
- if (@menu == 1)
- {
- return;
- }
-
- speech 4 | 1,
- l("These @#$% beasts are jumping around in my fields destroying all my harvest."),
- l("But they are too fast."),
- l("I can't catch them.");
- }
-
- selectd
- l("Want me to help you?");
-
- speech 4 | 1,
- l("Yes, you look quite fast."),
- l("Maybe you can catch some of them."),
- l("That will pay them a lesson."),
- l("Slay some of them and bring me %d of their antennae.", .drop_count);
-
- setq .quest, 2, 0;
-
- selectd
- l("How much is this worth to you?");
-
- speech 1,
- l("Well, I can't offer you much."),
- l("But I got an old scythe laying around."),
- l("Maybe you can use it as a weapon.");
-
- close;
- }
-
- function hinn_help
- {
- if (getequipid(EQI_HEAD_TOP) == .bad_hat)
- {
- narrator 4,
- l("The farmer glares at your hat.");
- }
-
- speech 4,
- l("Have you got the %d antennae?", .drop_count);
-
- selectd
- l("Not yet, but I am working on it."),
- rif(countitem(.monster_drop) >= .drop_count, l("Sure, here they are!"));
-
- if (@menu == 1)
- {
- return;
- }
-
- if (getq2(.quest) < .kill_count)
- {
- speech 1,
- l("Don't try to fool me!"),
- l("I know you didn't kill them yourself!"),
- l("Kill at least %d pinkies and come back.", .kill_count);
- close;
- }
-
- speech 1,
- l("Thank you very much"),
- l("As promised, here's my old scythe."),
- l("Maybe you can use it as a weapon."),
- l("It is a bit cumbersome but its strikes are deadly.");
-
- if (countitem(.monster_drop) >= .drop_count)
- {
- delitem .monster_drop, .drop_count;
- getitem .reward_item, 1;
- Zeny += .reward_money;
- //getexp .reward_exp, 0;
- setq .quest, 3;
- }
- close;
- }
-
- function hinn_thanks
- {
- if (getequipid(EQI_HEAD_TOP) == .bad_hat)
- {
- speech 4,
- l("That better be a trophy on your head.");
-
- selectd
- l("It is.");
-
- speech 4 | 1,
- l("Good then."),
- l("Thanks for your help with the pinkies.");
- }
-
- else
- {
- speech 4,
- l("Good to see you again."),
- l("Thanks again for helping me with the pinkies!");
- }
-
- selectd
- l("Sure, any time!"),
- l("Anything else you want me to do?"),
- l("You're welcome. Bye!");
-
- if (@menu == 3)
- {
- return;
- }
-
- speech 4 | 1,
- l("Actually, it's been a long day."),
- l("If it's no trouble, could you get me a %s?",
- getitemlink(.drink_item));
-
- selectd
- rif(countitem(.drink_item) >= 1, l("Here you are.")),
- l("Sure, I'll go get one. Bye!"),
- l("You shouldn't drink while working!");
-
- do
- {
- switch (@menu)
- {
- case 2: return;
- case 3:
- speech 1,
- l("Well, I'm done for the day, and I'm quite old enough to decide when I can have a %s, thank you!",
- getitemname(.drink_item));
- selectd
- rif(countitem(.drink_item) >= 1, l("Sorry... here you are.")),
- l("I don't have any.");
- break;
- default:
- if (countitem(.drink_item) < 1)
- {
- return;
- }
- delitem .drink_item, 1;
-
- narrator 4 | 8 | 2 | 1,
- l("%s takes a sip.", .name$);
-
- speech 4,
- l("Aaah!"),
- l("Nothing like a well-deserved %s after a long day of tending the crops!",
- getitemname(.drink_item)),
- l("Thanks, that was very kind of you!");
-
- narrator 4 | 8 | 1 | 2,
- l("He takes another sip.");
-
- speech 4,
- l("Thanks!"),
- l("You know, I had the strangest thing happen to me."),
- l("I had this patch of ground that was really clumpy; lots of clay, you see."),
- l("Right over there."),
- // TODO: move cam to the spot
- l("Looks much better now, doesn't it?"),
- // TODO: restore cam
- l("But how I got there is kind of scary..."),
- l("I'd been trying to break it up for a while, but that kind of work is a pain."),
- l("So my wife said that I should go and see the witch, just in case she knows something."),
- l("And sure enough I ask the witch, and she has a look at it."),
- l("“Nothing I can do”, she says, “but I can ask a friend”."),
- l("So the next day another witch shows up."),
- l("Gorgeous woman, but when she looked at me, the scares went scuttling down my spine..."),
- l("First thing she asked was if I'm a farmer."),
- l("Said her friend had told her that I needed help."),
- l("I show her what the problem is, and she tells me to go inside and wait.");
-
- narrator 4 | 8 | 1 | 2,
- l("%s drains his mug in one long sip, then hesitates.", .name$);
-
- speech 4,
- l("So I go inside."),
- l("I'm barely in when it starts raining outside, pouring cats and mouboos!"),
- l("Not so weird, perhaps, except that it was been bright and sunny just a second before!"),
- l("So I rush out, my wife telling me to leave the witch alone, and I see her standing there in the middle of the rain..."),
- l("None of the raindrops touched her, as if they were afraid!"),
- l("Then she yells out some gobbledygook word, and out of the ground there comes a swarm of maggots, crawling and digging and climbing over each other's backs..."),
- // XXX: maybe here insert a reference to SUSAN?
- l("And then she turns to me!"),
- l("Seeing her gaze, for a moment there I thought she would turn me into a pinkie, for sure..."),
- l("But all she says is, “had you stayed inside, you wouldn't be wet now”.");
-
- selectd
- l("Hahaha!"),
- l("Whoah, scary..."),
- l("What was that gobbledygook word?"),
- l("I better go now. Bye.");
-
- switch (@menu)
- {
- case 1:
- speech 1,
- l("Yeah, funny now..."),
- l("But you should've seen that gaze!"),
- l("Ah, well, never mind.");
- close;
- case 2:
- speech 1,
- l("Yeah, you could say that...");
- close;
- case 3:
- speech 1,
- l("Oh, I can't be sure..."),
- l("But something like “Nanaj princino”, I think."); // this is "Dwarven Princess" translated to Esperanto
- close;
- }
- return;
- }
- } while(true);
- }
-
- // OnTalk:
-
- if (getq(.quest_inspector) == 11)
- {
- selectd
- l("Did you see anyone in a mask come by here at night?"),
- l("Did you see anyone with a large satchel come by here at night?"),
- l("Hello.");
-
- switch (@menu)
- {
- case 1:
- speech
- l("No."),
- l("It tends to be too dark to see a mask.");
- close;
-
- case 2:
- speech
- l("Yes, I saw someone with a large sack on their back go to the mining camp.");
- close;
- }
- }
-
- switch (getq(.quest))
- {
- case 0:
- case 1: hinn_new_player; break;
- case 2: hinn_help; break;
- default: hinn_thanks;
- }
-
- closeclientdialog();
- close;
-
-OnNPCKillEvent:
- // XXX: maybe have a OnTakeScript on the pinky antena item so we count pickups instead of kills
- if (killedrid == .monster_id && getq(.quest) == 2 &&
- getq2(.quest) < .kill_count && strcharinfo(PC_MAP) == .map$)
- {
- setq .quest, 2, getq2(.quest) + 1;
- }
- end;
-
-OnPCLoginEvent:
-OnPCBaseLvUpEvent:
- if (BaseLevel >= .min_level && getq(.quest) < 1)
- {
- setq .quest, 1; // allow the player to do the quest
- dispbottom l("New quest available: %s (level %d+)",
- getquestlink(.quest), .min_level); // XXX: requires new manaplus versions, maybe show a different message for old versions?
- }
- end;
-
-OnInit:
- .min_level = 15; // min level to do the quest
- .monster_id = Fluffy; // monster to kill // FIXME: change this when we have pinkies
- .monster_drop = FluffyFur; // monster drop to collect // FIXME: change this when we have pinkies
- .drop_count = 10; // amount of that drop needed
- .kill_count = 10; // min number of kills
- .reward_item = WoodenSword; // reward item // FIXME: change this when we have he Scythe
- .reward_money = 0; // reward money
- .reward_exp = 0; // reward exp
- .bad_hat = BrimmedFlowerHat; // hinnak attacks you when you wear this hat // FIXME: make this pinky hat when we get it
- .drink_item = Beer; // the item hinnak asks to drink // FIXME: make this beer when we have it
-
- .quest = HurnscaldQuests_Hinnak;
- .quest_inspector = HurnscaldQuests_Inspector;
- .quest_debug = .quest;
- .sex = G_MALE;
- .distance = 3;
-
-////////// UNFINISHED //////////
-////////////////////////////////
-// REMOVE THIS CODE WHEN THIS //
-// NPC IS NO LONGER A WIP //////
-////////////////////////////////
-if (!debug) disablenpc(.name$);
-///////// UNFINISHED ///////////
-
- end;
-}
diff --git a/npc/placeholder/inspector.txt b/npc/placeholder/inspector.txt
deleted file mode 100644
index f25ef1dd..00000000
--- a/npc/placeholder/inspector.txt
+++ /dev/null
@@ -1,190 +0,0 @@
-// Evol scripts.
-// Author:
-// gumi
-// Quest states:
-// [1] 0 - cannot do the quest
-// [1] 1 - can do the quest
-// [1] 2 - talked to inspector (1) <= start
-// [1] 3 - talked to old woman (1)
-// [1] 4 - talked to old woman (2)
-// [1] 5 - talked to inspector (2)
-// [1] 6 - talked to troupe leader (1)
-// [1] 7 - talked to inspector (3)
-// [1] 8 - talked to old man
-// [1] 9 - talked to old woman (3)
-// [1] 10 - talked to inspector (4)
-// [1] 11 - talked to old woman (4)
-// [1] 12 - talked to malek
-// [1] 13 - searched the bookcase
-// [1] 14 - talked to inspector (5)
-// [1] 15 - talked to troupe leader (2) <= reward
-// [1] 16 - talked to inspector (6) <= reward, end
-// [2] unused
-// [3] unused
-// [t] unused
-// Description:
-// robberies in hurnscald
-
-008-2-1,30,35,0 script Inspector NPC_HUMAN_M_ARTIS,{
-
- if (BaseLevel < .min_level)
- {
- npctalk3(l("I'm sorry, but I'm busy looking into this string of robberies."));
- end;
- }
-
- // OnTalk:
- switch (getq(.quest))
- {
- case 0:
- case 1:
- speech(4,
- l("Hmm... what to do."));
- narrator(4,
- l("He looks up and into your face."));
- speech(4,
- l("You look capable, will you help me solve these robberies?"),
- l("I would go myself, but for some reason I'm a non-walking NPC."));
-
- if (selectd("Yes", "No") == 2) {
- closeclientdialog();
- close;
- }
-
- speech(
- l("Ok then."),
- l("I'd like you to ask the villagers about the recent string of robberies."));
-
- close2;
- setq(.quest, 2);
- end;
-
- case 2:
- npctalk3(l("Please continue talking to the villagers."));
- end;
-
- case 3:
- speech(
- l("Hm..."),
- l("I don't know if I trust her eyesight or memory."),
- l("See if someone else knows anything."));
- close;
-
- case 4:
- speech(
- l("Someone in a theater mask, eh?"),
- l("There was a traveling theater troupe in town recently, but they've moved on to Tulimshar."),
- l("Please go talk to their leader about this."));
-
- close2;
- setq(.quest, 5);
- end;
-
- case 5:
- npctalk3(l("Please go talk to the leader of the traveling troupe about the theater mask."));
- end;
-
- case 6:
- speech(
- l("Hm... an old man?"),
- l("Could you interrogate him for me?"));
-
- close2;
- setq(.quest, 7);
- end;
-
- case 7:
- npctalk3(l("Have you talked with the old man yet?"));
- end;
-
- case 8:
- npctalk3(l("Can you verify that with his wife?"));
- end;
-
- case 9:
- speech(
- l("Hm... then it couldn't be him."),
- l("I'm not sure where to go from here, maybe you can find something else."),
- l("Try talking to everyone again."));
-
- close2;
- setq(.quest, 10);
- end;
-
- case 10:
- npctalk3(l("Made any progress yet?"));
- end;
-
- case 11:
- npctalk3(l("Then go north and investigate!"));
- end;
-
- case 12:
- npctalk3(l("Did you look over the basement?"));
- end;
-
- case 13:
- speech(
- l("What a strange note."),
- l("I'll keep track of this, while you return the mask to the troupe."),
- l("I would go myself, but the developers were too lazy to make me walk."),
- "...",
- l("By the way, stay sharp! I may call upon you again."));
-
- close2;
- setq(.quest, 14);
- end;
-
- case 14:
- npctalk3(l("Please return the mask to the traveling troupe."));
- end;
-
- case 15:
- speech(
- l("My men have found all of the stolen items."),
- l("They were all in the mining camp."),
- l("We still don't know who did it.")); // XXX: feel free to extend this quest beyond this point
-
- close2;
- setq(.quest, 16);
- getexp(.reward_exp, 0);
- end;
-
- case 16:
- npctalk3(l("Remember to stay sharp. I might need your help on another case."));
- end;
- }
-
- closeclientdialog();
- close;
-
-OnPCLoginEvent:
-OnPCBaseLvUpEvent:
- if (BaseLevel >= .min_level && getq(.quest) < 1)
- {
- setq(.quest, 1); // allow the player to do the quest
- dispbottom(l("New quest available: %s (level %d+)",
- getquestlink(.quest), .min_level)); // XXX: requires new manaplus versions, maybe show a different message for old versions?
- }
- end;
-
-OnInit:
- .min_level = 30; // min level to do the quest
-
- .reward_exp = 2500;
-
- .quest = HurnscaldQuests_Inspector;
- .quest_debug = .quest;
- .sex = G_MALE;
- .distance = 3;
-
-////////// UNFINISHED //////////
-////////////////////////////////
-// REMOVE THIS CODE WHEN THIS //
-// NPC IS NO LONGER A WIP //////
-////////////////////////////////
-if (!debug) disablenpc(.name$);
-///////// UNFINISHED ///////////
-
- end;
-}
diff --git a/npc/placeholder/malek.txt b/npc/placeholder/malek.txt
deleted file mode 100644
index 219a059a..00000000
--- a/npc/placeholder/malek.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-// Evol scripts.
-// Author:
-// gumi
-// Quest states:
-// [1] 0 - cannot do the quest
-// [1] 1 - can do the quest
-// [1] 2 - talked to inspector (1) <= start
-// [1] 3 - talked to old woman (1)
-// [1] 4 - talked to old woman (2)
-// [1] 5 - talked to inspector (2)
-// [1] 6 - talked to troupe leader (1)
-// [1] 7 - talked to inspector (3)
-// [1] 8 - talked to old man
-// [1] 9 - talked to old woman (3)
-// [1] 10 - talked to inspector (4)
-// [1] 11 - talked to old woman (4)
-// [1] 12 - talked to malek
-// [1] 13 - searched the bookcase
-// [1] 14 - talked to inspector (5)
-// [1] 15 - talked to troupe leader (2) <= reward
-// [1] 16 - talked to inspector (6) <= reward, end
-// [2] unused
-// [3] unused
-// [t] unused
-// Description:
-// robberies in hurnscald
-
-008-1,233,42,0 script Malek NPC_HUMAN_M_ARTIS,{
-
- if (getq(.quest_inspector) == 11)
- {
- speech(4,
- l("Hi, can I help you at all?"));
-
- selectd(
- l("The inspector sent me here to investigate."));
-
- speech(4,
- l("Yeah, we did hear a commotion."),
- l("We thought we heard someone go down to the basement, but we checked the whole place over and didn't see anything out of the ordinary."));
-
- close2;
- setq(.quest_inspector, 12);
- end;
- }
-
- npctalk3(generic(32 | 256));
- end;
-
-OnInit:
- .quest_inspector = HurnscaldQuests_Inspector;
- .quest_debug = .quest_inspector;
- .sex = G_MALE;
- .distance = 3;
-
-////////// UNFINISHED //////////
-////////////////////////////////
-// REMOVE THIS CODE WHEN THIS //
-// NPC IS NO LONGER A WIP //////
-////////////////////////////////
-if (!debug) disablenpc(.name$);
-///////// UNFINISHED ///////////
-
- end;
-}
diff --git a/npc/placeholder/milly.txt b/npc/placeholder/milly.txt
deleted file mode 100644
index 03c39d42..00000000
--- a/npc/placeholder/milly.txt
+++ /dev/null
@@ -1,109 +0,0 @@
-// Evol scripts.
-// Author:
-// gumi
-// Quest states (inspector):
-// [1] 0 - cannot do the quest
-// [1] 1 - can do the quest
-// [1] 2 - talked to inspector (1) <= start
-// [1] 3 - talked to old woman (1)
-// [1] 4 - talked to old woman (2)
-// [1] 5 - talked to inspector (2)
-// [1] 6 - talked to troupe leader (1)
-// [1] 7 - talked to inspector (3)
-// [1] 8 - talked to old man
-// [1] 9 - talked to old woman (3)
-// [1] 10 - talked to inspector (4)
-// [1] 11 - talked to old woman (4)
-// [1] 12 - talked to malek
-// [1] 13 - searched the bookcase
-// [1] 14 - talked to inspector (5)
-// [1] 15 - talked to troupe leader (2) <= reward
-// [1] 16 - talked to inspector (6) <= reward, end
-// [2] unused
-// [3] unused
-// [t] unused
-// Description:
-// robberies in hurnscald
-
-008-1,282,112,0 script Milly NPC_HUMAN_M_ARTIS,{
-
- // TODO: make the actual beanie copter quest after those are finished:
- // [X] Inspector quest
- // [ ] Bone knife quest
- // [ ] Setzer quest
- // [ ] Rossy quest
- // [ ] Cindy quest
-
- .@q_inspector = getq(.quest_inspector);
-
- speech(4,
- l("Hello traveler, welcome to Hurnscald."),
- l("Have you met Kfahr yet?"),
- l("He is the greatest hero that ever walked the land of Hurnscald!"));
-
- selectd(
- l("Hi! No, I haven't seen him yet."),
- l("Where can I find him?"),
- l("Mh, I don't care for heroes."),
- l("Hello, yes I have met him."),
- rif(.@q_inspector == 2, l("Have you seen anything strange lately?")),
- rif(.@q_inspector == 2, l("Do you know anything about the recent robberies?")));
-
- switch (@menu)
- {
- case 3:
- speech(4,
- l("What?"),
- l("Surely you do not appreciate what a hero he is!"),
- l("Mh, or perhaps honor is dead in you; for you to be so slow to comprehend the good that his exploits have wrought for us."), // XXX: this sentence seems too complicated to come from a child's mouth
- l("Put on your thinking cap and be propelled into high adventure!"),
- l("Go to Kfahr, and listen to his stories."),
- l("You can't have met him."),
- l("No one who has met him would say such silly things."));
- // fallthrough
-
- case 1:
- speech(4,
- l("I highly recommend you seek him out!"));
- // fallthrough
-
- case 2:
- speech(
- l("He is a regular at the inn, located in the north-west part of town."),
- l("If you are lucky he might tell you a story about his adventures."));
- break;
-
- case 4:
- speech(
- l("Oh, I hope you stayed and listened to his stories about his adventures."));
- break;
-
- case 5:
- speech(
- l("I haven't seen anything strange."));
- break;
-
- case 6:
- speech(
- l("No, sorry."));
- break;
- }
-
- close;
-
-OnInit:
- .quest_inspector = HurnscaldQuests_Inspector;
- .quest_debug = .quest_inspector; // TODO: change this to the milly quest debug when it exists
- .sex = G_FEMALE;
- .distance = 3;
-
-////////// UNFINISHED //////////
-////////////////////////////////
-// REMOVE THIS CODE WHEN THIS //
-// NPC IS NO LONGER A WIP //////
-////////////////////////////////
-if (!debug) disablenpc(.name$);
-///////// UNFINISHED ///////////
-
- end;
-}
diff --git a/npc/placeholder/nicholas.txt b/npc/placeholder/nicholas.txt
deleted file mode 100644
index 17f44d19..00000000
--- a/npc/placeholder/nicholas.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-// Evol scripts.
-// Author:
-// gumi
-
-008-2-8,40,27,0 script Nicholas NPC_HUMAN_M_ARTIS,{
- speech(
- l("Hello, there!"),
- l("I'm an expert blacksmith."),
- l("If you get me some Coal and Iron Ingots, I could make you a very valuable shield or helmet."));
-
- // TODO: setzer quest
- close;
-
-OnInit:
- .distance = 3;
-
-////////// UNFINISHED //////////
-////////////////////////////////
-// REMOVE THIS CODE WHEN THIS //
-// NPC IS NO LONGER A WIP //////
-////////////////////////////////
-if (!debug) disablenpc(.name$);
-///////// UNFINISHED ///////////
-
- end;
-}
diff --git a/npc/placeholder/nurse.txt b/npc/placeholder/nurse.txt
deleted file mode 100644
index ee14cd9f..00000000
--- a/npc/placeholder/nurse.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-// Evol scripts.
-// Author:
-// gumi
-// Quest states:
-// [1] 0 - cannot do the quest
-// [1] 1 - can do the quest
-// [1] 2 - talked to inspector (1) <= start
-// [1] 3 - talked to old woman (1)
-// [1] 4 - talked to old woman (2)
-// [1] 5 - talked to inspector (2)
-// [1] 6 - talked to troupe leader (1)
-// [1] 7 - talked to inspector (3)
-// [1] 8 - talked to old man
-// [1] 9 - talked to old woman (3)
-// [1] 10 - talked to inspector (4)
-// [1] 11 - talked to old woman (4)
-// [1] 12 - talked to malek
-// [1] 13 - searched the bookcase
-// [1] 14 - talked to inspector (5)
-// [1] 15 - talked to troupe leader (2) <= reward
-// [1] 16 - talked to inspector (6) <= reward, end
-// [2] unused
-// [3] unused
-// [t] unused
-// Description:
-// robberies in hurnscald
-
-008-2-12,28,30,0 script Nurse NPC_HUMAN_M_ARTIS,{
-
- speech(4,
- l("How can I help you?"));
-
- // TODO: check for AxeHat when we get it
- // XXX: this npc used to teach the resist poison skill, do we still want that?
-
- selectd(
- l("Oooh, these wounds! They hurt so much!"),
- l("I don't feel so well, I might be sick."),
- l("No, I'm fine."),
- rif(getq(.quest_inspector) == 2, l("Have you seen anything out of the ordinary?")));
-
- switch (@menu)
- {
- case 1:
- if (BaseLevel > .heal_max_level)
- {
- speech(
- l("I'm sorry but I'm here only to help young people."), // XXX: this sounds cruel towards elderly people
- l("Your level is already higher than %d.", .heal_max_level),
- l("You can get some rest at the inn near here."));
- close;
- }
- speech(4,
- l("Here, let me heal you."));
-
- npcskill(AL_HEAL, .heal_skill_level, .heal_npc_stats, .heal_npc_level);
-
- speech(
- l("There you go, like new."));
- close;
- case 2:
- speech(
- l("Then you should better see the doctor."),
- l("He is usually in his office on the 3rd floor."));
- close;
- case 3:
- speech(
- l("Then I would ask you to leave."),
- l("There are people who really need our help."));
- close;
- case 4:
- speech(
- l("I'm too busy here to observe the town."));
- close;
- }
-
-
- end;
-
-OnInit:
- .heal_max_level = 20; // she will only heal low level players
-
- .heal_skill_level = 10; // what level of the healing skill to use
- .heal_npc_stats = 99; // what stat points the NPC has
- .heal_npc_level = 60; // what level the npc has
-
- .quest_inspector = HurnscaldQuests_Inspector;
- .quest_debug = .quest_inspector;
- .sex = G_FEMALE;
- .distance = 3;
-
-////////// UNFINISHED //////////
-////////////////////////////////
-// REMOVE THIS CODE WHEN THIS //
-// NPC IS NO LONGER A WIP //////
-////////////////////////////////
-if (!debug) disablenpc(.name$);
-///////// UNFINISHED ///////////
-
- end;
-}
diff --git a/npc/scripts.conf b/npc/scripts.conf
index a5ed16ba..91d5b218 100644
--- a/npc/scripts.conf
+++ b/npc/scripts.conf
@@ -116,26 +116,6 @@
"npc/config/hairstyle_config.txt",
// placeholder scripts
-"npc/placeholder/hinnak.txt",
-"npc/placeholder/mikhail.txt",
-"npc/placeholder/bernard.txt",
-"npc/placeholder/ledmitz.txt",
-"npc/placeholder/jack.txt",
-"npc/placeholder/inspector.txt",
-"npc/placeholder/alan.txt",
-"npc/placeholder/troupe-leader.txt",
-"npc/placeholder/old-man.txt",
-"npc/placeholder/old-woman.txt",
-"npc/placeholder/books.txt",
-"npc/placeholder/malek.txt",
-"npc/placeholder/milly.txt",
-"npc/placeholder/sabine.txt",
-"npc/placeholder/doctor.txt",
-"npc/placeholder/nurse.txt",
-"npc/placeholder/soul-menhir.txt",
-"npc/placeholder/note.txt",
-"npc/placeholder/macgowan.txt",
-"npc/placeholder/nicholas.txt",
//"npc/placeholder/angus.txt",
//"npc/placeholder/caul.txt",
//"npc/placeholder/receptionist.txt",