private void OnIrradiated(EntityUid uid, DamageableComponent component, OnIrradiatedEvent args) { var damageValue = FixedPoint2.New(args.TotalRads); // Radiation should really just be a damage group instead of a list of types. DamageSpecifier damage = new(); foreach (var typeId in component.RadiationDamageTypeIDs) { damage.DamageDict.Add(typeId, damageValue); } TryChangeDamage(uid, damage); }
public void IrradiateEntity(EntityUid uid, float radsPerSecond, float time) { var msg = new OnIrradiatedEvent(time, radsPerSecond); RaiseLocalEvent(uid, msg, true); }
private void OnRadiation(EntityUid uid, RadiationCollectorComponent component, OnIrradiatedEvent args) { if (!component.Enabled) { return; } // No idea if this is even vaguely accurate to the previous logic. // The maths is copied from that logic even though it works differently. // But the previous logic would also make the radiation collectors never ever stop providing energy. // And since frameTime was used there, I'm assuming that this is what the intent was. // This still won't stop things being potentially hilariously unbalanced though. if (TryComp <BatteryComponent>(uid, out var batteryComponent)) { var charge = args.TotalRads * component.ChargeModifier; batteryComponent.CurrentCharge += charge; } }