そんで防御力は
ステータスをhpと同様用意してたとえばnormalDefとspecialDefとかって用意して
damaged関数の中で使ってやればいいだけなので
これまた自分で考えるべし

hp -= (damage - normalDef); とかってすればダメージ減少するべや
こんなに雑だとdamageよりもnormalDefの方が大きいと
回復しちゃうけどw その辺も考える

そして特殊な方も
damage関数をアップグレードして

void damaged(int damage, int type){
if(type == 0) { //通常攻撃
通常defで受けるダメージ計算
}

if(type == 1) { //特殊攻撃
特殊defで受けるダメージ計算
}

みたいに切り替えて
プレイヤー側がtype指定して攻撃するようにすればOK