This is an automated email from the git hooks/post-receive script. apo pushed a commit to branch master in repository unknown-horizons.
commit 122466b709971ad66ab4a09316863692a218651e Merge: c03bcb8 988c658 Author: Markus Koschany <[email protected]> Date: Fri Jan 20 01:24:55 2017 +0100 Merge tag 'upstream/2017.1' Upstream version 2017.1 # gpg: Signatur vom Fr 20 Jan 2017 01:24:51 CET # gpg: mittels RSA-Schlüssel ACF3D088EF32EDEF6A1A835FD9AD14B9513B51E4 # gpg: Korrekte Signatur von "Markus Koschany <[email protected]>" [ultimativ] # gpg: alias "Markus Koschany <[email protected]>" [ultimativ] # gpg: alias "Markus Koschany <[email protected]>" [ultimativ] .coveragerc | 5 + .gitattributes | 1 + .gitignore | 30 + .isort.cfg | 8 + .pylintrc | 2 +- .travis.yml | 34 + README.md | 7 +- .../brickyard/as_brickyard0/bricks_01/135/000.png | Bin 0 -> 10979 bytes .../brickyard/as_brickyard0/bricks_01/225/000.png | Bin 0 -> 10935 bytes .../brickyard/as_brickyard0/bricks_01/315/000.png | Bin 0 -> 11346 bytes .../brickyard/as_brickyard0/bricks_01/45/000.png | Bin 0 -> 10672 bytes .../brickyard/as_brickyard0/bricks_02/135/000.png | Bin 0 -> 12269 bytes .../brickyard/as_brickyard0/bricks_02/225/000.png | Bin 0 -> 12112 bytes .../brickyard/as_brickyard0/bricks_02/315/000.png | Bin 0 -> 12717 bytes .../brickyard/as_brickyard0/bricks_02/45/000.png | Bin 0 -> 11969 bytes .../brickyard/as_brickyard0/bricks_03/135/000.png | Bin 0 -> 13758 bytes .../brickyard/as_brickyard0/bricks_03/225/000.png | Bin 0 -> 13157 bytes .../brickyard/as_brickyard0/bricks_03/315/000.png | Bin 0 -> 14305 bytes .../brickyard/as_brickyard0/bricks_03/45/000.png | Bin 0 -> 13400 bytes .../brickyard/as_brickyard0/bricks_04/135/000.png | Bin 0 -> 15178 bytes .../brickyard/as_brickyard0/bricks_04/225/000.png | Bin 0 -> 14407 bytes .../brickyard/as_brickyard0/bricks_04/315/000.png | Bin 0 -> 15710 bytes .../brickyard/as_brickyard0/bricks_04/45/000.png | Bin 0 -> 14718 bytes .../brickyard/as_brickyard0/idle/135/0.png | Bin 26253 -> 0 bytes .../brickyard/as_brickyard0/idle/135/000.png | Bin 0 -> 29242 bytes .../brickyard/as_brickyard0/idle/225/0.png | Bin 24692 -> 0 bytes .../brickyard/as_brickyard0/idle/225/000.png | Bin 0 -> 29439 bytes .../brickyard/as_brickyard0/idle/315/0.png | Bin 25305 -> 0 bytes .../brickyard/as_brickyard0/idle/315/000.png | Bin 0 -> 30432 bytes .../pioneers/brickyard/as_brickyard0/idle/45/0.png | Bin 27207 -> 0 bytes .../brickyard/as_brickyard0/idle/45/000.png | Bin 0 -> 31474 bytes .../brickyard/as_brickyard0/idle_full/135/0.png | Bin 29024 -> 0 bytes .../brickyard/as_brickyard0/idle_full/225/0.png | Bin 26512 -> 0 bytes .../brickyard/as_brickyard0/idle_full/315/0.png | Bin 27383 -> 0 bytes .../brickyard/as_brickyard0/idle_full/45/0.png | Bin 29766 -> 0 bytes .../brickyard/as_brickyard0/work/135/0.png | Bin 26253 -> 0 bytes .../brickyard/as_brickyard0/work/135/1.png | Bin 26995 -> 0 bytes .../brickyard/as_brickyard0/work/135/2.png | Bin 27824 -> 0 bytes .../brickyard/as_brickyard0/work/135/3.png | Bin 28624 -> 0 bytes .../brickyard/as_brickyard0/work/225/0.png | Bin 24692 -> 0 bytes .../brickyard/as_brickyard0/work/225/1.png | Bin 25160 -> 0 bytes .../brickyard/as_brickyard0/work/225/2.png | Bin 25703 -> 0 bytes .../brickyard/as_brickyard0/work/225/3.png | Bin 26276 -> 0 bytes .../brickyard/as_brickyard0/work/315/0.png | Bin 25305 -> 0 bytes .../brickyard/as_brickyard0/work/315/1.png | Bin 25873 -> 0 bytes .../brickyard/as_brickyard0/work/315/2.png | Bin 26428 -> 0 bytes .../brickyard/as_brickyard0/work/315/3.png | Bin 27024 -> 0 bytes .../pioneers/brickyard/as_brickyard0/work/45/0.png | Bin 27207 -> 0 bytes .../pioneers/brickyard/as_brickyard0/work/45/1.png | Bin 27849 -> 0 bytes .../pioneers/brickyard/as_brickyard0/work/45/2.png | Bin 28687 -> 0 bytes .../pioneers/brickyard/as_brickyard0/work/45/3.png | Bin 29766 -> 0 bytes .../pioneers/brickyard/as_brickyard0/work/tm_15000 | 0 .../gfx/buildings/sailors/wall/as_wall/a/135/0.png | Bin 0 -> 5389 bytes .../gfx/buildings/sailors/wall/as_wall/a/225/0.png | Bin 0 -> 5251 bytes .../gfx/buildings/sailors/wall/as_wall/a/315/0.png | Bin 0 -> 4961 bytes .../gfx/buildings/sailors/wall/as_wall/a/45/0.png | Bin 0 -> 5062 bytes .../buildings/sailors/wall/as_wall/ab/135/0.png | Bin 0 -> 6526 bytes .../buildings/sailors/wall/as_wall/ab/225/0.png | Bin 0 -> 7035 bytes .../buildings/sailors/wall/as_wall/ab/315/0.png | Bin 0 -> 6793 bytes .../gfx/buildings/sailors/wall/as_wall/ab/45/0.png | Bin 0 -> 7012 bytes .../buildings/sailors/wall/as_wall/abc/135/0.png | Bin 0 -> 6410 bytes .../buildings/sailors/wall/as_wall/abc/225/0.png | Bin 0 -> 6727 bytes .../buildings/sailors/wall/as_wall/abc/315/0.png | Bin 0 -> 6622 bytes .../buildings/sailors/wall/as_wall/abc/45/0.png | Bin 0 -> 6803 bytes .../buildings/sailors/wall/as_wall/abcd/135/0.png | Bin 0 -> 6341 bytes .../buildings/sailors/wall/as_wall/abcd/225/0.png | Bin 0 -> 6419 bytes .../buildings/sailors/wall/as_wall/abcd/315/0.png | Bin 0 -> 6418 bytes .../buildings/sailors/wall/as_wall/abcd/45/0.png | Bin 0 -> 6477 bytes .../buildings/sailors/wall/as_wall/abcde/135/0.png | Bin 0 -> 5983 bytes .../buildings/sailors/wall/as_wall/abcde/225/0.png | Bin 0 -> 6201 bytes .../buildings/sailors/wall/as_wall/abcde/315/0.png | Bin 0 -> 6056 bytes .../buildings/sailors/wall/as_wall/abcde/45/0.png | Bin 0 -> 6327 bytes .../sailors/wall/as_wall/abcdef/135/0.png | Bin 0 -> 5766 bytes .../sailors/wall/as_wall/abcdef/225/0.png | Bin 0 -> 5713 bytes .../sailors/wall/as_wall/abcdef/315/0.png | Bin 0 -> 5814 bytes .../buildings/sailors/wall/as_wall/abcdef/45/0.png | Bin 0 -> 5884 bytes .../sailors/wall/as_wall/abcdefg/135/0.png | Bin 0 -> 5272 bytes .../sailors/wall/as_wall/abcdefg/225/0.png | Bin 0 -> 5485 bytes .../sailors/wall/as_wall/abcdefg/315/0.png | Bin 0 -> 5123 bytes .../sailors/wall/as_wall/abcdefg/45/0.png | Bin 0 -> 5557 bytes .../sailors/wall/as_wall/abcdefgh/135/0.png | Bin 0 -> 4804 bytes .../sailors/wall/as_wall/abcdefgh/225/0.png | Bin 0 -> 4843 bytes .../sailors/wall/as_wall/abcdefgh/315/0.png | Bin 0 -> 4843 bytes .../sailors/wall/as_wall/abcdefgh/45/0.png | Bin 0 -> 4836 bytes .../sailors/wall/as_wall/abcdeg/135/0.png | Bin 0 -> 5487 bytes .../sailors/wall/as_wall/abcdeg/225/0.png | Bin 0 -> 5996 bytes .../sailors/wall/as_wall/abcdeg/315/0.png | Bin 0 -> 5490 bytes .../buildings/sailors/wall/as_wall/abcdeg/45/0.png | Bin 0 -> 5953 bytes .../buildings/sailors/wall/as_wall/abce/135/0.png | Bin 0 -> 6032 bytes .../buildings/sailors/wall/as_wall/abce/225/0.png | Bin 0 -> 6526 bytes .../buildings/sailors/wall/as_wall/abce/315/0.png | Bin 0 -> 6242 bytes .../buildings/sailors/wall/as_wall/abce/45/0.png | Bin 0 -> 6568 bytes .../buildings/sailors/wall/as_wall/abcef/135/0.png | Bin 0 -> 6064 bytes .../buildings/sailors/wall/as_wall/abcef/225/0.png | Bin 0 -> 6016 bytes .../buildings/sailors/wall/as_wall/abcef/315/0.png | Bin 0 -> 5995 bytes .../buildings/sailors/wall/as_wall/abcef/45/0.png | Bin 0 -> 6192 bytes .../buildings/sailors/wall/as_wall/abcf/135/0.png | Bin 0 -> 6489 bytes .../buildings/sailors/wall/as_wall/abcf/225/0.png | Bin 0 -> 6299 bytes .../buildings/sailors/wall/as_wall/abcf/315/0.png | Bin 0 -> 6426 bytes .../buildings/sailors/wall/as_wall/abcf/45/0.png | Bin 0 -> 6478 bytes .../buildings/sailors/wall/as_wall/abe/135/0.png | Bin 0 -> 6148 bytes .../buildings/sailors/wall/as_wall/abe/225/0.png | Bin 0 -> 6796 bytes .../buildings/sailors/wall/as_wall/abe/315/0.png | Bin 0 -> 6446 bytes .../buildings/sailors/wall/as_wall/abe/45/0.png | Bin 0 -> 6771 bytes .../buildings/sailors/wall/as_wall/ac/135/0.png | Bin 0 -> 6851 bytes .../buildings/sailors/wall/as_wall/ac/225/0.png | Bin 0 -> 7282 bytes .../buildings/sailors/wall/as_wall/ac/315/0.png | Bin 0 -> 6901 bytes .../gfx/buildings/sailors/wall/as_wall/ac/45/0.png | Bin 0 -> 7242 bytes .../sailors/wall/as_wall/single/135/0.png | Bin 0 -> 6860 bytes .../sailors/wall/as_wall/single/225/0.png | Bin 0 -> 6896 bytes .../sailors/wall/as_wall/single/315/0.png | Bin 0 -> 6792 bytes .../buildings/sailors/wall/as_wall/single/45/0.png | Bin 0 -> 6823 bytes content/gfx/uh.ico | Bin 0 -> 82726 bytes content/gui/icons/buildmenu/071.png | Bin 0 -> 4341 bytes content/gui/icons/buildmenu/071_h.png | Bin 0 -> 4902 bytes content/gui/icons/buildmenu/greyscale/071.png | Bin 0 -> 3956 bytes .../ingame/tabwidget/overview/overview_barrier.xml | 25 + .../xml/ingame/tabwidget/warehouse/buysellmenu.xml | 2 +- .../templates/overview_farmproductionline.xml | 2 +- .../ingame/templates/overview_productionline.xml | 2 +- content/gui/xml/ingame/widgets/captains_log.xml | 13 +- content/gui/xml/ingame/widgets/configure_route.xml | 2 +- .../gui/xml/ingame/widgets/island_production.xml | 31 +- content/gui/xml/mainmenu/credits.xml | 26 +- content/gui/xml/mainmenu/mainmenu.xml | 2 +- .../gui/xml/mainmenu/singleplayer/sp_random.xml | 10 +- .../gui/xml/mainmenu/templates/game_settings.xml | 2 +- content/logging.conf | 4 - content/objects/buildings/barrier.yaml | 24 + content/objects/buildings/brickyard.yaml | 12 + content/objects/buildings/pastryshop.yaml | 17 +- .../objects/gui_buildmenu/build_menu_per_tier.yaml | 4 + .../objects/gui_buildmenu/build_menu_per_type.yaml | 3 + content/packages/unknown-horizons.6 | 10 +- content/packages/win_installer_banner.bmp | Bin 154544 -> 0 bytes content/packages/win_installer_header.bmp | Bin 25820 -> 0 bytes content/packages/win_installer_splash.bmp | Bin 300054 -> 0 bytes content/scenarios/The_Unknown_et.yaml | 4 +- content/scenarios/The_Unknown_hr.yaml | 10 +- .../{The_Unknown_et.yaml => The_Unknown_nb.yaml} | 64 +- content/scenarios/tutorial_de.yaml | 72 +- content/scenarios/tutorial_fr.yaml | 6 +- content/scenarios/tutorial_it.yaml | 160 +- content/scenarios/tutorial_nb.yaml | 142 +- content/scenarios/tutorial_nl.yaml | 130 +- content/scenarios/tutorial_pt_BR.yaml | 221 ++- content/scenarios/tutorial_ru.yaml | 223 ++- content/scenarios/tutorial_sk.yaml | 18 +- development/__init__.py | 2 +- development/all_images.py | 5 +- development/combat_ai/__init__.py | 2 +- development/combat_ai/diplomacy_graphs.py | 7 +- development/compare_string_lengths_in_pos.py | 23 +- development/compile_translation_win.py | 11 +- development/compress_map.py | 15 +- development/create_pot.sh | 9 +- development/create_scenario_pot.sh | 2 +- development/create_windows_installer.sh | 72 - development/docstringer.py | 7 +- development/extract_strings_from_objects.py | 11 +- development/extract_strings_from_sqlite.py | 5 +- development/extract_strings_from_xml.py | 17 +- development/generate_credits.py | 4 +- development/networkclient.py | 79 +- development/nsi.template | 160 -- development/nsiscripter.py | 96 -- development/pre-commit | 2 +- development/print_db_data.py | 115 +- development/print_profile_output.py | 8 +- development/run_mypy.sh | 30 + development/stringpreviewwidget.py | 2 +- development/time_uh.py | 7 +- development/translate_scenario.py | 11 +- development/update_translations.py | 9 +- doc/AUTHORS.md | 8 +- doc/CHANGELOG.md | 8 +- doc/LICENSE | 7 +- horizons/__init__.py | 2 +- horizons/ai/__init__.py | 2 +- horizons/ai/aiplayer/__init__.py | 92 +- horizons/ai/aiplayer/areabuilder.py | 13 +- horizons/ai/aiplayer/basicbuilder.py | 10 +- horizons/ai/aiplayer/behavior/__init__.py | 2 +- .../ai/aiplayer/behavior/behaviorcomponents.py | 5 +- horizons/ai/aiplayer/behavior/diplomacysettings.py | 2 +- horizons/ai/aiplayer/behavior/movecallbacks.py | 3 +- horizons/ai/aiplayer/behavior/profile.py | 17 +- horizons/ai/aiplayer/building/__init__.py | 6 +- horizons/ai/aiplayer/building/boatbuilder.py | 5 +- horizons/ai/aiplayer/building/brickyard.py | 5 +- horizons/ai/aiplayer/building/charcoalburner.py | 5 +- horizons/ai/aiplayer/building/claydeposit.py | 6 +- horizons/ai/aiplayer/building/claypit.py | 7 +- horizons/ai/aiplayer/building/distillery.py | 5 +- horizons/ai/aiplayer/building/doctor.py | 3 +- .../ai/aiplayer/building/fakeresourcedeposit.py | 7 +- horizons/ai/aiplayer/building/farm.py | 11 +- horizons/ai/aiplayer/building/field.py | 5 +- horizons/ai/aiplayer/building/firestation.py | 3 +- horizons/ai/aiplayer/building/fishdeposit.py | 3 +- horizons/ai/aiplayer/building/fisher.py | 7 +- horizons/ai/aiplayer/building/irondeposit.py | 6 +- horizons/ai/aiplayer/building/ironmine.py | 7 +- horizons/ai/aiplayer/building/lumberjack.py | 10 +- horizons/ai/aiplayer/building/saltponds.py | 3 +- horizons/ai/aiplayer/building/signalfire.py | 5 +- horizons/ai/aiplayer/building/smeltery.py | 5 +- horizons/ai/aiplayer/building/stonedeposit.py | 6 +- horizons/ai/aiplayer/building/stonemason.py | 5 +- horizons/ai/aiplayer/building/stonepit.py | 7 +- horizons/ai/aiplayer/building/tobacconist.py | 5 +- horizons/ai/aiplayer/building/toolmaker.py | 5 +- horizons/ai/aiplayer/building/tree.py | 3 +- horizons/ai/aiplayer/building/villagebuilding.py | 7 +- horizons/ai/aiplayer/building/weaver.py | 5 +- horizons/ai/aiplayer/buildingevaluator.py | 5 +- horizons/ai/aiplayer/combat/__init__.py | 2 +- horizons/ai/aiplayer/combat/combatmanager.py | 6 +- horizons/ai/aiplayer/combat/fleet.py | 3 +- horizons/ai/aiplayer/combat/unitmanager.py | 3 +- horizons/ai/aiplayer/constants.py | 7 +- horizons/ai/aiplayer/goal/__init__.py | 2 +- horizons/ai/aiplayer/goal/boatbuilder.py | 3 +- horizons/ai/aiplayer/goal/combatship.py | 3 +- horizons/ai/aiplayer/goal/depositcoverage.py | 12 +- horizons/ai/aiplayer/goal/doctor.py | 3 +- horizons/ai/aiplayer/goal/donothing.py | 5 +- horizons/ai/aiplayer/goal/enlargecollectorarea.py | 12 +- horizons/ai/aiplayer/goal/feederchaingoal.py | 3 +- horizons/ai/aiplayer/goal/firestation.py | 3 +- horizons/ai/aiplayer/goal/foundfeederisland.py | 5 +- .../ai/aiplayer/goal/improvecollectorcoverage.py | 13 +- horizons/ai/aiplayer/goal/productionchaingoal.py | 5 +- horizons/ai/aiplayer/goal/settlementgoal.py | 9 +- horizons/ai/aiplayer/goal/signalfire.py | 3 +- horizons/ai/aiplayer/goal/storagespace.py | 7 +- horizons/ai/aiplayer/goal/tent.py | 3 +- horizons/ai/aiplayer/goal/tradingship.py | 3 +- horizons/ai/aiplayer/internationaltrademanager.py | 11 +- horizons/ai/aiplayer/landmanager.py | 10 +- horizons/ai/aiplayer/mission/__init__.py | 2 +- horizons/ai/aiplayer/mission/domestictrade.py | 5 +- horizons/ai/aiplayer/mission/foundsettlement.py | 11 +- horizons/ai/aiplayer/mission/internationaltrade.py | 15 +- .../ai/aiplayer/mission/preparefoundationship.py | 9 +- .../ai/aiplayer/mission/specialdomestictrade.py | 9 +- horizons/ai/aiplayer/personality/__init__.py | 6 +- horizons/ai/aiplayer/personality/default.py | 5 +- horizons/ai/aiplayer/personality/other.py | 5 +- horizons/ai/aiplayer/personalitymanager.py | 5 +- horizons/ai/aiplayer/productionbuilder.py | 27 +- horizons/ai/aiplayer/productionchain.py | 3 +- horizons/ai/aiplayer/resourcemanager.py | 14 +- horizons/ai/aiplayer/roadplanner.py | 3 +- horizons/ai/aiplayer/settlementfounder.py | 8 +- horizons/ai/aiplayer/settlementmanager.py | 47 +- .../ai/aiplayer/specialdomestictrademanager.py | 9 +- horizons/ai/aiplayer/strategy/__init__.py | 2 +- horizons/ai/aiplayer/strategy/condition.py | 5 +- horizons/ai/aiplayer/strategy/mission/__init__.py | 2 +- .../strategy/mission/chaseshipsandattack.py | 3 +- .../ai/aiplayer/strategy/mission/pirateroutine.py | 5 +- horizons/ai/aiplayer/strategy/mission/scouting.py | 2 +- .../ai/aiplayer/strategy/mission/surpriseattack.py | 5 +- horizons/ai/aiplayer/strategy/strategymanager.py | 5 +- horizons/ai/aiplayer/trademanager.py | 21 +- horizons/ai/aiplayer/unitbuilder.py | 7 +- horizons/ai/aiplayer/villagebuilder.py | 21 +- horizons/ai/generic.py | 11 +- horizons/ai/pirate.py | 15 +- horizons/ai/trader.py | 4 +- horizons/command/__init__.py | 2 +- horizons/command/building.py | 12 +- horizons/command/diplomacy.py | 6 +- horizons/command/game.py | 10 +- horizons/command/misc.py | 3 +- horizons/command/production.py | 5 +- horizons/command/sounds.py | 5 +- horizons/command/uioptions.py | 3 +- horizons/command/unit.py | 10 +- horizons/component/__init__.py | 6 +- horizons/component/ambientsoundcomponent.py | 7 +- horizons/component/collectingcomponent.py | 5 +- horizons/component/coloroverlaycomponent.py | 11 +- horizons/component/commandablecomponent.py | 3 +- horizons/component/componentholder.py | 16 +- horizons/component/depositcomponent.py | 11 +- horizons/component/fieldbuilder.py | 3 +- horizons/component/healthcomponent.py | 6 +- horizons/component/inventoryoverlaycomponent.py | 11 +- horizons/component/namedcomponent.py | 6 +- horizons/component/restrictedpickup.py | 3 +- horizons/component/selectablecomponent.py | 8 +- horizons/component/stancecomponent.py | 14 +- horizons/component/storagecomponent.py | 9 +- horizons/component/tradepostcomponent.py | 34 +- horizons/constants.py | 109 +- horizons/editor/__init__.py | 2 +- horizons/editor/gui.py | 20 +- horizons/editor/intermediatemap.py | 4 +- horizons/editor/session.py | 11 +- horizons/editor/worldeditor.py | 6 +- horizons/engine/__init__.py | 4 +- horizons/engine/engine.py | 14 +- horizons/engine/generate_atlases.py | 41 +- horizons/engine/pychan_util.py | 22 +- horizons/engine/settings.py | 9 +- horizons/engine/sound.py | 2 +- horizons/entities.py | 9 +- horizons/ext/__init__.py | 2 +- horizons/ext/polib.py | 1749 ------------------- horizons/ext/typing.py | 1794 ++++++++++++++++++++ horizons/extscheduler.py | 4 +- horizons/globals.py | 12 +- horizons/gui/__init__.py | 4 +- horizons/gui/gui.py | 23 +- horizons/gui/i18n.py | 2 +- horizons/gui/ingamegui.py | 48 +- horizons/gui/keylisteners/__init__.py | 9 +- horizons/gui/keylisteners/ingamekeylistener.py | 18 +- horizons/gui/keylisteners/keyconfig.py | 3 +- horizons/gui/keylisteners/mainlistener.py | 19 +- horizons/gui/modules/__init__.py | 20 +- horizons/gui/modules/aidataselection.py | 16 +- horizons/gui/modules/editorstartmenu.py | 7 +- horizons/gui/modules/help.py | 2 +- horizons/gui/modules/hotkeys_settings.py | 16 +- horizons/gui/modules/ingame.py | 10 +- horizons/gui/modules/loadingscreen.py | 69 +- horizons/gui/modules/multiplayermenu.py | 118 +- horizons/gui/modules/pausemenu.py | 11 +- horizons/gui/modules/playerdataselection.py | 20 +- horizons/gui/modules/select_savegame.py | 54 +- horizons/gui/modules/settings.py | 40 +- horizons/gui/modules/singleplayermenu.py | 190 ++- horizons/gui/mousetools/__init__.py | 18 +- horizons/gui/mousetools/attackingtool.py | 5 +- horizons/gui/mousetools/buildingtool.py | 48 +- horizons/gui/mousetools/cursortool.py | 7 +- horizons/gui/mousetools/navigationtool.py | 20 +- horizons/gui/mousetools/pipettetool.py | 10 +- horizons/gui/mousetools/selectiontool.py | 8 +- horizons/gui/mousetools/tearingtool.py | 50 +- horizons/gui/mousetools/tilelayingtool.py | 11 +- horizons/gui/style.py | 2 +- horizons/gui/tabs/__init__.py | 38 +- horizons/gui/tabs/barrackstabs.py | 24 +- .../unitproduction.py => gui/tabs/barriertab.py} | 38 +- horizons/gui/tabs/boatbuildertabs.py | 82 +- horizons/gui/tabs/buildingtabs.py | 17 +- horizons/gui/tabs/buildrelatedtab.py | 14 +- horizons/gui/tabs/buildtabs.py | 47 +- horizons/gui/tabs/buyselltab.py | 35 +- horizons/gui/tabs/diplomacytab.py | 4 +- horizons/gui/tabs/enemybuildingtabs.py | 9 +- horizons/gui/tabs/inventorytab.py | 11 +- horizons/gui/tabs/mainsquaretabs.py | 41 +- horizons/gui/tabs/overviewtab.py | 16 +- horizons/gui/tabs/productiontabs.py | 33 +- horizons/gui/tabs/residentialtabs.py | 23 +- horizons/gui/tabs/selectmultitab.py | 19 +- horizons/gui/tabs/shiptabs.py | 52 +- horizons/gui/tabs/tabinterface.py | 7 +- horizons/gui/tabs/tabwidget.py | 8 +- horizons/gui/tabs/tradetab.py | 16 +- horizons/gui/translations.py | 813 ++++----- horizons/gui/util.py | 26 +- horizons/gui/widgets/__init__.py | 2 +- horizons/gui/widgets/buysellinventory.py | 3 +- horizons/gui/widgets/container.py | 2 +- horizons/gui/widgets/fpsdisplay.py | 2 +- horizons/gui/widgets/icongroup.py | 3 +- horizons/gui/widgets/imagebutton.py | 15 +- horizons/gui/widgets/imagefillstatusbutton.py | 16 +- horizons/gui/widgets/inventory.py | 15 +- horizons/gui/widgets/logbook.py | 31 +- horizons/gui/widgets/messagewidget.py | 33 +- horizons/gui/widgets/minimap.py | 210 +-- horizons/gui/widgets/pickbeltwidget.py | 2 +- horizons/gui/widgets/playersoverview.py | 3 +- horizons/gui/widgets/playerssettlements.py | 12 +- horizons/gui/widgets/playersships.py | 20 +- horizons/gui/widgets/productionoverview.py | 116 +- horizons/gui/widgets/progressbar.py | 6 +- horizons/gui/widgets/resourceoverviewbar.py | 40 +- horizons/gui/widgets/routeconfig.py | 62 +- horizons/gui/widgets/statswidget.py | 7 +- horizons/gui/widgets/stepslider.py | 91 +- horizons/gui/widgets/tooltip.py | 7 +- horizons/gui/widgets/tradehistoryitem.py | 5 +- horizons/gui/widgets/unitoverview.py | 15 +- horizons/gui/windows.py | 18 +- horizons/i18n/__init__.py | 60 +- horizons/i18n/objecttranslations.py | 337 ++-- horizons/i18n/voice.py | 80 +- horizons/main.py | 211 +-- horizons/manager.py | 22 +- horizons/messaging/__init__.py | 2 +- horizons/messaging/message.py | 5 +- horizons/messaging/messagebus.py | 3 +- horizons/messaging/queuingmessagebus.py | 15 +- horizons/messaging/simplemessagebus.py | 5 +- horizons/mpsession.py | 32 +- horizons/network/__init__.py | 6 +- horizons/network/common.py | 8 +- horizons/network/connection.py | 28 +- horizons/network/libs/darwin-x64-26/enet.so | Bin 0 -> 185776 bytes horizons/network/libs/darwin-x64-27/enet.so | Bin 0 -> 346460 bytes horizons/network/libs/darwin-x86/enet.so | Bin 0 -> 185776 bytes horizons/network/libs/freebsd-x64/enet.so | Bin 0 -> 190492 bytes horizons/network/libs/freebsd-x86/enet.so | Bin 0 -> 177794 bytes horizons/network/libs/linux-x64/enet.so | Bin 0 -> 169464 bytes horizons/network/libs/linux-x86/enet.so | Bin 0 -> 155157 bytes horizons/network/libs/windows-x64-26/enet.pyd | Bin 0 -> 130560 bytes horizons/network/libs/windows-x64-27/enet.pyd | Bin 0 -> 130560 bytes horizons/network/libs/windows-x86-26/enet.pyd | Bin 0 -> 105472 bytes horizons/network/libs/windows-x86-27/enet.pyd | Bin 0 -> 105984 bytes horizons/network/networkinterface.py | 21 +- horizons/network/packets/__init__.py | 7 +- horizons/network/packets/client.py | 37 +- horizons/network/packets/server.py | 5 +- horizons/network/server.py | 57 +- horizons/savegamemanager.py | 7 +- horizons/scenario/__init__.py | 8 +- horizons/scenario/actions.py | 36 +- horizons/scenario/conditions.py | 43 +- horizons/scenario/scenarioeventhandler.py | 30 +- horizons/scheduler.py | 12 +- horizons/session.py | 52 +- horizons/spsession.py | 14 +- horizons/timer.py | 9 +- horizons/util/__init__.py | 2 +- horizons/util/atlasloading.py | 87 + horizons/util/atlasloadingthread.py | 55 - horizons/util/buildingindexer.py | 2 +- horizons/util/changelistener.py | 3 +- horizons/util/checkupdates.py | 15 +- horizons/util/cmdlineoptions.py | 14 +- horizons/util/color.py | 63 +- horizons/util/dbreader.py | 5 +- horizons/util/difficultysettings.py | 5 +- horizons/util/inventorychecker.py | 6 +- horizons/util/lastactiveplayersettlementmanager.py | 5 +- horizons/util/living.py | 2 +- horizons/util/loaders/__init__.py | 2 +- horizons/util/loaders/actionsetloader.py | 12 +- horizons/util/loaders/jsondecoder.py | 3 +- horizons/util/loaders/loader.py | 11 +- horizons/util/loaders/sqliteanimationloader.py | 4 +- horizons/util/loaders/sqliteatlasloader.py | 5 +- horizons/util/loaders/tilesetloader.py | 10 +- horizons/util/pathfinding/__init__.py | 2 +- horizons/util/pathfinding/pather.py | 8 +- horizons/util/pathfinding/pathfinder.py | 113 ++ horizons/util/pathfinding/pathfinding.py | 40 +- horizons/util/pathfinding/pathnodes.py | 33 +- horizons/util/pathfinding/roadpathfinder.py | 110 -- horizons/util/preloader.py | 92 + horizons/util/pychananimation.py | 3 +- horizons/util/pychanchildfinder.py | 2 +- horizons/util/python/__init__.py | 26 +- horizons/util/python/callback.py | 2 +- horizons/util/python/decorators.py | 45 +- horizons/util/python/defaultweakkeydictionary.py | 3 +- horizons/util/python/registry.py | 32 +- horizons/util/python/singleton.py | 2 +- horizons/util/python/weaklist.py | 3 +- horizons/util/python/weakmethod.py | 3 +- horizons/util/python/weakmethodlist.py | 3 +- horizons/util/random_map.py | 54 +- horizons/util/savegameaccessor.py | 10 +- horizons/util/savegameupgrader.py | 15 +- horizons/util/shapes/__init__.py | 2 +- horizons/util/shapes/annulus.py | 7 +- horizons/util/shapes/circle.py | 7 +- horizons/util/shapes/distances.py | 9 +- horizons/util/shapes/point.py | 5 +- horizons/util/shapes/radiusshape.py | 5 +- horizons/util/shapes/rect.py | 7 +- horizons/util/startgameoptions.py | 11 +- horizons/util/tile_orientation.py | 76 + horizons/util/uhdbaccessor.py | 14 +- horizons/util/worldobject.py | 10 +- horizons/util/yamlcache.py | 16 +- horizons/util/yamlcachestorage.py | 6 +- horizons/view.py | 7 +- horizons/world/__init__.py | 4 +- horizons/world/buildability/__init__.py | 2 +- horizons/world/buildability/binarycache.py | 3 +- horizons/world/buildability/connectedareacache.py | 3 +- horizons/world/buildability/freeislandcache.py | 3 +- horizons/world/buildability/partialbinarycache.py | 3 +- .../buildability/potentialroadconnectivitycache.py | 3 +- horizons/world/buildability/settlementcache.py | 3 +- .../world/buildability/simplecollectorareacache.py | 3 +- horizons/world/buildability/terraincache.py | 3 +- horizons/world/building/__init__.py | 11 +- horizons/world/building/buildable.py | 58 +- horizons/world/building/building.py | 10 +- horizons/world/building/buildingresourcehandler.py | 4 +- horizons/world/building/nature.py | 21 +- horizons/world/building/path.py | 81 +- horizons/world/building/production.py | 19 +- horizons/world/building/settler.py | 28 +- horizons/world/building/storages.py | 17 +- horizons/world/building/unitproduction.py | 10 +- horizons/world/building/war.py | 57 +- horizons/world/buildingowner.py | 5 +- horizons/world/concreteobject.py | 4 +- horizons/world/diplomacy.py | 3 +- horizons/world/disaster/__init__.py | 7 +- horizons/world/disaster/blackdeathdisaster.py | 7 +- .../world/disaster/buildinginfluencingdisaster.py | 15 +- horizons/world/disaster/disastermanager.py | 13 +- horizons/world/disaster/firedisaster.py | 5 +- horizons/world/ground.py | 7 +- horizons/world/ingametype.py | 7 +- horizons/world/island.py | 27 +- horizons/world/managers/__init__.py | 2 +- .../managers/productionfinishediconmanager.py | 12 +- horizons/world/managers/statusiconmanager.py | 15 +- horizons/world/player.py | 23 +- horizons/world/playerstats.py | 16 +- horizons/world/production/__init__.py | 2 +- horizons/world/production/producer.py | 36 +- horizons/world/production/production.py | 8 +- horizons/world/production/productionline.py | 3 +- horizons/world/production/unitproduction.py | 5 +- horizons/world/production/utilization.py | 3 +- horizons/world/providerhandler.py | 7 +- horizons/world/resourcehandler.py | 10 +- horizons/world/settlement.py | 28 +- horizons/world/status.py | 23 +- horizons/world/storage.py | 13 +- horizons/world/traderoute.py | 17 +- horizons/world/units/__init__.py | 13 +- horizons/world/units/animal.py | 16 +- horizons/world/units/collectors/__init__.py | 8 +- horizons/world/units/collectors/animalcollector.py | 8 +- .../world/units/collectors/buildingcollector.py | 20 +- horizons/world/units/collectors/collector.py | 37 +- horizons/world/units/fightingship.py | 10 +- horizons/world/units/groundunit.py | 12 +- horizons/world/units/movingobject.py | 20 +- horizons/world/units/pirateship.py | 3 +- horizons/world/units/ship.py | 32 +- horizons/world/units/unit.py | 14 +- horizons/world/units/unitexeptions.py | 4 +- horizons/world/units/weapon.py | 10 +- horizons/world/units/weaponholder.py | 22 +- horizons/world/worldutils.py | 15 +- mypy.ini | 5 + po/scenarios/af/The_Unknown.po | 2 +- po/scenarios/af/tutorial.po | 2 +- po/scenarios/bg/The_Unknown.po | 2 +- po/scenarios/bg/tutorial.po | 2 +- po/scenarios/ca@valencia/The_Unknown.po | 2 +- po/scenarios/ca@valencia/tutorial.po | 2 +- po/scenarios/da/The_Unknown.po | 2 +- po/scenarios/da/tutorial.po | 2 +- po/scenarios/de/tutorial.po | 158 +- po/scenarios/el/The_Unknown.po | 2 +- po/scenarios/el/tutorial.po | 2 +- po/scenarios/eo/The_Unknown.po | 2 +- po/scenarios/eo/tutorial.po | 2 +- po/scenarios/es/The_Unknown.po | 13 +- po/scenarios/es/tutorial.po | 11 +- po/scenarios/et/The_Unknown.po | 21 +- po/scenarios/fi/The_Unknown.po | 23 +- po/scenarios/fr/tutorial.po | 204 +-- po/scenarios/frp/The_Unknown.po | 2 +- po/scenarios/frp/tutorial.po | 2 +- po/scenarios/ga/The_Unknown.po | 2 +- po/scenarios/ga/tutorial.po | 2 +- po/scenarios/hi/The_Unknown.po | 2 +- po/scenarios/hi/tutorial.po | 2 +- po/scenarios/hr/The_Unknown.po | 20 +- po/scenarios/hu/tutorial.po | 11 +- po/scenarios/id/The_Unknown.po | 2 +- po/scenarios/id/tutorial.po | 2 +- po/scenarios/it/tutorial.po | 18 +- po/scenarios/ko/The_Unknown.po | 2 +- po/scenarios/ko/tutorial.po | 2 +- po/scenarios/lt/The_Unknown.po | 2 +- po/scenarios/lt/tutorial.po | 2 +- po/scenarios/lv/The_Unknown.po | 2 +- po/scenarios/lv/tutorial.po | 2 +- po/scenarios/ml/The_Unknown.po | 2 +- po/scenarios/ml/tutorial.po | 2 +- po/scenarios/nb/The_Unknown.po | 74 +- po/scenarios/nb/tutorial.po | 19 +- po/scenarios/nl/tutorial.po | 281 +-- po/scenarios/pt_BR/tutorial.po | 15 +- po/scenarios/ro/The_Unknown.po | 2 +- po/scenarios/ro/tutorial.po | 2 +- po/scenarios/ru/tutorial.po | 22 +- po/scenarios/sk/The_Unknown.po | 2 +- po/scenarios/sk/tutorial.po | 20 +- po/scenarios/sl/The_Unknown.po | 2 +- po/scenarios/sl/tutorial.po | 2 +- po/scenarios/th/The_Unknown.po | 2 +- po/scenarios/th/tutorial.po | 2 +- po/scenarios/uk/tutorial.po | 15 +- po/scenarios/vi/The_Unknown.po | 2 +- po/scenarios/vi/tutorial.po | 2 +- po/scenarios/zh_CN/The_Unknown.po | 2 +- po/scenarios/zh_CN/tutorial.po | 2 +- po/scenarios/zh_TW/The_Unknown.po | 2 +- po/scenarios/zh_TW/tutorial.po | 2 +- po/scenarios/zu/The_Unknown.po | 2 +- po/scenarios/zu/tutorial.po | 2 +- po/uh-server/af.po | 46 +- po/uh-server/bg.po | 48 +- po/uh-server/ca.po | 46 +- po/uh-server/[email protected] | 46 +- po/uh-server/cs.po | 46 +- po/uh-server/da.po | 48 +- po/uh-server/de.po | 46 +- po/uh-server/el.po | 46 +- po/uh-server/eo.po | 48 +- po/uh-server/es.po | 46 +- po/uh-server/et.po | 46 +- po/uh-server/fi.po | 58 +- po/uh-server/fr.po | 46 +- po/uh-server/frp.po | 48 +- po/uh-server/ga.po | 46 +- po/uh-server/gl.po | 46 +- po/uh-server/hi.po | 46 +- po/uh-server/hr.po | 46 +- po/uh-server/hu.po | 46 +- po/uh-server/id.po | 46 +- po/uh-server/it.po | 46 +- po/uh-server/ja.po | 46 +- po/uh-server/ko.po | 46 +- po/uh-server/lt.po | 48 +- po/uh-server/lv.po | 46 +- po/uh-server/ml.po | 46 +- po/uh-server/nb.po | 46 +- po/uh-server/nl.po | 46 +- po/uh-server/pl.po | 46 +- po/uh-server/pt.po | 70 +- po/uh-server/pt_BR.po | 46 +- po/uh-server/ro.po | 48 +- po/uh-server/ru.po | 46 +- po/uh-server/sk.po | 52 +- po/uh-server/sl.po | 46 +- po/uh-server/sr.po | 46 +- po/uh-server/sv.po | 46 +- po/uh-server/th.po | 46 +- po/uh-server/tr.po | 46 +- po/uh-server/uk.po | 46 +- po/uh-server/unknown-horizons-server.pot | 48 +- po/uh-server/vi.po | 46 +- po/uh-server/zh_CN.po | 52 +- po/uh-server/zh_TW.po | 48 +- po/uh-server/zu.po | 46 +- po/uh/af.po | 964 ++++++----- po/uh/bg.po | 964 ++++++----- po/uh/ca.po | 968 ++++++----- po/uh/[email protected] | 969 ++++++----- po/uh/cs.po | 974 ++++++----- po/uh/da.po | 964 ++++++----- po/uh/de.po | 980 +++++------ po/uh/el.po | 962 ++++++----- po/uh/eo.po | 964 ++++++----- po/uh/es.po | 1007 +++++------ po/uh/et.po | 971 ++++++----- po/uh/fi.po | 1099 ++++++------ po/uh/fr.po | 1055 ++++++------ po/uh/frp.po | 964 ++++++----- po/uh/ga.po | 962 ++++++----- po/uh/gl.po | 970 ++++++----- po/uh/hi.po | 962 ++++++----- po/uh/hr.po | 968 ++++++----- po/uh/hu.po | 972 +++++------ po/uh/id.po | 1046 ++++++------ po/uh/it.po | 971 ++++++----- po/uh/ja.po | 968 ++++++----- po/uh/ko.po | 968 ++++++----- po/uh/lt.po | 964 ++++++----- po/uh/lv.po | 962 ++++++----- po/uh/ml.po | 962 ++++++----- po/uh/nb.po | 1098 ++++++------ po/uh/nl.po | 989 +++++------ po/uh/pl.po | 971 ++++++----- po/uh/pt.po | 990 +++++------ po/uh/pt_BR.po | 971 ++++++----- po/uh/ro.po | 964 ++++++----- po/uh/ru.po | 971 ++++++----- po/uh/sk.po | 978 +++++------ po/uh/sl.po | 971 ++++++----- po/uh/sr.po | 962 ++++++----- po/uh/sv.po | 968 ++++++----- po/uh/th.po | 962 ++++++----- po/uh/tr.po | 968 ++++++----- po/uh/uk.po | 970 ++++++----- po/uh/unknown-horizons.pot | 966 ++++++----- po/uh/vi.po | 962 ++++++----- po/uh/zh_CN.po | 987 +++++------ po/uh/zh_TW.po | 1051 ++++++------ po/uh/zu.po | 962 ++++++----- po/voices/af.po | 2 +- po/voices/bg.po | 2 +- po/voices/ca.po | 5 +- po/voices/[email protected] | 2 +- po/voices/cs.po | 2 +- po/voices/da.po | 2 +- po/voices/de.po | 2 +- po/voices/el.po | 2 +- po/voices/es.po | 2 +- po/voices/et.po | 2 +- po/voices/fi.po | 39 +- po/voices/fr.po | 2 +- po/voices/ga.po | 2 +- po/voices/gl.po | 2 +- po/voices/hi.po | 2 +- po/voices/hr.po | 2 +- po/voices/hu.po | 2 +- po/voices/id.po | 2 +- po/voices/it.po | 2 +- po/voices/ja.po | 2 +- po/voices/ko.po | 2 +- po/voices/lt.po | 2 +- po/voices/lv.po | 2 +- po/voices/ml.po | 2 +- po/voices/nb.po | 2 +- po/voices/nl.po | 2 +- po/voices/pl.po | 2 +- po/voices/pt.po | 2 +- po/voices/pt_BR.po | 2 +- po/voices/ro.po | 2 +- po/voices/ru.po | 2 +- po/voices/sl.po | 2 +- po/voices/sr.po | 2 +- po/voices/sv.po | 2 +- po/voices/th.po | 2 +- po/voices/tr.po | 2 +- po/voices/uk.po | 2 +- po/voices/vi.po | 2 +- po/voices/zh_CN.po | 2 +- po/voices/zu.po | 2 +- requirements.txt | 3 + run_server.py | 5 +- run_tests.py | 14 +- run_uh.bat | 12 +- run_uh.py | 39 +- setup.cfg | 6 +- setup.py | 7 +- setup_mac.py | 2 +- stage_build_mac.py | 29 +- tests/__init__.py | 5 +- {horizons/ext => tests}/dummy.py | 6 +- tests/game/__init__.py | 8 +- tests/game/long/__init__.py | 2 +- tests/game/long/test_ai_long.py | 4 +- tests/game/long/test_ai_quick.py | 4 +- tests/game/long/test_ai_very_long.py | 4 +- tests/game/long/test_load_save_long.py | 4 +- tests/game/test_blackdeath.py | 4 +- tests/game/test_bugs.py | 15 +- tests/game/test_buildings.py | 7 +- tests/game/test_combat.py | 19 +- tests/game/test_example.py | 6 +- tests/game/test_farm.py | 5 +- tests/game/test_fire.py | 5 +- tests/game/test_load_save.py | 14 +- tests/game/test_production.py | 6 +- tests/game/test_remove_buildings.py | 11 +- tests/game/test_savegame_upgrade.py | 5 +- tests/game/test_settlement_range.py | 8 +- tests/game/test_settler.py | 8 +- tests/game/test_status_icons.py | 12 +- tests/game/test_traderoute.py | 3 +- tests/game/utils.py | 6 +- tests/gui/__init__.py | 7 +- tests/gui/cooperative.py | 6 +- tests/gui/helper.py | 136 +- tests/gui/ingame/__init__.py | 2 +- tests/gui/ingame/test_boatbuilder.py | 73 +- tests/gui/ingame/test_bugs.py | 116 +- tests/gui/ingame/test_build.py | 25 +- tests/gui/ingame/test_dialogs.py | 19 +- tests/gui/ingame/test_diplomacy.py | 10 +- tests/gui/ingame/test_generated.py | 40 +- tests/gui/ingame/test_hud.py | 18 +- tests/gui/ingame/test_keys.py | 2 +- tests/gui/ingame/test_logbook.py | 16 +- tests/gui/ingame/test_selection.py | 10 +- tests/gui/ingame/test_trade.py | 128 -- tests/gui/ingame/test_traderoute.py | 52 +- tests/gui/ingame/test_warehouse.py | 6 +- tests/gui/ingame/test_windows.py | 36 +- tests/gui/logger.py | 24 +- tests/gui/menu/__init__.py | 2 +- tests/gui/menu/test_mainmenu.py | 14 +- tests/gui/menu/test_multiplayer.py | 33 +- tests/gui/menu/test_saveload.py | 45 +- tests/gui/menu/test_singleplayer.py | 30 +- tests/gui/scenarios/__init__.py | 2 +- tests/gui/scenarios/helper.py | 5 +- tests/gui/scenarios/test_simple.py | 13 +- tests/gui/scenarios/test_tutorial.py | 87 +- tests/gui/test_editor.py | 24 +- tests/gui/test_example.py | 13 +- tests/gui/test_helper_find.py | 224 +++ tests/gui/test_internal.py | 27 +- tests/gui/test_mousetools.py | 14 +- tests/gui/test_unicode.py | 3 +- tests/unittests/__init__.py | 2 +- tests/unittests/gui/__init__.py | 2 +- tests/unittests/gui/test_window_manager.py | 4 +- tests/unittests/misc/test_paths.py | 18 +- tests/unittests/test_i18n.py | 104 ++ tests/unittests/test_main.py | 3 +- tests/unittests/test_messages.py | 6 +- tests/unittests/test_network.py | 2 +- tests/unittests/test_scheduler.py | 4 +- tests/unittests/test_timer.py | 10 +- tests/unittests/util/__init__.py | 2 +- tests/unittests/util/test_color.py | 8 +- .../{world/test_world.py => util/test_python.py} | 26 +- tests/unittests/util/test_registry.py | 34 +- tests/unittests/util/test_shapes.py | 3 +- tests/unittests/util/test_tile_orientation.py | 112 ++ tests/unittests/world/__init__.py | 2 +- tests/unittests/world/buildability/__init__.py | 2 +- .../world/buildability/test_connectedareacache.py | 4 +- .../world/buildability/test_partialbinarycache.py | 6 +- tests/unittests/world/component/__init__.py | 2 +- .../world/component/test_healthcomponent.py | 8 +- .../world/component/test_namedcomponent.py | 3 +- .../world/component/test_tradepostcomponent.py | 5 +- tests/unittests/world/production/__init__.py | 2 +- .../world/production/test_productionline.py | 5 +- tests/unittests/world/test_component.py | 2 +- tests/unittests/world/test_ingametype_classes.py | 81 + tests/unittests/world/test_storage.py | 9 +- tests/unittests/world/test_world.py | 5 +- tests/unittests/world/units/__init__.py | 2 +- tests/unittests/world/units/collectors/__init__.py | 2 +- .../world/units/collectors/test_collector.py | 10 +- tests/utils.py | 2 +- 842 files changed, 32228 insertions(+), 30193 deletions(-) -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/unknown-horizons.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

