635{
653
655
656
657
658
659
661 {
662 m_Name = config_OnFire_entry;
663
664
666
667
669
670
672
674 if (
GetGame().ConfigIsExisting(
string.Format(
"%1 muzzleIndex",
m_Name)))
675 {
677 }
678
679
682
683
686
687
690
691 if (health_limit.Count() == 2)
692 {
695 }
696 else
697 {
698
701 }
702
703
706
707 if (overheat_limit.Count() == 2)
708 {
711 }
712 else
713 {
714
717 }
718
719
722
723 if (rain_limit.Count() == 2)
724 {
727 }
728 else
729 {
730
733 }
734
735
738
741
742
743 string particle_name = "";
745
746 if (particle_name != "")
747 {
749 }
750 else
751 {
753 ErrorEx(
string.Format(
"'%1' does not contain a definition for 'overrideparticle'",
755 }
756
757
760
762 {
763
765
767 {
769 }
770 }
771
772
775
776 if (v.Count() == 3)
777 {
778 float v1 = v.Get(0);
779 float v2 = v.Get(1);
780 float v3 = v.Get(2);
782 }
783 }
784
785
786
787
788
789
790
791
793 {
795 {
796
798 {
800 {
802 {
804 {
806 {
808 {
810 {
812 {
814 {
815
817
819 {
820
823
824
826
827
829 OnParticleCreated(weapon, ammoType, muzzle_owner, suppressor, config_to_search, p);
830 }
831 else
832 {
833 ErrorEx(
string.Format(
"No valid particle found for: '%1'",
m_Name));
834 }
835
836
838 {
839 vector global_pos = muzzle_owner.ModelToWorld(local_pos +
Vector(-0.2, 0, 0));
841 if ( randX > 8 )
843 else if ( randX > 4 )
845 else
847 }
848 }
849 }
850 }
851 }
852 }
853 }
854 }
855 }
856 }
857 }
858 }
859
861 {
862
863 }
864
866 {
867
868 }
869
871 {
872
873 }
874
875
876
877
878
879
880
881
883 {
885 {
889 }
890
891 return true;
892 }
893
894
896 {
898 }
899
900
902 {
904 }
905
906
908 {
910 }
911
912
914 {
916
917 string particle_file = "";
918 string cfg_path = "CfgAmmo " + ammoType + " muzzleFlashParticle";
919 if (
GetGame().ConfigGetText( cfg_path, particle_file))
921
922
923
925 {
926 if (particle_file == "")
927 {
928 ErrorEx(
string.Format(
"Cannot spawn particle effect because item %1 is missing config parameter muzzleFlashParticle!", ammoType),
ErrorExSeverity.INFO);
929 }
930 else
931 {
933
935 {
936 string devStr;
937 #ifdef DEVELOPER
938 devStr = " Make sure it's registered there and then rebuild Scripts and Graphics PBOs.";
939 #endif
940 ErrorEx(
string.Format(
"Cannot play particle effect with name %1 because no such file is registered in ParticleList.c!%2", particle_file, devStr));
942 }
943 }
944 }
945 else
946 {
948 }
949
951 }
952
953
955 {
956 vector particle_ori =
"0 0 0";
958 {
962 }
963 else
964 {
966 {
968 }
969
971 {
972 particle_ori = particle_ori +
Vector(0,0,270);
973 }
974 }
975
976 return particle_ori;
977 }
978}
979
980
982
983
985
986
988{
990 {
992 }
993
995 {
997 {
998 weapon.KillAllOverheatingParticles();
999 }
1000 }
1001
1003 {
1004 OnActivate(weapon, 0, ammoType, muzzle_owner, suppressor, config_to_search);
1005 }
1006}
1007
1009{
1015
1018
1020 {
1022 }
1023
1025 {
1027 }
1028
1030 {
1032 }
1033
1035 {
1037 }
1038
1040 {
1042 }
1043
1045 {
1047 }
1048
1050 {
1055 }
1056
1058 {
1060 }
1061
1063 {
1065 }
1066
1068 {
1070 }
1071
1073 {
1075 }
1076}
class GP5GasMask extends MaskBase ItemBase
void MuzzleFlashLight_1()
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
bool CheckRainCondition(float rain_coef)
void OnDeactivate(ItemBase weapon, string ammoType, ItemBase muzzle_owner, ItemBase suppressor, string config_to_search)
float m_OnlyWithinOverheatLimitsMin
vector m_OverrideDirectionVector
string m_OverrideDirectionPoint
float m_OnlyWithinRainLimitsMax
class WeaponParticlesBase OnParticleCreated(ItemBase weapon, string ammoType, ItemBase muzzle_owner, ItemBase suppressor, string config_to_search, Particle p)
void WeaponParticlesBase(ItemBase muzzle_owner, string config_OnFire_entry)
int CheckParticleOverride(string ammoType)
float m_OnlyWithinRainLimitsMin
vector CheckOrientationOverride(vector local_pos, ItemBase muzzle_owner)
bool CheckHealthCondition(int health_label)
bool m_IgnoreIfSuppressed
int m_OnlyWithinHealthLabelMin
bool CheckBoltStateCondition(ItemBase weapon)
float m_OnlyWithinOverheatLimitsMax
int m_OnlyWithinHealthLabelMax
bool CheckOverheatingCondition(float overheating_coef)
proto native vector ConfigGetVector(string path)
Get vector value from config on path.
proto native float ConfigGetFloat(string path)
Get float value from config on path.
proto native int ConfigGetInt(string path)
Get int value from config on path.
proto bool ConfigGetText(string path, out string value)
Get string value from config on path.
proto native void ConfigGetFloatArray(string path, out TFloatArray values)
Get array of floats from config on path.
float GetOverheatingLimitMax()
float m_OverheatingLimitMax
void SetOverheatingLimitMax(float max)
void SetParticleParams(int particle_id, Object parent, vector local_pos, vector local_ori)
Object GetParticleParent()
float GetOverheatingLimitMin()
float m_OverheatingLimitMin
void SetOverheatingLimitMin(float min)
void RegisterParticle(Particle p)
vector m_DefaultPos
Used for Wiggle API, to restore after unparenting.
vector m_DefaultOri
Used for Wiggle API, to restore after unparenting.
int GetParticleID()
Gets particle id.
Legacy way of using particles in the game.
static int GetParticleIDByName(string name)
Returns particle's ID based on the filename (without .ptc suffix)
static bool IsValidId(int id)
Purely checks for an invalid number, does NOT mean it is actually registered.
static bool m_GunParticlesState
void OnDeactivate(ItemBase weapon, string ammoType, ItemBase muzzle_owner, ItemBase suppressor, string config_to_search)
void OnParticleCreated(ItemBase weapon, string ammoType, ItemBase muzzle_owner, ItemBase suppressor, string config_to_search, Particle p)
represent weapon state base
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static vector Direction(vector p1, vector p2)
Returns direction vector from point p1 to point p2.
proto vector VectorToAngles()
Converts vector to spherical coordinates with radius = 1.
proto native CGame GetGame()
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
static proto int RandomInt(int min, int max)
Returns a random int number between and min [inclusive] and max [exclusive].