sanguis::server::entities::with_id_unique_ptr sanguis::server::entities::enemies::factory::ghost( sanguis::server::entities::enemies::factory::parameters const &_parameters ) { SANGUIS_SERVER_BUFFS_DEFINE_SPECIAL( ghost_slow, slow ); return sanguis::server::entities::enemies::factory::make( _parameters, sanguis::server::damage::no_armor(), sanguis::server::mass{ 0.01f * boost::units::si::kilogram }, sanguis::server::health( 6.f * std::sqrt( _parameters.difficulty().get() ) ), sanguis::server::entities::movement_speed( 60.f ), sanguis::server::ai::create_simple( _parameters.random_generator(), sanguis::server::ai::sight_range( 1000.f ) ), fcppt::unique_ptr_to_base< sanguis::server::weapons::weapon >( fcppt::make_unique_ptr< sanguis::server::weapons::melee >( _parameters.weapon_parameters(), sanguis::server::weapons::melee_parameters{ sanguis::server::weapons::range( 75.f ), sanguis::server::weapons::backswing_time( sanguis::duration_second( 2.f ) ), sanguis::server::weapons::damage( 5.f ), sanguis::server::damage::make_array({ sanguis::server::damage::ice = sanguis::server::damage::full }) } ) ), sanguis::server::pickup_probability( 0.1f ), sanguis::server::exp( 10.f ), fcppt::container::make< sanguis::server::auras::container >( sanguis::server::auras::slow_create< ghost_slow >( sanguis::server::radius( 200.f ), sanguis::server::team::monsters, sanguis::server::buffs::slow_factor( 0.1f ) ) ) ); }
sanguis::server::entities::with_id_unique_ptr sanguis::server::entities::enemies::factory::skeleton( sanguis::server::entities::enemies::factory::parameters const &_parameters ) { SANGUIS_SERVER_BUFFS_DEFINE_SPECIAL( skeleton_burn, burn ); return sanguis::server::entities::enemies::factory::make( _parameters, sanguis::server::damage::no_armor(), sanguis::server::mass{ 20.f * boost::units::si::kilogram }, sanguis::server::health( 12.f * std::sqrt( _parameters.difficulty().get() ) ), sanguis::server::entities::movement_speed( 50.f ), sanguis::server::ai::create_simple( _parameters.random_generator(), sanguis::server::ai::sight_range( 1000.f ) ), fcppt::unique_ptr_to_base< sanguis::server::weapons::weapon >( fcppt::make_unique_ptr< sanguis::server::weapons::melee >( _parameters.weapon_parameters(), sanguis::server::weapons::melee_parameters{ sanguis::server::weapons::range( 100.f ), sanguis::server::weapons::backswing_time( sanguis::duration_second( 1.f ) ), sanguis::server::weapons::damage( 10.f ), sanguis::server::damage::make_array({ sanguis::server::damage::normal = sanguis::server::damage::full }) } ) ), sanguis::server::pickup_probability( 0.75f ), sanguis::server::exp( 100.f ), fcppt::assign::make_container< sanguis::server::auras::container >( sanguis::server::auras::burn_create< skeleton_burn >( sanguis::server::radius( 300.f ), sanguis::server::team::monsters, sanguis::server::buffs::burn_interval( sanguis::duration_second( 1.f ) ), sanguis::server::damage::unit( 1.f * std::sqrt( _parameters.difficulty().get() ) ) ) ) ); }