sedan_02.c 11 KB

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