6class FishingActionData : ActionData
44 rod.AnimateFishingRodEx(phase,instant);
71 FishingActionData m_ActionDataFishing;
73 override void CreateActionComponent()
75 EnableStateChangeCallback();
79 cycleTime = m_ActionDataFishing.m_ContextData.GetActionCycleTime();
84 override void InitActionComponent()
86 super.InitActionComponent();
92 override void EndActionComponent()
94 bool animateRod =
false;
95 if (m_ActionDataFishing.m_State ==
UA_CANCEL)
100 if (m_ActionDataFishing.m_FishingResult == 1)
119 m_ActionDataFishing.AnimateRod(
false,
m_Canceled);
122 DestroySplashEffectSynced();
125 override void OnStateChange(
int pOldState,
int pCurrentState)
127 super.OnStateChange(pOldState,pCurrentState);
129 if (pOldState == STATE_NONE && pCurrentState == STATE_LOOP_IN)
131 m_ActionDataFishing.AnimateRod(
true);
135 void ToggleFishBiting()
137 if (GetState() == STATE_LOOP_LOOP || GetState() == STATE_LOOP_LOOP2)
142 void DestroySplashEffectSynced()
144 if (
GetGame().IsServer() && m_ActionDataFishing.m_SplashUniqueID >= 0)
147 m_ActionDataFishing.m_SplashUniqueID = -1;
153 void HandleFishingResultSuccess();
154 void HandleFishingResultFailure();
168 m_Text =
"#start_fishing";
171 override void CreateConditionComponents()
177 override bool HasTarget()
182 override bool HasAlternativeInterrupt()
187 override bool CanBeUsedInFreelook()
195 hook =
ItemBase.Cast(item.FindAttachmentBySlotName(
"Hook"));
197 return hook && !hook.IsRuined() && !hook.IsPendingDeletion();
200 override ActionData CreateActionData()
202 FishingActionData actionData =
new FishingActionData();
206 override bool SetupAction(
PlayerBase player, ActionTarget target,
ItemBase item, out ActionData action_data,
Param extra_data = null)
208 if (super.SetupAction(player, target, item, action_data, extra_data))
210 FishingActionData data;
211 if (
Class.CastTo(data,action_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
239 if (
Class.CastTo(data,action_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))
257 if (!ctx.Read(receiveDataFishing.m_IsSurfaceSea))
266 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
268 super.HandleReciveData(action_recive_data, action_data);
271 FishingActionData fishingData = FishingActionData.Cast(action_data);
273 fishingData.m_IsSurfaceSea = receiveDataFishing.m_IsSurfaceSea;
278 super.CreateAndSetupActionCallback(action_data);
280 FishingActionData data;
281 if (
Class.CastTo(data,action_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;
351 if (
Class.CastTo(data,action_data))
353 data.RollNextResultChance();
360 if (
Class.CastTo(callback, action_data.m_Callback))
362 switch (callback.GetState())
367 FishingActionData data;
368 if (
Class.CastTo(data,action_data))
371 if (data.m_FishingResult != -1)
377 super.OnEndInput(action_data);
378 callback.EndActionComponent();
384 override void OnEnd(ActionData action_data)
386 super.OnEnd(action_data);
388 FishingActionData fad;
389 if (
Class.CastTo(fad,action_data))
390 fad.AnimateRod(
false,
true);
396 FishingActionData fad;
397 if (
Class.CastTo(fad,action_data))
401 if (fad.m_IsSignalActive)
403 fad.m_ContextData.OnBeforeSpawnSignalHit();
408 fad.m_ContextData.OnAfterSpawnSignalHit();
410 legacyCB.HandleFishingResultSuccess();
412 EntityAI hookCheck = action_data.m_MainItem.FindAttachmentBySlotName(
"Hook");
413 return hookCheck != null && !hookCheck.IsPendingDeletion();
417 fad.m_ContextData.OnSignalMiss();
419 legacyCB.HandleFishingResultFailure();
431 action_data.m_IsSignalActive =
true;
433 if (
Class.CastTo(fishingCB,action_data.m_Callback))
434 fishingCB.ToggleFishBiting();
439 action_data.m_IsSignalActive =
false;
441 if (
Class.CastTo(fishingCB,action_data.m_Callback))
442 fishingCB.ToggleFishBiting();
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
#define LIQUID_FRESHWATER
class BaitData m_MainItem
void CCTWaterSurfaceEx(float maximal_target_distance, int allowedLiquidSource)
void SetCommand(int command_uid)
ref CCIBase m_ConditionItem
ref CCTBase m_ConditionTarget
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 OnUpdate(ActionData action_data)
override void OnAnimationEvent(ActionData action_data)
override void OnFinishProgress(ActionData action_data)
void ComposeLocalContextData(FishingActionData data)
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
override void OnEnd(ActionData action_data)
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
void PlaySplashEffectSynced(FishingActionData actionDataFishing)
void OnSignalStart(FishingActionData action_data)
bool CheckForSea(ActionData action_data)
float RandomizeSignalDuration()
float RandomizeSignalStartTime()
override bool RollCatch()
Super root of all classes in Enforce script.
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Manager class for managing Effect (EffectParticle, EffectSound)
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)
Serialization general interface. Serializer API works with:
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
class DayZCreatureAnimInterface RegisterAnimationEvent(string event_name, string function_name)
DayZPlayerConstants
defined in C++
proto native CGame GetGame()
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.