#include <bit.h> #define SHADOW "/std/races/shadows/troll_race" inherit "/std/races/carnivore"; void setup() { int i; set_name( "troll dog" ); set_long( "Troll dogs are large dogs, but made from stone.\n" ); set_desc( "a nasty troll dog" ); set_height( 60 ); set_weight( 4000 ); remove_bit( "skin" ); /* * Actually, it'd be nice to have all of these made of stone, so that * stone-eaters (e.g. other trolls) can still eat them, but until then... */ inedible = ({ }); for( i = 0; i < sizeof( bits ); i += BIT_SIZE ) inedible += ({ bits[ i + BIT_NAME ] }); unrottable = ({ }); for( i = 0; i < sizeof( bits ); i += BIT_SIZE ) unrottable += ({ bits[ i + BIT_NAME ] }); set_stats( ({ 8, 0, -4, 8, -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_ac( "blunt", "blunt", 80 ); thing->add_ac( "sharp", "sharp", 20 ); thing->add_ac( "pierce", "pierce", 10 ); thing->add_skill_level( "other.perception", 250 ); } /* new_set_level() */ 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( "claws" ); thing->remove_attack( "bite" ); thing->add_attack( "claws", 100, ({ ( 3 * number ) / 2, 5, number }), "sharp", "unarmed", 0 ); thing->add_attack( "bite", 50, ({ 3 * number, 2, number }), "pierce", "unarmed", 0 ); thing->set_combat_response("dodge"); } /* set_unarmed_attacks() */ void start_player( object thing ) { ::start_player( thing ); clone_object( SHADOW )->setup_shadow( thing ); } /* start_player() */