Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
cleanrags.c
Go to the documentation of this file.
1 class 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  {
66  ItemBase rags;
67  Class.CastTo(rags, ingredients[0]);
68  ItemBase container;
69  Class.CastTo(container, ingredients[1]);
70 
71  if ( container.GetLiquidType() == LIQUID_WATER && container.GetQuantity() > 0 && rags.GetHealthLevel() > 1)
72  {
73  return true;
74  }
75  else
76  {
77  return false;
78  }
79  }
80 
81  override void Do(ItemBase ingredients[], PlayerBase player,array<ItemBase> results, float specialty_weight)//gets called upon recipe's completion
82  {
83  /*
84  this function will clean the rags and consume the appropriate amount of cleaning liquid,
85  if there is insufficient liquid to cover the "repair", the rags will only repair proportionally
86  */
87  //TODO implement SS 2.0 to amount of liquid used
88  ItemBase rags;
89  Class.CastTo(rags, ingredients[0]);
90  ItemBase container;
91  Class.CastTo(container, ingredients[1]);
92 
93  float rags_health = rags.GetHealth("","");
94  int rags_quantity = rags.GetQuantity();
95 
96  float rags_combined_damage = (100 - rags_health) * rags_quantity;
97 
98  int liquid_quantity = container.GetQuantity();
99  int liquid_required = rags_combined_damage * 2;
100 
101  float used_ratio = 0;
102  float heal = 0;
103 
104  if( liquid_quantity > liquid_required )
105  {
106  container.AddQuantity(-liquid_required);
107  heal = rags_combined_damage / rags_quantity;
108  }
109  else
110  {
111  container.SetQuantity(0);
112  used_ratio = liquid_quantity / liquid_required;
113  heal = (rags_combined_damage / rags_quantity) * used_ratio;
114 
115  }
116  heal = Math.Clamp(heal, 0, (70 - rags_health));
117  rags.AddHealth("", "",heal);
118  /*
119  Debug.Log("liquid_quantity: "+ToString(liquid_quantity),"recipes");
120  Debug.Log("used_ratio: "+ToString(used_ratio),"recipes");
121  Debug.Log("rags_combined_damage: "+ToString(rags_combined_damage),"recipes");
122  Debug.Log("liquid_required: "+ToString(liquid_required),"recipes");
123  Debug.Log("healing applied: "+ToString(heal),"recipes");
124  */
125 
126  /*
127  PluginTransmissionAgents mta = GetPlugin(PluginTransmissionAgents);
128  mta.RemoveAllAgents(rags);
129  */
130  }
131 };
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
LIQUID_WATER
const int LIQUID_WATER
Definition: constants.c:505
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
Class
Super root of all classes in Enforce script.
Definition: enscript.c:10