/** * This handles the standard messages for attacks. I cannot be bothered * rewriting the docs for this. * This handles the standard messages for the given damage types: * blunt, sharp, pierce, fire. * * There are also subtypes: * blunt - hands, feet, tail, hoof, wrestle, pommel. * sharp - claws, chew, slice, chop. * pierce - bite, beak, stab, horns, tusks. * @author pinkfish */ mapping weapon_mess; /** @ignore */ void create() { weapon_mess = ([ "blunt" : ({ 0, "$N swing$s at $I with $D", 20, "$N tap$s $I in the $z with $D", 60, "$N hit$s $I in the $z with $D", 100, "$N bruise$s $P $z with $D", 140, "$N hit$s $I hard in the $z with $D", 180, "$N smash$es $I in the $z with $D", 220, "$N crush$es $P $z with $D", 5000, "$N mash$es $P $z with $D", }), "blunt-tail" : ({ 0, "$N swing$s $p tail at $I", 20, "$N tap$s $I in the $z with $p tail", 60, "$N slap$s $I in the $z with $p tail", 100, "$N bruise$s $P $z with $p tail", 140, "$N hit$s $I hard in the $z with $p tail", 180, "$N bash$es $I in the $z with $p tail", 220, "$N smash$es $p tail into $P $z", 5000, "$N send$s $I reeling with a powerful blow to the $z with $p tail" }), "blunt-hoof" : ({ 0, "$N kick$s out at $I", 20, "$N tap$s $I in the $z with $p hoof", 60, "$N kick$s $I in the $z with $p hoof", 100, "$N bruise$s $P $z with $p hoof", 140, "$N hit$s $I hard in the $z with $p hoof", 180, "$N smash$es $I in the $z with $p hoof", 220, "$N crush$es $p hoof into $P $z", 5000, "$N mash$es $P $z with $p hoof" }), "blunt-wrestle" : ({ 0, "$N grab$s for $I", 25, "$N grapple$s with $I", 50, "$N catch$es $I in an arm lock", 75, "$N grab$s $I around the neck", 100, "$N poke$s $I in the face", 125, "$N throw$s $I to the ground", 150, "$N fling$s $I over $p shoulder", 175, "$N punch$es $I in the stomach", 200, "$N twist$s $P arm painfully", 225, "$N thump$s $P head hard", 250, "$N kick$s $I in the back", 275, "$N jump$s up and down on $I", 5000, "$N slam$s $P head against the ground" }), "blunt-hands" : ({ 0, "$N punch$es at $I", 10, "$N poke$s $I in the $z", 40,"$N tickle$s $I in the $z", 70, "$N jab$s $I in the $z", 100, "$N hit$s $I in the $z with an uppercut", 130, "$N hit$s $I in the $z with a cross", 160, "$N hit$s $I in the $z with a vicious hook", 5000, "$N beat$s $P $z to a pulp", }), "blunt-feet" : ({ 0, "$N kick$s out at $I", 10, "$N poke$s $I", 40, "$N tickle$s $I in the $z with $p toes", 70, "$N kick$s $I in the $z", 100, "$N viciously boot$s $I in the $z", 130, "$N kick$s $I in the $z", 160, "$N viciously kick$s $I in the $z", 5000, "$N kick$s $P $z into a bloody mess" }), "blunt-pommel": ({ 0, "$N strike$s at $I with the pommel of $D", 20, "$N tap$s $I in the $z with the pommel of $D", 60, "$N knock$s $P $z with the hilt of $D", 100, "$N bruise$s $P $z with the pommel of $D", 140, "$N bash$es $I in the $z with the hilt of $D", 180, "$N beat$s $I in the $z with the pommel of $D", 220, "$N smash$es the hilt of $D into $P $z", 5000, "$N smash$es $I in the $z with the pommel of $D", }), "blunt-cane" : ({ 0, "$N strike$s at $I with $D", 20, "$N tap$s $P $z with $D", 60, "$N knock$s $P $z with $D", 100, "$N strike$s $I lightly in the $z with $D", 140, "$N strike$s $I in the $z with $D", 180, "$N strike$s $I hard in the $z with $D", 220, "$N batter$s $P $z with $D", 5000, "$N bludgeon$s $P $z with $D", }), "blunt-self" : ({ 0, "$N swing$s at $I", 20, "$N tap$s $I in the $z", 60, "$N hit$s $I in the $z", 100, "$N bruise$s $P $z", 140, "$N hit$s $I hard in the $z", 180, "$N smash$es $I in the $z", 220, "$N crush$es $P $z", 5000, "$N mash$es $P $z", }), "sharp" : ({ 0, "$N slash$es at $I with $D", 20, "$N snick$s $P $z with $D", 60, "$N scratch$es $P $z with $D", 100, "$N nick$s $P $z with $D", 140, "$N cut$s $P $z with $D", 180, "$N slice$s $P $z with $D", 220, "$N hack$s $P $z with $D", 5000, "$N chop$s up $P $z with $D" }), "sharp-claws" : ({ 0, "$N rake$s at $I with $p claws", 10, "$N snick$s $P $z with $p claws", 40, "$N scratch$es $P $z with $p claws", 70, "$N nick$s $P $z with $p claws", 100, "$N claw$s $P $z", 130, "$N slice$s $P $z up with $p claws", 160, "$N hack$s $P $z up with $p claws", 5000, "$N cut$s $P $z into small pieces with $p claws", }), "sharp-chew" : ({ 0, "$N bite$s at $I", 10, "$N chew$s on $P $z", 40, "$N munch$es on $P $z", 70, "$N gash$es $P $z with $p teeth", 100, "$N rip$s flesh off $P $z", 130, "$N tear$s deeply into $P $z", 160, "$N rip$s $P $z to pieces with $p teeth", 5000, "$N rend$s huge chunks of flesh from $P $z", }), "sharp-slice": ({ 0, "$N slice$s at $I with $D", 20, "$N just manage$s to slice $P $z with $D", 60, "$N slice$s $D across $P $z", 100, "$N shred$s $P $z with $D", 140, "$N slice$s $D into $P $z", 180, "$N take$s a sliver off $P $z with $D", 220, "$N slice$s $D deeply into $P $z", 5000, "$N neatly fillet$s $P $z with $D", }), "sharp-chop": ({ 0, "$N swing$s $D at $I", 20, "$N attempt$s to chop $P $z with $D", 60, "$N chop$s at $P $z with $D", 100, "$N chop$s $P $z with $D", 140, "$N chop$s $D into $P $z", 180, "$N hack$s into $P $z with $D", 220, "$N chop$s $D deeply into $P $z", 5000, "$N chop$s $P $z into pieces with $D", }), "pierce": ({ 0, "$N thrust$s at $I with $D", 20, "$N barely hit$s $I in the $z with $D", 60, "$N jab$s $D into $P $z", 100, "$N pierce$s $P $z with $D", 140, "$N impale$s $P $z on $D", 180, "$N skewer$s $P $z with $D", 220, "$N run$s $I through the $z with $D", 5000, "$N make$s a kebab of $P $z with $D", }), "pierce-spike": ({ 0, "$N swing$s at $I with $D", 20, "$N barely hit$s $I in the $z with $D", 60, "$N jab$s $D into $P $z", 100, "$N spike$s $P $z with $D", 140, "$N impale$s $P $z on $D", 180, "$N ventilate$s $P $z with $D", 220, "$N perforate$s $P $z with $D", 5000, "$N make$s a mess of $P $z with $D", }), "pierce-beak" : ({ 0, "$N pecks at $I with $p beak", 10, "$N snick$s $P $z", 40, "$N scratch$es $P $z with $p beak", 70, "$N peck$s $P $z", 100, "$N viciously peck$s $P $z", 130, "$N gouge$s a hole in $P $z with $p beak", 160, "$N slice$s $P $z with $p beak", 5000, "$N slice$s $P $z into small bits with $p beak", }), "pierce-stab": ({ 0, "$N thrust$s at $I with $D", 20, "$N barely stab$s $I in the $z with $D", 60, "$N stab$s $I in the $z with $D", 100, "$N messily stab$s $I in the $z with $D", 140, "$N stab$s $I deeply in the $z with $D", 180, "$N perforate$s $P $z with $D", 220, "$N pierce$s $P $z with $D", 5000, "$N stab$s $D right through $P $z", }), "pierce-horns": ({ 0, "$N attempt$s to gore $I with $p horns", 20, "$N prod$s $I in the $z with $p horns", 60, "$N poke$s $I in the $z with $p horns", 100, "$N butt$s $I in the $z with $p horns", 140, "$N pierce$s $I deeply in the $z with $p horns", 180, "$N ram$s $I in the $z with $p horns", 220, "$N gore$s $P $z with $p horns", 5000, "$N impale$s $P $z on $p horns", }), "pierce-tusks": ({ 0, "$N attempt$s to gore $I with $p tusks", 20, "$N prod$s $P $z with $p tusks", 60, "$N poke$s $I in the $z with $p tusks", 100, "$N jab$s $p tusks into $P $z", 140, "$N pierce$s $P $z with $p tusks", 180, "$N stab$s $p tusks deeply into $P $z", 220, "$N gore$s $P $z with $p tusks", 5000, "$N impale$s $P $z on $p tusks", }), "pierce-bite" : ({ 0, "$N attempt$s to bite $I", 10, "$N nip$s $I in the $z", 40, "$N nibble$s at $P $z", 70, "$N bite$s $I in the $z", 100, "$N sink$s $p teeth into $P $z", 130, "$N bite$s into $P $z", 160, "$N sink$s $p teeth deep into $P $z", 5000, "$N bite$s deeply into $P $z, splintering $P bones", }), "fire" : ({ 20, "$N smoke$s $I", 60, "$N toast$s $I", 100, "$N scorch$es $I", 140, "$N crisp$s $I", 180, "$N singe$s $I", 220, "$N fry$s $I", 260, "$N roast$s $I", 300, "$N melt$s $I", 340, "$N char$s $I", 380, "$N burn$s $I", 420, "$N incinerate$s $I", 460, "$N cremate$s $I", 5000, "$N vapourise$s $I", }), ]); } /** @ignore */ string parse_string(string mess, object him, object me, object wep, string zone) { return replace( replace( mess, ({ "$mposs$ $D", (string)wep->poss_short() }) ), ({ "$hname$", (string)him->query_name(), "$mname$", (string)me->query_name(), "$hcname$", (string)him->the_short(), "$mcname$", (string)me->the_short(), "$hposs$", (string)him->query_possessive(), "$mposs$", (string)me->query_possessive(), "$hpname$", (string)him->poss_short(), "$mpname$", (string)me->poss_short(), "$hpron$", (string)him->query_pronoun(), "$mpron$", (string)me->query_pronoun(), "$hobj$", (string)him->query_objective(), "$mobj$", (string)me->query_objective(), "$wname$", (string)wep->query_name(), "$wcname$", (string)wep->short(0), "$zname$", zone}) ); } /* parse_string() */ mixed query_message( int dam, string type, object him, object me, string name, object wep, string zone) { int j; mixed ind; string tmp; if(!zone) { zone = "body"; } else { if(zone[sizeof(zone)]-1 == 's') zone = zone[0..<2]; } ind = wep->query_attack_message(name, type); if (!ind) { // When we changed weapons to use AT_SKILL instead of AT_NAME // it broke unarmed combat. if(type == "unarmed") { switch(name) { case "bite": case "beak": case "stab": case "horns": case "tusks": type = "pierce"; break; case "claws": case "chew": case "slice": case "chop": type = "sharp"; break; default: type = "blunt"; } } ind = weapon_mess[type+"-"+name]; if(!ind) { ind = weapon_mess[type]; if (!ind) { return 0; } } } /* Find the correct message */ while (j < sizeof(ind) && dam > ind[j]) { j += 2; } if (j >= sizeof(ind)) { j = sizeof(ind)-2; } ind = ind[j+1]; /* If it is a string, new format */ if (stringp(ind)) { tmp = replace(ind, ({ "$N", (string)me->the_short(), "$p ", (string)me->query_possessive() +" ", "$r", (string)me->query_pronoun(), "$o", (string)me->query_objective(), "$z", zone, "$D", wep->poss_short(), "$I", him->the_short(), "$P", (string)him->the_poss_short(), "$O", (string)him->query_objective(), "$es", "es", "$s", "s" }) ); ind = ({ replace( ind, ({ "$N", "you", "$p ", "your ", "$r", "you", "$o", "you", "$es", "", "$s", "", "$D", wep->poss_short(), "$z", zone, "$I", him->the_short(), "$P", him->the_poss_short(), "$O", him->query_objective(), }) ), tmp, tmp }); return ind; } return ({ parse_string(ind[0], him, me, wep, zone), parse_string(ind[1], him, me, wep, zone), parse_string(ind[2], him, me, wep, zone)}); } /* query_message() */