1package com.fs.starfarer.api.impl.combat.dweller;
7import org.lwjgl.util.vector.Vector2f;
9import com.fs.starfarer.api.combat.CombatEntityAPI;
10import com.fs.starfarer.api.combat.MutableShipStatsAPI;
11import com.fs.starfarer.api.combat.ShipAPI;
12import com.fs.starfarer.api.combat.ShipAPI.HullSize;
13import com.fs.starfarer.api.combat.ShipwideAIFlags.AIFlags;
14import com.fs.starfarer.api.impl.combat.dweller.DwellerCombatPlugin.DCPPlugin;
15import com.fs.starfarer.api.impl.combat.dweller.DwellerCombatPlugin.WobblyPart;
16import com.fs.starfarer.api.impl.combat.dweller.DwellerShroud.DwellerShroudParams;
17import com.fs.starfarer.api.impl.combat.dweller.DwellerShroud.ShroudNegativeParticleFilter;
18import com.fs.starfarer.api.impl.combat.threat.RoilingSwarmEffect.SwarmMember;
19import com.fs.starfarer.api.impl.combat.threat.RoilingSwarmEffect.SwarmMemberOffsetModifier;
20import com.fs.starfarer.api.util.Misc;
29 List<DwellerShipPart> parts = plugin.
getParts();
34 float xOff = 40f * scale;
37 WobblyPart part =
new WobblyPart(
"shrouded_maw_base", 1f * scale, 0.7f,
new Vector2f(xOff, 0f), 0f);
51 part =
new WobblyPart(
"shrouded_maw_glow", 0.5f * scale, 5, 5, 0.5f,
new Vector2f(xOff, 0f), 0f);
53 part.additiveBlend =
true;
58 part =
new WobblyPart(
"shrouded_spot_cluster", 1f * scale, 5, 5, 1f,
new Vector2f(-25f * scale + xOff, 0f), 0f);
60 part.additiveBlend =
true;
85 super.initBeforeShipCreation(hullSize, stats,
id);
95 shroud.
getShroudParams().negativeParticleFilter =
new ShroudNegativeParticleFilter() {
97 public boolean isParticleOk(
DwellerShroud shroud, Vector2f loc) {
101 return Math.abs(diff.x) < shroud.
getParams().maxOffset * 0.75f;
112 params.maxOffset = 400f;
113 params.initialMembers = 250;
115 params.baseMembersToMaintain = params.initialMembers;
116 params.numToRespawn = 5;
117 params.numToFlash *= 3;
119 params.spawnOffsetMult = 0.67f;
120 params.spawnOffsetMultForInitialSpawn = params.spawnOffsetMult;
122 params.baseSpriteSize *= 2f;
128 params.negativeParticleAreaMult = 0.9f;
130 params.negativeParticleSizeMult = 0.9f;
136 params.overloadGlowSizeMult *= 2f;
137 params.overloadArcThickness *= 2f;
138 params.overloadArcCoreThickness *= 2f;
145 params.offsetModifier =
new SwarmMemberOffsetModifier() {
147 public void modifyOffset(SwarmMember p) {
156 if (attachedTo instanceof
ShipAPI) {
void setFlag(AIFlags flag)
void modifyPercent(String source, float value)
void modifyFlat(String source, float value)
void setPlugin(DCPPlugin plugin)
CombatEntityAPI getAttachedTo()
static Color STANDARD_PART_GLOW_COLOR
List< DwellerShipPart > getParts()
DwellerShroudParams getShroudParams()
DwellerCombatPlugin createPlugin(ShipAPI ship)
DwellerShroud createShroud(ShipAPI ship)
void initBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id)
void advance(DwellerCombatPlugin plugin, float amount)
void modifyBaselineShroudParams(ShipAPI ship, DwellerShroudParams params)
RoilingSwarmParams getParams()
CombatEntityAPI getAttachedTo()
static Vector2f rotateAroundOrigin(Vector2f v, float angle)
StatBonus getMissileWeaponRangeBonus()
StatBonus getEnergyWeaponRangeBonus()
ShipwideAIFlags getAIFlags()