// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
//      Magicbane Emulator Project © 2013 - 2024
//                www.magicbane.com

package engine.wpak.data;

import engine.mbEnums;

import java.util.ArrayList;
import java.util.Objects;

public class PowerAction {

    // Header values

    public String action_id;
    public mbEnums.PowerActionType action_type;
    public ArrayList<Effect> effects = new ArrayList<>();
    public int petLevel;
    public int petRace;
    public StatTransfer statTransfer;
    public int levelCap;
    public mbEnums.CompoundCurveType levelCapCurve;
    public TrackEntry trackEntry;

    // Additional variables after header go here.

    public ArrayList<Integer> bodyParts = new ArrayList<>();
    public ArrayList<Integer> femaleBodyParts = new ArrayList<>();
    public boolean shouldShowWeapons = false;
    public boolean shouldShowArmor = false;
    public boolean bladeTrails = false;
    public boolean isResistible = false;
    public ArrayList<Float> scaleFactor = new ArrayList<>();
    public ArrayList<Integer> attackAnimations = new ArrayList<>();
    public boolean isAggressive;
    public mbEnums.DamageType damageType;
    public boolean applyEffectBlank = false;
    public boolean wearOffEffectBlank = false;
    public boolean removeAll = false;
    public boolean clearAggro = false;
    public boolean targetBecomesPet = false;
    public boolean destroyOldPet = false;
    public mbEnums.ItemFlags itemFlag;
    public mbEnums.MobBehaviourType rootFsmID;
    public int splashDamageMin;
    public int splashDamageMax;
    public boolean ignoreNoTeleSpire = false;

    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;

        PowerAction powerAction = (PowerAction) o;
        return Objects.equals(action_id, powerAction.action_id);
    }

    @Override
    public int hashCode() {
        return action_id.hashCode(); // Use only the id field for hashCode
    }
}
