From b261212d12494611c95d35f11a1a8cf1dd65eb89 Mon Sep 17 00:00:00 2001 From: Martin Ambrus Date: Sat, 2 Dec 2017 16:17:47 +0100 Subject: [PATCH] fix: expansion slots not being cleared up upon village destruction #400 --- GameEngine/Admin/database.php | 15 +++++++++++++++ GameEngine/Automation.php | 14 ++++++++++++++ sql_updates.txt | 5 +++++ var/db/struct.sql | 5 ++++- 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/GameEngine/Admin/database.php b/GameEngine/Admin/database.php index f47c4bdc..43478246 100755 --- a/GameEngine/Admin/database.php +++ b/GameEngine/Admin/database.php @@ -364,6 +364,21 @@ class adm_DB { $q = "UPDATE ".TB_PREFIX."wdata SET occupied = 0 where id = $wref"; mysqli_query($this->connection, $q); + // clear expansion slots, if this village is an expansion of any other village + $q = " + UPDATE + ".TB_PREFIX."vdata + SET + exp1 = IF(exp1 = $wref, 0, exp1), + exp2 = IF(exp2 = $wref, 0, exp2), + exp3 = IF(exp3 = $wref, 0, exp3) + WHERE + exp1 = $wref OR + exp2 = $wref OR + exp3 = $wref"; + + mysqli_query($this->connection, $q); + $getmovement = $database->getMovement(3,$wref,1); foreach($getmovement as $movedata) { $time = microtime(true); diff --git a/GameEngine/Automation.php b/GameEngine/Automation.php index 0954d8fe..79c2a36e 100755 --- a/GameEngine/Automation.php +++ b/GameEngine/Automation.php @@ -3244,6 +3244,20 @@ class Automation { $q = "UPDATE ".TB_PREFIX."wdata set occupied = 0 where id = $wref"; $database->query($q); + // clear expansion slots, if this village is an expansion of any other village + $q = " + UPDATE + ".TB_PREFIX."vdata + SET + exp1 = IF(exp1 = $wref, 0, exp1), + exp2 = IF(exp2 = $wref, 0, exp2), + exp3 = IF(exp3 = $wref, 0, exp3) + WHERE + exp1 = $wref OR + exp2 = $wref OR + exp3 = $wref"; + $database->query($q); + $getprisoners = $database->getPrisoners($wref); foreach($getprisoners as $pris) { $troops = 0; diff --git a/sql_updates.txt b/sql_updates.txt index 0dc9dcfc..f8a2611d 100644 --- a/sql_updates.txt +++ b/sql_updates.txt @@ -1,3 +1,8 @@ +-- 2.12.2017 -> new indexes +ALTER TABLE `s1_vdata` ADD INDEX(`exp1`); +ALTER TABLE `s1_vdata` ADD INDEX(`exp2`); +ALTER TABLE `s1_vdata` ADD INDEX(`exp3`); + -- 17.11.2017 -> query optimizations ALTER TABLE `s1_prisoners` DROP INDEX `from`, ADD INDEX `from-t11` (`from`, `t11`); ALTER TABLE `s1_enforcement` DROP INDEX `from`, ADD INDEX `from` (`from`, `hero`) USING BTREE; diff --git a/var/db/struct.sql b/var/db/struct.sql index bcfb1f4b..bbea2d0e 100644 --- a/var/db/struct.sql +++ b/var/db/struct.sql @@ -1653,7 +1653,10 @@ KEY `clay` (`clay`), KEY `iron` (`iron`), KEY `crop` (`crop`), KEY `starv` (`starv`), -KEY `loyalty` (`loyalty`) +KEY `loyalty` (`loyalty`), +KEY `exp1` (`exp1`), +KEY `exp2` (`exp2`), +KEY `exp3` (`exp3`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; --