/* Increase in level at appropriate experience gain */ void gain_level(void) { int gained=FALSE; int hp_gain; /* FIXED! 12/30/98 */ if (gamestatusp(SUPPRESS_PRINTING)) return; while (expval(Player.level+1) <= Player.xp) { if (!gained) morewait(); gained = TRUE; Player.level++; print1("You have attained a new experience level!"); print2("You are now "); nprint2(getarticle(levelname(Player.level))); nprint2(levelname(Player.level)); hp_gain = random_range(Player.con)+1; /* start fix 12/30/98 */ if (Player.hp < Player.maxhp ) Player.hp += hp_gain*Player.hp/Player.maxhp; else if (Player.hp < Player.maxhp + hp_gain) Player.hp = Player.maxhp + hp_gain; /* else leave current hp alone */ Player.maxhp += hp_gain; Player.maxmana = calcmana(); /* If the character was given a bonus, let him keep it. Otherwise * recharge him. */ Player.mana = max(Player.mana, Player.maxmana); /* end fix 12/30/98 */ morewait(); } if (gained) clearmsg(); calc_melee(); }
/* for the examine function */ void describe_player(void) { if (Player.hp < (Player.maxhp /5)) print1("A grievously injured "); else if (Player.hp < (Player.maxhp /2)) print1("A seriously wounded "); else if (Player.hp < Player.maxhp) print1("A somewhat bruised "); else print1("A fit "); if (Player.status[SHADOWFORM]) nprint1("shadow"); else nprint1(levelname(Player.level)); nprint1(" named "); nprint1(Player.name); if (State.getMounted()) nprint1(" (riding a horse.)"); }
std::string getheader(eLogLevel level) { std::ostringstream ost; ost << "|" << levelname(level) << "|" << timeutils::getLogTimeStamp() << "| "; return ost.str(); }
short dump_basic( FILE *dumpfile ) { int curcol; long total_balance; char *cp; bank_account *account; /* reset "checksum" */ dumpcheck = 0; strcpy( dump_buf, "[*] " ); strcat( dump_buf, VERSIONSTRING ); strcat( dump_buf, " character dump [*]\n\n" ); if ( !dump( dumpfile, dump_buf, FALSE ) ) return FALSE; curcol = sprintf( dump_buf, "Name : %s\n", Player.name ); if ( gamestatusp( CHEATED ) ) { if ( 72 > strlen( dump_buf ) ) cp = strrchr( dump_buf, '\n' ); else cp = &(dump_buf[ 70 ]); strcpy( cp, " (WIZARD)\n" ); } if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; sprintf( dump_buf, "Level : %s [%d]\n", levelname( Player.level ), Player.level ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; sprintf( dump_buf, "Alignment : %s\n\n", alignment_string( Player.alignment ) ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; /* sprintf( dump_buf, "Str : %5d [%d]%n%*sHP : %5d [%d]%n%*sHit : %d\n", Player.str, Player.maxstr, &curcol, 26 - curcol, spaces, Player.hp, Player.maxhp, &curcol, 57 - curcol, spaces, Player.hit ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; */ curcol = sprintf( dump_buf, "Str : %5d [%d]", Player.str, Player.maxstr ); cp = strrchr( dump_buf, '\0' ); for ( ; curcol < 26; curcol++ ) *cp++ = ' '; curcol += sprintf( cp, "HP : %5d [%d]", Player.hp, Player.maxhp ); cp = strrchr( dump_buf, '\0' ); for ( ; curcol < 57; curcol++ ) *cp++ = ' '; sprintf( cp, "Hit : %d\n", Player.hit ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; curcol = sprintf( dump_buf, "Con : %5d [%d]", Player.con, Player.maxcon ); cp = strrchr( dump_buf, '\0' ); for ( ; curcol < 26; curcol++ ) *cp++ = ' '; curcol += sprintf( cp, "Mana : %5ld [%ld]", Player.mana, Player.maxmana ); cp = strrchr( dump_buf, '\0' ); for ( ; curcol < 57; curcol++ ) *cp++ = ' '; sprintf( cp, "Damage : %d\n", Player.dmg ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; curcol = sprintf( dump_buf, "Dex : %5d [%d]", Player.dex, Player.maxdex ); cp = strrchr( dump_buf, '\0' ); for ( ; curcol < 57; curcol++ ) *cp++ = ' '; sprintf( cp, "Defense : %d\n", Player.defense ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; curcol = sprintf( dump_buf, "Agi : %5d [%d]", Player.agi, Player.maxagi ); cp = strrchr( dump_buf, '\0' ); for ( ; curcol < 26; curcol++ ) *cp++ = ' '; sprintf( cp, "Exp : %-10ld Armor : %d\n", Player.xp, Player.absorption ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; curcol = sprintf( dump_buf, "Int : %5d [%d]", Player.iq, Player.maxiq ); cp = strrchr( dump_buf, '\0' ); for ( ; curcol < 26; curcol++ ) *cp++ = ' '; sprintf( cp, "Carry : %-10d Speed : %d.%d\n", Player.itemweight, 5 / Player.speed, 500 / Player.speed % 100 ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; curcol = sprintf( dump_buf, "Pow : %5d [%d]", Player.pow, Player.maxpow ); cp = strrchr( dump_buf, '\0' ); for ( ; curcol < 26; curcol++ ) *cp++ = ' '; sprintf( cp, "Capacity : %d\n\n", Player.maxweight ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; total_balance = 0; for( account = bank; account; account = account->next_account ) { if ( account->player ) total_balance += account->balance; } sprintf( dump_buf, "Cash (carried/bank) : %ld / %ld\n", Player.cash, total_balance ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; sprintf( dump_buf, "Current Point Total : %ld\n", calc_points() ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; sprintf( dump_buf, "Elapsed Game Time : %s\n\n", elapsed_time_string( Time ) ); if ( !dump( dumpfile, dump_buf, TRUE ) ) return FALSE; sprintf( dump_buf, "[Verification: %8.8lx]\n\n", dumpcheck ); if ( !dump( dumpfile, dump_buf, FALSE ) ) return FALSE; return TRUE; }