SubscribeLocalEvent<VendingMachineComponent, PowerChangedEvent>(OnPowerChanged);
SubscribeLocalEvent<VendingMachineComponent, BreakageEventArgs>(OnBreak);
SubscribeLocalEvent<VendingMachineComponent, GotEmaggedEvent>(OnEmagged);
- SubscribeLocalEvent<VendingMachineComponent, DamageChangedEvent>(OnDamage);
+ SubscribeLocalEvent<VendingMachineComponent, DamageChangedEvent>(OnDamageChanged);
SubscribeLocalEvent<VendingMachineComponent, PriceCalculationEvent>(OnVendingPrice);
SubscribeLocalEvent<VendingMachineComponent, EmpPulseEvent>(OnEmpPulse);
args.Handled = component.EmaggedInventory.Count > 0;
}
- private void OnDamage(EntityUid uid, VendingMachineComponent component, DamageChangedEvent args)
+ private void OnDamageChanged(EntityUid uid, VendingMachineComponent component, DamageChangedEvent args)
{
+ if (!args.DamageIncreased && component.Broken)
+ {
+ component.Broken = false;
+ TryUpdateVisualState(uid, component);
+ return;
+ }
+
if (component.Broken || component.DispenseOnHitCoolingDown ||
component.DispenseOnHitChance == null || args.DamageDelta == null)
return;