Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_TutorialLogic_VehicleMaintenence.c
Go to the documentation of this file.
3{
4 protected VehicleControllerComponent vehicleController;
5 //------------------------------------------------------------------------------------------------
6 override void OnCourseStart()
7 {
8 SCR_TutorialGamemodeComponent tutorial = SCR_TutorialGamemodeComponent.GetInstance();
9 if (!tutorial)
10 return;
11
14
15 MoveIntoStorage("Repair_Wrench");
16 MoveIntoStorage("Repair_Jerrycan");
17
18 IEntity jerryCan = GetGame().GetWorld().FindEntityByName("Repair_Jerrycan");
19 if (!jerryCan)
20 return;
21
23 if (fuelMan)
24 fuelMan.SetTotalFuelPercentage(0);
25
26 Vehicle veh = Vehicle.Cast(GetGame().GetWorld().FindEntityByName("RepairingVehicle"));
27 if (veh)
28 {
29 vehicleController = veh.GetVehicleController();
30 GetGame().GetCallqueue().CallLater(IsVehicleDrowned, 1000, true);
31 }
32 };
33
34 //------------------------------------------------------------------------------------------------
35 override void OnCourseEnd()
36 {
37 GetGame().OnInputDeviceIsGamepadInvoker().Remove(OnInputChanged);
38 GetGame().GetCallqueue().Remove(IsVehicleDrowned);
39 };
40
41 //------------------------------------------------------------------------------------------------
42 protected void IsVehicleDrowned()
43 {
45 {
46 GetGame().OnInputDeviceIsGamepadInvoker().Remove(OnInputChanged);
47 return;
48 }
49
50 if (!vehicleController.GetEngineDrowned())
51 return;
52
53 SCR_TutorialGamemodeComponent tutorial = SCR_TutorialGamemodeComponent.GetInstance();
54 if (tutorial)
55 tutorial.RequestBreakCourse(SCR_ETutorialBreakType.FORCED);
56 }
57
58 //------------------------------------------------------------------------------------------------
59 void MoveIntoStorage(string entityName)
60 {
61 IEntity ent = GetGame().GetWorld().FindEntityByName(entityName);
62 if (!ent)
63 return;
64
65 IEntity storageEnt = GetGame().GetWorld().FindEntityByName("toolBox");
66 if (!storageEnt)
67 return;
68
69 SCR_InventoryStorageManagerComponent inventoryStorageComp = SCR_InventoryStorageManagerComponent.Cast(storageEnt.FindComponent(SCR_InventoryStorageManagerComponent));
70 if (!inventoryStorageComp)
71 return;
72
73 inventoryStorageComp.InsertItem(ent);
74 }
75
76 //------------------------------------------------------------------------------------------------
79 {
80 IEntity cargo = GetGame().GetWorld().FindEntityByName("StorageDepo");
81 if (!cargo)
82 return;
83
84 SCR_ResourceComponent resourceComponent = SCR_ResourceComponent.FindResourceComponent(cargo);
85 if (!resourceComponent)
86 return;
87
88 SCR_ResourceConsumer resourceConsumer = resourceComponent.GetConsumer(EResourceGeneratorID.DEFAULT_STORAGE, EResourceType.SUPPLIES);
89 if (resourceConsumer)
90 resourceConsumer.RequestConsumtion(resourceConsumer.GetAggregatedResourceValue());
91
92 SCR_ResourceGenerator resourceGenerator = resourceComponent.GetGenerator(EResourceGeneratorID.DEFAULT_STORAGE, EResourceType.SUPPLIES);
93 if (resourceGenerator)
94 resourceGenerator.RequestGeneration(250);
95 }
96
97 //------------------------------------------------------------------------------------------------
100 {
101 Vehicle courseVehicle = Vehicle.Cast(GetGame().GetWorld().FindEntityByName("RepairingVehicle"));
102 if (!courseVehicle)
103 return;
104
105 SCR_DamageManagerComponent damageManagerBroken = SCR_DamageManagerComponent.GetDamageManager(courseVehicle);
106 if (damageManagerBroken)
107 {
108 HitZone engineHitZone = damageManagerBroken.GetHitZoneByName("Engine_01");
109
110 if (engineHitZone)
111 {
112 // This will work only if hitzone belongs to this damage manager
113 vector transform[3];
114 transform[0] = courseVehicle.GetOrigin();
115 transform[1] = vector.Forward;
116 transform[2] = vector.Up;
117
118 DamageManagerComponent engineDamageManager = DamageManagerComponent.Cast(engineHitZone.GetHitZoneContainer());
119 if (engineDamageManager)
120 {
121 SCR_DamageContext damageContext1 = new SCR_DamageContext(EDamageType.TRUE, engineHitZone.GetMaxHealth(), transform, engineDamageManager.GetOwner(), engineHitZone, Instigator.CreateInstigator(null), null, -1, -1);
122 SCR_DamageContext damageContext2 = new SCR_DamageContext(EDamageType.COLLISION, 50, transform, engineDamageManager.GetOwner(), engineHitZone, Instigator.CreateInstigator(null), null, -1, -1);
123
124 engineDamageManager.HandleDamage(damageContext1);
125 engineDamageManager.HandleDamage(damageContext2);
126 }
127 }
128
129 engineHitZone = damageManagerBroken.GetHitZoneByName("FuelTank_01");
130
131 if (engineHitZone)
132 {
133 // This will work only if hitzone belongs to this damage manager
134 vector transform[3];
135 transform[0] = courseVehicle.GetOrigin();
136 transform[1] = vector.Forward;
137 transform[2] = vector.Up;
138
139 DamageManagerComponent engineDamageManager = DamageManagerComponent.Cast(engineHitZone.GetHitZoneContainer());
140 if (engineDamageManager)
141 {
142 SCR_DamageContext damageContext1 = new SCR_DamageContext(EDamageType.TRUE, engineHitZone.GetMaxHealth(), transform, engineDamageManager.GetOwner(), engineHitZone, Instigator.CreateInstigator(null), null, -1, -1);
143 SCR_DamageContext damageContext2 = new SCR_DamageContext(EDamageType.COLLISION, 50, transform, engineDamageManager.GetOwner(), engineHitZone, Instigator.CreateInstigator(null), null, -1, -1);
144
145 engineDamageManager.HandleDamage(damageContext1);
146 engineDamageManager.HandleDamage(damageContext2);
147 }
148 }
149 }
150 }
151
152 //------------------------------------------------------------------------------------------------
153 void OnInputChanged(bool gamepad)
154 {
155 SCR_TutorialGamemodeComponent tutorial = SCR_TutorialGamemodeComponent.GetInstance();
156 if (!tutorial)
157 return;
158
159 if (gamepad)
160 {
161 if (tutorial.GetStageIndexByName("GAMEPAD") == -1)
162 tutorial.InsertStage("GAMEPAD", tutorial.GetActiveStageIndex());
163
164 tutorial.SetStage("GAMEPAD");
165 return;
166 }
167
168 if (tutorial.GetStageIndexByName("KMB") == -1)
169 tutorial.InsertStage("KMB", tutorial.GetActiveStageIndex());
170
171 tutorial.SetStage("KMB");
172 }
173}
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
SCR_ETutorialBreakType
void SCR_FuelManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
EResourceGeneratorID
proto external Managed FindComponent(typename typeName)
proto external BaseWorld GetWorld()
SCR_ResourceGenerationResponse RequestGeneration(float resourceAmount, SCR_ResourceGenerator generator=null)
enum EPhysicsLayerPresets Vehicle
Definition gameLib.c:24
EDamageType
Definition EDamageType.c:13