sedan_02.c 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. class Sedan_02 extends CarScript
  2. {
  3. protected ref UniversalTemperatureSource m_UTSource;
  4. protected ref UniversalTemperatureSourceSettings m_UTSSettings;
  5. protected ref UniversalTemperatureSourceLambdaEngine m_UTSLEngine;
  6. void Sedan_02()
  7. {
  8. m_dmgContactCoef = 0.0790;
  9. m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
  10. m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
  11. m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
  12. m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
  13. m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
  14. m_CarDoorOpenSound = "offroad_door_open_SoundSet";
  15. m_CarDoorCloseSound = "offroad_door_close_SoundSet";
  16. m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
  17. m_CarHornLongSoundName = "Sedan_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.S120;
  64. }
  65. override int GetSeatAnimationType(int posIdx)
  66. {
  67. switch (posIdx)
  68. {
  69. case 0:
  70. return DayZPlayerConstants.VEHICLESEAT_DRIVER;
  71. case 1:
  72. return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
  73. case 2:
  74. return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
  75. case 3:
  76. return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
  77. }
  78. return 0;
  79. }
  80. // Override for car-specific light type
  81. override CarLightBase CreateFrontLight()
  82. {
  83. return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
  84. }
  85. // Override for car-specific light type
  86. override CarRearLightBase CreateRearLight()
  87. {
  88. return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
  89. }
  90. override bool CanReleaseAttachment( EntityAI attachment )
  91. {
  92. if (!super.CanReleaseAttachment(attachment))
  93. {
  94. return false;
  95. }
  96. string attType = attachment.GetType();
  97. switch (attType)
  98. {
  99. case "CarBattery":
  100. if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
  101. {
  102. return false;
  103. }
  104. break;
  105. case "SparkPlug":
  106. if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
  107. {
  108. return false;
  109. }
  110. break;
  111. case "CarRadiator":
  112. if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
  113. {
  114. return false;
  115. }
  116. break;
  117. }
  118. return true;
  119. }
  120. override protected bool CanManipulateSpareWheel(string slotSelectionName)
  121. {
  122. return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
  123. }
  124. override bool CanDisplayAttachmentCategory(string category_name)
  125. {
  126. if ( !super.CanDisplayAttachmentCategory(category_name))
  127. {
  128. return false;
  129. }
  130. category_name.ToLower();
  131. if (category_name.Contains("engine"))
  132. {
  133. if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
  134. {
  135. return false;
  136. }
  137. }
  138. if (category_name.Contains("trunk"))
  139. {
  140. if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
  141. {
  142. return false;
  143. }
  144. }
  145. return true;
  146. }
  147. override bool CanDisplayCargo()
  148. {
  149. if ( !super.CanDisplayCargo() )
  150. return false;
  151. if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
  152. return false;
  153. return true;
  154. }
  155. override int GetCarDoorsState(string slotType)
  156. {
  157. CarDoor carDoor;
  158. Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
  159. if (!carDoor)
  160. {
  161. return CarDoorState.DOORS_MISSING;
  162. }
  163. switch (slotType)
  164. {
  165. case "Sedan_02_Door_1_1":
  166. return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
  167. case "Sedan_02_Door_2_1":
  168. return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
  169. case "Sedan_02_Door_1_2":
  170. return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
  171. case "Sedan_02_Door_2_2":
  172. return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
  173. case "Sedan_02_Hood":
  174. return TranslateAnimationPhaseToCarDoorState("DoorsHood");
  175. case "Sedan_02_Trunk":
  176. return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
  177. }
  178. return CarDoorState.DOORS_MISSING;
  179. }
  180. override bool CrewCanGetThrough( int posIdx )
  181. {
  182. switch( posIdx )
  183. {
  184. case 0:
  185. if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
  186. return false;
  187. return true;
  188. break;
  189. case 1:
  190. if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
  191. return false;
  192. return true;
  193. break;
  194. case 2:
  195. if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
  196. return false;
  197. return true;
  198. break;
  199. case 3:
  200. if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
  201. return false;
  202. return true;
  203. break;
  204. }
  205. return false;
  206. }
  207. override string GetDoorSelectionNameFromSeatPos(int posIdx)
  208. {
  209. switch( posIdx )
  210. {
  211. case 0:
  212. return "doors_driver";
  213. break;
  214. case 1:
  215. return "doors_codriver";
  216. break;
  217. case 2:
  218. return "doors_cargo1";
  219. break;
  220. case 3:
  221. return "doors_cargo2";
  222. break;
  223. }
  224. return super.GetDoorSelectionNameFromSeatPos(posIdx);
  225. }
  226. override string GetDoorInvSlotNameFromSeatPos(int posIdx)
  227. {
  228. switch( posIdx )
  229. {
  230. case 0:
  231. return "Sedan_02_Door_1_1";
  232. break;
  233. case 1:
  234. return "Sedan_02_Door_2_1";
  235. break;
  236. case 2:
  237. return "Sedan_02_Door_1_2";
  238. break;
  239. case 3:
  240. return "Sedan_02_Door_2_2";
  241. break;
  242. }
  243. return super.GetDoorInvSlotNameFromSeatPos(posIdx);
  244. }
  245. override float OnSound(CarSoundCtrl ctrl, float oldValue)
  246. {
  247. switch ( ctrl )
  248. {
  249. case CarSoundCtrl.DOORS:
  250. float newValue = 0;
  251. if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
  252. {
  253. newValue += 0.25;
  254. }
  255. if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
  256. {
  257. newValue += 0.25;
  258. }
  259. if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
  260. {
  261. newValue += 0.25;
  262. }
  263. if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
  264. {
  265. newValue += 0.25;
  266. }
  267. return Math.Clamp(newValue, 0, 1);
  268. break;
  269. }
  270. return super.OnSound(ctrl, oldValue);
  271. }
  272. override string GetAnimSourceFromSelection( string selection )
  273. {
  274. switch( selection )
  275. {
  276. case "doors_driver":
  277. return "DoorsDriver";
  278. case "doors_codriver":
  279. return "DoorsCoDriver";
  280. case "doors_cargo1":
  281. return "DoorsCargo1";
  282. case "doors_cargo2":
  283. return "DoorsCargo2";
  284. case "doors_hood":
  285. return "DoorsHood";
  286. case "doors_trunk":
  287. return "DoorsTrunk";
  288. }
  289. return "";
  290. }
  291. override bool IsVitalTruckBattery()
  292. {
  293. return false;
  294. }
  295. override bool IsVitalGlowPlug()
  296. {
  297. return false;
  298. }
  299. override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
  300. {
  301. switch (currentSeat)
  302. {
  303. case 0:
  304. return nextSeat == 1;
  305. case 1:
  306. return nextSeat == 0;
  307. case 2:
  308. return nextSeat == 3;
  309. case 3:
  310. return nextSeat == 2;
  311. }
  312. return false;
  313. }
  314. override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
  315. {
  316. switch (pCurrentSeat)
  317. {
  318. case 0:
  319. return pDoorsSelection == "DoorsDriver";
  320. case 1:
  321. return pDoorsSelection == "DoorsCoDriver";
  322. case 2:
  323. return pDoorsSelection == "DoorsCargo1";
  324. case 3:
  325. return pDoorsSelection == "DoorsCargo2";
  326. }
  327. return false;
  328. }
  329. override void OnDebugSpawn()
  330. {
  331. SpawnUniversalParts();
  332. SpawnAdditionalItems();
  333. FillUpCarFluids();
  334. GetInventory().CreateInInventory("Sedan_02_Wheel");
  335. GetInventory().CreateInInventory("Sedan_02_Wheel");
  336. GetInventory().CreateInInventory("Sedan_02_Wheel");
  337. GetInventory().CreateInInventory("Sedan_02_Wheel");
  338. GetInventory().CreateInInventory("Sedan_02_Wheel");
  339. GetInventory().CreateInInventory("Sedan_02_Door_1_1");
  340. GetInventory().CreateInInventory("Sedan_02_Door_1_2");
  341. GetInventory().CreateInInventory("Sedan_02_Door_2_1");
  342. GetInventory().CreateInInventory("Sedan_02_Door_2_2");
  343. GetInventory().CreateInInventory("Sedan_02_Hood");
  344. GetInventory().CreateInInventory("Sedan_02_Trunk");
  345. //-----IN CAR CARGO
  346. GetInventory().CreateInInventory("Sedan_02_Wheel");
  347. GetInventory().CreateInInventory("Sedan_02_Wheel");
  348. }
  349. }
  350. class Sedan_02_Red extends Sedan_02
  351. {
  352. override void OnDebugSpawn()
  353. {
  354. SpawnUniversalParts();
  355. SpawnAdditionalItems();
  356. FillUpCarFluids();
  357. GetInventory().CreateInInventory("Sedan_02_Wheel");
  358. GetInventory().CreateInInventory("Sedan_02_Wheel");
  359. GetInventory().CreateInInventory("Sedan_02_Wheel");
  360. GetInventory().CreateInInventory("Sedan_02_Wheel");
  361. GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
  362. GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
  363. GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
  364. GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
  365. GetInventory().CreateInInventory("Sedan_02_Hood_Red");
  366. GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
  367. //-----IN CAR CARGO
  368. GetInventory().CreateInInventory("Sedan_02_Wheel");
  369. GetInventory().CreateInInventory("Sedan_02_Wheel");
  370. }
  371. }
  372. class Sedan_02_Grey extends Sedan_02
  373. {
  374. override void OnDebugSpawn()
  375. {
  376. SpawnUniversalParts();
  377. SpawnAdditionalItems();
  378. FillUpCarFluids();
  379. GetInventory().CreateInInventory("Sedan_02_Wheel");
  380. GetInventory().CreateInInventory("Sedan_02_Wheel");
  381. GetInventory().CreateInInventory("Sedan_02_Wheel");
  382. GetInventory().CreateInInventory("Sedan_02_Wheel");
  383. GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
  384. GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
  385. GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
  386. GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
  387. GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
  388. GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
  389. //-----IN CAR CARGO
  390. GetInventory().CreateInInventory("Sedan_02_Wheel");
  391. GetInventory().CreateInInventory("Sedan_02_Wheel");
  392. }
  393. }