# ----------攻撃
sub Attack {
  &Error(0,'相手がいません。') unless $guestnum;
  &Error(0,'相手は既に死んでいました。') if $guest[2] < 1;
  &Error(0,'相手はこのエリアから逃げたようです。') if abs($status[3] - $guest[3]) > 5;
  my($i,$arms1,$def1,$arms2,$def2,$damage,@myarmor,@yourarmor);
  $i = $arms1 = $def1 = $arms2 = $def2 = 0;

  # 自分の武器防具
  foreach(9..16){
    $i = $status[$_];
    if($i eq $FM{'items'}){$arms1 = $_;}
    elsif($weaponkd[($i % 100)] == 3){
      $def1 += $weaponat[$i % 100];
      push @armor1,$_;
    }
    # 敵の武器防具
    next if $guest[$_] < 100;
    $i = $guest[$_] % 100;
    if($weaponkd[$i] == 3){$def2 += $weaponat[$i % 100];push @armor2,$_;}
    elsif($weaponkd[$i] == 2){$arms2 = $_;}
    elsif($weaponkd[$i] == 1 && !$arms2){$arms2 = $_;}
  }

  if($guest[7] =~ m/(1|3|4)/){$arms2 = 0;}

  if($FM{'items'} eq 'no'){
    $arms1 = 17;
    $status[17] = 243;
    $writestatus -= $anaction / 2;
  }

  &Error(0,'連続攻撃はできません。<br>（　´ Д ｀）＜んぁ〜っていうか〜、戻ってリロードすると攻撃できるかも〜よくわかんないけど〜。試しにやってみれば〜？でも急がないと死ぬよ〜。後藤真希でした〜。') unless $arms1;
  my $kind1 = $status[$arms1] % 100;
  my $using1 = int($status[$arms1] / 100);

  my $kind2 = $guest[$arms2] % 100;
  my $using2 = int($guest[$arms2] / 100);

  &Error(0,'これ以上、その武器は使えません。') unless $using1;
  &Error(0,'それは武器ではありません。') if ($weaponkd[$kind1] =~ m/(3|4)/);

  Out("<b>$status[0]</b>は<b>$victims[$guestnum]</b>に<b>$weapons[$kind1]</b>".('で襲いかかった','を撃ち込んだ')[$weaponkd[$kind1] - 1].'！<br>');

  # 攻撃(銃)
  if($weaponkd[$kind1] == 2){
    push @log,"$num\,$guestnum\,attack\,$kind1\,$status[3]";
    $writestatus = $anaction / 2;
    $status[$arms1] -= 100;
    $damage = &Damagecal($kind1,$def2,$guest[7]);
    $guest[2] -= $damage;
    Out(&Damage($victims[$guestnum],$damage));
    if($status[$arms1] < 100){
      Out("<b>$weapons[$kind1]</b>の弾丸が切れたみたいだ。");
      $status[$arms1] = 0;
      push @log,"$num,,nobullet,$kind1";
    }
    foreach(@armor2){
      $i = $guest[$_] % 100;
      my $shock = int(rand(7)); # 追加-防具ダメージにランダム性
      $shock = 0 if($shock == 6);
      $shock = 1 if($shock > 3);
      $guest[$_] -= $shock*100;
      if($guest[$_] < 100){
        $guest[$_] = 0;
        Out("<b>$victims[$guestnum]</b>が装備していた<b>$weapons[$i]</b>を破壊しました。");
        $i %= 100;
        push @log,"$guestnum,,broken,$i";
      }

    }
  }
  # 反撃(銃)
  if($arms2 && $weaponkd[$kind2] == 2 && $guest[2] > 0){
    push @log,"$guestnum\,$num,c_attack\,$kind2,$status[3]";
    $damage = ($weaponkd[$kind1] != 2) ? 'しかし先に' : '';
    Out("<br>$damage<b>$victims[$guestnum]</b>が<b>$weapons[$kind2]</b>で攻撃してきた！");
    $guest[$arms2] -= 100;
    $damage = &Damagecal($kind2,$def1);
    $status[2] -= $damage;
    Out(&Damage($status[0],$damage));
    if($guest[$arms2] < 100){
      Out("<b>$weapons[$kind2]</b>の弾丸が切れたようだ。");
      $guest[$arms2] = 0;
      push @log,"$guestnum\,\,nobullet\,$kind2";
    }
    foreach(@armor1){
      $i = $status[$_] % 100;
      my $shock = int(rand(7));
      $shock = 0 if($shock == 6);
      $shock = 1 if($shock > 3);
      $status[$_] -= $shock*100;
      if($status[$_] < 100){
        $status[$_] = 0;
        Out("装備していた<b>$weapons[$i]</b>が壊れてしまいました。");
        $i %= 100;
        push @log,"$num,,broken,$i";
      }
    }
  }

  # 攻撃(接近)
  if($weaponkd[$kind1] == 1 && $status[2] > 0){
    push @log,"$num\,$guestnum,attack\,$kind1";
    Out("<br><b>$status[0]</b>の<b>$weapons[$kind1]</b>が<b>$victims[$guestnum]</b>を襲う！");
    $damage = &Damagecal($kind1,$def2,$guest[7]);
    $guest[2] -= $damage;
    Out(&Damage($victims[$guestnum],$damage));
    $status[$arms1] -= 100 if $damage > 0;
    if($status[$arms1] < 100){
      Out("<b>$weapons[$kind1]</b>は使い物にならなくなってしまった。");
      $status[$arms1] = 0;
      push @log,"$num\,\,broken\,$kind1";
      $writestatus = 0;
    }
    foreach(@armor2){ # 追加-接近武器でも防具にダメージ
      $i = $guest[$_] % 100;
      my $shock = int(rand(7));
      $shock = 0 if($shock == 6);
      $shock = 1 if($shock > 3);
      $guest[$_] -= $shock*100;
      if($guest[$_] < 100){
        $guest[$_] = 0;
        Out("<b>$victims[$guestnum]</b>が装備していた<b>$weapons[$i]</b>を破壊しました。");
        $i %= 100;
        push @log,"$guestnum,,broken,$i";
      }
    }
  }

  # 反撃(接近)
  if($arms2 && $weaponkd[$kind2] == 1 && $weaponkd[$kind1] != 2 && $guest[2] > 0){
    push @log,"$guestnum\,$num,c_attack\,$kind2";
    Out("<br><b>$victims[$guestnum]</b>が<b>$weapons[$kind2]</b>で反撃してきた！");
    $damage = &Damagecal($kind2,$def1);
    $status[2] -= $damage;
    Out(&Damage($status[0],$damage));
    $guest[$arms2] -= 100;
    if($guest[$arms2] < 100){
      Out("<b>$weapons[$kind2]</b>は使い物にならなくなってしまった。");
      $guest[$arms2] = 0;
      push @log,"$guestnum\,\,broken\,$kind2";
    }
    foreach(@armor1){
      $i = $status[$_] % 100;
      my $shock = int(rand(7));
      $shock = 0 if($shock == 6);
      $shock = 1 if($shock > 3);
      $status[$_] -= $shock*100;
      if($status[$_] < 100){
        $status[$_] = 0;
        Out("装備していた<b>$weapons[$i]</b>が壊れてしまいました。");
        $i %= 100;
        push @log,"$num,,broken,$i";
      }
    }
  }
  # 追加-反撃、接近武器を投げる
  if($arms2 && $weaponkd[$kind2] == 1 && $weaponkd[$kind1] == 2 && $guest[2] > 0 && $guest[2] < 5){
    push @log,"$guestnum\,$num,c_attack\,$kind2";
    Out("<br><b>$victims[$guestnum]</b>が必死の形相で<b>$weapons[$kind2]</b>を投げつけてきた！");
    $damage = &Damagecal($kind2,$def1,'','throw');
    $status[2] -= $damage;
    Out(&Damage($status[0],$damage));
    $guest[$arms2] = 0;
    foreach(@armor1){
      $i = $status[$_] % 100;
      my $shock = int(rand(7));
      $shock = 0 if($shock == 6);
      $shock = 1 if($shock > 3);
      $status[$_] -= $shock*100;
      if($status[$_] < 100){
        $status[$_] = 0;
        Out("装備していた<b>$weapons[$i]</b>が壊れてしまいました。");
        $i %= 100;
        push @log,"$num,,broken,i";
      }
    }
  }

  # 戦闘結果
  if($guest[2] < 1){
    $guest[2] = 0;$guest[5] = time;$whodied = 'you';$i = $kind1;$status[6]++;
    $pos[$guestnum] = 0;
    Out("<br><b>$victims[$guestnum]</b>はばたりと地面に倒れると、そのまま動かなくなった。");
  }elsif($status[2] < 1){
    if($whodied){
      $status[2] = 1;
    }else{
      $status[2] = 0;$status[5] = time;$whodied = 'me';$i = $kind2;$guest[6]++;
      Out("<b>$status[0]</b>は目の前が真っ暗になり、そのまま意識が遠くなっていくのを感じた。");
    }
  }
  $writestatus += $anaction;
  pop @status if $status[17];

  if($whodied){
    # 凶器
    if($i == 48){$death = 'electric';} # スタンガン
    elsif($i =~ m/(51|52)/){$death = 'car';} # 車
    elsif($i == 25){$death = 'burning';} # 火炎瓶
    elsif($i == 28){$death = 'explosion';} # 手榴弾
    elsif($i == 32){$death = 'cutting';} # カマ
    elsif($i =~ m/(39|46|66)/){$death = 'choked';} # ベルト,ロープ,ハンガー
    elsif($i =~ m/(13|35|36|43|44|45|47)/){$death = 'strike';} # 鈍器
    elsif($weaponkd[$i] == 2){$death = 'gun';} # 銃
    elsif($weaponkd[$i] == 1){$death = 'bleeding';} # ナイフ,刀
    else{$death = '?';}
  }
  else{
    # 対応
    if($guest[7] == 3){
      if($guestnum < 22){$damage = ('ちょっと待ってくれ！','戦うつもりはないんだ！','やめてくれ〜','攻撃する意志はありません','こんな攻撃じゃ当たらねーんだよバーカ','同盟を組まないか？','すみません、食料もってませんか？','お前殺すぞ…')[int(rand(7))];}
      else{$damage = ('やめて…(;＿;)','私と同盟を組みませんか？','攻撃するつもりはないんです、見逃して…','ひどいことするわあ','こんにちは〜(^^)','武器が余ってるんですけど、交換しません？','きゃーやめてー','ウフフ…')[int(rand(7))];}
      unshift @log,"$guestnum\,$num\,talk\,$damage";
    }elsif($guest[7] =~ m/(1|2)/){
      $guest[3] = int($guest[3] / 10) * 10 + int(rand(4));
      unshift @log,"$guestnum\,$num\,run";
      Out('<br><b>'.$victims[$guestnum].'</b>が逃げ出した！');
    }
  }

}
