| 244 | } |
| 245 | |
| 246 | void DamageHelpers::SetString(char const * prop, char const * value) |
| 247 | { |
| 248 | auto fs = ToFixedString(value); |
| 249 | if (!fs) { |
| 250 | OsiError("Could not map value '" << value << "' to FixedString"); |
| 251 | return; |
| 252 | } |
| 253 | |
| 254 | if (strcmp(prop, "SkillId") == 0) { |
| 255 | SkillId = fs; |
| 256 | } else if (strcmp(prop, "HitType") == 0) { |
| 257 | auto val = EnumInfo<osidbg::HitType>::Find(value); |
| 258 | if (val) { |
| 259 | HitType = *val; |
| 260 | } else { |
| 261 | OsiError("Invalid value for enum 'HitType': " << value); |
| 262 | } |
| 263 | } else if (strcmp(prop, "HighGround") == 0) { |
| 264 | auto val = EnumInfo<HighGroundBonus>::Find(value); |
| 265 | if (val) { |
| 266 | HighGround = *val; |
| 267 | } else { |
| 268 | OsiError("Invalid value for enum 'HighGround': " << value); |
| 269 | } |
| 270 | } else if (strcmp(prop, "CriticalRoll") == 0) { |
| 271 | auto val = EnumInfo<CriticalRoll>::Find(value); |
| 272 | if (val) { |
| 273 | Critical = *val; |
| 274 | } else { |
| 275 | OsiError("Invalid value for enum 'CriticalRoll': " << value); |
| 276 | } |
| 277 | } else if (strcmp(prop, "DamageSourceType") == 0) { |
| 278 | auto val = EnumInfo<CauseType>::Find(value); |
| 279 | if (val) { |
| 280 | DamageSourceType = *val; |
| 281 | } else { |
| 282 | OsiError("Invalid value for enum 'DamageSourceType': " << value); |
| 283 | } |
| 284 | } else { |
| 285 | auto & propertyMap = gHitDamageInfoPropertyMap; |
| 286 | propertyMap.setString(Hit, prop, value, false, true); |
| 287 | } |
| 288 | } |
| 289 | |
| 290 | void DamageHelpers::AddDamage(DamageType DamageType, int32_t Amount) |
| 291 | { |
no test coverage detected