1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346
|
(game-module "wizard"
(blurb "Wizard dominated game")
)
;(game-module (title "when the gods were young"))
(unit-type w (name "wagon") (char "w") (image-name "wiz-wagon")
(help "moves supplies"))
(unit-type s (name "ship") (char "s") (image-name "wiz-ship")
(help "transports units over water"))
(unit-type g (name "grog") (char "g") (image-name "wiz-grog")
(help "marches around and captures things"))
(unit-type k (name "knight") (char "k") (image-name "wiz-knight")
(help "rides around and captures things better"))
(unit-type d (name "demon") (char "d") (image-name "wiz-demon")
(help "kills and captures even better"))
(unit-type f (name "fire") (char "f") (image-name "wiz-fire")
(help "burns things up"))
(unit-type e (name "earth") (char "e") (image-name "wiz-earth")
(help "very strong, hard to kill"))
(unit-type a (name "air") (char "a") (image-name "wiz-air")
(help "carries things through the sky"))
(unit-type c (name "crystal") (char "c") (image-name "wiz-crystal")
(help "sees very far"))
(unit-type m (name "manicon") (char "m") (image-name "wiz-manicon")
(help "concentrated mana ball"))
(unit-type W (name "wizard") (char "W") (image-name "wiz-wizard")
(help "makes magic"))
(unit-type * (name "town") (char "*") (image-name "wiz-town")
(help "produces food and grogs only"))
(unit-type @ (name "city") (char "@") (image-name "wiz-city")
(help "produces all things except mana"))
(unit-type ! (name "guild") (char "!") (image-name "wiz-guild")
(help "produces mana and wizards"))
(unit-type $ (name "outpost") (char "$") (image-name "wiz-outpost")
(help "supplies mundanes"))
(material-type food (help "what people eat"))
(material-type mana (help "magic energy"))
(material-type drink (help "what people drink"))
(terrain-type sea (char ".") (color "sky blue"))
(terrain-type shallows (char ",") (color "cyan"))
(terrain-type swamp (char "=") (color "yellowgreen"))
(terrain-type desert (char "~") (color "yellow"))
(terrain-type plains (char "+") (color "green"))
(terrain-type forest (char "%") (color "forest green"))
(terrain-type mountains (char "^") (color "sienna"))
(terrain-type ice (char "_") (color "white"))
(terrain-type vacuum (char ":") (color "black"))
;FIXME I guess nuked is damaged-terrain now, T1 T2 -> N
;FIXME t* t* nuked ; most terrain won't actually change
;FIXME desert ( plains forest ) nuked
;FIXME mountains ice nuked
(define water ( sea shallows ))
(define land ( plains forest desert mountains ))
(define marsh swamp)
(define cities ( ! * @ ))
(define mundanes ( w s g k ))
(define wizards ( W ))
(define ships s)
(define flyers ( a m ))
(define ground ( w g k d f e c W ))
(define movers ( w s g k d f e a c m W ))
(define spells ( d f e a c m ))
(define stupid ( w g m * ))
(define smart ( k s d f e a c W @ ! ))
(define slow ( w g c ))
(define swift ( k d f e a W ))
;FIXME spy-quality is U1 U2 -> % that U1 returns info about U2
(table spy-quality (u* u* 10))
; w s g k d f e a c m W * @ ! $
; ( 10 10 10 5 10 1 1 1 1 1 5 50 40 15 15 ) u* revolt
; ( 30 20 20 10 5 1 1 1 1 1 15 99 70 20 30 ) u* surrender
; ( 30 20 20 10 1 1 1 1 1 1 20 99 99 15 20 ) u* siege
; 300 sea ships disaster
; "is lost in a storm" s disaster-message
; 100 t* a disaster
; "is lost in a storm" a disaster-message
; no disasters
;;; Static relationships.
;; Unit-unit.
;FIXME unit-size-as-occupant is U1 U2 -> N U1's size as occupant of U2
(table unit-size-as-occupant add (u* u* 1))
(table unit-size-as-occupant add (e u* 3))
;(table mp-per-occupant add (ships e 50))
;FIXME occupant-max is U1 U2 -> N upper limit on occupants by type
(table occupant-max add (e movers 1))
;FIXME capacity is N, upper limit on total occupants by size
(add movers capacity 1)
(add ( * @ ! $ ) capacity 30)
(add s capacity 3)
(table occupant-max add (s movers 3))
(table occupant-max add (a spells 1))
(table occupant-max add (a e 0))
(table occupant-max add (a wizard 1))
(table occupant-max add (spells m 1))
(table occupant-max add (wizards spells 1))
;(table mp-per-occupant add (wizards ( d f e ) 0))
(table occupant-max add (u* c 1))
(table occupant-max add ($ u* 5))
(table occupant-max add (( * ! ) u* 10))
(table occupant-max add (@ u* 20))
(table occupant-max add (w ( g k ) 1))
(table occupant-max add (( ! $ @ * ) ( ! $ * @ ) 0))
;; Unit-terrain.
;; Unit-material.
(table unit-storage-x
(wizards mana 25)
(! mana 150)
(spells mana 10)
(m mana 25)
(@ food 150)
(( * $ ) food 40)
(mundanes food 10)
(w food 20)
(mundanes drink 3)
(w drink 5)
(ships drink 4)
(cities drink 10)
($ drink 10)
(! food 10)
)
(table productivity add (@ land ( 100 50 20 20 ))) ; one arg must be a scalar...
(table productivity add (* land ( 100 50 20 20 )))
(table productivity add (( $ ! ) land 100))
(table productivity add (ships ( shallows marsh ) 100))
(table productivity add (mundanes land 100))
(table productivity add (mundanes desert 20))
(table base-production add (mundanes drink 2))
(table base-production add (( $ ! * @ ) drink 10))
(table base-production add (( @ * ) food 10))
(table base-production add ($ food 4))
(table base-production add (! mana 10))
(table base-consumption add (mundanes food 1))
(table base-consumption add (spells mana 1))
(table base-consumption add (mundanes drink 1))
(table base-consumption add (wizards mana 1))
(table out-length add (u* m* 1))
(table in-length add (u* m* 1))
(table out-length add (( ! @ $ * ) m* 2))
;;; Actions.
;FIXME don't forget to add acp-per-turn for non-movers!
; w s g k d f e a c m W
(add movers acp-per-turn ( 1 6 1 2 3 4 1 10 3 8 3 ))
;;; Movement.
;FIXME moves is mp-to-{enter|leave}-terrain U T -> MP
(table mp-to-enter-terrain add (slow land 1))
(table mp-to-enter-terrain add (g marsh 1))
(table mp-to-enter-terrain add (e marsh 2))
(table mp-to-enter-terrain add (swift ( forest mountains marsh ) 2))
(table mp-to-enter-terrain add (swift ( plains desert ) 1))
(table mp-to-enter-terrain add (ships land 99))
(table mp-to-enter-terrain add (ships water 1))
(table mp-to-enter-terrain add (ships shallows 3))
(table mp-to-enter-terrain add (ships marsh 5))
(table mp-to-enter-terrain add ($ land 1))
(table mp-to-enter-terrain add (flyers t* 1))
;;; Construction.
;FIXME make is replaced by acp-to-create, cp-per-build and friends
;FIXME ( 4 12 4 9 ) mundanes @ make
;FIXME ( 7 20 4 15 ) mundanes * make
;FIXME 12 wizards ! make
;FIXME 4 spells wizards make
;FIXME occupant-base-production is U M -> N of M that U produces as occupant
(table occupant-base-production (u* m* 1))
;FIXME 4 $ w make
(table material-to-build add (spells mana 4))
;FIXME tp-to-build is U1 U2 -> TP that U1 needs before building U2
; you also need UnitProperty acp-to-toolup and Table tp-per-toolup
(table tp-to-build add (u* u* 20))
;FIXME this is handled by tech level and research now...
;FIXME 50 mundanes research
;FIXME 200 wizards research
;FIXME 100 spells research
;FIXME 100 m research
;FIXME 50 $ research
;FIXME hp-per-repair is U1 U2 -> .01HP that U1 restores to U2 per repair action
; ...and you have to add...
; acp-to-repair is U1 U2 -> ACP to do one repair action
(table acp-to-repair add (u* u* 1))
(table hp-per-repair add (u* u* 14))
;;; Combat.
(add u* hp-max ( 1 2 1 1 3 1 5 1 1 1 2 5 10 15 8 ))
;FIXME in addition you can set hp-to-repair and other things to cripple a unit
;(add u* hp-at-min-speed ( 0 1 0 0 1 0 2 0 0 0 1 2 3 5 4 ))
; w s g k d f e a c m W * @ ! $
(table hit-chance add (w u* ( 50 20 10 10 5 5 5 5 20 70 30 30 10 5 10 )))
(table hit-chance add (s u* ( 40 50 30 20 15 20 5 20 30 70 30 35 25 10 25 )))
(table hit-chance add (g u* ( 70 60 50 30 20 30 10 30 40 80 40 50 40 25 40 )))
(table hit-chance add (k u* ( 80 70 70 50 35 50 20 50 50 85 50 65 50 35 50 )))
(table hit-chance add (d u* ( 85 80 75 65 50 60 30 65 70 90 25 70 60 50 60 )))
(table hit-chance add (f u* ( 90 90 85 70 60 70 40 70 85 80 35 75 70 50 70 )))
(table hit-chance add (e u* ( 80 70 70 50 35 40 20 50 85 80 15 70 70 70 70 )))
(table hit-chance add (a u* ( 50 80 50 40 35 40 20 50 45 75 20 40 35 30 35 )))
(table hit-chance add (c u* ( 20 15 10 5 5 5 5 5 20 50 15 20 10 5 10 )))
(table hit-chance add (m u* ( 90 90 80 70 65 70 60 75 80 70 65 90 80 60 80 )))
(table hit-chance add (W u* ( 90 90 75 65 60 65 40 65 80 80 50 70 60 50 60 )))
(table hit-chance add (* u* ( 50 20 10 10 5 5 5 5 20 70 30 30 10 5 10 )))
(table hit-chance add (@ u* ( 70 60 50 30 20 30 10 30 40 80 40 50 40 25 40 )))
(table hit-chance add (! u* ( 90 90 75 65 60 65 40 65 80 80 50 70 60 50 60 )))
(table hit-chance add ($ u* ( 70 60 50 30 20 30 10 30 40 80 40 50 40 24 40 )))
(table damage add (u* u* 1))
(table damage add (d u* 2))
(table damage add (f u* 4))
(table damage add (f ( e ! $ ) 1))
(table damage add (e ( @ ! $ * ) 3))
(table damage add (m u* 8))
(table damage add (a ships 3))
(table consumption-per-attack add (m mana 20))
;(add m acp-to-detonate 0)
(add m acp-to-detonate 1)
(table capture-chance add (g ( * @ ! $ ) ( 50 30 10 30 )))
(table capture-chance add (k ( * @ ! $ ) ( 70 50 15 50 )))
(table capture-chance add (d ( * @ ! $ ) ( 70 50 25 50 )))
(table capture-chance add (wizards spells 20))
(table capture-chance add (W ( * @ ! $ ) ( 70 50 50 50 )))
;FIXME ferry-on-entry is U1 U2 -> FTYPE how much terrain U2 crosses to board U1
(table ferry-on-entry add (( * @ ! $ ) ( g k d W ) over-all)) ; infantry can capture cities even on water.
(table protection add (* movers 80))
(table protection add (( @ ! ) movers 50))
(table protection add (! movers 20)) ; cities offer some protection to occupants
(table protection add (k ( * @ ! $ ) 90)) ; armor protect the cities housing them.
(table protection add (W ! 90)) ; can't make this too large or city can be
(table protection add (( d f e ) ! 93)) ; invulnerable.
(table protection add (g ( * @ ! $ ) 95)) ; same for infantry.
(table protection add (e movers 50))
(add u* acp-to-change-side 0) ; but armies have some loyalty
(add ( c a m ) acp-to-change-side ( 80 65 40 ))
(add ( * @ ! $ ) acp-to-change-side 100)
;FIXME true u* neutral
;FIXME false spells neutral
;FIXME true ( c m ) neutral
;FIXME false capturemoves
(table consumption-as-occupant add (u* m* true))
;FIXME survival is now hp-per-starve U M -> HP
(table hp-per-starve add (u* m* 30))
; 10 u* max-quality
; 2 u* veteran
; ( 90 95 90 95 90 90 90 90 90 90 95 85 90 95 90 ) u* control
;FIXME "vanquishes" movers destroy-message
;FIXME "sacks" cities destroy-message
;FIXME hp-per-disband is U1 U2 -> HP lost in a disband action performed by U2
; you might add U1 acp-to-disband U2 as well, U1 U2 -> ACP
; (table hp-per-disband add (movers u* 100))
;;; Vision.
;FIXME vision-at is N, coverage afforded by unit in its own hex
;(add u* vision-at-max-range ( 40 60 50 70 80 70 50 70 90 30 85 40 70 85 70 ))
;(add u* vision-at ( 1 2 1 1 1 1 1 2 10 1 2 1 2 3 ))
;FIXME vision-at-max-range is N, coverage afforded by unit at max range
(add u* vision-range ( 30 40 40 55 70 60 40 60 75 20 75 30 60 75 70 ))
;FIXME visibility is U T -> N, U's % visibility in T
;(table visibility add (wizards t* 40))
;FIXME conceal is now visibility, you should subtr these numbers from that table
;FIXME 15 ( forest mountains ) u* conceal
;;; Setup.
(add t* alt-percentile-min ( 0 68 69 70 70 70 93 99 0 ))
(add t* alt-percentile-max ( 68 69 71 93 93 93 99 100 0 ))
(add t* wet-percentile-min ( 0 0 50 0 20 80 0 0 0 ))
(add t* wet-percentile-max ( 100 100 100 20 80 100 100 100 0 ))
(set edge-terrain ice)
(add @ start-with 1)
(add ! start-with 1)
(add * start-with 5)
(add W start-with 1)
(table favored-terrain
(u* t* 0)
(* land 20)
(* plains 40)
(@ plains 100)
(! land 20)
(! mountains 40)
)
(set country-separation-min 10)
(set country-separation-max 30)
(table independent-density
(* land 50)
(* plains 150)
(@ land 20)
(@ plains 50)
(! land 20)
(! plains 50)
)
;;; Scoring.
(add ( * @ ! $ ) point-value ( 1 5 10 1 ))
(scorekeeper (do last-side-wins))
;;; Documentation.
(game-module (instructions (
)))
(game-module (notes (
)))
(game-module (design-notes (
)))
|