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

◆ ModifySignalProbability()

override bool InitCatchMethodMask::ModifySignalProbability ( inout float probability)
protected

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

466{
471 protected float m_CumulativeTrappingSuccess;
472 protected int m_AttemptsCount;
473 protected ItemBase m_Bait;
474
475 override protected void DeserializeData(Param par)
476 {
478 if (Class.CastTo(p,par))
479 {
480 m_MainItem = p.param1;
481 m_AttemptsCount = p.param2;
482 }
483 }
484
485 override protected void CreateResultDataStructure()
486 {
488
489 super.CreateResultDataStructure();
490 }
491
492 override protected void ClearCatchingItemData()
493 {
494 super.ClearCatchingItemData();
495
497 m_QualityBaseMod = 0.0;
500 }
501
502 override protected void InitItemValues(EntityAI item)
503 {
504 //skip ruined or deleted items entirely
505 if (item.IsRuined() || item.IsSetForDeletion())
506 return;
507
508 string path = "" + CFG_VEHICLESPATH + " " + item.GetType() + " Trapping";
509 if (GetGame().ConfigIsExisting(path))
510 {
511 if (GetGame().ConfigIsExisting(path + " baitTypes") && GetGame().ConfigIsExisting(path + " baitTypeChances"))
512 {
517 int count = CachedObjectsArrays.ARRAY_INT.Count();
518 if (count == CachedObjectsArrays.ARRAY_FLOAT.Count())
519 {
520 int key;
521 float value;
522 for (int i = 0; i < count; i++)
523 {
526 if (!m_BaitCompatibilityMap.Contains(key) || (m_BaitCompatibilityMap.Get(key).m_BaseProbability < value))
527 {
528 m_BaitCompatibilityMap.Set(key,new BaitData(value,item));
529 }
530 }
531 }
532 else
533 {
534 ErrorEx("'baitTypes' and 'baitTypeChances' arrray counts of " + item.GetType() + " do not match!",ErrorExSeverity.INFO);
535 }
536 }
537 if (GetGame().ConfigIsExisting(path + " resultQuantityBaseMod"))
538 m_QualityBaseMod += GetGame().ConfigGetFloat(path + " resultQuantityBaseMod");
539 if (GetGame().ConfigIsExisting(path + " resultQuantityDispersionMin"))
540 m_QualityDispersionMinMod += GetGame().ConfigGetFloat(path + " resultQuantityDispersionMin");
541 if (GetGame().ConfigIsExisting(path + " resultQuantityDispersionMax"))
542 m_QualityDispersionMaxMod += GetGame().ConfigGetFloat(path + " resultQuantityDispersionMax");
543 }
544 }
545
548 {
549 float ret = 1.0;
550 ItemBase ib;
551 if (Class.CastTo(ib,item))
552 {
553 //ret *= ib.GetBaitEffectivity(); //disconnected for the Time Being
554 }
555
556 return ret;
557 }
558
559 override protected void InitCatchEnviroMask()
560 {
561 vector pos = m_MainItem.GetPosition();
562 if (GetGame().SurfaceIsSea(pos[0], pos[2]))
564 else if (GetGame().SurfaceIsPond( pos[0], pos[2]))
566 else
568 }
569
570 override protected void Init(Param par)
571 {
572 super.Init(par);
573
575 }
576
577 override protected void SetupInitialTypes()
578 {
579 #ifdef DEVELOPER
580 if (IsCLIParam("catchingLogs"))
581 {
582 Print("********************"); //just for debug purposes to track the start
583 Print("dbgTrapz | START");
584 Print("********************");
585 }
586 #endif
587
588 super.SetupInitialTypes();
589
590 #ifdef DEVELOPER
591 if (IsCLIParam("catchingLogs"))
592 {
593 Print("***"); //just for debug purposes to track the start
594 }
595 #endif
596 }
597
598 void UpdateDataAndMasks()
599 {
601 InitCatchMethodMask(); //bait check
602 //InitCatchEnviroMask(); //skipping, raycasts are unreliable outside network bubbles
605 }
606
608 {
610 return GetCatchEnviroMask();
611 }
612
613 void SetTrapEnviroMask(int value)
614 {
615 m_EnviroMask = value;
616 }
617
619 void UpdateUsedBait(ECatchingBaitCategories type)
620 {
621 m_Bait = null;
622 if (type != ECatchingBaitCategories.BAIT_TYPE_EMPTY)
623 {
624 BaitData dta = m_BaitCompatibilityMap.Get(type);
625 if (dta)
626 {
627 ItemBase potentialBait = ItemBase.Cast(dta.m_Owner);
628 if (potentialBait != m_MainItem)
629 m_Bait = potentialBait;
630 }
631 else
632 ErrorEx("failed to acquire BaitData from type: " + type);
633 }
634
635 #ifdef DEVELOPER
636 if (IsCLIParam("catchingLogs"))
637 {
638 if (m_Bait)
639 Print("dbgTrapz | UpdateUsedBait to: " + m_Bait + " | with base bait probability used: " + m_BaitCompatibilityMap.Get(type).m_BaseProbability);
640 else
641 Print("dbgTrapz | UpdateUsedBait to 'null'!");
642 }
643 #endif
644 }
645
646 override void UpdateBaseProbability(YieldItemBase yItem)
647 {
648 int baitType = ECatchingBaitCategories.BAIT_TYPE_EMPTY;
649 int usedType = -1;
650 float probability = -1;
651 float highestProbability = 0.0;
652 int count = m_BaitCompatibilityMap.Count();
653 for (int i = 0; i < count; i++)
654 {
655 baitType = m_BaitCompatibilityMap.GetKey(i);
656 probability = m_BaitCompatibilityMap.Get(baitType).m_BaseProbability * yItem.GetBaitTypeSensitivity(baitType);
657 if (probability > highestProbability)
658 {
659 highestProbability = probability;
660 usedType = baitType;
661 }
662 }
663
664 m_CumulativeTrappingSuccess = Math.Clamp(highestProbability,0,1);
665 #ifdef DEVELOPER
666 if (IsCLIParam("catchingLogs"))
667 {
668 //Print("********************");
669 Print("dbgTrapz | using bait type: " + baitType + " to catch: " + yItem);
670 }
671 #endif
672 UpdateUsedBait(usedType);
673
674 #ifdef DEVELOPER
675 if (IsCLIParam("catchingLogs"))
676 {
677 float dbgProb;
679 Print("dbgTrapz | starting catching of " + yItem + " | at probability: " + dbgProb + " | with target success: " + m_CumulativeTrappingSuccess);
680 }
681 #endif
682 }
683
684 override bool ModifySignalProbability(inout float probability)
685 {
686 probability = 1 - Math.Pow((1 - m_CumulativeTrappingSuccess),(1/m_AttemptsCount));
687
688 return true;
689 }
690
691 void RemoveBait()
692 {
693 if (m_Bait)
694 m_Bait.DeleteSafe();
695 }
696
697 void ReduceBaitQty(float qtyNorm)
698 {
699 if (m_Bait)
700 {
701 if (m_Bait.HasQuantity() && !m_Bait.IsSplitable())
702 m_Bait.SetQuantityNormalized((m_Bait.GetQuantityNormalized() - qtyNorm));
703 else
704 m_Bait.DeleteSafe();
705 }
706 }
707}
708
709class CatchingContextTrapFishSmall : CatchingContextTrapsBase
710{
711 override protected void InitCatchMethodMask()
712 {
713 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_SMALL;
714 }
715}
716
718{
719 override protected void InitCatchMethodMask()
720 {
721 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_LARGE;
722 }
723}
724
725class CatchingContextTrapLandSnare : CatchingContextTrapsBase
726{
727 override protected void InitCatchMethodMask()
728 {
729 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_LANDTRAP_SNARE;
730 }
731}
ItemBase m_Bait
Определения ActionFishingNew.c:57
int GetCatchEnviroMask()
Определения CatchingContextBase.c:164
float m_QualityBaseMod
Определения CatchingContextBase.c:20
ref map< int, ref BaitData > m_BaitCompatibilityMap
Определения CatchingContextBase.c:23
class BaitData m_MainItem
Определения ActionBase.c:36
ref CatchingResultBasic m_Result
Определения CatchingContextBase.c:27
void GenerateResult()
Определения CatchingContextBase.c:257
int m_MethodMask
Определения CatchingContextBase.c:18
float m_QualityDispersionMinMod
Определения CatchingContextBase.c:21
void InitCatchingItemData()
Определения CatchingContextBase.c:217
void CatchingContextBase(Param par)
Определения CatchingContextBase.c:29
float m_QualityDispersionMaxMod
Определения CatchingContextBase.c:22
int m_EnviroMask
Определения CatchingContextBase.c:19
void SetupProbabilityArray()
Определения CatchingContextBase.c:97
void SetupInitialTypes()
Определения CatchingContextTraps.c:358
void InitItemValues(EntityAI item)
override to init context-specific values
Определения CatchingContextTraps.c:283
void RemoveBait()
Определения CatchingContextTraps.c:472
float AdjustBaitItemChance(EntityAI item)
Allows for adjustment of all catch probabilities from item qualities (damage, qty....
Определения CatchingContextTraps.c:328
void SetTrapEnviroMask(int value)
Определения CatchingContextTraps.c:394
CatchingContextTrapsBase CatchingContextBase InitCatchMethodMask()
Определения CatchingContextTraps.c:247
int UpdateTrapEnviroMask()
Определения CatchingContextTraps.c:388
void UpdateDataAndMasks()
Определения CatchingContextTraps.c:379
void UpdateUsedBait(ECatchingBaitCategories type)
if non-empty bait type is used, some 'Bait' attachment is picked as an active bait (currently no dire...
Определения CatchingContextTraps.c:400
void ClearCatchingItemData()
Определения CatchingContextTraps.c:273
void InitCatchEnviroMask()
Определения CatchingContextTraps.c:340
void CreateResultDataStructure()
Определения CatchingContextTraps.c:266
void DeserializeData(Param par)
Определения CatchingContextTraps.c:256
override bool ModifySignalProbability(inout float probability)
Определения CatchingContextTraps.c:465
void ReduceBaitQty(float qtyNorm)
Определения CatchingContextTraps.c:478
int m_AttemptsCount
Определения CatchingContextTraps.c:253
float m_CumulativeTrappingSuccess
after N attempts, the chance to catch should be this. Only highest one applies. @NOTE: Take care,...
Определения CatchingContextTraps.c:252
override void UpdateBaseProbability(YieldItemBase yItem)
updates base probability when catching the specific item (some context subclasses only)
Определения CatchingContextTraps.c:427
override Widget Init()
Определения DayZGame.c:127
string path
Определения OptionSelectorMultistate.c:142
static const int MASK_ENVIRO_POND
Определения CatchingConstants.c:11
static const int MASK_ENVIRO_LAND_ALL
Определения CatchingConstants.c:16
static const int MASK_ENVIRO_SEA
Определения CatchingConstants.c:12
EntityAI m_Owner
Определения CatchingContextBase.c:4
Определения CatchingContextBase.c:2
proto native float ConfigGetFloat(string path)
Get float value from config on path.
proto native void ConfigGetIntArray(string path, out TIntArray values)
Get array of integers from config on path.
proto native void ConfigGetFloatArray(string path, out TFloatArray values)
Get array of floats from config on path.
static ref TIntArray ARRAY_INT
Определения UtilityClasses.c:51
static ref TFloatArray ARRAY_FLOAT
Определения UtilityClasses.c:50
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения Building.c:6
Определения InventoryItem.c:731
Определения EnMath.c:7
Определения PPEConstants.c:68
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
float GetBaitTypeSensitivity(ECatchingBaitCategories type)
Определения CatchYieldItemBase.c:53
Определения EnConvert.c:106
proto native CGame GetGame()
ErrorExSeverity
Определения EnDebug.c:62
proto void Print(void var)
Prints content of variable to console/log.
enum ShapeType ErrorEx
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
static proto float Pow(float v, float power)
Return power of v ^ power.
const string CFG_VEHICLESPATH
Определения constants.c:220
proto native bool IsCLIParam(string param)
Returns if command line argument is present.