12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- class HungerMdfr: ModifierBase
- {
- protected float m_EnergyDelta;
- protected float m_LastEnergyLevel;
- ref HumanMovementState m_MovementState = new HumanMovementState();
-
- override void Init()
- {
- m_TrackActivatedTime = false;
- m_ID = eModifiers.MDF_HUNGER;
- m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
- m_TickIntervalActive = 1;
- DisableDeactivateCheck();
- }
-
- override bool ActivateCondition(PlayerBase player)
- {
- return true;
- }
- override bool DeactivateCondition(PlayerBase player)
- {
- return false;
- }
-
- override void OnReconnect(PlayerBase player)
- {
- }
- override void OnTick(PlayerBase player, float deltaT)
- {
- player.GetMovementState(m_MovementState);
- float energy = player.GetStatEnergy().Get();
- float metabolic_speed = MiscGameplayFunctions.GetEnergyMetabolicSpeed(m_MovementState.m_iMovement);
-
- float modifier = energy/PlayerConstants.SL_ENERGY_MAX + PlayerConstants.CONSUMPTION_MULTIPLIER_BASE;
- metabolic_speed *= modifier; //non linear shaping for consumption curve (comment out to have it linear)
-
- player.GetStatEnergy().Add( -metabolic_speed * deltaT );
- if ( energy <= PlayerConstants.LOW_ENERGY_THRESHOLD )
- {
- player.SetMixedSoundState( eMixedSoundStates.HUNGRY );
- if ((player.GetStomach().GetDigestingType() & PlayerStomach.DIGESTING_ENERGY) == 0)
- player.AddHealth("GlobalHealth", "Health", -PlayerConstants.LOW_ENERGY_DAMAGE_PER_SEC * deltaT );
- }
- else
- {
- player.UnsetMixedSoundState( eMixedSoundStates.HUNGRY );
- }
- }
- };
|