Commit Graph

81 Commits

Author SHA1 Message Date
novgorodschi catalin a998edc205 Fix #294 code for brewery
Fix #294 now brewery is fully coded!
2026-06-29 08:02:09 +03:00
Ferywir 596f007139 Refactor(Units): extract resolveCatapultTargets() from sendTroops() [#219] (#284)
sendTroops() inlined ~65 lines deciding the catapult targets ctar1/ctar2: the
"Rivals great confusion" artefact lookup, the rally-point-level-driven list of
invalid target buildings, the troop/level eligibility rules and the Teuton
Brewery / artefact adjustments. Move that whole block into
resolveCatapultTargets(&$post, $data), which mutates $post['ctar1']/['ctar2'] by
reference exactly as before; sendTroops() now calls it before building the
attack. None of the block's locals were used afterwards. Behaviour-preserving.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 13:44:42 +03:00
Ferywir 58469ea024 Refactor(Units): split checkErrors() into focused validators [#219] (#283) 2026-06-25 13:28:47 +03:00
Ferywir db3953d825 Refactor(Units): extract buildHeroStats() to de-duplicate Hero() [#219] (#282)
Both branches of Hero() (single hero when !$all, full list when $all) computed
the same five derived stats (atk/di/dc/ob/db) and assembled a byte-identical
hero stat array from a getHero() entry plus its unit base data. Extract that
into buildHeroStats($hero, $herodata) and call it from both branches.
Behaviour-preserving.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 12:43:26 +03:00
Ferywir 1e661b7a03 Refactor(Units): collapse the duplicated procUnits() cases 1-4 [#219] (#281)
Cases 1 to 4 of the procUnits() switch had a byte-identical body (send troops
when the rally-point form is submitted, otherwise load the unit form). Stack the
four case labels and keep a single shared body via switch fall-through.
Behaviour-preserving.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 12:37:54 +03:00
Ferywir 2e09148bb7 Fix(farmlist): raid bugs and PHP 8.3 warnings (#217) 2026-06-15 07:53:14 +03:00
novgorodschi catalin 05bfde9063 Remove some unused code and some fix
Remove some unused code and some fix
2026-05-21 13:12:21 +03:00
Catalin Novgorodschi 01474fb31f Update Readme
Update Readme
2026-05-15 08:17:14 +03:00
hdmaniak 12de46015e Fix: Parallel troop recall race condition 2026-03-26 21:48:22 +01:00
Emerson Freitas a7bdac8392 fix: harden troop processing race conditions (#98) (#138) 2026-03-17 20:13:14 +02:00
levi a0ef06a35f chore: harden php8 compatibility, optimize installer/croppers, and refresh docs/admin ux 2026-03-14 16:50:27 -03:00
Catalin Novgorodschi 734c1b3f19 Update Units.php 2026-02-12 09:09:54 +02:00
Catalin Novgorodschi 67faff13ef Revert "test"
This reverts commit e4850eb188.
2026-02-12 09:07:12 +02:00
Catalin Novgorodschi e4850eb188 test 2026-02-12 08:58:10 +02:00
Catalin Novgorodschi 260896570e Revert "vulnerability fixed and cleanup and refactor"
This reverts commit 2a44e76414.
2026-02-11 15:22:16 +02:00
Catalin Novgorodschi 2a44e76414 vulnerability fixed and cleanup and refactor 2026-02-11 15:11:43 +02:00
iopietro f032523e1c Generale fixes
+Fixed a bug that didn't return reinforcements in counquered oasis, if
it was released by the owner, or from the admin panel
+Changed the catapults and rams formulas (still not completed at 100%),
thanks to Kirilloid!
+Changed the Natars' capital default coordinates
2018-07-28 15:07:52 +02:00
iopietro 79eb6a73d6 General fixes
+Removed almost all "BANNED" controls to template and .php UI files. The
control will be done only once and in the Session class
2018-06-11 02:22:22 +02:00
iopietro 36b790d08a General fixes
+Fixed a bug that permitted to attack occupied oasis (even through the
farmlist) even if the oasis' owner was banned
+Rewritten some code in Units.php, for a better errors handling
+Fixed some errors that could have showed sometimes
+Fixed a bug that didn't permit to send an attack under certain
circumstances
+Villages/oasis with X = 0 or Y = 0 as a coordinates, can now be raided
+You are now be able to send resources with the merchants, at villages
with X = 0 or Y = 0 as a coordinates
2018-05-29 18:57:14 +02:00
iopietro 498aaa962a General fixes
+Fixed a bug that didn't permit to raid oasis if
"ADMIN_ALLOW_INCOMING_RAIDS" was set to false
2018-05-27 13:21:01 +02:00
iopietro a4a623bbfa General fixes
+Fixed a bug that calculated a wrong returning time if the attacker had
the tournament square in the village
2018-05-22 19:58:53 +02:00
iopietro f0b9f32826 General fixes
+Moved "isWinner()" method from Automation.php to Session.php, it's now
triggered when activating plus function or entering in
plus1.php/build.php
+General clean-up and better indentation
+The tournament square bonus is now displayed correctly
2018-05-22 00:33:09 +02:00
iopietro bdd3bfd41c Farmlist improvements and fixes
+Troops while adding/editing a raid lists are now inside of a table,
this is a graphic enhancement
+Reduced the X and Y textboxes size while adding/editing a raid list
+Fixed a bug that didn't permit to add a raid list
+Fixed a bug that did permit to insert spies in raid lists
+The farmlists graphic is now more clear, "Add raid" and "Start raid"
are now two general buttons, instead of having two buttons for raid list
+"Select all" checkbox, will select all raid without refreshing the page
(through JS)
+Moved the function "getDistance" to Database.php
+Removed a lot of redundant code from crop_finder.php
+Removed rams, catapults, chiefs and settlers from the raid list,
because the first three can't even loot resources
+Removed trooplist2.tpl because of a more general unique template file
(trooplist.tpl)
+Some minor improvements and bug fixing

IMPORTANT NOTE: if you don't want to reinstal the whole server, you can
simply run this little query (where "s1_" is the prefix of your server):

ALTER TABLE `s1_raidlist` DROP `t7`, DROP `t8`, DROP `t9`, DROP `t10`;
2018-05-16 16:49:25 +02:00
iopietro 950fc61f8a General fixes
+A method in Building.php is now static
+Fixed timers in the market
+Fixed a bug that did take in account a wrong tournament square when
calculating the returning time of the troops
2018-05-10 20:50:29 +02:00
iopietro 89bebaee1f General fixes
+Fixed a bug that didn't permit to destroy the capital if the player had
more than 1 village. The capital is now destroyable (if the player has
more than 1 village)
+Fixed a bug that updated the hero wref wrongly when reinforcing their
own villages
+Fixed a bug that didn't kill the hero if his village was destroyed
while he was sent to another village as a reinforcement
+Better indentation
+General improovements
2018-05-06 00:00:27 +02:00
iopietro f7e05c9802 Optimizations
-Removed the "sort_type" 6 from the movement table, looted resources
will now be saved in the "sort_type" 4 returing attack.
This reduces a lot the spam in the tables "send" and "movement" of the
database
-Removed some useless methods in Database.php and Message.php
+Optimized report loading, own report will be loaded only once (and not
twice at random) and allied reports aren't loaded anymore
+Minor improovements and better indentation
2018-05-05 17:54:34 +02:00
iopietro cf74514451 General fixes
+Fixed an exploit that permitted to starts other players' farm lists
+Fixed an exploit that permitted to save our raids to other players'
farm lists
+Fixed an exploit that permitted to edit other players' farm lists
+Fixed a rounding upkeep bug
+Moved the whole startRaid.tpl to a new method in Units.php
+A lot of clean-up
+Improoved indentation
+In the raid list, the "carry" image will now show to the left of an
attack
+Fixed a bug that displayed the wrong loot to returning troops released
by traps
+General minor bug fixing and improovements
-Deleted a lot of redundant code
2018-05-04 22:12:18 +02:00
iopietro 9e2d2b6842 Fixed trap bugs
+Traps are now repaired (built) in the trapper building, instead of
instantly given after a successful normal attack or a dismiss/releasing
from the rally point
+1/4 of trapped troops are now lost after a successful normal attack
+Traps are now released when troops die from starvation
+If you'll dismiss your trapped troops from the rally point, the gaul
player will be able to only repair 1/3 of the total used traps
+Created a new method to delete some redundant and duplicated code
starvation related
+The effect of WW building plans will be displayed correctly, when
they're active
+Troops related artifacts are now counted when building traps
+Some minor improovements and bug fixing
+Some clean-up
2018-05-02 21:17:20 +02:00
iopietro 0a9fe1125e Fixed a bug while chiefing and catapulting
+Brewery, big parties and moral bonus are now counted correctly towards
the loyalty reduction
+If you have a brewery you'll now forced to attack random buildings
+Some clean-up
2018-05-01 17:03:41 +02:00
iopietro a40accc101 Distance calculation optimization and bug fixing
-Removed a lot of redundant code and put into a function
+Fixed a bug that permitted to found a new village in already founded
village
+Fixed a bug that permitted to found in an oasis
+Fixed a bug that permitted to hack the time you need to found a new
village
+Fixed a bug that permitted to found a new village to an inexistent one
2018-04-29 00:49:24 +02:00
iopietro 56e280f436 Artifacts fixes part 4
Completely fixed the artifact of the fool and fixed all kind of
artifact:

+Deleted some useless .tpl files and merged into one (Stable)
+The artifact of the fool effect won't be displayed if not active
+Fixed a bug that permitted to have a great and a unique artefacts
active at the same moment
+Big reductions of code in a lot of files
+Created some new methods to support artifacts
+Fixed a bug that prevented the effect of the "Rivals confusion" to work
correctly
+Fixed a bug that prevented "The eagles eyes" artifact to work correctly
for the attacker
+Fixed the artifact of the fool of every kind, now it's calculated with
a new method
+Fixed the cranny capacity when a "Rivals confusion" artifact is active
+Some minor bug fixing , improovements and optimization
2018-04-26 20:37:47 +02:00
iopietro 8e731dd7d0 Artifacts fixes part 3
+Fixed the artifact of the fool, it will now work and reduce/increase
troops speed
+Optimized some templates file and deleted some useless files
+Added a method to Database.php which permits to calculate things
related to artifacts (it's not general yet, it only works for troops
speed)
-Removed artifact of the fool "Account" type, because it shouldn't exist
2018-04-25 22:58:18 +02:00
iopietro 6f895f7d54 Fixed some bugs
+Fixed a "division by zero" error, in Battle.php
+Reworked spied informations, now they're shown only if the building is
at least at level 1. Splitted residence/palace information in two
distinct informations. Now the total crannies capacity is displayed
(even if the capacity is 0) instead of the level of the greatest cranny
+Fixed "getFieldLevelInVillage" function in Database.php
-Removed an useless control in Units.php
2018-04-16 18:39:41 +02:00
iopietro e6449d20c6 Fixed issue #432
+Added an error which warns you if you enter an invalid attack type (a
number greater tha 4 or less than 2)
+Fixed the possibility to spy with attacking troops by hacking the
attack type
+Some clean-up
2018-04-16 15:59:05 +02:00
iopietro 21179d346f Fixed some bugs and errors
+Part 1 of the starvation refactor, attacking troops will now be killed
+Fixed some errors in Units.php, Technology.php, Battle.php and some
16_incomming.tpl
-Removed an unused function in Database.php
+Fixed a bug that could have destroyed a village after taking an
artefact even if it had more than 0 pop
2018-04-09 21:31:50 +02:00
iopietro 9e44c1cd6d Some replacements
+Replaced all $GLOBALS['link'] with $database->dblink
-Removed Templates/links.tpl from build.php (it's already in
Templates/menu.tpl)
2018-04-08 19:55:28 +02:00
Pietro f0d6210979 Fixed a catapults bug
Fixed a bug which permits to select a not-selectable building, with a lower level of rally point.
Fixed a bug which permits to select two targets (with 20 or more catapults) with a rally point level lower than 20.
Fixed a typo.
2018-04-05 01:38:05 +02:00
Pietro 3738fd44cc Fixed some bugs and some clean up
Units.php:
Fixed a bug which allows to select invalid buildings or not-hittable building (such as Cranny, Walls, Stonemason's lodge and Trapper) with catapults.
Fixed a bug which allows to select a secondary target with less than 20 catapults.

Removed some unused functions from Automation.php and Database.php.
2018-04-05 00:02:12 +02:00
AL-Kateb caf9112314 Prevent user from illegally founding a new village with 0 settlers 2018-01-01 19:02:25 +00:00
Martin Ambrus 43dfea920b fix: unable to attack players with Multihunter access rights 2017-12-02 14:18:28 +01:00
Martin Ambrus 12fe632bf4 fix: prevent reuse of old attacks by re-POSTing same values 2017-11-24 10:17:54 +01:00
Martin Ambrus 07e5f322e2 fix: reinforcements sent back do not hide the reinforcements table 2017-11-19 02:33:07 +01:00
Martin Ambrus 2041ad750e fix: hero movements got screwed up while doing DB caching stuff...
#313
2017-11-17 23:46:01 +01:00
Martin Ambrus 1318f34cba refactor: Units class-related caching done
#313
2017-11-17 15:34:08 +01:00
Martin Ambrus ee017adb40 refactor: most of broad SELECTs updated
Closes #301
2017-11-05 14:35:19 +01:00
Martin Ambrus a822504706 fix: counting queries optimization
Closes #300
2017-11-04 15:41:35 +01:00
Martin Ambrus 90f8982245 fix: hero dying and revival doesn't work correctly with multiple heroes 2017-11-02 23:59:03 +01:00
Martin Ambrus 7c67e1e7b9 fix: only 1 hero can exist and is deleted upon new hero training start
Closes #261
2017-11-02 11:05:26 +01:00
Martin Ambrus 041726fbd2 fix: undefined indexes 2017-11-01 21:35:24 +01:00
Martin Ambrus 2340c3821c fix: undefined variables 2017-10-28 12:04:28 +02:00