Jump to content
View in the app

A better way to browse. Learn more.

Obsidian Forum Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

So I saw the Al-Amir spellbook mod and have been trying to edit it. I think I have the spell list and everything correct (main changes are the spell list and changing the +1 conjuration power level to +1 evocation power level).
This is the spell list:
1: Wizard's Double, Fan of Flames
2: Concelhaut's Draining Missiles, Merciless Gaze
3: Ninagauth's Death Ray, Llengrath's Displaced Image
4: Ninagauth's Shadowflame, Ironskin
5: Llengrath's Safeguard, Arkemyr's Wondrous Torment
6: Arkemyr's Brilliant Departure, Arkemyr's Capricious Hex
7: Ninagauth's Killing Bolt, Concelhaut's Crushing Doom
8: Llengrath's Superior Elemental Bulwark, Wall of Many Colors
9: Llengrath's Relfection, Minoletta's Missile Salvo
 
I'm also at a loss for how to get the item into my inventory, I tried the hookscript(?) to make it try to autoadd to inventory but I can't wrap my head around it.

 

Anyway, this is what it looks like if anyone can help.
 

{

"GameDataObjects": [
"$type": "Game.GameData.EquippableGameData, Assembly-CSharp",
"DebugName": "Grimoire_Lucina",
"ID": "748a4aee-aed8-4bb0-a0ab-3edd516a6812"
"Components": [
{
"$type": "Game.GameData.ItemComponent, Assembly-CSharp",
"DisplayName": 99995,
"DescriptionText": 1176,
"DescriptionTextTactical": -1,
"FilterType": "Weapons",
"InventoryAudioEventListID": "32023afc-c1c3-4b6a-bcfd-77bde56ee6c3",
"IsQuestItem": "false",
"IsIngredient": "false",
"IsCurrency": "false",
"IsAdventuringItem": "false",
"IsJunk": "false",
"CanSellForFullValue": "false",
"MaxStackSize": 1,
"NeverDropAsLoot": "false",
"CanBePickpocketed": "true",
"IsUnique": "true",
"Value": 3800,
"IconTextureSmall": "gui/icons/items/misc/grimoire07_s.png",
"IconTextureLarge": "gui/icons/items/misc/grimoire07_l.png",
"PencilSketchTexture": "",
"InspectOnUseButton": [],
"IsPlaceholder": "false"
},
{
"$type": "Game.GameData.EquippableComponent, Assembly-CSharp",
"EquipmentType": "None",
"EquipmentSlot": "GrimoireOrTrinket",
"AppearancePiece": {
"ModelVisualDataPath": "prefabs/items/appearance/weapons/grimoire/a_grimoire07.asset"
},
"ItemModsIDs": ["6b876729-649c-48ad-8b60-23fb5d42c32a"],
"OnEquipVisualEffects": [],
"RestrictedToClassIDs": [
"acfd1303-4699-4939-91eb-6ac46d4af0bd"
],
"RestrictedToPlayer": "false",
"EquipConditionals": {
"Operator": 0,
"Components": []
},
"ProficientAbilityID": "00000000-0000-0000-0000-000000000000",
"CannotUnequip": "false",
"ItemRendererPrefab": "prefabs/itemrenderers/genericanimateditemrenderer.prefab",
"ItemModel": "art/character/weapons/grimoire/grimoire01/w_grimoire01_cast.fbx",
"AnimationController": "art/animation/animationcontrollers/weapon/w_grimoire.controller",
"PaperdollOverrideRenderer": "",
"AttackSummonID": "00000000-0000-0000-0000-000000000000",
"CannotSheathe": "false",
"PropVisualEffects": []
},
{
"$type": "Game.GameData.GrimoireComponent, Assembly-CSharp",
"NPCsAutomaticallyFill": "false",
"SchoolID": "00000000-0000-0000-0000-000000000000",
"SpellsIDs": [
"7d032f3c-386a-4711-b760-4285ea7f7e3e",
"07110385-72fd-4323-8b67-5734662ad53c",
"3f46f1e1-51b5-4567-a350-42a948218b4b",
"03819651-f218-4d29-a002-ceb99a489f1f",
"c0913543-b464-4138-a8cd-000f4ab10c67",
"75b14374-12fe-498e-9391-4c70a7acabc1",
"1e2c967f-b5bc-412c-ba34-0355737d338c",
"2d810c5c-b3cb-4f80-9ed6-5371e8a1f1e5",
"dd28d41d-862f-419f-a16e-cad2a1507918",
"c3fd9042-7c9b-44da-9b25-142bde609498",
"e50eae7a-220e-4ce9-a55f-1f796a4289b7",
"ca629ecb-b299-4831-ba46-795511b62887",
"4d7f980a-bb04-4874-b184-3a3493d20bf3",
"01e682b1-dd28-4c84-a63b-27cbd950be49",
"b341a2a4-07bc-4959-b4a6-5d14e9a3487d",
"9456a886-211c-404a-843e-a2fcf22bff6e",
"fded625a-081d-41ac-aa09-cfa92bd2ab5f",
"a15d0649-6283-48a8-a55e-b78f733c4382"
]

}
{
"$type": "Game.GameData.ItemModGameData, Assembly-CSharp",
"DebugName": "Empower_Evocation",
"ID": "6b876729-649c-48ad-8b60-23fb5d42c32a",
"Components": [{
"$type": "Game.GameData.ItemModComponent, Assembly-CSharp",
"DisplayName": 99650,
"HideFromUI": "false",
"EnchantCategory": "None",
"Cost": 4,
"DisplayEvenIfCostZero": "false",
"CursesItem": "false",
"StatusEffectsOnEquipIDs": ["b5eac66e-c834-4ca6-a61b-c9ed8fd96fca"],
"StatusEffectsOnLaunchIDs": [],
"StatusEffectsOnAttackIDs": [],
"AbilityModsOnEquipIDs": [],
"OnEquipVisualEffects": [],
"DamageProcs": [],
"AbilityModsOnEquipIDs": [],
}]
},
{
                "$type": "Game.GameData.ModScriptHookGameData, Assembly-CSharp",
                "DebugName": "Grimoire_ItemAdd",
                "ID": "a7c6a2b7-97fe-4b18-9448-ef59ad65aa54",
                "Components": [
                    {
                        "$type": "Game.GameData.ModScriptHookComponent, Assembly-CSharp",
                        "RunOnlyOnce": "false",
                        "SucceedOnlyOnce": "true",
                        "Script": {
                            "Data": {
                                "FullName": "Void GiveItems(748a4aee-aed8-4bb0-a0ab-3edd516a6812, 1",
                            }
                            }
                        }
                    
                ]
 
            }
            ]
]
}

 

{
                "$type": "Game.GameData.ModScriptHookGameData, Assembly-CSharp",
                "DebugName": "Grimoire_ItemAdd",
                "ID": "a7c6a2b7-97fe-4b18-9448-ef59ad65aa54",
                "Components": [
                    {
                        "$type": "Game.GameData.ModScriptHookComponent, Assembly-CSharp",
                        "RunOnlyOnce": "false",
                        "SucceedOnlyOnce": "true",
                        "Script": {
                            "Data": {
                                "FullName": "Void GiveItems(748a4aee-aed8-4bb0-a0ab-3edd516a6812, 1",
                            }
                            }
                        }
                    
                ]
 
            }

 

 

I use the "ModScriptHook" if I want to add it to a store, container, NPC etc. If you just want to add it to your inventory then you can use the "PromotionalItemCollection", the game will treat it as a DLC and drop it in your inventory the next time you load a save or start a new game.

 

If I didn't screw anything up then this should work.

 

 

{

    "GameDataObjects": [

        {

            "$type": "Game.GameData.PromotionalItemCollectionGameData, Assembly-CSharp",

            "DebugName": "Grimoire_ItemAdd",

            "ID": "a7c6a2b7-97fe-4b18-9448-ef59ad65aa54",

            "Components": [

                {

                    "$type": "Game.GameData.PromotionalItemCollectionComponent, Assembly-CSharp",

                    "PromotionalItemCollections": {

                        "PromotionalItemCollection": [

                            {

                                "ItemReferenceID": "748a4aee-aed8-4bb0-a0ab-3edd516a6812",

                                "Quantity": 1

                            }

                        ]

                    }

                }

            ]

        }

    ]

}

 

Edited by Arthur Dent

  • Author

Well I tried that, the whole file looks like this now, however I think something else is throwing a wrench in the works. I checked the output_log.txt and it's throwing out this:

 

 

FormatException: Invalid format for Guid.Guid(string).
  at System.Guid+GuidParser.ParseChar (Char c) [0x00000] in <filename unknown>:0 
  at System.Guid+GuidParser.ParseGuid2 () [0x00000] in <filename unknown>:0 
  at System.Guid+GuidParser.Parse () [0x00000] in <filename unknown>:0 
  at System.Guid..ctor (System.String g) [0x00000] in <filename unknown>:0 
  at Onyx.GameDataObject.ParseGuidArray (Newtonsoft.Json.JsonTextReader jsonReader) [0x00000] in <filename unknown>:0 
  at Game.GameData.EquippableComponent.Parse (Newtonsoft.Json.JsonTextReader jsonReader) [0x00000] in <filename unknown>:0 
  at Onyx.GameDataObject.ParseComponent (Newtonsoft.Json.JsonTextReader jsonReader, Boolean allowPartialOverride) [0x00000] in <filename unknown>:0 
  at Onyx.GameDataObject.Parse (Newtonsoft.Json.JsonTextReader jsonReader, Boolean allowPartialOverride) [0x00000] in <filename unknown>:0 
  at Game.GameData.GameDataBundle.LoadJson (System.String filename, IGameDataProvider partialOverrideProvider) [0x00000] in <filename unknown>:0 
UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object)
UnityEngine.DebugLogHandler:LogException(Exception, Object)
UnityEngine.Logger:LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
Game.GameData.GameDataBundle:LoadJson(String, IGameDataProvider)
Game.ResourceManager:LoadPartialGameDataBundle(String)
Game.ResourceManager:LoadBundles(String, String, String, Action`1, Action`1)
Game.ResourceManager:LoadGameDataBundles()
Game.ResourceManager:ReloadDataBundles()
Game.ResourceManager:Init()
Game.ResourceManager:.cctor()
ResolutionControllerBootstrap:Awake()
ResolutionControllerBootstrap:Awake()
 
(Filename:  Line: -1)
 
ERROR: Failed to load game data bundle E:/Steam/steamapps/common/Pillars of Eternity II/PillarsOfEternityII_Data/override/Lucina's Grimoire\design\gamedata\lucina_book.gamedatabundle.

 

Updated file:

 

{
    "GameDataObjects": [{
            "$type": "Game.GameData.EquippableGameData, Assembly-CSharp",
            "DebugName": "Grimoire_Lucina",
            "ID": "748a4aee-aed8-4bb0-a0ab-3edd516a6812",
            "Components": [{
                    "$type": "Game.GameData.ItemComponent, Assembly-CSharp",
                    "DisplayName": 99995,
                    "DescriptionText": 1176,
                    "FilterType": "Weapons",
                    "InventoryAudioEventListID": "32023afc-c1c3-4b6a-bcfd-77bde56ee6c3",
                    "IsQuestItem": "false",
                    "IsIngredient": "false",
                    "IsCurrency": "false",
                    "IsAdventuringItem": "false",
                    "IsJunk": "false",
                    "CanSellForFullValue": "false",
                    "MaxStackSize": 1,
                    "NeverDropAsLoot": "true",
                    "CanBePickpocketed": "false",
                    "IsUnique": "true",
                    "Value": 3800,
                    "IconTextureSmall": "gui/icons/items/misc/grimoire07_s.png",
                    "IconTextureLarge": "gui/icons/items/misc/grimoire07_l.png",
                    "PencilSketchTexture": "",
                    "InspectOnUseButton": [],
                    "IsPlaceholder": "false"
                },
                {
                    "$type": "Game.GameData.EquippableComponent, Assembly-CSharp",
                    "EquipmentType": "None",
                    "EquipmentSlot": "GrimoireOrTrinket",
                    "AppearancePiece": {
                        "ModelVisualDataPath": "prefabs/items/appearance/weapons/grimoire/a_grimoire07.asset"
                    },
                    "ItemModsIDs": ["6b876729-649c-48ad-8b60-23fb5d42c32a"],
                    "OnEquipVisualEffects": [],
                    "RestrictedToClassIDs": [{
"ClassType": "Wizard"
}],
                    "RestrictedToPlayer": "false",
                    "ProficientAbilityID": "00000000-0000-0000-0000-000000000000",
                    "CannotUnequip": "false",
                    "ItemRendererPrefab": "prefabs/itemrenderers/genericanimateditemrenderer.prefab",
                    "ItemModel": "art/character/weapons/grimoire/grimoire01/w_grimoire01_cast.fbx",
                    "AnimationController": "art/animation/animationcontrollers/weapon/w_grimoire.controller",
                    "PaperdollOverrideRenderer": "",
                    "AttackSummonID": "00000000-0000-0000-0000-000000000000",
                    "CannotSheathe": "false",
                    "PropVisualEffects": []
                },
                {
                    "$type": "Game.GameData.GrimoireComponent, Assembly-CSharp",
                    "NPCsAutomaticallyFill": "false",
                    "SchoolID": "00000000-0000-0000-0000-000000000000",
                    "SpellsIDs": [
                        "7d032f3c-386a-4711-b760-4285ea7f7e3e",
                        "07110385-72fd-4323-8b67-5734662ad53c",
                        "3f46f1e1-51b5-4567-a350-42a948218b4b",
                        "03819651-f218-4d29-a002-ceb99a489f1f",
                        "c0913543-b464-4138-a8cd-000f4ab10c67",
                        "75b14374-12fe-498e-9391-4c70a7acabc1",
                        "1e2c967f-b5bc-412c-ba34-0355737d338c",
                        "2d810c5c-b3cb-4f80-9ed6-5371e8a1f1e5",
                        "dd28d41d-862f-419f-a16e-cad2a1507918",
                        "c3fd9042-7c9b-44da-9b25-142bde609498",
                        "e50eae7a-220e-4ce9-a55f-1f796a4289b7",
                        "ca629ecb-b299-4831-ba46-795511b62887",
                        "4d7f980a-bb04-4874-b184-3a3493d20bf3",
                        "01e682b1-dd28-4c84-a63b-27cbd950be49",
                        "b341a2a4-07bc-4959-b4a6-5d14e9a3487d",
                        "9456a886-211c-404a-843e-a2fcf22bff6e",
                        "fded625a-081d-41ac-aa09-cfa92bd2ab5f",
                        "a15d0649-6283-48a8-a55e-b78f733c4382"
                    ]

                },
                {
                    "$type": "Game.GameData.ItemModGameData, Assembly-CSharp",
                    "DebugName": "Empower_Evocation",
                    "ID": "6b876729-649c-48ad-8b60-23fb5d42c32a",
                    "Components": [{
                        "$type": "Game.GameData.ItemModComponent, Assembly-CSharp",
                        "DisplayName": 99650,
                        "HideFromUI": "false",
                        "EnchantCategory": "None",
                        "Cost": 4,
                        "DisplayEvenIfCostZero": "false",
                        "CursesItem": "false",
                        "StatusEffectsOnEquipIDs": ["b5eac66e-c834-4ca6-a61b-c9ed8fd96fca"],
                        "StatusEffectsOnLaunchIDs": [],
                        "StatusEffectsOnAttackIDs": [],
                        "AbilityModsOnEquipIDs": [],
                        "OnEquipVisualEffects": [],
                        "DamageProcs": []
                    }]
                }
            ]
        },
        {
            "GameDataObjects": [{
                "$type": "Game.GameData.PromotionalItemCollectionGameData, Assembly-CSharp",
                "DebugName": "Grimoire_ItemAdd",
                "ID": "879ee637-b908-4218-a3c7-da004e1cdd88",
                "Components": [{
                    "$type": "Game.GameData.PromotionalItemCollectionComponent, Assembly-CSharp",
                    "PromotionalItemCollections": {
                        "PromotionalItemCollection": [{
                            "ItemReferenceID": "748a4aee-aed8-4bb0-a0ab-3edd516a6812",
                            "Quantity": 1
                        }]
                    }
                }]
            }]
        }
    ]
}
  • Author

Wait, nevermind, I fixed it at last! Thanks for your help Arthur!

Yeah, my bad. I wrote it as a stand-alone entry.

 

But, I'm glad you got it working.

Create an account or sign in to comment

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.