DayZ 1.24
Loading...
Searching...
No Matches
CleanRags.c
Go to the documentation of this file.
1class CleanRags extends RecipeBase
2{
3 override void Init()
4 {
5 m_Name = "#clean";
6 m_IsInstaRecipe = false;//should this recipe be performed instantly without animation
7 m_AnimationLength = 1;//animation length in relative time units
8 m_Specialty = -0.01;// 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, "Rag"); //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, "Pot"); //you can insert multiple ingredients this way
37 InsertIngredient(1, "CanisterGasoline"); //you can insert multiple ingredients this way
38 InsertIngredient(1, "Canteen"); //you can insert multiple ingredients this way
39 InsertIngredient(1, "WaterBottle"); //you can insert multiple ingredients this way
40 InsertIngredient(1, "Vodka"); //you can insert multiple ingredients this way
41 InsertIngredient(1, "WaterPouch_ColorBase"); //you can insert multiple ingredients this way
42 InsertIngredient(1, "Barrel_ColorBase"); //you can insert multiple ingredients this way
43
44 m_IngredientAddHealth[1] = 0;// 0 = do nothing
45 m_IngredientSetHealth[1] = -1; // -1 = do nothing
46 m_IngredientAddQuantity[1] = 0;// 0 = do nothing
47 m_IngredientDestroy[1] = false;// false = do nothing
48 m_IngredientUseSoftSkills[1] = false;// set 'true' to allow modification of the values by softskills on this ingredient
49 //----------------------------------------------------------------------------------------------------------------------
50
51 //result1
52 //AddResult("");//add results here
53
54 m_ResultSetFullQuantity[0] = false;//true = set full quantity, false = do nothing
55 m_ResultSetQuantity[0] = -1;//-1 = do nothing
56 m_ResultSetHealth[0] = -1;//-1 = do nothing
57 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)
58 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)
59 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)
60 m_ResultUseSoftSkills[0] = false;// set 'true' to allow modification of the values by softskills on this result
61 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
62 }
63
64 override bool CanDo(ItemBase ingredients[], PlayerBase player)//final check for recipe's validity
65 {
70
71 if (container.GetLiquidType() == LIQUID_WATER && container.GetQuantity() > 0 && rags.GetHealthLevel() > 1)
72 return true;
73 else
74 return false;
75 }
76
77 override void Do(ItemBase ingredients[], PlayerBase player, array<ItemBase> results, float specialty_weight) //gets called upon recipe's completion
78 {
79 /*
80 this function will clean the rags and consume the appropriate amount of cleaning liquid,
81 if there is insufficient liquid to cover the "repair", the rags will only repair proportionally
82 */
83 //TODO implement SS 2.0 to amount of liquid used
88
89 float rags_health = rags.GetHealth("", "");
90 int rags_quantity = rags.GetQuantity();
91
93
94 int liquid_quantity = container.GetQuantity();
96
97 float used_ratio = 0;
98 float heal = 0;
99
101 {
102 container.AddQuantity(-liquid_required);
104 }
105 else
106 {
107 container.SetQuantity(0);
110
111 }
112 heal = Math.Clamp(heal, 0, (70 - rags_health));
113 rags.AddHealth("", "", heal);
114 /*
115 Debug.Log("liquid_quantity: "+ToString(liquid_quantity),"recipes");
116 Debug.Log("used_ratio: "+ToString(used_ratio),"recipes");
117 Debug.Log("rags_combined_damage: "+ToString(rags_combined_damage),"recipes");
118 Debug.Log("liquid_required: "+ToString(liquid_required),"recipes");
119 Debug.Log("healing applied: "+ToString(heal),"recipes");
120 */
121
122 /*
123 PluginTransmissionAgents mta = GetPlugin(PluginTransmissionAgents);
124 mta.RemoveAllAgents(rags);
125 */
126 }
127};
string m_Name
Super root of all classes in Enforce script.
Definition EnScript.c:11
Definition EnMath.c:7
override bool CanDo(ItemBase ingredients[], PlayerBase player)
Definition CleanRags.c:64
override void Do(ItemBase ingredients[], PlayerBase player, array< ItemBase > results, float specialty_weight)
Definition CleanRags.c:77
override void Init()
Definition CleanRags.c:3
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
const int LIQUID_WATER
Definition constants.c:504
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'.