(https://img.shields.io/github/downloads/stormbringer951/CaptainsLog/total) (https://github.com/stormbringer951/CaptainsLog/releases/download/0.2.0/CaptainsLog-0.2.0.zip)
Version Checker (https://fractalsoftworks.com/forum/index.php?topic=8181.0)-compatible
Requires LunaLib (https://fractalsoftworks.com/forum/index.php?topic=25658.0)
Automatic Intel generation
Automatically creates intel entries for
- discovered cryosleepers and coronal hypershunts
- comm relays discovered in non-Core systems
- surveyed planets with unexplored ruins
- unsurveyed planets with unexplored ruins that the player has flown close to
- salvageable ships
- salvageable stations, caches, etc
- has Stellar Networks (https://fractalsoftworks.com/forum/index.php?topic=20836.0) integration to filter/hide intel categories
(https://github.com/stormbringer951/CaptainsLog/raw/master/resources/screenshot.png)
Note-taking feature
Adds custom note-taking feature to write and display Captain's Logs. Special thanks to Jaghaimo for the proof of concept code for multi-line text boxes.
Accessible from the control panel in the intel screen or using the shortcut (default P) in the campaign
(https://github.com/stormbringer951/CaptainsLog/raw/master/resources/message_gui_example.gif)
This is safe to add to existing saves already in progress, but not safe to remove from savegames.
Changelog:
0.2.0 - 2023-06-09
- Add GUI with multi-line text editing for writing Captain's Log custom messages
- Accessible from the control panel in the intel screen or using the shortcut (default P) in the campaign
- Automatically log the location of Comm Relays located outside the Core Worlds
- Automatically log the location of Coronal Hypershunts
- Add version checker changelog support
- Add LunaLib support
- Add LunaLib settings to enable/disable each type of automated intel logging
- Add LunaLib settings to set whether Captain's Log custom log messages should be marked as important by default
- Rework intel reports to more closely follow vanilla style
- Removed console command support (most functionality ported to GUI functions)
- Change ignore hotkeys to use g rather than i
- Updated salvageable ship intels to use the ship sprite as the icon rather than the map icon
- Fix bug that allowed players to use "lay in course" button to repeatedly salvage the same object.
0.1.6 - 2022-02-07
Bugfixes:
- Fixed crash to desktop when hiding icons on a message intel
0.1.5 - 2022-01-06
Features:
- Added intel reports noting the presence of ruins on unsurveyed planets with orbital debris visuals (PR from Jaghaimo)
- Added lay in course button and shortcuts to intel reports (PR from Jaghaimo)
- Added data/config/settings.json key captains_log_enable_automatic_logging for controlling whether automated reports are generated for salvageables and ruins.
Bugfixes:
- Inconsistent date calculation fixed
0.1.4 - 2021-04-13
Fixes:
- Nexerelin museum ships should not generate salvageable intels. Thanks to Avanitia for the report.
- Unexplored systems should not generate intel reports (fixes Seeker issue). Thanks to island and niko on Discord for their reports.
Usability improvements
- Will no longer generate the same damn instructional log entry on every new game, since the forum topic exists now
- All Captain's Log custom messages are set important on creation.
- All Captain's Log intel entries (ruins/salvageables/captain's log entries) are no longer in default fleet log intel category
0.1.3 - 2021-03-30
- Fixes concurrent modification error when loading savegame with an older version of CaptainsLog
0.1.2 - 2021-03-30
- Actually include the correct .jar file this time
- Fix crash with addstablepoint (thanks to JRG for reporting)
0.1.1 - 2021-03-29
- Change the build process to actually put the `config` and `console` folders inside the data folder when making a download zip file this time :-X
0.1.0 - 2021-03-29
- Fixed bug which caused saves to not be portable across different OSes (thanks to Alex for this)
- Temporarily removed support for deleting vanilla fleet logs that could not otherwise be removed (pending check that this logic is still needed/still all correct)
- Update to confirm 0.95a compatibility
0.0.1 - 2019-09-08
- Discord beta
Crashing for me. Either for new game or loading save.
29481 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain - java.lang.RuntimeException: Texture [captains_log] from category [intel] not found
java.lang.RuntimeException: Texture [captains_log] from category [intel] not found
at com.fs.starfarer.settings.StarfarerSettings.new(Unknown Source)
at com.fs.starfarer.settings.StarfarerSettings$1.getSpriteName(Unknown Source)
at CaptainsLog.campaign.intel.CustomMessageIntel.getIcon(CustomMessageIntel.java:123)
at com.fs.starfarer.campaign.comms.Object.<init>(Unknown Source)
at com.fs.starfarer.campaign.comms.oOOO.addMessage(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.addMessage(Unknown Source)
at com.fs.starfarer.campaign.comms.v2.IntelManager.addIntel(Unknown Source)
at com.fs.starfarer.campaign.comms.v2.IntelManager.addIntel(Unknown Source)
at com.fs.starfarer.campaign.comms.v2.IntelManager.addIntel(Unknown Source)
at CaptainsLog.CaptainsLogModPlugin.onEnabled(CaptainsLogModPlugin.java:14)
at com.fs.starfarer.campaign.ModAndPluginData.notifyRunningWithMod(Unknown Source)
at com.fs.starfarer.campaign.save.CampaignGameManager.o00000(Unknown Source)
at com.fs.starfarer.campaign.save.CampaignGameManager.o00000(Unknown Source)
at com.fs.starfarer.title.TitleScreenState.menuItemSelected(Unknown Source)
at com.fs.starfarer.title.ooOO.actionPerformed(Unknown Source)
at com.fs.starfarer.ui.k.buttonPressed(Unknown Source)
at com.fs.starfarer.ui.int.Ò00000(Unknown Source)
at com.fs.starfarer.ui.int.processInput(Unknown Source)
at com.fs.starfarer.ui.Stringsuper.super(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.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
I get this error when loading a save after updating from 0.1.1 to 0.1.3.
Code
0706 [Thread-3] ERROR com.fs.starfarer.campaign.save.CampaignGameManager -
---- Debugging information ----
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : com.fs.starfarer.loading.T
class : CaptainsLog.campaign.intel.RuinsIntel
required-type : CaptainsLog.campaign.intel.RuinsIntel
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
line number : 315069
class[1] : java.util.ArrayList
converter-type[1] : com.thoughtworks.xstream.converters.collections.CollectionConverter
class[2] : com.fs.util.container.repo.ObjectRepository
class[3] : com.fs.starfarer.campaign.comms.v2.IntelManager
class[4] : com.fs.starfarer.campaign.CampaignEngine
converter-type[2] : com.fs.starfarer.campaign.save.I
version : not available
-------------------------------
com.thoughtworks.xstream.converters.ConversionException:
---- Debugging information ----
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : com.fs.starfarer.loading.T
class : CaptainsLog.campaign.intel.RuinsIntel
required-type : CaptainsLog.campaign.intel.RuinsIntel
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
line number : 315069
class[1] : java.util.ArrayList
converter-type[1] : com.thoughtworks.xstream.converters.collections.CollectionConverter
class[2] : com.fs.util.container.repo.ObjectRepository
class[3] : com.fs.starfarer.campaign.comms.v2.IntelManager
class[4] : com.fs.starfarer.campaign.CampaignEngine
converter-type[2] : com.fs.starfarer.campaign.save.I
version : not available
-------------------------------
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:70)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:73)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:70)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:503)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:429)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:281)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:70)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:503)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:429)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:281)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:70)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:503)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:429)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:281)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:70)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1486)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1466)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1346)
at com.fs.starfarer.campaign.save.CampaignGameManager.o00000(Unknown Source)
at com.fs.starfarer.title.TitleScreenState.dialogDismissed(Unknown Source)
at com.fs.starfarer.ui.N.dismiss(Unknown Source)
at com.fs.starfarer.ui.impl.K.dismiss(Unknown Source)
at com.fs.starfarer.campaign.save.LoadGameDialog.actionPerformed(Unknown Source)
at com.fs.starfarer.ui.k.buttonPressed(Unknown Source)
at com.fs.starfarer.ui.oooO.new(Unknown Source)
at com.fs.starfarer.ui.oooO.processInput(Unknown Source)
at com.fs.starfarer.ui.V.super(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.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: com.fs.starfarer.loading.T
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:81)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:71)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:424)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:281)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
... 50 more
I get this error when loading a save after updating from 0.1.1 to 0.1.3.
Did you also upgrade Starsector to a new hotfix version at the same time? There was a save serialization issue for savegames made with 0.1.1 which makes it not portable across different versions of Starsector, which includes the hotfixes. This is fixed if you save the game with Captain's Log 0.1.3 first.
What you need to do is install the version of Starsector you were on when you made the save, load up the game but with Captain's Log 0.1.3, save that savegame again but with 0.1.3 (which fixes the serialization issue), at which point it should load okay and you can upgrade Starsector back up to the most recent version.
EDIT: For anyone reading, the download hyperlinks for old versions of hotfix installers have been replaced with the newest one, but the actual hosted files are still available from e.g.
https://s3.amazonaws.com/fractalsoftworks/starsector/starsector_install-0.95a-RC12.exe
But with whichever RC number you need.
Got an error with Console Command and this mod when trying to add a stable point in a starsystem.
Spoiler
java.lang.NoSuchMethodError: com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.addNonSalv ageEntity(Lcom/fs/starfarer/api/campaign/StarSystemAPI;Lcom/fs/starfarer/api/impl/campaign/procgen/themes/BaseThemeGenerator$EntityLocation;Ljava/lang/String;Ljava/lang/String;)Lcom/fs/starfarer/api/impl/campaign/procgen/themes/BaseThemeGenerator$AddedEntity;
at CaptainsLog.console.AddStablePoint.runCommand(AddStablePoint.java:45)
at org.lazywizard.console.Console.runCommand(Console.java:328)
at org.lazywizard.console.Console.parseInput(Console.java:382)
at org.lazywizard.console.ConsoleOverlayInternal.checkInput(ConsoleOverlay.kt:430)
at org.lazywizard.console.ConsoleOverlayInternal.show(ConsoleOverlay.kt:179)
at org.lazywizard.console.ConsoleOverlay.show(ConsoleOverlay.kt:46)
at org.lazywizard.console.ConsoleCampaignListener.processCampaignInputPreCore(ConsolePlugins.kt:19)
at com.fs.starfarer.api.campaign.listeners.ListenerUtil.processCampaignInputPreCor e(ListenerUtil.java:47)
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.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
This was from version 0.1.1. I haven't tried the newest update but this is for a heads up just in case.
so i just stumbled across the "unexplored ruins" tab this mod offers. so if a plant decivilizes does this mod add a entry for that ruin? i ask because i play with tons of modded factions and the decivilized tab doesn't offer any sorting (and gets pretty full as time goes on).
Not instantly. What it will do is add intel item for planets with ruins (and in fleet's sensor range) in system in which player fleet is currently in:
@Override
public void advance(float amount) {
CampaignFleetAPI fleet = Global.getSector().getPlayerFleet();
StarSystemAPI system = fleet.getStarSystem();
if (system == null) {
return;
}
for (PlanetAPI planet : system.getPlanets()) {
if (!isInRange(fleet, planet)) {
log.debug("Skipping " + planet.getName() + " as it is too far away");
continue;
}
Utils.tryCreateUnsearchedRuinsReport(planet, log, true);
}
}
https://github.com/stormbringer951/CaptainsLog/blob/master/src/CaptainsLog/scripts/RuinObserver.java
In other words, if the planet in question is not in the same system as player fleet is in, then nothing will happen.
Doesn't work with the current version. I tried simply changing the version property in the mod_info.json, but got the following error:
79675 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain - java.lang.NoSuchMethodError: com.fs.starfarer.api.ui.TooltipMakerAPI.addImageWithText(F)V
java.lang.NoSuchMethodError: com.fs.starfarer.api.ui.TooltipMakerAPI.addImageWithText(F)V
at CaptainsLog.campaign.intel.SalvageableIntel.createSmallDescription(SalvageableIntel.java:93)
at com.fs.starfarer.campaign.comms.v2.EventsPanel.super(Unknown Source)
at com.fs.starfarer.campaign.comms.v2.EventsPanel.actionPerformed(Unknown Source)
at com.fs.starfarer.campaign.comms.v2.EventsPanel.intelMapIconClicked(Unknown Source)
...
Seems like the API has been changed.
0.2.0
(https://img.shields.io/github/downloads/stormbringer951/CaptainsLog/total) (https://github.com/stormbringer951/CaptainsLog/releases/download/0.2.0/CaptainsLog-0.2.0.zip)
Changelog:
- Add GUI with multi-line text editing for writing Captain's Log custom messages
- Accessible from the control panel in the intel screen or using the shortcut (default P) in the campaign
- Automatically log the location of Comm Relays located outside the Core Worlds
- Automatically log the location of Coronal Hypershunts
- Add version checker changelog support
- Add LunaLib support
- Add LunaLib settings to enable/disable each type of automated intel logging
- Add LunaLib settings to set whether Captain's Log custom log messages should be marked as important by default
- Rework intel reports to more closely follow vanilla style
- Removed console command support (most functionality ported to GUI functions)
- Change ignore hotkeys to use g rather than i
- Updated salvageable ship intels to use the ship sprite as the icon rather than the map icon
- Fix bug that allowed players to use "lay in course" button to repeatedly salvage the same object.
(https://github.com/stormbringer951/CaptainsLog/raw/master/resources/message_gui_example.gif)