Basic portal spell using light ball as an object spell_list.hpp 97: SPELL (spell_portal) spells.cpp 1154: void Character::spell_portal (int sn, int lvl, void *vo) { Character *victim; if ((victim = get_char_world (target_name)) == NULL || victim == this || victim->in_room == NULL // || in_room == victim->in_room || IS_SET (victim->in_room->room_flags, ROOM_SAFE) || IS_SET (victim->in_room->room_flags, ROOM_PRIVATE) || IS_SET (victim->in_room->room_flags, ROOM_SOLITARY) || IS_SET (victim->in_room->room_flags, ROOM_NO_RECALL) || victim->level >= lvl + 3 || victim->fighting != NULL || victim->in_room->area != in_room->area || (victim->is_npc () && victim->saves_spell (lvl))) { send_to_char ("You failed.\r\n"); return; } Object *portal; portal = get_obj_index(OBJ_VNUM_LIGHT_BALL)->create_object(0); portal->value[0] = victim->in_room->vnum; portal->timer = 1; portal->obj_to_room (in_room); act ("$n gazes and $p appears.", portal, NULL, TO_ROOM); act ("You gaze and $p appears.", portal, NULL, TO_CHAR); Object *portal2; portal2 = get_obj_index(OBJ_VNUM_LIGHT_BALL)->create_object(0); portal2->value[0] = in_room->vnum; portal2->timer = 1; portal2->obj_to_room (victim->in_room); victim->send_to_char ("A portal appears for you.\r\n"); victim->act ("$p appears.", portal2, NULL, TO_ROOM); return; } cmd_list.hpp 185: COMMAND (do_enter) commands.cpp 5382: void Character::do_enter (std::string argument) { std::string arg; one_argument (argument, arg); if (arg.empty()) { send_to_char ("Enter what?\r\n"); return; } if (fighting != NULL) { send_to_char ("You're fighting!\r\n"); return; } if (!str_cmp (argument, "portal")) { ObjIter o; for (o = in_room->contents.begin(); o != in_room->contents.end(); o++) { if (can_see_obj(*o) && (*o)->item_type == ITEM_LIGHT && (*o)->value[0] != 0) { send_to_char("You enter a portal.\r\n"); act ("$n enters a portal.", NULL, NULL, TO_ROOM); char_from_room(); char_to_room(get_room_index((*o)->value[0])); act ("$n comes through a portal.", NULL, NULL, TO_ROOM); do_look ("auto"); return; } } } send_to_char ("There is no portal here.\r\n"); return; } murk.cpp 449: {"enter", &Character::do_enter, POS_STANDING, 0}, 706: { "portal", {1, 1, 1, 1}, &Character::spell_portal, TAR_IGNORE, POS_STANDING, 1, 12, "", "!Portal!"},