aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client.c6
-rw-r--r--src/client_reqs.c9
-rw-r--r--src/server_reqs.c45
-rw-r--r--src/util.h2
-rw-r--r--src/world.h4
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
diff --git a/src/util.h b/src/util.h
index 147e7c0..407836a 100644
--- a/src/util.h
+++ b/src/util.h
@@ -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);