Existing World Data found in the database! Please empty tables ".TB_PREFIX."odata, ".TB_PREFIX."units, ".TB_PREFIX."vdata, ".TB_PREFIX."wdata before continuing.
";
-}
+$autoStartCroppers = isset($_GET['startCroppers']) && $_GET['startCroppers'] === '1';
?>
+
diff --git a/unx.js b/unx.js
index 7605361d..d61cf7c3 100644
--- a/unx.js
+++ b/unx.js
@@ -897,13 +897,13 @@ if(_i.cookie){var date=new Date();date.setTime(date.getTime()+300000);document.c
if(_i.fest&&he('dorf2')){document.getElementById('content').innerHTML+=_i.fest;}
window.setTimeout(ti,30);}
function he(bj){return window.location.href.indexOf(bj+'.php')!=-1;}
-function vil_levels_toggle(){var cj=$('levels'),dj=$('lswitch');cj.toggleClass('on');dj.toggleClass('on');if(cj.hasClass('on')){document.cookie='t3l=1; expires=Wed, 1 Jan 2020 00:00:00 GMT';}
+function vil_levels_toggle(){var cj=$('levels'),dj=$('lswitch');cj.toggleClass('on');dj.toggleClass('on');if(cj.hasClass('on')){document.cookie='t3l=1; expires=Wed, 1 Jan 2030 00:00:00 GMT';}
else{document.cookie='t3l=1; expires=Thu, 01-Jan-1970 00:00:01 GMT';}
}
-function gmwd(){if(is_ff2&&document.getElementById("gmwi").offsetWidth<50){document.cookie="a3=2; expires=Wed, 1 Jan 2020 00:00:00 GMT";}
-else{document.cookie="a3=1; expires=Wed, 1 Jan 2020 00:00:00 GMT";}
+function gmwd(){if(is_ff2&&document.getElementById("gmwi").offsetWidth<50){document.cookie="a3=2; expires=Wed, 1 Jan 2030 00:00:00 GMT";}
+else{document.cookie="a3=1; expires=Wed, 1 Jan 2030 00:00:00 GMT";}
}
-function gmc(){document.getElementById("gmw").style.display="none";document.cookie="a3=3; expires=Wed, 1 Jan 2020 00:00:00 GMT";}
+function gmc(){document.getElementById("gmw").style.display="none";document.cookie="a3=3; expires=Wed, 1 Jan 2030 00:00:00 GMT";}
function documentWidth() {
return Math.max(
document.documentElement.clientWidth,
@@ -922,4 +922,4 @@ function documentHeight() {
document.body.offsetHeight,
document.documentElement.offsetHeight
);
-}
\ No newline at end of file
+}
diff --git a/var/db/datagen-oasis-troops-regen.sql b/var/db/datagen-oasis-troops-regen.sql
index 6cd3efe0..81c76126 100644
--- a/var/db/datagen-oasis-troops-regen.sql
+++ b/var/db/datagen-oasis-troops-regen.sql
@@ -2,7 +2,8 @@
-- oasis regeneration script
-- used during installation, server reset, oasis reset & automation (nature repopulation)
--
--- author: martinambrus
+-- original author: martinambrus
+-- revised and improved: haki99
-- ----------------------------------------------------------------------------------------
@@ -33,25 +34,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 id > 6;
+-- Calculate average progression for all real players (owner > 6) from culture points (CP) and population of villages (pop)
+SELECT IFNULL(AVG(pop + cp), 0) 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)
@@ -106,444 +119,286 @@ WHERE
-- +25% lumber oasis
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))
- WHERE
- (
- (
- @firstVillage = -1
- AND
- vref IN(
- SELECT
- id
- FROM
- %PREFIX%wdata
- WHERE
- oasistype IN(1,2)
- )
- )
- OR
- (
- @firstVillage > -1
- AND
- vref IN ( SELECT id FROM %PREFIX%oids )
- )
- )
- 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
- )
- 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
- )
- );
+JOIN %PREFIX%odata o ON u.vref = o.wref
+SET
+ u.u35 = LEAST(u.u35 + FLOOR((5 + RAND() * 10) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u.u36 = LEAST(u.u36 + FLOOR((0 + RAND() * 5) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u.u37 = LEAST(u.u37 + FLOOR((0 + RAND() * 5) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END)
+WHERE
+(
+ (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype IN (1,2)))
+ OR
+ (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
+);
-- +25% lumber and +25% crop oasis
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))
- WHERE
- (
- (
- @firstVillage = -1
- AND
- vref IN(
- SELECT
- id
- FROM
- %PREFIX%wdata
- WHERE
- oasistype IN(3)
- )
- )
- OR
- (
- @firstVillage > -1
- AND
- vref IN ( SELECT id FROM %PREFIX%oids )
- )
- )
- AND
- (
- 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
- )
- 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
- )
- );
+JOIN %PREFIX%odata o ON u.vref = o.wref
+SET
+ u35 = LEAST(u35 + FLOOR((5 + RAND() * 15) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u36 = LEAST(u36 + FLOOR((0 + RAND() * 5) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u37 = LEAST(u37 + FLOOR((0 + RAND() * 5) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u38 = LEAST(u38 + FLOOR((0 + RAND() * 5) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u40 = LEAST(u40 + FLOOR((0 + RAND() * 3) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END)
+WHERE
+(
+ (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype = 3))
+ OR
+ (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
+);
-- +25% clay oasis
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))
- WHERE
- (
- (
- @firstVillage = -1
- AND
- vref IN(
- SELECT
- id
- FROM
- %PREFIX%wdata
- WHERE
- oasistype IN(4,5)
- )
- )
- OR
- (
- @firstVillage > -1
- AND
- 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
- );
+JOIN %PREFIX%odata o ON u.vref = o.wref
+SET
+ u31 = LEAST(u31 + FLOOR((10 + RAND() * 15) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u32 = LEAST(u32 + FLOOR((5 + RAND() * 15) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u35 = LEAST(u35 + FLOOR((0 + RAND() * 10) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END)
+WHERE
+(
+ (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype IN (4,5)))
+ OR
+ (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
+);
-- +25% clay and +25% crop oasis
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))
- WHERE
- (
- (
- @firstVillage = -1
- AND
- vref IN(
- SELECT
- id
- FROM
- %PREFIX%wdata
- WHERE
- oasistype IN(6)
- )
- )
- OR
- (
- @firstVillage > -1
- AND
- 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
- );
+JOIN %PREFIX%odata o ON u.vref = o.wref
+SET
+ u31 = LEAST(u31 + FLOOR((15 + RAND() * 20) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u32 = LEAST(u32 + FLOOR((10 + RAND() * 15) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u35 = LEAST(u35 + FLOOR((0 + RAND() * 10) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u40 = LEAST(u40 + FLOOR((0 + RAND() * 3) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END)
+WHERE
+(
+ (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype = 6))
+ OR
+ (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
+);
-- +25% iron oasis
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))
- WHERE
- (
- (
- @firstVillage = -1
- AND
- vref IN(
- SELECT
- id
- FROM
- %PREFIX%wdata
- WHERE
- oasistype IN(7,8)
- )
- )
- OR
- (
- @firstVillage > -1
- AND
- 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
- );
+JOIN %PREFIX%odata o ON u.vref = o.wref
+SET
+ u31 = LEAST(u31 + FLOOR((10 + RAND() * 15) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u32 = LEAST(u32 + FLOOR((5 + RAND() * 15) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u34 = LEAST(u34 + FLOOR((0 + RAND() * 10) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END)
+WHERE
+(
+ (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype IN (7,8)))
+ OR
+ (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
+);
-- +25% iron and +25% crop oasis
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))
- WHERE
- (
- (
- @firstVillage = -1
- AND
- vref IN(
- SELECT
- id
- FROM
- %PREFIX%wdata
- WHERE
- oasistype IN(9)
- )
- )
- OR
- (
- @firstVillage > -1
- AND
- 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
- );
+JOIN %PREFIX%odata o ON u.vref = o.wref
+SET
+ u31 = LEAST(u31 + FLOOR((15 + RAND() * 20) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u32 = LEAST(u32 + FLOOR((10 + RAND() * 15) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u34 = LEAST(u34 + FLOOR((0 + RAND() * 10) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u39 = LEAST(u39 + FLOOR((0 + RAND() * 3) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END)
+WHERE
+(
+ (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype = 9))
+ OR
+ (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
+);
-- +25% crop oasis
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))
- WHERE
- (
- (
- @firstVillage = -1
- AND
- vref IN(
- SELECT
- id
- FROM
- %PREFIX%wdata
- WHERE
- oasistype IN(10,11)
- )
- )
- OR
- (
- @firstVillage > -1
- AND
- 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 u33 <= (
- 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
- );
+JOIN %PREFIX%odata o ON u.vref = o.wref
+SET
+ u31 = LEAST(u31 + FLOOR((5 + RAND() * 15) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u33 = LEAST(u33 + FLOOR((5 + RAND() * 10) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u37 = LEAST(u37 + FLOOR((0 + RAND() * 10) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u38 = LEAST(u38 + FLOOR((0 + RAND() * 5) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u39 = LEAST(u39 + FLOOR((0 + RAND() * 5) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END)
+WHERE
+(
+ (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype IN (10,11)))
+ OR
+ (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
+);
-- +50% crop oasis
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))
- WHERE
- (
- (
- @firstVillage = -1
- AND
- vref IN(
- SELECT
- id
- FROM
- %PREFIX%wdata
- WHERE
- oasistype IN(12)
- )
- )
- OR
- (
- @firstVillage > -1
- AND
- 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 u33 <= (
- 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
- )
- 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
- );
\ No newline at end of file
+JOIN %PREFIX%odata o ON u.vref = o.wref
+SET
+ u31 = LEAST(u31 + FLOOR((10 + RAND() * 15) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u33 = LEAST(u33 + FLOOR((5 + RAND() * 10) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u37 = LEAST(u37 + FLOOR((0 + RAND() * 10) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u38 = LEAST(u38 + FLOOR((0 + RAND() * 5) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u39 = LEAST(u39 + FLOOR((0 + RAND() * 5) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END),
+ u40 = LEAST(u40 + FLOOR((0 + RAND() * 3) * @growthFactor),
+ CASE o.high
+ WHEN 0 THEN FLOOR(@minUnitsForOasis0 + RAND() * (@maxUnitsForOasis0 - @minUnitsForOasis0))
+ WHEN 1 THEN FLOOR(@minUnitsForOasis1 + RAND() * (@maxUnitsForOasis1 - @minUnitsForOasis1))
+ WHEN 2 THEN FLOOR(@minUnitsForOasis2 + RAND() * (@maxUnitsForOasis2 - @minUnitsForOasis2))
+ END)
+WHERE
+(
+ (@firstVillage = -1 AND u.vref IN (SELECT id FROM %PREFIX%wdata WHERE oasistype = 12))
+ OR
+ (@firstVillage > -1 AND u.vref IN (SELECT id FROM %PREFIX%oids))
+);