001package com.fs.starfarer.api.impl.campaign; 002 003import com.fs.starfarer.api.EveryFrameScript; 004import com.fs.starfarer.api.Global; 005import com.fs.starfarer.api.campaign.CampaignFleetAPI; 006import com.fs.starfarer.api.campaign.FleetAssignment; 007import com.fs.starfarer.api.campaign.SectorEntityToken; 008import com.fs.starfarer.api.campaign.ai.FleetAssignmentDataAPI; 009import com.fs.starfarer.api.util.IntervalUtil; 010import com.fs.starfarer.api.util.Misc; 011 012public class SmugglingFactionChangeScript implements EveryFrameScript { 013 014 private CampaignFleetAPI fleet; 015 private String origFaction; 016 private IntervalUtil tracker = new IntervalUtil(0.1f, 0.3f); 017 public SmugglingFactionChangeScript(CampaignFleetAPI fleet) { 018 this.fleet = fleet; 019 origFaction = fleet.getFaction().getId(); 020 } 021 022 public void advance(float amount) { 023 float days = Global.getSector().getClock().convertToDays(amount); 024 tracker.advance(days); 025 if (tracker.intervalElapsed() && fleet.getAI() != null) { 026// if (fleet.getContainingLocation().equals(Global.getSector().getPlayerFleet().getContainingLocation())) { 027// float dist = Misc.getDistance(fleet.getLocation(), Global.getSector().getPlayerFleet().getLocation()); 028// if (dist < 500 && fleet.getFaction().getId().equals(Factions.INDEPENDENT)) { 029// System.out.println("sf3r2f"); 030// } 031// } 032 FleetAssignmentDataAPI assignment = fleet.getAI().getCurrentAssignment(); 033 if (assignment != null && assignment.getAssignment() != FleetAssignment.STANDING_DOWN) { 034 SectorEntityToken target = assignment.getTarget(); 035 if (target != null && target.getFaction() != null) { 036 boolean targetHostile = target.getFaction().isHostileTo(origFaction); 037 boolean mathchesTarget = fleet.getFaction().getId().equals(target.getFaction().getId()); 038 boolean mathchesOrig = fleet.getFaction().getId().equals(origFaction); 039 float dist = Misc.getDistance(fleet.getLocation(), target.getLocation()); 040 if (dist < target.getRadius() + fleet.getRadius() + 1000) { 041 if (targetHostile && !mathchesTarget) { 042 fleet.setFaction(target.getFaction().getId(), true); 043 } 044 } else { 045 if (!mathchesOrig) { 046 fleet.setFaction(origFaction, true); 047 } 048 } 049 } 050 } 051 } 052 } 053 054 public boolean isDone() { 055 return false; 056 } 057 058 public boolean runWhilePaused() { 059 return false; 060 } 061 062}