battletechmodders / abilifier Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v3.0
License: GNU General Public License v3.0
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:
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.
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.
Abilifier 4.0.0 w/ Ability Realizer integration
Expected behavior:
IgnorePilotsWithTags
field (in this specific case)IgnorePilotsWithTags
Actual behavior:
IgnorePilotsWithTags
fieldI 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.
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"
]
},
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.
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.
A user of my Abilifier based mod seems to be encountering an infinite load issue on campaign maps, but I am not sure I'm interpreting the log correctly.
As far as I know and have experienced, this does not seem to occur in career or single-player skirmish mode.
He's using Abilifier (v1.4.1.4) and a Steam install.
Log attached below:
Kosis12-BT-log-00.txt
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.
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:
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:
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*:
"ReqSkillLevel"
*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.
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.
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.