diff --git a/Content.Server/Construction/ConstructionSystem.Computer.cs b/Content.Server/Construction/ConstructionSystem.Computer.cs index a054989a081..9b604304d8a 100644 --- a/Content.Server/Construction/ConstructionSystem.Computer.cs +++ b/Content.Server/Construction/ConstructionSystem.Computer.cs @@ -1,8 +1,9 @@ using Content.Server._NF.BindToStation; // Frontier using Content.Server.Construction.Components; using Content.Server.Power.Components; -using Content.Server.Station.Systems; // Frontier -using Content.Shared._NF.BindToStation; // Frontier +using Content.Server.Station.Systems; +using Content.Shared._Coyote.RedeemableStuff; // Frontier +using Content.Shared._NF.BindToStation; // Frontier using Content.Shared.Computer; using Content.Shared.Power; using Robust.Shared.Containers; @@ -85,6 +86,10 @@ private void CreateComputerBoard(Entity ent) } } // End Frontier + if (HasComp(ent.Owner)) + { + AddComp(board); + } if (!_container.Insert(board, container)) Log.Warning($"Couldn't insert board {board} to computer {ent}!"); diff --git a/Content.Server/Construction/ConstructionSystem.Machine.cs b/Content.Server/Construction/ConstructionSystem.Machine.cs index 2fd983547d7..5eaad5deb51 100644 --- a/Content.Server/Construction/ConstructionSystem.Machine.cs +++ b/Content.Server/Construction/ConstructionSystem.Machine.cs @@ -1,8 +1,9 @@ using System.Linq; // Frontier using Content.Server._NF.BindToStation; // Frontier using Content.Server.Construction.Components; -using Content.Server.Station.Systems; // Frontier -using Content.Shared._NF.BindToStation; // Frontier +using Content.Server.Station.Systems; +using Content.Shared._Coyote.RedeemableStuff; // Frontier +using Content.Shared._NF.BindToStation; // Frontier using Content.Shared.Construction.Components; using Content.Shared.Construction.Prototypes; using Robust.Shared.Containers; @@ -32,6 +33,8 @@ private void OnMachineInit(EntityUid uid, MachineComponent component, ComponentI { if (TryComp(board, out var binding)) _bindToStation.BindToStation(uid, binding.BoundStation, binding.Enabled); + if (HasComp(board) && !HasComp(uid)) + AddComp(uid); } // End Frontier } @@ -66,7 +69,7 @@ private void CreateBoardAndStockParts(EntityUid uid, MachineComponent component) throw new Exception($"Entity with prototype {component.Board} doesn't have a {nameof(MachineBoardComponent)}!"); } - // Frontier: Only bind the board if the machine itself has the BindToStationComponent and the board doesn't already have BindToStationComponent + // Frontier: Only bind the board if the machine itself has the BindToStationComponent and the board doesn't already have BindToStationComponent if (HasComp(uid) && board != null) { var machineStation = _station.GetOwningStation(uid); @@ -77,6 +80,11 @@ private void CreateBoardAndStockParts(EntityUid uid, MachineComponent component) } // End Frontier + if (board is not null && HasComp(uid)) + { + AddComp(board.Value); + } + foreach (var (stackType, amount) in machineBoard.StackRequirements) { var stack = _stackSystem.Spawn(amount, stackType, xform.Coordinates); diff --git a/Content.Server/Construction/FlatpackSystem.cs b/Content.Server/Construction/FlatpackSystem.cs index eba6e696dbd..8777eaeab0b 100644 --- a/Content.Server/Construction/FlatpackSystem.cs +++ b/Content.Server/Construction/FlatpackSystem.cs @@ -8,7 +8,8 @@ using Robust.Shared.Prototypes; using Robust.Shared.Timing; using Content.Shared._NF.BindToStation; // Frontier: station binding -using Content.Server._NF.BindToStation; // Frontier: station binding +using Content.Server._NF.BindToStation; +using Content.Shared._Coyote.RedeemableStuff; // Frontier: station binding namespace Content.Server.Construction; diff --git a/Content.Server/Lathe/LatheSystem.cs b/Content.Server/Lathe/LatheSystem.cs index 3bd3818065c..267d681170f 100644 --- a/Content.Server/Lathe/LatheSystem.cs +++ b/Content.Server/Lathe/LatheSystem.cs @@ -35,7 +35,8 @@ using Robust.Shared.Prototypes; using Robust.Shared.Timing; using Content.Shared.Cargo.Components; // Frontier -using Content.Server._NF.Contraband.Systems; // Frontier +using Content.Server._NF.Contraband.Systems; +using Content.Shared._Coyote.RedeemableStuff; // Frontier using Robust.Shared.Containers; using Content.Shared._NF.Lathe; // Frontier @@ -532,6 +533,8 @@ private void ModifyPrintedEntityPrice(EntityUid uid, LatheComponent component, E || component.ProductValueModifier < 0f) return; + EnsureComp(target); // Make unredeemable + if (TryComp(target, out var stackPrice)) { if (stackPrice.Price > 0) diff --git a/Content.Server/VendingMachines/VendingMachineSystem.cs b/Content.Server/VendingMachines/VendingMachineSystem.cs index 1de6364e508..da50576731a 100644 --- a/Content.Server/VendingMachines/VendingMachineSystem.cs +++ b/Content.Server/VendingMachines/VendingMachineSystem.cs @@ -30,9 +30,10 @@ using Content.Shared._NF.Bank.BUI; // Frontier using Content.Server._NF.Contraband.Systems; // Frontier using Content.Shared.Stacks; // Frontier -using Content.Server.Stack; // Frontier -using Robust.Shared.Containers; // Frontier -using Content.Shared._NF.Bank.Components; // Frontier +using Content.Server.Stack; +using Content.Shared._Coyote.RedeemableStuff; // Frontier +using Robust.Shared.Containers; // Frontier +using Content.Shared._NF.Bank.Components; // Frontier namespace Content.Server.VendingMachines { @@ -285,6 +286,8 @@ protected override void EjectItem(EntityUid uid, VendingMachineComponent? vendCo var ent = Spawn(vendComponent.NextItemToEject, spawnCoordinates); + AddComp(ent); // Frontier + _contraband.ClearContrabandValue(ent); // Frontier if (vendComponent.ThrowNextItem) diff --git a/Content.Server/_NF/Contraband/Systems/ContrabandTurnInSystem.cs b/Content.Server/_NF/Contraband/Systems/ContrabandTurnInSystem.cs index e319f71adf2..650e632bae7 100644 --- a/Content.Server/_NF/Contraband/Systems/ContrabandTurnInSystem.cs +++ b/Content.Server/_NF/Contraband/Systems/ContrabandTurnInSystem.cs @@ -16,6 +16,7 @@ using Robust.Shared.Prototypes; using Content.Server._NF.Cargo.Systems; using Content.Server.Hands.Systems; +using Content.Shared._Coyote.RedeemableStuff; namespace Content.Server._NF.Contraband.Systems; @@ -149,15 +150,24 @@ private void GetPalletGoods(EntityUid gridUid, ContrabandPalletConsoleComponent if (_blacklistQuery.HasComponent(ent)) continue; - if (TryComp(ent, out var comp)) + // if (TryComp(ent, out var comp)) + // { + // if (!comp.TurnInValues.ContainsKey(console.RewardType)) + // continue; + // + // toSell.Add(ent); + // var value = comp.TurnInValues[console.RewardType]; + // if (value <= 0) + // continue; + // amount += value; + // } + GetRedeemValueEvent ev = new (); + RaiseLocalEvent(ent, ref ev); + if (ev.Values.TryGetValue(console.RewardType, out int value)) { - if (!comp.TurnInValues.ContainsKey(console.RewardType)) - continue; - - toSell.Add(ent); - var value = comp.TurnInValues[console.RewardType]; if (value <= 0) continue; + toSell.Add(ent); amount += value; } } diff --git a/Content.Server/_NF/Security/ContrabandPriceGunSystem.cs b/Content.Server/_NF/Security/ContrabandPriceGunSystem.cs index cff45046ed6..84e01a1c44d 100644 --- a/Content.Server/_NF/Security/ContrabandPriceGunSystem.cs +++ b/Content.Server/_NF/Security/ContrabandPriceGunSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Popups; using Content.Shared.Contraband; using Content.Server._NF.Security.Components; +using Content.Shared._Coyote.RedeemableStuff; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Timing; @@ -33,10 +34,14 @@ private void OnUtilityVerb(Entity entity, ref GetVe if (!TryComp(entity, out UseDelayComponent? useDelay) || _useDelay.IsDelayed((entity, useDelay))) return; - if (!TryComp(args.Target, out var contraband) || !contraband.TurnInValues.ContainsKey(entity.Comp.Currency)) + // if (!TryComp(args.Target, out var contraband) || !contraband.TurnInValues.ContainsKey(entity.Comp.Currency)) + // return; + GetRedeemValueEvent ev = new (); + RaiseLocalEvent(args.Target, ref ev); + if (!ev.Values.ContainsKey(entity.Comp.Currency)) return; - var price = contraband.TurnInValues[entity.Comp.Currency]; + var price = ev.Values[entity.Comp.Currency]; var user = args.User; var target = args.Target; @@ -62,10 +67,24 @@ private void OnAfterInteract(Entity entity, ref Aft if (!TryComp(entity, out UseDelayComponent? useDelay) || _useDelay.IsDelayed((entity, useDelay))) return; - if (TryComp(args.Target, out var contraband) && contraband.TurnInValues.ContainsKey(entity.Comp.Currency)) - _popupSystem.PopupEntity(Loc.GetString($"{entity.Comp.LocStringPrefix}contraband-price-gun-pricing-result", ("object", Identity.Entity(args.Target.Value, EntityManager)), ("price", contraband.TurnInValues[entity.Comp.Currency])), args.User, args.User); + GetRedeemValueEvent ev = new (); + RaiseLocalEvent(args.Target.Value, ref ev); + + if (ev.Values.TryGetValue(entity.Comp.Currency, out int price)) + _popupSystem.PopupEntity( + Loc.GetString( + $"{entity.Comp.LocStringPrefix}contraband-price-gun-pricing-result", + ("object", Identity.Entity(args.Target.Value, EntityManager)), + ("price", price)), + args.User, + args.User); else - _popupSystem.PopupEntity(Loc.GetString($"{entity.Comp.LocStringPrefix}contraband-price-gun-pricing-result-none", ("object", Identity.Entity(args.Target.Value, EntityManager))), args.User, args.User); + _popupSystem.PopupEntity( + Loc.GetString( + $"{entity.Comp.LocStringPrefix}contraband-price-gun-pricing-result-none", + ("object", Identity.Entity(args.Target.Value, EntityManager))), + args.User, + args.User); _audio.PlayPvs(entity.Comp.AppraisalSound, entity.Owner); _useDelay.TryResetDelay((entity, useDelay)); diff --git a/Content.Shared/Construction/SharedFlatpackSystem.cs b/Content.Shared/Construction/SharedFlatpackSystem.cs index 963354bf890..23cfd4269bf 100644 --- a/Content.Shared/Construction/SharedFlatpackSystem.cs +++ b/Content.Shared/Construction/SharedFlatpackSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared._Coyote.RedeemableStuff; using Content.Shared.Construction.Components; using Content.Shared.Administration.Logs; using Content.Shared.Containers.ItemSlots; @@ -98,6 +99,10 @@ private void OnFlatpackInteractUsing(Entity ent, ref Interact spawnXform.LocalRotation = xform.LocalRotation.GetCardinalDir().ToAngle(); // Frontier: rotatable flatpacks if (TryComp(uid, out var bound)) // Frontier: station binding BindToStation(spawn, bound); // Frontier: station binding + if (HasComp(uid)) + { + AddComp(spawn); + } _adminLogger.Add(LogType.Construction, LogImpact.Low, @@ -127,6 +132,11 @@ protected void SetupFlatpack(Entity ent, EntProtoId proto, E _metaData.SetEntityName(ent, Loc.GetString("flatpack-entity-name", ("name", machinePrototype.Name)), meta); _metaData.SetEntityDescription(ent, Loc.GetString("flatpack-entity-description", ("name", machinePrototype.Name)), meta); + if (HasComp(board)) + { + AddComp(ent.Owner); + } + if (TryComp(board, out var bound)) // Frontier: station binding BindToStation(ent, bound); // Frontier: station binding diff --git a/Content.Shared/Stacks/SharedStackSystem.cs b/Content.Shared/Stacks/SharedStackSystem.cs index 04744f1c429..5625df8d7f9 100644 --- a/Content.Shared/Stacks/SharedStackSystem.cs +++ b/Content.Shared/Stacks/SharedStackSystem.cs @@ -1,4 +1,5 @@ using System.Numerics; +using Content.Shared._Coyote.RedeemableStuff; using Content.Shared.Examine; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; @@ -122,6 +123,11 @@ private bool TryMergeStacks( if (string.IsNullOrEmpty(recipientStack.StackTypeId) || !recipientStack.StackTypeId.Equals(donorStack.StackTypeId)) return false; + bool mecomp = HasComp(donor); + bool youcomp = HasComp(recipient); + if (mecomp != youcomp) + return false; + transferred = Math.Min(donorStack.Count, GetAvailableSpace(recipientStack)); SetCount(donor, donorStack.Count - transferred, donorStack); SetCount(recipient, recipientStack.Count + transferred, recipientStack); diff --git a/Content.Shared/_Coyote/RedeemableStuff/RedeemableComponent.cs b/Content.Shared/_Coyote/RedeemableStuff/RedeemableComponent.cs new file mode 100644 index 00000000000..e636dd3d320 --- /dev/null +++ b/Content.Shared/_Coyote/RedeemableStuff/RedeemableComponent.cs @@ -0,0 +1,28 @@ +using Content.Shared.Store; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._Coyote.RedeemableStuff; + +/// +/// This is for making it so an entity can be redeemed for something. +/// Like nfsd stuff being redeemed on the Den for like, den bullion +/// Or guns! Trade them in for whatever! +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class RedeemableComponent : Component +{ + /// + /// How much of which kinds of currency this item can be redeemed for. + /// + [DataField] + [AutoNetworkedField] + public Dictionary, int> TurnInValues = new(); + + /// + /// Easy presets for common turn-in values. + /// + [DataField] + [AutoNetworkedField] + public ProtoId? Preset; +} diff --git a/Content.Shared/_Coyote/RedeemableStuff/RedeemablePresetPrototype.cs b/Content.Shared/_Coyote/RedeemableStuff/RedeemablePresetPrototype.cs new file mode 100644 index 00000000000..03f75d42329 --- /dev/null +++ b/Content.Shared/_Coyote/RedeemableStuff/RedeemablePresetPrototype.cs @@ -0,0 +1,26 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared._Coyote.RedeemableStuff; + +/// +/// This is a prototype for easy presets for redeemable values. +/// +[Prototype("redeemablePreset")] +public sealed partial class RedeemablePresetPrototype : IPrototype +{ + /// + [IdDataField] + public string ID { get; } = default!; + + /// + /// Fucs you get for turning this in. + /// + [DataField] + public int FucValue = 0; + + /// + /// Den Bullion you get for turning this in. + /// + [DataField] + public int DenBullionValue = 0; +} diff --git a/Content.Shared/_Coyote/RedeemableStuff/RedeemableSystem.cs b/Content.Shared/_Coyote/RedeemableStuff/RedeemableSystem.cs new file mode 100644 index 00000000000..c6dfa806db0 --- /dev/null +++ b/Content.Shared/_Coyote/RedeemableStuff/RedeemableSystem.cs @@ -0,0 +1,54 @@ +using System.Linq; +using Content.Shared.Store; +using Robust.Shared.Prototypes; + +namespace Content.Shared._Coyote.RedeemableStuff; + +/// +/// This handles... +/// +public sealed class RedeemableSystem : EntitySystem +{ + [Dependency] + private readonly IPrototypeManager _prototypeManager = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnRedeemableInit); + SubscribeLocalEvent(OnGetRedeemValue); + } + + private void OnRedeemableInit(EntityUid uid, RedeemableComponent c, ComponentInit args) + { + if (c.Preset == null) + return; + if (!_prototypeManager.TryIndex(c.Preset, out RedeemablePresetPrototype? preset)) + return; + c.TurnInValues = new Dictionary, int> + { + { "FrontierUplinkCoin", preset.FucValue }, + { "Doubloon", preset.DenBullionValue } + }; + } + + private void OnGetRedeemValue(EntityUid uid, RedeemableComponent c, GetRedeemValueEvent args) + { + if (c.TurnInValues.Count == 0) + return; + if (TryComp(uid, out UnRedeemableComponent? unRedeemable)) + return; + foreach (var (currency, amount) in c.TurnInValues) + { + if (!args.Values.TryAdd(currency, amount)) + args.Values[currency] += amount; + } + } + +} + +[ByRefEvent] +public sealed class GetRedeemValueEvent : EntityEventArgs +{ + public Dictionary, int> Values = new(); +} diff --git a/Content.Shared/_Coyote/RedeemableStuff/UnRedeemableComponent.cs b/Content.Shared/_Coyote/RedeemableStuff/UnRedeemableComponent.cs new file mode 100644 index 00000000000..4f658c3fcd1 --- /dev/null +++ b/Content.Shared/_Coyote/RedeemableStuff/UnRedeemableComponent.cs @@ -0,0 +1,26 @@ +using Content.Shared.Store; +using Robust.Shared.Prototypes; + +namespace Content.Shared._Coyote.RedeemableStuff; + +/// +/// This is used to explicitly mark an entity as unredeemable. +/// Can +/// +[RegisterComponent] +public sealed partial class UnRedeemableComponent : Component +{ + /// + /// Does this unredeemable component block all redeeming, or only certain types of currency? + /// If null or empty, blocks all redeeming. + /// + [DataField] + public HashSet> BlockedCurrencies = new(); + + /// + /// If true, it will attempt to spread from itself to anything derived from it + /// Like if you craft something from an unredeemable item, the result will also be unredeemable. + /// + [DataField("sticky")] + public bool Sticky = false; +} diff --git a/Content.Shared/_NF/Contraband/SharedContrabandTurnInSystem.cs b/Content.Shared/_NF/Contraband/SharedContrabandTurnInSystem.cs index 50a7c049815..2ca0b1ebb14 100644 --- a/Content.Shared/_NF/Contraband/SharedContrabandTurnInSystem.cs +++ b/Content.Shared/_NF/Contraband/SharedContrabandTurnInSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared._Coyote.RedeemableStuff; using Content.Shared.Contraband; using Robust.Shared.Containers; using Robust.Shared.Serialization; @@ -15,7 +16,7 @@ public abstract class SharedContrabandTurnInSystem : EntitySystem public void ClearContrabandValue(EntityUid item) { // Clear contraband value for printed items - if (TryComp(item, out var contraband)) + if (TryComp(item, out var contraband)) { foreach (var valueKey in contraband.TurnInValues.Keys) { diff --git a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml index 897ca23bb1f..4ff3b48c370 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml @@ -425,6 +425,18 @@ tags: - Kangaroo - WhitelistChameleon + - type: Redeemable + preset: Example + +- type: entity + parent: ClothingHandsGlovesNorthStar + id: ClothingHandsGlovesNorthStarDebug + name: gloves of the north star (debug) + suffix: Debug + description: These gloves are worth a different + components: + - type: Redeemable + preset: Example2 - type: entity parent: [ClothingHandsBase, BaseC4ContrabandUnredeemable] # Frontier: BaseSecurityContraband BaseC4ContrabandUnredeemable + - BaseC4ContrabandUnredeemable # COYOTE: BaseC2ContrabandUnredeemable -> BaseC4ContrabandUnredeemable components: + - type: Redeemable + preset: NFSDGear - type: Sprite state: secblade - type: StaminaDamageOnCollide @@ -150,6 +152,8 @@ - BaseC1Contraband description: Let it reap. components: + - type: Redeemable + preset: SyndieLvl1 - type: Sprite state: contraband - type: DamageOtherOnHit diff --git a/Resources/Prototypes/_NF/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/_NF/Entities/Objects/Fun/toys.yml index 2cf5be99a77..652b6675023 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Fun/toys.yml @@ -985,12 +985,14 @@ clumsyProof: true - type: entity - parent: [BaseC1Contraband, NFBaseWeaponFrameRevolverFoamForce, NFBaseWeaponRevolverChamber45Cap] + parent: [BaseC4Contraband, NFBaseWeaponFrameRevolverFoamForce, NFBaseWeaponRevolverChamber45Cap] id: NFRevolverCapGunFake suffix: Fake, Frontier name: cap gun description: Looks almost like the real thing! Ages 8 and up. components: + - type: Redeemable + preset: SyndieLvl4 - type: Sprite sprite: Objects/Fun/toys.rsi layers: diff --git a/Resources/Prototypes/_NF/Entities/Objects/Misc/nfsd_medal_case.yml b/Resources/Prototypes/_NF/Entities/Objects/Misc/nfsd_medal_case.yml index 23adac80d4b..96787250033 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Misc/nfsd_medal_case.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Misc/nfsd_medal_case.yml @@ -6,6 +6,8 @@ name: NFSD medal case description: This polished oak case hides medals to be given for distinguished service. components: + - type: Redeemable + preset: NFSDGear - type: Sprite sprite: _NF/Objects/Storage/nfsdmedalcase.rsi - type: Item diff --git a/Resources/Prototypes/_NF/Entities/Objects/Shields/shields.yml b/Resources/Prototypes/_NF/Entities/Objects/Shields/shields.yml index b4bbdd3593d..178563af562 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Shields/shields.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Shields/shields.yml @@ -3,6 +3,8 @@ parent: [BaseC4ContrabandUnredeemable, EnergyShield] # COYOTE: BaseC2ContrabandUnredeemable -> BaseC4ContrabandUnredeemable id: EnergyShieldNfsd components: + - type: Redeemable + preset: NFSDGearValuable - type: Sprite sprite: _NF/Objects/Weapons/Melee/e_shield.rsi - type: Item @@ -16,6 +18,8 @@ id: NFMetalShield description: A sturdy metal shield. It has a window so you can wink at whatever is hitting you. components: + - type: Redeemable + preset: ContraLvl1 - type: Sprite sprite: _NF/Objects/Weapons/Melee/shields.rsi state: metal-icon @@ -28,6 +32,8 @@ parent: [ BaseC1Contraband, RiotLaserShield ] name: reflective shield components: + - type: Redeemable + preset: ContraLvl1 - type: Sprite sprite: _NF/Objects/Weapons/Melee/shields.rsi state: reflective-icon @@ -54,6 +60,8 @@ parent: [ BaseC1Contraband, RiotBulletShield ] name: bullet resistant shield components: + - type: Redeemable + preset: ContraLvl1 - type: Sprite sprite: _NF/Objects/Weapons/Melee/shields.rsi state: bullet-icon diff --git a/Resources/Prototypes/_NF/Entities/Objects/Tools/access_configurator.yml b/Resources/Prototypes/_NF/Entities/Objects/Tools/access_configurator.yml index d53e4232760..cafb067a113 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Tools/access_configurator.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Tools/access_configurator.yml @@ -5,6 +5,8 @@ suffix: Antag description: A modified access configurator sold on the black market. components: + - type: Redeemable + preset: FreelancerGearValuable - type: Sprite sprite: _NF/Objects/Tools/antag_access_configurator.rsi - type: Clothing diff --git a/Resources/Prototypes/_NF/Entities/Objects/Tools/blueprints/blueprints_expedition_loot.yml b/Resources/Prototypes/_NF/Entities/Objects/Tools/blueprints/blueprints_expedition_loot.yml index 8a97d72dc8b..b7314055284 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Tools/blueprints/blueprints_expedition_loot.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Tools/blueprints/blueprints_expedition_loot.yml @@ -8,6 +8,8 @@ name: laser cannon blueprint description: A blueprint with a schematic of a laser cannon. It can be inserted into a mercenary or NFSD techfab. components: + - type: Redeemable + preset: ContraLvl2 - type: Blueprint providedRecipes: - NFWeaponEnergyRifleSniperCannon @@ -20,6 +22,8 @@ name: x-ray cannon blueprint description: A blueprint with a schematic of an x-ray cannon. It can be inserted into a mercenary or NFSD techfab. components: + - type: Redeemable + preset: ContraLvl4 - type: Blueprint providedRecipes: - NFWeaponEnergyRifleSniperXrayCannon @@ -32,6 +36,8 @@ name: temperature gun blueprint description: A blueprint with a schematic of a temperature gun. It can be inserted into a mercenary or NFSD techfab. components: + - type: Redeemable + preset: ContraLvl2 - type: Blueprint providedRecipes: - NFWeaponEnergyRifleTemperature @@ -46,6 +52,8 @@ name: holopickaxe blueprint description: A blueprint with a schematic of a holopickaxe. It can be inserted into a salvage techfab. components: + - type: Redeemable + preset: ContraLvl1 - type: Blueprint providedRecipes: - NFEnergyPickaxe diff --git a/Resources/Prototypes/_NF/Entities/Objects/Tools/emag.yml b/Resources/Prototypes/_NF/Entities/Objects/Tools/emag.yml index 373638f50b8..5d3cb3a393a 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Tools/emag.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Tools/emag.yml @@ -21,6 +21,8 @@ suffix: Unlimited description: The all-in-one unhacking solution. The last bastion of order. The iconic DEMAG. components: + - type: Redeemable + preset: NFSDGearExtremeValuable - type: Emag emagType: [Interaction, Access, StationBound] demag: true @@ -45,6 +47,8 @@ suffix: Unlimited description: A portable package for machine DRM removal. Freebooter approved and tested. components: + - type: Redeemable + preset: FreelancerGearValuable - type: Emag emagType: [StationBound] - type: Sprite diff --git a/Resources/Prototypes/_NF/Entities/Objects/Vehicles/vehicles.yml b/Resources/Prototypes/_NF/Entities/Objects/Vehicles/vehicles.yml index 0ed41bb0021..cc1ab4c0e08 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Vehicles/vehicles.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Vehicles/vehicles.yml @@ -558,6 +558,8 @@ name: NFSD hoverbike description: An NFSD issued turbine with bike handles. Very safe. components: + - type: Redeemable + preset: NFSDGearValuable - type: Vehicle sirenSound: collection: PoliceSiren @@ -652,6 +654,8 @@ name: pirate hoverbike description: A sovereign space shuttle, fitting only for the most sovereigh of citizens. Freedom for Freelancers! components: + - type: Redeemable + preset: FreelancerGearValuable - type: Storage grid: - 0,0,5,3 @@ -732,6 +736,8 @@ name: syndicate hoverbike description: This thing screams style. And war crimes. components: + - type: Redeemable + preset: SyndieLvl1 - type: Storage grid: - 0,0,8,4 diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/base_battery_pistol.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/base_battery_pistol.yml index 22ff900c3be..3327e160910 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/base_battery_pistol.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/base_battery_pistol.yml @@ -1,7 +1,7 @@ #region frame - type: entity id: NFBaseWeaponFrameEnergyPistol - parent: [ NFBaseWeaponEncumbrancePistol, BaseWeaponBatterySmall, BaseC1ContrabandUnredeemable ] + parent: [ NFBaseWeaponEncumbrancePistol, BaseWeaponBatterySmall ] #Coyote suffix: Frontier abstract: true components: diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/battery_pistols.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/battery_pistols.yml index 544f9ed6ec5..de2756a089b 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/battery_pistols.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/battery_pistols.yml @@ -64,6 +64,14 @@ description: |- This is an expensive, modern recreation of an antique laser gun. This gun has several unique firemodes. On the handle is a label that says 'for authorized use only.' components: + - type: Redeemable + preset: NFSDGearExtremeValuable + - type: Battery # 40 shots + maxCharge: 2400 + startingCharge: 2400 + - type: BatterySelfRecharger # Recharges 1 shot per 2 seconds + autoRecharge: true + autoRechargeRate: 45 - type: Sprite sprite: _DV/Objects/Weapons/Guns/Battery/multiphase_energygun.rsi - type: Clothing @@ -130,6 +138,8 @@ description: |- A state of the art energy pistol favoured as a sidearm by the NT operatives. On the handle is a label that says 'for authorized use only.' components: + - type: Redeemable + preset: NFSDGearExtremeValuable - type: Sprite sprite: Objects/Weapons/Guns/Battery/pulse_pistol.rsi - type: Clothing @@ -195,6 +205,8 @@ - WeaponPistolCHIMPUpgraded - BaseC4Contraband components: + - type: Redeemable + preset: SyndieLvl4 - type: ProjectileBatteryAmmoProvider proto: NFAnomalousParticleDeltaStrong fireCost: 100 diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/battery_rifles_assault.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/battery_rifles_assault.yml index ff7412f9676..54c0239ece9 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/battery_rifles_assault.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Battery/battery_rifles_assault.yml @@ -7,6 +7,8 @@ description: |- A high tech energy carbine favoured by the NT-ERT operatives. On the handle is a label that says 'for authorized use only.' components: + - type: Redeemable + preset: NFSDGearExtremeValuable - type: Sprite sprite: Objects/Weapons/Guns/Battery/pulse_carbine.rsi - type: Clothing @@ -24,6 +26,8 @@ description: |- A turbo laser ripped from the guardian unit. Appears to be a rather old model. Doesn't seem to be working properly. Supposedly highly illegal. components: + - type: Redeemable + preset: ContraLvl2 - type: Gun soundGunshot: path: /Audio/_DV/Weapons/Guns/Gunshots/laser.ogg diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/LMGs/base_lmg.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/LMGs/base_lmg.yml index 1add04d921b..2973a54bfad 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/LMGs/base_lmg.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/LMGs/base_lmg.yml @@ -31,7 +31,7 @@ #region manufacturer - type: entity id: NFBaseWeaponFrameLightMachineGunGorlex - parent: [ BaseC4Contraband, NFBaseWeaponFrameLightMachineGun ] + parent: [ NFBaseWeaponFrameLightMachineGun ] #coyote abstract: true components: - type: Gun diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Launchers/base_launcher.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Launchers/base_launcher.yml index 43bad01cc8b..674dc14df99 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Launchers/base_launcher.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Launchers/base_launcher.yml @@ -46,7 +46,7 @@ - type: entity id: NFBaseWeaponFrameLauncherGorlex - parent: [ BaseC4Contraband, NFBaseWeaponFrameLauncher ] + parent: [ NFBaseWeaponFrameLauncher ] #coyote abstract: true components: - type: Gun @@ -59,7 +59,7 @@ - type: entity id: NFBaseWeaponFrameLauncherSteelbolt - parent: [ BaseC3Contraband, NFBaseWeaponFrameLauncher ] + parent: [ NFBaseWeaponFrameLauncher ] #coyote abstract: true components: - type: Gun diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Pistols/machine_pistols.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Pistols/machine_pistols.yml index ea91cd9ef70..1a4fb39cf93 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Pistols/machine_pistols.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Pistols/machine_pistols.yml @@ -32,6 +32,8 @@ description: |- A small, easily concealable machine pistol. An illegal firearm often used by Syndicate agents. components: + - type: Redeemable + preset: SyndieLvl1 - type: Sprite sprite: Objects/Weapons/Guns/Pistols/viper.rsi - type: Clothing diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Revolvers/base_revolver.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Revolvers/base_revolver.yml index 39be464f0a1..4cd90a8b69d 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Revolvers/base_revolver.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Revolvers/base_revolver.yml @@ -43,7 +43,7 @@ - type: entity id: NFBaseWeaponFrameRevolverGorlex - parent: [ BaseC4Contraband, NFBaseWeaponFrameRevolver ] + parent: [ NFBaseWeaponFrameRevolver ] #coyote abstract: true components: - type: Gun @@ -57,7 +57,7 @@ - type: entity id: NFBaseWeaponFrameRevolverSteelbolt - parent: [ BaseC3Contraband, NFBaseWeaponFrameRevolver ] + parent: [ NFBaseWeaponFrameRevolver ] #coyote abstract: true components: - type: Gun diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/base_rifle.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/base_rifle.yml index cbaa09d199c..82932e97fed 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/base_rifle.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/base_rifle.yml @@ -46,7 +46,7 @@ - type: entity id: NFBaseWeaponFrameRifleSteelbolt - parent: [ BaseC3Contraband, NFBaseWeaponFrameRifle ] + parent: NFBaseWeaponFrameRifle #coyote abstract: true components: - type: Gun diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/base_rifle_assault.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/base_rifle_assault.yml index b4e9ca1f8a6..0d64a375676 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/base_rifle_assault.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/base_rifle_assault.yml @@ -46,7 +46,7 @@ - type: entity id: NFBaseWeaponFrameRifleAssaultCybersun - parent: [ BaseC4Contraband, NFBaseWeaponFrameRifleAssault ] + parent: [ NFBaseWeaponFrameRifleAssault ] # coyote abstract: true components: - type: Gun diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/rifles.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/rifles.yml index 2b654e08a40..868724b3d3c 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/rifles.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/rifles.yml @@ -1,10 +1,12 @@ #region WizDen - type: entity id: NFWeaponRifleBarlowsBolt - parent: [ BaseC4Contraband, NFBaseWeaponRifleChamber30, NFBaseWeaponFrameRifleSteelbolt, BaseGunMelee, BaseC1Contraband ] + parent: [ BaseC1Contraband, NFBaseWeaponRifleChamber30, NFBaseWeaponFrameRifleSteelbolt, BaseGunMelee ] name: Barlows bolt-action rifle # Renamed: real brand name description: A weapon for hunting, or endless trench warfare. Equipped with bayonet. components: + - type: Redeemable + preset: SyndieLvl1 - type: Sprite sprite: Objects/Weapons/Guns/Snipers/bolt_gun_wood.rsi - type: Clothing @@ -14,10 +16,12 @@ - type: entity id: NFWeaponRifleMusket - parent: [ NFBaseWeaponRifleChamber60, NFBaseWeaponFrameRifleSteelbolt, BaseC1Contraband ] + parent: [ BaseC1Contraband, NFBaseWeaponRifleChamber60, NFBaseWeaponFrameRifleSteelbolt, ] name: musket description: This should've been in a museum long before you were born. components: + - type: Redeemable + preset: ContraLvl1 - type: Sprite sprite: Objects/Weapons/Guns/Snipers/musket.rsi - type: Clothing diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/SMGs/smgs.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/SMGs/smgs.yml index 8a1177f16a9..1f8f8d600e3 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/SMGs/smgs.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/SMGs/smgs.yml @@ -1,11 +1,13 @@ #region WizDen - type: entity id: NFWeaponSubMachineGunAtreides - parent: [ NFBaseWeaponSubMachineGunChamber35, NFBaseWeaponFrameSubMachineGunGorlex, BaseC2Contraband ] + parent: [ BaseC2Contraband, NFBaseWeaponSubMachineGunChamber35, NFBaseWeaponFrameSubMachineGunGorlex ] name: Atreides description: |- Pla-ket-ket-ket-ket! An illegal firearm often used by Syndicate agents. components: + - type: Redeemable + preset: SyndieLvl2 - type: Gun soundGunshot: path: /Audio/Weapons/Guns/Gunshots/atreides.ogg @@ -16,11 +18,13 @@ - type: entity # Coyote: Converted to .40 caliber id: NFWeaponSubMachineGunC20r - parent: [ CSBaseWeaponHeavySubMachineGunChamber40, CSBaseWeaponFrameHeavySubMachineGunCybersun, BaseC2Contraband ] + parent: [ BaseC2Contraband, CSBaseWeaponHeavySubMachineGunChamber40, CSBaseWeaponFrameHeavySubMachineGunCybersun ] name: C-20r description: |- An illegal firearm that is often used by the infamous nuclear operatives. components: + - type: Redeemable + preset: SyndieLvl2 - type: Gun soundGunshot: path: /Audio/Weapons/Guns/Gunshots/c-20r.ogg @@ -37,10 +41,12 @@ - type: entity # Coyote: Converted to .40 caliber id: NFWeaponSubMachineGunDrozd - parent: [ CSBaseWeaponHeavySubMachineGunChamber40, CSBaseWeaponFrameHeavySubMachineGunNanotrasen, BaseC2Contraband ] + parent: [ BaseC2Contraband, CSBaseWeaponHeavySubMachineGunChamber40, CSBaseWeaponFrameHeavySubMachineGunNanotrasen ] name: Drozd description: A fully automatic SMG. components: &drozdComponents + - type: Redeemable + preset: ContraLvl2 - type: Gun soundGunshot: path: /Audio/Weapons/Guns/Gunshots/atreides.ogg @@ -89,7 +95,7 @@ #region DeltaV - type: entity # Coyote: Converted to .40 caliber id: NFWeaponSubMachineGunTypewriter - parent: [ CSBaseWeaponHeavySubMachineGunChamber40, CSBaseWeaponFrameHeavySubMachineGunFrontierGunsmith, BaseC2Contraband ] + parent: [ BaseC2Contraband, CSBaseWeaponHeavySubMachineGunChamber40, CSBaseWeaponFrameHeavySubMachineGunFrontierGunsmith ] name: Typewriter description: |- A modern take on the classic design used by mobsters throughout space and time. diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/expedition_guns.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/expedition_guns.yml index 67fd15a2bc8..d0531613807 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/expedition_guns.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/expedition_guns.yml @@ -100,72 +100,99 @@ - NFWeaponPistolMk58 categories: [ HideSpawnMenu ] id: NFWeaponPistolMk58Expedition + components: + - type: Redeemable + preset: ContraLvl1 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier1 - NFWeaponPistolPollockHighCapacityMag - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponPistolPollockExpedition + components: + - type: Redeemable + preset: ContraLvl1 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier1 - NFWeaponPistolUniversal - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponPistolUniversalExpedition + components: + - type: Redeemable + preset: ContraLvl1 ## Revolvers - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier1 - NFWeaponRevolverArgenti - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponRevolverArgentiExpedition + components: + - type: Redeemable + preset: ContraLvl1 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier1 - NFWeaponRevolverFaith - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponRevolverFaithExpedition + components: + - type: Redeemable + preset: ContraLvl1 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier1 - NFWeaponRevolverDeckard - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponRevolverDeckardExpedition + components: + - type: Redeemable + preset: ExpedNFSDLvl1 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier1Syndicate - NFWeaponRevolverRitland45 - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponRevolverRitland45Expedition + components: + - type: Redeemable + preset: SyndieLvl1 ## Rifles - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier1Syndicate - NFWeaponRifleBarlowsBolt - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponRifleBarlowsBoltExpedition + components: + - type: Redeemable + preset: SyndieLvl1 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier1 - NFWeaponRifleCeremonial - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponRifleCeremonialExpedition + components: + - type: Redeemable + preset: ContraLvl1 - type: entity parent: @@ -173,121 +200,171 @@ - NFWeaponRifleRepeater categories: [ HideSpawnMenu ] id: NFWeaponRifleRepeaterExpedition + components: + - type: Redeemable + preset: ContraLvl1 # region Tier 2 ## Pistols - type: entity parent: + - BaseC4Contraband - BaseExpeditionWeaponTier2Syndicate - NFWeaponPistolCobra - - BaseC4Contraband categories: [ HideSpawnMenu ] id: NFWeaponPistolCobraExpedition + components: + - type: Redeemable + preset: SyndieLvl4 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier2 - NFWeaponPistolN1984 categories: [ HideSpawnMenu ] id: NFWeaponPistolN1984Expedition + components: + - type: Redeemable + preset: ContraLvl1 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier2Syndicate - NFWeaponPistolViper - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponPistolViperExpedition + components: + - type: Redeemable + preset: ContraLvl1 ## Revolvers - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier2 - NFWeaponRevolverFitz - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponRevolverFitzExpedition + components: + - type: Redeemable + preset: ContraLvl1 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier2 - NFWeaponRevolverLucky - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponRevolverLuckyExpedition + components: + - type: Redeemable + preset: ContraLvl1 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier2Pirate - NFWeaponRevolverPirate categories: [ HideSpawnMenu ] id: NFWeaponRevolverPirateExpedition + components: + - type: Redeemable + preset: ExpedFreelancerLvl1 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier2 - NFWeaponRevolverWard45 - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponRevolverWard45Expedition + components: + - type: Redeemable + preset: ContraLvl1 ## Shotguns - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier2 - NFWeaponShotgunKammerer - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponShotgunKammererExpedition + components: + - type: Redeemable + preset: ContraLvl1 ## SMGs - type: entity parent: + - BaseC2Contraband - BaseExpeditionWeaponTier2Syndicate - NFWeaponSubMachineGunC20r - - BaseC2Contraband categories: [ HideSpawnMenu ] id: NFWeaponSubMachineGunC20rExpedition + components: + - type: Redeemable + preset: SyndieLvl2 ## Assault Rifles - type: entity parent: + - BaseC2Contraband - BaseExpeditionWeaponTier2 - NFWeaponRifleAssaultNovaliteC1 categories: [ HideSpawnMenu ] id: NFWeaponRifleAssaultNovaliteC1Expedition + components: + - type: Redeemable + preset: ContraLvl2 - type: entity parent: + - BaseC2Contraband - BaseExpeditionWeaponTier2 - NFWeaponRifleAssaultJackdaw categories: [ HideSpawnMenu ] id: NFWeaponRifleAssaultJackdawExpedition + components: + - type: Redeemable + preset: ContraLvl2 - type: entity parent: + - BaseC2Contraband - BaseExpeditionWeaponTier2 - NFWeaponRifleAssaultGestio categories: [ HideSpawnMenu ] id: NFWeaponRifleAssaultGestioExpedition + components: + - type: Redeemable + preset: ContraLvl2 ## Rifles - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier2 - NFWeaponRifleSVS - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponRifleSVSExpedition + components: + - type: Redeemable + preset: ContraLvl1 ## Energy - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier2 - NFWeaponEnergyPistolLaser - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponEnergyPistolLaserExpedition + components: + - type: Redeemable + preset: ContraLvl1 # region Tier 3 ## Assault Rifles @@ -297,31 +374,43 @@ - NFWeaponRifleAssaultLecter categories: [ HideSpawnMenu ] id: NFWeaponRifleAssaultLecterExpedition + components: + - type: Redeemable + preset: ExpedNFSDLvl2 - type: entity parent: + - BaseC2Contraband - BaseExpeditionWeaponTier3Syndicate - NFWeaponRifleAssaultM90GrenadeLauncher - - BaseC2Contraband categories: [ HideSpawnMenu ] id: NFWeaponRifleAssaultM90GrenadeLauncherExpedition + components: + - type: Redeemable + preset: SyndieLvl2 ## Snipers - type: entity parent: + - BaseC3Contraband - BaseExpeditionWeaponTier3Syndicate - NFWeaponRifleSniperHristov - - BaseC3Contraband categories: [ HideSpawnMenu ] id: NFWeaponRifleSniperHristovExpedition + components: + - type: Redeemable + preset: SyndieLvl3 - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier3Pirate - NFWeaponRifleMusket - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponRifleMusketExpedition + components: + - type: Redeemable + preset: ContraLvl1 ## SMGs - type: entity @@ -330,6 +419,9 @@ - NFWeaponSubMachineGunWt550 categories: [ HideSpawnMenu ] id: NFWeaponSubMachineGunWt550Expedition + components: + - type: Redeemable + preset: ExpedNFSDLvl2 - type: entity parent: @@ -337,6 +429,9 @@ - NFWeaponSubMachineGunDrozd categories: [ HideSpawnMenu ] id: NFWeaponSubMachineGunDrozdExpedition + components: + - type: Redeemable + preset: ContraLvl2 - type: entity parent: @@ -344,6 +439,9 @@ - NFWeaponSubMachineGunAtreides categories: [ HideSpawnMenu ] id: NFWeaponSubMachineGunAtreidesExpedition + components: + - type: Redeemable + preset: SyndieLvl2 - type: entity parent: @@ -351,42 +449,57 @@ - NFWeaponSubMachineGunTypewriter categories: [ HideSpawnMenu ] id: NFWeaponSubMachineGunTypewriterExpedition + components: + - type: Redeemable + preset: ContraLvl2 ## Energy - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier3 - NFWeaponEnergyPistolLaserSvalinn - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponEnergyPistolLaserSvalinnExpedition + components: + - type: Redeemable + preset: ContraLvl1 # region Tier 4 ## Shotguns - type: entity parent: + - BaseC1Contraband - BaseExpeditionWeaponTier4 - NFWeaponShotgunEnforcer - - BaseC1Contraband categories: [ HideSpawnMenu ] id: NFWeaponShotgunEnforcerExpedition + components: + - type: Redeemable + preset: ContraLvl1 - type: entity parent: + - BaseC3Contraband - BaseExpeditionWeaponTier4Syndicate - NFWeaponShotgunBulldog - - BaseC3Contraband categories: [ HideSpawnMenu ] id: NFWeaponShotgunBulldogExpedition + components: + - type: Redeemable + preset: SyndieLvl3 ## Rifles - type: entity parent: + - BaseC2Contraband - BaseExpeditionWeaponTier4Syndicate - NFWeaponRifleAssaultSm - - BaseC2Contraband categories: [ HideSpawnMenu ] id: NFWeaponRifleAssaultSmExpedition + components: + - type: Redeemable + preset: SyndieLvl2 - type: entity parent: @@ -394,6 +507,9 @@ - NFWeaponRifleAssaultVulcan categories: [ HideSpawnMenu ] id: NFWeaponRifleAssaultVulcanExpedition + components: + - type: Redeemable + preset: ExpedNFSDLvl2 ## Energy - type: entity @@ -402,6 +518,9 @@ - NFWeaponEnergyRifleCarbine categories: [ HideSpawnMenu ] id: NFWeaponEnergyRifleCarbineExpedition + components: + - type: Redeemable + preset: ContraLvl1 - type: entity parent: @@ -409,14 +528,20 @@ - NFWeaponEnergyPistolLaserAdvanced categories: [ HideSpawnMenu ] id: NFWeaponEnergyPistolLaserAdvancedExpedition + components: + - type: Redeemable + preset: ContraLvl1 - type: entity parent: + - BaseC2Contraband - BaseExpeditionWeaponTier4 - NFWeaponEnergyPistolLaserAntique - - BaseC2Contraband categories: [ HideSpawnMenu ] id: NFWeaponEnergyPistolLaserAntiqueExpedition + components: + - type: Redeemable + preset: ContraLvl2 # region Tier 5 # Turrets @@ -426,6 +551,9 @@ - WeaponTurretAsmgtHostileUniversallyPacked categories: [ HideSpawnMenu ] id: WeaponTurretAsmgtHostileUniversallyPackedExpedition + components: + - type: Redeemable + preset: ContraLvl2 # Launchers - type: entity @@ -434,53 +562,74 @@ - NFWeaponLauncherRocket categories: [ HideSpawnMenu ] id: NFWeaponLauncherRocketExpedition + components: + - type: Redeemable + preset: ContraLvl3 - type: entity parent: + - BaseC3Contraband - BaseExpeditionWeaponTier5Syndicate - NFWeaponLauncherChinaLake - - BaseC3Contraband categories: [ HideSpawnMenu ] id: NFWeaponLauncherChinaLakeExpedition + components: + - type: Redeemable + preset: SyndieLvl3 # LMGs - type: entity parent: + - BaseC3Contraband - BaseExpeditionWeaponTier5Syndicate - NFWeaponLightMachineGunL6 - - BaseC3Contraband categories: [ HideSpawnMenu ] id: NFWeaponLightMachineGunL6Expedition + components: + - type: Redeemable + preset: SyndieLvl3 # Energy - type: entity parent: + - BaseC2Contraband - BaseExpeditionWeaponTier5 - NFWeaponEnergySubMachineGunDeltaV - - BaseC2Contraband categories: [ HideSpawnMenu ] id: NFWeaponEnergySubMachineGunDeltaVExpedition + components: + - type: Redeemable + preset: ExpedNFSDLvl2 - type: entity parent: + - BaseC4Contraband - BaseExpeditionWeaponTier5 - NFWeaponEnergyRifleSniperXrayCannon - - BaseC4Contraband categories: [ HideSpawnMenu ] id: NFWeaponEnergyRifleSniperXrayCannonExpedition + components: + - type: Redeemable + preset: ContraLvl4 - type: entity parent: + - BaseC2Contraband - BaseExpeditionWeaponTier5 - NFWeaponEnergyRifleSniperCannon - - BaseC2Contraband categories: [ HideSpawnMenu ] id: NFWeaponEnergyRifleSniperCannonExpedition + components: + - type: Redeemable + preset: ContraLvl2 - type: entity parent: + - BaseC2Contraband - BaseExpeditionWeaponTier5 - NFWeaponEnergyRifleTemperature - - BaseC2Contraband categories: [ HideSpawnMenu ] id: NFWeaponEnergyRifleTemperatureExpedition + components: + - type: Redeemable + preset: ContraLvl2 diff --git a/Resources/Prototypes/_NF/Entities/Objects/base_contraband.yml b/Resources/Prototypes/_NF/Entities/Objects/base_contraband.yml index cc1590d5f96..42aa9e2f7b3 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/base_contraband.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/base_contraband.yml @@ -68,9 +68,10 @@ abstract: true components: - type: Contraband + severity: Class2Expedition turnInValues: &noFUCs - FrontierUplinkCoin: 0 - Doubloon: 0 + FrontierUplinkCoin: 1 + Doubloon: 1 # endregion # region Class 3 Objects @@ -99,7 +100,10 @@ abstract: true components: - type: Contraband - turnInValues: *oneFUC + severity: Class3Expedition + turnInValues: + FrontierUplinkCoin: 2 + Doubloon: 2 - type: entity parent: BaseC3ContrabandUnredeemable