diff --git a/CHANGELOG.md b/CHANGELOG.md index 7396c70b..2406e0b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ### 1.7.1 (20597, 2022-06-04) - V2 account logic fixes - Polishing V2 web-based login flow +- Minor fixes in some minigames (Thanks Droopy!) ### 1.7.0 (20591, 2022-06-02) - V2 accounts are now available (woohoo!). These are called 'BombSquad Accounts' in the account section. V2 accounts communicate with a completely new server and will be the foundation for lots of new functionality in the future. However they also function as a V1 account so existing functionality should still work. Note that the new 'workspaces' feature for V2-accounts is not yet enabled in this build, but it will be in the next few builds. Also note that account types such as GameCenter and Google-Play will be 'upgraded' to V2 accounts in the future so there is no need to try this out if you use one of those. But if you use device-accounts you might want to create yourself a V2 account, since device-accounts will remain V1-only (though you can link an old device-account to a v2-enabled account if you want to keep your progress). Getting a V2 account now also gives you a chance to reserve a nice account-tag before all the good ones are taken. diff --git a/assets/src/ba_data/python/bastd/game/assault.py b/assets/src/ba_data/python/bastd/game/assault.py index 6389b4bd..0a56a07a 100644 --- a/assets/src/ba_data/python/bastd/game/assault.py +++ b/assets/src/ba_data/python/bastd/game/assault.py @@ -175,12 +175,16 @@ class AssaultGame(ba.TeamGameActivity[Player, Team]): def _handle_base_collide(self, team: Team) -> None: try: - player = ba.getcollision().opposingnode.getdelegate( - PlayerSpaz, True).getplayer(Player, True) + spaz = ba.getcollision().opposingnode.getdelegate(PlayerSpaz, True) except ba.NotFoundError: return - if not player.is_alive(): + if not spaz.is_alive(): + return + + try: + player = spaz.getplayer(Player, True) + except ba.NotFoundError: return # If its another team's player, they scored. diff --git a/assets/src/ba_data/python/bastd/game/capturetheflag.py b/assets/src/ba_data/python/bastd/game/capturetheflag.py index 0e910620..881d9187 100644 --- a/assets/src/ba_data/python/bastd/game/capturetheflag.py +++ b/assets/src/ba_data/python/bastd/game/capturetheflag.py @@ -274,6 +274,11 @@ class CaptureTheFlagGame(ba.TeamGameActivity[Player, Team]): # If the enemy flag is already here, score! if team.enemy_flag_at_base: + # And show team name which scored (but actually we could + # show here player who returned enemy flag). + self.show_zoom_message(ba.Lstr(resource='nameScoresText', + subs=[('${NAME}', team.name)]), + color=team.color) self._score(team) else: team.enemy_flag_at_base = True @@ -435,11 +440,14 @@ class CaptureTheFlagGame(ba.TeamGameActivity[Player, Team]): """ player: Optional[Player] try: - player = ba.getcollision().sourcenode.getdelegate( - PlayerSpaz, True).getplayer(Player, True) + spaz = ba.getcollision().sourcenode.getdelegate(PlayerSpaz, True) except ba.NotFoundError: - # This can happen if the player leaves but his corpse touches/etc. - player = None + return + + if not spaz.is_alive(): + return + + player = spaz.getplayer(Player, True) if player: player.touching_own_flag += (1 if connecting else -1) diff --git a/assets/src/ba_data/python/bastd/game/kingofthehill.py b/assets/src/ba_data/python/bastd/game/kingofthehill.py index 9194f5ac..1ea3e9aa 100644 --- a/assets/src/ba_data/python/bastd/game/kingofthehill.py +++ b/assets/src/ba_data/python/bastd/game/kingofthehill.py @@ -239,11 +239,15 @@ class KingOfTheHillGame(ba.TeamGameActivity[Player, Team]): def _handle_player_flag_region_collide(self, colliding: bool) -> None: try: - player = ba.getcollision().opposingnode.getdelegate( - PlayerSpaz, True).getplayer(Player, True) + spaz = ba.getcollision().sourcenode.getdelegate(PlayerSpaz, True) except ba.NotFoundError: return + if not spaz.is_alive(): + return + + player = spaz.getplayer(Player, True) + # Different parts of us can collide so a single value isn't enough # also don't count it if we're dead (flying heads shouldn't be able to # win the game :-) diff --git a/assets/src/ba_data/python/bastd/game/race.py b/assets/src/ba_data/python/bastd/game/race.py index 5150c0b4..1aa3254a 100644 --- a/assets/src/ba_data/python/bastd/game/race.py +++ b/assets/src/ba_data/python/bastd/game/race.py @@ -224,9 +224,15 @@ class RaceGame(ba.TeamGameActivity[Player, Team]): collision = ba.getcollision() try: region = collision.sourcenode.getdelegate(RaceRegion, True) - player = collision.opposingnode.getdelegate(PlayerSpaz, - True).getplayer( - Player, True) + spaz = collision.opposingnode.getdelegate(PlayerSpaz, True) + except ba.NotFoundError: + return + + if not spaz.is_alive(): + return + + try: + player = spaz.getplayer(Player, True) except ba.NotFoundError: return