Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
craftfireplace.c
Go to the documentation of this file.
1 class 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  {
76  ItemBase ingredient1 = ingredients[0];
77  ItemBase ingredient2 = ingredients[1];
78 
79  if ( ingredient1.Type() == ingredient2.Type() || ingredient1.GetInventory().GetSlotId(0) == ingredient2.GetInventory().GetSlotId(0) )
80  {
81  return false;
82  }
83 
84  return true;
85  }
86 
87  override void Do( ItemBase ingredients[], PlayerBase player, array<ItemBase> results, float specialty_weight )//gets called upon recipe's completion
88  {
89  ItemBase result = ItemBase.Cast( results.Get( 0 ) );
90  ItemBase ingredient1 = ingredients[0];
91  ItemBase ingredient2 = ingredients[1];
92 
93  //clear inventory reservation
94  if ( !GetGame().IsMultiplayer() )
95  {
97  ingredient1.GetInventory().GetCurrentInventoryLocation( loc );
98  player.GetInventory().ClearInventoryReservationEx( ingredient1, loc );
99  ingredient2.GetInventory().GetCurrentInventoryLocation( loc );
100  player.GetInventory().ClearInventoryReservationEx( ingredient2, loc );
101  }
102 
103  //Ingredient 1
104  if ( ingredient1.GetQuantity() <= 0 )
105  {
106  if ( GetGame().IsServer() && GetGame().IsMultiplayer() )
107  {
108  player.ServerTakeEntityToTargetAttachment( result, ingredient1 ); // multiplayer server side
109  }
110  else
111  {
112  player.LocalTakeEntityToTargetAttachment( result, ingredient1 ); // single player or multiplayer client side
113  }
114  }
115  else
116  {
117  string ingredient1_classname = ingredient1.GetType();
118  ItemBase attachment1 = ItemBase.Cast( result.GetInventory().CreateAttachment( ingredient1_classname ) );
119  MiscGameplayFunctions.TransferItemProperties( ingredient1, attachment1 );
120  attachment1.SetQuantity( 1 );
121  attachment1.SetCleanness(0);
122 
123  //set quantity to ingredient
124  ingredient1.AddQuantity( -1 );
125  }
126 
127  //Ingredient 2
128  if ( ingredient2.GetQuantity() <= 0 )
129  {
130  if ( GetGame().IsServer() && GetGame().IsMultiplayer() )
131  {
132  player.ServerTakeEntityToTargetAttachment( result, ingredient2 ); // multiplayer server side
133  }
134  else
135  {
136  player.LocalTakeEntityToTargetAttachment( result, ingredient2 ); // single player or multiplayer client side
137  }
138  }
139  else
140  {
141  string ingredient2_classname = ingredient2.GetType();
142  ItemBase attachment2 = ItemBase.Cast( result.GetInventory().CreateAttachment( ingredient2_classname ) );
143  MiscGameplayFunctions.TransferItemProperties( ingredient2, attachment2 );
144  attachment2.SetQuantity( 1 );
145  attachment2.SetCleanness(0);
146  //set quantity to ingredient
147  ingredient2.AddQuantity( -1 );
148  }
149  }
150 }
ItemBase
Definition: inventoryitem.c:730
GetGame
proto native CGame GetGame()
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 >