Bestiary in the title and pause menu; attacks look bigger with the unit level

- tabs: creatures, humans (incl. cave dwarves), dungeon buildings and towers, ranks
- every unit at every level: sprite with gear, rank badge, health, attack, range, speed, wage or bounty, what attracts it
- Crookfinger's texts: loving about the creatures, disgusted about the humans (EN/DE)
- projectiles, hit sparks and splashes grow with the attacker's level, with halos from Lv 5 and glow at Lv 9+

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-03 15:32:18 +01:00
1 parent 9a9f04ae1f
commit 1016ee5d6c
8 files changed
+514 -12

No files matched your search

+16 -8
View File
@@ -1692,9 +1692,13 @@ fn draw_fx(f: &Fx, t: f32) {
let from = vec3(f.x, f.h, f.y);
let to = vec3(f.x2, f.h2, f.y2);
let head = from.lerp(to, p);
let tail = from.lerp(to, (p - 0.35).max(0.0));
line3(tail, head, 0.06, a(0.8));
draw_sphere(head, 0.08, None, c);
let tail = from.lerp(to, (p - 0.35 * f.size.min(1.5)).max(0.0));
line3(tail, head, 0.06 * f.size, a(0.8));
draw_sphere(head, 0.08 * f.size, None, c);
if f.size > 1.35 {
// experienced shooters: a glowing halo around the projectile
draw_sphere(head, 0.16 * f.size, None, a(0.25));
}
}
1 => {
let mut prev = vec3(f.x, 7.0, f.y);
@@ -1708,13 +1712,17 @@ fn draw_fx(f: &Fx, t: f32) {
disc(vec3(f.x, 0.05, f.y), 1.6 * (0.5 + p), Color::new(1.0, 1.0, 0.7, 0.35 * (1.0 - p)), 24);
}
2 => {
let r = 0.1 + 0.3 * p;
for k in 0..6 {
let ang = k as f32 * 1.047;
line3(at, at + vec3(ang.cos() * r, (k as f32 - 2.5) * 0.06, ang.sin() * r), 0.04, a(1.0 - p));
let r = (0.1 + 0.3 * p) * f.size;
let n = if f.size > 1.35 { 10 } else { 6 };
for k in 0..n {
let ang = k as f32 * std::f32::consts::TAU / n as f32;
line3(at, at + vec3(ang.cos() * r, (k as f32 - n as f32 * 0.5 + 0.5) * 0.06 * f.size, ang.sin() * r), 0.04 * f.size, a(1.0 - p));
}
if f.size > 1.6 {
disc(vec3(f.x, 0.03, f.y), r * 1.3, a(0.3 * (1.0 - p)), 12);
}
}
3 => draw_sphere(vec3(f.x, 0.3, f.y), 0.2 + 0.5 * p, None, a(0.4 * (1.0 - p))),
3 => draw_sphere(vec3(f.x, 0.3, f.y), (0.2 + 0.5 * p) * f.size, None, a(0.4 * (1.0 - p))),
4 => {
for k in 0..3 {
let o = vec3((k as f32 - 1.0) * 0.2, 0.3 + p * 0.9 + k as f32 * 0.1, 0.0);