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

◆ SetupInitialTypes()

void InitCatchMethodMask::SetupInitialTypes ( )
protected

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

359{
364 protected float m_CumulativeTrappingSuccess;
365 protected int m_AttemptsCount;
366 protected ItemBase m_Bait;
367
368 override protected void DeserializeData(Param par)
369 {
371 if (Class.CastTo(p,par))
372 {
373 m_MainItem = p.param1;
374 m_AttemptsCount = p.param2;
375 }
376 }
377
378 override protected void CreateResultDataStructure()
379 {
381
382 super.CreateResultDataStructure();
383 }
384
385 override protected void ClearCatchingItemData()
386 {
387 super.ClearCatchingItemData();
388
390 m_QualityBaseMod = 0.0;
393 }
394
395 override protected void InitItemValues(EntityAI item)
396 {
397 //skip ruined or deleted items entirely
398 if (item.IsRuined() || item.IsSetForDeletion())
399 return;
400
401 string path = "" + CFG_VEHICLESPATH + " " + item.GetType() + " Trapping";
402 if (GetGame().ConfigIsExisting(path))
403 {
404 if (GetGame().ConfigIsExisting(path + " baitTypes") && GetGame().ConfigIsExisting(path + " baitTypeChances"))
405 {
410 int count = CachedObjectsArrays.ARRAY_INT.Count();
411 if (count == CachedObjectsArrays.ARRAY_FLOAT.Count())
412 {
413 int key;
414 float value;
415 for (int i = 0; i < count; i++)
416 {
419 if (!m_BaitCompatibilityMap.Contains(key) || (m_BaitCompatibilityMap.Get(key).m_BaseProbability < value))
420 {
421 m_BaitCompatibilityMap.Set(key,new BaitData(value,item));
422 }
423 }
424 }
425 else
426 {
427 ErrorEx("'baitTypes' and 'baitTypeChances' arrray counts of " + item.GetType() + " do not match!",ErrorExSeverity.INFO);
428 }
429 }
430 if (GetGame().ConfigIsExisting(path + " resultQuantityBaseMod"))
431 m_QualityBaseMod += GetGame().ConfigGetFloat(path + " resultQuantityBaseMod");
432 if (GetGame().ConfigIsExisting(path + " resultQuantityDispersionMin"))
433 m_QualityDispersionMinMod += GetGame().ConfigGetFloat(path + " resultQuantityDispersionMin");
434 if (GetGame().ConfigIsExisting(path + " resultQuantityDispersionMax"))
435 m_QualityDispersionMaxMod += GetGame().ConfigGetFloat(path + " resultQuantityDispersionMax");
436 }
437 }
438
441 {
442 float ret = 1.0;
443 ItemBase ib;
444 if (Class.CastTo(ib,item))
445 {
446 //ret *= ib.GetBaitEffectivity(); //disconnected for the Time Being
447 }
448
449 return ret;
450 }
451
452 override protected void InitCatchEnviroMask()
453 {
454 vector pos = m_MainItem.GetPosition();
455 if (GetGame().SurfaceIsSea(pos[0], pos[2]))
457 else if (GetGame().SurfaceIsPond( pos[0], pos[2]))
459 else
461 }
462
463 override protected void Init(Param par)
464 {
465 super.Init(par);
466
468 }
469
470 override protected void SetupInitialTypes()
471 {
472 #ifdef DEVELOPER
473 if (IsCLIParam("catchingLogs"))
474 {
475 Print("********************"); //just for debug purposes to track the start
476 Print("dbgTrapz | START");
477 Print("********************");
478 }
479 #endif
480
481 super.SetupInitialTypes();
482
483 #ifdef DEVELOPER
484 if (IsCLIParam("catchingLogs"))
485 {
486 Print("***"); //just for debug purposes to track the start
487 }
488 #endif
489 }
490
491 void UpdateDataAndMasks()
492 {
494 InitCatchMethodMask(); //bait check
495 //InitCatchEnviroMask(); //skipping, raycasts are unreliable outside network bubbles
498 }
499
501 {
503 return GetCatchEnviroMask();
504 }
505
506 void SetTrapEnviroMask(int value)
507 {
508 m_EnviroMask = value;
509 }
510
512 void UpdateUsedBait(ECatchingBaitCategories type)
513 {
514 m_Bait = null;
515 if (type != ECatchingBaitCategories.BAIT_TYPE_EMPTY)
516 {
517 BaitData dta = m_BaitCompatibilityMap.Get(type);
518 if (dta)
519 {
520 ItemBase potentialBait = ItemBase.Cast(dta.m_Owner);
521 if (potentialBait != m_MainItem)
522 m_Bait = potentialBait;
523 }
524 else
525 ErrorEx("failed to acquire BaitData from type: " + type);
526 }
527
528 #ifdef DEVELOPER
529 if (IsCLIParam("catchingLogs"))
530 {
531 if (m_Bait)
532 Print("dbgTrapz | UpdateUsedBait to: " + m_Bait + " | with base bait probability used: " + m_BaitCompatibilityMap.Get(type).m_BaseProbability);
533 else
534 Print("dbgTrapz | UpdateUsedBait to 'null'!");
535 }
536 #endif
537 }
538
539 override void UpdateBaseProbability(YieldItemBase yItem)
540 {
541 int baitType = ECatchingBaitCategories.BAIT_TYPE_EMPTY;
542 int usedType = -1;
543 float probability = -1;
544 float highestProbability = 0.0;
545 int count = m_BaitCompatibilityMap.Count();
546 for (int i = 0; i < count; i++)
547 {
548 baitType = m_BaitCompatibilityMap.GetKey(i);
549 probability = m_BaitCompatibilityMap.Get(baitType).m_BaseProbability * yItem.GetBaitTypeSensitivity(baitType);
550 if (probability > highestProbability)
551 {
552 highestProbability = probability;
553 usedType = baitType;
554 }
555 }
556
557 m_CumulativeTrappingSuccess = Math.Clamp(highestProbability,0,1);
558 #ifdef DEVELOPER
559 if (IsCLIParam("catchingLogs"))
560 {
561 //Print("********************");
562 Print("dbgTrapz | using bait type: " + baitType + " to catch: " + yItem);
563 }
564 #endif
565 UpdateUsedBait(usedType);
566
567 #ifdef DEVELOPER
568 if (IsCLIParam("catchingLogs"))
569 {
570 float dbgProb;
572 Print("dbgTrapz | starting catching of " + yItem + " | at probability: " + dbgProb + " | with target success: " + m_CumulativeTrappingSuccess);
573 }
574 #endif
575 }
576
577 override bool ModifySignalProbability(inout float probability)
578 {
579 probability = 1 - Math.Pow((1 - m_CumulativeTrappingSuccess),(1/m_AttemptsCount));
580
581 return true;
582 }
583
584 void RemoveBait()
585 {
586 if (m_Bait)
587 m_Bait.DeleteSafe();
588 }
589
590 void ReduceBaitQty(float qtyNorm)
591 {
592 if (m_Bait)
593 {
594 if (m_Bait.HasQuantity() && !m_Bait.IsSplitable())
595 m_Bait.SetQuantityNormalized((m_Bait.GetQuantityNormalized() - qtyNorm));
596 else
597 m_Bait.DeleteSafe();
598 }
599 }
600}
601
602class CatchingContextTrapFishSmall : CatchingContextTrapsBase
603{
604 override protected void InitCatchMethodMask()
605 {
606 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_SMALL;
607 }
608}
609
611{
612 override protected void InitCatchMethodMask()
613 {
614 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_LARGE;
615 }
616}
617
618class CatchingContextTrapLandSnare : CatchingContextTrapsBase
619{
620 override protected void InitCatchMethodMask()
621 {
622 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_LANDTRAP_SNARE;
623 }
624}
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.