Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
fillgasmask_filter.c
Go to the documentation of this file.
1 class FillGasMask_Filter extends RecipeBase
2 {
3  override void Init()
4  {
5  m_Name = "#STR_FillFilter";
6  m_IsInstaRecipe = false;//should this recipe be performed instantly without animation
7  m_AnimationLength = 0.5;//animation length in relative time units
8  m_Specialty = 0.02;// value > 0 for roughness, value < 0 for precision
9 
10 
11  //conditions
12  m_MinDamageIngredient[0] = -1;//-1 = disable check
13  m_MaxDamageIngredient[0] = 3;//-1 = disable check
14 
15  m_MinQuantityIngredient[0] = 1;//-1 = disable check
16  m_MaxQuantityIngredient[0] = -1;//-1 = disable check
17 
18  m_MinDamageIngredient[1] = -1;//-1 = disable check
19  m_MaxDamageIngredient[1] = 3;//-1 = disable check
20 
21  m_MinQuantityIngredient[1] = -1;//-1 = disable check
22  m_MaxQuantityIngredient[1] = -1;//-1 = disable check
23  //----------------------------------------------------------------------------------------------------------------------
24 
25  //INGREDIENTS
26  //ingredient 1
27  InsertIngredient(0,"CharcoalTablets");//you can insert multiple ingredients this way
28 
29  m_IngredientAddHealth[0] = 0;// 0 = do nothing
30  m_IngredientSetHealth[0] = -1; // -1 = do nothing
31  m_IngredientAddQuantity[0] = 0;// 0 = do nothing
32  m_IngredientDestroy[0] = false;//true = destroy, false = do nothing
33  m_IngredientUseSoftSkills[0] = false;// set 'true' to allow modification of the values by softskills on this ingredient
34 
35  //ingredient 2
36  InsertIngredient(1,"GasMask_Filter");//you can insert multiple ingredients this way
37  InsertIngredient(1,"GasMask_Filter_Improvised");
38 
39  m_IngredientAddHealth[1] = 0;// 0 = do nothing
40  m_IngredientSetHealth[1] = -1; // -1 = do nothing
41  m_IngredientAddQuantity[1] = 0;// 0 = do nothing
42  m_IngredientDestroy[1] = false;// false = do nothing
43  m_IngredientUseSoftSkills[1] = false;// set 'true' to allow modification of the values by softskills on this ingredient
44  //----------------------------------------------------------------------------------------------------------------------
45  /*
46  //result1
47  //AddResult("GasMask_Filter_Improvised");//add results here
48 
49  m_ResultSetFullQuantity[0] = false;//true = set full quantity, false = do nothing
50  m_ResultSetQuantity[0] = 0;//-1 = do nothing
51  m_ResultSetHealth[0] = -1;//-1 = do nothing
52  m_ResultInheritsHealth[0] = 1;// (value) == -1 means do nothing; a (value) >= 0 means this result will inherit health from ingredient number (value);(value) == -2 means this result will inherit health from all ingredients averaged(result_health = combined_health_of_ingredients / number_of_ingredients)
53  m_ResultInheritsColor[0] = -1;// (value) == -1 means do nothing; a (value) >= 0 means this result classname will be a composite of the name provided in AddResult method and config value "color" of ingredient (value)
54  m_ResultToInventory[0] = -2;//(value) == -2 spawn result on the ground;(value) == -1 place anywhere in the players inventory, (value) >= 0 means switch position with ingredient number(value)
55  m_ResultUseSoftSkills[0] = false;// set 'true' to allow modification of the values by softskills on this result
56  m_ResultReplacesIngredient[0] = -1;// value == -1 means do nothing; a value >= 0 means this result will transfer item propertiesvariables, attachments etc.. from an ingredient value
57  */
58  }
59 
60  override bool CanDo( ItemBase ingredients[], PlayerBase player )//final check for recipe's validity
61  {
62  ItemBase filter = ingredients[1];
63 
64  //Do not fill alread full filters
65  if(filter.GetQuantity() >= filter.GetQuantityMax())
66  {
67  return false;
68  }
69 
70  // Check if not attached to a gas mask
72  filter.GetInventory().GetCurrentInventoryLocation(il);
73  EntityAI inv = il.GetParent();
74 
75  if(inv != null)
76  {
77  if (inv.GetType() == "GP5GasMask" || inv.GetType() == "AirborneMask")
78  {
79  return false;
80  }
81  }
82 
83  return true;
84  }
85 
86  override void Do(ItemBase ingredients[], PlayerBase player,array<ItemBase> results, float specialty_weight)//gets called upon recipe's completion
87  {
88  // Get charcoal quantity
89  ItemBase charcoal = ingredients[0];
90  float charcoalCurrent = charcoal.GetQuantity();
91 
92  // Get filter quantity
93  ItemBase filter = ingredients[1];
94 
95  float filterMax = filter.GetQuantityMax();
96  float filterCurrent = filter.GetQuantity();
97 
98  //1 tablet = 10 quantity
99  float fillAmount = filterCurrent + (charcoalCurrent * 10);
100 
101  // All if possible
102  if(fillAmount >= filterMax)
103  {
104  ingredients[1].SetQuantity(filterMax);
105 
106  //Remove only the used part from charcoal
107  fillAmount = fillAmount - filterMax;
108  ingredients[0].SetQuantity(Math.Round(fillAmount / 10));
109  }
110  else
111  {
112  ingredients[1].SetQuantity( fillAmount);
113  ingredients[0].AddQuantity( - charcoalCurrent);
114  }
115  }
116 };
ItemBase
Definition: inventoryitem.c:730
Do
override protected void Do(PlayerBase player)
Definition: spookyareamisc.c:13
m_Name
string m_Name
Definition: bioslobbyservice.c:35
InventoryLocation
InventoryLocation.
Definition: inventorylocation.c:27
RecipeBase
Definition: recipebase.c:4
PlayerBase
Definition: playerbaseclient.c:1
Init
class InventoryGridController extends ScriptedWidgetEventHandler Init
Definition: uihintpanel.c:46
CanDo
override protected bool CanDo(PlayerBase player, TStringVectorMap surfaceTypes)
Definition: spookyareamisc.c:8
array< ItemBase >
Math
Definition: enmath.c:6
EntityAI
Definition: building.c:5