Starsector API
Loading...
Searching...
No Matches
TutorialLeashAssignmentAI.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.tutorial;
2
3import com.fs.starfarer.api.campaign.CampaignFleetAPI;
4import com.fs.starfarer.api.campaign.FleetAssignment;
5import com.fs.starfarer.api.campaign.SectorEntityToken;
6import com.fs.starfarer.api.campaign.StarSystemAPI;
7import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI;
8import com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI;
9import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseAssignmentAI;
10import com.fs.starfarer.api.util.Misc;
11
12public class TutorialLeashAssignmentAI extends BaseAssignmentAI {
13
14 protected StarSystemAPI system;
15 protected SectorEntityToken jumpPoint;
16
17 protected float elapsed = 0f;
18 protected float dur = 30f + (float) Math.random() * 20f;
19 protected SectorEntityToken toGuard;
20
21 public TutorialLeashAssignmentAI(CampaignFleetAPI fleet, StarSystemAPI system, SectorEntityToken toGuard) {
22 super();
23 this.fleet = fleet;
24 this.system = system;
25 this.toGuard = toGuard;
26
28 }
29
30 @Override
31 protected void giveInitialAssignments() {
32 pickNext();
33 }
34
35 @Override
36 protected void pickNext() {
37 fleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE, toGuard, 100f);
38 }
39
40 @Override
41 public void advance(float amount) {
42 super.advance(amount);
43
44
45 float dist = Misc.getDistance(fleet.getLocation(), toGuard.getLocation());
46// if (fleet.getFaction().getId().equals(Factions.HEGEMONY)) {
47// System.out.println(fleet.getCurrentAssignment().getAssignment().name() + ", dist: " + dist);
48// }
49
50 if (dist > 1500 && fleet.getAI().getCurrentAssignmentType() == FleetAssignment.ORBIT_AGGRESSIVE) {
51 fleet.addAssignmentAtStart(FleetAssignment.ORBIT_PASSIVE, toGuard, 3f, null);
52 CampaignFleetAIAPI ai = fleet.getAI();
53 if (ai instanceof ModularFleetAIAPI) {
54 // needed to interrupt an in-progress pursuit
55 ModularFleetAIAPI m = (ModularFleetAIAPI) ai;
56 m.getStrategicModule().getDoNotAttack().add(m.getTacticalModule().getTarget(), 1f);
57 m.getTacticalModule().setTarget(null);
58 }
59 }
60 }
61
62}
63
64
65
66
67
68
69
70
71
72
73
74
TutorialLeashAssignmentAI(CampaignFleetAPI fleet, StarSystemAPI system, SectorEntityToken toGuard)