void drown(region * r) { if (fval(r->terrain, SEA_REGION)) { unit **up = up = &r->units; while (*up) { unit *u = *up; int amphibian_level = 0; if (u->ship || u_race(u) == get_race(RC_SPELL) || u->number == 0) { up = &u->next; continue; } if (amphibian_level) { int dead = damage_unit(u, "5d1", false, false); if (dead) { ADDMSG(&u->faction->msgs, msg_message("drown_amphibian_dead", "amount unit region", dead, u, r)); } else { ADDMSG(&u->faction->msgs, msg_message("drown_amphibian_nodead", "unit region", u, r)); } } else if (!(canswim(u) || canfly(u))) { scale_number(u, 0); ADDMSG(&u->faction->msgs, msg_message("drown", "unit region", u, r)); } if (*up == u) up = &u->next; } remove_empty_units_in_region(r); } }
void drown(region * r) { if (fval(r->terrain, SEA_REGION)) { unit **up = &r->units; while (*up) { unit *u = *up; if (!(u->ship || u_race(u) == get_race(RC_SPELL) || u->number == 0 || canswim(u) || canfly(u))) { scale_number(u, 0); ADDMSG(&u->faction->msgs, msg_message("drown", "unit region", u, r)); } up = &u->next; } remove_empty_units_in_region(r); } }