Add AI factions (#1807)

* Add NPC faction tags

Some stuff isn't easy to represent by the existence of components so tags are intended to provide that functionality for AI usage.

I was 50/50 on having all tags in the 1 component or splitting it into 2. I'm leaning towards 2. This would be for stuff like say "CanMimic" so the mimic knows it's allowed to look like a specific prototype, or something like "smg" on a gun so it can say smg-specific barks for instance (as currently smgs and pistols look the same from a component perspective).

This also means combat behaviors aren't hardcoded per faction, plus it makes it easy to update faction relations during events.

* Factions command

Update faction relationships via commands.

* Remove command TODO

* Woops

Forgot to commit these items

* Serializer writing and parsing

* linq me up fam

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
This commit is contained in:
metalgearsloth
2020-08-24 20:33:03 +10:00
committed by GitHub
parent df823d2245
commit 969eeb5528
15 changed files with 265 additions and 41 deletions

View File

@@ -37,6 +37,7 @@
- loc
- hostlogin
- events
- factions
- Index: 100
Name: Administrator
@@ -97,6 +98,7 @@
- events
- destroymechanism
- readyall
- factions
CanViewVar: true
CanAdminPlace: true
@@ -188,6 +190,7 @@
- events
- destroymechanism
- readyall
- factions
CanViewVar: true
CanAdminPlace: true
CanScript: true

View File

@@ -11,6 +11,9 @@
components:
- type: AiController
logic: Civilian
- type: AiFactionTag
factions:
- SimpleNeutral
- type: MovementSpeedModifier
baseWalkSpeed : 4
baseSprintSpeed : 4

View File

@@ -8,6 +8,9 @@
components:
- type: AiController
logic: Xeno
- type: AiFactionTag
factions:
- SimpleHostile
- type: MovementSpeedModifier
- type: InteractionOutline
- type: Sprite

View File

@@ -8,6 +8,10 @@
components:
- type: AiController
logic: Civilian
- type: AiFactionTag
factions:
- NanoTransen
- type: entity
save: false

View File

@@ -9,6 +9,9 @@
components:
- type: AiController
logic: Mimic
- type: AiFactionTag
factions:
- SimpleHostile
- type: Hands
- type: MovementSpeedModifier
- type: InteractionOutline

View File

@@ -12,6 +12,9 @@
components:
- type: AiController
logic: Civilian
- type: AiFactionTag
factions:
- SimpleNeutral
- type: MovementSpeedModifier
baseWalkSpeed : 5
baseSprintSpeed : 5

View File

@@ -9,6 +9,9 @@
components:
- type: AiController
logic: Xeno
- type: AiFactionTag
factions:
- Xeno
- type: Hands
- type: MovementSpeedModifier
- type: InteractionOutline

View File

@@ -17,3 +17,6 @@
- type: CameraRecoil
- type: Examiner
- type: HumanInventoryController
- type: AiFactionTag
factions:
- NanoTransen