X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fserver%2Fgod_commands.c;h=4969b7e1f9e50504252e42dd6a85e9c563716af0;hb=4f3973cc2c7f4c886af0e1e1b24853f6a22f2039;hp=755acd5881b4ff8bf4ba604c08d89c0f8d83e986;hpb=edebb2bf9aa780ee2f7006c1d2be9168564d34df;p=plomrogue diff --git a/src/server/god_commands.c b/src/server/god_commands.c index 755acd5..4969b7e 100644 --- a/src/server/god_commands.c +++ b/src/server/god_commands.c @@ -18,7 +18,7 @@ * actor_use(), actor_pickup(), actor_drop() */ #include "things.h" /* Thing, ThingType, add_thing(), get_thing(), own_thing(), - * free_things() + * free_things(), add_thing_to_memory_map(),get_thing_type() */ #include "world.h" /* world */ @@ -85,8 +85,7 @@ static uint8_t parse_thingtype_manipulation(char * tok0, char * tok1) || !strcmp(tok0, s[S_CMD_TT_STARTN]) || !strcmp(tok0, s[S_CMD_TT_NAME]) || !strcmp(tok0, s[S_CMD_TT_CORPS]) || !strcmp(tok0, s[S_CMD_TT_HP]))) { - err_line(1, "No thing type defined to manipulate yet."); - return 1; + return err_line(1, "No thing type defined to manipulate yet."); } int16_t id; if ( parse_val(tok0,tok1,s[S_CMD_TT_CONSUM],'8',(char *) &tt->consumable) @@ -98,8 +97,7 @@ static uint8_t parse_thingtype_manipulation(char * tok0, char * tok1) { if (!get_thing_type(id)) { - err_line(1, "Corpse ID belongs to no known thing type."); - return 1; + return err_line(1, "Corpse ID belongs to no known thing type."); } tt->corpse_id = id; } @@ -138,8 +136,7 @@ static uint8_t parse_thingaction_manipulation(char * tok0, char * tok1) if (!ta && (!strcmp(tok0, s[S_CMD_TA_EFFORT]) || !strcmp(tok0, s[S_CMD_TA_NAME]))) { - err_line(1, "No thing action defined to manipulate yet."); - return 1; + return err_line(1, "No thing action defined to manipulate yet."); } int16_t id; if (parse_val(tok0, tok1, s[S_CMD_TA_EFFORT],'8',(char *)&ta->effort)); @@ -151,11 +148,10 @@ static uint8_t parse_thingaction_manipulation(char * tok0, char * tok1) || try_func_name(ta, s[S_CMD_DROP], actor_drop) || try_func_name(ta, s[S_CMD_USE], actor_use))) { - err_line(1, "Invalid action function name."); - return 1; - } /* Legal worlds have at least one thing action for waiting. */ + return err_line(1, "Invalid action function name."); + } if (world.exists) - { + { /* Legal worlds have at least one thing action for waiting. */ world.exists = 0 != get_thing_action_id_by_name(s[S_CMD_WAIT]); if (!world.exists) { @@ -286,8 +282,7 @@ static uint8_t parse_thing_manipulation_1arg(char * tok0, char * tok1) || !strcmp(tok0, s[S_CMD_T_POSY]) || !strcmp(tok0, s[S_CMD_T_ARGUMENT]) || !strcmp(tok0, s[S_CMD_T_HP]) || !strcmp(tok0, s[S_CMD_T_COMMAND]))) { - err_line(1, "No thing defined to manipulate yet."); - return 1; + return err_line(1, "No thing defined to manipulate yet."); } int16_t id; if ( parse_thing_type(tok0, tok1, t) @@ -301,7 +296,7 @@ static uint8_t parse_thing_manipulation_1arg(char * tok0, char * tok1) { t = get_thing(world.things, id, 1); char * err = "No thing type found to initialize new thing."; - if (!t && !err_line(NULL == world.thing_types, err)) + if (!t && !err_line(!world.thing_types, err)) { t = add_thing(id, world.thing_types->id, 0, 0); if (world.exists && t->lifepoints) @@ -395,8 +390,7 @@ static uint8_t set_map_length(char * tok0, char * tok1) uint16_t argument = atoi(tok1); if (argument < 1 || argument > 256) { - err_line(1, "Value must be >= 1 and <= 256."); - return 1; + return err_line(1, "Value must be >= 1 and <= 256."); } world.exists = 0; remove_worldstate_file(); @@ -445,21 +439,18 @@ extern uint8_t parse_god_command_2arg(char * tok0, char * tok1, char * tok2) { if (!t && !strcmp(tok0, s[S_CMD_T_MEMMAP])) { - err_line(1, "No thing defined to manipulate yet."); - return 1; + return err_line(1, "No thing defined to manipulate yet."); } if (!strcmp(tok0, s[S_CMD_T_MEMMAP])) { uint8_t y = atoi(tok1); if (parsetest_int(tok1, '8') || y >= world.map.length) { - err_line(1, "Illegal value for map line number."); - return 1; + return err_line(1, "Illegal value for map line number."); } if (strlen(tok2) != world.map.length) { - err_line(1, "Map line length is unequal map width."); - return 1; + return err_line(1, "Map line length is unequal map width."); } if (!t->mem_map) { @@ -475,3 +466,32 @@ extern uint8_t parse_god_command_2arg(char * tok0, char * tok1, char * tok2) } return 1; } + + + +extern uint8_t parse_god_command_3arg(char * tok0, char * tok1, char * tok2, + char * tok3) +{ + if (!t && !strcmp(tok0, s[S_CMD_T_MEMTHING])) + { + return err_line(1, "No thing defined to manipulate yet."); + } + if (!strcmp(tok0, s[S_CMD_T_MEMTHING])) + { + uint8_t id = atoi(tok1); + uint8_t y = atoi(tok2); + uint8_t x = atoi(tok3); + if ( parsetest_int(tok1, '8') || !get_thing_type(id) + || parsetest_int(tok2, '8') || y >= world.map.length + || parsetest_int(tok3, '8') || x >= world.map.length) + { + return err_line(1, "Illegal value for thing type or position."); + } + add_thing_to_memory_map(t, id, y, x); + } + else + { + return 0; + } + return 1; +}