OSDN Git Service

4b1ee685b36c01036a5eba56d0d449771857dd99
[nazghul-jp/nazghul-jp.git] / worlds / haxima-1.002 / gen.scm
1 ;;----------------------------------------------------------------------------
2 ;; Schedule
3 ;; 
4 ;; In Green Tower.
5 ;;----------------------------------------------------------------------------
6 (define (mk-zone x y w h) (list 'p_green_tower x y w h))
7 (kern-mk-sched 'sch_gen
8                (list 0  0  (mk-zone 2  13 1  1)  "sleeping")
9                (list 4  0  (mk-zone 3  12 3  3)  "eating")
10                (list 5  0  gt-woods  "idle")
11                (list 10 0  (mk-zone 26 27 2  12) "idle")
12                (list 12 0  (mk-zone 49 54 1  1)  "eating")
13                (list 13 0  (mk-zone 49 3  7  2)  "idle")
14                (list 14 0  (mk-zone 7  20 5  5)  "idle")
15                (list 18 0  (mk-zone 49 54 1  1)  "eating")
16                (list 19 0  (mk-zone 3  12 3  3)  "idle")
17                (list 0  0  (mk-zone 2  13 1  1)  "sleeping")
18                )
19
20 ;; ----------------------------------------------------------------------------
21 ;; Gen's Goblin Lexicon
22 ;; ----------------------------------------------------------------------------
23 (mk-reusable-item 
24  't_goblin_lexicon "Goblin Lexicon" s_lexicon norm
25  (lambda (klexicon kuser)
26    (kern-ui-page-text
27    "Goblin Lexicon"
28    "I compiled these notes to help others learn the goblin language. "
29    "I hope they are useful."
30    "--Gen"
31    ""
32    "Bo.....My, Myself"
33    "Cho....Mankind"
34    "Da.....Abode, World"
35    "Eh.....'What?'"
36    "Gu.....Spirit, Ancestor"
37    "Ha.....Good, Yes, Skillful"
38    "Hi.....Magic"
39    "Iki....Go, At"
40    "Jo.....Join"
41    "Ka.....Kill, Destroy, End"
42    "Ki.....Health, Life-Force, Power"
43    "Lu.....Change, Metamorphosis, Transformation"
44    "Ma.....Forest, Hidden Ways"
45    "Me.....Duty, Job, Destiny"
46    "Na.....Yours, Yourself"
47    "Nu.....Give Birth, Create, Begin"
48    "No.....Name"
49    "Nin....Stealth"
50    "Ru.....Ancient, Primordal, Deep, Cave"
51    "To.....Individual"
52    "Tu.....No, Bad"
53    "Zu.....Watch, Seek"
54    )))
55
56 ;;----------------------------------------------------------------------------
57 ;; Gob
58 ;;----------------------------------------------------------------------------
59 (define (gen-mk will-join? gave-notes?) (list will-join? gave-notes?))
60 (define (gen-will-join? gen) (car gen))
61 (define (gen-gave-notes? gen) (cadr gen))
62 (define (gen-set-will-join! gen val) (set-car! gen val))
63 (define (gen-set-gave-notes! gen val) (set-car! (cdr gen) val))
64
65 ;;----------------------------------------------------------------------------
66 ;; Conv
67 ;; 
68 ;; Gen is a Ranger who dwells in Green Tower.
69 ;; He has much knowledge of Goblin kind, and is a friend of Kama.
70 ;; Gen is a potential party member.
71 ;;----------------------------------------------------------------------------
72 (define (gen-hail     gen player) (say gen "Hail, Wanderer"))
73 (define (gen-bye      gen player) (say gen "Farewell"))
74 (define (gen-default  gen player) (say gen "I can't help you with that"))
75 (define (gen-name     gen player) (say gen "I am Gen." ))
76 (define (gen-woodsman gen player) (say gen "Yes, some call me the Woodsman." ))
77 (define (gen-job      gen player) (say gen "Once I was a Ranger, but my duty now is done. I wander 'midst the woods for my own reasons." ))
78 (define (gen-reasons  gen player) (say gen "My reasons are my own." ))
79
80 (define (gen-captain gen player) 
81   (say gen "Captain Deric commands the Rangers of Green Tower. Have you met him?")
82   (if (kern-conv-get-yes-no? player)
83       (say gen "A decent man, if somewhat ambitious.")
84       (say gen "You can find him in the Tower. His office is on the second floor.")))
85
86 (define (gen-ambitious   gen player) (say gen "In peace there's nothing so becomes a man as modest stillness and humility." ))
87 (define (gen-culture     gen player) 
88   (say gen "Though a culture their own, truly a culture they have, (unlike the trolls and headless)."
89        "The truths of culture can be seen in Shakespeare, truths which hold across the gulfs between different folk."))
90 (define (gen-shakespeare gen player)
91   (say gen "You know of him! Very good! Some interesting conversation at last.")
92   (if (in-player-party? 'ch_kama)
93       (say gen player "[He points at Kama] Another who knows of the Bard! You should hear his telling of Hamlet!")
94       ))
95
96 (define (gen-ranger gen player) (say gen "Rangers fought in these woods during the Goblin Wars. Now they maintain a token presence."))
97 (define (gen-wars   gen player) (say gen "Yes, I fought as a Ranger in the goblin wars. That was a generation ago, and people forget. "
98                                      "They see the goblins as lesser beings, defeated and worthy of slow extinction."))
99 (define (gen-goblin gen player) (say gen "An interesting species. Although they have their own language they have no writing. "
100                                      "They are much like men, but more savage, more primal. "
101                                      "Their warriors are beserkers, their shamans are ecstatic mystics."))
102 (define (gen-primal gen player) (say gen "You can tell I admire them? But in the wars I fought them, not understanding what they were. "
103                                      "I have friends among the wild forest goblins, now. The cave goblins, though, they are another story..." ))
104 (define (gen-cave   gen player) (say gen "The cave goblins, who are larger and stronger than their forest cousins, prefer to live in the deeps of the world. "
105                                      "Their dark god demands living sacrifices. Beware them if you explore the caves, they burn with hatred for humankind." ))
106
107 (define (gen-language kgen player)
108   (let ((gen (kobj-gob-data kgen)))
109     (say kgen "Yes, I can speak a few words of goblin. Would you like to learn?")
110     (if (kern-conv-get-yes-no? player)
111         (if (gen-gave-notes? gen)
112             (say kgen "Study the notes I gave you, and then practice on me.")
113             (begin
114               (say kgen "Here are some notes I have made on their language. You may keep it. Feel free to practice with me.")
115               (kern-obj-add-to-inventory player t_goblin_lexicon 1)
116               (gen-set-gave-notes! gen #t)))
117         (say kgen "Perhaps another time."))))
118
119
120 (define (gen-practice gen player) (say gen "If you want to practice speaking goblin, just ask me something in goblin!" ))
121
122 (define (gen-join gen player)
123   (if (gen-will-join? (kobj-gob-data gen))
124       (begin
125         (say gen "Yes, I will join you. "
126              "I'll need my equipment from my chest, "
127              "so let's go to my hut in the west part of town. "
128              "Once more unto the breach, dear friends!")
129              (join-player gen))
130       (say gen "No, for the woods call my name.")))
131
132 ;; SAM: Added a few words from the Lexicon which were not defined as responses.
133 ;;      These were (Iki, Lu, Nin)
134 ;;      Also enhanced a few responses such as for (Eh).
135 ;; Added responses having to do with the concepts of Wanderer, Warrior, Wizard, Rogue, Wright.
136 ;; A bit of organization/tidying may still be wanted, to make sure there are no loose ends .
137
138 (define (gen-da  gen player) (say gen "Ha! Da-Ma-To means forest goblin." ))
139 (define (gen-gu  gen player) (say gen "Ha! Da-Gu means world." ))
140 (define (gen-ru  gen player) (say gen "Ha! Da-Ru-To means cave goblin." ))
141 (define (gen-no  gen player) (say gen "Bo-No-Gen. But the goblins call me Ma-Zu-To." ))
142 (define (gen-ki  gen player) (say gen "Bo-Ha-Ki! I am healthy." ))
143 (define (gen-jo  gen player) (say gen "Very good! If you befriend a goblin he may join you in your adventures."))
144 (define (gen-cho gen player) (say gen "Ha! Cho-To means 'a man'." ))
145 (define (gen-nu  gen player) (say gen "Ha! Nu-Ki is the goblin word for 'food'" ))
146 (define (gen-ha  gen player) (say gen "Yes, Ha is a general affirmative term." ))
147 (define (gen-tu  gen player) (say gen "Right, Tu is a general negative term." ))
148 (define (gen-bo  gen player) (say gen "Yes, Bo-Gu means your spirit self, which is your altar ego in the spirit world." ))
149 (define (gen-na  gen player) (say gen "Yes, Bo-Na means 'us', or 'tribe'. Bo-Na-Ma refers to forest goblins in general." ))
150 (define (gen-to  gen player) (say gen "Right, To is a general suffix meaning person." ))
151 (define (gen-ma  gen player) (say gen "Yes, and Ka-Ma-To is their term for lumberjack." ))
152 (define (gen-eh  gen player) (say gen "Eh?  Ah yes, Eh-Na-Me means what is your job, or duty." ))
153 (define (gen-iki gen player) (say gen "Ha! Bo-Iki-Da means 'I go home'."))
154
155 (define (gen-me  gen player) (say gen "Bo-Ma-Zu. I watch the forest, or I seek the hidden ways.  Me-Lu-Ki is to grow, change, learn, explore.  Such is the path of the Wanderer!"))
156 (define (gen-ka  gen player) (say gen "Ha! Ka-Ha-To means warrior.  And Me-Ka-Ha is the path of the Warrior!"))
157 (define (gen-hi  gen player) (say gen "Ha! Hi-Ma-To is the word for 'shaman'.  And Me-Ha-Zu-Ru is the path of the Wizard!"))
158 (define (gen-nin gen player) (say gen "Ha! Nin-Ma-To is a Forest Stalker.  And Me-Ha-Nin-Zu is the path of the Rogue!"))
159 (define (gen-lu  gen player) (say gen "Ha! Lu-Da-To is one who makes.  And Me-Ha-Lu-Da is the path of the Wright!"))
160
161 (define (gen-zu       gen player) (say gen "Good! And Zu-To means seeker, or Wanderer.  [He looks at you percingly.]  Iki Meluki?"))
162 (define (gen-meluki   gen player) (say gen "So, you are a seeker indeed.  I would join you, if you can master Gunodama"))
163 (define (gen-gunodama gen player) (say gen "The names given by the ancestor spirits, to those who abide in the forest.  In other words, the language of the Forest Goblins."))
164
165 (define (gen-nuki knpc kpc)
166   (say knpc "That's goblinese for 'food'."))
167
168 (define (gen-bonaha gen player) 
169   (say gen "Excellent! That is the goblin word for friend. You have come far in mastering their language.")
170   (gen-set-will-join! (kobj-gob-data gen) #t))
171
172 (define (gen-shroom gen player) (say gen "She is an old friend. Can you believe she was a war-maiden in the Goblin Wars?"))
173 (define (gen-maiden gen player) (say gen "It's true! I can still remember her hand-axe flashing in the moonlight "
174                                    "as she hacked her way through goblin war parties, chanting a battle-ward "
175                                    "with ragged breath! She was a sight to see."))
176
177 (define (gen-thie knpc kpc)
178   (say knpc "I've seen no one odd around here, but the goblins who live in "
179        "the north wood recently saw a lone man traveling northeast toward "
180        "Bole.")
181        (quest-data-update 'questentry-thiefrune 'tower 1)
182        (quest-data-update-with 'questentry-thiefrune 'bole 1 (quest-notify (grant-party-xp-fn 10)))
183        )
184
185 (define (gen-kama knpc kpc)
186   (if (is-player-party-member? ch_kama)
187       (begin
188         (say knpc "I see Kama has joined you. Bonaha Kama!")
189         (say ch_kama "Unh. Bonaha Mazuto."))
190       (begin
191         (say knpc "Kama is a forest goblin hunter. He was supposed to meet me at the edge of town a few nights back but he never showed up. Have you seen him?")
192         (if (yes? kpc)
193             (begin
194               (say knpc "Is he in trouble?")
195               (if (yes? kpc)
196                   (say knpc "We must help him if we can!")
197                   (say knpc "That is a relief!")))
198             (say knpc "If you do, let me know. I'm a bit worried.")))))
199             
200 (define (gen-ruka knpc kpc)
201   (say knpc "Ruka is the goblin's name for Angriss, their god of death. "
202        "The priests of Angriss were agitators during the goblin wars. "
203        "Her cult has all but died out since their defeat. ")
204   (prompt-for-key)
205   (say knpc "Now, she is only a myth to keep children from straying into the woods, "
206        "where more practical dangers still exist."))
207
208 (define (gen-clov knpc kpc)
209   (say knpc "King Clovis led the paladins in the Goblin War. "
210        "If my friend Kama would ever show up we could ask him "
211        "if the goblins ever recovered his body.")
212        (quest-data-update-with 'questentry-rune-f 'kama 1 (quest-notify nil))
213        )
214
215 (define (gen-band knpc kpc)
216   (say knpc "The goblins report a bandit camp somewhere to the south and west. "
217        "Perhaps Deric knows more."))
218
219 (define gen-conv
220   (ifc basic-conv
221        ;;;; Goblin root words:
222        (method 'bo  gen-bo)  ; My, Myself
223        (method 'cho gen-cho) ; Mankind
224        (method 'da  gen-da)  ; Abode, World
225        (method 'eh  gen-eh)  ; What?
226        (method 'gu  gen-gu)  ; Spirit, Ancestor
227        (method 'ha  gen-ha)  ; Good, yes, skillful
228        (method 'hi  gen-hi)  ; Magic
229        (method 'iki gen-iki) ; Go
230        (method 'jo  gen-jo)  ; Join
231        (method 'ka  gen-ka)  ; Kill
232        (method 'ki  gen-ki)  ; Health
233        (method 'lu  gen-lu)  ; Change
234        (method 'me  gen-me)  ; Forest
235        (method 'ma  gen-ma)  ; Duty, Job, Destiny
236        (method 'na  gen-na)  ; Your, yourself
237        (method 'nin gen-nin) ; Stealth
238        (method 'no  gen-no)  ; Name
239        (method 'nu  gen-nu)  ; Give birth, Create, Begin
240        (method 'ru  gen-ru)  ; Ancient, Primordial, Deep, Cave
241        (method 'to  gen-to)  ; Individual
242        (method 'tu  gen-tu)  ; No, Bad
243        (method 'zu  gen-zu)  ; Watch, Seek
244
245        ;;;; Goblin composite words / phrases:
246        (method 'bona gen-bonaha)   ; Friend
247        (method 'kama gen-kama)     ; Kama, the goblin friend of Gen
248        (method 'nuki gen-nuki)     ; Food
249        (method 'ruka gen-ruka)     ; Angriss, the Spider Queen
250        (method 'melu gen-meluki)   ; Seeker, Wanderer
251        (method 'guno gen-gunodama) ; the language of the Forest Goblins
252
253        ;;;; Responses in human speech:
254        ;; Standard responses:
255        (method 'default gen-default)
256        (method 'hail gen-hail)
257        (method 'name gen-name)
258        (method 'job  gen-job)
259        (method 'join gen-join)
260        (method 'bye  gen-bye)
261
262        ;; Having to do with the goblin language:
263        (method 'gobl gen-goblin)
264        (method 'lang gen-language)
265        (method 'prac gen-practice)
266
267        ;; Other responses:
268        (method 'admi gen-primal)
269        (method 'ambi gen-ambitious)
270        (method 'band gen-band)
271        (method 'capt gen-captain)
272        (method 'cave gen-cave)
273        (method 'fore gen-job)
274        (method 'maid gen-maiden)
275        (method 'prim gen-primal)
276        (method 'rang gen-ranger)
277        (method 'reas gen-reasons)
278        (method 'sava gen-primal)
279
280        (method 'cult gen-culture)
281        (method 'shak gen-shakespeare)
282        (method 'bard gen-shakespeare)  ;; synonyn
283        (method 'haml gen-shakespeare)  ;; synonyn
284
285        (method 'shro gen-shroom)
286        (method 'thie gen-thie)
287        (method 'wars gen-wars)
288        (method 'wood gen-woodsman)
289        (method 'clov gen-clov)
290        ))
291
292 ;;----------------------------------------------------------------------------
293 ;; First-time constructor
294 ;;----------------------------------------------------------------------------
295 (define (mk-gen tag)
296   (bind 
297    (kern-mk-char tag                 ; tag
298                  "Gen"               ; name
299                  sp_human            ; species
300                  oc_ranger           ; occ
301                  s_old_ranger  ; sprite
302                  faction-men         ; starting alignment
303                  4 2 4                   ; str/int/dex
304                  pc-hp-off  ; hp bonus
305                  pc-hp-gain ; hp per-level bonus
306                  0 0                 ; mp mod/mult
307                  max-health -1 max-health 0 3  ; hp/xp/mp/AP_per_turn/lvl
308                  #f                  ; dead
309                  'gen-conv           ; conv
310                  sch_gen             ; sched
311                  'townsman-ai        ; special ai
312                  (mk-inventory (list (list 1 t_dagger) 
313                                      (list 1 t_playbook_hamlet)
314                                      ))  ; container
315                  (list t_armor_leather)                ; readied
316                  )
317    (gen-mk #f #f)))