Fractal Softworks Forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

Starsector 0.98a is out! (03/27/25)

Pages: [1] 2 3 ... 16

Author Topic: [0.98a] Ship Mastery System (+Miscellaneous Features) (4/8/25)  (Read 102199 times)

float

  • Captain
  • ****
  • Posts: 416
    • View Profile

Ship Mastery System
 

Gain mastery in ship hulls to unlock S-mod slots and additional bonuses.

Requires Particle Engine.


Ship Masteries

  • Gain mastery points (MP) in a specific ship type randomly while gaining XP.
    • XP gained from combat has a chance to grant MP in combat ship types in your fleet.
    • XP gained from any other source has a chance to grant MP in civilian ship types in your fleet.
  • MP can also be acquired by consuming knowledge constructs, which appear as rare loot under certain circumstances.
  • Use MP to build in hullmods or advance your mastery level in a specific ship type.
    • Each ship type (a.k.a. hull spec) has its own MP pool that is shared between all ships of that type.
    • Mastery level and mastery selections (for levels that have more than one option) are also shared between all ships of a ship type.
  • Advancing your mastery of a ship type improves its performance in a variety of ways. Some mastery levels have randomized bonuses, while others' are fixed.




Revamped S-Mod System

  • All ships start with 0 S-mod capacity. Level up ship mastery to gain S-mod capacity.
  • Each ship class has exactly 3 available S-mod capacity upgrades, available at levels 3, 6, and 8.
  • Building in hullmods no longer costs story points, instead costing mastery points (MP) and credits.




NPC Masteries

  • NPC fleets follow the same general rules as player fleets, and may have mastery levels in some ship classes.
  • Ships in an NPC fleet that have mastery effects applied will also have a marker hullmod added, so hovering over that ship will show its mastery level.
  • Adds a post-inflation sequence to add S-mods to ships in generic NPC fleets, if they've unlocked mastery levels that grant them S-mod capacity.
  • NPC fleets' average mastery levels (and other mastery-related settings) can be changed in the difficulty subsection of the settings.



Skill Changes*
Best of the Best

  • Removed the additional S-mod from Best of the Best; default cap is now 3 (at max mastery) regardless of skills.
  • Added effect: +30% effectiveness of all mastery bonuses.
  • Added effect: +15% CR, +10% hull and flux capacity for capital ships with officers.


Cybernetic Augmentation

  • Removed the 1% damage dealt / damage taken bonus per commander's elite skill.
  • Added an ordnance points bonus that scales based on the number of ship types the player has mastered (bonus is fixed for NPC fleets)



*Note on compatibility with Quality Captains*
This mod is compatible; however, due to mod id sort order, Quality Captain's skill changes take precedence. You can use this mod's version of the Best of the Best and Cybernetic Augmentation skills by removing the corresponding entries under the "replace" property of Quality Captain's mod_info.json.
[close]

Miscellaneous Features
Adds a system for reclaiming ships lost in battle

  • Player ships that are lost but not recovered, either by choice or due to disengaging early from or losing a battle, spawn as derelicts near the battle site.
  • In order to spawn as a derelict, the ship must have been recoverable should the player have won (affected by reinforced bulkheads / hull restoration / etc.).
  • If the player is given a post-battle salvage option, weapons and wings from the wrecks are stripped.
  • The wrecks disappear permanently after 365 days, or if the player dismisses the fleet log entry.
  • Greatly facilitates insurance fraud if using Nexerelin's ship insurance feature.



Adds the ability to view details about and replay recent battles

  • Keeps track of the 10 most recent battles you've won, displaying detailed enemy fleet and officer data.
  • Replay battles in a simulation-like environment -- quit anytime, gain nothing, and lose nothing.
  • Solo replay allows fighting against individual ships from recorded battles.
  • Pin notable battles to keep them in the intel log permanently, allowing you to replay limited boss battles at any time.



Adds an S-mods option to the refit screen autofit menu

  • This will attempt to copy S-mods from the goal variant, automatically spending the required credits and mastery points.


Also adds a small amount of exploration content.
[close]

Version log
« Last Edit: April 07, 2025, 09:47:13 PM by float »
Logged

dEVoRaTriX_LuX

  • Ensign
  • *
  • Posts: 46
    • View Profile
Re: [0.97a] Ship Mastery System (4/2/24)
« Reply #1 on: April 03, 2024, 01:44:05 PM »

Does the skill changes conflict with Quality Captains?
Logged

float

  • Captain
  • ****
  • Posts: 416
    • View Profile
Re: [0.97a] Ship Mastery System (4/2/24)
« Reply #2 on: April 03, 2024, 03:54:13 PM »

Does the skill changes conflict with Quality Captains?
If you use Quality Captains, the skills from that mod will stick and those from this mod will be discarded (reason being, Quality Captain's id is higher alphabetically, so that mod gets loaded first, so it gets to make its skill changes first and any subsequent replacements are ignored).
This is a soft conflict, as this mod still works with Quality Captain's best of the best and cybernetic augmentation. It just means that you'll be getting an additional s-mod slot (up to 4 at max mastery) and losing the up to 12% OP bonus from this mod's cybernetic augmentation.

That said, you could try deleting the best of the best and cybernetic augmentation skill replacements in the mod_info.json of Quality Captains if you wanted to use this mod's version of those skills (haven't tested it, so not sure if it actually works).
« Last Edit: April 03, 2024, 03:56:57 PM by float »
Logged

Audax

  • Captain
  • ****
  • Posts: 332
    • View Profile
Re: [0.97a] Ship Mastery System (4/2/24)
« Reply #3 on: April 04, 2024, 01:34:40 AM »

Are you going to maintain progressive s-mods or will this replace that??
« Last Edit: March 23, 2025, 09:12:43 AM by Audax »
Logged

dEVoRaTriX_LuX

  • Ensign
  • *
  • Posts: 46
    • View Profile
Re: [0.97a] Ship Mastery System (4/2/24)
« Reply #4 on: April 04, 2024, 03:26:39 AM »

Are you going to maintain progressive s-mods or will this replace that??
did this and your skill changes reflect in the skills now, thank you
Logged

float

  • Captain
  • ****
  • Posts: 416
    • View Profile
Re: [0.97a] Ship Mastery System (4/2/24)
« Reply #5 on: April 04, 2024, 11:40:04 AM »

Are you going to maintain progressive s-mods or will this replace that??
Maintaining, sure, as long as it's easy (i.e. changing version number when Starsector updates, basic compatibility patches). But I don't intend to any additional features to it. So I guess you could call this mod a pseudo-replacement. It definitely fills sort of the same niche, and while you can use both at the same time, I wouldn't really recommend it.
Logged

Siffrin

  • Captain
  • ****
  • Posts: 413
  • TMVA
    • View Profile
Re: [0.97a] Ship Mastery System (4/2/24)
« Reply #6 on: April 04, 2024, 12:52:55 PM »

Will the miscellaneous features be split off into their own mods someday?
Logged

float

  • Captain
  • ****
  • Posts: 416
    • View Profile
Re: [0.97a] Ship Mastery System (4/2/24)
« Reply #7 on: April 04, 2024, 01:21:25 PM »

Will the miscellaneous features be split off into their own mods someday?
No, they're not really big enough to warrant their own mod, nor would I want to maintain a bunch of offshoot mini-mods. And you can mostly disable the main mod features by going to data/shipmastery/mastery_presets.json, finding the "_DEFAULT_" entry, and replacing it with this:
Code
"_DEFAULT_": {
    "maxLevel": 0
}
Then go to data/config/settings.json and set maxPermanentHullmods back to 2. This should disable all of the mastery stuff, though you'd still be building in hullmods using MP and credits rather than story points. If you don't mind recompiling I guess you could also delete line 84 in src/shipmastery/plugin/ModPlugin.java if you really wanted to go back to building in hullmods with story points.
Logged

ymfah

  • Lieutenant
  • **
  • Posts: 63
    • View Profile
Re: [0.97a] Ship Mastery System (4/4/24)
« Reply #8 on: April 07, 2024, 11:48:23 PM »

Hello. Greatly enjoying the mod!

Had a bug where a mastery bonus for converted hangers showed up an a phase ship, which is weird since phase ships can’t install those (unless you use Better Vanilla Hullmods™). The ship was the Arkas from RAT.

Besides that had 0 issues. Thanks again for the mod!
Logged

float

  • Captain
  • ****
  • Posts: 416
    • View Profile
Re: [0.97a] Ship Mastery System (4/4/24)
« Reply #9 on: April 09, 2024, 02:12:31 PM »

Hello. Greatly enjoying the mod!

Had a bug where a mastery bonus for converted hangers showed up an a phase ship, which is weird since phase ships can’t install those (unless you use Better Vanilla Hullmods™). The ship was the Arkas from RAT.

Besides that had 0 issues. Thanks again for the mod!
Thanks for the feedback and report! Fixed this issue (and another involving a minimum CR effect) in dev.
Logged

Massacre

  • Ensign
  • *
  • Posts: 17
    • View Profile
Re: [0.97a] Ship Mastery System (4/4/24)
« Reply #10 on: April 10, 2024, 05:50:52 AM »

Interesting, do you have plans for feature which will allow either remove with some sort of refund, or maybe better, swap out smods, if I lets say want to redo ship completely, like making SO build into long range one and vice-versa? I like old Progressive Smods mod for just this feature alone.
Logged

float

  • Captain
  • ****
  • Posts: 416
    • View Profile
Re: [0.97a] Ship Mastery System (4/4/24)
« Reply #11 on: April 10, 2024, 07:51:13 AM »

Interesting, do you have plans for feature which will allow either remove with some sort of refund, or maybe better, swap out smods, if I lets say want to redo ship completely, like making SO build into long range one and vice-versa? I like old Progressive Smods mod for just this feature alone.
Unless you're using random mode, in which case you won't be able to remove S-mods at all, level 6 mastery is fixed for all ship types and includes the ability to clear S-mods. It's not as powerful as it was in PSM, though, since you have to clear all S-mods and you don't get any refunds. I think it's easy to argue that PSM is *too* powerful, and the ability to swap out S-mods at will for negligible cost definitely contributes to that.
Logged

KarlPh1sher

  • Ensign
  • *
  • Posts: 22
    • View Profile
Re: [0.97a] Ship Mastery System (4/4/24)
« Reply #12 on: April 11, 2024, 06:08:31 AM »

Hey man love your mod, I've twice got in to a ctd and save corruption with the following error, all happened after start a colony and researched some tech from ash of the damain, not sure if it's from your mod,
Code
com.thoughtworks.xstream.converters.ConversionException: Failed calling method
---- Debugging information ----
message             : Failed calling method
cause-exception     : java.lang.NullPointerException
cause-message       : Cannot invoke "com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseManager.getUnadjustedDaysSinceStart()" because the return value of "com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseManager.getInstance()" is null
method              : com.fs.starfarer.campaign.fleet.FleetMember.readResolve()
class               : com.fs.starfarer.campaign.fleet.FleetMember
required-type       : com.fs.starfarer.campaign.fleet.FleetMember
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
line number         : 1013855
class[1]            : java.util.ArrayList
required-type[1]    : java.util.ArrayList
converter-type[1]   : com.thoughtworks.xstream.converters.collections.CollectionConverter
class[2]            : com.fs.starfarer.campaign.fleet.FleetData
required-type[2]    : com.fs.starfarer.campaign.fleet.FleetData
class[3]            : com.fs.starfarer.campaign.fleet.CampaignFleet
required-type[3]    : com.fs.starfarer.campaign.fleet.CampaignFleet
class[4]            : com.fs.starfarer.campaign.CharacterStats
required-type[4]    : com.fs.starfarer.campaign.CharacterStats
class[5]            : com.fs.starfarer.rpg.Person
required-type[5]    : com.fs.starfarer.rpg.Person
class[6]            : shipmastery.util.VariantLookup$VariantInfo
required-type[6]    : shipmastery.util.VariantLookup$VariantInfo
class[7]            : java.util.HashMap
required-type[7]    : java.util.HashMap
converter-type[2]   : com.thoughtworks.xstream.converters.collections.MapConverter
class[8]            : shipmastery.util.VariantLookup
required-type[8]    : shipmastery.util.VariantLookup
class[9]            : java.util.LinkedHashMap
required-type[9]    : java.util.LinkedHashMap
class[10]           : com.fs.starfarer.campaign.rules.Memory
required-type[10]   : com.fs.starfarer.campaign.rules.Memory
class[11]           : com.fs.starfarer.campaign.CampaignEngine
required-type[11]   : com.fs.starfarer.campaign.CampaignEngine
converter-type[3]   : com.fs.starfarer.campaign.save.I
version             : not available
-------------------------------
Logged

float

  • Captain
  • ****
  • Posts: 416
    • View Profile
Re: [0.97a] Ship Mastery System (4/4/24)
« Reply #13 on: April 11, 2024, 07:32:30 AM »

That looks like the sort of error you’d get if you started a save in 0.95/0.96 and tried to continue in in 0.97. The different Starsector versions aren’t compatible with each other.

Edit: If not, is there some sort of stack trace underneath the error message in starsector.log? I’d like to see that. Though this mod doesn’t touch anything to do with pirate bases so I’m having a hard time imagining how it could be related.
« Last Edit: April 11, 2024, 07:43:05 AM by float »
Logged

KarlPh1sher

  • Ensign
  • *
  • Posts: 22
    • View Profile
Re: [0.97a] Ship Mastery System (4/4/24)
« Reply #14 on: April 11, 2024, 07:58:22 AM »

That looks like the sort of error you’d get if you started a save in 0.95/0.96 and tried to continue in in 0.97. The different Starsector versions aren’t compatible with each other.

Edit: If not, is there some sort of stack trace underneath the error message in starsector.log? I’d like to see that. Though this mod doesn’t touch anything to do with pirate bases so I’m having a hard time imagining how it could be related.
there you go, Apologies if I got the wrong mod, your mod is the only one in the error log I can see so I came here.
Code
at com.thoughtworks.xstream.core.util.SerializationMembers.callReadResolve(SerializationMembers.java:82) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:278) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readBareItem(AbstractCollectionConverter.java:132) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:117) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:499) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:425) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:277) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:499) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:425) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:277) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:499) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:425) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:277) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:499) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:425) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:277) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:499) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:425) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:277) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readBareItem(AbstractCollectionConverter.java:132) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:117) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readCompleteItem(AbstractCollectionConverter.java:147) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.MapConverter.putCurrentEntryIntoMap(MapConverter.java:106) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.MapConverter.populateMap(MapConverter.java:98) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.MapConverter.populateMap(MapConverter.java:92) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.MapConverter.unmarshal(MapConverter.java:87) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:499) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:425) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:277) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readBareItem(AbstractCollectionConverter.java:132) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:117) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readCompleteItem(AbstractCollectionConverter.java:147) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.MapConverter.putCurrentEntryIntoMap(MapConverter.java:106) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.MapConverter.populateMap(MapConverter.java:98) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.MapConverter.populateMap(MapConverter.java:92) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.collections.MapConverter.unmarshal(MapConverter.java:87) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:499) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:425) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:277) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:499) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:425) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:277) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1431) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1411) ~[xstream-1.4.17.jar:1.4.17]
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1305) ~[xstream-1.4.17.jar:1.4.17]
at com.fs.starfarer.campaign.save.CampaignGameManager.o00000(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.campaign.save.CampaignGameManager.o00000(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.title.TitleScreenState.menuItemSelected(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.title.Object.actionPerformed(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.ui.o0O0.buttonPressed(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.ui.int.Ò00000(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.ui.int.processInput(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.ui.W.o00000(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.BaseGameState.traverse(Unknown Source) ~[port_obf.jar:?]
at com.fs.state.AppDriver.begin(Unknown Source) ~[port.common_obf.jar:?]
at com.fs.starfarer.combat.CombatMain.main(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.StarfarerLauncher.super(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source) ~[port_obf.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1575) [?:?]
Caused by: java.lang.NullPointerException: Cannot invoke "com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseManager.getUnadjustedDaysSinceStart()" because the return value of "com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseManager.getInstance()" is null
at com.fs.starfarer.api.impl.campaign.CoreCampaignPluginImpl.updateGlobalFacts(CoreCampaignPluginImpl.java:540) ~[starfarer.api.jar:?]
at com.fs.starfarer.campaign.CampaignEngine.getMemory(Unknown Source) ~[port_obf.jar:?]
at data.hullmods.BBPlusCatastropheCore.applyEffectsBeforeShipCreation(BBPlusCatastropheCore.java:42) ~[?:?]
at com.fs.starfarer.campaign.fleet.FleetMember.updateStats(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.campaign.fleet.FleetData.syncIfNeeded(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.campaign.fleet.FleetData.getMembers(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.campaign.fleet.CampaignFleet.getMembers(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.campaign.fleet.CampaignFleet.getFlagship(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.campaign.fleet.FleetMember.getCaptain(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.campaign.fleet.FleetMember.getCaptain(Unknown Source) ~[port_obf.jar:?]
at shipmastery.hullmods.MasteryHullmod.applyEffectsBeforeShipCreation(MasteryHullmod.java:25) ~[?:?]
at com.fs.starfarer.campaign.fleet.FleetMember.updateStats(Unknown Source) ~[port_obf.jar:?]
at com.fs.starfarer.campaign.fleet.FleetMember.readResolve(Unknown Source) ~[port_obf.jar:?]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
at com.thoughtworks.xstream.core.util.SerializationMembers.callReadResolve(SerializationMembers.java:78) ~[xstream-1.4.17.jar:1.4.17]
Logged
Pages: [1] 2 3 ... 16