diff --git a/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs b/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs index b1e712b4b3..eea4dd85a7 100644 --- a/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs @@ -8,7 +8,9 @@ namespace Content.Shared.EntityTable.EntitySelectors; /// public sealed partial class EntSelector : EntityTableSelector { - [DataField(required: true)] + public const string IdDataFieldTag = "id"; + + [DataField(IdDataFieldTag, required: true)] public EntProtoId Id; [DataField] diff --git a/Content.Shared/EntityTable/EntitySelectors/EntityTableTypeSerializer.cs b/Content.Shared/EntityTable/EntitySelectors/EntityTableTypeSerializer.cs new file mode 100644 index 0000000000..5bc256d143 --- /dev/null +++ b/Content.Shared/EntityTable/EntitySelectors/EntityTableTypeSerializer.cs @@ -0,0 +1,37 @@ +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.Manager; +using Robust.Shared.Serialization.Markdown.Mapping; +using Robust.Shared.Serialization.Markdown.Validation; +using Robust.Shared.Serialization.TypeSerializers.Interfaces; + +namespace Content.Shared.EntityTable.EntitySelectors; + +[TypeSerializer] +public sealed class EntityTableTypeSerializer : + ITypeReader +{ + public ValidationNode Validate(ISerializationManager serializationManager, + MappingDataNode node, + IDependencyCollection dependencies, + ISerializationContext? context = null) + { + if (node.Has(EntSelector.IdDataFieldTag)) + return serializationManager.ValidateNode(node, context); + + return new ErrorNode(node, "Custom validation not supported! Please specify the type manually!"); + } + + public EntityTableSelector Read(ISerializationManager serializationManager, + MappingDataNode node, + IDependencyCollection dependencies, + SerializationHookContext hookCtx, + ISerializationContext? context = null, + ISerializationManager.InstantiationDelegate? instanceProvider = null) + { + var type = typeof(EntityTableSelector); + if (node.Has(EntSelector.IdDataFieldTag)) + type = typeof(EntSelector); + + return (EntityTableSelector) serializationManager.Read(type, node, context)!; + } +} diff --git a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml index ebc7a446b9..4d34fa4290 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml @@ -2,67 +2,43 @@ id: AllPlushiesTable table: !type:GroupSelector children: - - !type:EntSelector - id: PlushieBee - - !type:EntSelector - id: PlushieNar + - id: PlushieBee + - id: PlushieNar weight: 0.5 - - !type:EntSelector - id: PlushieRatvar + - id: PlushieRatvar weight: 0.5 - - !type:EntSelector - id: PlushieNuke - - !type:EntSelector - id: PlushieSlime - - !type:EntSelector - id: PlushieSnake + - id: PlushieNuke + - id: PlushieSlime + - id: PlushieSnake - !type:GroupSelector children: - - !type:EntSelector - id: PlushieLizard + - id: PlushieLizard weight: 9 - - !type:EntSelector - id: PlushieSpaceLizard + - id: PlushieSpaceLizard weight: 1 - !type:GroupSelector children: - - !type:EntSelector - id: PlushieCarp - - !type:EntSelector - id: PlushieHolocarp + - id: PlushieCarp + - id: PlushieHolocarp weight: 0.25 - - !type:EntSelector - id: PlushieMagicarp + - id: PlushieMagicarp weight: 0.25 - - !type:EntSelector - id: PlushieRainbowCarp + - id: PlushieRainbowCarp weight: 0.15 - - !type:EntSelector - id: PlushieVox - - !type:EntSelector - id: PlushieRouny + - id: PlushieVox + - id: PlushieRouny - !type:GroupSelector children: - - !type:EntSelector - id: PlushieSharkBlue - - !type:EntSelector - id: PlushieSharkGrey - - !type:EntSelector - id: PlushieSharkPink - - !type:EntSelector - id: PlushieAtmosian - - !type:EntSelector - id: PlushieDiona - - !type:EntSelector - id: PlushieXeno - - !type:EntSelector - id: PlushieHampter - - !type:EntSelector - id: PlushieMoth - - !type:EntSelector - id: PlushieArachind - - !type:EntSelector - id: PlushiePenguin + - id: PlushieSharkBlue + - id: PlushieSharkGrey + - id: PlushieSharkPink + - id: PlushieAtmosian + - id: PlushieDiona + - id: PlushieXeno + - id: PlushieHampter + - id: PlushieMoth + - id: PlushieArachind + - id: PlushiePenguin - type: entity id: CrateFunPlushie @@ -87,12 +63,10 @@ containers: entity_storage: !type:AllSelector children: - - !type:EntSelector - id: PlushieLizard + - id: PlushieLizard amount: !type:ConstantNumberSelector value: 3 - - !type:EntSelector - id: PlushieSpaceLizard + - id: PlushieSpaceLizard amount: !type:ConstantNumberSelector value: 3 diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml index cf270a6310..5e2b6aeb75 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml @@ -7,46 +7,31 @@ containers: entity_storage: !type:AllSelector children: - - !type:EntSelector - id: ClothingBeltMilitaryWebbing - - !type:EntSelector - id: ClothingHandsGlovesCombat - - !type:EntSelector - id: JetpackBlackFilled - - !type:EntSelector - id: ClothingUniformJumpsuitOperative - - !type:EntSelector - id: ClothingUniformJumpskirtOperative - - !type:EntSelector - id: ClothingHeadsetAltSyndicate - - !type:EntSelector - id: ClothingEyesHudSyndicate + - id: ClothingBeltMilitaryWebbing + - id: ClothingHandsGlovesCombat + - id: JetpackBlackFilled + - id: ClothingUniformJumpsuitOperative + - id: ClothingUniformJumpskirtOperative + - id: ClothingHeadsetAltSyndicate + - id: ClothingEyesHudSyndicate - type: entityTable id: FillLockerEmergencyStandard table: !type:AllSelector children: - - !type:EntSelector - id: ClothingMaskBreath - - !type:EntSelector - id: ClothingOuterSuitEmergency + - id: ClothingMaskBreath + - id: ClothingOuterSuitEmergency - !type:GroupSelector children: - - !type:EntSelector - id: EmergencyOxygenTankFilled - - !type:EntSelector - id: OxygenTankFilled - - !type:EntSelector - id: ToolboxEmergencyFilled + - id: EmergencyOxygenTankFilled + - id: OxygenTankFilled + - id: ToolboxEmergencyFilled prob: 0.5 - - !type:EntSelector - id: MedkitOxygenFilled + - id: MedkitOxygenFilled prob: 0.2 - - !type:EntSelector - id: WeaponFlareGun + - id: WeaponFlareGun prob: 0.05 - - !type:EntSelector - id: BoxMRE + - id: BoxMRE prob: 0.1 - type: entity @@ -78,42 +63,30 @@ containers: entity_storage: !type:AllSelector children: - - !type:EntSelector - id: ClothingMaskBreath - - !type:EntSelector - id: ClothingOuterSuitEmergency + - id: ClothingMaskBreath + - id: ClothingOuterSuitEmergency - !type:GroupSelector children: - - !type:EntSelector - id: EmergencyNitrogenTankFilled - - !type:EntSelector - id: NitrogenTankFilled + - id: EmergencyNitrogenTankFilled + - id: NitrogenTankFilled - type: entityTable id: FillLockerFireStandard table: !type:AllSelector children: - - !type:EntSelector - id: ClothingOuterSuitFire - - !type:EntSelector - id: ClothingHeadHelmetFire - - !type:EntSelector - id: ClothingMaskGas + - id: ClothingOuterSuitFire + - id: ClothingHeadHelmetFire + - id: ClothingMaskGas - !type:GroupSelector children: - - !type:EntSelector - id: EmergencyOxygenTankFilled - - !type:EntSelector - id: OxygenTankFilled - - !type:EntSelector - id: CrowbarRed + - id: EmergencyOxygenTankFilled + - id: OxygenTankFilled + - id: CrowbarRed - !type:GroupSelector children: - - !type:EntSelector - id: FireExtinguisher + - id: FireExtinguisher weight: 98 - - !type:EntSelector - id: SprayBottleWater #It's just budget cut after budget cut man + - id: SprayBottleWater #It's just budget cut after budget cut man weight: 2 - type: entity @@ -142,36 +115,24 @@ children: - !type:GroupSelector children: - - !type:EntSelector - id: ClothingUniformJumpsuitOperative - - !type:EntSelector - id: ClothingUniformJumpskirtOperative - - !type:EntSelector - id: ClothingBackpackDuffelSyndicate - - !type:EntSelector - id: CyberPen - - !type:EntSelector - id: CigPackSyndicate - - !type:EntSelector - id: ClothingBackpackDuffelSyndicatePyjamaBundle - - !type:EntSelector - id: ClothingBeltMilitaryWebbing - - !type:EntSelector - id: ClothingShoesBootsCombatFilled - - !type:EntSelector - id: ToolboxSyndicateFilled - - !type:EntSelector - id: BalloonSyn - - !type:EntSelector - id: WeaponSniperMosin + - id: ClothingUniformJumpsuitOperative + - id: ClothingUniformJumpskirtOperative + - id: ClothingBackpackDuffelSyndicate + - id: CyberPen + - id: CigPackSyndicate + - id: ClothingBackpackDuffelSyndicatePyjamaBundle + - id: ClothingBeltMilitaryWebbing + - id: ClothingShoesBootsCombatFilled + - id: ToolboxSyndicateFilled + - id: BalloonSyn + - id: WeaponSniperMosin weight: 2 - type: entityTable id: MaintenanceLockerLoot table: !type:AllSelector children: - - !type:EntSelector - id: StrangePill + - id: StrangePill prob: 0.20 # Tools - !type:NestedSelector diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml index 193edb069e..f7e22ef62d 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml @@ -9,276 +9,158 @@ # Smoker's specialty - !type:AllSelector children: - - !type:EntSelector - id: Lighter - - !type:EntSelector - id: CigCartonBlue + - id: Lighter + - id: CigCartonBlue # Gar glasses - !type:GroupSelector children: - - !type:EntSelector - id: ClothingEyesGlassesGar - - !type:EntSelector - id: ClothingEyesGlassesGarOrange - - !type:EntSelector - id: ClothingEyesGlassesGarGiga - - !type:EntSelector - id: Wristwatch + - id: ClothingEyesGlassesGar + - id: ClothingEyesGlassesGarOrange + - id: ClothingEyesGlassesGarGiga + - id: Wristwatch weight: 0.5 - - !type:EntSelector - id: ClothingHeadHatCake - - !type:EntSelector - id: ClothingHeadHatSkub - - !type:EntSelector - id: ClothingHeadHatCone - - !type:EntSelector - id: ClothingNeckBling - - !type:EntSelector - id: ClothingHeadHelmetCosmonaut - - !type:EntSelector - id: ClothingHeadHelmetBasic - - !type:EntSelector - id: ClothingShoeSlippersDuck - - !type:EntSelector - id: ClothingUnderSocksBee - - !type:EntSelector - id: ClothingUnderSocksCoder - - !type:EntSelector - id: ClothingHeadHatSquid + - id: ClothingHeadHatCake + - id: ClothingHeadHatSkub + - id: ClothingHeadHatCone + - id: ClothingNeckBling + - id: ClothingHeadHelmetCosmonaut + - id: ClothingHeadHelmetBasic + - id: ClothingShoeSlippersDuck + - id: ClothingUnderSocksBee + - id: ClothingUnderSocksCoder + - id: ClothingHeadHatSquid # Animal Masks - !type:GroupSelector children: - - !type:EntSelector - id: ClothingMaskRat - - !type:EntSelector - id: ClothingMaskFox - - !type:EntSelector - id: ClothingMaskBee - - !type:EntSelector - id: ClothingMaskBear - - !type:EntSelector - id: ClothingMaskRaven - - !type:EntSelector - id: ClothingMaskJackal - - !type:EntSelector - id: ClothingMaskBat - - !type:EntSelector - id: ClothingBeltSuspenders - - !type:EntSelector - id: ClothingEyesEyepatch - - !type:EntSelector - id: ClothingEyesGlasses - - !type:EntSelector - id: ClothingHandsGlovesLatex - - !type:EntSelector - id: ClothingHandsGlovesFingerless - - !type:EntSelector - id: ClothingHandsGlovesColorBlack - - !type:EntSelector - id: ClothingHeadHatBeret - - !type:EntSelector - id: ClothingHeadHatBowlerHat - - !type:EntSelector - id: ClothingHeadHatFedoraBrown + - id: ClothingMaskRat + - id: ClothingMaskFox + - id: ClothingMaskBee + - id: ClothingMaskBear + - id: ClothingMaskRaven + - id: ClothingMaskJackal + - id: ClothingMaskBat + - id: ClothingBeltSuspenders + - id: ClothingEyesEyepatch + - id: ClothingEyesGlasses + - id: ClothingHandsGlovesLatex + - id: ClothingHandsGlovesFingerless + - id: ClothingHandsGlovesColorBlack + - id: ClothingHeadHatBeret + - id: ClothingHeadHatBowlerHat + - id: ClothingHeadHatFedoraBrown weight: 0.5 - - !type:EntSelector - id: ClothingHeadHatFedoraGrey + - id: ClothingHeadHatFedoraGrey weight: 0.5 - - !type:EntSelector - id: ClothingHeadHatFez - - !type:EntSelector - id: ClothingHeadHatPaper - - !type:EntSelector - id: ClothingHeadHatPirate - - !type:EntSelector - id: ClothingMaskSterile - - !type:EntSelector - id: ClothingNeckHeadphones - - !type:EntSelector - id: ClothingNeckTieRed - - !type:EntSelector - id: ClothingOuterCoatGentle + - id: ClothingHeadHatFez + - id: ClothingHeadHatPaper + - id: ClothingHeadHatPirate + - id: ClothingMaskSterile + - id: ClothingNeckHeadphones + - id: ClothingNeckTieRed + - id: ClothingOuterCoatGentle - !type:AllSelector children: - - !type:EntSelector - id: ClothingOuterCoatJensen - - !type:EntSelector - id: ClothingEyesGlassesJensen - - !type:EntSelector - id: ClothingOuterCoatLab + - id: ClothingOuterCoatJensen + - id: ClothingEyesGlassesJensen + - id: ClothingOuterCoatLab - !type:AllSelector children: - - !type:EntSelector - id: ClothingOuterCoatPirate - - !type:EntSelector - id: ClothingHeadHatPirateTricord - - !type:EntSelector - id: ClothingHeadHatTophat - - !type:EntSelector - id: ClothingOuterHoodieBlack + - id: ClothingOuterCoatPirate + - id: ClothingHeadHatPirateTricord + - id: ClothingHeadHatTophat + - id: ClothingOuterHoodieBlack weight: 0.5 - - !type:EntSelector - id: ClothingOuterHoodieGrey + - id: ClothingOuterHoodieGrey weight: 0.5 - !type:GroupSelector children: - - !type:EntSelector - id: ClothingOuterFlannelRed - - !type:EntSelector - id: ClothingOuterFlannelBlue - - !type:EntSelector - id: ClothingOuterFlannelGreen - - !type:EntSelector - id: ClothingOuterVestHazard - - !type:EntSelector - id: ClothingShoesBootsJack - - !type:EntSelector - id: ClothingShoesHighheelBoots - - !type:EntSelector - id: ClothingShoesBootsLaceup - - !type:EntSelector - id: ClothingShoesLeather - - !type:EntSelector - id: ClothingShoesBootsSalvage - - !type:EntSelector - id: ClothingShoesBootsWork - - !type:EntSelector - id: ClothingShoesTourist - - !type:EntSelector - id: ClothingUniformJumpsuitLoungewear - - !type:EntSelector - id: ClothingHeadHatCowboyRed + - id: ClothingOuterFlannelRed + - id: ClothingOuterFlannelBlue + - id: ClothingOuterFlannelGreen + - id: ClothingOuterVestHazard + - id: ClothingShoesBootsJack + - id: ClothingShoesHighheelBoots + - id: ClothingShoesBootsLaceup + - id: ClothingShoesLeather + - id: ClothingShoesBootsSalvage + - id: ClothingShoesBootsWork + - id: ClothingShoesTourist + - id: ClothingUniformJumpsuitLoungewear + - id: ClothingHeadHatCowboyRed # Uncommon Group - !type:GroupSelector weight: 23 children: - - !type:EntSelector - id: ClothingNeckCloakHerald - - !type:EntSelector - id: ClothingHeadHelmetTemplar + - id: ClothingNeckCloakHerald + - id: ClothingHeadHelmetTemplar # Cloaks - !type:GroupSelector children: - - !type:EntSelector - id: ClothingNeckCloakTrans - - !type:EntSelector - id: ClothingNeckCloakAdmin - - !type:EntSelector - id: ClothingNeckCloakMoth - - !type:EntSelector - id: ClothingNeckCloakVoid - - !type:EntSelector - id: ClothingNeckCloakGoliathCloak - - !type:EntSelector - id: ClothingNeckCloakAce - - !type:EntSelector - id: ClothingNeckCloakAro - - !type:EntSelector - id: ClothingNeckCloakBi - - !type:EntSelector - id: ClothingNeckCloakIntersex - - !type:EntSelector - id: ClothingNeckCloakLesbian - - !type:EntSelector - id: ClothingNeckCloakGay - - !type:EntSelector - id: ClothingNeckCloakEnby - - !type:EntSelector - id: ClothingNeckCloakPan - - !type:EntSelector - id: ToySkeleton - - !type:EntSelector - id: Basketball - - !type:EntSelector - id: Football - - !type:EntSelector - id: BalloonNT - - !type:EntSelector - id: BalloonCorgi - - !type:EntSelector - id: MysteryFigureBox + - id: ClothingNeckCloakTrans + - id: ClothingNeckCloakAdmin + - id: ClothingNeckCloakMoth + - id: ClothingNeckCloakVoid + - id: ClothingNeckCloakGoliathCloak + - id: ClothingNeckCloakAce + - id: ClothingNeckCloakAro + - id: ClothingNeckCloakBi + - id: ClothingNeckCloakIntersex + - id: ClothingNeckCloakLesbian + - id: ClothingNeckCloakGay + - id: ClothingNeckCloakEnby + - id: ClothingNeckCloakPan + - id: ToySkeleton + - id: Basketball + - id: Football + - id: BalloonNT + - id: BalloonCorgi + - id: MysteryFigureBox # Cult - !type:AllSelector children: - - !type:EntSelector - id: ClothingOuterRobesCult - - !type:EntSelector - id: ClothingShoesCult - - !type:EntSelector - id: ClothingHandsGlovesMercFingerless - - !type:EntSelector - id: ClothingHandsGlovesNitrile - - !type:EntSelector - id: ClothingHandsGlovesPowerglove - - !type:EntSelector - id: ClothingHeadHatAnimalHeadslime - - !type:EntSelector - id: ClothingHeadHatBeretMerc - - !type:EntSelector - id: ClothingHeadHatOutlawHat - - !type:EntSelector - id: ClothingHeadHatUshanka - - !type:EntSelector - id: ClothingHeadHatBunny - - !type:EntSelector - id: ClothingMaskNeckGaiter - - !type:EntSelector - id: ClothingNeckScarfStripedZebra - - !type:EntSelector - id: ClothingOuterGhostSheet - - !type:EntSelector - id: ClothingUniformJumpsuitAncient - - !type:EntSelector - id: ClothingUniformJumpsuitPirate - - !type:EntSelector - id: ClothingShoesBootsCowboyFancy - - !type:EntSelector - id: ClothingHeadHatCowboyBountyHunter + - id: ClothingOuterRobesCult + - id: ClothingShoesCult + - id: ClothingHandsGlovesMercFingerless + - id: ClothingHandsGlovesNitrile + - id: ClothingHandsGlovesPowerglove + - id: ClothingHeadHatAnimalHeadslime + - id: ClothingHeadHatBeretMerc + - id: ClothingHeadHatOutlawHat + - id: ClothingHeadHatUshanka + - id: ClothingHeadHatBunny + - id: ClothingMaskNeckGaiter + - id: ClothingNeckScarfStripedZebra + - id: ClothingOuterGhostSheet + - id: ClothingUniformJumpsuitAncient + - id: ClothingUniformJumpsuitPirate + - id: ClothingShoesBootsCowboyFancy + - id: ClothingHeadHatCowboyBountyHunter # Pins - !type:GroupSelector children: - - !type:EntSelector - id: ClothingNeckLGBTPin - - !type:EntSelector - id: ClothingNeckAromanticPin - - !type:EntSelector - id: ClothingNeckAsexualPin - - !type:EntSelector - id: ClothingNeckBisexualPin - - !type:EntSelector - id: ClothingNeckIntersexPin - - !type:EntSelector - id: ClothingNeckLesbianPin - - !type:EntSelector - id: ClothingNeckNonBinaryPin - - !type:EntSelector - id: ClothingNeckPansexualPin - - !type:EntSelector - id: ClothingNeckTransPin - - !type:EntSelector - id: ClothingNeckAutismPin - - !type:EntSelector - id: ClothingNeckGoldAutismPin + - id: ClothingNeckLGBTPin + - id: ClothingNeckAromanticPin + - id: ClothingNeckAsexualPin + - id: ClothingNeckBisexualPin + - id: ClothingNeckIntersexPin + - id: ClothingNeckLesbianPin + - id: ClothingNeckNonBinaryPin + - id: ClothingNeckPansexualPin + - id: ClothingNeckTransPin + - id: ClothingNeckAutismPin + - id: ClothingNeckGoldAutismPin # Rare Group - !type:GroupSelector weight: 2 children: - - !type:EntSelector - id: Skub - - !type:EntSelector - id: PonderingOrb - - !type:EntSelector - id: CluwneHorn - - !type:EntSelector - id: ClothingShoesSkates - - !type:EntSelector - id: DrinkMugDog - - !type:EntSelector - id: CigarGold - - !type:EntSelector - id: ClothingUniformJumpsuitFamilyGuy - - !type:EntSelector - id: WristwatchGold + - id: Skub + - id: PonderingOrb + - id: CluwneHorn + - id: ClothingShoesSkates + - id: DrinkMugDog + - id: CigarGold + - id: ClothingUniformJumpsuitFamilyGuy + - id: WristwatchGold - type: entity name: Maint Loot Spawner @@ -304,174 +186,104 @@ - !type:GroupSelector weight: 75 children: - - !type:EntSelector - id: FlashlightLantern - - !type:EntSelector - id: ToolboxEmergencyFilled + - id: FlashlightLantern + - id: ToolboxEmergencyFilled - !type:GroupSelector children: - - !type:EntSelector - id: OxygenTankFilled - - !type:EntSelector - id: DoubleEmergencyOxygenTankFilled + - id: OxygenTankFilled + - id: DoubleEmergencyOxygenTankFilled - !type:GroupSelector children: - - !type:EntSelector - id: NitrogenTankFilled - - !type:EntSelector - id: DoubleEmergencyNitrogenTankFilled - - !type:EntSelector - id: EmergencyFunnyOxygenTankFilled + - id: NitrogenTankFilled + - id: DoubleEmergencyNitrogenTankFilled + - id: EmergencyFunnyOxygenTankFilled weight: 0.5 - !type:GroupSelector weight: 3 children: - - !type:EntSelector - id: SheetSteel10 - - !type:EntSelector - id: SheetPlastic10 - - !type:EntSelector - id: SheetGlass10 - - !type:EntSelector - id: PartRodMetal10 - - !type:EntSelector - id: MaterialCardboard10 + - id: SheetSteel10 + - id: SheetPlastic10 + - id: SheetGlass10 + - id: PartRodMetal10 + - id: MaterialCardboard10 weight: 0.25 - - !type:EntSelector - id: MaterialCloth10 + - id: MaterialCloth10 weight: 0.25 - - !type:EntSelector - id: MaterialWoodPlank10 + - id: MaterialWoodPlank10 weight: 0.25 - - !type:EntSelector - id: Plunger - - !type:EntSelector - id: PowerCellMedium - - !type:EntSelector - id: PowerCellSmall - - !type:EntSelector - id: Soap - - !type:EntSelector - id: Wirecutter - - !type:EntSelector - id: Screwdriver - - !type:EntSelector - id: Wrench - - !type:EntSelector - id: Crowbar - - !type:EntSelector - id: Multitool - - !type:EntSelector - id: Shovel - - !type:EntSelector - id: Welder - - !type:EntSelector - id: GasAnalyzer - - !type:EntSelector - id: SprayPainter - - !type:EntSelector - id: Flare - - !type:EntSelector - id: Beaker - - !type:EntSelector - id: ClothingMaskGas - - !type:EntSelector - id: ClothingMaskBreath - - !type:EntSelector - id: DoorElectronics - - !type:EntSelector - id: APCElectronics - - !type:EntSelector - id: InflatableWallStack5 - - !type:EntSelector - id: CableHVStack10 - - !type:EntSelector - id: CableMVStack10 - - !type:EntSelector - id: CableApcStack10 + - id: Plunger + - id: PowerCellMedium + - id: PowerCellSmall + - id: Soap + - id: Wirecutter + - id: Screwdriver + - id: Wrench + - id: Crowbar + - id: Multitool + - id: Shovel + - id: Welder + - id: GasAnalyzer + - id: SprayPainter + - id: Flare + - id: Beaker + - id: ClothingMaskGas + - id: ClothingMaskBreath + - id: DoorElectronics + - id: APCElectronics + - id: InflatableWallStack5 + - id: CableHVStack10 + - id: CableMVStack10 + - id: CableApcStack10 - !type:GroupSelector children: - - !type:EntSelector - id: ClothingHandsGlovesColorYellowBudget + - id: ClothingHandsGlovesColorYellowBudget weight: 5 - - !type:EntSelector - id: ClothingHandsGlovesFingerlessInsulated + - id: ClothingHandsGlovesFingerlessInsulated weight: 0.5 - - !type:EntSelector - id: ClothingHandsGlovesColorYellow + - id: ClothingHandsGlovesColorYellow weight: 1 # Uncommon Group - !type:GroupSelector weight: 23 children: - - !type:EntSelector - id: ClothingHeadHatCone + - id: ClothingHeadHatCone weight: 2 - - !type:EntSelector - id: BookRandomStory + - id: BookRandomStory weight: 0.25 - - !type:EntSelector - id: ToolboxElectricalFilled - - !type:EntSelector - id: ToolboxMechanicalFilled - - !type:EntSelector - id: ClothingBeltUtility - - !type:EntSelector - id: ToolboxArtisticFilled - - !type:EntSelector - id: GeigerCounter - - !type:EntSelector - id: trayScanner - - !type:EntSelector - id: HandheldGPSBasic - - !type:EntSelector - id: HandLabeler - - !type:EntSelector - id: GlowstickBase - - !type:EntSelector - id: Bucket - - !type:EntSelector - id: RadioHandheld - - !type:EntSelector - id: AppraisalTool - - !type:EntSelector - id: ModularReceiver - - !type:EntSelector - id: WeaponFlareGun - - !type:EntSelector - id: BarberScissors + - id: ToolboxElectricalFilled + - id: ToolboxMechanicalFilled + - id: ClothingBeltUtility + - id: ToolboxArtisticFilled + - id: GeigerCounter + - id: trayScanner + - id: HandheldGPSBasic + - id: HandLabeler + - id: GlowstickBase + - id: Bucket + - id: RadioHandheld + - id: AppraisalTool + - id: ModularReceiver + - id: WeaponFlareGun + - id: BarberScissors - !type:GroupSelector children: - - !type:EntSelector - id: DrinkSpaceGlue - - !type:EntSelector - id: DrinkSpaceLube + - id: DrinkSpaceGlue + - id: DrinkSpaceLube # Rare Group - !type:GroupSelector weight: 2 children: - - !type:EntSelector - id: LanternFlash - - !type:EntSelector - id: PowerCellHigh - - !type:EntSelector - id: NetProbeCartridge - - !type:EntSelector - id: WelderIndustrial - - !type:EntSelector - id: SheetPlasteel10 - - !type:EntSelector - id: ClothingMaskGasExplorer - - !type:EntSelector - id: TechnologyDisk - - !type:EntSelector - id: ResearchDisk5000 - - !type:EntSelector - id: PetCarrier - - !type:EntSelector - id: DrinkMopwataBottleRandom - - !type:EntSelector - id: LidSalami + - id: LanternFlash + - id: PowerCellHigh + - id: NetProbeCartridge + - id: WelderIndustrial + - id: SheetPlasteel10 + - id: ClothingMaskGasExplorer + - id: TechnologyDisk + - id: ResearchDisk5000 + - id: PetCarrier + - id: DrinkMopwataBottleRandom + - id: LidSalami weight: 0.05 - type: entity @@ -498,62 +310,38 @@ - !type:GroupSelector weight: 95 children: - - !type:EntSelector - id: Machete - - !type:EntSelector - id: BaseBallBat - - !type:EntSelector - id: CombatKnife - - !type:EntSelector - id: Spear - - !type:EntSelector - id: RifleStock - - !type:EntSelector - id: ModularReceiver - - !type:EntSelector - id: HydroponicsToolScythe + - id: Machete + - id: BaseBallBat + - id: CombatKnife + - id: Spear + - id: RifleStock + - id: ModularReceiver + - id: HydroponicsToolScythe # Rare Group - !type:GroupSelector weight: 5 children: - - !type:EntSelector - id: Lighter - - !type:EntSelector - id: Matchbox - - !type:EntSelector - id: ClothingEyesBlindfold - - !type:EntSelector - id: ClothingMaskMuzzle - - !type:EntSelector - id: ClothingMaskGasSecurity - - !type:EntSelector - id: ShardGlass + - id: Lighter + - id: Matchbox + - id: ClothingEyesBlindfold + - id: ClothingMaskMuzzle + - id: ClothingMaskGasSecurity + - id: ShardGlass weight: 2 - - !type:EntSelector - id: Syringe - - !type:EntSelector - id: Mousetrap + - id: Syringe + - id: Mousetrap - !type:GroupSelector weight: 2 children: - - !type:EntSelector - id: Brutepack1 - - !type:EntSelector - id: Ointment1 - - !type:EntSelector - id: Gauze1 - - !type:EntSelector - id: Bola - - !type:EntSelector - id: SurvivalKnife - - !type:EntSelector - id: ScalpelShiv - - !type:EntSelector - id: Shiv - - !type:EntSelector - id: SawImprov - - !type:EntSelector - id: HydroponicsToolMiniHoe + - id: Brutepack1 + - id: Ointment1 + - id: Gauze1 + - id: Bola + - id: SurvivalKnife + - id: ScalpelShiv + - id: Shiv + - id: SawImprov + - id: HydroponicsToolMiniHoe - type: entity name: Maint Loot Spawner