Skip to content

Commit

Permalink
Update src/ to 0.96a-RC10
Browse files Browse the repository at this point in the history
  • Loading branch information
jaghaimo committed May 20, 2023
1 parent 80c02e2 commit 97a58f6
Show file tree
Hide file tree
Showing 28 changed files with 195 additions and 42 deletions.
1 change: 1 addition & 0 deletions src/com/fs/starfarer/api/campaign/FactionAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@ public static ShipPickParams imported() {

void initSpecIfNeeded();
JSONObject getCustomJSONObject(String key);
float getVariantWeightForRole(String roleId, ShipPickMode mode);


}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1260,6 +1260,7 @@ private void createInitialPeople() {
} else {
person.setImportanceAndVoice(PersonImportance.MEDIUM, StarSystemGenerator.random);
}
person.addTag(Tags.CONTACT_MILITARY);

market.getCommDirectory().addPerson(person);
market.addPerson(person);
Expand Down Expand Up @@ -1296,6 +1297,8 @@ private void createInitialPeople() {
person.setImportanceAndVoice(PersonImportance.MEDIUM, StarSystemGenerator.random);
}

person.addTag(Tags.CONTACT_MILITARY);

market.getCommDirectory().addPerson(person);
market.addPerson(person);
ip.addPerson(person);
Expand Down Expand Up @@ -1324,6 +1327,8 @@ private void createInitialPeople() {
person.setImportanceAndVoice(PersonImportance.VERY_LOW, StarSystemGenerator.random);
}

person.addTag(Tags.CONTACT_TRADE);

market.getCommDirectory().addPerson(person);
market.addPerson(person);
ip.addPerson(person);
Expand All @@ -1346,6 +1351,11 @@ private void createInitialPeople() {
person.setImportanceAndVoice(PersonImportance.VERY_LOW, StarSystemGenerator.random);
}

person.addTag(Tags.CONTACT_MILITARY);
person.addTag(Tags.CONTACT_TRADE);
if (StarSystemGenerator.random.nextFloat() < 0.2f) {
person.addTag(Tags.CONTACT_UNDERWORLD);
}

market.getCommDirectory().addPerson(person);
market.addPerson(person);
Expand All @@ -1369,6 +1379,8 @@ private void createInitialPeople() {
person.setImportanceAndVoice(PersonImportance.MEDIUM, StarSystemGenerator.random);
}

person.addTag(Tags.CONTACT_TRADE);

market.getCommDirectory().addPerson(person);
market.addPerson(person);
ip.addPerson(person);
Expand Down
3 changes: 2 additions & 1 deletion src/com/fs/starfarer/api/impl/campaign/DModManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ public class DModManager {
public static boolean setDHull(ShipVariantAPI variant) {
//if (!variant.getHullSpec().isDHull()) {
variant.setSource(VariantSource.REFIT);
if (!variant.isDHull()) {
//if (!variant.isDHull()) {
if (!variant.getHullSpec().isDefaultDHull()) {
String dHullId = Misc.getDHullId(variant.getHullSpec());
ShipHullSpecAPI dHull = Global.getSettings().getHullSpec(dHullId);
variant.setHullSpecAPI(dHull);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
import com.fs.starfarer.api.campaign.FactionAPI;
import com.fs.starfarer.api.campaign.FleetAssignment;
import com.fs.starfarer.api.campaign.SectorEntityToken;
import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI.ActionType;
import com.fs.starfarer.api.campaign.ai.FleetAssignmentDataAPI;
import com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI;
import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI.ActionType;
import com.fs.starfarer.api.campaign.rules.MemoryAPI;
import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
import com.fs.starfarer.api.util.IntervalUtil;
Expand Down Expand Up @@ -144,6 +144,10 @@ protected void seeIfFleetShouldRespond(CampaignFleetAPI fleet) {
protected void respond(CampaignFleetAPI fleet) {
unrespond(fleet);

// if (fleet.getContainingLocation() != null && fleet.getContainingLocation().getName().startsWith("Corvus")) {
// System.out.println("fwefwe");
// }
//fleet.getAssignmentsCopy().get(0)
Misc.setFlagWithReason(fleet.getMemoryWithoutUpdate(),
MemFlags.FLEET_MILITARY_RESPONSE, params.responseReason, true, (1.5f + (float) Math.random()) * 0.2f);

Expand All @@ -169,9 +173,15 @@ protected void respond(CampaignFleetAPI fleet) {
protected void unrespond(CampaignFleetAPI fleet) {
Misc.setFlagWithReason(fleet.getMemoryWithoutUpdate(),
MemFlags.FLEET_MILITARY_RESPONSE, params.responseReason, false, 0f);
boolean firstOrbitPassive = true;
for (FleetAssignmentDataAPI curr : fleet.getAI().getAssignmentsCopy()) {
if (RESPONSE_ASSIGNMENT.equals(curr.getCustom())) {
fleet.getAI().removeAssignment(curr);
} else if (curr.getAssignment() == FleetAssignment.ORBIT_PASSIVE && firstOrbitPassive) {
// "preparing for patrol" or some such, very likely - don't want to go back to that
// after the response is done
fleet.getAI().removeAssignment(curr);
firstOrbitPassive = false;
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,8 @@ public static LocationDanger getDangerFor(String factionId, StarSystemAPI system
return getDangerFor(getFactionStrength(factionId, system), getEnemyStrength(factionId, system));
}
public static LocationDanger getDangerFor(float factionStrength, float enemyStrength) {
if (enemyStrength < 100) return LocationDanger.NONE;

float f = enemyStrength / Math.max(1f, factionStrength + enemyStrength);
for (LocationDanger level : LocationDanger.vals) {
float test = level.enemyStrengthFraction + (level.next().enemyStrengthFraction - level.enemyStrengthFraction) * 0.5f;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ public Map<String, String> getTokenReplacements() {
} else {
tokens.put("$marketSystem", "hyperspace");
}
tokens.put("$marketName", market.getName());
tokens.put("$market", market.getName());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,15 +141,18 @@ public void reportPlayerOpenedMarket(MarketAPI market) {
if (random.nextFloat() < officerProb) {
boolean merc = random.nextFloat() < mercProb;
AvailableOfficer officer = createOfficer(merc, market, random);
officer.person.setPortraitSprite(pickPortraitPreferNonDuplicate(officer.person.getFaction(), officer.person.getGender()));
//officer.person.setPortraitSprite(pickPortraitPreferNonDuplicate(officer.person.getFaction(), officer.person.getGender()));
// always independent at this point
officer.person.setPortraitSprite(pickPortraitPreferNonDuplicate(market.getFaction(), officer.person.getGender()));
officer.timeRemaining = dur;
addAvailable(officer);
log.info("Added officer at " + officer.marketId + "");

if (random.nextFloat() < officerProb * additionalProb) {
merc = random.nextFloat() < mercProb;
officer = createOfficer(merc, market, random);
officer.person.setPortraitSprite(pickPortraitPreferNonDuplicate(officer.person.getFaction(), officer.person.getGender()));
//officer.person.setPortraitSprite(pickPortraitPreferNonDuplicate(officer.person.getFaction(), officer.person.getGender()));
officer.person.setPortraitSprite(pickPortraitPreferNonDuplicate(market.getFaction(), officer.person.getGender()));
officer.timeRemaining = dur;
addAvailable(officer);
log.info("Added officer at [" + officer.marketId + "]");
Expand All @@ -159,7 +162,8 @@ public void reportPlayerOpenedMarket(MarketAPI market) {
if (random.nextFloat() < adminProb) {
AvailableOfficer officer = createAdmin(market, random);
officer.timeRemaining = dur;
officer.person.setPortraitSprite(pickPortraitPreferNonDuplicate(officer.person.getFaction(), officer.person.getGender()));
//officer.person.setPortraitSprite(pickPortraitPreferNonDuplicate(officer.person.getFaction(), officer.person.getGender()));
officer.person.setPortraitSprite(pickPortraitPreferNonDuplicate(market.getFaction(), officer.person.getGender()));
addAvailableAdmin(officer);
log.info("Added admin at [" + officer.marketId + "]");
}
Expand Down Expand Up @@ -262,6 +266,9 @@ public void removeAvailable(AvailableOfficer officer) {
}

public static String pickPortraitPreferNonDuplicate(FactionAPI faction, Gender gender) {
if (faction == null) {
faction = Global.getSector().getFaction(Factions.INDEPENDENT);
}
WeightedRandomPicker<String> all = faction.getPortraits(gender);
WeightedRandomPicker<String> picker = new WeightedRandomPicker<String>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,23 @@ protected void addRouteFleetIfPossible() {

StarSystemAPI sysFrom = data.from.getStarSystem();
StarSystemAPI sysTo = data.to.getStarSystem();

// if (sysFrom.getName().startsWith("Rama") ||
// sysTo.getName().startsWith("Rama")) {
// System.out.println("32ff32f23");
// }

LocationDanger dFrom = WarSimScript.getDangerFor(factionId, sysFrom);
LocationDanger dTo = WarSimScript.getDangerFor(factionId, sysTo);

LocationDanger danger = dFrom.ordinal() > dTo.ordinal() ? dFrom : dTo;

if (sysFrom != null && sysFrom.isCurrentLocation()) {
// the player is in the from location, don't auto-lose the trade fleet
// let it get destroyed by actual fleets, if it does
danger = LocationDanger.NONE;
}

// if (danger != LocationDanger.NONE) {
// System.out.println("efwe234523fwe " + danger.name());
// dFrom = WarSimScript.getDangerFor(factionId, sysFrom);
Expand Down
18 changes: 12 additions & 6 deletions src/com/fs/starfarer/api/impl/campaign/fleets/FleetFactoryV3.java
Original file line number Diff line number Diff line change
Expand Up @@ -1651,14 +1651,20 @@ public static void addCombatFleetPoints(CampaignFleetAPI fleet, Random random,
Set<String> usePriorityOnly = new HashSet<String>();

if (params.mode == ShipPickMode.PRIORITY_THEN_ALL) {
if (faction.getNumAvailableForRole(ShipRoles.COMBAT_CAPITAL, ShipPickMode.PRIORITY_ONLY) > 0) {
priorityCapitalPicker.add(ShipRoles.COMBAT_CAPITAL, doctrine.getWarships());
float num = faction.getVariantWeightForRole(ShipRoles.COMBAT_CAPITAL, ShipPickMode.PRIORITY_ONLY);
if (num > 0) {
//priorityCapitalPicker.add(ShipRoles.COMBAT_CAPITAL, doctrine.getWarships() + 1);
priorityCapitalPicker.add(ShipRoles.COMBAT_CAPITAL, num);
}
if (faction.getNumAvailableForRole(ShipRoles.CARRIER_LARGE, ShipPickMode.PRIORITY_ONLY) > 0) {
priorityCapitalPicker.add(ShipRoles.CARRIER_LARGE, doctrine.getCarriers());
num = faction.getVariantWeightForRole(ShipRoles.CARRIER_LARGE, ShipPickMode.PRIORITY_ONLY);
if (num > 0) {
//priorityCapitalPicker.add(ShipRoles.CARRIER_LARGE, doctrine.getCarriers() + 1);
priorityCapitalPicker.add(ShipRoles.CARRIER_LARGE, num);
}
if (faction.getNumAvailableForRole(ShipRoles.PHASE_CAPITAL, ShipPickMode.PRIORITY_ONLY) > 0) {
priorityCapitalPicker.add(ShipRoles.PHASE_CAPITAL, doctrine.getPhaseShips());
num = faction.getVariantWeightForRole(ShipRoles.PHASE_CAPITAL, ShipPickMode.PRIORITY_ONLY);
if (num > 0) {
//priorityCapitalPicker.add(ShipRoles.PHASE_CAPITAL, doctrine.getPhaseShips() + 1);
priorityCapitalPicker.add(ShipRoles.PHASE_CAPITAL, num);
}

if (params.mode == ShipPickMode.PRIORITY_THEN_ALL) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,8 @@ public String getActionText(CampaignFleetAPI fleet) {

@Override
public void advance(float amount) {
// if (Misc.getDistance(Global.getSector().getPlayerFleet(), fleet) < fleet.getRadius()) {
// if (fleet.isInCurrentLocation() &&
// Misc.getDistance(Global.getSector().getPlayerFleet(), fleet) < fleet.getRadius()) {
// System.out.println("ewfwefwe");
// }
super.advance(amount);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,12 +251,13 @@ public void createSmallDescription(TooltipMakerAPI info, float width, float heig
// info.showPlanetInfo(jangala, 100, 100, true, opad);
// info.showPlanetInfo(jangala, 50, 50, false, opad);
// info.showPlanetInfo(jangala, width, width, true, opad);
// info.addCheckbox(300, 20, "Test", "TEST", UICheckboxSize.LARGE, 10f);
}

// @Override
// public void buttonPressConfirmed(Object buttonId, IntelUIAPI ui) {
// super.buttonPressConfirmed(buttonId, ui);
// System.out.println("TESTING");
// System.out.println("TESTING " + buttonId);
// }
//
// private static void addBlueprintEntry(TooltipMakerAPI listPanel, ShipVariantAPI blueprint) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -833,7 +833,8 @@ public void reportBattleOccurred(CampaignFleetAPI fleet, CampaignFleetAPI primar

if (!battle.isPlayerInvolved()) return;

if (Global.getSector().getCurrentLocation() instanceof StarSystemAPI) {
if (Global.getSector().getCurrentLocation() instanceof StarSystemAPI &&
battle.getPlayerSide().contains(primaryWinner)) {
StarSystemAPI system = (StarSystemAPI) Global.getSector().getCurrentLocation();
for (CampaignFleetAPI otherFleet : battle.getNonPlayerSideSnapshot()) {
if (otherFleet.isStationMode()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,11 @@ protected boolean create(MarketAPI createdAt, boolean barEvent) {

setDefaultGARepRewards();

// beginStageTrigger(Stage.DELIVER_VIP);
// LocData data = new LocData(EntityLocationType.HIDDEN_NOT_NEAR_STAR, null, system);
// triggerSpawnShipGraveyard(Factions.REMNANTS, 10, 10, data);
// endTrigger();

piratePayment = genRoundNumber(40000, 60000);
mercPayment = getCreditsReward() / 2;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2738,6 +2738,8 @@ public SectorEntityToken spawnDerelictOfType(DerelictType type, LocData data) {
}

public SectorEntityToken spawnDerelict(DerelictShipData shipData, LocData data) {
if (shipData == null) return null;

if (!data.updateLocIfNeeded(this, Entities.WRECK)) return null;

SectorEntityToken entity = BaseThemeGenerator.addSalvageEntity(genRandom, data.system, Entities.WRECK, Factions.NEUTRAL, shipData);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1797,7 +1797,16 @@ public SectorEntityToken pickEntity(boolean resetSearch) {


protected void findMatchingMarkets() {
List<MarketAPI> markets = Global.getSector().getEconomy().getMarketsCopy();
List<MarketAPI> markets = new ArrayList<MarketAPI>();;
for (MarketAPI market : Global.getSector().getEconomy().getMarketsCopy()) {
if (market.hasTag(Tags.NOT_RANDOM_MISSION_TARGET)) {
continue;
}
if (market.getPlanetEntity() != null && market.getPlanetEntity().hasTag(Tags.NOT_RANDOM_MISSION_TARGET)) {
continue;
}
markets.add(market);
}
// System.out.println("BEGIN");
// for (MarketAPI curr : markets) {
// System.out.println(curr.getName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.fs.starfarer.api.campaign.FleetAssignment;
import com.fs.starfarer.api.campaign.ai.FleetAssignmentDataAPI;
import com.fs.starfarer.api.campaign.comm.IntelInfoPlugin;
import com.fs.starfarer.api.impl.campaign.ids.Factions;
import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
import com.fs.starfarer.api.util.Misc;

Expand All @@ -27,6 +28,10 @@ public void advance(float amount) {
// System.out.println("MFAD: " + fleet.getName());
// if (fleet.getName().equals("Courier")) {
// System.out.println("fwefwf23f");
// }
// System.out.println(fleet.getName());
// if (fleet.getName().equals("Mercenary Bounty Hunter")) {
// System.out.println("efwefweew");
// }
boolean missionImportant = fleet.getMemoryWithoutUpdate().getBoolean(MemFlags.ENTITY_MISSION_IMPORTANT);
FleetAssignmentDataAPI ad = fleet.getCurrentAssignment();
Expand All @@ -35,9 +40,19 @@ public void advance(float amount) {
if (ad != null &&
(ad.getAssignment() == FleetAssignment.INTERCEPT || ad.getAssignment() == FleetAssignment.FOLLOW) &&
ad.getTarget() == Global.getSector().getPlayerFleet() &&
!fleet.isInCurrentLocation() && !missionImportant) {
float dist = Misc.getDistanceLY(fleet, Global.getSector().getPlayerFleet());
if (dist > 4f) {
!missionImportant) {
CampaignFleetAPI pf = Global.getSector().getPlayerFleet();
if (!fleet.isInCurrentLocation()) {
float dist = Misc.getDistanceLY(fleet, Global.getSector().getPlayerFleet());
if (dist > 4f) {
fleet.removeFirstAssignment();
if (fleet.getCurrentAssignment() == null) {
Misc.giveStandardReturnToSourceAssignments(fleet);
}
}
}
else if (fleet.isHostileTo(pf) && fleet.getFaction() != null &&
!fleet.getFaction().isHostileTo(Factions.PLAYER)) {
fleet.removeFirstAssignment();
if (fleet.getCurrentAssignment() == null) {
Misc.giveStandardReturnToSourceAssignments(fleet);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,8 @@ protected void addRedPlanet(ThemeGenContext context) {
if (curr.isMoon()) continue;
if (!curr.getMarket().isPlanetConditionMarketOnly()) continue;

if (curr.hasTag(Tags.NOT_RANDOM_MISSION_TARGET)) continue;

float dist = system.getLocation().length() + random.nextFloat() * 6000;
if (curr.getMarket().hasCondition(Conditions.HABITABLE)) {
if (dist > habDist) {
Expand Down Expand Up @@ -301,6 +303,8 @@ protected void addSolarShadesAndMirrors(ThemeGenContext context) {

int num = 2 + random.nextInt(3);

//System.out.println("RANDOM CHECK: " + random.nextLong());

if (DEBUG) System.out.println("Adding up to " + num + " solar shades and mirrors");
List<Constellation> list = new ArrayList<Constellation>(context.constellations);
WeightedRandomPicker<PlanetAPI> picker = new WeightedRandomPicker<PlanetAPI>(random);
Expand Down Expand Up @@ -774,6 +778,7 @@ protected void addPKSystem(ThemeGenContext context) {
if (curr.isGasGiant()) continue;
if (!curr.getMarket().isPlanetConditionMarketOnly()) continue;
if (curr.getCircularOrbitRadius() < 6000) continue;
if (curr.hasTag(Tags.NOT_RANDOM_MISSION_TARGET)) continue;
count++;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ public int getHandlingPriority(Object params) {
MiscellaneousThemeGenerator.PK_CACHE_KEY)) {
return 2;
}
return 0;
return -1;
}
public float getQuality(SDMParams p, float quality, Random random, boolean withOverride) {
return quality;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.fs.starfarer.api.impl.campaign.rulecmd;

import java.util.List;
import java.util.Map;

import com.fs.starfarer.api.campaign.InteractionDialogAPI;
import com.fs.starfarer.api.campaign.PersonImportance;
import com.fs.starfarer.api.campaign.rules.MemoryAPI;
import com.fs.starfarer.api.util.Misc.Token;

/**
* gte = greater than or equals
* ImportanceAtLeast $importance test
*/
public class ImportanceAtLeast extends RepIsAtWorst {

public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
String s1 = params.get(0).getString(memoryMap);
String s2 = params.get(0).getString(memoryMap);
PersonImportance value = PersonImportance.valueOf(s1);
PersonImportance test = PersonImportance.valueOf(s2);
return value.ordinal() >= test.ordinal();
}

}
2 changes: 2 additions & 0 deletions src/com/fs/starfarer/api/impl/campaign/rulecmd/KantaCMD.java
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,8 @@ public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> p
}

public static void loseProtection(InteractionDialogAPI dialog) {
if (!playerHasProtection()) return;

PersonAPI kanta = People.getPerson(People.KANTA);
if (kanta != null) {
Misc.incrUntrustwortyCount();
Expand Down
Loading

0 comments on commit 97a58f6

Please sign in to comment.