diff --git a/include/player.h b/include/player.h index 51e974b7..a95d1d7c 100644 --- a/include/player.h +++ b/include/player.h @@ -89,7 +89,9 @@ struct player { /* player flags */ enum { - PF_UTF8 = bit(0) /* client wants UTF-8 */ + PF_UTF8 = bit(0), /* client wants UTF-8 */ + PF_DOWN = bit(1), /* told player game is down */ + PF_HOURS = bit(2) /* told player hours restriction is on */ }; #endif diff --git a/include/prototypes.h b/include/prototypes.h index b20997c1..8a580c54 100644 --- a/include/prototypes.h +++ b/include/prototypes.h @@ -369,8 +369,7 @@ extern void log_last_commands(void); extern void update_timeused_login(time_t now); extern void update_timeused(time_t now); extern void enforce_minimum_session_time(void); -extern int may_play_now(struct natstr *natp, time_t current_time, - int suppress_deity_message); +extern int may_play_now(struct natstr *, time_t); /* more under Commands */ /* empmod.c */ /* init_nats.c */ diff --git a/src/lib/player/empdis.c b/src/lib/player/empdis.c index eabb5be6..b2bdff77 100644 --- a/src/lib/player/empdis.c +++ b/src/lib/player/empdis.c @@ -231,27 +231,33 @@ enforce_minimum_session_time(void) } int -may_play_now(struct natstr *natp, time_t now, - int suppress_deity_message) +may_play_now(struct natstr *natp, time_t now) { if (CANT_HAPPEN(natp->nat_cnum != player->cnum)) return 0; - if (!gamehours(now)) { - if (natp->nat_stat != STAT_GOD || !suppress_deity_message) - pr("Empire hours restriction in force\n"); + if (gamehours(now)) { + if (player->flags & PF_HOURS) { + pr("\nEmpire hours restriction lifted\n"); + player->flags &= ~PF_HOURS; + } + } else { + if (!(player->flags & PF_HOURS)) { + pr("\nEmpire hours restriction in force\n"); + player->flags |= PF_HOURS; + } if (natp->nat_stat != STAT_GOD) return 0; } if (game_play_disabled()) { - if (natp->nat_stat != STAT_GOD) { + if (!(player->flags & PF_DOWN)) { show_first_tel(downfil); pr("\nThe game is down\n"); - return 0; + player->flags |= PF_DOWN; } - if (!suppress_deity_message) - pr("The game is down\n"); + if (natp->nat_stat != STAT_GOD) + return 0; } if ((natp->nat_stat != STAT_GOD && natp->nat_stat != STAT_VIS) diff --git a/src/lib/player/player.c b/src/lib/player/player.c index 4666d179..1b56b142 100644 --- a/src/lib/player/player.c +++ b/src/lib/player/player.c @@ -70,7 +70,7 @@ player_main(struct player *p) return; } natp = getnatp(player->cnum); - if (!may_play_now(natp, player->curup, 0)) + if (!may_play_now(natp, player->curup)) return; if (natp->nat_stat != STAT_VIS && natp->nat_last_login @@ -125,7 +125,7 @@ command(void) now = time(NULL); update_timeused(now); - if (!may_play_now(getnatp(player->cnum), now, 1)) + if (!player->god && !may_play_now(getnatp(player->cnum), now)) return 0; if (parse(player->combuf, scanspace, player->argp, player->comtail, @@ -173,7 +173,7 @@ status(void) time(&player->curup); update_timeused(player->curup); - if (!may_play_now(natp, player->curup, 0)) + if (!may_play_now(natp, player->curup)) return 0; if (player->btused) { natp->nat_btu -= player->btused;