require( "scripts/game/level_params.lua" );
require( "scripts/game/upgrades.lua" );
-- upgrades endless mode
require( "scripts/levels/endless_mode/upgrades_07.lua" );
require( "scripts/levels/deflevel.lua" );
-- functions from endless mode only
require( "scripts/levels/endless_mode/deflevel_endless.lua" );

--для результатов по концу
--end_level_info={ upgrades={"lemonad"} };
end_level_info={ };
active_tutorials={"telphon_talk", "endless_score_1", "endless_score_2_a",
                  "endless_score_2_b", "endless_score_3","endless_score_4_a",
                  "endless_score_4_b", "endless_score_5_a", "endless_score_5_b",
                  "endless_score_6_a", "endless_score_6_b", "endless_score_7", 
                  "endless_score_8_a","endless_score_8_b","endless_score_9", 
                  "endless_score_10", "endless_score_11"
                  };
                  
CustomSheep = " \
aObj.Params.health=5000;    \
aObj.Params.Impatience=80; \
aObj.Params.thirst=3000;    \
aObj.Params.hungry=3500;    \
aObj.Params.create_product=10;    \
aObj.Tasks.eating.time_tick=450;  \
aObj.Tasks.eating.restore_health=1000; \
aObj.Tasks.eating.sleeping={6}; \
aObj.Tasks.watering.time_tick=350;  \
aObj.Tasks.watering.restore_health=1000;  \
aObj.Tasks.watering.sleeping={3}; \
aObj.Tasks.shearing.time_tick=1000;  \
aObj.Tasks.shearing.restore_health=1000;  \
aObj.Tasks.shearing.sleeping={10}; \
aObj.Params.first_delay_desire = { 0 }; \
aObj.Params.MaxImpatience=200; \
";

CustomCow = " \
aObj.Params.image= \"cow3brown\";\
aObj.Params.health=5000;    \
aObj.Params.Impatience=80;  \
aObj.Params.thirst=4000;    \
aObj.Params.hungry=4500;    \
aObj.Params.create_product=50;    \
aObj.Tasks.eating.time_tick=400; \
aObj.Tasks.eating.restore_health=1000; \
aObj.Tasks.eating.sleeping={4}; \
aObj.Tasks.watering.time_tick=300;  \
aObj.Tasks.watering.restore_health=1000;  \
aObj.Tasks.watering.sleeping={4}; \
aObj.Tasks.milking.time_tick=1200;  \
aObj.Tasks.milking.restore_health=1000;  \
aObj.Tasks.milking.sleeping={8}; \
aObj.Params.first_delay_desire = { 6 }; \
aObj.Params.MaxImpatience=200; \
";
           
CustomHen = " \
aObj.Params.image= \"hen_g\"; \
aObj.Params.health=5000;    \
aObj.Params.Impatience=70; \
aObj.Params.thirst=2000;    \
aObj.Params.hungry=2000;    \
aObj.Params.create_product=20;    \
aObj.Tasks.eating.time_tick=250;  \
aObj.Tasks.eating.restore_health=1000; \
aObj.Tasks.eating.sleeping={5}; \
aObj.Tasks.watering.time_tick=250;  \
aObj.Tasks.watering.restore_health=1000;  \
aObj.Tasks.watering.sleeping={3}; \
aObj.Tasks.egging.time_tick=1000;  \
aObj.Tasks.egging.restore_health=1000;  \
aObj.Tasks.egging.sleeping={7}; \
aObj.Params.first_delay_desire = { 0 }; \
aObj.Params.MaxImpatience=200; \
";

CustomDad3 = " \
aObj.Params.image='dad3'; \
aObj.Params.speed=1480;            \
aObj.Params.LemonadWork=0.7;      \
aObj.Params.on_drink=1.7;         \
aObj.Params.count_action_drink=3; \
aObj.Tasks.eating.time_tick=100; \
aObj.Tasks.eating.timer=1; \
aObj.Tasks.watering.time_tick=300; \
aObj.Tasks.watering.timer=3; \
aObj.Tasks.eating_cow_end.time_tick=300; \
aObj.Tasks.eating_cow_end.timer=3; \
aObj.Tasks.milking_cow.time_tick=600; \
aObj.Tasks.milking_cow.timer=4; \
aObj.Tasks.fixed1_car.time_tick=800; \
aObj.Tasks.fixed1_car.timer=5;  \
aObj.Tasks.fixed2_car.time_tick=1000; \
aObj.Tasks.fixed2_car.timer=8;  \
aObj.Tasks.fixed1_car1.time_tick=800; \
aObj.Tasks.fixed1_car1.timer=7;  \
aObj.Tasks.watering_cow_end.timer=1;  \
aObj.Tasks.watering_cow_end.time_tick=500;  \
aObj.Tasks.eating_sheep_end.time_tick=300; \
aObj.Tasks.eating_sheep_end.timer=3; \
aObj.Tasks.shearing_sheep.time_tick=700;  \
aObj.Tasks.shearing_sheep.timer=5;  \
aObj.Tasks.watering_sheep_end.timer=1; \
aObj.Tasks.watering_sheep_end.time_tick=500; \
aObj.Tasks.hackfirewood_chopping.time_tick=600; \
aObj.Tasks.hackfirewood_chopping.timer=5; \
aObj.Tasks.heating_house.timer=1; \
aObj.Tasks.heating_house.time_tick=100; \
aObj.Tasks.eating_hen_end.time_tick=300; \
aObj.Tasks.eating_hen_end.timer=3; \
aObj.Tasks.egging_hen.timer=2; \
aObj.Tasks.egging_hen.time_tick=300; \
aObj.Tasks.watering_hen_end.timer=1; \
aObj.Tasks.watering_hen_end.time_tick=500; \
aObj.Tasks.watering_tomato_end.timer=1;  \
aObj.Tasks.watering_tomato_end.time_tick=500;  \
aObj.Tasks.weeding_tomato.timer=2;    \
aObj.Tasks.weeding_tomato.time_tick=500;    \
aObj.Tasks.collection_tomato.timer=3; \
aObj.Tasks.collection_tomato.time_tick=500; \
aObj.Tasks.tools.timer=1; \
aObj.Tasks.tools.time_tick=100; \
aObj.Tasks.tools_ground_end.timer=2; \
aObj.Tasks.tools_ground_end.time_tick=400; \
aObj.Tasks.eating_eatmachine_end.timer=1; \
aObj.Tasks.eating_eatmachine_end.time_tick=100; \
aObj.Tasks.trashing_trash_end.timer=1; \
aObj.Tasks.trashing_trash_end.time_tick=100; \
aObj.Tasks.relax_kreslo.timer=13;             \
aObj.Tasks.relax_kreslo.time_tick=1000;      \
aObj.Tasks.watering_goat_end.timer=1;  \
aObj.Tasks.watering_goat_end.time_tick=500;  \
aObj.Tasks.eating_goat_end.time_tick=300; \
aObj.Tasks.eating_goat_end.timer=3; \
aObj.Tasks.milking_goat.time_tick=600; \
aObj.Tasks.milking_goat.timer=4; \
aObj.Tasks.watering_corn_end.timer=1;  \
aObj.Tasks.watering_corn_end.time_tick=500;  \
aObj.Tasks.weeding_corn.timer=2;    \
aObj.Tasks.weeding_corn.time_tick=500;    \
aObj.Tasks.collection_corn.timer=3; \
aObj.Tasks.collection_corn.time_tick=500; \
aObj.Tasks.make_lemonad.timer = 1;          \
aObj.Tasks.make_lemonad.time_tick = 100;   \
aObj.Tasks.drink_lemonad.timer = 2          \
aObj.Tasks.drink_lemonad.time_tick = 500;  \
aObj.Params.drink_speed_bonus = 1.7;        \
aObj.Params.lemonad_time = 20";
-- aObj.Tasks.make_lemonad  - время, которое отец тратит на готовку лимонада
-- aObj.Tasks.drink_lemonad  - время, которое отец тратит на питьё лимонада
--aObj.Params.drink_speed_bonus = 1.7;  - кофицент, на который лимонад увеличивает скорость  
--aObj.Params.lemonad_time = 10";  - время действия лимонада



CustomMother3 = " \
aObj.Params.image='mother3'; \
aObj.Params.speed=1450;            \
aObj.Params.LemonadWork=0.7;      \
aObj.Params.on_drink=1.7;         \
aObj.Params.count_action_drink=3; \
aObj.Tasks.eating.time_tick=100; \
aObj.Tasks.eating.timer=1; \
aObj.Tasks.watering.time_tick=300; \
aObj.Tasks.watering.timer=2; \
aObj.Tasks.eating_cow_end.time_tick=200; \
aObj.Tasks.eating_cow_end.timer=3; \
aObj.Tasks.milking_cow.time_tick=600; \
aObj.Tasks.milking_cow.timer=4; \
aObj.Tasks.watering_cow_end.timer=1;  \
aObj.Tasks.watering_cow_end.time_tick=500;  \
aObj.Tasks.eating_sheep_end.time_tick=200; \
aObj.Tasks.eating_sheep_end.timer=2; \
aObj.Tasks.shearing_sheep.time_tick=700;  \
aObj.Tasks.shearing_sheep.timer=5;  \
aObj.Tasks.watering_sheep_end.timer=1; \
aObj.Tasks.watering_sheep_end.time_tick=500; \
aObj.Tasks.eating_hen_end.time_tick=200; \
aObj.Tasks.eating_hen_end.timer=2; \
aObj.Tasks.egging_hen.timer=1; \
aObj.Tasks.egging_hen.time_tick=300; \
aObj.Tasks.watering_hen_end.time_tick=500; \
aObj.Tasks.watering_tomato_end.timer=1;  \
aObj.Tasks.watering_tomato_end.time_tick=500;  \
aObj.Tasks.weeding_tomato.timer=2;    \
aObj.Tasks.weeding_tomato.time_tick=500;    \
aObj.Tasks.collection_tomato.timer=3; \
aObj.Tasks.collection_tomato.time_tick=500; \
aObj.Tasks.talk_telephon.timer={5};  \
aObj.Tasks.talk_telephon.time_tick=400;  \
aObj.Tasks.eating_eatmachine_end.timer=1; \
aObj.Tasks.eating_eatmachine_end.time_tick=100; \
aObj.Tasks.trashing_trash_end.timer=1; \
aObj.Tasks.trashing_trash_end.time_tick=100; \
aObj.Tasks.relax_kreslo.timer=3;             \
aObj.Tasks.relax_kreslo.time_tick=1000;      \
aObj.Tasks.tools.timer=1; \
aObj.Tasks.tools.time_tick=100; \
aObj.Tasks.tools_ground_end.timer=2; \
aObj.Tasks.tools_ground_end.time_tick=500; \
aObj.Tasks.watering_goat_end.timer=1;  \
aObj.Tasks.watering_goat_end.time_tick=500;  \
aObj.Tasks.eating_goat_end.time_tick=300; \
aObj.Tasks.eating_goat_end.timer=3; \
aObj.Tasks.milking_goat.time_tick=600; \
aObj.Tasks.milking_goat.timer=2; \
aObj.Tasks.watering_corn_end.timer=1;  \
aObj.Tasks.watering_corn_end.time_tick=500;  \
aObj.Tasks.weeding_corn.timer=2;    \
aObj.Tasks.weeding_corn.time_tick=500;    \
aObj.Tasks.collection_corn.timer=3; \
aObj.Tasks.collection_corn.time_tick=500; \
aObj.Tasks.make_lemonad.timer = 1;          \
aObj.Tasks.make_lemonad.time_tick = 300;   \
aObj.Tasks.drink_lemonad.timer = 2          \
aObj.Tasks.drink_lemonad.time_tick = 500;  \
aObj.Params.drink_speed_bonus = 1.7;        \
aObj.Params.lemonad_time = 20";
-- aObj.Tasks.make_lemonad  - время, которое отец тратит на готовку лимонада
-- aObj.Tasks.drink_lemonad  - время, которое отец тратит на питьё лимонада
--aObj.Params.drink_speed_bonus = 1.7;  - кофицент, на который лимонад увеличивает скорость  
--aObj.Params.lemonad_time = 10";  - время действия лимонада

CustomSister3 = " \
aObj.Params.image='sister3'; \
aObj.Params.speed=1450;            \
aObj.Params.LemonadWork=0.7;      \
aObj.Params.on_drink=1.7;         \
aObj.Params.count_action_drink=3; \
aObj.Tasks.eating.time_tick=100; \
aObj.Tasks.eating.timer=1; \
aObj.Tasks.watering.time_tick=300; \
aObj.Tasks.watering.timer=2; \
aObj.Tasks.eating_cow_end.time_tick=200; \
aObj.Tasks.eating_cow_end.timer=3; \
aObj.Tasks.milking_cow.time_tick=600; \
aObj.Tasks.milking_cow.timer=4; \
aObj.Tasks.watering_cow_end.timer=1;  \
aObj.Tasks.watering_cow_end.time_tick=500;  \
aObj.Tasks.eating_sheep_end.time_tick=200; \
aObj.Tasks.eating_sheep_end.timer=2; \
aObj.Tasks.shearing_sheep.time_tick=700;  \
aObj.Tasks.shearing_sheep.timer=5;  \
aObj.Tasks.watering_sheep_end.timer=1; \
aObj.Tasks.watering_sheep_end.time_tick=500; \
aObj.Tasks.eating_hen_end.time_tick=200; \
aObj.Tasks.eating_hen_end.timer=2; \
aObj.Tasks.egging_hen.timer=1; \
aObj.Tasks.egging_hen.time_tick=300; \
aObj.Tasks.watering_hen_end.time_tick=500; \
aObj.Tasks.watering_tomato_end.timer=1;  \
aObj.Tasks.watering_tomato_end.time_tick=500;  \
aObj.Tasks.weeding_tomato.timer=2;    \
aObj.Tasks.weeding_tomato.time_tick=500;    \
aObj.Tasks.collection_tomato.timer=3; \
aObj.Tasks.collection_tomato.time_tick=500; \
aObj.Tasks.talk_telephon.timer={5};  \
aObj.Tasks.talk_telephon.time_tick=400;  \
aObj.Tasks.eating_eatmachine_end.timer=1; \
aObj.Tasks.eating_eatmachine_end.time_tick=100; \
aObj.Tasks.trashing_trash_end.timer=1; \
aObj.Tasks.trashing_trash_end.time_tick=100; \
aObj.Tasks.relax_kreslo.timer=3;             \
aObj.Tasks.relax_kreslo.time_tick=1000;      \
aObj.Tasks.tools.timer=1; \
aObj.Tasks.tools.time_tick=100; \
aObj.Tasks.tools_ground_end.timer=2; \
aObj.Tasks.tools_ground_end.time_tick=300; \
aObj.Tasks.watering_goat_end.timer=1;  \
aObj.Tasks.watering_goat_end.time_tick=500;  \
aObj.Tasks.eating_goat_end.time_tick=300; \
aObj.Tasks.eating_goat_end.timer=3; \
aObj.Tasks.milking_goat.time_tick=600; \
aObj.Tasks.milking_goat.timer=2; \
aObj.Tasks.make_lemonad.timer = 1;          \
aObj.Tasks.make_lemonad.time_tick = 500;   \
aObj.Tasks.drink_lemonad.timer = 2          \
aObj.Tasks.drink_lemonad.time_tick = 400;  \
aObj.Params.drink_speed_bonus = 1.7;        \
aObj.Params.lemonad_time = 20";
-- aObj.Tasks.make_lemonad  - время, которое отец тратит на готовку лимонада
-- aObj.Tasks.drink_lemonad  - время, которое отец тратит на питьё лимонада
--aObj.Params.drink_speed_bonus = 1.7;  - кофицент, на который лимонад увеличивает скорость  
--aObj.Params.lemonad_time = 10";  - время действия лимонада
               
CustomTomato = " \
aObj.Params.health=3000;    \
aObj.Params.Impatience=100; \
aObj.Params.thirst=4000;    \
aObj.Params.hungry=4500;    \
aObj.Params.create_product=20;    \
aObj.Tasks.weeding.time_tick=1000;  \
aObj.Tasks.weeding.restore_health=1000; \
aObj.Tasks.weeding.sleeping={8}; \
aObj.Tasks.watering.time_tick=1000;  \
aObj.Tasks.watering.restore_health=1000;  \
aObj.Tasks.watering.sleeping={7}; \
aObj.Tasks.collection.time_tick=1000;  \
aObj.Tasks.collection.restore_health=3000;  \
aObj.Tasks.collection.sleeping={7}; \
aObj.Params.first_delay_desire = { 0 }; \
";

CustomCorn = " \
aObj.Params.health=4500;    \
aObj.Params.Impatience=50; \
aObj.Params.thirst=4000;    \
aObj.Params.hungry=4500;    \
aObj.Params.create_product=20;    \
aObj.Tasks.weeding.time_tick=1000;  \
aObj.Tasks.weeding.restore_health=1000; \
aObj.Tasks.weeding.sleeping={8}; \
aObj.Tasks.watering.time_tick=1000;  \
aObj.Tasks.watering.restore_health=1000;  \
aObj.Tasks.watering.sleeping={7}; \
aObj.Tasks.collection.time_tick=1000;  \
aObj.Tasks.collection.restore_health=3000;  \
aObj.Tasks.collection.sleeping={7}; \
aObj.Params.first_delay_desire = { 0 }; \
";
CustomPumpkin= " \
aObj.Params.health=5000;    \
aObj.Params.Impatience=50; \
aObj.Params.thirst=4000;    \
aObj.Params.hungry=4500;    \
aObj.Params.create_product=25;    \
aObj.Tasks.weeding.time_tick=1000;  \
aObj.Tasks.weeding.restore_health=1000; \
aObj.Tasks.weeding.sleeping={8}; \
aObj.Tasks.watering.time_tick=1000;  \
aObj.Tasks.watering.restore_health=1000;  \
aObj.Tasks.watering.sleeping={7}; \
aObj.Tasks.collection.time_tick=1000;  \
aObj.Tasks.collection.restore_health=3000;  \
aObj.Tasks.collection.sleeping={7}; \
aObj.Params.first_delay_desire = { 0 }; \
";               

CustomTelephon = " \
aObj.Triggers.Talk.timer={ 99999 }; \
aObj.Triggers.Talk.first_timer={ 99999 }; \
aObj.Triggers.Talk.amount=0; \
aObj.Triggers.Talk.duration=15; \
";               


CustomFirewood = " \
aObj.Params.create_product=20; \
";

CustomWolf = " \
aObj.Triggers.Evil.timer={ 300 }; \
aObj.Triggers.Evil.first_timer={ 10}; \
aObj.Triggers.Evil.amount=1; \
";               
CustomWolf1 = " \
aObj.Triggers.Evil.timer={ 24 }; \
aObj.Triggers.Evil.first_timer={ 10 }; \
aObj.Triggers.Evil.amount=1; \
";               
CustomEatmachine = " \
aObj.Tasks.eating.time_tick=400; \
";

CustomCar = " \
aObj.Triggers.BreakageTrigger.timer={ 124 }; \
aObj.Triggers.BreakageTrigger.first_timer={ 8 }; \
aObj.Triggers.BreakageTrigger.amount=100; \
";               

CustomCrow = " \
aObj.Triggers.Evil.timer={ 30 }; \
aObj.Triggers.Evil.first_timer={ 800 }; \
aObj.Triggers.Evil.amount=2; \
";               

CustomGoat = " \
aObj.Params.health=4000;    \
aObj.Params.Impatience=70; \
aObj.Params.thirst=3000;    \
aObj.Params.hungry=3500;    \
aObj.Params.create_product=10;    \
aObj.Tasks.eating.time_tick=300;  \
aObj.Tasks.eating.restore_health=1000; \
aObj.Tasks.watering.time_tick=350;  \
aObj.Tasks.watering.restore_health=1000;  \
aObj.Tasks.milking.time_tick=900;  \
aObj.Tasks.milking.restore_health=1000;  \
";

--машинка работает 8 тиков
CustomCheesemachine = " \
aObj.Params.image='cheesemachine3'; \
aObj.Triggers.SwitchOn.time_tick=400; \
";


CustomGround = " \
aObj.Params.Impatience = 55; \
aObj.Params.health=5000;     \
";

CustomGroundTomato = " \
aObj.Params.Impatience = 60; \
aObj.Params.health=5000;     \
aObj.Params.next_product='tomato';     \
aObj.Triggers.DieObj.timer = 2; \
";
CustomGroundPumpkin = " \
aObj.Params.Impatience = 60; \
aObj.Params.health=5000;     \
aObj.Params.next_product='pumpkin';     \
aObj.Triggers.DieObj.timer = 2; \
";
CustomGroundCorn = " \
aObj.Params.Impatience = 60; \
aObj.Params.health=5000;     \
aObj.Params.next_product='corn';     \
aObj.Triggers.DieObj.timer = 2; \
";

CustomCowshed = " \
aObj.Triggers.need_repair.first_timer={ 10000 };\
aObj.Triggers.need_repair.timer={ 500 };\
aObj.Triggers.need_repair.koef = 0.5;\
aObj.Triggers.need_repair.amount = 0;\
";

CustomSheephouse = "\
aObj.Triggers.need_repair.first_timer={ 2 };\
aObj.Triggers.need_repair.timer={ 200 };\
aObj.Triggers.need_repair.koef = 0.5;\
aObj.Triggers.need_repair.amount = 0;\
";


CustomGoathouse = "\
aObj.Triggers.need_repair.first_timer={20000 };\
aObj.Triggers.need_repair.timer={ 350 };\
aObj.Triggers.need_repair.koef = 0.5;\
aObj.Triggers.need_repair.amount = 0;\
";


--aObj.Params.glass_count - количество стаканов лимонада за одно преготовление
-- НЕ ДОЛЖНО БЫТЬ БОЛЬШЕ ЧИСЛА ПЕРСОНАЖЕЙ НА УРОВНЕ!!!
CustomLemonad= "\
aObj.Tasks.make.time_tick = 600; \
aObj.Params.glass_count = 2; \
";

--для создания ворон
TomatoChilds = { tomatos = { {0, params=""} } };

GameObject = {
-- основные параметры
    Params = {
-- параметры которые можно менять    
        PreviewMessage="farm3_easy";
        scrolling = 1;      -- turns scrolling off-on
        levelTime = 99999;    -- время которое длится уровень
        visualWidth = 800;--1000; -- размер игрового поля в пикселах, ширина
        visualHeight = 600;--800; -- размер игрового поля в пикселах, высота
        WinScoresLimit  = 1000; -- кол-во очков необходимое для победы
        ExpertScoresLimit = 1000; -- кол-во очков необходимое для победы
        MaxScoreLimit     = 1000; -- кол-во очков по которым настраивается индикатор очков в игре должно быть больше чем WinScoresLimit и ExpertScoresLimit
        StartBlockTime    = 2000; --задержжка перед началом
        image="level3";
        deltaTime = 10; --время через которое изменяются параметры животных на бесконечном уровне
        LifeHeartsPlus  = 0;  --на сколько увеличивается LifeHearts при восстановлении одного сердечка обьекта
        LifeHeartsMinus = 0.6;  --на сколько уменьшается LifeHearts при потере одного сердечка обьектом
-- параметры которые НЕЛЬЗЯ менять    
        ID="level";         -- do not change this parameter
        width=0;            -- do not change this parameter
        height=0;           -- do not change this parameter
        deltaDay = 1;       -- do not change this parameter
        curDeltaDay = 0;    -- do not change this parameter
        gameEnd = 0;        -- do not change this parameter
        MaxLifeHearts = -1; -- do not change this parameter
        GridData = {};      -- do not change this parameter    
        LifeHearts = 10;    -- do not change this parameter    
    };
-- таблица начисления очков за выполнение задачи    
    Scores = 
    {
        keeping_redbarn_end = 50; -- за относ в амбар чего-либо
        cow__anger = -10;  -- сколько очков снимается за злость коровы
        sheep__anger      = -10;   -- сколько очков снимается за злость всего остального
        hen__anger = -10;
        car1__tools = 80;       -- сколько очков за первый ремонт

        fixed1 = 80;       -- сколько очков за первый ремонт
        fixed2 = 100;      -- сколько очков за второй ремонт

        milking_cow = 70; -- сколько очков за доение    
        refer = 60;         -- за подбор дров
        hackfirewood = 100;  --за рубку дров

        stop_ring = 0;    -- за неподнятый телефон

        collection_tomato = 75; -- за сбор помидоров
        tools_ground_end = 100;    --очки за грядку
        collection_corn = 75; -- за сбор кукурузы
        collection_pumpkins = 70; -- за сбор тыквы

        watering_cow_end   = 30;
        eating_sheep_end   = 60;
        tools_tomato_end = 70;
        tools_corn_end = 70;
        tools_sheep_end = 70;
        tools_cow_end = 70;
        shearing_sheep   = 80; 
        watering_sheep_end   = 30; 
        
        milking_goat = 35;
        watering_goat_end = 30;
        eating_goat_end   = 60;
        
        eating_hen_end   = 60; 
        egging_hen   = 60; 
        watering_hen_end   = 30; 
        --Tomato
        watering_tomato_end   = 40;         
        weeding_tomato = 35;        

        watering_corn_end   = 40;         
        weeding_corn = 35;        

        trashing_eating = 0;
        trashing_watering = 0;

        keeping_tomatostake = 0; 
        keeping_eggtake = 0; 
        keeping_milktake = 0; 
        keeping_sheartake = 0; 
        --за относ молока козы в сыроварку
        switch_on_milkgoattake = 50; 

--[[
        Начисление очков:
        Очки начисляются согласно секции statistic
        действия, относящееся к персонажам заканчиваются на "_имя_обьекта"
         для каждого действия может быть указан спицификатор обьекта, для которого оно считается, для указания перед названием ставится идентификатор и два знака подчёркивания
         например 
         cow__watering  - сколько очков за поение коровы
         mother__shearing_sheep - сколько за стрижку офцы матерью
--]]
    };
-- таблица начисления денег за продукты
    Money = {
        shear = 30; --сколько денег дают за 1 
        milk = 6; --сколько денег дают за 1 milk
        egg = 10;   --сколько денег дают за 1 egg
        tomatos = 10;--сколько денег дают за 1 tomato
        milkgoat = 0;--сколько денег дают за 1 milkgoat
        cheese = 200; --сколько денег дают за 1 кусок сыра
        corns = 10; --за кукурузу
        pumpkin = 10;   --сколько денег дают за 1 тыкву
    };
-- таблица начисления денег за продукты если доступен бонус
    BonusMoney = {
        --бонусные очки за Goal
        Goal = {
            active = 0;    --НЕ ТРОГАТЬ! 
            addition = 0;  -- если 0 то это умножается на кол-во и прибавляется деньгам, иначе просто прибавляется к деньгам
            shear = 10;    --сколько денег дают за 1 
            milk = 3;      --сколько денег дают за 1 milk
            egg = 5;       --сколько денег дают за 1 egg
            tomatos = 5;   --сколько денег дают за 1 tomato
            milkgoat = 0; --сколько денег дают за 1 milkgoat
            cheese = 5;   --сколько денег дают за 1 кусок сыра
            corns = 5; --за кукурузу
            pumpkin = 3;   --сколько денег дают за 1 тыкву
        };
        --бонусные очки за машину
        Car = {
            active = 0;    --НЕ ТРОГАТЬ! 
            addition = 0;  -- если 0 то это умножается на кол-во и прибавляется деньгам, иначе просто прибавляется к деньгам
            shear = 10;    --сколько денег дают за 1 
            milk = 3;      --сколько денег дают за 1 milk
            egg = 5;      --сколько денег дают за 1 egg
            tomatos = 5;   --сколько денег дают за 1 tomato
            milkgoat = 0; --сколько денег дают за 1 milkgoat
            cheese = 4;   --сколько денег дают за 1 кусок сыра
            corns = 5; --за кукурузу
            pumpkin = 3;   --сколько денег дают за 1 тыкву
        };
        -- бонусные очки за телефон
        Telephon = {
            active = 0;    --НЕ ТРОГАТЬ! 
            addition = 0;  -- если 0 то это умножается на кол-во и прибавляется деньгам, иначе просто прибавляется к деньгам
            shear = 0;    --сколько денег дают за 1 
            milk = 0;      --сколько денег дают за 1 milk
            egg = 6;       --сколько денег дают за 1 egg
            tomatos = 0;   --сколько денег дают за 1 tomato
            milkgoat = 0; --сколько денег дают за 1 milkgoat
            cheese = 0;   --сколько денег дают за 1 кусок сыра
            corns = 0; --за кукурузу
            pumpkin = 0;   --сколько денег дают за 1 тыкву
        };
    };
-- таблица игровых обьектов    
  Objects = {
        dad = { x=16, y=4, params=CustomDad3 };         
        mother =  { x=17, y=5, params=CustomMother3 }; 
        sister =  { x=18, y=6, params=CustomSister3 }; 
       
        --telephon = { x=15, y=6,params=CustomTelephon};
        lemonad = { x=14,y=7, params = CustomLemonad, block=true};
        
        dog_point3 = { x=0, y=0 };
        dog = {x=29,y=-9},
        sheephouse3 = {  x=9, y=-10, childs = {sheep = {  {0, params=CustomSheep },{8, params=CustomSheep, block=true},{16, params=CustomSheep, block=true} } }, params=CustomSheephouse};         
        goathouse3 = {  x=15, y=-17 , childs = {goat3_ = {  {0, params=CustomGoat}, {0, params=CustomGoat }, {0, params=CustomGoat, block=true} } }, params=CustomGoathouse};         
        cowshed3 = {  x=28, y=-3,  childs = {cow = {  {0, params=CustomCow, block=true},{0, params=CustomCow, block=true},{0, params=CustomCow, block=true} } }, params=CustomCowshed };       
        henhouse3 = { x=8, y =-1, childs = { hen3 = { {0,params=CustomHen}, {0,params=CustomHen, block=true}, {0,params=CustomHen, block=true} } }};

        ground_el = { {x=15, y = 0, params=CustomGroundPumpkin, block=true}, {x=16, y = -2,childs = {crow1 = {  {0, params=CustomCrow}}}, params=CustomGroundPumpkin, block=true}, {x=14, y = 3, params=CustomGroundTomato, block=true} };
        pond_double3 = { x=18, y=-6 };
        house3 = { x=14, y=9};
        redbarn3 = { x=1 , y =-3 };


        car3 = { x=22, y=-11, params=CustomCar, block=true };
        ambar3 = { x=21, y=6 };
        chopping = { x=26, y=-8, childs = { firewood = { {0, params=CustomFirewood} } } , block=true};
        workshop3 = { x=8, y =5 };
        wolf = {x = 7, y = 4, params=CustomWolf, block=true };

        cheesemachine = {x = 27, y = -13, params=CustomCheesemachine};

        eatmachine = {x = 23, y = 3, childs = {portion = {  {0},{0}  } }, params=CustomEatmachine};
        -- по x = -1 от eatmachine(большой) y = такой же
        eatmachine_m = {x = 22, y = 3, childs = {portion = {  {0}  } }, params=CustomEatmachine, block=true};
        trash = {x=12, y = 4};
        --kreslo = { x=16, y =-3, block=true };
    };
-- обьекты, которые создаются только в определённом случаи  

    NeedProducts = 
    {

    },     
    
    
-- все что ниже этой линии не трогать    
    
-- do not change this array    
    Statics = {
        die_cow = 0;       
        create_cow =0;
        
        ProductName={"milk","shear","egg","tomatos","cheese","corns"}; --"milkgoat"
        indexStatics = 1;
        milk = -1;
        shear = -1;
        egg = -1;
        tomatos = -1;
        --milkgoat = -1;
        cheese = -1;
        corns = -1;
        
        score = 0;
        bonus_score = 0;
        cows_milked = 0;
        real_die_cow = 0;   
        real_die_sheep = 0; 
    };
    -- list of all tasks for an object
    Tasks = { };
    -- list of all triggers for an object
    Triggers = { 
        TimeLevel = { FuncName="TimeTrigger", NotRunWhen = {}; };
    };
    --tasks to be performed after an object is created
    InitActiveTasks = {};   -- InitActiveTasks = {"EatingTask","DrinkingTask"};
    --tasks an object is waiting ofr after it is created
    InitExpectedTasks = {}; -- InitExpectedTasks = {"EatingTask","DrinkingTask"};
};
--жизненный цикл животных уровня
life_cycle = {
-- жизненый цикл для всех коров, параметр first_pause обязателен 
-- и всегда ТОЛЬКО первый, но он может быть равен 0
cow = {
    -- корова № 1
    {
        { "first_pause", 0 };
        
        { "eating", 0 };
        { "watering", 0 };
        { "tools", 0 };
        { "milking", 30 };

    };
    -- корова № 2
    {
        { "first_pause", 0 };
        

        { "eating", 0 };
        { "watering", 0  };
        { "tools", 0 };
        { "milking", 32 };

    };
    -- корова № 3
    {
        { "first_pause", 0 };
        
        { "eating", 0 };
        { "watering", 0 };
        { "tools", 0 };
        { "milking", 50 };
    };
};
hen = {
    --кура № 1
    {
        { "first_pause", 0 };

        { "eating", 0 };
        { "watering", 0 };
        { "egging", 30 };
    };
    --кура № 2
    {
        { "first_pause", 0 };

        { "eating", 0 };
        { "watering", 0 };
        { "egging", 31};
    };
    --кура № 3
    {
        { "first_pause", 0 };

        { "eating", 0 };
        { "watering", 0 };
        { "egging", 29};
    };
};
sheep = {
    --овца № 1
    {
        { "first_pause", 0 };

        { "watering", 0 };
        { "tools", 0 };  
        { "eating", 0 };
        { "shearing", 26 };

    };
    --овца № 2
    {
        { "first_pause", 0 };

        { "watering", 0 };
        { "tools", 0 };  
        { "eating", 0 };
        { "shearing", 35 };

    };
    --овца № 3
    {
        { "first_pause", 0 };

        { "watering", 0 };
        { "tools", 0 };  
        { "eating", 0 };
        { "shearing", 40 };

    };
};
tomato = {
    --помидоры № 1
    {
        { "first_pause", 5 };

        { "watering", 10 };
        { "weeding", 15};
        { "collection", 20 };
        { "watering", 5 };
        { "weeding", 0};
        { "collection", 10 };      
        { "watering", 10 };
        { "weeding", 15};
        { "collection", 20 };
        { "watering", 0 };
        { "weeding", 4};
        { "collection", 10 };
    };
    --помидоры № 2
    {
        { "first_pause", 10 };
        
        { "tools", 15 };
        { "watering", 10 };
        { "weeding", 15};
        { "collection", 20 };
        { "watering", 5 };
        { "weeding", 0};
        { "collection", 10 };     
        { "watering", 10 };
        { "weeding", 15};
        { "collection", 20 };
        { "watering", 0 };
        { "weeding", 4};
        { "collection", 10 };

    };
};
corn = {
    --corn № 1
    {
        { "first_pause", 18 };
        
        { "watering", 10 };
        { "tools", 10 };
        { "collection", 20 };
        { "watering", 5 };
        { "tools", 10 };
        { "collection", 10 };
        { "watering", 10 };
        { "tools", 10 };
        { "collection", 20 };
        { "watering", 0 };
        { "tools", 10 };
        { "collection", 10 };
    };
    --corn № 2
    {
        { "first_pause", 10 };
        
        { "watering", 8 };
        { "tools", 10 };
        { "collection", 10 };
        { "watering", 10 };
        { "tools", 10 };
        { "collection", 15 };
        { "watering", 10 };
        { "tools", 10 };
        { "collection", 10 };

    };
};
pumpkins = {
    --тыква № 1
    {
        { "first_pause", 5 };

        { "watering", 5 };
        { "weeding", 5 };
        { "tools", 5 };
        { "collection", 5 };
    };
    --тыква № 2
    {
        { "first_pause", 5 };

        { "watering", 5 };
        { "weeding", 5 };
        { "tools", 5 };
        { "collection", 5 };
    };
    --тыква № 3
    {
        { "first_pause", 5 };

        { "watering", 5 };
        { "weeding", 5 };
        { "tools", 5 };
        { "collection", 5 };
    };
};
ground = {
    --грядка № 1
    {
        { "first_pause", 30 };
        
        { "weeding", 10};
        { "tools", 5 };
        { "switch_to_tomato", 5000 };
    };
};
goat = {
    --коза № 1
    {
        { "first_pause", 0 };

        { "eating", 0 };
        { "watering", 0 };
        { "milking", 33 };

    };
    --коза № 2
    {
        { "first_pause", 0 };

        { "eating", 0 };
        { "watering", 0 };
        { "milking", 34 };
    };
    --коза № 3
    {
        { "first_pause", 0 };

        { "eating", 0 };
        { "watering", 0 };
        { "milking", 34 };
    };
};
};
--для combo
AngerScores = {
-- при потере меньше одного первый раз очки=first_minus, а дальше к этому прибавляется еще по delta за каждый раз, пока в минусах
--сколько сердечек сейчас, после потери
--                                   1         2        3          4       5  
    all = {  20,  0,  0,  0,  0, delta = 5, first_minus = 25 };  
};

function GameObject:Get()
    return self;
end

function GetParams()
    aObj = GameObject:Get();   
    return aObj.Params;
end
function GetStatics()
    aObj = GameObject:Get();   
    return aObj.Statics;
end


