3 (define (get-player-name kbeing)
5 (kern-log-msg "Speak your name, Seeker")
7 ((reply (kern-conv-get-string kbeing)))
11 (kern-log-msg (string-append "Hail, " reply "!"))
12 (kern-being-set-name kbeing reply)
20 (define (one-off-message kbeing message messageid)
21 (if (is-player-party-member? kbeing)
23 (kern-log-msg message)
24 (map (lambda (trigobj)
25 (if (equal? (length (gob trigobj)) 3)
26 (if (equal? (caddr (gob trigobj)) messageid)
27 (kern-obj-remove trigobj)
30 (kplace-get-objects-of-type (car (kern-obj-get-location kbeing)) t_step_trig))
34 (define (gamestart-statue-clean kbeing messageid)
35 (map (lambda (trigobj)
36 (if (equal? (length (gob trigobj)) 3)
37 (if (equal? (caddr (gob trigobj)) messageid)
38 (kern-obj-remove trigobj)
41 (kplace-get-objects-of-type (car (kern-obj-get-location kbeing)) t_step_trig))
44 (define (gamestart-statue-speak kbeing speaker messageid)
45 (if (is-player-party-member? kbeing)
47 (kern-log-msg "A statue suddenly speaks to you!")
48 (kern-conv-begin (eval speaker))
53 (define (get-gamestart-data kbeing key)
54 (let ((rdata (get-roomdata (car (kern-obj-get-location kbeing)))))
58 (define (gamestart-field-circle ftype loc x y count)
64 (define (is-my-field? kobj) (eqv? ftype (kern-obj-get-type kobj)))
65 (define (gamestart-field-circle-elem xp yp toshow tocheck)
68 (show (not (< (* toshow 8) (* tocheck count))))
69 (fields (filter is-my-field? (kern-get-objects-at (mk-loc loc xf yf))))
71 (cond ((null? fields) nil)
73 (kern-obj-remove (car fields))))
75 (kern-obj-put-at (kern-mk-obj ftype 1) (mk-loc loc xf yf))
79 (ntoshow (if show (- toshow 1) toshow))
80 (nxp (sign (- xp yp)))
81 (nyp (sign (+ xp yp)))
83 (gamestart-field-circle-elem nxp nyp ntoshow (- tocheck 1))
86 (let* ((sa (kern-dice-roll "1d3-2"))
87 (sb (if (> 1 (kern-dice-roll "1d2")) 1 -1))
88 (xy (kern-dice-roll "1d2"))
89 (xp (if (> xy 1) sa sb))
90 (yp (if (> xy 1) sb sa))
92 (gamestart-field-circle-elem xp yp count 8)
96 (define (gamestart-reset-lamps kbeing)
97 (let ((str (floor (+ (/ (* (- (kern-char-get-strength kbeing) 10) 7) 12) 1)))
98 (dex (floor (+ (/ (* (- (kern-char-get-dexterity kbeing) 10) 7) 12) 1)))
99 (int (floor (+ (/ (* (- (kern-char-get-intelligence kbeing) 10) 7) 12) 1)))
100 (place (eval 'p_char_setup)))
101 (gamestart-field-circle F_fire_perm place 4 10 str)
102 (gamestart-field-circle F_acid_perm place 9 8 dex)
103 (gamestart-field-circle F_energy_perm place 14 10 int)
107 (define (gamestart-light-lamps kbeing unused messageid)
108 (if (is-player-party-member? kbeing)
110 (gamestart-reset-lamps kbeing)
111 (map (lambda (trigobj)
113 (if (equal? (length (gob trigobj)) 3)
114 (if (equal? (caddr (gob trigobj)) messageid)
115 (kern-obj-remove trigobj)
118 (kplace-get-objects-of-type (car (kern-obj-get-location kbeing)) t_step_trig))
124 (define (set-gamestart-data kbeing key value)
125 (println (get-roomdata (car (kern-obj-get-location kbeing))))
126 (let* ((rdata (get-roomdata (car (kern-obj-get-location kbeing))))
127 (curdat (list-tail rdata key)))
128 (set-car! curdat value)
131 (define (initstats kbeing)
132 (let ((rdata (get-roomdata (car (kern-obj-get-location kbeing)))))
133 (kern-char-set-strength kbeing (/ (- 24 (list-ref rdata 0) (list-ref rdata 1)) 2))
134 (kern-char-set-dexterity kbeing (/ (- (+ 12 (list-ref rdata 0)) (list-ref rdata 2)) 2))
135 (kern-char-set-intelligence kbeing (/ (+ (list-ref rdata 1) (list-ref rdata 2)) 2))
137 (kern-log-msg "Strength: " (number->string (kern-char-get-strength kbeing)) ", "
138 "Dexterity: " (number->string (kern-char-get-dexterity kbeing)) ", "
139 "Intelligence: " (number->string (kern-char-get-intelligence kbeing))
144 (define (set-stat-info kbeing key value)
145 (set-gamestart-data kbeing key value)
147 (kern-sound-play sound-moongate-enter)
152 (mk-obj-type 't_start_portal "path forward" s_blackgate_full layer-mechanism step-trig-ifc)
154 (define (mk-start-portal proc-tag . args)
155 (bind (kern-mk-obj t_start_portal 1)
156 (trig-mk proc-tag args)))
158 (define (start-cutscene kplayer startgate)
159 (kern-char-set-sleep ch_wanderer #t)
161 (kern-log-msg "A dark gate rises in a quiet clearing...")
162 (moongate-animate black-gate blackgate-stages)
167 (define (mk-start-cutscene kplayer startgate)
168 (lambda () (start-cutscene kplayer startgate)))
170 (define (start-actual-game kplayer)
174 (kern-obj-set-sprite (eval (get-gamestart-data kplayer 3)) s_grass)
177 (kern-obj-relocate kplayer (list p_moongate_clearing 11 12) (mk-start-cutscene kplayer (get-gamestart-data kplayer 3)))
180 (kern-log-msg "Then closes without a trace...")
181 (moongate-animate black-gate (reverse blackgate-stages))
184 (kern-log-msg "You lie dreaming for a while, of another life...")
188 (kern-char-set-sleep ch_wanderer #f)
189 (kern-player-set-follow-mode)
191 (kern-log-msg "...then awaken to a strange new world.")
192 (kern-log-msg "To the southwest you see a cave.")
193 (quest-remove (quest-data-get 'questentry-charcreate))
194 (quest-assign (quest-data-get 'questentry-whereami))