{
	"generator": "ta Blueprint Scribe 1.1.0",
	"title": "BlueprintScribeDemo Blueprints",
	"generated": "2026-10-20T15:48:39.714Z",
	"healthScore": 71,
	"docCoverage": 0.78260868787765503,
	"complexityScore": 14,
	"scope": [
		"/Game/ScribeTest"
	],
	"assets": [
		{
			"name": "ABP_Cube",
			"package": "/Game/ScribeTest/Animation/ABP_Cube",
			"objectPath": "/Game/ScribeTest/Animation/ABP_Cube.ABP_Cube",
			"assetClass": "AnimBlueprint",
			"kind": "Animation",
			"id": "Game.ScribeTest.Animation.ABP_Cube",
			"description": "Animation Blueprint of the engine's skeletal cube.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "AnimInstance",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [],
			"components": [],
			"variables": [],
			"functions": [],
			"events": [],
			"dispatchers": [],
			"macros": [],
			"graphs": [
				{
					"name": "EventGraph",
					"kind": "Event Graph",
					"path": "EventGraph",
					"nodeCount": 0,
					"logic": "",
					"image": "",
					"imageSize":
					{
						"x": 0,
						"y": 0
					}
				},
				{
					"name": "AnimGraph",
					"kind": "Anim Graph",
					"path": "AnimGraph",
					"nodeCount": 1,
					"logic": "Nodes: Output Pose",
					"image": "images/Game.ScribeTest.Animation.ABP_Cube/AnimGraph.png",
					"imageSize":
					{
						"x": 275,
						"y": 260
					}
				}
			],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "SkeletalCube_Skeleton",
				"target": "/Engine/EngineMeshes/SkeletalCube_Skeleton",
				"note": ""
			},
			"uses": [
				{
					"text": "SkeletalCube_Skeleton",
					"target": "/Engine/EngineMeshes/SkeletalCube_Skeleton",
					"note": ""
				}
			],
			"usedBy": [],
			"compileStatus": "Up to date",
			"metrics":
			{
				"nodes": 1,
				"largestGraphNodes": 1,
				"largestGraph": "AnimGraph",
				"hardReferencePackages": 1,
				"hardReferenceBytes": 6505,
				"referencers": 0,
				"documentable": 1,
				"documented": 1,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 0,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 1
			},
			"migration":
			{
				"score": 0,
				"verdict": "Fine in Blueprint",
				"reasons": [],
				"upgradeNotes": []
			},
			"docCoverage": 1
		},
		{
			"name": "BP_Broken",
			"package": "/Game/ScribeTest/Blueprints/BP_Broken",
			"objectPath": "/Game/ScribeTest/Blueprints/BP_Broken.BP_Broken",
			"assetClass": "Blueprint",
			"kind": "Actor",
			"id": "Game.ScribeTest.Blueprints.BP_Broken",
			"description": "Does not compile: it sets a variable that was deleted.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "Actor",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [],
			"components": [
				{
					"name": "DefaultSceneRoot",
					"class":
					{
						"text": "SceneComponent",
						"target": "",
						"note": ""
					},
					"parent": "",
					"description": "",
					"inheritedFrom": "",
					"depth": 0
				}
			],
			"variables": [],
			"functions": [],
			"events": [
				{
					"name": "Event BeginPlay",
					"description": "Event when play begins for this actor.",
					"category": "",
					"access": "Public",
					"flags": [
						"Override"
					],
					"inputs": [],
					"outputs": [],
					"localVariables": [],
					"graphName": "",
					"ownerGraph": "EventGraph",
					"bOverride": true,
					"bPrivate": false,
					"nodeGuid": "54DFE9B4437A71E7FACD7894544720F0"
				}
			],
			"dispatchers": [],
			"macros": [],
			"graphs": [
				{
					"name": "EventGraph",
					"kind": "Event Graph",
					"path": "EventGraph",
					"nodeCount": 2,
					"logic": "Event BeginPlay:\n  Set Score = 0",
					"image": "images/Game.ScribeTest.Blueprints.BP_Broken/EventGraph.png",
					"imageSize":
					{
						"x": 521,
						"y": 572
					}
				}
			],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [],
			"usedBy": [],
			"compileStatus": "Error",
			"metrics":
			{
				"nodes": 2,
				"largestGraphNodes": 2,
				"largestGraph": "EventGraph",
				"hardReferencePackages": 0,
				"hardReferenceBytes": 0,
				"referencers": 0,
				"documentable": 1,
				"documented": 1,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 0,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 2
			},
			"migration":
			{
				"score": 0,
				"verdict": "Fine in Blueprint",
				"reasons": [],
				"upgradeNotes": [
					"Does not compile: fix the errors first, an upgrade only adds new ones."
				]
			},
			"docCoverage": 1
		},
		{
			"name": "BP_Door",
			"package": "/Game/ScribeTest/Blueprints/BP_Door",
			"objectPath": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetClass": "Blueprint",
			"kind": "Actor",
			"id": "Game.ScribeTest.Blueprints.BP_Door",
			"description": "A door that opens when the player interacts with it.\nLocked doors need their BP_Key.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "BP_InteractiveBase",
					"target": "/Game/ScribeTest/Blueprints/BP_InteractiveBase",
					"note": ""
				},
				{
					"text": "Actor",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [
				{
					"text": "BPI_Interactable",
					"target": "/Game/ScribeTest/Interfaces/BPI_Interactable",
					"note": ""
				}
			],
			"components": [
				{
					"name": "DefaultSceneRoot",
					"class":
					{
						"text": "SceneComponent",
						"target": "",
						"note": ""
					},
					"parent": "",
					"description": "",
					"inheritedFrom": "BP_InteractiveBase",
					"depth": 0
				},
				{
					"name": "DoorMesh",
					"class":
					{
						"text": "StaticMeshComponent",
						"target": "",
						"note": ""
					},
					"parent": "DefaultSceneRoot",
					"description": "",
					"inheritedFrom": "",
					"depth": 1
				},
				{
					"name": "Trigger",
					"class":
					{
						"text": "BoxComponent",
						"target": "",
						"note": ""
					},
					"parent": "DoorMesh",
					"description": "Overlap area for the interact prompt.",
					"inheritedFrom": "",
					"depth": 2
				}
			],
			"variables": [
				{
					"name": "bIsLocked",
					"type":
					{
						"text": "Boolean",
						"target": "",
						"note": ""
					},
					"category": "Door",
					"defaultValue": "False",
					"description": "Locked doors only open with their key.",
					"flags": [
						"Instance Editable"
					],
					"bInstanceEditable": true,
					"bPrivate": false,
					"bUsed": true
				},
				{
					"name": "OpenSpeed",
					"type":
					{
						"text": "Float (double-precision)",
						"target": "",
						"note": ""
					},
					"category": "Door",
					"defaultValue": "2.0",
					"description": "",
					"flags": [
						"Instance Editable",
						"Expose on Spawn"
					],
					"bInstanceEditable": true,
					"bPrivate": false,
					"bUsed": true
				},
				{
					"name": "Settings",
					"type":
					{
						"text": "F_DoorSettings Structure",
						"target": "/Game/ScribeTest/Types/F_DoorSettings",
						"note": ""
					},
					"category": "Default",
					"defaultValue": "(OpenAngle=90.000000)",
					"description": "Shared tuning values.",
					"flags": [
						"Instance Editable"
					],
					"bInstanceEditable": true,
					"bPrivate": false,
					"bUsed": false
				},
				{
					"name": "State",
					"type":
					{
						"text": "E_DoorState Enum",
						"target": "/Game/ScribeTest/Types/E_DoorState",
						"note": ""
					},
					"category": "Default",
					"defaultValue": "Closed",
					"description": "Current state, replicated.",
					"flags": [
						"Replicated"
					],
					"bInstanceEditable": false,
					"bPrivate": false,
					"bUsed": false
				},
				{
					"name": "Key",
					"type":
					{
						"text": "Actor Object Reference",
						"target": "",
						"note": ""
					},
					"category": "Default",
					"defaultValue": "None",
					"description": "The key that unlocks this door.",
					"flags": [
						"Instance Editable"
					],
					"bInstanceEditable": true,
					"bPrivate": false,
					"bUsed": true
				},
				{
					"name": "UnusedCounter",
					"type":
					{
						"text": "Integer",
						"target": "",
						"note": ""
					},
					"category": "Default",
					"defaultValue": "0",
					"description": "",
					"flags": [
						"Private"
					],
					"bInstanceEditable": false,
					"bPrivate": true,
					"bUsed": false
				}
			],
			"functions": [
				{
					"name": "Open",
					"description": "Opens the door at the given speed. Returns false when it is locked.",
					"category": "",
					"access": "Public",
					"flags": [],
					"inputs": [
						{
							"name": "Speed",
							"type":
							{
								"text": "Float (double-precision)",
								"target": "",
								"note": ""
							},
							"defaultValue": "",
							"bByRef": false
						}
					],
					"outputs": [
						{
							"name": "Success",
							"type":
							{
								"text": "Boolean",
								"target": "",
								"note": ""
							},
							"defaultValue": "true",
							"bByRef": false
						}
					],
					"localVariables": [],
					"graphName": "Open",
					"ownerGraph": "",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "D18DEB994FE07344A5A823B752050896"
				},
				{
					"name": "HelperNoDocs",
					"description": "",
					"category": "",
					"access": "Private",
					"flags": [],
					"inputs": [],
					"outputs": [],
					"localVariables": [],
					"graphName": "HelperNoDocs",
					"ownerGraph": "",
					"bOverride": false,
					"bPrivate": true,
					"nodeGuid": "00DC008E4DBD871BF0BFFD8A2D90BBE8"
				},
				{
					"name": "IsOpen",
					"description": "True while the door is open.",
					"category": "",
					"access": "Public",
					"flags": [
						"Pure",
						"Const"
					],
					"inputs": [],
					"outputs": [
						{
							"name": "Result",
							"type":
							{
								"text": "Boolean",
								"target": "",
								"note": ""
							},
							"defaultValue": "false",
							"bByRef": false
						}
					],
					"localVariables": [],
					"graphName": "IsOpen",
					"ownerGraph": "",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "2ED456B34473EC9D90AA81A89D4AA36D"
				},
				{
					"name": "GetPrompt",
					"description": "",
					"category": "",
					"access": "Public",
					"flags": [
						"Interface (BPI_Interactable)"
					],
					"inputs": [],
					"outputs": [],
					"localVariables": [],
					"graphName": "GetPrompt",
					"ownerGraph": "",
					"bOverride": true,
					"bPrivate": false,
					"nodeGuid": "00000000000000000000000000000000"
				},
				{
					"name": "Interact",
					"description": "",
					"category": "",
					"access": "Public",
					"flags": [
						"Interface (BPI_Interactable)"
					],
					"inputs": [],
					"outputs": [],
					"localVariables": [],
					"graphName": "Interact",
					"ownerGraph": "",
					"bOverride": true,
					"bPrivate": false,
					"nodeGuid": "00000000000000000000000000000000"
				}
			],
			"events": [
				{
					"name": "Event BeginPlay",
					"description": "Event when play begins for this actor.",
					"category": "",
					"access": "Public",
					"flags": [
						"Override"
					],
					"inputs": [],
					"outputs": [],
					"localVariables": [],
					"graphName": "",
					"ownerGraph": "EventGraph",
					"bOverride": true,
					"bPrivate": false,
					"nodeGuid": "84AC23E747D96CD11D53D09143948DE5"
				},
				{
					"name": "Event Tick",
					"description": "Event called every frame, if ticking is enabled",
					"category": "",
					"access": "Public",
					"flags": [
						"Override"
					],
					"inputs": [
						{
							"name": "DeltaSeconds",
							"type":
							{
								"text": "Float (single-precision)",
								"target": "",
								"note": ""
							},
							"defaultValue": "0.0",
							"bByRef": false
						}
					],
					"outputs": [],
					"localVariables": [],
					"graphName": "",
					"ownerGraph": "EventGraph",
					"bOverride": true,
					"bPrivate": false,
					"nodeGuid": "D920F6534F56EC976E66839FFEBB9F5E"
				},
				{
					"name": "OnUnlocked",
					"description": "Plays the unlock effects on every client.",
					"category": "",
					"access": "Public",
					"flags": [
						"Custom Event",
						"Multicast, Reliable"
					],
					"inputs": [
						{
							"name": "Who",
							"type":
							{
								"text": "Actor Object Reference",
								"target": "",
								"note": ""
							},
							"defaultValue": "",
							"bByRef": false
						}
					],
					"outputs": [],
					"localVariables": [],
					"graphName": "",
					"ownerGraph": "EventGraph",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "35351E9A466762A0EE91DAB33B885735"
				},
				{
					"name": "Slam",
					"description": "",
					"category": "",
					"access": "Public",
					"flags": [
						"Custom Event"
					],
					"inputs": [],
					"outputs": [],
					"localVariables": [],
					"graphName": "",
					"ownerGraph": "EventGraph",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "C8F5631D4B69DD31B7E965A2CE7E26F9"
				}
			],
			"dispatchers": [
				{
					"name": "OnDoorOpened",
					"description": "Broadcast after the door finished opening.",
					"category": "Default",
					"access": "Public",
					"flags": [],
					"inputs": [
						{
							"name": "Door",
							"type":
							{
								"text": "Actor Object Reference",
								"target": "",
								"note": ""
							},
							"defaultValue": "",
							"bByRef": false
						}
					],
					"outputs": [],
					"localVariables": [],
					"graphName": "",
					"ownerGraph": "",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "00000000000000000000000000000000"
				}
			],
			"macros": [],
			"graphs": [
				{
					"name": "EventGraph",
					"kind": "Event Graph",
					"path": "EventGraph",
					"nodeCount": 42,
					"logic": "Event BeginPlay:\n  Print String(In String=\"Door ready\")\n  Branch(Condition=bIsLocked)\n    True:\n      Cast To BP_Key(Object=Key)\n      Open(Speed=OpenSpeed)\n    False:\n      Print String(In String=Get Unique Device Id)\n\nEvent Tick(Delta Seconds):\n  Print String(In String=\"Tick step 1\")\n  Print String(In String=\"Tick step 2\")\n  Print String(In String=\"Tick step 3\")\n  Print String(In String=\"Tick step 4\")\n  Print String(In String=\"Tick step 5\")\n  Print String(In String=\"Tick step 6\")\n  Print String(In String=\"Tick step 7\")\n  Print String(In String=\"Tick step 8\")\n  Print String(In String=\"Tick step 9\")\n  Print String(In String=\"Tick step 10\")\n  Print String(In String=\"Tick step 11\")\n  Print String(In String=\"Tick step 12\")\n  Print String(In String=\"Tick step 13\")\n  Print String(In String=\"Tick step 14\")\n  Print String(In String=\"Tick step 15\")\n  Print String(In String=\"Tick step 16\")\n  Print String(In String=\"Tick step 17\")\n  Print String(In String=\"Tick step 18\")\n  Print String(In String=\"Tick step 19\")\n  Print String(In String=\"Tick step 20\")\n  Print String(In String=\"Tick step 21\")\n  Print String(In String=\"Tick step 22\")\n  Print String(In String=\"Tick step 23\")\n  Print String(In String=\"Tick step 24\")\n\nEvent OnUnlocked(Who):\n  Print String(In String=\"Unlocked\")\n\nEvent Slam:\n  Print String(In String=\"Slam!\")\n\nNot run by any event (3): Print String, Get Actor Location, Print String (disabled)",
					"image": "images/Game.ScribeTest.Blueprints.BP_Door/EventGraph.png",
					"imageSize":
					{
						"x": 3148,
						"y": 2580
					}
				},
				{
					"name": "Open",
					"kind": "Function",
					"path": "Open",
					"nodeCount": 3,
					"logic": "Entry(Speed):\n  Print String(In String=\"Opening\")\n  Return(Success=true)",
					"image": "images/Game.ScribeTest.Blueprints.BP_Door/Open.png",
					"imageSize":
					{
						"x": 901,
						"y": 200
					}
				},
				{
					"name": "HelperNoDocs",
					"kind": "Function",
					"path": "HelperNoDocs",
					"nodeCount": 2,
					"logic": "Entry:\n  Print String(In String=\"Helper\")",
					"image": "images/Game.ScribeTest.Blueprints.BP_Door/HelperNoDocs.png",
					"imageSize":
					{
						"x": 556,
						"y": 200
					}
				},
				{
					"name": "IsOpen",
					"kind": "Function",
					"path": "IsOpen",
					"nodeCount": 3,
					"logic": "Entry:\n  Return(Result=bIsLocked)",
					"image": "images/Game.ScribeTest.Blueprints.BP_Door/IsOpen.png",
					"imageSize":
					{
						"x": 901,
						"y": 262
					}
				},
				{
					"name": "GetPrompt",
					"kind": "Interface",
					"path": "GetPrompt",
					"nodeCount": 2,
					"logic": "Entry:\n  Return",
					"image": "",
					"imageSize":
					{
						"x": 0,
						"y": 0
					}
				},
				{
					"name": "Interact",
					"kind": "Interface",
					"path": "Interact",
					"nodeCount": 2,
					"logic": "Entry(Instigator):\n  Return(Handled=false)",
					"image": "",
					"imageSize":
					{
						"x": 0,
						"y": 0
					}
				}
			],
			"notes": [
				{
					"graph": "EventGraph",
					"text": "Debug only: shows the device id when the door is unlocked.",
					"node": "Print String"
				},
				{
					"graph": "EventGraph",
					"text": "Startup: open the door if the key fits",
					"node": ""
				}
			],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [
				{
					"text": "F_DoorSettings",
					"target": "/Game/ScribeTest/Types/F_DoorSettings",
					"note": ""
				},
				{
					"text": "E_DoorState",
					"target": "/Game/ScribeTest/Types/E_DoorState",
					"note": ""
				},
				{
					"text": "BPI_Interactable",
					"target": "/Game/ScribeTest/Interfaces/BPI_Interactable",
					"note": ""
				},
				{
					"text": "BP_Key",
					"target": "/Game/ScribeTest/Blueprints/BP_Key",
					"note": ""
				},
				{
					"text": "BP_InteractiveBase",
					"target": "/Game/ScribeTest/Blueprints/BP_InteractiveBase",
					"note": ""
				}
			],
			"usedBy": [
				{
					"text": "BP_Key",
					"target": "/Game/ScribeTest/Blueprints/BP_Key",
					"note": ""
				}
			],
			"compileStatus": "Warnings",
			"metrics":
			{
				"nodes": 54,
				"largestGraphNodes": 42,
				"largestGraph": "EventGraph",
				"hardReferencePackages": 5,
				"hardReferenceBytes": 82814,
				"referencers": 1,
				"documentable": 12,
				"documented": 9,
				"branches": 1,
				"loops": 0,
				"casts": 1,
				"mathNodes": 0,
				"tickNodes": 24,
				"tickLoops": 0,
				"complexity": 30
			},
			"migration":
			{
				"score": 34,
				"verdict": "Consider C++",
				"reasons": [
					"Event Tick runs 24 nodes every frame; a C++ Tick, a timer or an event costs far less."
				],
				"upgradeNotes": [
					"1 deprecated node: replace it before the next engine upgrade.",
					"Compiles with warnings: today's warnings are often the next version's errors."
				]
			},
			"docCoverage": 0.75
		},
		{
			"name": "BP_InteractiveBase",
			"package": "/Game/ScribeTest/Blueprints/BP_InteractiveBase",
			"objectPath": "/Game/ScribeTest/Blueprints/BP_InteractiveBase.BP_InteractiveBase",
			"assetClass": "Blueprint",
			"kind": "Actor",
			"id": "Game.ScribeTest.Blueprints.BP_InteractiveBase",
			"description": "Base class for props the player can interact with.",
			"category": "Interaction",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "Actor",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [],
			"components": [
				{
					"name": "DefaultSceneRoot",
					"class":
					{
						"text": "SceneComponent",
						"target": "",
						"note": ""
					},
					"parent": "",
					"description": "",
					"inheritedFrom": "",
					"depth": 0
				}
			],
			"variables": [
				{
					"name": "Health",
					"type":
					{
						"text": "Float (double-precision)",
						"target": "",
						"note": ""
					},
					"category": "Stats",
					"defaultValue": "100.0",
					"description": "Damage the prop can take before it breaks.",
					"flags": [
						"Instance Editable"
					],
					"bInstanceEditable": true,
					"bPrivate": false,
					"bUsed": false
				}
			],
			"functions": [],
			"events": [
				{
					"name": "Event BeginPlay",
					"description": "Event when play begins for this actor.",
					"category": "",
					"access": "Public",
					"flags": [
						"Override"
					],
					"inputs": [],
					"outputs": [],
					"localVariables": [],
					"graphName": "",
					"ownerGraph": "EventGraph",
					"bOverride": true,
					"bPrivate": false,
					"nodeGuid": "1D8025AA4FB6294964E7928FDF2C703B"
				}
			],
			"dispatchers": [],
			"macros": [],
			"graphs": [
				{
					"name": "EventGraph",
					"kind": "Event Graph",
					"path": "EventGraph",
					"nodeCount": 2,
					"logic": "Event BeginPlay:\n  Print String(In String=\"Interactive prop ready\")",
					"image": "images/Game.ScribeTest.Blueprints.BP_InteractiveBase/EventGraph.png",
					"imageSize":
					{
						"x": 620,
						"y": 572
					}
				}
			],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [],
			"usedBy": [
				{
					"text": "BP_Door",
					"target": "/Game/ScribeTest/Blueprints/BP_Door",
					"note": ""
				}
			],
			"compileStatus": "Up to date",
			"metrics":
			{
				"nodes": 2,
				"largestGraphNodes": 2,
				"largestGraph": "EventGraph",
				"hardReferencePackages": 0,
				"hardReferenceBytes": 0,
				"referencers": 1,
				"documentable": 2,
				"documented": 2,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 0,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 2
			},
			"migration":
			{
				"score": 0,
				"verdict": "Fine in Blueprint",
				"reasons": [],
				"upgradeNotes": []
			},
			"docCoverage": 1
		},
		{
			"name": "BP_Key",
			"package": "/Game/ScribeTest/Blueprints/BP_Key",
			"objectPath": "/Game/ScribeTest/Blueprints/BP_Key.BP_Key",
			"assetClass": "Blueprint",
			"kind": "Actor",
			"id": "Game.ScribeTest.Blueprints.BP_Key",
			"description": "A key that unlocks one door.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "Actor",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [],
			"components": [
				{
					"name": "DefaultSceneRoot",
					"class":
					{
						"text": "SceneComponent",
						"target": "",
						"note": ""
					},
					"parent": "",
					"description": "",
					"inheritedFrom": "",
					"depth": 0
				}
			],
			"variables": [
				{
					"name": "OwnerDoor",
					"type":
					{
						"text": "BP_Door Object Reference",
						"target": "/Game/ScribeTest/Blueprints/BP_Door",
						"note": ""
					},
					"category": "Default",
					"defaultValue": "None",
					"description": "The door this key opens.",
					"flags": [
						"Instance Editable"
					],
					"bInstanceEditable": true,
					"bPrivate": false,
					"bUsed": false
				}
			],
			"functions": [],
			"events": [],
			"dispatchers": [],
			"macros": [],
			"graphs": [
				{
					"name": "EventGraph",
					"kind": "Event Graph",
					"path": "EventGraph",
					"nodeCount": 0,
					"logic": "",
					"image": "",
					"imageSize":
					{
						"x": 0,
						"y": 0
					}
				}
			],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [
				{
					"text": "BP_Door",
					"target": "/Game/ScribeTest/Blueprints/BP_Door",
					"note": ""
				}
			],
			"usedBy": [
				{
					"text": "BP_Door",
					"target": "/Game/ScribeTest/Blueprints/BP_Door",
					"note": ""
				}
			],
			"compileStatus": "Up to date",
			"metrics":
			{
				"nodes": 0,
				"largestGraphNodes": 0,
				"largestGraph": "",
				"hardReferencePackages": 5,
				"hardReferenceBytes": 285674,
				"referencers": 1,
				"documentable": 2,
				"documented": 2,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 0,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 0
			},
			"migration":
			{
				"score": 0,
				"verdict": "No logic",
				"reasons": [],
				"upgradeNotes": []
			},
			"docCoverage": 1
		},
		{
			"name": "BP_Spaghetti",
			"package": "/Game/ScribeTest/Blueprints/BP_Spaghetti",
			"objectPath": "/Game/ScribeTest/Blueprints/BP_Spaghetti.BP_Spaghetti",
			"assetClass": "Blueprint",
			"kind": "Actor",
			"id": "Game.ScribeTest.Blueprints.BP_Spaghetti",
			"description": "Deliberately oversized Blueprint for the size rules.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "Actor",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [],
			"components": [
				{
					"name": "DefaultSceneRoot",
					"class":
					{
						"text": "SceneComponent",
						"target": "",
						"note": ""
					},
					"parent": "",
					"description": "",
					"inheritedFrom": "",
					"depth": 0
				}
			],
			"variables": [],
			"functions": [
				{
					"name": "DoEverything",
					"description": "Far too much logic in one function.",
					"category": "",
					"access": "Public",
					"flags": [],
					"inputs": [],
					"outputs": [],
					"localVariables": [],
					"graphName": "DoEverything",
					"ownerGraph": "",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "D9EEBD954368AD334CB2FAA56FE45A5C"
				}
			],
			"events": [
				{
					"name": "Event BeginPlay",
					"description": "Event when play begins for this actor.",
					"category": "",
					"access": "Public",
					"flags": [
						"Override"
					],
					"inputs": [],
					"outputs": [],
					"localVariables": [],
					"graphName": "",
					"ownerGraph": "EventGraph",
					"bOverride": true,
					"bPrivate": false,
					"nodeGuid": "F0C7780D411EA36C1CD6A089D9739CD1"
				}
			],
			"dispatchers": [],
			"macros": [],
			"graphs": [
				{
					"name": "EventGraph",
					"kind": "Event Graph",
					"path": "EventGraph",
					"nodeCount": 131,
					"logic": "Event BeginPlay:\n  Print String(In String=\"Step 1\")\n  Print String(In String=\"Step 2\")\n  Print String(In String=\"Step 3\")\n  Print String(In String=\"Step 4\")\n  Print String(In String=\"Step 5\")\n  Print String(In String=\"Step 6\")\n  Print String(In String=\"Step 7\")\n  Print String(In String=\"Step 8\")\n  Print String(In String=\"Step 9\")\n  Print String(In String=\"Step 10\")\n  Print String(In String=\"Step 11\")\n  Print String(In String=\"Step 12\")\n  Print String(In String=\"Step 13\")\n  Print String(In String=\"Step 14\")\n  Print String(In String=\"Step 15\")\n  Print String(In String=\"Step 16\")\n  Print String(In String=\"Step 17\")\n  Print String(In String=\"Step 18\")\n  Print String(In String=\"Step 19\")\n  Print String(In String=\"Step 20\")\n  Print String(In String=\"Step 21\")\n  Print String(In String=\"Step 22\")\n  Print String(In String=\"Step 23\")\n  Print String(In String=\"Step 24\")\n  Print String(In String=\"Step 25\")\n  Print String(In String=\"Step 26\")\n  Print String(In String=\"Step 27\")\n  Print String(In String=\"Step 28\")\n  Print String(In String=\"Step 29\")\n  Print String(In String=\"Step 30\")\n  Print String(In String=\"Step 31\")\n  Print String(In String=\"Step 32\")\n  Print String(In String=\"Step 33\")\n  Print String(In String=\"Step 34\")\n  Print String(In String=\"Step 35\")\n  Print String(In String=\"Step 36\")\n  Print String(In String=\"Step 37\")\n  Print String(In String=\"Step 38\")\n  Print String(In String=\"Step 39\")\n  Print String(In String=\"Step 40\")\n  Print String(In String=\"Step 41\")\n  Print String(In String=\"Step 42\")\n  Print String(In String=\"Step 43\")\n  Print String(In String=\"Step 44\")\n  Print String(In String=\"Step 45\")\n  Print String(In String=\"Step 46\")\n  Print String(In String=\"Step 47\")\n  Print String(In String=\"Step 48\")\n  Print String(In String=\"Step 49\")\n  Print String(In String=\"Step 50\")\n  Print String(In String=\"Step 51\")\n  Print String(In String=\"Step 52\")\n  Print String(In String=\"Step 53\")\n  Print String(In String=\"Step 54\")\n  Print String(In String=\"Step 55\")\n  Print String(In String=\"Step 56\")\n  Print String(In String=\"Step 57\")\n  Print String(In String=\"Step 58\")\n  Print String(In String=\"Step 59\")\n  Print String(In String=\"Step 60\")\n  Print String(In String=\"Step 61\")\n  Print String(In String=\"Step 62\")\n  Print String(In String=\"Step 63\")\n  Print String(In String=\"Step 64\")\n  Print String(In String=\"Step 65\")\n  Print String(In String=\"Step 66\")\n  Print String(In String=\"Step 67\")\n  Print String(In String=\"Step 68\")\n  Print String(In String=\"Step 69\")\n  Print String(In String=\"Step 70\")\n  Print String(In String=\"Step 71\")\n  Print String(In String=\"Step 72\")\n  Print String(In String=\"Step 73\")\n  Print String(In String=\"Step 74\")\n  Print String(In String=\"Step 75\")\n  Print String(In String=\"Step 76\")\n  Print String(In String=\"Step 77\")\n  Print String(In String=\"Step 78\")\n  Print String(In String=\"Step 79\")\n  Print String(In String=\"Step 80\")\n  Print String(In String=\"Step 81\")\n  Print String(In String=\"Step 82\")\n  Print String(In String=\"Step 83\")\n  Print String(In String=\"Step 84\")\n  Print String(In String=\"Step 85\")\n  Print String(In String=\"Step 86\")\n  Print String(In String=\"Step 87\")\n  Print String(In String=\"Step 88\")\n  Print String(In String=\"Step 89\")\n  Print String(In String=\"Step 90\")\n  Print String(In String=\"Step 91\")\n  Print String(In String=\"Step 92\")\n  Print String(In String=\"Step 93\")\n  Print String(In String=\"Step 94\")\n  Print String(In String=\"Step 95\")\n  Print String(In String=\"Step 96\")\n  Print String(In String=\"Step 97\")\n  Print String(In String=\"Step 98\")\n  Print String(In String=\"Step 99\")\n  Print String(In String=\"Step 100\")\n  Print String(In String=\"Step 101\")\n  Print String(In String=\"Step 102\")\n  Print String(In String=\"Step 103\")\n  Print String(In String=\"Step 104\")\n  Print String(In String=\"Step 105\")\n  Print String(In String=\"Step 106\")\n  Print String(In String=\"Step 107\")\n  Print String(In String=\"Step 108\")\n  Print String(In String=\"Step 109\")\n  Print String(In String=\"Step 110\")\n  Print String(In String=\"Step 111\")\n  Print String(In String=\"Step 112\")\n  Print String(In String=\"Step 113\")\n  Print String(In String=\"Step 114\")\n  Print String(In String=\"Step 115\")\n  Print String(In String=\"Step 116\")\n  Print String(In String=\"Step 117\")\n  Print String(In String=\"Step 118\")\n  Print String(In String=\"Step 119\")\n  Print String(In String=\"Step 120\")\n  Print String(In String=\"Step 121\")\n  Print String(In String=\"Step 122\")\n  Print String(In String=\"Step 123\")\n  Print String(In String=\"Step 124\")\n  Print String(In String=\"Step 125\")\n  Print String(In String=\"Step 126\")\n  Print String(In String=\"Step 127\")\n  Print String(In String=\"Step 128\")\n  Print String(In String=\"Step 129\")\n  Print String(In String=\"Step 130\")",
					"image": "images/Game.ScribeTest.Blueprints.BP_Spaghetti/EventGraph.png",
					"imageSize":
					{
						"x": 3088,
						"y": 3320
					}
				},
				{
					"name": "DoEverything",
					"kind": "Function",
					"path": "DoEverything",
					"nodeCount": 191,
					"logic": "Entry:\n  Print String(In String=\"Work 1\")\n  Print String(In String=\"Work 2\")\n  Print String(In String=\"Work 3\")\n  Print String(In String=\"Work 4\")\n  Print String(In String=\"Work 5\")\n  Print String(In String=\"Work 6\")\n  Print String(In String=\"Work 7\")\n  Print String(In String=\"Work 8\")\n  Print String(In String=\"Work 9\")\n  Print String(In String=\"Work 10\")\n  Print String(In String=\"Work 11\")\n  Print String(In String=\"Work 12\")\n  Print String(In String=\"Work 13\")\n  Print String(In String=\"Work 14\")\n  Print String(In String=\"Work 15\")\n  Print String(In String=\"Work 16\")\n  Print String(In String=\"Work 17\")\n  Print String(In String=\"Work 18\")\n  Print String(In String=\"Work 19\")\n  Print String(In String=\"Work 20\")\n  Print String(In String=\"Work 21\")\n  Print String(In String=\"Work 22\")\n  Print String(In String=\"Work 23\")\n  Print String(In String=\"Work 24\")\n  Print String(In String=\"Work 25\")\n  Print String(In String=\"Work 26\")\n  Print String(In String=\"Work 27\")\n  Print String(In String=\"Work 28\")\n  Print String(In String=\"Work 29\")\n  Print String(In String=\"Work 30\")\n  Print String(In String=\"Work 31\")\n  Print String(In String=\"Work 32\")\n  Print String(In String=\"Work 33\")\n  Print String(In String=\"Work 34\")\n  Print String(In String=\"Work 35\")\n  Print String(In String=\"Work 36\")\n  Print String(In String=\"Work 37\")\n  Print String(In String=\"Work 38\")\n  Print String(In String=\"Work 39\")\n  Print String(In String=\"Work 40\")\n  Print String(In String=\"Work 41\")\n  Print String(In String=\"Work 42\")\n  Print String(In String=\"Work 43\")\n  Print String(In String=\"Work 44\")\n  Print String(In String=\"Work 45\")\n  Print String(In String=\"Work 46\")\n  Print String(In String=\"Work 47\")\n  Print String(In String=\"Work 48\")\n  Print String(In String=\"Work 49\")\n  Print String(In String=\"Work 50\")\n  Print String(In String=\"Work 51\")\n  Print String(In String=\"Work 52\")\n  Print String(In String=\"Work 53\")\n  Print String(In String=\"Work 54\")\n  Print String(In String=\"Work 55\")\n  Print String(In String=\"Work 56\")\n  Print String(In String=\"Work 57\")\n  Print String(In String=\"Work 58\")\n  Print String(In String=\"Work 59\")\n  Print String(In String=\"Work 60\")\n  Print String(In String=\"Work 61\")\n  Print String(In String=\"Work 62\")\n  Print String(In String=\"Work 63\")\n  Print String(In String=\"Work 64\")\n  Print String(In String=\"Work 65\")\n  Print String(In String=\"Work 66\")\n  Print String(In String=\"Work 67\")\n  Print String(In String=\"Work 68\")\n  Print String(In String=\"Work 69\")\n  Print String(In String=\"Work 70\")\n  Print String(In String=\"Work 71\")\n  Print String(In String=\"Work 72\")\n  Print String(In String=\"Work 73\")\n  Print String(In String=\"Work 74\")\n  Print String(In String=\"Work 75\")\n  Print String(In String=\"Work 76\")\n  Print String(In String=\"Work 77\")\n  Print String(In String=\"Work 78\")\n  Print String(In String=\"Work 79\")\n  Print String(In String=\"Work 80\")\n  Print String(In String=\"Work 81\")\n  Print String(In String=\"Work 82\")\n  Print String(In String=\"Work 83\")\n  Print String(In String=\"Work 84\")\n  Print String(In String=\"Work 85\")\n  Print String(In String=\"Work 86\")\n  Print String(In String=\"Work 87\")\n  Print String(In String=\"Work 88\")\n  Print String(In String=\"Work 89\")\n  Print String(In String=\"Work 90\")\n  Print String(In String=\"Work 91\")\n  Print String(In String=\"Work 92\")\n  Print String(In String=\"Work 93\")\n  Print String(In String=\"Work 94\")\n  Print String(In String=\"Work 95\")\n  Print String(In String=\"Work 96\")\n  Print String(In String=\"Work 97\")\n  Print String(In String=\"Work 98\")\n  Print String(In String=\"Work 99\")\n  Print String(In String=\"Work 100\")\n  Print String(In String=\"Work 101\")\n  Print String(In String=\"Work 102\")\n  Print String(In String=\"Work 103\")\n  Print String(In String=\"Work 104\")\n  Print String(In String=\"Work 105\")\n  Print String(In String=\"Work 106\")\n  Print String(In String=\"Work 107\")\n  Print String(In String=\"Work 108\")\n  Print String(In String=\"Work 109\")\n  Print String(In String=\"Work 110\")\n  Print String(In String=\"Work 111\")\n  Print String(In String=\"Work 112\")\n  Print String(In String=\"Work 113\")\n  Print String(In String=\"Work 114\")\n  Print String(In String=\"Work 115\")\n  Print String(In String=\"Work 116\")\n  Print String(In String=\"Work 117\")\n  Print String(In String=\"Work 118\")\n  Print String(In String=\"Work 119\")\n  Print String(In String=\"Work 120\")\n  Print String(In String=\"Work 121\")\n  Print String(In String=\"Work 122\")\n  Print String(In String=\"Work 123\")\n  Print String(In String=\"Work 124\")\n  Print String(In String=\"Work 125\")\n  Print String(In String=\"Work 126\")\n  Print String(In String=\"Work 127\")\n  Print String(In String=\"Work 128\")\n  Print String(In String=\"Work 129\")\n  Print String(In String=\"Work 130\")\n  Print String(In String=\"Work 131\")\n  Print String(In String=\"Work 132\")\n  Print String(In String=\"Work 133\")\n  Print String(In String=\"Work 134\")\n  Print String(In String=\"Work 135\")\n  Print String(In String=\"Work 136\")\n  Print String(In String=\"Work 137\")\n  Print String(In String=\"Work 138\")\n  Print String(In String=\"Work 139\")\n  Print String(In String=\"Work 140\")\n  Print String(In String=\"Work 141\")\n  Print String(In String=\"Work 142\")\n  Print String(In String=\"Work 143\")\n  Print String(In String=\"Work 144\")\n  Print String(In String=\"Work 145\")\n  Print String(In String=\"Work 146\")\n  Print String(In String=\"Work 147\")\n  Print String(In String=\"Work 148\")\n  Print String(In String=\"Work 149\")\n  Print String(In String=\"Work 150\")\n  Print String(In String=\"Work 151\")\n  Print String(In String=\"Work 152\")\n  Print String(In String=\"Work 153\")\n  Print String(In String=\"Work 154\")\n  Print String(In String=\"Work 155\")\n  Print String(In String=\"Work 156\")\n  Print String(In String=\"Work 157\")\n  Print String(In String=\"Work 158\")\n  Print String(In String=\"Work 159\")\n  Print String(In String=\"Work 160\")\n  Print String(In String=\"Work 161\")\n  Print String(In String=\"Work 162\")\n  Print String(In String=\"Work 163\")\n  Print String(In String=\"Work 164\")\n  Print String(In String=\"Work 165\")\n  Print String(In String=\"Work 166\")\n  Print String(In String=\"Work 167\")\n  Print String(In String=\"Work 168\")\n  Print String(In String=\"Work 169\")\n  Print String(In String=\"Work 170\")\n  Print String(In String=\"Work 171\")\n  Print String(In String=\"Work 172\")\n  Print String(In String=\"Work 173\")\n  Print String(In String=\"Work 174\")\n  Print String(In String=\"Work 175\")\n  Print String(In String=\"Work 176\")\n  Print String(In String=\"Work 177\")\n  Print String(In String=\"Work 178\")\n  Print String(In String=\"Work 179\")\n  Print String(In String=\"Work 180\")\n  Print String(In String=\"Work 181\")\n  Print String(In String=\"Work 182\")\n  Print String(In String=\"Work 183\")\n  Print String(In String=\"Work 184\")\n  Print String(In String=\"Work 185\")\n  Print String(In String=\"Work 186\")\n  Print String(In String=\"Work 187\")\n  Print String(In String=\"Work 188\")\n  Print String(In String=\"Work 189\")\n  Print String(In String=\"Work 190\")",
					"image": "images/Game.ScribeTest.Blueprints.BP_Spaghetti/DoEverything.png",
					"imageSize":
					{
						"x": 3092,
						"y": 4096
					}
				}
			],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [],
			"usedBy": [],
			"compileStatus": "Up to date",
			"metrics":
			{
				"nodes": 322,
				"largestGraphNodes": 191,
				"largestGraph": "DoEverything",
				"hardReferencePackages": 0,
				"hardReferenceBytes": 0,
				"referencers": 0,
				"documentable": 2,
				"documented": 2,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 0,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 76
			},
			"migration":
			{
				"score": 38,
				"verdict": "Consider C++",
				"reasons": [
					"Large: 322 nodes. Code of this size is easier to review, diff and merge in C++.",
					"Very complex (76 of 100): long chains and big graphs are hard to follow and change as nodes."
				],
				"upgradeNotes": []
			},
			"docCoverage": 1
		},
		{
			"name": "BP_Turret",
			"package": "/Game/ScribeTest/Blueprints/BP_Turret",
			"objectPath": "/Game/ScribeTest/Blueprints/BP_Turret.BP_Turret",
			"assetClass": "Blueprint",
			"kind": "Actor",
			"id": "Game.ScribeTest.Blueprints.BP_Turret",
			"description": "Turret that tracks the closest target every frame and heats up while it turns.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "Actor",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [],
			"components": [
				{
					"name": "DefaultSceneRoot",
					"class":
					{
						"text": "SceneComponent",
						"target": "",
						"note": ""
					},
					"parent": "",
					"description": "",
					"inheritedFrom": "",
					"depth": 0
				}
			],
			"variables": [
				{
					"name": "Targets",
					"type":
					{
						"text": "Array of Actor Object References",
						"target": "",
						"note": ""
					},
					"category": "Turret",
					"defaultValue": "",
					"description": "Actors the turret can track.",
					"flags": [
						"Instance Editable"
					],
					"bInstanceEditable": true,
					"bPrivate": false,
					"bUsed": true
				},
				{
					"name": "Range",
					"type":
					{
						"text": "Float (double-precision)",
						"target": "",
						"note": ""
					},
					"category": "Turret",
					"defaultValue": "2500.0",
					"description": "Tracking distance in cm.",
					"flags": [
						"Instance Editable"
					],
					"bInstanceEditable": true,
					"bPrivate": false,
					"bUsed": true
				},
				{
					"name": "TurnSpeed",
					"type":
					{
						"text": "Float (double-precision)",
						"target": "",
						"note": ""
					},
					"category": "Turret",
					"defaultValue": "4.0",
					"description": "How fast the head turns.",
					"flags": [
						"Instance Editable"
					],
					"bInstanceEditable": true,
					"bPrivate": false,
					"bUsed": true
				},
				{
					"name": "Heat",
					"type":
					{
						"text": "Float (double-precision)",
						"target": "",
						"note": ""
					},
					"category": "Turret",
					"defaultValue": "0.0",
					"description": "Rises while tracking, 0 to 100.",
					"flags": [],
					"bInstanceEditable": false,
					"bPrivate": false,
					"bUsed": true
				}
			],
			"functions": [],
			"events": [
				{
					"name": "Event Tick",
					"description": "Event called every frame, if ticking is enabled",
					"category": "",
					"access": "Public",
					"flags": [
						"Override"
					],
					"inputs": [
						{
							"name": "DeltaSeconds",
							"type":
							{
								"text": "Float (single-precision)",
								"target": "",
								"note": ""
							},
							"defaultValue": "0.0",
							"bByRef": false
						}
					],
					"outputs": [],
					"localVariables": [],
					"graphName": "",
					"ownerGraph": "EventGraph",
					"bOverride": true,
					"bPrivate": false,
					"nodeGuid": "0387C49C4719340F0878589D29981E43"
				}
			],
			"dispatchers": [],
			"macros": [],
			"graphs": [
				{
					"name": "EventGraph",
					"kind": "Event Graph",
					"path": "EventGraph",
					"nodeCount": 39,
					"logic": "Event Tick(Delta Seconds):\n  For Each Loop(Array=Targets)\n    Loop Body:\n      Branch(Condition=float < float(A=Vector Length(A=vector - vector(A=Get Actor Location(...), B=Get Actor Location(...))), B=Range))\n      Set Actor Rotation(New Rotation=RInterp To(Current=Get Actor Rotation, Target=Find Look at Rotation(Start=Get Actor Location, Target=Get Actor Location(Target=For Each Loop.Array Element)), Delta Time=Delta Seconds, Interp Speed=float * ...\n      Draw Debug Line(Line Start=Get Actor Location, Line End=Get Actor Location(Target=For Each Loop.Array Element), Duration=0.000000, Thickness=0.000000)\n      Set Heat = Clamp (Float)(Value=float * float(A=float + float(A=float * float(...), B=0.5), B=1.01), Min=0.0, Max=100)\n      Print String(In String=\"Tracking\")\n    Completed:\n      For Loop(Last Index=3)\n        Loop Body:\n          Print String(In String=\"Sweep\")\n          Print String(In String=\"Scan left\")\n          Print String(In String=\"Scan right\")\n          Print String(In String=\"Scan up\")\n          Print String(In String=\"Scan down\")\n\nNot run by any event (8): Sin (Radians), Get Heat, Get Heat, float + float, float * float, float + float, float * float, float + float",
					"image": "images/Game.ScribeTest.Blueprints.BP_Turret/EventGraph.png",
					"imageSize":
					{
						"x": 3700,
						"y": 1194
					}
				}
			],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [
				{
					"text": "StandardMacros",
					"target": "/Engine/EditorBlueprintResources/StandardMacros",
					"note": ""
				}
			],
			"usedBy": [],
			"compileStatus": "Up to date",
			"metrics":
			{
				"nodes": 39,
				"largestGraphNodes": 39,
				"largestGraph": "EventGraph",
				"hardReferencePackages": 1,
				"hardReferenceBytes": 422905,
				"referencers": 0,
				"documentable": 5,
				"documented": 5,
				"branches": 1,
				"loops": 2,
				"casts": 0,
				"mathNodes": 18,
				"tickNodes": 12,
				"tickLoops": 2,
				"complexity": 23
			},
			"migration":
			{
				"score": 61,
				"verdict": "Strong C++ candidate",
				"reasons": [
					"2 loops run every frame inside Event Tick.",
					"Event Tick runs 12 nodes every frame; a C++ Tick, a timer or an event costs far less.",
					"18 math nodes: tight math runs many times faster in C++."
				],
				"upgradeNotes": []
			},
			"docCoverage": 1
		},
		{
			"name": "AC_Health",
			"package": "/Game/ScribeTest/Components/AC_Health",
			"objectPath": "/Game/ScribeTest/Components/AC_Health.AC_Health",
			"assetClass": "Blueprint",
			"kind": "Component",
			"id": "Game.ScribeTest.Components.AC_Health",
			"description": "Health and damage for any actor.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "ActorComponent",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [],
			"components": [],
			"variables": [
				{
					"name": "MaxHealth",
					"type":
					{
						"text": "Float (double-precision)",
						"target": "",
						"note": ""
					},
					"category": "Health",
					"defaultValue": "100.0",
					"description": "Health after spawning.",
					"flags": [
						"Instance Editable"
					],
					"bInstanceEditable": true,
					"bPrivate": false,
					"bUsed": false
				},
				{
					"name": "CurrentHealth",
					"type":
					{
						"text": "Float (double-precision)",
						"target": "",
						"note": ""
					},
					"category": "Health",
					"defaultValue": "0.0",
					"description": "",
					"flags": [],
					"bInstanceEditable": false,
					"bPrivate": false,
					"bUsed": true
				}
			],
			"functions": [
				{
					"name": "ApplyDamage",
					"description": "Subtracts damage and returns true when the owner died.",
					"category": "",
					"access": "Public",
					"flags": [],
					"inputs": [
						{
							"name": "Amount",
							"type":
							{
								"text": "Float (double-precision)",
								"target": "",
								"note": ""
							},
							"defaultValue": "",
							"bByRef": false
						}
					],
					"outputs": [
						{
							"name": "bDied",
							"type":
							{
								"text": "Boolean",
								"target": "",
								"note": ""
							},
							"defaultValue": "false",
							"bByRef": false
						}
					],
					"localVariables": [],
					"graphName": "ApplyDamage",
					"ownerGraph": "",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "E710429F46FC904D276ECA9701951933"
				}
			],
			"events": [],
			"dispatchers": [
				{
					"name": "OnDied",
					"description": "",
					"category": "Default",
					"access": "Public",
					"flags": [],
					"inputs": [],
					"outputs": [],
					"localVariables": [],
					"graphName": "",
					"ownerGraph": "",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "00000000000000000000000000000000"
				}
			],
			"macros": [],
			"graphs": [
				{
					"name": "EventGraph",
					"kind": "Event Graph",
					"path": "EventGraph",
					"nodeCount": 0,
					"logic": "",
					"image": "",
					"imageSize":
					{
						"x": 0,
						"y": 0
					}
				},
				{
					"name": "ApplyDamage",
					"kind": "Function",
					"path": "ApplyDamage",
					"nodeCount": 3,
					"logic": "Entry(Amount):\n  Set CurrentHealth = Amount\n  Return(Died=false)",
					"image": "images/Game.ScribeTest.Components.AC_Health/ApplyDamage.png",
					"imageSize":
					{
						"x": 901,
						"y": 160
					}
				}
			],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [],
			"usedBy": [],
			"compileStatus": "Up to date",
			"metrics":
			{
				"nodes": 3,
				"largestGraphNodes": 3,
				"largestGraph": "ApplyDamage",
				"hardReferencePackages": 0,
				"hardReferenceBytes": 0,
				"referencers": 0,
				"documentable": 5,
				"documented": 3,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 0,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 3
			},
			"migration":
			{
				"score": 0,
				"verdict": "Fine in Blueprint",
				"reasons": [],
				"upgradeNotes": []
			},
			"docCoverage": 0.60000002384185791
		},
		{
			"name": "BPI_Interactable",
			"package": "/Game/ScribeTest/Interfaces/BPI_Interactable",
			"objectPath": "/Game/ScribeTest/Interfaces/BPI_Interactable.BPI_Interactable",
			"assetClass": "Blueprint",
			"kind": "Interface",
			"id": "Game.ScribeTest.Interfaces.BPI_Interactable",
			"description": "Anything the player can use with the interact key.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "Interface",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [],
			"components": [],
			"variables": [],
			"functions": [
				{
					"name": "Interact",
					"description": "Called when the player uses this object.",
					"category": "",
					"access": "Public",
					"flags": [],
					"inputs": [
						{
							"name": "Instigator",
							"type":
							{
								"text": "Actor Object Reference",
								"target": "",
								"note": ""
							},
							"defaultValue": "",
							"bByRef": false
						}
					],
					"outputs": [
						{
							"name": "Handled",
							"type":
							{
								"text": "Boolean",
								"target": "",
								"note": ""
							},
							"defaultValue": "false",
							"bByRef": false
						}
					],
					"localVariables": [],
					"graphName": "Interact",
					"ownerGraph": "",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "0A630BB34A990171CC56098DF4BC82F2"
				},
				{
					"name": "GetPrompt",
					"description": "",
					"category": "",
					"access": "Public",
					"flags": [],
					"inputs": [],
					"outputs": [
						{
							"name": "Prompt",
							"type":
							{
								"text": "String",
								"target": "",
								"note": ""
							},
							"defaultValue": "",
							"bByRef": false
						}
					],
					"localVariables": [],
					"graphName": "GetPrompt",
					"ownerGraph": "",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "18BD7F6649A7C64B9CBB228940FDB4CE"
				}
			],
			"events": [],
			"dispatchers": [],
			"macros": [],
			"graphs": [
				{
					"name": "Interact",
					"kind": "Function",
					"path": "Interact",
					"nodeCount": 2,
					"logic": "Entry(Instigator):\n  Return(Handled=false)",
					"image": "",
					"imageSize":
					{
						"x": 0,
						"y": 0
					}
				},
				{
					"name": "GetPrompt",
					"kind": "Function",
					"path": "GetPrompt",
					"nodeCount": 2,
					"logic": "Entry:\n  Return",
					"image": "",
					"imageSize":
					{
						"x": 0,
						"y": 0
					}
				}
			],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [],
			"usedBy": [
				{
					"text": "BP_Door",
					"target": "/Game/ScribeTest/Blueprints/BP_Door",
					"note": ""
				}
			],
			"compileStatus": "Up to date",
			"metrics":
			{
				"nodes": 4,
				"largestGraphNodes": 2,
				"largestGraph": "Interact",
				"hardReferencePackages": 0,
				"hardReferenceBytes": 0,
				"referencers": 1,
				"documentable": 3,
				"documented": 2,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 0,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 0
			},
			"migration":
			{
				"score": 0,
				"verdict": "No logic",
				"reasons": [],
				"upgradeNotes": []
			},
			"docCoverage": 0.66666668653488159
		},
		{
			"name": "BPFL_DoorMath",
			"package": "/Game/ScribeTest/Libraries/BPFL_DoorMath",
			"objectPath": "/Game/ScribeTest/Libraries/BPFL_DoorMath.BPFL_DoorMath",
			"assetClass": "Blueprint",
			"kind": "Function Library",
			"id": "Game.ScribeTest.Libraries.BPFL_DoorMath",
			"description": "Math helpers for doors.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "BlueprintFunctionLibrary",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [],
			"components": [],
			"variables": [],
			"functions": [
				{
					"name": "Square",
					"description": "Value times value.",
					"category": "",
					"access": "Public",
					"flags": [
						"Pure",
						"Static"
					],
					"inputs": [
						{
							"name": "Value",
							"type":
							{
								"text": "Float (double-precision)",
								"target": "",
								"note": ""
							},
							"defaultValue": "",
							"bByRef": false
						}
					],
					"outputs": [
						{
							"name": "Result",
							"type":
							{
								"text": "Float (double-precision)",
								"target": "",
								"note": ""
							},
							"defaultValue": "0.0",
							"bByRef": false
						}
					],
					"localVariables": [],
					"graphName": "Square",
					"ownerGraph": "",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "799F8C86436DB9E1445F4988280963C4"
				}
			],
			"events": [],
			"dispatchers": [],
			"macros": [],
			"graphs": [
				{
					"name": "Square",
					"kind": "Function",
					"path": "Square",
					"nodeCount": 3,
					"logic": "Entry(Value):\n  Return(Result=float * float(A=Value, B=Value))",
					"image": "images/Game.ScribeTest.Libraries.BPFL_DoorMath/Square.png",
					"imageSize":
					{
						"x": 901,
						"y": 204
					}
				}
			],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [],
			"usedBy": [],
			"compileStatus": "Up to date",
			"metrics":
			{
				"nodes": 3,
				"largestGraphNodes": 3,
				"largestGraph": "Square",
				"hardReferencePackages": 0,
				"hardReferenceBytes": 0,
				"referencers": 0,
				"documentable": 2,
				"documented": 2,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 1,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 2
			},
			"migration":
			{
				"score": 0,
				"verdict": "Fine in Blueprint",
				"reasons": [],
				"upgradeNotes": []
			},
			"docCoverage": 1
		},
		{
			"name": "BPML_Flow",
			"package": "/Game/ScribeTest/Libraries/BPML_Flow",
			"objectPath": "/Game/ScribeTest/Libraries/BPML_Flow.BPML_Flow",
			"assetClass": "Blueprint",
			"kind": "Macro Library",
			"id": "Game.ScribeTest.Libraries.BPML_Flow",
			"description": "",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "Actor",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [],
			"components": [],
			"variables": [],
			"functions": [],
			"events": [],
			"dispatchers": [],
			"macros": [
				{
					"name": "DoTwice",
					"description": "Runs the output twice.",
					"category": "",
					"access": "Public",
					"flags": [],
					"inputs": [
						{
							"name": "In",
							"type":
							{
								"text": "Exec",
								"target": "",
								"note": ""
							},
							"defaultValue": "",
							"bByRef": false
						}
					],
					"outputs": [
						{
							"name": "Out",
							"type":
							{
								"text": "Exec",
								"target": "",
								"note": ""
							},
							"defaultValue": "",
							"bByRef": false
						}
					],
					"localVariables": [],
					"graphName": "DoTwice",
					"ownerGraph": "",
					"bOverride": false,
					"bPrivate": false,
					"nodeGuid": "00000000000000000000000000000000"
				}
			],
			"graphs": [
				{
					"name": "DoTwice",
					"kind": "Macro",
					"path": "DoTwice",
					"nodeCount": 3,
					"logic": "Inputs:\n  Print String(In String=\"Twice\")\n  Outputs",
					"image": "images/Game.ScribeTest.Libraries.BPML_Flow/DoTwice.png",
					"imageSize":
					{
						"x": 776,
						"y": 200
					}
				}
			],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [],
			"usedBy": [],
			"compileStatus": "Up to date",
			"metrics":
			{
				"nodes": 3,
				"largestGraphNodes": 3,
				"largestGraph": "DoTwice",
				"hardReferencePackages": 0,
				"hardReferenceBytes": 0,
				"referencers": 0,
				"documentable": 2,
				"documented": 1,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 0,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 2
			},
			"migration":
			{
				"score": 0,
				"verdict": "Fine in Blueprint",
				"reasons": [],
				"upgradeNotes": []
			},
			"docCoverage": 0.5
		},
		{
			"name": "E_DoorState",
			"package": "/Game/ScribeTest/Types/E_DoorState",
			"objectPath": "/Game/ScribeTest/Types/E_DoorState.E_DoorState",
			"assetClass": "UserDefinedEnum",
			"kind": "Enum",
			"id": "Game.ScribeTest.Types.E_DoorState",
			"description": "Where a door is in its open/close cycle.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [],
			"interfaces": [],
			"components": [],
			"variables": [],
			"functions": [],
			"events": [],
			"dispatchers": [],
			"macros": [],
			"graphs": [],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [
				{
					"name": "NewEnumerator0",
					"displayName": "Closed",
					"description": "",
					"value": 0
				},
				{
					"name": "NewEnumerator1",
					"displayName": "Opening",
					"description": "The door is moving.",
					"value": 1
				},
				{
					"name": "NewEnumerator2",
					"displayName": "Open",
					"description": "",
					"value": 2
				}
			],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [],
			"usedBy": [
				{
					"text": "BP_Door",
					"target": "/Game/ScribeTest/Blueprints/BP_Door",
					"note": ""
				}
			],
			"compileStatus": "",
			"metrics":
			{
				"nodes": 0,
				"largestGraphNodes": 0,
				"largestGraph": "",
				"hardReferencePackages": 0,
				"hardReferenceBytes": 0,
				"referencers": 1,
				"documentable": 4,
				"documented": 2,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 0,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 0
			},
			"migration":
			{
				"score": 0,
				"verdict": "No logic",
				"reasons": [],
				"upgradeNotes": []
			},
			"docCoverage": 0.5
		},
		{
			"name": "F_DoorSettings",
			"package": "/Game/ScribeTest/Types/F_DoorSettings",
			"objectPath": "/Game/ScribeTest/Types/F_DoorSettings.F_DoorSettings",
			"assetClass": "UserDefinedStruct",
			"kind": "Structure",
			"id": "Game.ScribeTest.Types.F_DoorSettings",
			"description": "Tuning values shared by all doors.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [],
			"interfaces": [],
			"components": [],
			"variables": [
				{
					"name": "bStartsLocked",
					"type":
					{
						"text": "Boolean",
						"target": "",
						"note": ""
					},
					"category": "",
					"defaultValue": "False",
					"description": "Doors start locked and need a key.",
					"flags": [],
					"bInstanceEditable": false,
					"bPrivate": false,
					"bUsed": true
				},
				{
					"name": "OpenAngle",
					"type":
					{
						"text": "Float (double-precision)",
						"target": "",
						"note": ""
					},
					"category": "",
					"defaultValue": "90.000000",
					"description": "",
					"flags": [],
					"bInstanceEditable": false,
					"bPrivate": false,
					"bUsed": true
				}
			],
			"functions": [],
			"events": [],
			"dispatchers": [],
			"macros": [],
			"graphs": [],
			"notes": [],
			"widgets": [],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [],
			"usedBy": [
				{
					"text": "BP_Door",
					"target": "/Game/ScribeTest/Blueprints/BP_Door",
					"note": ""
				}
			],
			"compileStatus": "",
			"metrics":
			{
				"nodes": 0,
				"largestGraphNodes": 0,
				"largestGraph": "",
				"hardReferencePackages": 0,
				"hardReferenceBytes": 0,
				"referencers": 1,
				"documentable": 3,
				"documented": 2,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 0,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 0
			},
			"migration":
			{
				"score": 0,
				"verdict": "No logic",
				"reasons": [],
				"upgradeNotes": []
			},
			"docCoverage": 0.66666668653488159
		},
		{
			"name": "WBP_HUD",
			"package": "/Game/ScribeTest/UI/WBP_HUD",
			"objectPath": "/Game/ScribeTest/UI/WBP_HUD.WBP_HUD",
			"assetClass": "WidgetBlueprint",
			"kind": "Widget",
			"id": "Game.ScribeTest.UI.WBP_HUD",
			"description": "In-game HUD with the health bar.",
			"category": "",
			"displayName": "",
			"namespace": "",
			"parentChain": [
				{
					"text": "UserWidget",
					"target": "",
					"note": ""
				},
				{
					"text": "Widget",
					"target": "",
					"note": ""
				},
				{
					"text": "Visual",
					"target": "",
					"note": ""
				}
			],
			"interfaces": [],
			"components": [],
			"variables": [
				{
					"name": "PlayerName",
					"type":
					{
						"text": "String",
						"target": "",
						"note": ""
					},
					"category": "Default",
					"defaultValue": "",
					"description": "Shown above the health bar.",
					"flags": [
						"Instance Editable"
					],
					"bInstanceEditable": true,
					"bPrivate": false,
					"bUsed": false
				}
			],
			"functions": [],
			"events": [
				{
					"name": "Event Construct",
					"description": "Called after the underlying slate widget is constructed.  Depending on how the slate object is used this event may be called multiple times due to adding and removing from the hierarchy. If you need a true called-once-when-created event, use OnInitialized.",
					"category": "",
					"access": "Public",
					"flags": [
						"Override"
					],
					"inputs": [],
					"outputs": [],
					"localVariables": [],
					"graphName": "",
					"ownerGraph": "EventGraph",
					"bOverride": true,
					"bPrivate": false,
					"nodeGuid": "ECE2C6334D180EAF2D3F3AB709427D3C"
				}
			],
			"dispatchers": [],
			"macros": [],
			"graphs": [
				{
					"name": "EventGraph",
					"kind": "Event Graph",
					"path": "EventGraph",
					"nodeCount": 2,
					"logic": "Event Construct:\n  Print String(In String=\"HUD constructed\")",
					"image": "images/Game.ScribeTest.UI.WBP_HUD/EventGraph.png",
					"imageSize":
					{
						"x": 572,
						"y": 602
					}
				}
			],
			"notes": [],
			"widgets": [
				{
					"name": "RootCanvas",
					"class":
					{
						"text": "CanvasPanel",
						"target": "",
						"note": ""
					},
					"depth": 0,
					"bIsVariable": false
				},
				{
					"name": "HealthText",
					"class":
					{
						"text": "TextBlock",
						"target": "",
						"note": ""
					},
					"depth": 1,
					"bIsVariable": true
				},
				{
					"name": "HealthBar",
					"class":
					{
						"text": "ProgressBar",
						"target": "",
						"note": ""
					},
					"depth": 1,
					"bIsVariable": true
				}
			],
			"widgetAnimations": [],
			"enumEntries": [],
			"targetSkeleton":
			{
				"text": "",
				"target": "",
				"note": ""
			},
			"uses": [],
			"usedBy": [],
			"compileStatus": "Up to date",
			"metrics":
			{
				"nodes": 2,
				"largestGraphNodes": 2,
				"largestGraph": "EventGraph",
				"hardReferencePackages": 0,
				"hardReferenceBytes": 0,
				"referencers": 0,
				"documentable": 2,
				"documented": 2,
				"branches": 0,
				"loops": 0,
				"casts": 0,
				"mathNodes": 0,
				"tickNodes": 0,
				"tickLoops": 0,
				"complexity": 2
			},
			"migration":
			{
				"score": 0,
				"verdict": "Fine in Blueprint",
				"reasons": [],
				"upgradeNotes": []
			},
			"docCoverage": 1
		}
	],
	"issues": [
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Broken.BP_Broken",
			"assetName": "BP_Broken",
			"rule": "Compile",
			"ruleName": "Compile",
			"severity": "Error",
			"message": "Set Score in 'EventGraph': Could not find a variable named \"Score\" in '/Game/ScribeTest/Blueprints/BP_Broken.BP_Broken_C'.",
			"graph": "EventGraph",
			"node": "D23B4654-42E4-29C8-F840-EAA398727E00"
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "Tick",
			"ruleName": "Event Tick",
			"severity": "Warning",
			"message": "Event Tick runs 24 nodes every frame. Timers, events or a lower tick interval are often cheaper.",
			"graph": "EventGraph",
			"node": "D920F653-4F56-EC97-6E66-839FFEBB9F5E"
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "Cast.Blueprint",
			"ruleName": "Cast to Blueprint",
			"severity": "Info",
			"message": "Casts to BP_Key. The cast target is loaded together with this Blueprint; an interface avoids that.",
			"graph": "EventGraph",
			"node": "5EF1612F-4281-DD52-6F5F-4FB653417D93"
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "Variable.Unused",
			"ruleName": "Unused variable",
			"severity": "Info",
			"message": "Variable 'Settings' is not used in any graph of this Blueprint (other Blueprints may still use it).",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "Variable.Unused",
			"ruleName": "Unused variable",
			"severity": "Info",
			"message": "Variable 'State' is not used in any graph of this Blueprint (other Blueprints may still use it).",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "Variable.Unused",
			"ruleName": "Unused variable",
			"severity": "Warning",
			"message": "Private variable 'UnusedCounter' is not used in any graph.",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "Nodes.Dead",
			"ruleName": "Dead nodes",
			"severity": "Warning",
			"message": "1 node in 'EventGraph' never runs because nothing is connected to the exec input: Print String.",
			"graph": "EventGraph",
			"node": "C7D4020A-4DE8-D4A8-4A28-AE89B032EFB3"
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "Nodes.UnusedPure",
			"ruleName": "Unused results",
			"severity": "Info",
			"message": "1 pure node in 'EventGraph' has no connected output: Get Actor Location.",
			"graph": "EventGraph",
			"node": "D4A95573-416D-A98D-ACFD-F78D3766BDCE"
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "Nodes.Disabled",
			"ruleName": "Disabled nodes",
			"severity": "Info",
			"message": "1 disabled node in 'EventGraph': Print String.",
			"graph": "EventGraph",
			"node": "E671567E-45B7-4861-6F6D-48A4C9650AEA"
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "Nodes.Deprecated",
			"ruleName": "Deprecated node",
			"severity": "Warning",
			"message": "'Get Unique Device Id' in 'EventGraph' is deprecated: Usage of 'Get Unique Device Id' has been deprecated. Use GetDeviceId instead",
			"graph": "EventGraph",
			"node": "401304A2-402B-A3F7-F878-FDA0075A2988"
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "Docs.Missing",
			"ruleName": "Missing description",
			"severity": "Info",
			"message": "2 functions and events have no description: HelperNoDocs, Slam.",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "Docs.Missing",
			"ruleName": "Missing description",
			"severity": "Info",
			"message": "1 public variable has no tooltip: OpenSpeed.",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_InteractiveBase.BP_InteractiveBase",
			"assetName": "BP_InteractiveBase",
			"rule": "Variable.Unused",
			"ruleName": "Unused variable",
			"severity": "Info",
			"message": "Variable 'Health' is not used in any graph of this Blueprint (other Blueprints may still use it).",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Key.BP_Key",
			"assetName": "BP_Key",
			"rule": "Variable.Unused",
			"ruleName": "Unused variable",
			"severity": "Info",
			"message": "Variable 'OwnerDoor' is not used in any graph of this Blueprint (other Blueprints may still use it).",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Spaghetti.BP_Spaghetti",
			"assetName": "BP_Spaghetti",
			"rule": "Graph.Large",
			"ruleName": "Large graph",
			"severity": "Warning",
			"message": "'EventGraph' has 131 nodes (limit 100). Move parts of it into functions, macros or collapsed graphs.",
			"graph": "EventGraph",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Spaghetti.BP_Spaghetti",
			"assetName": "BP_Spaghetti",
			"rule": "Graph.Large",
			"ruleName": "Large graph",
			"severity": "Warning",
			"message": "'DoEverything' has 191 nodes (limit 100). Move parts of it into functions, macros or collapsed graphs.",
			"graph": "DoEverything",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Spaghetti.BP_Spaghetti",
			"assetName": "BP_Spaghetti",
			"rule": "Blueprint.Large",
			"ruleName": "Large Blueprint",
			"severity": "Warning",
			"message": "The Blueprint has 322 nodes (limit 300). Consider splitting it into components, a parent class or C++.",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Turret.BP_Turret",
			"assetName": "BP_Turret",
			"rule": "Tick",
			"ruleName": "Event Tick",
			"severity": "Info",
			"message": "Event Tick runs 12 nodes every frame. Timers, events or a lower tick interval are often cheaper.",
			"graph": "EventGraph",
			"node": "0387C49C-4719-340F-0878-589D29981E43"
		},
		{
			"asset": "/Game/ScribeTest/Components/AC_Health.AC_Health",
			"assetName": "AC_Health",
			"rule": "Variable.Unused",
			"ruleName": "Unused variable",
			"severity": "Info",
			"message": "Variable 'MaxHealth' is not used in any graph of this Blueprint (other Blueprints may still use it).",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Components/AC_Health.AC_Health",
			"assetName": "AC_Health",
			"rule": "Docs.Missing",
			"ruleName": "Missing description",
			"severity": "Info",
			"message": "1 function or event has no description: OnDied.",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Components/AC_Health.AC_Health",
			"assetName": "AC_Health",
			"rule": "Docs.Missing",
			"ruleName": "Missing description",
			"severity": "Info",
			"message": "1 public variable has no tooltip: CurrentHealth.",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Interfaces/BPI_Interactable.BPI_Interactable",
			"assetName": "BPI_Interactable",
			"rule": "Docs.Missing",
			"ruleName": "Missing description",
			"severity": "Info",
			"message": "1 function or event has no description: GetPrompt.",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Libraries/BPML_Flow.BPML_Flow",
			"assetName": "BPML_Flow",
			"rule": "Docs.Missing",
			"ruleName": "Missing description",
			"severity": "Info",
			"message": "No description. Add one in Class Settings > Description.",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Types/F_DoorSettings.F_DoorSettings",
			"assetName": "F_DoorSettings",
			"rule": "Docs.Missing",
			"ruleName": "Missing description",
			"severity": "Info",
			"message": "1 field has no tooltip: OpenAngle.",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/UI/WBP_HUD.WBP_HUD",
			"assetName": "WBP_HUD",
			"rule": "Variable.Unused",
			"ruleName": "Unused variable",
			"severity": "Info",
			"message": "Variable 'PlayerName' is not used in any graph of this Blueprint (other Blueprints may still use it).",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Key.BP_Key",
			"assetName": "BP_Key",
			"rule": "References.Circular",
			"ruleName": "Circular reference",
			"severity": "Warning",
			"message": "Hard reference cycle with BP_Door. Each of them loads all the others; an interface or a soft reference breaks the cycle.",
			"graph": "",
			"node": ""
		},
		{
			"asset": "/Game/ScribeTest/Blueprints/BP_Door.BP_Door",
			"assetName": "BP_Door",
			"rule": "References.Circular",
			"ruleName": "Circular reference",
			"severity": "Warning",
			"message": "Hard reference cycle with BP_Key. Each of them loads all the others; an interface or a soft reference breaks the cycle.",
			"graph": "",
			"node": ""
		}
	]
}