@@ -427,6 +427,327 @@ const NPC_DEFINITIONS = {
427427 trader : "trader1"
428428 } ,
429429
430+ // Eira of the Veil - Lore/Quest Giver (Starting Enclosure)
431+ eira_veil : {
432+ id : "eira_veil" ,
433+ name : "Eira of the Veil" ,
434+ sprite : "assets/img/npc/npc_f_2.png" ,
435+ interactive : true ,
436+ spawns : [
437+ { map : 2 , x : 8 , y : 10 , wanderArea : { x1 : 5 , y1 : 9 , x2 : 11 , y2 : 13 } }
438+ ] ,
439+ dialogue : {
440+ default : [
441+ "You feel it, don’t you? The air here is thick with memory. The Architect’s hand lingers in every shadow." ,
442+ "If you see a shimmer, follow it. Echoes hold secrets, sometimes warnings, sometimes gifts." ,
443+ "Bring me any Glitch Fragments you find. I’m close to understanding the Thicket’s true nature."
444+ ] ,
445+ questGiven : [
446+ "Collect Glitch Fragments from echoes and bioluminescent mushrooms. Each one brings us closer to the truth."
447+ ] ,
448+ questIncomplete : [
449+ "Have you found any Glitch Fragments yet? The echoes are strongest near the mushrooms and flickering trees." ,
450+ "The Thicket hides its secrets well. Keep searching—every fragment brings us closer to understanding."
451+ ] ,
452+ questComplete : [
453+ "These fragments pulse with old power. Thank you, traveler. The Thicket remembers your kindness."
454+ ]
455+ } ,
456+ questId : "eira_echo_fragments" ,
457+ questRedo : true
458+ } ,
459+
460+ // The Whispering Shade - Glitch/Echo NPC (Echo Trigger Path)
461+ whispering_shade : {
462+ id : "whispering_shade" ,
463+ name : "The Whispering Shade" ,
464+ sprite : "assets/img/npc/npc_m_2.png" ,
465+ interactive : true ,
466+ spawns : [
467+ { map : 2 , x : 26 , y : 17 , wanderArea : { x1 : 21 , y1 : 13 , x2 : 29 , y2 : 19 } }
468+ ] ,
469+ dialogue : {
470+ default : [
471+ "You walk in two worlds, traveler. One remembers, one forgets." ,
472+ "The Fracture is not a wound, but a door. Will you open it, or pass by?" ,
473+ "{ERROR: MEMORY NOT FOUND}" ,
474+ "The Architect watches. The cycle repeats."
475+ ] ,
476+ questGiven : [
477+ "Activate three glitching statues in the forest. Each holds lost memories."
478+ ] ,
479+ questIncomplete : [
480+ "The statues remain silent. Their memories are locked away until you activate them." ,
481+ "Listen for the glitches in the forest. Only then will the echoes reveal their stories."
482+ ] ,
483+ questComplete : [
484+ "The echoes grow clearer. You have seen what others have missed."
485+ ]
486+ } ,
487+ questId : "shade_statue_echoes" ,
488+ questRedo : false
489+ } ,
490+
491+ // Sakura the Dreamer - Lore NPC (Cherry Tree Grove)
492+ sakura_dreamer : {
493+ id : "sakura_dreamer" ,
494+ name : "Sakura the Dreamer" ,
495+ sprite : "assets/img/npc/npc_f_1.png" ,
496+ interactive : true ,
497+ spawns : [
498+ { map : 2 , x : 38 , y : 8 , wanderArea : { x1 : 34 , y1 : 3 , x2 : 41 , y2 : 11 } }
499+ ] ,
500+ dialogue : {
501+ default : [
502+ "The pink blossoms remind me of a world I’ve never seen. Do you ever dream of places beyond the Thicket?" ,
503+ "Sometimes, the trees whisper names I don’t remember. Are they yours, or mine?"
504+ ] ,
505+ questGiven : [
506+ "Find a lost memory fragment. It may help me remember my dreams."
507+ ] ,
508+ questIncomplete : [
509+ "No sign of the lost blossom yet? The cherry grove is full of memories—look where the petals gather." ,
510+ "Sometimes, the wind carries fragments far from home. Keep searching, traveler."
511+ ] ,
512+ questComplete : [
513+ "Thank you. This blossom feels familiar, somehow. Perhaps in another cycle, I knew its name."
514+ ]
515+ } ,
516+ questId : "sakura_lost_blossom" ,
517+ questRedo : false
518+ } ,
519+
520+ // Bruk the Outcast - Quest Giver (Orc Patch)
521+ bruk_outcast : {
522+ id : "bruk_outcast" ,
523+ name : "Bruk the Outcast" ,
524+ sprite : "assets/img/npc/npc_m_1.png" ,
525+ interactive : true ,
526+ spawns : [
527+ { map : 2 , x : 4 , y : 17 , wanderArea : { x1 : 1 , y1 : 15 , x2 : 6 , y2 : 19 } }
528+ ] ,
529+ dialogue : {
530+ default : [
531+ "Most orks here serve the Thicket’s will. I chose another path."
532+ ] ,
533+ questGiven : [
534+ "Help me sabotage these orcs, and I’ll share what I have of the old pacts." ,
535+ "Defeat 25 orks to recover my lost totem. The forest hides many dangers."
536+ ] ,
537+ questIncomplete : [
538+ "The orks still hold their ground. Sabotage their traps and recover my totem if you can." ,
539+ "Be careful—the Thicket twists even the bravest. My totem is the key to our old pacts."
540+ ] ,
541+ questComplete : [
542+ "You’ve done it! The old pacts are safe, for now. Take this as thanks."
543+ ]
544+ } ,
545+ questId : "bruk_sabotage" ,
546+ questRedo : false
547+ } ,
548+
549+ // Myco the Luminous - Lore/Quest Giver (Flickering Forest Core)
550+ myco_luminous : {
551+ id : "myco_luminous" ,
552+ name : "Myco the Luminous" ,
553+ sprite : "assets/img/npc/npc_m_1.png" ,
554+ interactive : true ,
555+ spawns : [
556+ { map : 2 , x : 33 , y : 49 , wanderArea : { x1 : 29 , y1 : 40 , x2 : 40 , y2 : 56 } }
557+ ] ,
558+ dialogue : {
559+ default : [
560+ "The mushrooms here pulse with memory. Some say they’re the Architect’s eyes." ,
561+ "If you gather enough glowing caps, I can brew a potion to reveal hidden paths."
562+ ] ,
563+ questGiven : [
564+ "Collect bioluminescent mushrooms. With enough, I’ll make a potion to show you secrets."
565+ ] ,
566+ questIncomplete : [
567+ "Not enough glowing mushrooms yet? The brightest caps grow near the flickering lights." ,
568+ "The potion needs more ingredients. Search deeper in the forest and bring me what you find."
569+ ] ,
570+ questComplete : [
571+ "Here is the potion. Drink it near the flickering trees and watch for hidden paths."
572+ ]
573+ } ,
574+ questId : "myco_mushroom_potion" ,
575+ questRedo : true
576+ } ,
577+
578+ // Lirael the Rememberer - Lore NPC (Open Forest Areas)
579+ lirael_rememberer : {
580+ id : "lirael_rememberer" ,
581+ name : "Lirael the Rememberer" ,
582+ sprite : "assets/img/npc/npc_f_2.png" ,
583+ interactive : true ,
584+ spawns : [
585+ { map : 2 , x : 52 , y : 22 , wanderArea : { x1 : 46 , y1 : 19 , x2 : 59 , y2 : 26 } }
586+ ] ,
587+ dialogue : {
588+ default : [
589+ "I’ve seen this forest before, in dreams and in waking. Each time, it changes and yet, it stays the same." ,
590+ "The Architect’s game is older than any of us. We are pieces, but sometimes, pieces change the board."
591+ ]
592+ }
593+ } ,
594+
595+ // Venn the Chronicler - Lore (Open Forest Areas)
596+ venn_chronicler : {
597+ id : "venn_chronicler" ,
598+ name : "Venn the Chronicler" ,
599+ sprite : "assets/img/npc/npc_m_3.png" ,
600+ interactive : true ,
601+ spawns : [
602+ { map : 2 , x : 58 , y : 10 , wanderArea : { x1 : 52 , y1 : 4 , x2 : 62 , y2 : 15 } }
603+ ] ,
604+ dialogue : {
605+ default : [
606+ "Have you seen them, traveler? The ones who wander with empty eyes, lost in the mist. Some say their minds were claimed by the Thicket itself." ,
607+ "Others flicker and stutter, caught between moments, glitching, as if the world forgot how to remember them." ,
608+ "I record their stories, even if they cannot speak. Every broken memory is a clue to the Architect’s design." ,
609+ "Sometimes, I wonder if we are all just echoes, waiting for the cycle to reset."
610+ ]
611+ }
612+ } ,
613+
614+ // Astra the Guide - Lore NPC (Teleport Stone Area)
615+ astra_guide : {
616+ id : "astra_guide" ,
617+ name : "Astra the Guide" ,
618+ sprite : "assets/img/npc/npc_f_1.png" ,
619+ interactive : true ,
620+ spawns : [
621+ { map : 2 , x : 51 , y : 54 , wanderArea : { x1 : 50 , y1 : 52 , x2 : 52 , y2 : 59 } }
622+ ] ,
623+ dialogue : {
624+ default : [
625+ "You’ve come far, traveler. The Thicket remembers you, even if you do not remember it." ,
626+ "Beyond this stone, the world grows stranger. The Architect’s gaze sharpens."
627+ ]
628+ }
629+ } ,
630+
631+ // Brain Dead/Glitching NPCs (scattered, use unique names)
632+ ork_wanderer : {
633+ id : "ork_wanderer" ,
634+ name : "Ork Wanderer" ,
635+ sprite : "assets/img/npc/npc_m_1.png" ,
636+ interactive : true ,
637+ spawns : [
638+ { map : 2 , x : 14 , y : 37 , wanderArea : { x1 : 10 , y1 : 25 , x2 : 16 , y2 : 40 } }
639+ ] ,
640+ dialogue : {
641+ default : [
642+ "...must find... the totem..."
643+ ]
644+ }
645+ } ,
646+
647+ lost_adventurer : {
648+ id : "lost_adventurer" ,
649+ name : "Lost Adventurer" ,
650+ sprite : "assets/img/npc/npc_m_2.png" ,
651+ interactive : true ,
652+ spawns : [
653+ { map : 2 , x : 45 , y : 27 , wanderArea : { x1 : 41 , y1 : 26 , x2 : 49 , y2 : 29 } }
654+ ] ,
655+ dialogue : {
656+ default : [
657+ "I was looking for the light. Did you see it?"
658+ ]
659+ }
660+ } ,
661+
662+ fragment_searcher : {
663+ id : "fragment_searcher" ,
664+ name : "Fragment Searcher" ,
665+ sprite : "assets/img/npc/npc_f_1.png" ,
666+ interactive : true ,
667+ spawns : [
668+ { map : 2 , x : 59 , y : 32 , wanderArea : { x1 : 56 , y1 : 27 , x2 : 60 , y2 : 38 } }
669+ ] ,
670+ dialogue : {
671+ default : [
672+ "{GLITCH} The cycle repeats. The cycle repeats."
673+ ]
674+ }
675+ } ,
676+
677+ faded_botanist : {
678+ id : "faded_botanist" ,
679+ name : "Faded Botanist" ,
680+ sprite : "assets/img/npc/npc_f_2.png" ,
681+ interactive : true ,
682+ spawns : [
683+ { map : 2 , x : 37 , y : 42 , wanderArea : { x1 : 35 , y1 : 38 , x2 : 39 , y2 : 44 } }
684+ ] ,
685+ dialogue : {
686+ default : [
687+ "Flowers bloom, then fade. I remember... nothing."
688+ ]
689+ }
690+ } ,
691+
692+ mistbound_shade : {
693+ id : "mistbound_shade" ,
694+ name : "Mistbound Shade" ,
695+ sprite : "assets/img/npc/npc_m_2.png" ,
696+ interactive : true ,
697+ spawns : [
698+ { map : 2 , x : 22 , y : 22 , wanderArea : { x1 : 18 , y1 : 22 , x2 : 25 , y2 : 23 } }
699+ ] ,
700+ dialogue : {
701+ default : [
702+ "I am... not myself. Are you?"
703+ ]
704+ }
705+ } ,
706+
707+ cherry_grove_ghost : {
708+ id : "cherry_grove_ghost" ,
709+ name : "Cherry Grove Ghost" ,
710+ sprite : "assets/img/npc/npc_f_1.png" ,
711+ interactive : true ,
712+ spawns : [
713+ { map : 2 , x : 36 , y : 18 , wanderArea : { x1 : 13 , y1 : 31 , x2 : 38 , y2 : 21 } }
714+ ] ,
715+ dialogue : {
716+ default : [
717+ "Pink petals fall, blue leaves flicker. Is this real?"
718+ ]
719+ }
720+ } ,
721+
722+ mushroom_echoer : {
723+ id : "mushroom_echoer" ,
724+ name : "Mushroom Echoer" ,
725+ sprite : "assets/img/npc/npc_m_1.png" ,
726+ interactive : true ,
727+ spawns : [
728+ { map : 2 , x : 21 , y : 52 , wanderArea : { x1 : 18 , y1 : 50 , x2 : 24 , y2 : 55 } }
729+ ] ,
730+ dialogue : {
731+ default : [
732+ "The lights... they blink out, then return. Why?"
733+ ]
734+ }
735+ } ,
736+
737+ forest_watcher : {
738+ id : "forest_watcher" ,
739+ name : "Forest Watcher" ,
740+ sprite : "assets/img/npc/npc_m_3.png" ,
741+ interactive : true ,
742+ spawns : [
743+ { map : 2 , x : 9 , y : 59 , wanderArea : { x1 : 5 , y1 : 56 , x2 : 12 , y2 : 62 } }
744+ ] ,
745+ dialogue : {
746+ default : [
747+ "The Architect... watches... always."
748+ ]
749+ }
750+ } ,
430751
431752} ;
432753
@@ -549,6 +870,8 @@ const ENEMY_TYPES = {
549870 ]
550871 } ,
551872
873+ // -------- Floor 3 --------
874+
552875 mistbound_ork : {
553876 id : "mistbound_ork" ,
554877 name : "Mistbound Ork" ,
0 commit comments