Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
actionrepairboatengine.c
Go to the documentation of this file.
2{
3 override void CreateActionComponent()
4 {
5 m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.BASEBUILDING_REPAIR_MEDIUM);
6 }
7}
8
10{
12 {
13 m_CallbackClass = ActionRepairBoatEngineCB;
14 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_FLAME_REPAIR;
15 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
16 m_FullBody = true;
17 m_LockTargetOnUse = false;
18 m_Text = "#repair";
19 }
20
21 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
22 {
23 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
24 return false;
25
26 Blowtorch bt = Blowtorch.Cast(item);
27 if (!bt.HasEnoughEnergyForRepair(UATimeSpent.BASEBUILDING_REPAIR_MEDIUM))
28 return false;
29
30 BoatScript boat = BoatScript.Cast(target.GetObject());
31 if (!boat || boat.EngineIsOn())
32 return false;
33
34 if (GetGame().IsDedicatedServer())
35 return true;
36
37 string damageZone = "";
38 array<string> selections = new array<string>();
39 boat.GetActionComponentNameList(target.GetComponentIndex(), selections, LOD.NAME_VIEW);
40
41 foreach (string selection : selections)
42 {
43 if (boat && DamageSystem.GetDamageZoneFromComponentName(boat, selection, damageZone))
44 {
45 if (damageZone == "Engine")
46 {
47 int zoneHP = boat.GetHealthLevel(damageZone);
48 if (zoneHP > GameConstants.STATE_WORN && zoneHP < GameConstants.STATE_RUINED)
49 {
50 m_CurrentDamageZone = damageZone;
51 return true;
52 }
53 }
54 }
55 }
56
57 return false;
58 }
59
60 override void AdjustVehicleHealthServer(ActionData action_data)
61 {
62 super.AdjustVehicleHealthServer(action_data);
63
64 MiscGameplayFunctions.DealAbsoluteDmg(action_data.m_MainItem, UADamageApplied.BUILD);
65 }
66
67 override void OnStartAnimationLoopServer(ActionData action_data)
68 {
69 super.OnStartAnimationLoopServer(action_data);
70
71 action_data.m_MainItem.GetCompEM().SwitchOn();
72 }
73
74 override void OnFinishProgressServer(ActionData action_data)
75 {
76 super.OnFinishProgressServer(action_data);
77 }
78
79 override void OnEndServer(ActionData action_data)
80 {
81 super.OnEndServer(action_data);
82
83 action_data.m_MainItem.GetCompEM().SwitchOff();
84 }
85}
int m_CommandUID
Definition actionbase.c:31
int m_StanceMask
Definition actionbase.c:33
ActionRepairBoatEngineCB ActionRepairVehiclePartCB ActionRepairBoatEngine()
ActionData m_ActionData
void OnStartAnimationLoopServer(ActionData action_data)
override void OnFinishProgressServer(ActionData action_data)
void AdjustVehicleHealthServer(ActionData action_data)
override void OnEndServer(ActionData action_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
LOD class.
Definition gameplay.c:204
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
eBrokenLegs
Definition ebrokenlegs.c:2
proto native CGame GetGame()