-extern uint8_t move_actor(struct MapObj * actor, enum dir d)
+extern uint8_t move_actor(struct MapObj * actor, char d)
{
struct yx_uint16 target = mv_yx_in_dir(d, actor->pos);
struct MapObj * other_actor;
-extern void move_player(enum dir d)
+extern void move_player(char d)
{
char * dsc_dir;
char * action_dsc_prototype = "player_";
uint8_t len_action_dsc_prototype = strlen(action_dsc_prototype);
char action_dsc[len_action_dsc_prototype + 2];
memcpy(action_dsc, action_dsc_prototype, len_action_dsc_prototype);
- if (NORTH == d)
+ if ('N' == d)
{
dsc_dir = "north";
action_dsc[len_action_dsc_prototype] = 'u';
}
- else if (EAST == d)
+ else if ('E' == d)
{
dsc_dir = "east" ;
action_dsc[len_action_dsc_prototype] = 'r';
}
- else if (SOUTH == d)
+ else if ('S' == d)
{
dsc_dir = "south";
action_dsc[len_action_dsc_prototype] = 'd';
}
- else if (WEST == d)
+ else if ('W' == d)
{
dsc_dir = "west" ;
action_dsc[len_action_dsc_prototype] = 'l';
}
turn_over(get_command_id("pick"));
}
+
+
+
+extern void player_use()
+{
+ struct MapObj * player = get_player();
+ if (NULL == player->owns)
+ {
+ update_log("\nYou try to use an object, but you own none.");
+ world.old_inventory_select = 0;
+ }
+ else
+ {
+ uint8_t i = 0;
+ struct MapObj * selected = player->owns;
+ for (; i != world.inventory_select; i++, selected = selected->next);
+ struct MapObjDef * mod = get_map_object_def(selected->type);
+ if (!strcmp("MAGIC MEAT", mod->name))
+ {
+ struct MapObj * next = selected->next;
+ free(selected);
+ if (0 < world.inventory_select)
+ {
+ world.old_inventory_select = world.inventory_select;
+ world.inventory_select--;
+ for (i = 0, selected = player->owns;
+ i != world.inventory_select;
+ i++, selected = selected->next);
+ selected->next = next;
+ }
+ else
+ {
+ player->owns = next;
+ }
+ player->lifepoints++;
+ update_log("\nYou consume MAGIC MEAT.");
+ }
+ else
+ {
+ update_log("\nYou try to use this object, but fail.");
+ }
+ }
+ turn_over(get_command_id("use"));
+}