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: Planet Search Overhaul (07/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 - FasterThanSleepyfish

Pages: [1] 2 3 ... 49
1
Blog Posts / Re: New music for Galatia Academy
« on: June 12, 2024, 10:24:36 AM »
The intent and thoughtfulness put into these pieces is fantastic. The piano compositions are also amazing by themselves, I wonder if they could be used in game at any point.

While brighter feel of the Galatia Academy piece compliments the institution's nature, but I can't help but wonder if it could feel a bit... grungier in some respects?

2
ShipSystemAPI.deactivate() *should* work, I believe, so that may be worth revisiting. If your ship system code just assumes the 20 second duration and does stuff, that wouldn't be interrupted, though, so depending on how it's implemented... well, it's just hard to say.

Thank you!! The ship.getTravelDrive().deactivate() methodology worked, BUT yes it must only be called after the GFX/final exit from warp is executed. Appreciate the help!  :-X

crimescene
Code: java
public class fed_TravelDriveStats extends BaseShipSystemScript {

    public static Logger log = Global.getLogger(fed_TravelDriveStats.class);

    @Override
    public void apply(MutableShipStatsAPI stats, String id, State state, float effectLevel) {

        //ShipAPI ship = null;
        CombatEngineAPI engine = Global.getCombatEngine();

        if (engine == null) {
            return;
        }
        if (engine.isPaused()) {
            //return;
        }

        Boolean validPlayerShip = false;
        // We can get ship APIs from a MutableShipStatAPI using getEntity()
        if (stats.getEntity() instanceof ShipAPI) { // Needed? maybe not, but I didn't touch bc im lazy
            ShipAPI ship = (ShipAPI) stats.getEntity();
           
            // Magic-ish number, will use later to make escaping fleets spawn inside the map (if they are far OoB, they autoescape)
            float retreatNerfMult = 0.05f;

            // We want ships to warp in from offscreen when deployed
           
            // We only want do this for newly deployed ships once.
            // So we will use some custom data (or lack thereof) to make sure the move-back is a one-off
           
            // Reminder: ship_systems.csv matters a lot to this travel drive. It runs on strict 20sec intervals
            // so that unfortunately means there are a few magic numbers here that mostly make it work as intended.
            // literally ill-advised modifications hullmod, but in IRL

            // Look for custom data tag to prevent double move-backs.
            // We will insert it once we move the ship back, but simply run stat changes/gfx if we see it.
            if (!ship.getCustomData().containsKey(id)) {

                // DEBUG
                /*log.info(
                        "Moving back - Ship ID: " + ship.getId()
                        + " | Ship FMID: " + ship.getFleetMemberId()
                        + " | Ship TimeDeployed: " + ship.getFullTimeDeployed()
                        + " | Ship Name: " + ship.getName());
               
                    for ( Object value : ship.getCustomData().values()) {
                    log.info(value.toString());
                    }

                log.info("Esc Dburn Dur " + engine.getContext().getEscapeDeploymentBurnDuration());
                    log.info("Flank Dburn Dist " + engine.getContext().getFlankDeploymentDistance());
                    log.info("Init Dburn Dur " + engine.getContext().getInitialDeploymentBurnDuration());
                    log.info("Init Esc Range " + engine.getContext().getInitialEscapeRange());
                    log.info("Init Num Step " + engine.getContext().getInitialNumSteps());
                    log.info("Init Step Size " + engine.getContext().getInitialStepSize());
                    log.info("Stdoff range " + engine.getContext().getStandoffRange());
                    log.info("Norm Dburn Dur " + engine.getContext().getNormalDeploymentBurnDuration());
                    log.info("Other goal " + engine.getContext().getOtherGoal());
                    log.info("player goal " + engine.getContext().getPlayerGoal());*/
               
               
                // Look for burn duration for new ships depending on battle context.
                // It appears ships don't ALWAYS burn in from offscreen, ex) they are being pursued and start in the lower area
                // or are pushed up to reinforce a station. Still WIP determination through playtesting.
               
                // First magic number. Gotta test via debugging printing log messages in all the various combat situations.
                // I think it's usually 1.5f? NormalDeploymentBurn is 6, and EscapeDeploymentBurn is 1.5 as well.
                // Don't quote me on that though
                float initalBurnSeconds = engine.getContext().getInitialDeploymentBurnDuration();
               
                // Second magic number, correlating with ship_system.csv's ACTIVE time for this travel drive.
                // Don't ask me why or how it works. Because it kinda doesn't if put under real scrutiny.
                float penalty = 10000f - engine.getMapHeight() * 0.03f;

                // So we need to deal with ships that sometimes CANNOT be moved offscreen, lest they auto-retreat
                // Thus we start with the player escaping.
                if (engine.getContext().getPlayerGoal() != null && engine.getContext().getPlayerGoal().equals(FleetGoal.ESCAPE)) {

                   // Magic number *** for NPC ships, don't make pursing starfed AI hostiles start too close yknow?
                    penalty = penalty - (1000f + engine.getMapHeight() * 0.03f);

                    // But here we make player warp-ins start much closer, but move much slower.
                    // This means they don't run off the map but still work with the 20 second ACTIVE time defined in the csv.
                    if (ship.getOwner() == engine.getPlayerShip().getOwner() || ship.isAlly()) {
                        retreatNerfMult = 0.3333333333f;
                        initalBurnSeconds = engine.getContext().getEscapeDeploymentBurnDuration() * 0.15f;
                        stats.getMaxSpeed().modifyMult(id, retreatNerfMult);
                        //Probably the most unreliable of magic numbers. Doesn't always place it on-point in retreating formations.
                        penalty = penalty * 0.4f - (1200f - engine.getMapHeight() * 0.05f);
                    }

                }
               
                // CASE: Enemy fleet is escaping. We can't move them too far back off the map or they autoretreat.
                if (engine.getContext().getOtherGoal() != null && engine.getContext().getOtherGoal().equals(FleetGoal.ESCAPE)) {
                   
                    // Wohoo magic numbers
                    initalBurnSeconds = engine.getContext().getEscapeDeploymentBurnDuration() * 0.15f;

                    if (ship.getOwner() == engine.getPlayerShip().getOwner() || ship.isAlly()) {
                        // What I determined to be the distance that friendly ships will burn to
                        // Even if starfed warping ships rushing past might make them stop halfway. Oops.
                        penalty = penalty - (2000f + engine.getMapHeight() * 0.05f);
                       
                    } else {
                        // this makes them really slow so they can start kinda on the map and not auto retreat.
                        retreatNerfMult = 0.16666666666f;
                        initalBurnSeconds = engine.getContext().getEscapeDeploymentBurnDuration() * 0.15f;
                        stats.getMaxSpeed().modifyMult(id, retreatNerfMult);
                        // A magic number I determined would make them start relatively fairly, like normal retreating ships.
                        penalty = penalty * 0.2f - (1200f - engine.getMapHeight() * 0.03f);
                    }
                }
               
                // We need to know how theoretically far back these ships are moving.
                // So we calcualte the burn time * the mostly-hard speed limit of combat entities, not accounting for time mults.
                float burnDistanceProbablyCovered = ((initalBurnSeconds * 610f));
               
                // Double that for our new burn time, as we will be moving back an additional distance.
                // Honestly these numbers are messed up or don't work at all...
                // They all rely on the 20 second ACTIVE time in the ship_systems.csv, you can't really
                // So you can't make ship travel drives turn on a set amount of time I think.
                float newTimeToBurn = ((initalBurnSeconds));
               
                // log.info("burnDistanceProbablyCovered " + burnDistanceProbablyCovered);
                // log.info("penalty " + penalty);

                // Now we determine what direciton we need to shift the ship "backwards", depending on heading.
                // Pretty sure the center of the map is 0,0 in terms of X, Y, with -X being the left and -Y being the south.
               
                // You can probably do this moveback purely by manipulating vectors... but I am not smart.
                   
                if (ship.getFacing() == 0f) {
                    // Facing 0 means facing to the left, so we add more X value to make it slide right.
                    ship.getLocation().setX(ship.getLocation().getX() - burnDistanceProbablyCovered - (penalty * 1.05f));
                    ship.turnOnTravelDrive(newTimeToBurn);
                   
                } else if (ship.getFacing() == 90f) {
                    // Facing 90 means facing upwards, so we reduce Y value to make the ship go lower
                    ship.getLocation().setY(ship.getLocation().getY() - burnDistanceProbablyCovered - penalty * 0.98f);
                    ship.turnOnTravelDrive();
                   
                } else if (ship.getFacing() == 180f) {
                    // Facing 180 means facing to the right, so we reduce the X value to make it slide left.
                    ship.getLocation().setX(ship.getLocation().getX() + burnDistanceProbablyCovered + (penalty * 1.05f));
                    ship.turnOnTravelDrive(newTimeToBurn);
                   
                } else if (ship.getFacing() == 270f) {
                    // Facing 270 means facing downards, so we add more Y value to make the ship go higher.
                    ship.getLocation().setY(ship.getLocation().getY() + burnDistanceProbablyCovered + penalty * 0.98f );
                    ship.turnOnTravelDrive(newTimeToBurn);
                   
                } else {
                    // If a ship is NOT in a designated facing, make it leave warp via the OUT state.
                    ship.getTravelDrive().forceState(ShipSystemAPI.SystemState.OUT, 0f);
                }
                //}

                // Moving and warping is done, so now we add the data value to ensure it doesn't get moved back again.
               
                // The TRUE value is used to signify the ship has been moved back out of the map.
                // A FALSE value in this custom data entry will prevent a second moveback given the customData exists at all, BUT...
                //   we will assume that FALSE means it has left warp, and FALSE can only be gained from the OUT function.
                // This entire complexity is because those allied ships you can reinforce in battle will have ACTIVE traveldrives
                //   that make them invisible and non-collidable. Unfortunately these ghost ships will remain ghosts because
                //   they refuse to enter the OUT stage unless the ACTIVE code has an exit somehow... hence the initial TRUE
                //   value indicating that the ship has not "left" warping and should probably leave via being forced into the OUT
                //   stage, thereby becoming tangible again and gaining a FALSE data value.
                ship.setCustomData(id, true);
            }

            // Do not keep doing graphics/stat mod stuff when the screen is paused
            if (engine.isPaused()) {
                return;
            }

            if (null != state) {
                switch (state) {
                   
                    case IN: // UNUSED, probably, ship has no "in" time definied in shipsystems.csv
                       
                        ship.setCustomData(id, true);
                        ship.setAlphaMult(1 - 1 * effectLevel);
                        ship.setCollisionClass(CollisionClass.FIGHTER);
                        // If a ship has modules, we need it to fade out/disable fleetshields too.
                        if (ship.isShipWithModules()) {
                            List<ShipAPI> modules = ship.getChildModulesCopy();
                            for (ShipAPI childModule : modules) {
                                childModule.setCollisionClass(CollisionClass.FIGHTER);
                                // Fookin null checks
                                if (childModule.getShield() != null) {
                                    if (childModule.getShield().getType() == (ShieldAPI.ShieldType.FRONT) || (childModule.getShield().getType() == ShieldAPI.ShieldType.OMNI)) {
                                        // Overkill never fails
                                        childModule.getShield().setArc(0f);
                                        childModule.getShield().setRadius(0f);
                                    }
                                }
                                childModule.setAlphaMult(1 - 0.8f * effectLevel);
                            }
                        }
                        // Gee, how come mom lets you have three explosions instead of one!
                        //    ... because I am a master of gfx, that's why.
                        fed_spawnTravelDriveExplosion(stats, ship, effectLevel);
                        fed_spawnTravelDriveExplosion(stats, ship, effectLevel);
                        fed_spawnTravelDriveExplosion(stats, ship, effectLevel);
                        break;

                    case ACTIVE:
                        // Hard to get allies already deployed ( IE you are reinforcing an existing battle ) out of this state.
                        // The if statement immediately below tries to solve that, it disqualifies most ships from using TD.
                        // But you can use the warp drive if retreating.
                        if (ship.getCustomData().get(id).equals(true) && !ship.isRetreating() && ship.getFullTimeDeployed() > 20f) {
                            ship.setCustomData(id, false);
                            effectLevel = 0;
                            ship.getTravelDrive().forceState(ShipSystemAPI.SystemState.OUT, 0f);
                        }

                        // Just make sure we know the ship has warped, cannot tell if it goes through logic above or not.
                        ship.setCustomData(id, true);
                       
                        // Make ship not bonk things when warping.
                        ship.setAlphaMult(1 - 0.9f * effectLevel);
                        ship.setPhased(true);
                        ship.setCollisionClass(CollisionClass.FIGHTER);

                        // Zoom
                        stats.getMaxSpeed().modifyFlat(id, 600f);
                        stats.getAcceleration().modifyFlat(id, 600f);
                       
                        // Only way to make it seem literally FTL, like tesseracts engaging temporal shell
                        stats.getTimeMult().modifyPercent(id, 600 * effectLevel);

                        // Some prerandomized variables to argument size in cosmetic particle calls
                       
                        // RENDER PARTICLES FOR WARPING SHIPS
                        /*ship.addAfterimage(
                            new Color(125, 125, 1, 255), //color
                            MathUtils.getRandomNumberInRange(-5f, 5f), //X Location rel to ship center
                            MathUtils.getRandomNumberInRange(-5f, 5f), //Y Location rel to ship center
                            (stats.getEntity().getVelocity().getX()) * -1f, //X Velocity
                            (stats.getEntity().getVelocity().getY()) * -1f, //Y Velocity
                            5f, //Max Jitter, units of distance
                            0f, //Fade-in time
                            0f, //Regular duration
                            0.5f, //Fade-out time
                            true, //Is Additive (whiteness adds up)
                            true, //Combine with sprite color
                            true); //Above ship
                         */
                        // GD modules need afterimages/no hitbox too waaaah
                        if (ship.isShipWithModules()) {
                            List<ShipAPI> modules = ship.getChildModulesCopy();
                            for (ShipAPI childModule : modules) {
                                childModule.addAfterimage(
                                        new Color(125, 100, 25, 55), //color
                                        MathUtils.getRandomNumberInRange(-5f, 5f), //X Location rel to ship center
                                        MathUtils.getRandomNumberInRange(-5f, 5f), //Y Location rel to ship center
                                        (stats.getEntity().getVelocity().getX()) * -1f, //X Velocity
                                        (stats.getEntity().getVelocity().getY()) * -1f, //Y Velocity
                                        5f, //Max Jitter, units of distance
                                        0f, //Fade-in time
                                        0f, //Regular duration
                                        0.2f, //Fade-out time
                                        true, //Is Additive (whiteness adds up)
                                        true, //Combine with sprite color
                                        true);
                                childModule.setCollisionClass(CollisionClass.FIGHTER);
                                // Morrrre null checks
                                if (childModule.getShield() != null) {
                                    if (childModule.getShield().getType() == (ShieldAPI.ShieldType.FRONT) || (childModule.getShield().getType() == ShieldAPI.ShieldType.OMNI)) {
                                        // Overkill
                                        childModule.getShield().setArc(0f);
                                        childModule.getShield().setRadius(0f);
                                    }
                                }
                                childModule.setAlphaMult(1 - 0.8f * effectLevel);
                            }
                        }
                       
                        // We don't always want to render the warp trail, keeps it lighter
                        fed_spawnTravelDriveWake(stats, ship, effectLevel);
                        break;

                    case OUT:
                        // Hard to trigger this unless forced when with exisiting battles with allies you are reinforcing.
                        // See first lines of code in ACTIVE state contents above.
                       
                        ship.setCustomData(id, false);
                        ship.setPhased(false);
                       
                        stats.getMaxSpeed().unmodify(id);
                        float shipExitSpeed = (stats.getDeceleration().modified) * 10 + ship.getMutableStats().getZeroFluxSpeedBoost().modified;
                        //engine.addFloatingText(ship.getLocation(), "Y: " + ship.getLocation().y, 15f, Color.RED, ship, 1f, 0.5f);
                        if (shipExitSpeed > 500f) {
                            shipExitSpeed = 500f;
                        }

                        if (ship.getHullSize().equals(ShipAPI.HullSize.CAPITAL_SHIP)) {
                            shipExitSpeed = (220f);
                        }

                        ship.getVelocity().scale(shipExitSpeed / (ship.getVelocity().length()));

                        stats.getTimeMult().unmodify(id);
                        ship.setAlphaMult(1 - 0.8f * effectLevel);

                        // Give modules back shields as we come out of warp.
                        //if (ship.getVelocity().length() <= ship.getMaxSpeed()) { //&& ship.getFullTimeDeployed() > 1) {
                        if (ship.isShipWithModules()) {
                            List<ShipAPI> modules = ship.getChildModulesCopy();
                            for (ShipAPI childModule : modules) {
                                if (!childModule.getVariant().hasHullMod("fed_fleetshieldeffect")) {
                                    childModule.setCollisionClass(CollisionClass.SHIP);
                                }
                                childModule.ensureClonedStationSlotSpec();
                                if (childModule.getShield() != null) {
                                    if (childModule.getShield().getType() == (ShieldAPI.ShieldType.FRONT) || (childModule.getShield().getType() == ShieldAPI.ShieldType.OMNI)) {
                                        childModule.getShield().setType(childModule.getHullSpec().getShieldType());
                                        childModule.getShield().setArc(childModule.getHullSpec().getShieldSpec().getArc());
                                        // This doesn't nuke shields because FederationDesign.java sets shield radiuses constantly.
                                        childModule.getShield().setRadius(0f);
                                    }
                                }
                                childModule.setAlphaMult(1f);
                            }
                        }
                       
                        stats.getEntity().setCollisionClass(CollisionClass.SHIP);
                       
                        ship.getTravelDrive().deactivate();
                        fed_spawnTravelDriveExplosion(stats, ship, effectLevel);
                        fed_spawnTravelDriveExplosion(stats, ship, effectLevel);
                        fed_spawnTravelDriveExplosion(stats, ship, effectLevel);
                       
                        // Immediate sound based on nearby arrivals
                        Global.getSoundPlayer().playSound(ship.getTravelDrive().getSpecAPI().getOutOfUsesSound(), 1, 1, ship.getLocation(), new Vector2f(0f, 0f));
                        // Faint UI sound for distant arrivals
                        Global.getSoundPlayer().playUISound(ship.getTravelDrive().getSpecAPI().getOutOfUsesSound(), 1, 0.1f);
                        //      }

                        break;

                    default: //Unused

                        break;
                }
            }
           
            /* DEBUGGING           
            log.info(
            " | Ship Name: " + ship.getName()
            + " | Ship TD State: " + ship.getTravelDrive().getState()
            + " | Ship Effect Level: " + ship.getTravelDrive().getEffectLevel()
            + " | Ship TimeDeployed: " + ship.getFullTimeDeployed()
            + " | Combat Time Elapsed: " + engine.getTotalElapsedTime(false)
            + " HAS DATA: " + ship.getCustomData().containsKey(id)
            );*/
        }
    }
@Override
    public void unapply(MutableShipStatsAPI stats, String id
    ) {

        stats.getTimeMult().unmodify(id);
        stats.getMaxSpeed().unmodify(id);
        stats.getAcceleration().unmodify(id);
        stats.getDeceleration().unmodify(id);
        stats.getMaxTurnRate().unmodify(id);
        stats.getMaxTurnRate().unmodify(id);
        stats.getTurnAcceleration().unmodify(id);
        stats.getTurnAcceleration().unmodify(id);
        Global.getCombatEngine().getTimeMult().unmodify(id);
    }
}
[close]

3
Hiya, hope you're having a good one

I am implementing a custom travel drive that can move ships offscreen and warp them in very fast. Checks for the presence of ship getCustomData() in the beginning of the apply() function of the drive's stats script, moving it back a significant distance if it does not find the data and adds it after moving the ship.

In the ship_systems.CSV, this Travel Drive uses a 20 second duration, 1 second out/cooldown, and it is NOT a "Toggle" ship system because the ships deactivate the drive very easily (if, say, they are too far out of bounds, or if they pass near a ship, ect).

In short, the script currently works good when the cases where ships are first deployed. Early in combat, with no ships on the board.

However, if the player moves in to assist a friendly ally to fleet, all predeployed allies start with their Travel Drive in the active state (according to debug statements). Various code-based attempts to deactivate it hasn't worked, but I am still trying various ways, and it seems they don't deactivate after a 20 second period either.

My question is, despite all this over-explanation of nonsense, is it possible to get a brief explanation what ships go through of the "steps" feature in CombatEngineAPI().getContext(). And also, how does the travel drive behave during this period - specifically why they do not appear to activate the Out state - that's where I perform the de-phasing of the traveling ships.

4
Any news of updates ?

Hey guys, gals, and spacers. I'm still alive and kicking, although some health issues have made it hard to work on Star Federation. I'm currently in the middle of another batch of content creation and editing, and I'm pivoting towards some campaign stuff soon.

Thanks for being patient, and I'm sorry it's not ready in time for the update. You can go ahead and use the current version by changing the version line in mod_info.json, but be advised this next update will break saves.

5
Hi. I am new to Starsector modding. Is it compatible with previous 0.95.1a-RC6 version of the game?

Apologies, it is not. I unfortunately forgot keep a compatible version with Starsector 0.95.1a RC6.

Ah, hi!

I am highly unsure if I am seeing things wrong, as i am arguably not the grand master of observation, haha- But, but it really seems like to me that, uhhh the fleet ship, the Perseverance if I got it right- It's fleetshield module doesn't seem to vent flux? I tested it in simulations and even in live battles, it just doesn't get rid of any of its flux, only getting rid of it via overload. I am not sure if that is intended or not, since the tooltip for the fleetshield makes note of a flux dissipation statistic, which confuses me regarding this matter. But probably misunderstanding something here, just wanna check for sure!

Oh also, question number two of mine that I've been wondering of, is there a way to propagate upgrades/enhancements to the shield modules themselves?
Do officer skills / hullmods or any other such thing affect them, or are their stats set in stone? Just wondering bout that.

Either way, love this mod a lot! I can't help but drift towards star federation weaponry and ships regardless of what faction I want to stick with, every run.

Hello! Yes, the fleetshield does have dissipation, but it is only soft flux dissipation by default. The only case where that changes is if an officer with shield modulation commands the ship, which gives it the ability to dissipate hard flux. It is supposed to have the always on shield, which gives it 8x the dissipation when it's overloaded.

Thank you for enjoying it!

6
Could you keep the old version Accordant-class Battlecruiser as another version
it is a very good player ship. I like it's mobility and close range play style. The new version is so slow.
Is it possible make plasma burn ram don't sometimes flameout?For example onslaught(GH) from tahlan workshop can ram with no flameout

I dunno about you, but I got a bit tired of the old Accordant. It was an Odyssey with nearly no "traits" like having to turn or rely on fighters. Just rush forward and kill, or be killed. The Mantis, Stormwalker, and Nesasio are essentially the same playstyle. Plus, now the Federation Legion exists as the signature "dash head-first into danger" boat!

The tariffs for the StarFed-added markets (in Fed_Octavia.java) shouldn't have their tariffs set to 50%. Vanilla default is 30% (which is already arguably too high, hence Nex's modifier for tariffs).

Sorry, I will reduce it to 40% for new campaigns.  :( But how else would they fund their massive military? Besides, the Octavia system has great places to dump your salvage like metals, so taking a penalty to profits is kind of a tradeoff.

The 'wings' on the Rebellion and Mod-Rebellion are in very slightly different places - visible if you rapidly switch between them in the refit screen. It's not a lot, but once you see it you can't unsee it. And now I'm not sure which version is the actually centered one, or if either is centered at all...

Vanilla modules are actually not "precisely" rendered on ship sprites in the refit screen. I am fairly sure they are mirrored in the ship editor! (If not, I will fix!)

Yeah they were all slightly askew, fixed that on my end. :-[

Nice to play with this mod again, nice new sprites and THANK YOU for giving the legion some love.

One problem for me : the changes for the Kestrel.

...

PS : Love the new missiles ! Always try to add them in my loadouts.

Thanks! Glad the Legion is serving well.

As for the Kestrel, I am sorry. I did at least increase its durability considerably, making it a much better anchor than a utility-heavy fighter. I will consider giving it back the omni shield, but it does have one more PD turret than the last iteration.

7
Appreciate the mod and thanks so much for your work on it!
Looks like there is a typo in the ship data for the kestrel as of .99 RC5. its needing 225 supplies per month maintenance

Got it fixed, methinks. Oops. Redownload if you didn't already fix it by yourself!

8


Hi folks, thanks for the patience in getting a proper "update" out. This one reworks the Nesasio sprite, buffs the Accordant (because the Pegasus and Executor exist, heh), and has custom relation texts. Plus a few more things, maybe I forgor [skull emoji].

Download in the main post!

Changelog

==========RC5===========

________GENERAL_________

-Added custom relation texts in the campaign

-Shortened planetary descriptions and docking prompts

-Legion (SF) should actually appear as a derelict in new games
   -Can still be a historian BP drop in saves using RC4
   -Stoopid fishe

-Federation Construction
   -Shield arc losses from 50/60/80/65% -> 45/50/55/60%
   -Weapon RoF changer no longer affects missiles
   -Removed debug floating-texts on disabled engines

-Probably some other things I forgot

_________SHIPS__________

-Legion (SF)
   -Reduced armor from 1550 -> 1400
   -Increased flux dissipation from 550-> 750
   -Increased flux capacity to 12000(?) -> 16000

-Accordant-class Battlecruiser
   -Trying to make it feel more tanky, but still mobile enough
   -Armor/hull increased to 1400/12500 respectively (about 20%)
   -Speed reduced from 60 -> 50
   -Increased shield efficiency from 0.9 -> 0.8
   -Increased flux capacity to 17000
   -Interdictor Array base range increased from 1000 to 1200

-Rebellion-class Battleship
   -Gained Missile Micro-replicator hullmod
   -Power Surge range increased from 1000 -> 1500

-Mod Rebellion-class Battleship
   -Large ballistic turrets changed to energy
   -Lost Heavy Ballistics Integration hullmod
   -Gained Integrated Burst Capactiors hullmod
   -Gained Missile Micro-replicator hullmod
   -Power Surge range increased from 1000 -> 1500

-Kestrel-class Cruiser
   -4 frontal small energies changed to ballistic
   -Universal mediums changed to ballistic
   -Flux dissipation increased from 550 -> 600
   -Removed Missile Microforge hullmod
   -Armor increased from 800 -> 1000
   -Hull increased from 7000 -> 10000
   -Armored Prow reflects changes to durability
   -Increased shield efficiency from 1 -> 0.9
   -Added Missile Autoloader hullmod
   -Added a rear small hybrid turret

-Nesasio-class Infiltrator
   -Sprite updated
   -Added one small energy mount replacing front coil
   -Changed small hardpoints from universals to missiles

-Cormorant-class Bomber Destroyer
   -Central ballistic turret is now Composite
   -Added Missile Micro-replicator hullmod.

________WEAPONS_________

-Red Drum launcher
   -Fires 3 shots, 1000 damage each
   -Changed sprite to reflect this

-Barracuda Torpedo Launcher
   -Damage changed from frag to energy
   -Torpedo acceleration increased from 25 to 150

-Hull Beam I, II
   -Decreased flux/damage ratio from ~0.9 -> ~0.4

-Most missiles
   -Increased HP to ~400
[close]

9
I picked the right time to try this mod out! Thoughts so far:

Thank you, glad you enjoy it! And yeah I suppose the "fleetshield" is more of a suffocation shield, heh. I *could* make it shrink if an enemy ship gets inside, and make it take more damage too. Good ideas...

The download to github shows a "Not Found" page.

I added a Google Drive direct link, let me know how that goes!

you left out the Daptrius on the image that shows all the ships

Ooops... Fixed that, and the missing Cavalcade.

10


Well HELLO Starsector update 0.96! Have a quick patch for your Generic Brandâ„¢ Star Federation

Download in the main post!

Changelog + Accordant sprite update

==========RC4===========

-Patched for Starsector update 0.96a
-Complied with MagicLib filename changes
-Minor stat adjustments here and there, nothing too big
-Definitely forgot some other minor things

-Accordant-class Battlecruiser
-Sprite updated, mounts mostly the same
-Speed actually increased to 60
-Shield efficiency increased from 1.1 -> 0.9
-Interdictor system no longer affects fighters
[close]

11
Heeey gentleladies, lads and lovely folk: Update time! And thank you for all your kind words! Hard to find time and energy to mod these days, but it's coming along at least.



So much has changed! I didn't keep the best track of it...
THE STAR FEDERATION

VERSION 0.99 by Sleepyfish (and friends)

BREAKS 0.98 SAVES, BE CAREFUL!

==========RC3===========
   
-Accordant-class Battlecruiser
   -Speed reduced from 70 -> 60
   -OP reduced from 300 -> 280
   -Capacity reduced from 20000 to 18000
-Union-class Battlecruiser
   -Changed mounts, only small energies are in plenty!
   -OP reduced from 285 -> 275
   -Hull/armor increased to 11000/1100
   -Deja vu?
-Resolute-class Battleship
   -Fixed an HE invulnerability bug
-Calvacade-class Battlecarrier
   -Speed increased from 45 -> 50
-Osprey-class Crusier
   -Shield efficiency reduced from 0.7 -> 0.8

-Hull Beam (all sizes)
   -Increased HE arc damage by 25%
-Glaive/Halberd Beam
   -Damage increased by ~10% all around
   -EMP component re-added
-Ion Flooder
   -Range reduced from 800 -> 750
   -Flux/shot 700 -> 880
-Artemis Array
   -Increased ammo to 32
   -Reduced cooldown to 6 seconds
-Artemis Launcher
   -Cooldown reduced to 12 seconds
-Pitch/Chisel/Carver
   -Reduced damage by 25%
-Light Overcharger
   -Flux and damage nerfed by 10%
   -Gains like 5% more ammo/second wow


==========RC2===========

-Accordant-class Battlecruiser
   -Increased speed from 60 -> 70,
   -Accel/decel increased from ~25% to ~40% of top speed/sec
   -Shield upkeep reduced from 0.4->0.3
   -Increased HP/Armor from 10000/1100 -> 12000/1200
-Union-class Battlecarrier
   -Dissipation reduced from 750 -> 700
   -Shield upkeep reduced from 0.4 -> 0.3
   -Shield efficiency increased 0.8 -> 0.7
   -Shield arc changed from 300 Frontal to 180 Omni
   -Weapon arcs changed to prefer a broadside
-Resolute-class Battleship
   -Fixed Auxiliary shield not removing HE resistence debuff
   -Dissipation increased from 650 -> 700
-Osprey-class Cruiser
   -Increased dissipation from 750 -> 800
   -Increased shield efficiency from 0.8 -> 0.7
-Jager-class Crusier
   -Fixed spelling error that prevented ZOLTAN shield effects
-Nesasio
   -Added Federation Construction hullmod (oops)
   -Added Integrated Burst Capacitors
-Stormwalker
   -Added Integrated Burst Capacitors
-Polyp
   -Added Integrated Burst Capacitors

-Interdictor Device
   -Added charges, second charge unlocks with System Expertise
   -Recharge rate slowed to 1 per 20 seconds (previously 1 per 16)

-Volley Fire shipsystem
   -Uptime reduced from 5 to 1.5
   -Cooldown increase from 14 -> 17.5

-Mooneye MRM missiles
   -HP reduced to 100/missile
   -Ammo counts reduced by roughly 20% or more.
-Dace MRM missiles
   -HP reduced to 200/missile
   -Ammo counts reduced by roughly 15% or more.
-Artemis torpedoes
   -Reduced ammo by one volley per launcher.

==========RC1===========

-Accordant-class Battlecruiser
   -Improved with custom Interdictor Device ship system
      -Custom EMP arcs come from emitters on ship
      -Should work more consistently than vanilla Interdictor
      -Fires out 2x2000 and 2x1000 EMP arcs at things that have no engines
-Jager-class Cruiser
   -Granted ZOLTAN shield module
   -Removed ECM hullmod
   -Added missing turret points on the sprite
-Additional descriptions fixed

=======PREVIEW 4=========

-Truly resolved the semi-rare "alpha" crash, thanks to SirBucketKicker on discord!

-MOST SHIPS HAVE FRONTAL SHIELDS
   -Adjusted many stats all around now that they have "bad" shields
-Rebellion-class Battleship
   -Increased projectiles from 180 -> 200 min, 360 -> 400 max
   -System overload infliction increased from 0 -> 4 sec min, 10 -> 12 sec max
-Accordant-class Battlecruiser
   -Speed increased to 60
   -System is now "Interdictor Array" to help pin down enemy ships
   -Removed built in Devastator, reverted to additional large energy mount
-Coordinated Strike system
   -Allowed zero-flux boost to function during system activation.
-Micromissile Forge system
   -Timers now need missing ammo to count down
   -Each timer only checks ammo counts for the missile damage range it affects
   -The 20% replenishment effect now uses base ammo, not modified ammo.
-Emerillion/Magenillion
   -Greatly increased recoil stats on the main weapons
   -Gave ~20% more flux stats overall
   -DP from 16 -> 18.
-Description/text changes continued
-As always, probably some more stuff slipped by


=======PREVIEW 3=========

-Properly redid shield color changes, value precautions are not relied upon.
-Fixed Jager shipsystem not removing buffs
-Fixed superbright shields for all Federation ships
-Nerfed Glaive beam w/ slightly higher flux generation
-Increased duration of all Hull beams by 0.2 seconds
-Increased cooldown of Ion Flooder by 0.7 seconds
-Maybe some other changes, but mostly focused on the shield crash.


=======PREVIEW 2=========

-Buffed Union shields from 1.0 to 0.8
-Fiddled with shield code, hopefully solves the bad RGB thing.
   -Never happens to me...! :(
-Now uses JRE7 (icky gross)
-Maybe some other things I forgot?

========WEAPONS==========
   
   -Added several new missile weapons, poor tracking but funny arcing damage.
      -Mooneye MRM - kinetic missile in S/M/L.
      -Dace MRM - HE missile with a minor HE arc effect in S/M.
            -Barracuda - Slow frag torpedo with big shock. BEEG SHOCK FOR MADAME.
      -Red Drum - HE torp, superheavy Dace kinda?
      -Swarm Battery got stronger but has limited ammo.

   -Beam changes, nerfs
      -Hull beams are frag with HE arcs
      -Glaive/Halberd damage nerfs, now pierce small things
      -New sounds all around
   
   -Removed a lot of itty bitty EMP values floating around various weapons.

=========SHIPS===========

   -Wayyy too many changes overall
      -Balances, revisions, ect. Some notable ones below.
   -Resolute got big guns, big armor, big slow.
   -Accordant got wings clipped
   -Rebellion got slightly nerfed ship system
   -Perserverance got huge buff in nearly every department, costs more DP.
   -Major Jager rework, new missile buffing ship system

   -Fleet and ZOLTAN shields now give ships immunity to most damage
      -A green glow appears when a ship is "protected"

   -Federation station got more modules overall, variant work done.

   -Hopefully frigates seem better while everything else is moving sideways at most.
   

========HULLMODS=========
   
   -Federation Design got a tooltip fancy overhaul
      -Provides modest 100 range bonus to energy weapons
      -Provides Cruise Engines to all ships
   -Heavy Burst Capacitors/Integrated Burst Capacitors
      -No longer provides range
      -Chunky 30% more damage, -30% firerate.

========GENERAL==========
   
   -Huge description update in progress
      -Many thanks to friendly USC folks like CABLES and Wisp for editing help!
   -Scaria has a custom sprite, is terran eccentric
   -New weapon sounds sourced and modified from Muse, as per terms of use.
   -I probably forgor (skull emoji)
[close]

Download in the main post!

12
Just a general inquiry for everyone here: do you see the pirate versions of the bell and invader in pirate fleets often?

Rare, but they are usually pretty good! I don't see them too often, but they are diluted by pirate content from mods like Underworld and Torchships.

Is the Dorito suppose to run away in the A Dragon Reborn Quest?

They do if you use overwhelming DP/FP fleets... but that's on me for not making it an Automated Defense encounter. The Magiclib flag for no_retreat doesn't seem to work.  :(

I've started running into an odd bug... I'm only posting this here because I've only noticed it on FED ships so far.

Ough, that sounds like a doozy. I'm not sure how that could happen - video proof and a mod list would help a lot, I believe.

Overall this is my favorite faction mod, outshining the UAF, Scalar tech tolutions, Diable Avionincs, and all the others. The Emerillion/Magnellion is really fun to use.

Thanks!! I always have dreams about what the mod could be, but I ain't a good modder haha. Perhaps one day someone will pick it up for the better? Also: the Resolute was initially done by FlyingFlip as a ship representing the "concept" art of the Kestrel from early FTL prototypes. It's neat!
Spoiler
[close]

13
Download link in the main post still leads to RC3.
Yep but you can download the current version by copying the link, manually pasting it in your address bar and changing the 3 to a 6.

If you can't wait for it to be fixed.

 Annnnd fixed. Oh god. Thank you.

14
Hi,

I love this mod but am running into a weird issue where all derelict ships are spawning as Star Fed ships. Is there any reason that might have happened? It could be a mod conflict and I will do some more testing if there is not an easy fix.

Thanks!

Hello, the patch above *should* stop it from spawning more derelicts. The version that placed derelicts was 0.98-RC5, which was only available on the Unofficial Starsector Discord, and only had that issue when you used Nexerelin's Random Mode. Did you grab the update yet?

15
Thank you for the kind words, all!

Be glad you didn't download 0.95 from the Unofficial Starsector Discord - it had a rather silly bug in Nexerelin Random Mode that respawned the derelicts every time.

Anyways, micro update time to fix that... with some stuff I wanted to release as part of a big Weapons update. Also tournament rebalancing - I tried to make ship stats generally higher so they're useful outside of player hands. (Yes, this means buffs, lawhd forbid. :()



RC6:
Spoiler
========WEAPONS==========
   
   -Added Hull Beam, Hull Beam II
      -Weaker HE beam with heavy frag damage arcs, scales with enemy hull size.
   -Added Pike Beam
      -Longboi beam designed to suppress from a distance. Probably disgusting.
      -Creates low damage frag arcs when impacting hull, scaling on enemy hull size.
   -Added Microbeam
      -Basically a mini pikebeam, but no range.
      -Really good damage potential for a small beam weapon.
   -Glaive, Halberd beams
      -Increased damage numbers slightly. Could be scary.
      -Slightly increased refire delay.
      -Pierce/arc damage scales with hullsize.
      -New sounds, old sounds given to Hull beams.
   -Artillery Beam
      -Increased power of beam arcs on shield/hull, including EMP.
      -Always penetrates shields, but will only arc at half the rate.
   -Ion Flooder
      -Changed. Again. Now a constant fire, mag limited weapon.
      -Greatly increased EMP from 400/shot to 600/shot.

=========SHIPS===========

   -Accordant
      -Flux capacity buff from 18000 -> 22000.
      -Disspation increased from 1000 -> 1200.
      -Shield efficiency improved from 1.2 -> 1.0
      -Stop casually losing to Onslaughts >:(
      -Ship system rework coming soon??
   -Union
      -Nerfed flux capacity to 22000 -> 18000.
      -Nerfed disspation from 1200 -> 1000.
      -Shield efficiency improved from 1.0 -> 0.8.
      -Stop casually soloing Onslaughts (in player hands) >:(
   -Kestrel
      -Prow Armor Module hull increased from 4000 -> 5000.
      -Increased arcs of medium weapon slots, collision be damned.
      -Added Cruise Engines hullmod.

========HULLMODS=========
   
   -Reduced Cost of Heavy Burst Capacitors to 3/6/9/12

========GENERAL==========
   
   -Star Federation derelicts wont respawn every save load in Random Sector.
   -Star Federation stations are now compatible with the Ind.Evo artillery station!
   -Star Federation Star Fortress has distinct armor modules in campaign/sprite/previews.
   -Probably some other things.
      
[close]
Download in the main post!

Pages: [1] 2 3 ... 49