From a38745e4276c619c4301a9cdbf1a9243b97b32be Mon Sep 17 00:00:00 2001 From: SoK05 Date: Mon, 8 Jan 2024 04:57:05 +0100 Subject: [PATCH 1/6] Runaround - Heartbeat mechanic --- .../python/bascenev1lib/game/runaround.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/assets/ba_data/python/bascenev1lib/game/runaround.py b/src/assets/ba_data/python/bascenev1lib/game/runaround.py index 6640601f..ee456505 100644 --- a/src/assets/ba_data/python/bascenev1lib/game/runaround.py +++ b/src/assets/ba_data/python/bascenev1lib/game/runaround.py @@ -521,6 +521,18 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]): if self._lives == 0: self._bots.stop_moving() 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.node self._lives_text.node.text = str(self._lives) @@ -1358,3 +1370,31 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]): def _set_can_end_wave(self) -> None: self._can_end_wave = True + + def heart_dyin(self, + status: bool, + time: float = 1.22) -> None: + """ Makes the UI heart beat at low health. """ + if not (self._lives_bg or + 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:heart.scale, + time:(90,90), + }) From 72294c2b0be81981c9008d434ce33a300ae289b8 Mon Sep 17 00:00:00 2001 From: SoK05 Date: Mon, 8 Jan 2024 05:02:14 +0100 Subject: [PATCH 2/6] Update CONTRIBUTORS.md --- CONTRIBUTORS.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 8fccc544..0f488043 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -50,3 +50,11 @@ ### Rikko - Created the original "reject_recently_left_players" plugin + +### SoK +- Modder +- BSE Heartbeat mechanic port + +### Temp +- Modder +- CTF Flag Bug Fix \ No newline at end of file From 819edc18eb71d6995da65e01a8a52f3403537a2d Mon Sep 17 00:00:00 2001 From: SoK05 Date: Thu, 25 Jan 2024 23:18:11 +0100 Subject: [PATCH 3/6] pylint fix --- src/assets/ba_data/python/bascenev1lib/game/runaround.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/assets/ba_data/python/bascenev1lib/game/runaround.py b/src/assets/ba_data/python/bascenev1lib/game/runaround.py index ee456505..245ada60 100644 --- a/src/assets/ba_data/python/bascenev1lib/game/runaround.py +++ b/src/assets/ba_data/python/bascenev1lib/game/runaround.py @@ -188,6 +188,7 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]): self._lives_text: bs.NodeActor | None = None self._flawless = True 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_mult: float | None = None self._wave_text: bs.NodeActor | None = None From 57510085e580b2033ae564427231ac8a195e1799 Mon Sep 17 00:00:00 2001 From: TrialTemp Date: Wed, 13 Mar 2024 11:49:40 -0600 Subject: [PATCH 4/6] ci compliant --- .../python/bascenev1lib/game/runaround.py | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/assets/ba_data/python/bascenev1lib/game/runaround.py b/src/assets/ba_data/python/bascenev1lib/game/runaround.py index 245ada60..c10cd3c5 100644 --- a/src/assets/ba_data/python/bascenev1lib/game/runaround.py +++ b/src/assets/ba_data/python/bascenev1lib/game/runaround.py @@ -522,18 +522,20 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]): if self._lives == 0: self._bots.stop_moving() 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._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.node self._lives_text.node.text = str(self._lives) @@ -1371,16 +1373,19 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]): def _set_can_end_wave(self) -> None: self._can_end_wave = True - + def heart_dyin(self, status: bool, time: float = 1.22) -> None: """ Makes the UI heart beat at low health. """ - if not (self._lives_bg or - self._lives_bg.node.exists()): return - + assert self._lives_bg is not None + if ( + self._lives_bg is None + or self._lives_bg.node.exists() + ): + return heart = self._lives_bg.node - + # Make the heart beat intensely! if status: bs.animate_array(heart, 'scale', 2, { @@ -1396,6 +1401,6 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]): # Neutralize heartbeat (Done did when dead.) else: bs.animate_array(heart, 'scale', 2, { - 0:heart.scale, - time:(90,90), + 0.0: heart.scale, + time: (90,90), }) From 2fdf006030654006b93c2fb9bc78c89a880c91de Mon Sep 17 00:00:00 2001 From: TrialTemp Date: Wed, 13 Mar 2024 12:04:43 -0600 Subject: [PATCH 5/6] ci compliant? --- src/assets/ba_data/python/bascenev1lib/game/runaround.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/assets/ba_data/python/bascenev1lib/game/runaround.py b/src/assets/ba_data/python/bascenev1lib/game/runaround.py index 678369b4..94f831a4 100644 --- a/src/assets/ba_data/python/bascenev1lib/game/runaround.py +++ b/src/assets/ba_data/python/bascenev1lib/game/runaround.py @@ -1413,10 +1413,7 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]): time: float = 1.22) -> None: """ Makes the UI heart beat at low health. """ assert self._lives_bg is not None - if ( - self._lives_bg is None - or self._lives_bg.node.exists() - ): + if self._lives_bg.node.exists(): return heart = self._lives_bg.node @@ -1434,7 +1431,8 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]): # Neutralize heartbeat (Done did when dead.) else: + defscale: Sequence[float] = heart.scale bs.animate_array(heart, 'scale', 2, { - 0.0: heart.scale, + 0.0: defscale, time: (90,90), }) From 498e6acb7bd4d33c5641123ff26fe99720f880bf Mon Sep 17 00:00:00 2001 From: TrialTemp Date: Wed, 13 Mar 2024 12:12:34 -0600 Subject: [PATCH 6/6] brain hurting --- src/assets/ba_data/python/bascenev1lib/game/runaround.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/assets/ba_data/python/bascenev1lib/game/runaround.py b/src/assets/ba_data/python/bascenev1lib/game/runaround.py index 94f831a4..f94e2359 100644 --- a/src/assets/ba_data/python/bascenev1lib/game/runaround.py +++ b/src/assets/ba_data/python/bascenev1lib/game/runaround.py @@ -1431,8 +1431,7 @@ class RunaroundGame(bs.CoopGameActivity[Player, Team]): # Neutralize heartbeat (Done did when dead.) else: - defscale: Sequence[float] = heart.scale bs.animate_array(heart, 'scale', 2, { - 0.0: defscale, + 0.0: list(heart.scale), time: (90,90), })