OSDN Git Service

efdc4f479994945dead2a27f7fb0bf38188ec87b
[nazghul-jp/nazghul-jp.git] / worlds / haxima-1.002 / jess.scm
1 ;;----------------------------------------------------------------------------
2 ;; Constants
3 ;;----------------------------------------------------------------------------
4
5 ;;----------------------------------------------------------------------------
6 ;; Schedule
7 ;; 
8 ;; In Glasdrin.
9 ;;----------------------------------------------------------------------------
10 (kern-mk-sched 'sch_jess
11                (list 0  0  gj-bed      "sleeping")
12                (list 7  0  ghg-counter "working")
13                (list 9  0  g-fountain  "idle")
14                (list 10 0  ghg-counter "working")
15                (list 13 0  gc-hall     "idle")
16                (list 14 0  ghg-counter "working")
17                )
18
19 ;;----------------------------------------------------------------------------
20 ;; Gob
21 ;;----------------------------------------------------------------------------
22 (define (jess-mk) (list 'townsman))
23
24 ;;----------------------------------------------------------------------------
25 ;; Conv
26 ;; 
27 ;; Jess is the female proprietress of the Holy Grail tavern in Glasdrin.
28 ;; Her face is scarred, the result of an encounter with goblins 
29 ;; when serving as a crossbowman in the Glasdrin militia.
30 ;;----------------------------------------------------------------------------
31
32 ;; Basics...
33 (define (jess-hail knpc kpc)
34   (if (string=? "working" (kern-obj-get-activity knpc))
35       (say knpc "[You meet an otherwise attractive young woman with a hideous "
36            "scar on one side of her face]. Relax, gentlemen, you've finally "
37            "found the Holy Grail!")
38       (say knpc "[You meet an otherwise attractive young woman with a hideous "
39            "scar on one side of her face]. Nice day, isn't it?")))
40
41 (define (jess-default knpc kpc)
42   (say knpc "Hm... I don't know."))
43
44 (define (jess-name knpc kpc)
45   (if (working? knpc)
46       (say knpc "I'm Jess, proprieter of this here oasis.")
47       (say knpc "I'm Jess, proprieter of the Holy Grail. "
48            "Come by some time when you're thirsty.")))
49
50 (define (jess-join knpc kpc)
51   (say knpc "No thanks, I get enough action throwing out drunks and "
52        "breaking up fights."))
53
54 (define (jess-job knpc kpc)
55   (say knpc "I tempt the weak-minded with my wares. Care to see them?")
56   (if (kern-conv-get-yes-no? kpc)
57       (begin
58         (say knpc "[She winks] I thought you would!")
59         (jess-trade knpc kpc))
60       (say knpc "Too bad.")))
61
62 (define (jess-bye knpc kpc)
63   (say knpc "So long, come back again!"))
64
65 (define jess-catalog
66   (list
67    (list t_food 7  "The paladins love my roast beef.")
68    (list t_beer 12 "Have a grail-ful!")
69    ))
70
71 (define jess-merch-msgs
72   (list "Come by the Holy Grail when I'm working. Breakfast is between 7:00AM and 9:00AM, lunch is 10:00AM to 1:00PM and I reopen at 2:00PM until midnight."
73         "Here's a menu!"
74         nil ;; sell
75         nil ;; trade
76         "Enjoy!" ;; sold-something
77         "Well, it beats hard-tack!" ;; sold-nothing
78         nil ;; the rest are nil
79         ))
80
81 ;; Trade...
82 (define (jess-buy knpc kpc) (conv-trade knpc kpc "buy" jess-merch-msgs jess-catalog))
83
84 ;; Holy Grail
85 (define (jess-grai knpc kpc)
86   (say knpc "According to legend, a Wanderer suggested the title. "
87        "It was based on a popular story in his home-world."))
88
89 ;; Scar
90 (define (jess-scar knpc kpc)
91   (say knpc "I got that courtesy of some cave goblins and a guard who "
92        "couldn't stay awake. They ambushed us while we were sleeping, "
93        "I caught the edge of an axe with my cheek, but my helmet took "
94        "the worst of it. Do you like stories of battles?")
95   (if (kern-conv-get-yes-no? kpc)
96       (say knpc "Everyone in town has at least one. We've all served.")
97       (say knpc "Too bad, because this is the place to hear them.")))
98
99 (define (jess-serv knpc kpc)
100   (say knpc "All citizens of Glasdrin must serve a tour of duty. "
101        "I was a crossbowman, my job was to support the heavy armor from "
102        "behind. My outfit served on the eastern marches of the Great Wood."))
103
104 (define (jess-wood knpc kpc)
105   (say knpc "The rangers keep things pretty well in hand, but that year "
106        "the cave goblins and trolls were coming out in force."))
107
108 ;; Townspeople...
109 (define (jess-glas knpc kpc)
110   (say knpc "It's a nice enough place, considering its an armed camp."))
111
112 (define (jess-ange knpc kpc)
113   (say knpc "A nice lady. Not exactly a fighter, but she does her part."))
114
115 (define (jess-patc knpc kpc)
116   (say knpc "Dirty old man! No, I'm just teasing him."))
117
118 (define jess-conv
119   (ifc glasdrin-conv
120
121        ;; basics
122        (method 'default jess-default)
123        (method 'hail jess-hail)
124        (method 'bye  jess-bye)
125        (method 'job  jess-job)
126        (method 'name jess-name)
127        (method 'join jess-join)
128        
129        ;; trade
130        (method 'grai jess-grai)
131        (method 'holy jess-grai)
132        (method 'trad jess-buy)
133        (method 'room jess-buy)
134        (method 'buy  jess-buy)
135        (method 'drin jess-buy)
136        (method 'ware jess-buy)
137        (method 'food jess-buy)
138
139        ;; scar
140        (method 'trade jess-buy)
141        (method 'scar  jess-scar)
142        (method 'serv  jess-serv)
143        (method 'wood  jess-wood)
144
145        ;; town & people
146        (method 'glas jess-glas)
147        (method 'ange jess-ange)
148        (method 'patc jess-patc)
149
150        ))
151
152 (define (mk-jess)
153   (bind 
154    (kern-mk-char 'ch_jess           ; tag
155                  "Jess"             ; name
156                  sp_human            ; species
157                  nil                 ; occ
158                  s_townswoman        ; sprite
159                  faction-glasdrin         ; starting alignment
160                  0 0 1               ; str/int/dex
161                  0 0                 ; hp mod/mult
162                  0 0                 ; mp mod/mult
163                  max-health -1 max-health 0 3  ; hp/xp/mp/AP_per_turn/lvl
164                  #f                  ; dead
165                  'jess-conv         ; conv
166                  sch_jess           ; sched
167                  'townsman-ai                 ; special ai
168                  (mk-inventory (list (list 1 t_dagger)))                 ; container
169                  nil                 ; readied
170                  )
171    (jess-mk)))