diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/client.c | 6 | ||||
| -rw-r--r-- | src/client_reqs.c | 9 | ||||
| -rw-r--r-- | src/server_reqs.c | 45 | ||||
| -rw-r--r-- | src/util.h | 2 | ||||
| -rw-r--r-- | src/world.h | 4 |
5 files changed, 41 insertions, 25 deletions
diff --git a/src/client.c b/src/client.c index 45139e8..89044b0 100644 --- a/src/client.c +++ b/src/client.c @@ -198,8 +198,6 @@ char *client_read_password(void) return ret; } -#define WSPACE " \t\r\n" - #define CMD_OK 0 #define CMD_LOGOUT 1 #define CMD_QUIT 2 @@ -308,9 +306,9 @@ int client_cb(char **save) else if(!strcmp(what, "KICK")) { char *pid_s = strtok_r(NULL, WSPACE, save); - all_upper(pid_s); if(pid_s) { + all_upper(pid_s); if(!strcmp(pid_s, "ALL")) { const char *msg = "Kicking everyone...\n"; @@ -420,7 +418,7 @@ int go_cb(char **save) client_look(); } else - out("Expected direction after GO.\n"); + out("I don't understand where you want me to go.\n"); return CMD_OK; } diff --git a/src/client_reqs.c b/src/client_reqs.c index a1cf947..36f341c 100644 --- a/src/client_reqs.c +++ b/src/client_reqs.c @@ -265,8 +265,13 @@ void client_look_at(char *obj) void client_take(char *obj) { - all_lower(obj); - send_master(REQ_TAKE, obj, strlen(obj) + 1); + if(obj) + { + all_lower(obj); + send_master(REQ_TAKE, obj, strlen(obj) + 1); + } + else + out("You must supply an object.\n"); } void client_inventory(void) diff --git a/src/server_reqs.c b/src/server_reqs.c index eadae9f..676403d 100644 --- a/src/server_reqs.c +++ b/src/server_reqs.c @@ -238,24 +238,27 @@ static void req_move_room(unsigned char *data, size_t datalen, struct child_data /* TODO: bounds checking on `dir' */ room_id new = current->adjacent[dir]; - struct room_t *new_room = room_get(new); - - if((!new_room->data.hook_enter || - (new_room->data.hook_enter && new_room->data.hook_enter(new, sender))) && - (!current->data.hook_leave || - (current->data.hook_leave && current->data.hook_leave(sender->room, sender)))) + + if(new == ROOM_NONE) { - room_user_del(sender->room, sender); - - if(new != ROOM_NONE) - { - - child_set_room(sender, new); - status = 1; - } - else - send_msg(sender, "You cannot go that way.\n"); + send_msg(sender, "You cannot go that way.\n"); } + else + { + struct room_t *new_room = room_get(new); + + if((!new_room->data.hook_enter || + (new_room->data.hook_enter && new_room->data.hook_enter(new, sender))) && + (!current->data.hook_leave || + (current->data.hook_leave && current->data.hook_leave(sender->room, sender)))) + { + room_user_del(sender->room, sender); + + child_set_room(sender, new); + status = 1; + } + } + send_packet(sender, REQ_MOVE, &status, sizeof(status)); } @@ -423,8 +426,16 @@ static void req_inventory(unsigned char *data, size_t datalen, struct child_data char *article = (is_vowel(name[0])?"An":"A"); strlcat(buf, article, sizeof(buf)); strlcat(buf, " ", sizeof(buf)); + strlcat(buf, name, sizeof(buf)); } - strlcat(buf, name, sizeof(buf)); + else + { + char tmp[2]; + tmp[0] = toupper(name[0]); + tmp[1] = '\0'; + strlcat(buf, tmp, sizeof(buf)); + strlcat(buf, name + 1, sizeof(buf)); + } strlcat(buf, "\n", sizeof(buf)); } else @@ -21,6 +21,8 @@ #include "room.h" +#define WSPACE " \t\r\n" + /* utility functions */ void __attribute__((noreturn,format(printf,1,2))) error(const char *fmt, ...); void __attribute__((format(printf,4,5))) debugf_real(const char*, int, const char*, const char *fmt, ...); diff --git a/src/world.h b/src/world.h index 7749a63..50f9769 100644 --- a/src/world.h +++ b/src/world.h @@ -48,11 +48,11 @@ void world_save(const char *fname); /* loads the world from disk */ bool world_load(const char *fname, const struct roomdata_t *data, size_t data_sz, const char *world_name); -/** verbs **/ +/** global verbs **/ bool world_verb_add(struct verb_t*); bool world_verb_del(struct verb_t*); -/* gets the map of verbs */ +/* gets the map of global verbs */ void *world_verb_map(void); void world_free(void); |