1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- class CatchingContextPoissonBase : CatchingContextBase
- {
- protected float m_SignalPoissonMean; //usually, only the smallest value is considered
- protected int m_SignalCurrent;
-
- override protected void ClearCatchingItemData()
- {
- super.ClearCatchingItemData();
-
- m_SignalPoissonMean = AnimalCatchingConstants.POISSON_CYCLE_MEAN_DEFAULT;
- m_SignalCurrent = 0;
- }
-
- float GetSignalPoissonMean()
- {
- return m_SignalPoissonMean;
- }
-
- //! maximum number of signals in a single cycle
- int GetSignalMax()
- {
- //m_SignalPoissonMean * 2 + 1
- return Math.Ceil(m_SignalPoissonMean) + Math.Ceil(m_SignalPoissonMean/5); //TODO?
- }
-
- /*float GetSignalChance()
- {
- if (m_SignalCurrent > GetSignalMax() || m_SignalCurrent > 12) //necessary reset
- m_SignalCurrent = 0;
-
- return Math.Poisson(m_SignalPoissonMean,m_SignalCurrent) * GetChanceCoef();
- }*/
-
- override bool ModifySignalProbability(inout float probability)
- {
- if (m_SignalCurrent > GetSignalMax() || m_SignalCurrent > 12) //necessary reset
- m_SignalCurrent = 0;
-
- probability = Math.Poisson(m_SignalPoissonMean,m_SignalCurrent) * GetChanceCoef();
-
- return true;
- }
-
- /*float GetQualityModifier()
- {
- float ret = m_QualityBaseMod + Math.RandomFloatInclusive(m_QualityDispersionMinMod,m_QualityDispersionMaxMod);//server only, this is fine
- return ret;
- }*/
-
- override bool RollCatch()
- {
- bool ret = super.RollCatch();
- m_SignalCurrent++;
-
- return ret;
- }
-
- float GetChanceCoef()
- {
- return 1.0;
- }
- }
|