28class RamAttackGoal :
public ::BaseGoal {
36 enum class Direction :
int {
43 enum class State :
int {
46 VerifyTargetStillInPosition = 2,
57 ::ll::TypedStorage<4, 12, ::Vec3> mPosition;
58 ::ll::TypedStorage<4, 4, float> mDistance;
59 ::ll::TypedStorage<1, 1, bool> mCheckX;
60 ::ll::TypedStorage<4, 4, ::RamAttackGoal::Direction> mDirection;
61 ::ll::TypedStorage<1, 1, bool> mHasChargePos;
68 ::ll::TypedStorage<8, 8, ::Mob&> mMob;
69 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::Path>> mPath;
70 ::ll::TypedStorage<4, 12, ::Vec3> mPrepareChargePos;
71 ::ll::TypedStorage<4, 12, ::Vec3> mTargetPos;
72 ::ll::TypedStorage<4, 8, ::Vec2> mRamDirection;
73 ::ll::TypedStorage<8, 8, ::Tick> mWaitBeforeChargeTimer;
74 ::ll::TypedStorage<8, 8, ::Tick> mChargeTimeoutTimer;
75 ::ll::TypedStorage<8, 8, ::Tick> mKnockAfterChargeTimeoutTimer;
76 ::ll::TypedStorage<8, 8, ::Tick> mRamRetryTimeout;
77 ::ll::TypedStorage<4, 4, ::RamAttackGoal::State> mState;
78 ::ll::TypedStorage<8, 24, ::std::vector<::RamAttackGoal::AttackPos>> mAttackPosVector;
79 ::ll::TypedStorage<4, 4, int> mRamDistance;
80 ::ll::TypedStorage<4, 4, int> mMinRamDistance;
81 ::ll::TypedStorage<4, 4, float> mKnockbackForce;
82 ::ll::TypedStorage<4, 4, float> mKnockbackHeight;
83 ::ll::TypedStorage<4, 4, float> mBabyKnockbackModifier;
84 ::ll::TypedStorage<4, 4, float> mRunSpeed;
85 ::ll::TypedStorage<4, 4, float> mRamSpeed;
86 ::ll::TypedStorage<8, 24, ::std::vector<::ActorDefinitionTrigger>> mOnStartTriggers;
87 ::ll::TypedStorage<4, 4, ::SharedTypes::Legacy::LevelSoundEvent> mPreRamSound;
88 ::ll::TypedStorage<4, 4, ::SharedTypes::Legacy::LevelSoundEvent> mRamImpactSound;
89 ::ll::TypedStorage<4, 8, ::SharedTypes::FloatRange> mCooldownTime;
90 ::ll::TypedStorage<8, 8, ::ActorUniqueID> mTargetId;
91 ::ll::TypedStorage<1, 1, bool> mHasKnockbacked;
92 ::ll::TypedStorage<8, 8, ::Tick> mCooldownTimeout;
93 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::RamAttackGoalUtils::RamGoalItemDropperInterface>> mRamGoalItemDropper;
98 RamAttackGoal& operator=(RamAttackGoal
const&);
99 RamAttackGoal(RamAttackGoal
const&);
105 virtual void start() ;
107 virtual void stop() ;
109 virtual bool canUse() ;
111 virtual bool canContinueToUse() ;
113 virtual void tick() ;
115 virtual void appendDebugInfo(::std::string& str)
const ;
121 MCAPI
explicit RamAttackGoal(
::Mob& mob);
123 MCAPI
bool _hasChargePath();
125 MCAPI
bool _initiateRamAttack();
129 MCAPI
void _resetCooldown();
131 MCAPI
bool _setupAttackPosVector();
135 MCAPI
void _tryKnockbackTarget();
139 MCAPI
bool _verifyTargetStillInPositionAndPrepareForRamAttack();
145 MCAPI
void* $ctor(
::Mob& mob);
155 MCAPI
bool $canUse();
157 MCAPI
bool $canContinueToUse();
161 MCAPI
void $appendDebugInfo(::std::string& str)
const;