Would it be possible to make enemy commander's combat skills and fleetwide skills show up in separate tabels, or to make demoting an officer not cost story points?
This is great! I was working on something similar, but I don't think it would've turned out as well as this. Wholesale replacement of the officer gui was the right call for sure. Well done!
What I'd love you (actually vanilla) to do would be: only active officers (assigned to ships) count towards the "Officers: X/Y" count. So I can have 20 unsuspended ones (paying full wage), but can only assign 8 (or 10 with skills) at the given time.
Cheers!
Then there's this awkward thing with being able to retrain officers from a pod, but not officers that has been given elite skills (button is greyed out, could be replaced by "retrain" instead.
Cheers!
Finally, even if the above is not possible or done, it would be neat for suspended (and if the above is done, also unassigned) officers to learn a fraction of XP (they technically observe battles from inside the ship) - think of internship behaviour :)
Suspending vs changed logic:
- Changing logic of officers count would only be used to swap an active officer with a bottom list officer (that's currently "over the limit"). All it really needs is to be able to drag an officer over the limit to be above the officer that's unassigned. Yes, this is currently possible with "unassign -> suspend -> assign new one", but the added QoL here would be doing it in bulk. Personally, I don't mind credit cost, but to pay a story point for that is too much.
Now what I would expect vanilla to do (and it doesn't) is when I make a skill elite on a normal officer - for that button to disappear and "Retrain" button to be shown. Instead, we have greyed out "Make skills elite".
where does the "demote" button show up?
i've got an officer to level 5, but they've only got the options to suspend / dismiss / retrainSpoiler(https://cdn.discordapp.com/attachments/815735963090944010/937147554381037588/screenshot143.png)[close]
could this have anything to do w/ adding the mod to an ongoing save?
<my post>
Click on a skill icon to prime it for removal (it will become translucent). If at least one skill is primed for removal, and the officer isn’t capable of leveling up, the suspend button should change into a demote button.
ooooohohhhhhhhhhhhhh, that's cool as hell (and I never would've guessed it)
you should update the "demote officers" section of the op with that, the way it's laid out implies to me that there'll be a demote button that pops up a similar thing to the vanilla "retrain" menu
You know, I’m actually not sure, considering I’ve never found one with this mod active and don’t know how to spawn one. Feel free to save, try it, and report back with the results.
One thing I do know is that because suspended officers aren’t actually in your fleet, skill effects like officer training and cybenetic augmentation don’t apply, so e.g if you demote a suspended officer who has 2 elite skills by making that officer lose an elite skill, you won’t be able to add another elite skill until you reinstate them.
By the way, if you do encounter an issue with the high level cryopod officers, it would be really helpful if you could upload your save file and enabled_mods.json (just prior to obtaining the officer would be ideal, but any save with the officer would work too!), so that I don’t have to scan an entire system looking for one to test on.
<e>
<st>$exceptionalSleeperPodOfficer</st>
<bp>true</bp>
</e>
just tested this and yep, level 7 officers can't level up any more if you demote them
however, level 7 officers do have this in their bit in the save file(cba to upload my whole file rn), hopefully this helpsCode<e>
<st>$exceptionalSleeperPodOfficer</st>
<bp>true</bp>
</e>
public int getMaxEliteSkills(PersonAPI person) {
int bonus = 0;
if (person != null) {
MutableCharacterStatsAPI stats = person.getFleetCommanderStats();
if (stats != null) {
bonus = (int) stats.getDynamic().getMod(Stats.OFFICER_MAX_ELITE_SKILLS_MOD).computeEffective(0);
}
}
return (int) Global.getSettings().getFloat("officerMaxEliteSkills") + bonus;
}
oh wow, this custom tag stuff is really impressive!
Though I do have 2 main suggestions for you -
- Since you can make a button for each custom tag, can you extend that to the "edit tags" menu & add buttons to automatcally put tags in?
- Can you add a set of premade tags for specialisations that aren't covered by specific skils (like "level 7", "Armour", "Frigate" etc (or a field in the settings file where we can add them ourselves)), it's a small thing but not having to remake them every save is a nice timesaver
otherwise it's all v slick, I've got a few tiny gripes with the UI but i'll need to play some more to figure out what i actually have to say about it
As for your second suggestion, I was thinking of adding premade tags for personality and the exceptional cryopod status, but I’m not sure what you mean by having premade tags for e.g frigate and armor. How would I tell whether an officer counts as a “frigate” or “armor” officer? These seem like good custom tag candidates but imo wouldn’t work well as a premade tag (people can have differing opinions on what exactly constitutes a good officer for frigates, etc.).
Ah, I probably didn't explain myself correctlyI understand now. I still didn't end up implementing this, and here's why:
I meant more as an extension of the custom tag buttons thing - don't assign them from anything that's inherent to the officer (excl. personality & exceptional status, those are a good idea), instead add a set of fairly generic tags & allow the user to assign them on their own (without / before setting up manual, specific tags).
I think what Ruddy is asking for is the ability to define them in a csv file (or json if we want to add colors to them etc). Your mod would come with either an empty file, or a file with some basic tags that target a rather generic use-case. The externalization via this file would allow the power user to tailor the list to their liking.
Edit: thanks for the update, much appreciated your support version checker. If you could also include a direct link in your version file, it would allow Mod Manager to auto-update your mod. See: https://github.com/jaghaimo/starpocalypse/blob/master/assets/starpocalypse.version
I think what Ruddy is asking for is the ability to define them in a csv file (or json if we want to add colors to them etc). Your mod would come with either an empty file, or a file with some basic tags that target a rather generic use-case. The externalization via this file would allow the power user to tailor the list to their liking.
Edit: thanks for the update, much appreciated your support version checker. If you could also include a direct link in your version file, it would allow Mod Manager to auto-update your mod. See: https://github.com/jaghaimo/starpocalypse/blob/master/assets/starpocalypse.version
Sure, I can do that, won’t take much time to implement a “persistent tags” field in the mod settings.
Thanks for this mod.
I've noticed that after installing the mod that the game no longer starts paused when loading a save. I tested with no other mods installed and the same thing happens.
Any reason this mod isn't on the Mod Index page? It's great!
568447 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain - java.lang.NoSuchMethodError: com.fs.starfarer.coreui.CaptainPickerDialog.getListOfficers()Lcom/fs/starfarer/coreui/o0o0;
java.lang.NoSuchMethodError: com.fs.starfarer.coreui.CaptainPickerDialog.getListOfficers()Lcom/fs/starfarer/coreui/o0o0;
at officerextension.CoreScript.injectCaptainPickerDialog(CoreScript.java:146)
at officerextension.CoreScript.advance(CoreScript.java:123)
at com.fs.starfarer.campaign.CampaignEngine.advance(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.advance(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
The mod crash the game when I try to load the officer UI in the Linux version of the game I don't know if Mac or Windows have this issue or not.Quote568447 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain - java.lang.NoSuchMethodError: com.fs.starfarer.coreui.CaptainPickerDialog.getListOfficers()Lcom/fs/starfarer/coreui/o0o0;
java.lang.NoSuchMethodError: com.fs.starfarer.coreui.CaptainPickerDialog.getListOfficers()Lcom/fs/starfarer/coreui/o0o0;
at officerextension.CoreScript.injectCaptainPickerDialog(CoreScript.java:146)
at officerextension.CoreScript.advance(CoreScript.java:123)
at com.fs.starfarer.campaign.CampaignEngine.advance(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.advance(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
When I'm trying to open the F menu, game will throw a error and crash(with only this mod activaed)
I don't know why this happened :PHere is the log75146 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain - java.lang.RuntimeException: Renderer's graphics object not found
java.lang.RuntimeException: Renderer's graphics object not found
at officerextension.ui.Button.getText(Button.java:82)
at officerextension.FleetPanelInjector.getAutoAssignButton(FleetPanelInjector.java:212)
at officerextension.FleetPanelInjector.advance(FleetPanelInjector.java:44)
at officerextension.CoreScript.advance(CoreScript.java:101)
at com.fs.starfarer.campaign.CampaignEngine.advance(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.advance(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)[close]
I'm using 0.95.1a RC6, and running it at windows 10(21H2)When I'm trying to open the F menu, game will throw a error and crash(with only this mod activaed)
I don't know why this happened :PHere is the log75146 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain - java.lang.RuntimeException: Renderer's graphics object not found
java.lang.RuntimeException: Renderer's graphics object not found
at officerextension.ui.Button.getText(Button.java:82)
at officerextension.FleetPanelInjector.getAutoAssignButton(FleetPanelInjector.java:212)
at officerextension.FleetPanelInjector.advance(FleetPanelInjector.java:44)
at officerextension.CoreScript.advance(CoreScript.java:101)
at com.fs.starfarer.campaign.CampaignEngine.advance(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.advance(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)[close]
That’s odd. Can you let me know:
- what version of the game you’re on (e.g. 0.95.1a RC6 or 0.95 RC15)
- what OS you’re using
I'm unable to reproduce this error. Just to be clear, is it happening every time you press F, or just occasionally/rarely?The same error still occurs, thanks for your reply though.
Only thing that I can think of is that you've renamed base game packages, maybe? It's looking for something in the package "com.fs.graphics", so if you renamed that or it's not there, you'd get this error.
Try replacing the jar file in Officer Extension/jars with the attached one, it changes the way the mod looks for that object.
How can I delete a tag?
Sorry to bother you, but I wanna to ask, will this mod add feature to display all skill selections when leveling up officer? I hate when my low tech can get skill that I don't use like Energy Mastery or defensive skill like armor skill, I love playing it reckless with a focus on out damaging the enemy fleet.
Thanks!
Do suspended officers factor into bonus XP calculations? IIRC non-assigned officers do.
This mod is amazing. Would you be able to add a feature to change officer portraits by any chance? I often turn down perfectly good officers because they have the same portrait as another officer in my fleet.The VIC faction has ways of changing Captain portraits.
202654 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain - java.lang.RuntimeException: Could not find the "idle officers: x" text in the fleet info panel
java.lang.RuntimeException: Could not find the "idle officers: x" text in the fleet info panel
at officerextension.FleetPanelInjector.replaceNumIdleOfficersLabel(FleetPanelInjector.java:177)
at officerextension.FleetPanelInjector.advance(FleetPanelInjector.java:46)
at officerextension.CoreScript.advance(CoreScript.java:101)
at com.fs.starfarer.campaign.CampaignEngine.advance(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.advance(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
This mod is amazing. Would you be able to add a feature to change officer portraits by any chance? I often turn down perfectly good officers because they have the same portrait as another officer in my fleet.
74628 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain - java.lang.RuntimeException: Error loading [officerextension.plugin.OfficerExtension]
java.lang.RuntimeException: Error loading [officerextension.plugin.OfficerExtension]
at com.fs.starfarer.loading.scripts.ScriptStore$3.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: officerextension.plugin.OfficerExtension
at org.codehaus.janino.JavaSourceClassLoader.findClass(JavaSourceClassLoader.java:179)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Hey there Mod Master,
i keep getting this Error. cant for the life of me figure out whats up. Really trying to do my next run with you mod.Code74628 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain - java.lang.RuntimeException: Error loading [officerextension.plugin.OfficerExtension]
java.lang.RuntimeException: Error loading [officerextension.plugin.OfficerExtension]
at com.fs.starfarer.loading.scripts.ScriptStore$3.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: officerextension.plugin.OfficerExtension
at org.codehaus.janino.JavaSourceClassLoader.findClass(JavaSourceClassLoader.java:179)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Been trying to figure out the point of suspending officers. you pay 12 months salary up front in exchange for a 90% reduction in their monthly pay... so that over the course of a year you pay 110% of what you would have otherwise in exchange for... what? you can already hire over cap thanks to the mod, it does the opposite of saving you money, and really just seems an entirely pointless feature. what am i missing?Do you want to re-level your specialized officers once you change your fleet composition for the fifth time? It is handy to have different officers for different ships and ship types... The investment in time and story points for another batch of officers is uhhhh... Aaand how much do officers not suspended cost per month? ;)
you dont need to suspend officers to recruit over cap.That is correct
you dont save money suspending them. being suspended confers no functional benefit, and costs more.You do save money after a certain period, you break almost even after 13 months (12 months upfront and 1,3 months of salary over 13 months), so once you pay for month 14 you start saving money... So what is left: You save long term, while I personally really don't care or need that feature, it would or could, in theory, save me a lot of dosh if I find usable officers in the exploration phase, especially if I only explore and don't fight which means I do not need officers, and depending on my mood the (pure) exploration phase may easily take several cycles.
I'd love to see an "unbalanced" addition to this mod, where you can increase the max cap of deployed officers, turned off by default of course, and only enabled and adjusted in the json files.Why not just raise baseNumOfficers?
I completely understand the significance of balance by not having this feature, but it would still be cool to have it as an option.
I've tried to dive into the base game settings to see if I could increase the amount of bonus officers from the skills, but I don't think I looked deep enough to find where I could change it.
I'd love to see an "unbalanced" addition to this mod, where you can increase the max cap of deployed officers, turned off by default of course, and only enabled and adjusted in the json files.Why not just raise baseNumOfficers?
I completely understand the significance of balance by not having this feature, but it would still be cool to have it as an option.
I've tried to dive into the base game settings to see if I could increase the amount of bonus officers from the skills, but I don't think I looked deep enough to find where I could change it.
Can I demote cryopod officers? Or they'll lose extra levels and elite skills?
P.S. Can you also add a version that allows you to edit officer skills the same way you can with AI core officers if it's possible?
I think this is borked on officer promotion, it's listed as x/<whatever your current limit is>, and you can't promote
Looking in the javadocs here https://fractalsoftworks.com/starfarer.api/com/fs/starfarer/api/impl/campaign/intel/PromoteOfficerIntel.html (https://fractalsoftworks.com/starfarer.api/com/fs/starfarer/api/impl/campaign/intel/PromoteOfficerIntel.html) how would you override the check and re-enable the button?
Sorry, new here and my java's rusty
Officers are not spawning with nor gaining leadership skills anymore. I don't know if it's a vanilla thing as I hadn't played in a good while. Or is this mod at fault?Vanilla thing
I think this is borked on officer promotion, it's listed as x/<whatever your current limit is>, and you can't promoteOh I see, you mean the "officer promotion candidate" event. Yeah, I kind of forgot that even existed.
Looking in the javadocs here https://fractalsoftworks.com/starfarer.api/com/fs/starfarer/api/impl/campaign/intel/PromoteOfficerIntel.html (https://fractalsoftworks.com/starfarer.api/com/fs/starfarer/api/impl/campaign/intel/PromoteOfficerIntel.html) how would you override the check and re-enable the button?
Sorry, new here and my java's rusty
Hey float,
I would have more fun if this mod had an Officers Aboard mode removing the assigned officer limit, and I wonder if the other users would enjoy it. To keep overall player power the same, officers would cost less money but level up more slowly with every level. Do you find the idea feasible?
Liral
If I understand correctly, what you want is already available in the base game via settings.json. %u201CbaseNumOfficers%u201D is what you%u2019re looking for, I believe. Just set it to something like 1000.
That's the first third of my suggestion: I want to put an officer on every ship, reduce officer pay to keep the same overall cost, and slow officer leveling to maintain power balance with enemy fleets.
Well the obvious balancing lever would be to make enemy fleets similarly uncapped in number of officers, which I’m sure baseNumOfficers already does.
And for the second part, not sure what you’re aiming for. Do you mean, e.g. want to pay, say, 10k credits per month on officers regardless of the amount, so if you have 5 officers you pay each 2k/month and if you have 50 officers you pay each 200/month? That seems arbitrary and it makes more sense to me to at if you field more officers, you incur greater upkeep.
Also not really sure how slowing officer leveling maintains power balance considering that they still reach max level eventually. Regardless, there’s probably an officer xp multiplier somewhere in settings.json.
So my understanding then is that you’d like to have very large fleets with upwards of 30 officers, but find the cost unmanageable? Actually, I’m pretty sure base officer pay and officer pay gain per level are also in settings.json, so you could just reduce them.
I want the player and enemies to have an officer aboard every ship, but, expecting the cost to be unmanageable and worrying having too many total skills too early might overwhelm other gameplay features, I thought slowing level progress might help delay that effect until and unless the player stuck with leveling 30 officers over a long time. Fixed, exponentially distributed per-officer level caps could work too, though!
Also, I want to know why Alex capped deployed Officers at 8-10 rather than letting the player have an officer for every ship and balancing accordingly. I figure the answer is obvious but just don't know.
For the first part, you could do something like making it so that the XP you gain from a battle is duplicated and distributed evenly across all officers rather than each officer getting their own XP (I’m not actually sure how vanilla calculates the XP each officer gets from combat). That’s quite niche and would be outside of the scope of this mod, but it shouldn’t be too hard to implement for your own mod.
For the second part, I have a feeling the officer cap is partly due to how Alex wanted the deployment point cap to be separate from fleet size. Prior to 0.95, I believe your deployment cap at the start of combat (between 40% and 60% of total DP size in the in-game settings) was based purely on your fleet’s DP value, so it ended up just being a matter of how big a fleet you were able to field. Now, your initial DP cap is based on number and quality of officers, which means having a very large fleet DP-wise isn’t as useful. Uncapping officers would have a similar effect to the pre-0.95 version, disproportionately favoring fleets with a large number of ships for initial DP purpose, since each ship would presumablly have an officer.
Ultimately I think it’s the mentality of always being able to improve your fleet by just adding more ships, vs having “optimal” fleets that don’t rely on sheer numbers.
Am I allowed to release it on discord and forum? With all the due credits and license of course!
Though if you have any interest in merging it into the main branch that'd be even better. If that's the case I will even add in the settings json the option to disable my button and set it as disabled by default to keep the base mod aligned with vanilla.
Am I allowed to release it on discord and forum? With all the due credits and license of course!
Sure, just make sure to link back here and make the source code publicly available.Though if you have any interest in merging it into the main branch that'd be even better. If that's the case I will even add in the settings json the option to disable my button and set it as disabled by default to keep the base mod aligned with vanilla.
Your work looks interesting, but Officer Extension is intended to be a QoL mod. I think allowing players to increase officers' level cap doesn't really fall under QoL, sorry!
Is the enemy officer's fleetwide skills there from the base game, or did the mod add those?
I don't think this mod plays nicely with the mod that unlocks the entire skillset for customization during officer promotions, like they're fighting for the same real estate.
I don't think this mod plays nicely with the mod that unlocks the entire skillset for customization during officer promotions, like they're fighting for the same real estate.
Never heard of that mod, but if it’s using reflection to access the officer panel chances are they’re incompatible.
Are you running a translation pack or another UI overhaul mod? If so, it%u2019s not compatible. (For Chinese language pack specifically I think someone already posted a patched version on fossic.)
Otherwise, what%u2019s your mod list?
https://backup1.fossic.oss.jnxyp.cn/forum/202309/11/195955egfqgqlgpgt2dpty.jpg
https://backup1.fossic.oss.jnxyp.cn/forum/202309/11/195958t2rv2vvukvovv23u.jpg
https://backup1.fossic.oss.jnxyp.cn/forum/202309/11/200002eou774h8475i7oz5.jpg
https://backup1.fossic.oss.jnxyp.cn/forum/202309/11/200005r4r5zlgh4j9u3cgi.jpg
Can you disable Officer Extension and post a picture of the officer selection screen or fleet screen?Ok, I will disable this Mod until the Chinese forum translator can update it to support 0.96;
(Again, this mod is not compatible with the Chinese language pack, if you're using that.)
"unremovable" : true
"unremovable": true
292725 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain - java.lang.NullPointerException
java.lang.NullPointerException
at officerextension.FleetListener.reportShownInteractionDialog(FleetListener.java:37)
at com.fs.starfarer.campaign.CampaignEngine.reportShowInteractionDialog(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.showInteractionDialog(Unknown Source)
at tecrys.svc.world.notifications.NotificationBase.showNotification(NotificationBase.kt:20)
at tecrys.svc.world.notifications.NotificationBase.showIfRequested(NotificationBase.kt:28)
at tecrys.svc.world.notifications.NotificationShower.advance(NotificationShower.kt:61)
at com.fs.starfarer.campaign.CampaignEngine.advance(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.advance(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.super(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Hi! So, a small thing I noticed in this mod is that you cannot add an officer from an officer promotion event (Where you can spend a story point to get an officer form your crew after a battle) if you are above the vanilla officer limit. Is there any way this could be added? Awesome mod btw!
Edit: Also noticed the same thing with the Luddic Pather bar event where you can spend a story point to have them join you.
An issue with Officer Extension as of 0.97a - if you suspend officers, they still count towards the overall XP value of your fleet. If you permanently dismiss them, they no longer count.How did you update the version to work with 0.97a?
If you are carrying around a lot of suspended officers, you are crippling your XP gain.
Hey! Love the mod. There is a small problem tho - an event where you can promote some crew to officer. It's still shows vanilla interpretation of the limit
In example I have 7 officers in total but only 1 is piloting a ship
Dunno, seems kinda unimportant, but still
An issue with Officer Extension as of 0.97a - if you suspend officers, they still count towards the overall XP value of your fleet. If you permanently dismiss them, they no longer count.
If you are carrying around a lot of suspended officers, you are crippling your XP gain.
Just reporting the crashed log.
4658903 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain - java.lang.NullPointerException
java.lang.NullPointerException
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:57)
at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)
at java.lang.reflect.Field.get(Field.java:393)
at officerextension.FleetListener.modifyDifficultyCalculator(FleetListener.java:55)
at officerextension.FleetListener.reportShownInteractionDialog(FleetListener.java:71)
at com.fs.starfarer.campaign.CampaignEngine.reportShowInteractionDialog(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.startEncounterInvolvingPlayerFleet(Unknown Source)
at com.fs.starfarer.campaign.BaseLocation.advance(Unknown Source)
at com.fs.starfarer.campaign.StarSystem.advance(Unknown Source)
at com.fs.starfarer.campaign.CampaignEngine.advance(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.advance(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.super(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
Can you be more specific about the nature of the bug you're encountering and how it's being triggered?
Hi, the hotfix crashes the game on startup.
Error log:
56446 [Thread-2] ERROR com.fs.starfarer.combat.CombatMain - java.lang.RuntimeException: Error loading [officerextension.campaign.CryopodAwareOfficerLevelUpPlugin]
java.lang.RuntimeException: Error loading [officerextension.campaign.CryopodAwareOfficerLevelUpPlugin]
at com.fs.starfarer.loading.scripts.ScriptStore$3.run(Unknown Source) ~[port_obf.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1575) [?:?]
Caused by: java.lang.ClassNotFoundException: officerextension.campaign.CryopodAwareOfficerLevelUpPlugin
at org.codehaus.janino.JavaSourceClassLoader.findClass(JavaSourceClassLoader.java:183) ~[janino-3.0.12.jar:?]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592) ~[?:?]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
... 2 more
Delete the entire Officer Extension mod folder, then redownload the mod. CryopodAwareOfficerLevelUpPlugin has been removed.
Crashing when entering or exiting combat.
337815 [Thread-2] ERROR com.fs.starfarer.combat.CombatMain - java.lang.ClassCastException: class officerextension.campaign.ModifiedFleetEncounterContext cannot be cast to class exerelin.campaign.battle.NexFleetEncounterContext (officerextension.campaign.ModifiedFleetEncounterContext and exerelin.campaign.battle.NexFleetEncounterContext are in unnamed module of loader java.net.URLClassLoader @75678e0a)
java.lang.ClassCastException: class officerextension.campaign.ModifiedFleetEncounterContext cannot be cast to class exerelin.campaign.battle.NexFleetEncounterContext (officerextension.campaign.ModifiedFleetEncounterContext and exerelin.campaign.battle.NexFleetEncounterContext are in unnamed module of loader java.net.URLClassLoader @75678e0a)
at exerelin.campaign.battle.NexFleetInteractionDialogPluginImpl.restoreOrigCaptain s(NexFleetInteractionDialogPluginImpl.java:69) ~[?:?]
at com.fs.starfarer.api.impl.campaign.FleetInteractionDialogPluginImpl.backFromEng agement(FleetInteractionDialogPluginImpl.java:616) ~[starfarer.api.jar:?]
at exerelin.campaign.battle.NexFleetInteractionDialogPluginImpl.backFromEngagement(NexFleetInteractionDialogPluginImpl.java:87) ~[?:?]
at com.fs.starfarer.campaign.CampaignState.prepare(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.BaseGameState.traverse(Unknown Source) ~[port_obf.jar:?]
at com.fs.state.AppDriver.begin(Unknown Source) ~[port.common_obf.jar:?]
at com.fs.starfarer.combat.CombatMain.main(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.StarfarerLauncher.super(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source) ~[port_obf.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1575) [?:?]
Crashing when entering or exiting combat.
337815 [Thread-2] ERROR com.fs.starfarer.combat.CombatMain - java.lang.ClassCastException: class officerextension.campaign.ModifiedFleetEncounterContext cannot be cast to class exerelin.campaign.battle.NexFleetEncounterContext (officerextension.campaign.ModifiedFleetEncounterContext and exerelin.campaign.battle.NexFleetEncounterContext are in unnamed module of loader java.net.URLClassLoader @75678e0a)
java.lang.ClassCastException: class officerextension.campaign.ModifiedFleetEncounterContext cannot be cast to class exerelin.campaign.battle.NexFleetEncounterContext (officerextension.campaign.ModifiedFleetEncounterContext and exerelin.campaign.battle.NexFleetEncounterContext are in unnamed module of loader java.net.URLClassLoader @75678e0a)
at exerelin.campaign.battle.NexFleetInteractionDialogPluginImpl.restoreOrigCaptain s(NexFleetInteractionDialogPluginImpl.java:69) ~[?:?]
at com.fs.starfarer.api.impl.campaign.FleetInteractionDialogPluginImpl.backFromEng agement(FleetInteractionDialogPluginImpl.java:616) ~[starfarer.api.jar:?]
at exerelin.campaign.battle.NexFleetInteractionDialogPluginImpl.backFromEngagement(NexFleetInteractionDialogPluginImpl.java:87) ~[?:?]
at com.fs.starfarer.campaign.CampaignState.prepare(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.BaseGameState.traverse(Unknown Source) ~[port_obf.jar:?]
at com.fs.state.AppDriver.begin(Unknown Source) ~[port.common_obf.jar:?]
at com.fs.starfarer.combat.CombatMain.main(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.StarfarerLauncher.super(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source) ~[port_obf.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1575) [?:?]
Well, that's annoying. OK, I think at this point I'll just accept that the modified battle difficulty computation stuff won't be compatible with Nex or any other mod that uses its own FleetEncounterContext. If you have Nex, you'll have to deal with suspended officers causing you to potentially lose battle XP.
Hi.Thanks for the report, fixed this. Also added a console command to locate said level 7 officers, mostly for my own use so that I can actually test them properly, but I think players may find this command helpful as well.
The changes made to skills in version 0.97 and to officers (the introduction of "templates") lead to numerous bugs when trying to respec a level 7 officer. In 0.97, level 7 officers are using the new template system and they have 5 elite skills (while a normal officer can only reach level 6 -with Officer Training- with a maximum of 3 elite skills -with Officer Training and Cybernetic Augmentation-).
Trying to demote a level 7 officer (to respecialize him) causes him to lose between 1 or 5 (!) maximum elite skills forever, regardless of the skills the player already possesses. However, this bug has some quirks to it : the number of elite skills you lose forever depends on the already elite skills you made the officer forget.
1. Exemple 1 : my legendary officer has 5 elite skills and 2 non elite skills. I make him only forget his 2 non elite skills. He still has a maximum of 5 elite skills ;
2. Exemple 2 : same officer. I make him forget his 2 non elite skills and 1 elite skill. Because I made him forget 1 elite skill, he will now have a maximum of 4 elite skills even though I leveled him up to 7 again (lost 1 elite skill forever) ;
3. Exemple 3 : same officer. This time, I make him forget 2 non elite skills and 3 elite skills. He will now have a maximum of 2 elite skills max.
Trying to circumvent this bug by first making all elite skills non elite through retraining and then demoting the officer, also doesn't work. As soon as you do this, your officer sort-of loses his "legendary" property and he becomes a regular officer with only 1 elite skill (with a maximum level 7). You can still get 2 extra elite skills with Officer Training and Cybernetic Augmentation, but you cannot get back to a maximum of 5 elite skills.
Really enjoy the mod so far, would it be possible to get a button to unassign all officers currently assigned to ships?Don't think I can fit such a button anywhere, maybe an invisible hotkey could be possible. Are you aware that you can quickly unassign an officer by right-clicking its portrait in the fleet screen?
Love this mod. Would like if you could also change how many skills an officer could select from upon level-up as I would prefer to have all skills available than promote/demote until I get the one I need.I'd consider it but it does feel more cheaty than QoL. It also defeats the purpose of the demotion system if you could manufacture the perfect officer every time, as there'd be no benefit to removing select skills over just hiring a new officer knowing that they can learn whatever you want.
After 0.67, the locate lvl7 officers command no longer give any results. I updated the mod in the middle of a playthrough, could this cause the problem?I'm not noticing any difference on my end. I can still locate exceptional officers as usual. (FWIW, the only thing about that code that changed between the two versions is that I refactored it somewhere else, and I changed the return type, nothing that should have any effect on its output whatsoever).
After 0.67, the locate lvl7 officers command no longer give any results. I updated the mod in the middle of a playthrough, could this cause the problem?I'm not noticing any difference on my end. I can still locate exceptional officers as usual. (FWIW, the only thing about that code that changed between the two versions is that I refactored it somewhere else, and I changed the return type, nothing that should have any effect on its output whatsoever).