1package com.fs.starfarer.api.impl.campaign.events;
3import java.util.ArrayList;
7import org.apache.log4j.Logger;
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.campaign.BaseOnMessageDeliveryScript;
11import com.fs.starfarer.api.campaign.CampaignFleetAPI;
12import com.fs.starfarer.api.campaign.CargoAPI;
13import com.fs.starfarer.api.campaign.FactionAPI;
14import com.fs.starfarer.api.campaign.InteractionDialogAPI;
15import com.fs.starfarer.api.campaign.RepLevel;
16import com.fs.starfarer.api.campaign.comm.CommMessageAPI;
17import com.fs.starfarer.api.campaign.comm.MessagePriority;
18import com.fs.starfarer.api.campaign.events.CampaignEventTarget;
19import com.fs.starfarer.api.campaign.rules.MemoryAPI;
20import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.CustomRepImpact;
21import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActionEnvelope;
22import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActions;
23import com.fs.starfarer.api.impl.campaign.ids.Factions;
24import com.fs.starfarer.api.util.Misc;
25import com.fs.starfarer.api.util.Misc.Token;
36 public static class FactionHostilityPairKey {
37 protected FactionAPI one;
38 protected FactionAPI two;
39 public FactionHostilityPairKey(FactionAPI one, FactionAPI two) {
42 if (one.getId().compareTo(two.getId()) > 0) {
43 FactionAPI temp = one;
48 public FactionHostilityPairKey(String one, String two) {
51 public FactionAPI getOne() {
54 public FactionAPI getTwo() {
59 public int hashCode() {
62 result = prime * result
63 + ((one ==
null) ? 0 : one.hashCode());
64 result = prime * result + ((two ==
null) ? 0 : two.hashCode());
68 public boolean equals(Object obj) {
73 if (getClass() != obj.getClass())
75 FactionHostilityPairKey other = (FactionHostilityPairKey) obj;
77 if (other.one !=
null)
79 }
else if (one != other.one)
81 if (this.two ==
null) {
82 if (other.two !=
null)
84 }
else if (this.two != other.two)
96 protected FactionHostilityPairKey
target =
null;
98 protected boolean ended =
false;
109 super.startEvent(
true);
111 if (!(
eventTarget.getCustom() instanceof FactionHostilityPairKey)) {
119 duration = 365f * (0.5f + 0.5f * (float) Math.random());
121 log.info(String.format(
"Starting hostility event: %s -> %s",
one.getDisplayName(),
two.getDisplayName()));
123 FactionAPI commFac = Misc.getCommissionFaction();
124 if (commFac !=
null && (commFac ==
one || commFac ==
two)) {
130 log.info(String.format(
"Making factions hostile: %s -> %s",
one.getDisplayName(),
two.getDisplayName()));
132 one.setRelationship(
two.getId(), RepLevel.HOSTILE);
137 final FactionAPI commFac = Misc.getCommissionFaction();
138 if (commFac !=
null && (commFac ==
one || commFac ==
two)) {
140 MessagePriority.ENSURE_DELIVERY,
new BaseOnMessageDeliveryScript() {
141 public void beforeDelivery(CommMessageAPI message) {
143 new RepActionEnvelope(RepActions.MAKE_HOSTILE_AT_BEST,
null,
null,
true),
178 Global.
getSector().reportEventStage(
this,
"end",
Global.
getSector().getPlayerFleet(), MessagePriority.ENSURE_DELIVERY,
new BaseOnMessageDeliveryScript() {
179 public void beforeDelivery(CommMessageAPI message) {
180 FactionAPI commFac = Misc.getCommissionFaction();
181 if (commFac ==
null)
return;
182 if (commFac !=
one && commFac !=
two)
return;
184 FactionAPI other =
one;
186 if (other == commFac) {
191 float currRel = other.getRelationship(Factions.PLAYER);
192 CustomRepImpact impact =
new CustomRepImpact();
194 if (impact.delta < 0) impact.delta = 0;
196 new RepActionEnvelope(RepActions.CUSTOM, impact,
null,
true),
204 String postfix =
" hostilities";
206 postfix =
" hostilities - over";
209 return Misc.ucFirst(
one.getDisplayName()) +
" / " + Misc.ucFirst(
two.getDisplayName()) + postfix;
215 public boolean callEvent(String ruleId, InteractionDialogAPI dialog,
216 List<Token> params, Map<String, MemoryAPI> memoryMap) {
217 String action = params.get(0).getString(memoryMap);
219 CargoAPI cargo = playerFleet.getCargo();
221 if (action.equals(
"TODO")) {
228 Map<String, String> map = super.getTokenReplacements();
234 FactionAPI commFac = Misc.getCommissionFaction();
235 if (commFac !=
null && (commFac ==
one || commFac ==
two)) {
236 map.put(
"$sender", commFac.getDisplayName());
246 List<String> result =
new ArrayList<String>();
248 return result.toArray(
new String[0]);
static Logger getLogger(Class c)
static SectorAPI getSector()
static void addFactionNameTokens(Map< String, String > tokens, String prefix, FactionAPI faction)
CampaignEventTarget eventTarget
boolean callEvent(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
static final float HOSTILITY_PENALTY
void init(String type, CampaignEventTarget eventTarget)
String[] getHighlights(String stageId)
void advance(float amount)
Map< String, String > getTokenReplacements()
FactionHostilityPairKey target