ALMaSS Hare ODDox  1.1
The hare model description following ODdox protocol
WWheatPToxicControl.cpp
Go to the documentation of this file.
1 // WWheatPToxicControl.cpp
3 //
4 /*
5 *******************************************************************************************************
6 Copyright (c) 2011, Christopher John Topping, Aarhus University
7 All rights reserved.
8 
9 Redistribution and use in source and binary forms, with or without modification, are permitted provided
10 that the following conditions are met:
11 
12 Redistributions of source code must retain the above copyright notice, this list of conditions and the
13 following disclaimer.
14 Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
15 the following disclaimer in the documentation and/or other materials provided with the distribution.
16 
17 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
18 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
19 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
20 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
22 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 ********************************************************************************************************
26 */
27 
28 #include "../../Landscape/ls.h"
29 #include "../../Landscape/cropprogs/WWheatPToxicControl.h"
30 
31 
32 extern CfgFloat cfg_ins_app_prop1;
33 extern CfgFloat cfg_herbi_app_prop;
34 extern CfgFloat cfg_fungi_app_prop1;
35 extern CfgFloat cfg_greg_app_prop;
36 extern CfgFloat cfg_pest_product_1_amount;
37 
38 
39 bool WWheatPToxicControl::Do( Farm *a_farm, LE *a_field, FarmEvent *a_ev )
40 {
41  m_farm = a_farm;
42  m_field = a_field;
43  m_ev = a_ev;
44 
45  bool done = false;
46 
47  switch ( m_ev->m_todo )
48  {
49  case wwptc_start:
50  {
51  WWTC_AUTUMN_PLOUGH = false;
52  WWTC_WAIT_FOR_PLOUGH = false;
53  int d1 = g_date->OldDays() + g_date->DayInYear( 15,8 );
54  if (g_date->Date() >= d1)
55  {
56  // if we are really too late then lie and say we are done
57  if (g_date->DayInYear()>g_date->DayInYear(1,10)) {
58  // ---FN---
59  done=true;
60  break;
61  }
62  }
63  if (g_date->Date() >= d1) d1 += 365;
64  if (m_farm->IsStockFarmer()) // StockFarmer
65  {
66  SimpleEvent( d1, wwptc_ferti_s1, false );
67  }
68  else SimpleEvent( d1, wwptc_ferti_p1, false );
69  }
70  break;
71 
72  case wwptc_ferti_p1:
73  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
74  {
75  if (!m_farm->FP_Slurry( m_field, 0.0,
76  g_date->DayInYear( 1,10 ) - g_date->DayInYear())) {
77  SimpleEvent( g_date->Date() + 1, wwptc_ferti_p1, true );
78  break;
79  }
80  }
81  SimpleEvent( g_date->Date(),wwptc_autumn_plough, false );
82  break;
83 
84  case wwptc_ferti_s1:
85  if (!m_farm->FA_Slurry( m_field, 0.0,
86  g_date->DayInYear( 1,10 ) - g_date->DayInYear())) {
87  SimpleEvent( g_date->Date() + 1, wwptc_ferti_s1, true );
88  break;
89  }
90  // This may cause two applications of fertilizer in one day...
91  // --FN--
92  SimpleEvent( g_date->Date(),wwptc_ferti_s2, false );
93  // --FN--
94  break;
95 
96  case wwptc_ferti_s2:
97  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
98  {
99  if (!m_farm->FA_Manure( m_field, 0.0,
100  g_date->DayInYear( 1,10 ) - g_date->DayInYear())) {
101  SimpleEvent( g_date->Date() + 1, wwptc_ferti_s2, true );
102  break;
103  }
104  }
105  SimpleEvent( g_date->Date(),wwptc_autumn_plough, false );
106  break;
107 
108  case wwptc_autumn_plough:
109  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
110  {
111  if (!m_farm->AutumnPlough( m_field, 0.0,
112  g_date->DayInYear( 1,10 ) - g_date->DayInYear())) {
113  SimpleEvent( g_date->Date() + 1, wwptc_autumn_plough, true );
114  break;
115  }
116  else
117  {
118  WWTC_AUTUMN_PLOUGH=true;
119  SimpleEvent( g_date->Date()+1,wwptc_autumn_harrow, false );
120  break;
121  }
122  }
123  SimpleEvent( g_date->Date()+1,wwptc_stubble_harrow1, false );
124  break;
125 
126  case wwptc_autumn_harrow:
127  if (!m_farm->AutumnHarrow( m_field, 0.0,
128  g_date->DayInYear( 10,10 ) - g_date->DayInYear())) {
129  SimpleEvent( g_date->Date() + 1, wwptc_autumn_harrow, true );
130  break;
131  }
132  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,9 ),
133  wwptc_autumn_sow, false );
134  break;
135 
137  if (!m_farm->StubbleHarrowing( m_field, 0.0,
138  g_date->DayInYear( 10,10 ) - g_date->DayInYear())) {
139  SimpleEvent( g_date->Date() + 1, wwptc_stubble_harrow1, true );
140  break;
141  }
142  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,9 ),
143  wwptc_autumn_sow, false );
144  break;
145 
146  case wwptc_autumn_sow:
147  if (!m_farm->AutumnSow( m_field, 0.0,
148  g_date->DayInYear( 20,10 ) - g_date->DayInYear())) {
149  SimpleEvent( g_date->Date() + 1, wwptc_autumn_sow, true );
150  break;
151  }
152  // --FN-- Oooo!
153  //SimpleEvent( g_date->OldDays() + g_date->Date( ),
154  // wwptc_autumn_roll, false );
155  SimpleEvent( g_date->Date() + 1, wwptc_autumn_roll, false );
156  break;
157 
158  case wwptc_autumn_roll:
159  if (( m_ev->m_lock || m_farm->DoIt( 0 ))&& (WWTC_AUTUMN_PLOUGH))
160  {
161  if (!m_farm->AutumnRoll( m_field, 0.0,
162  g_date->DayInYear( 27,10 ) - g_date->DayInYear())) {
163  SimpleEvent( g_date->Date() + 1, wwptc_autumn_roll, true );
164  break;
165  }
166  }
167  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 15,9 ),
168  wwptc_ferti_p2, false );
169  break;
170 
171  case wwptc_ferti_p2:
172  if (( m_ev->m_lock || m_farm->DoIt( 0 )) && (!m_farm->IsStockFarmer()))
173  {
174  if ( m_field->GetVegBiomass()>0)
175  //only when there has been a bit of growth
176  {
177  if (!m_farm->FP_ManganeseSulphate( m_field, 0.0,
178  g_date->DayInYear( 30,10 ) - g_date->DayInYear()))
179  {
180  SimpleEvent( g_date->Date() + 1, wwptc_ferti_p2, true );
181  break;
182  }
183  }
184  }
185  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 20,9 ),
186  wwptc_herbicide1, false );
187  break;
188 
189  case wwptc_herbicide1:
190  if ( m_ev->m_lock || m_farm->DoIt( (int) ( 100*cfg_herbi_app_prop.value() )))
191  {
192  if (!m_farm->HerbicideTreat( m_field, 0.0,
193  g_date->DayInYear( 5,10 ) - g_date->DayInYear())) {
194  SimpleEvent( g_date->Date() + 1, wwptc_herbicide1, true );
195  break;
196  }
197  }
198  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,4 )+365,
199  wwptc_spring_roll, false );
200  break;
201 
202  case wwptc_spring_roll:
203  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
204  {
205  if (!m_farm->SpringRoll( m_field, 0.0,
206  g_date->DayInYear( 30,4 ) - g_date->DayInYear())) {
207  SimpleEvent( g_date->Date() + 1, wwptc_spring_roll, true );
208  break;
209  }
210  }
211  if (m_farm->IsStockFarmer()) // StockFarmer
212  {
213  SimpleEvent( g_date->Date() + 1, wwptc_ferti_s3, false );
214  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,4 ),
215  wwptc_ferti_s4, false );
216  }
217  else
218  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 25,3 ),
219  wwptc_ferti_p3, false );
220  // All need the next threads
221  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 15,4 ),
222  wwptc_herbicide2, false );
223  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 25,4 ),
224  wwptc_GR, false );
225  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 20,4 ),
226  wwptc_fungicide, false );
227  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,5 ),
228  wwptc_insecticide1, false );
229  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,4 ),
230  wwptc_strigling1, false );
231  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,5 ),
232  wwptc_water1, false );
233  break;
234 
235  case wwptc_herbicide2:
236  if ( m_ev->m_lock || m_farm->DoIt( (int) ( 1*cfg_herbi_app_prop.value() )))
237  {
238  if (!m_farm->HerbicideTreat( m_field, 0.0,
239  g_date->DayInYear( 30,4 ) - g_date->DayInYear())) {
240  SimpleEvent( g_date->Date() + 1, wwptc_herbicide2, true );
241  break;
242  }
243  }
244  // End of thread
245  break;
246 
247  case wwptc_GR:
248  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
249  {
250  // --FN--
251  if (!m_farm->GrowthRegulator( m_field, 0.0,
252  g_date->DayInYear( 10,5 ) - g_date->DayInYear())) {
253  SimpleEvent( g_date->Date() + 1, wwptc_GR, true );
254  break;
255  }
256  }
257  // End of thread
258  break;
259 
260  case wwptc_fungicide:
261  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
262  {
263  if (!m_farm->FungicideTreat( m_field, 0.0,
264  g_date->DayInYear( 10,5 ) - g_date->DayInYear())) {
265  SimpleEvent( g_date->Date() + 1, wwptc_fungicide, true );
266  break;
267  }
268  }
269  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 20,5 ),
270  wwptc_fungicide2, false );
271  break;
272 
273  case wwptc_fungicide2:
274  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
275  {
276  if (!m_farm->FungicideTreat( m_field, 0.0,
277  g_date->DayInYear( 15,5 ) - g_date->DayInYear())) {
278  SimpleEvent( g_date->Date() + 1, wwptc_fungicide2, true );
279  break;
280  }
281  }
282  // End of thread
283  break;
284 
285  case wwptc_insecticide1:
286  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
287  {
289  SimpleEvent( g_date->Date() + 1, wwptc_insecticide1, true );
290  break;
291  }
292  else
293  {
294  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,6 ),
295  wwptc_insecticide2, false );
296  break;
297  }
298  }
299  break;
300 
301  case wwptc_insecticide2:
302  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
303  {
305  SimpleEvent( g_date->Date() + 1, wwptc_insecticide2, true );
306  break;
307  }
308  else
309  {
310  if ((g_date->Date()+7)<( g_date->OldDays() + g_date->DayInYear( 15,6 )))
311  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 15,6 ),
312  wwptc_insecticide3, false );
313  else
314  SimpleEvent( g_date->Date()+7, wwptc_insecticide3, false );
315  break;
316  }
317  }
318  break;
319 
320  case wwptc_insecticide3:
321  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
322  {
324  SimpleEvent( g_date->Date() + 1, wwptc_insecticide3, true );
325  break;
326  }
327  }
328  // End of thread
329  break;
330 
331  case wwptc_strigling1:
332  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
333  {
334  if (!m_farm->Strigling( m_field, 0.0,
335  g_date->DayInYear( 25,4 ) - g_date->DayInYear())) {
336  SimpleEvent( g_date->Date() + 1, wwptc_strigling1, true );
337  break;
338  }
339  else
340  {
341  if ((g_date->Date()+7)<( g_date->OldDays() + g_date->DayInYear( 15,6 )))
342  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 25,4),
343  wwptc_strigling2, false );
344  else
345  SimpleEvent( g_date->Date()+7,wwptc_strigling2, false );
346  }
347  }
348  break;
349 
350  case wwptc_strigling2:
351  if (!m_farm->Strigling( m_field, 0.0,
352  g_date->DayInYear( 5,5 ) - g_date->DayInYear())) {
353  SimpleEvent( g_date->Date() + 1, wwptc_strigling2, true );
354  break;
355  }
356  // End of thread
357  break;
358 
359  case wwptc_water1:
360  if ( m_ev->m_lock || m_farm->DoIt( 0 )) // **CJT** Soil type 1-4 only
361  {
362  if (!m_farm->Water( m_field, 0.0,
363  g_date->DayInYear( 15,5 ) - g_date->DayInYear())) {
364  SimpleEvent( g_date->Date() + 1, wwptc_water1, true );
365  break;
366  }
367  else
368  if ((g_date->Date()+5)<( g_date->OldDays() + g_date->DayInYear( 2,5 )))
369  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 2,5 ),
370  wwptc_water2, false );
371  else
372  SimpleEvent( g_date->Date()+5, wwptc_water2, false );
373  }
374  break;
375 
376  case wwptc_water2:
377  if (!m_farm->Water( m_field, 0.0,
378  g_date->DayInYear( 1,6 ) - g_date->DayInYear())) {
379  SimpleEvent( g_date->Date() + 1, wwptc_water2, true );
380  break;
381  }
382  // End of thread
383  break;
384 
385  case wwptc_ferti_p3:
386  if (!m_farm->FP_NPK( m_field, 0.0,
387  g_date->DayInYear( 15,4 ) - g_date->DayInYear())) {
388  SimpleEvent( g_date->Date() + 1, wwptc_ferti_p3, true );
389  break;
390  }
391 
392  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 25,4 ),
393  wwptc_ferti_p4, false );
394  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,4 ),
395  wwptc_ferti_p5, false );
396  break;
397 
398  case wwptc_ferti_p4:
399  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
400  {
401  if (!m_farm->FP_NPK( m_field, 0.0,
402  g_date->DayInYear( 15,5 ) - g_date->DayInYear())) {
403  SimpleEvent( g_date->Date() + 1, wwptc_ferti_p4, true );
404  break;
405  }
406  }
407 
408  // The Main thread
409  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 5,8 ),
410  wwptc_harvest, false );
411  break;
412 
413  case wwptc_ferti_p5:
414  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
415  {
416  if (!m_farm->FP_ManganeseSulphate( m_field, 0.0,
417  g_date->DayInYear( 5,5 ) - g_date->DayInYear())) {
418  SimpleEvent( g_date->Date() + 1, wwptc_ferti_p5, true );
419  break;
420  }
421  }
422  break;
423 
424  case wwptc_ferti_s3:
425  if (!m_farm->FA_Slurry(m_field, 0.0,
426  g_date->DayInYear( 30,5 ) - g_date->DayInYear())) {
427  SimpleEvent( g_date->Date() + 1, wwptc_ferti_s3, true );
428  break;
429  }
430  // The Main thread
431  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 5,8 ),
432  wwptc_harvest, false );
433  break;
434 
435  case wwptc_ferti_s4:
436  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
437  {
438  if (!m_farm->FA_NPK( m_field, 0.0,
439  g_date->DayInYear( 20,4 ) - g_date->DayInYear())) {
440  SimpleEvent( g_date->Date() + 1, wwptc_ferti_s4, true );
441  break;
442  }
443  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 21,4 ),
444  wwptc_ferti_s5, false );
445  }
446  break;
447 
448  case wwptc_ferti_s5:
449  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
450  {
451  if (!m_farm->FA_NPK( m_field, 0.0,
452  g_date->DayInYear( 1,5 ) - g_date->DayInYear())) {
453  SimpleEvent( g_date->Date() + 1, wwptc_ferti_s5, true );
454  break;
455  }
456  }
457  break;
458 
459  case wwptc_harvest:
460  if (!m_farm->Harvest( m_field, 0.0,
461  g_date->DayInYear( 20,8 ) - g_date->DayInYear()))
462  {
463  SimpleEvent( g_date->Date() + 1, wwptc_harvest, true );
464  break;
465  }
466  SimpleEvent( g_date->Date(), wwptc_straw_chopping, false );
467  break;
468 
470  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
471  {
472  if (!m_farm->StrawChopping( m_field, 0.0,
473  g_date->DayInYear( 20,8 ) - g_date->DayInYear())) {
474  SimpleEvent( g_date->Date() + 1, wwptc_straw_chopping, true );
475  break;
476  }
477  else
478  {
479  if ((g_date->Date()+5)<( g_date->OldDays() + g_date->DayInYear( 2,5 )))
480  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,8 ),
481  wwptc_stubble_harrow2, false );
482  else
483  SimpleEvent( g_date->Date()+1, wwptc_stubble_harrow2, false );
484  }
485  } else {
486  SimpleEvent( g_date->Date()+1, wwptc_hay_turning, false );
487  }
488  break;
489 
490  case wwptc_hay_turning:
491  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
492  {
493  if (!m_farm->HayTurning( m_field, 0.0,
494  g_date->DayInYear( 20,8 ) - g_date->DayInYear())) {
495  SimpleEvent( g_date->Date() + 1, wwptc_hay_turning, true );
496  break;
497  }
498  }
499  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 5,8 ),
500  wwptc_hay_baling, false );
501  break;
502 
503  case wwptc_hay_baling:
504  if (!m_farm->HayBailing( m_field, 0.0,
505  g_date->DayInYear( 25,8 ) - g_date->DayInYear())) {
506  SimpleEvent( g_date->Date() + 1, wwptc_hay_baling, true );
507  break;
508  }
509  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,8 ),
510  wwptc_stubble_harrow2, false );
511  break;
512 
514  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
515  {
516  if (!m_farm->StubbleHarrowing( m_field, 0.0,
517  g_date->DayInYear( 15,9 ) - g_date->DayInYear())) {
518  SimpleEvent( g_date->Date() + 1, wwptc_stubble_harrow2, true );
519  break;
520  }
521  }
522  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 15,8 ),
523  wwptc_grubning, false );
524  break;
525 
526  case wwptc_grubning:
527  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
528  {
529  if (!m_farm->DeepPlough( m_field, 0.0,
530  g_date->DayInYear( 15,10 ) - g_date->DayInYear())) {
531  SimpleEvent( g_date->Date() + 1, wwptc_grubning, true );
532  break;
533  }
534  }
535  done=true;
536  // END OF MAIN THREAD
537  break;
538 
539  default:
540  g_msg->Warn( WARN_BUG, "WheatPControl::Do(): "
541  "Unknown event type! ", "" );
542  exit( 1 );
543  }
544  return done;
545 }
wwptc_hay_turning
Definition: WWheatPToxicControl.h:77
wwptc_autumn_plough
Definition: WWheatPToxicControl.h:50
Farm::SpringRoll
virtual bool SpringRoll(LE *a_field, double a_user, int a_days)
Carry out a roll event in the spring on a_field.
Definition: farmfuncs.cpp:525
WWheatPToxicControl::Do
virtual bool Do(Farm *a_farm, LE *a_field, FarmEvent *a_ev)
Definition: WWheatPToxicControl.cpp:39
Farm::FA_Slurry
virtual bool FA_Slurry(LE *a_field, double a_user, int a_days)
Spready slurry on a_field owned by an stock farmer.
Definition: farmfuncs.cpp:965
cfg_fungi_app_prop1
CfgFloat cfg_fungi_app_prop1
Farm::HerbicideTreat
virtual bool HerbicideTreat(LE *a_field, double a_user, int a_days)
Apply herbicide to a_field.
Definition: farmfuncs.cpp:1156
Farm::IsStockFarmer
bool IsStockFarmer(void)
Definition: farm.h:905
Farm::Strigling
virtual bool Strigling(LE *a_field, double a_user, int a_days)
Carry out a mechanical weeding on a_field.
Definition: farmfuncs.cpp:1545
cfg_herbi_app_prop
CfgFloat cfg_herbi_app_prop
Farm::Harvest
virtual bool Harvest(LE *a_field, double a_user, int a_days)
Carry out a harvest on a_field.
Definition: farmfuncs.cpp:1769
wwptc_straw_chopping
Definition: WWheatPToxicControl.h:76
FarmEvent::m_lock
bool m_lock
Definition: farm.h:465
Farm::FP_ManganeseSulphate
virtual bool FP_ManganeseSulphate(LE *a_field, double a_user, int a_days)
Apply Manganse Sulphate to a_field owned by an arable farmer.
Definition: farmfuncs.cpp:727
wwptc_ferti_p2
Definition: WWheatPToxicControl.h:55
Farm::ProductApplication
virtual bool ProductApplication(LE *a_field, double a_user, int a_days, double a_applicationrate, PlantProtectionProducts a_ppp)
Apply test pesticide to a_field.
Definition: farmfuncs.cpp:1445
FarmEvent
A struct to hold the information required to trigger a farm event.
Definition: farm.h:463
wwptc_insecticide3
Definition: WWheatPToxicControl.h:64
Farm::FP_NPK
virtual bool FP_NPK(LE *a_field, double a_user, int a_days)
Apply NPK fertilizer, on a_field owned by an arable farmer.
Definition: farmfuncs.cpp:629
wwptc_ferti_p1
Definition: WWheatPToxicControl.h:47
wwptc_strigling2
Definition: WWheatPToxicControl.h:66
Farm::DoIt
bool DoIt(double a_probability)
Return chance out of 0 to 100.
Definition: farm.cpp:800
wwptc_start
Definition: WWheatPToxicControl.h:45
wwptc_stubble_harrow1
Definition: WWheatPToxicControl.h:52
wwptc_GR
Definition: WWheatPToxicControl.h:59
wwptc_ferti_s2
Definition: WWheatPToxicControl.h:49
Farm::FA_Manure
virtual bool FA_Manure(LE *a_field, double a_user, int a_days)
Spread manure on a_field owned by an stock farmer.
Definition: farmfuncs.cpp:1036
wwptc_ferti_s3
Definition: WWheatPToxicControl.h:72
wwptc_harvest
Definition: WWheatPToxicControl.h:75
wwptc_ferti_p4
Definition: WWheatPToxicControl.h:70
Farm::FA_NPK
virtual bool FA_NPK(LE *a_field, double a_user, int a_days)
Apply NPK fertilizer to a_field owned by an stock farmer.
Definition: farmfuncs.cpp:917
Farm::FungicideTreat
virtual bool FungicideTreat(LE *a_field, double a_user, int a_days)
Apply fungicide to a_field.
Definition: farmfuncs.cpp:1279
wwptc_ferti_p5
Definition: WWheatPToxicControl.h:71
wwptc_stubble_harrow2
Definition: WWheatPToxicControl.h:79
Crop::SimpleEvent
void SimpleEvent(long a_date, int a_todo, bool a_lock)
Adds an event to this crop management.
Definition: farm.cpp:307
Farm::AutumnSow
virtual bool AutumnSow(LE *a_field, double a_user, int a_days)
Carry out a sowing event in the autumn on a_field.
Definition: farmfuncs.cpp:364
Farm::HayBailing
virtual bool HayBailing(LE *a_field, double a_user, int a_days)
Carry out hay bailing on a_field.
Definition: farmfuncs.cpp:2184
Farm::StrawChopping
virtual bool StrawChopping(LE *a_field, double a_user, int a_days)
Carry out straw chopping on a_field.
Definition: farmfuncs.cpp:2132
wwptc_grubning
Definition: WWheatPToxicControl.h:80
wwptc_herbicide2
Definition: WWheatPToxicControl.h:58
wwptc_autumn_roll
Definition: WWheatPToxicControl.h:54
wwptc_hay_baling
Definition: WWheatPToxicControl.h:78
wwptc_fungicide
Definition: WWheatPToxicControl.h:60
wwptc_autumn_sow
Definition: WWheatPToxicControl.h:53
wwptc_ferti_s1
Definition: WWheatPToxicControl.h:48
WWTC_AUTUMN_PLOUGH
#define WWTC_AUTUMN_PLOUGH
Definition: WWheatPToxicControl.h:42
Crop::m_farm
Farm * m_farm
Definition: farm.h:537
Crop::m_field
LE * m_field
Definition: farm.h:538
wwptc_fungicide2
Definition: WWheatPToxicControl.h:61
FarmEvent::m_todo
int m_todo
Definition: farm.h:469
wwptc_ferti_p3
Definition: WWheatPToxicControl.h:69
Farm::AutumnRoll
virtual bool AutumnRoll(LE *a_field, double a_user, int a_days)
Carry out a roll event in the autumn on a_field.
Definition: farmfuncs.cpp:288
Farm::FP_Slurry
virtual bool FP_Slurry(LE *a_field, double a_user, int a_days)
Apply slurry to a_field owned by an arable farmer.
Definition: farmfuncs.cpp:701
ppp_1
Definition: farm.h:422
wwptc_spring_roll
Definition: WWheatPToxicControl.h:57
Farm::Water
virtual bool Water(LE *a_field, double a_user, int a_days)
Carry out a watering on a_field.
Definition: farmfuncs.cpp:1717
Farm::AutumnPlough
virtual bool AutumnPlough(LE *a_field, double a_user, int a_days)
Carry out a ploughing event in the autumn on a_field.
Definition: farmfuncs.cpp:132
Farm::AutumnHarrow
virtual bool AutumnHarrow(LE *a_field, double a_user, int a_days)
Carry out a harrow event in the autumn on a_field.
Definition: farmfuncs.cpp:261
wwptc_water1
Definition: WWheatPToxicControl.h:67
Farm
The base class for all farm types.
Definition: farm.h:767
WWTC_WAIT_FOR_PLOUGH
#define WWTC_WAIT_FOR_PLOUGH
Definition: WWheatPToxicControl.h:41
cfg_ins_app_prop1
CfgFloat cfg_ins_app_prop1
wwptc_insecticide2
Definition: WWheatPToxicControl.h:63
Farm::DeepPlough
virtual bool DeepPlough(LE *a_field, double a_user, int a_days)
Carry out a deep ploughing event on a_field.
Definition: farmfuncs.cpp:417
wwptc_strigling1
Definition: WWheatPToxicControl.h:65
Farm::GrowthRegulator
virtual bool GrowthRegulator(LE *a_field, double a_user, int a_days)
Apply growth regulator to a_field.
Definition: farmfuncs.cpp:1250
wwptc_insecticide1
Definition: WWheatPToxicControl.h:62
wwptc_autumn_harrow
Definition: WWheatPToxicControl.h:51
cfg_pest_product_1_amount
CfgFloat cfg_pest_product_1_amount
wwptc_water2
Definition: WWheatPToxicControl.h:68
Farm::HayTurning
virtual bool HayTurning(LE *a_field, double a_user, int a_days)
Carry out hay turning on a_field.
Definition: farmfuncs.cpp:2159
Crop::m_ev
FarmEvent * m_ev
Definition: farm.h:539
cfg_greg_app_prop
CfgFloat cfg_greg_app_prop
wwptc_herbicide1
Definition: WWheatPToxicControl.h:56
Farm::StubbleHarrowing
virtual bool StubbleHarrowing(LE *a_field, double a_user, int a_days)
Carry out stubble harrowing on a_field.
Definition: farmfuncs.cpp:2209
wwptc_ferti_s4
Definition: WWheatPToxicControl.h:73
wwptc_ferti_s5
Definition: WWheatPToxicControl.h:74