DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ ProcessDecay()

override void Edible_Base::ProcessDecay ( float delta,
bool hasRootAsPlayer )
inlineprotected

См. определение в файле Edible_Base.c строка 740

741 {
742 m_DecayDelta = 0.0;
743
744 delta *= DayZGame.Cast(GetGame()).GetFoodDecayModifier();
745 m_DecayDelta += ( 1 + ( 1 - GetHealth01( "", "" ) ) );
746 if ( hasRootAsPlayer )
747 m_DecayDelta += GameConstants.DECAY_RATE_ON_PLAYER;
748
749 /*Print( "-------------------------" );
750 Print( this );
751 Print( m_DecayTimer );
752 Print( m_DecayDelta );
753 Print( m_LastDecayStage );*/
754
755 if ( IsFruit() || IsMushroom() )
756 {
757 // fruit, vegetables and mushrooms
759 {
760 switch ( GetFoodStageType() )
761 {
762 case FoodStageType.RAW:
763 m_DecayTimer = ( GameConstants.DECAY_FOOD_RAW_FRVG + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_RAW_FRVG * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
765 break;
766
767 case FoodStageType.BOILED:
768 m_DecayTimer = ( GameConstants.DECAY_FOOD_BOILED_FRVG + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_BOILED_FRVG * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
770 break;
771
772 case FoodStageType.BAKED:
773 m_DecayTimer = ( GameConstants.DECAY_FOOD_BAKED_FRVG + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_BAKED_FRVG * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
775 break;
776
777 case FoodStageType.DRIED:
778 case FoodStageType.BURNED:
779 case FoodStageType.ROTTEN:
780 default:
781 m_DecayTimer = -1;
783 return;
784 }
785
786 //m_DecayTimer = m_DecayTimer / 1000.0;
787 }
788
789 m_DecayTimer -= ( delta * m_DecayDelta );
790
791 if ( m_DecayTimer <= 0 )
792 {
793 if ( m_LastDecayStage != FoodStageType.NONE )
794 {
795 // switch to decayed stage
796 if ( ( m_LastDecayStage == FoodStageType.BOILED ) || ( m_LastDecayStage == FoodStageType.BAKED ) )
797 {
799 }
800 if ( m_LastDecayStage == FoodStageType.RAW )
801 {
802 int rng = Math.RandomIntInclusive( 0, 100 );
803 if ( rng > GameConstants.DECAY_FOOD_FRVG_DRIED_CHANCE )
804 {
806 }
807 else
808 {
809 if ( CanChangeToNewStage( FoodStageType.DRIED ) )
810 {
812 }
813 else
814 {
816 }
817 }
818 }
819 }
820 }
821
822 }
823 else if ( IsMeat() )
824 {
825 // meat
827 {
828 switch ( GetFoodStageType() )
829 {
830 case FoodStageType.RAW:
831 m_DecayTimer = ( GameConstants.DECAY_FOOD_RAW_MEAT + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_RAW_MEAT * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
833 break;
834
835 case FoodStageType.BOILED:
836 m_DecayTimer = ( GameConstants.DECAY_FOOD_BOILED_MEAT + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_BOILED_MEAT * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
838 break;
839
840 case FoodStageType.BAKED:
841 m_DecayTimer = ( GameConstants.DECAY_FOOD_BAKED_MEAT + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_BAKED_MEAT * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
843 break;
844
845 case FoodStageType.DRIED:
846 m_DecayTimer = ( GameConstants.DECAY_FOOD_DRIED_MEAT + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_DRIED_MEAT * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
848 break;
849
850 case FoodStageType.BURNED:
851 case FoodStageType.ROTTEN:
852 default:
853 m_DecayTimer = -1;
855 return;
856 }
857 }
858
859 m_DecayTimer -= ( delta * m_DecayDelta );
860
861 if ( m_DecayTimer <= 0 )
862 {
863 if ( m_LastDecayStage != FoodStageType.NONE )
864 {
865 // switch to decayed stage
866 if ( ( m_LastDecayStage == FoodStageType.DRIED ) || ( m_LastDecayStage == FoodStageType.RAW ) || ( m_LastDecayStage == FoodStageType.BOILED ) || ( m_LastDecayStage == FoodStageType.BAKED ) )
867 {
869 }
870 }
871 }
872 }
873 else if ( IsCorpse() )
874 {
875 // corpse
877 {
878 switch ( GetFoodStageType() )
879 {
880 case FoodStageType.RAW:
881 m_DecayTimer = ( GameConstants.DECAY_FOOD_RAW_CORPSE + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_RAW_CORPSE * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
883 break;
884
885 case FoodStageType.BURNED:
886 case FoodStageType.ROTTEN:
887 default:
888 m_DecayTimer = -1;
890 return;
891 }
892 }
893
894 m_DecayTimer -= ( delta * m_DecayDelta );
895
896 if ( m_DecayTimer <= 0 )
897 {
898 if ( m_LastDecayStage != FoodStageType.NONE )
899 {
900 // switch to decayed stage
901 if ( ( m_LastDecayStage == FoodStageType.DRIED ) || ( m_LastDecayStage == FoodStageType.RAW ) || ( m_LastDecayStage == FoodStageType.BOILED ) || ( m_LastDecayStage == FoodStageType.BAKED ) )
902 {
904 }
905 }
906 }
907 }
908 else
909 {
910 // opened cans
911 m_DecayTimer -= ( delta * m_DecayDelta );
912
913 if ( ( m_DecayTimer <= 0 ) && ( m_LastDecayStage == FoodStageType.NONE ) )
914 {
915 m_DecayTimer = ( GameConstants.DECAY_FOOD_CAN_OPEN + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_DRIED_MEAT * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
917 //m_DecayTimer = m_DecayTimer / 1000.0;
918 }
919 else
920 {
921 if ( m_DecayTimer <= 0 )
922 {
923 InsertAgent(eAgents.FOOD_POISON, 1);
924 m_DecayTimer = -1;
925 }
926 }
927 }
928 }
eAgents
Определения EAgents.c:3
FoodStageType
Определения FoodStage.c:2
override void InsertAgent(int agent, float count=1)
Определения ItemBase.c:8653
FoodStageType GetFoodStageType()
Определения Edible_Base.c:531
float m_DecayDelta
Определения Edible_Base.c:19
override bool IsMushroom()
Определения Edible_Base.c:382
override bool IsFruit()
Определения Edible_Base.c:377
override bool IsCorpse()
Определения Edible_Base.c:372
override bool IsMeat()
Определения Edible_Base.c:367
float m_DecayTimer
Определения Edible_Base.c:18
void ChangeFoodStage(FoodStageType new_food_stage_type)
Определения Edible_Base.c:598
bool CanChangeToNewStage(CookingMethodType cooking_method)
Определения Edible_Base.c:613
FoodStageType m_LastDecayStage
Определения Edible_Base.c:20
proto native CGame GetGame()

Перекрестные ссылки CanChangeToNewStage(), ChangeFoodStage(), GameConstants::DECAY_FOOD_BAKED_FRVG, GameConstants::DECAY_FOOD_BAKED_MEAT, GameConstants::DECAY_FOOD_BOILED_FRVG, GameConstants::DECAY_FOOD_BOILED_MEAT, GameConstants::DECAY_FOOD_CAN_OPEN, GameConstants::DECAY_FOOD_DRIED_MEAT, GameConstants::DECAY_FOOD_FRVG_DRIED_CHANCE, GameConstants::DECAY_FOOD_RAW_CORPSE, GameConstants::DECAY_FOOD_RAW_FRVG, GameConstants::DECAY_FOOD_RAW_MEAT, GameConstants::DECAY_RATE_ON_PLAYER, GameConstants::DECAY_TIMER_RANDOM_PERCENTAGE, GetFoodStageType(), GetGame(), InsertAgent(), IsCorpse(), IsFruit(), IsMeat(), IsMushroom(), m_DecayDelta, m_DecayTimer, m_LastDecayStage, Math::RandomFloat01() и Math::RandomIntInclusive().