#include <artifacts.h> int charges, level, total_charges; string type, zapper; string query_artifact_type() { return type; } void set_artifact_type( string word ) { type = word; } int query_charges() { return charges; } void set_charges( int number ) { charges = number; } int adjust_charges( int number ) { charges += number; if ( number > 0 ) total_charges += number; if ( charges < 0 ) charges = 0; return charges; } /* adjust_charges() */ int query_total_charges() { return total_charges; } void set_total_charges( int number ) { total_charges = number; } int query_level() { return level; } void set_level( int number ) { level = number; } string query_zapper() { return zapper; } void set_zapper( string word ) { zapper = word; call_out( "zapper_init", 1, TO ); } /* set_zapper() */ void zapper_init( object thing ) { if ( !thing ) return; zapper->init_artifact( thing ); } /* zapper_init() */ int break_on_charging() { int top, chance; top = 1000 / ( 32 + level ); if ( total_charges > top ) chance = 6 * ( total_charges - top ) * ( total_charges - top ); top = 14 - level / 7; if ( top < 0 ) top = 0; if ( charges > top ) chance += 3 * ( charges - top ) * ( charges - top ); chance += 1; if ( random( 100 ) < chance ) return 1; return 0; } /* break_on_charging() */ string long( int word, int dark ) { string a_name, start; a_name = (string)call_other( zapper, "query_"+ type +"_name" ); if ( !ARTIFACT_HAND->query_known( (string)TP->query_name(), a_name ) ) return ""; start = "You recognise "+ TO->the_short() +" to be "; if ( a_name[ 0 .. 0 ] == lower_case( a_name[ 0 .. 0 ] ) ) return start + add_a( a_name ) +". "; return start + a_name +". "; } /* long() */ mixed *stats() { return ({ ({ "charges", charges +" ("+ total_charges +")", }), ({ "level", level, }), ({ "zapper", zapper, }), }); } /* stats() */ mapping query_dynamic_auto_load() { return ([ "charges" : charges, "total charges" : total_charges, ]); } /* query_dynamic_auto_load() */ mapping query_static_auto_load() { return ([ "level" : level, "zapper" : zapper, ]); } /* query_static_auto_load() */ void init_dynamic_arg( mapping map ) { charges = map[ "charges" ]; total_charges = map[ "total charges" ]; } /* init_dynamic_arg() */ void init_static_arg( mapping map ) { if ( map[ "level" ] ) level = map[ "level" ]; if ( map[ "zapper" ] ) zapper = map[ "zapper" ]; } /* init_static_arg() */