// функции относящиеся к монстрам

CreateItemsForBirth0(int unit)
{
  int n_items,i,sum_p;
  if( Action(unit,ACT_GET_ITEM,0) )// не добавлять новых вещей если уже есть
    return;
  sum_p = 0;
  for( i=0; i<sizeof(BirthItems0)/4; i++ )
    sum_p += BirthItemsP0[i];
  n_items = Random(sum_p);
  for( i=0; i<sizeof(BirthItems0)/4; i++ )
    if( (n_items -= BirthItemsP0[i]) < 0 )
      break;
  if( i<sizeof(BirthItems0)/4 )
    if( BirthItems0[i] )
      Action(unit,ACT_ADD_ITEM,BirthItems0[i],0);
}
CreateItemsForBirth1(int unit)
{
  int n_items,i,sum_p;
  if( Action(unit,ACT_GET_ITEM,0) )// не добавлять новых вещей если уже есть
    return;
  sum_p = 0;
  for( i=0; i<sizeof(BirthItems1)/4; i++ )
    sum_p += BirthItemsP1[i];
  n_items = Random(sum_p);
  for( i=0; i<sizeof(BirthItems1)/4; i++ )
    if( (n_items -= BirthItemsP1[i]) < 0 )
      break;
  if( i<sizeof(BirthItems0)/4 )
    if( BirthItems1[i] )
      Action(unit,ACT_ADD_ITEM,BirthItems1[i],0);
}
CreateItemsForBirth2(int unit)
{
  int n_items,i,sum_p;
  if( Action(unit,ACT_GET_ITEM,0) )// не добавлять новых вещей если уже есть
    return;
  sum_p = 0;
  for( i=0; i<sizeof(BirthItems2)/4; i++ )
    sum_p += BirthItemsP2[i];
  n_items = Random(sum_p);
  for( i=0; i<sizeof(BirthItems2)/4; i++ )
    if( (n_items -= BirthItemsP2[i]) < 0 )
      break;
  if( i<sizeof(BirthItems0)/4 )
    if( BirthItems2[i] )
      Action(unit,ACT_ADD_ITEM,BirthItems2[i],0);                        
}
CreateItemsForBirth3(int unit)
{
  int n_items,i,sum_p;
  if( Action(unit,ACT_GET_ITEM,0) )// не добавлять новых вещей если уже есть
    return;
  sum_p = 0;
  for( i=0; i<sizeof(BirthItems3)/4; i++ )
    sum_p += BirthItemsP3[i];
  n_items = Random(sum_p);
  for( i=0; i<sizeof(BirthItems3)/4; i++ )
    if( (n_items -= BirthItemsP3[i]) < 0 )
      break;
  if( i<sizeof(BirthItems0)/4 )
    if( BirthItems3[i] )
      Action(unit,ACT_ADD_ITEM,BirthItems3[i],0);
}
CreateItemsForBirth4(int unit)
{
  int n_items,i,sum_p;
  if( Action(unit,ACT_GET_ITEM,0) )// не добавлять новых вещей если уже есть
    return;
  sum_p = 0;
  for( i=0; i<sizeof(BirthItems4)/4; i++ )
    sum_p += BirthItemsP4[i];
  n_items = Random(sum_p);
  for( i=0; i<sizeof(BirthItems4)/4; i++ )
    if( (n_items -= BirthItemsP4[i]) < 0 )
      break;
  if( i<sizeof(BirthItems0)/4 )
    if( BirthItems4[i] )
      Action(unit,ACT_ADD_ITEM,BirthItems4[i],0);
}
CreateItemsForBirth5(int unit)
{
  int n_items,i,sum_p;
  if( Action(unit,ACT_GET_ITEM,0) )// не добавлять новых вещей если уже есть
    return;
  sum_p = 0;
  for( i=0; i<sizeof(BirthItems5)/4; i++ )
    sum_p += BirthItemsP5[i];
  n_items = Random(sum_p);
  for( i=0; i<sizeof(BirthItems5)/4; i++ )
    if( (n_items -= BirthItemsP5[i]) < 0 )
      break;
  if( i<sizeof(BirthItems5)/4 )
    if( BirthItems5[i] )
      Action(unit,ACT_ADD_ITEM,BirthItems5[i],0);
}
F040_14(int unit) { CreateItemsForBirth1(unit); }
F043_14(int unit) { CreateItemsForBirth2(unit); }
F046_14(int unit) { CreateItemsForBirth2(unit); }
F050_14(int unit) { CreateItemsForBirth0(unit); }
F053_14(int unit) { CreateItemsForBirth0(unit); }
F056_14(int unit) { CreateItemsForBirth1(unit); }
F060_14(int unit) { CreateItemsForBirth1(unit); }
F063_14(int unit) { CreateItemsForBirth1(unit); }
F066_14(int unit) { CreateItemsForBirth2(unit); }
F070_14(int unit) { CreateItemsForBirth2(unit); }
F073_14(int unit) { CreateItemsForBirth3(unit); }
F076_14(int unit) { CreateItemsForBirth4(unit); }
F080_14(int unit) { CreateItemsForBirth2(unit); }
F083_14(int unit) { CreateItemsForBirth3(unit); }
F086_14(int unit) { CreateItemsForBirth3(unit); }
F090_14(int unit) { CreateItemsForBirth5(unit); }
F093_14(int unit) { CreateItemsForBirth5(unit); }
F096_14(int unit) { CreateItemsForBirth5(unit); }

//zmnew 2004Aug27
F880_14(int unit) { CreateItemsForBirth2(unit); }
F885_14(int unit) { CreateItemsForBirth4(unit); }


// добавление очков за убитый юнит
AddScores(int unit)
{
  int weapon;
  weapon = GetVidData(9,VID_LINK)-10;
  if( !weapon)
    weapon = 10;
  if( PlayerScoresTact < 15000 )//чтобы за раз не дать слишком много очков
    PlayerScoresTact = (PlayerScoresTact*11)/10;
  PlayerScoresTact += GetVidData(GetUnitVid(unit),VID_MAXHP) + (GetVidData(GetUnitVid(unit),VID_MAXHP) * 10) / (weapon*3);
}
// При смерти юнита рождение его содержимого
CreateItems(int unit)
{
  //добавление очков за убитый юнит
  if( Action(unit,ACT_GET_ARMY)==1 )
    AddScores(unit);

  int item,no_items;
  for( no_items=0; no_items < 20; no_items++ )
    if( !Action(unit,ACT_GET_ITEM,no_items,0) )
      break;
  if( no_items )
  {
    if ( GetUnitVid(unit) == 880 )
      item = CreateSprite( Action(unit,ACT_GET_ITEM,Random(no_items-1),0), GetX(unit), GetY(unit), GetZ(unit) - 30, Random(255) );
    else
      item = CreateSprite( Action(unit,ACT_GET_ITEM,Random(no_items-1),0), GetX(unit), GetY(unit), GetZ(unit)+10, Random(255) );
    Action(item,ACT_SET_ZSPEED,20);
    Action(item,ACT_SET_SPEED,5);
    AddCommand(item,ACT_PAUSE,17000,5000);
    AddCommand(item,ANI_DEATH);
  }
}
F419_15(int unit) { CreateItems(unit); }
F040_15(int unit) { CreateItems(unit); }
F040_16(int unit) { CreateItems(unit); }
F043_15(int unit) { CreateItems(unit); }
F043_16(int unit) { CreateItems(unit); }
F046_15(int unit) { CreateItems(unit); }
F046_16(int unit) { CreateItems(unit); }
F049_15(int unit) { CreateItems(unit); }
F049_16(int unit) { CreateItems(unit); }
F050_15(int unit) { CreateItems(unit); }
F050_16(int unit) { CreateItems(unit); }
F053_15(int unit) { CreateItems(unit); }
F053_16(int unit) { CreateItems(unit); }
F056_15(int unit) { CreateItems(unit); }
F056_16(int unit) { CreateItems(unit); }
F059_15(int unit) { CreateItems(unit); }
F059_16(int unit) { CreateItems(unit); }
F060_15(int unit) { CreateItems(unit); }
F060_16(int unit) { CreateItems(unit); }
F063_15(int unit) { CreateItems(unit); }
F063_16(int unit) { CreateItems(unit); }
F066_15(int unit) { CreateItems(unit); }
F066_16(int unit) { CreateItems(unit); }
F069_15(int unit) { CreateItems(unit); }
F069_16(int unit) { CreateItems(unit); }
F070_15(int unit) { CreateItems(unit); }
F070_16(int unit) { CreateItems(unit); }
F073_15(int unit) { CreateItems(unit); }
F073_16(int unit) { CreateItems(unit); }
F076_15(int unit) { CreateItems(unit); }
F076_16(int unit) { CreateItems(unit); }
F079_15(int unit) { CreateItems(unit); }
F079_16(int unit) { CreateItems(unit); }
F080_15(int unit) { CreateItems(unit); }
F080_16(int unit) { CreateItems(unit); }
F083_15(int unit) { AddScores(unit); }
F083_16(int unit) { AddScores(unit); }
F086_15(int unit) { AddScores(unit); }
F086_16(int unit) { AddScores(unit); }
F089_15(int unit) { AddScores(unit); }
F089_16(int unit) { AddScores(unit); }
F090_15(int unit) { AddScores(unit); }
F090_16(int unit) { AddScores(unit); }
F093_15(int unit) { AddScores(unit); }
F093_16(int unit) { AddScores(unit); }
F096_15(int unit) { AddScores(unit); }
F096_16(int unit) { AddScores(unit); }
F099_15(int unit) { AddScores(unit); }
F099_16(int unit) { AddScores(unit); }
F850_15(int unit) { CreateItems(unit); }
F850_16(int unit) { CreateItems(unit); }
F853_15(int unit) { CreateItems(unit); }
F853_16(int unit) { CreateItems(unit); }
F856_15(int unit) { CreateItems(unit); }
F856_16(int unit) { CreateItems(unit); }
F860_15(int unit) { CreateItems(unit); }
F860_16(int unit) { CreateItems(unit); }
F863_15(int unit) { CreateItems(unit); }
F863_16(int unit) { CreateItems(unit); }
F866_15(int unit) { CreateItems(unit); }
F866_16(int unit) { CreateItems(unit); }

//zmnew 2004Aug27
F880_15(int unit) { CreateItems(unit); }
F880_16(int unit) { CreateItems(unit); }
F885_15(int unit) { CreateItems(unit); }
F885_16(int unit) { CreateItems(unit); }

/*DamageMonster(int unit,int cannon)
{
  int score,weapon;
  weapon = GetVidData(9,VID_LINK)-10;
  if( !weapon)
    weapon = 10;

  if( GetAnimation(unit)==ANI_DEATH2 )
    score = GetVidData(GetUnitVid(unit),VID_MAXHP);
  else if( GetAnimation(unit)==ANI_DEATH )
    score = GetVidData(GetUnitVid(cannon),VID_DAMAGE);
  else
    score = 2*GetVidData(GetUnitVid(cannon),VID_DAMAGE);
  score += (score * 10) / (weapon*3);
  PlayerScores += score;
}

F040_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F043_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F046_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F050_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F053_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F056_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F060_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F063_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F066_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F070_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F073_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F076_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F080_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F083_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F086_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F090_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F093_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F096_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F850_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F853_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F856_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F860_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F863_7(int unit,int cannon) { DamageMonster(unit,cannon); }
F866_7(int unit,int cannon) { DamageMonster(unit,cannon); }
*/
