Fractal Softworks Forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

Starsector 0.97a is out! (02/02/24); New blog post: Simulator Enhancements (03/13/24)

Author Topic: Salvage problem  (Read 1779 times)

Originem

  • Purple Principle
  • Captain
  • ****
  • Posts: 430
  • Dancing like a boss.
    • View Profile
Salvage problem
« on: February 08, 2019, 12:35:18 AM »

Code
136859 [Thread-4] WARN  com.fs.starfarer.campaign.rules.A  - Problem with command of class com.fs.starfarer.api.impl.campaign.rulecmd.salvage.SalvageSpecialInteraction: null
java.lang.NullPointerException
at com.fs.starfarer.campaign.fleet.FleetMember.<init>(Unknown Source)
at com.fs.starfarer.campaign.CampaignEngine.createFleetMember(Unknown Source)
at com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial.addMember(ShipRecoverySpecial.java:248)
at com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial.init(ShipRecoverySpecial.java:160)
at com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial.init(ShipRecoverySpecial.java:151)
at com.fs.starfarer.api.impl.campaign.rulecmd.salvage.SalvageSpecialInteraction$SalvageSpecialDialogPlugin.init(SalvageSpecialInteraction.java:57)
at com.fs.starfarer.api.impl.campaign.rulecmd.salvage.SalvageSpecialInteraction.execute(SalvageSpecialInteraction.java:165)
at com.fs.starfarer.campaign.rules.A.execute(Unknown Source)
at com.fs.starfarer.campaign.rules.Object.runScript(Unknown Source)
at com.fs.starfarer.api.impl.campaign.rulecmd.FireBest.applyRule(FireBest.java:98)
at com.fs.starfarer.api.impl.campaign.rulecmd.FireBest.execute(FireBest.java:47)
at com.fs.starfarer.campaign.rules.A.execute(Unknown Source)
at com.fs.starfarer.campaign.rules.Object.runScript(Unknown Source)
at com.fs.starfarer.api.impl.campaign.rulecmd.FireBest.applyRule(FireBest.java:98)
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:176)
at com.fs.starfarer.api.impl.campaign.RuleBasedInteractionDialogPluginImpl.optionSelected(RuleBasedInteractionDialogPluginImpl.java:208)
at com.fs.starfarer.ui.newui.U$1.super(Unknown Source)
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)
at com.fs.starfarer.ui.newui.oOOO.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)
at com.fs.starfarer.ui.while.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.newui.U.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)
at com.fs.starfarer.ui.Q.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)

The fleet is generated by CreateEmptyFleet and AddFleetMember.

Code
    public static CampaignFleetAPI generateImmortalLightFleet(String fleetName, int maxShipAmounts) {
//        CampaignFleetAPI fleet = Global.getFactory().createEmptyFleet("immortallight", fleetName, true);
        CampaignFleetAPI fleet = FleetFactoryV3.createEmptyFleet("immortallight", FleetTypes.MERC_ARMADA, null);
        fleet.setName(fleetName);
        Random random = new Random();
        //????????????
        float extraPtsFactor = 1f;
        //?????????
        float commanderLevel = OriMisc.getPlayerLevel();
        if (commanderLevel <= 10f) {
            extraPtsFactor *= 0.8f;
        } else if (commanderLevel <= 20f) {
            extraPtsFactor *= 1.0f;
        } else if (commanderLevel <= 30f) {
            extraPtsFactor *= 1.2f;
        } else if (commanderLevel <= 40f) {
            extraPtsFactor *= 1.4f;
        } else {
            extraPtsFactor *= 1.6f;
        }

        float cycleFactor = (float) Math.sqrt((Global.getSector().getClock().getCycle() - 206f) * 0.5f);
        cycleFactor = cycleFactor < 1f ? 1f : cycleFactor;

        extraPtsFactor *= cycleFactor;

        //????
        int pts = Math.round(extraPtsFactor * maxShipAmounts * (random.nextFloat() * 0.25f + 0.75f));
        //???
        for (int i = 0; i < pts; i++) {
            FleetMemberAPI member = Global.getFactory().createFleetMember(FleetMemberType.SHIP, IL_FLEETMEMBER_PICKER.pick());
            fleet.getFleetData().addFleetMember(member);
            member.getRepairTracker().setCR(1f);
            VariantUtils.addPermaMod(member, "IL_isomery");
        }
        int maxPts = pts * 12;
        FleetParamsV3 params = new FleetParamsV3(
                null,
                null,
                null,
                1f,
                FleetTypes.MERC_ARMADA,
                maxPts,
                0f,
                0f,
                0f,
                0f,
                0f,
                0f);
        params.officerNumberBonus = (int) (4 * extraPtsFactor);
        params.officerLevelBonus = (int) (5 * extraPtsFactor);
        FleetFactoryV3.addCommanderAndOfficers(fleet, params, random);

        fleet.getStats().getFleetwideMaxBurnMod().modifyFlat("IL", 6f);

        DropData dropData = new DropData();
        dropData.group = "ilfleet";
        dropData.chances = 4;
        fleet.addDropRandom(dropData);

        fleet.getFleetData().syncIfNeeded();
        try {
            fleet.getFleetData().sort();
        } catch (Exception ignored) {

        }
        fleet.forceSync();
        return fleet;
    }
Logged
My mods


Alex

  • Administrator
  • Admiral
  • *****
  • Posts: 23986
    • View Profile
Re: Salvage problem
« Reply #1 on: February 08, 2019, 07:43:38 AM »

What were you doing in-game when this happened? Scavenging through a debris field? If so, then this should be fixed for the next release.
Logged

Originem

  • Purple Principle
  • Captain
  • ****
  • Posts: 430
  • Dancing like a boss.
    • View Profile
Re: Salvage problem
« Reply #2 on: February 08, 2019, 11:40:45 PM »

What were you doing in-game when this happened? Scavenging through a debris field? If so, then this should be fixed for the next release.
Scavenging through a debris field which is generated after a battle.
The fleets do not have inflater, and the problem diappeared after I set a inflater for them.(my scripts which was posted in the Modding section)
Logged
My mods


Alex

  • Administrator
  • Admiral
  • *****
  • Posts: 23986
    • View Profile
Re: Salvage problem
« Reply #3 on: February 09, 2019, 08:36:04 AM »

Hmm, interesting - I think it could still happen when an inflater is present, but in any case, this should be fixed.
Logged

Originem

  • Purple Principle
  • Captain
  • ****
  • Posts: 430
  • Dancing like a boss.
    • View Profile
Re: Salvage problem
« Reply #4 on: February 11, 2019, 06:24:15 AM »

Hmm, interesting - I think it could still happen when an inflater is present, but in any case, this should be fixed.
yep, give it a inflater, then the problem disappeared.
Logged
My mods