1;;----------------------------------------------------------------------------
2;; Special -- one-off stuff that needs to be kern-loaded and doesn't really fit
3;; anywhere else.
4;;----------------------------------------------------------------------------
5
6(kern-mk-sprite-set 'ss_special 32 32 3 3 0 0 "special.png")
7
8(kern-mk-sprite 's_gold_skull ss_special 1 0 #f 0)
9(kern-mk-sprite 's_power_core ss_special 1 1 #f 0)
10
11;;----------------------------------------------------------------------------
12;; Bandit-Hideout generator --
13;; procedure invoked by a step trigger to place the bandit hideout on the world map.
14;; Should return true iff it triggers to remove the step generator that invokes it.
15;;----------------------------------------------------------------------------
16(define bandit-hideout-loc (list 'p_shard 72 63))
17(define (mk-bandit-hideout kbeing)
18  (if (eqv? kbeing
19            (kern-get-player))
20      (begin
21        (kern-log-msg "You stumble upon a hidden forest glade.\nKnavish figures skulk about with drawn blades!")
22        (kern-place-set-subplace p_bandit_hideout_l1
23                                 (eval-loc bandit-hideout-loc))
24        (kern-map-set-dirty)
25        #t)
26      #f))
27
28
29;;----------------------------------------------------------------------------
30;; Angriss Lair generator -- procedure invoked by a step trigger to create
31;; Angriss's Lair. Should return true iff it triggers to remove the step
32;; generator that invokes it.
33;;----------------------------------------------------------------------------
34(define angriss-lair-loc (list 'p_shard 88 69))
35(define (mk-angriss-lair kbeing)
36  (if (eqv? kbeing
37            (kern-get-player))
38      (begin
39        (kern-log-msg "The forest grows wild...\nThe trees here are choked with webbing, and horrid wrapped HUSKS dangle.\nYou have found the entrance to Angriss's Lair!")
40        (kern-place-set-subplace p_angriss_lair
41                                 (eval-loc angriss-lair-loc))
42        (kern-map-set-dirty)
43        #t)
44      #f))
45
46
47;;----------------------------------------------------------------------------
48;; Mans-Hideout generator --
49;; procedure invoked by a step trigger to place the MAN's hideout on the world map.
50;; Should return true iff it triggers to remove the step generator that invokes it.
51;;----------------------------------------------------------------------------
52(define the-mans-hideout-loc (list 'p_shard 92 10))
53(define (mk-mans-hideout kbeing)
54  (if (eqv? kbeing
55            (kern-get-player))
56      (begin
57        (kern-log-msg "You find a hidden entrance to a secure, undisclosed location!")
58        (kern-place-set-subplace p_mans_hideout
59                                 (eval-loc the-mans-hideout-loc))
60        (kern-map-set-dirty)
61        #t)
62      #f))
63
64
65;;----------------------------------------------------------------------------
66;; Brundegardt generator --
67;; procedure invoked by a step trigger to place Brundegardt on the world map.
68;; Should return true iff it triggers to remove the step generator that invokes it.
69;;----------------------------------------------------------------------------
70(define brundegardt-loc (list 'p_shard 76 40))
71(define (mk-brundegardt kbeing)
72  (if (eqv? kbeing
73            (kern-get-player))
74      (begin
75        (kern-log-msg "Through a hidden track, you find a strange forested nook in the mountainside!")
76        (kern-place-set-subplace p_brundegardt
77                                 (eval-loc brundegardt-loc))
78        (kern-map-set-dirty)
79        #t)
80      #f))
81
82
83;; ----------------------------------------------------------------------------
84;; The Warritrix's note
85;; ----------------------------------------------------------------------------
86(mk-reusable-item
87 't_warritrix_orders "Military Orders" s_lexicon norm
88 (lambda (klexicon kuser)
89   (kern-ui-page-text
90   "Orders to the Warritrix"
91   "Ever faithful servant of Glasdrin,"
92   "we suspect a coven of the Accursed are hiding"
93   "in the deeps of the Lost Halls. Proceed at"
94   "once to investigate. Leave no cavern"
95   "unexplored.\n"
96   "--Commander Jeffries\n"
97   "P.S. These orders are to be destroyed."
98   )))
99
100
101;; Kraken lakes kraken trigger
102(define (spawn-kraken-lakes-sea-serpent kbeing)
103  (kern-log-msg "Your disturb something in the water...")
104  (kern-obj-put-at (spawn-npc 'kraken 8) (mk-loc p_deepness 31 34))
105  (kern-obj-put-at (spawn-npc 'kraken 8) (mk-loc p_deepness 32 35))
106  (kern-obj-put-at (spawn-npc 'kraken 8) (mk-loc p_deepness 30 29))
107  #t)
108
109;; Locations referred to more than once
110(define lost-halls-loc (list 'p_shard 39 75))
111
112;; Power core for voidship
113(mk-quest-obj-type 't_power_core "ancient power core" s_power_core layer-item obj-ifc)
114
115;; Luximene begins the game as a Lich King, when defeated he drops his skull,
116;; which can be used with the Necromancer to summon his shade.
117(mk-quest-obj-type 't_lich_skull "King Luximenes skull" s_gold_skull layer-item obj-ifc)
118
119;; grow -- trigger hook fx to create items (eg, growing reagents, hence the name)
120(define (grow-trig ktrig ktype-tag dice)
121  (println "grow-trig")
122  (println "  ktrig=" ktrig)
123  (println "  ktype-tag=" ktype-tag)
124  (println "  dice=" dice)
125  (kern-obj-put-at (kern-mk-obj (eval ktype-tag) (kern-dice-roll
126                                       dice))
127                   (kern-obj-get-location ktrig)))
128