From 9d1232b57d036a40065341cc89fddd6e7a786000 Mon Sep 17 00:00:00 2001 From: Ovenbread Date: Fri, 7 Nov 2025 23:39:45 -0800 Subject: [PATCH 1/8] initial commit for fenky --- scripts/general/configs/quest.constant | 1 + scripts/quests/quest_fenk/configs/quest_fenk.constant | 2 ++ scripts/quests/quest_fenk/configs/quest_fenk.obj | 1 + scripts/quests/quest_fenk/configs/quest_fenk.varp | 2 ++ scripts/quests/quest_fenk/scripts/quest_fenk.rs2 | 5 +++++ 5 files changed, 11 insertions(+) create mode 100644 scripts/quests/quest_fenk/configs/quest_fenk.constant create mode 100644 scripts/quests/quest_fenk/configs/quest_fenk.obj create mode 100644 scripts/quests/quest_fenk/configs/quest_fenk.varp create mode 100644 scripts/quests/quest_fenk/scripts/quest_fenk.rs2 diff --git a/scripts/general/configs/quest.constant b/scripts/general/configs/quest.constant index 1546048aa8..651f6dc400 100644 --- a/scripts/general/configs/quest.constant +++ b/scripts/general/configs/quest.constant @@ -106,3 +106,4 @@ ^death_questpoints = 1 ^golem_questpoints = 1 +^fenk_questpoints = 1 diff --git a/scripts/quests/quest_fenk/configs/quest_fenk.constant b/scripts/quests/quest_fenk/configs/quest_fenk.constant new file mode 100644 index 0000000000..02c10d30fc --- /dev/null +++ b/scripts/quests/quest_fenk/configs/quest_fenk.constant @@ -0,0 +1,2 @@ +^fenk_not_started = 0 +^fenk_started = 1 diff --git a/scripts/quests/quest_fenk/configs/quest_fenk.obj b/scripts/quests/quest_fenk/configs/quest_fenk.obj new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/scripts/quests/quest_fenk/configs/quest_fenk.obj @@ -0,0 +1 @@ + diff --git a/scripts/quests/quest_fenk/configs/quest_fenk.varp b/scripts/quests/quest_fenk/configs/quest_fenk.varp new file mode 100644 index 0000000000..751a4776b5 --- /dev/null +++ b/scripts/quests/quest_fenk/configs/quest_fenk.varp @@ -0,0 +1,2 @@ +[imp] +scope=perm diff --git a/scripts/quests/quest_fenk/scripts/quest_fenk.rs2 b/scripts/quests/quest_fenk/scripts/quest_fenk.rs2 new file mode 100644 index 0000000000..12c80eec84 --- /dev/null +++ b/scripts/quests/quest_fenk/scripts/quest_fenk.rs2 @@ -0,0 +1,5 @@ +[queue,fenk_quest_complete] +%imp = ^fenk_complete; +stat_advance(magic, 8750); +session_log(^log_adventure, "Quest complete: Creature of Fenkenstrain"); +~send_quest_complete(questlist:imp, amulet_of_accuracy, 200, ^imp_questpoints, "You have completed the Creature of Fenkenstrain Quest!", "875 Magic XP|Amulet of Accuracy"); From e0b204ec79e8302003afbb41d7c741f180ade8ea Mon Sep 17 00:00:00 2001 From: Ovenbread Date: Sat, 8 Nov 2025 23:42:05 -0800 Subject: [PATCH 2/8] finishquestjournal --- scripts/_unpack/377/all.varp | 3 - scripts/general/configs/quest.constant | 1 + .../quests/quest_fenk/configs/fenk.constant | 10 +++ scripts/quests/quest_fenk/configs/fenk.loc | 0 .../configs/{quest_fenk.obj => fenk.obj} | 0 scripts/quests/quest_fenk/configs/fenk.varp | 3 + .../quest_fenk/configs/quest_fenk.constant | 2 - .../quests/quest_fenk/configs/quest_fenk.varp | 2 - scripts/quests/quest_fenk/scripts/fenk.rs2 | 14 ++++ .../quest_fenk/scripts/fenk_fenkenstrain.rs2 | 16 +++++ .../quest_fenk/scripts/fenk_journal.rs2 | 69 +++++++++++++++++++ .../quests/quest_fenk/scripts/quest_fenk.rs2 | 5 -- 12 files changed, 113 insertions(+), 12 deletions(-) create mode 100644 scripts/quests/quest_fenk/configs/fenk.constant create mode 100644 scripts/quests/quest_fenk/configs/fenk.loc rename scripts/quests/quest_fenk/configs/{quest_fenk.obj => fenk.obj} (100%) create mode 100644 scripts/quests/quest_fenk/configs/fenk.varp delete mode 100644 scripts/quests/quest_fenk/configs/quest_fenk.constant delete mode 100644 scripts/quests/quest_fenk/configs/quest_fenk.varp create mode 100644 scripts/quests/quest_fenk/scripts/fenk.rs2 create mode 100644 scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 create mode 100644 scripts/quests/quest_fenk/scripts/fenk_journal.rs2 delete mode 100644 scripts/quests/quest_fenk/scripts/quest_fenk.rs2 diff --git a/scripts/_unpack/377/all.varp b/scripts/_unpack/377/all.varp index 0d856e7d2c..5b16198ac6 100644 --- a/scripts/_unpack/377/all.varp +++ b/scripts/_unpack/377/all.varp @@ -826,9 +826,6 @@ transmit=yes [varp_398] -[fenk_quest] -transmit=yes - [fenk_flags] transmit=yes diff --git a/scripts/general/configs/quest.constant b/scripts/general/configs/quest.constant index 651f6dc400..f4c38ff798 100644 --- a/scripts/general/configs/quest.constant +++ b/scripts/general/configs/quest.constant @@ -49,6 +49,7 @@ ^priestperil_complete = 60 ^death_complete = 80 ^golem_complete = 10 +^fenk_complete = 9 ^blackarmgang_questpoints = 1 ^blackknight_questpoints = 3 diff --git a/scripts/quests/quest_fenk/configs/fenk.constant b/scripts/quests/quest_fenk/configs/fenk.constant new file mode 100644 index 0000000000..373fcccf5f --- /dev/null +++ b/scripts/quests/quest_fenk/configs/fenk.constant @@ -0,0 +1,10 @@ +^fenk_not_started = 0 +^fenk_started = 1 +^fenk_spoke_intro = 2 +^fenk_unlock_dungeon = 3 +^fenk_brough_bodyparts = 4 +^fenk_brought_needle_threads = 5 +^fenk_repaired_lightning_conductor = 6 +^fenk_spoke_again = 7 +^fenk_creature_convince = 8 + diff --git a/scripts/quests/quest_fenk/configs/fenk.loc b/scripts/quests/quest_fenk/configs/fenk.loc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/scripts/quests/quest_fenk/configs/quest_fenk.obj b/scripts/quests/quest_fenk/configs/fenk.obj similarity index 100% rename from scripts/quests/quest_fenk/configs/quest_fenk.obj rename to scripts/quests/quest_fenk/configs/fenk.obj diff --git a/scripts/quests/quest_fenk/configs/fenk.varp b/scripts/quests/quest_fenk/configs/fenk.varp new file mode 100644 index 0000000000..117a668d17 --- /dev/null +++ b/scripts/quests/quest_fenk/configs/fenk.varp @@ -0,0 +1,3 @@ +[fenk_quest] +transmit=yes +scope=perm diff --git a/scripts/quests/quest_fenk/configs/quest_fenk.constant b/scripts/quests/quest_fenk/configs/quest_fenk.constant deleted file mode 100644 index 02c10d30fc..0000000000 --- a/scripts/quests/quest_fenk/configs/quest_fenk.constant +++ /dev/null @@ -1,2 +0,0 @@ -^fenk_not_started = 0 -^fenk_started = 1 diff --git a/scripts/quests/quest_fenk/configs/quest_fenk.varp b/scripts/quests/quest_fenk/configs/quest_fenk.varp deleted file mode 100644 index 751a4776b5..0000000000 --- a/scripts/quests/quest_fenk/configs/quest_fenk.varp +++ /dev/null @@ -1,2 +0,0 @@ -[imp] -scope=perm diff --git a/scripts/quests/quest_fenk/scripts/fenk.rs2 b/scripts/quests/quest_fenk/scripts/fenk.rs2 new file mode 100644 index 0000000000..70661fe2aa --- /dev/null +++ b/scripts/quests/quest_fenk/scripts/fenk.rs2 @@ -0,0 +1,14 @@ +[oploc1,fenk_signpost] +if(%fenk_quest < ^fenk_complete) { + ~mesbox("The signpost has a note pinned onto it. The note says:|'---- Braindead Butler Wanted ----|Gravedigging skills essential - Hunchback advantageous|See Dr Fenkenstrain at the castle NE of Canifis'"); + %fenk_quest = ^fenk_started; +} else { + ~mesbox("The signpost has a note pinned onto it. The note says:|'AAARRGGGHHHHH!!!!!'"); +} + +[oploc1,fenk_door_mirror]@open_fenk_doors(^left); +[oploc1,fenk_door]@open_fenk_doors(^right); + +[label,open_fenk_doors](int $side) +def_boolean $entering = ~check_axis(coord, loc_coord, loc_angle); +~open_and_close_double_door2($entering, $side, door_open); \ No newline at end of file diff --git a/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 b/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 new file mode 100644 index 0000000000..a905714e07 --- /dev/null +++ b/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 @@ -0,0 +1,16 @@ +[opnpc1,fenk_fenkenstrain] +switch_int(%fenk_quest) { + case ^fenk_not_started : + ~chatnpc("Have you come to apply for the job?"); + ~chatplayer("What job?"); + ~chatnpc("I've posted a note on the signpost in Canifis about it. Go take a look at it first."); + case ^fenk_started : + ~chatnpc("Have you come to apply for the job?"); + @multi2("Yes", fenkenstrain_start, "No", fenkenstrain_end); +} + +[label,fenkenstrain_end] +// end it. + +[label,fenkenstrain_start] +~chatplayer("Yes, if it pays well."); \ No newline at end of file diff --git a/scripts/quests/quest_fenk/scripts/fenk_journal.rs2 b/scripts/quests/quest_fenk/scripts/fenk_journal.rs2 new file mode 100644 index 0000000000..18f2a8b2b6 --- /dev/null +++ b/scripts/quests/quest_fenk/scripts/fenk_journal.rs2 @@ -0,0 +1,69 @@ +[if_button,questlist:creatureoffenkenstrain] +def_string $text; + +if(%fenk_quest = ^fenk_not_started) { + $text = "@dbl@I can start this quest by reading the signpost in the|@dbl@centre of @dre@Canifis@dbl@."; +} else { + $text = append($text, "@str@I read the signpost in Canifis, which tells of a butler|"); + $text = append($text, "@str@position that is available at the castle to the northeast.|"); + if (%fenk_quest >= 2) { + $text = append($text, "@str@I spoke to Fenkenstrain, who wanted me to find him some|"); + $text = append($text, "@str@body parts so that he could build a creature.|"); + } else if (%fenk_quest >= 1) { + $text = append($text, "@dbl@I should go up to the castle and speak to @dre@Dr Fenkenstrain@dbl@|"); + } + if (%fenk_quest >= 3) { + $text = append($text, "@str@I gave a torso, some arms and legs, and a head to|"); + $text = append($text, "@str@Fenkenstrain, who then wanted a needle and 5 lots of|"); + $text = append($text, "@str@thread, so that he could sew the bodyparts together and|"); + $text = append($text, "@str@create his creature.|"); + } else if (%fenk_quest >= 2) { + $text = append($text, "|@dbl@I need to find these body parts for @dre@Fenkenstrain@dbl@:|"); + $text = append($text, "@dbl@a pair of @dre@arms@dbl@|"); + $text = append($text, "@dbl@a pair legs @dre@legs@dbl@|"); + $text = append($text, "@dbl@a @dre@torso@dbl@|"); + $text = append($text, "@dbl@a @dre@head@dbl@|"); + $text = append($text, "|@dbl@Apparently the soil of @dre@Morytania@dbl@ has a unique quality|"); + $text = append($text, "@dbl@which preserves the bodies of the dead better than|"); + $text = append($text, "@dbl@elsewhere, so perhaps I should look at the graves in the|"); + $text = append($text, "@dbl@local area|"); + } + if (%fenk_quest >= 4) { + $text = append($text, "@str@I brought Fenkenstrain a needle and 5 quantities of|"); + $text = append($text, "@str@thread.|"); + } else if (%fenk_quest >= 3) { + $text = append($text, "@dbl@I need to bring @dre@Fenkenstrain@dbl@ a @dre@needle@dbl@ and @dre@5 quantities@dbl@|"); + $text = append($text, "@dbl@@dre@of thread@dbl@.|"); + } + if (%fenk_quest >= 5) { + $text = append($text, "@str@I repaired the lightning conductor, and Fenkenstrain|"); + $text = append($text, "@str@brought the Creature to life.|"); + } else if (%fenk_quest >= 4) { + $text = append($text, "@dbl@@dre@Fenkenstrain@dbl@ has ordered me to repair the lightning|"); + $text = append($text, "@dbl@conductor.|"); + } + if (%fenk_quest = 5) { + $text = append($text, "@dre@Fenkenstrain@dbl@ wants to talk to me.||"); + } + if (%fenk_quest >= 7) { + $text = append($text, "@str@The Creature went on a rampage, and Fenkenstrain sent|"); + $text = append($text, "@str@me up to the Tower to destroy it.|"); + $text = append($text, "@str@The Creature convinced me to stop Fenkenstrain's|"); + $text = append($text, "@str@experiments once and for all, and has told me the true|"); + $text = append($text, "@str@history of Fenkenstrain's treachery.|"); + } else if (%fenk_quest >= 6) { + $text = append($text, "@dbl@The @dre@Creature@dbl@ went on a rampage, and @dre@Fenkenstrain@dbl@ wants|"); + $text = append($text, "@dbl@me to go up the @dre@Tower@dbl@ to destroy it.|"); + } + if (%fenk_quest >= 8) { + $text = append($text, "@str@I stole Fenkenstrain's Ring of Charos, and he released|"); + $text = append($text, "@str@me from his service.|"); + } else if (%fenk_quest >= 7) { + $text = append($text, "@dbl@I must find a way to stop Fenkenstrain's experiments.|"); + } + if (%fenk_quest >= 9) { + $text = append($text, "@red@QUEST COMPLETE!"); + } +} + +~quest_journal("Creature of Fenkenstrain", $text); \ No newline at end of file diff --git a/scripts/quests/quest_fenk/scripts/quest_fenk.rs2 b/scripts/quests/quest_fenk/scripts/quest_fenk.rs2 deleted file mode 100644 index 12c80eec84..0000000000 --- a/scripts/quests/quest_fenk/scripts/quest_fenk.rs2 +++ /dev/null @@ -1,5 +0,0 @@ -[queue,fenk_quest_complete] -%imp = ^fenk_complete; -stat_advance(magic, 8750); -session_log(^log_adventure, "Quest complete: Creature of Fenkenstrain"); -~send_quest_complete(questlist:imp, amulet_of_accuracy, 200, ^imp_questpoints, "You have completed the Creature of Fenkenstrain Quest!", "875 Magic XP|Amulet of Accuracy"); From e453927aecb94b1ae63a24cc5998ab36552620e2 Mon Sep 17 00:00:00 2001 From: Ovenbread Date: Sun, 9 Nov 2025 11:34:18 -0800 Subject: [PATCH 3/8] add double doors and stair tele --- scripts/_unpack/377/all.loc | 34 ------------------ scripts/ladders+stairs/scripts/stairs.rs2 | 10 ++---- scripts/quests/quest_fenk/configs/fenk.loc | 42 ++++++++++++++++++++++ scripts/quests/quest_fenk/scripts/fenk.rs2 | 15 ++++---- 4 files changed, 53 insertions(+), 48 deletions(-) diff --git a/scripts/_unpack/377/all.loc b/scripts/_unpack/377/all.loc index 5227b7cd29..9a1baf8894 100644 --- a/scripts/_unpack/377/all.loc +++ b/scripts/_unpack/377/all.loc @@ -39550,14 +39550,6 @@ multiloc=6,fenk_table multiloc=7,fenk_table multiloc=8,fenk_table -[fenk_door] -name=Door -desc=Looks wooden. Feels wooden. I wonder is it wooden? -model=loc_4487 -hillskew=yes -ambient=20 -op1=Open - [fenk_door_arch] model=loc_4488 hillskew=yes @@ -39575,32 +39567,6 @@ blockwalk=no mirror=yes active=no -[fenk_door_mirror] -name=Door -desc=Looks wooden. Feels wooden. I wonder is it wooden? -model=loc_4487 -hillskew=yes -ambient=20 -mirror=yes -op1=Open - -[fenk_door_open] -name=Door -desc=Looks wooden. Feels wooden. I wonder is it wooden? -model=loc_4487 -hillskew=yes -ambient=20 -op1=Close - -[fenk_door_open_mirror] -name=Door -desc=Looks wooden. Feels wooden. I wonder is it wooden? -model=loc_4487 -hillskew=yes -ambient=20 -mirror=yes -op1=Close - [fenk_skewsteps] model=skewsteps1 recol1s=15855 diff --git a/scripts/ladders+stairs/scripts/stairs.rs2 b/scripts/ladders+stairs/scripts/stairs.rs2 index 77fffb83b4..1046e005ef 100644 --- a/scripts/ladders+stairs/scripts/stairs.rs2 +++ b/scripts/ladders+stairs/scripts/stairs.rs2 @@ -789,16 +789,10 @@ switch_coord (loc_coord) { } [oploc1,fenk_stairs_lv1] -// arrive delay? -switch_coord (loc_coord) { - case default : @unhandled_stairs(loc_coord); -} +p_telejump(movecoord(coord, 0, 1, 4)); [oploc1,fenk_stairs_lv1_top] -// arrive delay? -switch_coord (loc_coord) { - case default : @unhandled_stairs(loc_coord); -} +p_telejump(movecoord(coord, 0, -1, -4)); [oploc1,ahoy_cavern_stairs] // arrive delay? diff --git a/scripts/quests/quest_fenk/configs/fenk.loc b/scripts/quests/quest_fenk/configs/fenk.loc index e69de29bb2..9dfc1d9407 100644 --- a/scripts/quests/quest_fenk/configs/fenk.loc +++ b/scripts/quests/quest_fenk/configs/fenk.loc @@ -0,0 +1,42 @@ +[fenk_door] +name=Door +desc=Looks wooden. Feels wooden. I wonder is it wooden? +model=loc_4487 +hillskew=yes +ambient=20 +op1=Open +category=door_left_closed +param=next_loc_stage,fenk_door_open + +[fenk_door_mirror] +name=Door +desc=Looks wooden. Feels wooden. I wonder is it wooden? +model=loc_4487 +hillskew=yes +ambient=20 +mirror=yes +op1=Open +category=door_right_closed +param=next_loc_stage,fenk_door_open_mirror + +[fenk_door_open] +name=Door +desc=Looks wooden. Feels wooden. I wonder is it wooden? +model=loc_4487 +hillskew=yes +ambient=20 +op1=Close +category=door_left_opened +param=next_loc_stage,fenk_door + + +[fenk_door_open_mirror] +name=Door +desc=Looks wooden. Feels wooden. I wonder is it wooden? +model=loc_4487 +hillskew=yes +ambient=20 +mirror=yes +op1=Close +category=door_right_opened +param=next_loc_stage,fenk_door_mirror diff --git a/scripts/quests/quest_fenk/scripts/fenk.rs2 b/scripts/quests/quest_fenk/scripts/fenk.rs2 index 70661fe2aa..8497b74939 100644 --- a/scripts/quests/quest_fenk/scripts/fenk.rs2 +++ b/scripts/quests/quest_fenk/scripts/fenk.rs2 @@ -1,3 +1,4 @@ +// Signpost [oploc1,fenk_signpost] if(%fenk_quest < ^fenk_complete) { ~mesbox("The signpost has a note pinned onto it. The note says:|'---- Braindead Butler Wanted ----|Gravedigging skills essential - Hunchback advantageous|See Dr Fenkenstrain at the castle NE of Canifis'"); @@ -6,9 +7,11 @@ if(%fenk_quest < ^fenk_complete) { ~mesbox("The signpost has a note pinned onto it. The note says:|'AAARRGGGHHHHH!!!!!'"); } -[oploc1,fenk_door_mirror]@open_fenk_doors(^left); -[oploc1,fenk_door]@open_fenk_doors(^right); - -[label,open_fenk_doors](int $side) -def_boolean $entering = ~check_axis(coord, loc_coord, loc_angle); -~open_and_close_double_door2($entering, $side, door_open); \ No newline at end of file +// Tower Door +[oploc1,fenk_tower_door] +if(%fenk_quest < ^fenk_complete) { + ~mesbox("The signpost has a note pinned onto it. The note says:|'---- Braindead Butler Wanted ----|Gravedigging skills essential - Hunchback advantageous|See Dr Fenkenstrain at the castle NE of Canifis'"); + +} else { + ~mesbox("The signpost has a note pinned onto it. The note says:|'AAARRGGGHHHHH!!!!!'"); +} \ No newline at end of file From 641a539d5d0daaa635668dd44a9a62deb222434a Mon Sep 17 00:00:00 2001 From: Ovenbread Date: Sun, 9 Nov 2025 23:15:29 -0800 Subject: [PATCH 4/8] Added dialogue for fenk and update journal to match stages --- scripts/general/configs/quest.constant | 2 +- .../quests/quest_fenk/configs/fenk.constant | 13 ++-- scripts/quests/quest_fenk/scripts/fenk.rs2 | 10 ++- .../quest_fenk/scripts/fenk_fenkenstrain.rs2 | 74 ++++++++++++++++++- .../quest_fenk/scripts/fenk_journal.rs2 | 8 +- 5 files changed, 90 insertions(+), 17 deletions(-) diff --git a/scripts/general/configs/quest.constant b/scripts/general/configs/quest.constant index f4c38ff798..0ec92c2e8b 100644 --- a/scripts/general/configs/quest.constant +++ b/scripts/general/configs/quest.constant @@ -49,7 +49,7 @@ ^priestperil_complete = 60 ^death_complete = 80 ^golem_complete = 10 -^fenk_complete = 9 +^fenk_complete = 8 ^blackarmgang_questpoints = 1 ^blackknight_questpoints = 3 diff --git a/scripts/quests/quest_fenk/configs/fenk.constant b/scripts/quests/quest_fenk/configs/fenk.constant index 373fcccf5f..88e8fe3878 100644 --- a/scripts/quests/quest_fenk/configs/fenk.constant +++ b/scripts/quests/quest_fenk/configs/fenk.constant @@ -1,10 +1,9 @@ ^fenk_not_started = 0 ^fenk_started = 1 -^fenk_spoke_intro = 2 -^fenk_unlock_dungeon = 3 -^fenk_brough_bodyparts = 4 -^fenk_brought_needle_threads = 5 -^fenk_repaired_lightning_conductor = 6 -^fenk_spoke_again = 7 -^fenk_creature_convince = 8 +^fenk_passed_interview = 2 +^fenk_brough_bodyparts = 3 +^fenk_brought_needle_threads = 4 +^fenk_repaired_lightning_conductor = 5 +^fenk_spoke_again = 6 +^fenk_creature_convince = 7 diff --git a/scripts/quests/quest_fenk/scripts/fenk.rs2 b/scripts/quests/quest_fenk/scripts/fenk.rs2 index 8497b74939..2d7dbaab62 100644 --- a/scripts/quests/quest_fenk/scripts/fenk.rs2 +++ b/scripts/quests/quest_fenk/scripts/fenk.rs2 @@ -1,7 +1,11 @@ // Signpost [oploc1,fenk_signpost] -if(%fenk_quest < ^fenk_complete) { + +if (%fenk_quest < ^fenk_not_started) { ~mesbox("The signpost has a note pinned onto it. The note says:|'---- Braindead Butler Wanted ----|Gravedigging skills essential - Hunchback advantageous|See Dr Fenkenstrain at the castle NE of Canifis'"); +}else if(%fenk_quest < ^fenk_complete) { + // youtu.be/CVq0ooYzxJY + ~mesbox("The signpost has a note pinned onto it. The note says:|'---- Braindead Butler Position Filled ----|****No Further Applicants Please****'"); %fenk_quest = ^fenk_started; } else { ~mesbox("The signpost has a note pinned onto it. The note says:|'AAARRGGGHHHHH!!!!!'"); @@ -14,4 +18,6 @@ if(%fenk_quest < ^fenk_complete) { } else { ~mesbox("The signpost has a note pinned onto it. The note says:|'AAARRGGGHHHHH!!!!!'"); -} \ No newline at end of file +} + +[opnpcu,fenk_fenkenstrain] diff --git a/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 b/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 index a905714e07..72b380d593 100644 --- a/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 +++ b/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 @@ -6,11 +6,79 @@ switch_int(%fenk_quest) { ~chatnpc("I've posted a note on the signpost in Canifis about it. Go take a look at it first."); case ^fenk_started : ~chatnpc("Have you come to apply for the job?"); - @multi2("Yes", fenkenstrain_start, "No", fenkenstrain_end); + @multi2("Yes.", fenkenstrain_start, "No.", fenkenstrain_end); + case ^fenk_passed_interview : + @multi5( + "Do you know where I could find body parts?", fenkenstrain_bodyparts, + "Remind me what you want me to do.", fenkenstrain_remind_me, + "Why are you trying to make this creature?", fenkenstrain_why_creature, + "Will this creature put me out of a job?", fenkenstrain_out_of_job, + "I must get back to work, sir.", fenkenstrain_get_back_to_work + ); } +// fenk_started + [label,fenkenstrain_end] -// end it. +~chatplayer("No thanks, I wouldn't work here if you paid me."); +~chatnpc("Charming."); [label,fenkenstrain_start] -~chatplayer("Yes, if it pays well."); \ No newline at end of file +~chatplayer("Yes, if it pays well."); +~chatnpc("I'll have to ask you some questions first."); +~chatplayer("Okay..."); +~chatnpc("How would you describe yourself in one word?"); +@multi4("Stunning", fenkenstrain_failed, "Awe-inspiring", fenkenstrain_failed, "Breathtaking", fenkenstrain_failed, "Braindead", fenkenstrain_second); + +[label,fenkenstrain_second] +~chatnpc("Mmmm, I see."); +~chatnpc("Just one more question. What would you say is your greatest skill?"); +@multi4("Combat", fenkenstrain_failed, "Magic", fenkenstrain_failed, "Cooking", fenkenstrain_failed, "Grave-digging", fenkenstrain_passed); + +[label,fenkenstrain_failed] +~chatnpc("Looks like you're not the for the job."); + +[label,fenkenstrain_passed] +~chatnpc("Mmmm, I see."); +~chatnpc("Looks like you're just the for the job! Welcome aboard!"); +%fenk_quest = ^fenk_passed_interview; +~chatplayer("Is there anything you'd like me to do for you, sir?"); +~chatnpc("Yes, there is. You're highly skilled at grave-digging, yes?"); +~chatplayer("Err...yes, that's what I said."); +~chatnpc("Excellent. Now listen carefully."); +~chatnpc("I need you to find some...stuff...for me."); +~chatplayer("Stuff?"); +~chatnpc("That's what I said...stuff."); +~chatplayer("What kind of stuff?"); +~chatnpc("Well...dead stuff."); +~chatplayer("Go on..."); +~chatnpc("I need you to get me enough dead body parts for me to stitch together a complete body, which I plan to bring to life."); +~chatplayer("Right...okay...if you insist."); + +// fenk_passed_interview + +[label,fenkenstrain_bodyparts] +~chatplayer("Do you know where I could find body parts?"); +~chatnpc("The soil of Morytania is unique in its ability to preserve the bodies of the dead, which is one reason why I have chosen to carry out my experiments here."); +~chatnpc("I recommend digging up some graves in the local area. To the south-east you will find the Haunted Woods; I believe there are many graves there."); +~chatnpc("There is also a mausoleum on an island west of this castle. I expect the bodies that are buried there to be extremely well preserved, as they were wealthy in life."); + +[label,fenkenstrain_remind_me] +~chatplayer("What do you want me to do, again?"); +~chatnpc("I need you to get me enough dead body parts for me to stitch together a complete body, which I plan to bring to life."); +~chatplayer("Right...okay...if you insist."); + +[label,fenkenstrain_why_creature] +~chatplayer("Why do you want to make a creature?"); +~chatnpc("I came to the land of Morytania many years ago, to find a safe sanctuary for my experiments. This abandoned castle suited my purposes exactly."); +~chatplayer("What were you experimenting in?"); +~chatnpc("Oh, perfectly innocent experiments - for the good of mankind."); +~chatplayer("Then why did you need to come to Morytania?"); +~chatnpc("Enough questions, now. Get back to your work."); + +[label,fenkenstrain_out_of_job] +~chatplayer("Will this creature put me out of a job?"); +~chatnpc("No, my friend. I have a very special purpose in mind for this creature."); + +[label,fenkenstrain_get_back_to_work] +~chatplayer("I must get back to work, sir."); \ No newline at end of file diff --git a/scripts/quests/quest_fenk/scripts/fenk_journal.rs2 b/scripts/quests/quest_fenk/scripts/fenk_journal.rs2 index 18f2a8b2b6..423ff04f2a 100644 --- a/scripts/quests/quest_fenk/scripts/fenk_journal.rs2 +++ b/scripts/quests/quest_fenk/scripts/fenk_journal.rs2 @@ -6,7 +6,7 @@ if(%fenk_quest = ^fenk_not_started) { } else { $text = append($text, "@str@I read the signpost in Canifis, which tells of a butler|"); $text = append($text, "@str@position that is available at the castle to the northeast.|"); - if (%fenk_quest >= 2) { + if (%fenk_quest >= ^fenk_passed_interview) { $text = append($text, "@str@I spoke to Fenkenstrain, who wanted me to find him some|"); $text = append($text, "@str@body parts so that he could build a creature.|"); } else if (%fenk_quest >= 1) { @@ -17,7 +17,7 @@ if(%fenk_quest = ^fenk_not_started) { $text = append($text, "@str@Fenkenstrain, who then wanted a needle and 5 lots of|"); $text = append($text, "@str@thread, so that he could sew the bodyparts together and|"); $text = append($text, "@str@create his creature.|"); - } else if (%fenk_quest >= 2) { + } else if (%fenk_quest >= ^fenk_passed_interview) { $text = append($text, "|@dbl@I need to find these body parts for @dre@Fenkenstrain@dbl@:|"); $text = append($text, "@dbl@a pair of @dre@arms@dbl@|"); $text = append($text, "@dbl@a pair legs @dre@legs@dbl@|"); @@ -55,13 +55,13 @@ if(%fenk_quest = ^fenk_not_started) { $text = append($text, "@dbl@The @dre@Creature@dbl@ went on a rampage, and @dre@Fenkenstrain@dbl@ wants|"); $text = append($text, "@dbl@me to go up the @dre@Tower@dbl@ to destroy it.|"); } - if (%fenk_quest >= 8) { + if (%fenk_quest >= ^fenk_complete) { $text = append($text, "@str@I stole Fenkenstrain's Ring of Charos, and he released|"); $text = append($text, "@str@me from his service.|"); } else if (%fenk_quest >= 7) { $text = append($text, "@dbl@I must find a way to stop Fenkenstrain's experiments.|"); } - if (%fenk_quest >= 9) { + if (%fenk_quest >= ^fenk_complete) { $text = append($text, "@red@QUEST COMPLETE!"); } } From 4fe810fcd6809bf89f686d1fdd1f60acbe42f5a3 Mon Sep 17 00:00:00 2001 From: Ovenbread Date: Mon, 10 Nov 2025 21:15:34 -0800 Subject: [PATCH 5/8] pickled brain dialogue and adding --- maps/m54_54.jm2 | 3 ++ scripts/quests/quest_fenk/scripts/fenk.rs2 | 48 ++++++++++++++++--- .../quests/quest_fenk/scripts/fenk_books.rs2 | 5 ++ 3 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 scripts/quests/quest_fenk/scripts/fenk_books.rs2 diff --git a/maps/m54_54.jm2 b/maps/m54_54.jm2 index fc71cfda7d..39effcd305 100644 --- a/maps/m54_54.jm2 +++ b/maps/m54_54.jm2 @@ -7673,3 +7673,6 @@ 1 34 16: 1028 1 42 16: 1026 1 43 18: 1027 + +==== OBJ ==== +0 36 18: 4199 1 \ No newline at end of file diff --git a/scripts/quests/quest_fenk/scripts/fenk.rs2 b/scripts/quests/quest_fenk/scripts/fenk.rs2 index 2d7dbaab62..ca0772997e 100644 --- a/scripts/quests/quest_fenk/scripts/fenk.rs2 +++ b/scripts/quests/quest_fenk/scripts/fenk.rs2 @@ -1,23 +1,59 @@ // Signpost [oploc1,fenk_signpost] -if (%fenk_quest < ^fenk_not_started) { +if (%fenk_quest = ^fenk_not_started) { ~mesbox("The signpost has a note pinned onto it. The note says:|'---- Braindead Butler Wanted ----|Gravedigging skills essential - Hunchback advantageous|See Dr Fenkenstrain at the castle NE of Canifis'"); -}else if(%fenk_quest < ^fenk_complete) { + %fenk_quest = ^fenk_started; +} else if (%fenk_quest = ^fenk_started) { + ~mesbox("The signpost has a note pinned onto it. The note says:|'---- Braindead Butler Wanted ----|Gravedigging skills essential - Hunchback advantageous|See Dr Fenkenstrain at the castle NE of Canifis'"); +} else if(%fenk_quest < ^fenk_complete) { // youtu.be/CVq0ooYzxJY ~mesbox("The signpost has a note pinned onto it. The note says:|'---- Braindead Butler Position Filled ----|****No Further Applicants Please****'"); - %fenk_quest = ^fenk_started; } else { ~mesbox("The signpost has a note pinned onto it. The note says:|'AAARRGGGHHHHH!!!!!'"); } // Tower Door [oploc1,fenk_tower_door] -if(%fenk_quest < ^fenk_complete) { - ~mesbox("The signpost has a note pinned onto it. The note says:|'---- Braindead Butler Wanted ----|Gravedigging skills essential - Hunchback advantageous|See Dr Fenkenstrain at the castle NE of Canifis'"); - +if (%fenk_quest < ^fenk_complete) { } else { ~mesbox("The signpost has a note pinned onto it. The note says:|'AAARRGGGHHHHH!!!!!'"); } [opnpcu,fenk_fenkenstrain] + +[opobj3,fenk_brain] +if (npc_find(coord, werewolfinnkeeper, 20, 0) = true) { + if (%fenk_quest = ^fenk_not_started) { + ~chatnpc("Hey! Don't touch that."); + } else { + if (inv_total(inv, fenk_brain) = 0) { + ~chatnpc("You're interested in our speciality, I see. Would you like to buy some?"); + ~chatplayer("What exactly is in the jar?"); + @buy_pickled_brain; + } else { + ~chatnpc("You can leave that alone, my friend. I've already sold you one of your own - eat that. I can't afford to give away freebies in this business!"); + } + } +} + +[label,buy_pickled_brain] +~chatnpc("Pickled brain, my friend. Only 50 gold to you."); +~chatplayer("Err... pickled brain from what animal?"); +~chatnpc("Animal? Don't be disgusting, man! No, this a human brain - only the best for my customers."); +if(inv_total(inv, coins) < 50) { + ~chatplayer("That sounds very nice, but I'm afraid I don't have enough gold at the moment."); +} else { + @multi2("Yes.", ill_buy_one, "No.", im_not_hungry); +} + +[label,ill_buy_one] +~chatplayer("Player: I'll buy one, please."); +if(inv_total(inv, coins) >= 50) { + inv_del(inv, coins, 50); + inv_add(inv, fenk_brain, 1); + ~chatnpc("A very wise choice, . Don't eat it all at once, savour every morsel - that's my advice to you."); +} + +[label,im_not_hungry] +~chatplayer("I'm afraid I'm not really hungry at the moment."); \ No newline at end of file diff --git a/scripts/quests/quest_fenk/scripts/fenk_books.rs2 b/scripts/quests/quest_fenk/scripts/fenk_books.rs2 new file mode 100644 index 0000000000..4f016399d9 --- /dev/null +++ b/scripts/quests/quest_fenk/scripts/fenk_books.rs2 @@ -0,0 +1,5 @@ + +[proc,chimney_book] +switch_int (%book_page) { + case 0 : ~book("Chimney Sweeping on a Budget", "Page 26|that sometimes a sweep|may find themselves|brushless and without the|funds to purchase the|one tool that is most|essential to their trade.|What is a chimney sweep|without his or her brush?|In this kind of situation|any normal long-handled"); +} \ No newline at end of file From 8112e086836af6f0e54509df3bd28213f12c016f Mon Sep 17 00:00:00 2001 From: Ovenbread Date: Mon, 10 Nov 2025 23:17:49 -0800 Subject: [PATCH 6/8] fixed all the pickup drop issues --- scripts/quests/quest_fenk/scripts/fenk.rs2 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/quests/quest_fenk/scripts/fenk.rs2 b/scripts/quests/quest_fenk/scripts/fenk.rs2 index ca0772997e..e3bb2bb373 100644 --- a/scripts/quests/quest_fenk/scripts/fenk.rs2 +++ b/scripts/quests/quest_fenk/scripts/fenk.rs2 @@ -23,7 +23,7 @@ if (%fenk_quest < ^fenk_complete) { [opnpcu,fenk_fenkenstrain] [opobj3,fenk_brain] -if (npc_find(coord, werewolfinnkeeper, 20, 0) = true) { +if (distance(0_54_54_36_18, obj_coord) = 0 & npc_find(coord, werewolfinnkeeper, 20, 0) = true) { if (%fenk_quest = ^fenk_not_started) { ~chatnpc("Hey! Don't touch that."); } else { @@ -35,6 +35,8 @@ if (npc_find(coord, werewolfinnkeeper, 20, 0) = true) { ~chatnpc("You can leave that alone, my friend. I've already sold you one of your own - eat that. I can't afford to give away freebies in this business!"); } } +} else { + @pickup_obj; } [label,buy_pickled_brain] From 301ec206725b132abe5b0e10418dd2575d15fd42 Mon Sep 17 00:00:00 2001 From: Ovenbread Date: Wed, 12 Nov 2025 23:38:15 -0800 Subject: [PATCH 7/8] fenky body part kinks --- .../quest_fenk/scripts/fenk_fenkenstrain.rs2 | 104 ++++++++++++++++-- .../scripts/fenk_gardener_ghost.rs2 | 27 +++++ 2 files changed, 122 insertions(+), 9 deletions(-) create mode 100644 scripts/quests/quest_fenk/scripts/fenk_gardener_ghost.rs2 diff --git a/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 b/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 index 72b380d593..87bc2211fa 100644 --- a/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 +++ b/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 @@ -8,13 +8,23 @@ switch_int(%fenk_quest) { ~chatnpc("Have you come to apply for the job?"); @multi2("Yes.", fenkenstrain_start, "No.", fenkenstrain_end); case ^fenk_passed_interview : - @multi5( - "Do you know where I could find body parts?", fenkenstrain_bodyparts, - "Remind me what you want me to do.", fenkenstrain_remind_me, - "Why are you trying to make this creature?", fenkenstrain_why_creature, - "Will this creature put me out of a job?", fenkenstrain_out_of_job, - "I must get back to work, sir.", fenkenstrain_get_back_to_work - ); + if ( + (%fenk_head = 0 & inv_total(inv, fenk_head_full) >= 1) | + (%fenk_torso = 0 & inv_total(inv, fenk_torso) >= 1) | + (%fenk_arms = 0 & inv_total(inv, fenk_arms) >= 1) | + (%fenk_legs = 0 & inv_total(inv, fenk_legs) >= 1) + ) { + @fenkenstrain_give_bodyparts; + } + case ^fenk_brough_bodyparts : + @fenkenstrain_needle_and_threads; +} + +[opnpc3,fenk_fenkenstrain] +if (%fenk_quest = ^fenk_creature_convince) { + // Complete Quest +} else { + ~chatnpc("What do you think you're doing???"); } // fenk_started @@ -57,7 +67,25 @@ switch_int(%fenk_quest) { // fenk_passed_interview -[label,fenkenstrain_bodyparts] +[label,fenkenstrain_no_bodyparts] + @multi5( + "Do you know where I could find body parts?", fenkenstrain_where_bodyparts, + "Remind me what you want me to do.", fenkenstrain_remind_me, + "Why are you trying to make this creature?", fenkenstrain_why_creature, + "Will this creature put me out of a job?", fenkenstrain_out_of_job, + "I must get back to work, sir.", fenkenstrain_get_back_to_work + ); + +[label,fenkenstrain_have_bodyparts] + @multi5( + "I have some body parts for you.", fenkenstrain_give_bodyparts, + "Remind me what you want me to do.", fenkenstrain_remind_me, + "Why are you trying to make this creature?", fenkenstrain_why_creature, + "Will this creature put me out of a job?", fenkenstrain_out_of_job, + "I must get back to work, sir.", fenkenstrain_get_back_to_work + ); + +[label,fenkenstrain_where_bodyparts] ~chatplayer("Do you know where I could find body parts?"); ~chatnpc("The soil of Morytania is unique in its ability to preserve the bodies of the dead, which is one reason why I have chosen to carry out my experiments here."); ~chatnpc("I recommend digging up some graves in the local area. To the south-east you will find the Haunted Woods; I believe there are many graves there."); @@ -81,4 +109,62 @@ switch_int(%fenk_quest) { ~chatnpc("No, my friend. I have a very special purpose in mind for this creature."); [label,fenkenstrain_get_back_to_work] -~chatplayer("I must get back to work, sir."); \ No newline at end of file +~chatplayer("I must get back to work, sir."); + +[label,fenkenstrain_give_bodyparts] +~chatplayer("I have some body parts for you."); +if (%fenk_head = 0 & inv_total(inv, fenk_head_full) >= 1) { + inv_del(inv, fenk_head_full, 1); + %fenk_head = 1; + ~chatnpc("Fantastic, you've brought me a head."); +} +if (%fenk_torso = 0 & inv_total(inv, fenk_torso) >= 1) { + inv_del(inv, fenk_torso, 1); + %fenk_torso = 1; + ~chatnpc("Splendid, you've brought me a torso."); +} +if (%fenk_arms = 0 & inv_total(inv, fenk_arms) >= 1) { + inv_del(inv, fenk_arms, 1); + %fenk_arms = 1; + ~chatnpc("Great, you've brought me some arms."); +} +if (%fenk_legs = 0 & inv_total(inv, fenk_legs) >= 1) { + inv_del(inv, fenk_legs, 1); + %fenk_legs = 1; + ~chatnpc("Excellent, you've brought me some legs."); +} +if (%fenk_head = 1 & %fenk_torso = 1 & %fenk_arms = 1 & %fenk_legs = 1) { + %fenk_quest = ^fenk_brough_bodyparts; + ~chatnpc("Superb!! Those are all the parts I need. Now to sew them together ..."); + ~chatnpc("Go and get me a needle, and I'll need 5 lots of thread."); +} + +// fenk_brough_bodyparts + +[label,fenkenstrain_needle_and_threads] + ~chatnpc("Where are my needle and thread, ?"); +if (%fenk_needle = 0 & inv_total(inv, needle) >= 1) { + inv_del(inv, needle, 1); + %fenk_needle = 1; + ~chatnpc("Fantastic, you've brought me a head."); +} +if (%fenk_threads_given < 5 & inv_total(inv, thread) >= 1) { + def_int $thread_count = min(inv_total(inv, thread), 5); + inv_del(inv, thread, $thread_count); + %fenk_threads_given = add(%fenk_threads_given, $thread_count); + ~chatnpc("Splendid, you've brought me a torso."); +} +if (%fenk_needle = 1 & %fenk_threads_given = 1) { + %fenk_quest = ^fenk_brought_needle_threads; + ~mesbox("Fenkenstrain uses the needle and thread to sew the body parts together. Soon, a hideous creature lies inanimate on the ritual table."); + ~chatnpc("Perfect. But I need one more thing from you - flesh and bones by themselves do not make life."); + ~chatplayer("Really?"); + ~chatnpc("I have honed to perfection an ancient ritual that will give life to this creature, but for this I must harness the very power of Nature."); + ~chatplayer("And what power is this?"); + ~chatnpc("The power of lightning."); + ~chatplayer("Sorry, can't make lightning, you've got the wrong man-"); + ~chatnpc("Silence your insolent tongue! The storm that brews overhead will create the lightning. What I need you to do is to repair the lightning conductor on the balcony above."); + ~chatplayer("Repair the lightning conductor, right. Can I have a break, soon? By law I'm entitled to 15 minutes every-"); + ~chatnpc("Repair the conductor and BEGONE!!!"); +} + diff --git a/scripts/quests/quest_fenk/scripts/fenk_gardener_ghost.rs2 b/scripts/quests/quest_fenk/scripts/fenk_gardener_ghost.rs2 new file mode 100644 index 0000000000..012b00aca2 --- /dev/null +++ b/scripts/quests/quest_fenk/scripts/fenk_gardener_ghost.rs2 @@ -0,0 +1,27 @@ +[opnpc1,fenk_gardener_multi_2] +switch_int(%fenk_quest) { + case ^fenk_not_started, ^fenk_started : + ~chatplayer("Who are you?"); + if (inv_total(worn, amulet_of_ghostspeak) = 0 & inv_total(worn, amulet_of_ghostspeak_enchanted) = 0) { + @fenk_gardener_no_ghostspeak; + } + ~chatamuletvibration; + ~chatnpc("Oi'm the 'eadless gardener, mate."); + case ^fenk_passed_interview : + ~chatplayer("What can you tell me about Fenkenstrain?"); + case ^fenk_complete : + ~chatplayer("How are you?"); + if (inv_total(worn, amulet_of_ghostspeak) = 0 & inv_total(worn, amulet_of_ghostspeak_enchanted) = 0) { + @fenk_gardener_no_ghostspeak; + } + ~chatamuletvibration; + ~chatnpc("Same as ever, mate, just getting' on with it regardless."); + ~chatplayer("Good for you...err...mate."); +} + +[label,fenk_gardener_no_ghostspeak] +~mesbox("The Headless Gardener's neck twitches at you, but the lack of any head prevents him from speaking."); + +[proc,chatamuletvibration] +~objbox(amulet_of_ghostspeak, "You feel power emanate from the Amulet of Ghostspeak, and the air around you vibrates with the ghostly voice of the Headless Gardener...", 200, 0, 0); +// fenk_started From f014a2dba574d071bfe73cb8f03f6c3cb46403ea Mon Sep 17 00:00:00 2001 From: Ovenbread Date: Thu, 13 Nov 2025 21:42:42 -0800 Subject: [PATCH 8/8] fenk more dialogue --- .../quest_fenk/scripts/fenk_fenkenstrain.rs2 | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 b/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 index 87bc2211fa..0e28c18e80 100644 --- a/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 +++ b/scripts/quests/quest_fenk/scripts/fenk_fenkenstrain.rs2 @@ -14,10 +14,14 @@ switch_int(%fenk_quest) { (%fenk_arms = 0 & inv_total(inv, fenk_arms) >= 1) | (%fenk_legs = 0 & inv_total(inv, fenk_legs) >= 1) ) { - @fenkenstrain_give_bodyparts; + @fenkenstrain_have_bodyparts; + } else { + @fenkenstrain_no_bodyparts; } case ^fenk_brough_bodyparts : @fenkenstrain_needle_and_threads; + case ^fenk_brought_needle_threads : + @fenkenstrain_how_to_repair_conductor; } [opnpc3,fenk_fenkenstrain] @@ -142,19 +146,29 @@ if (%fenk_head = 1 & %fenk_torso = 1 & %fenk_arms = 1 & %fenk_legs = 1) { // fenk_brough_bodyparts [label,fenkenstrain_needle_and_threads] - ~chatnpc("Where are my needle and thread, ?"); +if (inv_total(inv, needle) = 0 & inv_total(inv, thread) = 0) { + if (%fenk_needle = 0 & %fenk_threads_given < 5) { + ~chatnpc("Where are my needle and thread, ?"); + } else if (%fenk_threads_given < 5) { + ~chatnpc("Where's my thread, ?"); + } else if (%fenk_needle = 0) { + ~chatnpc("Where's my needle, ?"); + } + return; +} if (%fenk_needle = 0 & inv_total(inv, needle) >= 1) { inv_del(inv, needle, 1); %fenk_needle = 1; - ~chatnpc("Fantastic, you've brought me a head."); + ~chatnpc("Ah, a needle. Wonderful."); } +return; if (%fenk_threads_given < 5 & inv_total(inv, thread) >= 1) { def_int $thread_count = min(inv_total(inv, thread), 5); inv_del(inv, thread, $thread_count); %fenk_threads_given = add(%fenk_threads_given, $thread_count); - ~chatnpc("Splendid, you've brought me a torso."); + ~chatnpc("Some thread, excellent."); } -if (%fenk_needle = 1 & %fenk_threads_given = 1) { +if (%fenk_needle = 1 & %fenk_threads_given = 5) { %fenk_quest = ^fenk_brought_needle_threads; ~mesbox("Fenkenstrain uses the needle and thread to sew the body parts together. Soon, a hideous creature lies inanimate on the ritual table."); ~chatnpc("Perfect. But I need one more thing from you - flesh and bones by themselves do not make life."); @@ -168,3 +182,9 @@ if (%fenk_needle = 1 & %fenk_threads_given = 1) { ~chatnpc("Repair the conductor and BEGONE!!!"); } +// fenk_brought_needle_threads + +[label,fenkenstrain_how_to_repair_conductor] +~chatplayer("How do I repair the lightning conductor?"); +~chatnpc("Oh, it would be easier to do it myself! If you find a conductor mould you should be able to cast a new one."); +~chatnpc("Remember this, : my experiment will only work with a conductor made from silver."); \ No newline at end of file