diff --git a/Resources/Audio/Effects/Footsteps/attributions.yml b/Resources/Audio/Effects/Footsteps/attributions.yml index c86ce95de9..a6dea3f6ed 100644 --- a/Resources/Audio/Effects/Footsteps/attributions.yml +++ b/Resources/Audio/Effects/Footsteps/attributions.yml @@ -25,3 +25,10 @@ license: "CC-BY-SA-3.0" copyright: "Taken from https://github.com/tgstation/tgstation" source: "https://github.com/nero1024/tgstation/blob/83ccc939a20489de8ab81cb47e6f8e84c490adc2/sound/effects/footstep/slime1.ogg" + +- files: + - clownstepspider1.ogg + - clownstepspider2.ogg + license: "CC-BY-SA-3.0" + copyright: "Taken and modified from tgstation (clownstep 1 and 2) by brainfood1183 (github)" + source: "https://github.com/tgstation/tgstation/tree/f8ee37afc00bce1ad421615eaa0e4cbddd5eea90/sound/effects" diff --git a/Resources/Audio/Effects/Footsteps/clownspiderstep1.ogg b/Resources/Audio/Effects/Footsteps/clownspiderstep1.ogg new file mode 100644 index 0000000000..4ef8d8be8e Binary files /dev/null and b/Resources/Audio/Effects/Footsteps/clownspiderstep1.ogg differ diff --git a/Resources/Audio/Effects/Footsteps/clownspiderstep2.ogg b/Resources/Audio/Effects/Footsteps/clownspiderstep2.ogg new file mode 100644 index 0000000000..7e607b492a Binary files /dev/null and b/Resources/Audio/Effects/Footsteps/clownspiderstep2.ogg differ diff --git a/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml b/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml index 8bc504ec81..4864ba4f82 100644 --- a/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml +++ b/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml @@ -3,7 +3,12 @@ copyright: "Watering by elittle13. Converted to .OGG and MONO by EmoGarbage404 (github)" source: "https://freesound.org/people/elittle13/sounds/568558" +- files: ["laser_clown.ogg"] + license: "CC0-1.0" + copyright: "Made by brainfood1183 (github) for ss14" + source: "https://github.com/brainfood1183" + - files: ["harpoon.ogg"] license: "CC0-1.0" - copyright: "grappling hook by 16bitstudios. Converted to .OGG and MONO by metalgearsloth" + copyright: "Grappling hook by 16bitstudios. Converted to .OGG and MONO by metalgearsloth" source: "https://freesound.org/people/16bitstudios/sounds/541975/" diff --git a/Resources/Audio/Weapons/Guns/Gunshots/laser_clown.ogg b/Resources/Audio/Weapons/Guns/Gunshots/laser_clown.ogg new file mode 100644 index 0000000000..7069ef1801 Binary files /dev/null and b/Resources/Audio/Weapons/Guns/Gunshots/laser_clown.ogg differ diff --git a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl index 501ec4cf7e..5c417b0b48 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -142,3 +142,6 @@ ghost-role-information-cburn-agent-description = A highly trained CentCom agent, ghost-role-information-centcom-official-name = CentCom official ghost-role-information-centcom-official-description = Inspect the station, jot down performance reviews for heads of staff, bug the Captain. + +ghost-role-information-behonker-name = Behonker +ghost-role-information-behonker-description = You are an antagonist, bring death and honks to those who do not follow the honkmother. diff --git a/Resources/Prototypes/Body/Prototypes/behonker.yml b/Resources/Prototypes/Body/Prototypes/behonker.yml new file mode 100644 index 0000000000..26289d580d --- /dev/null +++ b/Resources/Prototypes/Body/Prototypes/behonker.yml @@ -0,0 +1,11 @@ +- type: body + id: Behonker + name: "behonker" + root: hand 1 + slots: + hand 1: + part: LeftArmBorg + connections: + - hand 2 + hand 2: + part: LeftArmBorg diff --git a/Resources/Prototypes/Entities/Markers/Spawners/mobs.yml b/Resources/Prototypes/Entities/Markers/Spawners/mobs.yml index b2bc34b2ed..b9a68ba556 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/mobs.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/mobs.yml @@ -493,6 +493,23 @@ prototypes: - MobMonkeyPunpun +- type: entity + name: behonker Spawner + id: SpawnMobBehonker + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - state: base + sprite: Objects/Weapons/Guns/Battery/behonker_eye.rsi + - type: ConditionalSpawner + prototypes: + - MobBehonkerIce + - MobBehonkerPyro + - MobBehonkerElectrical + - MobBehonkerGrav + - type: entity name: Monkey Spawner id: SpawnMobMonkey diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 4e2405af7e..f8d12e98a4 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1457,6 +1457,64 @@ description: ghost-role-information-giant-spider-description - type: GhostTakeoverAvailable +- type: entity + name: clown spider + parent: MobGiantSpider + id: MobClownSpider + description: Combines the two most terrifying things in existence, spiders and clowns. + components: + - type: Sprite + drawdepth: Mobs + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: clown + sprite: Mobs/Animals/clownspider.rsi + - type: Faction + factions: + - Xeno + - type: InputMover + - type: MobMover + - type: HTN + rootTask: SimpleHostileCompound + - type: Butcherable + spawned: + - id: MaterialBananium1 + amount: 1 + - type: GhostRole + makeSentient: true + name: ghost-role-information-giant-spider-name + description: ghost-role-information-giant-spider-description + - type: GhostTakeoverAvailable + - type: DamageStateVisuals + states: + Alive: + Base: clown + Dead: + Base: dead + - type: MobThresholds + thresholds: + 0: Alive + 180: Dead + - type: Spider + webPrototype: SpiderWebClown + - type: Tag + tags: + - DoorBumpOpener + - FootstepSound + - type: MeleeWeapon + hidden: true + angle: 0 + animation: WeaponArcBite + soundHit: + path: /Audio/Effects/bite.ogg + damage: + types: + Piercing: 8 + Poison: 6 + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepClownFast + - type: entity name: possum parent: SimpleMobBase diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml b/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml new file mode 100644 index 0000000000..a1a3284aae --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml @@ -0,0 +1,156 @@ +- type: entity + name: behonker + parent: SimpleSpaceMobBase + id: BaseMobBehonker + abstract: true + description: A floating demon aspect of the honkmother. + components: + - type: GhostRole + allowMovement: true + makeSentient: true + name: ghost-role-information-behonker-name + description: ghost-role-information-behonker-description + - type: GhostTakeoverAvailable + - type: HTN + rootTask: SimpleHostileCompound + - type: Faction + factions: + - SimpleHostile + - type: Speech + - type: CombatMode + - type: MobMover + - type: InputMover + - type: MovementSpeedModifier + baseWalkSpeed: 3 + baseSprintSpeed: 5 + weightlessModifier: 1.5 + - type: Sprite + sprite: Mobs/Demons/behonker.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: alive + - type: Appearance + - type: DamageStateVisuals + states: + Alive: + Base: alive + Dead: + Base: dead + - type: Physics + bodyType: KinematicController + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.40 + density: 100 + mask: + - FlyingMobMask + layer: + - FlyingMobLayer + - type: MobState + - type: InnateTool + tools: + - id: WeaponBehonkerLaser + - id: BikeHorn + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: MobThresholds + thresholds: + 0: Alive + 450: Critical + 500: Dead + - type: Metabolizer + solutionOnBody: false + updateFrequency: 0.25 + metabolizerTypes: [ Dragon ] + groups: + - id: Medicine + - id: Poison + - type: MovementAlwaysTouching + - type: NoSlip + - type: Butcherable + spawned: + - id: MaterialBananium1 + amount: 2 + - type: MeleeWeapon + hidden: true + soundHit: + path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg + damage: + types: + Piercing: 10 + Slash: 10 + - type: Anomaly + pulseSound: + collection: BananiumHorn + params: + volume: 5 + anomalyContactDamage: + types: + Radiation: 10 + - type: Input + context: "human" + - type: Hands + showInHands: false + - type: Body + prototype: Behonker + +- type: entity + name: behonker + parent: BaseMobBehonker + id: MobBehonkerElectrical + suffix: "Pyro" + components: + - type: PyroclasticAnomaly + - type: TempAffectingAnomaly + tempChangePerSecond: 25 + hotspotExposeTemperature: 1000 + - type: GasProducerAnomaly + releasedGas: 3 + releaseOnMaxSeverity: true + +- type: entity + name: behonker + parent: BaseMobBehonker + id: MobBehonkerPyro + suffix: "Electrical" + components: + - type: ElectricityAnomaly + - type: Electrified + +- type: entity + name: behonker + parent: BaseMobBehonker + id: MobBehonkerGrav + suffix: "Grav" + components: + - type: GravityAnomaly + +- type: entity + name: behonker + parent: BaseMobBehonker + id: MobBehonkerIce + suffix: "Ice" + components: + - type: Anomaly + anomalyContactDamage: + types: + Cold: 10 + - type: ExplosionAnomaly + supercriticalExplosion: Cryo + explosionTotalIntensity: 1000 + explosionDropoff: 1 + explosionMaxTileIntensity: 10 + - type: ProjectileAnomaly + projectilePrototype: ProjectileIcicle + targetNonSentientChance: 0.1 + - type: TempAffectingAnomaly + tempChangePerSecond: -25 + hotspotExposeTemperature: -1000 + - type: GasProducerAnomaly + releasedGas: 8 # Frezon. Please replace if there is a better way to specify this + releaseOnMaxSeverity: true diff --git a/Resources/Prototypes/Entities/Objects/Misc/spider_web.yml b/Resources/Prototypes/Entities/Objects/Misc/spider_web.yml index d7a05e874d..3f669bf2f2 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/spider_web.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/spider_web.yml @@ -22,9 +22,9 @@ - type: GenericVisualizer visuals: enum.SpiderWebVisuals.Variant: - spiderWebLayer: - 1: {state: spider_web_1} - 2: {state: spider_web_2} + spiderWebLayer: + 1: {state: spider_web_1} + 2: {state: spider_web_2} - type: Clickable - type: Transform anchored: true @@ -73,3 +73,96 @@ ignoreWhitelist: components: - IgnoreSpiderWeb + +- type: entity + id: SpiderWebClown + name: clown spider web + description: It's stringy and slippy. + placement: + mode: SnapgridCenter + snap: + - Wall + components: + - type: MeleeSound + soundGroups: + Brute: + path: + "/Audio/Weapons/slash.ogg" + - type: Sprite + sprite: Objects/Misc/spiderweb.rsi + layers: + - state: spider_web_clown_1 + map: ["spiderWebLayer"] + drawdepth: WallMountedItems + netsync: false + - type: Appearance + - type: GenericVisualizer + visuals: + enum.SpiderWebVisuals.Variant: + spiderWebLayer: + 1: {state: spider_web_clown_1} + 2: {state: spider_web_clown_2} + - type: Clickable + - type: Transform + anchored: true + - type: Slippery + paralyzeTime: 2 + launchForwardsMultiplier: 1.5 + - type: StepTrigger + intersectRatio: 0.2 + - type: Physics + - type: Fixtures + fixtures: + slips: + shape: + !type:PhysShapeAabb + bounds: "-0.4,-0.3,0.4,0.3" + hard: false + layer: + - SlipLayer + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.4,-0.3,0.4,0.3" + density: 1000 + mask: + - ItemMask + - type: Damageable + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 10 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Temperature + heatDamage: + types: + Heat: 5 + coldDamage: {} + ColdDamageThreshold: 0 + - type: Flammable + fireSpread: true + cold: + types: {} + damage: + types: + Heat: 1 + - type: Reactive + groups: + Flammable: [Touch] + Extinguish: [Touch] + - type: SpiderWebObject + - type: FlavorProfile + flavors: + - sweet + - type: Food + delay: 2 + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: Sugar + Quantity: 2 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index f995b90a13..00d7800bf7 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -427,3 +427,35 @@ - type: Appearance - type: StaticPrice price: 63 + + +- type: entity + name: Eye of a behonker + parent: BaseWeaponBatterySmall + id: WeaponBehonkerLaser + description: The eye of a behonker, it fires a laser when squeezed. + components: + - type: Item + size: 30 + - type: Sprite + sprite: Objects/Weapons/Guns/Battery/behonker_eye.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: Gun + fireRate: 1 + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/laser_clown.ogg + - type: HitscanBatteryAmmoProvider + proto: RedMediumLaser + fireCost: 100 + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 40 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: true + - type: Appearance + - type: StaticPrice + price: 750 diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 1336d42917..0df115ea3c 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -277,6 +277,22 @@ amount: 4 maxAmount: 8 +- type: entity + id: SpiderClownSpawn + parent: BaseGameRule + noSpawn: true + components: + - type: StationEvent + earliestStart: 20 + minimumPlayers: 15 + weight: 2 + duration: 60 + - type: VentCrittersRule + entries: + - id: MobClownSpider + amount: 4 + maxAmount: 8 + - type: entity id: ZombieOutbreak parent: BaseGameRule diff --git a/Resources/Prototypes/SoundCollections/footsteps.yml b/Resources/Prototypes/SoundCollections/footsteps.yml index f3275eb66e..00f723b054 100644 --- a/Resources/Prototypes/SoundCollections/footsteps.yml +++ b/Resources/Prototypes/SoundCollections/footsteps.yml @@ -147,3 +147,9 @@ id: FootstepBounce files: - /Audio/Effects/Footsteps/bounce.ogg + +- type: soundCollection + id: FootstepClownFast + files: + - /Audio/Effects/Footsteps/clownspiderstep1.ogg + - /Audio/Effects/Footsteps/clownspiderstep2.ogg diff --git a/Resources/Textures/Mobs/Animals/clownspider.rsi/clown.png b/Resources/Textures/Mobs/Animals/clownspider.rsi/clown.png new file mode 100644 index 0000000000..0fdf016494 Binary files /dev/null and b/Resources/Textures/Mobs/Animals/clownspider.rsi/clown.png differ diff --git a/Resources/Textures/Mobs/Animals/clownspider.rsi/dead.png b/Resources/Textures/Mobs/Animals/clownspider.rsi/dead.png new file mode 100644 index 0000000000..17e84c0885 Binary files /dev/null and b/Resources/Textures/Mobs/Animals/clownspider.rsi/dead.png differ diff --git a/Resources/Textures/Mobs/Animals/clownspider.rsi/meta.json b/Resources/Textures/Mobs/Animals/clownspider.rsi/meta.json new file mode 100644 index 0000000000..d95efefe37 --- /dev/null +++ b/Resources/Textures/Mobs/Animals/clownspider.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Alekshhh and brainfood1183 (github) for ss14", + "states": [ + { + "name": "dead", + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "clown", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Mobs/Demons/behonker.rsi/alive.png b/Resources/Textures/Mobs/Demons/behonker.rsi/alive.png new file mode 100644 index 0000000000..543b4ccf8b Binary files /dev/null and b/Resources/Textures/Mobs/Demons/behonker.rsi/alive.png differ diff --git a/Resources/Textures/Mobs/Demons/behonker.rsi/dead.png b/Resources/Textures/Mobs/Demons/behonker.rsi/dead.png new file mode 100644 index 0000000000..b05539584e Binary files /dev/null and b/Resources/Textures/Mobs/Demons/behonker.rsi/dead.png differ diff --git a/Resources/Textures/Mobs/Demons/behonker.rsi/meta.json b/Resources/Textures/Mobs/Demons/behonker.rsi/meta.json new file mode 100644 index 0000000000..7794f34f23 --- /dev/null +++ b/Resources/Textures/Mobs/Demons/behonker.rsi/meta.json @@ -0,0 +1,48 @@ +{ + "version": 1, + "size": { + "x": 64, + "y": 64 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Alekshhh (github) and brainfood1183 (github) for ss14", + "states": [ + { + "name": "alive", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "dead" + } + ] +} diff --git a/Resources/Textures/Objects/Misc/spiderweb.rsi/meta.json b/Resources/Textures/Objects/Misc/spiderweb.rsi/meta.json index fbb29bcf3b..e89ad66d45 100644 --- a/Resources/Textures/Objects/Misc/spiderweb.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/spiderweb.rsi/meta.json @@ -10,7 +10,13 @@ { "name": "spider_web_1" }, - { + { + "name": "spider_web_clown_1" + }, + { + "name": "spider_web_clown_2" + }, + { "name": "spider_web_2" } ] diff --git a/Resources/Textures/Objects/Misc/spiderweb.rsi/spider_web_clown_1.png b/Resources/Textures/Objects/Misc/spiderweb.rsi/spider_web_clown_1.png new file mode 100644 index 0000000000..e96ed327c8 Binary files /dev/null and b/Resources/Textures/Objects/Misc/spiderweb.rsi/spider_web_clown_1.png differ diff --git a/Resources/Textures/Objects/Misc/spiderweb.rsi/spider_web_clown_2.png b/Resources/Textures/Objects/Misc/spiderweb.rsi/spider_web_clown_2.png new file mode 100644 index 0000000000..91931c7d8f Binary files /dev/null and b/Resources/Textures/Objects/Misc/spiderweb.rsi/spider_web_clown_2.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/behonker_eye.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Battery/behonker_eye.rsi/base.png new file mode 100644 index 0000000000..8361c079aa Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/behonker_eye.rsi/base.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/behonker_eye.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/behonker_eye.rsi/meta.json new file mode 100644 index 0000000000..3abd022f8a --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/behonker_eye.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by brainfood1183 (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "base" + } + ] +}