damage per head (#32)

This commit is contained in:
extrawurst
2025-04-18 23:48:44 +02:00
committed by GitHub
parent 72b88cc9a4
commit 7cb2475d9b
9 changed files with 75 additions and 51 deletions

View File

@@ -20,7 +20,7 @@ use serde::{Deserialize, Serialize};
#[derive(Component)]
pub struct Projectile {
pub damage: u32,
pub owner_head: usize,
}
#[derive(Event, Reflect)]
@@ -93,6 +93,7 @@ fn enemy_hit(
mut collision_event_reader: EventReader<CollisionStarted>,
query_shot: Query<&Projectile>,
query_npc: Query<&EnemySpawn>,
heads_db: Res<HeadsDatabase>,
) {
for CollisionStarted(e1, e2) in collision_event_reader.read() {
if !query_shot.contains(*e1) && !query_shot.contains(*e2) {
@@ -108,8 +109,10 @@ fn enemy_hit(
(*e2, query_shot.get(*e1))
};
let damage = projectile.map(|p| p.damage).unwrap_or_default();
commands.entity(enemy_entity).trigger(Hit { damage });
if let Ok(head) = projectile.map(|p| p.owner_head) {
let damage = heads_db.head_stats(head).damage;
commands.entity(enemy_entity).trigger(Hit { damage });
}
}
}