/**
 * 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");
  }
}