Can you post the code for the function that's making this call?
data.scripts.world.corvus.logic.TreasureMap.jigsawTreasureMap(TreasureMap.java:140)
If this is the line that's giving you an error:
FleetMemberAPI fleetMember = (Global.getFactory()).createFleetMember(FleetMemberType.SHIP, treasureMapJigsawK.jigsawName);
Then I'm fairly certain that treasureMapJigsawK is null. If the error happened inside createFleetMember, the stack trace would have createFleetMember in it.
package data.scripts.world.corvus.logic;
import java.awt.Color;
import java.util.List;
import java.util.ArrayList;
import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.campaign.CampaignFleetAPI;
import com.fs.starfarer.api.campaign.SectorAPI;
import com.fs.starfarer.api.campaign.CargoAPI;
import com.fs.starfarer.api.campaign.CargoAPI.CrewXPLevel;
import com.fs.starfarer.api.campaign.CargoStackAPI;
import com.fs.starfarer.api.campaign.FleetDataAPI;
import com.fs.starfarer.api.fleet.FleetMemberAPI;
import com.fs.starfarer.api.fleet.FleetMemberType;
import com.fs.starfarer.api.FactoryAPI;
import data.scripts.world.corvus.logic.TreasureMapJigsaw;
@SuppressWarnings("unchecked")
public class TreasureMap{
public String treasureMapName;
public double decipheringChance;
public List jigsawList;
public List testimonialList;
public boolean achieve;
public int scheduleMin;
public int scheduleMax;
public int scheduleAdd;
public TreasureMap(String treasureMapName, double decipheringChance, int scheduleMin, int scheduleMax, int scheduleAdd){
this.treasureMapName = treasureMapName;
this.decipheringChance = decipheringChance;
this.jigsawList = new ArrayList();
this.testimonialList = new ArrayList();
this.achieve = false;
this.scheduleMin = scheduleMin;
this.scheduleMax = scheduleMax;
this.scheduleAdd = scheduleAdd;
}
public void addJigsaw(TreasureMapJigsaw treasureMapJigsaw){
this.jigsawList.add(treasureMapJigsaw);
}
public void addTestimonial(TreasureMapJigsaw treasureMapTestimonial){
this.testimonialList.add(treasureMapTestimonial);
}
public int jigsawTreasureMap(CargoAPI cargo){
List playerCargoList = cargo.getStacksCopy();
int scheduleReturn = 0;
if(playerCargoList.size() > 0){
for(int i = 0;i < playerCargoList.size();i++){
CargoStackAPI playerCargo = (CargoStackAPI)playerCargoList.get(i);
TreasureMapJigsaw treasureMapJigsaw = (TreasureMapJigsaw)this.jigsawList.get(0);
if((treasureMapJigsaw.jigsawName).equals(playerCargo.getData())){
boolean complete = true;
for(int k = 0;(k < this.jigsawList.size())&&complete;k++){
TreasureMapJigsaw treasureMapJigsawK = (TreasureMapJigsaw)this.jigsawList.get(k);
if((int)(treasureMapJigsawK.jigsawPosition / 7) != (int)(((i % 7) + treasureMapJigsawK.jigsawPosition - treasureMapJigsaw.jigsawPosition) / 7)){
complete = false;
}
}
if(complete){
for(int k = 1;(k < this.jigsawList.size())&&complete;k++){
TreasureMapJigsaw treasureMapJigsawK = (TreasureMapJigsaw)this.jigsawList.get(k);
if((i + treasureMapJigsawK.jigsawPosition - treasureMapJigsaw.jigsawPosition) < playerCargoList.size()){
CargoStackAPI playerCargoNext = (CargoStackAPI)playerCargoList.get(i + treasureMapJigsawK.jigsawPosition - treasureMapJigsaw.jigsawPosition);
if(!(treasureMapJigsawK.jigsawName).equals(playerCargoNext.getData())){
complete = false;
}else if(playerCargoNext.getSize() < treasureMapJigsawK.jigsawAmount){
complete = false;
}
}else{
complete = false;
}
}
}
boolean decipheringComplete = true;
if(complete){
if((double)Math.random() >= this.decipheringChance){
complete = false;
decipheringComplete = false;
}
}
if(!complete){
if(!decipheringComplete){
Global.getSectorAPI().addMessage("
?? " + this.treasureMapName + "
?", new Color((int)155,(int)0,(int)0,(int)255));
}
}else{
if(!this.achieve){
scheduleReturn = this.scheduleAdd;
this.achieve = true;
}
Global.getSectorAPI().addMessage("
" + this.treasureMapName + "
?", new Color((int)0,(int)255,(int)0,(int)255));
for(int k = 0;k < this.jigsawList.size();k++){
TreasureMapJigsaw treasureMapJigsawK = (TreasureMapJigsaw)this.jigsawList.get(k);
if(!("LINKER").equals(treasureMapJigsawK.jigsawType)){
cargo.removeItems(CargoAPI.CargoItemType.RESOURCES, treasureMapJigsawK.jigsawName, treasureMapJigsawK.jigsawAmount);
//CargoStackAPI playerCargoNext = (CargoStackAPI)playerCargoList.get(i + treasureMapJigsawK.jigsawPosition);
//playerCargoNext.subtract(treasureMapJigsawK.jigsawAmount);
}
}
for(int k = 0;k < this.testimonialList.size();k++){
TreasureMapJigsaw treasureMapJigsawK = (TreasureMapJigsaw)this.testimonialList.get(k);
if((treasureMapJigsawK.jigsawType).equals("ITEM")){
cargo.addItems(CargoAPI.CargoItemType.RESOURCES, treasureMapJigsawK.jigsawName, treasureMapJigsawK.jigsawAmount);
}else if((treasureMapJigsawK.jigsawType).equals("WEAPON")){
cargo.addWeapons(treasureMapJigsawK.jigsawName, (int)treasureMapJigsawK.jigsawAmount);
}else if((treasureMapJigsawK.jigsawType).equals("FUEL")){
cargo.addFuel(treasureMapJigsawK.jigsawAmount);
}else if((treasureMapJigsawK.jigsawType).equals("SUPPLY")){
cargo.addSupplies(treasureMapJigsawK.jigsawAmount);
}else if((treasureMapJigsawK.jigsawType).equals("CREW")){
if((treasureMapJigsawK.jigsawName).equals("REGULAR")){
cargo.addCrew(CargoAPI.CrewXPLevel.REGULAR, (int)treasureMapJigsawK.jigsawAmount);
}else if((treasureMapJigsawK.jigsawName).equals("VETERAN")){
cargo.addCrew(CargoAPI.CrewXPLevel.VETERAN, (int)treasureMapJigsawK.jigsawAmount);
}else if((treasureMapJigsawK.jigsawName).equals("ELITE")){
cargo.addCrew(CargoAPI.CrewXPLevel.ELITE, (int)treasureMapJigsawK.jigsawAmount);
}else{
cargo.addCrew(CargoAPI.CrewXPLevel.GREEN, (int)treasureMapJigsawK.jigsawAmount);
}
}else if((treasureMapJigsawK.jigsawType).equals("SHIP")){
for(int n = 0;n < treasureMapJigsawK.jigsawAmount;n++){
//cargo.addMothballedShip(FleetMemberType.SHIP , treasureMapJigsawK.jigsawName, null);
if(treasureMapJigsawK.jigsawName != null){
FleetMemberAPI fleetMember = (Global.getFactory()).createFleetMember(FleetMemberType.SHIP, treasureMapJigsawK.jigsawName);
cargo.getMothballedShips().addFleetMember(fleetMember);
}
}
}else if((treasureMapJigsawK.jigsawType).equals("WING")){
for(int n = 0;n < treasureMapJigsawK.jigsawAmount;n++){
//cargo.addMothballedShip(FleetMemberType.FIGHTER_WING , treasureMapJigsawK.jigsawName, null);
if(treasureMapJigsawK.jigsawName != null){
FleetMemberAPI fleetMember = (Global.getFactory()).createFleetMember(FleetMemberType.FIGHTER_WING, treasureMapJigsawK.jigsawName);
cargo.getMothballedShips().addFleetMember(fleetMember);
}
}
}
}
}
}
}
}
return scheduleReturn;
}
}