Class CombatActionEvaluator

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>
An evaluator designed to handle smartly selecting combat abilities based on world state and various parameters. This includes selecting combat abilities periodically and using frequent basic attacks around them.
Since:
2021/03/15
  • 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<CombatActionOption>.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<CombatActionOption>.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 ExecutionSupport executionSupport, ValueStore valueStore)
    • completeCurrentAction

      public void completeCurrentAction(boolean forceClearAbility, boolean clearBasicAttack)
      Completes the current active action and marks the evaluator as having successfully completed its run.
    • terminateCurrentAction

      public void terminateCurrentAction()
      Terminates the current active action but allows a new action to be immediately performed.
    • clearCurrentBasicAttack

      public void clearCurrentBasicAttack()
    • setupNPC

      public void setupNPC(ExecutionSupport executionSupport)
      Description copied from class: Evaluator
      This method should be called within the position cache initialisation when an NPC is instantiated and handles initialising values on the NPC itself so that it can register, compute, and pass relevant data to the conditions for evaluation.
      Overrides:
      setupNPC in class Evaluator<CombatActionOption>
    • setupNPC

      public void setupNPC(Holder<EntityStore> holder)
      Description copied from class: Evaluator
      This method handles initialisation of any parts of the evaluator that require access to external components.
      Overrides:
      setupNPC in class Evaluator<CombatActionOption>
      Parameters:
      holder - the holder for the NPC
    • clone

      @Nonnull public Component<EntityStore> clone()
      Specified by:
      clone in interface Component<EntityStore>
      Returns:
      a clone instance of the original component instance.