diff --git a/Content.Server/_Honk/Speech/Components/CaucasianAccentComponent.cs b/Content.Server/_Honk/Speech/Components/CaucasianAccentComponent.cs new file mode 100644 index 0000000000..7195d8feda --- /dev/null +++ b/Content.Server/_Honk/Speech/Components/CaucasianAccentComponent.cs @@ -0,0 +1,10 @@ +using Content.Server._Honk.Speech.EntitySystems; + +namespace Content.Server._Honk.Speech.Components; + +[RegisterComponent] +[Access(typeof(CaucasianAccentSystem))] +public sealed partial class CaucasianAccentComponent : Component +{ + +} diff --git a/Content.Server/_Honk/Speech/EntitySystems/CaucasianAccentSystem.cs b/Content.Server/_Honk/Speech/EntitySystems/CaucasianAccentSystem.cs new file mode 100644 index 0000000000..5668c8bdc5 --- /dev/null +++ b/Content.Server/_Honk/Speech/EntitySystems/CaucasianAccentSystem.cs @@ -0,0 +1,42 @@ +using System.Text.RegularExpressions; +using Content.Server._Honk.Speech.Components; +using Content.Server.Speech; +using Content.Server.Speech.EntitySystems; + +namespace Content.Server._Honk.Speech.EntitySystems; + +public sealed class CaucasianAccentSystem : EntitySystem +{ + [Dependency] private readonly ReplacementAccentSystem _replacement = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnAccent); + } + + private void OnAccent(EntityUid uid, CaucasianAccentComponent component, AccentGetEvent args) + { + var message = args.Message; + + message = _replacement.ApplyReplacements(message, "caucasian"); + + //They shoulda started runnin' an' hidin' from me! + + message = Regex.Replace(message, @"Эй", "Эу"); + message = Regex.Replace(message, @"эй", "эу"); + + message = Regex.Replace(message, @"ые", "ии"); + + message = Regex.Replace(message, @"Ы", "И"); + message = Regex.Replace(message, @"ы", "и"); + + message = Regex.Replace(message, @"Ё", "Йо"); + message = Regex.Replace(message, @"ё", "йо"); + + message = Regex.Replace(message, @"Е", "Э"); + message = Regex.Replace(message, @"е", "э"); + + args.Message = message; + } +}; diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index 5f25d3bd6b..fab5250946 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -88,8 +88,6 @@ - map: [ "enum.HumanoidVisualLayers.RArm" ] - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.GenitalVisualLayers.BreastFront" ] # AMOUR - - map: [ "underwearb" ] #White - - map: [ "underweart" ] #White - shader: StencilClear sprite: Mobs/Species/Human/parts.rsi #PJB on stencil clear being on the left leg: "...this is 'fine'" -https://github.com/space-wizards/space-station-14/pull/12217#issuecomment-1291677115 # its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear. diff --git a/Resources/Prototypes/_Honk/Catalog/uplink_catalog.yml b/Resources/Prototypes/_Honk/Catalog/uplink_catalog.yml new file mode 100644 index 0000000000..42530946e1 --- /dev/null +++ b/Resources/Prototypes/_Honk/Catalog/uplink_catalog.yml @@ -0,0 +1,9 @@ +- type: listing + id: UplinkReinforcementRadioDemolitionist + name: Радио вызова подрывника + icon: { sprite: Objects/Devices/communication.rsi, state: old-radio } + productEntity: ReinforcementRadioDemolitionist + cost: + Telecrystal: 12 + categories: + - UplinkAllies diff --git a/Resources/Prototypes/_Honk/Datasets/Names/arab.yml b/Resources/Prototypes/_Honk/Datasets/Names/arab.yml new file mode 100644 index 0000000000..5b972d4702 --- /dev/null +++ b/Resources/Prototypes/_Honk/Datasets/Names/arab.yml @@ -0,0 +1,41 @@ +- type: dataset + id: NamesFirstArab + values: + - Ахмед + - Абдула + - Амин + - Амир + - Анас + - Абу + - Азим + - Акиф + - Асад + - Басим + - Басир + - Билях + - Башир + - Вахадж + - Гази + - Джабир + - Джамал + - Захид + - Иршад + - Исмаил + - Муаммар + - Низам + - Салиф + - Фалих + +- type: dataset + id: NamesLastArab + values: + - Намазов + - Абдулла + - Абдалкадир + - Аббас + - Адил + - Хусейн + - Гульзар + - Гавдат + - Вассим + - Вахида diff --git a/Resources/Prototypes/_Honk/Devices/Electronic/signaller.yml b/Resources/Prototypes/_Honk/Devices/Electronic/signaller.yml new file mode 100644 index 0000000000..f52d085821 --- /dev/null +++ b/Resources/Prototypes/_Honk/Devices/Electronic/signaller.yml @@ -0,0 +1,8 @@ +- type: entity + parent: RemoteSignaller + id: RemoteSignallerSyndicate + name: передатчик сигналов синдиката + components: + - type: Sprite + sprite: _Honk/Devices/signallersyndicate.rsi + state: signaller diff --git a/Resources/Prototypes/_Honk/Entities/Clothing/Belt/belts.yml b/Resources/Prototypes/_Honk/Entities/Clothing/Belt/belts.yml new file mode 100644 index 0000000000..e5292a7be5 --- /dev/null +++ b/Resources/Prototypes/_Honk/Entities/Clothing/Belt/belts.yml @@ -0,0 +1,21 @@ +- type: entity + parent: ClothingBeltBase + id: ClothingBeltShahid + name: пояс подрывника + description: Лучше не стоять рядом + components: + - type: Sprite + sprite: _Honk/Clothing/Belt/shahidbelt.rsi + - type: Clothing + sprite: _Honk/Clothing/Belt/shahidbelt.rsi + - type: TriggerOnSignal + - type: DeviceLinkSink + ports: + - Trigger + - type: Explosive # Powerful explosion in a very small radius. Doesn't break underplating. + explosionType: DemolitionCharge + totalIntensity: 400 + intensitySlope: 8 + maxIntensity: 75 + canCreateVacuum: false + - type: ExplodeOnTrigger diff --git a/Resources/Prototypes/_Honk/Entities/Clothing/Mask/mask.yml b/Resources/Prototypes/_Honk/Entities/Clothing/Mask/mask.yml new file mode 100644 index 0000000000..970ffa37d9 --- /dev/null +++ b/Resources/Prototypes/_Honk/Entities/Clothing/Mask/mask.yml @@ -0,0 +1,10 @@ +- type: entity + parent: ClothingMaskPullableBase + id: ClothingBalaclava + name: балаклава + description: Балаклава + components: + - type: Sprite + sprite: _Honk/Clothing/Mask/balaclava.rsi + - type: Clothing + sprite: _Honk/Clothing/Mask/balaclava.rsi diff --git a/Resources/Prototypes/_Honk/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/_Honk/Entities/Markers/Spawners/ghost_roles.yml new file mode 100644 index 0000000000..fb8b9fde9e --- /dev/null +++ b/Resources/Prototypes/_Honk/Entities/Markers/Spawners/ghost_roles.yml @@ -0,0 +1,16 @@ +- type: entity + parent: MarkerBase + id: SpawnPointGhostDemolitionist + name: точка появление подрывника синдиката + components: + - type: GhostRole + name: Подрывник синдиката + description: Пришёл, чтобы красиво уйти + rules: Вы - антагонист и можете убивать всех, кто пытается вам помешать, но убийство цели - всегда ваш наивысший приоритет. + - type: GhostRoleMobSpawner + prototype: MobHumanDemolitionist + - type: Sprite + layers: + - state: green + - sprite: Mobs/Species/Human/parts.rsi + state: full diff --git a/Resources/Prototypes/_Honk/Entities/Mobs/Player/human.yml b/Resources/Prototypes/_Honk/Entities/Mobs/Player/human.yml new file mode 100644 index 0000000000..d0b6407627 --- /dev/null +++ b/Resources/Prototypes/_Honk/Entities/Mobs/Player/human.yml @@ -0,0 +1,19 @@ +# Подрывник синдиката +- type: entity + parent: MobHuman + id: MobHumanDemolitionist + name: подрывник синдиката + suffix: Human, Base + components: + - type: CaucasianAccent + - type: GenericAntag + rule: Destroy + - type: Loadout + prototypes: [SyndicateDemolitionistGearExtremely] + - type: RandomMetadata + nameSegments: + - NamesFirstArab + - NamesLastArab + - type: NpcFactionMember + factions: + - Syndicate diff --git a/Resources/Prototypes/_Honk/Entities/Objects/Devices/Sindicate_Gadgets/reinforcement_teleporter.yml b/Resources/Prototypes/_Honk/Entities/Objects/Devices/Sindicate_Gadgets/reinforcement_teleporter.yml new file mode 100644 index 0000000000..d46479b69d --- /dev/null +++ b/Resources/Prototypes/_Honk/Entities/Objects/Devices/Sindicate_Gadgets/reinforcement_teleporter.yml @@ -0,0 +1,21 @@ +- type: entity + parent: BaseItem + id: ReinforcementRadioDemolitionist + name: Радио подкрепления подрывника-синдиката + components: + - type: Sprite + sprite: Objects/Devices/communication.rsi + layers: + - state: old-radio + - type: GhostRole + name: Подрывник синдиката + description: Искусство - это взрыв. + rules: Правило 1 - взорваться + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobHumanDemolitionist + - type: EmitSoundOnUse + sound: /Audio/Effects/Emotes/parp1.ogg + - type: UseDelay + delay: 300 diff --git a/Resources/Prototypes/_Honk/GameRules/events.yml b/Resources/Prototypes/_Honk/GameRules/events.yml new file mode 100644 index 0000000000..e1ec1a8e1d --- /dev/null +++ b/Resources/Prototypes/_Honk/GameRules/events.yml @@ -0,0 +1,12 @@ +- type: entity + parent: BaseGameRule + id: DemolitionistSpawn + noSpawn: true + components: + - type: StationEvent + weight: 8 + duration: 1 + earliestStart: 20 + minimumPlayers: 20 + - type: RandomSpawnRule + prototype: SpawnPointGhostDemolitionist diff --git a/Resources/Prototypes/_Honk/GameRules/midround.yml b/Resources/Prototypes/_Honk/GameRules/midround.yml new file mode 100644 index 0000000000..f67080e46a --- /dev/null +++ b/Resources/Prototypes/_Honk/GameRules/midround.yml @@ -0,0 +1,9 @@ +- type: entity + noSpawn: true + parent: BaseGameRule + id: Destroy + components: + - type: GenericAntagRule + agentName: подрывник + objectives: + - DemolitionistObjective diff --git a/Resources/Prototypes/_Honk/Objectives/demolitionist.yml b/Resources/Prototypes/_Honk/Objectives/demolitionist.yml new file mode 100644 index 0000000000..0a5458e913 --- /dev/null +++ b/Resources/Prototypes/_Honk/Objectives/demolitionist.yml @@ -0,0 +1,22 @@ +- type: entity + abstract: true + parent: BaseObjective + id: BaseDemolitionistObjective + components: + - type: Objective + difficulty: 1 + issuer: Цель + +- type: entity + noSpawn: true + parent: [BaseDemolitionistObjective, BaseKillObjective] + id: DemolitionistObjective + description: Враг синдиката должен быть взорван! + components: + - type: Objective + unique: false + - type: TargetObjective + title: Взорви врага синдиката! + - type: PickRandomPerson + - type: KillPersonCondition + requireDead: true diff --git a/Resources/Prototypes/_Honk/Role/Antags/demolitionist.yml b/Resources/Prototypes/_Honk/Role/Antags/demolitionist.yml new file mode 100644 index 0000000000..94d48681c0 --- /dev/null +++ b/Resources/Prototypes/_Honk/Role/Antags/demolitionist.yml @@ -0,0 +1,6 @@ +- type: antag + id: Demolitionist + name: Подрывник синдиката + antagonist: true + setPreference: false + objective: Искусство - это взрыв! diff --git a/Resources/Prototypes/_Honk/Role/Job/Fun/misc_startinggear.yml b/Resources/Prototypes/_Honk/Role/Job/Fun/misc_startinggear.yml new file mode 100644 index 0000000000..c6167ea34a --- /dev/null +++ b/Resources/Prototypes/_Honk/Role/Job/Fun/misc_startinggear.yml @@ -0,0 +1,12 @@ +- type: startingGear + id: SyndicateDemolitionistGearExtremely + equipment: + id: AgentIDCard + belt: ClothingBeltShahid + mask: ClothingBalaclava + jumpsuit: ClothingUniformJumpsuitOperative + back: ClothingBackpackSyndicate + shoes: ClothingShoesBootsCombatFilled + gloves: ClothingHandsGlovesColorBlack + pocket1: Multitool + pocket2: RemoteSignallerSyndicate diff --git a/Resources/Prototypes/_Honk/Traits/neutral.yml b/Resources/Prototypes/_Honk/Traits/neutral.yml new file mode 100644 index 0000000000..f131bef9be --- /dev/null +++ b/Resources/Prototypes/_Honk/Traits/neutral.yml @@ -0,0 +1,6 @@ +- type: trait + id: Caucasian + name: Кавказский акцент + description: Эу брат, пачэму ты нэ вибрал чэрту + components: + - type: CaucasianAccent diff --git a/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/equipped-BELT.png b/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/equipped-BELT.png new file mode 100644 index 0000000000..1d349150b8 Binary files /dev/null and b/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/equipped-BELT.png differ diff --git a/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/icon.png b/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/icon.png new file mode 100644 index 0000000000..2c93b0e717 Binary files /dev/null and b/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/icon.png differ diff --git a/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/inhand-left.png b/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/inhand-left.png new file mode 100644 index 0000000000..9edac4c151 Binary files /dev/null and b/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/inhand-left.png differ diff --git a/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/inhand-right.png b/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/inhand-right.png new file mode 100644 index 0000000000..2489dcd7ec Binary files /dev/null and b/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/inhand-right.png differ diff --git a/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/meta.json b/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/meta.json new file mode 100644 index 0000000000..a86cf7b98f --- /dev/null +++ b/Resources/Textures/_Honk/Clothing/Belt/shahidbelt.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "Нету", + "copyright": "from Arab to Arab", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-BELT", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Honk/Clothing/Mask/balaclava.rsi/equipped-MASK.png b/Resources/Textures/_Honk/Clothing/Mask/balaclava.rsi/equipped-MASK.png new file mode 100644 index 0000000000..3597914bff Binary files /dev/null and b/Resources/Textures/_Honk/Clothing/Mask/balaclava.rsi/equipped-MASK.png differ diff --git a/Resources/Textures/_Honk/Clothing/Mask/balaclava.rsi/icon.png b/Resources/Textures/_Honk/Clothing/Mask/balaclava.rsi/icon.png new file mode 100644 index 0000000000..2c629ff148 Binary files /dev/null and b/Resources/Textures/_Honk/Clothing/Mask/balaclava.rsi/icon.png differ diff --git a/Resources/Textures/_Honk/Clothing/Mask/balaclava.rsi/meta.json b/Resources/Textures/_Honk/Clothing/Mask/balaclava.rsi/meta.json new file mode 100644 index 0000000000..ec1841a404 --- /dev/null +++ b/Resources/Textures/_Honk/Clothing/Mask/balaclava.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Hello", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-MASK", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Honk/Clothing/Mask/keffiyeh.rsi/equipped-MASK.png b/Resources/Textures/_Honk/Clothing/Mask/keffiyeh.rsi/equipped-MASK.png new file mode 100644 index 0000000000..bb0a00162c Binary files /dev/null and b/Resources/Textures/_Honk/Clothing/Mask/keffiyeh.rsi/equipped-MASK.png differ diff --git a/Resources/Textures/_Honk/Clothing/Mask/keffiyeh.rsi/icon.png b/Resources/Textures/_Honk/Clothing/Mask/keffiyeh.rsi/icon.png new file mode 100644 index 0000000000..9d4fbe6d59 Binary files /dev/null and b/Resources/Textures/_Honk/Clothing/Mask/keffiyeh.rsi/icon.png differ diff --git a/Resources/Textures/_Honk/Clothing/Mask/keffiyeh.rsi/meta.json b/Resources/Textures/_Honk/Clothing/Mask/keffiyeh.rsi/meta.json new file mode 100644 index 0000000000..ec1841a404 --- /dev/null +++ b/Resources/Textures/_Honk/Clothing/Mask/keffiyeh.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Hello", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-MASK", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/inhand-left.png b/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/inhand-left.png new file mode 100644 index 0000000000..2d3863145b Binary files /dev/null and b/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/inhand-left.png differ diff --git a/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/inhand-right.png b/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/inhand-right.png new file mode 100644 index 0000000000..1704b9c3c1 Binary files /dev/null and b/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/inhand-right.png differ diff --git a/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/meta.json b/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/meta.json new file mode 100644 index 0000000000..c600da937b --- /dev/null +++ b/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Маи права хихи хаха", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "signaller", + "delays": [ + [ + 0.4, + 0.2, + 0.1, + 0.1 + ] + ] + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/signaller.png b/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/signaller.png new file mode 100644 index 0000000000..66f36e2c6d Binary files /dev/null and b/Resources/Textures/_Honk/Devices/signallersyndicate.rsi/signaller.png differ