001package com.fs.starfarer.api.impl.campaign.abilities; 002 003import com.fs.starfarer.api.Global; 004import com.fs.starfarer.api.campaign.CampaignFleetAPI; 005import com.fs.starfarer.api.campaign.FleetAssignment; 006import com.fs.starfarer.api.campaign.JumpPointAPI; 007import com.fs.starfarer.api.campaign.StarSystemAPI; 008import com.fs.starfarer.api.campaign.SectorEntityToken.VisibilityLevel; 009import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseAssignmentAI; 010import com.fs.starfarer.api.util.Misc; 011 012public class DistressCallResponsePirateAssignmentAI extends BaseAssignmentAI { 013 014 protected StarSystemAPI system; 015 016 protected float elapsed = 0f; 017 protected float dur = 30f + (float) Math.random() * 20f; 018 protected boolean contactedPlayer = false; 019 020 protected final JumpPointAPI inner; 021 protected final JumpPointAPI outer; 022 023 public DistressCallResponsePirateAssignmentAI(CampaignFleetAPI fleet, StarSystemAPI system, JumpPointAPI inner, JumpPointAPI outer) { 024 super(); 025 this.fleet = fleet; 026 this.system = system; 027 this.inner = inner; 028 this.outer = outer; 029 030 giveInitialAssignments(); 031 } 032 033 @Override 034 protected void giveInitialAssignments() { 035 if (fleet.isInHyperspace()) { 036 fleet.addAssignment(FleetAssignment.GO_TO_LOCATION, outer, 20f); 037 } 038 fleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE, inner, 10f + 5f * (float) Math.random()); 039 } 040 041 @Override 042 protected void pickNext() { 043 Misc.giveStandardReturnToSourceAssignments(fleet); 044 } 045 046 @Override 047 public void advance(float amount) { 048 super.advance(amount); 049 050 if (fleet.isInCurrentLocation() && !contactedPlayer) { 051 VisibilityLevel level = fleet.getVisibilityLevelOfPlayerFleet(); 052 if (level != VisibilityLevel.NONE && level != VisibilityLevel.SENSOR_CONTACT) { 053 contactedPlayer = true; 054 fleet.addAssignmentAtStart(FleetAssignment.INTERCEPT, Global.getSector().getPlayerFleet(), 3f, "approaching your fleet", null); 055 } 056 } 057 } 058 059} 060 061 062 063 064 065 066 067 068 069 070 071