New Salvage Mob: Basilisk (#37135)
* Basilisk * Less health * Unique projectile * Selfmerge incoming * Update Resources/Textures/Mobs/Aliens/Asteroid/basilisk.rsi/meta.json Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,14 @@
|
|||||||
|
namespace Content.Server.NPC.Queries.Considerations;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns if the target is below a certain temperature.
|
||||||
|
/// </summary>
|
||||||
|
public sealed partial class TargetLowTempCon : UtilityConsideration
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The minimum temperature they must be.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public float MinTemp;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -7,6 +7,7 @@ using Content.Server.NPC.Queries.Queries;
|
|||||||
using Content.Server.Nutrition.Components;
|
using Content.Server.Nutrition.Components;
|
||||||
using Content.Server.Nutrition.EntitySystems;
|
using Content.Server.Nutrition.EntitySystems;
|
||||||
using Content.Server.Storage.Components;
|
using Content.Server.Storage.Components;
|
||||||
|
using Content.Server.Temperature.Components;
|
||||||
using Content.Shared.Chemistry.EntitySystems;
|
using Content.Shared.Chemistry.EntitySystems;
|
||||||
using Content.Shared.Damage;
|
using Content.Shared.Damage;
|
||||||
using Content.Shared.Examine;
|
using Content.Shared.Examine;
|
||||||
@@ -14,7 +15,6 @@ using Content.Shared.Fluids.Components;
|
|||||||
using Content.Shared.Hands.Components;
|
using Content.Shared.Hands.Components;
|
||||||
using Content.Shared.Inventory;
|
using Content.Shared.Inventory;
|
||||||
using Content.Shared.Mobs;
|
using Content.Shared.Mobs;
|
||||||
using Content.Shared.Mobs.Components;
|
|
||||||
using Content.Shared.Mobs.Systems;
|
using Content.Shared.Mobs.Systems;
|
||||||
using Content.Shared.NPC.Systems;
|
using Content.Shared.NPC.Systems;
|
||||||
using Content.Shared.Nutrition.Components;
|
using Content.Shared.Nutrition.Components;
|
||||||
@@ -376,6 +376,13 @@ public sealed class NPCUtilitySystem : EntitySystem
|
|||||||
|
|
||||||
return 0f;
|
return 0f;
|
||||||
}
|
}
|
||||||
|
case TargetLowTempCon con:
|
||||||
|
{
|
||||||
|
if (!TryComp<TemperatureComponent>(targetUid, out var temperature))
|
||||||
|
return 0f;
|
||||||
|
|
||||||
|
return temperature.CurrentTemperature <= con.MinTemp ? 1f : 0f;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -542,7 +542,8 @@
|
|||||||
table: !type:GroupSelector
|
table: !type:GroupSelector
|
||||||
children:
|
children:
|
||||||
- id: MobGoliath
|
- id: MobGoliath
|
||||||
weight: 65
|
weight: 45
|
||||||
- id: MobHivelord
|
- id: MobHivelord
|
||||||
weight: 35
|
weight: 35
|
||||||
|
- id: MobBasilisk
|
||||||
|
weight: 20
|
||||||
|
|||||||
@@ -81,6 +81,8 @@
|
|||||||
6
|
6
|
||||||
AggroVisionRadius: !type:Single
|
AggroVisionRadius: !type:Single
|
||||||
10
|
10
|
||||||
|
NavSmash: !type:Bool
|
||||||
|
true
|
||||||
- type: NPCUseActionOnTarget
|
- type: NPCUseActionOnTarget
|
||||||
actionId: ActionGoliathTentacle
|
actionId: ActionGoliathTentacle
|
||||||
- type: Tag
|
- type: Tag
|
||||||
@@ -241,6 +243,8 @@
|
|||||||
4
|
4
|
||||||
AggroVisionRadius: !type:Single
|
AggroVisionRadius: !type:Single
|
||||||
9
|
9
|
||||||
|
NavSmash: !type:Bool
|
||||||
|
true
|
||||||
- type: Butcherable
|
- type: Butcherable
|
||||||
spawned:
|
spawned:
|
||||||
- id: FoodHivelordRemains
|
- id: FoodHivelordRemains
|
||||||
@@ -293,6 +297,8 @@
|
|||||||
15
|
15
|
||||||
AggroVisionRadius: !type:Single
|
AggroVisionRadius: !type:Single
|
||||||
15
|
15
|
||||||
|
NavSmash: !type:Bool
|
||||||
|
true
|
||||||
- type: TimedDespawn
|
- type: TimedDespawn
|
||||||
lifetime: 100
|
lifetime: 100
|
||||||
|
|
||||||
@@ -345,3 +351,77 @@
|
|||||||
- type: Tag
|
- type: Tag
|
||||||
tags:
|
tags:
|
||||||
- HivelordRemains
|
- HivelordRemains
|
||||||
|
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: MobBasilisk
|
||||||
|
parent: [ BaseMobAsteroid, MobBloodstream ]
|
||||||
|
name: basilisk
|
||||||
|
description: A territorial beast, covered in a thick shell that absorbs energy. Its stare causes victims to freeze from the inside.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Mobs/Aliens/Asteroid/basilisk.rsi
|
||||||
|
layers:
|
||||||
|
- map: ["enum.DamageStateVisualLayers.Base"]
|
||||||
|
state: basilisk
|
||||||
|
- type: DamageStateVisuals
|
||||||
|
states:
|
||||||
|
Alive:
|
||||||
|
Base: basilisk
|
||||||
|
Dead:
|
||||||
|
Base: basilisk_dead
|
||||||
|
- type: MovementSpeedModifier
|
||||||
|
baseWalkSpeed : 3
|
||||||
|
baseSprintSpeed : 3.5
|
||||||
|
- type: MobThresholds
|
||||||
|
thresholds:
|
||||||
|
0: Alive
|
||||||
|
80: Dead
|
||||||
|
- type: MeleeWeapon
|
||||||
|
angle: 0
|
||||||
|
animation: WeaponArcBite
|
||||||
|
soundHit:
|
||||||
|
path: /Audio/Effects/bite.ogg
|
||||||
|
damage:
|
||||||
|
types:
|
||||||
|
Slash: 7
|
||||||
|
Piercing: 5
|
||||||
|
- type: Gun
|
||||||
|
fireRate: 0.75
|
||||||
|
selectedMode: SemiAuto
|
||||||
|
showExamineText: false
|
||||||
|
availableModes: [ SemiAuto ]
|
||||||
|
soundGunshot: /Audio/Weapons/Guns/Gunshots/syringe_gun.ogg
|
||||||
|
- type: RechargeBasicEntityAmmo
|
||||||
|
showExamineText: false
|
||||||
|
rechargeCooldown: 0
|
||||||
|
rechargeSound: null
|
||||||
|
- type: BasicEntityAmmoProvider
|
||||||
|
proto: BasiliskRay
|
||||||
|
capacity: 1
|
||||||
|
count: 1
|
||||||
|
- type: Bloodstream
|
||||||
|
bloodMaxVolume: 200
|
||||||
|
chemicalMaxVolume: 0
|
||||||
|
- type: NpcFactionMember
|
||||||
|
factions:
|
||||||
|
- SimpleHostile
|
||||||
|
- type: HTN
|
||||||
|
rootTask:
|
||||||
|
task: BasiliskCompound
|
||||||
|
blackboard:
|
||||||
|
VisionRadius: !type:Single
|
||||||
|
7
|
||||||
|
AggroVisionRadius: !type:Single
|
||||||
|
12
|
||||||
|
NavSmash: !type:Bool
|
||||||
|
true
|
||||||
|
- type: Reflect
|
||||||
|
reflectProb: 1
|
||||||
|
reflects:
|
||||||
|
- Energy
|
||||||
|
- type: Butcherable
|
||||||
|
spawned:
|
||||||
|
- id: DiamondOre1
|
||||||
|
amount: 1
|
||||||
|
maxAmount: 3
|
||||||
|
|||||||
@@ -437,6 +437,45 @@
|
|||||||
- type: ChangeTemperatureOnCollide
|
- type: ChangeTemperatureOnCollide
|
||||||
heat: 100000 #This may be a bit underpowered, but in testing, 130000 was RIDICULOUS and killed in seconds.
|
heat: 100000 #This may be a bit underpowered, but in testing, 130000 was RIDICULOUS and killed in seconds.
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: BaseBullet
|
||||||
|
id: BasiliskRay
|
||||||
|
name: basilisk ray
|
||||||
|
categories: [ HideSpawnMenu ]
|
||||||
|
components:
|
||||||
|
- type: FlyBySound
|
||||||
|
sound:
|
||||||
|
collection: EnergyMiss
|
||||||
|
params:
|
||||||
|
volume: 5
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi
|
||||||
|
layers:
|
||||||
|
- state: ice
|
||||||
|
shader: unshaded
|
||||||
|
- type: Ammo
|
||||||
|
muzzleFlash: null
|
||||||
|
- type: Physics
|
||||||
|
- type: Fixtures
|
||||||
|
fixtures:
|
||||||
|
projectile:
|
||||||
|
shape:
|
||||||
|
!type:PhysShapeAabb
|
||||||
|
bounds: "-0.2,-0.2,0.2,0.2"
|
||||||
|
hard: false
|
||||||
|
mask:
|
||||||
|
- Opaque
|
||||||
|
fly-by: *flybyfixture
|
||||||
|
- type: Projectile
|
||||||
|
impactEffect: BulletImpactEffectDisabler
|
||||||
|
damage:
|
||||||
|
types:
|
||||||
|
Cold: 5
|
||||||
|
- type: TimedDespawn
|
||||||
|
lifetime: 3
|
||||||
|
- type: ChangeTemperatureOnCollide
|
||||||
|
heat: -50000
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: BulletKinetic
|
id: BulletKinetic
|
||||||
name: kinetic bolt
|
name: kinetic bolt
|
||||||
|
|||||||
22
Resources/Prototypes/NPCs/basilisk.yml
Normal file
22
Resources/Prototypes/NPCs/basilisk.yml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
- type: htnCompound
|
||||||
|
id: BasiliskCompound
|
||||||
|
branches:
|
||||||
|
- tasks:
|
||||||
|
- !type:HTNCompoundTask
|
||||||
|
task: BasiliskMeleeCombatCompound
|
||||||
|
- tasks:
|
||||||
|
- !type:HTNCompoundTask
|
||||||
|
task: InnateRangedCombatCompound
|
||||||
|
- tasks:
|
||||||
|
- !type:HTNCompoundTask
|
||||||
|
task: IdleCompound
|
||||||
|
|
||||||
|
- type: htnCompound
|
||||||
|
id: BasiliskMeleeCombatCompound
|
||||||
|
branches:
|
||||||
|
- tasks:
|
||||||
|
- !type:HTNPrimitiveTask
|
||||||
|
operator: !type:UtilityOperator
|
||||||
|
proto: NearbyColdMeleeTargets
|
||||||
|
- !type:HTNCompoundTask
|
||||||
|
task: BeforeMeleeAttackTargetCompound
|
||||||
@@ -99,6 +99,27 @@
|
|||||||
- !type:TargetInLOSOrCurrentCon
|
- !type:TargetInLOSOrCurrentCon
|
||||||
curve: !type:BoolCurve
|
curve: !type:BoolCurve
|
||||||
|
|
||||||
|
- type: utilityQuery
|
||||||
|
id: NearbyColdMeleeTargets
|
||||||
|
query:
|
||||||
|
- !type:NearbyHostilesQuery
|
||||||
|
considerations:
|
||||||
|
- !type:TargetLowTempCon
|
||||||
|
curve: !type:BoolCurve
|
||||||
|
minTemp: 250
|
||||||
|
- !type:TargetIsAliveCon
|
||||||
|
curve: !type:BoolCurve
|
||||||
|
- !type:TargetDistanceCon
|
||||||
|
curve: !type:PresetCurve
|
||||||
|
preset: TargetDistance
|
||||||
|
- !type:TargetHealthCon
|
||||||
|
curve: !type:PresetCurve
|
||||||
|
preset: TargetHealth
|
||||||
|
- !type:TargetAccessibleCon
|
||||||
|
curve: !type:BoolCurve
|
||||||
|
- !type:TargetInLOSOrCurrentCon
|
||||||
|
curve: !type:BoolCurve
|
||||||
|
|
||||||
- type: utilityQuery
|
- type: utilityQuery
|
||||||
id: OrderedTargets
|
id: OrderedTargets
|
||||||
query:
|
query:
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Taken from vgstation13 at https://github.com/vgstation-coders/vgstation13/blob/9bd459b27c73575fd5e3bf2efea13b816d0ac7c8/icons/mob/animal.dmi",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "basilisk",
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basilisk_alert",
|
||||||
|
"directions": 4,
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basilisk_dead"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 247 B |
@@ -55,6 +55,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "heavylaser_flash"
|
"name": "heavylaser_flash"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ice"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user