Fractal Softworks Forum

Please login or register.

Login with username, password and session length

Author Topic: [0.65.2a] rules.csv crash  (Read 1480 times)

Histidine

  • Admiral
  • *****
  • Posts: 4682
    • View Profile
    • GitHub profile
[0.65.2a] rules.csv crash
« on: April 28, 2015, 07:24:35 AM »

Suppose I have a dialog option that opens a core tab:
Code
OpenCoreTab INTEL $tradeMode

If I use this somewhere inappropriate (say the interaction dialogue for a relay, which has no market), I get stuck in the dialog with no options and no way out (outside of Esc in devmode):

Code
[Thread-5] WARN  com.fs.starfarer.campaign.rules.oOOO  - Problem with command of class com.fs.starfarer.api.impl.campaign.rulecmd.OpenCoreTab: Name is null
java.lang.NullPointerException: Name is null
at java.lang.Enum.valueOf(Unknown Source)
at com.fs.starfarer.api.campaign.CampaignUIAPI$CoreUITradeMode.valueOf(CampaignUIAPI.java:1)
at com.fs.starfarer.api.impl.campaign.rulecmd.OpenCoreTab.execute(OpenCoreTab.java:35)
at com.fs.starfarer.campaign.rules.oOOO.execute(Unknown Source)
at com.fs.starfarer.campaign.rules.O0OO.runScript(Unknown Source)
at com.fs.starfarer.api.impl.campaign.rulecmd.FireBest.applyRule(FireBest.java:97)
at com.fs.starfarer.api.impl.campaign.rulecmd.FireBest.execute(FireBest.java:47)
at com.fs.starfarer.api.impl.campaign.rulecmd.FireBest.fire(FireBest.java:53)
at com.fs.starfarer.api.impl.campaign.RuleBasedInteractionDialogPluginImpl.fireBest(RuleBasedInteractionDialogPluginImpl.java:110)
at com.fs.starfarer.api.impl.campaign.RuleBasedInteractionDialogPluginImpl.optionSelected(RuleBasedInteractionDialogPluginImpl.java:142)
at com.fs.starfarer.ui.D.O00O$1.o00000(Unknown Source)
at com.fs.starfarer.ui.D.super.actionPerformed(Unknown Source)
at com.fs.starfarer.ui.thisnew.super(Unknown Source)
at com.fs.starfarer.ui.H.processInput(Unknown Source)
at com.fs.starfarer.ui.V.o00000(Unknown Source)
at com.fs.starfarer.new.??o000(Unknown Source)
at com.fs.oOOO.oOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.?00000(Unknown Source)
at com.fs.starfarer.combat.D.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$2.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

It works if I remove the $tradeMode arg, but if I then click the cargo button:

Code
[Thread-5] ERROR com.fs.starfarer.combat.D  - java.lang.NullPointerException
java.lang.NullPointerException
at com.fs.starfarer.campaign.ui.newsuper.sizeChanged(Unknown Source)
at com.fs.starfarer.ui.K.setSize(Unknown Source)
at com.fs.starfarer.ui.o00O.setSize(Unknown Source)
at com.fs.starfarer.coreui.forsuper.sizeChanged(Unknown Source)
at com.fs.starfarer.ui.K.setSize(Unknown Source)
at com.fs.starfarer.ui.o00O.setSize(Unknown Source)
at com.fs.starfarer.ui.D.I$5.actionPerformed(Unknown Source)
at com.fs.starfarer.ui.thisnew.super(Unknown Source)
at com.fs.starfarer.ui.H.processInput(Unknown Source)
at com.fs.starfarer.ui.V.o00000(Unknown Source)
at com.fs.starfarer.new.??o000(Unknown Source)
at com.fs.oOOO.oOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.?00000(Unknown Source)
at com.fs.starfarer.combat.D.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$2.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
334331 [Thread-11] INFO  sound.O  - Creating streaming player for music with id [music-faction_generic_market_01_neutral.ogg]
334332 [Thread-11] INFO  sound.OooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  - Playing music with id [music-faction_generic_market_01_neutral.ogg]

Not an issue in vanilla at present, but this has caused at least two bugs in Nexerelin, including one I have no idea how to reproduce. Any way to solve?
Logged

Alex

  • Administrator
  • Admiral
  • *****
  • Posts: 24118
    • View Profile
Re: [0.65.2a] rules.csv crash
« Reply #1 on: April 28, 2015, 09:10:18 AM »

The first one is likely due to the $tradeMode variable not being set - it's got to be either OPEN or SNEAK. If defaults to OPEN if you omit it.

The second one, I just fixed up - when interacting with an entity, the core UI was expecting there to be a market, and was setting up to show a trade screen rather than a cargo screen. You can work around this for now by adding a temporary market to the entity if it doesn't have one, and removing it when you exit the dialog.

Something like:
Code: java
MarketAPI market = Global.getFactory().createMarket("fake_market", entity.getName(), 0);
market.setFactionId(entity.getFaction().getId());
market.addSubmarket(Submarkets.SUBMARKET_STORAGE);
((StoragePlugin)market.getSubmarket(Submarkets.SUBMARKET_STORAGE).getPlugin()).setPlayerPaidToUnlock(true);
entity.setMarket(market);

That still won't show the cargo screen, though - it should show a market interaction with the entity, but at least it won't crach. The fix I just put in makes it show the cargo screen.
Logged