private void OnSelfDispense(EntityUid uid, VendingMachineComponent component, VendingMachineSelfDispenseEvent args) { if (args.Handled) { return; } args.Handled = true; EjectRandom(uid, true, component); }
private void OnEmagged(EntityUid uid, VendingMachineComponent component, GotEmaggedEvent args) { if (component.Emagged || component.EmaggedInventory.Count == 0) { return; } component.Emagged = true; args.Handled = true; }
private void OnDamage(EntityUid uid, VendingMachineComponent component, DamageChangedEvent args) { if (component.DispenseOnHitChance == null || args.DamageDelta == null) { return; } if (args.DamageDelta.Total >= component.DispenseOnHitThreshold && _random.Prob(component.DispenseOnHitChance.Value)) { EjectRandom(uid, true, component); } }
private void OnInventoryEjectMessage(EntityUid uid, VendingMachineComponent component, VendingMachineEjectMessage args) { if (!this.IsPowered(uid, EntityManager)) { return; } if (args.Session.AttachedEntity is not { Valid : true } entity || Deleted(entity)) { return; } AuthorizedVend(uid, entity, args.Type, args.ID, component); }
private void OnComponentInit(EntityUid uid, VendingMachineComponent component, ComponentInit args) { base.Initialize(); if (TryComp <ApcPowerReceiverComponent>(component.Owner, out var receiver)) { TryUpdateVisualState(uid, null, component); } if (component.Action != null) { var action = new InstantAction(_prototypeManager.Index <InstantActionPrototype>(component.Action)); _action.AddAction(uid, action, uid); } InitializeFromPrototype(uid, component); }
private void OnInventoryRequestMessage(EntityUid uid, VendingMachineComponent component, InventorySyncRequestMessage args) { if (!this.IsPowered(uid, EntityManager)) { return; } var inventory = new List <VendingMachineInventoryEntry>(component.Inventory); if (component.Emagged) { inventory.AddRange(component.EmaggedInventory); } if (component.Contraband) { inventory.AddRange(component.ContrabandInventory); } component.UserInterface?.SendMessage(new VendingMachineInventoryMessage(inventory)); }
public void AuthorizedVend(EntityUid uid, EntityUid sender, InventoryType type, string itemId, VendingMachineComponent component) { if (IsAuthorized(uid, sender, component)) { TryEjectVendorItem(uid, type, itemId, component.CanShoot, component); } }
private void OnBreak(EntityUid uid, VendingMachineComponent vendComponent, BreakageEventArgs eventArgs) { vendComponent.Broken = true; TryUpdateVisualState(uid, VendingMachineVisualState.Broken, vendComponent); }
private void OnPowerChanged(EntityUid uid, VendingMachineComponent component, PowerChangedEvent args) { TryUpdateVisualState(uid, null, component); }