### Checkout Git Branch in IntelliJ Source: https://github.com/histidine91/nexerelin/blob/master/README.md Instructions for checking out a specific Git branch using IntelliJ's built-in VCS interface. ```IntelliJ IDEA Configuration - VCS for intellij is on the botton right corner. Click on that git ... and select some (remote/local) branch to check it out. - Repo is currently read-only, msg Histidine if you need write access. ``` -------------------------------- ### Standard GPL Copyright Notice for Source Files Source: https://github.com/histidine91/nexerelin/blob/master/gpl-2.0.txt This block of text should be attached to the start of each source file of a program intended to be distributed under the GNU General Public License. It includes the program's name, copyright holder, and a statement about the program being free software distributed without warranty under the GPL. ```Text Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ``` -------------------------------- ### Custom Start Script Modding API for Visibility Control Source: https://github.com/histidine91/nexerelin/blob/master/changelog.txt Describes new capabilities for custom start scripts, allowing mod developers to programmatically hide or disable their starts within the game's interface. This provides enhanced flexibility for mod integration and user experience. ```APIDOC // Example interface for custom start scripts interface ICustomStartScript { boolean shouldHideStart(); boolean shouldDisableStart(); } ``` -------------------------------- ### Configure JDK 1.7 in IntelliJ Project Structure Source: https://github.com/histidine91/nexerelin/blob/master/README.md Steps to add and configure JDK 1.7 in IntelliJ's Project Structure dialog, ensuring the project compiles with the correct Java version. ```IntelliJ IDEA Configuration - Then select File > Project Structure dialog. Now we need to set up jdk. - Click on the New... button, select JDK and navigate to your jdk installation folder. This should say 1.7 for jdk 1.7 after you select it. - Change project language level to be 7 for java 1.7. (Basically this allows the IDE to complain if you are using other jdk version features that are not compatible with the current language) ``` -------------------------------- ### Clone Nexerelin Repository in IntelliJ Source: https://github.com/histidine91/nexerelin/blob/master/README.md Steps to clone the Nexerelin Git repository directly within IntelliJ IDEA, setting the project directory to the Starsector mods folder for easier deployment. ```IntelliJ IDEA Configuration - After starting intellij, do File > New > Project from Version Control > Git - Paste the url in the box, something like https://github.com/Histidine91/Nexerelin.git - You can hit the test button to see if there is any connection issue. - Change the directory to be the starsector/mod directory. Usually I recommend separating out source folder and deployment folder, but this will make you life easier without having to set up a configuration to copy files over to the starsector/mod to deploy the changes. ``` -------------------------------- ### Mark ExerelinCore as Source Root in IntelliJ Source: https://github.com/histidine91/nexerelin/blob/master/README.md How to designate the 'ExerelinCore' folder as a source root in IntelliJ IDEA's project structure, essential for compilation. ```IntelliJ IDEA Configuration - First mark ExerelinCore folder as a Source folder on the project tab that is on the left. - Basically in that folder structure navigate to Nexerlin > jars > sources > ExerelinCore ; right click on that folder > Mark Directory As > Sources Root (it should be colored blue now) - All the java files that needed to be compiled are underneath that folder. ``` -------------------------------- ### Configure JVM for Remote Debugging Starsector Source: https://github.com/histidine91/nexerelin/blob/master/README.md This JVM argument enables remote debugging for the Starsector application. It sets up a Java Debug Wire Protocol (JDWP) agent to listen for debugger connections on a specified port (5005 in this case), allowing an IDE to attach and debug the running game. The 'suspend=n' option ensures the application starts immediately without waiting for a debugger to attach, while 'server=y' indicates that the JVM will act as the debugger server. ```Shell -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 ``` -------------------------------- ### Add External Libraries to IntelliJ Project Source: https://github.com/histidine91/nexerelin/blob/master/README.md Instructions to add required external JAR libraries (mod dependencies and Starsector API) to the IntelliJ project's classpath. ```IntelliJ IDEA Configuration - Go to the either Global Libraries or Libraries on the dialog (Global lib is shared between all of your intellij proj, lib is only for your current project) - Click on the green plus sign and select Java for a new java lib. - Select the jar folder for those mods libraries we downloaded earlier. i.e. Starsector\mods\LazyLib\jars - You will also need to select Starsector\starsector-core for the starsector api ``` -------------------------------- ### Build Nexerelin Project in IntelliJ Source: https://github.com/histidine91/nexerelin/blob/master/README.md How to trigger a project build in IntelliJ IDEA, which will generate or update the ExerelinCore.jar artifact based on the configured settings. ```IntelliJ IDEA Configuration - The green down arrow with binary 011001 will compile and build the project. Due to the previous setup, a new jar will replace that existing ExerelinCore.jar if you build the project. ``` -------------------------------- ### Set Compiler Output Path in IntelliJ Source: https://github.com/histidine91/nexerelin/blob/master/README.md Define the output directory for compiled classes in IntelliJ IDEA, directing them to the 'Starsector\mods\Nexerelin\jars\build' folder. ```IntelliJ IDEA Configuration - Compiler output folder should go to Starsector\mods\Nexerelin\jars\build (this folder should be under .gitignore so the build is not checked into source control) ``` -------------------------------- ### Configure JAR Artifact for Nexerelin in IntelliJ Source: https://github.com/histidine91/nexerelin/blob/master/README.md Steps to create and configure a JAR artifact in IntelliJ IDEA, specifying the output directory, name, and excluding bundled libraries to ensure proper deployment. ```IntelliJ IDEA Configuration - Go to Artifacts on the dialog. This will set up the jar artifact to be created after building. - Click the green plus and select JAR > From modules with dependencies - Output directory is: Starsector\mods\Nexerelin\jars - Check the include in project build - Rename that jar to be ExerelinCore.jar, it is under the Output Layout tab. We want this jar to overwrite the current one in the folder so it needs the same name. - Select everything under that ExerelinCore.jar and click on the red minus sign. We dont want it to contain the libs that we set up. - Then click on the green plus and select Module Output. - You can include a manifect file if you want, the main class should be: exerelin.utilities.versionchecker.VersionChecker.MainTask ``` -------------------------------- ### Interactive Program Startup Notice Template Source: https://github.com/histidine91/nexerelin/blob/master/gpl-2.0.txt This sample text provides a short notice to be displayed by interactive programs upon startup. It informs users about the program's copyright, lack of warranty, and conditions for redistribution, directing them to specific commands for more details. ```Text Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. ``` -------------------------------- ### Sample Copyright Disclaimer for Employers Source: https://github.com/histidine91/nexerelin/blob/master/gpl-2.0.txt This template provides a sample copyright disclaimer that an employer or school might sign to disclaim copyright interest in a program developed by an employee or student. It includes placeholders for the entity's name, program name, author, and signature details. ```Text Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice ``` -------------------------------- ### Starsector 0.96 Update: Listener Implementation Notes Source: https://github.com/histidine91/nexerelin/blob/master/jars/sources/ExerelinCore/exerelin/check_on_SS_update.txt Documentation of considerations and applications for 'player colonized' and 'deciv' listeners based on experiences during the Starsector 0.96 update cycle, including their utility and limitations for faction management. ```APIDOC Starsector 0.96 Update Notes: Listener Applications: - Use "player colonized" listener: - Applications: Faction setup nag script - Use "deciv" listener: - Applications: Sector manager (faction elimination) - noted as useless for determining previous owner, but useful for live faction checks. - Pre-deciv checker (existing functionality) ``` -------------------------------- ### Development To-Do List for Nexerelin Source: https://github.com/histidine91/nexerelin/blob/master/jars/sources/ExerelinCore/exerelin/campaign/intel/groundbattle/notes.txt A comprehensive list of pending development tasks for the Nexerelin project, covering features like NPC ground battles, combined arms bonuses, UI improvements, and the complex invasion fleet to ground forces conversion logic. This section details the current progress and remaining steps for key game mechanics. ```APIDOC Todo: - NPC ground battle - [do it when we can give orders to multiple units at once] Combined arms bonus? - For max bonus, base strength of infantry units must equal that of heavy arms - Bonus is proportional to the sine of their ratios - Compute on each move/deploy, for units in previous location and current one - Display estimated contribution of ground support in attack strength breakdown - Generate buffs - [can't display skills in good way] Commanders - [test] Orphans made - Invasion fleet -> ground forces conversion - Invasion has X marines, each fleet gets a share of this prorated by FP - When each fleet touches target, drop its marines off, and start ground battle event if it isn't already running - Units will start undeployed, teach AI how to deploy them - Each unit has a fleet and a route, check if fleet is close enough before allowing deployment - Check route if fleet is not alive - When autoresolving, drop every route's marines off at once (if they penetrate space defences) - Don't do this for routes that have dropped in non-autoresolve - Need a way to tag fleets/routes as already having unloaded their payload - Maybe store the route in a set in the intel - No, can't easily get route if performing raid from assignment AI - Save the route to fleet memory when generating it - Don't progress to patrol stage after raiding? Rather, wait until every route/fleet has raided - Alternatively, go to patrol stage, but allow continued raiding (WaitStage is an an ActionStage, so this works) - What happens if a raid occurs, but then player leaves and fleets despawn before all of them have raided? - This is fine if it remains in action stage (since it then autoresolves), but if it's now in the wait stage the remaining routes will do nothing) - I think in the end, waiting for every route is best - Progress so far: + Handle marines total + Update unit fleet/route check for deployment + Generate ground battle intel on first drop-off + If existing battle, pick a side to help (if neither valid, cancel invasion completely) + Add units to ground battle on each drop-off + Wait stage: return home if battle is over and we do not hold the market + Store already dropped routes + Action stage progresses when all routes are done + Player join existing battle: choose a side - Send reinforcement fleet from neighboring markets - Draw from response fleet? - Or is this too obvious a way to bait them out? ``` -------------------------------- ### Player Abilities and Costs Source: https://github.com/histidine91/nexerelin/blob/master/jars/sources/ExerelinCore/exerelin/campaign/intel/groundbattle/notes.txt Details the core abilities available to players, outlining their costs, effects, and prerequisites. Abilities include offensive actions like Bombardment and strategic support like Inspire and Electronic Warfare, each with specific resource requirements and tactical implications. ```APIDOC Abilities: Bombardment: - Costs X fuel, where X is a number multiplied by (size ^ 2). Ground Defenses doubles the cost, and Heavy Batteries prevents bombardment. - Inflicts damage on enemy units in the location. More effective when used for close support. - Disrupts the targeted industry. Inspire: - Costs 1 story point. - Recovers morale for all units. - Requires 2 points in Leadership Electronic Warfare: - Reduces enemy attack capability by 30%, and prevents giving orders. Lasts 1 turn. - Costs X supplies, where X is a number multiplied by (2 ^ size). - Requires Y points in fleetwide ECM (based on market size). Close Air Support: - Applies damage to target based on total OP of fighters in fleet. Bombers get a bonus. - Loses supplies and crew based on enemy ground defenses. - Bonuses for having fighter-related skills? ``` -------------------------------- ### Starsector 0.97 Update: Nexerelin Code Review Checklist Source: https://github.com/histidine91/nexerelin/blob/master/jars/sources/ExerelinCore/exerelin/check_on_SS_update.txt A comprehensive list of files, classes, methods, and components within the Nexerelin mod that require review and potential updates for compatibility with Starsector version 0.97, categorized by priority and impact. ```APIDOC Starsector 0.97 Update Checklist: Most likely to have changed: - NexCoreLifecyclePlugin Others: - ExerelinNewGameSetup - VanillaSystemsGenerator - rules.csv "vanilla overrides" - NexFleetInteractionDialogPluginImpl - NexFleetEncounterContext - Nex_PunitiveExpeditionManager - Nex_MarketCMD - Nex_SustainedBurnAbilityAI - Nex_AICores - NexHostileActivityEventIntel - NexHostileActivityManager - SSP_BattleCreationPluginImpl - InvasionFleetManager.getPatrolCombatFP() - Submarket plugins - Colony manager: getFreePortGrowthBonus() - Objective entity plugins Consideration for future changes: - Everything that uses Industries.TAG_UNRAIDABLE - CreateFleetPlugin (if implemented) ``` -------------------------------- ### Game Condition Types and Effects Source: https://github.com/histidine91/nexerelin/blob/master/jars/sources/ExerelinCore/exerelin/campaign/intel/groundbattle/notes.txt Describes various environmental and strategic conditions affecting gameplay, including their impact on attacker and defender capabilities. These conditions influence combat dynamics and communication effectiveness. ```APIDOC Condition types: Magnetic crust: attacker reorganizes after each move due to lack of communications Dust storm: reduced attack power for everyone? It already buffs defender attack power, maybe that's enough ``` -------------------------------- ### Strategic AI Modding API Enhancements Source: https://github.com/histidine91/nexerelin/blob/master/changelog.txt Details updates to the Strategic AI's executive module for mod developers. It highlights that `reapplyPriorityModifiers` is now called automatically by the AI module, simplifying modder responsibilities. Additionally, new getter methods are available to retrieve the number of actions a faction can take per meeting and the `StatBonus` required to modify this value, offering more control over AI behavior. ```APIDOC // Strategic AI Executive Module API // reapplyPriorityModifiers is now called automatically by the AI module. // Getters for AI action configuration: int getActionsPerMeeting(); StatBonus getStatBonusRequiredToChangeActions(); ``` -------------------------------- ### Configure Mining Fleets via settings.json Source: https://github.com/histidine91/nexerelin/blob/master/changelog.txt Explains how to enable or disable mining fleets by adding the `nex_enableMiningFleets` field to the game's `settings.json` configuration file. This field controls whether mining fleets are active in the game. ```APIDOC { "nex_enableMiningFleets": true } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.