This goes in limits.c in the point_update function.
Code:
/* Drowning effect for underwater room per Bramage */
if (IN_ROOM(i) != NOWHERE && world[IN_ROOM(i)].sector_type == SECT_UNDERWATER) {
if (AFF_FLAGGED(i, AFF_BREATHEWATER)) {
send_to_char(i, "\tcyou are able to breathe underwater.\tn\r\n");
} if (GET_LEVEL(i) >= LVL_IMMORT) {
send_to_char(i, "\r\n");
} else {
// Roll CON check first
if (rand_number(1, 25) <= GET_CON(i)) {
// Success - take half damage
int dam = rand_number(10, 75) / 2;
if (dam > 0) {
damage(i, i, dam, TYPE_UNDEFINED);
send_to_char(i, "Damage: %d!\r\n", dam);
send_to_char(i, "You hold your breath barely, lessening the strain!\r\n");
}
} else {
// Failure - take full damage
int dam = damage(i, i, rand_number(10, 75), TYPE_UNDEFINED);
send_to_char(i, "\tRDamage: %d!\tn\r\n", dam);
GET_MOVE(i) = MAX(0, (GET_MOVE(i) - (rand_number(5, 50))));
if (dam == -1) {
continue; /* Oops, they died */
}
send_to_char(i, "\tRYou choke and struggle to breathe underwater!\tn\r\n");
}
}
}
Not sure of the number of brackets, if I included all or not enough.
I also added spell_breathewater and aff_breathewater to make this all go together.