Fractal Softworks Forum

Please login or register.

Login with username, password and session length

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] 4 5 ... 12
31
Suggestions / Text, UX, quest suggestions
« on: May 06, 2021, 06:14:05 AM »
- When a contact is listing the available missions, maybe add indents or bullet points to the mission texts, so it's easier to see where the list begins and ends.

(I currently just look at the dialog options to figure out the missions, but that's partly because of the above)


- When new text is added to the dialog text panel, the panel scrolls down to its new bottom. This is fine until more than one page is added at a time, in which case you have to scroll back up to the start of the added text (I think this happens a few times with the Academy quests). Suggestion: Make it not scroll down more than one page at a time.


- Can we have an option to change player portrait? Make the portrait in character screen clickable, which brings up the portrait picker.


EDIT [2021-05-17]

Suggestions for a certain story quest:
Spoiler
- The Hamatsu should come with one or more S-mods. Perhaps even a unique S-mod installed by Astraia. Partly for flavor, but also so there's an actual temptation to keep the Hamatsu.
As it stands, by the time I get around to completing Project Ziggurat, a slightly beat up Venture has no appeal to me whatsoever and getting 100k for it is a no-brainer.

- The Project Ziggurat surprise fleets are way, way too big and are an SP tax to dodge. Make them scale the current player fleet, maybe.

When I did the quest, I had three cruisers plus several destroyers (including a Harbinger) and quality frigates including two Tempests.
The rogue Knight had multiple Legions. The TT bounty hunter had four Dooms (and seven mod phase destroyers I wasn't familiar with), all with 2-3 S-mods. I wouldn't consider taking on either with a fleet twice as big as what I actually had, especially when I don't even get a bounty payment for it.
[close]

32
So I was looking into this bug.

Testing with no external mods (not even libraries). I added the following to CustomProductionContract.java (and set construction time to 1 day):
Code: java
	@Override
protected void endSuccess(InteractionDialogAPI dialog, Map<String, MemoryAPI> memoryMap) {
Global.getLogger(this.getClass()).info("Mission endSuccess");
super.endSuccess(dialog, memoryMap);
}

@Override
public void abort() {
Global.getLogger(this.getClass()).info("Mission being aborted, VariableSets to remove:");
for (Abortable curr : changes) {
if (curr instanceof VariableSet) {
VariableSet vs = (VariableSet)curr;
Global.getLogger(this.getClass()).info(String.format("  Key %s, remove %s, current memory value %s",
vs.key, vs.removeOnMissionOver, vs.memory.get(vs.key)));
}
}
super.abort();

Global.getLogger(this.getClass()).info("VariableSets remaining:");
for (Abortable curr : changes) {
if (curr instanceof VariableSet) {
VariableSet vs = (VariableSet)curr;
Global.getLogger(this.getClass()).info(String.format("  Key %s, remove %s, current memory value %s",
vs.key, vs.removeOnMissionOver, vs.memory.get(vs.key)));
}
}
}
but nothing appears in log after the production is delivered, and $cpc_ref remains in the contact's memory.

As a result, I suspect that each contact only offers one custom production contract in their lifetime.

33
When a planet has >=100% hazard, the hazard rating tooltip gives a technically correct value for penalty to population growth, albeit not including the market size multiplier.

When a planet has <100% hazard, it claims a no-longer-existing bonus to population growth. e.g.



Habitable and Mild Climate do give their own bonuses directly, but this doesn't add up to the stated value of 10.



The penalty is roughly correct (-5, times 2.5 size multiplier), although it doesn't note the habitable bonus.

34
All the entries in my playthrough log are using the same, text color.
I also had my mod add a PLTextEntry with story = true, but it doesn't use the story color either.

(On that note, maybe text entries should allow specifying arbitrary color?)

35
General Discussion / Concepts for skill picking revamp
« on: April 01, 2021, 12:14:50 AM »
(Not really advancing either of the suggestions I make here, just thinking out loud)

So I was thinking about this:
The leadership line has all the useful skills (for me) gated behind 2 levels of things that do really do anything for me or are so trivial it's not worth a skill point.
This could be improved by shuffling some of the skill pairs around so there is a path through to the later choices that isn't seen as a 'waste' by a player who isn't looking to do that one thing the game is now trying to encourage you to do.
This tbf is more of a 'me' issue, as I look at the lineup and ask myself "do I want to spend 2 points to be able to even consider getting what I want?"
And the answer is likely going to be no.

The industry line is the most egregious.
It is currently absolutely impossible for a player to get maximum colony skills and play with a junk fleet. Because one of the abilities from field repair totally invalidates the entire derelict contingent skill, and you can't get all the end skills without taking both.

I agree there's a feeling of having to take skills you don't want so you can access the skills you do want. (The Industry 4 issue is indeed a pretty wtf case)
This issue also occurred with the previous skill system, but that's not a reason to do it again.

There are a few issues at work here:
  • Some of the skill pairings are just two unremarkable or bad options (well, mostly this is Leadership 1). Can be fixed by buffing those specific skills, but this doesn't help the other issues:
  • Some of the skills that a particular playstyle or player goal calls for are gated behind other, only nominally related skills. For example: "What if I don't particularly care about cargo capacity or D-mods, I just want better colonies?"
  • Because the skills are balanced such that the right end of the row is stronger than the left end, there's incentive to focus on the right-end skills with officers (and especially AI cores).

Concept 1: Officer-style skill picking (allows skipping part of the row)
The first two skill pairs in a row can be selected at any time. The third pair requires having at least one skill in that aptitude (i.e. from one of the first two pairs). Fourth pair could require 1-2 existing skills, fifth pair could require 2-3 skills.

To double up in an existing pair, the minimum # of other skills is increased by 4 or 5. So picking both skills in pairs 1 and 2 requires already having 4-5 skills in the aptitude, while doubling up in pair 5 would need 6-8 existing skills depending on how we've set this up.

Downside: More complexity, it's got math and stuff.

Concept 2: (Almost) complete anarchy
First, balance the skills so that right end is not better than the left (actually we kind of want to do this in the first concept too).
Move some functions of existing fleetwide skills (like the +1 s-mod) to Elite tier if need be; if the idea of elite combat skills is to represent a super-skilled ship captain, well we should be able to be a hotshot super-engineer or administrator as well.

Now, remove the progress-along-a-row behavior completely. You can pick a skill from any pair at any time. Doubling up in a pair requires that all pairs have been picked once already, to preserve the "you can have one or the other, but only both if you're really specialized in this area" motif.


What I'm trying to do here is to keep the fundamental idea of "do you want to do this thing, or do you want to do this other, different thing?" while easing some of the restrictions on the player.

36


I've saved the game with Chatter 1.11.1 multiple times, but the "Last" column still lists it with the same version number as the one it was first saved with.

37
Suggestions / Weapon (esp. energy) availability
« on: March 28, 2021, 12:48:16 AM »
Right now weapons for sale are pretty scarce if you don't have access to the military submarket, especially with reduced availability of things on black market. Arms dealer's uselessness is getting fixed, but even afterwards they won't be reliably available.

Energy mounts in particular are absolutely ruined by this, since the only tier 0 energy weapons are Mining Laser (a bad joke) and Mining Blaster (niche).

Suggestions:
- Bar event selling decent surplus weapons (like the surplus ship event)
- Make PD laser available at tier 0, and possibly Tactical Laser, IR Pulse Laser, and/or Graviton Beam
- After reporting to Jangala in the tutorial quest, or at start when skipping tutorial, give the player a "care package" of some decent weapons (based on the ships the player has at this point) to help tide them over
- Something else?

38
Bug Reports & Support / [0.95a RC9] Carrier AI bugs
« on: March 27, 2021, 06:19:31 AM »
- Sometimes carriers still go on ENGAGE mode while en route to the front line (with the fighters still lingering around the carrier) and lose their zero-flux speed boost as a result. (This bug was around in 0.9.1)

- Sometimes carriers end up on the other end of the map from a battle, for no apparent reason:



(also saw a horizontal version with the carriers on the left and the battle on the right)

39
Example:

40
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

41
- 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

42
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?

43
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 org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

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;

mods = getModList(path.toString());


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
*/
public static List<ModEntry> getModList(String path)
{
Map<Integer, ModEntry> allMods = new HashMap<>();
List<ModEntry> modlist = new ArrayList<>();
try {
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 versionStr = "";
NodeList version = el.getElementsByTagName("versionInfo");
for (int j=0; j<version.getLength(); j++) {
Node versionNode = version.item(j);
if (versionNode.getNodeName().equals("string")) {
versionStr = versionNode.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, versionStr, 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);
} catch (Exception ex) {
throw new RuntimeException(ex);
}

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]

EDIT 2021-08-05: Updated source code for Starsector 0.95 (but not the linked application)

44
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).

45
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)

Pages: 1 2 [3] 4 5 ... 12