Random events (#706)

* first game event! Closet skeleton!

* demiplane outbreak gamerules

* Update game_presets.yml

* d
This commit is contained in:
Ed
2025-01-08 02:55:54 +03:00
committed by GitHub
parent 5c21ec2774
commit 228a7226ff
20 changed files with 203 additions and 58 deletions

View File

@@ -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)
{

View File

@@ -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/"
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/"

Binary file not shown.

View File

@@ -0,0 +1,2 @@
cp14-announcement-gamemaster = Narrator
cp14-announcement-wrapped = [font size=14][bold]{$sender}: [/font][font size=12]{$message}[/font]

View File

@@ -0,0 +1 @@
cp14-event-announcement-demiplane-outbreak = A sense of danger pierces the air... Something from other worlds is invading your town.

View File

@@ -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.
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.

View File

@@ -1 +1,3 @@
cp14-ghost-role-information-rules-demiplane = Вы - [color=red]антагонист демиплана[/color]. Ваша задача - убить вторженцев в демиплан любой ценой. Вы можете выполнять свою цель любыми способами. Вы не помните вашу прошлую жизнь, и вам абсолютно [color=red]НЕ[/color] разрешается помнить, скажем, имя, внешность и т.д. вашего предыдущего персонажа.
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.

View File

@@ -0,0 +1,2 @@
cp14-announcement-gamemaster = Рассказчик
cp14-announcement-wrapped = [font size=14][bold]{$sender}: [/font][font size=12]{$message}[/font]

View File

@@ -0,0 +1 @@
cp14-event-announcement-demiplane-outbreak = Воздух пронзает чувство опасности... Что-то из других миров вторгается в ваш городок.

View File

@@ -1,2 +1,2 @@
cp14-ghost-role-information-name-skeleton = Скелет демиплана
cp14-ghost-role-information-description-skeleton = Порождение некромантии, стремящееся убить все живое, проникшее в демиплан.
cp14-ghost-role-information-name-skeleton = Оживленный скелет
cp14-ghost-role-information-description-skeleton = Порождение некромантии, вселившее живую душу в мертвые кости. Часто такие души контролируются некромантом, исполняя его волю.

View File

@@ -1 +1,3 @@
cp14-ghost-role-information-rules-demiplane = Вы - [color=red]антагонист демиплана[/color]. Ваша задача - убить вторженцев в демиплан любой ценой. Вы можете выполнять свою цель любыми способами. Вы не помните вашу прошлую жизнь, и вам абсолютно [color=red]НЕ[/color] разрешается помнить, скажем, имя, внешность и т.д. вашего предыдущего персонажа.
cp14-ghost-role-information-rules-demiplane = Вы - [color=red]антагонист демиплана[/color]. Ваша задача - убить вторженцев в демиплан любой ценой. Вы можете выполнять свою цель любыми способами. Вы не помните вашу прошлую жизнь, и вам абсолютно [color=red]НЕ[/color] разрешается помнить, скажем, имя, внешность и т.д. вашего предыдущего персонажа.
cp14-ghost-role-information-rules-free = Вы - [color=yellow]свободный антагонист[/color]. Вы можете делать все что хотите, если это не приводит к масштабным разрушениям и массовым смертям. Вы не помните вашу прошлую жизнь, и вам абсолютно [color=red]НЕ[/color] разрешается помнить, скажем, имя, внешность и т.д. вашего предыдущего персонажа.

View File

@@ -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

View File

@@ -27,11 +27,6 @@
children:
- id: CP14MobUndeadZombieGearMedium1
- id: CP14MobUndeadZombieGearMedium2
- !type:GroupSelector
weight: 10
children:
- id: CP14MobUndeadZombieGearHard1
- id: CP14MobUndeadZombieGearHard2
# Animal

View File

@@ -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

View File

@@ -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 ]

View File

@@ -71,6 +71,7 @@
- type: PointLight
energy: 5
radius: 8
- type: VentCritterSpawnLocation # Uggh, need something better
- type: entity
parent: CP14BaseLamppost

View File

@@ -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

View File

@@ -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

View File

@@ -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
- CP14TorchIgnited
- type: startingGear
id: CP14MobSkeletonCloset
equipment:
pants: CP14ClothingPantsLoincloth

View File

@@ -19,6 +19,7 @@
rules:
- CP14SociopathsRule
- CP14RoundObjectivesRule
- CP14BasicStationEventScheduler
- type: gamePreset
id: CP14Sandbox
@@ -31,3 +32,4 @@
rules:
- Sandbox
- CP14RoundObjectivesRule
- CP14BasicStationEventScheduler