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)

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.

Messages - JAL28

Pages: [1] 2 3 ... 15
1
Post the actual line that has the NPE, for starters.
Nex's Omega weapon offer uses a cargo picker dialog, so that much should work fine.
It’s not really a conventional NPE per se. The game doesn’t crash, it and the rule trigger perfectly fine. Rather, instead of opening the window, it just shows a red NullPointerException on the interaction screen. So I dunno if log will show a relevant error message(I’ll check later anyways jus to be sure though).

(EDIT: When I checked logs, there was in fact a 'crash log'; a warn that says that a null occured on line 89 of the aforemention pasted code. Not sure why that happened though.)
(EDIT2: Upon further inspection and testing, I realised the null was occurring when I attempted to put ids of weapons into "allowedweaponslist". Not really sure why that's happening, I assume it isn't allowed somehow? And how do I fix it, because I want to specifically limit the weapons one can trade to only a few weapon ids.)

2
Does anyone know why this might not work? Ideally, this is a modification of the AI Core handover interaction in vanilla, but instead of cores, it's for handing over weapons. However, when I attempt to initiate it, instead the game just gives me an NPE. Is it because CargoPickerListener/showCargoPickerDialog doesn't work with weapons? Or something else? And how can I fix it?
Spoiler
public class DE_WeaponTradeTab extends BaseCommandPlugin {
   
   protected CampaignFleetAPI playerFleet;
   protected SectorEntityToken entity;
   protected FactionAPI playerFaction;
   protected FactionAPI entityFaction;
   protected TextPanelAPI text;
   protected OptionPanelAPI options;
   protected CargoAPI playerCargo;
   protected MemoryAPI memory;
   protected InteractionDialogAPI dialog;
   protected Map<String, MemoryAPI> memoryMap;
   protected PersonAPI person;
   protected FactionAPI faction;
   protected List<String> allowedweaponslist;
   protected float count;
   protected float reqcount;
   protected float overflowcount;
   protected float omegacap;
   protected boolean isomega;
   
   public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {

      this.dialog = dialog;
      this.memoryMap = memoryMap;

      String command = params.get(0).getString(memoryMap);
      if (command == null) return false;

      memory = getEntityMemory(memoryMap);

      entity = dialog.getInteractionTarget();
      text = dialog.getTextPanel();
      options = dialog.getOptionPanel();

      playerFleet = Global.getSector().getPlayerFleet();
      playerCargo = playerFleet.getCargo();

      playerFaction = Global.getSector().getPlayerFaction();
      entityFaction = entity.getFaction();

      person = dialog.getInteractionTarget().getActivePerson();
      faction = person.getFaction();

      if (command.equals("selectHegemonyWeapons")) {
         allowedweaponslist.add("lightneedler");
         allowedweaponslist.add("hveldriver");
         allowedweaponslist.add("heavymauler");
         allowedweaponslist.add("heavyneedler");
         allowedweaponslist.add("gauss");
         allowedweaponslist.add("multineedler");
         reqcount = memory.getInt("$Hegemonyweaponamount");
         selectWeapons();
      } else if (command.equals("selectPLWeapons")) {
         allowedweaponslist.add("gorgon");
         allowedweaponslist.add("gorgonpod");
         allowedweaponslist.add("gazer");
         allowedweaponslist.add("gazerpod");
         allowedweaponslist.add("dragon");
         allowedweaponslist.add("dragonpod");
         allowedweaponslist.add("hydra");
         reqcount = memory.getInt("$PLweaponamount");
         selectWeapons();
      } else if (command.equals("selectTTWeapons")) {
         allowedweaponslist.add("amblaster");
         allowedweaponslist.add("heavyblaster");
         allowedweaponslist.add("heavyburst");
         allowedweaponslist.add("ionpulser");
         allowedweaponslist.add("ionbeam");
         allowedweaponslist.add("plasma");
         allowedweaponslist.add("guardian");
         allowedweaponslist.add("tachyonlance");
         reqcount = memory.getInt("$TTweaponamount");
         selectWeapons();
      } else if (command.equals("selectOmegaWeapons")) {
         allowedweaponslist.add("minipulser");
         allowedweaponslist.add("shockrepeater");
         allowedweaponslist.add("riftlance");
         allowedweaponslist.add("riftbeam");
         allowedweaponslist.add("cryoflux");
         allowedweaponslist.add("cryoblaster");
         allowedweaponslist.add("disintegrator");
         allowedweaponslist.add("riftcascade");
         allowedweaponslist.add("vpdriver");
         allowedweaponslist.add("realitydisruptor");
         allowedweaponslist.add("amsrm");
         allowedweaponslist.add("resonatormrm");
         allowedweaponslist.add("rifttorpedo");
         reqcount = memory.getInt("$omegaweaponamount");
         omegacap = 2.0f;
         isomega = true;
         selectWeapons();
      }
      return true;
   }

   /*protected boolean personCanAcceptCores() {
      if (person == null || !buysAICores) return false;
      
      return Ranks.POST_BASE_COMMANDER.equals(person.getPostId()) ||
            Ranks.POST_STATION_COMMANDER.equals(person.getPostId()) ||
            Ranks.POST_ADMINISTRATOR.equals(person.getPostId()) ||
            Ranks.POST_OUTPOST_COMMANDER.equals(person.getPostId());
   }*/

   protected void selectWeapons() {
      CargoAPI copy = Global.getFactory().createCargo(false);
      //copy.addAll(cargo);
      //copy.setOrigSource(playerCargo);
      for (CargoStackAPI stack : playerCargo.getStacksCopy()) {
         WeaponSpecAPI spec = stack.getWeaponSpecIfWeapon();
         if (spec != null && allowedweaponslist.contains(spec.getWeaponId())) {//compare from a list and add anything inside
            copy.addFromStack(stack);
         }
      }
      copy.sort();

      final float width = 310f;
      dialog.showCargoPickerDialog("Select weapons to turn in", "Confirm", "Cancel", true, width, copy, new CargoPickerListener() {
         public void pickedCargo(CargoAPI cargo) {
            if (cargo.isEmpty()) {
               cancelledCargoSelection();
               return;
            }
            
            cargo.sort();
            for (CargoStackAPI stack : cargo.getStacksCopy()) {
               float canproceed = computeCountValue(cargo);
               if (!isomega) {
                  if (canproceed >= memory.getInt("$Hegemonyweaponamount")) {
                     //playerCargo.removeItems(stack.getType(), stack.getData(), stack.getSize());
                     playerCargo.removeWeapons(stack.getWeaponSpecIfWeapon().getWeaponId(), (int) stack.getSize());
                     if (stack.isWeaponStack()) { // should be always, but just in case
                        int num = (int) stack.getSize();
                        AddRemoveCommodity.addCommodityLossText(stack.getCommodityId(), num, text);
                        allowedweaponslist.clear();
                  /*String key = "$turnedIn_" + stack.getCommodityId();
                  int turnedIn = faction.getMemoryWithoutUpdate().getInt(key);
                  faction.getMemoryWithoutUpdate().set(key, turnedIn + num);

                  // Also, total of all cores! -dgb
                  String key2 = "$turnedIn_allCores";
                  int turnedIn2 = faction.getMemoryWithoutUpdate().getInt(key2);
                  faction.getMemoryWithoutUpdate().set(key2, turnedIn2 + num);*/
                     }
                  }
               } else {
                  if (canproceed >= memory.getInt("$Omegaweaponamount")) {
                     //playerCargo.removeItems(stack.getType(), stack.getData(), stack.getSize());
                     playerCargo.removeWeapons(stack.getWeaponSpecIfWeapon().getWeaponId(), (int) stack.getSize());
                     if (stack.isWeaponStack()) { // should be always, but just in case
                        int num = (int) stack.getSize();
                        AddRemoveCommodity.addCommodityLossText(stack.getCommodityId(), num, text);
                        allowedweaponslist.clear();
                     }
                  }
               }
            }

            float repChange = computeOverflowReputationValue(cargo);
            if (repChange >= 1f) {
               CustomRepImpact impact = new CustomRepImpact();
               impact.delta = repChange * 0.01f;
               Global.getSector().adjustPlayerReputation(
                     new RepActionEnvelope(RepActions.CUSTOM, impact,
                                      null, text, true),
                                      faction.getId());

               impact.delta *= 0.25f;
               if (impact.delta >= 0.01f) {
                  Global.getSector().adjustPlayerReputation(
                        new RepActionEnvelope(RepActions.CUSTOM, impact,
                                         null, text, true),
                                         person);
               }
            }
            FireBest.fire(null, dialog, memoryMap, "WeaponsTurnedIn");
         }
         public void cancelledCargoSelection() {
         }

         public void recreateTextPanel(TooltipMakerAPI panel, CargoAPI cargo, CargoStackAPI pickedUp, boolean pickedUpFromSource, CargoAPI combined) {

            //float bounty = computeCoreCreditValue(combined);
            //float repChange = computeCoreReputationValue(combined);

            float pad = 3f;
            float small = 5f;
            float opad = 10f;

            panel.setParaFontOrbitron();
            panel.addPara(Misc.ucFirst(faction.getDisplayName()), faction.getBaseUIColor(), 1f);
            //panel.addTitle(Misc.ucFirst(faction.getDisplayName()), faction.getBaseUIColor());
            //panel.addPara(faction.getDisplayNameLong(), faction.getBaseUIColor(), opad);
            //panel.addPara(faction.getDisplayName() + " (" + entity.getMarket().getName() + ")", faction.getBaseUIColor(), opad);
            panel.setParaFontDefault();

            panel.addImage(faction.getLogo(), width * 1f, 3f);
            panel.addPara("Giving Lucanus an excess amount of weapons will raise additional reputation with the Sindrian Diktat up to a maximum of 15, or 25 for Omega weapons.", opad);
            panel.beginGridFlipped(width, 1, 40f, 10f);
            //panel.beginGrid(150f, 1);
            panel.addGrid(pad);
         }
      });
   }

   protected float computeCountValue(CargoAPI cargo) {
      float count = 0;
      for (CargoStackAPI stack : cargo.getStacksCopy()) {
         WeaponSpecAPI spec = stack.getWeaponSpecIfWeapon();
         if (allowedweaponslist.contains(spec.getWeaponId())) {
            if (spec != null && spec.getSize().equals(WeaponAPI.WeaponSize.SMALL)) {
            count += 1 * stack.getSize();
            } else if (spec != null && spec.getSize().equals(WeaponAPI.WeaponSize.MEDIUM)) {
               count += 2 * stack.getSize();
            } else if (spec != null && spec.getSize().equals(WeaponAPI.WeaponSize.LARGE)) {
               count += 3 * stack.getSize();
            }
         }
      }
      return count;
   }

   protected float computeOverflowReputationValue(CargoAPI cargo) {
      float rep = 0;
      if (!isomega) {
         if (count > memory.getInt("$Hegemonyweaponamount")) {
            overflowcount = count - memory.getInt("$Hegemonyweaponamount");
            rep += overflowcount * omegacap;
            if (rep >= 15) { // cap the amount of rep so you cant farm lucanus for ez rep
               rep = 15 * omegacap;
            }
         }
      } else {
         if (count > memory.getInt("$Omegaweaponamount")) {
            overflowcount = count - memory.getInt("$Omegaweaponamount");
            rep += overflowcount * omegacap;
            if (rep >= 25) { // cap the amount of rep so you cant farm lucanus for ez rep
               rep = 25 * omegacap;
            }
         }
      }
      /*for (CargoStackAPI stack : cargo.getStacksCopy()) {
         WeaponSpecAPI spec = stack.getWeaponSpecIfWeapon();
         if (allowedweaponslist.contains(spec.getWeaponId())) {
            if (spec != null && spec.getSize().equals(WeaponAPI.WeaponSize.SMALL)) {
               rep += getBaseRepValue(spec.getId()) * stack.getSize();
            }
         }
      }*/
      //if (rep < 1f) rep = 1f;
      return rep;
   }
}
[close]

3
Suggestions / Re: What should the Historian ramble about?
« on: August 03, 2023, 08:36:33 AM »
There’s a lot of things that historian could talk about honestly. Other battlegroups and their status? Pre-Collapse lore, something Starsector always lacked? Elaboration on what happened between the 1st AI war and the Askonia Crisis(cause let’s be honest, that’s a century full of nothing)? Some answers on why some parts of the sector are the way they are? Far-flung tinfoil theories about the collapse? Little trivia about the factions and how they operate? Facts about the great domain vessels(sporeship, cryosleepers, gate haulers)? Background on Volturnian Lobsters? Alvyss’ hidden backstory?

Not to mention, it’s a good time to finally put in stone a lot of the tentative old lore, that’s basically been in pseudo-limbo since more and more of it has been silently retconned. Definitely not me silently petitioning for a new Accurate History Of The Sector.

4
Mods / Re: [0.96a-RC10] Diktat Enhancement 1.2.2a
« on: July 24, 2023, 06:41:10 AM »
If anyone figures out a means to disable the lobster content, lmk please.

cool ships until the lobsters part.
There’s a config in settings/lunalib that disables the lobster fighters/lobster related content from new games.

Look upthread - it doesn't work.

@JAL28: Do you want someone to write content for the ship descriptions? With most of them having the same generic background info, it's difficult to know what roles most ships are intended for. If you PM me any notes you may have on the intended purpose of the ships, I can write new backgrounds for them without too much trouble.
Yeah, but disabling the lobsters was an old bug that should have been fixed a few patches ago. I haven’t heard anything about it happening since that fix so at least from what I know it should be fully gone by now.

I think I’m fine with descs for the time being; note that only the first paragraph of information displays on tooltip(which are the more generic type paragraphs), and backgrounds for specific ships are usually found underneath that and accessible via the codex. Though, if visibility is causing an issue I can rewrite them to make it more clear what their roles in battle are.

5
Mods / Re: [0.96a-RC10] Diktat Enhancement 1.2.2a
« on: July 20, 2023, 02:15:59 AM »
If anyone figures out a means to disable the lobster content, lmk please.

cool ships until the lobsters part.
There’s a config in settings/lunalib that disables the lobster fighters/lobster related content from new games.

6
Mods / Re: [0.96a-RC10] Diktat Enhancement 1.2.2a
« on: July 01, 2023, 09:13:09 PM »
I noticed a tooltip from DE that says certain Diktat officials might "be interested" if I have certain drone ships in my fleet - I've been flying around with Drones and DE enabled for a few runs now and haven't noticed anything related to that. Does anyone know what that tooltip is referring to?

Spoiler
If you enter diktat bars while having a specific remnant capital in your fleet(the one that came first) you may find out that someone is interested in it.
[close]

7
Alright, here's a bit of an odd one. Apparently this hullmod causes incredible slowdowns on combat, down to 1 FPS, and I don't know why. I am aware that everyframes have the capability to be incredibly laggy but idk what really is causing problems here. I must note also that significant slowdowns only occur in large fleet battles and FPS impact was negligible when only 1-2 ships were present.

Spoiler
package DE.hullmods;

import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.combat.BaseHullMod;
import com.fs.starfarer.api.combat.CombatAssignmentType;
import com.fs.starfarer.api.combat.CombatEngineAPI;
import com.fs.starfarer.api.combat.MutableShipStatsAPI;
import com.fs.starfarer.api.combat.ShipAPI;
import com.fs.starfarer.api.combat.ShipAPI.HullSize;
import com.fs.starfarer.api.ui.TooltipMakerAPI;
import com.fs.starfarer.api.util.IntervalUtil;
import com.fs.starfarer.api.util.Misc;
import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

import org.magiclib.util.MagicRender;
import org.lazywizard.lazylib.MathUtils;
import org.lazywizard.lazylib.combat.CombatUtils;
import org.lwjgl.util.vector.Vector2f;


public class AndradaResonator extends BaseHullMod {
    // Thanks for Nia's Adlerauge effect script for parts of this
    private static final float RANGE = 1000f;
    private static boolean isBuffed = false;
    private static final String id = "andradamodulator_data";
    public static final Color JITTER_COLOR = new Color(200,0,120,255);
    public static final Color JITTER_UNDER_COLOR = new Color(140,0,120,255);
    private final List<ShipAPI> affectedships = new ArrayList<ShipAPI>();
   
    @Override
    public void advanceInCombat(ShipAPI ship, float amount) {
        CombatEngineAPI engine = Global.getCombatEngine();
        List<ShipAPI> shiplist = CombatUtils.getShipsWithinRange(ship.getLocation(), RANGE);
        MagicRender.objectspace(
                // this needs to be loaded in settings.json, and then you can just stick in the file path
                Global.getSettings().getSprite("graphics/DE/fx/de_drivecircle.png"),
                // what the ring will be centered on. In this case, the ship using the system. what "ship" means
                // was determined in the second part of this public void thingamajig.
                ship,
                new Vector2f(),
                new Vector2f(),
                // the radius of the circle will be about half this
                new Vector2f(2000, 2000),
                new Vector2f(-100, -100),
                0,
                120,
                // set to true to make the ring turn with the ship
                false,
                // the color, obviously. I don't think the alpha value really works, instead I'm using a
                // very transparent sprite
                new Color(200,0,120,255),
                true,
                0.5f,
                0f,
                0.5f,
                true
        );
        for (ShipAPI ship2 : shiplist) {
            if (ship2.getVariant().hasHullMod("andrada_mods") && ship2.getOwner() == ship.getOwner() && ship2 != ship) {
                //String str4 = String.format("In range: %s, has hull mod %s, same owner %s", MathUtils.isWithinRange(ship2, ship, RANGE), ship2.getVariant().hasHullMod("andrada_mods"), ship2.getOwner() == ship.getOwner());
                //Global.getLogger(this.getClass()).info(str4);
                // will apply when ship is in range
                List<ShipAPI> purgelist = new ArrayList<ShipAPI>();
                affectedships.add(ship2);
                for (ShipAPI target : affectedships) {
                    // check if our dear target is still truly in range
                    if (MathUtils.getDistance(target.getLocation(), ship.getLocation()) <= RANGE && target.isAlive() && !isBuffed) {
                        target.getMutableStats().getMaxSpeed().modifyFlat(id, 10f);
                        target.getMutableStats().getAcceleration().modifyPercent(id, 20f);
                        target.getMutableStats().getDeceleration().modifyPercent(id, 20f);
                        target.getMutableStats().getEnergyWeaponFluxCostMod().modifyPercent(id, 10f);
                        target.getMutableStats().getEnergyWeaponRangeBonus().modifyPercent(id, 10f);
                        target.getMutableStats().getEnergyRoFMult().modifyPercent(id, 10f);
                        target.getMutableStats().getEnergyRoFMult().modifyPercent(id, 10f);
                        target.getMutableStats().getTimeMult().modifyPercent(id, 5f);
                        //target.setJitter(this, JITTER_COLOR, 0.5f, 1, 0, 0);
                        //target.setJitterUnder(this, JITTER_UNDER_COLOR, 0.5f, 3, 0f, 0);
                        isBuffed = true;
                    } else {
                        // he's not! rattle em code!
                        // applies when ship is out of range
                        target.getMutableStats().getMaxSpeed().unmodifyFlat(id);
                        target.getMutableStats().getAcceleration().unmodify(id);
                        target.getMutableStats().getDeceleration().unmodify(id);
                        target.getMutableStats().getEnergyWeaponFluxCostMod().unmodify(id);
                        target.getMutableStats().getEnergyWeaponRangeBonus().unmodify(id);
                        target.getMutableStats().getEnergyRoFMult().unmodify(id);
                        target.getMutableStats().getEnergyRoFMult().unmodify(id);
                        target.getMutableStats().getTimeMult().unmodify(id);
                        purgelist.add(target);
                        isBuffed = false;
                    }
                }
                // removes ship from the affected ships list
                for (ShipAPI purge : purgelist) {
                    affectedships.remove(purgelist);
                    //purgelist.clear();
                }
            }
        }
        // clears affected ships list when combat ends
        if (engine.isCombatOver()) {
            affectedships.clear();
        }
    }
}
[close]

8
Mods / Re: [0.96a-RC10] Diktat Enhancement 1.2.2
« on: June 19, 2023, 07:27:41 PM »
Crash regarding "prideQuestion5" should be fixed, redownload from either forums or discord.

9
Modding Resources / Re: Kitbash Database
« on: June 12, 2023, 07:30:30 PM »
It's all stock. If you haven't seen them, you haven't been looking hard enough.  :P

When did this exist?

Spoiler
[close]
That's from Seeker, but other than that everything is vanilla.

10
Mods / Re: [0.96a] Diktat Enhancement 1.2.1f
« on: June 05, 2023, 12:09:48 AM »
getting the same error as Flobies, mine hits during the invasion training mission when the invasion space force attacks my fleet.  not 100% sure it's from this mod, but this was the only hit when searching "ShieldAlwaysOn"...

Code
211181 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NullPointerException
java.lang.NullPointerException
at com.fs.starfarer.api.impl.hullmods.ShieldAlwaysOn.advanceInCombat(ShieldAlwaysOn.java:37)
at com.fs.starfarer.combat.entities.Ship.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.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Was an Exult involved in the battle?

11
Does anyone know why engine.applyDamage does not seem to work when used in an unapply method? I keep getting an NPE at the refit screen and there should not be any nulls in the engine variable then(or triggering in refit screen) so I dunno what is happening here.

12
Mods / Re: [0.96a-RC7] Diktat Enhancement 1.2.1e
« on: May 28, 2023, 07:50:27 PM »
Thanks for a great mod!

It seems the config option to remove lobster fighters doesn't work on this version, at least not with the "Lite" option. I have disabled them in the config file, but the lobster fighters (both standard and pirate) still show up in-game, including on AI fleets. The only changes I made to the config were to set:
"DEenablelitemode":true
"DEdisablelobers":true

Are you using Lunalib? I believe lunalib configs override vanilla settings.json edits.

13
General Discussion / Re: The lore stuff on the website
« on: May 25, 2023, 07:23:23 AM »
Does this mean that at some point the lore blog will be updated too?

14
Suppose there's a few things I can sacrifice to the maw of endless hunger:
Spoiler

Yellow Warthog. That's it. It's a yellow Warthog.

Unimplemented carrier with probably the most bay/volume in the entire modiverse. Was originally going to ES but got rejected so throwing it to spiral arms instead.
[close]

15
Mods / Re: [0.95.1a] Diktat Enhancement 1.2.1
« on: March 19, 2023, 01:14:53 AM »
Hi.

Is 1.2.1 still incompatible? Get a crash at game launch. 1.2.0f runs fine so far.

Spoiler
93266 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain  - com.fs.starfarer.api.util.RuleException: java.lang.RuntimeException: Command [DE_HasModId] not found in packages:
com.fs.starfarer.api.impl.campaign.rulecmd
com.fs.starfarer.api.impl.campaign.rulecmd.salvage
com.fs.starfarer.api.impl.campaign.rulecmd.newgame
com.fs.starfarer.api.impl.campaign.rulecmd.missions
com.fs.starfarer.api.impl.campaign.rulecmd.academy
data.scripts.rulecmd
data.scripts.campaign.rulecmd
org.lazywizard.console.rulecmd
data.scripts.edshipyard.rulecmd
exoticatechnologies.campaign.rulecmd
indevo.industries.academy.rules
indevo.industries.embassy.rules
indevo.industries.senate.rules
indevo.industries.derelicts.rules
indevo.industries.salvageyards.rules
indevo.industries.artillery.rules
indevo.industries.courierport.dialogue
indevo.abilities.splitfleet.dialogue
indevo.dialogue.research
indevo.dialogue.rules
data.scripts.campaign.iirules
data.scripts.campaign.rulecmd
lunalib.backend.cmds
data.scripts.bounty.rulecmd
data.scripts.bounty.rulecmd
progsmod.data.campaign.rulecmd
scripts.campaign.rulecmd
data.scripts.campaign.swprules
starship_legends.campaign.rulecmd
data.scripts
data.campaign.rulecmd
data.campaign.rulecmd.salvage
data.campaign.rulecmd
data.scripts.bounty.rulecmd

com.fs.starfarer.api.util.RuleException: java.lang.RuntimeException: Command [DE_HasModId] not found in packages:
com.fs.starfarer.api.impl.campaign.rulecmd
com.fs.starfarer.api.impl.campaign.rulecmd.salvage
com.fs.starfarer.api.impl.campaign.rulecmd.newgame
com.fs.starfarer.api.impl.campaign.rulecmd.missions
com.fs.starfarer.api.impl.campaign.rulecmd.academy
data.scripts.rulecmd
data.scripts.campaign.rulecmd
org.lazywizard.console.rulecmd
data.scripts.edshipyard.rulecmd
exoticatechnologies.campaign.rulecmd
indevo.industries.academy.rules
indevo.industries.embassy.rules
indevo.industries.senate.rules
indevo.industries.derelicts.rules
indevo.industries.salvageyards.rules
indevo.industries.artillery.rules
indevo.industries.courierport.dialogue
indevo.abilities.splitfleet.dialogue
indevo.dialogue.research
indevo.dialogue.rules
data.scripts.campaign.iirules
data.scripts.campaign.rulecmd
lunalib.backend.cmds
data.scripts.bounty.rulecmd
data.scripts.bounty.rulecmd
progsmod.data.campaign.rulecmd
scripts.campaign.rulecmd
data.scripts.campaign.swprules
starship_legends.campaign.rulecmd
data.scripts
data.campaign.rulecmd
data.campaign.rulecmd.salvage
data.campaign.rulecmd
data.scripts.bounty.rulecmd

   at com.fs.starfarer.campaign.rules.oOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.<init>(Unknown Source)
   at com.fs.starfarer.campaign.rules.Rules.super(Unknown Source)
   at com.fs.starfarer.loading.SpecStore.public(Unknown Source)
   at com.fs.starfarer.loading.ResourceLoaderState.init(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: Command [DE_HasModId] not found in packages:
com.fs.starfarer.api.impl.campaign.rulecmd
com.fs.starfarer.api.impl.campaign.rulecmd.salvage
com.fs.starfarer.api.impl.campaign.rulecmd.newgame
com.fs.starfarer.api.impl.campaign.rulecmd.missions
com.fs.starfarer.api.impl.campaign.rulecmd.academy
data.scripts.rulecmd
data.scripts.campaign.rulecmd
org.lazywizard.console.rulecmd
data.scripts.edshipyard.rulecmd
exoticatechnologies.campaign.rulecmd
indevo.industries.academy.rules
indevo.industries.embassy.rules
indevo.industries.senate.rules
indevo.industries.derelicts.rules
indevo.industries.salvageyards.rules
indevo.industries.artillery.rules
indevo.industries.courierport.dialogue
indevo.abilities.splitfleet.dialogue
indevo.dialogue.research
indevo.dialogue.rules
data.scripts.campaign.iirules
data.scripts.campaign.rulecmd
lunalib.backend.cmds
data.scripts.bounty.rulecmd
data.scripts.bounty.rulecmd
progsmod.data.campaign.rulecmd
scripts.campaign.rulecmd
data.scripts.campaign.swprules
starship_legends.campaign.rulecmd
data.scripts
data.campaign.rulecmd
data.campaign.rulecmd.salvage
data.campaign.rulecmd
data.scripts.bounty.rulecmd
[close]
Hmm, shouldn't be happening. Can you delete the old mod folder and redownload?

Pages: [1] 2 3 ... 15