*光源 [#t30fdfd8] **構造体 [#i3f59171] light_source は位置情報を持つ物体(現在はobjとmonst)にくっつけることができ、 type と id で識別される |type|id|備考|h |LS_OBJECT|struct obj *|oil lampなど| |LS_MONSTER|struct monst *|yellow lightなど| **光源とタイマー [#nf063cd0] 永久光源は[[タイマー]]を使用しない。寿命があるものは以下のように[[タイマー]]と obj->age を利用している。 ***消灯時 [#n4dd7df8] obj->age は残りターン数 ***点灯時 [#fc4b6eed] obj->age は「タイマーが0になった後の残りターン数」 -brass lantern, oil lamp: 150, 100, 50, 25, 0 -Candelabrum of Invocation, tallow candle, wax candle: 75, 15, 0 タイマーが0になったときに、burn_object() が obj->age を上記のマジックナンバーと比較し、一致したらメッセージを出し、begin_burn() を呼んで新たなタイマーをセット -obj->age がこれらの特定の値になるようにセットしているのは begin_burn() -obj->age が 1000 の oil lamp に対して begin_burn() を呼ぶと、期間850のタイマーがセットされ、obj->age は 150 となる -begin_burn() → burn_object() → begin_burn() → burn_object() → end_burn() → stop_timer() → cleanup_burn()