inherit "/std/races/reptile_base"; void setup() { set_name( "snake" ); set_long( "Snake, Serpent, Legless thingy that crawls on its belly all " "day long.\n" ); set_height( 5 ); set_weight( 60 ); set_desc( "a serpent, the type with no legs but with scales." ); /* throw away reptilian bits and replace totally */ bits = ({ "head", "head", ({ 0, 50, 0, "left eye", "right eye", "poison sac", "tongue", "skull" }), "left eye", "eye", ({ "head", 5, 0 }), "right eye", "eye", ({ "head", 5, 0 }), "poison sac", "sac", ({ "head", 10, 0 }), "skull", "skull", ({ "head", 40, 0, "tooth", "brain" }), "tooth", "tooth", ({ "skull", 5, ({"/std/bit", 2}) }), "brain", "brain", ({ "skull", 10, 0 }), "torso", "torso", ({ 0, 600, 0, "heart", "liver", "left kidney", "right kidney", "spleen", "bladder", "intestine" }), "heart", "heart", ({ "torso", 20, 0 }), "liver", "liver", ({ "torso", 20, 0 }), "left lung", "lung", ({ "torso", 20, 0 }), "right lung", "lung", ({ "torso", 20, 0 }), "left kidney", "kidney", ({ "torso", 10, 0 }), "right kidney", "kidney", ({ "torso", 10, 0 }), "spleen", "spleen", ({ "torso", 10, 0 }), "bladder", "bladder", ({ "torso", 10, 0 }), "intestine", "gut", ({ "torso", 100, 0 }), "genitals", "genitals", ({ 0, 5, 0 }), "tail", "tail", ({ 0, 500, 0 }), "skin", "skin", ({ 0, 175, 0 }) }); inedible = ({ "poison sac", "tooth" }); unrottable = ({ "tooth" }); add_ac( "blunt", "blunt", 40 ); add_ac( "sharp", "sharp", 20 ); add_ac( "pierce", "pierce", 10 ); set_stats( ({ 0, 0, -4, 4, -4 }) ); } /* setup() */ void set_unarmed_attacks( object thing ) { int number; number = (int)thing->query_skill_bonus( "fighting.combat.melee.unarmed" ); number = sqrt( number ); thing->remove_attack( "hands" ); thing->remove_attack( "feet" ); thing->remove_attack( "bite" ); thing->remove_attack( "crush" ); thing->add_attack( "bite", 80, ({ ( 3 * number ) / 2, 5, number * 2 }), "pierce", "unarmed", ({ "poison", this_object() }) ); thing->tactics( "response dodge" ); } /* set_unarmed_attacks() */ void poison( int damage, object him, object me, string a_type, string a_name ) { tell_room( me->one_short() + " visciously sinks its fangs into " + him->one_short() + " who seethes in agony!\n" ); tell_object( him, me->one_short() + " sinks its fangs into you! You " "seethe in agony.\n" ); him->add_effect( POISON_EFFECT, random(200) ); } string *query_target_zones() { return ({ "head", "body", "body", "body", "tail", "tail", "tail" }); } string map_target_zone(string zone) { switch(zone) { case "head": return "head"; case "neck": case "chest": return "body"; default: return "tail"; } }