mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-04 22:43:17 +08:00
commit
260b74a06f
@ -137,9 +137,6 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]):
|
|||||||
self.setup_standard_powerup_drops()
|
self.setup_standard_powerup_drops()
|
||||||
self._flag_spawn_pos = self.map.get_flag_position(None)
|
self._flag_spawn_pos = self.map.get_flag_position(None)
|
||||||
Flag.project_stand(self._flag_spawn_pos)
|
Flag.project_stand(self._flag_spawn_pos)
|
||||||
self._set_chosen_one_player(None)
|
|
||||||
|
|
||||||
pos = self._flag_spawn_pos
|
|
||||||
ba.timer(1.0, call=self._tick, repeat=True)
|
ba.timer(1.0, call=self._tick, repeat=True)
|
||||||
|
|
||||||
mat = self._reset_region_material = ba.Material()
|
mat = self._reset_region_material = ba.Material()
|
||||||
@ -156,14 +153,20 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]):
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
self._reset_region = ba.newnode('region',
|
self._set_chosen_one_player(None)
|
||||||
attrs={
|
|
||||||
'position': (pos[0], pos[1] + 0.75,
|
def _create_reset_region(self) -> None:
|
||||||
pos[2]),
|
assert self._reset_region_material is not None
|
||||||
'scale': (0.5, 0.5, 0.5),
|
assert self._flag_spawn_pos is not None
|
||||||
'type': 'sphere',
|
pos = self._flag_spawn_pos
|
||||||
'materials': [mat]
|
self._reset_region = ba.newnode(
|
||||||
})
|
'region',
|
||||||
|
attrs={
|
||||||
|
'position': (pos[0], pos[1] + 0.75, pos[2]),
|
||||||
|
'scale': (0.5, 0.5, 0.5),
|
||||||
|
'type': 'sphere',
|
||||||
|
'materials': [self._reset_region_material]
|
||||||
|
})
|
||||||
|
|
||||||
def _get_chosen_one_player(self) -> Player | None:
|
def _get_chosen_one_player(self) -> Player | None:
|
||||||
# Should never return invalid references; return None in that case.
|
# Should never return invalid references; return None in that case.
|
||||||
@ -176,14 +179,14 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]):
|
|||||||
if self._get_chosen_one_player() is not None:
|
if self._get_chosen_one_player() is not None:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Attempt to get a Player controlling a Spaz that we hit.
|
# Attempt to get a Actor that we hit.
|
||||||
try:
|
try:
|
||||||
player = ba.getcollision().opposingnode.getdelegate(
|
spaz = ba.getcollision().opposingnode.getdelegate(PlayerSpaz, True)
|
||||||
PlayerSpaz, True).getplayer(Player, True)
|
player = spaz.getplayer(Player, True)
|
||||||
except ba.NotFoundError:
|
except ba.NotFoundError:
|
||||||
return
|
return
|
||||||
|
|
||||||
if player.is_alive():
|
if spaz.is_alive():
|
||||||
self._set_chosen_one_player(player)
|
self._set_chosen_one_player(player)
|
||||||
|
|
||||||
def _flash_flag_spawn(self) -> None:
|
def _flash_flag_spawn(self) -> None:
|
||||||
@ -278,6 +281,10 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]):
|
|||||||
|
|
||||||
# Also an extra momentary flash.
|
# Also an extra momentary flash.
|
||||||
self._flash_flag_spawn()
|
self._flash_flag_spawn()
|
||||||
|
|
||||||
|
# Re-create our flag region in case if someone is waiting for
|
||||||
|
# flag right there:
|
||||||
|
self._create_reset_region()
|
||||||
else:
|
else:
|
||||||
if player.actor:
|
if player.actor:
|
||||||
self._flag = None
|
self._flag = None
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user