1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- class FliesMdfr: ModifierBase
- {
- const float DISTANCE_SENSITIVITY_SQR = Math.SqrFloat(0.05/*actual distance in meters*/);
- const int TICK_FREQUENCY = 15;
- const int IDLE_COUNT_THRESHOLD = 40;
- vector m_PrevPosition;
- int m_IdleCount;
-
-
- override void Init()
- {
- m_TrackActivatedTime = false;
- m_ID = eModifiers.MDF_FLIES;
- m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
- m_TickIntervalActive = TICK_FREQUENCY;
- DisableActivateCheck();
- DisableDeactivateCheck();
- }
- override bool ActivateCondition(PlayerBase player)
- {
- return false;
- }
- override bool DeactivateCondition(PlayerBase player)
- {
- return false;
- }
- override void OnTick(PlayerBase player, float deltaT)
- {
- float dist_sqr = vector.DistanceSq(player.GetPosition(), m_PrevPosition);
- if( dist_sqr < DISTANCE_SENSITIVITY_SQR)//has the player stayed still since last check
- {
- m_IdleCount++;
- }
- else
- {
- if(m_IdleCount >= IDLE_COUNT_THRESHOLD)//disable the effect
- {
- player.m_CorpseState = -PlayerConstants.CORPSE_STATE_DECAYED;
- player.SetSynchDirty();
- }
-
- m_IdleCount = 0;//player moved, reset the count
- }
- m_PrevPosition = player.GetPosition();
-
- if( m_IdleCount == IDLE_COUNT_THRESHOLD)//should we play the effect ?
- {
- player.m_CorpseState = PlayerConstants.CORPSE_STATE_DECAYED;
- player.SetSynchDirty();
- }
-
-
- }
-
- override void OnReconnect(PlayerBase player)
- {
- OnActivate(player);
- }
-
- override void OnActivate(PlayerBase player)
- {
- m_IdleCount = 0;
- player.m_CorpseState = -PlayerConstants.CORPSE_STATE_DECAYED;
- player.SetSynchDirty();
- }
-
- override void OnDeactivate(PlayerBase player)
- {
- }
-
-
-
- };
|