private void SendWoundInfo(ProcessWoundEvent component, WoundedPedComponent woundedPed) { #if !DEBUG if (_config.Data.PlayerConfig.PlayerEntity != component.Entity) { return; } #endif if (woundedPed.IsDead) { return; } var notification = _ecsWorld.CreateEntityWith <ShowNotificationEvent>(); var message = $"{component.Name}"; if (component.ArterySevered) { message += $"\n{_locale.Data.SeveredArteryMessage}"; } if (component.Crits != null || component.ArterySevered || component.BleedSeverity > _config.Data.WoundConfig.EmergencyBleedingLevel) { notification.Level = NotifyLevels.EMERGENCY; } else { notification.Level = NotifyLevels.ALERT; } notification.StringToShow = message; }
public void Run() { #if DEBUG GunshotWound2.LastSystem = nameof(WoundSystem); #endif for (int i = 0; i < _components.EntitiesCount; i++) { ProcessWoundEvent component = _components.Components1[i]; int pedEntity = component.Entity; if (!_ecsWorld.IsEntityExists(pedEntity)) { continue; } var woundedPed = _ecsWorld.GetComponent <WoundedPedComponent>(pedEntity); if (woundedPed == null) { continue; } float damageDeviation = component.Damage > 0 ? _config.Data.WoundConfig.DamageDeviation * component.Damage : 0; float bleedingDeviation = component.BleedSeverity > 0 ? _config.Data.WoundConfig.BleedingDeviation * component.BleedSeverity : 0; if (!woundedPed.IsDead) { woundedPed.Health -= _config.Data.WoundConfig.DamageMultiplier * component.Damage + Random.NextFloat(-damageDeviation, damageDeviation); woundedPed.ThisPed.Health = (int)woundedPed.Health; } CreateBleeding(woundedPed, pedEntity, component.BleedSeverity + Random.NextFloat(-bleedingDeviation, bleedingDeviation), component.Name); woundedPed.BleedingCount++; CreatePain(pedEntity, component.Pain); CreateCritical(pedEntity, component.Crits); if (component.ArterySevered) { CreateBleeding(woundedPed, pedEntity, 1f, _locale.Data.SeveredArtery); woundedPed.BleedingCount++; } #if DEBUG _ecsWorld.CreateEntityWith <ShowDebugInfoEvent>().Entity = pedEntity; #endif SendWoundInfo(component, woundedPed); } _components.RemoveAllEntities(); }