feat: slime enemies — jump AI, contact damage, combat system
New entity: Slime (EntityKind::Slime) - 19 parts: blobby body (3x5) + 2 glowing eyes - Green translucent colors, brighter center - HP: 25, spawns every 45 ticks (max 2 alive) Slime AI (update_slime_ai): - Jumps toward player every 60 ticks when within 40 cells - Jump power scales with proximity (closer = stronger) - Pauses horizontally between jumps (50/50 hop-stop cycle) - Uses set_horizontal_vel + set_vertical_vel (vector movement) Combat system (update_combat): - AABB overlap check between player and all alive enemies - Goblin: 8 damage per 20 ticks on contact - Slime: 5 damage per 20 ticks on contact - Knockback: player pushed away from enemy on hit - Player.take_damage() called, death possible from enemies World gen: try_spawn_slime() spawns at surface, 18 cells from player Renderers: slime rendered as 's' in ascii/terminal, green blob in graphics 6 new tests (122 total, 0 failures)
This commit is contained in:
@@ -217,6 +217,7 @@ impl VulkanRenderer {
|
||||
let ch = match e.kind {
|
||||
EntityKind::Player if e.alive => '@',
|
||||
EntityKind::Goblin if e.alive => 'g',
|
||||
EntityKind::Slime if e.alive => 's',
|
||||
_ => '%',
|
||||
};
|
||||
let fg = if e.on_fire {
|
||||
|
||||
Reference in New Issue
Block a user