44 rod.AnimateFishingRodEx(phase,instant);
71 FishingActionData m_ActionDataFishing;
75 EnableStateChangeCallback();
79 cycleTime = m_ActionDataFishing.m_ContextData.GetActionCycleTime();
86 super.InitActionComponent();
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()
142 void DestroySplashEffectSynced()
144 if (
g_Game.IsServer() && m_ActionDataFishing.m_SplashUniqueID >= 0)
147 m_ActionDataFishing.m_SplashUniqueID = -1;
153 void HandleFishingResultSuccess();
154 void HandleFishingResultFailure();
157class ActionFishingNew: ActionContinuousBase
161 void ActionFishingNew()
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;
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))
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 (
g_Game.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();
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();
405 if (!
g_Game.IsMultiplayer() ||
g_Game.IsDedicatedServer())
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
override bool HasAlternativeInterrupt()
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 CreateActionComponent()
void SetCommand(int command_uid)
void InitActionComponent()
void EndActionComponent()
ActionData CreateActionData()
bool CanBeUsedInFreelook()
ref CCIBase m_ConditionItem
void CreateConditionComponents()
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)
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)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
class DayZCreatureAnimInterface RegisterAnimationEvent(string event_name, string function_name)
DayZPlayerConstants
defined in C++
Serializer ParamsReadContext
Serializer ParamsWriteContext
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
bool GetState()
returns one of STATE_...