I have coded a new spell called gate that creates two portals, one where the caster is and one where the target is and I wrote a special that should let people enter the gate to go to the other room. The problem is I can't figure out how to assign the special as I create the object. The creation is just a mimick of the code to create a corpse except I have added a special item type for portals. Here is my code for the gate spell: ASPELL(spell_gate) { struct obj_data *portal, *tportal; struct extra_descr_data *new_descr, *new_tdescr; char buf[80]; if (ch == NULL || victim == NULL) return; if (ROOM_FLAGGED(victim->in_room, ROOM_PEACEFUL | ROOM_NOMAGIC)) { send_to_char("Your magic cannot penetrate into that room!", ch); return; } /* create the portal */ portal = create_obj(); portal->item_number = NOTHING; portal->in_room = NOWHERE; portal->name = str_dup("portal gate gateway"); portal->description = str_dup("A glowing portal forms a gateway to another place."); portal->short_description = str_dup("a glowing portal"); GET_OBJ_TYPE(portal) = ITEM_PORTAL; GET_OBJ_VAL(portal, 0) = victim->in_room; GET_OBJ_TIMER(portal) = (int) (GET_LEVELX(ch, CLASS_MAGIC_USER) / 10); CREATE(new_descr, struct extra_descr_data, 1); new_descr->keyword = str_dup("portal gate gateway"); sprintf(buf, "You can barely make out %s.", world[victim->in_room].name); new_descr->description = str_dup(buf); new_descr->next = portal->ex_description; portal->ex_description = new_descr; /* obj_index[?????].func = portal; */ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ obj_to_room(portal, ch->in_room); /* create the portal at the other end */ tportal = create_obj(); tportal->item_number = NOTHING; tportal->in_room = NOWHERE; tportal->name = str_dup("portal gate gateway"); tportal->description = str_dup("A glowing portal forms a gateway to another place."); tportal->short_description = str_dup("a glowing portal"); GET_OBJ_TYPE(tportal) = ITEM_PORTAL; GET_OBJ_VAL(tportal, 0) = ch->in_room; GET_OBJ_TIMER(tportal) = (int) (GET_LEVELX(ch, CLASS_MAGIC_USER) / 10); CREATE(new_tdescr, struct extra_descr_data, 1); new_tdescr->keyword = str_dup("portal gate gateway"); sprintf(buf, "You can barely make out %s.", world[ch->in_room].name); new_tdescr->description = str_dup(buf); new_tdescr->next = tportal->ex_description; tportal->ex_description = new_tdescr; /* obj_index[?????].func = portal; */ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ obj_to_room(tportal, victim->in_room); } I have tried several ways of assigning the procedure but i get several compilation errors. Any help would be appreciated, as this spell is basically useless unless I can assign the special :) Thanks, Chris
This archive was generated by hypermail 2b30 : 12/18/00 PST