Versions / 0.5.0-pre.9.1 / NPC / Roles / Intelligent / Aggressive / Goblin / Templates / Template_Goblin_Ogre.json
Template_Goblin_Ogre
Server/NPC/Roles/Intelligent/Aggressive/Goblin/Templates/Template_Goblin_Ogre.json, 30.6 KB
Fields
| Field | Type |
|---|---|
Type | string |
Parameters | object |
IsMemory | object |
MemoriesCategory | object |
MemoriesNameOverride | object |
Appearance | object |
DropList | object |
DefaultPlayerAttitude | string |
DefaultNPCAttitude | string |
AttitudeGroup | object |
StartState | string |
KnockbackScale | number |
MotionControllerList | array[1] |
StateTransitions | array[6] |
MaxHealth | object |
Instructions | array[1] |
NameTranslationKey | object |
Source
{
"Type": "Abstract",
"Parameters": {
"Appearance": {
"Value": "Bear_Grizzly",
"Description": "Model to be used"
},
"ViewRange": {
"Value": 15,
"Description": "View range in blocks"
},
"ViewSector": {
"Value": 180,
"Description": "View sector in degrees"
},
"HearingRange": {
"Value": 8,
"Description": "Hearing range in blocks"
},
"DistractedPenalty": {
"Value": 2,
"Description": "A factor by which view range and hearing range will be divided when this NPC is distracted"
},
"AlertedRange": {
"Value": 30,
"Description": "A range within which the player can be seen/sensed when the NPC is alerted to their presence"
},
"EatItem": {
"Value": "Food_Beef_Raw",
"Description": "The item this NPC will find when it rummages for food"
},
"SleepingAttack": {
"Value": "Root_NPC_Attack_Melee",
"Description": "Attack to use on NPCs that annoy it while sleeping"
},
"FoodNPCGroups": {
"Value": [ "Edible_Rat" ],
"Description": "The groups of edible NPCs that will come from triggering the beacon"
},
"FoodNPCBeacon": {
"Value": "Edible_Rat",
"Description": "The spawn beacon to trigger to create an edible NPC"
},
"FoodNPCItem": {
"Value": "Food_Cheese",
"Description": "The edible NPC in item form"
},
"AttitudeGroup": {
"Value": "Empty",
"Description": "This NPCs attitude group"
},
"WarnGroups": {
"Value": [ "Goblin_Scrapper" ],
"Description": "The groups to warn when spotting an enemy"
},
"AttackSequence": {
"Value": "Component_Instruction_Attack_Sequence_Goblin_Ogre",
"Description": "The attack sequence to use in combat"
},
"AttackDistance": {
"Value": 2.5,
"Description": "The distance at which an NPC will execute attacks"
},
"CombatRelativeTurnSpeed": {
"Value": 1.5,
"Description": "Modifier that decides turn speed difference in combat"
},
"DropList": {
"Value": "Empty",
"Description": "Drop Items"
},
"ScrapperNPCGroups": {
"Value": [ "Edible_Goblin_Scrapper" ],
"Description": "The groups of NPCs that will come from triggering the beacon to be thrown at the player during combat"
},
"ScrapperNPCBeacon": {
"Value": "Edible_Goblin_Scrapper",
"Description": "The spawn beacon to trigger to create a throwable NPC"
},
"ScrapperRole": {
"Value": "Goblin_Scrapper",
"Description": "The type of NPC to throw at the player when successfully catching it"
},
"HealEntityEffect": {
"Value": "Npc_Heal_Low",
"Description": "The entity effect to apply to handle healing this NPC"
},
"HealEatDuration": {
"Value": [ 2, 5 ],
"Description": "How long the NPC should eat for before the healing is triggered"
},
"MaxHealth": {
"Value": 100,
"Description": "Max health for the NPC"
},
"IsMemory": {
"Value": false,
"Description": "Defines if the NPC is a memory"
},
"MemoriesCategory": {
"Value": "Other",
"Description": "Defines the category of the memory"
},
"MemoriesNameOverride": {
"Value": "",
"Description": "Overrides the memory name if set"
},
"NameTranslationKey": {
"Value": "server.npcRoles.Template.name",
"Description": "Translation key for NPC name display"
}
},
"IsMemory": { "Compute": "IsMemory" },
"MemoriesCategory": { "Compute": "MemoriesCategory" },
"MemoriesNameOverride": { "Compute": "MemoriesNameOverride" },
"Appearance": { "Compute": "Appearance" },
"DropList": { "Compute": "DropList" },
"DefaultPlayerAttitude": "Hostile",
"DefaultNPCAttitude": "Ignore",
"AttitudeGroup": { "Compute": "AttitudeGroup" },
"StartState": "Idle",
"KnockbackScale": 0.5,
"MotionControllerList": [
{
"Type": "Walk",
"MaxWalkSpeed": 6,
"Gravity": 10,
"MaxFallSpeed": 8,
"Acceleration": 10
}
],
"StateTransitions": [
{
"States": [
{
"From": [ "Idle" ],
"To": [ "Sleep" ]
}
],
"Actions": [
{
"Type": "PlayAnimation",
"Slot": "Status",
"Animation": "Laydown"
},
{
"Type": "Timeout",
"Delay": [ 1, 1 ]
}
]
},
{
"States": [
{
"From": [ "Sleep" ],
"To": [ ]
}
],
"Actions": [
{
"Type": "PlayAnimation",
"Slot": "Status",
"Animation": "Wake"
},
{
"Type": "Timeout",
"Delay": [ 1, 1 ]
}
]
},
{
"States": [
{
"From": [ "Idle" ],
"To": [ "Eat" ]
}
],
"Actions": [
{
"Type": "Inventory",
"Operation": "SetHotbar",
"Item": { "Compute": "EatItem" },
"Slot": 2,
"UseTarget": false
},
{
"Type": "Inventory",
"Operation": "EquipHotbar",
"Slot": 2,
"UseTarget": false
}
]
},
{
"States": [
{
"From": [ "CallRat" ],
"To": [ "Eat" ]
}
],
"Actions": [
{
"Type": "Inventory",
"Operation": "SetHotbar",
"Item": { "Compute": "FoodNPCItem" },
"Slot": 2,
"UseTarget": false
},
{
"Type": "Inventory",
"Operation": "EquipHotbar",
"Slot": 2,
"UseTarget": false
}
]
},
{
"States": [
{
"From": [ "Eat" ],
"To": [ ]
}
],
"Actions": [
{
"Type": "PlayAnimation",
"Slot": "Status"
},
{
"Type": "Inventory",
"Operation": "EquipHotbar",
"Slot": 0,
"UseTarget": false
}
]
},
{
"States": [
{
"From": [ ],
"To": [ "Chase" ]
}
],
"Actions": [
{
"Type": "PlayAnimation",
"Slot": "Status"
},
{
"Type": "Beacon",
"Message": "Goblin_Ogre_Warn",
"TargetGroups": { "Compute": "WarnGroups" },
"SendTargetSlot": "LockedTarget"
}
]
}
],
"MaxHealth": { "Compute": "MaxHealth" },
"Instructions": [
{
"Instructions": [
{
"Sensor": {
"Type": "State",
"State": "Idle"
},
"Instructions": [
{
"Continue": true,
"Sensor": {
"Type": "Any",
"Once": true
},
"Actions": [
{
"Type": "Inventory",
"Operation": "EquipHotbar",
"Slot": 0,
"UseTarget": false
}
]
},
{
"Reference": "Component_Instruction_Damage_Check",
"Modify": {
"_ExportStates": [ "Alerted", "Alerted" ],
"AlertedRange": { "Compute": "AlertedRange" }
}
},
{
"Reference": "Component_Instruction_Sight_Or_Sound_Check",
"Modify": {
"_ExportStates": [ "Alerted" ],
"ViewRange": { "Compute": "ViewRange" },
"ViewSector": { "Compute": "ViewSector" },
"HearingRange": { "Compute": "HearingRange" },
"ThroughWalls": false,
"Attitudes": [ "Hostile" ]
}
},
{
"Sensor": {
"Type": "Beacon",
"Message": "GoblinAlert",
"Range": 20,
"TargetSlot": "LockedTarget"
},
"Actions": [
{
"Type": "State",
"State": "Alerted"
}
]
},
{
"Sensor": {
"Type": "State",
"State": ".Default"
},
"Instructions": [
{
"Actions": [
{
"Type": "Random",
"Actions": [
{
"Weight": 30,
"Action": {
"Type": "State",
"State": ".Guard"
}
},
{
"Weight": 30,
"Action": {
"Type": "State",
"State": "Sleep"
}
},
{
"Weight": 20,
"Action": {
"Type": "State",
"State": "Eat"
}
},
{
"Weight": 20,
"Action": {
"Type": "State",
"State": "CallRat"
}
}
]
}
]
}
]
},
{
"Sensor": {
"Type": "State",
"State": ".Guard"
},
"Instructions": [
{
"Reference": "Component_Instruction_State_Timeout",
"Modify": {
"_ExportStates": [ "Idle.Default" ],
"Delay": [ 15, 30 ]
}
},
{
"Reference": "Component_Instruction_Intelligent_Idle_Motion_Follow_Path"
}
]
}
]
},
{
"Sensor": {
"Type": "State",
"State": "Sleep"
},
"Instructions": [
{
"Reference": "Component_Instruction_Damage_Check",
"Modify": {
"_ExportStates": [ "Alerted", "Alerted" ],
"AlertedRange": { "Compute": "AlertedRange" }
}
},
{
"Reference": "Component_Instruction_Sight_Or_Sound_Check",
"Modify": {
"_ExportStates": [ "Alerted" ],
"ViewRange": { "Compute": "ViewRange / DistractedPenalty" },
"ViewSector": { "Compute": "ViewSector" },
"HearingRange": { "Compute": "HearingRange / DistractedPenalty" },
"ThroughWalls": false,
"Attitudes": [ "Hostile" ]
}
},
{
"Reference": "Component_Instruction_Play_Animation_In_State_For_Duration",
"$Comment": "Prevent repetitive sleeping by going to eat instead of default",
"Modify": {
"_ExportStates": [ "Eat" ],
"Animation": "Sleep",
"Duration": [ 15, 30 ]
}
},
{
"Sensor": {
"Type": "Beacon",
"Message": "Annoy_Ogre",
"Range": 5
},
"Actions": [
{
"Type": "Attack",
"Attack": { "Compute": "SleepingAttack" },
"AttackPauseRange": [ 1, 2 ]
}
]
}
]
},
{
"Sensor": {
"Type": "State",
"State": "Eat"
},
"Instructions": [
{
"Reference": "Component_Instruction_Damage_Check",
"Modify": {
"_ExportStates": [ "Alerted", "Alerted" ],
"AlertedRange": { "Compute": "AlertedRange" }
}
},
{
"Reference": "Component_Instruction_Sight_Or_Sound_Check",
"Modify": {
"_ExportStates": [ "Alerted" ],
"ViewRange": { "Compute": "ViewRange / DistractedPenalty" },
"ViewSector": { "Compute": "ViewSector" },
"HearingRange": { "Compute": "HearingRange / DistractedPenalty" },
"ThroughWalls": false,
"Attitudes": [ "Hostile" ]
}
},
{
"Reference": "Component_Instruction_Play_Animation_In_State_For_Duration",
"Modify": {
"_ExportStates": [ "Idle.Default" ],
"Animation": "Eat",
"Duration": [ 15, 20 ]
}
}
]
},
{
"Sensor": {
"Type": "State",
"State": "CallRat"
},
"Instructions": [
{
"Continue": true,
"Sensor": {
"Type": "Any",
"Once": true
},
"Actions": [
{
"Type": "TriggerSpawnBeacon",
"BeaconSpawn": { "Compute": "FoodNPCBeacon" },
"Range": 15
}
]
},
{
"Reference": "Component_Instruction_Damage_Check",
"Modify": {
"_ExportStates": [ "Alerted", "Alerted" ],
"AlertedRange": { "Compute": "AlertedRange" }
}
},
{
"Reference": "Component_Instruction_Sight_Or_Sound_Check",
"Modify": {
"_ExportStates": [ "Alerted" ],
"ViewRange": { "Compute": "ViewRange" },
"ViewSector": { "Compute": "ViewSector" },
"HearingRange": { "Compute": "HearingRange" },
"ThroughWalls": false,
"Attitudes": [ "Hostile" ]
}
},
{
"Sensor": {
"Type": "Mob",
"Range": 2.5,
"Filters": [
{
"Type": "NPCGroup",
"IncludeGroups": { "Compute": "FoodNPCGroups" }
},
{
"Type": "LineOfSight"
}
]
},
"HeadMotion": {
"Type": "Watch"
},
"ActionsBlocking": true,
"Actions": [
{
"Type": "PlayAnimation",
"Slot": "Status",
"Animation": "Swipe"
},
{
"Type": "Timeout",
"Delay": [ 0.1, 0.1 ],
"Action": {
"Type": "Sequence",
"Actions": [
{
"Type": "Remove"
},
{
"Type": "State",
"State": "Eat"
}
]
}
}
]
},
{
"Continue": true,
"Sensor": {
"Type": "Mob",
"Range": 5,
"Filters": [
{
"Type": "NPCGroup",
"IncludeGroups": { "Compute": "FoodNPCGroups" }
},
{
"Type": "LineOfSight"
}
]
},
"HeadMotion": {
"Type": "Watch"
}
},
{
"Reference": "Component_Instruction_State_Timeout",
"Modify": {
"_ExportStates": [ "Idle" ],
"Delay": [ 10, 15 ]
}
}
]
},
{
"Sensor": {
"Type": "State",
"State": "Alerted"
},
"Instructions": [
{
"Reference": "Component_Instruction_Play_Animation",
"Modify": {
"Animation": "Alerted"
}
},
{
"Continue": true,
"Sensor": {
"Type": "Target",
"Range": { "Compute": "AlertedRange" },
"Filters": [
{
"Type": "LineOfSight"
}
]
},
"HeadMotion": {
"Type": "Watch"
}
},
{
"Sensor": {
"Type": "Target",
"Range": { "Compute": "AlertedRange" }
},
"ActionsBlocking": true,
"Actions": [
{
"Type": "Timeout",
"Delay": [ 1, 1 ]
},
{
"Type": "State",
"State": "Chase"
}
]
},
{
"Actions": [
{
"Type": "State",
"State": "Idle"
}
]
}
]
},
{
"Sensor": {
"Type": "State",
"State": "Chase"
},
"Instructions": [
{
"Sensor": {
"Type": "Or",
"Sensors": [
{
"Reference": "Component_Sensor_Sight_By_Attitude",
"Modify": {
"ViewRange": { "Compute": "AlertedRange" },
"ViewSector": { "Compute": "ViewSector" },
"Attitudes": [ "Hostile" ]
}
},
{
"Type": "HasHostileTargetMemory"
}
]
},
"Instructions": [
{
"Sensor": {
"$Comment": "Throw NPC if one comes into range",
"Type": "Mob",
"Range": 2.5,
"Filters": [
{
"Type": "NPCGroup",
"IncludeGroups": { "Compute": "ScrapperNPCGroups" }
},
{
"Type": "LineOfSight"
}
]
},
"HeadMotion": {
"Type": "Watch"
},
"ActionsBlocking": true,
"Actions": [
{
"Type": "PlayAnimation",
"Slot": "Status",
"Animation": "Swipe"
},
{
"Type": "Timeout",
"Delay": [ 0.1, 0.1 ],
"Action": {
"Type": "Sequence",
"Actions": [
{
"Type": "Remove"
},
{
"Type": "State",
"State": ".Throw"
}
]
}
}
]
},
{
"Sensor": {
"$Comment": "Seek the nearest Scrapper to throw",
"Type": "Mob",
"Range": 10,
"Filters": [
{
"Type": "NPCGroup",
"IncludeGroups": { "Compute": "ScrapperNPCGroups" }
},
{
"Type": "LineOfSight"
}
]
},
"HeadMotion": {
"Type": "Watch"
},
"BodyMotion": {
"Type": "Seek",
"SlowDownDistance": 1,
"StopDistance": 1,
"RelativeSpeed": 0.5
}
},
{
"TreeMode": true,
"Sensor": {
"$Comment": "Switch to range, melee, & heal",
"Type": "State",
"State": ".Default"
},
"Instructions": [
{
"Sensor": {
"Type": "CombatActionEvaluator",
"TargetInRange": true
},
"HeadMotion": {
"Type": "Aim"
},
"BodyMotion": {
"Type": "MaintainDistance",
"DesiredDistanceRange": [ 1, 1 ],
"MoveThreshold": 0.2,
"RelativeForwardsSpeed": 0.45,
"RelativeBackwardsSpeed": 0.45
},
"Actions": [
{
"Type": "CombatAbility"
}
]
},
{
"Reference": "Component_Instruction_Simple_Soft_Leash",
"Modify": {
"_ExportStates": [ "Leash" ]
}
},
{
"Reference": "Component_Instruction_Intelligent_Chase",
"Modify": {
"_ExportStates": [ "Search", "Leash", "Leash" ],
"ViewRange": { "Compute": "AlertedRange * 2" },
"HearingRange": { "Compute": "HearingRange * 2" },
"StopDistance": 0.1,
"RelativeSpeed": 0.5
}
}
]
},
{
"Sensor": {
"Type": "State",
"State": ".Heal",
"IgnoreMissingSetState": true
},
"ActionsBlocking": true,
"Actions": [
{
"Type": "Sequence",
"Actions": [
{
"Type": "Inventory",
"Operation": "SetHotbar",
"Item": { "Compute": "EatItem" },
"Slot": 2,
"UseTarget": false
},
{
"Type": "Inventory",
"Operation": "EquipHotbar",
"Slot": 2,
"UseTarget": false
},
{
"Type": "PlayAnimation",
"Slot": "Status",
"Animation": "Eat"
}
]
},
{
"Type": "Timeout",
"Delay": { "Compute": "HealEatDuration" }
},
{
"Type": "Sequence",
"Actions": [
{
"Type": "PlayAnimation",
"Slot": "Status"
},
{
"Type": "ApplyEntityEffect",
"UseTarget": false,
"EntityEffect": "Npc_Heal_Low"
},
{
"Type": "Inventory",
"Operation": "EquipHotbar",
"Slot": 0,
"UseTarget": false
},
{
"Type": "State",
"State": ".Default"
}
]
}
]
},
{
"TreeMode": true,
"Sensor": {
"Type": "State",
"State": ".Ranged",
"IgnoreMissingSetState": true
},
"Instructions": [
{
"Sensor": {
"Type": "Any",
"Once": true
},
"Actions": [
{
"Type": "Random",
"Actions": [
{
"Weight": 50,
"Action": {
"Type": "TriggerSpawnBeacon",
"BeaconSpawn": { "Compute": "ScrapperNPCBeacon" },
"Range": 25
}
},
{
"Weight": 50,
"Action": {
"Type": "Nothing"
}
}
]
}
]
},
{
"TreeMode": true,
"ActionsBlocking": true,
"Actions": [
{
"Type": "Timeout",
"Delay": [ 8, 10 ]
},
{
"Type": "State",
"State": ".Charge"
}
]
},
{
"Sensor": {
"Type": "CombatActionEvaluator",
"TargetInRange": true
},
"HeadMotion": {
"Type": "Aim"
},
"ActionsBlocking": true,
"Actions": [
{
"Type": "Timeout",
"Delay": [ 1, 3 ]
},
{
"Type": "Attack",
"Attack": "NPC_Rubble_Throw",
"AttackPauseRange": [ 1, 2 ]
}
]
},
{
"Actions": [
{
"Type": "State",
"State": ".Default"
}
]
}
]
},
{
"Sensor": {
"Type": "State",
"State": ".Charge"
},
"Instructions": [
{
"Sensor": {
"Type": "Target",
"Range": 1
},
"Actions": [
{
"Type": "State",
"State": ".Default"
}
]
},
{
"Reference": "Component_Instruction_Intelligent_Chase",
"Modify": {
"_ExportStates": [ "Search", "Leash", "Leash" ],
"ViewRange": { "Compute": "AlertedRange" },
"HearingRange": { "Compute": "HearingRange" },
"RelativeSpeed": 1,
"StopDistance": 0.4
}
}
]
},
{
"Sensor": {
"Type": "State",
"State": ".Throw"
},
"Instructions": [
{
"Sensor": {
"Type": "CombatActionEvaluator",
"TargetInRange": false
},
"HeadMotion": {
"Type": "Aim"
},
"ActionsBlocking": true,
"Actions": [
{
"Type": "PlayAnimation",
"Slot": "Status",
"Animation": "Throw"
},
{
"Type": "Timeout",
"Delay": [ 0.5, 0.5 ]
},
{
"Type": "Spawn",
"CountRange": [ 1, 1 ],
"Kind": { "Compute": "ScrapperRole" },
"LaunchAtTarget": true,
"LaunchSpread": 1,
"SpawnState": "Stunned"
},
{
"Type": "State",
"State": ".Default"
}
]
},
{
"Actions": [
{
"Type": "State",
"State": ".Default"
}
]
}
]
}
]
}
]
},
{
"Sensor": {
"Type": "State",
"State": "Search"
},
"Instructions": [
{
"Reference": "Component_Instruction_Generic_Search",
"Modify": {
"_ExportStates": [ "Alerted", "Alerted", "Alerted", "Leash" ],
"ViewRange": { "Compute": "ViewRange" },
"ViewSector": { "Compute": "ViewSector" },
"HearingRange": { "Compute": "HearingRange" },
"AlertedRange": { "Compute": "AlertedRange" }
}
}
]
},
{
"Sensor": {
"Type": "State",
"State": "Leash"
},
"Instructions": [
{
"Reference": "Component_Instruction_Generic_Return_Home",
"Modify": {
"_ExportStates": [ "Idle.Guard" ]
}
}
]
}
]
}
],
"NameTranslationKey": { "Compute": "NameTranslationKey" }
}