001package com.fs.starfarer.api.impl.campaign.events.nearby; 002 003import org.lwjgl.util.vector.Vector2f; 004 005import com.fs.starfarer.api.Global; 006import com.fs.starfarer.api.campaign.CampaignFleetAPI; 007import com.fs.starfarer.api.campaign.FleetAssignment; 008import com.fs.starfarer.api.campaign.SectorEntityToken; 009import com.fs.starfarer.api.campaign.StarSystemAPI; 010import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseAssignmentAI; 011import com.fs.starfarer.api.util.Misc; 012 013public class DistressCallPirateAmbushTrapAssignmentAI extends BaseAssignmentAI { 014 015 protected StarSystemAPI system; 016 protected SectorEntityToken jumpPoint; 017 018 protected float elapsed = 0f; 019 protected float dur = 30f + (float) Math.random() * 20f; 020 021 public DistressCallPirateAmbushTrapAssignmentAI(CampaignFleetAPI fleet, StarSystemAPI system, SectorEntityToken jumpPoint) { 022 super(); 023 this.fleet = fleet; 024 this.system = system; 025 this.jumpPoint = jumpPoint; 026 027 giveInitialAssignments(); 028 } 029 030 @Override 031 protected void giveInitialAssignments() { 032 pickNext(); 033 } 034 035 @Override 036 protected void pickNext() { 037 float angle = Misc.getAngleInDegrees(system.getCenter().getLocation(), jumpPoint.getLocation()); 038 float dist = Misc.getDistance(system.getCenter().getLocation(), jumpPoint.getLocation()) + 3000f; 039 040 angle += (float) Math.random() * 10f - 20f; 041 dist += (float) Math.random() * 500f; 042 043 Vector2f loc = Misc.getUnitVectorAtDegreeAngle(angle); 044 loc.scale(dist); 045 Vector2f.add(system.getCenter().getLocation(), loc, loc); 046 047 SectorEntityToken token = system.createToken(loc.x, loc.y); 048 fleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE, token, 3f, "laying in wait"); 049 } 050 051 @Override 052 public void advance(float amount) { 053 super.advance(amount); 054 055 float days = Global.getSector().getClock().convertToDays(amount); 056 057 elapsed += days; 058 059 if (elapsed >= dur) { 060 Misc.giveStandardReturnToSourceAssignments(fleet); 061 } 062 } 063 064} 065 066 067 068 069 070 071 072 073 074 075 076