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

package engine.wpakpowers;

import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.wpak.data.Effect;
import engine.wpak.data.ModifierEntry;
import engine.wpak.data.Power;
import engine.wpak.data.PowerAction;

public class Behaviour {

    public static Object Flag(AbstractCharacter caster, AbstractWorldObject target, Power power,
                              PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        boolean modValue = true;
        return modValue;
    }

    public static Object MapIntToInts(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                      PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {

        return powerAction.attackAnimations;
    }

    public static Object Standard(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                  PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {

        return WpakPowerManager.applyCurveToModifier(powerAction, modifierEntry, rank);
    }

    public static Object FPSubTypeAttr(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                       PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        return WpakPowerManager.applyCurveToModifier(powerAction, modifierEntry, rank);
    }

    public static Object SubTypeSourceType(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                           PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }

    public static Object SubTypePowerType(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                          PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }

    public static Object SubTypeSkill(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                      PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }

    public static Object FPSubTypeDmg(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                      PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }

    public static Object DD(AbstractCharacter caster, AbstractWorldObject target, Power power,
                            PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }

    public static Object StringBehaviour(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                         PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }

    public static Object SubTypeMod(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                    PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }

    public static Object SubTypePower(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                      PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }

    public static Object SubTypeDmg(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                    PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }

    public static Object FPSubTypeSkill(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                        PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }

    public static Object FPSubTypeMonster(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                          PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }

    public static Object ProcInfo(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                  PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
        System.out.println("Behavior method called");
        return null;
    }
}
