diff --git a/Content.Server/_CP14/DungeonPortal/CP14AutoDungeonPortalComponent.cs b/Content.Server/_CP14/DungeonPortal/CP14AutoDungeonPortalComponent.cs new file mode 100644 index 0000000000..b8bc554094 --- /dev/null +++ b/Content.Server/_CP14/DungeonPortal/CP14AutoDungeonPortalComponent.cs @@ -0,0 +1,13 @@ +using Robust.Shared.Prototypes; + +namespace Content.Server._CP14.DungeonPortal; + +/// +/// Automatically creates a linked portal of a certain prototype on the opposite linked world, if it exists. +/// +[RegisterComponent, Access(typeof(CP14AutoDungeonPortalSystem))] +public sealed partial class CP14AutoDungeonPortalComponent : Component +{ + [DataField(required: true)] + public EntProtoId OtherSidePortal; +} diff --git a/Content.Server/_CP14/DungeonPortal/CP14AutoDungeonPortalSystem.cs b/Content.Server/_CP14/DungeonPortal/CP14AutoDungeonPortalSystem.cs new file mode 100644 index 0000000000..6b9cbeff40 --- /dev/null +++ b/Content.Server/_CP14/DungeonPortal/CP14AutoDungeonPortalSystem.cs @@ -0,0 +1,78 @@ +using Content.Shared.Maps; +using Content.Shared.Teleportation.Components; +using Content.Shared.Teleportation.Systems; +using Robust.Server.GameObjects; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Random; + +namespace Content.Server._CP14.DungeonPortal; + +public sealed partial class CP14AutoDungeonPortalSystem : EntitySystem +{ + [Dependency] private readonly MapSystem _map = default!; + [Dependency] private readonly LinkedEntitySystem _linkedEntity = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ITileDefinitionManager _tileDefManager = default!; + [Dependency] private readonly TileSystem _tile = default!; + [Dependency] private readonly SharedMapSystem _maps = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + } + + private void OnMapInit(Entity autoPortal, ref MapInitEvent args) + { + if (!TryComp(autoPortal, out var portalComp)) + return; + + var mapId = Transform(autoPortal).MapID; + _map.TryGetMap(mapId, out var mapUid); + + if (mapUid == null) + return; + + if (!TryComp(mapUid, out var link)) + return; + + if (link.LinkedEntities.Count > 1) //Bruh, we don't want more than 1 linked maps for now + return; + + var targetMapUid = _random.Pick(link.LinkedEntities); + var targetMapId = Transform(targetMapUid).MapID; + + var currentWorldPos = _transform.GetWorldPosition(autoPortal); + var targetMapPos = new MapCoordinates(currentWorldPos, targetMapId); + + var otherSidePortal = Spawn(autoPortal.Comp.OtherSidePortal, targetMapPos); + + if (_linkedEntity.TryLink(autoPortal, otherSidePortal, true)) + RemComp(autoPortal); + + ClearOtherSide(otherSidePortal, targetMapUid); + } + + private void ClearOtherSide(EntityUid otherSidePortal, EntityUid targetMapUid) + { + var tiles = new List<(Vector2i Index, Tile Tile)>(); + var originF = _transform.GetWorldPosition(otherSidePortal); + var origin = new Vector2i((int) originF.X, (int) originF.Y); + var tileDef = _tileDefManager["CP14FloorStonebricks"]; //TODO: Remove hardcode + var seed = _random.Next(); + var random = new Random(seed); + var grid = Comp(targetMapUid); + + for (var x = -2; x <= 2; x++) //TODO: Remove hardcode + { + for (var y = -2; y <= 2; y++) + { + tiles.Add((new Vector2i(x, y) + origin, new Tile(tileDef.TileId, variant: _tile.PickVariant((ContentTileDefinition) tileDef, random)))); + } + } + + _maps.SetTiles(targetMapUid, grid, tiles); + } +} diff --git a/Content.Server/_CP14/StationBiome/CP14StationBiomeComponent.cs b/Content.Server/_CP14/StationBiome/CP14StationBiomeComponent.cs deleted file mode 100644 index 122759a35f..0000000000 --- a/Content.Server/_CP14/StationBiome/CP14StationBiomeComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Content.Shared.Parallax.Biomes; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.StationBiome; - -/// -/// allows you to initialize a planet on a specific map at initialization time. -/// - -[RegisterComponent, Access(typeof(CP14StationBiomeSystem))] -public sealed partial class CP14StationBiomeComponent : Component -{ - [DataField] - public ProtoId Biome = "Grasslands"; - - // If null, its random - [DataField] - public int? Seed = null; -} diff --git a/Content.Server/_CP14/StationBiome/CP14StationBiomeSystem.cs b/Content.Server/_CP14/StationBiome/CP14StationBiomeSystem.cs deleted file mode 100644 index 188643f9a4..0000000000 --- a/Content.Server/_CP14/StationBiome/CP14StationBiomeSystem.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Content.Server.Parallax; -using Content.Server.Station.Components; -using Content.Server.Station.Events; -using Content.Server.Station.Systems; -using Robust.Shared.Map; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.StationBiome; -public sealed partial class CP14StationBiomeSystem : EntitySystem -{ - [Dependency] private readonly BiomeSystem _biome = default!; - [Dependency] private readonly IMapManager _mapManager = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly StationSystem _station = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnStationPostInit); - } - - private void OnStationPostInit(Entity map, ref StationPostInitEvent args) - { - if (!TryComp(map, out StationDataComponent? dataComp)) - return; - - var station = _station.GetLargestGrid(dataComp); - if (station == null) return; - - var mapId = Transform(station.Value).MapID; - var mapUid = _mapManager.GetMapEntityId(mapId); - - _biome.EnsurePlanet(mapUid, _proto.Index(map.Comp.Biome), map.Comp.Seed); - } -} diff --git a/Content.Server/_CP14/StationDungeonMap/CP14StationDungeonMapComponent.cs b/Content.Server/_CP14/StationDungeonMap/CP14StationDungeonMapComponent.cs new file mode 100644 index 0000000000..e0a8fb8fca --- /dev/null +++ b/Content.Server/_CP14/StationDungeonMap/CP14StationDungeonMapComponent.cs @@ -0,0 +1,27 @@ +using Content.Shared.Parallax.Biomes; +using Robust.Shared.Prototypes; + +namespace Content.Server._CP14.StationDungeonMap; + +/// +/// Initializes a procedurally generated world with points of interest +/// +[RegisterComponent, Access(typeof(CP14StationDungeonMapSystem))] +public sealed partial class CP14StationDungeonMapComponent : Component +{ + [DataField(required: true)] + public ProtoId Biome = "Caves"; + + // If null, its random + [DataField] + public int? Seed = null; + + [DataField] + public Color MapLightColor = Color.Black; + + [DataField] + public string MapName = "Dungeon map"; + + [DataField(serverOnly: true)] + public ComponentRegistry Components = new(); +} diff --git a/Content.Server/_CP14/StationDungeonMap/CP14StationDungeonMapSystem.cs b/Content.Server/_CP14/StationDungeonMap/CP14StationDungeonMapSystem.cs new file mode 100644 index 0000000000..ff76df9e05 --- /dev/null +++ b/Content.Server/_CP14/StationDungeonMap/CP14StationDungeonMapSystem.cs @@ -0,0 +1,54 @@ +using Content.Server.Parallax; +using Content.Server.Station.Components; +using Content.Server.Station.Events; +using Content.Server.Station.Systems; +using Content.Shared.Teleportation.Systems; +using Robust.Server.GameObjects; +using Robust.Shared.Prototypes; + +namespace Content.Server._CP14.StationDungeonMap; + +public sealed partial class CP14StationDungeonMapSystem : EntitySystem +{ + [Dependency] private readonly BiomeSystem _biome = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly MapSystem _map = default!; + [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly LinkedEntitySystem _linkedEntity = default!; + [Dependency] private readonly StationSystem _station = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnStationPostInit); + } + + private void OnStationPostInit(Entity map, ref StationPostInitEvent args) + { + if (!TryComp(map, out StationDataComponent? dataComp)) + return; + + var mapUid = _map.CreateMap(out var mapId); + _metaData.SetEntityName(mapUid, map.Comp.MapName); + + _biome.EnsurePlanet(mapUid, _proto.Index(map.Comp.Biome), map.Comp.Seed, mapLight: map.Comp.MapLightColor); + + EntityManager.AddComponents(mapUid, map.Comp.Components); + + TryLinkDungeonAndStationMaps(dataComp, mapUid); + } + + private bool TryLinkDungeonAndStationMaps(StationDataComponent dataComp, EntityUid mapUid) + { + var station = _station.GetLargestGrid(dataComp); + if (station == null) + return false; + + var stationMapId = Transform(station.Value).MapID; + _map.TryGetMap(stationMapId, out var stationMapUid); + if (stationMapUid == null) + return false; + + return _linkedEntity.TryLink(mapUid, stationMapUid.Value); + } +} diff --git a/Resources/Audio/_CP14/Ambience/ambicreepy1.ogg b/Resources/Audio/_CP14/Ambience/ambicreepy1.ogg new file mode 100644 index 0000000000..5048410249 Binary files /dev/null and b/Resources/Audio/_CP14/Ambience/ambicreepy1.ogg differ diff --git a/Resources/Audio/_CP14/Ambience/ambicreepy2.ogg b/Resources/Audio/_CP14/Ambience/ambicreepy2.ogg new file mode 100644 index 0000000000..ed8e147c85 Binary files /dev/null and b/Resources/Audio/_CP14/Ambience/ambicreepy2.ogg differ diff --git a/Resources/Audio/_CP14/Ambience/ambicreepy3.ogg b/Resources/Audio/_CP14/Ambience/ambicreepy3.ogg new file mode 100644 index 0000000000..9f2033e1c5 Binary files /dev/null and b/Resources/Audio/_CP14/Ambience/ambicreepy3.ogg differ diff --git a/Resources/Audio/_CP14/Ambience/attributions.yml b/Resources/Audio/_CP14/Ambience/attributions.yml index 8482f1f881..ad4a7a3dba 100644 --- a/Resources/Audio/_CP14/Ambience/attributions.yml +++ b/Resources/Audio/_CP14/Ambience/attributions.yml @@ -1,4 +1,24 @@ -- files: ["ambicave.ogg"] +- files: ["ambicave1.ogg"] license: "CC-BY-4.0" copyright: 'by Rosanajurado of Freesound.org. Cropped and mixed from stereo to mono.' - source: "https://freesound.org/people/Rosanajurado/sounds/667117/" \ No newline at end of file + source: "https://freesound.org/people/Rosanajurado/sounds/667117/" + +- files: ["ambicreepy1.ogg"] + license: "CC-BY-SA-3.0" + copyright: 'by alextundra of Freesound.org. Mixed from stereo to mono.' + source: "https://freesound.org/people/alextundra/sounds/60893/" + +- files: ["ambicreepy2.ogg"] + license: "CC-BY-SA-3.0" + copyright: 'by alextundra of Freesound.org. Mixed from stereo to mono.' + source: "https://freesound.org/people/alextundra/sounds/60892/" + +- files: ["ambicreepy4.ogg"] + license: "CC-BY-4.0" + copyright: 'by 7by7 of Freesound.org. Mixed from stereo to mono.' + source: "https://freesound.org/people/7by7/sounds/72849/" + +- files: ["weatherWindy.ogg"] + license: "CC-BY-4.0" + copyright: 'by Benboncan of Freesound.org. Mixed from stereo to mono.' + source: "https://freesound.org/people/Benboncan/sounds/134699/" \ No newline at end of file diff --git a/Resources/Audio/_CP14/Ambience/weatherWindy.ogg b/Resources/Audio/_CP14/Ambience/weatherWindy.ogg new file mode 100644 index 0000000000..9b1cb2e514 Binary files /dev/null and b/Resources/Audio/_CP14/Ambience/weatherWindy.ogg differ diff --git a/Resources/Audio/_CP14/Animals/attributions.yml b/Resources/Audio/_CP14/Animals/attributions.yml new file mode 100644 index 0000000000..2cb5224dce --- /dev/null +++ b/Resources/Audio/_CP14/Animals/attributions.yml @@ -0,0 +1,44 @@ +- files: ["owl1.ogg"] + license: "CC-BY-4.0" + copyright: 'by Benboncan of Freesound.org. Cropped and mixed from stereo to mono.' + source: "https://freesound.org/people/Benboncan/sounds/64544/" + +- files: ["owl2.ogg"] + license: "CC-BY-4.0" + copyright: 'by Benboncan of Freesound.org. Cropped and mixed from stereo to mono.' + source: "https://freesound.org/people/Benboncan/sounds/64544/" + +- files: ["owl3.ogg"] + license: "CC-BY-4.0" + copyright: 'by Benboncan of Freesound.org. Cropped and mixed from stereo to mono.' + source: "https://freesound.org/people/Benboncan/sounds/64544/" + +- files: ["owl4.ogg"] + license: "CC-BY-4.0" + copyright: 'by Benboncan of Freesound.org. Cropped and mixed from stereo to mono.' + source: "https://freesound.org/people/Benboncan/sounds/64544/" + +- files: ["owl5.ogg"] + license: "CC-BY-4.0" + copyright: 'by Benboncan of Freesound.org. Cropped and mixed from stereo to mono.' + source: "https://freesound.org/people/Benboncan/sounds/64544/" + +- files: ["owl6.ogg"] + license: "CC-BY-4.0" + copyright: 'by Benboncan of Freesound.org. Cropped and mixed from stereo to mono.' + source: "https://freesound.org/people/Benboncan/sounds/64544/" + +- files: ["owl7.ogg"] + license: "CC-BY-4.0" + copyright: 'by Benboncan of Freesound.org. Cropped and mixed from stereo to mono.' + source: "https://freesound.org/people/Benboncan/sounds/64544/" + +- files: ["owl8.ogg"] + license: "CC-BY-4.0" + copyright: 'by Benboncan of Freesound.org. Cropped and mixed from stereo to mono.' + source: "https://freesound.org/people/Benboncan/sounds/64544/" + +- files: ["owl9.ogg"] + license: "CC-BY-4.0" + copyright: 'by Benboncan of Freesound.org. Cropped and mixed from stereo to mono.' + source: "https://freesound.org/people/Benboncan/sounds/64544/" \ No newline at end of file diff --git a/Resources/Audio/_CP14/Animals/owl1.ogg b/Resources/Audio/_CP14/Animals/owl1.ogg new file mode 100644 index 0000000000..f558acd55b Binary files /dev/null and b/Resources/Audio/_CP14/Animals/owl1.ogg differ diff --git a/Resources/Audio/_CP14/Animals/owl2.ogg b/Resources/Audio/_CP14/Animals/owl2.ogg new file mode 100644 index 0000000000..88fe453cb1 Binary files /dev/null and b/Resources/Audio/_CP14/Animals/owl2.ogg differ diff --git a/Resources/Audio/_CP14/Animals/owl3.ogg b/Resources/Audio/_CP14/Animals/owl3.ogg new file mode 100644 index 0000000000..0d0b14f1c2 Binary files /dev/null and b/Resources/Audio/_CP14/Animals/owl3.ogg differ diff --git a/Resources/Audio/_CP14/Animals/owl4.ogg b/Resources/Audio/_CP14/Animals/owl4.ogg new file mode 100644 index 0000000000..61e905a33c Binary files /dev/null and b/Resources/Audio/_CP14/Animals/owl4.ogg differ diff --git a/Resources/Audio/_CP14/Animals/owl5.ogg b/Resources/Audio/_CP14/Animals/owl5.ogg new file mode 100644 index 0000000000..f65a13de9b Binary files /dev/null and b/Resources/Audio/_CP14/Animals/owl5.ogg differ diff --git a/Resources/Audio/_CP14/Animals/owl6.ogg b/Resources/Audio/_CP14/Animals/owl6.ogg new file mode 100644 index 0000000000..601c7550c6 Binary files /dev/null and b/Resources/Audio/_CP14/Animals/owl6.ogg differ diff --git a/Resources/Audio/_CP14/Animals/owl7.ogg b/Resources/Audio/_CP14/Animals/owl7.ogg new file mode 100644 index 0000000000..bec41b9198 Binary files /dev/null and b/Resources/Audio/_CP14/Animals/owl7.ogg differ diff --git a/Resources/Audio/_CP14/Animals/owl8.ogg b/Resources/Audio/_CP14/Animals/owl8.ogg new file mode 100644 index 0000000000..367161a83e Binary files /dev/null and b/Resources/Audio/_CP14/Animals/owl8.ogg differ diff --git a/Resources/Audio/_CP14/Animals/owl9.ogg b/Resources/Audio/_CP14/Animals/owl9.ogg new file mode 100644 index 0000000000..89eb1d702f Binary files /dev/null and b/Resources/Audio/_CP14/Animals/owl9.ogg differ diff --git a/Resources/Prototypes/Maps/debug.yml b/Resources/Prototypes/Maps/debug.yml index 94907d6e36..d2bb42125f 100644 --- a/Resources/Prototypes/Maps/debug.yml +++ b/Resources/Prototypes/Maps/debug.yml @@ -27,7 +27,8 @@ - type: StationRandomTransform enableStationRotation: false maxStationOffset: null - - type: CP14StationBiome + - type: StationBiome + biome: Snow - type: StationNameSetup mapNameTemplate: "Dev" - type: StationJobs @@ -35,6 +36,8 @@ - Adventurer #CrystallPunk Dev replacement availableJobs: Adventurer: [ -1, -1 ] #CrystallPunk Dev replacement + - type: CP14StationDungeonMap + biome: CP14CavesGeneric #- type: gameMap # id: TestTeg diff --git a/Resources/Prototypes/_CP14/Entities/Structures/dungeon_entrance.yml b/Resources/Prototypes/_CP14/Entities/Structures/dungeon_entrance.yml new file mode 100644 index 0000000000..fdceac744c --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/dungeon_entrance.yml @@ -0,0 +1,68 @@ +- type: entity + id: CP14DungeonEntrance + name: dungeon entrance + noSpawn: true + description: The dark depths of the underworld are calling you. + placement: + mode: SnapgridCenter + components: + - type: Transform + anchored: True + - type: InteractionOutline + - type: Clickable + - type: Physics + bodyType: Static + - type: Sprite + sprite: /Textures/_CP14/Structures/Dungeon/holes.rsi + drawdepth: FloorTiles + layers: + - state: hole_big + - state: ladder_big_top_part + - type: Fixtures + fixtures: + portalFixture: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.48,0.25,0.48" + mask: + - FullTileMask + layer: + - WallLayer + hard: false + - type: Portal + canTeleportToOtherMaps: true + randomTeleport: false + +- type: entity + parent: PortalBlue + id: CP14DungeonEntranceAutolink + suffix: Autolink Dungeon + components: + - type: CP14AutoDungeonPortal + otherSidePortal: CP14DungeonExit + +- type: entity + parent: CP14DungeonEntrance + id: CP14DungeonExit + noSpawn: true + name: dungeon exit + description: A way out of the dark underworld into the overworld. + components: + - type: Sprite + sprite: /Textures/_CP14/Structures/Dungeon/holes.rsi + drawdepth: Mobs + layers: + - state: ladder_bottom_part + - type: PointLight + color: White + radius: 3 + energy: 1 + netsync: false + +- type: entity + parent: CP14DungeonExit + id: CP14DungeonExitAutolink + suffix: Autolink Dungeon + components: + - type: CP14AutoDungeonPortal + otherSidePortal: CP14DungeonEntrance \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/biome_template.yml b/Resources/Prototypes/_CP14/Procedural/biome_template.yml new file mode 100644 index 0000000000..a91010445d --- /dev/null +++ b/Resources/Prototypes/_CP14/Procedural/biome_template.yml @@ -0,0 +1,110 @@ +- type: biomeTemplate + id: CP14SolidStone + layers: + - !type:BiomeTileLayer + threshold: -1.0 + tile: CP14FloorBase + - !type:BiomeEntityLayer + threshold: -1.0 + allowedTiles: + - CP14FloorBase + entities: + - CP14CaveStoneWall + +- type: biomeTemplate + id: CP14CavesGeneric + layers: + - !type:BiomeTileLayer + threshold: -1.0 + tile: CP14FloorBase + #Entity + - !type:BiomeEntityLayer + threshold: 0.4 + noise: + seed: 1 + noiseType: OpenSimplex2 + fractalType: FBm + frequency: 2 + allowedTiles: + - CP14FloorBase + entities: + - FloraGreyStalagmite1 + - FloraGreyStalagmite2 + - FloraGreyStalagmite3 + - FloraGreyStalagmite4 + - FloraGreyStalagmite5 + - FloraRockSolid01 + - FloraRockSolid02 + - FloraRockSolid03 + - FloraGreyStalagmite1 + - FloraGreyStalagmite2 + - FloraGreyStalagmite3 + - FloraGreyStalagmite4 + - FloraGreyStalagmite5 + - FloraRockSolid01 + - FloraRockSolid02 + - FloraRockSolid03 + - FloraGreyStalagmite1 + - FloraGreyStalagmite2 + - FloraGreyStalagmite3 + - FloraGreyStalagmite4 + - FloraGreyStalagmite5 + - FloraRockSolid01 + - FloraRockSolid02 + - FloraRockSolid03 + - CP14CrystalRubiesSmall + - CP14CrystalRubiesMedium + - CP14CrystalRubiesBig + - CP14CrystalTopazesSmall + - CP14CrystalTopazesMedium + - CP14CrystalTopazesBig + - CP14CrystalEmeraldsSmall + - CP14CrystalEmeraldsMedium + - CP14CrystalEmeraldsBig + - CP14CrystalSapphiresSmall + - CP14CrystalSapphiresMedium + - CP14CrystalSapphiresBig + - CP14CrystalAmethystsSmall + - CP14CrystalAmethystsMedium + - CP14CrystalAmethystsBig + - CP14CrystalDiamondsSmall + - CP14CrystalDiamondsMedium + - CP14CrystalDiamondsBig + #Walls + - !type:BiomeEntityLayer + threshold: -0.75 + invert: true + noise: + seed: 0 + noiseType: Perlin + fractalType: Ridged + octaves: 1 + frequency: 0.05 + gain: 0.5 + allowedTiles: + - CP14FloorBase + entities: + - CP14CaveStoneWall + #Ores + - !type:BiomeEntityLayer + threshold: 0.6 + noise: + seed: 0 + noiseType: OpenSimplex2 + fractalType: FBm + frequency: 3 + allowedTiles: + - CP14FloorBase + entities: + - CP14CaveStoneWallSilverOre + - !type:BiomeEntityLayer + threshold: 0.6 + noise: + seed: 10 + noiseType: OpenSimplex2 + fractalType: FBm + frequency: 3 + allowedTiles: + - CP14FloorBase + entities: + - CP14CaveStoneWallGoldOre \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/dungeon_loot.yml b/Resources/Prototypes/_CP14/Procedural/dungeon_loot.yml new file mode 100644 index 0000000000..f721fe349c --- /dev/null +++ b/Resources/Prototypes/_CP14/Procedural/dungeon_loot.yml @@ -0,0 +1,9 @@ +- type: salvageLoot + id: CP14DungeonLoot + loots: + - !type:RandomSpawnsLoot + entries: + - proto: CP14BaseThrowableSpear + prob: 0.5 + - proto: CP14BaseDagger + prob: 0.5 \ No newline at end of file diff --git a/Resources/Prototypes/audio.yml b/Resources/Prototypes/audio.yml index a5a2dc9399..f941c2ae69 100644 --- a/Resources/Prototypes/audio.yml +++ b/Resources/Prototypes/audio.yml @@ -24,6 +24,9 @@ - /Audio/Ambience/ambiruin4.ogg - /Audio/Ambience/maintambience.ogg - /Audio/_CP14/Ambience/ambicave1.ogg + - /Audio/_CP14/Ambience/ambicreepy1.ogg + - /Audio/_CP14/Ambience/ambicreepy2.ogg + - /Audio/_CP14/Ambience/ambicreepy3.ogg # Rules - type: rules diff --git a/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/hole_big.png b/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/hole_big.png new file mode 100644 index 0000000000..d93b443e80 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/hole_big.png differ diff --git a/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/ladder_big_top_part.png b/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/ladder_big_top_part.png new file mode 100644 index 0000000000..7bf0e0232e Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/ladder_big_top_part.png differ diff --git a/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/ladder_bottom_part.png b/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/ladder_bottom_part.png new file mode 100644 index 0000000000..c9ceb5deaa Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/ladder_bottom_part.png differ diff --git a/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/meta.json b/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/meta.json new file mode 100644 index 0000000000..8575d223a5 --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Dungeon/holes.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "by TheShuEd (discord)", + "size": { + "x": 64, + "y": 64 + }, + "states": [ + { + "name": "hole_big", + "directions": 4 + }, + { + "name": "ladder_big_top_part", + "directions": 4 + }, + { + "name": "ladder_bottom_part" + } + ] +}