diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml index 6d9fa654f1..3f5cbbc368 100644 --- a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml +++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/mobs.yml @@ -1,3 +1,5 @@ +# Undead + - type: entity name: walking dead spawner id: CP14SpawnMobUndeadZombie @@ -14,6 +16,8 @@ prototypes: - CP14MobUndeadZombie +# Animal + - type: entity name: rabbit spawner id: CP14SpawnMobRabbit @@ -30,22 +34,6 @@ prototypes: - CP14MobRabbit -- type: entity - name: yumkaraptor spawner - id: CP14SpawnMobDinoYumkaraptor - parent: MarkerBase - categories: [ ForkFiltered ] - components: - - type: Sprite - layers: - - sprite: Markers/cross.rsi - state: green - - sprite: _CP14/Mobs/Animals/dino.rsi - state: dino - - type: ConditionalSpawner - prototypes: - - CP14MobDinoYumkaraptor - - type: entity name: pig spawner id: CP14SpawnMobPig @@ -77,3 +65,55 @@ - type: ConditionalSpawner prototypes: - CP14MobBoar + +# Dino + +- type: entity + name: yumkaraptor spawner + id: CP14SpawnMobDinoYumkaraptor + parent: MarkerBase + categories: [ ForkFiltered ] + components: + - type: Sprite + layers: + - sprite: Markers/cross.rsi + state: green + - sprite: _CP14/Mobs/Animals/dino.rsi + state: live + - type: ConditionalSpawner + prototypes: + - CP14MobDinoYumkaraptor + +- type: entity + name: small hydra spawner + id: CP14SpawnMobDinoSmallHydra + parent: MarkerBase + categories: [ ForkFiltered ] + components: + - type: Sprite + layers: + - sprite: Markers/cross.rsi + state: green + - sprite: _CP14/Mobs/Animals/hydra.rsi + state: live + - type: ConditionalSpawner + prototypes: + - CP14MobDinoSmallHydra + +# Monster + +- type: entity + name: predatory mole spawner + id: CP14SpawnMobMonsterMole + parent: MarkerBase + categories: [ ForkFiltered ] + components: + - type: Sprite + layers: + - sprite: Markers/cross.rsi + state: green + - sprite: _CP14/Mobs/Monster/mole.rsi + state: live + - type: ConditionalSpawner + prototypes: + - CP14MobMonsterMole diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/animals.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/animals.yml index 595cc85c51..32a6ba088a 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/animals.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/animals.yml @@ -68,6 +68,7 @@ amount: 1 - type: Bloodstream bloodMaxVolume: 50 + bloodReagent: CP14Blood - type: InteractionPopup successChance: 0.5 interactSuccessString: cp14-petting-success-rabbit @@ -145,6 +146,7 @@ amount: 5 - type: Bloodstream bloodMaxVolume: 150 + bloodReagent: CP14Blood - type: Grammar attributes: gender: epicene diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/dinosaurs.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/dinosaurs.yml index 7ebe0689c2..6a41014912 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/dinosaurs.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/dinosaurs.yml @@ -1,6 +1,43 @@ +- type: entity + id: CP14MobDino + parent: SimpleMobBase + name: dino + abstract: true + components: + - type: NpcFactionMember + factions: + - CP14AggressiveAnimals + - type: Sprite + drawdepth: Mobs + - type: ReplacementAccent + accent: xeno + - type: Damageable + damageContainer: Biological + damageModifierSet: CP14Dinosaur + - type: Appearance + - type: Body + prototype: Animal + - type: CombatMode + - type: Stamina + critThreshold: 200 + - type: Grammar + attributes: + gender: epicene + - type: DamageStateVisuals + states: + Alive: + Base: live + Dead: + Base: dead + - type: Bloodstream + bloodReagent: CP14Blood + - type: Tag + tags: + - FootstepSound + - type: entity id: CP14MobDinoYumkaraptor - parent: SimpleMobBase + parent: CP14MobDino name: yumkaraptor description: A large scaly lizard, an obvious predator that liked to snack on meat. categories: [ ForkFiltered ] @@ -13,15 +50,15 @@ true NavSmash: !type:Bool true - - type: NpcFactionMember - factions: - - CP14AggressiveAnimals + VisionRadius: !type:Single + 10 + AggroVisionRadius: !type:Single + 10 - type: Sprite - drawdepth: Mobs layers: - map: ["enum.DamageStateVisualLayers.Base"] sprite: _CP14/Mobs/Animals/dino.rsi - state: dino + state: live - type: Fixtures fixtures: fix1: @@ -33,14 +70,6 @@ - MobMask layer: - MobLayer - - type: ReplacementAccent - accent: xeno - - type: Damageable - damageContainer: Biological - damageModifierSet: CP14Dinosaur - - type: Appearance - - type: Body - prototype: Animal - type: MobThresholds thresholds: 0: Alive @@ -48,9 +77,6 @@ - type: SlowOnDamage speedModifierThresholds: 55: 0.6 - - type: Stamina - critThreshold: 200 - - type: CombatMode - type: MeleeWeapon angle: 0 animation: WeaponArcBite @@ -64,21 +90,12 @@ baseSprintSpeed: 6 acceleration: 16.0 - type: Climbing - - type: DamageStateVisuals - states: - Alive: - Base: dino - Dead: - Base: dino_dead - type: Butcherable spawned: - id: CP14FoodMeatLamb # to replace the dino meat amount: 5 - type: Bloodstream bloodMaxVolume: 200 - - type: Grammar - attributes: - gender: epicene - type: SpamEmitSound minInterval: 20 maxInterval: 40 @@ -89,3 +106,64 @@ variation: 0.125 - type: SoundWhileAlive - type: FloorOcclusion + +- type: entity + id: CP14MobDinoSmallHydra + parent: CP14MobDino + name: small hydra + description: The small two-headed lizard, despite its size, can be quite dangerous. + categories: [ ForkFiltered ] + components: + - type: HTN + rootTask: + task: SimpleHostileCompound + blackboard: + NavSmash: !type:Bool + true + VisionRadius: !type:Single + 10 + AggroVisionRadius: !type:Single + 10 + - type: Sprite + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + sprite: _CP14/Mobs/Animals/hydra.rsi + state: live + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 100 + mask: + - MobMask + layer: + - MobLayer + - type: MobThresholds + thresholds: + 0: Alive + 35: Dead + - type: SlowOnDamage + speedModifierThresholds: + 25: 0.6 + - type: MeleeWeapon + angle: 0 + attackRate: 0.8 + animation: WeaponArcBite + damage: + types: + Slash: 2 + Piercing: 2 + Structural: 1 + - type: MovementSpeedModifier + baseWalkSpeed: 4 + baseSprintSpeed: 5 + acceleration: 16.0 + - type: Butcherable + spawned: + - id: CP14FoodMeatLamb # to replace the dino meat + amount: 2 + - type: Bloodstream + bloodMaxVolume: 100 + - type: SoundWhileAlive diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/monster.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/monster.yml new file mode 100644 index 0000000000..39a0beca93 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/monster.yml @@ -0,0 +1,135 @@ +- type: entity + id: CP14MobMonsterMole + parent: SimpleMobBase + name: predatory mole + description: Hunts in the dark and loves the taste of meat and blood in its mouth. + categories: [ ForkFiltered ] + components: + - type: HTN + rootTask: + task: CP14MonsterCompound + blackboard: + NavSmash: !type:Bool + true + VisionRadius: !type:Single + 10 + AggroVisionRadius: !type:Single + 8 + - type: NpcFactionMember + factions: + - CP14Monster + - type: NPCUseActionOnTarget + actionId: CP14ActionMoleSpellSubterraneanLeap + - type: Sprite + drawdepth: Mobs + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + sprite: _CP14/Mobs/Monster/mole.rsi + state: live + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 300 + mask: + - MobMask + layer: + - MobLayer + - type: ReplacementAccent + accent: xeno + - type: Damageable + damageContainer: Biological + - type: Appearance + - type: Body + prototype: Animal + - type: MobThresholds + thresholds: + 0: Alive + 80: Dead + - type: SlowOnDamage + speedModifierThresholds: + 70: 0.8 + - type: Stamina + critThreshold: 200 + - type: CombatMode + - type: MeleeWeapon + angle: 0 + animation: WeaponArcBite + damage: + types: + Slash: 2 + Blunt: 4 + Piercing: 4 + Structural: 3 + - type: MovementSpeedModifier + baseWalkSpeed: 4 + baseSprintSpeed: 4 + - type: DamageStateVisuals + states: + Alive: + Base: live + Dead: + Base: dead + - type: Butcherable + spawned: + - id: CP14FoodMeatLamb # to replace the other meat + amount: 4 + - type: Bloodstream + bloodMaxVolume: 200 + bloodReagent: CP14Blood + - type: Grammar + attributes: + gender: epicene + - type: CP14MagicEnergyContainer + magicAlert: CP14MagicEnergy + maxEnergy: 100 + energy: 100 + - type: CP14MagicEnergyDraw + energy: 2 + delay: 4 + - type: Tag + tags: + - FootstepSound + +- type: entity + id: CP14ActionMoleSpellSubterraneanLeap + name: Subterranean leap + description: Make a subterranean leap, quickly approaching the victim. + components: + - type: CP14MagicEffect + manaCost: 5 + telegraphyEffects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectDigging + effects: + - !type:CP14SpellCasterTeleport + - type: CP14MagicEffectCastingVisual + proto: CP14ImpactEffectDigging + - type: EntityWorldTargetAction + useDelay: 5 + range: 10 + checkCanAccess: false + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Effects/Magic/spells_icons_monster.rsi + state: subterranean_leap + event: !type:CP14DelayedEntityWorldTargetActionEvent + delay: 1 + hidden: true + breakOnMove: false + raiseOnUser: true + +- type: entity + id: CP14ImpactEffectDigging + parent: CP14BaseMagicImpact + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: _CP14/Effects/dirt.rsi + layers: + - state: dirt1 diff --git a/Resources/Prototypes/_CP14/NPCs/monster.yml b/Resources/Prototypes/_CP14/NPCs/monster.yml new file mode 100644 index 0000000000..90782ecfcd --- /dev/null +++ b/Resources/Prototypes/_CP14/NPCs/monster.yml @@ -0,0 +1,75 @@ +- type: htnCompound + id: CP14MonsterCompound + branches: + - tasks: + - !type:HTNCompoundTask + task: CP14MonsterMeleeCombatPrecondition + - tasks: + - !type:HTNCompoundTask + task: IdleCompound + +- type: htnCompound + id: CP14MonsterMeleeCombatPrecondition + branches: + - preconditions: + - !type:BuckledPrecondition + isBuckled: true + tasks: + - !type:HTNPrimitiveTask + operator: !type:UnbuckleOperator + shutdownState: TaskFinished + + - preconditions: + - !type:InContainerPrecondition + isInContainer: true + tasks: + - !type:HTNCompoundTask + task: EscapeCompound + + - preconditions: + - !type:PulledPrecondition + isPulled: true + tasks: + - !type:HTNPrimitiveTask + operator: !type:UnPullOperator + shutdownState: TaskFinished + + - tasks: + - !type:HTNPrimitiveTask + operator: !type:UtilityOperator + proto: NearbyMeleeTargets + - !type:HTNCompoundTask + task: CP14MonsterAttackTargetCompound + +- type: htnCompound + id: CP14MonsterAttackTargetCompound + 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:JukeOperator + jukeType: AdjacentTile + - !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/ai_factions.yml b/Resources/Prototypes/_CP14/ai_factions.yml index fe3f71e854..65b0419a26 100644 --- a/Resources/Prototypes/_CP14/ai_factions.yml +++ b/Resources/Prototypes/_CP14/ai_factions.yml @@ -4,6 +4,7 @@ - CP14AggressiveAnimals - CP14Undead - CP14HostileEveryone + - CP14Monster - type: npcFaction id: CP14HostileEveryone @@ -12,6 +13,7 @@ - CP14Undead - CP14PeacefulAnimals - CP14AggressiveAnimals + - CP14Monster - type: npcFaction id: CP14Undead @@ -30,3 +32,12 @@ - CP14Adventurers - CP14Undead - CP14PeacefulAnimals + - CP14Monster + +- type: npcFaction + id: CP14Monster + hostile: + - CP14Adventurers + - CP14HostileEveryone + - CP14AggressiveAnimals + - CP14PeacefulAnimals diff --git a/Resources/Textures/_CP14/Effects/Magic/spells_icons_monster.rsi/meta.json b/Resources/Textures/_CP14/Effects/Magic/spells_icons_monster.rsi/meta.json new file mode 100644 index 0000000000..9fe9c941c1 --- /dev/null +++ b/Resources/Textures/_CP14/Effects/Magic/spells_icons_monster.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CLA", + "copyright": "Created by Nimfar11 (github)", + "states": [ + { + "name": "subterranean_leap" + } + ] +} diff --git a/Resources/Textures/_CP14/Effects/Magic/spells_icons_monster.rsi/subterranean_leap.png b/Resources/Textures/_CP14/Effects/Magic/spells_icons_monster.rsi/subterranean_leap.png new file mode 100644 index 0000000000..c3fbf1ff96 Binary files /dev/null and b/Resources/Textures/_CP14/Effects/Magic/spells_icons_monster.rsi/subterranean_leap.png differ diff --git a/Resources/Textures/_CP14/Mobs/Animals/dino.rsi/dino_dead.png b/Resources/Textures/_CP14/Mobs/Animals/dino.rsi/dead.png similarity index 100% rename from Resources/Textures/_CP14/Mobs/Animals/dino.rsi/dino_dead.png rename to Resources/Textures/_CP14/Mobs/Animals/dino.rsi/dead.png diff --git a/Resources/Textures/_CP14/Mobs/Animals/dino.rsi/dino.png b/Resources/Textures/_CP14/Mobs/Animals/dino.rsi/live.png similarity index 100% rename from Resources/Textures/_CP14/Mobs/Animals/dino.rsi/dino.png rename to Resources/Textures/_CP14/Mobs/Animals/dino.rsi/live.png diff --git a/Resources/Textures/_CP14/Mobs/Animals/dino.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Animals/dino.rsi/meta.json index 293f03a762..68948f2ff7 100644 --- a/Resources/Textures/_CP14/Mobs/Animals/dino.rsi/meta.json +++ b/Resources/Textures/_CP14/Mobs/Animals/dino.rsi/meta.json @@ -10,12 +10,12 @@ "states": [ { - "name": "dino", + "name": "live", "directions": 4 }, { - "name": "dino_dead", + "name": "dead", "directions": 1 } ] diff --git a/Resources/Textures/_CP14/Mobs/Animals/hydra.rsi/dead.png b/Resources/Textures/_CP14/Mobs/Animals/hydra.rsi/dead.png new file mode 100644 index 0000000000..c269a17c1a Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Animals/hydra.rsi/dead.png differ diff --git a/Resources/Textures/_CP14/Mobs/Animals/hydra.rsi/live.png b/Resources/Textures/_CP14/Mobs/Animals/hydra.rsi/live.png new file mode 100644 index 0000000000..ea5a1d3896 Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Animals/hydra.rsi/live.png differ diff --git a/Resources/Textures/_CP14/Mobs/Animals/hydra.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Animals/hydra.rsi/meta.json new file mode 100644 index 0000000000..b89e74c23f --- /dev/null +++ b/Resources/Textures/_CP14/Mobs/Animals/hydra.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "size": { + "x": 48, + "y": 48 + }, + "license": "CLA", + "copyright": "Created by jaraten (github/discord)", + "states": [ + { + "name": "live", + "directions": 4 + }, + { + "name": "dead" + } + ] +} diff --git a/Resources/Textures/_CP14/Mobs/Monster/mole.rsi/dead.png b/Resources/Textures/_CP14/Mobs/Monster/mole.rsi/dead.png new file mode 100644 index 0000000000..25d8d2a3ca Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Monster/mole.rsi/dead.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/mole.rsi/live.png b/Resources/Textures/_CP14/Mobs/Monster/mole.rsi/live.png new file mode 100644 index 0000000000..b74bf74921 Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Monster/mole.rsi/live.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/mole.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Monster/mole.rsi/meta.json new file mode 100644 index 0000000000..b89e74c23f --- /dev/null +++ b/Resources/Textures/_CP14/Mobs/Monster/mole.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "size": { + "x": 48, + "y": 48 + }, + "license": "CLA", + "copyright": "Created by jaraten (github/discord)", + "states": [ + { + "name": "live", + "directions": 4 + }, + { + "name": "dead" + } + ] +}