DayZ 1.24
Loading...
Searching...
No Matches
CraftFireplace.c
Go to the documentation of this file.
1class CraftFireplace extends RecipeBase
2{
3 override void Init()
4 {
5 m_Name = "#STR_CraftFireplace0";
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.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 InsertIngredientEx(0, "WoodenStick", "FireplaceDeploy");//you can insert multiple ingredients this way
28 InsertIngredientEx(0, "Firewood", "FireplaceDeploy_firewood");//you can insert multiple ingredients this way
29 InsertIngredientEx(0, "Rag", "FireplaceDeploy");//you can insert multiple ingredients this way
30 InsertIngredientEx(0, "BandageDressing", "FireplaceDeploy");//you can insert multiple ingredients this way
31 InsertIngredientEx(0, "Paper", "FireplaceDeploy");//you can insert multiple ingredients this way
32 InsertIngredientEx(0, "ItemBook", "FireplaceDeploy");//you can insert multiple ingredients this way
33 InsertIngredientEx(0, "Bark_Birch", "FireplaceDeploy");//you can insert multiple ingredients this way
34 InsertIngredientEx(0, "Bark_Oak", "FireplaceDeploy");//you can insert multiple ingredients this way
35
36 m_IngredientAddHealth[0] = 0;// 0 = do nothing
37 m_IngredientSetHealth[0] = -1; // -1 = do nothing
38 m_IngredientAddQuantity[0] = 0;// 0 = do nothing
39 m_IngredientDestroy[0] = false;//true = destroy, false = do nothing
40 m_IngredientUseSoftSkills[0] = false;// set 'true' to allow modification of the values by softskills on this ingredient
41
42 //ingredient 2
43 InsertIngredient(1, "WoodenStick"); //you can insert multiple ingredients this way
44 InsertIngredient(1, "Firewood"); //you can insert multiple ingredients this way
45 InsertIngredient(1, "Rag"); //you can insert multiple ingredients this way
46 InsertIngredient(1, "BandageDressing"); //you can insert multiple ingredients this way
47 InsertIngredient(1, "Paper"); //you can insert multiple ingredients this way
48 InsertIngredient(1, "GiftWrapPaper"); //you can insert multiple ingredients this way
49 InsertIngredient(1, "ItemBook"); //you can insert multiple ingredients this way
50 InsertIngredient(1, "Bark_Birch"); //you can insert multiple ingredients this way
51 InsertIngredient(1, "Bark_Oak"); //you can insert multiple ingredients this way
52 InsertIngredient(1, "EyeMask_ColorBase"); //you can insert multiple ingredients this way
53
54 m_IngredientAddHealth[1] = 0;// 0 = do nothing
55 m_IngredientSetHealth[1] = -1; // -1 = do nothing
56 m_IngredientAddQuantity[1] = 0;// 0 = do nothing
57 m_IngredientDestroy[1] = false;// false = do nothing
58 m_IngredientUseSoftSkills[1] = false;// set 'true' to allow modification of the values by softskills on this ingredient
59 //----------------------------------------------------------------------------------------------------------------------
60
61 //result1
62 AddResult("Fireplace");//add results here
63
64 m_ResultSetFullQuantity[0] = false;//true = set full quantity, false = do nothing
65 m_ResultSetQuantity[0] = -1;//-1 = do nothing
66 m_ResultSetHealth[0] = -1;//-1 = do nothing
67 m_ResultInheritsHealth[0] = -2;// (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)
68 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)
69 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)
70 m_ResultUseSoftSkills[0] = false;// set 'true' to allow modification of the values by softskills on this result
71 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
72 }
73
74 override bool CanDo(ItemBase ingredients[], PlayerBase player)//final check for recipe's validity
75 {
78
79 if (ingredient1.Type() == ingredient2.Type() || ingredient1.GetInventory().GetSlotId(0) == ingredient2.GetInventory().GetSlotId(0))
80 return false;
81
82 return true;
83 }
84
85 override void Do(ItemBase ingredients[], PlayerBase player, array<ItemBase> results, float specialty_weight) //gets called upon recipe's completion
86 {
87 ItemBase result = ItemBase.Cast(results.Get(0));
90
91 //clear inventory reservation
92 if (!GetGame().IsMultiplayer())
93 {
95 ingredient1.GetInventory().GetCurrentInventoryLocation(loc);
96 player.GetInventory().ClearInventoryReservationEx(ingredient1, loc);
97 ingredient2.GetInventory().GetCurrentInventoryLocation(loc);
98 player.GetInventory().ClearInventoryReservationEx(ingredient2, loc);
99 }
100
101 //Ingredient 1
102 if (ingredient1.GetQuantity() <= 0)
103 {
104 if (GetGame().IsServer() && GetGame().IsMultiplayer())
105 {
106 player.ServerTakeEntityToTargetAttachment(result, ingredient1); // multiplayer server side
107 }
108 else
109 {
110 player.LocalTakeEntityToTargetAttachment(result, ingredient1); // single player or multiplayer client side
111 }
112 }
113 else
114 {
115 string ingredient1_classname = ingredient1.GetType();
116 ItemBase attachment1 = ItemBase.Cast(result.GetInventory().CreateAttachment(ingredient1_classname));
117 MiscGameplayFunctions.TransferItemProperties(ingredient1, attachment1);
118 attachment1.SetQuantity(1);
119 attachment1.SetCleanness(0);
120
121 //set quantity to ingredient
122 ingredient1.AddQuantity(-1);
123 }
124
125 //Ingredient 2
126 if (ingredient2.GetQuantity() <= 0)
127 {
128 if (GetGame().IsServer() && GetGame().IsMultiplayer())
129 {
130 player.ServerTakeEntityToTargetAttachment(result, ingredient2); // multiplayer server side
131 }
132 else
133 {
134 player.LocalTakeEntityToTargetAttachment(result, ingredient2); // single player or multiplayer client side
135 }
136 }
137 else
138 {
139 string ingredient2_classname = ingredient2.GetType();
140 ItemBase attachment2 = ItemBase.Cast(result.GetInventory().CreateAttachment(ingredient2_classname));
141 MiscGameplayFunctions.TransferItemProperties(ingredient2, attachment2);
142 attachment2.SetQuantity(1);
143 attachment2.SetCleanness(0);
144 //set quantity to ingredient
145 ingredient2.AddQuantity(-1);
146 }
147 }
148}
string m_Name
InventoryLocation.
override bool CanDo(ItemBase ingredients[], PlayerBase player)
override void Do(ItemBase ingredients[], PlayerBase player, array< ItemBase > results, float specialty_weight)
override void Init()
proto native CGame GetGame()