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: Skills and Story Points (07/08/19)

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 ... 8
1
Suggestions / Split escort orders
« on: July 12, 2019, 08:36:32 PM »
Recently an experienced player complained on Discord about a case where a Lasher escorting an unshielded mod carrier failed to protect it from a unidirectional threat and let it die instead. The old escort order might have prevented this.

Other people noted that as it is, whether in 0.8 or 0.9, the Escort order's behavior only covers one use case for "ship A follows ship B", when multiple such broad cases exist. There's also the issue of the tooltip not being able to communicate all the subtleties and not-so-subtleties of its behavior (again a problem with both old and new Escort).

On the other hand, we also don't want to increase the complexity the player is presented with more than necessary.

On the third hand, not having specific options to "do this particular thing" also adds complexity except in a worse way: it makes the player employ weird workarounds to get the behavior they want (one example mentioned was using an Escort order to keep ships together till they encounter an enemy, then cancelling it to let them fight independently).


To that end, I think the following would help:

1) Split Escort order into three orders, covering the broad use cases:
  • Escort: Focus on covering target's flanks and rear, but default to attacking if this is not needed. Like the current behavior but with some tweaks.
  • Screen: Previous version's escort behavior; allow the screener to take shots for the screenee. Should be default assignment when the target ship is civilian or a non-combat carrier.
  • Assist/Accompany: Follow target ship around on a short leash and perhaps try to attack its selected target, but otherwise act independently.
2) Instead of right-clicking instantly applying the default command, make it open a context menu with the available commands.
(This would also help with the thing when I try to give a combat carrier an Eliminate order but it gets Fighter Strike instead and I have to manually change it)

3) (Maybe) Remove heavy escort, because it just clutters the UI right now. I've never encountered a case where any vanilla or mod ship needs that much stern-covering, and if it does the player can just manually assign more ships to the medium escort.

4) Regardless of whether any of the above ideas are implemented, Escort order should be added to fleet command tutorial.

2
Suggestions / My 0.9(.1) suggestions
« on: July 02, 2019, 05:14:56 AM »
Spaceport
I argued against someone else's ridiculous rationale for it in another thread, but there is a balance problem with the degree to which a spaceport is a market's Achilles heel. Among other things, when you have a choice to disrupt
1) Spaceport
2) Literally any other structure or industry on the market

then 1 is almost always the objectively superior choice, because it is effectively equivalent to disrupting all the other industries as well; they can neither import needed raw materials nor export their output.
In fact, raiding the spaceport can be cheaper and better for lowering a market's defenses than using a tactical bombardment (especially when preparing for an invasion in Nexerelin, where you'd like to be able to use the defense buildings afterwards). This is especially true given the severity of commodity deficits on the military base/orbital station/ground defenses' stability bonus: 1 point shortage = -1 loss of bonus, rather than being pro-rated or such.

I'd recommend lowering the -100% no-spaceport penalty to -50%, which is what I've set it to in Nex. The spaceport is still perhaps a more attractive target than it should be, but its disruption isn't utterly debilitating to the affected market, as it can still import a small amount of commodities in-faction.

Luddic Church, independents' heavy industry
(mentioned here before but I think it went unnoticed)
I get that they needed heavy industry to enable the player to raid for their blueprints, and to make their ship quality not abysmal. But was it really desirable to give them both an Orbital Works with corrupted nanoforge? That puts them on par with Tri-Tachyon (which is supposed to be the second-tier industrial power in the Sector). I'd either take away the nanoforge or downgrade the industry to Heavy Industry.

Small synchrotron cores
Poorly thought out idea:

Synchrotron cores are important for the player to be able to access, but may be a bit too common as a jackpot item at present. Also, unlike nanoforges, there's no granularity between no bonus item and the +3 bonus item.
I was thinking we could have a "synchrotron sub-core" item that gives a +1 bonus, and when you have a number (3-5) you can combine them into the full-scale core. The full core could be made very rare in exploration, but you could still raid for one, or just accumulate sub-cores in the course of normal exploration.

Ships on open market and black market
People have pointed out the narratively improbable degree to which you can find military-grade ships up to battleships, often pristine or nearly so, outside the military submarket (including on stability 10 black markets). (famous illustration here)

It's nice to be able to buy good ships, but the current state may be taking it too far. Among other things, commissions become meaningless for acquiring ships (since everything in the military submarket can be procured elsewhere for a fraction of the effort) and serve largely as a source of cash income.

Idea: ship availability on open market is limited to lower-FP ships within that size class, adjusted by number of D-mods and things like Civ-grade Hull. So pristine Falcons or degraded Auroras might infrequently show up, but not stuff like intact Dooms. For black markets, the limit would work similarly but be tied to local stability (lower stability = more chance of high-end military stuff "disappearing" from official inventories).

Hegemony inspection and changing hostility state
There's an issue involving the following scenario:
- Hegemony is hostile to player
- Hegemony launches inspection, action is fixed at "resist" so player takes no action
- Player stops being hostile to Hegemony
- Action now defaults to "cooperate"
- Player doesn't notice until inspection comes and goes, "WTF my cores!!!"

Not sure how to solve this, perhaps the default hostile state should be remembered when the event is started while Hegemony is hostile?

Core world procgen planets should be less good
Otherwise you have weird cases where factions haven't colonized highly attractive locations in their own systems. This also applies to Duzahk, which often has a terran-grade world in it that the player would have to be nuts not to settle at first opportunity.

DTC/ITU nag
There are still some revealed cases (and who knows how many undetected ones) where new players don't know that Dedicated Targeting Core/Integrated Targting Unit are almost mandatory for cruisers and capitals. I think the only place this is even explained are in the hullmod's tooltips, which you certainly can't count on people reading.

Idea: If you refit a cruiser or capital and it doesn't have DTC/ITU, display a help popup explaining that they probably should be fitted outside of certain specialized builds (like how there's a popup if you've changed the weapon loadout without changing weapon groups). Then we just have to hope the player doesn't close it without reading.

Pirate Activity condition tooltip should display actual base's location if known
Currently it just always says "The pirates most likely have a base somewhere relatively nearby." (even when the base is not actually nearby, as per the intel text)

3
In this screenshot, I earlier had an Eliminate order on the destroyer indicated by the red arrow. I cancelled it, and everyone fell back to the Defend order, except the SO Enforcer (XIV) shown which continues pursuing the target. This apparently persisted until the target was destroyed or retreated (didn't see which).
Officer personality was Aggressive

I've encountered at least one other case of a ship ignoring orders which might have been this bug, but I don't remember for certain.

4
Codex hulls
Codex variants (correct)
Bounty preview

The codex hull issue is probably unavoidable at present given how modules are part of the variant, but it may be something the future codex redesign wants to deal with. One idea: take the first goal variant found, strip its weapons, fighters and hullmods, and display that.

For the bounty one, is it because the fleet hasn't been inflated yet?

5
Modding / Bug: Non-economy market cloning [0.9.1a RC8]
« on: June 05, 2019, 04:21:33 AM »
If you store a not-in-economy market as a variable anywhere, it gets "cloned" on save, so now there are two markets with the same ID.

To see this:
- Start new game
- Go to Duzahk, interact with Druj
- With interaction dialog open, enter in console:
runcode Global.getSector().getPersistentData().put("random_string_123", Global.getSector().getCampaignUI().getCurrentInteractionDialog().getInteractionTarget().getMarket());
- Save copy

The first save's descriptor.xml has one <market> with id market_duzahk2, the second has two. The new entry is 69 lines log (while the original one is 15 lines), containing additional tags like market size, demandPriceMod, supplyPriceMod, isPlanetConditionMarketOnly, playerOwned, ...

I encountered this bug while making an NPC colonization fleet event; if the player saves the game after the event starts but before it completes, when the colonization occurs the planet will still appear to be uncolonized when the player interacts with it (because the "cloned" market was added to the economy while the original was not).
I'm currently trying to work around this by not storing any references to the target not-in-economy market in the intel class, instead getting it from the planet entity each time using SectorEntityToken.getMarket().

6
Seen with Hegemony inspection event targeting a hyperspace market (Prism Freeport in Nexerelin):


2926473 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain - java.lang.ClassCastException: com.fs.starfarer.campaign.Hyperspace cannot be cast to com.fs.starfarer.api.campaign.StarSystemAPI
java.lang.ClassCastException: com.fs.starfarer.campaign.Hyperspace cannot be cast to com.fs.starfarer.api.campaign.StarSystemAPI
at com.fs.starfarer.api.impl.campaign.fleets.RouteLocationCalculator.findJumpPoint ToUse(RouteLocationCalculator.java:425)
at com.fs.starfarer.api.impl.campaign.intel.inspection.HegemonyInspectionIntel.<init>(HegemonyInspectionIntel.java:113)
at com.fs.starfarer.api.impl.campaign.intel.inspection.HegemonyInspectionManager.c reateInspection(HegemonyInspectionManager.java:126)
at com.fs.starfarer.api.impl.campaign.intel.inspection.HegemonyInspectionManager.c reateInspection(HegemonyInspectionManager.java:93)
at com.fs.starfarer.api.impl.campaign.intel.inspection.HegemonyInspectionManager.c heckInspection(HegemonyInspectionManager.java:86)
at exerelin.campaign.intel.Nex_HegemonyInspectionManager.checkInspection(Nex_HegemonyInspectionManager.java:22)
at com.fs.starfarer.api.impl.campaign.intel.inspection.HegemonyInspectionManager.a dvance(HegemonyInspectionManager.java:68)
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$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

7
I got a deterioration warning for Asharu. This was followed by the actual decivilization in 1 week (according to the intel objects' timestamps).
A few other markets in my sector also only got 2 week warnings:
- Garnir warned 24 Jul, decivilized 5 Aug
- Lost Astropolis warned 30 Dec, decivilized 15 Jan
- Tibicena warned 25 Apr, decivilized 5 May

I then colonized Asharu. The new colony re-decivilized within 3 days or less.

I can upload the save if needed (only non-utility mod is Nexerelin).

8
Removable admins
- Start a new game, turn on devmode
- Dock at Jangala, go to colony info
- Click on admin's portrait
- Click on self to attempt to assign player character as admin (this action is correctly blocked)
- Press Escape
- Jangala no longer has an admin

Crash
- Dock at Culann (with devmode on), go to colony info
- Click on admin's portrait, get a CTD

Code
89127 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NullPointerException
java.lang.NullPointerException
at com.fs.starfarer.campaign.command.M.sizeChanged(Unknown Source)
at com.fs.starfarer.ui.L.setSize(Unknown Source)
at com.fs.starfarer.ui.interface.setSize(Unknown Source)
at com.fs.starfarer.ui.impl.K.setSize(Unknown Source)
at com.fs.starfarer.ui.impl.K.sizeToInner(Unknown Source)
at com.fs.starfarer.campaign.command.M.<init>(Unknown Source)
at com.fs.starfarer.campaign.ui.marketinfo.r.actionPerformed(Unknown Source)
at com.fs.starfarer.ui.k.buttonPressed(Unknown Source)
at com.fs.starfarer.ui.oooO.new(Unknown Source)
at com.fs.starfarer.ui.oooO.processInput(Unknown Source)
at com.fs.starfarer.ui.Stringsuper.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)

9
- Start a game with Nexerelin
- Assign Sindria to player faction (console: setmarketowner sindria player)
- Lion's Guard HQ has disappeared; start building some new industries to fill the 12 industry limit
- Assign Sindria to Sindrian Diktat again (setmarketowner sindria sindrian_diktat)
- Lion's Guard HQ reappears; Sindria now has 13 industries, one of which is not displayed

Not sure this would be appropriate for all the desired use cases, but: Perhaps hidden industries/structures should still be displayed and count towards the cap, with the image greyed out and the tooltip explaining that the structure is inactive (and perhaps why)?

10
Bug Reports & Support / Blog post links broken
« on: March 29, 2019, 07:55:04 AM »
Something about the blog changed and now the post URLs in the Blog Posts subforum no longer work (need the dates removed)
e.g. http://fractalsoftworks.com/2018/10/16/portrait-hegemonization/
now needs to be http://fractalsoftworks.com/portrait-hegemonization/

11
Suggestions / Fix officer auto assign
« on: March 07, 2019, 05:49:59 AM »
The current implementation of idle officer auto-assign has some serious limitations, to the point where correcting its output would probably take the player longer than just manually assigning officers to begin with:

- It apparently makes no attempt to assign carrier officers specifically to carriers (nor, presumably, officers with Missile Specialization to ships with missiles — but at this point I'll take what I can get)
- Assignment prioritizes ships with the highest fleet point value — even civilian ships, so e.g. a Prometheus is picked before any player-accessible combat destroyer except Harbinger.

Could this be fixed?

12
A fleet with MEMORY_KEY_MAKE_AGGRESSIVE and MEMORY_KEY_MAKE_HOSTILE in its memory will always attempt to fight the player in the fleet interaction dialog... even if all they have left are civilian ships, or worse, mothballed civilian ships. Possibly only one of those memory keys is needed, I didn't test.

Minimal save (no mods required to load). Touch the nearest Persean convoy to see the issue.
Memory flags were applied to fleet with the following code in console:
Code: java
runcode Global.getSector().getCampaignUI().getCurrentInteractionDialog().getInteractionTarget().getMemoryWithoutUpdate().set("$cfai_makeAggressive", true);
Global.getSector().getCampaignUI().getCurrentInteractionDialog().getInteractionTarget().getMemoryWithoutUpdate().set("$cfai_makeHostile", true);

13
- Player plays a game with MyMod, which adds a fighter X (might also work with a ship or weapon)
- Later update of MyMod removes X
- Player downloads the updated mod and loads their previous save, it still runs (probably because of how inflater works?)
- ...but factions still think they know the no-longer-existent X, which causes crashes when something picks a "known" fighter and to spawn it, e.g. when docking at a market:

Example error:
Code
4200064 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NullPointerException
java.lang.NullPointerException
    at com.fs.starfarer.api.impl.campaign.submarkets.BaseSubmarketPlugin.addFighters(BaseSubmarketPlugin.java:323)
    at exerelin.campaign.submarkets.Nex_OpenMarketPlugin.updateCargoPrePlayerInteraction(Nex_OpenMarketPlugin.java:22)
    at com.fs.starfarer.campaign.ui.o0OO.<init>(Unknown Source)
    at com.fs.starfarer.coreui.O00o.<init>(Unknown Source)
    at com.fs.starfarer.coreui.O00o.<init>(Unknown Source)
    at com.fs.starfarer.ui.newui.J$5.actionPerformed(Unknown Source)
    at com.fs.starfarer.ui.newui.J.setCurrentTab(Unknown Source)
    at com.fs.starfarer.ui.newui.J.setCurrentTab(Unknown Source)
    at com.fs.starfarer.ui.newui.U.showCoreInternal(Unknown Source)
    at com.fs.starfarer.ui.newui.U.showCore(Unknown Source)
    at com.fs.starfarer.api.impl.campaign.rulecmd.OpenCoreTab.execute(OpenCoreTab.java:40)
    at com.fs.starfarer.ui.newui.oOOO.actionPerformed(Unknown Source)
    at com.fs.starfarer.ui.OoO0.buttonPressed(Unknown Source)
    at com.fs.starfarer.ui.oooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.?00000(Unknown Source)
    at com.fs.starfarer.ui.oooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.processInput(Unknown Source)
    at com.fs.starfarer.ui.OoO0.processInputImpl(Unknown Source)
    at com.fs.starfarer.ui.Q.processInput(Unknown Source)
    at com.fs.starfarer.ui.donew.dispatchEventsToChildren(Unknown Source)
    at com.fs.starfarer.ui.donew.processInputImpl(Unknown Source)

Perhaps on game load Starsector should validate each faction's known blueprints and remove anything that doesn't exist in the game?
(Or return to main menu with the load game error, if we expect a different crash down the road and it's better that the player doesn't keep trying to use this save)

14
Jangala's midline Star Fortress lost some modules in an autoresolve battle, underwent repairs, and ended up having armor modules without the corresponding gun modules having been replaced.

Screenshot
(I had a save, but deleted it by mistake)

Can modules be nested? If not, perhaps each sub-module in the variant could have a "requires module ID" tag, and if that module isn't present, don't spawn this one either.

15
Suggestions / More faction customization options
« on: January 31, 2019, 05:06:44 PM »
Some options for faction customization options that I'd like, a couple of which have already been brought up elsewhere:

- Most important: faction short name/entity prefix input
(mostly to avoid text bloat issues like the following)


- Faction color picker, either an RGB wheel/slider or just from a list of preset colors
- Wilder: faction secondary color setting, secondary segment count

- Just for fun: Get all the ship name sets available in the current game (including mods) and let the player enable the ones they want
- On that note, it'd be nice if the ship refit screen had a "generate" option for the ship name that uses the currently specified ship prefix and name sets

Pages: [1] 2 3 ... 8