offroad_02.c 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. class Offroad_02 extends CarScript
  2. {
  3. protected ref UniversalTemperatureSource m_UTSource;
  4. protected ref UniversalTemperatureSourceSettings m_UTSSettings;
  5. protected ref UniversalTemperatureSourceLambdaEngine m_UTSLEngine;
  6. void Offroad_02()
  7. {
  8. //m_dmgContactCoef = 0.0365;
  9. m_EngineStartOK = "Offroad_02_engine_start_SoundSet";
  10. m_EngineStartBattery = "Offroad_02_engine_failed_start_battery_SoundSet";
  11. m_EngineStartPlug = "Offroad_02_engine_failed_start_sparkplugs_SoundSet";
  12. m_EngineStartFuel = "Offroad_02_engine_failed_start_fuel_SoundSet";
  13. m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
  14. m_CarDoorOpenSound = "offroad_02_door_open_SoundSet";
  15. m_CarDoorCloseSound = "offroad_02_door_close_SoundSet";
  16. m_CarHornShortSoundName = "Offroad_02_Horn_Short_SoundSet";
  17. m_CarHornLongSoundName = "Offroad_02_Horn_SoundSet";
  18. SetEnginePos("0 0.7 1.7");
  19. }
  20. override void EEInit()
  21. {
  22. super.EEInit();
  23. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  24. {
  25. m_UTSSettings = new UniversalTemperatureSourceSettings();
  26. m_UTSSettings.m_ManualUpdate = true;
  27. m_UTSSettings.m_TemperatureItemCap = GameConstants.ITEM_TEMPERATURE_NEUTRAL_ZONE_MIDDLE;
  28. m_UTSSettings.m_TemperatureCap = 0;
  29. m_UTSSettings.m_RangeFull = 0.5;
  30. m_UTSSettings.m_RangeMax = 2;
  31. m_UTSLEngine = new UniversalTemperatureSourceLambdaEngine();
  32. m_UTSource = new UniversalTemperatureSource(this, m_UTSSettings, m_UTSLEngine);
  33. }
  34. }
  35. override void OnEngineStart()
  36. {
  37. super.OnEngineStart();
  38. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  39. {
  40. m_UTSource.SetDefferedActive(true, 20.0);
  41. }
  42. }
  43. override void OnEngineStop()
  44. {
  45. super.OnEngineStop();
  46. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  47. {
  48. m_UTSource.SetDefferedActive(false, 10.0);
  49. }
  50. }
  51. override void EOnPostSimulate(IEntity other, float timeSlice)
  52. {
  53. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  54. {
  55. if (m_UTSource.IsActive())
  56. {
  57. m_UTSource.Update(m_UTSSettings, m_UTSLEngine);
  58. }
  59. }
  60. }
  61. override int GetAnimInstance()
  62. {
  63. return VehicleAnimInstances.HMMWV;
  64. }
  65. override float GetTransportCameraDistance()
  66. {
  67. return 5.1;
  68. }
  69. override int GetSeatAnimationType(int posIdx)
  70. {
  71. switch (posIdx)
  72. {
  73. case 0:
  74. return DayZPlayerConstants.VEHICLESEAT_DRIVER;
  75. case 1:
  76. return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
  77. case 2:
  78. return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
  79. case 3:
  80. return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
  81. }
  82. return 0;
  83. }
  84. // Override for car-specific light type
  85. override CarLightBase CreateFrontLight()
  86. {
  87. return CarLightBase.Cast(ScriptedLightBase.CreateLight(Offroad_02FrontLight));
  88. }
  89. // Override for car-specific light type
  90. override CarRearLightBase CreateRearLight()
  91. {
  92. return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Offroad_02RearLight));
  93. }
  94. override bool CanReleaseAttachment( EntityAI attachment )
  95. {
  96. if (!super.CanReleaseAttachment(attachment))
  97. {
  98. return false;
  99. }
  100. string attType = attachment.GetType();
  101. switch (attType)
  102. {
  103. case "CarBattery":
  104. if (GetCarDoorsState("Offroad_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
  105. {
  106. return false;
  107. }
  108. break;
  109. case "GlowPlug":
  110. if (GetCarDoorsState("Offroad_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
  111. {
  112. return false;
  113. }
  114. break;
  115. }
  116. return true;
  117. }
  118. override protected bool CanManipulateSpareWheel(string slotSelectionName)
  119. {
  120. return GetCarDoorsState("Offroad_02_Trunk") != CarDoorState.DOORS_CLOSED;
  121. }
  122. override bool CanDisplayAttachmentCategory(string category_name)
  123. {
  124. if ( !super.CanDisplayAttachmentCategory(category_name))
  125. {
  126. return false;
  127. }
  128. category_name.ToLower();
  129. if (category_name.Contains("engine"))
  130. {
  131. if (GetCarDoorsState("Offroad_02_Hood") == CarDoorState.DOORS_CLOSED)
  132. {
  133. return false;
  134. }
  135. }
  136. return true;
  137. }
  138. override bool CanDisplayCargo()
  139. {
  140. if ( !super.CanDisplayCargo() )
  141. return false;
  142. if ( GetCarDoorsState("Offroad_02_Trunk") == CarDoorState.DOORS_CLOSED )
  143. return false;
  144. return true;
  145. }
  146. override int GetCarDoorsState(string slotType)
  147. {
  148. CarDoor carDoor;
  149. Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
  150. if (!carDoor)
  151. {
  152. return CarDoorState.DOORS_MISSING;
  153. }
  154. switch (slotType)
  155. {
  156. case "Offroad_02_Door_1_1":
  157. return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
  158. case "Offroad_02_Door_2_1":
  159. return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
  160. case "Offroad_02_Door_1_2":
  161. return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
  162. case "Offroad_02_Door_2_2":
  163. return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
  164. case "Offroad_02_Hood":
  165. return TranslateAnimationPhaseToCarDoorState("DoorsHood");
  166. case "Offroad_02_Trunk":
  167. return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
  168. }
  169. return CarDoorState.DOORS_MISSING;
  170. }
  171. override bool CrewCanGetThrough( int posIdx )
  172. {
  173. switch( posIdx )
  174. {
  175. case 0:
  176. if ( GetCarDoorsState("Offroad_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
  177. return false;
  178. return true;
  179. break;
  180. case 1:
  181. if ( GetCarDoorsState("Offroad_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
  182. return false;
  183. return true;
  184. break;
  185. case 2:
  186. if ( GetCarDoorsState("Offroad_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
  187. return false;
  188. return true;
  189. break;
  190. case 3:
  191. if ( GetCarDoorsState("Offroad_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
  192. return false;
  193. return true;
  194. break;
  195. }
  196. return false;
  197. }
  198. override string GetDoorSelectionNameFromSeatPos(int posIdx)
  199. {
  200. switch( posIdx )
  201. {
  202. case 0:
  203. return "doors_driver";
  204. break;
  205. case 1:
  206. return "doors_codriver";
  207. break;
  208. case 2:
  209. return "doors_cargo1";
  210. break;
  211. case 3:
  212. return "doors_cargo2";
  213. break;
  214. }
  215. return super.GetDoorSelectionNameFromSeatPos(posIdx);
  216. }
  217. override string GetDoorInvSlotNameFromSeatPos(int posIdx)
  218. {
  219. switch (posIdx)
  220. {
  221. case 0:
  222. return "Offroad_02_Door_1_1";
  223. case 1:
  224. return "Offroad_02_Door_2_1";
  225. case 2:
  226. return "Offroad_02_Door_1_2";
  227. case 3:
  228. return "Offroad_02_Door_2_2";
  229. }
  230. return super.GetDoorInvSlotNameFromSeatPos(posIdx);
  231. }
  232. override float OnSound(CarSoundCtrl ctrl, float oldValue)
  233. {
  234. switch ( ctrl )
  235. {
  236. case CarSoundCtrl.DOORS:
  237. float newValue = 0;
  238. if (GetCarDoorsState("Offroad_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
  239. {
  240. newValue += 0.25;
  241. }
  242. if (GetCarDoorsState("Offroad_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
  243. {
  244. newValue += 0.25;
  245. }
  246. if (GetCarDoorsState("Offroad_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
  247. {
  248. newValue += 0.25;
  249. }
  250. if (GetCarDoorsState("Offroad_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
  251. {
  252. newValue += 0.25;
  253. }
  254. return Math.Clamp(newValue, 0, 1);
  255. break;
  256. }
  257. return super.OnSound(ctrl, oldValue);
  258. }
  259. override string GetAnimSourceFromSelection(string selection)
  260. {
  261. switch (selection)
  262. {
  263. case "doors_driver":
  264. return "DoorsDriver";
  265. case "doors_codriver":
  266. return "DoorsCoDriver";
  267. case "doors_cargo1":
  268. return "DoorsCargo1";
  269. case "doors_cargo2":
  270. return "DoorsCargo2";
  271. case "doors_hood":
  272. return "DoorsHood";
  273. case "doors_trunk":
  274. return "DoorsTrunk";
  275. }
  276. return "";
  277. }
  278. override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
  279. {
  280. switch (currentSeat)
  281. {
  282. case 0:
  283. return nextSeat == 1;
  284. case 1:
  285. return nextSeat == 0;
  286. case 2:
  287. return nextSeat == 3;
  288. case 3:
  289. return nextSeat == 2;
  290. }
  291. return false;
  292. }
  293. override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
  294. {
  295. switch (pCurrentSeat)
  296. {
  297. case 0:
  298. return pDoorsSelection == "DoorsDriver";
  299. case 1:
  300. return pDoorsSelection == "DoorsCoDriver";
  301. case 2:
  302. return pDoorsSelection == "DoorsCargo1";
  303. case 3:
  304. return pDoorsSelection == "DoorsCargo2";
  305. }
  306. return false;
  307. }
  308. override bool IsVitalTruckBattery()
  309. {
  310. return false;
  311. }
  312. override bool IsVitalSparkPlug()
  313. {
  314. return false;
  315. }
  316. override bool IsVitalRadiator()
  317. {
  318. return false;
  319. }
  320. override void OnDebugSpawn()
  321. {
  322. SpawnUniversalParts();
  323. SpawnAdditionalItems();
  324. FillUpCarFluids();
  325. GetInventory().CreateInInventory("Offroad_02_Wheel");
  326. GetInventory().CreateInInventory("Offroad_02_Wheel");
  327. GetInventory().CreateInInventory("Offroad_02_Wheel");
  328. GetInventory().CreateInInventory("Offroad_02_Wheel");
  329. GetInventory().CreateInInventory("Offroad_02_Door_1_1");
  330. GetInventory().CreateInInventory("Offroad_02_Door_1_2");
  331. GetInventory().CreateInInventory("Offroad_02_Door_2_1");
  332. GetInventory().CreateInInventory("Offroad_02_Door_2_2");
  333. GetInventory().CreateInInventory("Offroad_02_Hood");
  334. GetInventory().CreateInInventory("Offroad_02_Trunk");
  335. //-----IN CAR CARGO
  336. GetInventory().CreateInInventory("Offroad_02_Wheel");
  337. GetInventory().CreateInInventory("Offroad_02_Wheel");
  338. }
  339. }