/** * Free player struct */ static void cleanup_player(void) { int i; /* Free the things that are always initialised */ mem_free(player->obj_k); mem_free(player->timed); mem_free(player->upkeep->quiver); mem_free(player->upkeep->inven); mem_free(player->upkeep); player->upkeep = NULL; /* Free the things that are only there if there is a loaded player - * checking if there are quests will suffice */ if (player->quests) { player_quests_free(player); player_spells_free(player); object_pile_free(player->gear); object_pile_free(player->gear_k); for (i = 0; i < player->body.count; i++) string_free(player->body.slots[i].name); mem_free(player->body.slots); string_free(player->body.name); mem_free(player->history); } if (player->cave) { cave_free(player->cave); player->cave = NULL; } /* Free the basic player struct */ mem_free(player); player = NULL; }
/** * Copy all the standard quests to the player quest history */ void player_quests_reset(struct player *p) { size_t i; if (p->quests) player_quests_free(p); p->quests = mem_zalloc(z_info->quest_max * sizeof(struct quest)); for (i = 0; i < z_info->quest_max; i++) { p->quests[i].name = string_make(quests[i].name); p->quests[i].level = quests[i].level; p->quests[i].race = quests[i].race; p->quests[i].max_num = quests[i].max_num; } }
/** * Free player struct */ static void cleanup_player(void) { int i; player_quests_free(player); player_spells_free(player); mem_free(player->timed); mem_free(player->upkeep->quiver); mem_free(player->upkeep->inven); mem_free(player->upkeep); player->upkeep = NULL; object_pile_free(player->gear); object_pile_free(player->gear_k); for (i = 0; i < player->body.count; i++) string_free(player->body.slots[i].name); mem_free(player->body.slots); string_free(player->body.name); mem_free(player->history); mem_free(player); player = NULL; }