Fractal Softworks Forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

Starsector 0.9.1a is out! (05/10/19); Blog post: Personal Contacts (08/13/20)

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Histidine

Pages: [1] 2 3 ... 9
1
Code
145863 [Thread-6] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.IllegalArgumentException: Comparison method violates its general contract!
java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeHi(Unknown Source)
at java.util.TimSort.mergeAt(Unknown Source)
at java.util.TimSort.mergeCollapse(Unknown Source)
at java.util.TimSort.sort(Unknown Source)
at java.util.TimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at com.fs.starfarer.campaign.ui.intel.SortablePlanetList.recreateList(Unknown Source)
at com.fs.starfarer.campaign.ui.intel.SortablePlanetList.actionPerformed(Unknown Source)
at com.fs.starfarer.campaign.ui.intel.SortablePlanetList.<init>(Unknown Source)
at com.fs.starfarer.campaign.ui.intel.B.for.if(Unknown Source)
at com.fs.starfarer.campaign.ui.intel.B.sizeChanged(Unknown Source)
at com.fs.starfarer.ui.for.setSize(Unknown Source)
at com.fs.starfarer.campaign.comms.return.this.void(Unknown Source)
at com.fs.starfarer.campaign.comms.return.sizeChanged(Unknown Source)
at com.fs.starfarer.ui.for.setSize(Unknown Source)
at com.fs.starfarer.ui.o00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.setSize(Unknown Source)
at com.fs.starfarer.ui.newui.O0oO$7.actionPerformed(Unknown Source)
at com.fs.starfarer.ui.newnew.buttonPressed(Unknown Source)
at com.fs.starfarer.ui.I.?00000(Unknown Source)
at com.fs.starfarer.ui.I.processInput(Unknown Source)
at com.fs.starfarer.ui.newnew.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.o00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.processInput(Unknown Source)
at com.fs.starfarer.ui.v.dispatchEventsToChildren(Unknown Source)
at com.fs.starfarer.ui.v.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.o00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.processInput(Unknown Source)
at com.fs.starfarer.ui.v.dispatchEventsToChildren(Unknown Source)
at com.fs.starfarer.ui.v.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.N.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.newui.O0oO.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.o00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.processInput(Unknown Source)
at com.fs.starfarer.ui.v.dispatchEventsToChildren(Unknown Source)
at com.fs.starfarer.ui.v.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.o00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.processInput(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.processInput(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$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
I narrowed this down to a bunch of marines I had stored on a station-only market.
- Opening intel screen when not in same system as that market: crash
- Opening intel screen when in same system as that market: no crash
- Opening faction doctrine/custom production screen doesn't cause the crash
- Taking out the marines fixes the issue (EDIT: Nope, still happens)
- Storing crew instead causes the crash to happen again, but apparently other commodities (tried supplies, fuel, heavy machinery, domestic/luxury goods, heavy armaments, AI cores) don't

2
- I did a full retreat in an engagement round
- Afterwards, the enemy decided to disengage, I could not pursue because of losses
- I was not given the option to recover my disabled/destroyed ships, lost all of them

3
Bug Reports & Support (modded) / [0.9.1a] Message spam in Windows console
« on: September 11, 2020, 07:50:44 AM »
While playing a battle with a low framerate (I think this was the "game slows down after a few battles" thing) I noticed the batch file's debug log was spamming a NullPointerException and ArrayIndexOutOfBoundsException:



The errors do not appear in starsector.log. Also, they were generated while the game was paused.
Setting sound + music volume to zero and turning off UI (F11 + tilde) did not suppress them. They did stop appearing after the battle.

What might cause this?

4
Modding / Save modlist extractor
« on: September 07, 2020, 09:09:18 PM »
I made a tool to convert a save's descriptor.xml to an enabled_mods.json file. It prints warnings to console if any of the mods are not found in the current install, too.

How to use (Windows): run the .exe, browse to descriptor.xml, browse to where you want to save the file (by default this is the /mods folder corresponding to the /saves folder from the previous step), done.

Download

Source (too lazy to GitHub a one-off project)
Spoiler
Code: java
package org.histidine.modlistextractor;

import java.awt.FileDialog;
import java.awt.Frame;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class main {

public static void main(String[] args) {
FileDialog loadDialog = new FileDialog((Frame)null, "Select save descriptor.xml");
loadDialog.setMode(FileDialog.LOAD);
/* dialog.setFilenameFilter(new XMLFileFilter()); */
loadDialog.setFile("descriptor.xml");
loadDialog.setVisible(true);

if (loadDialog.getFile() == null) {
System.out.println("No file selected");
System.exit(0);
return;
}

Path path = Paths.get(loadDialog.getDirectory(), loadDialog.getFile());
System.out.println("Loading file " + path);
List<ModEntry> mods;

try {
mods = getModList(path.toString());
} catch (Exception ex) {
throw new RuntimeException(ex);
}

String str = createEnabledModsJsonAsString(mods);
/*System.out.println(str);*/

FileDialog saveDialog = new FileDialog((Frame)null, "Select enabled_mods.json");
saveDialog.setMode(FileDialog.SAVE);
String modPath = Paths.get(loadDialog.getDirectory(), "..", "..", "mods").toString();
saveDialog.setDirectory(modPath);
saveDialog.setFile("enabled_mods.json");
saveDialog.setVisible(true);

if (saveDialog.getFile() == null) {
System.exit(0);
return;
}

path = Paths.get(saveDialog.getDirectory(), saveDialog.getFile());
File json = path.toFile();

try (Writer output = new BufferedWriter(new FileWriter(json))) {
output.write(str);
output.close();
} catch (Exception ex) {
throw new RuntimeException(ex);
}

System.out.println("Done, press Enter to exit");
try {
System.in.read();
} catch (IOException ex) {}

System.exit(0);
}

/**
* Gets the mod list from a Starsector save's descriptor.xml.
* @param path
* @return
* @throws SAXException
* @throws ParserConfigurationException
* @throws IOException
*/
public static List<ModEntry> getModList(String path) throws SAXException, ParserConfigurationException, IOException
{
Map<Integer, ModEntry> allMods = new HashMap<>();
List<ModEntry> modlist = new ArrayList<>();

File xml = new File(path);

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xml);
doc.getDocumentElement().normalize();

/* Load mod data from all mods ever enabled */
Node everMods = doc.getElementsByTagName("allModsEverEnabled").item(0);
NodeList nlEverMods = everMods.getChildNodes();
for (int i=0; i<nlEverMods.getLength(); i++) {
Node node = nlEverMods.item(i);
String nodeName = node.getNodeName();
if (!nodeName.equals("com.fs.starfarer.campaign.ModAndPluginData_-EnabledModData"))
continue;
Element el = (Element)node;

int xmlId = Integer.parseInt(((Element)getElement(el, "spec")).getAttribute("z"));
String id = getElement(el, "id").getTextContent();
String name = getElement(el, "name").getTextContent();
String version = getElement(el, "version").getTextContent();

/* Store only the mod's folder name, not the full path */
/* This is because someone else's saves may come from a Starsector copy installed to a different directory */
String modPath = getElement(el, "path").getTextContent();
String folderName = FileSystems.getDefault().getPath(modPath).getFileName().toString();

ModEntry entry = new ModEntry(id, name, version, folderName);
allMods.put(xmlId, entry);
}

/* Process mods last saved with */
/* Go up three levels: save folder -> saves/ -> starsector root */
Path modFolderPath = FileSystems.getDefault().getPath(path, "..", "..", "..", "mods").normalize();
Node lastMods = doc.getElementsByTagName("enabledMods").item(0);
NodeList nlLastMods = lastMods.getChildNodes();
for (int i=0; i<nlEverMods.getLength(); i++) {
Node node = nlLastMods.item(i);
if (node == null) {
continue;
}
String nodeName = node.getNodeName();
if (!nodeName.equals("com.fs.starfarer.campaign.ModAndPluginData_-EnabledModData"))
continue;
Element el = (Element)node;

int xmlId = Integer.parseInt(((Element)getElement(el, "spec")).getAttribute("ref"));
ModEntry entry = allMods.get(xmlId);

Path modPath = FileSystems.getDefault().getPath(modFolderPath.toString(), entry.folderName);
/*System.out.println(modPath.toString() + ", " + entry.folderName);*/
if (!Files.exists(modPath)) {
System.err.println("Warning, mod not found: " + entry.name + " " +
entry.version + " (" + modPath.toString() + ")");
}

/*System.out.println(entry);*/
modlist.add(entry);
}
Collections.sort(modlist);
return modlist;
}

/**
* Creates a string ready to write to {@code enabled_mods.json}.
* @param mods
* @return
*/
public static String createEnabledModsJsonAsString(List<ModEntry> mods) {
StringBuilder sb = new StringBuilder();
sb.append("{\"enabledMods\": [\r\n");
for (ModEntry mod : mods) {
sb.append("  \"").append(mod.id).append("\",\r\n");
}
sb.append("]}");

return sb.toString();
}

public static Node getElement(Element el, String id) {
return el.getElementsByTagName(id).item(0);
}

public static class ModEntry implements Comparable<ModEntry> {
public String id;
public String name;
public String version;
public String folderName;

public ModEntry(String id, String name, String version, String folderName) {
this.id = id;
this.name = name;
this.version = version;
this.folderName = folderName;
}

@Override
public String toString() {
String str = String.format("%s v%s (id %s, path %s)", name, version, id, folderName);
return str;
}

@Override
public int compareTo(ModEntry other) {
return this.name.compareTo(other.name);
}
}
}
[close]

5
General Discussion / 0.10a battle objectives change
« on: August 21, 2020, 02:04:37 AM »
Hidden in the Personal Contacts comment thread was this big upcoming update to battle objectives:

Oh, this sounds interesting!  I do miss having objectives be relevant - there were flaws with the old objectives = deployment value system, but it did two things very well that the current system can't really do at all: it made objectives important to take and hold, and it made small fast ships have a place even in large fleet battles, since you needed to contest with the enemy's screening forces before you could put your main combat ships on the field.

Ah, actually, let me paste the relevant patch notes! Basically, instead of just giving a small buff (which they still do), objectives also let you *do* something - deploy more ships. So that's real, qualitative impact - from playtesting, capturing one actually feels fun, since you're anticipating which ships you get to deploy.

This makes using smaller ships to capture and skirmish over them worthwhile. And there are supporting changes that both don't penalize you for putting officers in small ships, and remove any incentive for lugging around 10-15 "give me more deployment points" Paragons. And, capturing objectives doesn't let you snowball an advantage - it's more about evening out the playing field.

(This also connects up with using story points to temporarily hire above-the-limit mercenary officers; there's a lot of stuff that factors in.)

   Combat against REDACTED will have battle objectives (Nav Buoys etc)
      Staton battles and battles against automated defenses of salvageable derelicts still don't
   Deployment point distribution between opposing fleets now based primarily on number/level of officers
      Is no longer updated as ships are destroyed; only computed once when an engagement round starts
      Officer contribution does not depend on what type of ship they're in
         But they do have to be on a ship, unassigned officers do not contribute
   Battle objectives (Nav Buoys, Sensor Arrays, Comm Relays):
      Now grant bonus deployment points equal to a percentage of battle size
         5% for Nav Buoys and Sensor Arrays
         10% for Comm Relays
      Total with bonus can't exceed 60% of battle size (which is the normal cap for the larger fleet)
         So: no bonus points for a fleet that already vastly outnumbers the enemy
      Goal is to give player means to even out a battle where they're outnumbered through aggressive play/splitting their forces
   Adjusted enemy admiral AI to value controlling points more


Thoughts:

- The obvious stuff: Fixing the Paragon DP inflater and making frigates (and officers on frigates) matter again is clearly good. It's also neat that holding objectives acts as an equalizer for the smaller side while not making the larger side even stronger (compared to present).

- Basing the distribution on officers seems like a direct advantage to the Hegemony in fights with other factions, with its higher-quality and more numerous officers in doctrine ("5-1-1" memes coming soon to a Discord server near you).
That may actually be good (to keep the Hegs threatening despite all the enemies they have in modded games), but is it intended? Does this also affect autoresolve?

- With objectives mattering again, knowing which objective the enemy fleetblob is headed to suddenly becomes important for the player (previously I'd just wait for the horde to come to me, now I might actually have to intercept them ahead of time). Might we see a return of the Recon order?

- Will positioning of objectives at battle start be changed? As in, seems like if the weaker side happens to get two comm relays spawning close to its edge the map, it's done, it gets the full DP bonus and doesn't have to worry about objectives any further unless it gets pushed back all the way to the map border.
Although, I like that pushing the enemy back to the edge actually has benefits (rather than only making your retreat/reinforcement cycle slower and theirs faster).

6
From the mod troubleshooting guide thread (why do people post on that thread asking for help with crashes?)

Hi, so iam having an unknown issue with what i presume to be a mod that crashes my game after a couple of saves or after i leave the game running for a while. its probably not my memory either as i allocated 8gb to the game and these crashes happen regardless. here is what i have found that might be the cause of the issue. any help would be much appreciated.

https://pastebin.com/wGDhccyf
Code
1212146 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.ArrayIndexOutOfBoundsException: 2
java.lang.ArrayIndexOutOfBoundsException: 2
    at com.fs.starfarer.campaign.fleet.FleetMemberStatus.getStatus(Unknown Source)
    at com.fs.starfarer.campaign.fleet.CampaignFleetMemberView.renderModules(Unknown Source)
    at com.fs.starfarer.campaign.fleet.CampaignFleetMemberView.renderSingle(Unknown Source)
    at com.fs.starfarer.campaign.fleet.CampaignFleetMemberView.render(Unknown Source)
    at com.fs.starfarer.campaign.fleet.CampaignFleetView.render(Unknown Source)
    at com.fs.starfarer.campaign.fleet.CampaignFleet.render(Unknown Source)
    at com.fs.starfarer.campaign.BaseCampaignEntity.render(Unknown Source)
    at com.fs.graphics.LayeredRenderer.render(Unknown Source)
    at com.fs.starfarer.campaign.BaseLocation.render(Unknown Source)
    at com.fs.starfarer.campaign.CampaignEngine.render(Unknown Source)
    at com.fs.starfarer.campaign.CampaignState.render(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$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
(searching here or Discord for renderModules hasn't turned up anything for me)

7
On Nexerelin's Bitbucket a user reported an unloadable save (download available via that link):
(zip with mods needed to run the save can be provided if needed)

Code
187212 [Thread-4] INFO  com.fs.starfarer.campaign.save.CampaignGameManager  - Error loading
187212 [Thread-4] ERROR com.fs.starfarer.campaign.save.CampaignGameManager  - Cannot convert type java.util.ArrayList to type com.fs.starfarer.campaign.econ.Economy
---- Debugging information ----
message             : Cannot convert type java.util.ArrayList to type com.fs.starfarer.campaign.econ.Economy
class               : com.fs.starfarer.campaign.econ.Market
required-type       : com.fs.starfarer.campaign.econ.Market
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
line number         : 369341
class[1]            : java.util.HashMap
converter-type[1]   : com.thoughtworks.xstream.converters.collections.MapConverter
class[2]            : com.fs.starfarer.api.impl.campaign.shared.PlayerActivityTracker
class[3]            : com.fs.starfarer.api.impl.campaign.shared.SharedData
class[4]            : com.fs.starfarer.campaign.ModAndPluginData
class[5]            : com.fs.starfarer.campaign.CampaignEngine
converter-type[2]   : com.fs.starfarer.campaign.save.I
version             : not available

My attempt to work around this by changing the economy referenced in that market simply led to similar errors in other places, sometimes to the point of absurdity:
Code
416897 [Thread-4] ERROR com.fs.starfarer.campaign.save.CampaignGameManager  - Cannot convert type java.util.LinkedHashMap to type com.fs.starfarer.campaign.Faction
---- Debugging information ----
message             : Cannot convert type java.util.LinkedHashMap to type com.fs.starfarer.campaign.Faction
class               : com.fs.starfarer.campaign.CustomCampaignEntity
required-type       : com.fs.starfarer.campaign.CustomCampaignEntity
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
line number         : 369380
Code
545221 [Thread-4] ERROR com.fs.starfarer.campaign.save.CampaignGameManager  - Cannot convert type java.util.LinkedHashMap to type com.fs.starfarer.api.campaign.SectorEntityToken
---- Debugging information ----
message             : Cannot convert type java.util.LinkedHashMap to type com.fs.starfarer.api.campaign.SectorEntityToken
class               : com.fs.starfarer.campaign.CircularOrbitWithSpin
required-type       : com.fs.starfarer.campaign.CircularOrbitWithSpin
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
line number         : 369383
As noted on that page, the backup save worked correctly.

Is this just a bizarre one-off glitch in the save process, or might it have a cause in vanilla/mods? Can a save so affected be easily rescued?

8
Dunno if already fixed in dev, but:

After resigning a commission, the intel item isn't removed from the intel screen, and remains permanently visible under the "Mission" and faction tags (even if untagged as important).
If you repeatedly accept and resign a commission in the dialog, you can end up with a scroll list full of ended commissions.
(Haven't tested what happens when commissioned is annulled due to low reputation)

9
Suggestions / Unify fleet points and deployment points?
« on: February 14, 2020, 06:03:10 PM »
As in, make the 'fleet pts' column in ship data have the same value as DP/supplies-to-deploy, unless a particular ship needs them to be different for whatever reason.

The issue here is that cruisers and capitals have inflated DP costs relative to their FP costs. e.g.
Wolf: 5 FP, 5 DP
Hammerhead: 10 FP, 10 DP
Eagle: 14 FP, 22 DP
Paragon: 30 FP, 60 DP

This has certain effects on the gameplay of generated fleets.

Good effects
A fleet can have more cruisers and capitals to challenge the player, without needing a disproportionate FP value on fleet generation.

Bad effects
Basically every complaint involving capital bloat in things like expedition fleets and similar mod content. In particular, I believe the FP/DP mismatch is partly responsible for that annoying difficulty spike where e.g. a 150k named bounty can have one capital, but a 300k bounty has like six.

It also leads to strange autoresolve results, as in "it only takes three Hammerheads to match a Paragon?" I think this includes pursuit autoresolve, which would be an area where the discrepancy has direct (albeit minor) effects on the player.

Lastly it just seems to complicate stuff needlessly for modders and in discussions where backend values are relevant.


That said, I'm assuming the separate values weren't just introduced on a whim. Alex, I'd be interested in hearing what the original rationale was? Then we can talk about whether the good outweighs the bad.

10
Bug Reports & Support / [0.9.1a] CTD on clicking name in NGC dialog (minor)
« on: February 14, 2020, 05:06:40 PM »
Random discovery: When you start a new game and get to the part where you select your skills, you can click your character name as you would in campaign to rename the character. However, actually trying this causes a CTD.

Code
128562 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NullPointerException
java.lang.NullPointerException
at com.fs.starfarer.coreui.c.??0000(Unknown Source)
at com.fs.starfarer.coreui.c.actionPerformed(Unknown Source)
at com.fs.starfarer.ui.newnew.buttonPressed(Unknown Source)
at com.fs.starfarer.ui.I.?00000(Unknown Source)
at com.fs.starfarer.ui.I.processInput(Unknown Source)
at com.fs.starfarer.ui.O0Oo.o00000(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$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

11
Bug Reports & Support / [0.9.1a RC8] Commission doesn't pay bounty money
« on: February 08, 2020, 12:41:38 AM »
When you kill enemy ships while commissioned, the commission intel claims it pays credits for those ships but does not actually do so. I looked in FactionCommissionIntel and there appears to be no attempt at adding the credits to player cargo.

I suspect it went unnoticed for so long because the amount is usually small and easily covered up by the credits recovered from "CPU cores" in the fleet interaction dialog if you don't pay attention to the actual amounts. However, today someone posted this on Discord:

12
Suggestions / UI/text suggestions (intel, economy)
« on: January 26, 2020, 12:23:27 AM »
Important intel cleanup
Issue I see sometimes on Discord: newbie can't figure out how to get rid of already-completed intel items clogging the list in their intel screen. (Nexerelin makes it worse by adding certain events that are marked important)

Perhaps there should be a button at the top of the list when the Important tag is selected: "Remove X completed items"?

Clarifying how commodity supply/demand works
Replace some texts:

e.g. in the Colony Info screen's commodity tooltip, replace "Maximum demand" with "Demand level"
and "profitably exporting X units of <commodity>" with "profitably exporting <commodity> at level X"
and likewise for all similar texts in the game; e.g. accessibility tooltip reads "Same-faction imports and exports limited to level X"

This reduces the number of things that imply commodity supply/demand amounts are additive (e.g. 3 demand + 5 demand + 8 demand from different industries/colonies = 16 demand) when they really aren't at all.
(The other big thing that does this is market share/export income, which I think should also be changed but doing this has gameplay effects that need to be considered)

13
Suggestions / Fix ally fleets letting enemy go when joining battle
« on: January 03, 2020, 03:44:07 AM »
Recent complaint in Nexerelin thread:

I'm running into an annoying bug, a bug as I see it. Hegemony pickets are attacking Skathi. It has a low tech orbital station. When the pickets are engaged in battle, I click on them to join battle, but I keep getting the message that the orbital station is letting them go and I can only leave the dialogue. The pickets then fly around a bit but keep coming back to the station and the station is apparently letting them go each time I try to engage the pickets while they are engaged with the station.
This is indeed annoying when it happens.

Two things that could be done:
  • If the allies decide to let the enemies go, perhaps the player should have an option to pursue alone.
  • If the allies let the enemies go and player doesn't/can't pursue, the existing battle should break up (then the player can personally chase the enemy fleet(s) down on campaign layer, or they'll at least run away and go somewhere else). That's kind of what it means when the enemy fleet is allowed to leave, after all. (nvm, it already works this way in vanilla)

14
Bug Reports & Support (modded) / [0.9.1a] Admiral AI crash
« on: November 21, 2019, 03:46:48 AM »
From Nexerelin thread:

Got a c2d, not sure if it's related to Nex but it happened during a defense of one of my planets from a Hegemony invasion fleet so I figured I'd post it here. 

Code
4646281 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NullPointerException
java.lang.NullPointerException
at com.fs.starfarer.combat.CombatFleetManager$O0.getLocation(Unknown Source)
at com.fs.starfarer.combat.tasks.CombatTaskManager.computeEta(Unknown Source)
at com.fs.starfarer.combat.tasks.CombatTaskManager.fillTasks(Unknown Source)
at com.fs.starfarer.combat.tasks.CombatTaskManager.return(Unknown Source)
at com.fs.starfarer.combat.tasks.CombatTaskManager.reassignPlayerShipsOnly(Unknown Source)
at com.fs.starfarer.combat.tasks.CombatTaskManager.addTask(Unknown Source)
at com.fs.starfarer.combat.tasks.CombatTaskManager.addTask(Unknown Source)
at com.fs.starfarer.combat.ai.admiral.BaseBattleStrategy.?00000(Unknown Source)
at com.fs.starfarer.combat.ai.admiral.BaseBattleStrategy.?00000(Unknown Source)
at com.fs.starfarer.combat.ai.admiral.OoOO.?00000(Unknown Source)
at com.fs.starfarer.combat.ai.admiral.AdmiralAI.advance(Unknown Source)
at com.fs.starfarer.combat.CombatFleetManager.advance(Unknown Source)
at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
at com.fs.starfarer.combat.CombatState.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$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
4646397 [Thread-10] INFO  sound.oo0O  - Creating streaming player for music with id [faction_hegemony_encounter_02_hostile.ogg]
4646397 [Thread-10] INFO  sound.null  - Playing music with id [faction_hegemony_encounter_02_hostile.ogg]

This happened when I aided my star fortress against an invasion fleet, there were about 6 of them. When I won, I immediately engaged the remainders of the fleet, and the c2d happened. 

Current modlist:
Spoiler
"$$$_trailermoments",
  "Another Portrait Pack -ReWork-",
  "raccoonarms",
  "lw_autosave",
  "blackrock_driveyards",
  "aaCari UIl",
  "CombatAnalytics",
  "chatter",
  "timid_commissioned_hull_mods",
  "lw_radar",
  "lw_console",
  "istl_dam",
  "diableavionics",
  "DisassembleReassemble",
  "edshipyard",
  "gates_awakened",
  "HMI",
  "Imperium",
  "junk_pirates_release",
  "kadur_remnant",
  "lw_lazylib",
  "leadingPip",
  "ArkLeg",
  "luddenhance",
  "MagicLib",
  "nexerelin",
  "wyv_planetaryShieldAccessControl",
  "SCY",
  "shadow_ships",
  "swp",
  "bonomel_skilledup",
  "speedUp",
  "sun_starship_legends",
  "Sylphon_RnD",
  "tahlan",
  "THI",
  "underworld",
  "US",
  "vayrasector",
  "vayrashippack",
  "lw_version_checker",
  "toggleWeapons",
  "audio_plus",
  "shaderLib"
[close]

15
Suggestions / Legendary officers
« on: October 26, 2019, 06:46:48 AM »
A way to get some of the famous named characters in the lore into the game. Mods could add their own, too.
Recruiting a legendary officer would require the player to meet stringent conditions: completing a specific quest, having a commission if applicable, and having a high reputation with that faction.

Some proposed rules:
  • Legendary officers do not count towards the player's officer cap
  • Player can have only one LO at a time
  • LOs can level higher than regular officers, and perhaps also come with fleetwide skills
  • Story point stuff: LOs automatically have one or more skills (perhaps all) at elite level, and cannot have their personality changed

Pages: [1] 2 3 ... 9