Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stats.h>
- mapping base_stats;
- mapping bonus_stats;
- string query_valid_base_stat( string statname );
- int query_stat( string statname );
- int query_base_stat( string statname );
- int query_bonus_stat( string statname );
- void trim_base_stat(string statname);
- void trim_bonus_stat(string statname);
- int add_base_stat( string statname, int amt );
- int add_bonus_stat( string statname, int amt );
- int set_base_stat( string statname, int amt );
- int set_bonus_stat( string statname, int amt );
- mixed *query_all_stats();
- void initialize_base_stats();
- void initialize_bonus_stats();
- void initialize_stat_dependant_variables();
- void initialize_stats();
- string query_valid_base_stat( string statname )
- {
- if( base_stats[statname] )
- return statname;
- }
- int query_stat( string statname )
- {
- int base, bonus;
- if( !statname ) {
- return 0;
- }
- if( !base_stats ) {
- base_stats = ([ ]);
- }
- if( !bonus_stats ) {
- bonus_stats = ([ ]);
- }
- base = base_stats[statname] ? base_stats[statname] : 0;
- bonus = bonus_stats[statname] ? bonus_stats[statname] : 0;
- return ( base + bonus );
- }
- int query_base_stat( string statname )
- {
- if( !statname ) {
- return 0;
- }
- if( !base_stats ) {
- base_stats = ([ ]);
- }
- return base_stats[statname] ? base_stats[statname]:0;
- }
- int query_bonus_stat( string statname )
- {
- if( !statname ) {
- return 0;
- }
- if( !bonus_stats ) {
- bonus_stats = ([ ]);
- }
- return bonus_stats[statname] ? bonus_stats[statname]:0;
- }
- void trim_base_stat(string statname)
- {
- int max, min;
- return;
- max = this_object()->query_race_object()->query_base_stat_maximum(statname);
- min = this_object()->query_race_object()->query_base_stat_minimum(statname);
- if( query_base_stat(statname) < min) {
- base_stats[statname] = min;
- }
- else if( query_base_stat(statname) > max) {
- base_stats[statname] = max;
- }
- }
- void trim_bonus_stat(string statname)
- {
- int max, min;
- max = 0;
- min = 0;
- /* removed, query_bonus_stat_X functions dont exist in std/race
- max = this_object()->query_race_object()->query_bonus_stat_maximum(statname);
- min = this_object()->query_race_object()->query_bonus_stat_minimum(statname);
- */
- if( query_bonus_stat(statname) < min) {
- bonus_stats[statname] = min;
- }
- else if( query_bonus_stat(statname) > max) {
- bonus_stats[statname] = max;
- }
- }
- int add_base_stat( string statname, int amt )
- {
- if( !base_stats ) {
- base_stats = ([ ]);
- }
- if( member_array( statname, VALID_STATS ) == -1 ) {
- return 0;
- }
- if( !base_stats[statname] ) {
- base_stats[statname] = amt;
- }
- else {
- base_stats[statname] += amt;
- }
- trim_base_stat(statname);
- return 1;
- }
- int add_timed_bonus_stat( string statname, int amt, int time )
- {
- if( !base_stats ) {
- base_stats = ([ ]);
- }
- if( member_array( statname, VALID_STATS ) == -1 ) {
- return 0;
- }
- if( !base_stats[statname] ) {
- base_stats[statname] = amt;
- }
- else {
- base_stats[statname] += amt;
- }
- trim_base_stat(statname);
- call_out( "add_base_stat", time, -amt );
- return 1;
- }
- int add_bonus_stat( string statname, int amt )
- {
- if( !base_stats ) {
- bonus_stats = ([ ]);
- }
- if( member_array( statname, VALID_STATS ) == -1 ) {
- return 0;
- }
- if( !bonus_stats[statname] ) {
- bonus_stats[statname] = amt;
- }
- else {
- bonus_stats[statname] += amt;
- }
- trim_bonus_stat(statname);
- return 1;
- }
- int set_base_stat( string statname, int amt )
- {
- if( !base_stats ) {
- base_stats = ([ ]);
- }
- if( member_array( statname, VALID_STATS ) == -1 ) {
- return 0;
- }
- base_stats[statname] = amt;
- trim_base_stat(statname);
- return 1;
- }
- int set_bonus_stat( string statname, int amt )
- {
- if( !bonus_stats ) {
- bonus_stats = ([ ]);
- }
- if( member_array( statname, VALID_STATS ) == -1 ) {
- return 0;
- }
- bonus_stats[statname] = amt;
- trim_bonus_stat(statname);
- return 1;
- }
- mixed *query_all_stats()
- {
- mixed *ret;
- string *stat_names;
- int i;
- stat_names = map_indices( base_stats );
- ret = ({ });
- for( i=0; i < sizeof( stat_names ); i++ )
- {
- ret += ({ ({ stat_names[i], base_stats[stat_names[i]], bonus_stats[stat_names[i]] }) });
- }
- return( ret );
- }
- int query_statbonus( string name ) {
- int stat;
- if( member_array( name, VALID_STATS ) == -1 ) {
- return( 0 );
- }
- stat = query_stat( name );
- if( stat > 1 && stat < 9 ) {
- return( 1 );
- } else if( stat > 8 && stat < 14 ) {
- return( 2 );
- } else if( stat > 13 && stat < 18 ) {
- return( 3 );
- } else if( stat > 17 && stat < 20 ) {
- return( 4 );
- } else if( stat > 29 ) {
- return( 5 );
- }
- return( 0 );
- }
- void initialize_base_stats()
- {
- int i;
- for (i=0;i<sizeof(VALID_STATS);i++)
- {
- this_object()->set_base_stat( VALID_STATS[i],STAT_MIN);
- }
- }
- void initialize_bonus_stats()
- {
- int i;
- for (i=0;i<sizeof(VALID_STATS);i++)
- {
- this_object()->set_bonus_stat( VALID_STATS[i],0);
- }
- }
- void initialize_stat_dependant_variables()
- {
- int con,str, hp;
- con = this_object()->query_base_stat("con");
- str=this_object()->query_base_stat("str");
- hp = 100+(con*4)+(str*2);
- this_object()->set_max_hp( hp );
- }
- void initialize_stats( )
- {
- this_object()->initialize_base_stats();
- this_object()->initialize_bonus_stats();
- initialize_stat_dependant_variables();
- }
- void setup()
- {
- base_stats=([]);
- bonus_stats=([]);
- initialize_stats();
- }
- void upgraded()
- {
- if(clone_num() == 0) setup();
- ::upgraded();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement