001package com.fs.starfarer.api.combat;
002
003
004public interface DamageAPI {
005
006        /**
007         * Emp damage.
008         * @param amount seconds, used when damage is dps.
009         * @return
010         */
011        float computeFluxDealt(float amount);
012
013        /**
014         * @param amount seconds, used when damage is dps.
015         * @return
016         */
017        float computeDamageDealt(float amount);
018
019        boolean isMissile();
020        void setMissile(boolean isMissile);
021        void setStats(MutableShipStatsAPI stats);
022        MutableShipStatsAPI getStats();
023        float getDamage();
024        void setDamage(float amount);
025        boolean isDps();
026        float getMultiplier();
027        void setMultiplier(float multiplier);
028        DamageType getType();
029        void setType(DamageType type);
030        float getFluxComponent();
031        void setFluxComponent(float fluxComponent);
032
033        boolean isSoftFlux();
034        /**
035         * Only useful for making non-beam weapons deal hard flux damage. For making
036         * beam weapons deal hard flux, use setForceHardFlux(true).
037         * @param isSoftFlux
038         */
039        void setSoftFlux(boolean isSoftFlux);
040
041        float getDpsDuration();
042        void setDpsDuration(float dpsDuration);
043
044        DamageAPI clone();
045
046        MutableStat getModifier();
047
048        boolean isForceHardFlux();
049        /**
050         * Useful to make beam weapons deal hard flux.
051         * @param forceHardFlux
052         */
053        void setForceHardFlux(boolean forceHardFlux);
054
055        float getBaseDamage();
056}