diff options
-rw-r--r-- | db/constants.conf | 5 | ||||
-rw-r--r-- | db/re/item_db.conf | 81 | ||||
-rw-r--r-- | maps/re/008-1.mcache | bin | 6866 -> 6870 bytes | |||
-rw-r--r-- | npc/001-1/_import.txt | 1 | ||||
-rw-r--r-- | npc/001-3-0/_import.txt | 1 | ||||
-rw-r--r-- | npc/008-1/_import.txt | 8 | ||||
-rw-r--r-- | npc/008-1/hinnak.txt | 4 | ||||
-rw-r--r-- | npc/008-1/jack.txt (renamed from npc/placeholder/jack.txt) | 11 | ||||
-rw-r--r-- | npc/008-1/lady.txt | 20 | ||||
-rw-r--r-- | npc/008-1/lumberjack.txt | 19 | ||||
-rw-r--r-- | npc/008-1/mikhail.txt (renamed from npc/placeholder/mikhail.txt) | 8 | ||||
-rw-r--r-- | npc/008-1/milly.txt | 108 | ||||
-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.txt | 188 | ||||
-rw-r--r-- | npc/008-2-12/nurse.txt | 101 | ||||
-rw-r--r-- | npc/008-2-14/doctor.txt | 80 | ||||
-rw-r--r-- | npc/008-2-18/malik.txt | 64 | ||||
-rw-r--r-- | npc/008-2-19/_import.txt | 1 | ||||
-rw-r--r-- | npc/008-2-19/books.txt (renamed from npc/placeholder/books.txt) | 2 | ||||
-rw-r--r-- | npc/008-2-2/_import.txt | 4 | ||||
-rw-r--r-- | npc/008-2-2/ledmitz.txt (renamed from npc/placeholder/ledmitz.txt) | 8 | ||||
-rw-r--r-- | npc/008-2-2/micksha.txt | 20 | ||||
-rw-r--r-- | npc/008-2-2/note.txt (renamed from npc/placeholder/note.txt) | 2 | ||||
-rw-r--r-- | npc/008-2-2/roamingo.txt | 20 | ||||
-rw-r--r-- | npc/008-2-24/_import.txt | 1 | ||||
-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.txt | 1 | ||||
-rw-r--r-- | npc/008-2-4/bernard.txt (renamed from npc/placeholder/bernard.txt) | 12 | ||||
-rw-r--r-- | npc/008-2-6/alan.txt | 299 | ||||
-rw-r--r-- | npc/008-2-8/_import.txt | 2 | ||||
-rw-r--r-- | npc/008-2-8/apprentice.txt | 20 | ||||
-rw-r--r-- | npc/008-2-8/macgowan.txt (renamed from npc/placeholder/macgowan.txt) | 9 | ||||
-rw-r--r-- | npc/008-2-8/nicholas.txt | 25 | ||||
-rw-r--r-- | npc/placeholder/alan.txt | 323 | ||||
-rw-r--r-- | npc/placeholder/doctor.txt | 80 | ||||
-rw-r--r-- | npc/placeholder/hinnak.txt | 352 | ||||
-rw-r--r-- | npc/placeholder/inspector.txt | 190 | ||||
-rw-r--r-- | npc/placeholder/malek.txt | 65 | ||||
-rw-r--r-- | npc/placeholder/milly.txt | 109 | ||||
-rw-r--r-- | npc/placeholder/nicholas.txt | 26 | ||||
-rw-r--r-- | npc/placeholder/nurse.txt | 101 | ||||
-rw-r--r-- | npc/scripts.conf | 20 |
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 Binary files differindex e8534b08..8672702d 100644 --- a/maps/re/008-1.mcache +++ b/maps/re/008-1.mcache 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", |