Golem now spawns in dungeon.

This commit is contained in:
Sam 2020-09-18 16:28:21 -05:00
parent 99aba78422
commit e39770d1d9
6 changed files with 52 additions and 58 deletions

View File

@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fireflies
- Fullscreen modes now show two options (exclusive and borderless)
- Added banlist and `/ban`, `/unban`, and `/kick` commands for admins
- A new dungeon boss (venture there and discover it yourself)
### Changed

View File

@ -357,7 +357,7 @@ impl Tool {
recover_duration: Duration::from_millis(250),
knockback: 25.0,
base_healthchange: -200,
range: 10.0,
range: 5.0,
max_angle: 120.0,
},
GroundShockwave {

View File

@ -1,9 +1,7 @@
use crate::{
comp::{
use crate::comp::{
golem,
item::{Item, ItemKind},
Alignment, Body, CharacterAbility, ItemConfig, Loadout,
},
};
use rand::Rng;
use std::time::Duration;
@ -81,8 +79,7 @@ impl LoadoutBuilder {
_ => {},
};
let active_item =
if let Some(ItemKind::Tool(tool)) = main_tool.as_ref().map(|i| i.kind()) {
let active_item = if let Some(ItemKind::Tool(tool)) = main_tool.as_ref().map(|i| i.kind()) {
let mut abilities = tool.get_abilities();
let mut ability_drain = abilities.drain(..);

View File

@ -1,10 +1,7 @@
use super::SysTimer;
use crate::{chunk_generator::ChunkGenerator, client::Client, Tick};
use common::{
comp::{
self, bird_medium,
Alignment, CharacterAbility, Player, Pos,
},
comp::{self, bird_medium, Alignment, CharacterAbility, Player, Pos},
event::{EventBus, ServerEvent},
generation::get_npc_name,
msg::ServerMsg,

View File

@ -2115,6 +2115,15 @@ impl FigureMgr {
skeleton_attr,
)
},
CharacterState::GroundShockwave(_) => {
anim::golem::ShockwaveAnimation::update_skeleton(
&target_base,
(vel.0.magnitude(), time),
state.state_time,
&mut state_animation_rate,
skeleton_attr,
)
},
// TODO!
_ => target_base,
};

View File

@ -13,7 +13,6 @@ use common::{
comp::{self},
generation::{ChunkSupplement, EntityInfo},
lottery::Lottery,
npc,
store::{Id, Store},
terrain::{Block, BlockKind, Structure, TerrainChunkSize},
vol::{BaseVol, ReadVol, RectSizedVol, RectVolSize, Vox, WriteVol},
@ -509,22 +508,13 @@ impl Floor {
);
let chosen = chosen.choose();
let entity = EntityInfo::at(tile_wcenter.map(|e| e as f32))
.with_scale(4.0)
.with_level(rng.gen_range(75, 100))
.with_level(rng.gen_range(1, 5))
.with_alignment(comp::Alignment::Enemy)
.with_body(comp::Body::Humanoid(comp::humanoid::Body::random()))
.with_name(format!(
"Cult Leader {}",
npc::get_npc_name(npc::NpcKind::Humanoid)
))
.with_main_tool(comp::Item::new_from_asset_expect(
match rng.gen_range(0, 1) {
//Add more possible cult leader npc_weapons here
_ => {
"common.items.npc_weapons.sword.cultist_purp_2h_boss-0"
},
},
))
.with_body(comp::Body::Golem(comp::golem::Body::random_with(
rng,
&comp::golem::Species::StoneGolem,
)))
.with_name("Stonework Defender".to_string())
.with_loot_drop(comp::Item::new_from_asset_expect(chosen));
supplement.add_entity(entity);