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:
1 parent
a58497e3a9
commit
4ce2c2919e
7 files changed
+186
-15
No files matched your search
+8
-3
@@ -1283,7 +1283,7 @@ impl R3d {
|
||||
if !e.alive || e.held || unit_hidden(g, e) {
|
||||
continue;
|
||||
}
|
||||
let big = matches!(e.kind, EK::Ogre | EK::Paladin | EK::Jailer | EK::Chainbreaker | EK::Wyrm | EK::Gargoyle);
|
||||
let big = matches!(e.kind, EK::Ogre | EK::Paladin | EK::Jailer | EK::Chainbreaker | EK::Wyrm | EK::Gargoyle | EK::Giant);
|
||||
let lift = if flies(e.kind) && !(matches!(e.job, Job::Sleep(_)) && !e.moving) { 0.45 } else { 0.0 };
|
||||
let head = proj(vec3(e.x, lift + if big { 0.9 } else { 0.72 }, e.y));
|
||||
// bar width in block characters, depending on the zoom
|
||||
@@ -1363,7 +1363,7 @@ fn shade_c(r: u8, g: u8, b: u8, f: f32) -> Color {
|
||||
|
||||
// size of a unit's sprite (same as in the billboards)
|
||||
fn sprite_size(k: EK) -> f32 {
|
||||
if matches!(k, EK::Chainbreaker | EK::Wyrm) {
|
||||
if matches!(k, EK::Chainbreaker | EK::Wyrm | EK::Giant) {
|
||||
1.0
|
||||
} else if matches!(k, EK::Ogre | EK::Paladin | EK::Jailer | EK::Gargoyle) {
|
||||
0.8
|
||||
@@ -2086,7 +2086,7 @@ fn draw_shadows(g: &Game) {
|
||||
if !e.alive || e.held || unit_hidden(g, e) {
|
||||
continue;
|
||||
}
|
||||
let r = if matches!(e.kind, EK::Ogre | EK::Paladin | EK::Jailer | EK::Chainbreaker) { 0.32 } else { 0.24 };
|
||||
let r = if matches!(e.kind, EK::Ogre | EK::Paladin | EK::Jailer | EK::Chainbreaker | EK::Giant) { 0.32 } else { 0.24 };
|
||||
let fy = floor_y(g, e.x, e.y);
|
||||
disc(vec3(e.x, fy + 0.012, e.y), r, Color::new(0.0, 0.0, 0.0, 0.4), 12);
|
||||
let rc = if e.captive != 0 {
|
||||
@@ -2296,6 +2296,11 @@ fn draw_traps_glow(g: &Game, t: f32) {
|
||||
if tr.stage != ARMED {
|
||||
continue;
|
||||
}
|
||||
if tr.revealed && !tr.kind.door() {
|
||||
// found by a fairy: a white warning glint above it
|
||||
let a = 0.5 + 0.5 * (t * 6.0).sin();
|
||||
draw_cube(c + vec3(0.0, 0.7 + 0.05 * (t * 3.0).sin(), 0.0), vec3(0.06, 0.18, 0.06), None, Color::new(1.0, 1.0, 1.0, a));
|
||||
}
|
||||
match tr.kind {
|
||||
TrapKind::Poison => disc(c + vec3(0.0, 0.07, 0.0), 0.22, Color::new(0.4, 1.0, 0.3, 0.3 + 0.15 * (t * 2.0).sin()), 12),
|
||||
TrapKind::Fire => {
|
||||
|
||||
Reference in new issue
Block a user