/* INCLUDE : Quest Info Utils Author : Dek Date : March 2001 Function : General inheritable for use by anything really. Using quest_info stuff is a bit of a pain. This is just syntactic sugar to make it a lot more friendly. Quest info is saved as a mapping, so you can index any info you like under named keys. Functions: ---------- set_quest_name(string quest_name) sets the name of the quest this item applies to. void set_quest_param(mixed player, string key, mixed value) Sets the quest info value addressed by <key> to <value> Value can be of any type. mixed query_quest_param(mixed player, string key) gets the quest info value addressed by <key> void clear_quest_info(mixed player) Clears all the quest info associated with <player> for the current quest */ #include <library.h> string _quest_name; // call this function in setup. I'm making the assumption that one // item only deals with one quest, but it's a fairly safe assumption. void set_quest_name(string quest_name) { _quest_name = quest_name; } void set_quest_param(mixed player, string key, mixed value) { mixed info; if (!stringp(player)) player = player->query_name(); info = LIBRARY->query_player_quest_info(player, _quest_name); if (!mapp(info)) info = ([ ]); info[key] = value; LIBRARY->set_player_quest_info(player, _quest_name, info); } mixed query_quest_param(mixed player, string key) { mixed info; if (!stringp(player)) player = player->query_name(); info = LIBRARY->query_player_quest_info(player, _quest_name); if (!mapp(info)) return 0; return info[key]; } void clear_quest_info(mixed player) { if (!stringp(player)) player = player->query_name(); LIBRARY->set_player_quest_info(player, _quest_name, 0); }