001package com.fs.starfarer.api.impl.campaign.tutorial; 002 003import com.fs.starfarer.api.campaign.CampaignFleetAPI; 004import com.fs.starfarer.api.campaign.FleetAssignment; 005import com.fs.starfarer.api.campaign.SectorEntityToken; 006import com.fs.starfarer.api.campaign.StarSystemAPI; 007import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI; 008import com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI; 009import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseAssignmentAI; 010import com.fs.starfarer.api.util.Misc; 011 012public class TutorialLeashAssignmentAI extends BaseAssignmentAI { 013 014 protected StarSystemAPI system; 015 protected SectorEntityToken jumpPoint; 016 017 protected float elapsed = 0f; 018 protected float dur = 30f + (float) Math.random() * 20f; 019 protected SectorEntityToken toGuard; 020 021 public TutorialLeashAssignmentAI(CampaignFleetAPI fleet, StarSystemAPI system, SectorEntityToken toGuard) { 022 super(); 023 this.fleet = fleet; 024 this.system = system; 025 this.toGuard = toGuard; 026 027 giveInitialAssignments(); 028 } 029 030 @Override 031 protected void giveInitialAssignments() { 032 pickNext(); 033 } 034 035 @Override 036 protected void pickNext() { 037 fleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE, toGuard, 100f); 038 } 039 040 @Override 041 public void advance(float amount) { 042 super.advance(amount); 043 044 045 float dist = Misc.getDistance(fleet.getLocation(), toGuard.getLocation()); 046// if (fleet.getFaction().getId().equals(Factions.HEGEMONY)) { 047// System.out.println(fleet.getCurrentAssignment().getAssignment().name() + ", dist: " + dist); 048// } 049 050 if (dist > 1200 && fleet.getAI().getCurrentAssignmentType() == FleetAssignment.ORBIT_AGGRESSIVE) { 051 fleet.addAssignmentAtStart(FleetAssignment.ORBIT_PASSIVE, toGuard, 3f, null); 052 CampaignFleetAIAPI ai = fleet.getAI(); 053 if (ai instanceof ModularFleetAIAPI) { 054 // needed to interrupt an in-progress pursuit 055 ModularFleetAIAPI m = (ModularFleetAIAPI) ai; 056 m.getStrategicModule().getDoNotAttack().add(m.getTacticalModule().getTarget(), 1f); 057 m.getTacticalModule().setTarget(null); 058 } 059 } 060 } 061 062} 063 064 065 066 067 068 069 070 071 072 073 074