(forgot to reply to this one previously, whoops)
Any chance you could update the version checker to optionally allow parsing the tag name from the latest release? The latest release info can be obtained with only the Github username and repo name via the Github API:
Example GET request:
https://api.github.com/repos/qcwxezda/Starsector-Officer-Extension/releases/latest
The tag name can be found under the “tag_name” field, and I believe that most modders will either make their tag names equal to the version number of preface it with a “v” (which Github recommends).
This would be a nice QoL upgrade for modders to not have to manually ensure that their Nexerelin version file is in sync with their Github repo and their mod_info.json.
I'll take a look. That said I might well remove Nex's Version Checker once the standalone mod updates anyhow, I'd prefer to not maintain someone else's mod inside my own.
Anyone know how to fix this problem?
ERROR com.fs.starfarer.combat.CombatMain - java.lang.NoClassDefFoundError: com/fs/starfarer/api/campaign/CustomVisualDialogDelegate
java.lang.NoClassDefFoundError: com/fs/starfarer/api/campaign/CustomVisualDialogDelegate
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.fs.starfarer.campaign.rules.super.getCommandClass(Unknown Source)
at com.fs.starfarer.campaign.rules.super.<init>(Unknown Source)
at com.fs.starfarer.campaign.rules.Rules.o00000(Unknown Source)
at com.fs.starfarer.loading.SpecStore.public(Unknown Source)
at com.fs.starfarer.loading.ResourceLoaderState.init(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)
Caused by: java.lang.ClassNotFoundException: com.fs.starfarer.api.campaign.CustomVisualDialogDelegate
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Nexerelin 0.10.3i and later require Starsector 0.95.1a. Update your Starsector, or go back to the older Nex version.
Possible ConcurrentModificationException in RebellionCondition:
@Override
public void apply(String id) {
if (refetchEventIfNeeded())
market.getStability().modifyFlat(id, -1 * event.getStabilityPenalty(),
StringHelper.getString("exerelin_marketConditions", "rebellion"));
if (event == null) /* refetch failed */
market.removeSpecificCondition(this.getModId());
}
If the refetch fails post game load (where the game goes through and reapplies every market condition, see econPostSaveRestore in CoreLifecyclePluginImpl.java), calling market.removeSpecificCondition will cause a ConcurrentModificationException.
Thanks for the find, I'll try making it not remove the condition. Although I'll need to test first; worried about 'zombie' market conditions.
I have some reservations about the whole "winning" system after the alliance I was commissioned in just won "conquest" by adding another faction as a member ("conquest" should perhaps be called "domination", like in old Civ games where it meant majority of land and population, but I digress).
After that event, which happened too early for me to do many of the things I wanted (didn't even get to finish the story), I had some reflections on the entire diplomacy / winning / 4X situation:
- Starsector is not and will not work as a proper 4X game - the actual game that is really analogous to it is... Mount & Blade: Warband.
- Just like in M&B, we are dealing here with a world that is in important ways static (the core) and has always the same factions.
- Diplomatic interactions shouldn't follow the logic of 4X games but rather the logic of being rather random and maintaining the status quo.
- The only winning condition should probably be to be in control (together with allies) of all the inhabited planets in the sector. That would already make things better as at least one alliance can't just balloon to the point of meeting some less stringent victory goals.
- Alternatively, if one really wants this to be, somehow, 4X proper, then the alliance mechanic needs some changes to punish or make it more difficult to have really large alliances.
- The diplomatic win is redundant - factions that have good relations will join alliances and that will most likely win one of the other conditions first.
- Apparently you just need to be commissioned by one of the allied factions to be considered a winner - so you don't really have to do anything beyond a certain point.
- Why is the "economic" victory just the number of heavy industries? So basically you can get an ally or two and just spam those yourself and get this easily...
Overall the winning mechanic feels vacuous, I can't care about these conditions and just have to shrug when it happens - but it still is awkward to play a game that is somehow "won" or "lost".
If one wants more variety of goals for winning then again M&B might provide better inspiration - by taking it from the Prophecy of Pendor mod that not only requires complete conquest but also things like eliminating dangerous parties and maintaining good relations with an important independent group.
I realize too that I'm playing with additional factions but I think these points still stand to some extent and the fact that you can't add a faction without worrying about its impact on diplomacy is still problematic (as factions in this game are not just assemblies of generic traits but have their distinct "personality" that is itself an important value added to the game).
Thanks for the thoughts! I still need to figure out how exactly I'd change this stuff though, maybe later.
(The idea in the other post about having to maintain the win condition for some time might be good, at least)
Some background info and random thoughts:
- Originally the conquest victory required eliminating every other victory-eligible faction. This took way too long even in vanilla, much less modded games, and it was always faster to do the diplomatic victory if you really want the endgame screen. So it became the majority-population and two-thirds heavy industry rules.
-- The intent of having the two different requirements was to create different strategies: snap a lot of enemy small planets, or punch out the core worlds with HI? Although I hadn't considered the "spam your own heavy industry" exploit.
- For the player I'd still expect a diplomatic victory to be preferable to conquest, with allies or otherwise, unless you're already associated with the biggest boys like the Hegemony and/or League. You can just throw a bunch of prisoners, AI cores and operatives at factions to get friendly with them (and kill off any small, recalcitrant factions). The main contribution of being in an alliance is to get dragged into random wars and otherwise incur increased risks of negative diplomacy events (the diplomacy 'disposition' calculation treats alliance members as having the size of the full alliance when calculating the dominance penalty, and this applies to intra-alliance relations too).
- Thinking about it a bit more, a problem with the diplomatic victory for NPC factions is that they don't try to win it at all. (They don't specifically try to win a conquest victory either, but tend towards it 'on their own' as territory gets taken during wars).
- All things considered, I'm vaguely thinking of (adding a setting to) remove all victory conditions completely, and let the player measure their own success. Don't a couple of Paradox games do this?