On Fri, 21 Jun 1996, Ground Zero Enterprises wrote: hmm..why do it like this? Create the obj normally, assign a SPEC_PROC to it and then just load the obj in the spell code. cl. > > 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 > _/_/_/_/_/_/_/_/_/_/ _/ Classic@Cloud9.net _/ uskgf89j@ibmmail.com _/ http://www.cloud9.net/~classic _/_/_/_/_/_/_/_/_/_/
This archive was generated by hypermail 2b30 : 12/18/00 PST