Starsector API
Loading...
Searching...
No Matches
RecentUnrestEvent.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.events;
2
3import com.fs.starfarer.api.Global;
4import com.fs.starfarer.api.campaign.events.CampaignEventTarget;
5import com.fs.starfarer.api.impl.campaign.ids.Conditions;
6
7public class RecentUnrestEvent extends BaseEventPlugin {
8
9 public static final float DAYS_PER_STAGE = 10f;
10 private float elapsedDays = 0f;
11 private int stabilityPenalty = 0;
12 private String conditionToken = null;
13
14 public void init(String type, CampaignEventTarget eventTarget) {
15 super.init(type, eventTarget, false);
16 }
17
18 public void startEvent() {
19 super.startEvent(true);
20 if (market == null) {
21 endEvent();
22 return;
23 }
24
25 conditionToken = market.addCondition(Conditions.RECENT_UNREST, this);
26 }
27
28 public void advance(float amount) {
29 if (!isEventStarted()) return;
30 if (isDone()) return;
31
32 float days = Global.getSector().getClock().convertToDays(amount);
33 elapsedDays += days;
34
35 if (elapsedDays >= DAYS_PER_STAGE) {
36 elapsedDays -= DAYS_PER_STAGE;
37 stabilityPenalty--;
38 market.reapplyCondition(conditionToken);
39 }
40
41 if (stabilityPenalty <= 0) {
42 endEvent();
43 }
44 }
45
46 private boolean ended = false;
47 private void endEvent() {
48 if (market != null && conditionToken != null) {
49 market.removeSpecificCondition(conditionToken);
50 }
51 ended = true;
52 }
53
54 public boolean isDone() {
55 return ended;
56 }
57
58 public int getStabilityPenalty() {
59 return stabilityPenalty;
60 }
61
62 public void setStabilityPenalty(int stabilityPenalty) {
63 if (isDone()) return;
64
65 this.stabilityPenalty = stabilityPenalty;
66 if (stabilityPenalty <= 0) {
67 endEvent();
68 } else {
69 market.reapplyCondition(conditionToken);
70 }
71 }
72
73 public void increaseStabilityPenalty(int penalty) {
74 if (isDone()) return;
75
76 this.stabilityPenalty += penalty;
77 if (stabilityPenalty <= 0) {
78 endEvent();
79 } else {
80 market.reapplyCondition(conditionToken);
81 }
82 }
83
84 public void reduceStabilityPenalty(int penalty) {
85 if (isDone()) return;
86
87 this.stabilityPenalty -= penalty;
88 if (stabilityPenalty <= 0) {
89 endEvent();
90 } else {
91 market.reapplyCondition(conditionToken);
92 }
93 }
94
95 public String getEventName() {
96 if (isDone()) return "Recent unrest at null market";
97 return "Recent unrest at " + market.getName();
98 }
99}
100
101
102
103
static SectorAPI getSector()
Definition Global.java:59
void init(String type, CampaignEventTarget eventTarget)