Steel walls: plate earth walls next to own ground with steel

- New tool Steel (key O, orders category; campaign from mission 11): 80 gold per earth wall,
  40 for a reinforced wall; riveted iron plate texture
- Heroes dig through steel 20 times slower than through earth and avoid it (path cost 300)
- Selling turns a steel wall back into a reinforced wall and refunds half the plating
- Texts EN/DE, test

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-03 13:10:04 +01:00
1 parent f298e13d6e
commit 8853d84564
10 files changed
+156 -16

No files matched your search

+10 -2
View File
@@ -156,10 +156,11 @@ pub enum Tool {
Summon,
Tower(TowerKind),
Bridge,
Steel,
}
// New tools are appended so that existing key bindings ("tool<i>") keep their meaning
pub const TOOLS: [Tool; 19] = [
pub const TOOLS: [Tool; 20] = [
Tool::Dig,
Tool::Hand,
Tool::Room(0),
@@ -179,6 +180,7 @@ pub const TOOLS: [Tool; 19] = [
Tool::Tower(TowerKind::Magic),
Tool::Bridge,
Tool::Room(7),
Tool::Steel,
];
@@ -210,6 +212,7 @@ pub fn tool_info(t: Tool) -> ToolInfo {
Tool::Heal => ("heal", I_HEAL, None),
Tool::Summon => ("summon", I_SUMMON, None),
Tool::Bridge => ("bridge", I_BRIDGE, None),
Tool::Steel => ("steel", I_STEEL, None),
};
let name = match room {
Some(r) => tr(ROOM_NAMES[r]),
@@ -225,6 +228,7 @@ pub fn tool_cost(t: Tool, g: &Game) -> String {
Tool::Heal => trf("cost.mana", &["60".into()]),
Tool::Summon => trf("cost.mana", &[(g.summon_cost() as i32).to_string()]),
Tool::Bridge => trf("cost.bridge", &[BRIDGE_COST[0].to_string(), BRIDGE_COST[1].to_string()]),
Tool::Steel => trf("cost.steel", &[STEEL_COST[0].to_string(), STEEL_COST[1].to_string()]),
Tool::Tower(k) => {
let s = tower_stats(k);
let mut c = trf("cost.tower", &[s.cost[0].to_string(), s.cost[1].to_string(), s.cost[2].to_string()]);
@@ -244,7 +248,7 @@ pub const CATS: [(&str, &[usize]); 6] = [
("cat.rooms", &[2, 3, 4, 5, 6, 12, 13, 18, 17]),
("cat.towers", &[14, 15, 16]),
("cat.spells", &[9, 10, 11]),
("cat.orders", &[8, 7]),
("cat.orders", &[8, 7, 19]),
];
#[derive(Clone, Copy, PartialEq, Debug)]
@@ -1061,6 +1065,10 @@ pub fn hover_info(g: &Game, ent: Option<usize>, tile: Option<(i32, i32)>) -> Vec
};
match t.kind {
Kind::Rock => out.push((tr("tile.rock"), DIM)),
Kind::Steel => {
out.push((tr("tile.steel"), FRAME_HI));
out.push((tr("tile.steel_info"), DIM));
}
Kind::Earth if t.reinforced => {
out.push((tr("tile.reinforced"), FRAME_HI));
out.push((tr("tile.reinforced_info"), DIM));