예제 #1
0
void shield_set_strength(object* objp, float strength)
{
	int i;

	for (i = 0; i < MAX_SHIELD_SECTIONS; i++)
		shield_set_quad(objp, i, strength / MAX_SHIELD_SECTIONS);
}
예제 #2
0
float shield_apply_damage(object *objp, int quadrant_num, float damage) {
	float remaining_damage;

	Assert(objp);

	// multiplayer clients bail here if nodamage
	// if(MULTIPLAYER_CLIENT && (Netgame.debug_flags & NETD_FLAG_CLIENT_NODAMAGE)){
	if (MULTIPLAYER_CLIENT)
		return damage;

	// check array bounds
	Assert(quadrant_num >= 0 && quadrant_num < objp->n_quadrants);
	if ((quadrant_num < 0) || (quadrant_num >= objp->n_quadrants))
		return damage;

	if (objp->type != OBJ_SHIP && objp->type != OBJ_START)
		return damage;

	Ai_info[Ships[objp->instance].ai_index].last_hit_quadrant = quadrant_num;

	remaining_damage = damage - shield_get_quad(objp, quadrant_num);
	if (remaining_damage > 0.0f) {
		shield_set_quad(objp, quadrant_num, 0.0f);
		return remaining_damage;
	} else {
		shield_add_quad(objp, quadrant_num, -damage);
		return 0.0f;
	}
}
void shield_set_strength(object *objp, float strength)
{
	int	i;

	for (i = 0; i < objp->n_quadrants; i++)
		shield_set_quad(objp, i, strength / objp->n_quadrants);
}