float resistances::get_effective_resist(const damage_unit &du) { float effective_resist = 0.f; switch (du.type) { case DT_BASH: effective_resist = std::max(type_resist(DT_BASH) - du.res_pen, 0) * du.res_mult; break; case DT_CUT: effective_resist = std::max(type_resist(DT_CUT) - du.res_pen, 0) * du.res_mult; break; case DT_STAB: effective_resist = std::max(type_resist(DT_STAB) - du.res_pen, 0) * du.res_mult; break; default: // TODO: DT_ACID/HEAT vs env protection, DT_COLD vs warmth effective_resist = 0; } return effective_resist; }
float resistances::get_effective_resist( const damage_unit &du ) const { float effective_resist; switch( du.type ) { case DT_BASH: effective_resist = std::max( type_resist( DT_BASH ) - du.res_pen, 0 ) * du.res_mult; break; case DT_CUT: effective_resist = std::max( type_resist( DT_CUT ) - du.res_pen, 0 ) * du.res_mult; break; case DT_STAB: effective_resist = std::max( type_resist( DT_STAB ) - du.res_pen, 0 ) * du.res_mult; break; case DT_ACID: effective_resist = std::max( type_resist( DT_ACID ) - du.res_pen, 0 ) * du.res_mult; break; case DT_HEAT: effective_resist = std::max( type_resist( DT_HEAT ) - du.res_pen, 0 ) * du.res_mult; break; default: // TODO: Other types effective_resist = 0; } return effective_resist; }
float resistances::get_effective_resist( const damage_unit &du ) const { return std::max( type_resist( du.type ) - du.res_pen, 0.0f ) * du.res_mult; }