diff --git a/Resources/Audio/_CP14/Animals/attributions.yml b/Resources/Audio/_CP14/Animals/attributions.yml index 0997ea2be7..c0efda4ff9 100644 --- a/Resources/Audio/_CP14/Animals/attributions.yml +++ b/Resources/Audio/_CP14/Animals/attributions.yml @@ -47,3 +47,13 @@ license: "CC-BY-4.0" copyright: 'by GreatNate98 of Freesound.org. Cropped and mixed from stereo to mono.' source: "https://freesound.org/people/GreatNate98/sounds/586547/" + +- files: ["swarm.ogg"] + license: "CC0-1.0" + copyright: 'by bruno.auzet of Freesound.org. Cropped and mixed from stereo to mono.' + source: "https://freesound.org/people/bruno.auzet/sounds/578267/" + +- files: ["swarm_hit.ogg"] + license: "CC0-1.0" + copyright: 'by egomassive of Freesound.org.' + source: "https://freesound.org/people/egomassive/sounds/536728/" diff --git a/Resources/Audio/_CP14/Animals/swarm.ogg b/Resources/Audio/_CP14/Animals/swarm.ogg new file mode 100644 index 0000000000..60e226aef8 Binary files /dev/null and b/Resources/Audio/_CP14/Animals/swarm.ogg differ diff --git a/Resources/Audio/_CP14/Animals/swarm_hit.ogg b/Resources/Audio/_CP14/Animals/swarm_hit.ogg new file mode 100644 index 0000000000..61b2a15b4d Binary files /dev/null and b/Resources/Audio/_CP14/Animals/swarm_hit.ogg differ diff --git a/Resources/Prototypes/_CP14/Damage/modifier_sets.yml b/Resources/Prototypes/_CP14/Damage/modifier_sets.yml index 3a11cfc570..9a4caea026 100644 --- a/Resources/Prototypes/_CP14/Damage/modifier_sets.yml +++ b/Resources/Prototypes/_CP14/Damage/modifier_sets.yml @@ -35,3 +35,13 @@ Heat: 0.8 Cold: 1.4 Poison: 0.8 + +- type: damageModifierSet + id: CP14LittleInsects + coefficients: + Blunt: 0.0 + Slash: 0.0 + Piercing: 0.0 + Heat: 1.3 + Cold: 0.8 + Poison: 0.2 diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml index e5cb14a8f9..1603d9b312 100644 --- a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml +++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml @@ -134,3 +134,19 @@ - type: ConditionalSpawner prototypes: - CP14MobMonsterMole + +- type: entity + name: bloodworm mosquitoes spawner + id: CP14SpawnMobMonsterMosquito + parent: MarkerBase + categories: [ ForkFiltered ] + components: + - type: Sprite + layers: + - sprite: Markers/cross.rsi + state: green + - sprite: _CP14/Mobs/Monster/mosquito.rsi + state: mosquitos + - type: ConditionalSpawner + prototypes: + - CP14MobMonsterMosquito diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/monster.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/monster.yml index 335fb8f6c6..fad8fe423f 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/monster.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/monster.yml @@ -92,6 +92,7 @@ - type: Tag tags: - FootstepSound + - CP14Mosquito - type: StealTarget stealGroup: CP14Mole @@ -140,3 +141,85 @@ sprite: _CP14/Effects/dirt.rsi layers: - state: dirt1 + +- type: entity + id: CP14MobMonsterMosquito + parent: [ SimpleMobBase, FlyingMobBase ] + name: bloodworm mosquitoes + description: A bloodthirsty swarm of small mosquitoes just waiting for a soft flesh for a bloody feast. + categories: [ ForkFiltered ] + components: + - type: HTN + rootTask: + task: CP14ApproachEnemyCompound + blackboard: + VisionRadius: !type:Single + 8 + AggroVisionRadius: !type:Single + 7 + - type: NpcFactionMember + factions: + - CP14Monster + - type: Sprite + drawdepth: Mobs + layers: + - sprite: _CP14/Mobs/Monster/mosquito.rsi + state: mosquitos + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.70 + density: 5 + mask: + - FlyingMobMask + layer: + - FlyingMobLayer + - Opaque + - type: ReplacementAccent + accent: xeno + - type: Damageable + damageContainer: Biological + damageModifierSet: CP14LittleInsects + - type: Appearance + - type: Stamina + critThreshold: 50 + - type: DamageContacts + damage: + types: + Piercing: 1 + Bloodloss: 1 + ignoreWhitelist: + tags: + - CP14Mosquito + - type: SpeedModifierContacts + walkSpeedModifier: 0.9 + sprintSpeedModifier: 0.9 + ignoreWhitelist: + tags: + - CP14Mosquito + - type: MovementIgnoreGravity + - type: MovementSpeedModifier + baseWalkSpeed: 2 + baseSprintSpeed: 2 + friction: 0.5 + acceleration: 3 + - type: AmbientSound + volume: -1 + range: 6 + sound: + path: /Audio/_CP14/Animals/swarm.ogg + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + + - type: MeleeSound + soundGroups: + Burn: + path: /Audio/_CP14/Animals/swarm_hit.ogg \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/zombie.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/zombie.yml index 0d98e9530b..745aeb0cdf 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/zombie.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/zombie.yml @@ -138,6 +138,9 @@ - type: InventorySlots - type: ContainerContainer - type: FloorOcclusion + - type: Tag + tags: + - CP14Mosquito - type: Inventory templateId: CP14Partial femaleDisplacements: diff --git a/Resources/Prototypes/_CP14/NPCs/approach.yml b/Resources/Prototypes/_CP14/NPCs/approach.yml new file mode 100644 index 0000000000..0bf352aa6f --- /dev/null +++ b/Resources/Prototypes/_CP14/NPCs/approach.yml @@ -0,0 +1,63 @@ +- type: htnCompound + id: CP14ApproachEnemyCompound + branches: + - tasks: + - !type:HTNCompoundTask + task: CP14ApproachEnemyCombatCompound + - tasks: + - !type:HTNCompoundTask + task: IdleCompound + +- type: htnCompound + id: CP14ApproachEnemyCombatCompound + branches: + - tasks: + - !type:HTNPrimitiveTask + operator: !type:UtilityOperator + proto: NearbyMeleeTargets + - !type:HTNCompoundTask + task: CP14ApproachEnemyTargetCompound + +- type: htnCompound + id: CP14ApproachEnemyTargetCompound + branches: + - preconditions: + - !type:PulledPrecondition + isPulled: true + tasks: + - !type:HTNPrimitiveTask + operator: !type:UnPullOperator + shutdownState: TaskFinished + + - tasks: + - !type:HTNCompoundTask + task: CP14MeleeApproachEnemyTargetCompound + +- type: htnCompound + id: CP14MeleeApproachEnemyTargetCompound + branches: + - preconditions: + - !type:KeyExistsPrecondition + key: Target + tasks: + - !type:HTNPrimitiveTask + operator: !type:MoveToOperator + pathfindInPlanning: true + removeKeyOnFinish: false + targetKey: TargetCoordinates + pathfindKey: TargetPathfind + rangeKey: MeleeRange + - !type:HTNPrimitiveTask + operator: !type:InteractWithOperator + targetKey: Target + preconditions: + - !type:KeyExistsPrecondition + key: Target + - !type:TargetInRangePrecondition + targetKey: Target + rangeKey: InteractRange + services: + - !type:UtilityService + id: MeleeService + proto: NearbyMeleeTargets + key: Target diff --git a/Resources/Prototypes/_CP14/NPCs/cling.yml b/Resources/Prototypes/_CP14/NPCs/cling.yml new file mode 100644 index 0000000000..0e863ed6f4 --- /dev/null +++ b/Resources/Prototypes/_CP14/NPCs/cling.yml @@ -0,0 +1,64 @@ +- type: htnCompound + id: CP14JustAttackingHostileCompound + branches: + - tasks: + - !type:HTNCompoundTask + task: CP14MeleeClingCombatCompound + - tasks: + - !type:HTNCompoundTask + task: IdleCompound + +- type: htnCompound + id: CP14MeleeClingCombatCompound + branches: + - tasks: + - !type:HTNPrimitiveTask + operator: !type:UtilityOperator + proto: NearbyMeleeTargets + - !type:HTNCompoundTask + task: CP14BeforeMeleeAttackTargetCompound + +- type: htnCompound + id: CP14BeforeMeleeAttackTargetCompound + branches: + - preconditions: + - !type:PulledPrecondition + isPulled: true + tasks: + - !type:HTNPrimitiveTask + operator: !type:UnPullOperator + shutdownState: TaskFinished + + - tasks: + - !type:HTNCompoundTask + task: CP14MeleeAttackNotRetreatingTargetCompound + +- type: htnCompound + id: CP14MeleeAttackNotRetreatingTargetCompound + branches: + - preconditions: + - !type:KeyExistsPrecondition + key: Target + tasks: + - !type:HTNPrimitiveTask + operator: !type:MoveToOperator + shutdownState: PlanFinished + pathfindInPlanning: true + removeKeyOnFinish: false + targetKey: TargetCoordinates + pathfindKey: TargetPathfind + rangeKey: MeleeRange + - !type:HTNPrimitiveTask + operator: !type:MeleeOperator + targetKey: Target + preconditions: + - !type:KeyExistsPrecondition + key: Target + - !type:TargetInRangePrecondition + targetKey: Target + rangeKey: MeleeRange + services: + - !type:UtilityService + id: MeleeService + proto: NearbyMeleeTargets + key: Target diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/test.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/test.yml index 2017fb9e4b..169fd14b38 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/test.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/test.yml @@ -366,6 +366,19 @@ minGroupSize: 2 maxGroupSize: 3 +- type: cp14DemiplaneModifier + id: MonsterMosquito + name: cp14-modifier-dyno + difficulty: 0.5 + requiredTags: + - CP14DemiplaneGrass + layers: + - !type:OreDunGen + entity: CP14SpawnMobMonsterMosquito + count: 4 + minGroupSize: 2 + maxGroupSize: 3 + - type: cp14DemiplaneModifier id: EnemyMole name: cp14-modifier-mole diff --git a/Resources/Prototypes/_CP14/tags.yml b/Resources/Prototypes/_CP14/tags.yml index 0c3f2555ee..aa0c95bc97 100644 --- a/Resources/Prototypes/_CP14/tags.yml +++ b/Resources/Prototypes/_CP14/tags.yml @@ -60,3 +60,6 @@ - type: Tag id: CP14Wheat + +- type: Tag + id: CP14Mosquito diff --git a/Resources/Textures/_CP14/Mobs/Monster/mosquito.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Monster/mosquito.rsi/meta.json new file mode 100644 index 0000000000..1aa3cdcde5 --- /dev/null +++ b/Resources/Textures/_CP14/Mobs/Monster/mosquito.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "size": { + "x": 48, + "y": 48 + }, + "license": "CLA", + "copyright": "Created by Nimfar11 (github)", + "states": [ + { + "name": "mosquitos", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} diff --git a/Resources/Textures/_CP14/Mobs/Monster/mosquito.rsi/mosquitos.png b/Resources/Textures/_CP14/Mobs/Monster/mosquito.rsi/mosquitos.png new file mode 100644 index 0000000000..655962eb7e Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Monster/mosquito.rsi/mosquitos.png differ