359{
367
369 {
372 {
375 }
376 }
377
379 {
381
382 super.CreateResultDataStructure();
383 }
384
386 {
387 super.ClearCatchingItemData();
388
393 }
394
396 {
397
398 if (item.IsRuined() || item.IsSetForDeletion())
399 return;
400
403 {
404 if (
GetGame().ConfigIsExisting(
path +
" baitTypes") &&
GetGame().ConfigIsExisting(
path +
" baitTypeChances"))
405 {
412 {
413 int key;
414 float value;
415 for (int i = 0; i < count; i++)
416 {
420 {
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"))
432 if (
GetGame().ConfigIsExisting(
path +
" resultQuantityDispersionMin"))
434 if (
GetGame().ConfigIsExisting(
path +
" resultQuantityDispersionMax"))
436 }
437 }
438
441 {
442 float ret = 1.0;
445 {
446
447 }
448
449 return ret;
450 }
451
453 {
455 if (
GetGame().SurfaceIsSea(pos[0], pos[2]))
457 else if (
GetGame().SurfaceIsPond( pos[0], pos[2]))
459 else
461 }
462
464 {
465 super.Init(par);
466
468 }
469
471 {
472 #ifdef DEVELOPER
474 {
475 Print(
"********************");
476 Print(
"dbgTrapz | START");
477 Print(
"********************");
478 }
479 #endif
480
481 super.SetupInitialTypes();
482
483 #ifdef DEVELOPER
485 {
487 }
488 #endif
489 }
490
492 {
495
498 }
499
501 {
504 }
505
507 {
509 }
510
513 {
515 if (type != ECatchingBaitCategories.BAIT_TYPE_EMPTY)
516 {
518 if (dta)
519 {
523 }
524 else
525 ErrorEx(
"failed to acquire BaitData from type: " + type);
526 }
527
528 #ifdef DEVELOPER
530 {
533 else
534 Print(
"dbgTrapz | UpdateUsedBait to 'null'!");
535 }
536 #endif
537 }
538
540 {
541 int baitType = ECatchingBaitCategories.BAIT_TYPE_EMPTY;
542 int usedType = -1;
543 float probability = -1;
544 float highestProbability = 0.0;
546 for (int i = 0; i < count; i++)
547 {
550 if (probability > highestProbability)
551 {
552 highestProbability = probability;
553 usedType = baitType;
554 }
555 }
556
558 #ifdef DEVELOPER
560 {
561
562 Print(
"dbgTrapz | using bait type: " + baitType +
" to catch: " + yItem);
563 }
564 #endif
566
567 #ifdef DEVELOPER
569 {
570 float dbgProb;
573 }
574 #endif
575 }
576
578 {
580
581 return true;
582 }
583
585 {
588 }
589
591 {
593 {
595 m_Bait.SetQuantityNormalized((
m_Bait.GetQuantityNormalized() - qtyNorm));
596 else
598 }
599 }
600}
601
603{
605 {
606 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_SMALL;
607 }
608}
609
611{
613 {
614 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_LARGE;
615 }
616}
617
619{
621 {
622 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_LANDTRAP_SNARE;
623 }
624}
ref map< int, ref BaitData > m_BaitCompatibilityMap
class BaitData m_MainItem
ref CatchingResultBasic m_Result
float m_QualityDispersionMinMod
void InitCatchingItemData()
void CatchingContextBase(Param par)
float m_QualityDispersionMaxMod
void SetupProbabilityArray()
void InitItemValues(EntityAI item)
override to init context-specific values
float AdjustBaitItemChance(EntityAI item)
Allows for adjustment of all catch probabilities from item qualities (damage, qty....
void SetTrapEnviroMask(int value)
CatchingContextTrapsBase CatchingContextBase InitCatchMethodMask()
int UpdateTrapEnviroMask()
void UpdateDataAndMasks()
void UpdateUsedBait(ECatchingBaitCategories type)
if non-empty bait type is used, some 'Bait' attachment is picked as an active bait (currently no dire...
void ClearCatchingItemData()
void InitCatchEnviroMask()
void CreateResultDataStructure()
void DeserializeData(Param par)
override bool ModifySignalProbability(inout float probability)
void ReduceBaitQty(float qtyNorm)
float m_CumulativeTrappingSuccess
after N attempts, the chance to catch should be this. Only highest one applies. @NOTE: Take care,...
override void UpdateBaseProbability(YieldItemBase yItem)
updates base probability when catching the specific item (some context subclasses only)
static const int MASK_ENVIRO_POND
static const int MASK_ENVIRO_LAND_ALL
static const int MASK_ENVIRO_SEA
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
static ref TFloatArray ARRAY_FLOAT
void InitCatchMethodMask()
Super root of all classes in Enforce script.
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
float GetBaitTypeSensitivity(ECatchingBaitCategories type)
proto native CGame GetGame()
proto void Print(void var)
Prints content of variable to console/log.
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.
proto native bool IsCLIParam(string param)
Returns if command line argument is present.