trosnoth issueshttps://foss.heptapod.net/games/trosnoth/-/issues2021-02-05T10:54:07Zhttps://foss.heptapod.net/games/trosnoth/-/issues/13D client2021-02-05T10:54:07ZKrzysztof Jura3D clientThere is unfinished client using Pandas3D. Is it going to be finished and is it really going to be 3D game?There is unfinished client using Pandas3D. Is it going to be finished and is it really going to be 3D game?https://foss.heptapod.net/games/trosnoth/-/issues/2pygame2 doesn't contain K_FIRST2021-02-05T10:37:47ZKrzysztof Jurapygame2 doesn't contain K_FIRST`K_FIRST` from `pygame` is used in `gui/keyboard` but it raises `AttributeError` in pygame2.`K_FIRST` from `pygame` is used in `gui/keyboard` but it raises `AttributeError` in pygame2.https://foss.heptapod.net/games/trosnoth/-/issues/3I want to contribute to Trosnoth.2021-04-05T11:37:28ZKrzysztof JuraI want to contribute to Trosnoth.Please allow forking the project so people can send Merge Requests.Please allow forking the project so people can send Merge Requests.https://foss.heptapod.net/games/trosnoth/-/issues/4NoneType has no attribute 'upgrades'2021-05-19T11:28:11ZJoshua D. BartlettNoneType has no attribute 'upgrades'When playing in the `Phedg1` topic, with minimap disruption selected, I get this traceback spamming the logs:
```
2021-03-16 16:25:24,354 <trosnoth.trosnothgui.ingame.detailsInterface.UpgradeDisplay object at 0x7fa46cb890d0>: 'NoneType'...When playing in the `Phedg1` topic, with minimap disruption selected, I get this traceback spamming the logs:
```
2021-03-16 16:25:24,354 <trosnoth.trosnothgui.ingame.detailsInterface.UpgradeDisplay object at 0x7fa46cb890d0>: 'NoneType' object has no attribute 'upgrades'
Traceback (most recent call last):
File "/home/josh/dev/trosnoth2/trosnoth/gui/framework/framework.py", line 79, in draw
element.draw(screen)
File "/home/josh/dev/trosnoth2/trosnoth/trosnothgui/ingame/gauges.py", line 162, in draw
super(CoinGauge, self).draw(surface, True)
File "/home/josh/dev/trosnoth2/trosnoth/trosnothgui/ingame/gauges.py", line 25, in draw
ratio = min(1, max(0, self.getRatio()))
File "/home/josh/dev/trosnoth2/trosnoth/trosnothgui/ingame/gauges.py", line 172, in getRatio
totalCoins = self.player.team.upgrades[self.upgrade]
AttributeError: 'NoneType' object has no attribute 'upgrades'
```Peter HedgesPeter Hedgeshttps://foss.heptapod.net/games/trosnoth/-/issues/5Review and merge Juggernaut game mode2021-03-30T13:01:27ZJoshua D. BartlettReview and merge Juggernaut game mode@Phedg1 has submitted changes. They need to be reviewed and merged.@Phedg1 has submitted changes. They need to be reviewed and merged.Joshua D. BartlettJoshua D. Bartletthttps://foss.heptapod.net/games/trosnoth/-/issues/6Should we combine Juggernaut and Elephant King scenarios?2021-03-30T13:01:27ZJoshua D. BartlettShould we combine Juggernaut and Elephant King scenarios?@Phedg1 has introduced a Juggernaut game mode, but in many ways it's quite similar to the existing Elephant King scenario. I propose we combine the best bits of both into a Juggerphant mode.
The most obvious difference is that in Elepha...@Phedg1 has introduced a Juggernaut game mode, but in many ways it's quite similar to the existing Elephant King scenario. I propose we combine the best bits of both into a Juggerphant mode.
The most obvious difference is that in Elephant King mode everyone can kill everyone (like in free-for-all), but in Juggernaut mode, only the Juggernaut can hurt anyone who isn't the Juggernaut.
The other difference is that Juggernaut mode is scored based on kills whereas Elephant King is scored based on time with the elephant.
Comments are welcome.https://foss.heptapod.net/games/trosnoth/-/issues/7Configurable server option for number of extra bots in humans vs. machines2021-08-22T12:55:32ZJoshua D. BartlettConfigurable server option for number of extra bots in humans vs. machinesThe functionality can be achieved by changing lines 97 and 123 of `levels/hvm.py` like so:
```
- while self.botSurplus < 0:
+ while self.botSurplus < number_of_extra_bots:
```
This should be configurable per arena, like `...The functionality can be achieved by changing lines 97 and 123 of `levels/hvm.py` like so:
```
- while self.botSurplus < 0:
+ while self.botSurplus < number_of_extra_bots:
```
This should be configurable per arena, like `machines_difficulty` or `machines_bot_kind`.1.17.0https://foss.heptapod.net/games/trosnoth/-/issues/8Accuracy stats on server are broken.2021-06-16T01:30:09ZJoshua D. BartlettAccuracy stats on server are broken.### Summary
The server shows the correct stats for shots fired and shots hit, but the accuracy figure doesn't correspond to this.
### Steps to reproduce
Play a game on a server, then go to the web interface and find the game stats. Lo...### Summary
The server shows the correct stats for shots fired and shots hit, but the accuracy figure doesn't correspond to this.
### Steps to reproduce
Play a game on a server, then go to the web interface and find the game stats. Look at accuracy.1.16.0https://foss.heptapod.net/games/trosnoth/-/issues/9Add a note on server game stats page to say that "shots hit" doesn't include ...2021-06-18T10:51:58ZJoshua D. BartlettAdd a note on server game stats page to say that "shots hit" doesn't include shoxwaves.It's important that "shots fired" and "shots hit" don't include shoxwave because shoxwave shouldn't affect the accuracy stats.
However, it's confusing.
We should fix this by putting an explanatory note on the game stats page.It's important that "shots fired" and "shots hit" don't include shoxwave because shoxwave shouldn't affect the accuracy stats.
However, it's confusing.
We should fix this by putting an explanatory note on the game stats page.1.16.0https://foss.heptapod.net/games/trosnoth/-/issues/10Review and merge Race scenario2022-02-10T05:35:18ZJoshua D. BartlettReview and merge Race scenarioIn topics `Phedg1` and `Race`.In topics `Phedg1` and `Race`.https://foss.heptapod.net/games/trosnoth/-/issues/11Review and merge upgrade system improvements2021-09-21T04:07:30ZJoshua D. BartlettReview and merge upgrade system improvementsIn topics `Phedg1` and `Upgrades`.In topics `Phedg1` and `Upgrades`.1.17.0Joshua D. BartlettJoshua D. Bartletthttps://foss.heptapod.net/games/trosnoth/-/issues/12Space Vampire Scenario2021-06-16T01:07:29ZJoshua D. BartlettSpace Vampire Scenario### Quick summary
One player is the invisible space vampire. The other players have to try to kill the space vampire before they get turned into vampire thralls.
### Why it would be valuable
It would be lots of fun!
It doesn't change...### Quick summary
One player is the invisible space vampire. The other players have to try to kill the space vampire before they get turned into vampire thralls.
### Why it would be valuable
It would be lots of fun!
It doesn't change the balance of regular games.
### Proposal
The game is played on a largish map, with all zones light red except one random one which is dark blue.
One player is randomly selected to be the space vampire, and is placed on the red team.
The remaining players are space villagers, and are on the blue team. The space villagers start with 5 health, and their minimap is always disrupted. They can capture zones using normal zone capture mechanics. (Capturing zones is their main way of getting coins to help them defeat the space vampire.)
The aim of the space villagers is to survive until the time runs out, or to kill the space vampire.
The space vampire starts with 5 health plus 3 health per space villager. The space vampire starts with a moderate to large amount of coins. The space vampire has a permanent ninja-like ability, and only becomes visible when inside a dark blue zone, when near the orb of a light blue zone, or when reloading. The space vampire can capture blue zones, but only if there are no space villagers in the zone. If normal zone mechanics dictate that blue zones should be neutralised, they instead become light red. There are never any dark red zones, and red zones cannot be neutralised.
The aim of the space vampire is to kill all space villagers. When a space villager dies, they join red team as a thrall, and have only one health. Thralls cannot capture blue zones. Thralls cannot win the game (if all space villagers die, only the original space vampire is declared the winner).
The final zone of any colour can never be captured.
If the space vampire leaves the game for any reason, they have 15 seconds to rejoin, otherwise the remaining space villagers are declared the winners. If they do rejoin, their health is set to what it was when they left.https://foss.heptapod.net/games/trosnoth/-/issues/13Changes to buy ammo/weapon menu2021-06-16T01:07:28ZJoshua D. BartlettChanges to buy ammo/weapon menuI’m currently reviewing changes to the upgrade system, which make guns rely on ammo rather than time, and allow you to cycle between multiple guns that you have ammo for.
I’d like to propose the current improvements to the user experien...I’m currently reviewing changes to the upgrade system, which make guns rely on ammo rather than time, and allow you to cycle between multiple guns that you have ammo for.
I’d like to propose the current improvements to the user experience for purchasing ammo for the various guns:
* In the radial shop menu, when you go to the guns screen, each pie slice will show not only the weapon icon, but also a little bar showing how much ammo you currently have for that weapon.
* On the guns screen, when you select a weapon, (assuming you have enough money) you will immediately buy a full clip of ammo, but the guns screen will stay open so that you can buy ammo for other weapons while you’re there.
* On all the radial screens, there will be an Ⓧ button in the centre which closes the radial menu. This will be especially useful on the guns screen as selecting a gun won’t close the menu automatically.
* On all the radial screens, the amount of money each item costs will be shown for each pie slice.
I might have some UX suggestions for team upgrades too soon, but I'll create a separate ticket when I get to that.Joshua D. BartlettJoshua D. Bartletthttps://foss.heptapod.net/games/trosnoth/-/issues/14Server web interface should default to port 8000 with command-line option to ...2021-08-01T04:46:35ZJoshua D. BartlettServer web interface should default to port 8000 with command-line option to overrideCurrently it defaults to port 0 (select a free port), but this is annoying when setting up a headless server.Currently it defaults to port 0 (select a free port), but this is annoying when setting up a headless server.https://foss.heptapod.net/games/trosnoth/-/issues/15Server should have UI option to save logs to file, and that file should be vi...2022-06-26T11:24:54ZJoshua D. BartlettServer should have UI option to save logs to file, and that file should be viewable through the web interface by adminshttps://foss.heptapod.net/games/trosnoth/-/issues/16Can the game automatically create separate Discord voice chat rooms for teams?2021-04-21T12:26:24ZJoshua D. BartlettCan the game automatically create separate Discord voice chat rooms for teams?https://foss.heptapod.net/games/trosnoth/-/issues/17On server, replace arenas with saved game configs2021-04-21T12:37:05ZJoshua D. BartlettOn server, replace arenas with saved game configs- Each saved game config stores duration, map, game type etc.
- Server has a flag about whether to enable a lobby where people can suggest game types.
- Have a server setting listing available game ports to use. Each game/lobby just uses...- Each saved game config stores duration, map, game type etc.
- Server has a flag about whether to enable a lobby where people can suggest game types.
- Have a server setting listing available game ports to use. Each game/lobby just uses the next available port
- Games can be started either from the lobby, or by admins from the server web interface.https://foss.heptapod.net/games/trosnoth/-/issues/18On server, allow setting up fixtures in advance2021-04-21T12:38:39ZJoshua D. BartlettOn server, allow setting up fixtures in advanceFor tournament support.
- Depends on #17 being completed
- Admins can set up a fixture on the server, with a game config and specific players.
- When the fixture is set to "visible", players will be able to join the game, but only if th...For tournament support.
- Depends on #17 being completed
- Admins can set up a fixture on the server, with a game config and specific players.
- When the fixture is set to "visible", players will be able to join the game, but only if they're listed as allowed players.
- A fixture can be associated with a tournament, in which case the played match will also be associated with that tournament.
- (Maybe) allow teams to be set up within a tournament, and allow adding the team to the fixture so that you don't have to manually add every player.https://foss.heptapod.net/games/trosnoth/-/issues/19In server web interface, give a link for admins to nullify a tournament game ...2021-04-21T12:38:39ZJoshua D. BartlettIn server web interface, give a link for admins to nullify a tournament game resultThis will remove the game from the tournament.
If the game came from a fixture (see #18), maybe also have a link for replaying the same fixture.This will remove the game from the tournament.
If the game came from a fixture (see #18), maybe also have a link for replaying the same fixture.https://foss.heptapod.net/games/trosnoth/-/issues/20Database traceback on official server2021-06-18T11:33:16ZJoshua D. BartlettDatabase traceback on official serverThe following traceback was in the server logs.
It was likely related to when an admin reset a user's password, and that user then tried and failed to log in using the game client using the new password. Logging in through the web inter...The following traceback was in the server logs.
It was likely related to when an admin reset a user's password, and that user then tried and failed to log in using the game client using the new password. Logging in through the web interface worked.
```
trosnoth_1 | 2021-04-21 10:42:06,613 [3] Error in queued database function
trosnoth_1 | Traceback (most recent call last):
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
trosnoth_1 | return self.cursor.execute(sql, params)
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py", line 383, in execute
trosnoth_1 | return Database.Cursor.execute(self, query, params)
trosnoth_1 | sqlite3.IntegrityError: UNIQUE constraint failed: trosnoth_trosnothuser.nick
trosnoth_1 |
trosnoth_1 | The above exception was the direct cause of the following exception:
trosnoth_1 |
trosnoth_1 | Traceback (most recent call last):
trosnoth_1 | File "/opt/trosnoth/trosnoth/server/../../trosnoth/dbqueue.py", line 36, in init
trosnoth_1 | yield fn()
trosnoth_1 | File "/opt/trosnoth/trosnoth/server/../../trosnoth/djangoapp/models.py", line 170, in writeNickToDB
trosnoth_1 | user.save()
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 743, in save
trosnoth_1 | self.save_base(using=using, force_insert=force_insert,
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 780, in save_base
trosnoth_1 | updated = self._save_table(
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 853, in _save_table
trosnoth_1 | updated = self._do_update(base_qs, using, pk_val, values, update_fields,
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 903, in _do_update
trosnoth_1 | return filtered._update(values) > 0
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/models/query.py", line 760, in _update
trosnoth_1 | return query.get_compiler(self.db).execute_sql(CURSOR)
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1471, in execute_sql
trosnoth_1 | cursor = super().execute_sql(result_type)
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1142, in execute_sql
trosnoth_1 | cursor.execute(sql, params)
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 67, in execute
trosnoth_1 | return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
trosnoth_1 | return executor(sql, params, many, context)
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
trosnoth_1 | return self.cursor.execute(sql, params)
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/utils.py", line 89, in __exit__
trosnoth_1 | raise dj_exc_value.with_traceback(traceback) from exc_value
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
trosnoth_1 | return self.cursor.execute(sql, params)
trosnoth_1 | File "/usr/local/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py", line 383, in execute
trosnoth_1 | return Database.Cursor.execute(self, query, params)
trosnoth_1 | django.db.utils.IntegrityError: UNIQUE constraint failed: trosnoth_trosnothuser.nick
trosnoth_1 | 2021-04-21 10:44:02,072 [3] Player 'JohnBot-1' did not notice death
```1.16.0