Torture chamber with prisoners and defectors, Jailer; temple with prayer, Flame Priestess

- defeated heroes are knocked out if the torture chamber has room; imps carry them in
- torture drains HP over ~100 s; ~40% defect (paladins ~25%) and become own creatures
- Jailer (6+ torture tiles): tanky melee that pulls enemies in with a chain
- temple: creatures pray for mana (more than studying) and mood
- Flame Priestess (6+ temple tiles): fireballs with splash, heals creatures and the Soul Core
- tests: prisoner chain + defect rate, temple prayer + core healing

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-03 07:53:58 +01:00
1 parent 903d6fb0f4
commit a1ad5ad141
7 files changed
+545 -25

No files matched your search

+8
View File
@@ -607,6 +607,10 @@ pub fn hover_info(g: &Game, ent: Option<usize>, tile: Option<(i32, i32)>) -> Vec
let s = st(e.kind);
out.push((trf("info.level", &[tr(s.name), e.level.to_string()]), if e.hero { BLUE } else { FRAME_HI }));
out.push((trf("info.hp", &[(e.hp.max(0.0) as i32).to_string(), (e.max_hp as i32).to_string()]), GREEN));
if e.hero && e.captive != 0 {
out.push((tr(["", "info.unconscious", "info.carried", "info.tortured"][e.captive.min(3) as usize]), RED));
return out;
}
out.push((tr(job_name(e)), TXT));
if e.hero {
out.push((tr(if e.guard { "info.guard" } else { "info.intruder" }), BLUE));
@@ -678,6 +682,10 @@ pub fn hover_info(g: &Game, ent: Option<usize>, tile: Option<(i32, i32)>) -> Vec
match k {
Kind::Farm => out.push((trf("farm.food", &[(t.food as i32).to_string()]), GREEN)),
Kind::Lair => out.push((tr(if t.bed != 0 { "lair.taken" } else { "lair.free" }), DIM)),
Kind::Torture => {
let used = g.ents.iter().filter(|e| e.alive && e.hero && e.captive != 0).count();
out.push((trf("info.prison", &[used.to_string(), (g.counts[5] / 2).to_string()]), DIM));
}
_ => {}
}
}