Fractal Softworks Forum

Please login or register.

Login with username, password and session length

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.

Topics - Starlight

Pages: [1]
1
Suggestions / Ship's Systems Suggestions
« on: June 17, 2012, 05:58:39 PM »
Hello all.  

Vandala  suggested I make a suggestion concerning my suggestion, so here it is in the Suggestion subforum, where I'm overexploiting the opportunity to overuse the word suggestion. Suggestions ensue.

Since we're getting Ship Systems soon, it does seem prudent however to try spark a wider thread concerning people's ideas for ship systems to be implemented in-game (or at least have the relevant tweakables added.) z: )

My three suggestions are thus:

Shield Focus

A togglable system which allows a ship to shrink it's shield diameter in exchange for shield efficiency.  

This system would provide for dynamic shield usage, particularly for narrow ships, which are currently disadvantaged by hugh shield bubbles massively expanding their frontal profile (and yes, I do make and like narrow ships with thin frontal profiles.)  This would allow a ship to alternate between the normally decent tactical protection and a thin, tough shield for head-on confrontations with other ships of a similar or larger size class, making it better able to evade and deflect that target's fire at the cost of added vulnerability to flank attacks and strike craft.

Sub-Suggestions:  Elliptical shield bubbles and custom shield effects. ^.^


Shield-Armour Brace

The shield bubble disappears and armour temporarily triples as the ship's hull shimmers with the colour of its shield effect.

Whilst ideally this system would split damage taken (2/1 ratio) between the ship's flux capacity and armour (obiously a double-edged sword as both take a beating) for ten seconds (requiring a cooldown of 20 seconds) I imagine it would be far less of a headache to code a system which temporarily sets the ship's shield type to none and applies a constant flux drain (1,5x shield upkeep) in order to temporarily treble the remaining armour of the ship.  Perfect for strike runs and limping tactical withdrawals alike.


Surge System

Any tap or press of the control to this system empties capacitors throughout the ship... energy weapons double in damage (their beams and bolts should widen!) and quadruple in flux cost.

You wouldn't want to use this system all the time because it will throw your ship's combat flux efficiency straight into the space toilet (the more powerful weapons may not fire at all,) but for the desperate or the expertly opportunistic, it can allow for a thrilling and decisive blow just as it's needed the most.  Subsequent quips are required by regulations.  

2
Current Fleet:



Download:
https://dl.dropbox.com/u/82949984/Starlight%27s%20Ships.rar

Features:

2 new factions
Campaign Integrated
Vanilla Balanced (input welcome)
8 new missions
16 new ships (and growing)
14 new types of wing (growing and including Corvettes)
26 new weapons (and more to come.)
Original Sound Effects
Original Weapon FX Graphics

I've temporarily dropped everything else to make this, I'm having a lot of fun with it.  This game is a lot of fun when you love starships and I love starships.  I started off making and modifying ships for my own pleasure, but then I was persuaded to share when I was asking for help setting up a station (I was sick of having to modify saves to fly my custom ships, I wanted to just buy them.).  

I'm trying to keep things balanced and sufficiently well meshed with the game's look and lore (again, input welcome) both in terms of content and the fluff surrounding it.  There seems to be a lot left to learn, though.  I'm trying wherever possible to add to the game's base content and work with the existing balance, trying not to reinvent the wheel.  All input/suggestions are particularly welcome here.

I'm making new ships and tinkering all the time, so I'll keep this topic up to date now and then.  ^.^

I'm particularly looking forwards to any and all new developments by Starfarer's makers and will be attempting to keep this mod as up to date as possible.  

Backstory:

Starlight was once himself a Starfarer until a chance discovery in a nearly-empty region of space.  Hidden amidst a cloud of extrasolar debris he found a mostly-destroyed, long-derelect factory ark of unknown origin.  He has since settled down to set up a shipyard amidst an asteroid belt to begin a profitable business producing modernised adaptations of the ancient, unused Starship designs he uncovered, along with the occasional bespoke starship to order.  

Starlight has refused affiliation with any of the great powers of space, but has several minor allies and a good amount of his own primary product.  Bearing a great dislike of slavers and pirates some have accused Starlight of running his own paramilitary, whilst he would say that his business was simply 'diverse.'

Introducing the Jade Claw Cartel!  

This mysterious organisation appeared from no-where to spread insidiously about the dark corners of the sector.  It's leadership is unknown but it seems intent upon warring constantly with Starlight's Shipyards in particular.  Utilising bought vessels, captured vessels manufactured by Starlight and a number of its own apparent designs not seen in any known history files, prompting suspicion that the Cartel may be more then a merely vicious and pervasive pirating and smuggling ring.  

Future Plans:

Extremely rough plans ahoy;

* 1 Make more family of weapons.  
* Fine tune current factions.
* Make some more ships for Independants.  
* Remove the incongruous 'comission' vessels from the Starlight faction and distribute to Independants.
* Make some missions, particularly some randomised scenarios.  

...around about here will be version 1.  

* In future, I'll probably consider further factions / extra stuff.
* See if anyone's interested in popping this into a compilation.  

Other Mod Comtaibility:

Here's the ones I've tested thoroughly, though I've generally not had many problems.
Compaitible:
Uomoz Corvus 16.5: Power Blocks (and associated individual mods.)
Incompatible:
None known!  Since integrating with Uomoz, ASP Technologies seems to work just fine!  Happiness and joy!


Mod Version Save Compaitibility:

When I post updates to this forum, I make sure that you should be able to just delete the old Starlight's Ships folder and replace it with the up-to-date version.  Nothing should break with existing save games and whilst the contents of stations wont immediately change, new ships and weapons should appear in faction fleets and should be delivered to stations via supply convoys.  

This should work every time unless you're upgrading from a version of the mod from before a break.  This means I've had to change some ship or weapon _id's or somthing of that nature.  This might be to prevent a conflict with an update to the base game or with a popular mod (particularly one I use myself.)

The only other exception is when content is added that will not break existing save games, but where the new content is not going to appear unless a new game is started, such as when the Jade Claw Cartel was added.  I'll note this with addition.

0.1
^
0.2
break - some ship files changed.
0.275
^
0.9.5.5.1 - addition
^
0.9.6.6.5
break - updated for new Starfarer version.
0.9.6.6.5.1
break - updated for new Starfarer version.
0.9.7
^
[current version]

Current Starfarer Version Compatibility:

54a

3
Modding / Faction mod, I beg thee, HELP!
« on: June 02, 2012, 08:42:16 AM »
I'm not entirely certain if one is meant to use this section of the forum precisely as such, but I'm rather stuck.  I'm trying to add my own faction and station to the game so that I can more easily buy my own custom ships.   However, despite a rusty knowledge of Java (from University 7 years ago) the bloody thing is stumping me.  

Following: http://fractalsoftworks.com/forum/index.php?topic=1282.0 this guide by Paul, I based most of the code from the Pirates faction whilst poking through Uomoz compilation and the Neutrino Corp mods for refence on how to add stations.  

It was initially telling me that I hadn't declared the starlightSpawnPoint class when I was certain I had.  I've tried importing every possibly relevant API that I can.  I changed package data.scripts.world.Corvus; to package data.scripts.world; in starlightSpawnPoint.java and the error which now has me is:

Quote
25572 [Thread-6] ERROR com.fs.starfarer.combat.D  - java.lang.RuntimeException: Error compiling [data.scripts.world.starlightGen]
java.lang.RuntimeException: Error compiling [data.scripts.world.starlightGen]
   at com.fs.starfarer.loading.scripts.ScriptStore$1.run(Unknown Source)
   at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: Compiling unit "data/scripts/world/starlightGen.java"
   at org.codehaus.janino.JavaSourceClassLoader.generateBytecodes(JavaSourceClassLoader.java:205)
   at org.codehaus.janino.JavaSourceClassLoader.findClass(JavaSourceClassLoader.java:157)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
   ... 2 more
Caused by: org.codehaus.commons.compiler.CompileException: File data/scripts/world/starlightGen.java, Line 28, Column 24: No applicable constructor/method found for actual parameters "com.fs.starfarer.api.campaign.SectorAPI, com.fs.starfarer.api.campaign.StarSystemAPI, int, int, com.fs.starfarer.api.campaign.SectorEntityToken, com.fs.starfarer.api.campaign.SectorEntityToken"; candidates are: "data.scripts.world.starlightSpawnPoint(com.fs.starfarer.api.campaign.SectorAPI, com.fs.starfarer.api.campaign.LocationAPI, float, int, com.fs.starfarer.api.campaign.SectorEntityToken)"
   at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:9014)
   at org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:6714)
   at org.codehaus.janino.UnitCompiler.invokeConstructor(UnitCompiler.java:5695)
   at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:3673)
   at org.codehaus.janino.UnitCompiler.access$6900(UnitCompiler.java:104)
   at org.codehaus.janino.UnitCompiler$11.visitNewClassInstance(UnitCompiler.java:2875)
   at org.codehaus.janino.Java$NewClassInstance.accept(Java.java:2922)
   at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:2890)
   at org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:3897)
   at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:3503)
   at org.codehaus.janino.UnitCompiler.access$6300(UnitCompiler.java:104)
   at org.codehaus.janino.UnitCompiler$11.visitMethodInvocation(UnitCompiler.java:2869)
   at org.codehaus.janino.Java$MethodInvocation.accept(Java.java:2831)
   at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:2890)
   at org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:3897)
   at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2326)
   at org.codehaus.janino.UnitCompiler.access$3800(UnitCompiler.java:104)
   at org.codehaus.janino.UnitCompiler$8.visitMethodInvocation(UnitCompiler.java:2299)
   at org.codehaus.janino.Java$MethodInvocation.accept(Java.java:2831)
   at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:2320)
   at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:1353)
   at org.codehaus.janino.UnitCompiler.access$800(UnitCompiler.java:104)
   at org.codehaus.janino.UnitCompiler$5.visitExpressionStatement(UnitCompiler.java:868)
   at org.codehaus.janino.Java$ExpressionStatement.accept(Java.java:1457)
   at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:888)
   at org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:914)
   at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1999)
   at org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:789)
   at org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:770)
   at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:464)
   at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:357)
   at org.codehaus.janino.UnitCompiler$3.visitPackageMemberClassDeclaration(UnitCompiler.java:312)
   at org.codehaus.janino.Java$PackageMemberClassDeclaration.accept(Java.java:770)
   at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:319)
   at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:288)
   at org.codehaus.janino.JavaSourceClassLoader.generateBytecodes(JavaSourceClassLoader.java:203)
   ... 5 more

Which cutting through the crap, seems to be telling me that when starlightGen.java tries to create the spawn in line 28, there's no format given for the constructor for starlightSpawnPoint, when I'm fairly sure that there is.  This seems awfully similar to the first error, in that starlightGen.java seems somewhat blind to starlightSpawnPoint.java.

Whilst I apologise for the amount of mess this will make, I'm going to post both files:

First, starlightGen.java:

Quote
package data.scripts.world;

import java.awt.Color;
import java.util.List;

import com.fs.starfarer.api.campaign.CampaignFleetAPI;

import com.fs.starfarer.api.campaign.CargoAPI;
import com.fs.starfarer.api.campaign.FactionAPI;
import com.fs.starfarer.api.campaign.FleetAssignment;
import com.fs.starfarer.api.campaign.SectorAPI;
import com.fs.starfarer.api.campaign.SectorEntityToken;
import com.fs.starfarer.api.campaign.SectorGeneratorPlugin;
import com.fs.starfarer.api.campaign.StarSystemAPI;
import com.fs.starfarer.api.campaign.CargoAPI.CrewXPLevel;
import com.fs.starfarer.api.fleet.FleetMemberType;

@SuppressWarnings("unchecked")
public class starlightGen implements SectorGeneratorPlugin {

   public void generate(SectorAPI sector) {
   
    StarSystemAPI system = sector.getStarSystem("Corvus");
          
      SectorEntityToken sol = system.createToken(0, 0);
          SectorEntityToken token = system.createToken(2000, 15000);
      SectorEntityToken SLstation = system.addOrbitalStation(sol, 144, 144, 144, "Starlight's Station",

"starlight");
      system.addSpawnPoint(new starlightSpawnPoint(sector, system, 5, 1, token, SLstation));
      starlightSpawnPoint SLSpawn = new starlightSpawnPoint(sector, system, 1, 2, SLstation);
      
      CargoAPI SLcargo = SLstation.getCargo();
      
      SLcargo.addCrew(CrewXPLevel.VETERAN, 50);
      SLcargo.addCrew(CrewXPLevel.GREEN, 100);
      SLcargo.addMarines(200);
      SLcargo.addSupplies(400);
      SLcargo.addFuel(500);
         
      SLcargo.addWeapons("miningblaster", 3);
      SLcargo.addWeapons("taclaser", 4);
      SLcargo.addWeapons("duallightac", 2);
      SLcargo.addWeapons("heavyac", 2);
      SLcargo.addWeapons("annihilator", 2);      
      SLcargo.addWeapons("lightag", 2);      
      SLcargo.addWeapons("lightmg", 2);      
      SLcargo.addWeapons("gravitonbeam", 2);      
      SLcargo.addWeapons("irpulse", 2);      
      SLcargo.addWeapons("hil", 2);      
      SLcargo.addWeapons("pulselaser", 2);      
      SLcargo.addWeapons("railgun", 2);      
      SLcargo.addWeapons("amblaster", 2);         
      SLcargo.addWeapons("pilum", 2);         
      SLcargo.addWeapons("vulcan", 2);         
      SLcargo.addWeapons("reaper", 2);      

      
      
      SLcargo.addMothballedShip(FleetMemberType.SHIP, "finch_skirmisher", null);   
      SLcargo.addMothballedShip(FleetMemberType.SHIP, "finch_skirmisher", null);   
      SLcargo.addMothballedShip(FleetMemberType.SHIP, "finch_skirmisher", null);   
      SLcargo.addMothballedShip(FleetMemberType.SHIP, "ferret_striker", null);   
      SLcargo.addMothballedShip(FleetMemberType.SHIP, "ferret_striker", null);   
      SLcargo.addMothballedShip(FleetMemberType.SHIP, "ocelot_striker", null);   
      SLcargo.addMothballedShip(FleetMemberType.SHIP, "ocelot_striker", null);   
      SLcargo.addMothballedShip(FleetMemberType.SHIP, "mars", null);   
      SLcargo.addMothballedShip(FleetMemberType.SHIP, "albatross_carrier", null);   
      SLcargo.addMothballedShip(FleetMemberType.SHIP, "xiver_howler", null);   
      SLcargo.addMothballedShip(FleetMemberType.SHIP, "satevis_assault", null);
      SLcargo.addMothballedShip(FleetMemberType.FIGHTER_WING, "waspe_wing", null);   
      SLcargo.addMothballedShip(FleetMemberType.FIGHTER_WING, "waspe_wing", null);   
      SLcargo.addMothballedShip(FleetMemberType.FIGHTER_WING, "waspe_wing", null);   
      SLcargo.addMothballedShip(FleetMemberType.FIGHTER_WING, "kipper_wing", null);      
      SLcargo.addMothballedShip(FleetMemberType.FIGHTER_WING, "kipper_wing", null);      
      SLcargo.addMothballedShip(FleetMemberType.FIGHTER_WING, "kipper_wing", null);      
      SLcargo.addMothballedShip(FleetMemberType.FIGHTER_WING, "starstrike_wing", null);   
      SLcargo.addMothballedShip(FleetMemberType.FIGHTER_WING, "starstrike_wing", null);   
      SLcargo.addMothballedShip(FleetMemberType.FIGHTER_WING, "starhunter_wing", null);   
      SLcargo.addMothballedShip(FleetMemberType.FIGHTER_WING, "starhunter_wing", null);   
      
      system.addSpawnPoint(SLSpawn);
      for (int i = 0; i < 3; i++) SLSpawn.spawnFleet();   

      FactionAPI starlight = sector.getFaction("starlight");
      
      starlight.setRelationship("hegemony", 0);
      starlight.setRelationship("tritachyon", 0);
      starlight.setRelationship("pirates", -1);
      starlight.setRelationship("independent", 0);
      starlight.setRelationship("player", 0);
         starlight.setRelationship("lotus_pirates", -1);       
    
   }
   }

...and starlightSpawnPoint.java:

Quote
package data.scripts.world;

import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.Script;
import com.fs.starfarer.api.campaign.CampaignFleetAPI;
import com.fs.starfarer.api.campaign.CargoAPI;
import com.fs.starfarer.api.campaign.FleetAssignment;
import com.fs.starfarer.api.campaign.LocationAPI;
import com.fs.starfarer.api.campaign.SectorAPI;
import com.fs.starfarer.api.campaign.SectorEntityToken;
import com.fs.starfarer.api.fleet.FleetMemberType;
import com.fs.starfarer.api.campaign.CargoAPI.CrewXPLevel;

import data.scripts.world.BaseSpawnPoint;

@SuppressWarnings("unchecked")
public class starlightSpawnPoint extends BaseSpawnPoint {

   public starlightSpawnPoint(SectorAPI sector, LocationAPI location, float daysInterval, int maxFleets,

SectorEntityToken anchor) {
      super(sector, location, daysInterval, maxFleets, anchor);
   }

   @Override
   protected CampaignFleetAPI spawnFleet() {
      //if ((float) Math.random() < 0.5f) return null;
      
      String type = null;
      float r = (float) Math.random();
      if (r > .9f) {
         type = "scout";
      } else if (r > 0.65f) {
         type = "raiders1";
      } else if (r > 0.45f) {
         type = "raiders2";
      } else if (r > 0.3f) {
         type = "raiders3";
      } else if (r > 0.15f) {
         type = "attackFleet";
      } else if (r > 0.05f) {
         type = "carrierGroup";
      } else {
         type = "armada";
      }
      
      
      CampaignFleetAPI fleet = getSector().createFleet("starlight", type);
      getLocation().spawnFleet(getAnchor(), 0, 0, fleet);
      
      fleet.setPreferredResupplyLocation(getAnchor());
      
      if (type.equals("scout") || type.equals("raiders1") || type.equals("raiders2") ||
                  type.equals("raiders3") || type.equals("attackFleet")) {
         fleet.addAssignment(FleetAssignment.RAID_SYSTEM, null, 10);
         fleet.addAssignment(FleetAssignment.GO_TO_LOCATION_AND_DESPAWN, getAnchor(), 1000);
      } else {
         if ((float) Math.random() > 0.5f) {
            fleet.addAssignment(FleetAssignment.RAID_SYSTEM, null, 30);
            fleet.addAssignment(FleetAssignment.GO_TO_LOCATION_AND_DESPAWN, getAnchor(), 1000);
         } else {
            fleet.addAssignment(FleetAssignment.DEFEND_LOCATION, getAnchor(), 20);
            fleet.addAssignment(FleetAssignment.GO_TO_LOCATION_AND_DESPAWN, getAnchor(), 1000);
         }
      }
      
      return fleet;
   }

}

As far as I can tell, the rest of its all fine (the faction file, the csv pointing to the faction and the csv pointing to starlightGen.)

If anyone can see what I've done wrong, I would be very, very grateful.  

Pages: [1]