-/* src/server/run.c */
+/* src/server/run.c
+ *
+ * This file is part of PlomRogue. PlomRogue is licensed under the GPL version 3
+ * or any later version. For details on its copyright, license, and warranties,
+ * see the file NOTICE in the root directory of the PlomRogue source package.
+ */
#define _POSIX_C_SOURCE 200809L
#include "run.h"
#include "../common/try_malloc.h" /* try_malloc() */
#include "ai.h" /* ai() */
#include "cleanup.h" /* unset_cleanup_flag() */
-#include "god_commands.h" /* parse_god_command_1arg(),parse_god_command_2arg()*/
+#include "god_commands.h" /* parse_god_command_(1|2|3)arg() */
#include "hardcoded_strings.h" /* s */
#include "io.h" /* io_round(), save_world() */
#include "things.h" /* Thing, get_thing_action_id_by_name(), get_player() */
{
if (!world.exists)
{
- err_line(1, "No world exists in which to run player commands.");
- return 0;
+ return !err_line(1, "No world exists in which to run player commands.");
}
return 1;
}
static uint8_t parse_player_command_0arg(char * tok0)
{
struct Thing * player = get_player();
- if (!strcmp(tok0, s[S_CMD_WAIT]) || !strcmp(tok0, s[S_CMD_PICKUP]))
+ if ( !strcmp(tok0, s[S_CMD_WAIT]) || !strcmp(tok0, s[S_CMD_PICKUP])
+ || !strcmp(tok0, s[S_CMD_AI]))
{
if (player_commands_allowed())
{
- player->command = get_thing_action_id_by_name(tok0);
- player->arg = 0;
+ if (!strcmp(tok0, s[S_CMD_AI]))
+ {
+ ai(player);
+ }
+ else
+ {
+ player->command = get_thing_action_id_by_name(tok0);
+ player->arg = 0;
+ }
turn_over();
}
return 1;
{
return 1;
}
+ else
+ {
+ char * tok3 = token_from_line(NULL);
+ if (tok2 && parse_god_command_3arg(tok0, tok1, tok2, tok3))
+ {
+ return 1;
+ }
+ }
}
}
return 0;
while ( 0 < player->lifepoints
|| (0 == player->lifepoints && start_turn == world.turn))
{
- if (NULL == thing)
+ if (!thing)
{
world.turn++;
thing = world.things;
set_err_line_options("Trouble with message: ", msg, 0);
char * msg_copy = strdup(msg);
char * tok0 = token_from_line(msg_copy);
- if (NULL != tok0)
+ if (tok0)
{
if (parse_command(tok0))
record(msg, 0);
}
char * tokplus = token_from_line(NULL);
- err_line(NULL != tokplus, "Too many arguments, ignoring overflow.");
+ err_line(!(!tokplus), "Too many arguments, ignoring overflow.");
free(msg_copy);
return;
}
{
char * msg = io_round();
server_test();
- if (NULL == msg)
+ if (!msg)
{
continue;
}