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); }
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); }