void raw_kill( char_data* victim ) { affect_data affect; victim->From( ); remove_affect( victim ); remove_leech( victim ); victim->position = POS_RESTING; victim->hit = max( 1, victim->hit ); victim->mana = max( 1, victim->mana ); victim->move = max( 1, victim->move ); affect.type = AFF_DEATH; affect.duration = 20; affect.level = 10; affect.leech = NULL; add_affect( victim, &affect ); delete_list( victim->prepare ); update_maxes( victim ); victim->To( get_room_index( ROOM_DEATH, FALSE ) ); dismount( victim ); clear_enemies( victim ); write( player( victim ) ); }
int main(void) { // first compute all 10-digit primes long *p, np; primes(PMAX, &p, &np); int max_counts[10]; memset(max_counts, 0, sizeof(max_counts)); uint64_t max_sums[10]; memset(max_sums, 0, sizeof(max_sums)); int counts[10]; long i; for(i = 0; i < np; i++) { if(p[i] < PMIN) continue; if(p[i] > PMAX) break; get_counts(p[i], counts); update_maxes(p[i], counts, max_counts, max_sums); } uint64_t result = 0; for(i = 0; i < 10; i++) result += max_sums[i]; printf("result: %ld\n", result); return 0; }
void lose_level( char_data* ch ) { char tmp [ ONE_LINE ]; int add_hp; int add_mana; int add_move; if( ch->pcdata == NULL || ch->shdata->level < 2 ) return; if( ch->pcdata->max_level == -1 ) { ch->pcdata->max_level = ch->shdata->level; ch->pcdata->level_hit = ch->base_hit; ch->pcdata->level_mana = ch->base_mana; ch->pcdata->level_move = ch->base_move; } ch->shdata->level--; ch->pcdata->pfile->level = ch->shdata->level; if( ch->shdata->level < LEVEL_BUILDER ) { sprintf( tmp, "%s has lost a level.", ch->descr->name ); info( tmp, LEVEL_BUILDER, tmp, IFLAG_LEVELS, 2, ch ); } add_hp = ( ch->base_hit-20 )/( ch->shdata->level ); add_mana = ( ch->base_mana-50 )/( ch->shdata->level ); add_move = ( ch->base_move-100 )/( ch->shdata->level ); ch->base_hit -= add_hp; ch->base_mana -= add_mana; ch->base_move -= add_move; calc_resist( ch ); update_maxes( ch ); send( ch, "You have lost a level!\r\n" ); }
void advance_level( char_data* ch, bool message ) { char buf [ MAX_STRING_LENGTH ]; int clss = ch->pcdata->clss; int add_hp; int add_mana; int add_move; int pracs = 0; bool regain; if( ch->species != NULL ) return; ch->shdata->level++; regain = ( ch->pcdata->max_level != -1 ); if( message ) { send( ch, "\r\n-=-= CONGRATS!!! =-=-\r\n\r\n" ); send( ch, "You have %sgained level %d.\r\n", regain ? "re" : "", ch->shdata->level ); send( ch, "You need %d exp for the next level.\r\n", exp_for_level( ch )-ch->exp ); sprintf( buf, "%s has %sgained level %d.", ch->descr->name, regain ? "re" : "", ch->shdata->level ); info( buf, LEVEL_BUILDER, buf, IFLAG_LEVELS, regain ? 2 : 1, ch ); } if( ch->pcdata->max_level == ch->shdata->level ) { ch->pcdata->max_level = -1; ch->base_hit = ch->pcdata->level_hit; ch->base_mana = ch->pcdata->level_mana; ch->base_move = ch->pcdata->level_move; } else { add_hp = number_range( clss_table[ clss ].hit_min, clss_table[ clss ].hit_max ); add_mana = number_range( clss_table[ clss ].mana_min, clss_table[ clss ].mana_max ); add_move = number_range( clss_table[ clss ].move_min, clss_table[ clss ].move_max ); ch->base_hit += add_hp; ch->base_mana += add_mana; ch->base_move += add_move; if( ch->pcdata->max_level == -1 ) { if( ( pracs = 12-ch->shdata->level ) > 0 ) { if( message ) send( ch, "\r\n>> You gain %d practice point%s. <<\r\n\r\n", pracs, pracs == 1 ? "" : "s" ); ch->pcdata->practice += pracs; } remove_bit( ch->pcdata->pfile->flags, PLR_FAMILIAR ); } } if( message ) { sprintf( buf, "%sained level %d.", regain ? "Reg" : "G", ch->shdata->level ); player_log( ch, buf ); } ch->pcdata->pfile->level = ch->shdata->level; calc_resist( ch ); update_maxes( ch ); }