diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index d834d8304a..0ad14a6cf3 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -352,9 +352,9 @@ public sealed partial class ChatSystem : SharedChatSystem SoundSpecifier? announcementSound = null, Color? colorOverride = null) { - sender ??= Loc.GetString("chat-manager-sender-announcement"); + sender ??= Loc.GetString("cp14-announcement-gamemaster"); //CP14 - replaced default sender - var wrappedMessage = Loc.GetString("chat-manager-sender-announcement-wrap-message", ("sender", sender), ("message", FormattedMessage.EscapeText(message))); + var wrappedMessage = Loc.GetString("cp14-announcement-wrapped", ("sender", sender), ("message", FormattedMessage.EscapeText(message))); //CP14 - replaced default wrapped _chatManager.ChatMessageToManyFiltered(filter, ChatChannel.Radio, message, wrappedMessage, source ?? default, false, true, colorOverride); if (playSound) { diff --git a/Resources/Audio/_CP14/Ambience/attributions.yml b/Resources/Audio/_CP14/Ambience/attributions.yml index ec34617556..9f10b2d1c8 100644 --- a/Resources/Audio/_CP14/Ambience/attributions.yml +++ b/Resources/Audio/_CP14/Ambience/attributions.yml @@ -31,4 +31,9 @@ - files: ["ambimagic5.ogg", "ambimagic6.ogg"] license: "CC0-1.0" copyright: 'by xkeril of Freesound.org.' - source: "https://freesound.org/people/xkeril/sounds/706092/" \ No newline at end of file + source: "https://freesound.org/people/xkeril/sounds/706092/" + +- files: ["event_boom.ogg"] + license: "CC-BY-4.0" + copyright: 'by juskiddink of Freesound.org.' + source: "https://freesound.org/people/juskiddink/sounds/130890/" \ No newline at end of file diff --git a/Resources/Audio/_CP14/Ambience/event_boom.ogg b/Resources/Audio/_CP14/Ambience/event_boom.ogg new file mode 100644 index 0000000000..3358ab8bc0 Binary files /dev/null and b/Resources/Audio/_CP14/Ambience/event_boom.ogg differ diff --git a/Resources/Locale/en-US/_CP14/chat/chat-manager.ftl b/Resources/Locale/en-US/_CP14/chat/chat-manager.ftl new file mode 100644 index 0000000000..fd05d415e4 --- /dev/null +++ b/Resources/Locale/en-US/_CP14/chat/chat-manager.ftl @@ -0,0 +1,2 @@ +cp14-announcement-gamemaster = Narrator +cp14-announcement-wrapped = [font size=14][bold]{$sender}: [/font][font size=12]{$message}[/font] \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/events/events.ftl b/Resources/Locale/en-US/_CP14/events/events.ftl new file mode 100644 index 0000000000..4d462c1c73 --- /dev/null +++ b/Resources/Locale/en-US/_CP14/events/events.ftl @@ -0,0 +1 @@ +cp14-event-announcement-demiplane-outbreak = A sense of danger pierces the air... Something from other worlds is invading your town. \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl b/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl index 1b4c66989e..5be865037e 100644 --- a/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl +++ b/Resources/Locale/en-US/_CP14/ghostRoles/roles.ftl @@ -1,2 +1,2 @@ -cp14-ghost-role-information-name-skeleton = Demiplane skeleton -cp14-ghost-role-information-description-skeleton = A spawn of necromancy that seeks to kill all living things that have infiltrated the demiplane. \ No newline at end of file +cp14-ghost-role-information-name-skeleton = Undead skeleton +cp14-ghost-role-information-description-skeleton = The spawn of necromancy, putting a living soul into dead bones. Often such souls are controlled by the necromancer, doing his bidding. \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/ghostRoles/rules.ftl b/Resources/Locale/en-US/_CP14/ghostRoles/rules.ftl index b9c14ffc57..2e5ee113da 100644 --- a/Resources/Locale/en-US/_CP14/ghostRoles/rules.ftl +++ b/Resources/Locale/en-US/_CP14/ghostRoles/rules.ftl @@ -1 +1,3 @@ -cp14-ghost-role-information-rules-demiplane = Вы - [color=red]антагонист демиплана[/color]. Ваша задача - убить вторженцев в демиплан любой ценой. Вы можете выполнять свою цель любыми способами. Вы не помните вашу прошлую жизнь, и вам абсолютно [color=red]НЕ[/color] разрешается помнить, скажем, имя, внешность и т.д. вашего предыдущего персонажа. \ No newline at end of file +cp14-ghost-role-information-rules-demiplane = You are the [colour=red]demiplane antagonist[/color]. Your task is to kill the demiplane invaders at any cost. You can fulfil your goal in any number of ways. You do not remember your past life, and you are absolutely [colour=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character. + +cp14-ghost-role-information-rules-free = You are a [colour=yellow]free antagonist[/color]. You can do whatever you want, as long as it doesn't result in widespread destruction and mass deaths. You do not remember your past life, and you are absolutely [colour=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/chat/chat-manager.ftl b/Resources/Locale/ru-RU/_CP14/chat/chat-manager.ftl new file mode 100644 index 0000000000..f307958a10 --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/chat/chat-manager.ftl @@ -0,0 +1,2 @@ +cp14-announcement-gamemaster = Рассказчик +cp14-announcement-wrapped = [font size=14][bold]{$sender}: [/font][font size=12]{$message}[/font] \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/events/events.ftl b/Resources/Locale/ru-RU/_CP14/events/events.ftl new file mode 100644 index 0000000000..483ad54fa1 --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/events/events.ftl @@ -0,0 +1 @@ +cp14-event-announcement-demiplane-outbreak = Воздух пронзает чувство опасности... Что-то из других миров вторгается в ваш городок. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl b/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl index 2e4daa2fb5..d08a54d9fd 100644 --- a/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl +++ b/Resources/Locale/ru-RU/_CP14/ghostRoles/roles.ftl @@ -1,2 +1,2 @@ -cp14-ghost-role-information-name-skeleton = Скелет демиплана -cp14-ghost-role-information-description-skeleton = Порождение некромантии, стремящееся убить все живое, проникшее в демиплан. \ No newline at end of file +cp14-ghost-role-information-name-skeleton = Оживленный скелет +cp14-ghost-role-information-description-skeleton = Порождение некромантии, вселившее живую душу в мертвые кости. Часто такие души контролируются некромантом, исполняя его волю. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/ghostRoles/rules.ftl b/Resources/Locale/ru-RU/_CP14/ghostRoles/rules.ftl index b9c14ffc57..e5c0edb56b 100644 --- a/Resources/Locale/ru-RU/_CP14/ghostRoles/rules.ftl +++ b/Resources/Locale/ru-RU/_CP14/ghostRoles/rules.ftl @@ -1 +1,3 @@ -cp14-ghost-role-information-rules-demiplane = Вы - [color=red]антагонист демиплана[/color]. Ваша задача - убить вторженцев в демиплан любой ценой. Вы можете выполнять свою цель любыми способами. Вы не помните вашу прошлую жизнь, и вам абсолютно [color=red]НЕ[/color] разрешается помнить, скажем, имя, внешность и т.д. вашего предыдущего персонажа. \ No newline at end of file +cp14-ghost-role-information-rules-demiplane = Вы - [color=red]антагонист демиплана[/color]. Ваша задача - убить вторженцев в демиплан любой ценой. Вы можете выполнять свою цель любыми способами. Вы не помните вашу прошлую жизнь, и вам абсолютно [color=red]НЕ[/color] разрешается помнить, скажем, имя, внешность и т.д. вашего предыдущего персонажа. + +cp14-ghost-role-information-rules-free = Вы - [color=yellow]свободный антагонист[/color]. Вы можете делать все что хотите, если это не приводит к масштабным разрушениям и массовым смертям. Вы не помните вашу прошлую жизнь, и вам абсолютно [color=red]НЕ[/color] разрешается помнить, скажем, имя, внешность и т.д. вашего предыдущего персонажа. \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/demiplane_rifts.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/demiplane_rifts.yml new file mode 100644 index 0000000000..90e390214b --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/demiplane_rifts.yml @@ -0,0 +1,74 @@ +- type: entity + id: CP14BaseMobGroupSpawner + abstract: true + categories: [ ForkFiltered ] + name: pulsating demiplane rift + description: Something from the demiplanes is bursting into your world! Look out! + components: + - type: Transform + anchored: True + - type: Clickable + - type: Physics + canCollide: false + bodyType: Static + - type: Sprite + drawdepth: Effects + sprite: /Textures/_CP14/Structures/Dungeon/demiplan_rift.rsi + layers: + - state: pulse + shader: unshaded + color: red + - type: PointLight + radius: 2 + energy: 2 + color: "#851531" + netsync: false + - type: AmbientSound + volume: -3 + range: 7 + sound: + path: /Audio/Ambience/Objects/gravity_gen_hum.ogg + - type: TimedDespawn + lifetime: 6 + - type: SingularityDistortion + falloffPower: 1.5 + intensity: 50 + - type: EmitSoundOnSpawn + sound: + path: /Audio/Effects/demon_dies.ogg + params: + variation: 0.3 + +- type: entity + parent: CP14BaseMobGroupSpawner + id: CP14MobGroupSpawnerZombie + suffix: 1-3 Zombie + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + offset: 1 + table: !type:GroupSelector + rolls: !type:RangeNumberSelector + range: 1, 3 + children: + - id: CP14MobUndeadZombie + weight: 2 + - id: CP14MobUndeadZombieGearEasy1 + - id: CP14MobUndeadZombieGearEasy2 + - id: CP14MobUndeadZombieGearEasy3 + - id: CP14MobUndeadZombieGearMedium1 + - id: CP14MobUndeadZombieGearMedium2 + +- type: entity + parent: CP14BaseMobGroupSpawner + id: CP14MobGroupSpawnerHydras + suffix: 1-3 Hydras + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + offset: 1 + table: !type:GroupSelector + rolls: !type:RangeNumberSelector + range: 1, 3 + children: + - id: CP14MobDinoSmallHydra diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml index 1603d9b312..25994882e8 100644 --- a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml +++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml @@ -27,11 +27,6 @@ children: - id: CP14MobUndeadZombieGearMedium1 - id: CP14MobUndeadZombieGearMedium2 - - !type:GroupSelector - weight: 10 - children: - - id: CP14MobUndeadZombieGearHard1 - - id: CP14MobUndeadZombieGearHard2 # Animal diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/skeleton.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/skeleton.yml index 265620aea1..f96cf6c5fc 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/skeleton.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/skeleton.yml @@ -16,6 +16,22 @@ skills: - Warcraft +- type: entity + id: CP14MobUndeadSkeletonCloset + parent: CP14MobUndeadSkeleton + components: + - type: GhostTakeoverAvailable + - type: GhostRole + name: cp14-ghost-role-information-name-skeleton + allowMovement: true + description: cp14-ghost-role-information-description-skeleton + rules: cp14-ghost-role-information-rules-free + raffle: + settings: default + - type: Loadout + prototypes: + - CP14MobSkeletonCloset + - type: entity id: SpawnPointGhostDemiplaneSkeleton name: ghost role spawn point diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/zombie.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/zombie.yml index f7bd47d491..3409a31499 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/zombie.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/zombie.yml @@ -60,22 +60,4 @@ categories: [ HideSpawnMenu ] components: - type: Loadout - prototypes: [ CP14MobUndeadMedium2 ] - -- type: entity - id: CP14MobUndeadZombieGearHard1 - parent: CP14MobUndeadZombie - suffix: Zombie. Hard - categories: [ HideSpawnMenu ] - components: - - type: Loadout - prototypes: [ CP14MobUndeadHard1 ] - -- type: entity - id: CP14MobUndeadZombieGearHard2 - parent: CP14MobUndeadZombie - suffix: Zombie. Hard - categories: [ HideSpawnMenu ] - components: - - type: Loadout - prototypes: [ CP14MobUndeadHard2 ] + prototypes: [ CP14MobUndeadMedium2 ] \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/lamppost.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/lamppost.yml index 1238bb25ec..ae3e20024f 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/lamppost.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/lamppost.yml @@ -71,6 +71,7 @@ - type: PointLight energy: 5 radius: 8 + - type: VentCritterSpawnLocation # Uggh, need something better - type: entity parent: CP14BaseLamppost diff --git a/Resources/Prototypes/_CP14/GameRules/events.yml b/Resources/Prototypes/_CP14/GameRules/events.yml index e69de29bb2..cbe1bef6ec 100644 --- a/Resources/Prototypes/_CP14/GameRules/events.yml +++ b/Resources/Prototypes/_CP14/GameRules/events.yml @@ -0,0 +1,62 @@ +- type: entity + parent: CP14BaseGameRule + id: CP14BaseStationEventShortDelay + abstract: true + components: + - type: GameRule + delay: + min: 10 + max: 20 + +- type: entityTable + id: CP14BasicCalmEventsTable + table: !type:AllSelector + children: + - id: CP14ClosetSkeleton + - id: CP14ZombiesSpawn + - id: CP14HydrasSpawn + +- type: entity + parent: CP14BaseGameRule + id: CP14ClosetSkeleton + components: + - type: StationEvent + weight: 5 + duration: 1 + minimumPlayers: 10 + - type: RandomEntityStorageSpawnRule + prototype: CP14MobUndeadSkeletonCloset + +- type: entity + parent: CP14BaseStationEventShortDelay + id: CP14ZombiesSpawn + components: + - type: StationEvent + startAnnouncement: cp14-event-announcement-demiplane-outbreak + startAudio: + path: /Audio/_CP14/Ambience/event_boom.ogg + earliestStart: 20 + minimumPlayers: 15 + weight: 5 + duration: 60 + - type: VentCrittersRule + entries: + - id: CP14MobGroupSpawnerZombie + prob: 0.05 + +- type: entity + parent: CP14BaseStationEventShortDelay + id: CP14HydrasSpawn + components: + - type: StationEvent + startAnnouncement: cp14-event-announcement-demiplane-outbreak + startAudio: + path: /Audio/_CP14/Ambience/event_boom.ogg + earliestStart: 20 + minimumPlayers: 15 + weight: 5 + duration: 60 + - type: VentCrittersRule + entries: + - id: CP14MobGroupSpawnerHydras + prob: 0.05 diff --git a/Resources/Prototypes/_CP14/GameRules/roundstart.yml b/Resources/Prototypes/_CP14/GameRules/roundstart.yml index dac1c34f9b..d1a5429a57 100644 --- a/Resources/Prototypes/_CP14/GameRules/roundstart.yml +++ b/Resources/Prototypes/_CP14/GameRules/roundstart.yml @@ -34,9 +34,6 @@ startingGear: CP14SociopathGear max: 8 playerRatio: 10 - #blacklist: - # components: - # - AntagImmune lateJoinAdditional: true mindRoles: - CP14MindRoleSociopath @@ -44,3 +41,20 @@ text: cp14-roles-antag-sociopath-briefing color: "#cc3010" sound: "/Audio/_CP14/Ambience/Antag/bandit_start.ogg" + +# event schedulers + +- type: entity + id: CP14BasicStationEventScheduler + parent: CP14BaseGameRule + components: + - type: BasicStationEventScheduler + scheduledGameRules: !type:NestedSelector + tableId: CP14BasicGameRulesTable + +- type: entityTable + id: CP14BasicGameRulesTable + table: !type:AllSelector + children: + - !type:NestedSelector + tableId: CP14BasicCalmEventsTable \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/Misc/undead_startinggear.yml b/Resources/Prototypes/_CP14/Loadouts/Misc/undead_startinggear.yml index c9e1a371fc..0ce27c6103 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Misc/undead_startinggear.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Misc/undead_startinggear.yml @@ -31,31 +31,15 @@ pants: CP14ClothingPantsTrouserWhite head: CP14ClothingHeadBeretRed -- type: startingGear - id: CP14MobUndeadHard1 - equipment: - cloak: CP14ClothingCloakInfantryCuirass - shirt: CP14ClothingShirtMercenary - pants: CP14ClothingPantsMercenaryTrousers - shoes: CP14ClothingShoesBlack - back: CP14BaseTwoHandedSword - head: CP14ClothingHeadBeretMercenary - -- type: startingGear - id: CP14MobUndeadHard2 - equipment: - cloak: CP14ClothingCloakCuirassLoincloth - shirt: CP14ClothingShirtMercenary - pants: CP14ClothingPantsMercenaryTrousers - shoes: CP14ClothingShoesBlack - back: CP14BaseShield - head: CP14ClothingHeadCapellina - mask: CP14ClothingMaskSteelMask - - type: startingGear id: CP14MobSkeleton equipment: pants: CP14ClothingPantsLoincloth neck: CP14ModularSkeletonHalberd inhand: - - CP14TorchIgnited \ No newline at end of file + - CP14TorchIgnited + +- type: startingGear + id: CP14MobSkeletonCloset + equipment: + pants: CP14ClothingPantsLoincloth \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/game_presets.yml b/Resources/Prototypes/_CP14/game_presets.yml index b3f771ccd0..8ce895f2fa 100644 --- a/Resources/Prototypes/_CP14/game_presets.yml +++ b/Resources/Prototypes/_CP14/game_presets.yml @@ -19,6 +19,7 @@ rules: - CP14SociopathsRule - CP14RoundObjectivesRule + - CP14BasicStationEventScheduler - type: gamePreset id: CP14Sandbox @@ -31,3 +32,4 @@ rules: - Sandbox - CP14RoundObjectivesRule + - CP14BasicStationEventScheduler