Well, I figured I'd share my "gut" skill. Yes, it could be written better, but hey, it's free :) I assume if you use this you'll know how to add another skill to your mud. I'll just post my do_gut function and if anyone REALLY has any questions, just email merren@mindcryme.com personally. Basically it takes the killers level times 2 and if that's more then the victims hitpoints, you do that much damage plus end up with a nice steaming pile of guts ::chuckle:: Ok, so I'm sick :/ (once again see the admission above that this could be written better). -- ACMD(do_gut) { struct char_data *vict; int percent, prob; struct obj_data *guts; char name[256]; if (ROOM_FLAGGED(ch->in_room, ROOM_PEACEFUL)) { send_to_char("This room has a peaceful feeling.\r\n", ch); return; } one_argument(argument, arg); if (GET_SKILL(ch, SKILL_GUT) == 0) { send_to_char("Huh?!\r\n", ch); return; } if (!(vict = get_char_room_vis(ch, arg))) { if (FIGHTING(ch)) { vict = FIGHTING(ch); } else { send_to_char("Gut who?\r\n", ch); return; } } if (vict == ch) { send_to_char("Erm, that'd hurt!\r\n", ch); return; } if (!GET_EQ(ch, WEAR_WIELD)) { send_to_char("You need to wield a weapon to make it a success.\r\n",ch); return; } percent = number(1, 101); /* 101% is a complete failure */ prob = GET_SKILL(ch, SKILL_GUT); /* * Just in case you want mobs that aren't guttable :) if (MOB_FLAGGED(vict, MOB_NOGUT)) percent = 101; */ if ((GET_LEVEL(ch) * 2) < GET_HIT(vict)) { send_to_char("You fail to gut them!\r\n", ch); damage(ch, vict, 0, TYPE_UNDEFINED); } else { guts = create_obj(); guts->item_number = NOTHING; guts->in_room = NOWHERE; guts->name = str_dup("guts"); strcpy(name, "the steaming guts "); if (IS_NPC(vict)) sprintf(name, "%sof %s", name, vict->player.short_descr); else sprintf(name, "%sof %s", name, vict->player.name); guts->description = str_dup(name); strcpy(name, "the steaming guts "); if (IS_NPC(vict)) sprintf(name, "%sof %s", name, vict->player.short_descr); else sprintf(name, "%sof %s", name, vict->player.name); guts->short_description = str_dup(name); GET_OBJ_TYPE(guts) = ITEM_FOOD; GET_OBJ_WEAR(guts) = ITEM_WEAR_TAKE; GET_OBJ_EXTRA(guts) = 0; GET_OBJ_VAL(guts, 0) = 8; GET_OBJ_VAL(guts, 3) = 1; GET_OBJ_WEIGHT(guts) = 1; GET_OBJ_TIMER(guts) = 0; GET_OBJ_TIMER(guts) -= 5; obj_to_room(guts, ch->in_room); act("$n suddenly lunges forward and guts $N!", FALSE, ch, 0, vict,TO_ROOM); act("You suddenly lunge forward and gut $N!", FALSE, ch, 0, vict,TO_CHAR); damage(ch, vict, GET_LEVEL(ch) * 2, TYPE_UNDEFINED); WAIT_STATE(vict, PULSE_VIOLENCE); } WAIT_STATE(ch, PULSE_VIOLENCE * 2); } Melen Allanthya..org 4000 +------------------------------------------------------------+ | 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