java.lang.Object
com.hypixel.hytale.server.npc.decisionmaker.core.Evaluator<CombatActionOption>
com.hypixel.hytale.builtin.npccombatactionevaluator.evaluator.CombatActionEvaluator
All Implemented Interfaces:
Component<EntityStore>, Cloneable

public class CombatActionEvaluator extends Evaluator<CombatActionOption> implements Component<EntityStore>
  • Field Details

    • NO_TIMEOUT

      protected static final float NO_TIMEOUT
      See Also:
    • runOption

      protected CombatActionEvaluator.RunOption runOption
    • minRunUtility

      protected double minRunUtility
    • lastRunNanos

      protected long lastRunNanos
    • runInState

      protected int runInState
    • predictability

      protected float predictability
    • minActionUtility

      protected double minActionUtility
    • optionsBySubState

      protected final it.unimi.dsi.fastutil.ints.Int2ObjectMap<List<Evaluator.OptionHolder>> optionsBySubState
    • basicAttacksBySubState

      protected final it.unimi.dsi.fastutil.ints.Int2ObjectMap<CombatActionEvaluatorConfig.BasicAttacks> basicAttacksBySubState
    • currentBasicAttackSubState

      protected int currentBasicAttackSubState
    • currentBasicAttackSet

      protected CombatActionEvaluatorConfig.BasicAttacks currentBasicAttackSet
    • currentBasicAttack

      @Nullable protected String currentBasicAttack
    • currentBasicAttacksInteractionVarsGetter

      protected Function<InteractionContext,Map<String,String>> currentBasicAttacksInteractionVarsGetter
    • currentBasicAttackDamageFriendlies

      protected boolean currentBasicAttackDamageFriendlies
    • nextBasicAttackIndex

      protected int nextBasicAttackIndex
    • basicAttackCooldown

      protected double basicAttackCooldown
    • basicAttackTarget

      @Nullable protected Ref<EntityStore> basicAttackTarget
    • basicAttackTimeout

      protected double basicAttackTimeout
    • primaryTarget

      @Nullable protected Ref<EntityStore> primaryTarget
    • previousTarget

      @Nullable protected Ref<EntityStore> previousTarget
    • currentAction

      @Nullable protected CombatActionEvaluator.CombatOptionHolder currentAction
    • postExecutionDistanceRange

      @Nullable protected double[] postExecutionDistanceRange
    • markedTargetSlot

      protected int markedTargetSlot
    • minRangeSlot

      protected int minRangeSlot
    • maxRangeSlot

      protected int maxRangeSlot
    • positioningAngleSlot

      protected int positioningAngleSlot
    • currentInteraction

      @Nullable protected String currentInteraction
    • currentInteractionVarsGetter

      protected Function<InteractionContext,Map<String,String>> currentInteractionVarsGetter
    • currentInteractionType

      protected InteractionType currentInteractionType
    • chargeFor

      protected float chargeFor
    • currentDamageFriendlies

      protected boolean currentDamageFriendlies
    • requireAiming

      protected boolean requireAiming
    • positionFirst

      protected boolean positionFirst
    • chargeDistance

      protected double chargeDistance
    • timeout

      protected float timeout
    • evaluationContext

      protected final EvaluationContext evaluationContext
  • Constructor Details

  • Method Details

    • getComponentType

      public static ComponentType<EntityStore,CombatActionEvaluator> getComponentType()
    • getRunOption

      public CombatActionEvaluator.RunOption getRunOption()
    • getMinRunUtility

      public double getMinRunUtility()
    • getEvaluationContext

      @Nonnull public EvaluationContext getEvaluationContext()
    • getLastRunNanos

      public long getLastRunNanos()
    • setLastRunNanos

      public void setLastRunNanos(long lastRunNanos)
    • getRunInState

      public int getRunInState()
    • getOptionsBySubState

      @Nonnull public it.unimi.dsi.fastutil.ints.Int2ObjectMap<List<Evaluator.OptionHolder>> getOptionsBySubState()
    • getBasicAttacks

      public CombatActionEvaluatorConfig.BasicAttacks getBasicAttacks(int subState)
    • setCurrentBasicAttackSet

      public void setCurrentBasicAttackSet(int subState, CombatActionEvaluatorConfig.BasicAttacks attacks)
    • getCurrentBasicAttack

      @Nullable public String getCurrentBasicAttack()
    • getCurrentBasicAttackSet

      public CombatActionEvaluatorConfig.BasicAttacks getCurrentBasicAttackSet()
    • setCurrentBasicAttack

      public void setCurrentBasicAttack(String attack, boolean damageFriendlies, Function<InteractionContext,Map<String,String>> interactionVarsGetter)
    • getNextBasicAttackIndex

      public int getNextBasicAttackIndex()
    • setNextBasicAttackIndex

      public void setNextBasicAttackIndex(int next)
    • canUseBasicAttack

      public boolean canUseBasicAttack(int selfIndex, ArchetypeChunk<EntityStore> archetypeChunk, CommandBuffer<EntityStore> commandBuffer)
    • tickBasicAttackCoolDown

      public void tickBasicAttackCoolDown(float dt)
    • getBasicAttackTarget

      @Nullable public Ref<EntityStore> getBasicAttackTarget()
    • setBasicAttackTarget

      public void setBasicAttackTarget(Ref<EntityStore> target)
    • tickBasicAttackTimeout

      public boolean tickBasicAttackTimeout(float dt)
    • setBasicAttackTimeout

      public void setBasicAttackTimeout(double timeout)
    • getPrimaryTarget

      @Nullable public Ref<EntityStore> getPrimaryTarget()
    • clearPrimaryTarget

      public void clearPrimaryTarget()
    • setActiveOptions

      public void setActiveOptions(List<Evaluator.OptionHolder> options)
    • getMarkedTargetSlot

      public int getMarkedTargetSlot()
    • getMaxRangeSlot

      public int getMaxRangeSlot()
    • getMinRangeSlot

      public int getMinRangeSlot()
    • getPositioningAngleSlot

      public int getPositioningAngleSlot()
    • getCurrentAttack

      @Nullable public String getCurrentAttack()
    • getChargeFor

      public float getChargeFor()
    • getCurrentInteractionType

      public InteractionType getCurrentInteractionType()
    • getCurrentInteractionVarsGetter

      public Function<InteractionContext,Map<String,String>> getCurrentInteractionVarsGetter()
    • shouldDamageFriendlies

      public boolean shouldDamageFriendlies()
    • requiresAiming

      public boolean requiresAiming()
    • shouldPositionFirst

      public boolean shouldPositionFirst()
    • getChargeDistance

      public double getChargeDistance()
    • setCurrentInteraction

      public void setCurrentInteraction(String currentInteraction, InteractionType interactionType, float chargeFor, boolean damageFriendlies, boolean requireAiming, boolean positionFirst, double chargeDistance, Function<InteractionContext,Map<String,String>> interactionVarsGetter)
    • getCurrentAction

      @Nullable public CombatActionEvaluator.CombatOptionHolder getCurrentAction()
    • consumePostExecutionDistanceRange

      public double[] consumePostExecutionDistanceRange()
    • setTimeout

      public void setTimeout(float timeout)
    • clearTimeout

      public void clearTimeout()
    • hasTimedOut

      public boolean hasTimedOut(float dt)
    • selectNextCombatAction

      public void selectNextCombatAction(int index, @Nonnull ArchetypeChunk<EntityStore> archetypeChunk, CommandBuffer<EntityStore> commandBuffer, @Nonnull Role role, ValueStore valueStore)
    • completeCurrentAction

      public void completeCurrentAction(boolean forceClearAbility, boolean clearBasicAttack)
    • terminateCurrentAction

      public void terminateCurrentAction()
    • clearCurrentBasicAttack

      public void clearCurrentBasicAttack()
    • setupNPC

      public void setupNPC(Role role)
      Overrides:
      setupNPC in class Evaluator<CombatActionOption>
    • setupNPC

      public void setupNPC(Holder<EntityStore> holder)
      Overrides:
      setupNPC in class Evaluator<CombatActionOption>
    • clone

      @Nonnull public Component<EntityStore> clone()
      Specified by:
      clone in interface Component<EntityStore>
      Overrides:
      clone in class Object