86 super.InitActionComponent();
94 bool animateRod =
false;
127 super.OnStateChange(pOldState,pCurrentState);
168 m_Text =
"#start_fishing";
195 hook =
ItemBase.Cast(item.FindAttachmentBySlotName(
"Hook"));
197 return hook && !hook.IsRuined() && !hook.IsPendingDeletion();
202 FishingActionData actionData =
new FishingActionData();
208 if (super.SetupAction(player, target, item, action_data, extra_data))
210 FishingActionData data;
228 data.m_ContextData.GenerateResult();
231 data.m_ContextData.SetResultChanceOverride(data.m_Player.IsQuickFishing(),1.0);
237 super.WriteToContext(ctx, action_data);
238 FishingActionData data
241 ctx.
Write(data.m_IsSurfaceSea);
247 if (!action_recive_data)
252 super.ReadFromContext(ctx, action_recive_data);
255 if (
Class.
CastTo(receiveDataFishing,action_recive_data))
268 super.HandleReciveData(action_recive_data, action_data);
271 FishingActionData fishingData = FishingActionData.Cast(action_data);
278 super.CreateAndSetupActionCallback(action_data);
280 FishingActionData data;
283 data.RollNextResultChance();
289 super.OnAnimationEvent(action_data);
290 FishingActionData actionDataFishing = FishingActionData.Cast(action_data);
292 switch (action_data.m_DelayedAnimationEventID)
299 actionDataFishing.AnimateRod(
false,
false);
306 super.OnUpdate(action_data);
308 vector dir =
vector.
Direction(action_data.m_Player.GetPosition(), action_data.m_Target.GetCursorHitPos());
311 action_data.m_Player.AlignDirectionWS(dir);
318 int particleId = actionDataFishing.m_ContextData.GetResultParticleId();
319 if (actionDataFishing.m_SplashUniqueID < 0)
334 vector cursorPosition = action_data.m_Target.GetCursorHitPos();
336 if (
GetGame().SurfaceIsSea(cursorPosition[0], cursorPosition[2]))
348 super.OnFinishProgress(action_data);
350 FishingActionData data;
353 data.RollNextResultChance();
360 if (
Class.
CastTo(callback, action_data.m_Callback))
362 switch (callback.GetState())
367 FishingActionData data;
371 if (data.m_FishingResult != -1)
377 super.OnEndInput(action_data);
386 super.OnEnd(action_data);
388 FishingActionData fad;
390 fad.AnimateRod(
false,
true);
396 FishingActionData fad;
401 if (fad.m_IsSignalActive)
403 fad.m_ContextData.OnBeforeSpawnSignalHit();
408 fad.m_ContextData.OnAfterSpawnSignalHit();
412 EntityAI hookCheck = action_data.m_MainItem.FindAttachmentBySlotName(
"Hook");
413 return hookCheck != null && !hookCheck.IsPendingDeletion();
417 fad.m_ContextData.OnSignalMiss();
431 action_data.m_IsSignalActive =
true;
433 if (
Class.
CastTo(fishingCB,action_data.m_Callback))
439 action_data.m_IsSignalActive =
false;
441 if (
Class.
CastTo(fishingCB,action_data.m_Callback))
444 action_data.m_ContextData.OnSignalPass();
449 vector spawnPos =
vector.
Direction(action_data.m_Player.GetPosition(),action_data.m_Target.GetCursorHitPos());
450 spawnPos = MiscGameplayFunctions.GetRandomizedPositionVerified(action_data.m_Player.GetPosition(),action_data.m_Player.GetPosition() + spawnPos * 0.1,0.15,action_data.m_Player);
453 return action_data.m_ContextData.SpawnAndSetupCatch(idx,spawnPos);
ref CABase m_ActionComponent
const float FISHING_GARBAGE_CHANCE
FishingActionReceiveData m_IsSurfaceSea
float m_RodQualityModifier
const float FISHING_HOOK_LOSS
void RollNextResultChance()
void AnimateRod(float phase, bool instant=false)
const float FISHING_BAIT_LOSS
const float FISHING_SUCCESS
const float FISHING_DAMAGE
void RandomizeSignalValues()
void InitBait(ItemBase item)
ref CatchingContextFishingRodAction m_ContextData
class ActionTargets ActionTarget
void CCTWaterSurfaceEx(float maximal_target_distance, int allowedLiquidSource)
class BaitData m_MainItem
class DayZCreatureAnimInterface RegisterAnimationEvent(string event_name, string function_name)
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
ref CCIBase m_ConditionItem
ref CCTBase m_ConditionTarget
void SetCommand(int command_uid)
void ActionContinuousBase()
override void EndActionComponent()
int EvaluateFishingResult(ActionData action_data)
Player input reaction evaluation.
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
override void OnEndInput(ActionData action_data)
EntityAI TrySpawnCatch(FishingActionData action_data)
void OnSignalEnd(FishingActionData action_data)
void CreateAndSetupActionCallback(ActionData action_data)
override void CreateConditionComponents()
override void OnUpdate(ActionData action_data)
override bool CanBeUsedInFreelook()
override void OnAnimationEvent(ActionData action_data)
const string ALLOWED_WATER_SURFACES
override void OnFinishProgress(ActionData action_data)
void ComposeLocalContextData(FishingActionData data)
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
override void OnEnd(ActionData action_data)
override bool HasTarget()
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
void PlaySplashEffectSynced(FishingActionData actionDataFishing)
override bool HasAlternativeInterrupt()
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=null)
void OnSignalStart(FishingActionData action_data)
bool CheckForSea(ActionData action_data)
override ActionData CreateActionData()
override void EndActionComponent()
ref array< string > m_JunkTypes
override void OnStateChange(int pOldState, int pCurrentState)
void HandleFishingResultSuccess()
void HandleFishingResultFailure()
override void InitActionComponent()
override void CreateActionComponent()
void DestroySplashEffectSynced()
Destroys the effecter, but lets the rest of the particle play out.
FishingActionData m_ActionDataFishing
Super root of all classes in Enforce script.
void AnimateFishingRodEx(float phase, bool instant=false)
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
static void DestroyEffecterParticleServer(int effecterID)
static int CreateParticleServer(vector pos, EffecterParameters parameters)
returns unique effecter ID
static void ReinitParticleServer(int effecterID, EffecterParameters parameters)
allows re-initializing existing effecter with new parameters (extept m_EffecterType,...
static void ReactivateParticleServer(int effecterID)
Manager class for managing Effect (EffectParticle, EffectSound)
proto bool Write(void value_out)
proto bool Read(void value_in)
const int EVENT_SPLASH_SIGNAL
const int EVENT_ANIMATE_ROD_CLOSE
const float CYCLE_LENGTH_BASE
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto float Normalize()
Normalizes vector. Returns length.
static vector Direction(vector p1, vector p2)
Returns direction vector from point p1 to point p2.
DayZPlayerConstants
defined in C++
Serializer ParamsReadContext
proto native CGame GetGame()
Serializer ParamsWriteContext
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
const int LIQUID_FRESHWATER
const int LIQUID_SALTWATER
static const int STATE_NONE
undef state - not running anymore
static const int STATE_LOOP_IN
looped state
proto native void EnableStateChangeCallback()
enables state change callback OnStateChange
static const int STATE_LOOP_LOOP
proto native int GetState()
returns one of STATE_...
static const int STATE_LOOP_LOOP2