Oh thanks for the missile script lazy, i had something very close to what u got here for the podship plasmoid, i didnt know about the .isFizzling() existing so i based of with a timer.
Heres an example if you want to "despawn" the old missile and spawn a new one in its place:
package data.scripts.plugins;
import com.fs.starfarer.api.combat.CombatEngineAPI;
import com.fs.starfarer.api.combat.DamageType;
import com.fs.starfarer.api.combat.EveryFrameCombatPlugin;
import com.fs.starfarer.api.combat.MissileAPI;
import java.util.Iterator;
import java.util.List;
public class PodshipHomingPlasmoid implements EveryFrameCombatPlugin
{
private String SHELL_ID_1 = "podship_plasmoid";
private String SHELL_ID_2 = "podship_plasmoid_2";
private String SHELL_ID_3 = "podship_plasmoid_3";
private String SHELL_ID_4 = "podship_plasmoid_4";
private CombatEngineAPI engine;
public void init(CombatEngineAPI engine) {
this.engine = engine;
}
public void advance(float amount, List events)
{
if (engine.isPaused()) {
return;
}
for (Iterator allMissiles = engine.getMissiles().iterator();
allMissiles.hasNext();)
{
MissileAPI plasmoid = (MissileAPI) allMissiles.next();
if(plasmoid.isFizzling())
{
if(SHELL_ID_1.equals(plasmoid.getProjectileSpecId())) {
engine.spawnProjectile(plasmoid.getSource(), plasmoid.getWeapon(), SHELL_ID_2, plasmoid.getLocation(), plasmoid.getWeapon().getArcFacing(), plasmoid.getVelocity());
engine.applyDamage(plasmoid, plasmoid.getLocation(), 99999,DamageType.ENERGY, 0f, true, false, null);
}
else if(SHELL_ID_2.equals(plasmoid.getProjectileSpecId())) {
engine.spawnProjectile(plasmoid.getSource(), plasmoid.getWeapon(), SHELL_ID_3, plasmoid.getLocation(), plasmoid.getWeapon().getArcFacing(), plasmoid.getVelocity());
engine.applyDamage(plasmoid, plasmoid.getLocation(), 99999,DamageType.ENERGY, 0f, true, false, null);
}
else if(SHELL_ID_3.equals(plasmoid.getProjectileSpecId())) {
engine.spawnProjectile(plasmoid.getSource(), plasmoid.getWeapon(), SHELL_ID_4, plasmoid.getLocation(), plasmoid.getWeapon().getArcFacing(), plasmoid.getVelocity());
engine.applyDamage(plasmoid, plasmoid.getLocation(), 99999,DamageType.ENERGY, 0f, true, false, null);
}
else {
return;
}
}
}
}//advance
}//class