599{
617
619
620
621
622
623
625 {
626 m_Name = config_OnFire_entry;
627
628
630
631
633
634
636
638 if (
GetGame().ConfigIsExisting(
string.Format(
"%1 muzzleIndex",
m_Name)))
639 {
641 }
642
643
646
647
650
651
654
655 if (health_limit.Count() == 2)
656 {
659 }
660 else
661 {
662
665 }
666
667
670
671 if (overheat_limit.Count() == 2)
672 {
675 }
676 else
677 {
678
681 }
682
683
686
687 if (rain_limit.Count() == 2)
688 {
691 }
692 else
693 {
694
697 }
698
699
702
705
706
707 string particle_name = "";
709
710 if (particle_name != "")
711 {
713 }
714 else
715 {
717 ErrorEx(
string.Format(
"'%1' does not contain a definition for 'overrideparticle'",
719 }
720
721
724
726 {
727
729
731 {
733 }
734 }
735
736
739
740 if (v.Count() == 3)
741 {
742 float v1 = v.Get(0);
743 float v2 = v.Get(1);
744 float v3 = v.Get(2);
746 }
747 }
748
749
750
751
752
753
754
755
757 {
759 {
760
762 {
764 {
766 {
768 {
770 {
772 {
774 {
776 {
778 {
779
781
783 {
784
787
788
790
791
793 OnParticleCreated(weapon, ammoType, muzzle_owner, suppressor, config_to_search, p);
794 }
795 else
796 {
797 ErrorEx(
string.Format(
"No valid particle found for: '%1'",
m_Name));
798 }
799
800
802 {
803 vector global_pos = muzzle_owner.ModelToWorld(local_pos +
Vector(-0.2, 0, 0));
805 if ( randX > 8 )
807 else if ( randX > 4 )
809 else
811 }
812 }
813 }
814 }
815 }
816 }
817 }
818 }
819 }
820 }
821 }
822 }
823
825 {
826
827 }
828
830 {
831
832 }
833
835 {
836
837 }
838
839
840
841
842
843
844
845
847 {
849 {
853 }
854
855 return true;
856 }
857
858
860 {
862 }
863
864
866 {
868 }
869
870
872 {
874 }
875
876
878 {
880
881 string particle_file = "";
882 string cfg_path = "CfgAmmo " + ammoType + " muzzleFlashParticle";
883 if (
GetGame().ConfigGetText( cfg_path, particle_file))
885
886
887
889 {
890 if (particle_file == "")
891 {
892 ErrorEx(
string.Format(
"Cannot spawn particle effect because item %1 is missing config parameter muzzleFlashParticle!", ammoType),
ErrorExSeverity.INFO);
893 }
894 else
895 {
897
899 {
900 string devStr;
901 #ifdef DEVELOPER
902 devStr = " Make sure it's registered there and then rebuild Scripts and Graphics PBOs.";
903 #endif
904 ErrorEx(
string.Format(
"Cannot play particle effect with name %1 because no such file is registered in ParticleList.c!%2", particle_file, devStr));
906 }
907 }
908 }
909 else
910 {
912 }
913
915 }
916
917
919 {
920 vector particle_ori =
"0 0 0";
922 {
926 }
927 else
928 {
930 {
932 }
933
935 {
936 particle_ori = particle_ori +
Vector(0,0,270);
937 }
938 }
939
940 return particle_ori;
941 }
942}
943
944
946
947
949
950
952{
954 {
956 }
957
959 {
961 {
962 weapon.KillAllOverheatingParticles();
963 }
964 }
965
967 {
968 OnActivate(weapon, 0, ammoType, muzzle_owner, suppressor, config_to_search);
969 }
970}
971
973{
979
982
984 {
986 }
987
989 {
991 }
992
994 {
996 }
997
999 {
1001 }
1002
1004 {
1006 }
1007
1009 {
1011 }
1012
1014 {
1019 }
1020
1022 {
1024 }
1025
1027 {
1029 }
1030
1032 {
1034 }
1035
1037 {
1039 }
1040}
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].