Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
fillgasmask_filter.c
Go to the documentation of this file.
1class 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};
InventoryLocation.
Definition enmath.c:7
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
override Widget Init()
Definition dayzgame.c:127
bool m_IngredientUseSoftSkills[MAX_NUMBER_OF_INGREDIENTS]
Definition recipebase.c:48
float m_IngredientAddHealth[MAX_NUMBER_OF_INGREDIENTS]
Definition recipebase.c:49
bool m_IsInstaRecipe
Definition recipebase.c:40
float m_IngredientSetHealth[MAX_NUMBER_OF_INGREDIENTS]
Definition recipebase.c:51
float m_Specialty
Definition recipebase.c:39
float m_MinDamageIngredient[MAX_NUMBER_OF_INGREDIENTS]
Definition recipebase.c:45
float m_MaxQuantityIngredient[MAX_NUMBER_OF_INGREDIENTS]
Definition recipebase.c:44
void InsertIngredient(int index, string ingredient, DayZPlayerConstants uid=BASE_CRAFT_ANIMATION_ID, bool showItem=false)
Definition recipebase.c:159
float m_AnimationLength
Definition recipebase.c:38
float m_MaxDamageIngredient[MAX_NUMBER_OF_INGREDIENTS]
Definition recipebase.c:46
float m_IngredientAddQuantity[MAX_NUMBER_OF_INGREDIENTS]
Definition recipebase.c:50
float m_MinQuantityIngredient[MAX_NUMBER_OF_INGREDIENTS]
Definition recipebase.c:43
bool m_IngredientDestroy[MAX_NUMBER_OF_INGREDIENTS]
Definition recipebase.c:52
bool CanDo(PlayerBase player, TStringVectorMap surfaceTypes)
void Do(PlayerBase player)
class SyncedValue m_Name