mirror of
https://github.com/bombsquad-community/plugin-manager.git
synced 2025-10-08 14:54:36 +00:00
[ci] auto-format
This commit is contained in:
parent
35d4e45915
commit
e7158a0878
8 changed files with 824 additions and 808 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
# Ported to api 8 by brostos using baport.(https://github.com/bombsquad-community/baport)
|
# Ported to api 8 by brostos using baport.(https://github.com/bombsquad-community/baport)
|
||||||
#BetterDeathMatch
|
# BetterDeathMatch
|
||||||
#Made by your friend: @[Just] Freak#4999
|
# Made by your friend: @[Just] Freak#4999
|
||||||
|
|
||||||
"""Defines a very-customisable DeathMatch mini-game"""
|
"""Defines a very-customisable DeathMatch mini-game"""
|
||||||
|
|
||||||
|
|
@ -77,7 +77,7 @@ class BetterDeathMatchGame(bs.TeamGameActivity[Player, Team]):
|
||||||
bs.BoolSetting('Epic Mode', default=False),
|
bs.BoolSetting('Epic Mode', default=False),
|
||||||
|
|
||||||
|
|
||||||
## Add settings ##
|
## Add settings ##
|
||||||
bs.BoolSetting('Enable Gloves', False),
|
bs.BoolSetting('Enable Gloves', False),
|
||||||
bs.BoolSetting('Enable Powerups', True),
|
bs.BoolSetting('Enable Powerups', True),
|
||||||
bs.BoolSetting('Night Mode', False),
|
bs.BoolSetting('Night Mode', False),
|
||||||
|
|
@ -85,10 +85,9 @@ class BetterDeathMatchGame(bs.TeamGameActivity[Player, Team]):
|
||||||
bs.BoolSetting('One Punch Kill', False),
|
bs.BoolSetting('One Punch Kill', False),
|
||||||
bs.BoolSetting('Spawn with Shield', False),
|
bs.BoolSetting('Spawn with Shield', False),
|
||||||
bs.BoolSetting('Punching Only', False),
|
bs.BoolSetting('Punching Only', False),
|
||||||
## Add settings ##
|
## Add settings ##
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
# In teams mode, a suicide gives a point to the other team, but in
|
# In teams mode, a suicide gives a point to the other team, but in
|
||||||
# free-for-all it subtracts from your own score. By default we clamp
|
# free-for-all it subtracts from your own score. By default we clamp
|
||||||
# this at zero to benefit new players, but pro players might like to
|
# this at zero to benefit new players, but pro players might like to
|
||||||
|
|
@ -126,7 +125,6 @@ class BetterDeathMatchGame(bs.TeamGameActivity[Player, Team]):
|
||||||
self._only_punch = bool(settings['Punching Only'])
|
self._only_punch = bool(settings['Punching Only'])
|
||||||
## Take applied settings ##
|
## Take applied settings ##
|
||||||
|
|
||||||
|
|
||||||
self._epic_mode = bool(settings['Epic Mode'])
|
self._epic_mode = bool(settings['Epic Mode'])
|
||||||
self._kills_to_win_per_player = int(
|
self._kills_to_win_per_player = int(
|
||||||
settings['Kills to Win Per Player'])
|
settings['Kills to Win Per Player'])
|
||||||
|
|
@ -151,6 +149,8 @@ class BetterDeathMatchGame(bs.TeamGameActivity[Player, Team]):
|
||||||
|
|
||||||
|
|
||||||
## Run settings related: IcyFloor ##
|
## Run settings related: IcyFloor ##
|
||||||
|
|
||||||
|
|
||||||
def on_transition_in(self) -> None:
|
def on_transition_in(self) -> None:
|
||||||
super().on_transition_in()
|
super().on_transition_in()
|
||||||
activity = bs.getactivity()
|
activity = bs.getactivity()
|
||||||
|
|
@ -160,8 +160,6 @@ class BetterDeathMatchGame(bs.TeamGameActivity[Player, Team]):
|
||||||
return
|
return
|
||||||
## Run settings related: IcyFloor ##
|
## Run settings related: IcyFloor ##
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def on_begin(self) -> None:
|
def on_begin(self) -> None:
|
||||||
super().on_begin()
|
super().on_begin()
|
||||||
self.setup_standard_time_limit(self._time_limit)
|
self.setup_standard_time_limit(self._time_limit)
|
||||||
|
|
@ -172,15 +170,14 @@ class BetterDeathMatchGame(bs.TeamGameActivity[Player, Team]):
|
||||||
bs.getactivity().globalsnode.tint = (0.5, 0.7, 1)
|
bs.getactivity().globalsnode.tint = (0.5, 0.7, 1)
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
#-# Tried return here, pfft. Took me 30mins to figure out why pwps spawning only on NightMode
|
# -# Tried return here, pfft. Took me 30mins to figure out why pwps spawning only on NightMode
|
||||||
#-# Now its fixed :)
|
# -# Now its fixed :)
|
||||||
if self._enable_powerups:
|
if self._enable_powerups:
|
||||||
self.setup_standard_powerup_drops()
|
self.setup_standard_powerup_drops()
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
## Run settings related: NightMode,Powerups ##
|
## Run settings related: NightMode,Powerups ##
|
||||||
|
|
||||||
|
|
||||||
# Base kills needed to win on the size of the largest team.
|
# Base kills needed to win on the size of the largest team.
|
||||||
self._score_to_win = (self._kills_to_win_per_player *
|
self._score_to_win = (self._kills_to_win_per_player *
|
||||||
max(1, max(len(t.players) for t in self.teams)))
|
max(1, max(len(t.players) for t in self.teams)))
|
||||||
|
|
@ -244,6 +241,8 @@ class BetterDeathMatchGame(bs.TeamGameActivity[Player, Team]):
|
||||||
|
|
||||||
|
|
||||||
## Run settings related: Spaz ##
|
## Run settings related: Spaz ##
|
||||||
|
|
||||||
|
|
||||||
def spawn_player(self, player: Player) -> bs.Actor:
|
def spawn_player(self, player: Player) -> bs.Actor:
|
||||||
spaz = self.spawn_player_spaz(player)
|
spaz = self.spawn_player_spaz(player)
|
||||||
if self._boxing_gloves:
|
if self._boxing_gloves:
|
||||||
|
|
@ -258,7 +257,6 @@ class BetterDeathMatchGame(bs.TeamGameActivity[Player, Team]):
|
||||||
return spaz
|
return spaz
|
||||||
## Run settings related: Spaz ##
|
## Run settings related: Spaz ##
|
||||||
|
|
||||||
|
|
||||||
def _update_scoreboard(self) -> None:
|
def _update_scoreboard(self) -> None:
|
||||||
for team in self.teams:
|
for team in self.teams:
|
||||||
self._scoreboard.set_team_value(team, team.score,
|
self._scoreboard.set_team_value(team, team.score,
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
# Ported to api 8 by brostos using baport.(https://github.com/bombsquad-community/baport)
|
# Ported to api 8 by brostos using baport.(https://github.com/bombsquad-community/baport)
|
||||||
#BetterElimination
|
# BetterElimination
|
||||||
#Made by your friend: @[Just] Freak#4999
|
# Made by your friend: @[Just] Freak#4999
|
||||||
|
|
||||||
#Huge Thx to Nippy for "Live Team Balance"
|
# Huge Thx to Nippy for "Live Team Balance"
|
||||||
|
|
||||||
|
|
||||||
"""Defines a very-customisable Elimination mini-game"""
|
"""Defines a very-customisable Elimination mini-game"""
|
||||||
|
|
@ -222,7 +222,7 @@ class BetterEliminationGame(bs.TeamGameActivity[Player, Team]):
|
||||||
bs.BoolSetting('Epic Mode', default=False),
|
bs.BoolSetting('Epic Mode', default=False),
|
||||||
|
|
||||||
|
|
||||||
## Add settings ##
|
## Add settings ##
|
||||||
bs.BoolSetting('Live Team Balance (by Nippy#2677)', True),
|
bs.BoolSetting('Live Team Balance (by Nippy#2677)', True),
|
||||||
bs.BoolSetting('Enable Gloves', False),
|
bs.BoolSetting('Enable Gloves', False),
|
||||||
bs.BoolSetting('Enable Powerups', True),
|
bs.BoolSetting('Enable Powerups', True),
|
||||||
|
|
@ -231,7 +231,7 @@ class BetterEliminationGame(bs.TeamGameActivity[Player, Team]):
|
||||||
bs.BoolSetting('One Punch Kill', False),
|
bs.BoolSetting('One Punch Kill', False),
|
||||||
bs.BoolSetting('Spawn with Shield', False),
|
bs.BoolSetting('Spawn with Shield', False),
|
||||||
bs.BoolSetting('Punching Only', False),
|
bs.BoolSetting('Punching Only', False),
|
||||||
## Add settings ##
|
## Add settings ##
|
||||||
]
|
]
|
||||||
if issubclass(sessiontype, bs.DualTeamSession):
|
if issubclass(sessiontype, bs.DualTeamSession):
|
||||||
settings.append(bs.BoolSetting('Solo Mode', default=False))
|
settings.append(bs.BoolSetting('Solo Mode', default=False))
|
||||||
|
|
@ -299,7 +299,7 @@ class BetterEliminationGame(bs.TeamGameActivity[Player, Team]):
|
||||||
player.team.survival_seconds = 0
|
player.team.survival_seconds = 0
|
||||||
bui.screenmessage(
|
bui.screenmessage(
|
||||||
babase.Lstr(resource='playerDelayedJoinText',
|
babase.Lstr(resource='playerDelayedJoinText',
|
||||||
subs=[('${PLAYER}', player.getname(full=True))]),
|
subs=[('${PLAYER}', player.getname(full=True))]),
|
||||||
color=(0, 1, 0),
|
color=(0, 1, 0),
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
@ -321,6 +321,8 @@ class BetterEliminationGame(bs.TeamGameActivity[Player, Team]):
|
||||||
|
|
||||||
|
|
||||||
## Run settings related: IcyFloor ##
|
## Run settings related: IcyFloor ##
|
||||||
|
|
||||||
|
|
||||||
def on_transition_in(self) -> None:
|
def on_transition_in(self) -> None:
|
||||||
super().on_transition_in()
|
super().on_transition_in()
|
||||||
activity = bs.getactivity()
|
activity = bs.getactivity()
|
||||||
|
|
@ -330,8 +332,6 @@ class BetterEliminationGame(bs.TeamGameActivity[Player, Team]):
|
||||||
return
|
return
|
||||||
## Run settings related: IcyFloor ##
|
## Run settings related: IcyFloor ##
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def on_begin(self) -> None:
|
def on_begin(self) -> None:
|
||||||
super().on_begin()
|
super().on_begin()
|
||||||
self._start_time = bs.time()
|
self._start_time = bs.time()
|
||||||
|
|
@ -343,15 +343,14 @@ class BetterEliminationGame(bs.TeamGameActivity[Player, Team]):
|
||||||
bs.getactivity().globalsnode.tint = (0.5, 0.7, 1)
|
bs.getactivity().globalsnode.tint = (0.5, 0.7, 1)
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
#-# Tried return here, pfft. Took me 30mins to figure out why pwps spawning only on NightMode
|
# -# Tried return here, pfft. Took me 30mins to figure out why pwps spawning only on NightMode
|
||||||
#-# Now its fixed :)
|
# -# Now its fixed :)
|
||||||
if self._enable_powerups:
|
if self._enable_powerups:
|
||||||
self.setup_standard_powerup_drops()
|
self.setup_standard_powerup_drops()
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
## Run settings related: NightMode,Powerups ##
|
## Run settings related: NightMode,Powerups ##
|
||||||
|
|
||||||
|
|
||||||
if self._solo_mode:
|
if self._solo_mode:
|
||||||
self._vs_text = bs.NodeActor(
|
self._vs_text = bs.NodeActor(
|
||||||
bs.newnode('text',
|
bs.newnode('text',
|
||||||
|
|
@ -526,7 +525,6 @@ class BetterEliminationGame(bs.TeamGameActivity[Player, Team]):
|
||||||
return actor
|
return actor
|
||||||
## Run settings related: Spaz ##
|
## Run settings related: Spaz ##
|
||||||
|
|
||||||
|
|
||||||
def _print_lives(self, player: Player) -> None:
|
def _print_lives(self, player: Player) -> None:
|
||||||
from bascenev1lib.actor import popuptext
|
from bascenev1lib.actor import popuptext
|
||||||
|
|
||||||
|
|
@ -542,24 +540,25 @@ class BetterEliminationGame(bs.TeamGameActivity[Player, Team]):
|
||||||
position=player.node.position).autoretain()
|
position=player.node.position).autoretain()
|
||||||
|
|
||||||
def on_player_leave(self, player: Player) -> None:
|
def on_player_leave(self, player: Player) -> None:
|
||||||
########################################################Nippy#2677
|
# Nippy#2677
|
||||||
team_count=1 #Just initiating
|
team_count = 1 # Just initiating
|
||||||
if player.lives>0 and self._live_team_balance:
|
if player.lives > 0 and self._live_team_balance:
|
||||||
team_mem=[]
|
team_mem = []
|
||||||
for teamer in player.team.players:
|
for teamer in player.team.players:
|
||||||
if player!=teamer:
|
if player != teamer:
|
||||||
team_mem.append(teamer) #Got Dead players Team
|
team_mem.append(teamer) # Got Dead players Team
|
||||||
live=player.lives
|
live = player.lives
|
||||||
team_count=len(team_mem)
|
team_count = len(team_mem)
|
||||||
for i in range(int((live if live%2==0 else live+1)/2)): #Extending Player List for Sorted Players
|
# Extending Player List for Sorted Players
|
||||||
|
for i in range(int((live if live % 2 == 0 else live+1)/2)):
|
||||||
team_mem.extend(team_mem)
|
team_mem.extend(team_mem)
|
||||||
if team_count>0:
|
if team_count > 0:
|
||||||
for i in range(live):
|
for i in range(live):
|
||||||
team_mem[i].lives+=1
|
team_mem[i].lives += 1
|
||||||
|
|
||||||
if team_count<=0 : #Draw if Player Leaves
|
if team_count <= 0: # Draw if Player Leaves
|
||||||
self.end_game()
|
self.end_game()
|
||||||
########################################################Nippy#2677
|
# Nippy#2677
|
||||||
super().on_player_leave(player)
|
super().on_player_leave(player)
|
||||||
player.icons = []
|
player.icons = []
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ class BotShowerGame(bs.TeamGameActivity[Player, Team]):
|
||||||
if self.has_begun():
|
if self.has_begun():
|
||||||
bui.screenmessage(
|
bui.screenmessage(
|
||||||
babase.Lstr(resource='playerDelayedJoinText',
|
babase.Lstr(resource='playerDelayedJoinText',
|
||||||
subs=[('${PLAYER}', player.getname(full=True))]),
|
subs=[('${PLAYER}', player.getname(full=True))]),
|
||||||
color=(1, 1, 0),
|
color=(1, 1, 0),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -147,7 +147,8 @@ class BotShowerGame(bs.TeamGameActivity[Player, Team]):
|
||||||
|
|
||||||
def _spawn_bot(self) -> None:
|
def _spawn_bot(self) -> None:
|
||||||
assert self._bots is not None
|
assert self._bots is not None
|
||||||
self._bots.spawn_bot(random.choice(self._bot_type), pos=(random.uniform(-11, 11), (9.8 if self.map.getname() == 'Football Stadium' else 5.0), random.uniform(-5, 5)))
|
self._bots.spawn_bot(random.choice(self._bot_type), pos=(
|
||||||
|
random.uniform(-11, 11), (9.8 if self.map.getname() == 'Football Stadium' else 5.0), random.uniform(-5, 5)))
|
||||||
|
|
||||||
def _check_end_game(self) -> None:
|
def _check_end_game(self) -> None:
|
||||||
living_team_count = 0
|
living_team_count = 0
|
||||||
|
|
@ -192,4 +193,4 @@ class BotShowerGame(bs.TeamGameActivity[Player, Team]):
|
||||||
|
|
||||||
results.set_team_score(team, int(1000.0 * longest_life))
|
results.set_team_score(team, int(1000.0 * longest_life))
|
||||||
|
|
||||||
self.end(results=results)
|
self.end(results=results)
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -17,19 +17,22 @@ from bascenev1lib.actor.onscreentimer import OnScreenTimer
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from typing import Any, Type, Dict, List, Optional
|
from typing import Any, Type, Dict, List, Optional
|
||||||
|
|
||||||
|
|
||||||
def ba_get_api_version():
|
def ba_get_api_version():
|
||||||
return 8
|
return 8
|
||||||
|
|
||||||
|
|
||||||
def ba_get_levels():
|
def ba_get_levels():
|
||||||
return [bs._level.Level(
|
return [bs._level.Level(
|
||||||
'Explodo Run',
|
'Explodo Run',
|
||||||
gametype=ExplodoRunGame,
|
gametype=ExplodoRunGame,
|
||||||
settings={},
|
settings={},
|
||||||
preview_texture_name='rampagePreview'),bs._level.Level(
|
preview_texture_name='rampagePreview'), bs._level.Level(
|
||||||
'Epic Explodo Run',
|
'Epic Explodo Run',
|
||||||
gametype=ExplodoRunGame,
|
gametype=ExplodoRunGame,
|
||||||
settings={'Epic Mode':True},
|
settings={'Epic Mode': True},
|
||||||
preview_texture_name='rampagePreview')]
|
preview_texture_name='rampagePreview')]
|
||||||
|
|
||||||
|
|
||||||
class Player(bs.Player['Team']):
|
class Player(bs.Player['Team']):
|
||||||
"""Our player type for this game."""
|
"""Our player type for this game."""
|
||||||
|
|
@ -39,6 +42,8 @@ class Team(bs.Team[Player]):
|
||||||
"""Our team type for this game."""
|
"""Our team type for this game."""
|
||||||
|
|
||||||
# ba_meta export bascenev1.GameActivity
|
# ba_meta export bascenev1.GameActivity
|
||||||
|
|
||||||
|
|
||||||
class ExplodoRunGame(bs.TeamGameActivity[Player, Team]):
|
class ExplodoRunGame(bs.TeamGameActivity[Player, Team]):
|
||||||
name = "Explodo Run"
|
name = "Explodo Run"
|
||||||
description = "Run For Your Life :))"
|
description = "Run For Your Life :))"
|
||||||
|
|
@ -47,8 +52,8 @@ class ExplodoRunGame(bs.TeamGameActivity[Player, Team]):
|
||||||
scoretype=bs.ScoreType.MILLISECONDS,
|
scoretype=bs.ScoreType.MILLISECONDS,
|
||||||
lower_is_better=False)
|
lower_is_better=False)
|
||||||
default_music = bs.MusicType.TO_THE_DEATH
|
default_music = bs.MusicType.TO_THE_DEATH
|
||||||
|
|
||||||
def __init__(self, settings:dict):
|
def __init__(self, settings: dict):
|
||||||
settings['map'] = "Rampage"
|
settings['map'] = "Rampage"
|
||||||
self._epic_mode = settings.get('Epic Mode', False)
|
self._epic_mode = settings.get('Epic Mode', False)
|
||||||
if self._epic_mode:
|
if self._epic_mode:
|
||||||
|
|
@ -59,27 +64,28 @@ class ExplodoRunGame(bs.TeamGameActivity[Player, Team]):
|
||||||
self._won = False
|
self._won = False
|
||||||
self._bots = SpazBotSet()
|
self._bots = SpazBotSet()
|
||||||
self.wave = 1
|
self.wave = 1
|
||||||
|
|
||||||
def on_begin(self) -> None:
|
def on_begin(self) -> None:
|
||||||
super().on_begin()
|
super().on_begin()
|
||||||
|
|
||||||
self._timer = OnScreenTimer()
|
self._timer = OnScreenTimer()
|
||||||
bs.timer(2.5, self._timer.start)
|
bs.timer(2.5, self._timer.start)
|
||||||
|
|
||||||
#Bots Hehe
|
# Bots Hehe
|
||||||
bs.timer(2.5,self.street)
|
bs.timer(2.5, self.street)
|
||||||
|
|
||||||
def street(self):
|
def street(self):
|
||||||
for a in range(self.wave):
|
for a in range(self.wave):
|
||||||
p1 = random.choice([-5,-2.5,0,2.5,5])
|
p1 = random.choice([-5, -2.5, 0, 2.5, 5])
|
||||||
p3 = random.choice([-4.5,-4.14,-5,-3])
|
p3 = random.choice([-4.5, -4.14, -5, -3])
|
||||||
time = random.choice([1,1.5,2.5,2])
|
time = random.choice([1, 1.5, 2.5, 2])
|
||||||
self._bots.spawn_bot(ExplodeyBot, pos=(p1,5.5,p3),spawn_time = time)
|
self._bots.spawn_bot(ExplodeyBot, pos=(p1, 5.5, p3), spawn_time=time)
|
||||||
self.wave += 1
|
self.wave += 1
|
||||||
|
|
||||||
def botrespawn(self):
|
def botrespawn(self):
|
||||||
if not self._bots.have_living_bots():
|
if not self._bots.have_living_bots():
|
||||||
self.street()
|
self.street()
|
||||||
|
|
||||||
def handlemessage(self, msg: Any) -> Any:
|
def handlemessage(self, msg: Any) -> Any:
|
||||||
|
|
||||||
# A player has died.
|
# A player has died.
|
||||||
|
|
@ -87,7 +93,7 @@ class ExplodoRunGame(bs.TeamGameActivity[Player, Team]):
|
||||||
super().handlemessage(msg) # Augment standard behavior.
|
super().handlemessage(msg) # Augment standard behavior.
|
||||||
self._won = True
|
self._won = True
|
||||||
self.end_game()
|
self.end_game()
|
||||||
|
|
||||||
# A spaz-bot has died.
|
# A spaz-bot has died.
|
||||||
elif isinstance(msg, SpazBotDiedMessage):
|
elif isinstance(msg, SpazBotDiedMessage):
|
||||||
# Unfortunately the bot-set will always tell us there are living
|
# Unfortunately the bot-set will always tell us there are living
|
||||||
|
|
@ -128,5 +134,3 @@ class ExplodoRunGame(bs.TeamGameActivity[Player, Team]):
|
||||||
|
|
||||||
# Ends the activity.
|
# Ends the activity.
|
||||||
self.end(results)
|
self.end(results)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -21,6 +21,7 @@ if TYPE_CHECKING:
|
||||||
def ba_get_api_version():
|
def ba_get_api_version():
|
||||||
return 8
|
return 8
|
||||||
|
|
||||||
|
|
||||||
def ba_get_levels():
|
def ba_get_levels():
|
||||||
return [babase._level.Level(
|
return [babase._level.Level(
|
||||||
'Extinction',
|
'Extinction',
|
||||||
|
|
@ -33,23 +34,24 @@ def ba_get_levels():
|
||||||
settings={'Epic Mode': True},
|
settings={'Epic Mode': True},
|
||||||
preview_texture_name='footballStadiumPreview')]
|
preview_texture_name='footballStadiumPreview')]
|
||||||
|
|
||||||
|
|
||||||
class Meteor(bs.Actor):
|
class Meteor(bs.Actor):
|
||||||
"""A giant meteor instead of bombs."""
|
"""A giant meteor instead of bombs."""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
pos: Sequence[float] = (0.0, 1.0, 0.0),
|
pos: Sequence[float] = (0.0, 1.0, 0.0),
|
||||||
velocity: Sequence[float] = (0.0, 0.0, 0.0)):
|
velocity: Sequence[float] = (0.0, 0.0, 0.0)):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
shared = SharedObjects.get()
|
shared = SharedObjects.get()
|
||||||
factory = BombFactory.get()
|
factory = BombFactory.get()
|
||||||
|
|
||||||
materials = (shared.object_material,
|
materials = (shared.object_material,
|
||||||
factory.impact_blast_material)
|
factory.impact_blast_material)
|
||||||
|
|
||||||
self.pos = (pos[0], pos[1], pos[2])
|
self.pos = (pos[0], pos[1], pos[2])
|
||||||
self.velocity = (velocity[0], velocity[1], velocity[2])
|
self.velocity = (velocity[0], velocity[1], velocity[2])
|
||||||
|
|
||||||
self.node = bs.newnode(
|
self.node = bs.newnode(
|
||||||
'prop',
|
'prop',
|
||||||
delegate=self,
|
delegate=self,
|
||||||
|
|
@ -66,13 +68,13 @@ class Meteor(bs.Actor):
|
||||||
'reflection_scale': [0.45],
|
'reflection_scale': [0.45],
|
||||||
'materials': materials
|
'materials': materials
|
||||||
})
|
})
|
||||||
|
|
||||||
def explode(self) -> None:
|
def explode(self) -> None:
|
||||||
Blast(position=self.node.position,
|
Blast(position=self.node.position,
|
||||||
velocity=self.node.velocity,
|
velocity=self.node.velocity,
|
||||||
blast_type='tnt',
|
blast_type='tnt',
|
||||||
blast_radius=2.0)
|
blast_radius=2.0)
|
||||||
|
|
||||||
def handlemessage(self, msg: Any) -> Any:
|
def handlemessage(self, msg: Any) -> Any:
|
||||||
if isinstance(msg, bs.DieMessage):
|
if isinstance(msg, bs.DieMessage):
|
||||||
if self.node:
|
if self.node:
|
||||||
|
|
@ -86,11 +88,12 @@ class Meteor(bs.Actor):
|
||||||
|
|
||||||
class Player(bs.Player['Team']):
|
class Player(bs.Player['Team']):
|
||||||
"""Our player type for this game."""
|
"""Our player type for this game."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.death_time: Optional[float] = None
|
self.death_time: Optional[float] = None
|
||||||
|
|
||||||
|
|
||||||
class Team(bs.Team[Player]):
|
class Team(bs.Team[Player]):
|
||||||
"""Our team type for this game."""
|
"""Our team type for this game."""
|
||||||
|
|
||||||
|
|
@ -98,112 +101,112 @@ class Team(bs.Team[Player]):
|
||||||
# ba_meta export bascenev1.GameActivity
|
# ba_meta export bascenev1.GameActivity
|
||||||
class NewMeteorShowerGame(bs.TeamGameActivity[Player, Team]):
|
class NewMeteorShowerGame(bs.TeamGameActivity[Player, Team]):
|
||||||
"""Minigame by Jetz."""
|
"""Minigame by Jetz."""
|
||||||
|
|
||||||
name = 'Extinction'
|
name = 'Extinction'
|
||||||
description = 'Survive the Extinction.'
|
description = 'Survive the Extinction.'
|
||||||
available_settings = [
|
available_settings = [
|
||||||
bs.BoolSetting('Epic Mode', default=False)]
|
bs.BoolSetting('Epic Mode', default=False)]
|
||||||
|
|
||||||
announce_player_deaths = True
|
announce_player_deaths = True
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_supported_maps(cls, sessiontype: Type[bs.Session]) -> List[str]:
|
def get_supported_maps(cls, sessiontype: Type[bs.Session]) -> List[str]:
|
||||||
return ['Football Stadium']
|
return ['Football Stadium']
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def supports_session_type(cls, sessiontype: Type[bs.Session]) -> bool:
|
def supports_session_type(cls, sessiontype: Type[bs.Session]) -> bool:
|
||||||
return (issubclass(sessiontype, bs.FreeForAllSession)
|
return (issubclass(sessiontype, bs.FreeForAllSession)
|
||||||
or issubclass(sessiontype, bs.DualTeamSession))
|
or issubclass(sessiontype, bs.DualTeamSession))
|
||||||
|
|
||||||
def __init__(self, settings: dict):
|
def __init__(self, settings: dict):
|
||||||
super().__init__(settings)
|
super().__init__(settings)
|
||||||
|
|
||||||
self._epic_mode = bool(settings['Epic Mode'])
|
self._epic_mode = bool(settings['Epic Mode'])
|
||||||
self._last_player_death_time: Optiobal[float] = None
|
self._last_player_death_time: Optiobal[float] = None
|
||||||
self._meteor_time = 2.0
|
self._meteor_time = 2.0
|
||||||
self._timer: Optional[OnScreenTimer] = None
|
self._timer: Optional[OnScreenTimer] = None
|
||||||
|
|
||||||
self.default_music = (bs.MusicType.EPIC
|
self.default_music = (bs.MusicType.EPIC
|
||||||
if self._epic_mode else bs.MusicType.SURVIVAL)
|
if self._epic_mode else bs.MusicType.SURVIVAL)
|
||||||
|
|
||||||
if self._epic_mode:
|
if self._epic_mode:
|
||||||
self.slow_motion = True
|
self.slow_motion = True
|
||||||
|
|
||||||
def on_begin(self) -> None:
|
def on_begin(self) -> None:
|
||||||
super().on_begin()
|
super().on_begin()
|
||||||
|
|
||||||
delay = 5.0 if len(self.players) > 2 else 2.5
|
delay = 5.0 if len(self.players) > 2 else 2.5
|
||||||
if self._epic_mode:
|
if self._epic_mode:
|
||||||
delay *= 0.25
|
delay *= 0.25
|
||||||
bs.timer(delay, self._decrement_meteor_time, repeat=True)
|
bs.timer(delay, self._decrement_meteor_time, repeat=True)
|
||||||
|
|
||||||
delay = 3.0
|
delay = 3.0
|
||||||
if self._epic_mode:
|
if self._epic_mode:
|
||||||
delay *= 0.25
|
delay *= 0.25
|
||||||
bs.timer(delay, self._set_meteor_timer)
|
bs.timer(delay, self._set_meteor_timer)
|
||||||
|
|
||||||
self._timer = OnScreenTimer()
|
self._timer = OnScreenTimer()
|
||||||
self._timer.start()
|
self._timer.start()
|
||||||
self._check_end_game()
|
self._check_end_game()
|
||||||
|
|
||||||
def on_player_join(self, player: Player) -> None:
|
def on_player_join(self, player: Player) -> None:
|
||||||
if self.has_begun():
|
if self.has_begun():
|
||||||
bs.broadcastmessage(
|
bs.broadcastmessage(
|
||||||
babase.Lstr(resource='playerDelayedJoinText',
|
babase.Lstr(resource='playerDelayedJoinText',
|
||||||
subs=[('${PLAYER}', player.getname(full=True))]),
|
subs=[('${PLAYER}', player.getname(full=True))]),
|
||||||
color=(0, 1, 0),
|
color=(0, 1, 0),
|
||||||
)
|
)
|
||||||
assert self._timer is not None
|
assert self._timer is not None
|
||||||
player.death_time = self._timer.getstarttime()
|
player.death_time = self._timer.getstarttime()
|
||||||
return
|
return
|
||||||
self.spawn_player(player)
|
self.spawn_player(player)
|
||||||
|
|
||||||
def spawn_player(self, player: Player) -> None:
|
def spawn_player(self, player: Player) -> None:
|
||||||
spaz = self.spawn_player_spaz(player)
|
spaz = self.spawn_player_spaz(player)
|
||||||
|
|
||||||
spaz.connect_controls_to_player(enable_punch=False,
|
spaz.connect_controls_to_player(enable_punch=False,
|
||||||
enable_pickup=False,
|
enable_pickup=False,
|
||||||
enable_bomb=False,
|
enable_bomb=False,
|
||||||
enable_jump=False)
|
enable_jump=False)
|
||||||
spaz.play_big_death_sound = True
|
spaz.play_big_death_sound = True
|
||||||
|
|
||||||
return spaz
|
return spaz
|
||||||
|
|
||||||
def on_player_leave(self, player: Player) -> None:
|
def on_player_leave(self, player: Player) -> None:
|
||||||
super().on_player_leave(player)
|
super().on_player_leave(player)
|
||||||
|
|
||||||
self._check_end_game()
|
self._check_end_game()
|
||||||
|
|
||||||
def handlemessage(self, msg: Any) -> Any:
|
def handlemessage(self, msg: Any) -> Any:
|
||||||
if isinstance(msg, bs.PlayerDiedMessage):
|
if isinstance(msg, bs.PlayerDiedMessage):
|
||||||
curtime = bs.time()
|
curtime = bs.time()
|
||||||
|
|
||||||
msg.getplayer(Player).death_time = curtime
|
msg.getplayer(Player).death_time = curtime
|
||||||
bs.timer(1.0, self._check_end_game)
|
bs.timer(1.0, self._check_end_game)
|
||||||
else:
|
else:
|
||||||
return super().handlemessage(msg)
|
return super().handlemessage(msg)
|
||||||
|
|
||||||
def _spawn_meteors(self) -> None:
|
def _spawn_meteors(self) -> None:
|
||||||
pos = (random.randint(-6, 7), 12,
|
pos = (random.randint(-6, 7), 12,
|
||||||
random.uniform(-2, 1))
|
random.uniform(-2, 1))
|
||||||
velocity = (random.randint(-11, 11), 0,
|
velocity = (random.randint(-11, 11), 0,
|
||||||
random.uniform(-5, 5))
|
random.uniform(-5, 5))
|
||||||
Meteor(pos=pos, velocity=velocity).autoretain()
|
Meteor(pos=pos, velocity=velocity).autoretain()
|
||||||
|
|
||||||
def _spawn_meteors_cluster(self) -> None:
|
def _spawn_meteors_cluster(self) -> None:
|
||||||
delay = 0.0
|
delay = 0.0
|
||||||
for _i in range(random.randrange(1, 3)):
|
for _i in range(random.randrange(1, 3)):
|
||||||
bs.timer(delay, self._spawn_meteors)
|
bs.timer(delay, self._spawn_meteors)
|
||||||
delay += 1
|
delay += 1
|
||||||
self._set_meteor_timer()
|
self._set_meteor_timer()
|
||||||
|
|
||||||
def _decrement_meteor_time(self) -> None:
|
def _decrement_meteor_time(self) -> None:
|
||||||
self._meteor_time = max(0.01, self._meteor_time * 0.9)
|
self._meteor_time = max(0.01, self._meteor_time * 0.9)
|
||||||
|
|
||||||
def _set_meteor_timer(self) -> None:
|
def _set_meteor_timer(self) -> None:
|
||||||
bs.timer((1.0 + 0.2 * random.random()) * self._meteor_time,
|
bs.timer((1.0 + 0.2 * random.random()) * self._meteor_time,
|
||||||
self._spawn_meteors_cluster)
|
self._spawn_meteors_cluster)
|
||||||
|
|
||||||
def _check_end_game(self) -> None:
|
def _check_end_game(self) -> None:
|
||||||
living_team_count = 0
|
living_team_count = 0
|
||||||
for team in self.teams:
|
for team in self.teams:
|
||||||
|
|
@ -211,44 +214,44 @@ class NewMeteorShowerGame(bs.TeamGameActivity[Player, Team]):
|
||||||
if player.is_alive():
|
if player.is_alive():
|
||||||
living_team_count += 1
|
living_team_count += 1
|
||||||
break
|
break
|
||||||
|
|
||||||
if isinstance(self.session, bs.CoopSession):
|
if isinstance(self.session, bs.CoopSession):
|
||||||
if living_team_count <= 0:
|
if living_team_count <= 0:
|
||||||
self.end_game()
|
self.end_game()
|
||||||
else:
|
else:
|
||||||
if living_team_count <= 1:
|
if living_team_count <= 1:
|
||||||
self.end_game()
|
self.end_game()
|
||||||
|
|
||||||
def end_game(self) -> None:
|
def end_game(self) -> None:
|
||||||
cur_time = bs.time()
|
cur_time = bs.time()
|
||||||
assert self._timer is not None
|
assert self._timer is not None
|
||||||
start_time = self._timer.getstarttime()
|
start_time = self._timer.getstarttime()
|
||||||
|
|
||||||
for team in self.teams:
|
for team in self.teams:
|
||||||
for player in team.players:
|
for player in team.players:
|
||||||
survived = False
|
survived = False
|
||||||
|
|
||||||
if player.death_time is None:
|
if player.death_time is None:
|
||||||
survived = True
|
survived = True
|
||||||
player.death_time = cur_time + 1
|
player.death_time = cur_time + 1
|
||||||
|
|
||||||
score = int(player.death_time - self._timer.getstarttime())
|
score = int(player.death_time - self._timer.getstarttime())
|
||||||
if survived:
|
if survived:
|
||||||
score += 50
|
score += 50
|
||||||
self.stats.player_scored(player, score, screenmessage=False)
|
self.stats.player_scored(player, score, screenmessage=False)
|
||||||
|
|
||||||
self._timer.stop(endtime=self._last_player_death_time)
|
self._timer.stop(endtime=self._last_player_death_time)
|
||||||
|
|
||||||
results = bs.GameResults()
|
results = bs.GameResults()
|
||||||
|
|
||||||
for team in self.teams:
|
for team in self.teams:
|
||||||
|
|
||||||
longest_life = 0.0
|
longest_life = 0.0
|
||||||
for player in team.players:
|
for player in team.players:
|
||||||
assert player.death_time is not None
|
assert player.death_time is not None
|
||||||
longest_life = max(longest_life,
|
longest_life = max(longest_life,
|
||||||
player.death_time - start_time)
|
player.death_time - start_time)
|
||||||
|
|
||||||
results.set_team_score(team, int(1000.0 * longest_life))
|
results.set_team_score(team, int(1000.0 * longest_life))
|
||||||
|
|
||||||
self.end(results=results)
|
self.end(results=results)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - -
|
||||||
# - Fat-Pigs! by Zacker Tz || Zacker#5505 -
|
# - Fat-Pigs! by Zacker Tz || Zacker#5505 -
|
||||||
# - Version 0.01 :v -
|
# - Version 0.01 :v -
|
||||||
# - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
@ -24,12 +24,13 @@ if TYPE_CHECKING:
|
||||||
|
|
||||||
# - - - - - - - Mini - Settings - - - - - - - - - - - - - - - - #
|
# - - - - - - - Mini - Settings - - - - - - - - - - - - - - - - #
|
||||||
|
|
||||||
zkBombs_limit = 3 # Number of bombs you can use | Default = 3
|
zkBombs_limit = 3 # Number of bombs you can use | Default = 3
|
||||||
zkPunch = False # Enable/Disable punchs | Default = False
|
zkPunch = False # Enable/Disable punchs | Default = False
|
||||||
zkPickup = False # Enable/Disable pickup | Default = False
|
zkPickup = False # Enable/Disable pickup | Default = False
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
|
||||||
|
|
||||||
|
|
||||||
class Player(bs.Player['Team']):
|
class Player(bs.Player['Team']):
|
||||||
"""Our player type for this game."""
|
"""Our player type for this game."""
|
||||||
|
|
||||||
|
|
@ -40,7 +41,9 @@ class Team(bs.Team[Player]):
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.score = 0
|
self.score = 0
|
||||||
|
|
||||||
# ba_meta export bascenev1.GameActivity
|
# ba_meta export bascenev1.GameActivity
|
||||||
|
|
||||||
|
|
||||||
class FatPigs(bs.TeamGameActivity[Player, Team]):
|
class FatPigs(bs.TeamGameActivity[Player, Team]):
|
||||||
"""A game type based on acquiring kills."""
|
"""A game type based on acquiring kills."""
|
||||||
|
|
||||||
|
|
@ -139,20 +142,18 @@ class FatPigs(bs.TeamGameActivity[Player, Team]):
|
||||||
super().on_begin()
|
super().on_begin()
|
||||||
self.setup_standard_time_limit(self._time_limit)
|
self.setup_standard_time_limit(self._time_limit)
|
||||||
# self.setup_standard_powerup_drops()
|
# self.setup_standard_powerup_drops()
|
||||||
#Ambiente
|
# Ambiente
|
||||||
gnode = bs.getactivity().globalsnode
|
gnode = bs.getactivity().globalsnode
|
||||||
gnode.tint = (0.8, 1.2, 0.8)
|
gnode.tint = (0.8, 1.2, 0.8)
|
||||||
gnode.ambient_color = (0.7, 1.0, 0.6)
|
gnode.ambient_color = (0.7, 1.0, 0.6)
|
||||||
gnode.vignette_outer = (0.4, 0.6, 0.4) #C
|
gnode.vignette_outer = (0.4, 0.6, 0.4) # C
|
||||||
# gnode.vignette_inner = (0.9, 0.9, 0.9)
|
# gnode.vignette_inner = (0.9, 0.9, 0.9)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Base kills needed to win on the size of the largest team.
|
# Base kills needed to win on the size of the largest team.
|
||||||
self._score_to_win = (self._kills_to_win_per_player *
|
self._score_to_win = (self._kills_to_win_per_player *
|
||||||
max(1, max(len(t.players) for t in self.teams)))
|
max(1, max(len(t.players) for t in self.teams)))
|
||||||
self._update_scoreboard()
|
self._update_scoreboard()
|
||||||
|
|
||||||
delay = 5.0 if len(self.players) > 2 else 2.5
|
delay = 5.0 if len(self.players) > 2 else 2.5
|
||||||
if self._epic_mode:
|
if self._epic_mode:
|
||||||
delay *= 0.25
|
delay *= 0.25
|
||||||
|
|
@ -169,18 +170,17 @@ class FatPigs(bs.TeamGameActivity[Player, Team]):
|
||||||
|
|
||||||
# Check for immediate end (if we've only got 1 player, etc).
|
# Check for immediate end (if we've only got 1 player, etc).
|
||||||
bs.timer(5.0, self._check_end_game)
|
bs.timer(5.0, self._check_end_game)
|
||||||
|
|
||||||
t = bs.newnode('text',
|
t = bs.newnode('text',
|
||||||
attrs={ 'text':"Minigame by Zacker Tz",
|
attrs={'text': "Minigame by Zacker Tz",
|
||||||
'scale':0.7,
|
'scale': 0.7,
|
||||||
'position':(0.001,625),
|
'position': (0.001, 625),
|
||||||
'shadow':0.5,
|
'shadow': 0.5,
|
||||||
'opacity':0.7,
|
'opacity': 0.7,
|
||||||
'flatness':1.2,
|
'flatness': 1.2,
|
||||||
'color':(0.6, 1, 0.6),
|
'color': (0.6, 1, 0.6),
|
||||||
'h_align':'center',
|
'h_align': 'center',
|
||||||
'v_attach':'bottom'})
|
'v_attach': 'bottom'})
|
||||||
|
|
||||||
|
|
||||||
def spawn_player(self, player: Player) -> bs.Actor:
|
def spawn_player(self, player: Player) -> bs.Actor:
|
||||||
spaz = self.spawn_player_spaz(player)
|
spaz = self.spawn_player_spaz(player)
|
||||||
|
|
@ -190,13 +190,13 @@ class FatPigs(bs.TeamGameActivity[Player, Team]):
|
||||||
spaz.connect_controls_to_player(enable_punch=zkPunch,
|
spaz.connect_controls_to_player(enable_punch=zkPunch,
|
||||||
enable_bomb=True,
|
enable_bomb=True,
|
||||||
enable_pickup=zkPickup)
|
enable_pickup=zkPickup)
|
||||||
|
|
||||||
spaz.bomb_count = zkBombs_limit
|
spaz.bomb_count = zkBombs_limit
|
||||||
spaz._max_bomb_count = zkBombs_limit
|
spaz._max_bomb_count = zkBombs_limit
|
||||||
spaz.bomb_type_default = 'sticky'
|
spaz.bomb_type_default = 'sticky'
|
||||||
spaz.bomb_type = 'sticky'
|
spaz.bomb_type = 'sticky'
|
||||||
|
|
||||||
#cerdo gordo
|
# cerdo gordo
|
||||||
spaz.node.color_mask_texture = bs.gettexture('melColorMask')
|
spaz.node.color_mask_texture = bs.gettexture('melColorMask')
|
||||||
spaz.node.color_texture = bs.gettexture('melColor')
|
spaz.node.color_texture = bs.gettexture('melColor')
|
||||||
spaz.node.head_mesh = bs.getmesh('melHead')
|
spaz.node.head_mesh = bs.getmesh('melHead')
|
||||||
|
|
@ -210,19 +210,19 @@ class FatPigs(bs.TeamGameActivity[Player, Team]):
|
||||||
spaz.node.toes_mesh = bs.getmesh('melToes')
|
spaz.node.toes_mesh = bs.getmesh('melToes')
|
||||||
spaz.node.style = 'mel'
|
spaz.node.style = 'mel'
|
||||||
# Sounds cerdo gordo
|
# Sounds cerdo gordo
|
||||||
mel_sounds = [bs.getsound('mel01'), bs.getsound('mel02'),bs.getsound('mel03'),bs.getsound('mel04'),bs.getsound('mel05'),
|
mel_sounds = [bs.getsound('mel01'), bs.getsound('mel02'), bs.getsound('mel03'), bs.getsound('mel04'), bs.getsound('mel05'),
|
||||||
bs.getsound('mel06'),bs.getsound('mel07'),bs.getsound('mel08'),bs.getsound('mel09'),bs.getsound('mel10')]
|
bs.getsound('mel06'), bs.getsound('mel07'), bs.getsound('mel08'), bs.getsound('mel09'), bs.getsound('mel10')]
|
||||||
spaz.node.jump_sounds = mel_sounds
|
spaz.node.jump_sounds = mel_sounds
|
||||||
spaz.node.attack_sounds = mel_sounds
|
spaz.node.attack_sounds = mel_sounds
|
||||||
spaz.node.impact_sounds = mel_sounds
|
spaz.node.impact_sounds = mel_sounds
|
||||||
spaz.node.pickup_sounds = mel_sounds
|
spaz.node.pickup_sounds = mel_sounds
|
||||||
spaz.node.death_sounds = [bs.getsound('melDeath01')]
|
spaz.node.death_sounds = [bs.getsound('melDeath01')]
|
||||||
spaz.node.fall_sounds = [bs.getsound('melFall01')]
|
spaz.node.fall_sounds = [bs.getsound('melFall01')]
|
||||||
|
|
||||||
def _set_meteor_timer(self) -> None:
|
def _set_meteor_timer(self) -> None:
|
||||||
bs.timer((1.0 + 0.2 * random.random()) * self._meteor_time,
|
bs.timer((1.0 + 0.2 * random.random()) * self._meteor_time,
|
||||||
self._drop_bomb_cluster)
|
self._drop_bomb_cluster)
|
||||||
|
|
||||||
def _drop_bomb_cluster(self) -> None:
|
def _drop_bomb_cluster(self) -> None:
|
||||||
|
|
||||||
# Random note: code like this is a handy way to plot out extents
|
# Random note: code like this is a handy way to plot out extents
|
||||||
|
|
@ -245,15 +245,14 @@ class FatPigs(bs.TeamGameActivity[Player, Team]):
|
||||||
vel = ((-5.0 + random.random() * 30.0) * dropdir, -4.0, 0)
|
vel = ((-5.0 + random.random() * 30.0) * dropdir, -4.0, 0)
|
||||||
bs.timer(delay, babase.Call(self._drop_bomb, pos, vel))
|
bs.timer(delay, babase.Call(self._drop_bomb, pos, vel))
|
||||||
delay += 0.1
|
delay += 0.1
|
||||||
self._set_meteor_timer()
|
self._set_meteor_timer()
|
||||||
|
|
||||||
def _drop_bomb(self, position: Sequence[float],
|
def _drop_bomb(self, position: Sequence[float],
|
||||||
velocity: Sequence[float]) -> None:
|
velocity: Sequence[float]) -> None:
|
||||||
Bomb(position=position, velocity=velocity,bomb_type='sticky').autoretain()
|
Bomb(position=position, velocity=velocity, bomb_type='sticky').autoretain()
|
||||||
|
|
||||||
def _decrement_meteor_time(self) -> None:
|
def _decrement_meteor_time(self) -> None:
|
||||||
self._meteor_time = max(0.01, self._meteor_time * 0.9)
|
self._meteor_time = max(0.01, self._meteor_time * 0.9)
|
||||||
|
|
||||||
|
|
||||||
def handlemessage(self, msg: Any) -> Any:
|
def handlemessage(self, msg: Any) -> Any:
|
||||||
|
|
||||||
|
|
@ -326,7 +325,7 @@ class FatPigs(bs.TeamGameActivity[Player, Team]):
|
||||||
self.end_game()
|
self.end_game()
|
||||||
else:
|
else:
|
||||||
if living_team_count <= 1:
|
if living_team_count <= 1:
|
||||||
self.end_game()
|
self.end_game()
|
||||||
|
|
||||||
def _update_scoreboard(self) -> None:
|
def _update_scoreboard(self) -> None:
|
||||||
for team in self.teams:
|
for team in self.teams:
|
||||||
|
|
|
||||||
|
|
@ -20,28 +20,35 @@ DECIMAL_LIMIT = 7
|
||||||
|
|
||||||
|
|
||||||
PlayerSpaz.supershit = PlayerSpaz.__init__
|
PlayerSpaz.supershit = PlayerSpaz.__init__
|
||||||
|
|
||||||
|
|
||||||
def ShitInit(self,
|
def ShitInit(self,
|
||||||
player: bs.Player,
|
player: bs.Player,
|
||||||
color: Sequence[float] = (1.0, 1.0, 1.0),
|
color: Sequence[float] = (1.0, 1.0, 1.0),
|
||||||
highlight: Sequence[float] = (0.5, 0.5, 0.5),
|
highlight: Sequence[float] = (0.5, 0.5, 0.5),
|
||||||
character: str = 'Spaz',
|
character: str = 'Spaz',
|
||||||
powerups_expire: bool = True) -> None:
|
powerups_expire: bool = True) -> None:
|
||||||
self.supershit(player, color, highlight, character, powerups_expire)
|
self.supershit(player, color, highlight, character, powerups_expire)
|
||||||
self.offt = bs.newnode('math', owner=self.node, attrs={'input1': (1.2, 1.8, -0.7),'operation': 'add'})
|
self.offt = bs.newnode('math', owner=self.node, attrs={
|
||||||
|
'input1': (1.2, 1.8, -0.7), 'operation': 'add'})
|
||||||
self.node.connectattr('torso_position', self.offt, 'input2')
|
self.node.connectattr('torso_position', self.offt, 'input2')
|
||||||
self.txt = bs.newnode('text', owner=self.node, attrs={'text': '3.0','in_world': True,'text':'0','shadow': 1.0,'color': (1,0,0),'flatness': 0.5,'scale': 0.01,'h_align': 'right'})
|
self.txt = bs.newnode('text', owner=self.node, attrs={'text': '3.0', 'in_world': True, 'text': '0', 'shadow': 1.0, 'color': (
|
||||||
|
1, 0, 0), 'flatness': 0.5, 'scale': 0.01, 'h_align': 'right'})
|
||||||
p = self.node.position
|
p = self.node.position
|
||||||
self.xyz = 0
|
self.xyz = 0
|
||||||
self.txt.text = "X: " + str(p[0]) + "\nY: " + str(p[1]) + "\nZ: " + str(p[2])
|
self.txt.text = "X: " + str(p[0]) + "\nY: " + str(p[1]) + "\nZ: " + str(p[2])
|
||||||
self.offt.connectattr('output', self.txt, 'position')
|
self.offt.connectattr('output', self.txt, 'position')
|
||||||
|
|
||||||
def update():
|
def update():
|
||||||
p = self.node.position
|
p = self.node.position
|
||||||
is_moving = abs(self.node.move_up_down) >= 0.01 or abs(self.node.move_left_right) >= 0.01
|
is_moving = abs(self.node.move_up_down) >= 0.01 or abs(self.node.move_left_right) >= 0.01
|
||||||
if is_moving:
|
if is_moving:
|
||||||
self.xyz = (p[0],p[1],p[2])
|
self.xyz = (p[0], p[1], p[2])
|
||||||
self.txt.text = "X: " + str(round(self.xyz[0],DECIMAL_LIMIT)) + "\nY: " + str(round(self.xyz[1],DECIMAL_LIMIT)) + "\nZ: " + str(round(self.xyz[2],DECIMAL_LIMIT))
|
self.txt.text = "X: " + str(round(self.xyz[0], DECIMAL_LIMIT)) + "\nY: " + str(
|
||||||
bs.timer(0.1,update,repeat=True)
|
round(self.xyz[1], DECIMAL_LIMIT)) + "\nZ: " + str(round(self.xyz[2], DECIMAL_LIMIT))
|
||||||
|
bs.timer(0.1, update, repeat=True)
|
||||||
|
|
||||||
|
|
||||||
def replaceable_punch(self) -> None:
|
def replaceable_punch(self) -> None:
|
||||||
"""
|
"""
|
||||||
Called to 'press punch' on this spaz;
|
Called to 'press punch' on this spaz;
|
||||||
|
|
@ -55,10 +62,11 @@ def replaceable_punch(self) -> None:
|
||||||
index += len(files)
|
index += len(files)
|
||||||
c27 = str(index + 1)
|
c27 = str(index + 1)
|
||||||
with open(path_aid + '/coords' + c27 + '.txt', 'w') as gg:
|
with open(path_aid + '/coords' + c27 + '.txt', 'w') as gg:
|
||||||
gg.write("X: " + str(round(self.xyz[0],DECIMAL_LIMIT)) + "\nY: " + str(round(self.xyz[1],DECIMAL_LIMIT)) + "\nZ: " + str(round(self.xyz[2],DECIMAL_LIMIT)) + '\n\n' + '(' + str(round(self.xyz[0],DECIMAL_LIMIT)) + ', ' + str(round(self.xyz[1],DECIMAL_LIMIT)) + ', ' + str(round(self.xyz[2],DECIMAL_LIMIT)) + ')')
|
gg.write("X: " + str(round(self.xyz[0], DECIMAL_LIMIT)) + "\nY: " + str(round(self.xyz[1], DECIMAL_LIMIT)) + "\nZ: " + str(round(self.xyz[2], DECIMAL_LIMIT)) +
|
||||||
|
'\n\n' + '(' + str(round(self.xyz[0], DECIMAL_LIMIT)) + ', ' + str(round(self.xyz[1], DECIMAL_LIMIT)) + ', ' + str(round(self.xyz[2], DECIMAL_LIMIT)) + ')')
|
||||||
bui.screenmessage("Coordinates saved in: " + "BombSquad/Saved XYZ/" + "coords" + c27)
|
bui.screenmessage("Coordinates saved in: " + "BombSquad/Saved XYZ/" + "coords" + c27)
|
||||||
if _babase.app.classic.platform == 'android':
|
if _babase.app.classic.platform == 'android':
|
||||||
_babase.android_media_scan_file(path_aid)
|
_babase.android_media_scan_file(path_aid)
|
||||||
t_ms = bs.time() * 1000
|
t_ms = bs.time() * 1000
|
||||||
assert isinstance(t_ms, int)
|
assert isinstance(t_ms, int)
|
||||||
if t_ms - self.last_punch_time_ms >= self._punch_cooldown:
|
if t_ms - self.last_punch_time_ms >= self._punch_cooldown:
|
||||||
|
|
@ -69,17 +77,20 @@ def replaceable_punch(self) -> None:
|
||||||
self.node.punch_pressed = True
|
self.node.punch_pressed = True
|
||||||
if not self.node.hold_node:
|
if not self.node.hold_node:
|
||||||
bs.timer(
|
bs.timer(
|
||||||
0.1,
|
0.1,
|
||||||
bs.WeakCall(self._safe_play_sound,
|
bs.WeakCall(self._safe_play_sound,
|
||||||
SpazFactory.get().swish_sound, 0.8))
|
SpazFactory.get().swish_sound, 0.8))
|
||||||
self._turbo_filter_add_press('punch')
|
self._turbo_filter_add_press('punch')
|
||||||
|
|
||||||
# ba_meta export plugin
|
# ba_meta export plugin
|
||||||
|
|
||||||
|
|
||||||
class ragingspeedhorn(babase.Plugin):
|
class ragingspeedhorn(babase.Plugin):
|
||||||
try:
|
try:
|
||||||
oath = _babase.env()['python_directory_user'] + '/Saved XYZ'
|
oath = _babase.env()['python_directory_user'] + '/Saved XYZ'
|
||||||
os.makedirs(oath,exist_ok=False)
|
os.makedirs(oath, exist_ok=False)
|
||||||
except: pass
|
except:
|
||||||
|
pass
|
||||||
PlayerSpaz.on_punch_press = replaceable_punch
|
PlayerSpaz.on_punch_press = replaceable_punch
|
||||||
PlayerSpaz.__init__ = ShitInit
|
PlayerSpaz.__init__ = ShitInit
|
||||||
PlayerSpaz.xyz = 0
|
PlayerSpaz.xyz = 0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue