001package com.fs.starfarer.api.combat;
002
003import java.util.EnumSet;
004import java.util.Set;
005
006import java.awt.Color;
007
008import org.json.JSONObject;
009
010import com.fs.starfarer.api.combat.WeaponAPI.WeaponType;
011import com.fs.starfarer.api.loading.WithSourceMod;
012import com.fs.starfarer.api.plugins.ShipSystemStatsScript;
013
014public interface ShipSystemSpecAPI extends WithSourceMod {
015
016        String getIconSpriteName();
017
018        boolean isCanUseWhileRightClickSystemOn();
019
020        void setCanUseWhileRightClickSystemOn(boolean canUseWhileRightClickSystemOn);
021
022        float getRange(MutableShipStatsAPI stats);
023
024        boolean isPhaseCloak();
025        void setPhaseCloak(boolean isPhaseCloak);
026
027        float getCooldown(MutableShipStatsAPI stats);
028        float getRegen(MutableShipStatsAPI stats);
029        int getMaxUses(MutableShipStatsAPI stats);
030
031        boolean isRunScriptWhilePaused();
032        boolean isRunScriptWhileIdle();
033
034        boolean isBlockActionsWhileChargingDown();
035        
036        float getPhaseChargedownVulnerabilityFraction();
037        void setPhaseChargedownVulnerabilityFraction(float phaseChargedownVulnerabilityFraction);
038
039        float getCrPerUse();
040
041        void setCrPerUse(float crPerUse);
042
043        boolean isRenderCopyDuringTeleport();
044
045        boolean isVulnerableChargeup();
046
047        boolean isVulnerableChargedown();
048
049        boolean isFadeActivationSoundOnChargedown();
050
051        JSONObject getSpecJson();
052
053        boolean isEngineActivateHiddenNozzles();
054
055        float getEngineGlowMaxBlend();
056
057        float getShipAlpha();
058
059        float getFilterGain();
060
061        float getFilterGainLF();
062
063        float getFilterGainHF();
064        String getImpactSound();
065
066        float getThreatRange(MutableShipStatsAPI stats);
067
068        float getThreatAmount();
069
070        float getThreatArc();
071
072        float getThreatAngle();
073
074        float getEmpDamage();
075
076        float getDamage();
077
078        DamageType getDamageType();
079
080        Color getEffectColor1();
081
082        Color getEffectColor2();
083
084        boolean isAllowFreeRoam();
085
086        float getLaunchDelay();
087
088        int getMaxDrones();
089
090        float getLaunchSpeed();
091
092        String getDroneVariant();
093
094        float getJitterMinRange();
095
096        Color getJitterUnderEffectColor();
097
098        int getJitterUnderCopies();
099
100        float getJitterUnderMinRange();
101
102        float getJitterUnderRange();
103
104        float getJitterUnderRangeRadiusFraction();
105
106        float getJitterRangeRadiusFraction();
107
108        float getRandomRange();
109
110        int getJitterCopies();
111
112        float getJitterRange();
113
114        Color getJitterEffectColor();
115
116        Color getWeaponGlowColor();
117
118        String getLoopSound();
119
120        String getDeactivateSound();
121
122        boolean isAlwaysAccelerate();
123
124        String getStatsScriptClassName();
125
126        ShipSystemStatsScript getStatsScript();
127
128        ShipSystemAIScript getAIScript();
129
130        String getAIScriptClassName();
131
132        Color getShieldRingColor();
133
134        Color getShieldInnerColor();
135
136        float getShieldThicknessMult();
137
138        float getShieldFluctuationMult();
139
140        boolean isClampTurnRateAfter();
141
142        boolean isClampMaxSpeedAfter();
143
144        void setIconSpriteName(String iconSpriteName);
145
146        float getMinFractionToReload();
147
148        EnumSet<WeaponType> getWeaponTypes();
149
150        float getFlameoutOnImpactChance();
151
152        boolean isTriggersExtraEngines();
153
154        void setTriggersExtraEngines(boolean triggersEngines);
155
156        Color getEngineGlowContrailColor();
157
158        boolean isHardDissipationAllowed();
159
160        void setHardDissipationAllowed(boolean allowHardDissipation);
161
162        boolean isVentingAllowed();
163
164        void setVentingAllowed(boolean ventingAllowed);
165
166        boolean generatesHardFlux();
167
168        void setGeneratesHardFlux(boolean generatesHardFlux);
169
170        void setToggle(boolean toggle);
171
172        void setDissipationAllowed(boolean dissipationAllowed);
173
174        boolean isDissipationAllowed();
175
176        Color getEngineGlowColor();
177
178        float getEngineGlowLengthMult();
179
180        float getEngineGlowWidthMult();
181
182        float getEngineGlowGlowMult();
183
184        void setRegen(float regen);
185
186        float getIn();
187
188        void setIn(float in);
189
190        float getActive();
191
192        void setActive(float active);
193
194        float getOut();
195
196        void setOut(float out);
197
198        void setCooldown(float cooldown);
199
200        boolean isToggle();
201
202        boolean isFiringAllowed();
203
204        void setFiringAllowed(boolean firingAllowed);
205
206        String getUseSound();
207
208        void setUseSound(String useSound);
209
210        String getOutOfUsesSound();
211
212        void setOutOfUsesSound(String outOfAmmoSound);
213
214        String getId();
215
216        void setId(String id);
217
218        String getName();
219
220        void setName(String name);
221
222        String getWeaponId();
223
224        void setWeaponId(String weaponId);
225
226        float getFluxPerSecond();
227
228        void setFluxPerSecond(float fluxPerSecond);
229
230        float getFluxPerUse();
231
232        void setFluxPerUse(float fluxPerUse);
233
234        void setMaxUses(int maxUses);
235
236        boolean isTurningAllowed();
237
238        void setTurningAllowed(boolean turnAllowed);
239
240        boolean isStrafeAllowed();
241
242        void setStrafeAllowed(boolean strafeAllowed);
243
244        boolean isShieldAllowed();
245
246        void setShieldAllowed(boolean shieldAllowed);
247
248        boolean isAccelerateAllowed();
249
250        void setAccelerateAllowed(boolean accelerateAllowed);
251
252        float getFluxPerSecondBaseRate();
253
254        void setFluxPerSecondBaseRate(float fluxPerSecondBaseRate);
255
256        float getFluxPerSecondBaseCap();
257
258        void setFluxPerSecondBaseCap(float fluxPerSecondBaseCap);
259
260        float getFluxPerUseBaseRate();
261
262        void setFluxPerUseBaseRate(float fluxPerUseBaseRate);
263
264        float getFluxPerUseBaseCap();
265
266        void setFluxPerUseBaseCap(float fluxPerUseBaseCap);
267
268        boolean isCanNotCauseOverload();
269
270        void setCanNotCauseOverload(boolean canNotCauseOverload);
271
272        boolean isRequiresZeroFluxBoost();
273
274        void setRequiresZeroFluxBoost(boolean requiresZeroFluxBoost);
275
276        void addTag(String tag);
277
278        Set<String> getTags();
279
280        boolean hasTag(String tag);
281
282        boolean isAllowFlameoutOnImpactWithFriendly();
283
284        void setAllowFlameoutOnImpactWithFriendly(boolean allowFlameoutOnImpactWithFriendly);
285
286        boolean isReloadBaseAmmoAmountOnly();
287        void setReloadBaseAmmoAmountOnly(boolean reloadBaseAmmoAmountOnly);
288
289        boolean usesAmmo();
290
291}