diff --git a/Resources/Audio/_QB/Animals/attributions.yml b/Resources/Audio/_QB/Animals/attributions.yml new file mode 100644 index 0000000000000..5c4fa1c1e711a --- /dev/null +++ b/Resources/Audio/_QB/Animals/attributions.yml @@ -0,0 +1,4 @@ +- files: [ "mosquito.ogg" ] + license: "Custom" + copyright: "Created by pixabay user freesound_community. The original audio split to mono, trimmed and converted from MP3 to OGG format by rebe83" + source: "https://pixabay.com/sound-effects/nature-flying-mosquito-105770/" diff --git a/Resources/Audio/_QB/Animals/mosquito.ogg b/Resources/Audio/_QB/Animals/mosquito.ogg new file mode 100644 index 0000000000000..4d1a0df351e8b Binary files /dev/null and b/Resources/Audio/_QB/Animals/mosquito.ogg differ diff --git a/Resources/Locale/en-US/_QB/ghost-roles/ghost-role-component.ftl b/Resources/Locale/en-US/_QB/ghost-roles/ghost-role-component.ftl new file mode 100644 index 0000000000000..e15e006220b16 --- /dev/null +++ b/Resources/Locale/en-US/_QB/ghost-roles/ghost-role-component.ftl @@ -0,0 +1,2 @@ +ghost-role-information-mosquito-name = Mosquito +ghost-role-information-mosquito-description = A hungry little bug looking for a bite to eat. diff --git a/Resources/Prototypes/_Impstation/GameRules/pests.yml b/Resources/Prototypes/_Impstation/GameRules/pests.yml index 993d78e5a312a..3138b7853e966 100644 --- a/Resources/Prototypes/_Impstation/GameRules/pests.yml +++ b/Resources/Prototypes/_Impstation/GameRules/pests.yml @@ -135,6 +135,8 @@ prob: 0 - id: MobButterfly prob: 0 + - id: MobMosquito # QB + prob: 0 - type: entity id: SlimesSpawn diff --git a/Resources/Prototypes/_QB/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/_QB/Entities/Mobs/NPCs/animals.yml index 2f4a2a9e3863a..0aa11e37096d5 100644 --- a/Resources/Prototypes/_QB/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/_QB/Entities/Mobs/NPCs/animals.yml @@ -16,3 +16,108 @@ - type: HTN rootTask: task: MeleeDogCompound + +- type: entity + name: mosquito + parent: [ SimpleMobBase, FlyingMobBase] + id: MobMosquito + description: EEEEeeeeEEEEEEEEeeEEE + components: + - type: VentCrawler + enterDelay: 1 + - type: Item + size: Tiny + - type: CombatMode + - type: MeleeWeapon + altDisarm: false + angle: 0 + animation: WeaponArcThrust + soundHit: + path: /Audio/Weapons/star_hit.ogg + damage: + types: + Bloodloss: 2 + - type: MovementSpeedModifier + baseWalkSpeed : 3 + baseSprintSpeed : 7 + - type: GhostRole + makeSentient: true + allowSpeech: false + allowMovement: true + name: ghost-role-information-mosquito-name + description: ghost-role-information-mosquito-description + rules: ghost-role-information-freeagent-rules + mindRoles: + - MindRoleGhostRoleFreeAgentHarmless + - type: GhostTakeoverAvailable + - type: Emoting + - type: Sprite + drawdepth: Mobs + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + sprite: _QB/Mobs/Animals/mosquito.rsi + state: mosquito + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.1 # making them smaller makes them die of heat...? + density: 30 # making them less dense makes them die of heat...? + mask: + - FlyingMobMask + layer: + - FlyingMobLayer + - type: MobState + - type: MobThresholds + thresholds: + 0: Alive + 10: Dead # two punches + - type: TriggerOnMobstateChange + mobState: + - Dead + - type: EmitSoundOnTrigger + sound: + path: /Audio/Voice/Slime/slime_squish.ogg + params: + variation: 0.125 + - type: DamageStateVisuals + states: + Alive: + Base: mosquito + Dead: + Base: dead + - type: Bloodstream + bloodReferenceSolution: + reagents: + - ReagentId: InsectBlood + Quantity: 1 + - type: MobPrice + price: 50 + - type: NPCRetaliation + - type: FactionException + - type: NpcFactionMember + factions: + - Passive + - type: HTN + rootTask: + task: SimpleHostileCompound + - type: Destructible + thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Blunt + damage: 20 + behaviors: + - !type:GibBehavior + recursive: false + - type: AmbientSound + enabled: true + volume: -3 + range: 8 + sound: + path: /Audio/_QB/Animals/mosquito.ogg + - type: Tag + tags: + - Trash + - MultitoolDefibrillatorTarget diff --git a/Resources/Prototypes/_QB/GameRules/pests.yml b/Resources/Prototypes/_QB/GameRules/pests.yml index c086487337a10..2efe84d558184 100644 --- a/Resources/Prototypes/_QB/GameRules/pests.yml +++ b/Resources/Prototypes/_QB/GameRules/pests.yml @@ -13,3 +13,18 @@ prob: 0.04 - id: PolyoomyciteVentSpawner prob: 0.02 + +- type: entity + id: MosquitoSpawn + parent: BaseStationEventShortDelay + components: + - type: StationEvent + earliestStart: 20 + minimumPlayers: 1 #Nobody is safe + weight: 5 + duration: 60 + - type: VentCrittersRule + announce: false # CC can't detect this + entries: + - id: MosquitoVentSpawner + prob: 0.05 diff --git a/Resources/Prototypes/_QB/Markers/Spawners/Conditional/timed.yml b/Resources/Prototypes/_QB/Markers/Spawners/Conditional/timed.yml index fbd924595e414..4d1780ff049d3 100644 --- a/Resources/Prototypes/_QB/Markers/Spawners/Conditional/timed.yml +++ b/Resources/Prototypes/_QB/Markers/Spawners/Conditional/timed.yml @@ -35,3 +35,22 @@ chance: 0.9 minimumEntitiesSpawned: 1 maximumEntitiesSpawned: 4 + +- type: entity + name: Mosquito Vent Spawner + id: MosquitoVentSpawner + parent: MarkerBase + components: + - type: Sprite + layers: + - state: blue + - sprite: _QB/Mobs/Animals/mosquito.rsi + state: icon + - state: timed + - type: Timer + - type: ClusterSpawner + prototypes: + - MobMosquito + chance: 0.9 + minimumEntitiesSpawned: 3 + maximumEntitiesSpawned: 10 diff --git a/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/dead.png b/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/dead.png new file mode 100644 index 0000000000000..86aff45def44c Binary files /dev/null and b/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/dead.png differ diff --git a/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/icon.png b/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/icon.png new file mode 100644 index 0000000000000..7e67302fd4fb8 Binary files /dev/null and b/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/icon.png differ diff --git a/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/meta.json b/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/meta.json new file mode 100644 index 0000000000000..bb7417afbccf8 --- /dev/null +++ b/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/meta.json @@ -0,0 +1,21 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "by rebe83 (Github)", + "size": { + "x": 16, + "y": 16 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "dead" + }, + { + "name": "mosquito", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/mosquito.png b/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/mosquito.png new file mode 100644 index 0000000000000..521a8a1e89986 Binary files /dev/null and b/Resources/Textures/_QB/Mobs/Animals/mosquito.rsi/mosquito.png differ