Giter Site home page Giter Site logo

owlcatopensource / wrathmodificationtemplate Goto Github PK

View Code? Open in Web Editor NEW
45.0 45.0 14.0 2.77 MB

Internal development repository for Wrath of the Righteous mod template

License: Apache License 2.0

C# 4.97% HLSL 70.16% ShaderLab 22.89% GLSL 1.98%

wrathmodificationtemplate's People

Contributors

owlcatopensource avatar wittlewolfie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wrathmodificationtemplate's Issues

Adding New Blueprints

So last I'd heard no one had successfully created/added new blueprints using these tools. Is that still the case or has anyone managed to crack this one yet?

LocalizedName

I'm having issues in how to make this work. I've tried just about everything I can think of to make it work.

"LocalizedName": null,

Is what I am talking about. What is used to replace the null value?

Modifying Components

Has anyone had any luck doing this yet with these tools? Anytime a change I want to make falls into a components category it seems to turn into a different beast altogether and I haven't had any success with it.

Mod Settings GUI (Ctrl+M) does not block input from mouse (or keyboard)

When clicking in the mod GUI window (the one that can be opened by pressing Ctrl+M), the clicks still register in the actual game. This means your characters will be running around and can interact with things while you're changing your mod settings.

Similarly, keyboard input is still getting picked up by the game. Although I haven't tested this yet, this could be problematic when your mod provides GUI elements with input text boxes for the user to type in, for example.

-Castar

Blueprint component patching

I am trying to create a blueprint patch to increase the morale buffs provided by the power of faith ability from the Warrior of Holy Light paladin archetype.

I followed the directions from the guide, added the asset id and patch name to the blue print patches file, and added the blue print patches guid to the modification.asset file, but the game is still failing the patch and I'm not sure why.

Here is what I have so far for the patch:

{
"Components": [
{
"$type": "a2844c135c0324e439072bd3cc2f9260, AddStatBonus",
"Descriptor": "Morale",
"Stat": "AC",
"Value": 2
},
{
"$type": "a2844c135c0324e439072bd3cc2f9260, AddStatBonus",
"Descriptor": "Morale",
"Stat": "AdditionalAttackBonus",
"Value": 2
},
{
"$type": "a2844c135c0324e439072bd3cc2f9260, AddStatBonus",
"Descriptor": "Morale",
"Stat": "AdditionalDamage",
"Value": 2
},
{
"$type": "3819276ccd091df42818bb86295941c1, SavingThrowBonusAgainstDescriptor",
"SpellDescriptor": "Fear",
"ModifierDescriptor": "Morale",
"Value": 2
}
]
}

Criticism of the patch format.

The way patches currently behave, by replacing an entire array, will hamper interoperability between modifications. For example, two mods that wish to add new class archetypes could not both add fields to a class blueprint's m_Archetype array via a patch, as one of them would always overwrite the other.

If patches behaved more like a standard diff patch, allowing us to add or remove lines to an array by prefixing them with a + or -, and leaving the rest of the array intact, it would greatly increase the ability of similar mods to operate together.

For example:

{
"m_Archetypes": [
-"!bp_ac87f40932cfd324c90b441f93857c40" //Remove This Archetype Blueprint
+"!bp_639b74fd2f48d474e965c596b1649095" //Add This Archetype Blueprint
]
}

Weapons issue

When making new weapons it seems there is an issue.

  1. They are not inheriting from type correctly.

And there may be other issues associated with making new weapons.

Substituting Model Resources in Blueprints

The 'guide' as written is a bit opaque regarding actually performing a number of it's functions. I only just discovered the "!bp_" syntax for substituting blueprint references today thanks to TylerG and ijuintekka's crosstalk on the format criticism post. Is it possible we could get some clarity on format for making substitutions within the VisualParameters section of blueprints for references to resources? One assumes it's probably something like "!r_" but it eludes me at the moment. I don't suppose anyone's figured this out already?

Typo in OwlcatModificationManangerSettings.json

The mod manager settings file is currently called OwlcatModificationManangerSettings.json (note the extra 'n' in 'Mananger')

I thought this was a typo in the readme at first, but apparently that's what it needs to be called for mods to be loaded. Getting this wrong means your mod(s) don't work, without any warning or logging or whatever.

-Castar

Error setting value to 'm_Icon' on 'Kingmaker.Blueprints.Classes.BlueprintFeature'

Repro Steps:

  1. Create a new mod under Assets/Modifications, e.g. WrathModificationTemplate/Assets/Modifications/MyMod
  2. Follow steps in Readme to get mod ready to build
  3. Create a BlueprintFeature
  4. Import an icon: Right Click in MyMod/Content > Import New Asset > Select *.png file (importing TestIcon.png from the Example is fine)
  5. Select the asset and ensure the 'Texture Type' is 'Sprite (2D and UI)'
  6. Right Click the asset > Modification Tools > Copy GUID and File ID
  7. Paste the GUID and File ID into the m_Icon field of your blueprint
  8. Build and install the mod
  9. Launch WotR

In AppData the game log will show an error when loading the blueprint:

Error setting value to 'm_Icon' on 'Kingmaker.Blueprints.Classes.BlueprintFeature' ... Inner: Object of type 'UnityEngine.Texture2D' cannot be converted to type 'UnityEngine.Sprite'.

PatchMaterialShaders tries to load StreamingAssets/Bundles/shaders

But this bundle doesn't exist.

Trying to manually AssetBundle.LoadFromFile("wrath_path/Bundles/shaders") returns null as well (even though the bundle does exist.

Currently I'm needing to steal the shader back from already-existing prefabs which sucks a bit. :-(

Is it possible to change armor color?

Hi, was wanting to change the color of Undying Devotion armor from copper to gold and the blue back ground on holy thorn to red. Is it possible to do that using the mod template?

Curious Blueprint Issue

I was looking to make a new glaive item, so I grabbed one of the Soulshear blueprints as a starting point and changed what I wanted, then built the mod. Everything about it worked as expected, except the character equipping it would instead hold it in one hand and sheath it at their hip like a one-handed weapon. Nothing I changed should cause this to happen, and I progressively took off changes to figure out what I had messed up until finally I did nothing but duplicate the original item, change the blueprint name, and change the guid. But even then, the issue persists, which makes absolutely no sense. The blueprint is below and as you'll see it's identical to Soulshear except with a new, Unity-generated GUID.

{
  "AssetId": "f599dc76f6e34e74f8441d4c77c487ac",
  "Data": {
    "$type": "c00f723cccf2d314198c42a572c631fd, BlueprintItemWeapon",
    "PrototypeLink": "",
    "m_Overrides": [],
    "Components": [],
    "Comment": "",
    "m_DisplayNameText": {
      "m_Key": "",
      "m_OwnerString": "",
      "m_OwnerPropertyPath": "",
      "m_JsonPath": "",
      "Shared": {
        "assetguid": "755adb394a8f83d4a82feba4abae9152",
        "stringkey": "c2f351a0-9ef3-40f0-9763-3080d43a5f26"
      }
    },
    "m_DescriptionText": {
      "m_Key": "",
      "m_OwnerString": "",
      "m_OwnerPropertyPath": "",
      "m_JsonPath": "",
      "Shared": {
        "assetguid": "86d843ed6d7896148a87b1e07c9179cc",
        "stringkey": "ae57f556-7af4-4306-99f5-ea863330de40"
      }
    },
    "m_FlavorText": {
      "m_Key": "",
      "m_OwnerString": "",
      "m_OwnerPropertyPath": "",
      "m_JsonPath": "",
      "Shared": {
        "assetguid": "b0b8b25dcfbcdc549a9fe13fc876ab80",
        "stringkey": "032f29a1-72e9-4eb7-a76e-c2154dad3363"
      }
    },
    "m_NonIdentifiedNameText": {
      "m_Key": "",
      "m_OwnerString": "",
      "m_OwnerPropertyPath": "",
      "m_JsonPath": "",
      "Shared": null
    },
    "m_NonIdentifiedDescriptionText": {
      "m_Key": "",
      "m_OwnerString": "",
      "m_OwnerPropertyPath": "",
      "m_JsonPath": "",
      "Shared": null
    },
    "m_Icon": {
      "guid": "5f6495644b28a5544886ee458ce8f300",
      "fileid": 21300000
    },
    "m_Cost": 25000,
    "m_Weight": 0.0,
    "m_IsNotable": false,
    "m_ForceStackable": false,
    "m_Destructible": false,
    "m_ShardItem": null,
    "m_MiscellaneousType": "None",
    "m_InventoryPutSound": "",
    "m_InventoryTakeSound": "",
    "NeedSkinningForCollect": false,
    "TrashLootTypes": [],
    "CR": 0,
    "m_Ability": null,
    "m_ActivatableAbility": null,
    "SpendCharges": true,
    "Charges": 1,
    "RestoreChargesOnRest": false,
    "CasterLevel": 1,
    "SpellLevel": 1,
    "DC": 11,
    "IsNonRemovable": false,
    "m_EquipmentEntity": null,
    "m_EquipmentEntityAlternatives": [],
    "m_ForcedRampColorPresetIndex": 0,
    "m_VisualParameters": {
      "m_Projectiles": [],
      "m_WeaponAnimationStyle": "None",
      "m_SpecialAnimation": "None",
      "m_WeaponModel": {
        "AssetId": "90a63915c617d734f998d369e8da5863"
      },
      "m_WeaponBeltModelOverride": null,
      "m_WeaponSheathModelOverride": null,
      "m_OverrideAttachSlots": false,
      "m_PossibleAttachSlots": [],
      "m_ReachFXThresholdBonus": 0.0,
      "m_SoundSize": "None",
      "m_SoundType": "None",
      "m_WhooshSound": "",
      "m_MissSoundType": "None",
      "m_EquipSound": "",
      "m_UnequipSound": "",
      "m_InventoryEquipSound": "",
      "m_InventoryPutSound": "",
      "m_InventoryTakeSound": ""
    },
    "m_Type": "!bp_7a14a1b224cd173449cb7ffc77d5f65c",
    "m_Size": "Medium",
    "m_Enchantments": [
      "!bp_80bb8a737579e35498177e1e3c75899b",
      "!bp_ab39e7d59dd12f4429ffef5dca88dc7b",
      "!bp_29a2fb0941e9c0f4389f8cfd9b0e7fbd"
    ],
    "m_OverrideDamageDice": false,
    "m_DamageDice": {
      "m_Rolls": 0,
      "m_Dice": "Zero"
    },
    "m_OverrideDamageType": true,
    "m_DamageType": {
      "Type": "Physical",
      "Common": {
        "Reality": 0,
        "Alignment": 0,
        "Precision": false
      },
      "Physical": {
        "Material": "Adamantite",
        "Form": "Slashing",
        "Enhancement": 0,
        "EnhancementTotal": 0
      },
      "Energy": "Fire"
    },
    "Double": false,
    "m_SecondWeapon": null,
    "KeepInPolymorph": false,
    "m_OverrideShardItem": false,
    "m_OverrideDestructible": false,
    "m_AlwaysPrimary": false
  }
}

Missing license file

Without an explicit license, the WrathModificationTemplate maintains exclusive copyright. This technically prevents mod developers from using this template to create and publish modifications: Github - No License.

While I'm sure Owlcat has no intentions to prosecute mod developers, a licensing file ensures protection for mod developers and makes your policy on modifying and publishing the template clear.

Couple questions

I have several questions.

  1. Is there a function to use to add custom weapon models or would we need to create a script for it?

  2. Is there a way to temporarily disable features when a buff is active?

  3. Is there a way to tie a feature's usability to having a specific spellbook?

Help in changing Holy blare enchantment to reference correct ability

Hi, could someone help me patch HolyBlareEnchantment to reference the correct ability HolyBlareAbility. Currently the enchantment has HeartOfIcebergAbility.

This is currently what I have:

{
  "_#Entries":[
    {
      "_#ArrayMergeSettings": "Merge",
  
  "Components": [
        {
          "$type": "bdbdc2afaa197d4479e112a32f9bdab5, AddInitiatorAttackWithWeaponTrigger",
          "name": "$AddInitiatorAttackWithWeaponTrigger$f798bc3d-4a60-47fd-ac63-ccf55e5ba994",
          "PrototypeLink": {
            "guid": "",
            "name": ""
          },
          "m_Overrides": [],
          "m_WeaponType": null,
          "OnlyHit": true,
          "CriticalHit": true,
          "Action": {
            "Actions": [
              {
                "m_Spell": "Blueprint:006ce4b5ffe7e374ca1d3cadc3670551:HolyBlareAbility",
                "DC": {
                  "m_CustomProperty": null
                },
                "SpellLevel": {
                  "m_CustomProperty": null
                }
            },
          null
          }
        ]
      }

Mod settings GUI (Ctrl+M) can only be opened while in game (and not on the map)

As per the title, the mod settings GUI that can be opened by pressing CTRL+M only works while in game. I first suspected it actually only works in GameModeType.Default, but it also works while paused so maybe that's not it. In any case, to be useful as a mod settings configuration tool, it should probably work on all screens while in-game.

-Castar

Build Failure: Unknown Assembly Owlcat.SharedTypes

Repro Steps:

  1. Complete "Getting started" Step 1
  2. Skip Steps 2 / 3 and try to Build per Step 4. i.e. Don't make any changes and just try to build the example.

Result:
Unknown Assembly Owlcat.SharedTypes UnityEditor.Build.Pipeline.BuildTasksRunner:Run(IList1, IBuildContext) OwlcatModification.Editor.Build.Builder:RunTasks(IList1, IBuildContext) (at Assets/Editor/Build/Builder.cs:127) OwlcatModification.Editor.Build.Builder:BuildInternal(OwlcatModificationManifest, SettingsData, String, String, IContextObject[]) (at Assets/Editor/Build/Builder.cs:111) OwlcatModification.Editor.Build.Builder:Build(OwlcatModificationManifest, SettingsData, String, String, IContextObject[]) (at Assets/Editor/Build/Builder.cs:40) OwlcatModification.Editor.Build.Builder:Build(Modification) (at Assets/Editor/Build/Builder.cs:23) OwlcatModification.Editor.ToolsMenu:Build() (at Assets/Editor/ToolsMenu.cs:112)

Expected Result:
Build is successful.

Additional Info:

  • Windows 10 Home x64
  • Unity Version 2019.4.0f1 Personal

Struggling to get Mods Running for Some Users

I have a user that has run my mod successfully before and is now returning to the game for a new playthrough (fresh install) and can't get it running. I've looked at everything with how they've set up and for the life of my cannot find a mistake they've made - it should be working. A few others have since chimed in to say they're having the same problem. This is the first time I've been unable to find and correct an error in set-up by one of my users and it's got me really frustrated. I could really use another set of eyes on this if anyone's got a moment.

This is the link to the mod's post section. Take a look at the thread started by karsoban - his first reply contains links to screenshots of how he's set up his Modifications folder and the like. Thanks in advance for any help.
https://www.nexusmods.com/pathfinderwrathoftherighteous/mods/143?tab=posts&BH=0

Some blueprint patches no longer patching 1.1.1

So I fired up the game as soon as the patch hit, and I'm finding a confusing mix of issues now.

My mod that patches all the different iterations of Radiance to change its weapon type continues to work without issue.

My backgrounds mod is no longer patching the selection. The new backgrounds still show up on saved games on characters that had selected them.

My general item mod that patches a bunch of different items doesn't appear to be applying any of the patches anymore. The mod itself is getting applied - localization changes all still show up.

Posting a couple example patches. All of these worked a few hours ago.

Doesn't work:

{
  m_Type: "!bp_afd9065539b3ac5499eddca923654c4b",
  m_Enchantments: [
    "!bp_a9ea95c5e02f9b7468447bc1010fe152",
    "!bp_32ada6d4c9592f840a99ec72354cb006",
    "!bp_7b95a819181574a4799d93939aa99aff"
  ],
  m_EquipmentEntity: "!bp_4c66bd5edb27a9b48be95e78eabd4bea",
  m_Icon: {"guid": "a424f998ed2d79d429523a986d8bfc9c", "fileid": 21300000},
  m_Cost: 22850,
  m_Weight: 25.0
}

Works:

{
m_Type: "!bp_5f824fbb0766a3543bbd6ae50248688f",
m_Enchantments: ["!bp_d42fc23b92c640846ac137dc26e000d4", "!bp_e5990dc76d2a613409916071c898eee8", "!bp_20ba9055c6ae1e44ca270c03feacc53b"],
m_VisualParameters: {
    "m_Projectiles": [],
    "m_WeaponModel": {"AssetId": "e72d2905c99434a4e815e25445d62b81"},
    "m_WeaponBeltModelOverride": {"AssetId": ""},
    "m_WeaponSheathModelOverride": {"AssetId": "a0ebe3bd23628c04c90559afbf9fb3c7"},
    "m_PossibleAttachSlots": [],
    "m_WhooshSound": "",
    "m_EquipSound": "",
    "m_UnequipSound": "",
    "m_InventoryEquipSound": "",
    "m_InventoryPutSound": "",
    "m_InventoryTakeSound": ""
  },
m_Icon: {"guid": "e99751bdc54aec042b0c68d33ed73b39", "fileid": 21300000}
}

Doesn't work:

{
"m_Features": [
    "!bp_20345da9d16f71f4184e77fd2f81701f",
    "!bp_f723632a2ed8e5840ab4ec82bb30c796",
    "!bp_e640977fca3b7f04d9257c9648c027de",
    "!bp_5c5cd2e477739b54db7c363b6373c4a6"
  ],
  "m_AllFeatures": [
    "!bp_20345da9d16f71f4184e77fd2f81701f",
    "!bp_f723632a2ed8e5840ab4ec82bb30c796",
    "!bp_e640977fca3b7f04d9257c9648c027de",
    "!bp_5c5cd2e477739b54db7c363b6373c4a6"
  ]
}

Any idea what's up? Does this have something to do with the merging change that was made? The weirdest part is just how some work and some don't, it'd make a lot more sense if it was all or nothing.

GUI Construction

I'm a huge fan of the updates made to the modifications window in 1.1.1. I did notice it's still not accessible from the main menu, which I do feel is important and hope gets adjusted soon.

Anyway, I'd really like to try and tackle GUI now that these updates have been made. As it currently stands, I'm maintaining thirty something versions of my GreatRadiance mod since I can't let users change which version of a patch is applied. Reading up on IMGUI a bit, it sounds like a pretty basic (if lengthy) toolbar is what I'm after.

I think I understand a couple of the broad strokes involved but I'm so far away from execution here currently. Would it be possible to get some more detailed instructions, or better yet, some decent examples/baseline templates?

About changing projectile models and reusing ToggleableThrowingWeapons

So I'm using pheonix99's ToggleableThrowingWeapons mod, but couldn't help but notice the thrown daggers/starknives are darts and I want to change that.
I'm planning to check if the character's equipped weapon is a dagger/starknife and change the projectile to be the model of said weapon if a ranged attack is made with it.

So before beginning I'd like to ask if anyone knows:
1 - Do I have to check for anything special related to the ThrowingWeapons mod to properly change the model of the projectile?
2 - Is it possible to add an animation to the projectile, like making the starknife spin?
3 - If I can't reuse the existing mod's modifications, how difficult would it be to implement the ability to throw daggers and starknives from th ground up.

If anyone has any ideas for this I'd gladly accept it, thanks!

Class Progression

issue1

I'm having an issue with the progression where I have no idea where the circled box is coming from, and with it a delay when bringing up the tooltip where I have to click to get it active. If anyone has any idea on how to get rid of that circled portion it would be much appreciated.

Companion Selection Choices Changing After Patching Selection Blueprint

So I'm finding a weird interaction where companions default features that stem from a selection blueprint are getting changed when that selection blueprint is patched. Saved games where the companion has already been recruited are unaffected, but for example:

{
"m_Features": [
    "!bp_621e1bb8e1d5e114da5a107351f5c7b3",
    "!bp_5214a43c0169c654b9ca456e296cdd7c",
    "!bp_9da9faf5f0ef4904db4a59a22dafbb06
  ],
  "m_AllFeatures": [
    "!bp_621e1bb8e1d5e114da5a107351f5c7b3",
    "!bp_5214a43c0169c654b9ca456e296cdd7c",
    "!bp_9da9faf5f0ef4904db4a59a22dafbb06
  ]
}

This patches the BackgroundsStreetUrchinSelection and removes the original Mugger option and replaces it with a modified one. Pickpocket and Acrobat are untouched. However, both companions with the Pickpocket background (Seelah and Woljiff) are now being recruited as Acrobats. I would have thought I'd need to patch/recreate the companion's FeatureList to have an effect on that. Anyone have any insight on this one?

Patching Blueprints After 1.1.1

So, I noticed the update to the instructions regarding blueprint patches and had a couple of questions.

  1. Will blueprint patches as written cease working with 1.1.1 unless modified?
  2. Assuming yes to 1, do we just need to add "_#ArrayMergeSettings": "Merge", at the beginning and that new Component with m_Flag: 1 to make them work again?
  3. Since I see this new patch format includes a component alteration in it, does that mean component patching will work in 1.1.1?

Multiple references to the same m_Icon guid prevents compilation.

Unity treats any instance of a guid field as the guid for the whole blueprint, regardless of whether or not it is a component of another field, such as m_Icon, resulting in blueprints that are referencing the same icon to be treated as if they themselves share the same asset id. Once unity determines that two or more blueprints share the same guid, it halts compilation and forces you to remove or change the field.

Currently, the only ways to work around this are to add the guid field to the blueprints post compilation, or create multiple instances of the same icon.

Adding entirely new Music?

So, I've been digging a bit in the music files, it works somewhat similarly to XCOM2, but in Unity rather than Unreal Engine 3. I still am not sure how looping works, however, or how feasible this is. I think it could be possible at least to add the files, but the purpose of new music would be in new adventures or expanding the campaign.

Logging output suppressed in release

The example uses LogChannel but in the release version of the game, LogChannel doesn't actually output anything. I assume there's some way to configure it but I couldn't find anything.

Creating an entirely new soundset, rather than replacement?

How are we supposed to create an entirely new soundset for player-enemy, rather than simply replacing existing ones, and making it appear in the GUI at Character Customisation screen? Is there a template available for either one, and a tutorial?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.