/** * Contains a list of locations the person remembers. * Added by the Remember spell. Name may change. * This effect does not have a shadow associated with it. */ #include <tasks.h> #include <effect.h> string query_classification() { return "magic.mentalism.remembered.locations"; } int query_indefinite() { return 1; } mixed beginning(object person, mixed args) { tell_object(person, "The location settles happily into your mind.\n"); return args; } mixed restart(object person, mixed args, int id) { return args; } mixed merge_effect(object person, mixed old_arg, mixed new_arg) { int new_size; int i; if(!sizeof(old_arg) && !sizeof(new_arg)) { if(!sizeof(old_arg)) return new_arg; //Housekeeping. else return old_arg; } new_size = sizeof(old_arg) + sizeof(new_arg); if((new_size - sizeof(old_arg)) > 2) { //More housekeeping. tell_object(person, "Something has gone wrong with the spell you " "just cast. Please bug report it.\n"); return old_arg; } for(i = 0;i < sizeof(old_arg); i += 2) { if(old_arg[i] == new_arg[0]) { tell_object(person, "You already know this location!\n"); return old_arg; } } if(TASKER->perform_task(person, "magic.spells.misc", 45*(new_size - 1), TM_NONE, 0) == SUCCEED) { tell_object(person, "The new location settles happily into your mind.\n"); return old_arg + new_arg; } else { tell_object(person, "You concentrate hard, but the location slips " "out of your grasp!\n"); return old_arg; } } void end(object person, mixed args) { if(sizeof(args) > 2) { tell_object(person, "You forget all the locations you were remembering!\n"); } else { tell_object(person, "You forget the location you were remembering!\n"); } }