diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index 022c17ce74..39dd2f738d 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -1,6 +1,7 @@ use crate::{client::Client, Server, SpawnPoint, StateExt}; use common::{ - comp::{self, HealthChange, HealthSource, Player, Stats}, + assets, + comp::{self, object, Body, HealthChange, HealthSource, Item, Player, Stats}, msg::ServerMsg, state::BlockChange, sync::{Uid, WorldSyncExt}, @@ -90,10 +91,36 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc .write_storage::() .insert(entity, comp::CharacterState::default()); } else { + // Replace npc with loot + let _ = state + .ecs() + .write_storage() + .insert(entity, Body::Object(object::Body::Pouch)); + let _ = state.ecs().write_storage().insert( + entity, + assets::load_expect_cloned::("common.items.cheese"), + ); + state.ecs().write_storage::().remove(entity); + state + .ecs() + .write_storage::() + .remove(entity); + state + .ecs() + .write_storage::() + .remove(entity); + state + .ecs() + .write_storage::() + .remove(entity); + + // TODO: Add Delete(time_left: Duration) component + /* // If not a player delete the entity if let Err(err) = state.delete_entity_recorded(entity) { error!("Failed to delete destroyed entity: {:?}", err); } + */ } } diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 4d26413607..768b07ba80 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1364,8 +1364,8 @@ impl FigureMgr { ecs.read_storage::().maybe(), ) .join() - // Don't render dead entities - .filter(|(_, _, _, _, stats, loadout, _)| stats.map_or(true, |s| !s.is_dead)) + // Don't render dead entities // Disabled to render corpses + //.filter(|(_, _, _, _, stats, loadout, _)| stats.map_or(true, |s| !s.is_dead)) { let is_player = entity == player_entity; let player_camera_mode = if is_player {