src/map/atcommand.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/map/atcommand.c b/src/map/atcommand.c index c5460eb..fd066b2 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -9356,6 +9356,41 @@ static inline void atcmd_channel_help(int fd, const char *command, bool can_crea clif->message(fd,atcmd_output); return true; } + +/* +*=================================== +* Sleep (@sleep) +*----------------------------------- +*/ + +ACMD(sleep) { + if ( map->agit_flag || map->agit2_flag ) { // skill not useable in WOE [A17kaliva] + clif->message( fd, "Cannot use this command during WOE." ); + return false; + } + if ( !battle_config.prevent_logout || DIFF_TICK( timer->gettick(), sd->canlog_tick) > battle_config.prevent_logout ) { + if ( sd->sc.opt1 != 0 && sd->sc.opt1 != OPT1_SLEEP ) { + clif->message( fd, msg_txt(807) ); + return false; + } + if ( sd->sc.opt1 != OPT1_SLEEP) { + status->change_start( NULL, &sd->bl, SC_TRICKDEAD, 10000, 1, 0, 0, 0, 1000, 0); + sd->sc.opt1 = OPT1_SLEEP; + clif->message( fd, msg_txt(805) ); // sleeping + } else { + sd->sc.opt1 = 0; + clif->emotion(&sd->bl,45); + status_change_end(&sd->bl, SC_TRICKDEAD, -1); + clif->message( fd, msg_txt(806) ); // awake + + } + clif->changeoption( &sd->bl ); + return true; + } + clif->message( fd, msg_txt(807) ); + return false; +} + /** * Fills the reference of available commands in atcommand DBMap **/ @@ -9366,6 +9401,7 @@ void atcommand_basecommands(void) { * Command reference list, place the base of your commands here **/ AtCommandInfo atcommand_base[] = { + ACMD_DEF(sleep), ACMD_DEF2("warp", mapmove), ACMD_DEF(where), ACMD_DEF(jumpto),