Starsector API
Loading...
Searching...
No Matches
ShroudedEjectaShipCreator.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.combat.dweller;
2
3import com.fs.starfarer.api.combat.DamageType;
4import com.fs.starfarer.api.combat.ShipAPI;
5import com.fs.starfarer.api.impl.combat.dweller.DwellerCombatPlugin.DCPPlugin;
6import com.fs.starfarer.api.impl.combat.dweller.DwellerShroud.DwellerShroudParams;
7
8public class ShroudedEjectaShipCreator extends BaseDwellerShipCreator implements DCPPlugin {
9
10 public static float EXPLOSION_DAMAGE = 2000f;
12
13 public static String ID_BODY_ONE = "id_body_one";
14 public static String ID_BODY_TWO = "id_body_two";
15
16 public static String TAG_MIRRORED_VORTEX = "tag_mirrored_vortex";
17
18 @Override
20 //DwellerCombatPlugin plugin = super.createPlugin(ship);
21
23 if (plugin == null) {
24 plugin = new DwellerCombatPlugin(ship);
25 }
26
27 //plugin.setPlugin(this);
28
29// List<DwellerShipPart> parts = plugin.getParts();
30// parts.clear();
31//
32// float scale = 1f;
33// //scale = 0.5f;
34//
35// float spinMult = 1f;
36//
37// boolean mirror = (float) Math.random() > 0.5f;
38// //mirror = true;
39// if (mirror) {
40// ship.addTag(TAG_MIRRORED_VORTEX);
41// }
42//
43// WobblyPart part = new WobblyPart("shrouded_vortex_base", 2f * scale, 1f, new Vector2f(0, 0), 0f);
44// part.setId(ID_BODY_ONE);
45// part.renderer.setMirror(mirror);
46// //part.setSpin(360f * spinMult, 360f * 2f * spinMult, 360f * spinMult);
47// parts.add(part);
48//
49// part = new WobblyPart("shrouded_vortex_base2", 3f * scale, 3, 3, 1f, new Vector2f(0, 0), 0f);
50// //part.setSpin(270f * spinMult, 360f * spinMult, 270f * spinMult);
51// part.setId(ID_BODY_TWO);
52// part.renderer.setMirror(mirror);
53// part.alphaMult = 0.5f;
54// parts.add(part);
55//
76// //part.setShieldActivated();
77// //parts.add(part);
78
79 return plugin;
80 }
81
82 @Override
83 protected void modifyBaselineShroudParams(ShipAPI ship, DwellerShroudParams params) {
84 params.maxOffset = 120f;
85 params.initialMembers = 30;
86 params.baseMembersToMaintain = params.initialMembers;
87 params.baseSpriteSize *= 1.33f;
88 //params.baseSpriteSize *= 1.5f;
89
90 params.spawnOffsetMult = 1f;
91 params.spawnOffsetMultForInitialSpawn = params.spawnOffsetMult;
92
93 //params.negativeParticleAreaMult = 1.25f;
94 //params.negativeParticleDurMult *= 0.5f;
95 //params.negativeParticleSizeMult *= 1.4f;
96 //params.negativeParticleGenRate *= 1f;
97
98// params.negativeParticleGenRate = 0f;
99 //params.negativeParticleGenRate *= 0.5f;
100 params.negativeParticleNumBase = 3;
101 params.negativeParticleHighContrastMode = true;
102 params.negativeParticleSizeMult = 1.5f;
103
104// params.alphaMult = 0.25f;
105// params.negativeParticleGenRate = 0f;
106
107 //params.overloadGlowSizeMult *= 0.5f;
108
109// params.overloadArcThickness *= 0.5f;
110// params.overloadArcCoreThickness *= 0.5f;
111
112// params.maxSpeed += 500f;
113 params.springStretchMult = 1f;
114// params.baseFriction *= 10f;
115// params.frictionRange *= 1f;
116 }
117
118
119
120 @Override
121 public void initInCombat(ShipAPI ship) {
122 super.initInCombat(ship);
123
124 ship.setExplosionScale(0f); // no explosion sound or visual, just dissipates and fades out
125 }
126
127 @Override
128 public void advance(DwellerCombatPlugin plugin, float amount) {
129// CombatEntityAPI attachedTo = plugin.getAttachedTo();
130// if (attachedTo instanceof ShipAPI) {
131// ShipAPI ship = (ShipAPI) attachedTo;
132// float hullLevel = ship.getHullLevel();
133// float mult = 1f - hullLevel;
134// if (mult < 0f) mult = 0f;
135// if (mult > 1f) mult = 1f;
136//
137// mult *= 3f;
138//
139// DwellerShipPart part = plugin.getPart(ID_BODY_ONE);
140// if (part != null) {
141// ((WobblyPart)part).getSpin().setValueMult(mult);
142// }
143// part = plugin.getPart(ID_BODY_TWO);
144// if (part != null) {
145// ((WobblyPart)part).getSpin().setValueMult(mult);
146// }
147
148// CombatEngineAPI engine = Global.getCombatEngine();
149// engine.applyDamage(ship, ship.getLocation(), 100f, DamageType.ENERGY, 0f, true, false, ship, false);
150// //ship.setCollisionClass(CollisionClass.SHIP);
151// //ship.getAIFlags().setFlag(AIFlags.DO_NOT_BACK_OFF, 1f);
152// }
153 }
154}
155
156
157
158
159
160
161
162
163
static DwellerCombatPlugin getDwellerPluginFor(CombatEntityAPI entity)
void modifyBaselineShroudParams(ShipAPI ship, DwellerShroudParams params)
void setExplosionScale(float explosionScale)