Giter Club home page Giter Club logo

abilifier's People

Contributors

ajkroeg avatar cmission avatar gnivler avatar korgano avatar redbatz avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

abilifier's Issues

AbilityRealizer integration - "IgnoreAbilities" functionality broken?

Abilifier: v1.3.0.0
Variant: No CAE

I was experimenting with the ignoreAbilities functionality to discern what it does, since it is not currently documented. I added the following Ability names to the list:

"IgnoreAbilities": [
		"TraitDefDFASelfDmgReduction",
		"TraitDefBulwark",
		"TraitDefHeadshotImmunity"
	],

The expected behaviors was either:

  1. Named abilities would be removed from NPC pilot ability lists.
  2. Named abilities would be removed from all pilot ability lists.

battletech_log provides the following information:

14:31:56.0583542 AbilityRealizer [LOG] [Pilot.AddToTeam] Dumping pilot abilitydefnames for Centurion - ec9d2280-ca9a-4d90-8a20-963d8a4c0a39.0
	TraitDefWeaponHit1, TraitDefMeleeHit1, AbilityDef_MultiTarget, TraitDefWeaponHit2,
	TraitDefMeleeHit2, AbilityDefT5A, TraitDefIndirectReduceOne, AbilityDef_BreakLock,
	TraitDefMinRangeReduce45, TraitDefCalledShotImprove, AbilityDef_ScoutStomp, TraitDefIndirectReduceTwo,
	TraitDefMinRangeReduce90, AbilityDef_MasterTac, TraitDefHealthAddOne, TraitDefUnsteadySet60,
	TraitDefMeleeHit3, TraitDefWeaponHit3, AbilityDef_Suppression, TraitDefWeaponHit4,
	TraitDefMeleeHit4, AbilityDef_SureFooting, TraitDefMeleeHit5, TraitDefEvasionBoost,
	TraitDefEvasiveChargeAddOne, AbilityDef_JumpMaven, TraitDefMeleeHit6, TraitDefRefireReduceOne,
	TraitDefWeaponHit5, TraitDefBulwark, TraitDefHealthAddTwo, TraitDefWeaponHit6
14:31:56.3471527 AbilityRealizer [LOG] [Pilot.AddToTeam] Dumping pilot abilitydefnames for Black Widow - ebc06b6a-c5a8-4165-95ce-480bcf335570.0
	AbilityDef_MultiTarget, TraitDefWeaponHit2, TraitDefMeleeHit2, AbilityDefT5A,
	TraitDefIndirectReduceOne, TraitDefHealthAddOne, TraitDefUnsteadySet60, TraitDefMeleeHit3,
	TraitDefWeaponHit3, AbilityDef_BlindShot, TraitDefMinRangeReduce45, TraitDefCalledShotImprove,
	TraitDefWeaponHit1, TraitDefMeleeHit1, AbilityDef_CIFS, TraitDefWeaponHit4, TraitDefWeaponHit5
14:31:56.5380258 AbilityRealizer [LOG] [Pilot.AddToTeam] Dumping pilot abilitydefnames for Occam's Missile - d50f1e9d-0a0b-4dc8-9a06-a33233aaa8a1.0
	TraitDefWeaponHit1, TraitDefMeleeHit1, AbilityDef_MultiTarget, TraitDefWeaponHit2,
	TraitDefMeleeHit2, AbilityDefT5A, TraitDefIndirectReduceOne, TraitDefWeaponHit3,
	AbilityDef_Missileer, TraitDefWeaponHit4, TraitDefUnsteadySet60, TraitDefMeleeHit3,
	TraitDefHealthAddOne, AbilityDef_MissileCounter, TraitDefMinRangeReduce45, TraitDefCalledShotImprove,
	AbilityDef_GimpThem, TraitDefIndirectReduceTwo, TraitDefWeaponHit5, AbilityDef_JackAll,
	TraitDefWeaponHit6, TraitDefMeleeHit4, AbilityDef_RunGun, TraitDefMeleeHit5,
	TraitDefEvasionBoost, TraitDefEvasiveChargeAddOne, AbilityDef_JumpMaven, TraitDefMeleeHit6,
	TraitDefRefireReduceOne, TraitDefBulwark, TraitDefHealthAddTwo
14:31:56.8917228 AbilityRealizer [LOG] [Pilot.AddToTeam] Dumping pilot abilitydefnames for Cyclops - 461141c2-f956-49a5-b2c6-6f951b957a94.0
	TraitDefWeaponHit1, TraitDefMeleeHit1, AbilityDef_MultiTarget, TraitDefWeaponHit2,
	TraitDefWeaponHit3, AbilityDef_Missileer, TraitDefWeaponHit4, TraitDefWeaponHit5,
	AbilityDef_JackAll, TraitDefWeaponHit6, TraitDefWeaponHit7, TraitDefWeaponHit8,
	AbilityDef_TargetFiring, AbilityDefT5A, TraitDefIndirectReduceOne, AbilityDef_MissileCounter,
	TraitDefMinRangeReduce45, TraitDefCalledShotImprove, TraitDefHealthAddOne, AbilityDef_ColdBlooded,
	TraitDefRefireReduceOne, TraitDefMeleeHit2, TraitDefUnsteadySet60, TraitDefMeleeHit3,
	TraitDefMeleeHit4, AbilityDef_RunGun, TraitDefMeleeHit5, TraitDefEvasionBoost, TraitDefEvasiveChargeAddOne
14:31:57.0126726 AbilityRealizer [LOG] [Pilot.AddToTeam] Dumping pilot abilitydefnames for Hatchetman - 9e2d0fed-3d92-42ee-92d0-2cc595709f2a.0
	TraitDefUnsteadySet60, TraitDefEvasiveChargeAddOne, TraitDefIndirectReduceOne, TraitDefMinRangeReduce45,
	TraitDefCalledShotImprove, TraitDefHealthAddOne, TraitDefRefireReduceOne, TraitDefOverheatAddFifteen,
	TraitDefHealthAddTwo, TraitDefRefireReduceTwo, AbilityDefG5, AbilityDefG8,
	AbilityDefGu5, TraitDefWeaponHit1, TraitDefWeaponHit2, TraitDefWeaponHit3,
	TraitDefWeaponHit4, TraitDefWeaponHit5, TraitDefWeaponHit6, TraitDefWeaponHit7,
	TraitDefWeaponHit8, TraitDefWeaponHit9, TraitDefWeaponHit10, TraitDefBulwark,
	TraitDefMeleeHit1, TraitDefMeleeHit2, TraitDefMeleeHit3, TraitDefMeleeHit4,
	TraitDefMeleeHit5, TraitDefEvasionBoost, TraitDefMeleeHit6, TraitDefIndirectReduceTwo
14:31:57.1017310 AbilityRealizer [LOG] [Pilot.AddToTeam] Dumping pilot abilitydefnames for Battlemaster - e3e34fc2-c664-42ab-920b-6002c058ac55.0
	TraitDefUnsteadySet60, TraitDefEvasiveChargeAddOne, TraitDefSprintIncrease20, TraitDefUnsteadySet80,
	TraitDefEvasiveChargeAddTwo, TraitDefIndirectReduceOne, TraitDefMinRangeReduce45, TraitDefCalledShotImprove,
	TraitDefHealthAddOne, TraitDefRefireReduceOne, TraitDefOverheatAddFifteen, TraitDefHealthAddTwo,
	TraitDefRefireReduceTwo, AbilityDefP5, AbilityDefP8, AbilityDefGu5,
	TraitDefWeaponHit1, TraitDefWeaponHit2, TraitDefWeaponHit3, TraitDefWeaponHit4,
	TraitDefWeaponHit5, TraitDefWeaponHit6, TraitDefBulwark, TraitDefMeleeHit1,
	TraitDefMeleeHit2, TraitDefMeleeHit3, TraitDefMeleeHit4, TraitDefMeleeHit5,
	TraitDefEvasionBoost, TraitDefMeleeHit6, TraitDefMeleeHit7, TraitDefMeleeHit8,
	TraitDefMeleeHit9, TraitDefMeleeHit10, TraitDefMeleeHit10b, TraitDefDFASelfDmgReduction, TraitDefIndirectReduceTwo
14:31:57.1575353 AbilityRealizer [LOG] [Pilot.AddToTeam] Dumping pilot abilitydefnames for Thunderbolt - ab9e2bfb-f6c4-4b4b-b540-957dcfc48a27.0
	TraitDefUnsteadySet60, TraitDefEvasiveChargeAddOne, TraitDefSprintIncrease20, TraitDefUnsteadySet80,
	TraitDefEvasiveChargeAddTwo, TraitDefIndirectReduceOne, TraitDefMinRangeReduce45, TraitDefCalledShotImprove,
	TraitDefHealthAddOne, TraitDefRefireReduceOne, TraitDefOverheatAddFifteen, TraitDefHealthAddTwo,
	TraitDefRefireReduceTwo, AbilityDefP5, AbilityDefP8, AbilityDefGu5, TraitDefWeaponHit1,
	TraitDefWeaponHit2, TraitDefWeaponHit3, TraitDefWeaponHit4, TraitDefWeaponHit5,
	TraitDefWeaponHit6, TraitDefBulwark, TraitDefMeleeHit1, TraitDefMeleeHit2,
	TraitDefMeleeHit3, TraitDefMeleeHit4, TraitDefMeleeHit5, TraitDefEvasionBoost,
	TraitDefMeleeHit6, TraitDefMeleeHit7, TraitDefMeleeHit8, TraitDefMeleeHit9,
	TraitDefMeleeHit10, TraitDefMeleeHit10b, TraitDefDFASelfDmgReduction, TraitDefIndirectReduceTwo
14:31:57.2687628 AbilityRealizer [LOG] [Pilot.AddToTeam] Dumping pilot abilitydefnames for Grasshopper - f46b3021-803a-41ed-87e0-1b8cb86663b8.0
	AbilityDefT5A, AbilityDefT8A, AbilityDefGu5, TraitDefUnsteadySet60,
	TraitDefSprintIncrease10, TraitDefCalledShotImprove, TraitDefCalledShotMaster, TraitDefWeaponHit1,
	TraitDefWeaponHit2, TraitDefWeaponHit3, TraitDefWeaponHit4, TraitDefWeaponHit5,
	TraitDefWeaponHit6, TraitDefRefireReduceOne, TraitDefBulwark, TraitDefHealthAddTwo,
	TraitDefOverheatAddFifteen, TraitDefRefireReduceTwo, TraitDefMeleeHit1, TraitDefMeleeHit2,
	TraitDefMeleeHit3, TraitDefMeleeHit4, TraitDefMeleeHit5, TraitDefEvasionBoost,
	TraitDefEvasiveChargeAddOne, TraitDefMeleeHit6, TraitDefMinRangeReduce45, TraitDefIndirectReduceTwo,
	TraitDefMinRangeReduce90, TraitDefIndirectReduceThree, TraitDefIndirectReduceOne, TraitDefHealthAddOne

The only pilots that lack the Traits defined in IgnoreAbilities are below the rank requirements in SimGameConstants to obtain them.

AbilityRealizer's log throws no errors, so it is unclear if something is broken, or the IgnoreAbilities functionality is not yet (fully) implemented.

Abilifier 1.1.5(.1) - Issue: StatisticEffectData Extension Tag Match Breaks with some types of statistic modification

I have a StatisticEffectData Extension that worked prior to Abilifier 1.1.5(.1), but no longer functions.

{
            "Description" : {
                "Id" : "StatusEffect-ExtremeRange",
                "Name" : "ARMOR BYPASS",
                "Details" : "Very long and extreme range weapons bypass armor and deal structure damage to the target."
            },
            "effectType" : "StatisticEffect",
            "nature" : "Buff",
            "durationData" : {
                "duration" : -1
            },
            "targetingData" : {
                "effectTriggerType" : "Passive",
                "effectTargetType" : "Creator",
                "showInTargetPreview" : false,
                "showInStatusPanel" : false,
                "hideApplicationFloatie" : false
            },
            "statisticData" : {
                "statName" : "StructureDamagePerShot",
                "operation" : "Float_Add",
                "modValue" : "5.0",
                "modType" : "System.Single",
                "targetCollection" : "Weapon"
            }
        },

As a control, I placed the statistic effect data for The Bounty Hunter's Perfect Aim skill (see below) in the ability, and it functioned:


{
            "Description" : {
                "Id" : "StatusEffect-BH-PerfectAimStructureDamage",
                "Name" : "ARMOR BYPASS",
                "Details" : "The Bounty Hunter's attacks bypass armor and deal structure damage to the target.",
                "Icon" : "UixSvgIcon_specialAbility_HiredGuns"
            },
            "effectType" : "StatisticEffect",
            "nature" : "Buff",
            "durationData" : {
                "duration" : -1
            },
            "targetingData" : {
                "effectTriggerType" : "Passive",
                "effectTargetType" : "Creator",
                "showInTargetPreview" : false,
                "showInStatusPanel" : false,
                "hideApplicationFloatie" : false
            },
            "statisticData" : {
                "statName" : "StructureDamagePerShot",
                "operation" : "Float_Add",
                "modValue" : "5.0",
                "modType" : "System.Single",
                "targetCollection" : "Weapon"
            }
        }

The StatisticEffectData Extension is as follows:

"StatusEffect-ExtremeRange": {
		"TargetCollectionForSearch": "Component",
		"TargetCollectionTagMatch": [
			"NotSet"
		],
		"TargetComponentTagMatch": [
			"range_extreme"
		]
	},
	"StatusEffect-CloseRange": {
		"TargetCollectionForSearch": "Component",
		"TargetCollectionTagMatch": [
			"NotSet"
		],
		"TargetComponentTagMatch": [
			"range_close"
		]
	},
	"StatusEffect-StandardRange": {
		"TargetCollectionForSearch": "Component",
		"TargetCollectionTagMatch": [
			"NotSet"
		],
		"TargetComponentTagMatch": [
			"range_standard"
		]
	},
	"StatusEffect-LongRange": {
		"TargetCollectionForSearch": "Component",
		"TargetCollectionTagMatch": [
			"NotSet"
		],
		"TargetComponentTagMatch": [
			"range_long"
		]
	},
	"StatusEffect-VeryLongRange": {
		"TargetCollectionForSearch": "Component",
		"TargetCollectionTagMatch": [
			"NotSet"
		],
		"TargetComponentTagMatch": [
			"range_very-long"
		]
	},
	"StatusEffect-LongestRanges": {
		"TargetCollectionForSearch": "Component",
		"TargetCollectionTagMatch": [
			"NotSet"
		],
		"TargetComponentTagMatch": [
			"range_very-long",
			"range_extreme"
		]
	},

Oddly, other range tag based StatisticEffectData Extensions work... except for "StatusEffect-LongestRanges", which also is supposed to match the "range_extreme" tag.

(Also, BTW, I'm not sure if "StatusEffect-LongestRanges" would only work if a weapon had both tags. Documentation is unclear on this point.)

The Abilifier log (attached) provides no information, and the ModTek logs do not show any information either, as far as I can see.

AbilityRealizer: Unable to read PilotTags from PilotDefs in .modtek cache?

Abilifier 4.0.0 w/ Ability Realizer integration

Expected behavior:

  • ModTek executes Advanced JSON merge to replace PilotTag list in targeted PilotDef with new list including tag to be detected by Ability Realizer IgnorePilotsWithTags field (in this specific case)
  • Game loads modified JSON
  • Game generates OPFOR for mission based on contract JSON file
  • Game selects modified PilotDef JSON as part of OPFOR
  • Ability Realizer checks modified PilotDef tags, detects tag for IgnorePilotsWithTags
  • Ability Realizer does not provide pilot with updated traits list from SimGameConstants skill tree

Actual behavior:

  • ModTek executes Advanced JSON merge to replace PilotTag list in targeted PilotDef with new list including tag to be detected by Ability Realizer IgnorePilotsWithTags field
  • Game loads modified JSON
  • Game generates OPFOR for mission based on contract JSON file
  • Game selects modified PilotDef JSON as part of OPFOR
  • Ability Realizer fails to check PilotDef tags/checks original PilotDef/cannot detect tags in modified PilotDef?
  • Ability Realizer provides pilot with updated traits list from SimGameConstants skill tree

I am unsure what is actually happening, as it seems to only affect PilotDefs* that have had JSON merge changes, despite the rest of Abilifier/Ability Realizer detecting and handling other merged JSONs without issues (see list of merged JSONs below):
Merge-Dump.txt

*I have not yet tested ComponentTag matching after a JSON merge replacing the tag list, nor FactionAbility or PilotTag detection.

StatisticEffectData Extensions Bug: unintended Float_Add stat changes stacking

I've discovered an odd bug with the StatisticEffectData extension. I've been trying to create an ability that gives weapons with the component tags range_verylong or range_extreme structure damage via Float_Add.

Having two separate code blocks, one for each range, leads to weapons with the range_extreme tag having double the intended float amount. (For example, the intended 5 structure damage is now 10.)

Having one code block for range_verylong only adds structure damage to weapons with that tag. range_extreme weapons do not have any structure damage added to them.

Having one code block with a status effect that applies to both tags also doubles the intended float amount on range_extreme weapons.

I am not sure why this happening, because every weapon only has one range tag and the range tags have no statistical values attached, so it should only be applying the float once.

Example Code:

{
            "Description" : {
                "Id" : "StatusEffect-LongestRanges",
                "Name" : "ARMOR BYPASS",
                "Details" : "Very long and extreme range weapons bypass armor and deal structure damage to the target."
            },
            "effectType" : "StatisticEffect",
            "nature" : "Buff",
            "durationData" : {
                "duration" : -1
            },
            "targetingData" : {
                "effectTriggerType" : "Passive",
                "effectTargetType" : "Creator",
                "showInTargetPreview" : false,
                "showInStatusPanel" : false,
                "hideApplicationFloatie" : false
            },
            "statisticData" : {
                "statName" : "StructureDamagePerShot",
                "operation" : "Float_Add",
                "modValue" : "5",
                "modType" : "System.Single",
                "targetCollection" : "Weapon"
            }
        }
"StatusEffect-LongestRanges": {
		"TargetComponentTagMatch": [
			"range_very-long",
			"range_extreme"
		]
	},

Feature Suggestion: patch MechMortarSequence to pull EffectData from Ability_Mortar_[Name]

Been experimenting with having Mech Mortars/Thumpers confer Status Effects on targets, and I discovered that even if Status Effects are defined within the EffectData section of a custom Ability_Mortar_[Name] file, they are not applied to targets. Further examination of the MechMortarSequence shows that there's no code that pulls EffectData and applies it to enemies.

Patching the MechMortarSequence to apply EffectData from only the Ability_Mortar_[Name] file would allow limited application of debuffs to affected enemies, without the risk of having other abilities stacking on the mortar/thumper attacks, or needing to patch the MechMortarSequence to accept additional valid IDs for bool isThumper and pull EffectData from WeaponDef.

Potential sortedSkillCount Bug

Not the best DNSpy user, so I'll do my best to explain what is happening.

My skill tree mod (https://github.com/korgano/SkillTreeRebuild/releases/tag/v0.2.5 - note: contains an older version of Abilifier.dll) has a persistent issue with abilities disappearing after selecting abilities on lower tiers.

Steps to replicate:
-Install SkillTreeRebuild
-Go to Barracks
-Select MechWarrior with no set abilities/use mod to reset abilities
-Select all options through level 3 of all 4 skill trees, then select ability for Gunnery/Guts/Tactics 4
-Piloting 8 ability options disappear

OR

-Install SkillTreeRebuild
-Go to Barracks
-Select MechWarrior with no set abilities/use mod to reset abilities
-Select Piloting 4 ability first
-Select Gunnery, Guts, and Tactics 4 abilities
-All other abilities disappear; completing one skill tree first results in all options remaining visible

Not sure what is going on, but I've noticed one major commonality between both situations: in addition to the ability being selected, each tier 4 pip has a trait that affects a stat.

The Abilifier log doesn't have much to say:

TRACE: 2022-08-10T16:54:53 - Looping Tactics 5: AbilityDef_ScoutStomp
TRACE: 2022-08-10T16:54:53 - Add trait AbilityDef_ScoutStomp
TRACE: 2022-08-10T16:54:53 - abilityToUse: AbilityDef_ScoutStomp
TRACE: 2022-08-10T16:55:02 - Add primary AbilityDef_ScoutStomp
TRACE: 2022-08-10T16:55:02 - Looping Tactics 5: AbilityDef_GimpThem
TRACE: 2022-08-10T16:55:02 - abilityToUse: AbilityDef_ScoutStomp
TRACE: 2022-08-10T16:55:02 - Looping Tactics 5: TraitDefIndirectReduceTwo
TRACE: 2022-08-10T16:55:05 - SAFETY FALLBACK Add trait TraitDefIndirectReduceTwo
TRACE: 2022-08-10T16:55:05 - abilityToUse: AbilityDef_ScoutStomp

I tried to use DNSpy to figure out what was going on, but I am not sure I am looking in the right place. I did discover in Abilifier.Patches that there might be a loop between the following code blocks:

bool flag8 = sortedSkillCount.ContainsKey(newAbility.ReqSkill) && sortedSkillCount[newAbility.ReqSkill] < 1 + Mod.modSettings.extraAbilitiesAllowedPerSkill;
								if (flag8)
								{
									__result = true;
								}
								IEnumerable<KeyValuePair<SkillType, int>> source2 = from x in sortedSkillCount
								where x.Value >= 1 + Mod.modSettings.extraAbilitiesAllowedPerSkill
								select x;
bool flag = !string.IsNullOrEmpty(abilityReq);

During the bool flag8, the trait's ID will appear.

It seems like the traits are being counted as part of the sortedSkillCount, but I have no idea if that is actually what's happening, or the error is caused in some other part of the process.

Any and all help would be appreciated.

Question about CAC Button

XAI is using an older version of CAC and that is all and I have tried everything to disable the target ground button. I have made it useless but it still takes up a spot on the console. My version of CAC cannot disable the button from showing because the setting is unhooked, Can you put in an override in the next version to get rid of it completely? Also, can you clarify for me what is the best way to add one more displayed icon for pilot skills since CAC is using one of the buttons? I have read your page but for some reason, it isn't clear to me, maybe it is brain fog from the New Year.

Feature Suggestion: Improve display of pilot skills in pilot Barracks/Contract card

By default, Abilifier maintains vanilla BattleTech's use of only 3 slots for skill icons in the pilot card that is used in the barracks and Lance deployment screen:

Vanilla lance setup screen

In vanilla, this works, because there's a cap of 3 skills per pilot. However, as the number of combinations goes up, this behavior becomes less useful:

MechWarrior with multiple skills and a pilot card only showing the first 3 abilities they have

The first 3 skills of each pilot will be displayed, which may or may not be the most informative ones when it comes to selecting a pilot for a mech.

Expanding the icons to 4 is not practical, as at least one mod (MechAffinity) uses the empty space for a hover trigger for a popup.

Potential ways to improve this*:

  • Exclude certain AbilityDefs from counting towards this via ID exclusion list
  • Have a toggle in mod.json to display the skills with the 3 highest "ReqSkillLevel"
  • Some kind of popup with a text only list of assigned skills?

*Theoretically, setting some of these to "IsPrimaryAbility": false would fix things, but that would defeat the point of making sure the player is aware of all the major pilot skills in the level up screen.

Abilifier_NO_CAE V1.4.1.3 compilation error - CAE dependency in BattleTech.UI.SelectionStateActiveProbe

Tried updating to the latest Abilifier NO_CAE, but ran into this error on BattleTech startup:

00:43:36.3971799 HarmonyX [LOG] Running ILHook manipulator on virtual bool BattleTech.UI.SelectionStateActiveProbe::CreateFiringOrders(string button)
00:43:36.3982861 HarmonyX [LOG] Writing postfixes
00:43:36.4061778 ModTek [WARNING] 	While invoking 'Mod.Init', an exception occured
	System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeLoadException: Could not load type CustomActivatableEquipment.SelectionStateActiveProbeArc, CustomActivatableEquipment, Version=0.0.0.143, Culture=neutral, PublicKeyToken=null while decoding custom attribute: (null)
	  at (wrapper managed-to-native) System.MonoCustomAttrs.GetCustomAttributesInternal(System.Reflection.ICustomAttributeProvider,System.Type,bool)
	  at System.MonoCustomAttrs.GetCustomAttributesBase (System.Reflection.ICustomAttributeProvider obj, System.Type attributeType, System.Boolean inheritedOnly) [0x00013] in <d7ac571ca2d04b2f981d0d886fa067cf>:0 
	  at System.MonoCustomAttrs.GetCustomAttributes (System.Reflection.ICustomAttributeProvider obj, System.Type attributeType, System.Boolean inherit) [0x00037] in <d7ac571ca2d04b2f981d0d886fa067cf>:0 
	  at System.RuntimeType.GetCustomAttributes (System.Boolean inherit) [0x00000] in <d7ac571ca2d04b2f981d0d886fa067cf>:0 
	  at HarmonyLib.HarmonyMethodExtensions.GetFromType (System.Type type) [0x00000] in <40f0e05edfaf48a5ad9c0d95dec81b56>:0 
	  at HarmonyLib.PatchClassProcessor..ctor (HarmonyLib.Harmony instance, System.Type type, System.Boolean allowUnannotatedType) [0x00030] in <40f0e05edfaf48a5ad9c0d95dec81b56>:0 
	  at HarmonyLib.PatchClassProcessor..ctor (HarmonyLib.Harmony instance, System.Type type) [0x00000] in <40f0e05edfaf48a5ad9c0d95dec81b56>:0 
	  at HarmonyLib.Harmony.CreateClassProcessor (System.Type type) [0x00000] in <40f0e05edfaf48a5ad9c0d95dec81b56>:0 
	  at HarmonyLib.Harmony.<PatchAll>b__11_0 (System.Type type) [0x00000] in <40f0e05edfaf48a5ad9c0d95dec81b56>:0 
	  at HarmonyLib.CollectionExtensions.Do[T] (System.Collections.Generic.IEnumerable`1[T] sequence, System.Action`1[T] action) [0x00014] in <40f0e05edfaf48a5ad9c0d95dec81b56>:0 
	  at HarmonyLib.Harmony.PatchAll (System.Reflection.Assembly assembly) [0x00006] in <40f0e05edfaf48a5ad9c0d95dec81b56>:0 
	  at HarmonyLib.Harmony.CreateAndPatchAll (System.Reflection.Assembly assembly, System.String harmonyInstanceId) [0x0001e] in <40f0e05edfaf48a5ad9c0d95dec81b56>:0 
	  at Abilifier.Mod.Init (System.String directory, System.String settings) [0x00125] in <3683929ccd7a4ead976ee807719b5053>:0 
	  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
	  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <d7ac571ca2d04b2f981d0d886fa067cf>:0 
	   --- End of inner exception stack trace ---
	  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00048] in <d7ac571ca2d04b2f981d0d886fa067cf>:0 
	  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <d7ac571ca2d04b2f981d0d886fa067cf>:0 
	  at ModTek.Util.AssemblyUtil.InvokeMethodByParameterNames (System.Reflection.MethodInfo method, System.Collections.Generic.Dictionary`2[TKey,TValue] paramsDictionary) [0x00123] in <6e498df28eff4783a08c2989069326be>:0 
	  at ModTek.Features.Manifest.Mods.ModDefExLoading.LoadAssemblyAndCallInit (ModTek.ModDefEx modDef) [0x001a0] in <6e498df28eff4783a08c2989069326be>:0 
	Location Trace
	  at ModTek.Features.Manifest.Mods.ModDefsDatabase+<InitModsLoop>d__8.MoveNext () [0x00000] in <6e498df28eff4783a08c2989069326be>:0 
	  at ModTek.UI.ProgressPanel+ProgressBarLoadingBehavior+<RunWorkList>d__20.MoveNext () [0x00000] in <6e498df28eff4783a08c2989069326be>:0 
	  at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00000] in <9a6ceb7f013a4a599806f492fc789483>:0 

This is the first time I've encountered this bug on a v1.4 iteration of Abilifier.

Master Branch - Need Better Documentation on procedure to alter skill trees

Issue: Abilifier.dll functions, but new skill tree does not load

Built a private mod for myself to build some skills to be used with Abilifier, but I can't get the skill tree to load.

Mod Setup:

{
    "Name": "Skill Tree Rebuild",
    "Version": "0.0.1",
    "Enabled": true,
    "Author": "Kregano",
    "Description": "A mod to add new skills to MechWarrior skill trees, using Abilifier-Master.",

    "DLL": "Abilifier.dll",

    "Settings": {
        "enableTrace": true,
        "enableLog": true,
        "usePopUpsForAbilityDesc": false,
        "debugXP": true,
        "extraFirstTierAbilities": 2,
        "extraAbilities": 3,
        "extraAbilitiesAllowedPerSkill": 1,
        "cleanUpCombatUI": true,
        "nonTreeAbilities": 1,
        "skillLockThreshold":8,
        "usingCACabilitySelector":false,
        },
    
        "Manifest": [
            { "Type": "AbilityDef", "Path": "Abilities" }
        ]
}

New skill tree in ...\SkillTreeRebuild\StreamingAssets\data\SimGameConstants\SimGameConstants.json

"Progression" : {
    "GunnerySkills" :[
        [
            "TraitDefWeaponHit1"
        ],
        [
            "TraitDefWeaponHit2"
        ],
        [
            "TraitDefWeaponHit3"
        ],
        [
            "TraitDefWeaponHit4"
        ],
        [
            "AbilityDefG5",
            "AbilityDefG5a",
            "AbilityDefG5b",
            "TraitDefWeaponHit5"				
        ],
        [
            "TraitDefWeaponHit6"
        ],
        [
            "TraitDefWeaponHit7"
        ],
        [
            "TraitDefWeaponHit8",
            "AbilityDefG8",
            "AbilityDefG8a",
            "AbilityDefG8b",
            "AbilityDefG8c",
            "AbilityDefG8d",
            "TraitDefWeaponHit8"				
        ],
        [
            "TraitDefWeaponHit9"
        ],
        [
            "TraitDefWeaponHit10",
            "AbilityDefG10a"
        ]
    ],
    "PilotingSkills" :[
        [
            "TraitDefMeleeHit1"
        ],
        [
            "TraitDefMeleeHit2"
        ],
        [
            "TraitDefUnsteadySet60",
            "TraitDefMeleeHit3"
        ],
        [
            "TraitDefMeleeHit4",
        ],
        [
            "AbilityDefP5",
            "AbilityDefGu5a",
            "AbilityDefGu5b",
            "TraitDefMeleeHit5"
        ],
        [
            "TraitDefMeleeHit6",
            "TraitDefEvasiveChargeAddOne"
        ],
        [
            "TraitDefSprintIncrease20",
            "TraitDefMeleeHit7"
        ],
        [
            "TraitDefMeleeHit8",
            "TraitDefUnsteadySet80",
            "AbilityDefP8"
        ],
        [
            "TraitDefEvasiveChargeAddTwo",
            "TraitDefMeleeHit9"
        ],
        [
            "TraitDefMeleeHit10",
            "TraitDefDFASelfDmgReduction"
        ]
    ],
    "GutsSkills" :[
        [
        ],
        [
        ],
        [
            "TraitDefHealthAddOne"
        ],
        [
            "TraitDefRefireReduceOne"
        ],
        [
            "AbilityDefGu5",
            "AbilityDefP5a",
            "AbilityDefP5b"				
        ],
        [
            "TraitDefHealthAddTwo"
        ],
        [
            "TraitDefOverheatAddFifteen"
        ],
        [
            "TraitDefRefireReduceTwo",
            "AbilityDefGu8",
            "AbilityDefP8a",
            "AbilityDefP8b"
        ],
        [
            "TraitDefHealthAddThree",
            "TraitDefOverheatAddThirty"
        ],
        [
            "TraitDefHeadshotImmunity",
            "AbilityDefP10a"
        ]
    ],
    "TacticsSkills" :[
        [
            "AbilityDefT5A2"
        ],
        [
            "TraitDefIndirectReduceOne"
        ],
        [
        ],
        [
            "TraitDefMinRangeReduce45"
        ],
        [
            "AbilityDefT5Aa",
            "TraitDefCalledShotImprove"	
        ],
        [
            "TraitDefIndirectReduceTwo"
        ],
        [
            "TraitDefMinRangeReduce90"
        ],
        [
            "AbilityDefT8A",
            "AbilityDefT8Aa",
            "AbilityDefT8B"				
        ],
        [
            "TraitDefCalledShotMaster"
        ],
        [
            "TraitDefIndirectReduceThree",
            "AbilityDefT10Aa"
        ]
    ],

When I get into the game, none of the new skills show up, even though the game does recognize the modded traits I have in this mod. I can select multiple of the stock game skills and get all the other features. The ModTek runtime log confirms that the game is not overwriting the Progression section of the existing SimGameConstants file, even though it is reading the new one multiple times.
Capture_2021_11_15_11_44_20_562
Capture_2021_11_15_11_44_24_550
Capture_2021_11_15_11_44_29_945
Capture_2021_11_15_11_44_35_566
ModTek_runtime_log.txt

There is no documentation in the readme to help troubleshoot this issue, despite explicitly stating that altering the skill tree progression via JSON is necessary.

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.