ME3TweaksModManager
ME3TweaksModManager copied to clipboard
[Question] Is this due to engine difference of tooling problem?
This code below works in LE3 but fails to merge in ME3.
public static final function VerifyPlayerTalentPoints(SFXPawn Pawn)
{
local int TalentPoints;
local int SpentPoints;
local SFXPawn_Player Player;
local SFXPawn_Henchman Henchman;
local SFXPowerCustomActionBase Power;
Player = SFXPawn_Player(Pawn);
Henchman = SFXPawn_Henchman(Pawn);
if (Player != None)
{
LogInternal((GetFuncName() $ " - Player = ") $ Player.GetFullName());
TalentPoints = GetTalentPointSum(Player.CharacterLevel, FALSE);
foreach Player.PowerManager.Powers(Power)
{
if (Power.DisplayInCharacterRecord)
{
SpentPoints += Class'SFXPowerManager'.static.GetRefundAmount(Class'SFXPowerCustomAction', int(Power.Rank));
}
}
}
else if (Henchman != None)
{
LogInternal((GetFuncName() $ " - Henchman = ") $ Henchman.GetPrettyName());
TalentPoints = GetTalentPointSum(Henchman.CharacterLevel, TRUE);
foreach Henchman.PowerManager.Powers(Power)
{
if (Power.DisplayInCharacterRecord)
{
SpentPoints += Class'SFXPowerManager'.static.GetRefundAmount(Class'SFXPowerCustomAction', int(Power.Rank));
}
}
}
else
{
LogInternal(GetFuncName() $ " - invalid pawn");
return;
}
LogInternal((((GetFuncName() $ " - TalentPoints = ") $ TalentPoints) $ ", SpentPoints = ") $ SpentPoints);
TalentPoints -= SpentPoints;
LogInternal((GetFuncName() $ " - Pawn.TalentPoints = ") $ Pawn.TalentPoints);
if (Pawn.TalentPoints < TalentPoints)
{
Pawn.TalentPoints = TalentPoints;
}
}
It's not a big deal, I'd just like to know if that is toolset issue or a game engine difference.
LogInternal is private in ME3, but public in LE3. Recent LEX nightlies allow calling private functions outside their class (with a warning), but that hasn't rolled out to ModManager quite yet. LogInternal doesn't work in ME3 anyway, so you can just delete all the calls.
@SirCxyrtyx Thanks for clarifying.
I am still having problems with my previously working LE3 DLC mod in ME3 though:
Game says mod is corrupted, but it's a DLC mod with only a couple of coalesced tweaks (levelrewards being most important of them) — it doesn't replace or add any other files.
The mergemod patch part of it is supposedly applied successfully, but as the levelrewards isn't changed by coalesced override it doesn't do anything useful.
The only other mods I have installed are Unofficial ME3 Patch (which doesn't alter levelrewards and even if it did has lower mount priority) and MEHEM.
Any ideas how to figure out why the game thinks it's corrupted?
Finally, mod manager keeps reinstalling the logger ASI which I keep removing:
You will have to manually rebuild the mod to identify why it doesn't work. Starter kit generates a working blank mod.
As for the ASI it will install on any mod install as it is used for troubleshooting and is virtually the only debugging tool for ME3. There is no way to turn that feature off.
LogInternal does nothing in any of the games but I built tools with the LE SDK to make it work for us. OT is unlikely to get any new tooling given it has less than 3% userbase for all 3 games combined.
You will have to manually rebuild the mod to identify why it doesn't work.
Can you please clarify what do you mean by manually rebuild?
Do you mean make a new blank mod and redo it from scratch?
As for that ASI, it could at least open the log with FILE_SHARE_READ so it can be read instead of getting access denied on it.
We aren't going to be updating anything related to ASIs for OT. OT tooling is in the rear view mirror now.
Manually add files back to a blank working mod until it stops working and then figure out how to make that file properly work.
I think I might have found the culprit. I deleted the empty default.sfar
(that doesn't exist in LE3 but the mod works there).
EDIT
Yes, that fixed it. Thanks for the help.