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}