Beispiel #1
0
/**
 * 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;
	}
}
Beispiel #3
0
/**
 * 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;
}