#include <time.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include "merc.h" #include "utils.h" DECLARE_DO_FUN(do_whirl); void do_beer(CHAR_DATA * ch, char *argument) { int hitroll, damroll; int rounds; char points[MAX_STRING_LENGTH]; AFFECT_DATA af; argument = one_argument(argument, points); rounds = atoi(points); if (ch->race != race_lookup("dwarf")) { send_to_char("Sorry. Try playing a dwarf instead.\n\r", ch); return; } if (ch->blood < 10) { send_to_char("You're not drunk enough.\n\r", ch); return; } if (rounds < 1) { send_to_char("You can't beerserk for zero rounds.\n\r", ch); return; } if (ch->blood < (rounds)) { send_to_char("You don't have enough beer points to do that!\n\r", ch); return; } if (is_affected(ch, gsn_beer)) { affect_strip(ch, gsn_beer); } hitroll = -(rounds / 4); damroll = (rounds / 2); af.type = gsn_beer; af.duration = rounds / 10; af.level = ch->level; /* damroll modifier */ af.location = APPLY_DAMROLL; af.modifier = damroll; affect_to_char(ch, &af); /* hitroll modifier */ af.location = APPLY_HITROLL; af.modifier = hitroll; affect_to_char(ch, &af); /* ac modifier */ af.location = APPLY_AC; af.modifier = UMAX(10, 10 * (rounds)); affect_to_char(ch, &af); /* blood drop */ ch->blood -= (rounds); if (ch->blood < 0) ch->blood = 0; send_to_char("The alcohol in your blood turns to rage!\n\r", ch); return; } void skill_quick_poison(CHAR_DATA * ch, char *argument) { OBJ_DATA *obj; AFFECT_DATA af; int percent, skill; if (argument == '\0') { send_to_char("What where you planning?\n\r", ch); return; } obj = get_obj_list(ch, argument, ch->carrying); if (obj == NULL) { send_to_char("You don't have that item.\n\r", ch); return; } if ((skill = get_skill(ch, gsn_quick_poison)) < 1) { send_to_char("This isn't a good plan.\n\r", ch); return; } if (obj->item_type == ITEM_WEAPON) { if (obj->value[3] < 0 || attack_table[obj->value[3]].damage == DAM_BASH) { send_to_char("Didn't you think of a way to use it?\n\r", ch); return; } WAIT_STATE(ch, skill_table[gsn_quick_poison].beats); percent = number_percent(); if (percent < skill) { af.where = TO_WEAPON; af.type = gsn_quick_poison; af.level = ch->level; af.duration = (ch->level / 12); af.location = 0; af.modifier = 0; af.bitvector = WEAPON_QUICKPOISON; affect_to_obj(obj, &af); act("You have put venom on $p.", ch, obj, NULL, TO_CHAR); check_improve(ch, gsn_quick_poison, TRUE, 4); return; } else { send_to_char("You failed", ch); } } return; }