Refactor oasis regeneration SQL script

Refactor oasis regeneration SQL script to improve clarity and maintainability.
This commit is contained in:
haki99
2025-12-19 22:57:21 +01:00
committed by GitHub
parent 4e30e49475
commit 510421e4ed
+270 -421
View File
@@ -2,7 +2,8 @@
-- oasis regeneration script -- oasis regeneration script
-- used during installation, server reset, oasis reset & automation (nature repopulation) -- used during installation, server reset, oasis reset & automation (nature repopulation)
-- --
-- author: martinambrus -- original author: martinambrus
-- revised and improved: haki99
-- ---------------------------------------------------------------------------------------- -- ----------------------------------------------------------------------------------------
@@ -118,444 +119,292 @@ WHERE
-- +25% lumber oasis -- +25% lumber oasis
UPDATE %PREFIX%units u UPDATE %PREFIX%units u
JOIN %PREFIX%odata o JOIN %PREFIX%odata o ON u.vref = o.wref
ON u.vref = o.wref SET
SET u.u35 = LEAST(
u.u35 = u.u35 + FLOOR((5 + RAND() * 10) * @growthFactor), u.u35 + FLOOR((5 + RAND() * 10) * @growthFactor),
u36 = u36 + FLOOR((0 + RAND() * 5) * @growthFactor), CASE o.high
u37 = u37 + FLOOR((0 + RAND() * 5) * @growthFactor) WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
WHERE WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
( WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
( END
@firstVillage = -1 ),
AND u.u36 = LEAST(
vref IN( u.u36 + FLOOR((0 + RAND() * 5) * @growthFactor),
SELECT CASE o.high
id WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
FROM WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
%PREFIX%wdata WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
WHERE END
oasistype IN(1,2) ),
) u.u37 = LEAST(
) u.u37 + FLOOR((0 + RAND() * 5) * @growthFactor),
OR CASE o.high
( WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
@firstVillage > -1 WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
AND WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
vref IN ( SELECT id FROM %PREFIX%oids ) END
) )
) WHERE
AND (
( (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype IN (1,2)))
u35 <= ( OR
CASE o.high (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0)) );
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
OR u36 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
OR u37 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
);
-- +25% lumber and +25% crop oasis -- +25% lumber and +25% crop oasis
UPDATE %PREFIX%units u UPDATE %PREFIX%units u
JOIN %PREFIX%odata o JOIN %PREFIX%odata o ON u.vref = o.wref
ON u.vref = o.wref SET
SET u35 = LEAST(u35 + FLOOR((5 + RAND() * 15) * @growthFactor),
u35 = u35 + FLOOR((5 + RAND() * 15) * @growthFactor), CASE o.high
u36 = u36 + FLOOR((0 + RAND() * 5) * @growthFactor), WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
u37 = u37 + FLOOR((0 + RAND() * 5) * @growthFactor), WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
u38 = u38 + FLOOR((0 + RAND() * 5) * @growthFactor), WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
u40 = u40 + FLOOR((0 + RAND() * 3) * @growthFactor) END),
WHERE u36 = LEAST(u36 + FLOOR((0 + RAND() * 5) * @growthFactor),
( CASE o.high
( WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
@firstVillage = -1 WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
AND WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
vref IN( END),
SELECT u37 = LEAST(u37 + FLOOR((0 + RAND() * 5) * @growthFactor),
id CASE o.high
FROM WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
%PREFIX%wdata WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
WHERE WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
oasistype IN(3) END),
) u38 = LEAST(u38 + FLOOR((0 + RAND() * 5) * @growthFactor),
) CASE o.high
OR WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
( WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
@firstVillage > -1 WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
AND END),
vref IN ( SELECT id FROM %PREFIX%oids ) u40 = LEAST(u40 + FLOOR((0 + RAND() * 3) * @growthFactor),
) CASE o.high
) WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
AND WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
( WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
u36 <= ( END),
CASE o.high WHERE
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0)) (
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1)) (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype = 3))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2)) OR
END (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
) );
OR u37 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
OR u38 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
);
-- +25% clay oasis -- +25% clay oasis
UPDATE %PREFIX%units u UPDATE %PREFIX%units u
JOIN %PREFIX%odata o JOIN %PREFIX%odata o ON u.vref = o.wref
ON u.vref = o.wref SET
SET u31 = LEAST(u31 + FLOOR((10 + RAND() * 15) * @growthFactor),
u31 = u31 + FLOOR((10 + RAND() * 15) * @growthFactor), CASE o.high
u32 = u32 + FLOOR((5 + RAND() * 15) * @growthFactor), WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
u35 = u35 + FLOOR((0 + RAND() * 10) * @growthFactor) WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
WHERE WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
( END),
( u32 = LEAST(u32 + FLOOR((5 + RAND() * 15) * @growthFactor),
@firstVillage = -1 CASE o.high
AND WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
vref IN( WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
SELECT WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
id END),
FROM u35 = LEAST(u35 + FLOOR((0 + RAND() * 10) * @growthFactor),
%PREFIX%wdata CASE o.high
WHERE WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
oasistype IN(4,5) WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
) WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
) END),
OR WHERE
( (
@firstVillage > -1 (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype IN (4,5)))
AND OR
vref IN ( SELECT id FROM %PREFIX%oids ) (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
) );
)
AND u31 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u32 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u35 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
);
-- +25% clay and +25% crop oasis -- +25% clay and +25% crop oasis
UPDATE %PREFIX%units u UPDATE %PREFIX%units u
JOIN %PREFIX%odata o JOIN %PREFIX%odata o ON u.vref = o.wref
ON u.vref = o.wref SET
SET u31 = LEAST(u31 + FLOOR((15 + RAND() * 20) * @growthFactor),
u31 = u31 + FLOOR((15 + RAND() * 20) * @growthFactor), CASE o.high
u32 = u32 + FLOOR((10 + RAND() * 15) * @growthFactor), WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
u35 = u35 + FLOOR((0 + RAND() * 10) * @growthFactor), WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
u40 = u40 + FLOOR((0 + RAND() * 3) * @growthFactor) WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
WHERE END),
( u32 = LEAST(u32 + FLOOR((10 + RAND() * 15) * @growthFactor),
( CASE o.high
@firstVillage = -1 WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
AND WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
vref IN( WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
SELECT END),
id u35 = LEAST(u35 + FLOOR((0 + RAND() * 10) * @growthFactor),
FROM CASE o.high
%PREFIX%wdata WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
WHERE WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
oasistype IN(6) WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
) END),
) u40 = LEAST(u40 + FLOOR((0 + RAND() * 3) * @growthFactor),
OR CASE o.high
( WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
@firstVillage > -1 WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
AND WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
vref IN ( SELECT id FROM %PREFIX%oids ) END),
) WHERE
) (
AND u31 <= ( (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype = 6))
CASE o.high OR
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0)) (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1)) );
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u32 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u35 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
);
-- +25% iron oasis -- +25% iron oasis
UPDATE %PREFIX%units u UPDATE %PREFIX%units u
JOIN %PREFIX%odata o JOIN %PREFIX%odata o ON u.vref = o.wref
ON u.vref = o.wref SET
SET u31 = LEAST(u31 + FLOOR((10 + RAND() * 15) * @growthFactor),
u31 = u31 + FLOOR((10 + RAND() * 15) * @growthFactor), CASE o.high
u32 = u32 + FLOOR((5 + RAND() * 15) * @growthFactor), WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
u34 = u34 + FLOOR((0 + RAND() * 10) * @growthFactor) WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
WHERE WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
( END),
( u32 = LEAST(u32 + FLOOR((5 + RAND() * 15) * @growthFactor),
@firstVillage = -1 CASE o.high
AND WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
vref IN( WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
SELECT WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
id END),
FROM u34 = LEAST(u34 + FLOOR((0 + RAND() * 10) * @growthFactor),
%PREFIX%wdata CASE o.high
WHERE WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
oasistype IN(7,8) WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
) WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
) END),
OR WHERE
( (
@firstVillage > -1 (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype IN (7,8)))
AND OR
vref IN ( SELECT id FROM %PREFIX%oids ) (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
) );
)
AND u31 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u32 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u34 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
);
-- +25% iron and +25% crop oasis -- +25% iron and +25% crop oasis
UPDATE %PREFIX%units u UPDATE %PREFIX%units u
JOIN %PREFIX%odata o JOIN %PREFIX%odata o ON u.vref = o.wref
ON u.vref = o.wref SET
SET u31 = LEAST(u31 + FLOOR((15 + RAND() * 20) * @growthFactor),
u31 = u31 + FLOOR((15 + RAND() * 20) * @growthFactor), CASE o.high
u32 = u32 + FLOOR((10 + RAND() * 15) * @growthFactor), WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
u34 = u34 + FLOOR((0 + RAND() * 10) * @growthFactor), WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
u39 = u39 + FLOOR((0 + RAND() * 3) * @growthFactor) WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
WHERE END),
( u32 = LEAST(u32 + FLOOR((10 + RAND() * 15) * @growthFactor),
( CASE o.high
@firstVillage = -1 WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
AND WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
vref IN( WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
SELECT END),
id u34 = LEAST(u34 + FLOOR((0 + RAND() * 10) * @growthFactor),
FROM CASE o.high
%PREFIX%wdata WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
WHERE WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
oasistype IN(9) WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
) END),
) u39 = LEAST(u39 + FLOOR((0 + RAND() * 3) * @growthFactor),
OR CASE o.high
( WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
@firstVillage > -1 WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
AND WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
vref IN ( SELECT id FROM %PREFIX%oids ) END),
) WHERE
) (
AND u31 <= ( (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype = 9))
CASE o.high OR
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0)) (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1)) );
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u32 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u34 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
);
-- +25% crop oasis -- +25% crop oasis
UPDATE %PREFIX%units u UPDATE %PREFIX%units u
JOIN %PREFIX%odata o JOIN %PREFIX%odata o ON u.vref = o.wref
ON u.vref = o.wref SET
SET u31 = LEAST(u31 + FLOOR((5 + RAND() * 15) * @growthFactor),
u31 = u31 + FLOOR((5 + RAND() * 15) * @growthFactor), CASE o.high
u33 = u33 + FLOOR((5 + RAND() * 10) * @growthFactor), WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
u37 = u37 + FLOOR((0 + RAND() * 10) * @growthFactor), WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
u38 = u38 + FLOOR((0 + RAND() * 5) * @growthFactor), WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
u39 = u39 + FLOOR((0 + RAND() * 5) * @growthFactor) END),
WHERE u33 = LEAST(u33 + FLOOR((5 + RAND() * 10) * @growthFactor),
( CASE o.high
( WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
@firstVillage = -1 WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
AND WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
vref IN( END),
SELECT u37 = LEAST(u37 + FLOOR((0 + RAND() * 10) * @growthFactor),
id CASE o.high
FROM WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
%PREFIX%wdata WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
WHERE WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
oasistype IN(10,11) END),
) u38 = LEAST(u38 + FLOOR((0 + RAND() * 5) * @growthFactor),
) CASE o.high
OR WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
( WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
@firstVillage > -1 WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
AND END),
vref IN ( SELECT id FROM %PREFIX%oids ) u39 = LEAST(u39 + FLOOR((0 + RAND() * 5) * @growthFactor),
) CASE o.high
) WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
AND u31 <= ( WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
CASE o.high WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0)) END),
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1)) WHERE
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2)) (
END (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype IN (10,11)))
) OR
AND u33 <= ( (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
CASE o.high );
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u37 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u38 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
);
-- +50% crop oasis -- +50% crop oasis
UPDATE %PREFIX%units u UPDATE %PREFIX%units u
JOIN %PREFIX%odata o JOIN %PREFIX%odata o ON u.vref = o.wref
ON u.vref = o.wref SET
SET u31 = LEAST(u31 + FLOOR((10 + RAND() * 15) * @growthFactor),
u31 = u31 + FLOOR((10 + RAND() * 15) * @growthFactor), CASE o.high
u33 = u33 + FLOOR((5 + RAND() * 10) * @growthFactor), WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
u37 = u37 + FLOOR((0 + RAND() * 10) * @growthFactor), WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
u38 = u38 + FLOOR((0 + RAND() * 5) * @growthFactor), WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
u39 = u39 + FLOOR((0 + RAND() * 5) * @growthFactor), END),
u40 = u40 + FLOOR((0 + RAND() * 3) * @growthFactor) u33 = LEAST(u33 + FLOOR((5 + RAND() * 10) * @growthFactor),
WHERE CASE o.high
( WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
( WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
@firstVillage = -1 WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
AND END),
vref IN( u37 = LEAST(u37 + FLOOR((0 + RAND() * 10) * @growthFactor),
SELECT CASE o.high
id WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
FROM WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
%PREFIX%wdata WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
WHERE END),
oasistype IN(12) u38 = LEAST(u38 + FLOOR((0 + RAND() * 5) * @growthFactor),
) CASE o.high
) WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
OR WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
( WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
@firstVillage > -1 END),
AND u39 = LEAST(u39 + FLOOR((0 + RAND() * 5) * @growthFactor),
vref IN ( SELECT id FROM %PREFIX%oids ) CASE o.high
) WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
) WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
AND u31 <= ( WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
CASE o.high END),
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0)) u40 = LEAST(u40 + FLOOR((0 + RAND() * 3) * @growthFactor),
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1)) CASE o.high
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2)) WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
END WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
) WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
AND u33 <= ( END),
CASE o.high WHERE
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0)) (
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1)) (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype = 12))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2)) OR
END (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
) );
AND u37 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u38 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
)
AND u39 <= (
CASE o.high
WHEN 0 THEN (FLOOR(@minUnitsForOasis0 + RAND() * @maxUnitsForOasis0))
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
END
);