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

◆ ProcessDecay()

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

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

745 {
746 m_DecayDelta = 0.0;
747
748 delta *= DayZGame.Cast(g_Game).GetFoodDecayModifier();
749 m_DecayDelta += ( 1 + ( 1 - GetHealth01( "", "" ) ) );
750 if ( hasRootAsPlayer )
751 m_DecayDelta += GameConstants.DECAY_RATE_ON_PLAYER;
752
753 /*Print( "-------------------------" );
754 Print( this );
755 Print( m_DecayTimer );
756 Print( m_DecayDelta );
757 Print( m_LastDecayStage );*/
758
759 if ( IsFruit() || IsMushroom() )
760 {
761 // fruit, vegetables and mushrooms
763 {
764 switch ( GetFoodStageType() )
765 {
766 case FoodStageType.RAW:
767 m_DecayTimer = ( GameConstants.DECAY_FOOD_RAW_FRVG + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_RAW_FRVG * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
769 break;
770
771 case FoodStageType.BOILED:
772 m_DecayTimer = ( GameConstants.DECAY_FOOD_BOILED_FRVG + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_BOILED_FRVG * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
774 break;
775
776 case FoodStageType.BAKED:
777 m_DecayTimer = ( GameConstants.DECAY_FOOD_BAKED_FRVG + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_BAKED_FRVG * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
779 break;
780
781 case FoodStageType.DRIED:
782 case FoodStageType.BURNED:
783 case FoodStageType.ROTTEN:
784 default:
785 m_DecayTimer = -1;
787 return;
788 }
789
790 //m_DecayTimer = m_DecayTimer / 1000.0;
791 }
792
793 m_DecayTimer -= ( delta * m_DecayDelta );
794
795 if ( m_DecayTimer <= 0 )
796 {
797 if ( m_LastDecayStage != FoodStageType.NONE )
798 {
799 // switch to decayed stage
800 if ( ( m_LastDecayStage == FoodStageType.BOILED ) || ( m_LastDecayStage == FoodStageType.BAKED ) )
801 {
803 }
804 if ( m_LastDecayStage == FoodStageType.RAW )
805 {
806 int rng = Math.RandomIntInclusive( 0, 100 );
807 if ( rng > GameConstants.DECAY_FOOD_FRVG_DRIED_CHANCE )
808 {
810 }
811 else
812 {
813 if ( CanChangeToNewStage( FoodStageType.DRIED ) )
814 {
816 }
817 else
818 {
820 }
821 }
822 }
823 }
824 }
825
826 }
827 else if ( IsMeat() )
828 {
829 // meat
831 {
832 switch ( GetFoodStageType() )
833 {
834 case FoodStageType.RAW:
835 m_DecayTimer = ( GameConstants.DECAY_FOOD_RAW_MEAT + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_RAW_MEAT * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
837 break;
838
839 case FoodStageType.BOILED:
840 m_DecayTimer = ( GameConstants.DECAY_FOOD_BOILED_MEAT + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_BOILED_MEAT * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
842 break;
843
844 case FoodStageType.BAKED:
845 m_DecayTimer = ( GameConstants.DECAY_FOOD_BAKED_MEAT + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_BAKED_MEAT * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
847 break;
848
849 case FoodStageType.DRIED:
850 m_DecayTimer = ( GameConstants.DECAY_FOOD_DRIED_MEAT + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_DRIED_MEAT * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
852 break;
853
854 case FoodStageType.BURNED:
855 case FoodStageType.ROTTEN:
856 default:
857 m_DecayTimer = -1;
859 return;
860 }
861 }
862
863 m_DecayTimer -= ( delta * m_DecayDelta );
864
865 if ( m_DecayTimer <= 0 )
866 {
867 if ( m_LastDecayStage != FoodStageType.NONE )
868 {
869 // switch to decayed stage
870 if ( ( m_LastDecayStage == FoodStageType.DRIED ) || ( m_LastDecayStage == FoodStageType.RAW ) || ( m_LastDecayStage == FoodStageType.BOILED ) || ( m_LastDecayStage == FoodStageType.BAKED ) )
871 {
873 }
874 }
875 }
876 }
877 else if ( IsCorpse() )
878 {
879 // corpse
881 {
882 switch ( GetFoodStageType() )
883 {
884 case FoodStageType.RAW:
885 m_DecayTimer = ( GameConstants.DECAY_FOOD_RAW_CORPSE + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_RAW_CORPSE * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
887 break;
888
889 case FoodStageType.BURNED:
890 case FoodStageType.ROTTEN:
891 default:
892 m_DecayTimer = -1;
894 return;
895 }
896 }
897
898 m_DecayTimer -= ( delta * m_DecayDelta );
899
900 if ( m_DecayTimer <= 0 )
901 {
902 if ( m_LastDecayStage != FoodStageType.NONE )
903 {
904 // switch to decayed stage
905 if ( ( m_LastDecayStage == FoodStageType.DRIED ) || ( m_LastDecayStage == FoodStageType.RAW ) || ( m_LastDecayStage == FoodStageType.BOILED ) || ( m_LastDecayStage == FoodStageType.BAKED ) )
906 {
908 }
909 }
910 }
911 }
912 else
913 {
914 // opened cans
915 m_DecayTimer -= ( delta * m_DecayDelta );
916
917 if ( ( m_DecayTimer <= 0 ) && ( m_LastDecayStage == FoodStageType.NONE ) )
918 {
919 m_DecayTimer = ( GameConstants.DECAY_FOOD_CAN_OPEN + ( Math.RandomFloat01() * ( GameConstants.DECAY_FOOD_DRIED_MEAT * ( GameConstants.DECAY_TIMER_RANDOM_PERCENTAGE / 100.0 ) ) ) );
921 //m_DecayTimer = m_DecayTimer / 1000.0;
922 }
923 else
924 {
925 if ( m_DecayTimer <= 0 )
926 {
927 InsertAgent(eAgents.FOOD_POISON, 1);
928 m_DecayTimer = -1;
929 }
930 }
931 }
932 }
DayZGame g_Game
Определения DayZGame.c:4074
eAgents
Определения EAgents.c:3
FoodStageType
Определения FoodStage.c:2
override void InsertAgent(int agent, float count=1)
Определения ItemBase.c:3984
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

Перекрестные ссылки 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, g_Game, GetFoodStageType(), InsertAgent(), IsCorpse(), IsFruit(), IsMeat(), IsMushroom(), m_DecayDelta, m_DecayTimer, m_LastDecayStage, Math::RandomFloat01() и Math::RandomIntInclusive().