Three new heroes: giant, fairy spy, battle mage

- giant (from wave 6): slow and enormous, smashes doors three times as hard and wrecks traps by standing next to them
- fairy spy (from wave 3): flies, finds the dungeon's traps (marked with a glint) so the heroes wreck them, and heals heroes around it
- battle mage (from wave 4): throws fireballs with splash and blasts reinforced walls (steel resists him better)
- sprites, bestiary texts EN/DE, test: fairies find traps, giants wreck them

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-04 07:40:20 +01:00
1 parent a58497e3a9
commit 4ce2c2919e
7 files changed
+186 -15

No files matched your search

+44 -2
View File
@@ -1278,6 +1278,45 @@ fn sprite_rows(k: EK) -> [&'static str; 10] {
"..kCk.kCk.",
"..kk...kk.",
],
// giant: a huge brute in a leather jerkin with a tree-trunk club
EK::Giant => [
"...kkkk...",
"..kffffk..",
"..kfefek.b",
"..kffffk.b",
".kBBBBBBkb",
"kfBuuuuBfb",
"kfBuuuuBf.",
".kBBBBBBk.",
".kBBk.kBBk",
".kkk...kkk",
],
// fairy: a tiny glowing spy with dragonfly wings
EK::Fairy => [
"..........",
"ww.....ww.",
"www.kk.www",
".wwkffkww.",
"..wkefkw..",
"...kuuk...",
"...kuuk...",
"....kk....",
"...y..y...",
"..........",
],
// battle mage: robes of the order, a burning staff
EK::BattleMage => [
"....kk...o",
"...kuuk.oy",
"..kuuuuk.o",
".kkffffk.b",
"..kfefek.b",
"..kwuuwk.b",
".kuwuuwukb",
".kuuwwuuk.",
".kuuuuuuk.",
"..kkkkkk..",
],
EK::Wyrm => [
"R.......kw",
"RR....krrk",
@@ -1347,7 +1386,7 @@ fn pal(ch: char) -> Option<Color> {
})
}
pub const SPRITE_KINDS: [EK; 19] = [
pub const SPRITE_KINDS: [EK; 22] = [
EK::Worker,
EK::Kobold,
EK::Spider,
@@ -1367,6 +1406,9 @@ pub const SPRITE_KINDS: [EK; 19] = [
EK::Wyrm,
EK::Cogling,
EK::Revenant,
EK::Giant,
EK::Fairy,
EK::BattleMage,
];
// width of the sprite texture in pixels
pub const SPRITE_TEX_W: f32 = (SPRITE_KINDS.len() * 12) as f32;
@@ -1384,7 +1426,7 @@ pub fn gear_tier(level: u32) -> u32 {
}
fn is_hero_kind(k: EK) -> bool {
matches!(k, EK::Knight | EK::Archer | EK::Priest | EK::Dwarf | EK::Paladin)
matches!(k, EK::Knight | EK::Archer | EK::Priest | EK::Dwarf | EK::Paladin | EK::Giant | EK::Fairy | EK::BattleMage)
}
// Views of a sprite for eight directions (the others are mirrored): 0 front, 1 front