Simple Garden Manager v1

currently set to run 24 minutes between each "grow" cycle, so from seed
to mature should take around 1.2 hours from seed to fully mature. Option
to also have mature items spoil on the next cycle (24 minutes).
This commit is contained in:
vbawol 2017-10-03 10:25:59 -05:00
parent 5f640933d9
commit 5060394989
4 changed files with 81 additions and 0 deletions

View File

@ -20,6 +20,7 @@ events[] = {
{ 2700, "Satellite", 0 , 1, -1, {} ,{"VR"}},
{ 900, "ChangeWeather", 1 , 1, -1, {} ,{"VR"}},
{ 1200, "ContainerSpawner", 0 , 1, -1, {} ,{"VR"}},
{ 1440, "GardenManager", 0 , 1, -1, {} ,{"VR"}},
{ 300, "PlantSpawner", 0 , 1 , -1, {} ,{"VR"}} //No comma on last Entry
};

View File

@ -46,6 +46,11 @@ if (isText _staticClassConfig) then {
_storageObj = [_staticClass,_vehicle] call EPOCH_swapBuilding;
// add new gardens to manager
if (_staticClass isEqualTo "Garden_EPOCH") then {
EPOCH_activeGardens pushBackUnique _storageObj;
};
if (_UseIndestructible) then {
if ({_storageObj iskindof _x} count _ExceptedBaseObjects == 0) then {
{

View File

@ -24,6 +24,7 @@ _ExceptedBaseObjects = [_serverSettingsConfig, "ExceptedBaseObjects", []] call E
_diag = diag_tickTime;
EPOCH_StorageSlots = [];
EPOCH_activeGardens = [];
for "_i" from 1 to _maxStorageLimit do {
_storageSlotIndex = EPOCH_StorageSlots pushBack str(_i);
_vehHiveKey = format ["%1:%2", (call EPOCH_fn_InstanceID), _i];
@ -74,6 +75,11 @@ for "_i" from 1 to _maxStorageLimit do {
_vehicle = createVehicle[_class, [0,0,0], [], 0, "CAN_COLLIDE"];
// find gardens
if (_class isEqualTo "Garden_EPOCH") then {
EPOCH_activeGardens pushBack _vehicle;
};
if (_UseIndestructible) then {
if ({_vehicle iskindof _x} count _ExceptedBaseObjects == 0) then {
{

View File

@ -0,0 +1,69 @@
/*
Garden Manager
by Aaron Clark - EpochMod.com
Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_settings/EpochEvents/GardenManager.sqf
*/
//[[[cog import generate_private_arrays ]]]
private ["_babies","_babyClasses","_cargo","_garden","_mature","_matureClasses","_modifiedGardens","_seedClasses","_seeds","_spoil","_teenClasses","_teens"];
//[[[end]]]
_seedClasses = ["SeedPacket_GoldenSeal","SeedP acket_Hemp","SeedPacket_Poppy","SeedPacket_Pumpkin","SeedPacket_Sunflower"];
_babyClasses = ["Sapling_GoldenSeal","Sapling_Hemp","Sapling_Poppy","Sapling_Pumpkin","Sapling_Sunflower"];
_teenClasses = ["SaplingTeen_GoldenSeal","SaplingTeen_Hemp","SaplingTeen_Poppy","SaplingTeen_Pumpkin","SaplingTeen_Sunflower"];
_matureClasses = ["GoldenSeal","Hemp","Poppy","Pumpkin","Sunflower"];
_spoil = false;
_modifiedGardens = [];
{
_garden = _x;
_cargo = magazineCargo _x;
// find all seeds
_seeds = _cargo select {(typeOf _x) in _seedClasses};
// find all baby plants
_babies = _cargo select {(typeOf _x) in _babyClasses};
// find all teen plants
_teens = _cargo select {(typeOf _x) in _teenClasses};
// find all mature plants
_mature = _cargo select {(typeOf _x) in _matureClasses};
// normalize storage
clearWeaponCargoGlobal _x;
clearMagazineCargoGlobal _x;
clearBackpackCargoGlobal _x;
clearItemCargoGlobal _x;
// convert seeds to baby plants.
{
_garden addMagazineCargoGlobal [(_babyClasses param [_seedClasses find _x, _x]), 1];
} forEach _seeds;
// convert baby plants to teen
{
_garden addMagazineCargoGlobal [(_teenClasses param [_babyClasses find _x, _x]), 1];
} forEach _babies;
// convert teen plants to mature
{
_garden addMagazineCargoGlobal [(_matureClasses param [_teenClasses find _x, _x]), 1];
} forEach _teens;
// readd mature plants if spoil == false
if !(_spoil) then {
{
_garden addMagazineCargoGlobal [_x, 1];
} forEach _mature;
};
// push to temp array for save
if !((magazineCargo _garden) isEqualTo _cargo) then {
_modifiedGardens pushBack _garden;
};
} forEach (missionNamespace getVariable ["EPOCH_activeGardens", []]);
// force all modified gardens to save via queue
if !(_modifiedGardens isEqualTo []) then {
_modifiedGardens call EPOCH_server_save_vehicles;
};