Epoch/Sources/epoch_server_events/EpochEvents/GardenManager.sqf
2018-04-20 15:12:39 +02:00

75 lines
2.4 KiB
Plaintext

/*
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","SeedPacket_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;
// init var if not set
if (isNil "EPOCH_activeGardens") then {EPOCH_activeGardens = []};
// remove any null objects
EPOCH_activeGardens = EPOCH_activeGardens - [objNull];
_modifiedGardens = [];
{
_garden = _x;
_cargo = magazineCargo _x;
// find all seeds
_seeds = _cargo select {_x in _seedClasses};
// find all baby plants
_babies = _cargo select {_x in _babyClasses};
// find all teen plants
_teens = _cargo select {_x in _teenClasses};
// find all mature plants
_mature = _cargo select {_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 EPOCH_activeGardens;
// force all modified gardens to save via queue
if !(_modifiedGardens isEqualTo []) then {
[_modifiedGardens] call EPOCH_server_save_vehicles;
};