mirror of
https://github.com/bombsquad-community/plugin-manager.git
synced 2025-10-08 14:54:36 +00:00
boxing updated
Super boxing updated to api 8
This commit is contained in:
parent
1114fe0e65
commit
fd6c6949f8
1 changed files with 43 additions and 41 deletions
|
|
@ -1,20 +1,22 @@
|
||||||
# ba_meta require api 7
|
# ba_meta require api 8
|
||||||
# (see https://ballistica.net/wiki/meta-tag-system)
|
# (see https://ballistica.net/wiki/meta-tag-system)
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
import ba
|
import babase
|
||||||
from bastd.actor.playerspaz import PlayerSpaz
|
import bauiv1 as bui
|
||||||
from bastd.actor.scoreboard import Scoreboard
|
import bascenev1 as bs
|
||||||
from bastd.game.deathmatch import DeathMatchGame
|
from bascenev1lib.actor.playerspaz import PlayerSpaz
|
||||||
|
from bascenev1lib.actor.scoreboard import Scoreboard
|
||||||
|
from bascenev1lib.game.deathmatch import DeathMatchGame
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from typing import Any, Sequence
|
from typing import Any, Sequence
|
||||||
|
|
||||||
|
|
||||||
lang = ba.app.lang.language
|
lang = bs.app.lang.language
|
||||||
|
|
||||||
if lang == 'Spanish':
|
if lang == 'Spanish':
|
||||||
name = 'Super Boxeo'
|
name = 'Super Boxeo'
|
||||||
|
|
@ -33,7 +35,7 @@ else:
|
||||||
class NewPlayerSpaz(PlayerSpaz):
|
class NewPlayerSpaz(PlayerSpaz):
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
player: ba.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',
|
||||||
|
|
@ -44,16 +46,16 @@ class NewPlayerSpaz(PlayerSpaz):
|
||||||
highlight=highlight,
|
highlight=highlight,
|
||||||
character=character,
|
character=character,
|
||||||
powerups_expire=powerups_expire)
|
powerups_expire=powerups_expire)
|
||||||
from bastd.gameutils import SharedObjects
|
from bascenev1lib.gameutils import SharedObjects
|
||||||
shared = SharedObjects.get()
|
shared = SharedObjects.get()
|
||||||
self._super_jump = super_jump
|
self._super_jump = super_jump
|
||||||
self.jump_mode = False
|
self.jump_mode = False
|
||||||
self.super_jump_material = ba.Material()
|
self.super_jump_material = bs.Material()
|
||||||
self.super_jump_material.add_actions(
|
self.super_jump_material.add_actions(
|
||||||
conditions=('they_have_material', shared.footing_material),
|
conditions=('they_have_material', shared.footing_material),
|
||||||
actions=(
|
actions=(
|
||||||
('call', 'at_connect', ba.Call(self.jump_state, True)),
|
('call', 'at_connect', babase.Call(self.jump_state, True)),
|
||||||
('call', 'at_disconnect', ba.Call(self.jump_state, False))
|
('call', 'at_disconnect', babase.Call(self.jump_state, False))
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
self.node.roller_materials += (self.super_jump_material, )
|
self.node.roller_materials += (self.super_jump_material, )
|
||||||
|
|
@ -68,7 +70,7 @@ class NewPlayerSpaz(PlayerSpaz):
|
||||||
"""
|
"""
|
||||||
if not self.node:
|
if not self.node:
|
||||||
return
|
return
|
||||||
t_ms = ba.time(timeformat=ba.TimeFormat.MILLISECONDS)
|
t_ms = int(bs.time() * 1000.0)
|
||||||
assert isinstance(t_ms, int)
|
assert isinstance(t_ms, int)
|
||||||
if t_ms - self.last_jump_time_ms >= self._jump_cooldown:
|
if t_ms - self.last_jump_time_ms >= self._jump_cooldown:
|
||||||
self.node.jump_pressed = True
|
self.node.jump_pressed = True
|
||||||
|
|
@ -81,15 +83,15 @@ class NewPlayerSpaz(PlayerSpaz):
|
||||||
self.node.position[0],
|
self.node.position[0],
|
||||||
self.node.position[1],
|
self.node.position[1],
|
||||||
self.node.position[2],
|
self.node.position[2],
|
||||||
0, 0, 0, 150, 150, 0, 0, 0, 1, 0
|
0, 0, 0, 95, 95, 0, 0, 0, 1, 0
|
||||||
)
|
)
|
||||||
ba.timer(0.0, do_jump)
|
bs.timer(0.0, do_jump)
|
||||||
ba.timer(0.1, do_jump)
|
bs.timer(0.1, do_jump)
|
||||||
ba.timer(0.2, do_jump)
|
bs.timer(0.2, do_jump)
|
||||||
self._turbo_filter_add_press('jump')
|
self._turbo_filter_add_press('jump')
|
||||||
|
|
||||||
|
|
||||||
# ba_meta export game
|
# ba_meta export bascenev1.GameActivity
|
||||||
class BoxingGame(DeathMatchGame):
|
class BoxingGame(DeathMatchGame):
|
||||||
|
|
||||||
name = name
|
name = name
|
||||||
|
|
@ -97,16 +99,16 @@ class BoxingGame(DeathMatchGame):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_available_settings(
|
def get_available_settings(
|
||||||
cls, sessiontype: type[ba.Session]
|
cls, sessiontype: type[bs.Session]
|
||||||
) -> list[ba.Setting]:
|
) -> list[babase.Setting]:
|
||||||
settings = [
|
settings = [
|
||||||
ba.IntSetting(
|
bs.IntSetting(
|
||||||
'Kills to Win Per Player',
|
'Kills to Win Per Player',
|
||||||
min_value=1,
|
min_value=1,
|
||||||
default=5,
|
default=5,
|
||||||
increment=1,
|
increment=1,
|
||||||
),
|
),
|
||||||
ba.IntChoiceSetting(
|
bs.IntChoiceSetting(
|
||||||
'Time Limit',
|
'Time Limit',
|
||||||
choices=[
|
choices=[
|
||||||
('None', 0),
|
('None', 0),
|
||||||
|
|
@ -118,7 +120,7 @@ class BoxingGame(DeathMatchGame):
|
||||||
],
|
],
|
||||||
default=0,
|
default=0,
|
||||||
),
|
),
|
||||||
ba.FloatChoiceSetting(
|
bs.FloatChoiceSetting(
|
||||||
'Respawn Times',
|
'Respawn Times',
|
||||||
choices=[
|
choices=[
|
||||||
('Shorter', 0.25),
|
('Shorter', 0.25),
|
||||||
|
|
@ -129,9 +131,9 @@ class BoxingGame(DeathMatchGame):
|
||||||
],
|
],
|
||||||
default=1.0,
|
default=1.0,
|
||||||
),
|
),
|
||||||
ba.BoolSetting(super_jump_text, default=False),
|
bs.BoolSetting(super_jump_text, default=False),
|
||||||
ba.BoolSetting(enable_powerups, default=False),
|
bs.BoolSetting(enable_powerups, default=False),
|
||||||
ba.BoolSetting('Epic Mode', default=False),
|
bs.BoolSetting('Epic Mode', default=False),
|
||||||
]
|
]
|
||||||
|
|
||||||
# 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
|
||||||
|
|
@ -139,9 +141,9 @@ class BoxingGame(DeathMatchGame):
|
||||||
# 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
|
||||||
# be able to go negative. (to avoid a strategy of just
|
# be able to go negative. (to avoid a strategy of just
|
||||||
# suiciding until you get a good drop)
|
# suiciding until you get a good drop)
|
||||||
if issubclass(sessiontype, ba.FreeForAllSession):
|
if issubclass(sessiontype, bs.FreeForAllSession):
|
||||||
settings.append(
|
settings.append(
|
||||||
ba.BoolSetting('Allow Negative Scores', default=False)
|
bs.BoolSetting('Allow Negative Scores', default=False)
|
||||||
)
|
)
|
||||||
|
|
||||||
return settings
|
return settings
|
||||||
|
|
@ -150,7 +152,7 @@ class BoxingGame(DeathMatchGame):
|
||||||
super().__init__(settings)
|
super().__init__(settings)
|
||||||
self._scoreboard = Scoreboard()
|
self._scoreboard = Scoreboard()
|
||||||
self._score_to_win: int | None = None
|
self._score_to_win: int | None = None
|
||||||
self._dingsound = ba.getsound('dingSmall')
|
self._dingsound = bs.getsound('dingSmall')
|
||||||
self._epic_mode = bool(settings['Epic Mode'])
|
self._epic_mode = bool(settings['Epic Mode'])
|
||||||
self._kills_to_win_per_player = int(settings['Kills to Win Per Player'])
|
self._kills_to_win_per_player = int(settings['Kills to Win Per Player'])
|
||||||
self._time_limit = float(settings['Time Limit'])
|
self._time_limit = float(settings['Time Limit'])
|
||||||
|
|
@ -163,11 +165,11 @@ class BoxingGame(DeathMatchGame):
|
||||||
# Base class overrides.
|
# Base class overrides.
|
||||||
self.slow_motion = self._epic_mode
|
self.slow_motion = self._epic_mode
|
||||||
self.default_music = (
|
self.default_music = (
|
||||||
ba.MusicType.EPIC if self._epic_mode else ba.MusicType.TO_THE_DEATH
|
bs.MusicType.EPIC if self._epic_mode else bs.MusicType.TO_THE_DEATH
|
||||||
)
|
)
|
||||||
|
|
||||||
def on_begin(self) -> None:
|
def on_begin(self) -> None:
|
||||||
ba.TeamGameActivity.on_begin(self)
|
bs.TeamGameActivity.on_begin(self)
|
||||||
self.setup_standard_time_limit(self._time_limit)
|
self.setup_standard_time_limit(self._time_limit)
|
||||||
if self._enable_powerups:
|
if self._enable_powerups:
|
||||||
self.setup_standard_powerup_drops()
|
self.setup_standard_powerup_drops()
|
||||||
|
|
@ -180,7 +182,7 @@ class BoxingGame(DeathMatchGame):
|
||||||
|
|
||||||
def _standard_drop_powerup(self, index: int, expire: bool = True) -> None:
|
def _standard_drop_powerup(self, index: int, expire: bool = True) -> None:
|
||||||
# pylint: disable=cyclic-import
|
# pylint: disable=cyclic-import
|
||||||
from bastd.actor.powerupbox import PowerupBox, PowerupBoxFactory
|
from bascenev1lib.actor.powerupbox import PowerupBox, PowerupBoxFactory
|
||||||
|
|
||||||
PowerupBox(
|
PowerupBox(
|
||||||
position=self.map.powerup_spawn_points[index],
|
position=self.map.powerup_spawn_points[index],
|
||||||
|
|
@ -191,13 +193,13 @@ class BoxingGame(DeathMatchGame):
|
||||||
expire=expire,
|
expire=expire,
|
||||||
).autoretain()
|
).autoretain()
|
||||||
|
|
||||||
def spawn_player(self, player: Player) -> ba.Actor:
|
def spawn_player(self, player: Player) -> bs.Actor:
|
||||||
import random
|
import random
|
||||||
from ba import _math
|
from babase import _math
|
||||||
from ba._gameutils import animate
|
from bascenev1._gameutils import animate
|
||||||
from ba._coopsession import CoopSession
|
from bascenev1._coopsession import CoopSession
|
||||||
|
|
||||||
if isinstance(self.session, ba.DualTeamSession):
|
if isinstance(self.session, bs.DualTeamSession):
|
||||||
position = self.map.get_start_position(player.team.id)
|
position = self.map.get_start_position(player.team.id)
|
||||||
else:
|
else:
|
||||||
# otherwise do free-for-all spawn locations
|
# otherwise do free-for-all spawn locations
|
||||||
|
|
@ -208,7 +210,7 @@ class BoxingGame(DeathMatchGame):
|
||||||
highlight = player.highlight
|
highlight = player.highlight
|
||||||
|
|
||||||
light_color = _math.normalized_color(color)
|
light_color = _math.normalized_color(color)
|
||||||
display_color = ba.safecolor(color, target_intensity=0.75)
|
display_color = babase.safecolor(color, target_intensity=0.75)
|
||||||
|
|
||||||
spaz = NewPlayerSpaz(color=color,
|
spaz = NewPlayerSpaz(color=color,
|
||||||
highlight=highlight,
|
highlight=highlight,
|
||||||
|
|
@ -224,14 +226,14 @@ class BoxingGame(DeathMatchGame):
|
||||||
|
|
||||||
# Move to the stand position and add a flash of light.
|
# Move to the stand position and add a flash of light.
|
||||||
spaz.handlemessage(
|
spaz.handlemessage(
|
||||||
ba.StandMessage(
|
bs.StandMessage(
|
||||||
position,
|
position,
|
||||||
angle if angle is not None else random.uniform(0, 360)))
|
angle if angle is not None else random.uniform(0, 360)))
|
||||||
ba.playsound(self._spawn_sound, 1, position=spaz.node.position)
|
self._spawn_sound.play(1, position=spaz.node.position)
|
||||||
light = ba.newnode('light', attrs={'color': light_color})
|
light = bs.newnode('light', attrs={'color': light_color})
|
||||||
spaz.node.connectattr('position', light, 'position')
|
spaz.node.connectattr('position', light, 'position')
|
||||||
animate(light, 'intensity', {0: 0, 0.25: 1, 0.5: 0})
|
animate(light, 'intensity', {0: 0, 0.25: 1, 0.5: 0})
|
||||||
ba.timer(0.5, light.delete)
|
bs.timer(0.5, light.delete)
|
||||||
|
|
||||||
# custom
|
# custom
|
||||||
spaz.connect_controls_to_player(enable_bomb=False)
|
spaz.connect_controls_to_player(enable_bomb=False)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue