375 lines
8.2 KiB
JSON
375 lines
8.2 KiB
JSON
{
|
|
"personalities": [
|
|
"StayHome"
|
|
],
|
|
"preferences": [
|
|
{
|
|
"goalID": "WalkAround",
|
|
"value": 0.5
|
|
},
|
|
{
|
|
"goalID": "Sightseeing",
|
|
"value": 0.2
|
|
},
|
|
{
|
|
"goalID": "Yoga",
|
|
"value": 0.7
|
|
},
|
|
{
|
|
"goalID": "Sing",
|
|
"value": 0.5
|
|
},
|
|
{
|
|
"goalID": "Fishing",
|
|
"value": 1.2
|
|
}
|
|
],
|
|
"relaxDecisions": [
|
|
{
|
|
"goalID": "Default",
|
|
"considerations": [
|
|
{
|
|
"$type": "ConsiderationConstant",
|
|
"condition": "Always",
|
|
"value": 0
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"goalID": "WalkAround",
|
|
"considerations": [
|
|
{
|
|
"$type": "ConsiderationConstant",
|
|
"condition": "Always",
|
|
"input": {
|
|
"$type": "NPCPreferenceInput",
|
|
"goalID": "WalkAround"
|
|
}
|
|
},
|
|
{
|
|
"$type": "ConsiderationLinear",
|
|
"condition": "Inactive",
|
|
"curveM": 1,
|
|
"curveB": 0,
|
|
"curveC": 0,
|
|
"input": {
|
|
"$type": "NPCTimeGapFromActionMemoryInput",
|
|
"tag": "WalkAround",
|
|
"clampMin": 0,
|
|
"clampMax": 500
|
|
}
|
|
},
|
|
{
|
|
"$type": "ConsiderationLogistic",
|
|
"condition": "Active",
|
|
"curveM": 9,
|
|
"curveK": 3.9,
|
|
"curveB": 0.1,
|
|
"curveC": -5,
|
|
"input": {
|
|
"$type": "NPCTimeGapFromMemoryInput",
|
|
"tag": "LastRelaxActionID",
|
|
"clampMin": 15,
|
|
"clampMax": 45
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"goalID": "WalkToSitSleep",
|
|
"predicates": [
|
|
{
|
|
"$type": "CheckNPCScene",
|
|
"sceneInfo": {
|
|
"$type": "SelectSceneByType",
|
|
"sceneType": "Outdoor"
|
|
},
|
|
"isEqual": true
|
|
}
|
|
],
|
|
"considerations": [
|
|
{
|
|
"$type": "ConsiderationLinear",
|
|
"condition": "Inactive",
|
|
"curveM": 1,
|
|
"curveB": 0,
|
|
"curveC": 0,
|
|
"input": {
|
|
"$type": "NPCTimeGapFromActionMemoryInput",
|
|
"tag": "Sing",
|
|
"clampMin": 0,
|
|
"clampMax": 500
|
|
}
|
|
},
|
|
{
|
|
"$type": "ConsiderationLogistic",
|
|
"condition": "Active",
|
|
"curveM": 9,
|
|
"curveK": 3.9,
|
|
"curveB": 0.1,
|
|
"curveC": -5,
|
|
"input": {
|
|
"$type": "NPCTimeGapFromMemoryInput",
|
|
"tag": "LastRelaxActionID",
|
|
"clampMin": 200,
|
|
"clampMax": 300
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"goalID": "Fishing",
|
|
"predicates": [
|
|
{
|
|
"$type": "CheckNPCScene",
|
|
"sceneInfo": {
|
|
"$type": "SelectSceneByType",
|
|
"sceneType": "Outdoor"
|
|
},
|
|
"isEqual": true
|
|
}
|
|
],
|
|
"considerations": [
|
|
{
|
|
"$type": "ConsiderationConstant",
|
|
"condition": "Always",
|
|
"input": {
|
|
"$type": "NPCPreferenceInput",
|
|
"goalID": "Fishing"
|
|
}
|
|
},
|
|
{
|
|
"$type": "ConsiderationLinear",
|
|
"condition": "Inactive",
|
|
"curveM": 1,
|
|
"curveB": 0,
|
|
"curveC": 0,
|
|
"input": {
|
|
"$type": "NPCTimeGapFromActionMemoryInput",
|
|
"tag": "Fishing",
|
|
"clampMin": 0,
|
|
"clampMax": 20
|
|
}
|
|
},
|
|
{
|
|
"$type": "ConsiderationLogistic",
|
|
"condition": "Active",
|
|
"curveM": 9,
|
|
"curveK": 3.9,
|
|
"curveB": 0.1,
|
|
"curveC": -5,
|
|
"input": {
|
|
"$type": "NPCTimeGapFromMemoryInput",
|
|
"tag": "LastRelaxActionID",
|
|
"clampMin": 100,
|
|
"clampMax": 120
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"targetRange": 2.5,
|
|
"exitFollowRange": 4,
|
|
"performanceRange": 4,
|
|
"companionMaxDistance": 5,
|
|
"companionDecisions": [
|
|
{
|
|
"goalID": "CompanionFollow",
|
|
"predicates": [
|
|
{
|
|
"$type": "CheckNPCScene",
|
|
"sceneInfo": {
|
|
"$type": "SelectSceneByType",
|
|
"sceneType": "Outdoor"
|
|
},
|
|
"isEqual": true
|
|
}
|
|
],
|
|
"considerations": [
|
|
{
|
|
"$type": "ConsiderationBool",
|
|
"condition": "Active",
|
|
"trueValue": 100,
|
|
"falseValue": 0.01,
|
|
"input": {
|
|
"$type": "PredicateInput",
|
|
"predicates": [
|
|
{
|
|
"$type": "RelationalOperatorPredicate",
|
|
"valueA": {
|
|
"$type": "DistanceFromPlayer"
|
|
},
|
|
"logic": "Greater",
|
|
"valueB": {
|
|
"$type": "NPCTargetRange"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"$type": "ConsiderationBool",
|
|
"condition": "Inactive",
|
|
"trueValue": 100,
|
|
"falseValue": 0.01,
|
|
"input": {
|
|
"$type": "PredicateInput",
|
|
"predicates": [
|
|
{
|
|
"$type": "RelationalOperatorPredicate",
|
|
"valueA": {
|
|
"$type": "DistanceFromPlayer"
|
|
},
|
|
"logic": "Greater",
|
|
"valueB": {
|
|
"$type": "NPCCompanionMaxDistance"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"goalID": "UseDoubleFurniture",
|
|
"predicates": [
|
|
{
|
|
"$type": "CheckPlayerState",
|
|
"action": "UseDoubleFurniture"
|
|
}
|
|
],
|
|
"considerations": [
|
|
{
|
|
"$type": "ConsiderationConstant",
|
|
"condition": "Always",
|
|
"input": {
|
|
"$type": "ConstantInput",
|
|
"value": 120
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"goalID": "UseFurniture",
|
|
"considerations": [
|
|
{
|
|
"$type": "ConsiderationConstant",
|
|
"condition": "Always",
|
|
"input": {
|
|
"$type": "ConstantInput",
|
|
"value": 1
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"goalID": "WalkAround",
|
|
"considerations": [
|
|
{
|
|
"$type": "ConsiderationConstant",
|
|
"condition": "Inactive",
|
|
"input": {
|
|
"$type": "ConstantInput",
|
|
"value": 0.1
|
|
}
|
|
},
|
|
{
|
|
"$type": "ConsiderationLogistic",
|
|
"condition": "Active",
|
|
"curveM": 9,
|
|
"curveK": 4.9,
|
|
"curveB": 0.1,
|
|
"curveC": -5,
|
|
"input": {
|
|
"$type": "NPCTimeGapFromMemoryInput",
|
|
"tag": "LastCompanionActionId",
|
|
"clampMin": 5,
|
|
"clampMax": 10
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"goalID": "CompanionIdle",
|
|
"considerations": [
|
|
{
|
|
"$type": "ConsiderationConstant",
|
|
"condition": "Inactive",
|
|
"input": {
|
|
"$type": "ConstantInput",
|
|
"value": 0.01
|
|
}
|
|
},
|
|
{
|
|
"$type": "ConsiderationLogistic",
|
|
"condition": "Active",
|
|
"curveM": 9,
|
|
"curveK": 4.9,
|
|
"curveB": 0.01,
|
|
"curveC": -5,
|
|
"input": {
|
|
"$type": "NPCTimeGapFromMemoryInput",
|
|
"tag": "LastCompanionActionId",
|
|
"clampMin": 5,
|
|
"clampMax": 10
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"dialogSelectors": [
|
|
{
|
|
"isExclusive": true,
|
|
"id": 1,
|
|
"dialogs": [ 6200 ]
|
|
},
|
|
{
|
|
"isExclusive": true,
|
|
"id": 2,
|
|
"dialogs": [ 6202 ]
|
|
},
|
|
{
|
|
"isExclusive": true,
|
|
"id": 3,
|
|
"dialogs": [ 6203 ]
|
|
},
|
|
{
|
|
"isExclusive": true,
|
|
"id": 4,
|
|
"dialogs": [ 6204 ]
|
|
},
|
|
{
|
|
"//": "玩家有NPC陪伴但并非当前NPC",
|
|
"isExclusive": true,
|
|
"id": 9998,
|
|
"dialogs": [ 2204 ]
|
|
},
|
|
{
|
|
"//": "当前NPC处于陪伴状态",
|
|
"isExclusive": true,
|
|
"id": 9999,
|
|
"dialogs": [ 2202 ]
|
|
},
|
|
{
|
|
"//": "默认对话",
|
|
"isExclusive": false,
|
|
"id": 10000,
|
|
"weight": 1,
|
|
"dialogs": [ 2200 ]
|
|
}
|
|
],
|
|
"firstMeetState": {
|
|
"scene": {
|
|
"$type": "SelectSceneByType",
|
|
"sceneType": "SelfHome"
|
|
},
|
|
"curGoal": "Default",
|
|
"position": {
|
|
"$type": "StaticPosition",
|
|
"xPos": 2.5,
|
|
"yPos": 0.1,
|
|
"zPos": 2.5
|
|
}
|
|
}
|
|
}
|