mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-06 07:23:37 +08:00
Merge pull request #649 from SoK05/master
Runaround - Heartbeat behavior
This commit is contained in:
commit
d6dca9e83f
@ -51,6 +51,10 @@
|
|||||||
### Rikko
|
### Rikko
|
||||||
- Created the original "reject_recently_left_players" plugin
|
- Created the original "reject_recently_left_players" plugin
|
||||||
|
|
||||||
|
### SoK
|
||||||
|
- Modder
|
||||||
|
- BSE Heartbeat mechanic port
|
||||||
|
|
||||||
### Temp (3alTemp)
|
### Temp (3alTemp)
|
||||||
- Original idea for customizable series length on GUI builds
|
- Original idea for customizable series length on GUI builds
|
||||||
- Modder & Bug Fixer
|
- Modder & Bug Fixer
|
||||||
@ -59,5 +63,4 @@
|
|||||||
- Added support for joining using ipv6 address
|
- Added support for joining using ipv6 address
|
||||||
|
|
||||||
### Loup Garou
|
### Loup Garou
|
||||||
- Added sphinx documentation generation
|
- Added sphinx documentation generation
|
||||||
|
|
||||||
@ -190,6 +190,7 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]):
|
|||||||
self._lives_text: bs.NodeActor | None = None
|
self._lives_text: bs.NodeActor | None = None
|
||||||
self._flawless = True
|
self._flawless = True
|
||||||
self._time_bonus_timer: bs.Timer | None = None
|
self._time_bonus_timer: bs.Timer | None = None
|
||||||
|
self._lives_hbtime: bs.Timer | None = None
|
||||||
self._time_bonus_text: bs.NodeActor | None = None
|
self._time_bonus_text: bs.NodeActor | None = None
|
||||||
self._time_bonus_mult: float | None = None
|
self._time_bonus_mult: float | None = None
|
||||||
self._wave_text: bs.NodeActor | None = None
|
self._wave_text: bs.NodeActor | None = None
|
||||||
@ -551,6 +552,20 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]):
|
|||||||
if self._lives == 0:
|
if self._lives == 0:
|
||||||
self._bots.stop_moving()
|
self._bots.stop_moving()
|
||||||
self.continue_or_end_game()
|
self.continue_or_end_game()
|
||||||
|
|
||||||
|
# Heartbeat behavior
|
||||||
|
if self._lives < 5:
|
||||||
|
hbtime = 0.39 + (0.21 * self._lives)
|
||||||
|
self._lives_hbtime = bs.Timer(
|
||||||
|
hbtime,
|
||||||
|
lambda: self.heart_dyin(True, hbtime),
|
||||||
|
repeat=True
|
||||||
|
)
|
||||||
|
self.heart_dyin(True)
|
||||||
|
else:
|
||||||
|
self._lives_hbtime = None
|
||||||
|
self.heart_dyin(False)
|
||||||
|
|
||||||
assert self._lives_text is not None
|
assert self._lives_text is not None
|
||||||
assert self._lives_text.node
|
assert self._lives_text.node
|
||||||
self._lives_text.node.text = str(self._lives)
|
self._lives_text.node.text = str(self._lives)
|
||||||
@ -1392,3 +1407,31 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]):
|
|||||||
|
|
||||||
def _set_can_end_wave(self) -> None:
|
def _set_can_end_wave(self) -> None:
|
||||||
self._can_end_wave = True
|
self._can_end_wave = True
|
||||||
|
|
||||||
|
def heart_dyin(self,
|
||||||
|
status: bool,
|
||||||
|
time: float = 1.22) -> None:
|
||||||
|
""" Makes the UI heart beat at low health. """
|
||||||
|
assert self._lives_bg is not None
|
||||||
|
if self._lives_bg.node.exists():
|
||||||
|
return
|
||||||
|
heart = self._lives_bg.node
|
||||||
|
|
||||||
|
# Make the heart beat intensely!
|
||||||
|
if status:
|
||||||
|
bs.animate_array(heart, 'scale', 2, {
|
||||||
|
0:(90,90),
|
||||||
|
time*0.1:(105,105),
|
||||||
|
time*0.21:(88,88),
|
||||||
|
time*0.42:(90,90),
|
||||||
|
time*0.52:(105,105),
|
||||||
|
time*0.63:(88,88),
|
||||||
|
time:(90,90),
|
||||||
|
})
|
||||||
|
|
||||||
|
# Neutralize heartbeat (Done did when dead.)
|
||||||
|
else:
|
||||||
|
bs.animate_array(heart, 'scale', 2, {
|
||||||
|
0.0: list(heart.scale),
|
||||||
|
time: (90,90),
|
||||||
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user