師匠おはようございます
バグにハマると投げ出したくなるの分かります!
でも治らないバグなんかない筈です

僭越ながら師匠のスクリーンショット拝見しまして、「装備外した()」が無いって思いました
入れ替えにせよ、装備するにせよ、例えば右手に装備する場合そこに元々あったのは外す、無ければ装備するという処理かと思います

なので装備する際に
void 装備換装()
{
if(場所チェック(右手)) 装備外した();
装備した()
}
こんな感じになるのかなと
これでPlayerBloの数値を変化させていけばいいんじゃないかなと思いますた
いまは装備する()の中でプラスしているだけですもんね
防御値はPlayerBloですかね?違ったらすいません
ちなみに PlayerBlo = PlayerBlo +BlockPlus って PlayerBlo += BlockPlus なので加算になってます
と思います

さて自分はこれから衝突判定と爆発してみます!