604{
622
624
625
626
627
628
630 {
631 m_Name = config_OnFire_entry;
632
633
635
636
638
639
641
643 if (
GetGame().ConfigIsExisting(
string.Format(
"%1 muzzleIndex",
m_Name)))
644 {
646 }
647
648
651
652
655
656
659
660 if (health_limit.Count() == 2)
661 {
664 }
665 else
666 {
667
670 }
671
672
675
676 if (overheat_limit.Count() == 2)
677 {
680 }
681 else
682 {
683
686 }
687
688
691
692 if (rain_limit.Count() == 2)
693 {
696 }
697 else
698 {
699
702 }
703
704
707
710
711
712 string particle_name = "";
714
715 if (particle_name != "")
716 {
718 }
719 else
720 {
722 ErrorEx(
string.Format(
"'%1' does not contain a definition for 'overrideparticle'",
724 }
725
726
729
731 {
732
734
736 {
738 }
739 }
740
741
744
745 if (v.Count() == 3)
746 {
747 float v1 = v.Get(0);
748 float v2 = v.Get(1);
749 float v3 = v.Get(2);
751 }
752 }
753
754
755
756
757
758
759
760
762 {
764 {
765
767 {
769 {
771 {
773 {
775 {
777 {
779 {
781 {
783 {
784
786
788 {
789
792
793
795
796
798 OnParticleCreated(weapon, ammoType, muzzle_owner, suppressor, config_to_search, p);
799 }
800 else
801 {
802 ErrorEx(
string.Format(
"No valid particle found for: '%1'",
m_Name));
803 }
804
805
807 {
808 vector global_pos = muzzle_owner.ModelToWorld(local_pos +
Vector(-0.2, 0, 0));
810 if ( randX > 8 )
812 else if ( randX > 4 )
814 else
816 }
817 }
818 }
819 }
820 }
821 }
822 }
823 }
824 }
825 }
826 }
827 }
828
830 {
831
832 }
833
835 {
836
837 }
838
840 {
841
842 }
843
844
845
846
847
848
849
850
852 {
854 {
858 }
859
860 return true;
861 }
862
863
865 {
867 }
868
869
871 {
873 }
874
875
877 {
879 }
880
881
883 {
885
886 string particle_file = "";
887 string cfg_path = "CfgAmmo " + ammoType + " muzzleFlashParticle";
888 if (
GetGame().ConfigGetText( cfg_path, particle_file))
890
891
892
894 {
895 if (particle_file == "")
896 {
897 ErrorEx(
string.Format(
"Cannot spawn particle effect because item %1 is missing config parameter muzzleFlashParticle!", ammoType),
ErrorExSeverity.INFO);
898 }
899 else
900 {
902
904 {
905 string devStr;
906 #ifdef DEVELOPER
907 devStr = " Make sure it's registered there and then rebuild Scripts and Graphics PBOs.";
908 #endif
909 ErrorEx(
string.Format(
"Cannot play particle effect with name %1 because no such file is registered in ParticleList.c!%2", particle_file, devStr));
911 }
912 }
913 }
914 else
915 {
917 }
918
920 }
921
922
924 {
925 vector particle_ori =
"0 0 0";
927 {
931 }
932 else
933 {
935 {
937 }
938
940 {
941 particle_ori = particle_ori +
Vector(0,0,270);
942 }
943 }
944
945 return particle_ori;
946 }
947}
948
949
951
952
954
955
957{
959 {
961 }
962
964 {
966 {
967 weapon.KillAllOverheatingParticles();
968 }
969 }
970
972 {
973 OnActivate(weapon, 0, ammoType, muzzle_owner, suppressor, config_to_search);
974 }
975}
976
978{
984
987
989 {
991 }
992
994 {
996 }
997
999 {
1001 }
1002
1004 {
1006 }
1007
1009 {
1011 }
1012
1014 {
1016 }
1017
1019 {
1024 }
1025
1027 {
1029 }
1030
1032 {
1034 }
1035
1037 {
1039 }
1040
1042 {
1044 }
1045}
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].