Dayz 1.25
Dayz Code Explorer by KGB
Загрузка...
Поиск...
Не найдено
Файл Sedan_02.c

См. исходные тексты.

Структуры данных

class  CarScript
 
class  Sedan_02
 

Функции

class Sedan_02 extends CarScript OnDebugSpawn ()
 
void Sedan_02 ()
 
override void EEInit ()
 
override void OnEngineStart ()
 
override void OnEngineStop ()
 
override void EOnPostSimulate (IEntity other, float timeSlice)
 
override int GetAnimInstance ()
 
override int GetSeatAnimationType (int posIdx)
 
override CarLightBase CreateFrontLight ()
 
override CarRearLightBase CreateRearLight ()
 
override bool CanReleaseAttachment (EntityAI attachment)
 
bool CanManipulateSpareWheel (string slotSelectionName)
 
override bool CanDisplayAttachmentCategory (string category_name)
 
override bool CanDisplayCargo ()
 
override int GetCarDoorsState (string slotType)
 
override bool CrewCanGetThrough (int posIdx)
 
override string GetDoorSelectionNameFromSeatPos (int posIdx)
 
override string GetDoorInvSlotNameFromSeatPos (int posIdx)
 
override float OnSound (CarSoundCtrl ctrl, float oldValue)
 
override string GetAnimSourceFromSelection (string selection)
 
override bool IsVitalTruckBattery ()
 
override bool IsVitalGlowPlug ()
 
override bool CanReachSeatFromSeat (int currentSeat, int nextSeat)
 
override bool CanReachDoorsFromSeat (string pDoorsSelection, int pCurrentSeat)
 

Переменные

ref UniversalTemperatureSource m_UTSource
 
ref UniversalTemperatureSourceSettings m_UTSSettings
 
ref UniversalTemperatureSourceLambdaEngine m_UTSLEngine
 

Функции

◆ CanDisplayAttachmentCategory()

override bool CanDisplayAttachmentCategory ( string category_name)
protected

◆ CanDisplayCargo()

override bool CanDisplayCargo ( )
protected
609{
613
614 void Sedan_02()
615 {
616 m_dmgContactCoef = 0.0790;
617
618 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
619 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
620 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
621 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
622 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
623
624 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
625 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
626
627 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
628 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
629
630 SetEnginePos("0 0.7 -1.7");
631 }
632
633 override void EEInit()
634 {
635 super.EEInit();
636
637 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
638 {
640 m_UTSSettings.m_ManualUpdate = true;
641 m_UTSSettings.m_TemperatureMin = 0;
642 m_UTSSettings.m_TemperatureMax = 30;
643 m_UTSSettings.m_RangeFull = 0.5;
644 m_UTSSettings.m_RangeMax = 2;
645 m_UTSSettings.m_TemperatureCap = 25;
646
649 }
650 }
651
652 override void OnEngineStart()
653 {
654 super.OnEngineStart();
655
656 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
657 {
658 m_UTSource.SetDefferedActive(true, 20.0);
659 }
660 }
661
662 override void OnEngineStop()
663 {
664 super.OnEngineStop();
665
666 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
667 {
668 m_UTSource.SetDefferedActive(false, 10.0);
669 }
670 }
671
672 override void EOnPostSimulate(IEntity other, float timeSlice)
673 {
674 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
675 {
676 if (m_UTSource.IsActive())
677 {
679 }
680 }
681 }
682
683 override int GetAnimInstance()
684 {
685 return VehicleAnimInstances.S120;
686 }
687
688 override int GetSeatAnimationType(int posIdx)
689 {
690 switch (posIdx)
691 {
692 case 0:
693 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
694 case 1:
695 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
696 case 2:
697 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
698 case 3:
699 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
700 }
701
702 return 0;
703 }
704
705 // Override for car-specific light type
707 {
708 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
709 }
710
711 // Override for car-specific light type
713 {
714 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
715 }
716
718 {
719 if (!super.CanReleaseAttachment(attachment))
720 {
721 return false;
722 }
723
724 string attType = attachment.GetType();
725 switch (attType)
726 {
727 case "CarBattery":
728 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
729 {
730 return false;
731 }
732 break;
733
734 case "SparkPlug":
735 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
736 {
737 return false;
738 }
739 break;
740
741 case "CarRadiator":
742 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
743 {
744 return false;
745 }
746 break;
747 }
748
749 return true;
750 }
751
752 override protected bool CanManipulateSpareWheel(string slotSelectionName)
753 {
754 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
755 }
756
757 override bool CanDisplayAttachmentCategory(string category_name)
758 {
759 if ( !super.CanDisplayAttachmentCategory(category_name))
760 {
761 return false;
762 }
763
764 category_name.ToLower();
765 if (category_name.Contains("engine"))
766 {
767 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
768 {
769 return false;
770 }
771 }
772
773 if (category_name.Contains("trunk"))
774 {
775 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
776 {
777 return false;
778 }
779 }
780
781 return true;
782 }
783
784 override bool CanDisplayCargo()
785 {
786 if ( !super.CanDisplayCargo() )
787 return false;
788
789 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
790 return false;
791
792 return true;
793 }
794
795 override int GetCarDoorsState(string slotType)
796 {
798
799 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
800 if (!carDoor)
801 {
802 return CarDoorState.DOORS_MISSING;
803 }
804
805 switch (slotType)
806 {
807 case "Sedan_02_Door_1_1":
808 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
809
810 case "Sedan_02_Door_2_1":
811 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
812
813 case "Sedan_02_Door_1_2":
814 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
815
816 case "Sedan_02_Door_2_2":
817 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
818
819 case "Sedan_02_Hood":
820 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
821
822 case "Sedan_02_Trunk":
823 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
824 }
825
826 return CarDoorState.DOORS_MISSING;
827 }
828
829
830 override bool CrewCanGetThrough( int posIdx )
831 {
832 switch( posIdx )
833 {
834 case 0:
835 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
836 return false;
837
838 return true;
839 break;
840
841 case 1:
842 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
843 return false;
844
845 return true;
846 break;
847
848 case 2:
849 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
850 return false;
851
852 return true;
853 break;
854
855 case 3:
856 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
857 return false;
858
859 return true;
860 break;
861 }
862
863 return false;
864 }
865
866 override string GetDoorSelectionNameFromSeatPos(int posIdx)
867 {
868 switch( posIdx )
869 {
870 case 0:
871 return "doors_driver";
872 break;
873 case 1:
874 return "doors_codriver";
875 break;
876 case 2:
877 return "doors_cargo1";
878 break;
879 case 3:
880 return "doors_cargo2";
881 break;
882 }
883
884 return super.GetDoorSelectionNameFromSeatPos(posIdx);
885 }
886
887 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
888 {
889 switch( posIdx )
890 {
891 case 0:
892 return "Sedan_02_Door_1_1";
893 break;
894 case 1:
895 return "Sedan_02_Door_2_1";
896 break;
897 case 2:
898 return "Sedan_02_Door_1_2";
899 break;
900 case 3:
901 return "Sedan_02_Door_2_2";
902 break;
903 }
904
905 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
906 }
907
908 override float OnSound(CarSoundCtrl ctrl, float oldValue)
909 {
910 switch ( ctrl )
911 {
912 case CarSoundCtrl.DOORS:
913 float newValue = 0;
914 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
915 {
916 newValue += 0.25;
917 }
918
919 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
920 {
921 newValue += 0.25;
922 }
923
924 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
925 {
926 newValue += 0.25;
927 }
928
929 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
930 {
931 newValue += 0.25;
932 }
933
934 return Math.Clamp(newValue, 0, 1);
935 break;
936 }
937
938 return super.OnSound(ctrl, oldValue);
939 }
940
941 override string GetAnimSourceFromSelection( string selection )
942 {
943 switch( selection )
944 {
945 case "doors_driver":
946 return "DoorsDriver";
947 case "doors_codriver":
948 return "DoorsCoDriver";
949 case "doors_cargo1":
950 return "DoorsCargo1";
951 case "doors_cargo2":
952 return "DoorsCargo2";
953 case "doors_hood":
954 return "DoorsHood";
955 case "doors_trunk":
956 return "DoorsTrunk";
957 }
958
959 return "";
960 }
961
962
963 override bool IsVitalTruckBattery()
964 {
965 return false;
966 }
967
968 override bool IsVitalGlowPlug()
969 {
970 return false;
971 }
972
973 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
974 {
975 switch (currentSeat)
976 {
977 case 0:
978 return nextSeat == 1;
979
980 case 1:
981 return nextSeat == 0;
982
983 case 2:
984 return nextSeat == 3;
985
986 case 3:
987 return nextSeat == 2;
988 }
989
990 return false;
991 }
992
993 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
994 {
995 switch (pCurrentSeat)
996 {
997 case 0:
998 return pDoorsSelection == "DoorsDriver";
999
1000 case 1:
1001 return pDoorsSelection == "DoorsCoDriver";
1002
1003 case 2:
1004 return pDoorsSelection == "DoorsCargo1";
1005
1006 case 3:
1007 return pDoorsSelection == "DoorsCargo2";
1008 }
1009
1010 return false;
1011 }
1012
1013 override void OnDebugSpawn()
1014 {
1018
1019 GetInventory().CreateInInventory("Sedan_02_Wheel");
1020 GetInventory().CreateInInventory("Sedan_02_Wheel");
1021 GetInventory().CreateInInventory("Sedan_02_Wheel");
1022 GetInventory().CreateInInventory("Sedan_02_Wheel");
1023 GetInventory().CreateInInventory("Sedan_02_Wheel");
1024
1025 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
1026 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
1027 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
1028 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
1029 GetInventory().CreateInInventory("Sedan_02_Hood");
1030 GetInventory().CreateInInventory("Sedan_02_Trunk");
1031
1032 //-----IN CAR CARGO
1033 GetInventory().CreateInInventory("Sedan_02_Wheel");
1034 GetInventory().CreateInInventory("Sedan_02_Wheel");
1035 }
1036}
1037
1038class Sedan_02_Red extends Sedan_02
1039{
1040 override void OnDebugSpawn()
1041 {
1045
1046 GetInventory().CreateInInventory("Sedan_02_Wheel");
1047 GetInventory().CreateInInventory("Sedan_02_Wheel");
1048 GetInventory().CreateInInventory("Sedan_02_Wheel");
1049 GetInventory().CreateInInventory("Sedan_02_Wheel");
1050
1051 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1052 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1053 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1054 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1055 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1056 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1057
1058 //-----IN CAR CARGO
1059 GetInventory().CreateInInventory("Sedan_02_Wheel");
1060 GetInventory().CreateInInventory("Sedan_02_Wheel");
1061 }
1062}
1063
1064class Sedan_02_Grey extends Sedan_02
1065{
1066 override void OnDebugSpawn()
1067 {
1071
1072 GetInventory().CreateInInventory("Sedan_02_Wheel");
1073 GetInventory().CreateInInventory("Sedan_02_Wheel");
1074 GetInventory().CreateInInventory("Sedan_02_Wheel");
1075 GetInventory().CreateInInventory("Sedan_02_Wheel");
1076
1077 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1078 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1079 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1080 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1081 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1082 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1083
1084 //-----IN CAR CARGO
1085 GetInventory().CreateInInventory("Sedan_02_Wheel");
1086 GetInventory().CreateInInventory("Sedan_02_Wheel");
1087 }
1088}
CarSoundCtrl
Car's sound controller list. (native, do not change or extend)
Definition Car.c:4
void SpawnUniversalParts()
Definition CarScript.c:2637
CarDoorState TranslateAnimationPhaseToCarDoorState(string animation)
Definition CarScript.c:2336
CarDoorState
Definition CarScript.c:2
void SpawnAdditionalItems()
Definition CarScript.c:2675
string m_EngineStartOK
Sounds.
Definition CarScript.c:209
string m_CarDoorCloseSound
Definition CarScript.c:216
string m_EngineStartBattery
Definition CarScript.c:210
string m_EngineStartPlug
Definition CarScript.c:211
string m_EngineStartFuel
Definition CarScript.c:212
string m_CarHornShortSoundName
Definition CarScript.c:220
void FillUpCarFluids()
Definition CarScript.c:2705
string m_CarHornLongSoundName
Definition CarScript.c:221
string m_EngineStopFuel
Definition CarScript.c:213
float m_dmgContactCoef
Definition CarScript.c:161
string m_CarDoorOpenSound
Definition CarScript.c:215
class Hatchback_02_Blue extends Hatchback_02 OnDebugSpawn
Definition Hatchback_02.c:404
override int GetCarDoorsState(string slotType)
Definition Sedan_02.c:619
override bool CanDisplayAttachmentCategory(string category_name)
Definition Sedan_02.c:581
override void EOnPostSimulate(IEntity other, float timeSlice)
Definition Sedan_02.c:496
ref UniversalTemperatureSourceSettings m_UTSSettings
Definition Sedan_02.c:435
override bool IsVitalGlowPlug()
Definition Sedan_02.c:792
class Sedan_02 extends CarScript OnDebugSpawn()
Definition Sedan_02.c:433
override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
Definition Sedan_02.c:817
override bool CanDisplayCargo()
Definition Sedan_02.c:608
override int GetAnimInstance()
Definition Sedan_02.c:507
override bool CrewCanGetThrough(int posIdx)
Definition Sedan_02.c:654
override CarLightBase CreateFrontLight()
Definition Sedan_02.c:530
override CarRearLightBase CreateRearLight()
Definition Sedan_02.c:536
override void EEInit()
Definition Sedan_02.c:457
void Sedan_02()
Definition Sedan_02.c:438
ref UniversalTemperatureSourceLambdaEngine m_UTSLEngine
Definition Sedan_02.c:436
override float OnSound(CarSoundCtrl ctrl, float oldValue)
Definition Sedan_02.c:732
override bool IsVitalTruckBattery()
Definition Sedan_02.c:787
override bool CanReleaseAttachment(EntityAI attachment)
Definition Sedan_02.c:541
override void OnEngineStart()
Definition Sedan_02.c:476
override string GetAnimSourceFromSelection(string selection)
Definition Sedan_02.c:765
override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
Definition Sedan_02.c:797
override string GetDoorSelectionNameFromSeatPos(int posIdx)
Definition Sedan_02.c:690
override int GetSeatAnimationType(int posIdx)
Definition Sedan_02.c:512
ref UniversalTemperatureSource m_UTSource
Definition Sedan_02.c:434
override string GetDoorInvSlotNameFromSeatPos(int posIdx)
Definition Sedan_02.c:711
bool CanManipulateSpareWheel(string slotSelectionName)
Definition Sedan_02.c:576
override void OnEngineStop()
Definition Sedan_02.c:486
VehicleAnimInstances
Definition VehicleAnimInstances.c:2
Definition InventoryItem.c:496
Definition CarRearLightBase.c:2
Definition CivilianSedanRearLight.c:2
Super root of all classes in Enforce script.
Definition EnScript.c:11
Definition Building.c:6
Definition EnEntity.c:165
Definition EnMath.c:7
Definition EntityAI.c:95
Definition PointLightBase.c:2
Definition Sedan_02.c:458
original Timer deletes m_params which is unwanted
Definition UniversalTemperatureSource.c:26
Definition UniversalTemperatureSourceLambdaBaseImpl.c:63
Definition UniversalTemperatureSource.c:2
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
proto native CGame GetGame()
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.

◆ CanManipulateSpareWheel()

bool CanManipulateSpareWheel ( string slotSelectionName)
protected
577{
581
582 void Sedan_02()
583 {
584 m_dmgContactCoef = 0.0790;
585
586 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
587 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
588 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
589 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
590 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
591
592 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
593 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
594
595 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
596 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
597
598 SetEnginePos("0 0.7 -1.7");
599 }
600
601 override void EEInit()
602 {
603 super.EEInit();
604
605 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
606 {
608 m_UTSSettings.m_ManualUpdate = true;
609 m_UTSSettings.m_TemperatureMin = 0;
610 m_UTSSettings.m_TemperatureMax = 30;
611 m_UTSSettings.m_RangeFull = 0.5;
612 m_UTSSettings.m_RangeMax = 2;
613 m_UTSSettings.m_TemperatureCap = 25;
614
617 }
618 }
619
620 override void OnEngineStart()
621 {
622 super.OnEngineStart();
623
624 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
625 {
626 m_UTSource.SetDefferedActive(true, 20.0);
627 }
628 }
629
630 override void OnEngineStop()
631 {
632 super.OnEngineStop();
633
634 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
635 {
636 m_UTSource.SetDefferedActive(false, 10.0);
637 }
638 }
639
640 override void EOnPostSimulate(IEntity other, float timeSlice)
641 {
642 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
643 {
644 if (m_UTSource.IsActive())
645 {
647 }
648 }
649 }
650
651 override int GetAnimInstance()
652 {
653 return VehicleAnimInstances.S120;
654 }
655
656 override int GetSeatAnimationType(int posIdx)
657 {
658 switch (posIdx)
659 {
660 case 0:
661 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
662 case 1:
663 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
664 case 2:
665 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
666 case 3:
667 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
668 }
669
670 return 0;
671 }
672
673 // Override for car-specific light type
675 {
676 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
677 }
678
679 // Override for car-specific light type
681 {
682 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
683 }
684
686 {
687 if (!super.CanReleaseAttachment(attachment))
688 {
689 return false;
690 }
691
692 string attType = attachment.GetType();
693 switch (attType)
694 {
695 case "CarBattery":
696 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
697 {
698 return false;
699 }
700 break;
701
702 case "SparkPlug":
703 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
704 {
705 return false;
706 }
707 break;
708
709 case "CarRadiator":
710 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
711 {
712 return false;
713 }
714 break;
715 }
716
717 return true;
718 }
719
720 override protected bool CanManipulateSpareWheel(string slotSelectionName)
721 {
722 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
723 }
724
725 override bool CanDisplayAttachmentCategory(string category_name)
726 {
727 if ( !super.CanDisplayAttachmentCategory(category_name))
728 {
729 return false;
730 }
731
732 category_name.ToLower();
733 if (category_name.Contains("engine"))
734 {
735 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
736 {
737 return false;
738 }
739 }
740
741 if (category_name.Contains("trunk"))
742 {
743 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
744 {
745 return false;
746 }
747 }
748
749 return true;
750 }
751
752 override bool CanDisplayCargo()
753 {
754 if ( !super.CanDisplayCargo() )
755 return false;
756
757 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
758 return false;
759
760 return true;
761 }
762
763 override int GetCarDoorsState(string slotType)
764 {
766
767 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
768 if (!carDoor)
769 {
770 return CarDoorState.DOORS_MISSING;
771 }
772
773 switch (slotType)
774 {
775 case "Sedan_02_Door_1_1":
776 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
777
778 case "Sedan_02_Door_2_1":
779 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
780
781 case "Sedan_02_Door_1_2":
782 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
783
784 case "Sedan_02_Door_2_2":
785 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
786
787 case "Sedan_02_Hood":
788 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
789
790 case "Sedan_02_Trunk":
791 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
792 }
793
794 return CarDoorState.DOORS_MISSING;
795 }
796
797
798 override bool CrewCanGetThrough( int posIdx )
799 {
800 switch( posIdx )
801 {
802 case 0:
803 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
804 return false;
805
806 return true;
807 break;
808
809 case 1:
810 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
811 return false;
812
813 return true;
814 break;
815
816 case 2:
817 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
818 return false;
819
820 return true;
821 break;
822
823 case 3:
824 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
825 return false;
826
827 return true;
828 break;
829 }
830
831 return false;
832 }
833
834 override string GetDoorSelectionNameFromSeatPos(int posIdx)
835 {
836 switch( posIdx )
837 {
838 case 0:
839 return "doors_driver";
840 break;
841 case 1:
842 return "doors_codriver";
843 break;
844 case 2:
845 return "doors_cargo1";
846 break;
847 case 3:
848 return "doors_cargo2";
849 break;
850 }
851
852 return super.GetDoorSelectionNameFromSeatPos(posIdx);
853 }
854
855 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
856 {
857 switch( posIdx )
858 {
859 case 0:
860 return "Sedan_02_Door_1_1";
861 break;
862 case 1:
863 return "Sedan_02_Door_2_1";
864 break;
865 case 2:
866 return "Sedan_02_Door_1_2";
867 break;
868 case 3:
869 return "Sedan_02_Door_2_2";
870 break;
871 }
872
873 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
874 }
875
876 override float OnSound(CarSoundCtrl ctrl, float oldValue)
877 {
878 switch ( ctrl )
879 {
880 case CarSoundCtrl.DOORS:
881 float newValue = 0;
882 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
883 {
884 newValue += 0.25;
885 }
886
887 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
888 {
889 newValue += 0.25;
890 }
891
892 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
893 {
894 newValue += 0.25;
895 }
896
897 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
898 {
899 newValue += 0.25;
900 }
901
902 return Math.Clamp(newValue, 0, 1);
903 break;
904 }
905
906 return super.OnSound(ctrl, oldValue);
907 }
908
909 override string GetAnimSourceFromSelection( string selection )
910 {
911 switch( selection )
912 {
913 case "doors_driver":
914 return "DoorsDriver";
915 case "doors_codriver":
916 return "DoorsCoDriver";
917 case "doors_cargo1":
918 return "DoorsCargo1";
919 case "doors_cargo2":
920 return "DoorsCargo2";
921 case "doors_hood":
922 return "DoorsHood";
923 case "doors_trunk":
924 return "DoorsTrunk";
925 }
926
927 return "";
928 }
929
930
931 override bool IsVitalTruckBattery()
932 {
933 return false;
934 }
935
936 override bool IsVitalGlowPlug()
937 {
938 return false;
939 }
940
941 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
942 {
943 switch (currentSeat)
944 {
945 case 0:
946 return nextSeat == 1;
947
948 case 1:
949 return nextSeat == 0;
950
951 case 2:
952 return nextSeat == 3;
953
954 case 3:
955 return nextSeat == 2;
956 }
957
958 return false;
959 }
960
961 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
962 {
963 switch (pCurrentSeat)
964 {
965 case 0:
966 return pDoorsSelection == "DoorsDriver";
967
968 case 1:
969 return pDoorsSelection == "DoorsCoDriver";
970
971 case 2:
972 return pDoorsSelection == "DoorsCargo1";
973
974 case 3:
975 return pDoorsSelection == "DoorsCargo2";
976 }
977
978 return false;
979 }
980
981 override void OnDebugSpawn()
982 {
986
987 GetInventory().CreateInInventory("Sedan_02_Wheel");
988 GetInventory().CreateInInventory("Sedan_02_Wheel");
989 GetInventory().CreateInInventory("Sedan_02_Wheel");
990 GetInventory().CreateInInventory("Sedan_02_Wheel");
991 GetInventory().CreateInInventory("Sedan_02_Wheel");
992
993 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
994 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
995 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
996 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
997 GetInventory().CreateInInventory("Sedan_02_Hood");
998 GetInventory().CreateInInventory("Sedan_02_Trunk");
999
1000 //-----IN CAR CARGO
1001 GetInventory().CreateInInventory("Sedan_02_Wheel");
1002 GetInventory().CreateInInventory("Sedan_02_Wheel");
1003 }
1004}
1005
1006class Sedan_02_Red extends Sedan_02
1007{
1008 override void OnDebugSpawn()
1009 {
1013
1014 GetInventory().CreateInInventory("Sedan_02_Wheel");
1015 GetInventory().CreateInInventory("Sedan_02_Wheel");
1016 GetInventory().CreateInInventory("Sedan_02_Wheel");
1017 GetInventory().CreateInInventory("Sedan_02_Wheel");
1018
1019 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1020 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1021 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1022 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1023 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1024 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1025
1026 //-----IN CAR CARGO
1027 GetInventory().CreateInInventory("Sedan_02_Wheel");
1028 GetInventory().CreateInInventory("Sedan_02_Wheel");
1029 }
1030}
1031
1032class Sedan_02_Grey extends Sedan_02
1033{
1034 override void OnDebugSpawn()
1035 {
1039
1040 GetInventory().CreateInInventory("Sedan_02_Wheel");
1041 GetInventory().CreateInInventory("Sedan_02_Wheel");
1042 GetInventory().CreateInInventory("Sedan_02_Wheel");
1043 GetInventory().CreateInInventory("Sedan_02_Wheel");
1044
1045 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1046 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1047 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1048 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1049 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1050 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1051
1052 //-----IN CAR CARGO
1053 GetInventory().CreateInInventory("Sedan_02_Wheel");
1054 GetInventory().CreateInInventory("Sedan_02_Wheel");
1055 }
1056}

◆ CanReachDoorsFromSeat()

override bool CanReachDoorsFromSeat ( string pDoorsSelection,
int pCurrentSeat )
protected
818{
822
823 void Sedan_02()
824 {
825 m_dmgContactCoef = 0.0790;
826
827 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
828 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
829 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
830 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
831 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
832
833 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
834 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
835
836 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
837 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
838
839 SetEnginePos("0 0.7 -1.7");
840 }
841
842 override void EEInit()
843 {
844 super.EEInit();
845
846 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
847 {
849 m_UTSSettings.m_ManualUpdate = true;
850 m_UTSSettings.m_TemperatureMin = 0;
851 m_UTSSettings.m_TemperatureMax = 30;
852 m_UTSSettings.m_RangeFull = 0.5;
853 m_UTSSettings.m_RangeMax = 2;
854 m_UTSSettings.m_TemperatureCap = 25;
855
858 }
859 }
860
861 override void OnEngineStart()
862 {
863 super.OnEngineStart();
864
865 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
866 {
867 m_UTSource.SetDefferedActive(true, 20.0);
868 }
869 }
870
871 override void OnEngineStop()
872 {
873 super.OnEngineStop();
874
875 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
876 {
877 m_UTSource.SetDefferedActive(false, 10.0);
878 }
879 }
880
881 override void EOnPostSimulate(IEntity other, float timeSlice)
882 {
883 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
884 {
885 if (m_UTSource.IsActive())
886 {
888 }
889 }
890 }
891
892 override int GetAnimInstance()
893 {
894 return VehicleAnimInstances.S120;
895 }
896
897 override int GetSeatAnimationType(int posIdx)
898 {
899 switch (posIdx)
900 {
901 case 0:
902 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
903 case 1:
904 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
905 case 2:
906 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
907 case 3:
908 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
909 }
910
911 return 0;
912 }
913
914 // Override for car-specific light type
916 {
917 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
918 }
919
920 // Override for car-specific light type
922 {
923 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
924 }
925
927 {
928 if (!super.CanReleaseAttachment(attachment))
929 {
930 return false;
931 }
932
933 string attType = attachment.GetType();
934 switch (attType)
935 {
936 case "CarBattery":
937 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
938 {
939 return false;
940 }
941 break;
942
943 case "SparkPlug":
944 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
945 {
946 return false;
947 }
948 break;
949
950 case "CarRadiator":
951 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
952 {
953 return false;
954 }
955 break;
956 }
957
958 return true;
959 }
960
961 override protected bool CanManipulateSpareWheel(string slotSelectionName)
962 {
963 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
964 }
965
966 override bool CanDisplayAttachmentCategory(string category_name)
967 {
968 if ( !super.CanDisplayAttachmentCategory(category_name))
969 {
970 return false;
971 }
972
973 category_name.ToLower();
974 if (category_name.Contains("engine"))
975 {
976 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
977 {
978 return false;
979 }
980 }
981
982 if (category_name.Contains("trunk"))
983 {
984 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
985 {
986 return false;
987 }
988 }
989
990 return true;
991 }
992
993 override bool CanDisplayCargo()
994 {
995 if ( !super.CanDisplayCargo() )
996 return false;
997
998 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
999 return false;
1000
1001 return true;
1002 }
1003
1004 override int GetCarDoorsState(string slotType)
1005 {
1007
1008 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
1009 if (!carDoor)
1010 {
1011 return CarDoorState.DOORS_MISSING;
1012 }
1013
1014 switch (slotType)
1015 {
1016 case "Sedan_02_Door_1_1":
1017 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
1018
1019 case "Sedan_02_Door_2_1":
1020 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
1021
1022 case "Sedan_02_Door_1_2":
1023 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
1024
1025 case "Sedan_02_Door_2_2":
1026 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
1027
1028 case "Sedan_02_Hood":
1029 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
1030
1031 case "Sedan_02_Trunk":
1032 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
1033 }
1034
1035 return CarDoorState.DOORS_MISSING;
1036 }
1037
1038
1039 override bool CrewCanGetThrough( int posIdx )
1040 {
1041 switch( posIdx )
1042 {
1043 case 0:
1044 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
1045 return false;
1046
1047 return true;
1048 break;
1049
1050 case 1:
1051 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
1052 return false;
1053
1054 return true;
1055 break;
1056
1057 case 2:
1058 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
1059 return false;
1060
1061 return true;
1062 break;
1063
1064 case 3:
1065 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
1066 return false;
1067
1068 return true;
1069 break;
1070 }
1071
1072 return false;
1073 }
1074
1075 override string GetDoorSelectionNameFromSeatPos(int posIdx)
1076 {
1077 switch( posIdx )
1078 {
1079 case 0:
1080 return "doors_driver";
1081 break;
1082 case 1:
1083 return "doors_codriver";
1084 break;
1085 case 2:
1086 return "doors_cargo1";
1087 break;
1088 case 3:
1089 return "doors_cargo2";
1090 break;
1091 }
1092
1093 return super.GetDoorSelectionNameFromSeatPos(posIdx);
1094 }
1095
1096 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
1097 {
1098 switch( posIdx )
1099 {
1100 case 0:
1101 return "Sedan_02_Door_1_1";
1102 break;
1103 case 1:
1104 return "Sedan_02_Door_2_1";
1105 break;
1106 case 2:
1107 return "Sedan_02_Door_1_2";
1108 break;
1109 case 3:
1110 return "Sedan_02_Door_2_2";
1111 break;
1112 }
1113
1114 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
1115 }
1116
1117 override float OnSound(CarSoundCtrl ctrl, float oldValue)
1118 {
1119 switch ( ctrl )
1120 {
1121 case CarSoundCtrl.DOORS:
1122 float newValue = 0;
1123 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
1124 {
1125 newValue += 0.25;
1126 }
1127
1128 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
1129 {
1130 newValue += 0.25;
1131 }
1132
1133 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
1134 {
1135 newValue += 0.25;
1136 }
1137
1138 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
1139 {
1140 newValue += 0.25;
1141 }
1142
1143 return Math.Clamp(newValue, 0, 1);
1144 break;
1145 }
1146
1147 return super.OnSound(ctrl, oldValue);
1148 }
1149
1150 override string GetAnimSourceFromSelection( string selection )
1151 {
1152 switch( selection )
1153 {
1154 case "doors_driver":
1155 return "DoorsDriver";
1156 case "doors_codriver":
1157 return "DoorsCoDriver";
1158 case "doors_cargo1":
1159 return "DoorsCargo1";
1160 case "doors_cargo2":
1161 return "DoorsCargo2";
1162 case "doors_hood":
1163 return "DoorsHood";
1164 case "doors_trunk":
1165 return "DoorsTrunk";
1166 }
1167
1168 return "";
1169 }
1170
1171
1172 override bool IsVitalTruckBattery()
1173 {
1174 return false;
1175 }
1176
1177 override bool IsVitalGlowPlug()
1178 {
1179 return false;
1180 }
1181
1182 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
1183 {
1184 switch (currentSeat)
1185 {
1186 case 0:
1187 return nextSeat == 1;
1188
1189 case 1:
1190 return nextSeat == 0;
1191
1192 case 2:
1193 return nextSeat == 3;
1194
1195 case 3:
1196 return nextSeat == 2;
1197 }
1198
1199 return false;
1200 }
1201
1202 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
1203 {
1204 switch (pCurrentSeat)
1205 {
1206 case 0:
1207 return pDoorsSelection == "DoorsDriver";
1208
1209 case 1:
1210 return pDoorsSelection == "DoorsCoDriver";
1211
1212 case 2:
1213 return pDoorsSelection == "DoorsCargo1";
1214
1215 case 3:
1216 return pDoorsSelection == "DoorsCargo2";
1217 }
1218
1219 return false;
1220 }
1221
1222 override void OnDebugSpawn()
1223 {
1227
1228 GetInventory().CreateInInventory("Sedan_02_Wheel");
1229 GetInventory().CreateInInventory("Sedan_02_Wheel");
1230 GetInventory().CreateInInventory("Sedan_02_Wheel");
1231 GetInventory().CreateInInventory("Sedan_02_Wheel");
1232 GetInventory().CreateInInventory("Sedan_02_Wheel");
1233
1234 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
1235 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
1236 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
1237 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
1238 GetInventory().CreateInInventory("Sedan_02_Hood");
1239 GetInventory().CreateInInventory("Sedan_02_Trunk");
1240
1241 //-----IN CAR CARGO
1242 GetInventory().CreateInInventory("Sedan_02_Wheel");
1243 GetInventory().CreateInInventory("Sedan_02_Wheel");
1244 }
1245}
1246
1247class Sedan_02_Red extends Sedan_02
1248{
1249 override void OnDebugSpawn()
1250 {
1254
1255 GetInventory().CreateInInventory("Sedan_02_Wheel");
1256 GetInventory().CreateInInventory("Sedan_02_Wheel");
1257 GetInventory().CreateInInventory("Sedan_02_Wheel");
1258 GetInventory().CreateInInventory("Sedan_02_Wheel");
1259
1260 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1261 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1262 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1263 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1264 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1265 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1266
1267 //-----IN CAR CARGO
1268 GetInventory().CreateInInventory("Sedan_02_Wheel");
1269 GetInventory().CreateInInventory("Sedan_02_Wheel");
1270 }
1271}
1272
1273class Sedan_02_Grey extends Sedan_02
1274{
1275 override void OnDebugSpawn()
1276 {
1280
1281 GetInventory().CreateInInventory("Sedan_02_Wheel");
1282 GetInventory().CreateInInventory("Sedan_02_Wheel");
1283 GetInventory().CreateInInventory("Sedan_02_Wheel");
1284 GetInventory().CreateInInventory("Sedan_02_Wheel");
1285
1286 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1287 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1288 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1289 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1290 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1291 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1292
1293 //-----IN CAR CARGO
1294 GetInventory().CreateInInventory("Sedan_02_Wheel");
1295 GetInventory().CreateInInventory("Sedan_02_Wheel");
1296 }
1297}

◆ CanReachSeatFromSeat()

override bool CanReachSeatFromSeat ( int currentSeat,
int nextSeat )
protected
798{
802
803 void Sedan_02()
804 {
805 m_dmgContactCoef = 0.0790;
806
807 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
808 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
809 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
810 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
811 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
812
813 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
814 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
815
816 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
817 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
818
819 SetEnginePos("0 0.7 -1.7");
820 }
821
822 override void EEInit()
823 {
824 super.EEInit();
825
826 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
827 {
829 m_UTSSettings.m_ManualUpdate = true;
830 m_UTSSettings.m_TemperatureMin = 0;
831 m_UTSSettings.m_TemperatureMax = 30;
832 m_UTSSettings.m_RangeFull = 0.5;
833 m_UTSSettings.m_RangeMax = 2;
834 m_UTSSettings.m_TemperatureCap = 25;
835
838 }
839 }
840
841 override void OnEngineStart()
842 {
843 super.OnEngineStart();
844
845 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
846 {
847 m_UTSource.SetDefferedActive(true, 20.0);
848 }
849 }
850
851 override void OnEngineStop()
852 {
853 super.OnEngineStop();
854
855 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
856 {
857 m_UTSource.SetDefferedActive(false, 10.0);
858 }
859 }
860
861 override void EOnPostSimulate(IEntity other, float timeSlice)
862 {
863 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
864 {
865 if (m_UTSource.IsActive())
866 {
868 }
869 }
870 }
871
872 override int GetAnimInstance()
873 {
874 return VehicleAnimInstances.S120;
875 }
876
877 override int GetSeatAnimationType(int posIdx)
878 {
879 switch (posIdx)
880 {
881 case 0:
882 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
883 case 1:
884 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
885 case 2:
886 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
887 case 3:
888 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
889 }
890
891 return 0;
892 }
893
894 // Override for car-specific light type
896 {
897 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
898 }
899
900 // Override for car-specific light type
902 {
903 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
904 }
905
907 {
908 if (!super.CanReleaseAttachment(attachment))
909 {
910 return false;
911 }
912
913 string attType = attachment.GetType();
914 switch (attType)
915 {
916 case "CarBattery":
917 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
918 {
919 return false;
920 }
921 break;
922
923 case "SparkPlug":
924 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
925 {
926 return false;
927 }
928 break;
929
930 case "CarRadiator":
931 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
932 {
933 return false;
934 }
935 break;
936 }
937
938 return true;
939 }
940
941 override protected bool CanManipulateSpareWheel(string slotSelectionName)
942 {
943 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
944 }
945
946 override bool CanDisplayAttachmentCategory(string category_name)
947 {
948 if ( !super.CanDisplayAttachmentCategory(category_name))
949 {
950 return false;
951 }
952
953 category_name.ToLower();
954 if (category_name.Contains("engine"))
955 {
956 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
957 {
958 return false;
959 }
960 }
961
962 if (category_name.Contains("trunk"))
963 {
964 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
965 {
966 return false;
967 }
968 }
969
970 return true;
971 }
972
973 override bool CanDisplayCargo()
974 {
975 if ( !super.CanDisplayCargo() )
976 return false;
977
978 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
979 return false;
980
981 return true;
982 }
983
984 override int GetCarDoorsState(string slotType)
985 {
987
988 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
989 if (!carDoor)
990 {
991 return CarDoorState.DOORS_MISSING;
992 }
993
994 switch (slotType)
995 {
996 case "Sedan_02_Door_1_1":
997 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
998
999 case "Sedan_02_Door_2_1":
1000 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
1001
1002 case "Sedan_02_Door_1_2":
1003 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
1004
1005 case "Sedan_02_Door_2_2":
1006 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
1007
1008 case "Sedan_02_Hood":
1009 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
1010
1011 case "Sedan_02_Trunk":
1012 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
1013 }
1014
1015 return CarDoorState.DOORS_MISSING;
1016 }
1017
1018
1019 override bool CrewCanGetThrough( int posIdx )
1020 {
1021 switch( posIdx )
1022 {
1023 case 0:
1024 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
1025 return false;
1026
1027 return true;
1028 break;
1029
1030 case 1:
1031 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
1032 return false;
1033
1034 return true;
1035 break;
1036
1037 case 2:
1038 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
1039 return false;
1040
1041 return true;
1042 break;
1043
1044 case 3:
1045 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
1046 return false;
1047
1048 return true;
1049 break;
1050 }
1051
1052 return false;
1053 }
1054
1055 override string GetDoorSelectionNameFromSeatPos(int posIdx)
1056 {
1057 switch( posIdx )
1058 {
1059 case 0:
1060 return "doors_driver";
1061 break;
1062 case 1:
1063 return "doors_codriver";
1064 break;
1065 case 2:
1066 return "doors_cargo1";
1067 break;
1068 case 3:
1069 return "doors_cargo2";
1070 break;
1071 }
1072
1073 return super.GetDoorSelectionNameFromSeatPos(posIdx);
1074 }
1075
1076 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
1077 {
1078 switch( posIdx )
1079 {
1080 case 0:
1081 return "Sedan_02_Door_1_1";
1082 break;
1083 case 1:
1084 return "Sedan_02_Door_2_1";
1085 break;
1086 case 2:
1087 return "Sedan_02_Door_1_2";
1088 break;
1089 case 3:
1090 return "Sedan_02_Door_2_2";
1091 break;
1092 }
1093
1094 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
1095 }
1096
1097 override float OnSound(CarSoundCtrl ctrl, float oldValue)
1098 {
1099 switch ( ctrl )
1100 {
1101 case CarSoundCtrl.DOORS:
1102 float newValue = 0;
1103 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
1104 {
1105 newValue += 0.25;
1106 }
1107
1108 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
1109 {
1110 newValue += 0.25;
1111 }
1112
1113 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
1114 {
1115 newValue += 0.25;
1116 }
1117
1118 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
1119 {
1120 newValue += 0.25;
1121 }
1122
1123 return Math.Clamp(newValue, 0, 1);
1124 break;
1125 }
1126
1127 return super.OnSound(ctrl, oldValue);
1128 }
1129
1130 override string GetAnimSourceFromSelection( string selection )
1131 {
1132 switch( selection )
1133 {
1134 case "doors_driver":
1135 return "DoorsDriver";
1136 case "doors_codriver":
1137 return "DoorsCoDriver";
1138 case "doors_cargo1":
1139 return "DoorsCargo1";
1140 case "doors_cargo2":
1141 return "DoorsCargo2";
1142 case "doors_hood":
1143 return "DoorsHood";
1144 case "doors_trunk":
1145 return "DoorsTrunk";
1146 }
1147
1148 return "";
1149 }
1150
1151
1152 override bool IsVitalTruckBattery()
1153 {
1154 return false;
1155 }
1156
1157 override bool IsVitalGlowPlug()
1158 {
1159 return false;
1160 }
1161
1162 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
1163 {
1164 switch (currentSeat)
1165 {
1166 case 0:
1167 return nextSeat == 1;
1168
1169 case 1:
1170 return nextSeat == 0;
1171
1172 case 2:
1173 return nextSeat == 3;
1174
1175 case 3:
1176 return nextSeat == 2;
1177 }
1178
1179 return false;
1180 }
1181
1182 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
1183 {
1184 switch (pCurrentSeat)
1185 {
1186 case 0:
1187 return pDoorsSelection == "DoorsDriver";
1188
1189 case 1:
1190 return pDoorsSelection == "DoorsCoDriver";
1191
1192 case 2:
1193 return pDoorsSelection == "DoorsCargo1";
1194
1195 case 3:
1196 return pDoorsSelection == "DoorsCargo2";
1197 }
1198
1199 return false;
1200 }
1201
1202 override void OnDebugSpawn()
1203 {
1207
1208 GetInventory().CreateInInventory("Sedan_02_Wheel");
1209 GetInventory().CreateInInventory("Sedan_02_Wheel");
1210 GetInventory().CreateInInventory("Sedan_02_Wheel");
1211 GetInventory().CreateInInventory("Sedan_02_Wheel");
1212 GetInventory().CreateInInventory("Sedan_02_Wheel");
1213
1214 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
1215 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
1216 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
1217 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
1218 GetInventory().CreateInInventory("Sedan_02_Hood");
1219 GetInventory().CreateInInventory("Sedan_02_Trunk");
1220
1221 //-----IN CAR CARGO
1222 GetInventory().CreateInInventory("Sedan_02_Wheel");
1223 GetInventory().CreateInInventory("Sedan_02_Wheel");
1224 }
1225}
1226
1227class Sedan_02_Red extends Sedan_02
1228{
1229 override void OnDebugSpawn()
1230 {
1234
1235 GetInventory().CreateInInventory("Sedan_02_Wheel");
1236 GetInventory().CreateInInventory("Sedan_02_Wheel");
1237 GetInventory().CreateInInventory("Sedan_02_Wheel");
1238 GetInventory().CreateInInventory("Sedan_02_Wheel");
1239
1240 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1241 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1242 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1243 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1244 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1245 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1246
1247 //-----IN CAR CARGO
1248 GetInventory().CreateInInventory("Sedan_02_Wheel");
1249 GetInventory().CreateInInventory("Sedan_02_Wheel");
1250 }
1251}
1252
1253class Sedan_02_Grey extends Sedan_02
1254{
1255 override void OnDebugSpawn()
1256 {
1260
1261 GetInventory().CreateInInventory("Sedan_02_Wheel");
1262 GetInventory().CreateInInventory("Sedan_02_Wheel");
1263 GetInventory().CreateInInventory("Sedan_02_Wheel");
1264 GetInventory().CreateInInventory("Sedan_02_Wheel");
1265
1266 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1267 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1268 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1269 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1270 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1271 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1272
1273 //-----IN CAR CARGO
1274 GetInventory().CreateInInventory("Sedan_02_Wheel");
1275 GetInventory().CreateInInventory("Sedan_02_Wheel");
1276 }
1277}

◆ CanReleaseAttachment()

override bool CanReleaseAttachment ( EntityAI attachment)
protected
542{
546
547 void Sedan_02()
548 {
549 m_dmgContactCoef = 0.0790;
550
551 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
552 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
553 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
554 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
555 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
556
557 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
558 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
559
560 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
561 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
562
563 SetEnginePos("0 0.7 -1.7");
564 }
565
566 override void EEInit()
567 {
568 super.EEInit();
569
570 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
571 {
573 m_UTSSettings.m_ManualUpdate = true;
574 m_UTSSettings.m_TemperatureMin = 0;
575 m_UTSSettings.m_TemperatureMax = 30;
576 m_UTSSettings.m_RangeFull = 0.5;
577 m_UTSSettings.m_RangeMax = 2;
578 m_UTSSettings.m_TemperatureCap = 25;
579
582 }
583 }
584
585 override void OnEngineStart()
586 {
587 super.OnEngineStart();
588
589 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
590 {
591 m_UTSource.SetDefferedActive(true, 20.0);
592 }
593 }
594
595 override void OnEngineStop()
596 {
597 super.OnEngineStop();
598
599 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
600 {
601 m_UTSource.SetDefferedActive(false, 10.0);
602 }
603 }
604
605 override void EOnPostSimulate(IEntity other, float timeSlice)
606 {
607 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
608 {
609 if (m_UTSource.IsActive())
610 {
612 }
613 }
614 }
615
616 override int GetAnimInstance()
617 {
618 return VehicleAnimInstances.S120;
619 }
620
621 override int GetSeatAnimationType(int posIdx)
622 {
623 switch (posIdx)
624 {
625 case 0:
626 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
627 case 1:
628 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
629 case 2:
630 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
631 case 3:
632 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
633 }
634
635 return 0;
636 }
637
638 // Override for car-specific light type
640 {
641 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
642 }
643
644 // Override for car-specific light type
646 {
647 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
648 }
649
651 {
652 if (!super.CanReleaseAttachment(attachment))
653 {
654 return false;
655 }
656
657 string attType = attachment.GetType();
658 switch (attType)
659 {
660 case "CarBattery":
661 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
662 {
663 return false;
664 }
665 break;
666
667 case "SparkPlug":
668 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
669 {
670 return false;
671 }
672 break;
673
674 case "CarRadiator":
675 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
676 {
677 return false;
678 }
679 break;
680 }
681
682 return true;
683 }
684
685 override protected bool CanManipulateSpareWheel(string slotSelectionName)
686 {
687 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
688 }
689
690 override bool CanDisplayAttachmentCategory(string category_name)
691 {
692 if ( !super.CanDisplayAttachmentCategory(category_name))
693 {
694 return false;
695 }
696
697 category_name.ToLower();
698 if (category_name.Contains("engine"))
699 {
700 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
701 {
702 return false;
703 }
704 }
705
706 if (category_name.Contains("trunk"))
707 {
708 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
709 {
710 return false;
711 }
712 }
713
714 return true;
715 }
716
717 override bool CanDisplayCargo()
718 {
719 if ( !super.CanDisplayCargo() )
720 return false;
721
722 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
723 return false;
724
725 return true;
726 }
727
728 override int GetCarDoorsState(string slotType)
729 {
731
732 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
733 if (!carDoor)
734 {
735 return CarDoorState.DOORS_MISSING;
736 }
737
738 switch (slotType)
739 {
740 case "Sedan_02_Door_1_1":
741 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
742
743 case "Sedan_02_Door_2_1":
744 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
745
746 case "Sedan_02_Door_1_2":
747 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
748
749 case "Sedan_02_Door_2_2":
750 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
751
752 case "Sedan_02_Hood":
753 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
754
755 case "Sedan_02_Trunk":
756 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
757 }
758
759 return CarDoorState.DOORS_MISSING;
760 }
761
762
763 override bool CrewCanGetThrough( int posIdx )
764 {
765 switch( posIdx )
766 {
767 case 0:
768 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
769 return false;
770
771 return true;
772 break;
773
774 case 1:
775 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
776 return false;
777
778 return true;
779 break;
780
781 case 2:
782 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
783 return false;
784
785 return true;
786 break;
787
788 case 3:
789 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
790 return false;
791
792 return true;
793 break;
794 }
795
796 return false;
797 }
798
799 override string GetDoorSelectionNameFromSeatPos(int posIdx)
800 {
801 switch( posIdx )
802 {
803 case 0:
804 return "doors_driver";
805 break;
806 case 1:
807 return "doors_codriver";
808 break;
809 case 2:
810 return "doors_cargo1";
811 break;
812 case 3:
813 return "doors_cargo2";
814 break;
815 }
816
817 return super.GetDoorSelectionNameFromSeatPos(posIdx);
818 }
819
820 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
821 {
822 switch( posIdx )
823 {
824 case 0:
825 return "Sedan_02_Door_1_1";
826 break;
827 case 1:
828 return "Sedan_02_Door_2_1";
829 break;
830 case 2:
831 return "Sedan_02_Door_1_2";
832 break;
833 case 3:
834 return "Sedan_02_Door_2_2";
835 break;
836 }
837
838 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
839 }
840
841 override float OnSound(CarSoundCtrl ctrl, float oldValue)
842 {
843 switch ( ctrl )
844 {
845 case CarSoundCtrl.DOORS:
846 float newValue = 0;
847 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
848 {
849 newValue += 0.25;
850 }
851
852 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
853 {
854 newValue += 0.25;
855 }
856
857 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
858 {
859 newValue += 0.25;
860 }
861
862 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
863 {
864 newValue += 0.25;
865 }
866
867 return Math.Clamp(newValue, 0, 1);
868 break;
869 }
870
871 return super.OnSound(ctrl, oldValue);
872 }
873
874 override string GetAnimSourceFromSelection( string selection )
875 {
876 switch( selection )
877 {
878 case "doors_driver":
879 return "DoorsDriver";
880 case "doors_codriver":
881 return "DoorsCoDriver";
882 case "doors_cargo1":
883 return "DoorsCargo1";
884 case "doors_cargo2":
885 return "DoorsCargo2";
886 case "doors_hood":
887 return "DoorsHood";
888 case "doors_trunk":
889 return "DoorsTrunk";
890 }
891
892 return "";
893 }
894
895
896 override bool IsVitalTruckBattery()
897 {
898 return false;
899 }
900
901 override bool IsVitalGlowPlug()
902 {
903 return false;
904 }
905
906 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
907 {
908 switch (currentSeat)
909 {
910 case 0:
911 return nextSeat == 1;
912
913 case 1:
914 return nextSeat == 0;
915
916 case 2:
917 return nextSeat == 3;
918
919 case 3:
920 return nextSeat == 2;
921 }
922
923 return false;
924 }
925
926 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
927 {
928 switch (pCurrentSeat)
929 {
930 case 0:
931 return pDoorsSelection == "DoorsDriver";
932
933 case 1:
934 return pDoorsSelection == "DoorsCoDriver";
935
936 case 2:
937 return pDoorsSelection == "DoorsCargo1";
938
939 case 3:
940 return pDoorsSelection == "DoorsCargo2";
941 }
942
943 return false;
944 }
945
946 override void OnDebugSpawn()
947 {
951
952 GetInventory().CreateInInventory("Sedan_02_Wheel");
953 GetInventory().CreateInInventory("Sedan_02_Wheel");
954 GetInventory().CreateInInventory("Sedan_02_Wheel");
955 GetInventory().CreateInInventory("Sedan_02_Wheel");
956 GetInventory().CreateInInventory("Sedan_02_Wheel");
957
958 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
959 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
960 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
961 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
962 GetInventory().CreateInInventory("Sedan_02_Hood");
963 GetInventory().CreateInInventory("Sedan_02_Trunk");
964
965 //-----IN CAR CARGO
966 GetInventory().CreateInInventory("Sedan_02_Wheel");
967 GetInventory().CreateInInventory("Sedan_02_Wheel");
968 }
969}
970
971class Sedan_02_Red extends Sedan_02
972{
973 override void OnDebugSpawn()
974 {
978
979 GetInventory().CreateInInventory("Sedan_02_Wheel");
980 GetInventory().CreateInInventory("Sedan_02_Wheel");
981 GetInventory().CreateInInventory("Sedan_02_Wheel");
982 GetInventory().CreateInInventory("Sedan_02_Wheel");
983
984 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
985 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
986 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
987 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
988 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
989 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
990
991 //-----IN CAR CARGO
992 GetInventory().CreateInInventory("Sedan_02_Wheel");
993 GetInventory().CreateInInventory("Sedan_02_Wheel");
994 }
995}
996
997class Sedan_02_Grey extends Sedan_02
998{
999 override void OnDebugSpawn()
1000 {
1004
1005 GetInventory().CreateInInventory("Sedan_02_Wheel");
1006 GetInventory().CreateInInventory("Sedan_02_Wheel");
1007 GetInventory().CreateInInventory("Sedan_02_Wheel");
1008 GetInventory().CreateInInventory("Sedan_02_Wheel");
1009
1010 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1011 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1012 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1013 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1014 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1015 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1016
1017 //-----IN CAR CARGO
1018 GetInventory().CreateInInventory("Sedan_02_Wheel");
1019 GetInventory().CreateInInventory("Sedan_02_Wheel");
1020 }
1021}

◆ CreateFrontLight()

override CarLightBase CreateFrontLight ( )
protected
531{
535
536 void Sedan_02()
537 {
538 m_dmgContactCoef = 0.0790;
539
540 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
541 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
542 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
543 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
544 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
545
546 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
547 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
548
549 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
550 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
551
552 SetEnginePos("0 0.7 -1.7");
553 }
554
555 override void EEInit()
556 {
557 super.EEInit();
558
559 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
560 {
562 m_UTSSettings.m_ManualUpdate = true;
563 m_UTSSettings.m_TemperatureMin = 0;
564 m_UTSSettings.m_TemperatureMax = 30;
565 m_UTSSettings.m_RangeFull = 0.5;
566 m_UTSSettings.m_RangeMax = 2;
567 m_UTSSettings.m_TemperatureCap = 25;
568
571 }
572 }
573
574 override void OnEngineStart()
575 {
576 super.OnEngineStart();
577
578 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
579 {
580 m_UTSource.SetDefferedActive(true, 20.0);
581 }
582 }
583
584 override void OnEngineStop()
585 {
586 super.OnEngineStop();
587
588 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
589 {
590 m_UTSource.SetDefferedActive(false, 10.0);
591 }
592 }
593
594 override void EOnPostSimulate(IEntity other, float timeSlice)
595 {
596 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
597 {
598 if (m_UTSource.IsActive())
599 {
601 }
602 }
603 }
604
605 override int GetAnimInstance()
606 {
607 return VehicleAnimInstances.S120;
608 }
609
610 override int GetSeatAnimationType(int posIdx)
611 {
612 switch (posIdx)
613 {
614 case 0:
615 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
616 case 1:
617 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
618 case 2:
619 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
620 case 3:
621 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
622 }
623
624 return 0;
625 }
626
627 // Override for car-specific light type
629 {
630 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
631 }
632
633 // Override for car-specific light type
635 {
636 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
637 }
638
640 {
641 if (!super.CanReleaseAttachment(attachment))
642 {
643 return false;
644 }
645
646 string attType = attachment.GetType();
647 switch (attType)
648 {
649 case "CarBattery":
650 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
651 {
652 return false;
653 }
654 break;
655
656 case "SparkPlug":
657 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
658 {
659 return false;
660 }
661 break;
662
663 case "CarRadiator":
664 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
665 {
666 return false;
667 }
668 break;
669 }
670
671 return true;
672 }
673
674 override protected bool CanManipulateSpareWheel(string slotSelectionName)
675 {
676 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
677 }
678
679 override bool CanDisplayAttachmentCategory(string category_name)
680 {
681 if ( !super.CanDisplayAttachmentCategory(category_name))
682 {
683 return false;
684 }
685
686 category_name.ToLower();
687 if (category_name.Contains("engine"))
688 {
689 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
690 {
691 return false;
692 }
693 }
694
695 if (category_name.Contains("trunk"))
696 {
697 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
698 {
699 return false;
700 }
701 }
702
703 return true;
704 }
705
706 override bool CanDisplayCargo()
707 {
708 if ( !super.CanDisplayCargo() )
709 return false;
710
711 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
712 return false;
713
714 return true;
715 }
716
717 override int GetCarDoorsState(string slotType)
718 {
720
721 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
722 if (!carDoor)
723 {
724 return CarDoorState.DOORS_MISSING;
725 }
726
727 switch (slotType)
728 {
729 case "Sedan_02_Door_1_1":
730 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
731
732 case "Sedan_02_Door_2_1":
733 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
734
735 case "Sedan_02_Door_1_2":
736 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
737
738 case "Sedan_02_Door_2_2":
739 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
740
741 case "Sedan_02_Hood":
742 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
743
744 case "Sedan_02_Trunk":
745 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
746 }
747
748 return CarDoorState.DOORS_MISSING;
749 }
750
751
752 override bool CrewCanGetThrough( int posIdx )
753 {
754 switch( posIdx )
755 {
756 case 0:
757 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
758 return false;
759
760 return true;
761 break;
762
763 case 1:
764 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
765 return false;
766
767 return true;
768 break;
769
770 case 2:
771 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
772 return false;
773
774 return true;
775 break;
776
777 case 3:
778 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
779 return false;
780
781 return true;
782 break;
783 }
784
785 return false;
786 }
787
788 override string GetDoorSelectionNameFromSeatPos(int posIdx)
789 {
790 switch( posIdx )
791 {
792 case 0:
793 return "doors_driver";
794 break;
795 case 1:
796 return "doors_codriver";
797 break;
798 case 2:
799 return "doors_cargo1";
800 break;
801 case 3:
802 return "doors_cargo2";
803 break;
804 }
805
806 return super.GetDoorSelectionNameFromSeatPos(posIdx);
807 }
808
809 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
810 {
811 switch( posIdx )
812 {
813 case 0:
814 return "Sedan_02_Door_1_1";
815 break;
816 case 1:
817 return "Sedan_02_Door_2_1";
818 break;
819 case 2:
820 return "Sedan_02_Door_1_2";
821 break;
822 case 3:
823 return "Sedan_02_Door_2_2";
824 break;
825 }
826
827 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
828 }
829
830 override float OnSound(CarSoundCtrl ctrl, float oldValue)
831 {
832 switch ( ctrl )
833 {
834 case CarSoundCtrl.DOORS:
835 float newValue = 0;
836 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
837 {
838 newValue += 0.25;
839 }
840
841 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
842 {
843 newValue += 0.25;
844 }
845
846 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
847 {
848 newValue += 0.25;
849 }
850
851 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
852 {
853 newValue += 0.25;
854 }
855
856 return Math.Clamp(newValue, 0, 1);
857 break;
858 }
859
860 return super.OnSound(ctrl, oldValue);
861 }
862
863 override string GetAnimSourceFromSelection( string selection )
864 {
865 switch( selection )
866 {
867 case "doors_driver":
868 return "DoorsDriver";
869 case "doors_codriver":
870 return "DoorsCoDriver";
871 case "doors_cargo1":
872 return "DoorsCargo1";
873 case "doors_cargo2":
874 return "DoorsCargo2";
875 case "doors_hood":
876 return "DoorsHood";
877 case "doors_trunk":
878 return "DoorsTrunk";
879 }
880
881 return "";
882 }
883
884
885 override bool IsVitalTruckBattery()
886 {
887 return false;
888 }
889
890 override bool IsVitalGlowPlug()
891 {
892 return false;
893 }
894
895 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
896 {
897 switch (currentSeat)
898 {
899 case 0:
900 return nextSeat == 1;
901
902 case 1:
903 return nextSeat == 0;
904
905 case 2:
906 return nextSeat == 3;
907
908 case 3:
909 return nextSeat == 2;
910 }
911
912 return false;
913 }
914
915 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
916 {
917 switch (pCurrentSeat)
918 {
919 case 0:
920 return pDoorsSelection == "DoorsDriver";
921
922 case 1:
923 return pDoorsSelection == "DoorsCoDriver";
924
925 case 2:
926 return pDoorsSelection == "DoorsCargo1";
927
928 case 3:
929 return pDoorsSelection == "DoorsCargo2";
930 }
931
932 return false;
933 }
934
935 override void OnDebugSpawn()
936 {
940
941 GetInventory().CreateInInventory("Sedan_02_Wheel");
942 GetInventory().CreateInInventory("Sedan_02_Wheel");
943 GetInventory().CreateInInventory("Sedan_02_Wheel");
944 GetInventory().CreateInInventory("Sedan_02_Wheel");
945 GetInventory().CreateInInventory("Sedan_02_Wheel");
946
947 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
948 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
949 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
950 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
951 GetInventory().CreateInInventory("Sedan_02_Hood");
952 GetInventory().CreateInInventory("Sedan_02_Trunk");
953
954 //-----IN CAR CARGO
955 GetInventory().CreateInInventory("Sedan_02_Wheel");
956 GetInventory().CreateInInventory("Sedan_02_Wheel");
957 }
958}
959
960class Sedan_02_Red extends Sedan_02
961{
962 override void OnDebugSpawn()
963 {
967
968 GetInventory().CreateInInventory("Sedan_02_Wheel");
969 GetInventory().CreateInInventory("Sedan_02_Wheel");
970 GetInventory().CreateInInventory("Sedan_02_Wheel");
971 GetInventory().CreateInInventory("Sedan_02_Wheel");
972
973 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
974 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
975 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
976 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
977 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
978 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
979
980 //-----IN CAR CARGO
981 GetInventory().CreateInInventory("Sedan_02_Wheel");
982 GetInventory().CreateInInventory("Sedan_02_Wheel");
983 }
984}
985
986class Sedan_02_Grey extends Sedan_02
987{
988 override void OnDebugSpawn()
989 {
993
994 GetInventory().CreateInInventory("Sedan_02_Wheel");
995 GetInventory().CreateInInventory("Sedan_02_Wheel");
996 GetInventory().CreateInInventory("Sedan_02_Wheel");
997 GetInventory().CreateInInventory("Sedan_02_Wheel");
998
999 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1000 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1001 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1002 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1003 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1004 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1005
1006 //-----IN CAR CARGO
1007 GetInventory().CreateInInventory("Sedan_02_Wheel");
1008 GetInventory().CreateInInventory("Sedan_02_Wheel");
1009 }
1010}

◆ CreateRearLight()

override CarRearLightBase CreateRearLight ( )
protected
537{
541
542 void Sedan_02()
543 {
544 m_dmgContactCoef = 0.0790;
545
546 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
547 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
548 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
549 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
550 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
551
552 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
553 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
554
555 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
556 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
557
558 SetEnginePos("0 0.7 -1.7");
559 }
560
561 override void EEInit()
562 {
563 super.EEInit();
564
565 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
566 {
568 m_UTSSettings.m_ManualUpdate = true;
569 m_UTSSettings.m_TemperatureMin = 0;
570 m_UTSSettings.m_TemperatureMax = 30;
571 m_UTSSettings.m_RangeFull = 0.5;
572 m_UTSSettings.m_RangeMax = 2;
573 m_UTSSettings.m_TemperatureCap = 25;
574
577 }
578 }
579
580 override void OnEngineStart()
581 {
582 super.OnEngineStart();
583
584 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
585 {
586 m_UTSource.SetDefferedActive(true, 20.0);
587 }
588 }
589
590 override void OnEngineStop()
591 {
592 super.OnEngineStop();
593
594 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
595 {
596 m_UTSource.SetDefferedActive(false, 10.0);
597 }
598 }
599
600 override void EOnPostSimulate(IEntity other, float timeSlice)
601 {
602 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
603 {
604 if (m_UTSource.IsActive())
605 {
607 }
608 }
609 }
610
611 override int GetAnimInstance()
612 {
613 return VehicleAnimInstances.S120;
614 }
615
616 override int GetSeatAnimationType(int posIdx)
617 {
618 switch (posIdx)
619 {
620 case 0:
621 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
622 case 1:
623 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
624 case 2:
625 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
626 case 3:
627 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
628 }
629
630 return 0;
631 }
632
633 // Override for car-specific light type
635 {
636 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
637 }
638
639 // Override for car-specific light type
641 {
642 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
643 }
644
646 {
647 if (!super.CanReleaseAttachment(attachment))
648 {
649 return false;
650 }
651
652 string attType = attachment.GetType();
653 switch (attType)
654 {
655 case "CarBattery":
656 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
657 {
658 return false;
659 }
660 break;
661
662 case "SparkPlug":
663 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
664 {
665 return false;
666 }
667 break;
668
669 case "CarRadiator":
670 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
671 {
672 return false;
673 }
674 break;
675 }
676
677 return true;
678 }
679
680 override protected bool CanManipulateSpareWheel(string slotSelectionName)
681 {
682 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
683 }
684
685 override bool CanDisplayAttachmentCategory(string category_name)
686 {
687 if ( !super.CanDisplayAttachmentCategory(category_name))
688 {
689 return false;
690 }
691
692 category_name.ToLower();
693 if (category_name.Contains("engine"))
694 {
695 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
696 {
697 return false;
698 }
699 }
700
701 if (category_name.Contains("trunk"))
702 {
703 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
704 {
705 return false;
706 }
707 }
708
709 return true;
710 }
711
712 override bool CanDisplayCargo()
713 {
714 if ( !super.CanDisplayCargo() )
715 return false;
716
717 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
718 return false;
719
720 return true;
721 }
722
723 override int GetCarDoorsState(string slotType)
724 {
726
727 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
728 if (!carDoor)
729 {
730 return CarDoorState.DOORS_MISSING;
731 }
732
733 switch (slotType)
734 {
735 case "Sedan_02_Door_1_1":
736 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
737
738 case "Sedan_02_Door_2_1":
739 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
740
741 case "Sedan_02_Door_1_2":
742 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
743
744 case "Sedan_02_Door_2_2":
745 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
746
747 case "Sedan_02_Hood":
748 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
749
750 case "Sedan_02_Trunk":
751 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
752 }
753
754 return CarDoorState.DOORS_MISSING;
755 }
756
757
758 override bool CrewCanGetThrough( int posIdx )
759 {
760 switch( posIdx )
761 {
762 case 0:
763 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
764 return false;
765
766 return true;
767 break;
768
769 case 1:
770 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
771 return false;
772
773 return true;
774 break;
775
776 case 2:
777 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
778 return false;
779
780 return true;
781 break;
782
783 case 3:
784 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
785 return false;
786
787 return true;
788 break;
789 }
790
791 return false;
792 }
793
794 override string GetDoorSelectionNameFromSeatPos(int posIdx)
795 {
796 switch( posIdx )
797 {
798 case 0:
799 return "doors_driver";
800 break;
801 case 1:
802 return "doors_codriver";
803 break;
804 case 2:
805 return "doors_cargo1";
806 break;
807 case 3:
808 return "doors_cargo2";
809 break;
810 }
811
812 return super.GetDoorSelectionNameFromSeatPos(posIdx);
813 }
814
815 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
816 {
817 switch( posIdx )
818 {
819 case 0:
820 return "Sedan_02_Door_1_1";
821 break;
822 case 1:
823 return "Sedan_02_Door_2_1";
824 break;
825 case 2:
826 return "Sedan_02_Door_1_2";
827 break;
828 case 3:
829 return "Sedan_02_Door_2_2";
830 break;
831 }
832
833 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
834 }
835
836 override float OnSound(CarSoundCtrl ctrl, float oldValue)
837 {
838 switch ( ctrl )
839 {
840 case CarSoundCtrl.DOORS:
841 float newValue = 0;
842 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
843 {
844 newValue += 0.25;
845 }
846
847 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
848 {
849 newValue += 0.25;
850 }
851
852 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
853 {
854 newValue += 0.25;
855 }
856
857 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
858 {
859 newValue += 0.25;
860 }
861
862 return Math.Clamp(newValue, 0, 1);
863 break;
864 }
865
866 return super.OnSound(ctrl, oldValue);
867 }
868
869 override string GetAnimSourceFromSelection( string selection )
870 {
871 switch( selection )
872 {
873 case "doors_driver":
874 return "DoorsDriver";
875 case "doors_codriver":
876 return "DoorsCoDriver";
877 case "doors_cargo1":
878 return "DoorsCargo1";
879 case "doors_cargo2":
880 return "DoorsCargo2";
881 case "doors_hood":
882 return "DoorsHood";
883 case "doors_trunk":
884 return "DoorsTrunk";
885 }
886
887 return "";
888 }
889
890
891 override bool IsVitalTruckBattery()
892 {
893 return false;
894 }
895
896 override bool IsVitalGlowPlug()
897 {
898 return false;
899 }
900
901 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
902 {
903 switch (currentSeat)
904 {
905 case 0:
906 return nextSeat == 1;
907
908 case 1:
909 return nextSeat == 0;
910
911 case 2:
912 return nextSeat == 3;
913
914 case 3:
915 return nextSeat == 2;
916 }
917
918 return false;
919 }
920
921 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
922 {
923 switch (pCurrentSeat)
924 {
925 case 0:
926 return pDoorsSelection == "DoorsDriver";
927
928 case 1:
929 return pDoorsSelection == "DoorsCoDriver";
930
931 case 2:
932 return pDoorsSelection == "DoorsCargo1";
933
934 case 3:
935 return pDoorsSelection == "DoorsCargo2";
936 }
937
938 return false;
939 }
940
941 override void OnDebugSpawn()
942 {
946
947 GetInventory().CreateInInventory("Sedan_02_Wheel");
948 GetInventory().CreateInInventory("Sedan_02_Wheel");
949 GetInventory().CreateInInventory("Sedan_02_Wheel");
950 GetInventory().CreateInInventory("Sedan_02_Wheel");
951 GetInventory().CreateInInventory("Sedan_02_Wheel");
952
953 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
954 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
955 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
956 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
957 GetInventory().CreateInInventory("Sedan_02_Hood");
958 GetInventory().CreateInInventory("Sedan_02_Trunk");
959
960 //-----IN CAR CARGO
961 GetInventory().CreateInInventory("Sedan_02_Wheel");
962 GetInventory().CreateInInventory("Sedan_02_Wheel");
963 }
964}
965
966class Sedan_02_Red extends Sedan_02
967{
968 override void OnDebugSpawn()
969 {
973
974 GetInventory().CreateInInventory("Sedan_02_Wheel");
975 GetInventory().CreateInInventory("Sedan_02_Wheel");
976 GetInventory().CreateInInventory("Sedan_02_Wheel");
977 GetInventory().CreateInInventory("Sedan_02_Wheel");
978
979 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
980 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
981 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
982 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
983 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
984 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
985
986 //-----IN CAR CARGO
987 GetInventory().CreateInInventory("Sedan_02_Wheel");
988 GetInventory().CreateInInventory("Sedan_02_Wheel");
989 }
990}
991
992class Sedan_02_Grey extends Sedan_02
993{
994 override void OnDebugSpawn()
995 {
999
1000 GetInventory().CreateInInventory("Sedan_02_Wheel");
1001 GetInventory().CreateInInventory("Sedan_02_Wheel");
1002 GetInventory().CreateInInventory("Sedan_02_Wheel");
1003 GetInventory().CreateInInventory("Sedan_02_Wheel");
1004
1005 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1006 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1007 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1008 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1009 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1010 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1011
1012 //-----IN CAR CARGO
1013 GetInventory().CreateInInventory("Sedan_02_Wheel");
1014 GetInventory().CreateInInventory("Sedan_02_Wheel");
1015 }
1016}

◆ CrewCanGetThrough()

override bool CrewCanGetThrough ( int posIdx)
protected
655{
659
660 void Sedan_02()
661 {
662 m_dmgContactCoef = 0.0790;
663
664 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
665 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
666 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
667 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
668 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
669
670 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
671 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
672
673 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
674 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
675
676 SetEnginePos("0 0.7 -1.7");
677 }
678
679 override void EEInit()
680 {
681 super.EEInit();
682
683 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
684 {
686 m_UTSSettings.m_ManualUpdate = true;
687 m_UTSSettings.m_TemperatureMin = 0;
688 m_UTSSettings.m_TemperatureMax = 30;
689 m_UTSSettings.m_RangeFull = 0.5;
690 m_UTSSettings.m_RangeMax = 2;
691 m_UTSSettings.m_TemperatureCap = 25;
692
695 }
696 }
697
698 override void OnEngineStart()
699 {
700 super.OnEngineStart();
701
702 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
703 {
704 m_UTSource.SetDefferedActive(true, 20.0);
705 }
706 }
707
708 override void OnEngineStop()
709 {
710 super.OnEngineStop();
711
712 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
713 {
714 m_UTSource.SetDefferedActive(false, 10.0);
715 }
716 }
717
718 override void EOnPostSimulate(IEntity other, float timeSlice)
719 {
720 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
721 {
722 if (m_UTSource.IsActive())
723 {
725 }
726 }
727 }
728
729 override int GetAnimInstance()
730 {
731 return VehicleAnimInstances.S120;
732 }
733
734 override int GetSeatAnimationType(int posIdx)
735 {
736 switch (posIdx)
737 {
738 case 0:
739 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
740 case 1:
741 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
742 case 2:
743 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
744 case 3:
745 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
746 }
747
748 return 0;
749 }
750
751 // Override for car-specific light type
753 {
754 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
755 }
756
757 // Override for car-specific light type
759 {
760 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
761 }
762
764 {
765 if (!super.CanReleaseAttachment(attachment))
766 {
767 return false;
768 }
769
770 string attType = attachment.GetType();
771 switch (attType)
772 {
773 case "CarBattery":
774 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
775 {
776 return false;
777 }
778 break;
779
780 case "SparkPlug":
781 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
782 {
783 return false;
784 }
785 break;
786
787 case "CarRadiator":
788 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
789 {
790 return false;
791 }
792 break;
793 }
794
795 return true;
796 }
797
798 override protected bool CanManipulateSpareWheel(string slotSelectionName)
799 {
800 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
801 }
802
803 override bool CanDisplayAttachmentCategory(string category_name)
804 {
805 if ( !super.CanDisplayAttachmentCategory(category_name))
806 {
807 return false;
808 }
809
810 category_name.ToLower();
811 if (category_name.Contains("engine"))
812 {
813 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
814 {
815 return false;
816 }
817 }
818
819 if (category_name.Contains("trunk"))
820 {
821 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
822 {
823 return false;
824 }
825 }
826
827 return true;
828 }
829
830 override bool CanDisplayCargo()
831 {
832 if ( !super.CanDisplayCargo() )
833 return false;
834
835 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
836 return false;
837
838 return true;
839 }
840
841 override int GetCarDoorsState(string slotType)
842 {
844
845 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
846 if (!carDoor)
847 {
848 return CarDoorState.DOORS_MISSING;
849 }
850
851 switch (slotType)
852 {
853 case "Sedan_02_Door_1_1":
854 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
855
856 case "Sedan_02_Door_2_1":
857 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
858
859 case "Sedan_02_Door_1_2":
860 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
861
862 case "Sedan_02_Door_2_2":
863 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
864
865 case "Sedan_02_Hood":
866 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
867
868 case "Sedan_02_Trunk":
869 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
870 }
871
872 return CarDoorState.DOORS_MISSING;
873 }
874
875
876 override bool CrewCanGetThrough( int posIdx )
877 {
878 switch( posIdx )
879 {
880 case 0:
881 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
882 return false;
883
884 return true;
885 break;
886
887 case 1:
888 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
889 return false;
890
891 return true;
892 break;
893
894 case 2:
895 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
896 return false;
897
898 return true;
899 break;
900
901 case 3:
902 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
903 return false;
904
905 return true;
906 break;
907 }
908
909 return false;
910 }
911
912 override string GetDoorSelectionNameFromSeatPos(int posIdx)
913 {
914 switch( posIdx )
915 {
916 case 0:
917 return "doors_driver";
918 break;
919 case 1:
920 return "doors_codriver";
921 break;
922 case 2:
923 return "doors_cargo1";
924 break;
925 case 3:
926 return "doors_cargo2";
927 break;
928 }
929
930 return super.GetDoorSelectionNameFromSeatPos(posIdx);
931 }
932
933 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
934 {
935 switch( posIdx )
936 {
937 case 0:
938 return "Sedan_02_Door_1_1";
939 break;
940 case 1:
941 return "Sedan_02_Door_2_1";
942 break;
943 case 2:
944 return "Sedan_02_Door_1_2";
945 break;
946 case 3:
947 return "Sedan_02_Door_2_2";
948 break;
949 }
950
951 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
952 }
953
954 override float OnSound(CarSoundCtrl ctrl, float oldValue)
955 {
956 switch ( ctrl )
957 {
958 case CarSoundCtrl.DOORS:
959 float newValue = 0;
960 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
961 {
962 newValue += 0.25;
963 }
964
965 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
966 {
967 newValue += 0.25;
968 }
969
970 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
971 {
972 newValue += 0.25;
973 }
974
975 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
976 {
977 newValue += 0.25;
978 }
979
980 return Math.Clamp(newValue, 0, 1);
981 break;
982 }
983
984 return super.OnSound(ctrl, oldValue);
985 }
986
987 override string GetAnimSourceFromSelection( string selection )
988 {
989 switch( selection )
990 {
991 case "doors_driver":
992 return "DoorsDriver";
993 case "doors_codriver":
994 return "DoorsCoDriver";
995 case "doors_cargo1":
996 return "DoorsCargo1";
997 case "doors_cargo2":
998 return "DoorsCargo2";
999 case "doors_hood":
1000 return "DoorsHood";
1001 case "doors_trunk":
1002 return "DoorsTrunk";
1003 }
1004
1005 return "";
1006 }
1007
1008
1009 override bool IsVitalTruckBattery()
1010 {
1011 return false;
1012 }
1013
1014 override bool IsVitalGlowPlug()
1015 {
1016 return false;
1017 }
1018
1019 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
1020 {
1021 switch (currentSeat)
1022 {
1023 case 0:
1024 return nextSeat == 1;
1025
1026 case 1:
1027 return nextSeat == 0;
1028
1029 case 2:
1030 return nextSeat == 3;
1031
1032 case 3:
1033 return nextSeat == 2;
1034 }
1035
1036 return false;
1037 }
1038
1039 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
1040 {
1041 switch (pCurrentSeat)
1042 {
1043 case 0:
1044 return pDoorsSelection == "DoorsDriver";
1045
1046 case 1:
1047 return pDoorsSelection == "DoorsCoDriver";
1048
1049 case 2:
1050 return pDoorsSelection == "DoorsCargo1";
1051
1052 case 3:
1053 return pDoorsSelection == "DoorsCargo2";
1054 }
1055
1056 return false;
1057 }
1058
1059 override void OnDebugSpawn()
1060 {
1064
1065 GetInventory().CreateInInventory("Sedan_02_Wheel");
1066 GetInventory().CreateInInventory("Sedan_02_Wheel");
1067 GetInventory().CreateInInventory("Sedan_02_Wheel");
1068 GetInventory().CreateInInventory("Sedan_02_Wheel");
1069 GetInventory().CreateInInventory("Sedan_02_Wheel");
1070
1071 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
1072 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
1073 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
1074 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
1075 GetInventory().CreateInInventory("Sedan_02_Hood");
1076 GetInventory().CreateInInventory("Sedan_02_Trunk");
1077
1078 //-----IN CAR CARGO
1079 GetInventory().CreateInInventory("Sedan_02_Wheel");
1080 GetInventory().CreateInInventory("Sedan_02_Wheel");
1081 }
1082}
1083
1084class Sedan_02_Red extends Sedan_02
1085{
1086 override void OnDebugSpawn()
1087 {
1091
1092 GetInventory().CreateInInventory("Sedan_02_Wheel");
1093 GetInventory().CreateInInventory("Sedan_02_Wheel");
1094 GetInventory().CreateInInventory("Sedan_02_Wheel");
1095 GetInventory().CreateInInventory("Sedan_02_Wheel");
1096
1097 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1098 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1099 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1100 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1101 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1102 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1103
1104 //-----IN CAR CARGO
1105 GetInventory().CreateInInventory("Sedan_02_Wheel");
1106 GetInventory().CreateInInventory("Sedan_02_Wheel");
1107 }
1108}
1109
1110class Sedan_02_Grey extends Sedan_02
1111{
1112 override void OnDebugSpawn()
1113 {
1117
1118 GetInventory().CreateInInventory("Sedan_02_Wheel");
1119 GetInventory().CreateInInventory("Sedan_02_Wheel");
1120 GetInventory().CreateInInventory("Sedan_02_Wheel");
1121 GetInventory().CreateInInventory("Sedan_02_Wheel");
1122
1123 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1124 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1125 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1126 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1127 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1128 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1129
1130 //-----IN CAR CARGO
1131 GetInventory().CreateInInventory("Sedan_02_Wheel");
1132 GetInventory().CreateInInventory("Sedan_02_Wheel");
1133 }
1134}

◆ EEInit()

override void EEInit ( )
protected
458{
459 override void OnDebugSpawn()
460 {
464
465 GetInventory().CreateInInventory("Sedan_02_Wheel");
466 GetInventory().CreateInInventory("Sedan_02_Wheel");
467 GetInventory().CreateInInventory("Sedan_02_Wheel");
468 GetInventory().CreateInInventory("Sedan_02_Wheel");
469
470 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
471 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
472 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
473 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
474 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");

◆ EOnPostSimulate()

override void EOnPostSimulate ( IEntity other,
float timeSlice )
protected
497{
501
502 void Sedan_02()
503 {
504 m_dmgContactCoef = 0.0790;
505
506 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
507 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
508 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
509 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
510 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
511
512 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
513 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
514
515 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
516 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
517
518 SetEnginePos("0 0.7 -1.7");
519 }
520
521 override void EEInit()
522 {
523 super.EEInit();
524
525 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
526 {
528 m_UTSSettings.m_ManualUpdate = true;
529 m_UTSSettings.m_TemperatureMin = 0;
530 m_UTSSettings.m_TemperatureMax = 30;
531 m_UTSSettings.m_RangeFull = 0.5;
532 m_UTSSettings.m_RangeMax = 2;
533 m_UTSSettings.m_TemperatureCap = 25;
534
537 }
538 }
539
540 override void OnEngineStart()
541 {
542 super.OnEngineStart();
543
544 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
545 {
546 m_UTSource.SetDefferedActive(true, 20.0);
547 }
548 }
549
550 override void OnEngineStop()
551 {
552 super.OnEngineStop();
553
554 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
555 {
556 m_UTSource.SetDefferedActive(false, 10.0);
557 }
558 }
559
560 override void EOnPostSimulate(IEntity other, float timeSlice)
561 {
562 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
563 {
564 if (m_UTSource.IsActive())
565 {
567 }
568 }
569 }
570
571 override int GetAnimInstance()
572 {
573 return VehicleAnimInstances.S120;
574 }
575
576 override int GetSeatAnimationType(int posIdx)
577 {
578 switch (posIdx)
579 {
580 case 0:
581 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
582 case 1:
583 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
584 case 2:
585 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
586 case 3:
587 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
588 }
589
590 return 0;
591 }
592
593 // Override for car-specific light type
595 {
596 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
597 }
598
599 // Override for car-specific light type
601 {
602 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
603 }
604
606 {
607 if (!super.CanReleaseAttachment(attachment))
608 {
609 return false;
610 }
611
612 string attType = attachment.GetType();
613 switch (attType)
614 {
615 case "CarBattery":
616 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
617 {
618 return false;
619 }
620 break;
621
622 case "SparkPlug":
623 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
624 {
625 return false;
626 }
627 break;
628
629 case "CarRadiator":
630 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
631 {
632 return false;
633 }
634 break;
635 }
636
637 return true;
638 }
639
640 override protected bool CanManipulateSpareWheel(string slotSelectionName)
641 {
642 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
643 }
644
645 override bool CanDisplayAttachmentCategory(string category_name)
646 {
647 if ( !super.CanDisplayAttachmentCategory(category_name))
648 {
649 return false;
650 }
651
652 category_name.ToLower();
653 if (category_name.Contains("engine"))
654 {
655 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
656 {
657 return false;
658 }
659 }
660
661 if (category_name.Contains("trunk"))
662 {
663 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
664 {
665 return false;
666 }
667 }
668
669 return true;
670 }
671
672 override bool CanDisplayCargo()
673 {
674 if ( !super.CanDisplayCargo() )
675 return false;
676
677 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
678 return false;
679
680 return true;
681 }
682
683 override int GetCarDoorsState(string slotType)
684 {
686
687 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
688 if (!carDoor)
689 {
690 return CarDoorState.DOORS_MISSING;
691 }
692
693 switch (slotType)
694 {
695 case "Sedan_02_Door_1_1":
696 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
697
698 case "Sedan_02_Door_2_1":
699 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
700
701 case "Sedan_02_Door_1_2":
702 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
703
704 case "Sedan_02_Door_2_2":
705 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
706
707 case "Sedan_02_Hood":
708 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
709
710 case "Sedan_02_Trunk":
711 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
712 }
713
714 return CarDoorState.DOORS_MISSING;
715 }
716
717
718 override bool CrewCanGetThrough( int posIdx )
719 {
720 switch( posIdx )
721 {
722 case 0:
723 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
724 return false;
725
726 return true;
727 break;
728
729 case 1:
730 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
731 return false;
732
733 return true;
734 break;
735
736 case 2:
737 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
738 return false;
739
740 return true;
741 break;
742
743 case 3:
744 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
745 return false;
746
747 return true;
748 break;
749 }
750
751 return false;
752 }
753
754 override string GetDoorSelectionNameFromSeatPos(int posIdx)
755 {
756 switch( posIdx )
757 {
758 case 0:
759 return "doors_driver";
760 break;
761 case 1:
762 return "doors_codriver";
763 break;
764 case 2:
765 return "doors_cargo1";
766 break;
767 case 3:
768 return "doors_cargo2";
769 break;
770 }
771
772 return super.GetDoorSelectionNameFromSeatPos(posIdx);
773 }
774
775 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
776 {
777 switch( posIdx )
778 {
779 case 0:
780 return "Sedan_02_Door_1_1";
781 break;
782 case 1:
783 return "Sedan_02_Door_2_1";
784 break;
785 case 2:
786 return "Sedan_02_Door_1_2";
787 break;
788 case 3:
789 return "Sedan_02_Door_2_2";
790 break;
791 }
792
793 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
794 }
795
796 override float OnSound(CarSoundCtrl ctrl, float oldValue)
797 {
798 switch ( ctrl )
799 {
800 case CarSoundCtrl.DOORS:
801 float newValue = 0;
802 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
803 {
804 newValue += 0.25;
805 }
806
807 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
808 {
809 newValue += 0.25;
810 }
811
812 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
813 {
814 newValue += 0.25;
815 }
816
817 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
818 {
819 newValue += 0.25;
820 }
821
822 return Math.Clamp(newValue, 0, 1);
823 break;
824 }
825
826 return super.OnSound(ctrl, oldValue);
827 }
828
829 override string GetAnimSourceFromSelection( string selection )
830 {
831 switch( selection )
832 {
833 case "doors_driver":
834 return "DoorsDriver";
835 case "doors_codriver":
836 return "DoorsCoDriver";
837 case "doors_cargo1":
838 return "DoorsCargo1";
839 case "doors_cargo2":
840 return "DoorsCargo2";
841 case "doors_hood":
842 return "DoorsHood";
843 case "doors_trunk":
844 return "DoorsTrunk";
845 }
846
847 return "";
848 }
849
850
851 override bool IsVitalTruckBattery()
852 {
853 return false;
854 }
855
856 override bool IsVitalGlowPlug()
857 {
858 return false;
859 }
860
861 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
862 {
863 switch (currentSeat)
864 {
865 case 0:
866 return nextSeat == 1;
867
868 case 1:
869 return nextSeat == 0;
870
871 case 2:
872 return nextSeat == 3;
873
874 case 3:
875 return nextSeat == 2;
876 }
877
878 return false;
879 }
880
881 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
882 {
883 switch (pCurrentSeat)
884 {
885 case 0:
886 return pDoorsSelection == "DoorsDriver";
887
888 case 1:
889 return pDoorsSelection == "DoorsCoDriver";
890
891 case 2:
892 return pDoorsSelection == "DoorsCargo1";
893
894 case 3:
895 return pDoorsSelection == "DoorsCargo2";
896 }
897
898 return false;
899 }
900
901 override void OnDebugSpawn()
902 {
906
907 GetInventory().CreateInInventory("Sedan_02_Wheel");
908 GetInventory().CreateInInventory("Sedan_02_Wheel");
909 GetInventory().CreateInInventory("Sedan_02_Wheel");
910 GetInventory().CreateInInventory("Sedan_02_Wheel");
911 GetInventory().CreateInInventory("Sedan_02_Wheel");
912
913 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
914 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
915 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
916 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
917 GetInventory().CreateInInventory("Sedan_02_Hood");
918 GetInventory().CreateInInventory("Sedan_02_Trunk");
919
920 //-----IN CAR CARGO
921 GetInventory().CreateInInventory("Sedan_02_Wheel");
922 GetInventory().CreateInInventory("Sedan_02_Wheel");
923 }
924}
925
926class Sedan_02_Red extends Sedan_02
927{
928 override void OnDebugSpawn()
929 {
933
934 GetInventory().CreateInInventory("Sedan_02_Wheel");
935 GetInventory().CreateInInventory("Sedan_02_Wheel");
936 GetInventory().CreateInInventory("Sedan_02_Wheel");
937 GetInventory().CreateInInventory("Sedan_02_Wheel");
938
939 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
940 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
941 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
942 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
943 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
944 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
945
946 //-----IN CAR CARGO
947 GetInventory().CreateInInventory("Sedan_02_Wheel");
948 GetInventory().CreateInInventory("Sedan_02_Wheel");
949 }
950}
951
952class Sedan_02_Grey extends Sedan_02
953{
954 override void OnDebugSpawn()
955 {
959
960 GetInventory().CreateInInventory("Sedan_02_Wheel");
961 GetInventory().CreateInInventory("Sedan_02_Wheel");
962 GetInventory().CreateInInventory("Sedan_02_Wheel");
963 GetInventory().CreateInInventory("Sedan_02_Wheel");
964
965 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
966 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
967 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
968 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
969 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
970 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
971
972 //-----IN CAR CARGO
973 GetInventory().CreateInInventory("Sedan_02_Wheel");
974 GetInventory().CreateInInventory("Sedan_02_Wheel");
975 }
976}

◆ GetAnimInstance()

override int GetAnimInstance ( )
protected
508{
512
513 void Sedan_02()
514 {
515 m_dmgContactCoef = 0.0790;
516
517 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
518 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
519 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
520 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
521 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
522
523 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
524 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
525
526 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
527 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
528
529 SetEnginePos("0 0.7 -1.7");
530 }
531
532 override void EEInit()
533 {
534 super.EEInit();
535
536 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
537 {
539 m_UTSSettings.m_ManualUpdate = true;
540 m_UTSSettings.m_TemperatureMin = 0;
541 m_UTSSettings.m_TemperatureMax = 30;
542 m_UTSSettings.m_RangeFull = 0.5;
543 m_UTSSettings.m_RangeMax = 2;
544 m_UTSSettings.m_TemperatureCap = 25;
545
548 }
549 }
550
551 override void OnEngineStart()
552 {
553 super.OnEngineStart();
554
555 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
556 {
557 m_UTSource.SetDefferedActive(true, 20.0);
558 }
559 }
560
561 override void OnEngineStop()
562 {
563 super.OnEngineStop();
564
565 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
566 {
567 m_UTSource.SetDefferedActive(false, 10.0);
568 }
569 }
570
571 override void EOnPostSimulate(IEntity other, float timeSlice)
572 {
573 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
574 {
575 if (m_UTSource.IsActive())
576 {
578 }
579 }
580 }
581
582 override int GetAnimInstance()
583 {
584 return VehicleAnimInstances.S120;
585 }
586
587 override int GetSeatAnimationType(int posIdx)
588 {
589 switch (posIdx)
590 {
591 case 0:
592 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
593 case 1:
594 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
595 case 2:
596 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
597 case 3:
598 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
599 }
600
601 return 0;
602 }
603
604 // Override for car-specific light type
606 {
607 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
608 }
609
610 // Override for car-specific light type
612 {
613 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
614 }
615
617 {
618 if (!super.CanReleaseAttachment(attachment))
619 {
620 return false;
621 }
622
623 string attType = attachment.GetType();
624 switch (attType)
625 {
626 case "CarBattery":
627 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
628 {
629 return false;
630 }
631 break;
632
633 case "SparkPlug":
634 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
635 {
636 return false;
637 }
638 break;
639
640 case "CarRadiator":
641 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
642 {
643 return false;
644 }
645 break;
646 }
647
648 return true;
649 }
650
651 override protected bool CanManipulateSpareWheel(string slotSelectionName)
652 {
653 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
654 }
655
656 override bool CanDisplayAttachmentCategory(string category_name)
657 {
658 if ( !super.CanDisplayAttachmentCategory(category_name))
659 {
660 return false;
661 }
662
663 category_name.ToLower();
664 if (category_name.Contains("engine"))
665 {
666 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
667 {
668 return false;
669 }
670 }
671
672 if (category_name.Contains("trunk"))
673 {
674 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
675 {
676 return false;
677 }
678 }
679
680 return true;
681 }
682
683 override bool CanDisplayCargo()
684 {
685 if ( !super.CanDisplayCargo() )
686 return false;
687
688 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
689 return false;
690
691 return true;
692 }
693
694 override int GetCarDoorsState(string slotType)
695 {
697
698 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
699 if (!carDoor)
700 {
701 return CarDoorState.DOORS_MISSING;
702 }
703
704 switch (slotType)
705 {
706 case "Sedan_02_Door_1_1":
707 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
708
709 case "Sedan_02_Door_2_1":
710 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
711
712 case "Sedan_02_Door_1_2":
713 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
714
715 case "Sedan_02_Door_2_2":
716 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
717
718 case "Sedan_02_Hood":
719 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
720
721 case "Sedan_02_Trunk":
722 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
723 }
724
725 return CarDoorState.DOORS_MISSING;
726 }
727
728
729 override bool CrewCanGetThrough( int posIdx )
730 {
731 switch( posIdx )
732 {
733 case 0:
734 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
735 return false;
736
737 return true;
738 break;
739
740 case 1:
741 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
742 return false;
743
744 return true;
745 break;
746
747 case 2:
748 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
749 return false;
750
751 return true;
752 break;
753
754 case 3:
755 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
756 return false;
757
758 return true;
759 break;
760 }
761
762 return false;
763 }
764
765 override string GetDoorSelectionNameFromSeatPos(int posIdx)
766 {
767 switch( posIdx )
768 {
769 case 0:
770 return "doors_driver";
771 break;
772 case 1:
773 return "doors_codriver";
774 break;
775 case 2:
776 return "doors_cargo1";
777 break;
778 case 3:
779 return "doors_cargo2";
780 break;
781 }
782
783 return super.GetDoorSelectionNameFromSeatPos(posIdx);
784 }
785
786 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
787 {
788 switch( posIdx )
789 {
790 case 0:
791 return "Sedan_02_Door_1_1";
792 break;
793 case 1:
794 return "Sedan_02_Door_2_1";
795 break;
796 case 2:
797 return "Sedan_02_Door_1_2";
798 break;
799 case 3:
800 return "Sedan_02_Door_2_2";
801 break;
802 }
803
804 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
805 }
806
807 override float OnSound(CarSoundCtrl ctrl, float oldValue)
808 {
809 switch ( ctrl )
810 {
811 case CarSoundCtrl.DOORS:
812 float newValue = 0;
813 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
814 {
815 newValue += 0.25;
816 }
817
818 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
819 {
820 newValue += 0.25;
821 }
822
823 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
824 {
825 newValue += 0.25;
826 }
827
828 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
829 {
830 newValue += 0.25;
831 }
832
833 return Math.Clamp(newValue, 0, 1);
834 break;
835 }
836
837 return super.OnSound(ctrl, oldValue);
838 }
839
840 override string GetAnimSourceFromSelection( string selection )
841 {
842 switch( selection )
843 {
844 case "doors_driver":
845 return "DoorsDriver";
846 case "doors_codriver":
847 return "DoorsCoDriver";
848 case "doors_cargo1":
849 return "DoorsCargo1";
850 case "doors_cargo2":
851 return "DoorsCargo2";
852 case "doors_hood":
853 return "DoorsHood";
854 case "doors_trunk":
855 return "DoorsTrunk";
856 }
857
858 return "";
859 }
860
861
862 override bool IsVitalTruckBattery()
863 {
864 return false;
865 }
866
867 override bool IsVitalGlowPlug()
868 {
869 return false;
870 }
871
872 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
873 {
874 switch (currentSeat)
875 {
876 case 0:
877 return nextSeat == 1;
878
879 case 1:
880 return nextSeat == 0;
881
882 case 2:
883 return nextSeat == 3;
884
885 case 3:
886 return nextSeat == 2;
887 }
888
889 return false;
890 }
891
892 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
893 {
894 switch (pCurrentSeat)
895 {
896 case 0:
897 return pDoorsSelection == "DoorsDriver";
898
899 case 1:
900 return pDoorsSelection == "DoorsCoDriver";
901
902 case 2:
903 return pDoorsSelection == "DoorsCargo1";
904
905 case 3:
906 return pDoorsSelection == "DoorsCargo2";
907 }
908
909 return false;
910 }
911
912 override void OnDebugSpawn()
913 {
917
918 GetInventory().CreateInInventory("Sedan_02_Wheel");
919 GetInventory().CreateInInventory("Sedan_02_Wheel");
920 GetInventory().CreateInInventory("Sedan_02_Wheel");
921 GetInventory().CreateInInventory("Sedan_02_Wheel");
922 GetInventory().CreateInInventory("Sedan_02_Wheel");
923
924 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
925 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
926 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
927 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
928 GetInventory().CreateInInventory("Sedan_02_Hood");
929 GetInventory().CreateInInventory("Sedan_02_Trunk");
930
931 //-----IN CAR CARGO
932 GetInventory().CreateInInventory("Sedan_02_Wheel");
933 GetInventory().CreateInInventory("Sedan_02_Wheel");
934 }
935}
936
937class Sedan_02_Red extends Sedan_02
938{
939 override void OnDebugSpawn()
940 {
944
945 GetInventory().CreateInInventory("Sedan_02_Wheel");
946 GetInventory().CreateInInventory("Sedan_02_Wheel");
947 GetInventory().CreateInInventory("Sedan_02_Wheel");
948 GetInventory().CreateInInventory("Sedan_02_Wheel");
949
950 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
951 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
952 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
953 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
954 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
955 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
956
957 //-----IN CAR CARGO
958 GetInventory().CreateInInventory("Sedan_02_Wheel");
959 GetInventory().CreateInInventory("Sedan_02_Wheel");
960 }
961}
962
963class Sedan_02_Grey extends Sedan_02
964{
965 override void OnDebugSpawn()
966 {
970
971 GetInventory().CreateInInventory("Sedan_02_Wheel");
972 GetInventory().CreateInInventory("Sedan_02_Wheel");
973 GetInventory().CreateInInventory("Sedan_02_Wheel");
974 GetInventory().CreateInInventory("Sedan_02_Wheel");
975
976 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
977 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
978 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
979 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
980 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
981 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
982
983 //-----IN CAR CARGO
984 GetInventory().CreateInInventory("Sedan_02_Wheel");
985 GetInventory().CreateInInventory("Sedan_02_Wheel");
986 }
987}

◆ GetAnimSourceFromSelection()

override string GetAnimSourceFromSelection ( string selection)
protected
766{
770
771 void Sedan_02()
772 {
773 m_dmgContactCoef = 0.0790;
774
775 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
776 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
777 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
778 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
779 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
780
781 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
782 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
783
784 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
785 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
786
787 SetEnginePos("0 0.7 -1.7");
788 }
789
790 override void EEInit()
791 {
792 super.EEInit();
793
794 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
795 {
797 m_UTSSettings.m_ManualUpdate = true;
798 m_UTSSettings.m_TemperatureMin = 0;
799 m_UTSSettings.m_TemperatureMax = 30;
800 m_UTSSettings.m_RangeFull = 0.5;
801 m_UTSSettings.m_RangeMax = 2;
802 m_UTSSettings.m_TemperatureCap = 25;
803
806 }
807 }
808
809 override void OnEngineStart()
810 {
811 super.OnEngineStart();
812
813 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
814 {
815 m_UTSource.SetDefferedActive(true, 20.0);
816 }
817 }
818
819 override void OnEngineStop()
820 {
821 super.OnEngineStop();
822
823 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
824 {
825 m_UTSource.SetDefferedActive(false, 10.0);
826 }
827 }
828
829 override void EOnPostSimulate(IEntity other, float timeSlice)
830 {
831 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
832 {
833 if (m_UTSource.IsActive())
834 {
836 }
837 }
838 }
839
840 override int GetAnimInstance()
841 {
842 return VehicleAnimInstances.S120;
843 }
844
845 override int GetSeatAnimationType(int posIdx)
846 {
847 switch (posIdx)
848 {
849 case 0:
850 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
851 case 1:
852 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
853 case 2:
854 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
855 case 3:
856 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
857 }
858
859 return 0;
860 }
861
862 // Override for car-specific light type
864 {
865 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
866 }
867
868 // Override for car-specific light type
870 {
871 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
872 }
873
875 {
876 if (!super.CanReleaseAttachment(attachment))
877 {
878 return false;
879 }
880
881 string attType = attachment.GetType();
882 switch (attType)
883 {
884 case "CarBattery":
885 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
886 {
887 return false;
888 }
889 break;
890
891 case "SparkPlug":
892 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
893 {
894 return false;
895 }
896 break;
897
898 case "CarRadiator":
899 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
900 {
901 return false;
902 }
903 break;
904 }
905
906 return true;
907 }
908
909 override protected bool CanManipulateSpareWheel(string slotSelectionName)
910 {
911 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
912 }
913
914 override bool CanDisplayAttachmentCategory(string category_name)
915 {
916 if ( !super.CanDisplayAttachmentCategory(category_name))
917 {
918 return false;
919 }
920
921 category_name.ToLower();
922 if (category_name.Contains("engine"))
923 {
924 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
925 {
926 return false;
927 }
928 }
929
930 if (category_name.Contains("trunk"))
931 {
932 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
933 {
934 return false;
935 }
936 }
937
938 return true;
939 }
940
941 override bool CanDisplayCargo()
942 {
943 if ( !super.CanDisplayCargo() )
944 return false;
945
946 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
947 return false;
948
949 return true;
950 }
951
952 override int GetCarDoorsState(string slotType)
953 {
955
956 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
957 if (!carDoor)
958 {
959 return CarDoorState.DOORS_MISSING;
960 }
961
962 switch (slotType)
963 {
964 case "Sedan_02_Door_1_1":
965 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
966
967 case "Sedan_02_Door_2_1":
968 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
969
970 case "Sedan_02_Door_1_2":
971 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
972
973 case "Sedan_02_Door_2_2":
974 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
975
976 case "Sedan_02_Hood":
977 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
978
979 case "Sedan_02_Trunk":
980 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
981 }
982
983 return CarDoorState.DOORS_MISSING;
984 }
985
986
987 override bool CrewCanGetThrough( int posIdx )
988 {
989 switch( posIdx )
990 {
991 case 0:
992 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
993 return false;
994
995 return true;
996 break;
997
998 case 1:
999 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
1000 return false;
1001
1002 return true;
1003 break;
1004
1005 case 2:
1006 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
1007 return false;
1008
1009 return true;
1010 break;
1011
1012 case 3:
1013 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
1014 return false;
1015
1016 return true;
1017 break;
1018 }
1019
1020 return false;
1021 }
1022
1023 override string GetDoorSelectionNameFromSeatPos(int posIdx)
1024 {
1025 switch( posIdx )
1026 {
1027 case 0:
1028 return "doors_driver";
1029 break;
1030 case 1:
1031 return "doors_codriver";
1032 break;
1033 case 2:
1034 return "doors_cargo1";
1035 break;
1036 case 3:
1037 return "doors_cargo2";
1038 break;
1039 }
1040
1041 return super.GetDoorSelectionNameFromSeatPos(posIdx);
1042 }
1043
1044 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
1045 {
1046 switch( posIdx )
1047 {
1048 case 0:
1049 return "Sedan_02_Door_1_1";
1050 break;
1051 case 1:
1052 return "Sedan_02_Door_2_1";
1053 break;
1054 case 2:
1055 return "Sedan_02_Door_1_2";
1056 break;
1057 case 3:
1058 return "Sedan_02_Door_2_2";
1059 break;
1060 }
1061
1062 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
1063 }
1064
1065 override float OnSound(CarSoundCtrl ctrl, float oldValue)
1066 {
1067 switch ( ctrl )
1068 {
1069 case CarSoundCtrl.DOORS:
1070 float newValue = 0;
1071 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
1072 {
1073 newValue += 0.25;
1074 }
1075
1076 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
1077 {
1078 newValue += 0.25;
1079 }
1080
1081 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
1082 {
1083 newValue += 0.25;
1084 }
1085
1086 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
1087 {
1088 newValue += 0.25;
1089 }
1090
1091 return Math.Clamp(newValue, 0, 1);
1092 break;
1093 }
1094
1095 return super.OnSound(ctrl, oldValue);
1096 }
1097
1098 override string GetAnimSourceFromSelection( string selection )
1099 {
1100 switch( selection )
1101 {
1102 case "doors_driver":
1103 return "DoorsDriver";
1104 case "doors_codriver":
1105 return "DoorsCoDriver";
1106 case "doors_cargo1":
1107 return "DoorsCargo1";
1108 case "doors_cargo2":
1109 return "DoorsCargo2";
1110 case "doors_hood":
1111 return "DoorsHood";
1112 case "doors_trunk":
1113 return "DoorsTrunk";
1114 }
1115
1116 return "";
1117 }
1118
1119
1120 override bool IsVitalTruckBattery()
1121 {
1122 return false;
1123 }
1124
1125 override bool IsVitalGlowPlug()
1126 {
1127 return false;
1128 }
1129
1130 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
1131 {
1132 switch (currentSeat)
1133 {
1134 case 0:
1135 return nextSeat == 1;
1136
1137 case 1:
1138 return nextSeat == 0;
1139
1140 case 2:
1141 return nextSeat == 3;
1142
1143 case 3:
1144 return nextSeat == 2;
1145 }
1146
1147 return false;
1148 }
1149
1150 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
1151 {
1152 switch (pCurrentSeat)
1153 {
1154 case 0:
1155 return pDoorsSelection == "DoorsDriver";
1156
1157 case 1:
1158 return pDoorsSelection == "DoorsCoDriver";
1159
1160 case 2:
1161 return pDoorsSelection == "DoorsCargo1";
1162
1163 case 3:
1164 return pDoorsSelection == "DoorsCargo2";
1165 }
1166
1167 return false;
1168 }
1169
1170 override void OnDebugSpawn()
1171 {
1175
1176 GetInventory().CreateInInventory("Sedan_02_Wheel");
1177 GetInventory().CreateInInventory("Sedan_02_Wheel");
1178 GetInventory().CreateInInventory("Sedan_02_Wheel");
1179 GetInventory().CreateInInventory("Sedan_02_Wheel");
1180 GetInventory().CreateInInventory("Sedan_02_Wheel");
1181
1182 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
1183 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
1184 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
1185 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
1186 GetInventory().CreateInInventory("Sedan_02_Hood");
1187 GetInventory().CreateInInventory("Sedan_02_Trunk");
1188
1189 //-----IN CAR CARGO
1190 GetInventory().CreateInInventory("Sedan_02_Wheel");
1191 GetInventory().CreateInInventory("Sedan_02_Wheel");
1192 }
1193}
1194
1195class Sedan_02_Red extends Sedan_02
1196{
1197 override void OnDebugSpawn()
1198 {
1202
1203 GetInventory().CreateInInventory("Sedan_02_Wheel");
1204 GetInventory().CreateInInventory("Sedan_02_Wheel");
1205 GetInventory().CreateInInventory("Sedan_02_Wheel");
1206 GetInventory().CreateInInventory("Sedan_02_Wheel");
1207
1208 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1209 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1210 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1211 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1212 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1213 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1214
1215 //-----IN CAR CARGO
1216 GetInventory().CreateInInventory("Sedan_02_Wheel");
1217 GetInventory().CreateInInventory("Sedan_02_Wheel");
1218 }
1219}
1220
1221class Sedan_02_Grey extends Sedan_02
1222{
1223 override void OnDebugSpawn()
1224 {
1228
1229 GetInventory().CreateInInventory("Sedan_02_Wheel");
1230 GetInventory().CreateInInventory("Sedan_02_Wheel");
1231 GetInventory().CreateInInventory("Sedan_02_Wheel");
1232 GetInventory().CreateInInventory("Sedan_02_Wheel");
1233
1234 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1235 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1236 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1237 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1238 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1239 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1240
1241 //-----IN CAR CARGO
1242 GetInventory().CreateInInventory("Sedan_02_Wheel");
1243 GetInventory().CreateInInventory("Sedan_02_Wheel");
1244 }
1245}

◆ GetCarDoorsState()

override int GetCarDoorsState ( string slotType)
protected
620{
624
625 void Sedan_02()
626 {
627 m_dmgContactCoef = 0.0790;
628
629 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
630 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
631 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
632 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
633 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
634
635 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
636 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
637
638 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
639 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
640
641 SetEnginePos("0 0.7 -1.7");
642 }
643
644 override void EEInit()
645 {
646 super.EEInit();
647
648 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
649 {
651 m_UTSSettings.m_ManualUpdate = true;
652 m_UTSSettings.m_TemperatureMin = 0;
653 m_UTSSettings.m_TemperatureMax = 30;
654 m_UTSSettings.m_RangeFull = 0.5;
655 m_UTSSettings.m_RangeMax = 2;
656 m_UTSSettings.m_TemperatureCap = 25;
657
660 }
661 }
662
663 override void OnEngineStart()
664 {
665 super.OnEngineStart();
666
667 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
668 {
669 m_UTSource.SetDefferedActive(true, 20.0);
670 }
671 }
672
673 override void OnEngineStop()
674 {
675 super.OnEngineStop();
676
677 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
678 {
679 m_UTSource.SetDefferedActive(false, 10.0);
680 }
681 }
682
683 override void EOnPostSimulate(IEntity other, float timeSlice)
684 {
685 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
686 {
687 if (m_UTSource.IsActive())
688 {
690 }
691 }
692 }
693
694 override int GetAnimInstance()
695 {
696 return VehicleAnimInstances.S120;
697 }
698
699 override int GetSeatAnimationType(int posIdx)
700 {
701 switch (posIdx)
702 {
703 case 0:
704 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
705 case 1:
706 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
707 case 2:
708 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
709 case 3:
710 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
711 }
712
713 return 0;
714 }
715
716 // Override for car-specific light type
718 {
719 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
720 }
721
722 // Override for car-specific light type
724 {
725 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
726 }
727
729 {
730 if (!super.CanReleaseAttachment(attachment))
731 {
732 return false;
733 }
734
735 string attType = attachment.GetType();
736 switch (attType)
737 {
738 case "CarBattery":
739 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
740 {
741 return false;
742 }
743 break;
744
745 case "SparkPlug":
746 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
747 {
748 return false;
749 }
750 break;
751
752 case "CarRadiator":
753 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
754 {
755 return false;
756 }
757 break;
758 }
759
760 return true;
761 }
762
763 override protected bool CanManipulateSpareWheel(string slotSelectionName)
764 {
765 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
766 }
767
768 override bool CanDisplayAttachmentCategory(string category_name)
769 {
770 if ( !super.CanDisplayAttachmentCategory(category_name))
771 {
772 return false;
773 }
774
775 category_name.ToLower();
776 if (category_name.Contains("engine"))
777 {
778 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
779 {
780 return false;
781 }
782 }
783
784 if (category_name.Contains("trunk"))
785 {
786 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
787 {
788 return false;
789 }
790 }
791
792 return true;
793 }
794
795 override bool CanDisplayCargo()
796 {
797 if ( !super.CanDisplayCargo() )
798 return false;
799
800 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
801 return false;
802
803 return true;
804 }
805
806 override int GetCarDoorsState(string slotType)
807 {
809
810 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
811 if (!carDoor)
812 {
813 return CarDoorState.DOORS_MISSING;
814 }
815
816 switch (slotType)
817 {
818 case "Sedan_02_Door_1_1":
819 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
820
821 case "Sedan_02_Door_2_1":
822 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
823
824 case "Sedan_02_Door_1_2":
825 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
826
827 case "Sedan_02_Door_2_2":
828 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
829
830 case "Sedan_02_Hood":
831 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
832
833 case "Sedan_02_Trunk":
834 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
835 }
836
837 return CarDoorState.DOORS_MISSING;
838 }
839
840
841 override bool CrewCanGetThrough( int posIdx )
842 {
843 switch( posIdx )
844 {
845 case 0:
846 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
847 return false;
848
849 return true;
850 break;
851
852 case 1:
853 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
854 return false;
855
856 return true;
857 break;
858
859 case 2:
860 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
861 return false;
862
863 return true;
864 break;
865
866 case 3:
867 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
868 return false;
869
870 return true;
871 break;
872 }
873
874 return false;
875 }
876
877 override string GetDoorSelectionNameFromSeatPos(int posIdx)
878 {
879 switch( posIdx )
880 {
881 case 0:
882 return "doors_driver";
883 break;
884 case 1:
885 return "doors_codriver";
886 break;
887 case 2:
888 return "doors_cargo1";
889 break;
890 case 3:
891 return "doors_cargo2";
892 break;
893 }
894
895 return super.GetDoorSelectionNameFromSeatPos(posIdx);
896 }
897
898 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
899 {
900 switch( posIdx )
901 {
902 case 0:
903 return "Sedan_02_Door_1_1";
904 break;
905 case 1:
906 return "Sedan_02_Door_2_1";
907 break;
908 case 2:
909 return "Sedan_02_Door_1_2";
910 break;
911 case 3:
912 return "Sedan_02_Door_2_2";
913 break;
914 }
915
916 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
917 }
918
919 override float OnSound(CarSoundCtrl ctrl, float oldValue)
920 {
921 switch ( ctrl )
922 {
923 case CarSoundCtrl.DOORS:
924 float newValue = 0;
925 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
926 {
927 newValue += 0.25;
928 }
929
930 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
931 {
932 newValue += 0.25;
933 }
934
935 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
936 {
937 newValue += 0.25;
938 }
939
940 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
941 {
942 newValue += 0.25;
943 }
944
945 return Math.Clamp(newValue, 0, 1);
946 break;
947 }
948
949 return super.OnSound(ctrl, oldValue);
950 }
951
952 override string GetAnimSourceFromSelection( string selection )
953 {
954 switch( selection )
955 {
956 case "doors_driver":
957 return "DoorsDriver";
958 case "doors_codriver":
959 return "DoorsCoDriver";
960 case "doors_cargo1":
961 return "DoorsCargo1";
962 case "doors_cargo2":
963 return "DoorsCargo2";
964 case "doors_hood":
965 return "DoorsHood";
966 case "doors_trunk":
967 return "DoorsTrunk";
968 }
969
970 return "";
971 }
972
973
974 override bool IsVitalTruckBattery()
975 {
976 return false;
977 }
978
979 override bool IsVitalGlowPlug()
980 {
981 return false;
982 }
983
984 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
985 {
986 switch (currentSeat)
987 {
988 case 0:
989 return nextSeat == 1;
990
991 case 1:
992 return nextSeat == 0;
993
994 case 2:
995 return nextSeat == 3;
996
997 case 3:
998 return nextSeat == 2;
999 }
1000
1001 return false;
1002 }
1003
1004 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
1005 {
1006 switch (pCurrentSeat)
1007 {
1008 case 0:
1009 return pDoorsSelection == "DoorsDriver";
1010
1011 case 1:
1012 return pDoorsSelection == "DoorsCoDriver";
1013
1014 case 2:
1015 return pDoorsSelection == "DoorsCargo1";
1016
1017 case 3:
1018 return pDoorsSelection == "DoorsCargo2";
1019 }
1020
1021 return false;
1022 }
1023
1024 override void OnDebugSpawn()
1025 {
1029
1030 GetInventory().CreateInInventory("Sedan_02_Wheel");
1031 GetInventory().CreateInInventory("Sedan_02_Wheel");
1032 GetInventory().CreateInInventory("Sedan_02_Wheel");
1033 GetInventory().CreateInInventory("Sedan_02_Wheel");
1034 GetInventory().CreateInInventory("Sedan_02_Wheel");
1035
1036 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
1037 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
1038 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
1039 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
1040 GetInventory().CreateInInventory("Sedan_02_Hood");
1041 GetInventory().CreateInInventory("Sedan_02_Trunk");
1042
1043 //-----IN CAR CARGO
1044 GetInventory().CreateInInventory("Sedan_02_Wheel");
1045 GetInventory().CreateInInventory("Sedan_02_Wheel");
1046 }
1047}
1048
1049class Sedan_02_Red extends Sedan_02
1050{
1051 override void OnDebugSpawn()
1052 {
1056
1057 GetInventory().CreateInInventory("Sedan_02_Wheel");
1058 GetInventory().CreateInInventory("Sedan_02_Wheel");
1059 GetInventory().CreateInInventory("Sedan_02_Wheel");
1060 GetInventory().CreateInInventory("Sedan_02_Wheel");
1061
1062 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1063 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1064 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1065 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1066 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1067 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1068
1069 //-----IN CAR CARGO
1070 GetInventory().CreateInInventory("Sedan_02_Wheel");
1071 GetInventory().CreateInInventory("Sedan_02_Wheel");
1072 }
1073}
1074
1075class Sedan_02_Grey extends Sedan_02
1076{
1077 override void OnDebugSpawn()
1078 {
1082
1083 GetInventory().CreateInInventory("Sedan_02_Wheel");
1084 GetInventory().CreateInInventory("Sedan_02_Wheel");
1085 GetInventory().CreateInInventory("Sedan_02_Wheel");
1086 GetInventory().CreateInInventory("Sedan_02_Wheel");
1087
1088 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1089 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1090 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1091 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1092 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1093 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1094
1095 //-----IN CAR CARGO
1096 GetInventory().CreateInInventory("Sedan_02_Wheel");
1097 GetInventory().CreateInInventory("Sedan_02_Wheel");
1098 }
1099}

Используется в CarScript::CanDisplayAttachmentCategory(), CarScript::CanDisplayCargo(), CarScript::CanManipulateSpareWheel(), CarScript::CanReleaseAttachment(), CarScript::CrewCanGetThrough() и CarScript::OnSound().

◆ GetDoorInvSlotNameFromSeatPos()

override string GetDoorInvSlotNameFromSeatPos ( int posIdx)
protected
712{
716
717 void Sedan_02()
718 {
719 m_dmgContactCoef = 0.0790;
720
721 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
722 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
723 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
724 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
725 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
726
727 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
728 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
729
730 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
731 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
732
733 SetEnginePos("0 0.7 -1.7");
734 }
735
736 override void EEInit()
737 {
738 super.EEInit();
739
740 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
741 {
743 m_UTSSettings.m_ManualUpdate = true;
744 m_UTSSettings.m_TemperatureMin = 0;
745 m_UTSSettings.m_TemperatureMax = 30;
746 m_UTSSettings.m_RangeFull = 0.5;
747 m_UTSSettings.m_RangeMax = 2;
748 m_UTSSettings.m_TemperatureCap = 25;
749
752 }
753 }
754
755 override void OnEngineStart()
756 {
757 super.OnEngineStart();
758
759 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
760 {
761 m_UTSource.SetDefferedActive(true, 20.0);
762 }
763 }
764
765 override void OnEngineStop()
766 {
767 super.OnEngineStop();
768
769 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
770 {
771 m_UTSource.SetDefferedActive(false, 10.0);
772 }
773 }
774
775 override void EOnPostSimulate(IEntity other, float timeSlice)
776 {
777 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
778 {
779 if (m_UTSource.IsActive())
780 {
782 }
783 }
784 }
785
786 override int GetAnimInstance()
787 {
788 return VehicleAnimInstances.S120;
789 }
790
791 override int GetSeatAnimationType(int posIdx)
792 {
793 switch (posIdx)
794 {
795 case 0:
796 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
797 case 1:
798 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
799 case 2:
800 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
801 case 3:
802 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
803 }
804
805 return 0;
806 }
807
808 // Override for car-specific light type
810 {
811 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
812 }
813
814 // Override for car-specific light type
816 {
817 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
818 }
819
821 {
822 if (!super.CanReleaseAttachment(attachment))
823 {
824 return false;
825 }
826
827 string attType = attachment.GetType();
828 switch (attType)
829 {
830 case "CarBattery":
831 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
832 {
833 return false;
834 }
835 break;
836
837 case "SparkPlug":
838 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
839 {
840 return false;
841 }
842 break;
843
844 case "CarRadiator":
845 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
846 {
847 return false;
848 }
849 break;
850 }
851
852 return true;
853 }
854
855 override protected bool CanManipulateSpareWheel(string slotSelectionName)
856 {
857 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
858 }
859
860 override bool CanDisplayAttachmentCategory(string category_name)
861 {
862 if ( !super.CanDisplayAttachmentCategory(category_name))
863 {
864 return false;
865 }
866
867 category_name.ToLower();
868 if (category_name.Contains("engine"))
869 {
870 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
871 {
872 return false;
873 }
874 }
875
876 if (category_name.Contains("trunk"))
877 {
878 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
879 {
880 return false;
881 }
882 }
883
884 return true;
885 }
886
887 override bool CanDisplayCargo()
888 {
889 if ( !super.CanDisplayCargo() )
890 return false;
891
892 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
893 return false;
894
895 return true;
896 }
897
898 override int GetCarDoorsState(string slotType)
899 {
901
902 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
903 if (!carDoor)
904 {
905 return CarDoorState.DOORS_MISSING;
906 }
907
908 switch (slotType)
909 {
910 case "Sedan_02_Door_1_1":
911 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
912
913 case "Sedan_02_Door_2_1":
914 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
915
916 case "Sedan_02_Door_1_2":
917 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
918
919 case "Sedan_02_Door_2_2":
920 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
921
922 case "Sedan_02_Hood":
923 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
924
925 case "Sedan_02_Trunk":
926 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
927 }
928
929 return CarDoorState.DOORS_MISSING;
930 }
931
932
933 override bool CrewCanGetThrough( int posIdx )
934 {
935 switch( posIdx )
936 {
937 case 0:
938 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
939 return false;
940
941 return true;
942 break;
943
944 case 1:
945 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
946 return false;
947
948 return true;
949 break;
950
951 case 2:
952 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
953 return false;
954
955 return true;
956 break;
957
958 case 3:
959 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
960 return false;
961
962 return true;
963 break;
964 }
965
966 return false;
967 }
968
969 override string GetDoorSelectionNameFromSeatPos(int posIdx)
970 {
971 switch( posIdx )
972 {
973 case 0:
974 return "doors_driver";
975 break;
976 case 1:
977 return "doors_codriver";
978 break;
979 case 2:
980 return "doors_cargo1";
981 break;
982 case 3:
983 return "doors_cargo2";
984 break;
985 }
986
987 return super.GetDoorSelectionNameFromSeatPos(posIdx);
988 }
989
990 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
991 {
992 switch( posIdx )
993 {
994 case 0:
995 return "Sedan_02_Door_1_1";
996 break;
997 case 1:
998 return "Sedan_02_Door_2_1";
999 break;
1000 case 2:
1001 return "Sedan_02_Door_1_2";
1002 break;
1003 case 3:
1004 return "Sedan_02_Door_2_2";
1005 break;
1006 }
1007
1008 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
1009 }
1010
1011 override float OnSound(CarSoundCtrl ctrl, float oldValue)
1012 {
1013 switch ( ctrl )
1014 {
1015 case CarSoundCtrl.DOORS:
1016 float newValue = 0;
1017 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
1018 {
1019 newValue += 0.25;
1020 }
1021
1022 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
1023 {
1024 newValue += 0.25;
1025 }
1026
1027 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
1028 {
1029 newValue += 0.25;
1030 }
1031
1032 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
1033 {
1034 newValue += 0.25;
1035 }
1036
1037 return Math.Clamp(newValue, 0, 1);
1038 break;
1039 }
1040
1041 return super.OnSound(ctrl, oldValue);
1042 }
1043
1044 override string GetAnimSourceFromSelection( string selection )
1045 {
1046 switch( selection )
1047 {
1048 case "doors_driver":
1049 return "DoorsDriver";
1050 case "doors_codriver":
1051 return "DoorsCoDriver";
1052 case "doors_cargo1":
1053 return "DoorsCargo1";
1054 case "doors_cargo2":
1055 return "DoorsCargo2";
1056 case "doors_hood":
1057 return "DoorsHood";
1058 case "doors_trunk":
1059 return "DoorsTrunk";
1060 }
1061
1062 return "";
1063 }
1064
1065
1066 override bool IsVitalTruckBattery()
1067 {
1068 return false;
1069 }
1070
1071 override bool IsVitalGlowPlug()
1072 {
1073 return false;
1074 }
1075
1076 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
1077 {
1078 switch (currentSeat)
1079 {
1080 case 0:
1081 return nextSeat == 1;
1082
1083 case 1:
1084 return nextSeat == 0;
1085
1086 case 2:
1087 return nextSeat == 3;
1088
1089 case 3:
1090 return nextSeat == 2;
1091 }
1092
1093 return false;
1094 }
1095
1096 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
1097 {
1098 switch (pCurrentSeat)
1099 {
1100 case 0:
1101 return pDoorsSelection == "DoorsDriver";
1102
1103 case 1:
1104 return pDoorsSelection == "DoorsCoDriver";
1105
1106 case 2:
1107 return pDoorsSelection == "DoorsCargo1";
1108
1109 case 3:
1110 return pDoorsSelection == "DoorsCargo2";
1111 }
1112
1113 return false;
1114 }
1115
1116 override void OnDebugSpawn()
1117 {
1121
1122 GetInventory().CreateInInventory("Sedan_02_Wheel");
1123 GetInventory().CreateInInventory("Sedan_02_Wheel");
1124 GetInventory().CreateInInventory("Sedan_02_Wheel");
1125 GetInventory().CreateInInventory("Sedan_02_Wheel");
1126 GetInventory().CreateInInventory("Sedan_02_Wheel");
1127
1128 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
1129 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
1130 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
1131 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
1132 GetInventory().CreateInInventory("Sedan_02_Hood");
1133 GetInventory().CreateInInventory("Sedan_02_Trunk");
1134
1135 //-----IN CAR CARGO
1136 GetInventory().CreateInInventory("Sedan_02_Wheel");
1137 GetInventory().CreateInInventory("Sedan_02_Wheel");
1138 }
1139}
1140
1141class Sedan_02_Red extends Sedan_02
1142{
1143 override void OnDebugSpawn()
1144 {
1148
1149 GetInventory().CreateInInventory("Sedan_02_Wheel");
1150 GetInventory().CreateInInventory("Sedan_02_Wheel");
1151 GetInventory().CreateInInventory("Sedan_02_Wheel");
1152 GetInventory().CreateInInventory("Sedan_02_Wheel");
1153
1154 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1155 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1156 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1157 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1158 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1159 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1160
1161 //-----IN CAR CARGO
1162 GetInventory().CreateInInventory("Sedan_02_Wheel");
1163 GetInventory().CreateInInventory("Sedan_02_Wheel");
1164 }
1165}
1166
1167class Sedan_02_Grey extends Sedan_02
1168{
1169 override void OnDebugSpawn()
1170 {
1174
1175 GetInventory().CreateInInventory("Sedan_02_Wheel");
1176 GetInventory().CreateInInventory("Sedan_02_Wheel");
1177 GetInventory().CreateInInventory("Sedan_02_Wheel");
1178 GetInventory().CreateInInventory("Sedan_02_Wheel");
1179
1180 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1181 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1182 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1183 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1184 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1185 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1186
1187 //-----IN CAR CARGO
1188 GetInventory().CreateInInventory("Sedan_02_Wheel");
1189 GetInventory().CreateInInventory("Sedan_02_Wheel");
1190 }
1191}

◆ GetDoorSelectionNameFromSeatPos()

override string GetDoorSelectionNameFromSeatPos ( int posIdx)
protected
691{
695
696 void Sedan_02()
697 {
698 m_dmgContactCoef = 0.0790;
699
700 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
701 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
702 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
703 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
704 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
705
706 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
707 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
708
709 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
710 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
711
712 SetEnginePos("0 0.7 -1.7");
713 }
714
715 override void EEInit()
716 {
717 super.EEInit();
718
719 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
720 {
722 m_UTSSettings.m_ManualUpdate = true;
723 m_UTSSettings.m_TemperatureMin = 0;
724 m_UTSSettings.m_TemperatureMax = 30;
725 m_UTSSettings.m_RangeFull = 0.5;
726 m_UTSSettings.m_RangeMax = 2;
727 m_UTSSettings.m_TemperatureCap = 25;
728
731 }
732 }
733
734 override void OnEngineStart()
735 {
736 super.OnEngineStart();
737
738 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
739 {
740 m_UTSource.SetDefferedActive(true, 20.0);
741 }
742 }
743
744 override void OnEngineStop()
745 {
746 super.OnEngineStop();
747
748 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
749 {
750 m_UTSource.SetDefferedActive(false, 10.0);
751 }
752 }
753
754 override void EOnPostSimulate(IEntity other, float timeSlice)
755 {
756 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
757 {
758 if (m_UTSource.IsActive())
759 {
761 }
762 }
763 }
764
765 override int GetAnimInstance()
766 {
767 return VehicleAnimInstances.S120;
768 }
769
770 override int GetSeatAnimationType(int posIdx)
771 {
772 switch (posIdx)
773 {
774 case 0:
775 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
776 case 1:
777 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
778 case 2:
779 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
780 case 3:
781 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
782 }
783
784 return 0;
785 }
786
787 // Override for car-specific light type
789 {
790 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
791 }
792
793 // Override for car-specific light type
795 {
796 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
797 }
798
800 {
801 if (!super.CanReleaseAttachment(attachment))
802 {
803 return false;
804 }
805
806 string attType = attachment.GetType();
807 switch (attType)
808 {
809 case "CarBattery":
810 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
811 {
812 return false;
813 }
814 break;
815
816 case "SparkPlug":
817 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
818 {
819 return false;
820 }
821 break;
822
823 case "CarRadiator":
824 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
825 {
826 return false;
827 }
828 break;
829 }
830
831 return true;
832 }
833
834 override protected bool CanManipulateSpareWheel(string slotSelectionName)
835 {
836 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
837 }
838
839 override bool CanDisplayAttachmentCategory(string category_name)
840 {
841 if ( !super.CanDisplayAttachmentCategory(category_name))
842 {
843 return false;
844 }
845
846 category_name.ToLower();
847 if (category_name.Contains("engine"))
848 {
849 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
850 {
851 return false;
852 }
853 }
854
855 if (category_name.Contains("trunk"))
856 {
857 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
858 {
859 return false;
860 }
861 }
862
863 return true;
864 }
865
866 override bool CanDisplayCargo()
867 {
868 if ( !super.CanDisplayCargo() )
869 return false;
870
871 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
872 return false;
873
874 return true;
875 }
876
877 override int GetCarDoorsState(string slotType)
878 {
880
881 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
882 if (!carDoor)
883 {
884 return CarDoorState.DOORS_MISSING;
885 }
886
887 switch (slotType)
888 {
889 case "Sedan_02_Door_1_1":
890 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
891
892 case "Sedan_02_Door_2_1":
893 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
894
895 case "Sedan_02_Door_1_2":
896 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
897
898 case "Sedan_02_Door_2_2":
899 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
900
901 case "Sedan_02_Hood":
902 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
903
904 case "Sedan_02_Trunk":
905 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
906 }
907
908 return CarDoorState.DOORS_MISSING;
909 }
910
911
912 override bool CrewCanGetThrough( int posIdx )
913 {
914 switch( posIdx )
915 {
916 case 0:
917 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
918 return false;
919
920 return true;
921 break;
922
923 case 1:
924 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
925 return false;
926
927 return true;
928 break;
929
930 case 2:
931 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
932 return false;
933
934 return true;
935 break;
936
937 case 3:
938 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
939 return false;
940
941 return true;
942 break;
943 }
944
945 return false;
946 }
947
948 override string GetDoorSelectionNameFromSeatPos(int posIdx)
949 {
950 switch( posIdx )
951 {
952 case 0:
953 return "doors_driver";
954 break;
955 case 1:
956 return "doors_codriver";
957 break;
958 case 2:
959 return "doors_cargo1";
960 break;
961 case 3:
962 return "doors_cargo2";
963 break;
964 }
965
966 return super.GetDoorSelectionNameFromSeatPos(posIdx);
967 }
968
969 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
970 {
971 switch( posIdx )
972 {
973 case 0:
974 return "Sedan_02_Door_1_1";
975 break;
976 case 1:
977 return "Sedan_02_Door_2_1";
978 break;
979 case 2:
980 return "Sedan_02_Door_1_2";
981 break;
982 case 3:
983 return "Sedan_02_Door_2_2";
984 break;
985 }
986
987 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
988 }
989
990 override float OnSound(CarSoundCtrl ctrl, float oldValue)
991 {
992 switch ( ctrl )
993 {
994 case CarSoundCtrl.DOORS:
995 float newValue = 0;
996 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
997 {
998 newValue += 0.25;
999 }
1000
1001 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
1002 {
1003 newValue += 0.25;
1004 }
1005
1006 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
1007 {
1008 newValue += 0.25;
1009 }
1010
1011 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
1012 {
1013 newValue += 0.25;
1014 }
1015
1016 return Math.Clamp(newValue, 0, 1);
1017 break;
1018 }
1019
1020 return super.OnSound(ctrl, oldValue);
1021 }
1022
1023 override string GetAnimSourceFromSelection( string selection )
1024 {
1025 switch( selection )
1026 {
1027 case "doors_driver":
1028 return "DoorsDriver";
1029 case "doors_codriver":
1030 return "DoorsCoDriver";
1031 case "doors_cargo1":
1032 return "DoorsCargo1";
1033 case "doors_cargo2":
1034 return "DoorsCargo2";
1035 case "doors_hood":
1036 return "DoorsHood";
1037 case "doors_trunk":
1038 return "DoorsTrunk";
1039 }
1040
1041 return "";
1042 }
1043
1044
1045 override bool IsVitalTruckBattery()
1046 {
1047 return false;
1048 }
1049
1050 override bool IsVitalGlowPlug()
1051 {
1052 return false;
1053 }
1054
1055 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
1056 {
1057 switch (currentSeat)
1058 {
1059 case 0:
1060 return nextSeat == 1;
1061
1062 case 1:
1063 return nextSeat == 0;
1064
1065 case 2:
1066 return nextSeat == 3;
1067
1068 case 3:
1069 return nextSeat == 2;
1070 }
1071
1072 return false;
1073 }
1074
1075 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
1076 {
1077 switch (pCurrentSeat)
1078 {
1079 case 0:
1080 return pDoorsSelection == "DoorsDriver";
1081
1082 case 1:
1083 return pDoorsSelection == "DoorsCoDriver";
1084
1085 case 2:
1086 return pDoorsSelection == "DoorsCargo1";
1087
1088 case 3:
1089 return pDoorsSelection == "DoorsCargo2";
1090 }
1091
1092 return false;
1093 }
1094
1095 override void OnDebugSpawn()
1096 {
1100
1101 GetInventory().CreateInInventory("Sedan_02_Wheel");
1102 GetInventory().CreateInInventory("Sedan_02_Wheel");
1103 GetInventory().CreateInInventory("Sedan_02_Wheel");
1104 GetInventory().CreateInInventory("Sedan_02_Wheel");
1105 GetInventory().CreateInInventory("Sedan_02_Wheel");
1106
1107 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
1108 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
1109 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
1110 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
1111 GetInventory().CreateInInventory("Sedan_02_Hood");
1112 GetInventory().CreateInInventory("Sedan_02_Trunk");
1113
1114 //-----IN CAR CARGO
1115 GetInventory().CreateInInventory("Sedan_02_Wheel");
1116 GetInventory().CreateInInventory("Sedan_02_Wheel");
1117 }
1118}
1119
1120class Sedan_02_Red extends Sedan_02
1121{
1122 override void OnDebugSpawn()
1123 {
1127
1128 GetInventory().CreateInInventory("Sedan_02_Wheel");
1129 GetInventory().CreateInInventory("Sedan_02_Wheel");
1130 GetInventory().CreateInInventory("Sedan_02_Wheel");
1131 GetInventory().CreateInInventory("Sedan_02_Wheel");
1132
1133 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1134 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1135 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1136 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1137 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1138 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1139
1140 //-----IN CAR CARGO
1141 GetInventory().CreateInInventory("Sedan_02_Wheel");
1142 GetInventory().CreateInInventory("Sedan_02_Wheel");
1143 }
1144}
1145
1146class Sedan_02_Grey extends Sedan_02
1147{
1148 override void OnDebugSpawn()
1149 {
1153
1154 GetInventory().CreateInInventory("Sedan_02_Wheel");
1155 GetInventory().CreateInInventory("Sedan_02_Wheel");
1156 GetInventory().CreateInInventory("Sedan_02_Wheel");
1157 GetInventory().CreateInInventory("Sedan_02_Wheel");
1158
1159 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1160 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1161 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1162 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1163 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1164 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1165
1166 //-----IN CAR CARGO
1167 GetInventory().CreateInInventory("Sedan_02_Wheel");
1168 GetInventory().CreateInInventory("Sedan_02_Wheel");
1169 }
1170}

◆ GetSeatAnimationType()

override int GetSeatAnimationType ( int posIdx)
protected
513{
517
518 void Sedan_02()
519 {
520 m_dmgContactCoef = 0.0790;
521
522 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
523 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
524 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
525 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
526 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
527
528 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
529 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
530
531 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
532 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
533
534 SetEnginePos("0 0.7 -1.7");
535 }
536
537 override void EEInit()
538 {
539 super.EEInit();
540
541 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
542 {
544 m_UTSSettings.m_ManualUpdate = true;
545 m_UTSSettings.m_TemperatureMin = 0;
546 m_UTSSettings.m_TemperatureMax = 30;
547 m_UTSSettings.m_RangeFull = 0.5;
548 m_UTSSettings.m_RangeMax = 2;
549 m_UTSSettings.m_TemperatureCap = 25;
550
553 }
554 }
555
556 override void OnEngineStart()
557 {
558 super.OnEngineStart();
559
560 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
561 {
562 m_UTSource.SetDefferedActive(true, 20.0);
563 }
564 }
565
566 override void OnEngineStop()
567 {
568 super.OnEngineStop();
569
570 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
571 {
572 m_UTSource.SetDefferedActive(false, 10.0);
573 }
574 }
575
576 override void EOnPostSimulate(IEntity other, float timeSlice)
577 {
578 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
579 {
580 if (m_UTSource.IsActive())
581 {
583 }
584 }
585 }
586
587 override int GetAnimInstance()
588 {
589 return VehicleAnimInstances.S120;
590 }
591
592 override int GetSeatAnimationType(int posIdx)
593 {
594 switch (posIdx)
595 {
596 case 0:
597 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
598 case 1:
599 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
600 case 2:
601 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
602 case 3:
603 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
604 }
605
606 return 0;
607 }
608
609 // Override for car-specific light type
611 {
612 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
613 }
614
615 // Override for car-specific light type
617 {
618 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
619 }
620
622 {
623 if (!super.CanReleaseAttachment(attachment))
624 {
625 return false;
626 }
627
628 string attType = attachment.GetType();
629 switch (attType)
630 {
631 case "CarBattery":
632 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
633 {
634 return false;
635 }
636 break;
637
638 case "SparkPlug":
639 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
640 {
641 return false;
642 }
643 break;
644
645 case "CarRadiator":
646 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
647 {
648 return false;
649 }
650 break;
651 }
652
653 return true;
654 }
655
656 override protected bool CanManipulateSpareWheel(string slotSelectionName)
657 {
658 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
659 }
660
661 override bool CanDisplayAttachmentCategory(string category_name)
662 {
663 if ( !super.CanDisplayAttachmentCategory(category_name))
664 {
665 return false;
666 }
667
668 category_name.ToLower();
669 if (category_name.Contains("engine"))
670 {
671 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
672 {
673 return false;
674 }
675 }
676
677 if (category_name.Contains("trunk"))
678 {
679 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
680 {
681 return false;
682 }
683 }
684
685 return true;
686 }
687
688 override bool CanDisplayCargo()
689 {
690 if ( !super.CanDisplayCargo() )
691 return false;
692
693 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
694 return false;
695
696 return true;
697 }
698
699 override int GetCarDoorsState(string slotType)
700 {
702
703 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
704 if (!carDoor)
705 {
706 return CarDoorState.DOORS_MISSING;
707 }
708
709 switch (slotType)
710 {
711 case "Sedan_02_Door_1_1":
712 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
713
714 case "Sedan_02_Door_2_1":
715 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
716
717 case "Sedan_02_Door_1_2":
718 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
719
720 case "Sedan_02_Door_2_2":
721 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
722
723 case "Sedan_02_Hood":
724 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
725
726 case "Sedan_02_Trunk":
727 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
728 }
729
730 return CarDoorState.DOORS_MISSING;
731 }
732
733
734 override bool CrewCanGetThrough( int posIdx )
735 {
736 switch( posIdx )
737 {
738 case 0:
739 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
740 return false;
741
742 return true;
743 break;
744
745 case 1:
746 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
747 return false;
748
749 return true;
750 break;
751
752 case 2:
753 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
754 return false;
755
756 return true;
757 break;
758
759 case 3:
760 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
761 return false;
762
763 return true;
764 break;
765 }
766
767 return false;
768 }
769
770 override string GetDoorSelectionNameFromSeatPos(int posIdx)
771 {
772 switch( posIdx )
773 {
774 case 0:
775 return "doors_driver";
776 break;
777 case 1:
778 return "doors_codriver";
779 break;
780 case 2:
781 return "doors_cargo1";
782 break;
783 case 3:
784 return "doors_cargo2";
785 break;
786 }
787
788 return super.GetDoorSelectionNameFromSeatPos(posIdx);
789 }
790
791 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
792 {
793 switch( posIdx )
794 {
795 case 0:
796 return "Sedan_02_Door_1_1";
797 break;
798 case 1:
799 return "Sedan_02_Door_2_1";
800 break;
801 case 2:
802 return "Sedan_02_Door_1_2";
803 break;
804 case 3:
805 return "Sedan_02_Door_2_2";
806 break;
807 }
808
809 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
810 }
811
812 override float OnSound(CarSoundCtrl ctrl, float oldValue)
813 {
814 switch ( ctrl )
815 {
816 case CarSoundCtrl.DOORS:
817 float newValue = 0;
818 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
819 {
820 newValue += 0.25;
821 }
822
823 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
824 {
825 newValue += 0.25;
826 }
827
828 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
829 {
830 newValue += 0.25;
831 }
832
833 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
834 {
835 newValue += 0.25;
836 }
837
838 return Math.Clamp(newValue, 0, 1);
839 break;
840 }
841
842 return super.OnSound(ctrl, oldValue);
843 }
844
845 override string GetAnimSourceFromSelection( string selection )
846 {
847 switch( selection )
848 {
849 case "doors_driver":
850 return "DoorsDriver";
851 case "doors_codriver":
852 return "DoorsCoDriver";
853 case "doors_cargo1":
854 return "DoorsCargo1";
855 case "doors_cargo2":
856 return "DoorsCargo2";
857 case "doors_hood":
858 return "DoorsHood";
859 case "doors_trunk":
860 return "DoorsTrunk";
861 }
862
863 return "";
864 }
865
866
867 override bool IsVitalTruckBattery()
868 {
869 return false;
870 }
871
872 override bool IsVitalGlowPlug()
873 {
874 return false;
875 }
876
877 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
878 {
879 switch (currentSeat)
880 {
881 case 0:
882 return nextSeat == 1;
883
884 case 1:
885 return nextSeat == 0;
886
887 case 2:
888 return nextSeat == 3;
889
890 case 3:
891 return nextSeat == 2;
892 }
893
894 return false;
895 }
896
897 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
898 {
899 switch (pCurrentSeat)
900 {
901 case 0:
902 return pDoorsSelection == "DoorsDriver";
903
904 case 1:
905 return pDoorsSelection == "DoorsCoDriver";
906
907 case 2:
908 return pDoorsSelection == "DoorsCargo1";
909
910 case 3:
911 return pDoorsSelection == "DoorsCargo2";
912 }
913
914 return false;
915 }
916
917 override void OnDebugSpawn()
918 {
922
923 GetInventory().CreateInInventory("Sedan_02_Wheel");
924 GetInventory().CreateInInventory("Sedan_02_Wheel");
925 GetInventory().CreateInInventory("Sedan_02_Wheel");
926 GetInventory().CreateInInventory("Sedan_02_Wheel");
927 GetInventory().CreateInInventory("Sedan_02_Wheel");
928
929 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
930 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
931 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
932 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
933 GetInventory().CreateInInventory("Sedan_02_Hood");
934 GetInventory().CreateInInventory("Sedan_02_Trunk");
935
936 //-----IN CAR CARGO
937 GetInventory().CreateInInventory("Sedan_02_Wheel");
938 GetInventory().CreateInInventory("Sedan_02_Wheel");
939 }
940}
941
942class Sedan_02_Red extends Sedan_02
943{
944 override void OnDebugSpawn()
945 {
949
950 GetInventory().CreateInInventory("Sedan_02_Wheel");
951 GetInventory().CreateInInventory("Sedan_02_Wheel");
952 GetInventory().CreateInInventory("Sedan_02_Wheel");
953 GetInventory().CreateInInventory("Sedan_02_Wheel");
954
955 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
956 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
957 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
958 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
959 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
960 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
961
962 //-----IN CAR CARGO
963 GetInventory().CreateInInventory("Sedan_02_Wheel");
964 GetInventory().CreateInInventory("Sedan_02_Wheel");
965 }
966}
967
968class Sedan_02_Grey extends Sedan_02
969{
970 override void OnDebugSpawn()
971 {
975
976 GetInventory().CreateInInventory("Sedan_02_Wheel");
977 GetInventory().CreateInInventory("Sedan_02_Wheel");
978 GetInventory().CreateInInventory("Sedan_02_Wheel");
979 GetInventory().CreateInInventory("Sedan_02_Wheel");
980
981 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
982 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
983 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
984 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
985 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
986 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
987
988 //-----IN CAR CARGO
989 GetInventory().CreateInInventory("Sedan_02_Wheel");
990 GetInventory().CreateInInventory("Sedan_02_Wheel");
991 }
992}

◆ IsVitalGlowPlug()

override bool IsVitalGlowPlug ( )
protected
793{
797
798 void Sedan_02()
799 {
800 m_dmgContactCoef = 0.0790;
801
802 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
803 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
804 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
805 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
806 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
807
808 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
809 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
810
811 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
812 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
813
814 SetEnginePos("0 0.7 -1.7");
815 }
816
817 override void EEInit()
818 {
819 super.EEInit();
820
821 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
822 {
824 m_UTSSettings.m_ManualUpdate = true;
825 m_UTSSettings.m_TemperatureMin = 0;
826 m_UTSSettings.m_TemperatureMax = 30;
827 m_UTSSettings.m_RangeFull = 0.5;
828 m_UTSSettings.m_RangeMax = 2;
829 m_UTSSettings.m_TemperatureCap = 25;
830
833 }
834 }
835
836 override void OnEngineStart()
837 {
838 super.OnEngineStart();
839
840 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
841 {
842 m_UTSource.SetDefferedActive(true, 20.0);
843 }
844 }
845
846 override void OnEngineStop()
847 {
848 super.OnEngineStop();
849
850 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
851 {
852 m_UTSource.SetDefferedActive(false, 10.0);
853 }
854 }
855
856 override void EOnPostSimulate(IEntity other, float timeSlice)
857 {
858 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
859 {
860 if (m_UTSource.IsActive())
861 {
863 }
864 }
865 }
866
867 override int GetAnimInstance()
868 {
869 return VehicleAnimInstances.S120;
870 }
871
872 override int GetSeatAnimationType(int posIdx)
873 {
874 switch (posIdx)
875 {
876 case 0:
877 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
878 case 1:
879 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
880 case 2:
881 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
882 case 3:
883 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
884 }
885
886 return 0;
887 }
888
889 // Override for car-specific light type
891 {
892 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
893 }
894
895 // Override for car-specific light type
897 {
898 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
899 }
900
902 {
903 if (!super.CanReleaseAttachment(attachment))
904 {
905 return false;
906 }
907
908 string attType = attachment.GetType();
909 switch (attType)
910 {
911 case "CarBattery":
912 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
913 {
914 return false;
915 }
916 break;
917
918 case "SparkPlug":
919 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
920 {
921 return false;
922 }
923 break;
924
925 case "CarRadiator":
926 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
927 {
928 return false;
929 }
930 break;
931 }
932
933 return true;
934 }
935
936 override protected bool CanManipulateSpareWheel(string slotSelectionName)
937 {
938 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
939 }
940
941 override bool CanDisplayAttachmentCategory(string category_name)
942 {
943 if ( !super.CanDisplayAttachmentCategory(category_name))
944 {
945 return false;
946 }
947
948 category_name.ToLower();
949 if (category_name.Contains("engine"))
950 {
951 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
952 {
953 return false;
954 }
955 }
956
957 if (category_name.Contains("trunk"))
958 {
959 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
960 {
961 return false;
962 }
963 }
964
965 return true;
966 }
967
968 override bool CanDisplayCargo()
969 {
970 if ( !super.CanDisplayCargo() )
971 return false;
972
973 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
974 return false;
975
976 return true;
977 }
978
979 override int GetCarDoorsState(string slotType)
980 {
982
983 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
984 if (!carDoor)
985 {
986 return CarDoorState.DOORS_MISSING;
987 }
988
989 switch (slotType)
990 {
991 case "Sedan_02_Door_1_1":
992 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
993
994 case "Sedan_02_Door_2_1":
995 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
996
997 case "Sedan_02_Door_1_2":
998 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
999
1000 case "Sedan_02_Door_2_2":
1001 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
1002
1003 case "Sedan_02_Hood":
1004 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
1005
1006 case "Sedan_02_Trunk":
1007 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
1008 }
1009
1010 return CarDoorState.DOORS_MISSING;
1011 }
1012
1013
1014 override bool CrewCanGetThrough( int posIdx )
1015 {
1016 switch( posIdx )
1017 {
1018 case 0:
1019 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
1020 return false;
1021
1022 return true;
1023 break;
1024
1025 case 1:
1026 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
1027 return false;
1028
1029 return true;
1030 break;
1031
1032 case 2:
1033 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
1034 return false;
1035
1036 return true;
1037 break;
1038
1039 case 3:
1040 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
1041 return false;
1042
1043 return true;
1044 break;
1045 }
1046
1047 return false;
1048 }
1049
1050 override string GetDoorSelectionNameFromSeatPos(int posIdx)
1051 {
1052 switch( posIdx )
1053 {
1054 case 0:
1055 return "doors_driver";
1056 break;
1057 case 1:
1058 return "doors_codriver";
1059 break;
1060 case 2:
1061 return "doors_cargo1";
1062 break;
1063 case 3:
1064 return "doors_cargo2";
1065 break;
1066 }
1067
1068 return super.GetDoorSelectionNameFromSeatPos(posIdx);
1069 }
1070
1071 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
1072 {
1073 switch( posIdx )
1074 {
1075 case 0:
1076 return "Sedan_02_Door_1_1";
1077 break;
1078 case 1:
1079 return "Sedan_02_Door_2_1";
1080 break;
1081 case 2:
1082 return "Sedan_02_Door_1_2";
1083 break;
1084 case 3:
1085 return "Sedan_02_Door_2_2";
1086 break;
1087 }
1088
1089 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
1090 }
1091
1092 override float OnSound(CarSoundCtrl ctrl, float oldValue)
1093 {
1094 switch ( ctrl )
1095 {
1096 case CarSoundCtrl.DOORS:
1097 float newValue = 0;
1098 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
1099 {
1100 newValue += 0.25;
1101 }
1102
1103 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
1104 {
1105 newValue += 0.25;
1106 }
1107
1108 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
1109 {
1110 newValue += 0.25;
1111 }
1112
1113 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
1114 {
1115 newValue += 0.25;
1116 }
1117
1118 return Math.Clamp(newValue, 0, 1);
1119 break;
1120 }
1121
1122 return super.OnSound(ctrl, oldValue);
1123 }
1124
1125 override string GetAnimSourceFromSelection( string selection )
1126 {
1127 switch( selection )
1128 {
1129 case "doors_driver":
1130 return "DoorsDriver";
1131 case "doors_codriver":
1132 return "DoorsCoDriver";
1133 case "doors_cargo1":
1134 return "DoorsCargo1";
1135 case "doors_cargo2":
1136 return "DoorsCargo2";
1137 case "doors_hood":
1138 return "DoorsHood";
1139 case "doors_trunk":
1140 return "DoorsTrunk";
1141 }
1142
1143 return "";
1144 }
1145
1146
1147 override bool IsVitalTruckBattery()
1148 {
1149 return false;
1150 }
1151
1152 override bool IsVitalGlowPlug()
1153 {
1154 return false;
1155 }
1156
1157 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
1158 {
1159 switch (currentSeat)
1160 {
1161 case 0:
1162 return nextSeat == 1;
1163
1164 case 1:
1165 return nextSeat == 0;
1166
1167 case 2:
1168 return nextSeat == 3;
1169
1170 case 3:
1171 return nextSeat == 2;
1172 }
1173
1174 return false;
1175 }
1176
1177 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
1178 {
1179 switch (pCurrentSeat)
1180 {
1181 case 0:
1182 return pDoorsSelection == "DoorsDriver";
1183
1184 case 1:
1185 return pDoorsSelection == "DoorsCoDriver";
1186
1187 case 2:
1188 return pDoorsSelection == "DoorsCargo1";
1189
1190 case 3:
1191 return pDoorsSelection == "DoorsCargo2";
1192 }
1193
1194 return false;
1195 }
1196
1197 override void OnDebugSpawn()
1198 {
1202
1203 GetInventory().CreateInInventory("Sedan_02_Wheel");
1204 GetInventory().CreateInInventory("Sedan_02_Wheel");
1205 GetInventory().CreateInInventory("Sedan_02_Wheel");
1206 GetInventory().CreateInInventory("Sedan_02_Wheel");
1207 GetInventory().CreateInInventory("Sedan_02_Wheel");
1208
1209 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
1210 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
1211 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
1212 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
1213 GetInventory().CreateInInventory("Sedan_02_Hood");
1214 GetInventory().CreateInInventory("Sedan_02_Trunk");
1215
1216 //-----IN CAR CARGO
1217 GetInventory().CreateInInventory("Sedan_02_Wheel");
1218 GetInventory().CreateInInventory("Sedan_02_Wheel");
1219 }
1220}
1221
1222class Sedan_02_Red extends Sedan_02
1223{
1224 override void OnDebugSpawn()
1225 {
1229
1230 GetInventory().CreateInInventory("Sedan_02_Wheel");
1231 GetInventory().CreateInInventory("Sedan_02_Wheel");
1232 GetInventory().CreateInInventory("Sedan_02_Wheel");
1233 GetInventory().CreateInInventory("Sedan_02_Wheel");
1234
1235 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1236 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1237 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1238 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1239 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1240 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1241
1242 //-----IN CAR CARGO
1243 GetInventory().CreateInInventory("Sedan_02_Wheel");
1244 GetInventory().CreateInInventory("Sedan_02_Wheel");
1245 }
1246}
1247
1248class Sedan_02_Grey extends Sedan_02
1249{
1250 override void OnDebugSpawn()
1251 {
1255
1256 GetInventory().CreateInInventory("Sedan_02_Wheel");
1257 GetInventory().CreateInInventory("Sedan_02_Wheel");
1258 GetInventory().CreateInInventory("Sedan_02_Wheel");
1259 GetInventory().CreateInInventory("Sedan_02_Wheel");
1260
1261 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1262 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1263 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1264 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1265 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1266 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1267
1268 //-----IN CAR CARGO
1269 GetInventory().CreateInInventory("Sedan_02_Wheel");
1270 GetInventory().CreateInInventory("Sedan_02_Wheel");
1271 }
1272}

◆ IsVitalTruckBattery()

override bool IsVitalTruckBattery ( )
protected
788{
792
793 void Sedan_02()
794 {
795 m_dmgContactCoef = 0.0790;
796
797 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
798 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
799 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
800 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
801 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
802
803 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
804 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
805
806 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
807 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
808
809 SetEnginePos("0 0.7 -1.7");
810 }
811
812 override void EEInit()
813 {
814 super.EEInit();
815
816 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
817 {
819 m_UTSSettings.m_ManualUpdate = true;
820 m_UTSSettings.m_TemperatureMin = 0;
821 m_UTSSettings.m_TemperatureMax = 30;
822 m_UTSSettings.m_RangeFull = 0.5;
823 m_UTSSettings.m_RangeMax = 2;
824 m_UTSSettings.m_TemperatureCap = 25;
825
828 }
829 }
830
831 override void OnEngineStart()
832 {
833 super.OnEngineStart();
834
835 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
836 {
837 m_UTSource.SetDefferedActive(true, 20.0);
838 }
839 }
840
841 override void OnEngineStop()
842 {
843 super.OnEngineStop();
844
845 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
846 {
847 m_UTSource.SetDefferedActive(false, 10.0);
848 }
849 }
850
851 override void EOnPostSimulate(IEntity other, float timeSlice)
852 {
853 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
854 {
855 if (m_UTSource.IsActive())
856 {
858 }
859 }
860 }
861
862 override int GetAnimInstance()
863 {
864 return VehicleAnimInstances.S120;
865 }
866
867 override int GetSeatAnimationType(int posIdx)
868 {
869 switch (posIdx)
870 {
871 case 0:
872 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
873 case 1:
874 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
875 case 2:
876 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
877 case 3:
878 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
879 }
880
881 return 0;
882 }
883
884 // Override for car-specific light type
886 {
887 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
888 }
889
890 // Override for car-specific light type
892 {
893 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
894 }
895
897 {
898 if (!super.CanReleaseAttachment(attachment))
899 {
900 return false;
901 }
902
903 string attType = attachment.GetType();
904 switch (attType)
905 {
906 case "CarBattery":
907 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
908 {
909 return false;
910 }
911 break;
912
913 case "SparkPlug":
914 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
915 {
916 return false;
917 }
918 break;
919
920 case "CarRadiator":
921 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
922 {
923 return false;
924 }
925 break;
926 }
927
928 return true;
929 }
930
931 override protected bool CanManipulateSpareWheel(string slotSelectionName)
932 {
933 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
934 }
935
936 override bool CanDisplayAttachmentCategory(string category_name)
937 {
938 if ( !super.CanDisplayAttachmentCategory(category_name))
939 {
940 return false;
941 }
942
943 category_name.ToLower();
944 if (category_name.Contains("engine"))
945 {
946 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
947 {
948 return false;
949 }
950 }
951
952 if (category_name.Contains("trunk"))
953 {
954 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
955 {
956 return false;
957 }
958 }
959
960 return true;
961 }
962
963 override bool CanDisplayCargo()
964 {
965 if ( !super.CanDisplayCargo() )
966 return false;
967
968 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
969 return false;
970
971 return true;
972 }
973
974 override int GetCarDoorsState(string slotType)
975 {
977
978 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
979 if (!carDoor)
980 {
981 return CarDoorState.DOORS_MISSING;
982 }
983
984 switch (slotType)
985 {
986 case "Sedan_02_Door_1_1":
987 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
988
989 case "Sedan_02_Door_2_1":
990 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
991
992 case "Sedan_02_Door_1_2":
993 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
994
995 case "Sedan_02_Door_2_2":
996 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
997
998 case "Sedan_02_Hood":
999 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
1000
1001 case "Sedan_02_Trunk":
1002 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
1003 }
1004
1005 return CarDoorState.DOORS_MISSING;
1006 }
1007
1008
1009 override bool CrewCanGetThrough( int posIdx )
1010 {
1011 switch( posIdx )
1012 {
1013 case 0:
1014 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
1015 return false;
1016
1017 return true;
1018 break;
1019
1020 case 1:
1021 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
1022 return false;
1023
1024 return true;
1025 break;
1026
1027 case 2:
1028 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
1029 return false;
1030
1031 return true;
1032 break;
1033
1034 case 3:
1035 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
1036 return false;
1037
1038 return true;
1039 break;
1040 }
1041
1042 return false;
1043 }
1044
1045 override string GetDoorSelectionNameFromSeatPos(int posIdx)
1046 {
1047 switch( posIdx )
1048 {
1049 case 0:
1050 return "doors_driver";
1051 break;
1052 case 1:
1053 return "doors_codriver";
1054 break;
1055 case 2:
1056 return "doors_cargo1";
1057 break;
1058 case 3:
1059 return "doors_cargo2";
1060 break;
1061 }
1062
1063 return super.GetDoorSelectionNameFromSeatPos(posIdx);
1064 }
1065
1066 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
1067 {
1068 switch( posIdx )
1069 {
1070 case 0:
1071 return "Sedan_02_Door_1_1";
1072 break;
1073 case 1:
1074 return "Sedan_02_Door_2_1";
1075 break;
1076 case 2:
1077 return "Sedan_02_Door_1_2";
1078 break;
1079 case 3:
1080 return "Sedan_02_Door_2_2";
1081 break;
1082 }
1083
1084 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
1085 }
1086
1087 override float OnSound(CarSoundCtrl ctrl, float oldValue)
1088 {
1089 switch ( ctrl )
1090 {
1091 case CarSoundCtrl.DOORS:
1092 float newValue = 0;
1093 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
1094 {
1095 newValue += 0.25;
1096 }
1097
1098 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
1099 {
1100 newValue += 0.25;
1101 }
1102
1103 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
1104 {
1105 newValue += 0.25;
1106 }
1107
1108 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
1109 {
1110 newValue += 0.25;
1111 }
1112
1113 return Math.Clamp(newValue, 0, 1);
1114 break;
1115 }
1116
1117 return super.OnSound(ctrl, oldValue);
1118 }
1119
1120 override string GetAnimSourceFromSelection( string selection )
1121 {
1122 switch( selection )
1123 {
1124 case "doors_driver":
1125 return "DoorsDriver";
1126 case "doors_codriver":
1127 return "DoorsCoDriver";
1128 case "doors_cargo1":
1129 return "DoorsCargo1";
1130 case "doors_cargo2":
1131 return "DoorsCargo2";
1132 case "doors_hood":
1133 return "DoorsHood";
1134 case "doors_trunk":
1135 return "DoorsTrunk";
1136 }
1137
1138 return "";
1139 }
1140
1141
1142 override bool IsVitalTruckBattery()
1143 {
1144 return false;
1145 }
1146
1147 override bool IsVitalGlowPlug()
1148 {
1149 return false;
1150 }
1151
1152 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
1153 {
1154 switch (currentSeat)
1155 {
1156 case 0:
1157 return nextSeat == 1;
1158
1159 case 1:
1160 return nextSeat == 0;
1161
1162 case 2:
1163 return nextSeat == 3;
1164
1165 case 3:
1166 return nextSeat == 2;
1167 }
1168
1169 return false;
1170 }
1171
1172 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
1173 {
1174 switch (pCurrentSeat)
1175 {
1176 case 0:
1177 return pDoorsSelection == "DoorsDriver";
1178
1179 case 1:
1180 return pDoorsSelection == "DoorsCoDriver";
1181
1182 case 2:
1183 return pDoorsSelection == "DoorsCargo1";
1184
1185 case 3:
1186 return pDoorsSelection == "DoorsCargo2";
1187 }
1188
1189 return false;
1190 }
1191
1192 override void OnDebugSpawn()
1193 {
1197
1198 GetInventory().CreateInInventory("Sedan_02_Wheel");
1199 GetInventory().CreateInInventory("Sedan_02_Wheel");
1200 GetInventory().CreateInInventory("Sedan_02_Wheel");
1201 GetInventory().CreateInInventory("Sedan_02_Wheel");
1202 GetInventory().CreateInInventory("Sedan_02_Wheel");
1203
1204 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
1205 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
1206 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
1207 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
1208 GetInventory().CreateInInventory("Sedan_02_Hood");
1209 GetInventory().CreateInInventory("Sedan_02_Trunk");
1210
1211 //-----IN CAR CARGO
1212 GetInventory().CreateInInventory("Sedan_02_Wheel");
1213 GetInventory().CreateInInventory("Sedan_02_Wheel");
1214 }
1215}
1216
1217class Sedan_02_Red extends Sedan_02
1218{
1219 override void OnDebugSpawn()
1220 {
1224
1225 GetInventory().CreateInInventory("Sedan_02_Wheel");
1226 GetInventory().CreateInInventory("Sedan_02_Wheel");
1227 GetInventory().CreateInInventory("Sedan_02_Wheel");
1228 GetInventory().CreateInInventory("Sedan_02_Wheel");
1229
1230 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1231 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1232 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1233 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1234 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1235 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1236
1237 //-----IN CAR CARGO
1238 GetInventory().CreateInInventory("Sedan_02_Wheel");
1239 GetInventory().CreateInInventory("Sedan_02_Wheel");
1240 }
1241}
1242
1243class Sedan_02_Grey extends Sedan_02
1244{
1245 override void OnDebugSpawn()
1246 {
1250
1251 GetInventory().CreateInInventory("Sedan_02_Wheel");
1252 GetInventory().CreateInInventory("Sedan_02_Wheel");
1253 GetInventory().CreateInInventory("Sedan_02_Wheel");
1254 GetInventory().CreateInInventory("Sedan_02_Wheel");
1255
1256 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1257 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1258 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1259 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1260 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1261 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1262
1263 //-----IN CAR CARGO
1264 GetInventory().CreateInInventory("Sedan_02_Wheel");
1265 GetInventory().CreateInInventory("Sedan_02_Wheel");
1266 }
1267}

◆ OnDebugSpawn()

class Sedan_02 extends CarScript OnDebugSpawn ( )
434 {
438
439 GetInventory().CreateInInventory("Sedan_02_Wheel");
440 GetInventory().CreateInInventory("Sedan_02_Wheel");
441 GetInventory().CreateInInventory("Sedan_02_Wheel");
442 GetInventory().CreateInInventory("Sedan_02_Wheel");
443
444 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
445 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
446 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
447 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
448 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
449 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
450
451 //-----IN CAR CARGO
452 GetInventory().CreateInInventory("Sedan_02_Wheel");
453 GetInventory().CreateInInventory("Sedan_02_Wheel");
454 }

Перекрестные ссылки m_UTSLEngine, m_UTSource и m_UTSSettings.

◆ OnEngineStart()

override void OnEngineStart ( )
protected

◆ OnEngineStop()

override void OnEngineStop ( )
protected
487{
491
492 void Sedan_02()
493 {
494 m_dmgContactCoef = 0.0790;
495
496 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
497 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
498 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
499 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
500 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
501
502 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
503 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
504
505 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
506 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
507
508 SetEnginePos("0 0.7 -1.7");
509 }
510
511 override void EEInit()
512 {
513 super.EEInit();
514
515 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
516 {
518 m_UTSSettings.m_ManualUpdate = true;
519 m_UTSSettings.m_TemperatureMin = 0;
520 m_UTSSettings.m_TemperatureMax = 30;
521 m_UTSSettings.m_RangeFull = 0.5;
522 m_UTSSettings.m_RangeMax = 2;
523 m_UTSSettings.m_TemperatureCap = 25;
524
527 }
528 }
529
530 override void OnEngineStart()
531 {
532 super.OnEngineStart();
533
534 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
535 {
536 m_UTSource.SetDefferedActive(true, 20.0);
537 }
538 }
539
540 override void OnEngineStop()
541 {
542 super.OnEngineStop();
543
544 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
545 {
546 m_UTSource.SetDefferedActive(false, 10.0);
547 }
548 }
549
550 override void EOnPostSimulate(IEntity other, float timeSlice)
551 {
552 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
553 {
554 if (m_UTSource.IsActive())
555 {
557 }
558 }
559 }
560
561 override int GetAnimInstance()
562 {
563 return VehicleAnimInstances.S120;
564 }
565
566 override int GetSeatAnimationType(int posIdx)
567 {
568 switch (posIdx)
569 {
570 case 0:
571 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
572 case 1:
573 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
574 case 2:
575 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
576 case 3:
577 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
578 }
579
580 return 0;
581 }
582
583 // Override for car-specific light type
585 {
586 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
587 }
588
589 // Override for car-specific light type
591 {
592 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
593 }
594
596 {
597 if (!super.CanReleaseAttachment(attachment))
598 {
599 return false;
600 }
601
602 string attType = attachment.GetType();
603 switch (attType)
604 {
605 case "CarBattery":
606 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
607 {
608 return false;
609 }
610 break;
611
612 case "SparkPlug":
613 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
614 {
615 return false;
616 }
617 break;
618
619 case "CarRadiator":
620 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
621 {
622 return false;
623 }
624 break;
625 }
626
627 return true;
628 }
629
630 override protected bool CanManipulateSpareWheel(string slotSelectionName)
631 {
632 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
633 }
634
635 override bool CanDisplayAttachmentCategory(string category_name)
636 {
637 if ( !super.CanDisplayAttachmentCategory(category_name))
638 {
639 return false;
640 }
641
642 category_name.ToLower();
643 if (category_name.Contains("engine"))
644 {
645 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
646 {
647 return false;
648 }
649 }
650
651 if (category_name.Contains("trunk"))
652 {
653 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
654 {
655 return false;
656 }
657 }
658
659 return true;
660 }
661
662 override bool CanDisplayCargo()
663 {
664 if ( !super.CanDisplayCargo() )
665 return false;
666
667 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
668 return false;
669
670 return true;
671 }
672
673 override int GetCarDoorsState(string slotType)
674 {
676
677 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
678 if (!carDoor)
679 {
680 return CarDoorState.DOORS_MISSING;
681 }
682
683 switch (slotType)
684 {
685 case "Sedan_02_Door_1_1":
686 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
687
688 case "Sedan_02_Door_2_1":
689 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
690
691 case "Sedan_02_Door_1_2":
692 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
693
694 case "Sedan_02_Door_2_2":
695 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
696
697 case "Sedan_02_Hood":
698 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
699
700 case "Sedan_02_Trunk":
701 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
702 }
703
704 return CarDoorState.DOORS_MISSING;
705 }
706
707
708 override bool CrewCanGetThrough( int posIdx )
709 {
710 switch( posIdx )
711 {
712 case 0:
713 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
714 return false;
715
716 return true;
717 break;
718
719 case 1:
720 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
721 return false;
722
723 return true;
724 break;
725
726 case 2:
727 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
728 return false;
729
730 return true;
731 break;
732
733 case 3:
734 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
735 return false;
736
737 return true;
738 break;
739 }
740
741 return false;
742 }
743
744 override string GetDoorSelectionNameFromSeatPos(int posIdx)
745 {
746 switch( posIdx )
747 {
748 case 0:
749 return "doors_driver";
750 break;
751 case 1:
752 return "doors_codriver";
753 break;
754 case 2:
755 return "doors_cargo1";
756 break;
757 case 3:
758 return "doors_cargo2";
759 break;
760 }
761
762 return super.GetDoorSelectionNameFromSeatPos(posIdx);
763 }
764
765 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
766 {
767 switch( posIdx )
768 {
769 case 0:
770 return "Sedan_02_Door_1_1";
771 break;
772 case 1:
773 return "Sedan_02_Door_2_1";
774 break;
775 case 2:
776 return "Sedan_02_Door_1_2";
777 break;
778 case 3:
779 return "Sedan_02_Door_2_2";
780 break;
781 }
782
783 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
784 }
785
786 override float OnSound(CarSoundCtrl ctrl, float oldValue)
787 {
788 switch ( ctrl )
789 {
790 case CarSoundCtrl.DOORS:
791 float newValue = 0;
792 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
793 {
794 newValue += 0.25;
795 }
796
797 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
798 {
799 newValue += 0.25;
800 }
801
802 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
803 {
804 newValue += 0.25;
805 }
806
807 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
808 {
809 newValue += 0.25;
810 }
811
812 return Math.Clamp(newValue, 0, 1);
813 break;
814 }
815
816 return super.OnSound(ctrl, oldValue);
817 }
818
819 override string GetAnimSourceFromSelection( string selection )
820 {
821 switch( selection )
822 {
823 case "doors_driver":
824 return "DoorsDriver";
825 case "doors_codriver":
826 return "DoorsCoDriver";
827 case "doors_cargo1":
828 return "DoorsCargo1";
829 case "doors_cargo2":
830 return "DoorsCargo2";
831 case "doors_hood":
832 return "DoorsHood";
833 case "doors_trunk":
834 return "DoorsTrunk";
835 }
836
837 return "";
838 }
839
840
841 override bool IsVitalTruckBattery()
842 {
843 return false;
844 }
845
846 override bool IsVitalGlowPlug()
847 {
848 return false;
849 }
850
851 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
852 {
853 switch (currentSeat)
854 {
855 case 0:
856 return nextSeat == 1;
857
858 case 1:
859 return nextSeat == 0;
860
861 case 2:
862 return nextSeat == 3;
863
864 case 3:
865 return nextSeat == 2;
866 }
867
868 return false;
869 }
870
871 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
872 {
873 switch (pCurrentSeat)
874 {
875 case 0:
876 return pDoorsSelection == "DoorsDriver";
877
878 case 1:
879 return pDoorsSelection == "DoorsCoDriver";
880
881 case 2:
882 return pDoorsSelection == "DoorsCargo1";
883
884 case 3:
885 return pDoorsSelection == "DoorsCargo2";
886 }
887
888 return false;
889 }
890
891 override void OnDebugSpawn()
892 {
896
897 GetInventory().CreateInInventory("Sedan_02_Wheel");
898 GetInventory().CreateInInventory("Sedan_02_Wheel");
899 GetInventory().CreateInInventory("Sedan_02_Wheel");
900 GetInventory().CreateInInventory("Sedan_02_Wheel");
901 GetInventory().CreateInInventory("Sedan_02_Wheel");
902
903 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
904 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
905 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
906 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
907 GetInventory().CreateInInventory("Sedan_02_Hood");
908 GetInventory().CreateInInventory("Sedan_02_Trunk");
909
910 //-----IN CAR CARGO
911 GetInventory().CreateInInventory("Sedan_02_Wheel");
912 GetInventory().CreateInInventory("Sedan_02_Wheel");
913 }
914}
915
916class Sedan_02_Red extends Sedan_02
917{
918 override void OnDebugSpawn()
919 {
923
924 GetInventory().CreateInInventory("Sedan_02_Wheel");
925 GetInventory().CreateInInventory("Sedan_02_Wheel");
926 GetInventory().CreateInInventory("Sedan_02_Wheel");
927 GetInventory().CreateInInventory("Sedan_02_Wheel");
928
929 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
930 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
931 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
932 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
933 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
934 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
935
936 //-----IN CAR CARGO
937 GetInventory().CreateInInventory("Sedan_02_Wheel");
938 GetInventory().CreateInInventory("Sedan_02_Wheel");
939 }
940}
941
942class Sedan_02_Grey extends Sedan_02
943{
944 override void OnDebugSpawn()
945 {
949
950 GetInventory().CreateInInventory("Sedan_02_Wheel");
951 GetInventory().CreateInInventory("Sedan_02_Wheel");
952 GetInventory().CreateInInventory("Sedan_02_Wheel");
953 GetInventory().CreateInInventory("Sedan_02_Wheel");
954
955 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
956 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
957 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
958 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
959 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
960 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
961
962 //-----IN CAR CARGO
963 GetInventory().CreateInInventory("Sedan_02_Wheel");
964 GetInventory().CreateInInventory("Sedan_02_Wheel");
965 }
966}

◆ OnSound()

override float OnSound ( CarSoundCtrl ctrl,
float oldValue )
protected
733{
737
738 void Sedan_02()
739 {
740 m_dmgContactCoef = 0.0790;
741
742 m_EngineStartOK = "Sedan_02_engine_start_SoundSet";
743 m_EngineStartBattery = "Sedan_02_engine_failed_start_battery_SoundSet";
744 m_EngineStartPlug = "Sedan_02_engine_failed_start_sparkplugs_SoundSet";
745 m_EngineStartFuel = "Sedan_02_engine_failed_start_fuel_SoundSet";
746 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
747
748 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
749 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
750
751 m_CarHornShortSoundName = "Sedan_02_Horn_Short_SoundSet";
752 m_CarHornLongSoundName = "Sedan_02_Horn_SoundSet";
753
754 SetEnginePos("0 0.7 -1.7");
755 }
756
757 override void EEInit()
758 {
759 super.EEInit();
760
761 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
762 {
764 m_UTSSettings.m_ManualUpdate = true;
765 m_UTSSettings.m_TemperatureMin = 0;
766 m_UTSSettings.m_TemperatureMax = 30;
767 m_UTSSettings.m_RangeFull = 0.5;
768 m_UTSSettings.m_RangeMax = 2;
769 m_UTSSettings.m_TemperatureCap = 25;
770
773 }
774 }
775
776 override void OnEngineStart()
777 {
778 super.OnEngineStart();
779
780 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
781 {
782 m_UTSource.SetDefferedActive(true, 20.0);
783 }
784 }
785
786 override void OnEngineStop()
787 {
788 super.OnEngineStop();
789
790 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
791 {
792 m_UTSource.SetDefferedActive(false, 10.0);
793 }
794 }
795
796 override void EOnPostSimulate(IEntity other, float timeSlice)
797 {
798 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
799 {
800 if (m_UTSource.IsActive())
801 {
803 }
804 }
805 }
806
807 override int GetAnimInstance()
808 {
809 return VehicleAnimInstances.S120;
810 }
811
812 override int GetSeatAnimationType(int posIdx)
813 {
814 switch (posIdx)
815 {
816 case 0:
817 return DayZPlayerConstants.VEHICLESEAT_DRIVER;
818 case 1:
819 return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
820 case 2:
821 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
822 case 3:
823 return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
824 }
825
826 return 0;
827 }
828
829 // Override for car-specific light type
831 {
832 return CarLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02FrontLight));
833 }
834
835 // Override for car-specific light type
837 {
838 return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Sedan_02RearLight));
839 }
840
842 {
843 if (!super.CanReleaseAttachment(attachment))
844 {
845 return false;
846 }
847
848 string attType = attachment.GetType();
849 switch (attType)
850 {
851 case "CarBattery":
852 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
853 {
854 return false;
855 }
856 break;
857
858 case "SparkPlug":
859 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED || EngineIsOn())
860 {
861 return false;
862 }
863 break;
864
865 case "CarRadiator":
866 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
867 {
868 return false;
869 }
870 break;
871 }
872
873 return true;
874 }
875
876 override protected bool CanManipulateSpareWheel(string slotSelectionName)
877 {
878 return GetCarDoorsState("Sedan_02_Hood") != CarDoorState.DOORS_CLOSED;
879 }
880
881 override bool CanDisplayAttachmentCategory(string category_name)
882 {
883 if ( !super.CanDisplayAttachmentCategory(category_name))
884 {
885 return false;
886 }
887
888 category_name.ToLower();
889 if (category_name.Contains("engine"))
890 {
891 if (GetCarDoorsState("Sedan_02_Trunk") == CarDoorState.DOORS_CLOSED)
892 {
893 return false;
894 }
895 }
896
897 if (category_name.Contains("trunk"))
898 {
899 if (GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED)
900 {
901 return false;
902 }
903 }
904
905 return true;
906 }
907
908 override bool CanDisplayCargo()
909 {
910 if ( !super.CanDisplayCargo() )
911 return false;
912
913 if ( GetCarDoorsState("Sedan_02_Hood") == CarDoorState.DOORS_CLOSED )
914 return false;
915
916 return true;
917 }
918
919 override int GetCarDoorsState(string slotType)
920 {
922
923 Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
924 if (!carDoor)
925 {
926 return CarDoorState.DOORS_MISSING;
927 }
928
929 switch (slotType)
930 {
931 case "Sedan_02_Door_1_1":
932 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
933
934 case "Sedan_02_Door_2_1":
935 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
936
937 case "Sedan_02_Door_1_2":
938 return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
939
940 case "Sedan_02_Door_2_2":
941 return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
942
943 case "Sedan_02_Hood":
944 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
945
946 case "Sedan_02_Trunk":
947 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
948 }
949
950 return CarDoorState.DOORS_MISSING;
951 }
952
953
954 override bool CrewCanGetThrough( int posIdx )
955 {
956 switch( posIdx )
957 {
958 case 0:
959 if ( GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
960 return false;
961
962 return true;
963 break;
964
965 case 1:
966 if ( GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
967 return false;
968
969 return true;
970 break;
971
972 case 2:
973 if ( GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
974 return false;
975
976 return true;
977 break;
978
979 case 3:
980 if ( GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
981 return false;
982
983 return true;
984 break;
985 }
986
987 return false;
988 }
989
990 override string GetDoorSelectionNameFromSeatPos(int posIdx)
991 {
992 switch( posIdx )
993 {
994 case 0:
995 return "doors_driver";
996 break;
997 case 1:
998 return "doors_codriver";
999 break;
1000 case 2:
1001 return "doors_cargo1";
1002 break;
1003 case 3:
1004 return "doors_cargo2";
1005 break;
1006 }
1007
1008 return super.GetDoorSelectionNameFromSeatPos(posIdx);
1009 }
1010
1011 override string GetDoorInvSlotNameFromSeatPos(int posIdx)
1012 {
1013 switch( posIdx )
1014 {
1015 case 0:
1016 return "Sedan_02_Door_1_1";
1017 break;
1018 case 1:
1019 return "Sedan_02_Door_2_1";
1020 break;
1021 case 2:
1022 return "Sedan_02_Door_1_2";
1023 break;
1024 case 3:
1025 return "Sedan_02_Door_2_2";
1026 break;
1027 }
1028
1029 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
1030 }
1031
1032 override float OnSound(CarSoundCtrl ctrl, float oldValue)
1033 {
1034 switch ( ctrl )
1035 {
1036 case CarSoundCtrl.DOORS:
1037 float newValue = 0;
1038 if (GetCarDoorsState("Sedan_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
1039 {
1040 newValue += 0.25;
1041 }
1042
1043 if (GetCarDoorsState("Sedan_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
1044 {
1045 newValue += 0.25;
1046 }
1047
1048 if (GetCarDoorsState("Sedan_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
1049 {
1050 newValue += 0.25;
1051 }
1052
1053 if (GetCarDoorsState("Sedan_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
1054 {
1055 newValue += 0.25;
1056 }
1057
1058 return Math.Clamp(newValue, 0, 1);
1059 break;
1060 }
1061
1062 return super.OnSound(ctrl, oldValue);
1063 }
1064
1065 override string GetAnimSourceFromSelection( string selection )
1066 {
1067 switch( selection )
1068 {
1069 case "doors_driver":
1070 return "DoorsDriver";
1071 case "doors_codriver":
1072 return "DoorsCoDriver";
1073 case "doors_cargo1":
1074 return "DoorsCargo1";
1075 case "doors_cargo2":
1076 return "DoorsCargo2";
1077 case "doors_hood":
1078 return "DoorsHood";
1079 case "doors_trunk":
1080 return "DoorsTrunk";
1081 }
1082
1083 return "";
1084 }
1085
1086
1087 override bool IsVitalTruckBattery()
1088 {
1089 return false;
1090 }
1091
1092 override bool IsVitalGlowPlug()
1093 {
1094 return false;
1095 }
1096
1097 override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
1098 {
1099 switch (currentSeat)
1100 {
1101 case 0:
1102 return nextSeat == 1;
1103
1104 case 1:
1105 return nextSeat == 0;
1106
1107 case 2:
1108 return nextSeat == 3;
1109
1110 case 3:
1111 return nextSeat == 2;
1112 }
1113
1114 return false;
1115 }
1116
1117 override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
1118 {
1119 switch (pCurrentSeat)
1120 {
1121 case 0:
1122 return pDoorsSelection == "DoorsDriver";
1123
1124 case 1:
1125 return pDoorsSelection == "DoorsCoDriver";
1126
1127 case 2:
1128 return pDoorsSelection == "DoorsCargo1";
1129
1130 case 3:
1131 return pDoorsSelection == "DoorsCargo2";
1132 }
1133
1134 return false;
1135 }
1136
1137 override void OnDebugSpawn()
1138 {
1142
1143 GetInventory().CreateInInventory("Sedan_02_Wheel");
1144 GetInventory().CreateInInventory("Sedan_02_Wheel");
1145 GetInventory().CreateInInventory("Sedan_02_Wheel");
1146 GetInventory().CreateInInventory("Sedan_02_Wheel");
1147 GetInventory().CreateInInventory("Sedan_02_Wheel");
1148
1149 GetInventory().CreateInInventory("Sedan_02_Door_1_1");
1150 GetInventory().CreateInInventory("Sedan_02_Door_1_2");
1151 GetInventory().CreateInInventory("Sedan_02_Door_2_1");
1152 GetInventory().CreateInInventory("Sedan_02_Door_2_2");
1153 GetInventory().CreateInInventory("Sedan_02_Hood");
1154 GetInventory().CreateInInventory("Sedan_02_Trunk");
1155
1156 //-----IN CAR CARGO
1157 GetInventory().CreateInInventory("Sedan_02_Wheel");
1158 GetInventory().CreateInInventory("Sedan_02_Wheel");
1159 }
1160}
1161
1162class Sedan_02_Red extends Sedan_02
1163{
1164 override void OnDebugSpawn()
1165 {
1169
1170 GetInventory().CreateInInventory("Sedan_02_Wheel");
1171 GetInventory().CreateInInventory("Sedan_02_Wheel");
1172 GetInventory().CreateInInventory("Sedan_02_Wheel");
1173 GetInventory().CreateInInventory("Sedan_02_Wheel");
1174
1175 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Red");
1176 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Red");
1177 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Red");
1178 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Red");
1179 GetInventory().CreateInInventory("Sedan_02_Hood_Red");
1180 GetInventory().CreateInInventory("Sedan_02_Trunk_Red");
1181
1182 //-----IN CAR CARGO
1183 GetInventory().CreateInInventory("Sedan_02_Wheel");
1184 GetInventory().CreateInInventory("Sedan_02_Wheel");
1185 }
1186}
1187
1188class Sedan_02_Grey extends Sedan_02
1189{
1190 override void OnDebugSpawn()
1191 {
1195
1196 GetInventory().CreateInInventory("Sedan_02_Wheel");
1197 GetInventory().CreateInInventory("Sedan_02_Wheel");
1198 GetInventory().CreateInInventory("Sedan_02_Wheel");
1199 GetInventory().CreateInInventory("Sedan_02_Wheel");
1200
1201 GetInventory().CreateInInventory("Sedan_02_Door_1_1_Grey");
1202 GetInventory().CreateInInventory("Sedan_02_Door_1_2_Grey");
1203 GetInventory().CreateInInventory("Sedan_02_Door_2_1_Grey");
1204 GetInventory().CreateInInventory("Sedan_02_Door_2_2_Grey");
1205 GetInventory().CreateInInventory("Sedan_02_Hood_Grey");
1206 GetInventory().CreateInInventory("Sedan_02_Trunk_Grey");
1207
1208 //-----IN CAR CARGO
1209 GetInventory().CreateInInventory("Sedan_02_Wheel");
1210 GetInventory().CreateInInventory("Sedan_02_Wheel");
1211 }
1212}

◆ Sedan_02()

void Sedan_02 ( )
protected

Переменные

◆ m_UTSLEngine

◆ m_UTSource

◆ m_UTSSettings