Example #1
0
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
					)
				)
			)
		);
}
Example #2
0
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()
						)
					)
				)
			)
		);
}