Esempio n. 1
0
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 ) );
}
Esempio n. 2
0
File: p111.c Progetto: mchalek/euler
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;
}
Esempio n. 3
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" );
}   
Esempio n. 4
0
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 );
}