# Kralee (module 37: CKralee, "Morphology: Kralee" - a CWallCrawler that crawls the walls and floors
# between its waypoints and warps out (invisible and intangible, WarpOut/WarpOutExit) and back in
# (WarpIn) on its own visible/invisible timers or on script messages).
# Temple Grounds 0b_temple_hall (world 3bfa3eff, layer 0) holds both of the area's Kralees,
# e00100090 and e0010008f, both with visibleTime = invisibleTime = 0.
# The steps repeat the kr1 lane's tools/cov/specs/kralee.con: god mode with the Dark and Echo visors,
# `objs Kralee`, `place` e00100090 two units from the player, Increment/Decrement (WarpOut and
# WarpIn the placed one), the dark, echo and combat visor cycle between them, another `place` and
# Increment, `setarea` to bring e0010008f's area back, `kill` on e0010008f and a
# last `objs Kralee` - with `obj` reads of e00100090 and e0010008f around the steps.
# Evidence in the transcript: `objs Kralee` listing the area's two Kralees at f300 - u0447 00100090
# at (264.7, -74.1, -38.9) and u0415 0010008f at (265.6, -69.0, -36.7), 2 objects - and only
# u0447 00100090 at (223.0, -107.8, -37.6), 1 object, at f1160 once the `kill` has deleted
# e0010008f; `obj` reading hp 5/5, fsm Patrol, body state 5 and each Kralee's own message map
# (on Patrol send Follow to e0010008f's waypoint 00100040 and to e00100090's 0010004b, on Dead send
# SetToZero to the pickup generator 00100074 and the generator 00100056), unchanged through f700;
# `place` answering with the new position 220.53 -119.16 -40.51 (220.41 -120.18 -40.47 the second
# time); the Increment and Decrement sends answering `sent Increment to u0447 00100090` (WarpOut and
# the WarpIn that follow it), the visors `visor -> dark`/`-> echo`/`-> combat`, `setarea
# e0010008f 16` answering `area 16 -> 16`, and `kill e0010008f` answering `killed`. Every step
# answers `=> ok`. The log's `init
# compiled module Kralee` line lists the whole compiled-module table, so it says the module is
# registered, not that it ran.
# Checks are game updates (@f<n>), never wall seconds. The family stays capped (NC), measured:
# unpaced, its 1300 updates run from 0.1 s to 0.3 s (~6500 a second) and console.py connects at 0.5 s,
# i.e. after the run's frame limit is up, so the steps only run in the shutdown window (kral's fast
# transcript was identical, but nothing guarantees it: an empty transcript still reports 0
# caught/stub). Capped, its 1300 updates take ~20 s. F=1360, last check f1160.
@f300 god 1; give DarkVisor 1; give EchoVisor 1; objs Kralee; obj e0010008f
@f340 place e00100090 player 2; send e00100090 Increment; send e00100090 Decrement
@f380 send e00100090 Decrement; obj e00100090
@f460 obj e00100090; visor dark
@f520 visor echo
@f580 visor combat; place e00100090 player 2; send e00100090 Increment
@f700 obj e00100090; send e00100090 Decrement
@f800 visor dark
@f860 send e00100090 Increment; visor combat
@f900 obj e0010008f
@f905 damage e0010008f 1 missile
@f910 obj e0010008f
@f915 damage e0010008f 1 dark
@f920 obj e0010008f
@f925 damage e0010008f 1 light
@f930 obj e0010008f
@f935 damage e0010008f 1 powerbomb
@f940 obj e0010008f
@f945 fsm e00100090 WarpOut
@f950 obj e00100090
@f960 setarea e0010008f 16; obj e0010008f
@f1000 kill e0010008f
@f1100 visor dark
@f1160 visor combat; objs Kralee
