Rename & update musical_flags.py for 1.7.37+ (API 9)

• Removed base64 encoded text (trusting the community that they won't change the name & steal credits)
• Properly formatted for readability
This commit is contained in:
! Freaku 2025-02-08 11:13:06 +05:30 committed by GitHub
parent be780a4580
commit 24d1fad594
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,5 +1,5 @@
## Made by MattZ45986 on GitHub # Made by MattZ45986 on GitHub
## Ported by your friend: Freaku # Ported by your friend: Freaku
# Bug Fixes & Improvements as well... # Bug Fixes & Improvements as well...
@ -8,11 +8,11 @@
# https://discord.gg/ucyaesh # https://discord.gg/ucyaesh
from __future__ import annotations from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import _babase, random, math import _babase
import random
import math
import bascenev1 as bs import bascenev1 as bs
from bascenev1lib.actor.flag import Flag, FlagPickedUpMessage from bascenev1lib.actor.flag import Flag, FlagPickedUpMessage
from bascenev1lib.actor.playerspaz import PlayerSpaz from bascenev1lib.actor.playerspaz import PlayerSpaz
@ -20,18 +20,18 @@ if TYPE_CHECKING:
from typing import Any, Type, List, Dict, Tuple, Union, Sequence, Optional from typing import Any, Type, List, Dict, Tuple, Union, Sequence, Optional
class Player(bs.Player['Team']): class Player(bs.Player['Team']):
def __init__(self) -> None: def __init__(self) -> None:
self.done: bool = False self.done: bool = False
self.survived: bool = True self.survived: bool = True
class Team(bs.Team[Player]): class Team(bs.Team[Player]):
def __init__(self) -> None: def __init__(self) -> None:
self.score = 0 self.score = 0
# ba_meta require api 8 # ba_meta require api 9
# ba_meta export bascenev1.GameActivity # ba_meta export bascenev1.GameActivity
class MFGame(bs.TeamGameActivity[Player, Team]): class MFGame(bs.TeamGameActivity[Player, Team]):
name = 'Musical Flags' name = 'Musical Flags'
@ -123,8 +123,16 @@ class MFGame(bs.TeamGameActivity[Player, Team]):
self.nodes = [] self.nodes = []
self.flags = [] self.flags = []
self.spawned = [] self.spawned = []
import base64 if self.credit_text:
exec(base64.b64decode("aWYgc2VsZi5jcmVkaXRfdGV4dDoKICAgICMjIFBlb3BsZSBzdGVhbGVkIGNyZWRpdHMgc28gdGhhdHMgd2h5IEkgZW5jb2RlZCB0aGlzLi4uCiAgICAjIyBFdmVuIHRobyB0aGVyZSBpcyBhIG9wdGlvbiwgdGhleSBjaGFuZ2VkIGNyZWF0ZWQgYnkKICAgICMjIGxpa2Ugd3RmIGlzIHRoaWVyIHByb2JsZW0/PwoKICAgICMjIEFueXdheXMgaGF2ZSBhIGdvb2QgZGF5IQogICAgdCA9IGJzLm5ld25vZGUoJ3RleHQnLAogICAgICAgICAgICAgICBhdHRycz17ICd0ZXh0JzoiUG9ydGVkIGJ5IO6BiEZyZWFrdVxuTWFkZSBieSBNYXR0WjQ1OTg2IiwgIyMgRGlzYWJsZSAnRW5hYmxlIEJvdHRvbSBDcmVkaXRzJyB3aGVuIG1ha2luZyBwbGF5bGlzdCwgTm8gbmVlZCB0byBlZGl0IHRoaXMgbG92ZWx5Li4uCiAgICAgICAgJ3NjYWxlJzowLjcsCiAgICAgICAgJ3Bvc2l0aW9uJzooMCwwKSwKICAgICAgICAnc2hhZG93JzowLjUsCiAgICAgICAgJ2ZsYXRuZXNzJzoxLjIsCiAgICAgICAgJ2NvbG9yJzooMSwgMSwgMSksCiAgICAgICAgJ2hfYWxpZ24nOidjZW50ZXInLAogICAgICAgICd2X2F0dGFjaCc6J2JvdHRvbSd9KQ==").decode('UTF-8')) t = bs.newnode('text',
attrs={'text': "Ported by Freaku\nMade by MattZ45986", # Disable 'Enable Bottom Credits' when making playlist, No need to edit this lovely...
'scale': 0.7,
'position': (0, 0),
'shadow': 0.5,
'flatness': 1.2,
'color': (1, 1, 1),
'h_align': 'center',
'v_attach': 'bottom'})
self.makeRound() self.makeRound()
self._textRound.text = 'Round ' + str(self.roundNum) self._textRound.text = 'Round ' + str(self.roundNum)
bs.timer(3, self.checkEnd) bs.timer(3, self.checkEnd)
@ -144,7 +152,8 @@ class MFGame(bs.TeamGameActivity[Player, Team]):
bs.timer(1.5, bs.Call(player.actor.handlemessage, bs.FreezeMessage())) bs.timer(1.5, bs.Call(player.actor.handlemessage, bs.FreezeMessage()))
bs.timer(2.5, bs.Call(player.actor.handlemessage, bs.FreezeMessage())) bs.timer(2.5, bs.Call(player.actor.handlemessage, bs.FreezeMessage()))
bs.timer(3, bs.Call(player.actor.handlemessage, bs.ShouldShatterMessage())) bs.timer(3, bs.Call(player.actor.handlemessage, bs.ShouldShatterMessage()))
except: pass except:
pass
bs.timer(3.5, self.killRound) bs.timer(3.5, self.killRound)
bs.timer(3.55, self.makeRound) bs.timer(3.55, self.makeRound)
self.round_time_textnode.opacity = 0 self.round_time_textnode.opacity = 0
@ -155,7 +164,8 @@ class MFGame(bs.TeamGameActivity[Player, Team]):
def makeRound(self): def makeRound(self):
for player in self.players: for player in self.players:
if player.survived: player.team.score += 1 if player.survived:
player.team.score += 1
self.roundNum += 1 self.roundNum += 1
self._textRound.text = 'Round ' + str(self.roundNum) self._textRound.text = 'Round ' + str(self.roundNum)
self.flags = [] self.flags = []
@ -166,7 +176,8 @@ class MFGame(bs.TeamGameActivity[Player, Team]):
angle = random.randint(0, 359) angle = random.randint(0, 359)
c = 0 c = 0
for player in self.players: for player in self.players:
if player.survived: c+=1 if player.survived:
c += 1
spacing = 10 spacing = 10
for player in self.players: for player in self.players:
player.done = False player.done = False
@ -174,14 +185,18 @@ class MFGame(bs.TeamGameActivity[Player, Team]):
if not player.is_alive(): if not player.is_alive():
self.spawn_player(player, (.5, 5, -4)) self.spawn_player(player, (.5, 5, -4))
self.spawned.append(player) self.spawned.append(player)
try: spacing = 360 // (c) try:
except: self.checkEnd() spacing = 360 // (c)
colors = [(1,0,0),(0,1,0),(0,0,1),(1,1,0),(1,0,1),(0,1,1),(0,0,0),(0.5,0.8,0),(0,0.8,0.5),(0.8,0.25,0.7),(0,0.27,0.55),(2,2,0.6),(0.4,3,0.85)] except:
self.checkEnd()
colors = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1), (0, 0, 0),
(0.5, 0.8, 0), (0, 0.8, 0.5), (0.8, 0.25, 0.7), (0, 0.27, 0.55), (2, 2, 0.6), (0.4, 3, 0.85)]
# Add support for more than 13 players # Add support for more than 13 players
if c > 12: if c > 12:
for i in range(c-12): for i in range(c-12):
colors.append((random.uniform(0.1, 1), random.uniform(0.1, 1), random.uniform(0.1, 1))) colors.append((random.uniform(0.1, 1), random.uniform(
0.1, 1), random.uniform(0.1, 1)))
# Smart Mathematics: # Smart Mathematics:
# All Flags spawn same distance from the players # All Flags spawn same distance from the players
@ -196,15 +211,19 @@ class MFGame(bs.TeamGameActivity[Player, Team]):
def killRound(self): def killRound(self):
self.numPickedUp = 0 self.numPickedUp = 0
for player in self.players: for player in self.players:
if player.is_alive(): player.actor.handlemessage(bs.DieMessage()) if player.is_alive():
for flag in self.flags: flag.node.delete() player.actor.handlemessage(bs.DieMessage())
for light in self.nodes: light.delete() for flag in self.flags:
flag.node.delete()
for light in self.nodes:
light.delete()
def spawn_player(self, player: Player, pos: tuple = (0, 0, 0)) -> bs.Actor: def spawn_player(self, player: Player, pos: tuple = (0, 0, 0)) -> bs.Actor:
spaz = self.spawn_player_spaz(player) spaz = self.spawn_player_spaz(player)
if pos == (0, 0, 0): if pos == (0, 0, 0):
pos = (-.5+random.random()*2, 3+random.random()*2, -5+random.random()*2) pos = (-.5+random.random()*2, 3+random.random()*2, -5+random.random()*2)
spaz.connect_controls_to_player(enable_punch=self.is_punch, enable_bomb=False, enable_run=self.is_run) spaz.connect_controls_to_player(enable_punch=self.is_punch,
enable_bomb=False, enable_run=self.is_run)
spaz.handlemessage(bs.StandMessage(pos)) spaz.handlemessage(bs.StandMessage(pos))
return spaz return spaz
@ -242,7 +261,8 @@ class MFGame(bs.TeamGameActivity[Player, Team]):
player.actor.handlemessage(bs.StandMessage((0, 3, -2))) player.actor.handlemessage(bs.StandMessage((0, 3, -2)))
bs.timer(0.5, bs.Call(player.actor.handlemessage, bs.FreezeMessage())) bs.timer(0.5, bs.Call(player.actor.handlemessage, bs.FreezeMessage()))
bs.timer(3, bs.Call(player.actor.handlemessage, bs.ShouldShatterMessage())) bs.timer(3, bs.Call(player.actor.handlemessage, bs.ShouldShatterMessage()))
except: pass except:
pass
bs.timer(3.5, self.killRound) bs.timer(3.5, self.killRound)
bs.timer(3.55, self.makeRound) bs.timer(3.55, self.makeRound)
else: else: