Separate "thank you" messages from general ads (#25867)

* Separated "thank you" messages from general ads

* Moved MessagePackPrototype to shared, cleaned up AdvertiseComponent, and actually killed AdvertisementsPackPrototype.
+More suggests changes.

* Rename PackPrototypeID to Pack in both components.
This commit is contained in:
Tayrtahn
2024-03-28 02:46:26 -04:00
committed by GitHub
parent 29f34d8423
commit 794a447bb7
72 changed files with 603 additions and 470 deletions

View File

@@ -106,7 +106,6 @@ namespace Content.Client.Entry
_prototypeManager.RegisterIgnore("gameMap"); _prototypeManager.RegisterIgnore("gameMap");
_prototypeManager.RegisterIgnore("gameMapPool"); _prototypeManager.RegisterIgnore("gameMapPool");
_prototypeManager.RegisterIgnore("lobbyBackground"); _prototypeManager.RegisterIgnore("lobbyBackground");
_prototypeManager.RegisterIgnore("advertisementsPack");
_prototypeManager.RegisterIgnore("gamePreset"); _prototypeManager.RegisterIgnore("gamePreset");
_prototypeManager.RegisterIgnore("noiseChannel"); _prototypeManager.RegisterIgnore("noiseChannel");
_prototypeManager.RegisterIgnore("spaceBiome"); _prototypeManager.RegisterIgnore("spaceBiome");

View File

@@ -1,42 +0,0 @@
using Content.Server.Advertisements;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Server.Advertise
{
[RegisterComponent, Access(typeof(AdvertiseSystem))]
public sealed partial class AdvertiseComponent : Component
{
/// <summary>
/// Minimum time in seconds to wait before saying a new ad, in seconds. Has to be larger than or equal to 1.
/// </summary>
[ViewVariables(VVAccess.ReadWrite)]
[DataField("minWait")]
public int MinimumWait { get; private set; } = 8 * 60;
/// <summary>
/// Maximum time in seconds to wait before saying a new ad, in seconds. Has to be larger than or equal
/// to <see cref="MinimumWait"/>
/// </summary>
[ViewVariables(VVAccess.ReadWrite)]
[DataField("maxWait")]
public int MaximumWait { get; private set; } = 10 * 60;
/// <summary>
/// The identifier for the advertisements pack prototype.
/// </summary>
[DataField("pack", customTypeSerializer:typeof(PrototypeIdSerializer<AdvertisementsPackPrototype>), required: true)]
public string PackPrototypeId { get; private set; } = string.Empty;
/// <summary>
/// The next time an advertisement will be said.
/// </summary>
[ViewVariables(VVAccess.ReadWrite)]
public TimeSpan NextAdvertisementTime { get; set; } = TimeSpan.Zero;
/// <summary>
/// Whether the entity will say advertisements or not.
/// </summary>
[ViewVariables(VVAccess.ReadWrite)]
public bool Enabled { get; set; } = true;
}
}

View File

@@ -1,154 +0,0 @@
using Content.Server.Advertisements;
using Content.Server.Chat.Systems;
using Content.Server.Power.Components;
using Content.Shared.VendingMachines;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Timing;
namespace Content.Server.Advertise
{
public sealed class AdvertiseSystem : EntitySystem
{
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly ChatSystem _chat = default!;
/// <summary>
/// The maximum amount of time between checking if advertisements should be displayed
/// </summary>
private readonly TimeSpan _maximumNextCheckDuration = TimeSpan.FromSeconds(15);
/// <summary>
/// The next time the game will check if advertisements should be displayed
/// </summary>
private TimeSpan _nextCheckTime = TimeSpan.MaxValue;
public override void Initialize()
{
SubscribeLocalEvent<AdvertiseComponent, ComponentInit>(OnComponentInit);
SubscribeLocalEvent<AdvertiseComponent, PowerChangedEvent>(OnPowerChanged);
SubscribeLocalEvent<ApcPowerReceiverComponent, AdvertiseEnableChangeAttemptEvent>(OnPowerReceiverEnableChangeAttempt);
SubscribeLocalEvent<VendingMachineComponent, AdvertiseEnableChangeAttemptEvent>(OnVendingEnableChangeAttempt);
// The component inits will lower this.
_nextCheckTime = TimeSpan.MaxValue;
}
private void OnComponentInit(EntityUid uid, AdvertiseComponent advertise, ComponentInit args)
{
RefreshTimer(uid, advertise);
}
private void OnPowerChanged(EntityUid uid, AdvertiseComponent advertise, ref PowerChangedEvent args)
{
SetEnabled(uid, args.Powered, advertise);
}
public void RefreshTimer(EntityUid uid, AdvertiseComponent? advertise = null)
{
if (!Resolve(uid, ref advertise))
return;
if (!advertise.Enabled)
return;
var minDuration = Math.Max(1, advertise.MinimumWait);
var maxDuration = Math.Max(minDuration, advertise.MaximumWait);
var waitDuration = TimeSpan.FromSeconds(_random.Next(minDuration, maxDuration));
var nextTime = _gameTiming.CurTime + waitDuration;
advertise.NextAdvertisementTime = nextTime;
_nextCheckTime = MathHelper.Min(nextTime, _nextCheckTime);
}
public void SayAdvertisement(EntityUid uid, AdvertiseComponent? advertise = null)
{
if (!Resolve(uid, ref advertise))
return;
if (_prototypeManager.TryIndex(advertise.PackPrototypeId, out AdvertisementsPackPrototype? advertisements))
_chat.TrySendInGameICMessage(uid, Loc.GetString(_random.Pick(advertisements.Advertisements)), InGameICChatType.Speak, true);
}
public void SayThankYou(EntityUid uid, AdvertiseComponent? advertise = null)
{
if (!Resolve(uid, ref advertise))
return;
if (_prototypeManager.TryIndex(advertise.PackPrototypeId, out AdvertisementsPackPrototype? advertisements))
{
_chat.TrySendInGameICMessage(uid, Loc.GetString(_random.Pick(advertisements.ThankYous), ("name", Name(uid))), InGameICChatType.Speak, true);
}
}
public void SetEnabled(EntityUid uid, bool enable, AdvertiseComponent? advertise = null)
{
if (!Resolve(uid, ref advertise))
return;
if (advertise.Enabled == enable)
return;
var attemptEvent = new AdvertiseEnableChangeAttemptEvent(enable);
RaiseLocalEvent(uid, attemptEvent);
if (attemptEvent.Cancelled)
return;
advertise.Enabled = enable;
RefreshTimer(uid, advertise);
}
private static void OnPowerReceiverEnableChangeAttempt(EntityUid uid, ApcPowerReceiverComponent component, AdvertiseEnableChangeAttemptEvent args)
{
if(args.Enabling && !component.Powered)
args.Cancel();
}
private static void OnVendingEnableChangeAttempt(EntityUid uid, VendingMachineComponent component, AdvertiseEnableChangeAttemptEvent args)
{
if(args.Enabling && component.Broken)
args.Cancel();
}
public override void Update(float frameTime)
{
var curTime = _gameTiming.CurTime;
if (_nextCheckTime > curTime)
return;
_nextCheckTime = curTime + _maximumNextCheckDuration;
var query = EntityQueryEnumerator<AdvertiseComponent>();
while (query.MoveNext(out var uid, out var advert))
{
if (!advert.Enabled)
continue;
// If this isn't advertising yet
if (advert.NextAdvertisementTime > curTime)
{
_nextCheckTime = MathHelper.Min(advert.NextAdvertisementTime, _nextCheckTime);
continue;
}
SayAdvertisement(uid, advert);
RefreshTimer(uid, advert);
}
}
}
public sealed class AdvertiseEnableChangeAttemptEvent : CancellableEntityEventArgs
{
public bool Enabling { get; }
public AdvertiseEnableChangeAttemptEvent(bool enabling)
{
Enabling = enabling;
}
}
}

View File

@@ -0,0 +1,45 @@
using Content.Server.Advertise.EntitySystems;
using Content.Shared.Advertise;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Server.Advertise.Components;
/// <summary>
/// Makes this entity periodically advertise by speaking a randomly selected
/// message from a specified MessagePack into local chat.
/// </summary>
[RegisterComponent, Access(typeof(AdvertiseSystem))]
public sealed partial class AdvertiseComponent : Component
{
/// <summary>
/// Minimum time in seconds to wait before saying a new ad, in seconds. Has to be larger than or equal to 1.
/// </summary>
[DataField]
public int MinimumWait { get; private set; } = 8 * 60;
/// <summary>
/// Maximum time in seconds to wait before saying a new ad, in seconds. Has to be larger than or equal
/// to <see cref="MinimumWait"/>
/// </summary>
[DataField]
public int MaximumWait { get; private set; } = 10 * 60;
/// <summary>
/// The identifier for the advertisements pack prototype.
/// </summary>
[DataField(required: true)]
public ProtoId<MessagePackPrototype> Pack { get; private set; }
/// <summary>
/// The next time an advertisement will be said.
/// </summary>
[DataField]
public TimeSpan NextAdvertisementTime { get; set; } = TimeSpan.Zero;
/// <summary>
/// Whether the entity will say advertisements or not.
/// </summary>
[DataField]
public bool Enabled { get; set; } = true;
}

View File

@@ -0,0 +1,36 @@
using Content.Shared.Advertise;
using Robust.Shared.Prototypes;
namespace Content.Server.Advertise.Components;
/// <summary>
/// Causes the entity to speak using the Chat system when its ActivatableUI is closed, optionally
/// requiring that a Flag be set as well.
/// </summary>
[RegisterComponent, Access(typeof(SpeakOnUIClosedSystem))]
public sealed partial class SpeakOnUIClosedComponent : Component
{
/// <summary>
/// The identifier for the message pack prototype containing messages to be spoken by this entity.
/// </summary>
[DataField(required: true)]
public ProtoId<MessagePackPrototype> Pack { get; private set; }
/// <summary>
/// Is this component active? If false, no messages will be spoken.
/// </summary>
[DataField]
public bool Enabled = true;
/// <summary>
/// Should messages be spoken only if the <see cref="Flag"/> is set (true), or every time the UI is closed (false)?
/// </summary>
[DataField]
public bool RequireFlag = true;
/// <summary>
/// State variable only used if <see cref="RequireFlag"/> is true. Set with <see cref="SpeakOnUIClosedSystem.TrySetFlag"/>.
/// </summary>
[DataField]
public bool Flag;
}

View File

@@ -0,0 +1,137 @@
using Content.Server.Advertise.Components;
using Content.Server.Chat.Systems;
using Content.Server.Power.Components;
using Content.Shared.VendingMachines;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Timing;
namespace Content.Server.Advertise.EntitySystems;
public sealed class AdvertiseSystem : EntitySystem
{
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly ChatSystem _chat = default!;
/// <summary>
/// The maximum amount of time between checking if advertisements should be displayed
/// </summary>
private readonly TimeSpan _maximumNextCheckDuration = TimeSpan.FromSeconds(15);
/// <summary>
/// The next time the game will check if advertisements should be displayed
/// </summary>
private TimeSpan _nextCheckTime = TimeSpan.MaxValue;
public override void Initialize()
{
SubscribeLocalEvent<AdvertiseComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<AdvertiseComponent, PowerChangedEvent>(OnPowerChanged);
SubscribeLocalEvent<ApcPowerReceiverComponent, AdvertiseEnableChangeAttemptEvent>(OnPowerReceiverEnableChangeAttempt);
SubscribeLocalEvent<VendingMachineComponent, AdvertiseEnableChangeAttemptEvent>(OnVendingEnableChangeAttempt);
// The component inits will lower this.
_nextCheckTime = TimeSpan.MaxValue;
}
private void OnMapInit(EntityUid uid, AdvertiseComponent advertise, MapInitEvent args)
{
RefreshTimer(uid, advertise);
}
private void OnPowerChanged(EntityUid uid, AdvertiseComponent advertise, ref PowerChangedEvent args)
{
SetEnabled(uid, args.Powered, advertise);
}
public void RefreshTimer(EntityUid uid, AdvertiseComponent? advertise = null)
{
if (!Resolve(uid, ref advertise))
return;
if (!advertise.Enabled)
return;
var minDuration = Math.Max(1, advertise.MinimumWait);
var maxDuration = Math.Max(minDuration, advertise.MaximumWait);
var waitDuration = TimeSpan.FromSeconds(_random.Next(minDuration, maxDuration));
var nextTime = _gameTiming.CurTime + waitDuration;
advertise.NextAdvertisementTime = nextTime;
_nextCheckTime = MathHelper.Min(nextTime, _nextCheckTime);
}
public void SayAdvertisement(EntityUid uid, AdvertiseComponent? advertise = null)
{
if (!Resolve(uid, ref advertise))
return;
if (_prototypeManager.TryIndex(advertise.Pack, out var advertisements))
_chat.TrySendInGameICMessage(uid, Loc.GetString(_random.Pick(advertisements.Messages)), InGameICChatType.Speak, hideChat: true);
}
public void SetEnabled(EntityUid uid, bool enable, AdvertiseComponent? advertise = null)
{
if (!Resolve(uid, ref advertise))
return;
if (advertise.Enabled == enable)
return;
var attemptEvent = new AdvertiseEnableChangeAttemptEvent(enable);
RaiseLocalEvent(uid, attemptEvent);
if (attemptEvent.Cancelled)
return;
advertise.Enabled = enable;
RefreshTimer(uid, advertise);
}
private static void OnPowerReceiverEnableChangeAttempt(EntityUid uid, ApcPowerReceiverComponent component, AdvertiseEnableChangeAttemptEvent args)
{
if (args.Enabling && !component.Powered)
args.Cancel();
}
private static void OnVendingEnableChangeAttempt(EntityUid uid, VendingMachineComponent component, AdvertiseEnableChangeAttemptEvent args)
{
if (args.Enabling && component.Broken)
args.Cancel();
}
public override void Update(float frameTime)
{
var curTime = _gameTiming.CurTime;
if (_nextCheckTime > curTime)
return;
_nextCheckTime = curTime + _maximumNextCheckDuration;
var query = EntityQueryEnumerator<AdvertiseComponent>();
while (query.MoveNext(out var uid, out var advert))
{
if (!advert.Enabled)
continue;
// If this isn't advertising yet
if (advert.NextAdvertisementTime > curTime)
{
_nextCheckTime = MathHelper.Min(advert.NextAdvertisementTime, _nextCheckTime);
continue;
}
SayAdvertisement(uid, advert);
RefreshTimer(uid, advert);
}
}
}
public sealed class AdvertiseEnableChangeAttemptEvent(bool enabling) : CancellableEntityEventArgs
{
public bool Enabling { get; } = enabling;
}

View File

@@ -0,0 +1,58 @@
using Content.Server.Advertise.Components;
using Content.Server.Chat.Systems;
using Content.Server.UserInterface;
using Content.Shared.Advertise;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
namespace Content.Server.Advertise;
public sealed partial class SpeakOnUIClosedSystem : EntitySystem
{
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly ChatSystem _chat = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<SpeakOnUIClosedComponent, BoundUIClosedEvent>(OnBoundUIClosed);
}
private void OnBoundUIClosed(Entity<SpeakOnUIClosedComponent> entity, ref BoundUIClosedEvent args)
{
if (!TryComp(entity, out ActivatableUIComponent? activatable) || !args.UiKey.Equals(activatable.Key))
return;
if (entity.Comp.RequireFlag && !entity.Comp.Flag)
return;
TrySpeak((entity, entity.Comp));
}
public bool TrySpeak(Entity<SpeakOnUIClosedComponent?> entity)
{
if (!Resolve(entity, ref entity.Comp))
return false;
if (!entity.Comp.Enabled)
return false;
if (!_prototypeManager.TryIndex(entity.Comp.Pack, out MessagePackPrototype? messagePack))
return false;
var message = Loc.GetString(_random.Pick(messagePack.Messages), ("name", Name(entity)));
_chat.TrySendInGameICMessage(entity, message, InGameICChatType.Speak, true);
entity.Comp.Flag = false;
return true;
}
public bool TrySetFlag(Entity<SpeakOnUIClosedComponent?> entity, bool value = true)
{
if (!Resolve(entity, ref entity.Comp))
return false;
entity.Comp.Flag = value;
return true;
}
}

View File

@@ -1,18 +0,0 @@
using Robust.Shared.Prototypes;
namespace Content.Server.Advertisements
{
[Serializable, Prototype("advertisementsPack")]
public sealed partial class AdvertisementsPackPrototype : IPrototype
{
[ViewVariables]
[IdDataField]
public string ID { get; private set; } = default!;
[DataField("advertisements")]
public List<string> Advertisements { get; private set; } = new();
[DataField("thankyous")]
public List<string> ThankYous { get; private set; } = new();
}
}

View File

@@ -1,12 +1,11 @@
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using Content.Server.Advertise; using Content.Server.Advertise;
using Content.Server.Advertise.Components;
using Content.Server.Cargo.Systems; using Content.Server.Cargo.Systems;
using Content.Server.Chat.Systems;
using Content.Server.Emp; using Content.Server.Emp;
using Content.Server.Power.Components; using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems; using Content.Server.Power.EntitySystems;
using Content.Server.UserInterface;
using Content.Shared.Access.Components; using Content.Shared.Access.Components;
using Content.Shared.Access.Systems; using Content.Shared.Access.Systems;
using Content.Shared.Actions; using Content.Shared.Actions;
@@ -25,7 +24,6 @@ using Robust.Shared.Audio;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Random; using Robust.Shared.Random;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using Robust.Shared.Utility;
namespace Content.Server.VendingMachines namespace Content.Server.VendingMachines
{ {
@@ -39,7 +37,7 @@ namespace Content.Server.VendingMachines
[Dependency] private readonly ThrowingSystem _throwingSystem = default!; [Dependency] private readonly ThrowingSystem _throwingSystem = default!;
[Dependency] private readonly UserInterfaceSystem _userInterfaceSystem = default!; [Dependency] private readonly UserInterfaceSystem _userInterfaceSystem = default!;
[Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly AdvertiseSystem _advertise = default!; [Dependency] private readonly SpeakOnUIClosedSystem _speakOnUIClosed = default!;
public override void Initialize() public override void Initialize()
{ {
@@ -58,7 +56,6 @@ namespace Content.Server.VendingMachines
Subs.BuiEvents<VendingMachineComponent>(VendingMachineUiKey.Key, subs => Subs.BuiEvents<VendingMachineComponent>(VendingMachineUiKey.Key, subs =>
{ {
subs.Event<BoundUIOpenedEvent>(OnBoundUIOpened); subs.Event<BoundUIOpenedEvent>(OnBoundUIOpened);
subs.Event<BoundUIClosedEvent>(OnBoundUIClosed);
subs.Event<VendingMachineEjectMessage>(OnInventoryEjectMessage); subs.Event<VendingMachineEjectMessage>(OnInventoryEjectMessage);
}); });
@@ -114,16 +111,6 @@ namespace Content.Server.VendingMachines
UpdateVendingMachineInterfaceState(uid, component); UpdateVendingMachineInterfaceState(uid, component);
} }
private void OnBoundUIClosed(EntityUid uid, VendingMachineComponent component, BoundUIClosedEvent args)
{
// Only vendors that advertise will send message after dispensing
if (component.ShouldSayThankYou && TryComp<AdvertiseComponent>(uid, out var advertise))
{
_advertise.SayThankYou(uid, advertise);
component.ShouldSayThankYou = false;
}
}
private void UpdateVendingMachineInterfaceState(EntityUid uid, VendingMachineComponent component) private void UpdateVendingMachineInterfaceState(EntityUid uid, VendingMachineComponent component)
{ {
var state = new VendingMachineInterfaceState(GetAllInventory(uid, component)); var state = new VendingMachineInterfaceState(GetAllInventory(uid, component));
@@ -294,7 +281,10 @@ namespace Content.Server.VendingMachines
vendComponent.Ejecting = true; vendComponent.Ejecting = true;
vendComponent.NextItemToEject = entry.ID; vendComponent.NextItemToEject = entry.ID;
vendComponent.ThrowNextItem = throwItem; vendComponent.ThrowNextItem = throwItem;
vendComponent.ShouldSayThankYou = true;
if (TryComp(uid, out SpeakOnUIClosedComponent? speakComponent))
_speakOnUIClosed.TrySetFlag((uid, speakComponent));
entry.Amount--; entry.Amount--;
UpdateVendingMachineInterfaceState(uid, vendComponent); UpdateVendingMachineInterfaceState(uid, vendComponent);
TryUpdateVisualState(uid, vendComponent); TryUpdateVisualState(uid, vendComponent);

View File

@@ -0,0 +1,14 @@
using Robust.Shared.Prototypes;
namespace Content.Shared.Advertise;
[Serializable, Prototype("messagePack")]
public sealed partial class MessagePackPrototype : IPrototype
{
[ViewVariables]
[IdDataField]
public string ID { get; private set; } = default!;
[DataField]
public List<LocId> Messages { get; private set; } = [];
}

View File

@@ -51,8 +51,6 @@ namespace Content.Shared.VendingMachines
public bool Broken; public bool Broken;
public bool ShouldSayThankYou;
/// <summary> /// <summary>
/// When true, will forcefully throw any object it dispenses /// When true, will forcefully throw any object it dispenses
/// </summary> /// </summary>

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: AmmoVendAds id: AmmoVendAds
advertisements: messages:
- advertisement-ammo-1 - advertisement-ammo-1
- advertisement-ammo-2 - advertisement-ammo-2
- advertisement-ammo-3 - advertisement-ammo-3
@@ -11,5 +11,3 @@
- advertisement-ammo-8 - advertisement-ammo-8
- advertisement-ammo-9 - advertisement-ammo-9
- advertisement-ammo-10 - advertisement-ammo-10
thankyous:
- vending-machine-thanks

View File

@@ -1,8 +1,6 @@
- type: advertisementsPack - type: messagePack
id: AtmosDrobeAds id: AtmosDrobeAds
advertisements: messages:
- advertisement-atmosdrobe-1 - advertisement-atmosdrobe-1
- advertisement-atmosdrobe-2 - advertisement-atmosdrobe-2
- advertisement-atmosdrobe-3 - advertisement-atmosdrobe-3
thankyous:
- vending-machine-thanks

View File

@@ -1,7 +1,5 @@
- type: advertisementsPack - type: messagePack
id: BarDrobeAds id: BarDrobeAds
advertisements: messages:
- advertisement-bardrobe-1 - advertisement-bardrobe-1
- advertisement-bardrobe-2 - advertisement-bardrobe-2
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: BoozeOMatAds id: BoozeOMatAds
advertisements: messages:
- advertisement-boozeomat-1 - advertisement-boozeomat-1
- advertisement-boozeomat-2 - advertisement-boozeomat-2
- advertisement-boozeomat-3 - advertisement-boozeomat-3
@@ -20,8 +20,3 @@
- advertisement-boozeomat-17 - advertisement-boozeomat-17
- advertisement-boozeomat-18 - advertisement-boozeomat-18
- advertisement-boozeomat-19 - advertisement-boozeomat-19
thankyous:
- vending-machine-thanks
- thankyou-boozeomat-1
- thankyou-boozeomat-2
- thankyou-boozeomat-3

View File

@@ -1,8 +1,6 @@
- type: advertisementsPack - type: messagePack
id: CargoDrobeAds id: CargoDrobeAds
advertisements: messages:
- advertisement-cargodrobe-1 - advertisement-cargodrobe-1
- advertisement-cargodrobe-2 - advertisement-cargodrobe-2
- advertisement-cargodrobe-3 - advertisement-cargodrobe-3
thankyous:
- vending-machine-thanks

View File

@@ -1,12 +1,8 @@
- type: advertisementsPack - type: messagePack
id: ChangAds id: ChangAds
advertisements: messages:
- advertisement-chang-1 - advertisement-chang-1
- advertisement-chang-2 - advertisement-chang-2
- advertisement-chang-3 - advertisement-chang-3
- advertisement-chang-4 - advertisement-chang-4
- advertisement-chang-5 - advertisement-chang-5
thankyous:
- vending-machine-thanks
- thankyou-chang-1
- thankyou-chang-2

View File

@@ -1,8 +1,6 @@
- type: advertisementsPack - type: messagePack
id: ChefDrobeAds id: ChefDrobeAds
advertisements: messages:
- advertisement-chefdrobe-1 - advertisement-chefdrobe-1
- advertisement-chefdrobe-2 - advertisement-chefdrobe-2
- advertisement-chefdrobe-3 - advertisement-chefdrobe-3
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: ChefvendAds id: ChefvendAds
advertisements: messages:
- advertisement-chefvend-1 - advertisement-chefvend-1
- advertisement-chefvend-2 - advertisement-chefvend-2
- advertisement-chefvend-3 - advertisement-chefvend-3
@@ -10,9 +10,3 @@
- advertisement-chefvend-7 - advertisement-chefvend-7
- advertisement-chefvend-8 - advertisement-chefvend-8
- advertisement-chefvend-9 - advertisement-chefvend-9
thankyous:
- vending-machine-thanks
- thankyou-chefvend-1
- thankyou-chefvend-2
- thankyou-chefvend-3
- thankyou-chefvend-4

View File

@@ -1,9 +1,6 @@
- type: advertisementsPack - type: messagePack
id: ChemDrobeAds id: ChemDrobeAds
advertisements: messages:
- advertisement-chemdrobe-1 - advertisement-chemdrobe-1
- advertisement-chemdrobe-2 - advertisement-chemdrobe-2
- advertisement-chemdrobe-3 - advertisement-chemdrobe-3
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: CigaretteMachineAds id: CigaretteMachineAds
advertisements: messages:
- advertisement-cigs-1 - advertisement-cigs-1
- advertisement-cigs-2 - advertisement-cigs-2
- advertisement-cigs-3 - advertisement-cigs-3
@@ -13,8 +13,3 @@
- advertisement-cigs-10 - advertisement-cigs-10
- advertisement-cigs-11 - advertisement-cigs-11
- advertisement-cigs-12 - advertisement-cigs-12
thankyous:
- vending-machine-thanks
- thankyou-cigs-1
- thankyou-cigs-2
- thankyou-cigs-3

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: ClothesMateAds id: ClothesMateAds
advertisements: messages:
- advertisement-clothes-1 - advertisement-clothes-1
- advertisement-clothes-2 - advertisement-clothes-2
- advertisement-clothes-3 - advertisement-clothes-3
@@ -8,5 +8,3 @@
- advertisement-clothes-5 - advertisement-clothes-5
- advertisement-clothes-6 - advertisement-clothes-6
- advertisement-clothes-7 - advertisement-clothes-7
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: HotDrinksMachineAds id: HotDrinksMachineAds
advertisements: messages:
- advertisement-coffee-1 - advertisement-coffee-1
- advertisement-coffee-2 - advertisement-coffee-2
- advertisement-coffee-3 - advertisement-coffee-3
@@ -15,9 +15,3 @@
- advertisement-coffee-12 - advertisement-coffee-12
- advertisement-coffee-13 - advertisement-coffee-13
- advertisement-coffee-14 - advertisement-coffee-14
thankyous:
- vending-machine-thanks
- thankyou-coffee-1
- thankyou-coffee-2
- thankyou-coffee-3
- thankyou-coffee-4

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: RobustSoftdrinksAds id: RobustSoftdrinksAds
advertisements: messages:
- advertisement-cola-1 - advertisement-cola-1
- advertisement-cola-2 - advertisement-cola-2
- advertisement-cola-3 - advertisement-cola-3
@@ -9,9 +9,3 @@
- advertisement-cola-6 - advertisement-cola-6
- advertisement-cola-7 - advertisement-cola-7
- advertisement-cola-8 - advertisement-cola-8
thankyous:
- vending-machine-thanks
- thankyou-cola-1
- thankyou-cola-2
- thankyou-cola-3
- thankyou-cola-4

View File

@@ -1,11 +1,9 @@
- type: advertisementsPack - type: messagePack
id: CondimentVendAds id: CondimentVendAds
advertisements: messages:
- advertisement-condiment-1 - advertisement-condiment-1
- advertisement-condiment-2 - advertisement-condiment-2
- advertisement-condiment-3 - advertisement-condiment-3
- advertisement-condiment-4 - advertisement-condiment-4
- advertisement-condiment-5 - advertisement-condiment-5
- advertisement-condiment-6 - advertisement-condiment-6
thankyous:
- vending-machine-thanks

View File

@@ -1,8 +1,6 @@
- type: advertisementsPack - type: messagePack
id: CuraDrobeAds id: CuraDrobeAds
advertisements: messages:
- advertisement-curadrobe-1 - advertisement-curadrobe-1
- advertisement-curadrobe-2 - advertisement-curadrobe-2
- advertisement-curadrobe-3 - advertisement-curadrobe-3
thankyous:
- vending-machine-thanks

View File

@@ -1,8 +1,6 @@
- type: advertisementsPack - type: messagePack
id: DetDrobeAds id: DetDrobeAds
advertisements: messages:
- advertisement-detdrobe-1 - advertisement-detdrobe-1
- advertisement-detdrobe-2 - advertisement-detdrobe-2
- advertisement-detdrobe-3 - advertisement-detdrobe-3
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: DinnerwareAds id: DinnerwareAds
advertisements: messages:
- advertisement-dinnerware-1 - advertisement-dinnerware-1
- advertisement-dinnerware-2 - advertisement-dinnerware-2
- advertisement-dinnerware-3 - advertisement-dinnerware-3
@@ -11,5 +11,3 @@
- advertisement-dinnerware-8 - advertisement-dinnerware-8
- advertisement-dinnerware-9 - advertisement-dinnerware-9
- advertisement-dinnerware-10 - advertisement-dinnerware-10
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: DiscountDansAds id: DiscountDansAds
advertisements: messages:
- advertisement-discount-1 - advertisement-discount-1
- advertisement-discount-2 - advertisement-discount-2
- advertisement-discount-3 - advertisement-discount-3
@@ -10,13 +10,3 @@
- advertisement-discount-7 - advertisement-discount-7
- advertisement-discount-8 - advertisement-discount-8
- advertisement-discount-9 - advertisement-discount-9
thankyous:
- vending-machine-thanks
- thankyou-discount-1
- thankyou-discount-2
- thankyou-discount-3
- thankyou-discount-4
- thankyou-discount-5
- thankyou-discount-6
- thankyou-discount-7
- thankyou-discount-8

View File

@@ -1,14 +1,8 @@
- type: advertisementsPack - type: messagePack
id: DonutAds id: DonutAds
advertisements: messages:
- advertisement-donut-1 - advertisement-donut-1
- advertisement-donut-2 - advertisement-donut-2
- advertisement-donut-3 - advertisement-donut-3
- advertisement-donut-4 - advertisement-donut-4
- advertisement-donut-5 - advertisement-donut-5
thankyous:
- vending-machine-thanks
- thankyou-donut-1
- thankyou-donut-2
- thankyou-donut-3
- thankyou-donut-4

View File

@@ -1,10 +1,8 @@
- type: advertisementsPack - type: messagePack
id: EngiDrobeAds id: EngiDrobeAds
advertisements: messages:
- advertisement-engidrobe-1 - advertisement-engidrobe-1
- advertisement-engidrobe-2 - advertisement-engidrobe-2
- advertisement-engidrobe-3 - advertisement-engidrobe-3
- advertisement-engidrobe-4 - advertisement-engidrobe-4
- advertisement-engidrobe-5 - advertisement-engidrobe-5
thankyous:
- vending-machine-thanks

View File

@@ -1,11 +1,9 @@
- type: advertisementsPack - type: messagePack
id: FatExtractorFacts id: FatExtractorFacts
advertisements: messages:
- fat-extractor-fact-1 - fat-extractor-fact-1
- fat-extractor-fact-2 - fat-extractor-fact-2
- fat-extractor-fact-3 - fat-extractor-fact-3
- fat-extractor-fact-4 - fat-extractor-fact-4
- fat-extractor-fact-5 - fat-extractor-fact-5
- fat-extractor-fact-6 - fat-extractor-fact-6
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: GoodCleanFunAds id: GoodCleanFunAds
advertisements: messages:
- advertisement-goodcleanfun-1 - advertisement-goodcleanfun-1
- advertisement-goodcleanfun-2 - advertisement-goodcleanfun-2
- advertisement-goodcleanfun-3 - advertisement-goodcleanfun-3
@@ -11,9 +11,3 @@
- advertisement-goodcleanfun-8 - advertisement-goodcleanfun-8
- advertisement-goodcleanfun-9 - advertisement-goodcleanfun-9
- advertisement-goodcleanfun-10 - advertisement-goodcleanfun-10
thankyous:
- vending-machine-thanks
- thankyou-goodcleanfun-1
- thankyou-goodcleanfun-2
- thankyou-goodcleanfun-3
- thankyou-goodcleanfun-4

View File

@@ -1,7 +1,5 @@
- type: advertisementsPack - type: messagePack
id: GeneDrobeAds id: GeneDrobeAds
advertisements: messages:
- advertisement-genedrobe-1 - advertisement-genedrobe-1
- advertisement-genedrobe-2 - advertisement-genedrobe-2
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: HappyHonkAds id: HappyHonkAds
advertisements: messages:
- advertisement-happyhonk-1 - advertisement-happyhonk-1
- advertisement-happyhonk-2 - advertisement-happyhonk-2
- advertisement-happyhonk-3 - advertisement-happyhonk-3
@@ -11,9 +11,3 @@
- advertisement-happyhonk-8 - advertisement-happyhonk-8
- advertisement-happyhonk-9 - advertisement-happyhonk-9
- advertisement-happyhonk-10 - advertisement-happyhonk-10
thankyous:
- vending-machine-thanks
- thankyou-happyhonk-1
- thankyou-happyhonk-2
- thankyou-happyhonk-3
- thankyou-happyhonk-4

View File

@@ -1,9 +1,7 @@
- type: advertisementsPack - type: messagePack
id: HyDrobeAds id: HyDrobeAds
advertisements: messages:
- advertisement-hydrobe-1 - advertisement-hydrobe-1
- advertisement-hydrobe-2 - advertisement-hydrobe-2
- advertisement-hydrobe-3 - advertisement-hydrobe-3
- advertisement-hydrobe-4 - advertisement-hydrobe-4
thankyous:
- vending-machine-thanks

View File

@@ -1,8 +1,6 @@
- type: advertisementsPack - type: messagePack
id: JaniDrobeAds id: JaniDrobeAds
advertisements: messages:
- advertisement-janidrobe-1 - advertisement-janidrobe-1
- advertisement-janidrobe-2 - advertisement-janidrobe-2
- advertisement-janidrobe-3 - advertisement-janidrobe-3
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: LawDrobeAds id: LawDrobeAds
advertisements: messages:
- advertisement-lawdrobe-1 - advertisement-lawdrobe-1
- advertisement-lawdrobe-2 - advertisement-lawdrobe-2
- advertisement-lawdrobe-3 - advertisement-lawdrobe-3
@@ -9,10 +9,3 @@
- advertisement-lawdrobe-6 - advertisement-lawdrobe-6
- advertisement-lawdrobe-7 - advertisement-lawdrobe-7
- advertisement-lawdrobe-8 - advertisement-lawdrobe-8
thankyous:
- vending-machine-thanks
- thankyou-lawdrobe-1
- thankyou-lawdrobe-2
- thankyou-lawdrobe-3
- thankyou-lawdrobe-4
- thankyou-lawdrobe-5

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: MagiVendAds id: MagiVendAds
advertisements: messages:
- advertisement-magivend-1 - advertisement-magivend-1
- advertisement-magivend-2 - advertisement-magivend-2
- advertisement-magivend-3 - advertisement-magivend-3
@@ -12,5 +12,3 @@
- advertisement-magivend-9 - advertisement-magivend-9
- advertisement-magivend-10 - advertisement-magivend-10
- advertisement-magivend-11 - advertisement-magivend-11
thankyous:
- vending-machine-thanks

View File

@@ -1,8 +1,6 @@
- type: advertisementsPack - type: messagePack
id: MediDrobeAds id: MediDrobeAds
advertisements: messages:
- advertisement-medidrobe-1 - advertisement-medidrobe-1
- advertisement-medidrobe-2 - advertisement-medidrobe-2
- advertisement-medidrobe-3 - advertisement-medidrobe-3
thankyous:
- vending-machine-thanks

View File

@@ -1,11 +1,9 @@
- type: advertisementsPack - type: messagePack
id: MegaSeedAds id: MegaSeedAds
advertisements: messages:
- advertisement-megaseed-1 - advertisement-megaseed-1
- advertisement-megaseed-2 - advertisement-megaseed-2
- advertisement-megaseed-3 - advertisement-megaseed-3
- advertisement-megaseed-4 - advertisement-megaseed-4
- advertisement-megaseed-5 - advertisement-megaseed-5
- advertisement-megaseed-6 - advertisement-megaseed-6
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: NanoMedAds id: NanoMedAds
advertisements: messages:
- advertisement-nanomed-1 - advertisement-nanomed-1
- advertisement-nanomed-2 - advertisement-nanomed-2
- advertisement-nanomed-3 - advertisement-nanomed-3
@@ -10,5 +10,3 @@
- advertisement-nanomed-7 - advertisement-nanomed-7
- advertisement-nanomed-8 - advertisement-nanomed-8
- advertisement-nanomed-9 - advertisement-nanomed-9
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: NutriMaxAds id: NutriMaxAds
advertisements: messages:
- advertisement-nutrimax-1 - advertisement-nutrimax-1
- advertisement-nutrimax-2 - advertisement-nutrimax-2
- advertisement-nutrimax-3 - advertisement-nutrimax-3
@@ -8,7 +8,3 @@
- advertisement-nutrimax-5 - advertisement-nutrimax-5
- advertisement-nutrimax-6 - advertisement-nutrimax-6
- advertisement-nutrimax-7 - advertisement-nutrimax-7
thankyous:
- vending-machine-thanks
- thankyou-nutrimax-1
- thankyou-nutrimax-2

View File

@@ -1,9 +1,7 @@
- type: advertisementsPack - type: messagePack
id: RoboDrobeAds id: RoboDrobeAds
advertisements: messages:
- advertisement-robodrobe-1 - advertisement-robodrobe-1
- advertisement-robodrobe-2 - advertisement-robodrobe-2
- advertisement-robodrobe-3 - advertisement-robodrobe-3
- advertisement-robodrobe-4 - advertisement-robodrobe-4
thankyous:
- vending-machine-thanks

View File

@@ -1,8 +1,6 @@
- type: advertisementsPack - type: messagePack
id: SciDrobeAds id: SciDrobeAds
advertisements: messages:
- advertisement-scidrobe-1 - advertisement-scidrobe-1
- advertisement-scidrobe-2 - advertisement-scidrobe-2
- advertisement-scidrobe-3 - advertisement-scidrobe-3
thankyous:
- vending-machine-thanks

View File

@@ -1,10 +1,8 @@
- type: advertisementsPack - type: messagePack
id: SecDrobeAds id: SecDrobeAds
advertisements: messages:
- advertisement-secdrobe-1 - advertisement-secdrobe-1
- advertisement-secdrobe-2 - advertisement-secdrobe-2
- advertisement-secdrobe-3 - advertisement-secdrobe-3
- advertisement-secdrobe-4 - advertisement-secdrobe-4
- advertisement-secdrobe-5 - advertisement-secdrobe-5
thankyous:
- vending-machine-thanks

View File

@@ -1,13 +1,8 @@
- type: advertisementsPack - type: messagePack
id: SecTechAds id: SecTechAds
advertisements: messages:
- advertisement-sectech-1 - advertisement-sectech-1
- advertisement-sectech-2 - advertisement-sectech-2
- advertisement-sectech-3 - advertisement-sectech-3
- advertisement-sectech-4 - advertisement-sectech-4
- advertisement-sectech-5 - advertisement-sectech-5
thankyous:
- vending-machine-thanks
- thankyou-sectech-1
- thankyou-sectech-2
- thankyou-sectech-3

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: SmartFridgeAds id: SmartFridgeAds
advertisements: messages:
- advertisement-smartfridge-1 - advertisement-smartfridge-1
- advertisement-smartfridge-2 - advertisement-smartfridge-2
- advertisement-smartfridge-3 - advertisement-smartfridge-3
@@ -9,5 +9,3 @@
- advertisement-smartfridge-6 - advertisement-smartfridge-6
- advertisement-smartfridge-7 - advertisement-smartfridge-7
- advertisement-smartfridge-8 - advertisement-smartfridge-8
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: GetmoreChocolateCorpAds id: GetmoreChocolateCorpAds
advertisements: messages:
- advertisement-snack-1 - advertisement-snack-1
- advertisement-snack-2 - advertisement-snack-2
- advertisement-snack-3 - advertisement-snack-3
@@ -16,11 +16,3 @@
- advertisement-snack-13 - advertisement-snack-13
- advertisement-snack-14 - advertisement-snack-14
- advertisement-snack-15 - advertisement-snack-15
thankyous:
- vending-machine-thanks
- thankyou-snack-1
- thankyou-snack-2
- thankyou-snack-3
- thankyou-snack-4
- thankyou-snack-5
- thankyou-snack-6

View File

@@ -1,14 +1,9 @@
- type: advertisementsPack - type: messagePack
id: BodaAds id: BodaAds
advertisements: messages:
- advertisement-sovietsoda-1 - advertisement-sovietsoda-1
- advertisement-sovietsoda-2 - advertisement-sovietsoda-2
- advertisement-sovietsoda-3 - advertisement-sovietsoda-3
- advertisement-sovietsoda-4 - advertisement-sovietsoda-4
- advertisement-sovietsoda-5 - advertisement-sovietsoda-5
- advertisement-sovietsoda-6 - advertisement-sovietsoda-6
thankyous:
- vending-machine-thanks
- thankyou-sovietsoda-1
- thankyou-sovietsoda-2
- thankyou-sovietsoda-3

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: SyndieDrobeAds id: SyndieDrobeAds
advertisements: messages:
- advertisement-syndiedrobe-1 - advertisement-syndiedrobe-1
- advertisement-syndiedrobe-2 - advertisement-syndiedrobe-2
- advertisement-syndiedrobe-3 - advertisement-syndiedrobe-3
@@ -32,10 +32,3 @@
- advertisement-syndiedrobe-29 - advertisement-syndiedrobe-29
- advertisement-syndiedrobe-30 - advertisement-syndiedrobe-30
- advertisement-syndiedrobe-31 - advertisement-syndiedrobe-31
thankyous:
- vending-machine-thanks
- thankyou-syndiedrobe-1
- thankyou-syndiedrobe-2
- thankyou-syndiedrobe-3
- thankyou-syndiedrobe-4
- thankyou-syndiedrobe-5

View File

@@ -1,11 +1,9 @@
- type: advertisementsPack - type: messagePack
id: AutoDrobeAds id: AutoDrobeAds
advertisements: messages:
- advertisement-theater-1 - advertisement-theater-1
- advertisement-theater-2 - advertisement-theater-2
- advertisement-theater-3 - advertisement-theater-3
- advertisement-theater-4 - advertisement-theater-4
- advertisement-theater-5 - advertisement-theater-5
- advertisement-theater-6 - advertisement-theater-6
thankyous:
- vending-machine-thanks

View File

@@ -1,6 +1,6 @@
- type: advertisementsPack - type: messagePack
id: VendomatAds id: VendomatAds
advertisements: messages:
- advertisement-vendomat-1 - advertisement-vendomat-1
- advertisement-vendomat-2 - advertisement-vendomat-2
- advertisement-vendomat-3 - advertisement-vendomat-3
@@ -8,5 +8,3 @@
- advertisement-vendomat-5 - advertisement-vendomat-5
- advertisement-vendomat-6 - advertisement-vendomat-6
- advertisement-vendomat-7 - advertisement-vendomat-7
thankyous:
- vending-machine-thanks

View File

@@ -1,8 +1,6 @@
- type: advertisementsPack - type: messagePack
id: ViroDrobeAds id: ViroDrobeAds
advertisements: messages:
- advertisement-virodrobe-1 - advertisement-virodrobe-1
- advertisement-virodrobe-2 - advertisement-virodrobe-2
- advertisement-virodrobe-3 - advertisement-virodrobe-3
thankyous:
- vending-machine-thanks

View File

@@ -0,0 +1,7 @@
- type: messagePack
id: BoozeOMatGoodbyes
messages:
- vending-machine-thanks
- thankyou-boozeomat-1
- thankyou-boozeomat-2
- thankyou-boozeomat-3

View File

@@ -0,0 +1,6 @@
- type: messagePack
id: ChangGoodbyes
messages:
- vending-machine-thanks
- thankyou-chang-1
- thankyou-chang-2

View File

@@ -0,0 +1,8 @@
- type: messagePack
id: ChefvendGoodbyes
messages:
- vending-machine-thanks
- thankyou-chefvend-1
- thankyou-chefvend-2
- thankyou-chefvend-3
- thankyou-chefvend-4

View File

@@ -0,0 +1,7 @@
- type: messagePack
id: CigaretteMachineGoodbyes
messages:
- vending-machine-thanks
- thankyou-cigs-1
- thankyou-cigs-2
- thankyou-cigs-3

View File

@@ -0,0 +1,8 @@
- type: messagePack
id: HotDrinksMachineGoodbyes
messages:
- vending-machine-thanks
- thankyou-coffee-1
- thankyou-coffee-2
- thankyou-coffee-3
- thankyou-coffee-4

View File

@@ -0,0 +1,8 @@
- type: messagePack
id: RobustSoftdrinksGoodbyes
messages:
- vending-machine-thanks
- thankyou-cola-1
- thankyou-cola-2
- thankyou-cola-3
- thankyou-cola-4

View File

@@ -0,0 +1,12 @@
- type: messagePack
id: DiscountDansGoodbyes
messages:
- vending-machine-thanks
- thankyou-discount-1
- thankyou-discount-2
- thankyou-discount-3
- thankyou-discount-4
- thankyou-discount-5
- thankyou-discount-6
- thankyou-discount-7
- thankyou-discount-8

View File

@@ -0,0 +1,8 @@
- type: messagePack
id: DonutGoodbyes
messages:
- vending-machine-thanks
- thankyou-donut-1
- thankyou-donut-2
- thankyou-donut-3
- thankyou-donut-4

View File

@@ -0,0 +1,8 @@
- type: messagePack
id: GoodCleanFunGoodbyes
messages:
- vending-machine-thanks
- thankyou-goodcleanfun-1
- thankyou-goodcleanfun-2
- thankyou-goodcleanfun-3
- thankyou-goodcleanfun-4

View File

@@ -0,0 +1,4 @@
- type: messagePack
id: GenericVendGoodbyes
messages:
- vending-machine-thanks

View File

@@ -0,0 +1,8 @@
- type: messagePack
id: HappyHonkGoodbyes
messages:
- vending-machine-thanks
- thankyou-happyhonk-1
- thankyou-happyhonk-2
- thankyou-happyhonk-3
- thankyou-happyhonk-4

View File

@@ -0,0 +1,8 @@
- type: messagePack
id: LawDrobeGoodbyes
messages:
- thankyou-lawdrobe-1
- thankyou-lawdrobe-2
- thankyou-lawdrobe-3
- thankyou-lawdrobe-4
- thankyou-lawdrobe-5

View File

@@ -0,0 +1,6 @@
- type: messagePack
id: NutriMaxGoodbyes
messages:
- vending-machine-thanks
- thankyou-nutrimax-1
- thankyou-nutrimax-2

View File

@@ -0,0 +1,7 @@
- type: messagePack
id: SecTechGoodbyes
messages:
- vending-machine-thanks
- thankyou-sectech-1
- thankyou-sectech-2
- thankyou-sectech-3

View File

@@ -0,0 +1,10 @@
- type: messagePack
id: GetmoreChocolateCorpGoodbyes
messages:
- vending-machine-thanks
- thankyou-snack-1
- thankyou-snack-2
- thankyou-snack-3
- thankyou-snack-4
- thankyou-snack-5
- thankyou-snack-6

View File

@@ -0,0 +1,7 @@
- type: messagePack
id: BodaGoodbyes
messages:
- vending-machine-thanks
- thankyou-sovietsoda-1
- thankyou-sovietsoda-2
- thankyou-sovietsoda-3

View File

@@ -0,0 +1,9 @@
- type: messagePack
id: SyndieDrobeGoodbyes
messages:
- vending-machine-thanks
- thankyou-syndiedrobe-1
- thankyou-syndiedrobe-2
- thankyou-syndiedrobe-3
- thankyou-syndiedrobe-4
- thankyou-syndiedrobe-5

View File

@@ -130,6 +130,8 @@
density: 190 density: 190
- type: Advertise - type: Advertise
pack: CondimentVendAds pack: CondimentVendAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Speech - type: Speech
- type: Transform - type: Transform
noRot: false noRot: false
@@ -147,6 +149,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: AmmoVendAds pack: AmmoVendAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/ammo.rsi sprite: Structures/Machines/VendingMachines/ammo.rsi
@@ -174,6 +178,8 @@
loopDeny: false loopDeny: false
- type: Advertise - type: Advertise
pack: BoozeOMatAds pack: BoozeOMatAds
- type: SpeakOnUIClosed
pack: BoozeOMatGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/boozeomat.rsi sprite: Structures/Machines/VendingMachines/boozeomat.rsi
@@ -235,6 +241,8 @@
ejectState: eject-unshaded ejectState: eject-unshaded
- type: Advertise - type: Advertise
pack: ChefvendAds pack: ChefvendAds
- type: SpeakOnUIClosed
pack: ChefvendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/chefvend.rsi sprite: Structures/Machines/VendingMachines/chefvend.rsi
layers: layers:
@@ -269,6 +277,8 @@
denyState: deny-unshaded denyState: deny-unshaded
- type: Advertise - type: Advertise
pack: CigaretteMachineAds pack: CigaretteMachineAds
- type: SpeakOnUIClosed
pack: CigaretteMachineGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/cigs.rsi sprite: Structures/Machines/VendingMachines/cigs.rsi
@@ -295,6 +305,8 @@
denyState: deny-unshaded denyState: deny-unshaded
- type: Advertise - type: Advertise
pack: ClothesMateAds pack: ClothesMateAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/clothing.rsi sprite: Structures/Machines/VendingMachines/clothing.rsi
@@ -325,6 +337,8 @@
denyState: deny-unshaded denyState: deny-unshaded
- type: Advertise - type: Advertise
pack: ClothesMateAds pack: ClothesMateAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/winterdrobe.rsi sprite: Structures/Machines/VendingMachines/winterdrobe.rsi
@@ -362,6 +376,8 @@
initialStockQuality: 0.33 initialStockQuality: 0.33
- type: Advertise - type: Advertise
pack: HotDrinksMachineAds pack: HotDrinksMachineAds
- type: SpeakOnUIClosed
pack: HotDrinksMachineGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/coffee.rsi sprite: Structures/Machines/VendingMachines/coffee.rsi
@@ -400,6 +416,8 @@
initialStockQuality: 0.33 initialStockQuality: 0.33
- type: Advertise - type: Advertise
pack: RobustSoftdrinksAds pack: RobustSoftdrinksAds
- type: SpeakOnUIClosed
pack: RobustSoftdrinksGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/cola.rsi sprite: Structures/Machines/VendingMachines/cola.rsi
@@ -579,6 +597,8 @@
initialStockQuality: 0.33 initialStockQuality: 0.33
- type: Advertise - type: Advertise
pack: RobustSoftdrinksAds pack: RobustSoftdrinksAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/pwrgame.rsi sprite: Structures/Machines/VendingMachines/pwrgame.rsi
@@ -614,6 +634,8 @@
initialStockQuality: 0.33 initialStockQuality: 0.33
- type: Advertise - type: Advertise
pack: RobustSoftdrinksAds pack: RobustSoftdrinksAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/gib.rsi sprite: Structures/Machines/VendingMachines/gib.rsi
@@ -644,6 +666,8 @@
ejectState: eject-unshaded ejectState: eject-unshaded
- type: Advertise - type: Advertise
pack: DinnerwareAds pack: DinnerwareAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/dinnerware.rsi sprite: Structures/Machines/VendingMachines/dinnerware.rsi
layers: layers:
@@ -674,6 +698,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: MagiVendAds pack: MagiVendAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/magivend.rsi sprite: Structures/Machines/VendingMachines/magivend.rsi
layers: layers:
@@ -705,6 +731,8 @@
initialStockQuality: 0.33 initialStockQuality: 0.33
- type: Advertise - type: Advertise
pack: DiscountDansAds pack: DiscountDansAds
- type: SpeakOnUIClosed
pack: DiscountDansGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/discount.rsi sprite: Structures/Machines/VendingMachines/discount.rsi
@@ -767,6 +795,8 @@
ejectDelay: 0.6 ejectDelay: 0.6
- type: Advertise - type: Advertise
pack: NanoMedAds pack: NanoMedAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/medical.rsi sprite: Structures/Machines/VendingMachines/medical.rsi
layers: layers:
@@ -802,6 +832,8 @@
denyState: deny-unshaded denyState: deny-unshaded
- type: Advertise - type: Advertise
pack: NutriMaxAds pack: NutriMaxAds
- type: SpeakOnUIClosed
pack: NutriMaxGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/nutri.rsi sprite: Structures/Machines/VendingMachines/nutri.rsi
layers: layers:
@@ -834,6 +866,8 @@
denyState: deny-unshaded denyState: deny-unshaded
- type: Advertise - type: Advertise
pack: SecTechAds pack: SecTechAds
- type: SpeakOnUIClosed
pack: SecTechGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/sec.rsi sprite: Structures/Machines/VendingMachines/sec.rsi
layers: layers:
@@ -870,6 +904,8 @@
denyState: deny-unshaded denyState: deny-unshaded
- type: Advertise - type: Advertise
pack: MegaSeedAds pack: MegaSeedAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/seeds.rsi sprite: Structures/Machines/VendingMachines/seeds.rsi
layers: layers:
@@ -911,6 +947,8 @@
initialStockQuality: 0.33 initialStockQuality: 0.33
- type: Advertise - type: Advertise
pack: GetmoreChocolateCorpAds pack: GetmoreChocolateCorpAds
- type: SpeakOnUIClosed
pack: GetmoreChocolateCorpGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/snack.rsi sprite: Structures/Machines/VendingMachines/snack.rsi
@@ -1055,6 +1093,8 @@
initialStockQuality: 0.33 initialStockQuality: 0.33
- type: Advertise - type: Advertise
pack: BodaAds pack: BodaAds
- type: SpeakOnUIClosed
pack: BodaGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/sovietsoda.rsi sprite: Structures/Machines/VendingMachines/sovietsoda.rsi
@@ -1087,6 +1127,8 @@
screenState: screen screenState: screen
- type: Advertise - type: Advertise
pack: AutoDrobeAds pack: AutoDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/theater.rsi sprite: Structures/Machines/VendingMachines/theater.rsi
@@ -1121,6 +1163,8 @@
denyState: deny-unshaded denyState: deny-unshaded
- type: Advertise - type: Advertise
pack: VendomatAds pack: VendomatAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/vendomat.rsi sprite: Structures/Machines/VendingMachines/vendomat.rsi
@@ -1152,6 +1196,8 @@
denyState: deny-unshaded denyState: deny-unshaded
- type: Advertise - type: Advertise
pack: VendomatAds pack: VendomatAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/robotics.rsi sprite: Structures/Machines/VendingMachines/robotics.rsi
@@ -1216,6 +1262,8 @@
ejectDelay: 1.8 ejectDelay: 1.8
- type: Advertise - type: Advertise
pack: GoodCleanFunAds pack: GoodCleanFunAds
- type: SpeakOnUIClosed
pack: GoodCleanFunGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/games.rsi sprite: Structures/Machines/VendingMachines/games.rsi
layers: layers:
@@ -1247,6 +1295,8 @@
initialStockQuality: 0.33 initialStockQuality: 0.33
- type: Advertise - type: Advertise
pack: ChangAds pack: ChangAds
- type: SpeakOnUIClosed
pack: ChangGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/changs.rsi sprite: Structures/Machines/VendingMachines/changs.rsi
@@ -1311,6 +1361,8 @@
initialStockQuality: 0.33 initialStockQuality: 0.33
- type: Advertise - type: Advertise
pack: DonutAds pack: DonutAds
- type: SpeakOnUIClosed
pack: DonutGoodbyes
- type: Speech - type: Speech
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/donut.rsi sprite: Structures/Machines/VendingMachines/donut.rsi
@@ -1394,6 +1446,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: HyDrobeAds pack: HyDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/hydrobe.rsi sprite: Structures/Machines/VendingMachines/hydrobe.rsi
layers: layers:
@@ -1420,6 +1474,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: LawDrobeAds pack: LawDrobeAds
- type: SpeakOnUIClosed
pack: LawDrobeGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/lawdrobe.rsi sprite: Structures/Machines/VendingMachines/lawdrobe.rsi
layers: layers:
@@ -1446,6 +1502,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: SecDrobeAds pack: SecDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/secdrobe.rsi sprite: Structures/Machines/VendingMachines/secdrobe.rsi
layers: layers:
@@ -1472,6 +1530,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: BarDrobeAds pack: BarDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/bardrobe.rsi sprite: Structures/Machines/VendingMachines/bardrobe.rsi
layers: layers:
@@ -1526,6 +1586,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: CargoDrobeAds pack: CargoDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/cargodrobe.rsi sprite: Structures/Machines/VendingMachines/cargodrobe.rsi
layers: layers:
@@ -1552,6 +1614,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: MediDrobeAds pack: MediDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/medidrobe.rsi sprite: Structures/Machines/VendingMachines/medidrobe.rsi
layers: layers:
@@ -1578,6 +1642,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: ChemDrobeAds pack: ChemDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/chemdrobe.rsi sprite: Structures/Machines/VendingMachines/chemdrobe.rsi
layers: layers:
@@ -1604,6 +1670,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: CuraDrobeAds pack: CuraDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/curadrobe.rsi sprite: Structures/Machines/VendingMachines/curadrobe.rsi
layers: layers:
@@ -1630,6 +1698,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: AtmosDrobeAds pack: AtmosDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/atmosdrobe.rsi sprite: Structures/Machines/VendingMachines/atmosdrobe.rsi
layers: layers:
@@ -1656,6 +1726,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: EngiDrobeAds pack: EngiDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/engidrobe.rsi sprite: Structures/Machines/VendingMachines/engidrobe.rsi
layers: layers:
@@ -1682,6 +1754,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: ChefDrobeAds pack: ChefDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/chefdrobe.rsi sprite: Structures/Machines/VendingMachines/chefdrobe.rsi
layers: layers:
@@ -1708,6 +1782,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: DetDrobeAds pack: DetDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/detdrobe.rsi sprite: Structures/Machines/VendingMachines/detdrobe.rsi
layers: layers:
@@ -1734,6 +1810,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: JaniDrobeAds pack: JaniDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/janidrobe.rsi sprite: Structures/Machines/VendingMachines/janidrobe.rsi
layers: layers:
@@ -1760,6 +1838,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: SciDrobeAds pack: SciDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/scidrobe.rsi sprite: Structures/Machines/VendingMachines/scidrobe.rsi
layers: layers:
@@ -1786,6 +1866,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: SyndieDrobeAds pack: SyndieDrobeAds
- type: SpeakOnUIClosed
pack: SyndieDrobeGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/syndiedrobe.rsi sprite: Structures/Machines/VendingMachines/syndiedrobe.rsi
layers: layers:
@@ -1812,6 +1894,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: RoboDrobeAds pack: RoboDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/robodrobe.rsi sprite: Structures/Machines/VendingMachines/robodrobe.rsi
layers: layers:
@@ -1838,6 +1922,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: GeneDrobeAds pack: GeneDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/genedrobe.rsi sprite: Structures/Machines/VendingMachines/genedrobe.rsi
layers: layers:
@@ -1864,6 +1950,8 @@
normalState: normal-unshaded normalState: normal-unshaded
- type: Advertise - type: Advertise
pack: ViroDrobeAds pack: ViroDrobeAds
- type: SpeakOnUIClosed
pack: GenericVendGoodbyes
- type: Sprite - type: Sprite
sprite: Structures/Machines/VendingMachines/virodrobe.rsi sprite: Structures/Machines/VendingMachines/virodrobe.rsi
layers: layers:
@@ -1938,6 +2026,8 @@
color: "#3c5eb5" color: "#3c5eb5"
- type: Advertise - type: Advertise
pack: HappyHonkAds pack: HappyHonkAds
- type: SpeakOnUIClosed
pack: HappyHonkGoodbyes
- type: AccessReader - type: AccessReader
access: [["Kitchen"], ["Theatre"]] access: [["Kitchen"], ["Theatre"]]