mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-07-09 14:16:08 +00:00
Adjust unit growth calculations with player metrics
Updated unit growth calculations based on player progression and growth factor.
This commit is contained in:
@@ -33,25 +33,37 @@ INSERT INTO %PREFIX%oids VALUES %VILLAGEID%;
|
||||
|
||||
SET @noVillage = ((SELECT id FROM %PREFIX%oids LIMIT 1) = -1);
|
||||
|
||||
-- Get the number of players
|
||||
SELECT COUNT(*) INTO @playerCount FROM %PREFIX%users WHERE tribe != 0;
|
||||
|
||||
-- Calculate average progression for all real players (owner > 6) from culture points (CP) and population of villages (pop)
|
||||
SELECT AVG(pop + cp) INTO @avgPlayerProgress FROM %PREFIX%vdata WHERE owner > 6;
|
||||
|
||||
-- ----------------------------------------------------------------
|
||||
-- Calculate growth factor based on player progression
|
||||
-- Scale between 0.3 and 3.0
|
||||
-- ----------------------------------------------------------------
|
||||
SET @growthFactor = LEAST(3.0, GREATEST(0.3, @avgPlayerProgress / 1000));
|
||||
|
||||
-- faster access to first oasis ID, so we don't need to reselect all the time below
|
||||
SET @firstVillage = (SELECT id FROM %PREFIX%oids LIMIT 1);
|
||||
|
||||
-- minimum and maximum number of units for oasis with "high" field set to 0
|
||||
SET @minUnitsForOasis0 = 15;
|
||||
SET @maxUnitsForOasis0 = 30;
|
||||
SET @minUnitsForOasis0 = GREATEST(5, FLOOR(5 * @growthFactor));
|
||||
SET @maxUnitsForOasis0 = LEAST(FLOOR(@minUnitsForOasis0 + 5 + (@playerCount * 1.5) * @growthFactor), 30);
|
||||
|
||||
-- minimum and maximum number of units for oasis with "high" field set to 1
|
||||
SET @minUnitsForOasis1 = 50;
|
||||
SET @maxUnitsForOasis1 = 70;
|
||||
SET @minUnitsForOasis1 = GREATEST(10, FLOOR(10 * @growthFactor));
|
||||
SET @maxUnitsForOasis1 = LEAST(FLOOR(@minUnitsForOasis1 + 10 + (@playerCount * 2) * @growthFactor), 60);
|
||||
|
||||
-- minimum and maximum number of units for oasis with "high" field set to 2
|
||||
SET @minUnitsForOasis2 = 90;
|
||||
SET @maxUnitsForOasis2 = 120;
|
||||
|
||||
SET @minUnitsForOasis2 = GREATEST(20, FLOOR(20 * @growthFactor));
|
||||
SET @maxUnitsForOasis2 = LEAST(FLOOR(@minUnitsForOasis2 + 15 + (@playerCount * 3) * @growthFactor), 90);
|
||||
|
||||
-- Setting a maximum for every type of Oasis so large servers won't turn oasis into fortresses
|
||||
SET @maxUnitsForOasis0 = LEAST(@maxUnitsForOasis0, 30);
|
||||
SET @maxUnitsForOasis1 = LEAST(@maxUnitsForOasis1, 60);
|
||||
SET @maxUnitsForOasis2 = LEAST(@maxUnitsForOasis2, 90);
|
||||
|
||||
-- ----------------------------------------
|
||||
-- reset oasis data (conquered > unoccupied)
|
||||
@@ -109,9 +121,9 @@ UPDATE %PREFIX%units u
|
||||
JOIN %PREFIX%odata o
|
||||
ON u.vref = o.wref
|
||||
SET
|
||||
u.u35 = u.u35 + (FLOOR(5 + RAND() * 10)),
|
||||
u36 = u36 + (FLOOR(0 + RAND() * 5)),
|
||||
u37 = u37 + (FLOOR(0 + RAND() * 5))
|
||||
u.u35 = u.u35 + FLOOR((5 + RAND() * 10) * @growthFactor),
|
||||
u36 = u36 + FLOOR((0 + RAND() * 5) * @growthFactor),
|
||||
u37 = u37 + FLOOR((0 + RAND() * 5) * @growthFactor)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
@@ -163,11 +175,11 @@ UPDATE %PREFIX%units u
|
||||
JOIN %PREFIX%odata o
|
||||
ON u.vref = o.wref
|
||||
SET
|
||||
u35 = u35 + (FLOOR(5 + RAND() * 15)),
|
||||
u36 = u36 + (FLOOR(0 + RAND() * 5)),
|
||||
u37 = u37 + (FLOOR(0 + RAND() * 5)),
|
||||
u38 = u38 + (FLOOR(0 + RAND() * 5)),
|
||||
u40 = u40 + (FLOOR(0 + RAND() * 3))
|
||||
u35 = u35 + FLOOR((5 + RAND() * 15) * @growthFactor),
|
||||
u36 = u36 + FLOOR((0 + RAND() * 5) * @growthFactor),
|
||||
u37 = u37 + FLOOR((0 + RAND() * 5) * @growthFactor),
|
||||
u38 = u38 + FLOOR((0 + RAND() * 5) * @growthFactor),
|
||||
u40 = u40 + FLOOR((0 + RAND() * 3) * @growthFactor)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
@@ -219,9 +231,9 @@ UPDATE %PREFIX%units u
|
||||
JOIN %PREFIX%odata o
|
||||
ON u.vref = o.wref
|
||||
SET
|
||||
u31 = u31 + (FLOOR(10 + RAND() * 15)),
|
||||
u32 = u32 + (FLOOR(5 + RAND() * 15)),
|
||||
u35 = u35 + (FLOOR(0 + RAND() * 10))
|
||||
u31 = u31 + FLOOR((10 + RAND() * 15) * @growthFactor),
|
||||
u32 = u32 + FLOOR((5 + RAND() * 15) * @growthFactor),
|
||||
u35 = u35 + FLOOR((0 + RAND() * 10) * @growthFactor)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
@@ -270,10 +282,10 @@ UPDATE %PREFIX%units u
|
||||
JOIN %PREFIX%odata o
|
||||
ON u.vref = o.wref
|
||||
SET
|
||||
u31 = u31 + (FLOOR(15 + RAND() * 20)),
|
||||
u32 = u32 + (FLOOR(10 + RAND() * 15)),
|
||||
u35 = u35 + (FLOOR(0 + RAND() * 10)),
|
||||
u40 = u40 + (FLOOR(0 + RAND() * 3))
|
||||
u31 = u31 + FLOOR((15 + RAND() * 20) * @growthFactor),
|
||||
u32 = u32 + FLOOR((10 + RAND() * 15) * @growthFactor),
|
||||
u35 = u35 + FLOOR((0 + RAND() * 10) * @growthFactor),
|
||||
u40 = u40 + FLOOR((0 + RAND() * 3) * @growthFactor)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
@@ -322,9 +334,9 @@ UPDATE %PREFIX%units u
|
||||
JOIN %PREFIX%odata o
|
||||
ON u.vref = o.wref
|
||||
SET
|
||||
u31 = u31 + (FLOOR(10 + RAND() * 15)),
|
||||
u32 = u32 + (FLOOR(5 + RAND() * 15)),
|
||||
u34 = u34 + (FLOOR(0 + RAND() * 10))
|
||||
u31 = u31 + FLOOR((10 + RAND() * 15) * @growthFactor),
|
||||
u32 = u32 + FLOOR((5 + RAND() * 15) * @growthFactor),
|
||||
u34 = u34 + FLOOR((0 + RAND() * 10) * @growthFactor)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
@@ -373,10 +385,10 @@ UPDATE %PREFIX%units u
|
||||
JOIN %PREFIX%odata o
|
||||
ON u.vref = o.wref
|
||||
SET
|
||||
u31 = u31 + (FLOOR(15 + RAND() * 20)),
|
||||
u32 = u32 + (FLOOR(10 + RAND() * 15)),
|
||||
u34 = u34 + (FLOOR(0 + RAND() * 10)),
|
||||
u39 = u39 + (FLOOR(0 + RAND() * 3))
|
||||
u31 = u31 + FLOOR((15 + RAND() * 20) * @growthFactor),
|
||||
u32 = u32 + FLOOR((10 + RAND() * 15) * @growthFactor),
|
||||
u34 = u34 + FLOOR((0 + RAND() * 10) * @growthFactor),
|
||||
u39 = u39 + FLOOR((0 + RAND() * 3) * @growthFactor)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
@@ -425,11 +437,11 @@ UPDATE %PREFIX%units u
|
||||
JOIN %PREFIX%odata o
|
||||
ON u.vref = o.wref
|
||||
SET
|
||||
u31 = u31 + (FLOOR(5 + RAND() * 15)),
|
||||
u33 = u33 + (FLOOR(5 + RAND() * 10)),
|
||||
u37 = u37 + (FLOOR(0 + RAND() * 10)),
|
||||
u38 = u38 + (FLOOR(0 + RAND() * 5)),
|
||||
u39 = u39 + (FLOOR(0 + RAND() * 5))
|
||||
u31 = u31 + FLOOR((5 + RAND() * 15) * @growthFactor),
|
||||
u33 = u33 + FLOOR((5 + RAND() * 10) * @growthFactor),
|
||||
u37 = u37 + FLOOR((0 + RAND() * 10) * @growthFactor),
|
||||
u38 = u38 + FLOOR((0 + RAND() * 5) * @growthFactor),
|
||||
u39 = u39 + FLOOR((0 + RAND() * 5) * @growthFactor)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
@@ -485,12 +497,12 @@ UPDATE %PREFIX%units u
|
||||
JOIN %PREFIX%odata o
|
||||
ON u.vref = o.wref
|
||||
SET
|
||||
u31 = u31 + (FLOOR(10 + RAND() * 15)),
|
||||
u33 = u33 + (FLOOR(5 + RAND() * 10)),
|
||||
u37 = u37 + (FLOOR(0 + RAND() * 10)),
|
||||
u38 = u38 + (FLOOR(0 + RAND() * 5)),
|
||||
u39 = u39 + (FLOOR(0 + RAND() * 5)),
|
||||
u40 = u40 + (FLOOR(0 + RAND() * 3))
|
||||
u31 = u31 + FLOOR((10 + RAND() * 15) * @growthFactor),
|
||||
u33 = u33 + FLOOR((5 + RAND() * 10) * @growthFactor),
|
||||
u37 = u37 + FLOOR((0 + RAND() * 10) * @growthFactor),
|
||||
u38 = u38 + FLOOR((0 + RAND() * 5) * @growthFactor),
|
||||
u39 = u39 + FLOOR((0 + RAND() * 5) * @growthFactor),
|
||||
u40 = u40 + FLOOR((0 + RAND() * 3) * @growthFactor)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
@@ -546,4 +558,4 @@ UPDATE %PREFIX%units u
|
||||
WHEN 1 THEN (FLOOR(@minUnitsForOasis1 + RAND() * @maxUnitsForOasis1))
|
||||
WHEN 2 THEN (FLOOR(@minUnitsForOasis2 + RAND() * @maxUnitsForOasis2))
|
||||
END
|
||||
);
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user