On Thu, 4 Jun 1998, Mundi King wrote: > i would like to get some ideas and feedback > concerning the use of spell components, I made it so that some objects would randomly appear in a mob's inventory when the mob is loaded into the game. (25% chance for a random object [randomly pulled from a list, that is] to load.) I used some of those objects as spell components and used the following method to check for component: /* * Returns true if the character is holding the * vnum that is passed to it as a parameter. */ int has_component(struct char_data *ch, obj_num vnum) { if (GET_EQ(ch, WEAR_HOLD)) if (GET_OBJ_VNUM(GET_EQ(ch, WEAR_HOLD)) == vnum) return TRUE; return FALSE; } case SPELL_PARALYZE: /* Check for component */ if (!has_component(ch, 66)) { send_to_char("You aren't holding the proper component " "for that spell.\r\n", ch); return; } /* Get rid of compnent. */ extract_obj(unequip_char(ch, WEAR_HOLD)); /* Saving throw and nat. resistance */ if (mag_savingthrow(victim, SAVING_PARA) || MOB_FLAGGED(victim, MOB_NOPARA)) { send_to_char(NOEFFECT, ch); return; } /* Setup the spell as per normal */ af[0].bitvector = AFF_PARALYZE; af[0].duration = 2; accum_duration = FALSE; to_vict = "You have been paralyzed!!"; to_char = "Your spell paralyzed $N and $E is helpless!"; to_room = "$n's spell paralyzed $N and $E is helpless!"; break; Please note that obj_num is a typedef that I have setup in structs.h. In stock code you would have a line like so: typedef int obj_num; Hope this helps. John Evans <evansj@datawest.net> http://www.hi-line.net/~evansj/ telnet://spear.gator.net:1066 Any sufficiently advanced technology is indistinguishable from magic. --Arthur C. Clarke +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST