/* scorpion race object Thought .. 19th Oct 1996 * Fixed by Sin to do the poisoning correctly. */ #define POISON_EFFECT "/std/effects/poisons/spider_venom" inherit "/std/races/arachnid"; void poison( int damage, object him, object me, string atype, string aname ); void setup() { set_name( "scorpion" ); set_long( "A nasty little poisonous creature, of the arachnid family.\n" ); set_height( 5 ); set_weight( 2 ); set_desc( "a nasty little poisonous creature, of the arachnid family" ); bits = ({ "head", "head", ({ 0, 200, 0, "left eye", "right eye", "mandible", "brain" }), "left eye", "eye", ({ "head", 10, 0 }), "right eye", "eye", ({ "head", 10, 0 }), "mandible", "mouth", ({ "head", 50, 0 }), "brain", "brain", ({ "head", 25, 0 }), "thorax", "thorax", ({ 0, 500, 0, "heart", "poison sac" }), "heart", "heart", ({ "thorax", 50, 0 }), "poison sac", "sac", ({ "thorax", 50, 0 }), "tail", "tail", ({ 0, 300, 0, "sting" }), "sting", "sting", ({ "tail", 25, 0 }), "left claw", "claw", ({ 0, 100, 0 }), "right claw", "claw", ({ 0, 100, 0 }), "left front leg", "leg", ({ 0, 50, 0 }), "left middle leg", "leg", ({ 0, 50, 0 }), "left back leg", "leg", ({ 0, 50, 0 }), "right front leg", "leg", ({ 0, 50, 0 }), "right middle leg", "leg", ({ 0, 50, 0 }), "right back leg", "leg", ({ 0, 50, 0 }) }); inedible = ({ "mandible", "left claw", "right claw" }); unrottable = ({ "mandible", "left claw", "right claw" }); set_stats( ({ -6, 4, -6, -6, -6 }) ); } /* setup() */ void new_set_level( mixed *args ) { int level; object thing; if( sizeof(args) < 2 || !args[1] ) return; level = args[ 0 ]; thing = args[ 1 ]; thing->add_skill_level( "other.health", level * 3 ); thing->add_ac( "blunt", "blunt", level / 2 ); thing->add_ac( "pierce", "pierce", level / 4 ); thing->add_ac( "sharp", "sharp", level / 3 ); thing->add_ac( "fire", "fire", level ); /* Not quite sure about these levels, I know the ordering is right, but * the actual values could probably do with tweaking */ } /* new_set_level() */ int query_dark( int light ) { return 0; } void set_unarmed_attacks( object thing ) { int number; number = (int)thing->query_skill_bonus( "fighting.combat.melee.unarmed" ); number = 4 + sqrt( number ); thing->remove_attack( "hands" ); thing->remove_attack( "feet" ); thing->remove_attack( "poison" ); thing->remove_attack( "bite" ); thing->add_attack( "sting", 70, ({ 5 * number, 10, number }), "pierce", "unarmed", ({ "poison", this_object() }) ); thing->add_attack( "bite", 20, ({ 3 * number, 10, number }), "pierce", "unarmed", 0 ); thing->add_attack_message( "sting", "pierce", ({ 0, "$N sting$s $P $z.\n" }) ); thing->tactics( "response dodge" ); } /* set_unarmed_attacks() */ void poison( int damage, object him, object me, string a_type, string a_name ) { tell_object( me, "You stab " + him->one_short() + " with your tail, " "injecting " + him->query_objective() + " with venom.\n" ); tell_object( him, me->one_short() + " stabs you with " + me->query_possessive() + " tail! You seethe in agony.\n" ); tell_room( environment( me ), me->one_short() + " visciously stabs " + him->one_short() + " with " + me->query_possessive() + " tail! " + him->one_short() + " seethes in agony.\n", ({ me, him }) ); him->add_effect( POISON_EFFECT, 100 ); } /* poison() */