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

◆ InitItemValues()

void InitCatchMethodMask::InitItemValues ( EntityAI item)
protected

override to init context-specific values

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

284{
289 protected float m_CumulativeTrappingSuccess;
290 protected int m_AttemptsCount;
291 protected ItemBase m_Bait;
292
293 override protected void DeserializeData(Param par)
294 {
296 if (Class.CastTo(p,par))
297 {
298 m_MainItem = p.param1;
299 m_AttemptsCount = p.param2;
300 }
301 }
302
303 override protected void CreateResultDataStructure()
304 {
306
307 super.CreateResultDataStructure();
308 }
309
310 override protected void ClearCatchingItemData()
311 {
312 super.ClearCatchingItemData();
313
315 m_QualityBaseMod = 0.0;
318 }
319
320 override protected void InitItemValues(EntityAI item)
321 {
322 //skip ruined or deleted items entirely
323 if (item.IsRuined() || item.IsSetForDeletion())
324 return;
325
326 string path = "" + CFG_VEHICLESPATH + " " + item.GetType() + " Trapping";
327 if (GetGame().ConfigIsExisting(path))
328 {
329 if (GetGame().ConfigIsExisting(path + " baitTypes") && GetGame().ConfigIsExisting(path + " baitTypeChances"))
330 {
335 int count = CachedObjectsArrays.ARRAY_INT.Count();
336 if (count == CachedObjectsArrays.ARRAY_FLOAT.Count())
337 {
338 int key;
339 float value;
340 for (int i = 0; i < count; i++)
341 {
344 if (!m_BaitCompatibilityMap.Contains(key) || (m_BaitCompatibilityMap.Get(key).m_BaseProbability < value))
345 {
346 m_BaitCompatibilityMap.Set(key,new BaitData(value,item));
347 }
348 }
349 }
350 else
351 {
352 ErrorEx("'baitTypes' and 'baitTypeChances' arrray counts of " + item.GetType() + " do not match!",ErrorExSeverity.INFO);
353 }
354 }
355 if (GetGame().ConfigIsExisting(path + " resultQuantityBaseMod"))
356 m_QualityBaseMod += GetGame().ConfigGetFloat(path + " resultQuantityBaseMod");
357 if (GetGame().ConfigIsExisting(path + " resultQuantityDispersionMin"))
358 m_QualityDispersionMinMod += GetGame().ConfigGetFloat(path + " resultQuantityDispersionMin");
359 if (GetGame().ConfigIsExisting(path + " resultQuantityDispersionMax"))
360 m_QualityDispersionMaxMod += GetGame().ConfigGetFloat(path + " resultQuantityDispersionMax");
361 }
362 }
363
366 {
367 float ret = 1.0;
368 ItemBase ib;
369 if (Class.CastTo(ib,item))
370 {
371 //ret *= ib.GetBaitEffectivity(); //disconnected for the Time Being
372 }
373
374 return ret;
375 }
376
377 override protected void InitCatchEnviroMask()
378 {
379 vector pos = m_MainItem.GetPosition();
380 if (GetGame().SurfaceIsSea(pos[0], pos[2]))
382 else if (GetGame().SurfaceIsPond( pos[0], pos[2]))
384 else
386 }
387
388 override protected void Init(Param par)
389 {
390 super.Init(par);
391
393 }
394
395 override protected void SetupInitialTypes()
396 {
397 #ifdef DEVELOPER
398 if (IsCLIParam("catchingLogs"))
399 {
400 Print("********************"); //just for debug purposes to track the start
401 Print("dbgTrapz | START");
402 Print("********************");
403 }
404 #endif
405
406 super.SetupInitialTypes();
407
408 #ifdef DEVELOPER
409 if (IsCLIParam("catchingLogs"))
410 {
411 Print("***"); //just for debug purposes to track the start
412 }
413 #endif
414 }
415
416 void UpdateDataAndMasks()
417 {
419 InitCatchMethodMask(); //bait check
420 //InitCatchEnviroMask(); //skipping, raycasts are unreliable outside network bubbles
423 }
424
426 {
428 return GetCatchEnviroMask();
429 }
430
431 void SetTrapEnviroMask(int value)
432 {
433 m_EnviroMask = value;
434 }
435
437 void UpdateUsedBait(ECatchingBaitCategories type)
438 {
439 m_Bait = null;
440 if (type != ECatchingBaitCategories.BAIT_TYPE_EMPTY)
441 {
442 BaitData dta = m_BaitCompatibilityMap.Get(type);
443 if (dta)
444 {
445 ItemBase potentialBait = ItemBase.Cast(dta.m_Owner);
446 if (potentialBait != m_MainItem)
447 m_Bait = potentialBait;
448 }
449 else
450 ErrorEx("failed to acquire BaitData from type: " + type);
451 }
452
453 #ifdef DEVELOPER
454 if (IsCLIParam("catchingLogs"))
455 {
456 if (m_Bait)
457 Print("dbgTrapz | UpdateUsedBait to: " + m_Bait + " | with base bait probability used: " + m_BaitCompatibilityMap.Get(type).m_BaseProbability);
458 else
459 Print("dbgTrapz | UpdateUsedBait to 'null'!");
460 }
461 #endif
462 }
463
464 override void UpdateBaseProbability(YieldItemBase yItem)
465 {
466 int baitType = ECatchingBaitCategories.BAIT_TYPE_EMPTY;
467 int usedType = -1;
468 float probability = -1;
469 float highestProbability = 0.0;
470 int count = m_BaitCompatibilityMap.Count();
471 for (int i = 0; i < count; i++)
472 {
473 baitType = m_BaitCompatibilityMap.GetKey(i);
474 probability = m_BaitCompatibilityMap.Get(baitType).m_BaseProbability * yItem.GetBaitTypeSensitivity(baitType);
475 if (probability > highestProbability)
476 {
477 highestProbability = probability;
478 usedType = baitType;
479 }
480 }
481
482 m_CumulativeTrappingSuccess = Math.Clamp(highestProbability,0,1);
483 #ifdef DEVELOPER
484 if (IsCLIParam("catchingLogs"))
485 {
486 //Print("********************");
487 Print("dbgTrapz | using bait type: " + baitType + " to catch: " + yItem);
488 }
489 #endif
490 UpdateUsedBait(usedType);
491
492 #ifdef DEVELOPER
493 if (IsCLIParam("catchingLogs"))
494 {
495 float dbgProb;
497 Print("dbgTrapz | starting catching of " + yItem + " | at probability: " + dbgProb + " | with target success: " + m_CumulativeTrappingSuccess);
498 }
499 #endif
500 }
501
502 override bool ModifySignalProbability(inout float probability)
503 {
504 probability = 1 - Math.Pow((1 - m_CumulativeTrappingSuccess),(1/m_AttemptsCount));
505
506 return true;
507 }
508
509 void RemoveBait()
510 {
511 if (m_Bait)
512 m_Bait.DeleteSafe();
513 }
514
515 void ReduceBaitQty(float qtyNorm)
516 {
517 if (m_Bait)
518 {
519 if (m_Bait.HasQuantity() && !m_Bait.IsSplitable())
520 m_Bait.SetQuantityNormalized((m_Bait.GetQuantityNormalized() - qtyNorm));
521 else
522 m_Bait.DeleteSafe();
523 }
524 }
525}
526
527class CatchingContextTrapFishSmall : CatchingContextTrapsBase
528{
529 override protected void InitCatchMethodMask()
530 {
531 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_SMALL;
532 }
533}
534
536{
537 override protected void InitCatchMethodMask()
538 {
539 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_LARGE;
540 }
541}
542
543class CatchingContextTrapLandSnare : CatchingContextTrapsBase
544{
545 override protected void InitCatchMethodMask()
546 {
547 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_LANDTRAP_SNARE;
548 }
549}
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.

Используется в InitCatchingItemData().