This commit is contained in:
Eric Froemling 2020-06-09 16:15:11 -07:00
parent 57103caa31
commit 4601ce9473
6 changed files with 214 additions and 211 deletions

View File

@ -4132,16 +4132,16 @@
"assets/build/windows/x64/python.exe": "https://files.ballistica.net/cache/ba1/25/a7/dc87c1be41605eb6fefd0145144c", "assets/build/windows/x64/python.exe": "https://files.ballistica.net/cache/ba1/25/a7/dc87c1be41605eb6fefd0145144c",
"assets/build/windows/x64/python37.dll": "https://files.ballistica.net/cache/ba1/b9/e4/d912f56e42e9991bcbb4c804cfcb", "assets/build/windows/x64/python37.dll": "https://files.ballistica.net/cache/ba1/b9/e4/d912f56e42e9991bcbb4c804cfcb",
"assets/build/windows/x64/pythonw.exe": "https://files.ballistica.net/cache/ba1/6c/bb/b6f52c306aa4e88061510e96cefe", "assets/build/windows/x64/pythonw.exe": "https://files.ballistica.net/cache/ba1/6c/bb/b6f52c306aa4e88061510e96cefe",
"build/prefab/linux-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c3/0a/88aac36a9fc3fd22655330620f94", "build/prefab/linux-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/68/cf/1799ab571bdc1942e58a99cc5c16",
"build/prefab/linux-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/88/24/292978d4c30e1ecd870eed435d28", "build/prefab/linux-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/46/62/bc2a3dc03c8bd9bc034851cf5314",
"build/prefab/linux/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/e8/f9/b7a3e4e3f4ff262804c14747ad11", "build/prefab/linux/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ea/e8/d2b075dabe1e9f9358c198b8adff",
"build/prefab/linux/release/ballisticacore": "https://files.ballistica.net/cache/ba1/3c/55/c1005d5da5b7fc2fec10c4c5a5ba", "build/prefab/linux/release/ballisticacore": "https://files.ballistica.net/cache/ba1/c1/cc/cd7704cb242e86535a688186240b",
"build/prefab/mac-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/68/4f/8a47768eaac63d56706489076fe9", "build/prefab/mac-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/5a/00/cdf784fc736fcf7ec65fe6941bb3",
"build/prefab/mac-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/5f/15/231c0b5530fb193bf43d1d424c55", "build/prefab/mac-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a8/da/466f2f0f4837069315adb4107573",
"build/prefab/mac/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/f7/c6/de3932a656e27f7f21a54380f62c", "build/prefab/mac/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/c7/14/f3795835f4b14e7b8c873bfdd936",
"build/prefab/mac/release/ballisticacore": "https://files.ballistica.net/cache/ba1/b6/d7/d00e68f088c6ff72963231730648", "build/prefab/mac/release/ballisticacore": "https://files.ballistica.net/cache/ba1/1b/c9/bb4b326efc4a125d01edb3ba6451",
"build/prefab/windows-server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/83/93/99e8eb67cdaa7f64ccb66ba7fa9e", "build/prefab/windows-server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/e7/a0/5d8cfa3b7622468b6fff4d36a69b",
"build/prefab/windows-server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/d1/05/b7b47978e93db2f65cf172ff28b3", "build/prefab/windows-server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/f6/05/599e4c7481031e8bfe5f901f422f",
"build/prefab/windows/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/74/f2/a754439742dd96c00aa57b6b036c", "build/prefab/windows/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/b0/52/d3489ac0c0d25dcb2d81333f235e",
"build/prefab/windows/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/f2/91/7e1fd943727c3bd78e48f405b6c5" "build/prefab/windows/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/1b/b2/0169fdcb311e55fc9523ff6c53b8"
} }

View File

@ -1,3 +1,8 @@
### 1.5.2 (20063)
- Fixes an issue with controls not working correctly in net-play between 1.4.x and 1.5.x.
- Tidied up onslaught code a bit.
- Fixes various other minor bugs.
### 1.5.1 (20062) ### 1.5.1 (20062)
- Windows server now properly displays color when run by double clicking the .bat file. - Windows server now properly displays color when run by double clicking the .bat file.
- Misc bug fixes. - Misc bug fixes.

View File

@ -42,7 +42,7 @@ def run_cpu_benchmark() -> None:
def __init__(self) -> None: def __init__(self) -> None:
print('FIXME: BENCHMARK SESSION WOULD CALC DEPS.') # print('FIXME: BENCHMARK SESSION WOULD CALC DEPS.')
depsets: Sequence[ba.DependencySet] = [] depsets: Sequence[ba.DependencySet] = []
super().__init__(depsets) super().__init__(depsets)

View File

@ -29,31 +29,31 @@ class InputType(Enum):
Category: Enums Category: Enums
""" """
UP_DOWN = 0 UP_DOWN = 2
LEFT_RIGHT = 1 LEFT_RIGHT = 3
JUMP_PRESS = 2 JUMP_PRESS = 4
JUMP_RELEASE = 3 JUMP_RELEASE = 5
PUNCH_PRESS = 4 PUNCH_PRESS = 6
PUNCH_RELEASE = 5 PUNCH_RELEASE = 7
BOMB_PRESS = 6 BOMB_PRESS = 8
BOMB_RELEASE = 7 BOMB_RELEASE = 9
PICK_UP_PRESS = 8 PICK_UP_PRESS = 10
PICK_UP_RELEASE = 9 PICK_UP_RELEASE = 11
RUN = 10 RUN = 12
FLY_PRESS = 11 FLY_PRESS = 13
FLY_RELEASE = 12 FLY_RELEASE = 14
START_PRESS = 13 START_PRESS = 15
START_RELEASE = 14 START_RELEASE = 16
HOLD_POSITION_PRESS = 15 HOLD_POSITION_PRESS = 17
HOLD_POSITION_RELEASE = 16 HOLD_POSITION_RELEASE = 18
LEFT_PRESS = 17 LEFT_PRESS = 19
LEFT_RELEASE = 18 LEFT_RELEASE = 20
RIGHT_PRESS = 19 RIGHT_PRESS = 21
RIGHT_RELEASE = 20 RIGHT_RELEASE = 22
UP_PRESS = 21 UP_PRESS = 23
UP_RELEASE = 22 UP_RELEASE = 24
DOWN_PRESS = 23 DOWN_PRESS = 25
DOWN_RELEASE = 24 DOWN_RELEASE = 26
class TimeType(Enum): class TimeType(Enum):

View File

@ -53,13 +53,13 @@ if TYPE_CHECKING:
@dataclass @dataclass
class Wave: class Wave:
"""A wave of enemies.""" """A wave of enemies."""
entries: List[Union[Bot, Spacing, Delay, None]] entries: List[Union[Spawn, Spacing, Delay, None]]
base_angle: float = 0.0 base_angle: float = 0.0
@dataclass @dataclass
class Bot: class Spawn:
"""A bot in a wave.""" """A bot spawn event in a wave."""
bottype: Union[Type[SpazBot], str] bottype: Union[Type[SpazBot], str]
point: Optional[Point] = None point: Optional[Point] = None
spacing: float = 5.0 spacing: float = 5.0
@ -73,7 +73,7 @@ class Spacing:
@dataclass @dataclass
class Delay: class Delay:
"""A delay in a wave.""" """A delay between events in a wave."""
duration: float duration: float
@ -93,34 +93,34 @@ class Preset(Enum):
@unique @unique
class Point(Enum): class Point(Enum):
"""Points on the map to spawn at.""" """Points on the map we can spawn at."""
LEFT_UPPER_MORE = 'left_upper_more' LEFT_UPPER_MORE = 'bot_spawn_left_upper_more'
LEFT_UPPER = 'left_upper' LEFT_UPPER = 'bot_spawn_left_upper'
TURRET_TOP_RIGHT = 'turret_top_right' TURRET_TOP_RIGHT = 'bot_spawn_turret_top_right'
RIGHT_UPPER = 'right_upper' RIGHT_UPPER = 'bot_spawn_right_upper'
TURRET_TOP_MIDDLE_LEFT = 'turret_top_middle_left' TURRET_TOP_MIDDLE_LEFT = 'bot_spawn_turret_top_middle_left'
TURRET_TOP_MIDDLE_RIGHT = 'turret_top_middle_right' TURRET_TOP_MIDDLE_RIGHT = 'bot_spawn_turret_top_middle_right'
TURRET_TOP_LEFT = 'turret_top_left' TURRET_TOP_LEFT = 'bot_spawn_turret_top_left'
TOP_RIGHT = 'top_right' TOP_RIGHT = 'bot_spawn_top_right'
TOP_LEFT = 'top_left' TOP_LEFT = 'bot_spawn_top_left'
TOP = 'top' TOP = 'bot_spawn_top'
BOTTOM = 'bottom' BOTTOM = 'bot_spawn_bottom'
LEFT = 'left' LEFT = 'bot_spawn_left'
RIGHT = 'right' RIGHT = 'bot_spawn_right'
RIGHT_UPPER_MORE = 'right_upper_more' RIGHT_UPPER_MORE = 'bot_spawn_right_upper_more'
RIGHT_LOWER = 'right_lower' RIGHT_LOWER = 'bot_spawn_right_lower'
RIGHT_LOWER_MORE = 'right_lower_more' RIGHT_LOWER_MORE = 'bot_spawn_right_lower_more'
BOTTOM_RIGHT = 'bottom_right' BOTTOM_RIGHT = 'bot_spawn_bottom_right'
BOTTOM_LEFT = 'bottom_left' BOTTOM_LEFT = 'bot_spawn_bottom_left'
TURRET_BOTTOM_RIGHT = 'turret_bottom_right' TURRET_BOTTOM_RIGHT = 'bot_spawn_turret_bottom_right'
TURRET_BOTTOM_LEFT = 'turret_bottom_left' TURRET_BOTTOM_LEFT = 'bot_spawn_turret_bottom_left'
LEFT_LOWER = 'left_lower' LEFT_LOWER = 'bot_spawn_left_lower'
LEFT_LOWER_MORE = 'left_lower_more' LEFT_LOWER_MORE = 'bot_spawn_left_lower_more'
TURRET_TOP_MIDDLE = 'turret_top_middle' TURRET_TOP_MIDDLE = 'bot_spawn_turret_top_middle'
BOTTOM_HALF_RIGHT = 'bottom_half_right' BOTTOM_HALF_RIGHT = 'bot_spawn_bottom_half_right'
BOTTOM_HALF_LEFT = 'bottom_half_left' BOTTOM_HALF_LEFT = 'bot_spawn_bottom_half_left'
TOP_HALF_RIGHT = 'top_half_right' TOP_HALF_RIGHT = 'bot_spawn_top_half_right'
TOP_HALF_LEFT = 'top_half_left' TOP_HALF_LEFT = 'bot_spawn_top_half_left'
class Player(ba.Player['Team']): class Player(ba.Player['Team']):
@ -283,37 +283,37 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
self._waves = [ self._waves = [
Wave(base_angle=195, Wave(base_angle=195,
entries=[ entries=[
Bot(BomberBotLite, spacing=5), Spawn(BomberBotLite, spacing=5),
] * player_count), ] * player_count),
Wave(base_angle=130, Wave(base_angle=130,
entries=[ entries=[
Bot(BrawlerBotLite, spacing=5), Spawn(BrawlerBotLite, spacing=5),
] * player_count), ] * player_count),
Wave(base_angle=195, Wave(base_angle=195,
entries=[Bot(BomberBotLite, spacing=10)] * entries=[Spawn(BomberBotLite, spacing=10)] *
(player_count + 1)), (player_count + 1)),
Wave(base_angle=130, Wave(base_angle=130,
entries=[ entries=[
Bot(BrawlerBotLite, spacing=10), Spawn(BrawlerBotLite, spacing=10),
] * (player_count + 1)), ] * (player_count + 1)),
Wave(base_angle=130, Wave(base_angle=130,
entries=[ entries=[
Bot(BrawlerBotLite, spacing=5) Spawn(BrawlerBotLite, spacing=5)
if player_count > 1 else None, if player_count > 1 else None,
Bot(BrawlerBotLite, spacing=5), Spawn(BrawlerBotLite, spacing=5),
Spacing(30), Spacing(30),
Bot(BomberBotLite, spacing=5) Spawn(BomberBotLite, spacing=5)
if player_count > 3 else None, if player_count > 3 else None,
Bot(BomberBotLite, spacing=5), Spawn(BomberBotLite, spacing=5),
Spacing(30), Spacing(30),
Bot(BrawlerBotLite, spacing=5), Spawn(BrawlerBotLite, spacing=5),
Bot(BrawlerBotLite, spacing=5) Spawn(BrawlerBotLite, spacing=5)
if player_count > 2 else None, if player_count > 2 else None,
]), ]),
Wave(base_angle=195, Wave(base_angle=195,
entries=[ entries=[
Bot(TriggerBot, spacing=90), Spawn(TriggerBot, spacing=90),
Bot(TriggerBot, spacing=90) Spawn(TriggerBot, spacing=90)
if player_count > 1 else None, if player_count > 1 else None,
]), ]),
] ]
@ -323,53 +323,53 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
self._excluded_powerups = ['curse'] self._excluded_powerups = ['curse']
self._waves = [ self._waves = [
Wave(entries=[ Wave(entries=[
Bot(ChargerBot, Point.LEFT_UPPER_MORE Spawn(ChargerBot, Point.LEFT_UPPER_MORE
) if player_count > 2 else None, ) if player_count > 2 else None,
Bot(ChargerBot, Point.LEFT_UPPER), Spawn(ChargerBot, Point.LEFT_UPPER),
]), ]),
Wave(entries=[ Wave(entries=[
Bot(BomberBotStaticLite, Point.TURRET_TOP_RIGHT), Spawn(BomberBotStaticLite, Point.TURRET_TOP_RIGHT),
Bot(BrawlerBotLite, Point.RIGHT_UPPER), Spawn(BrawlerBotLite, Point.RIGHT_UPPER),
Bot(BrawlerBotLite, Point.RIGHT_LOWER Spawn(BrawlerBotLite, Point.RIGHT_LOWER
) if player_count > 1 else None, ) if player_count > 1 else None,
Bot(BomberBotStaticLite, Point.TURRET_BOTTOM_RIGHT Spawn(BomberBotStaticLite, Point.TURRET_BOTTOM_RIGHT
) if player_count > 2 else None, ) if player_count > 2 else None,
]), ]),
Wave(entries=[ Wave(entries=[
Bot(BomberBotStaticLite, Point.TURRET_BOTTOM_LEFT), Spawn(BomberBotStaticLite, Point.TURRET_BOTTOM_LEFT),
Bot(TriggerBot, Point.LEFT), Spawn(TriggerBot, Point.LEFT),
Bot(TriggerBot, Point.LEFT_LOWER Spawn(TriggerBot, Point.LEFT_LOWER
) if player_count > 1 else None, ) if player_count > 1 else None,
Bot(TriggerBot, Point.LEFT_UPPER Spawn(TriggerBot, Point.LEFT_UPPER
) if player_count > 2 else None, ) if player_count > 2 else None,
]), ]),
Wave(entries=[ Wave(entries=[
Bot(BrawlerBotLite, Point.TOP_RIGHT), Spawn(BrawlerBotLite, Point.TOP_RIGHT),
Bot(BrawlerBot, Point.TOP_HALF_RIGHT Spawn(BrawlerBot, Point.TOP_HALF_RIGHT
) if player_count > 1 else None, ) if player_count > 1 else None,
Bot(BrawlerBotLite, Point.TOP_LEFT), Spawn(BrawlerBotLite, Point.TOP_LEFT),
Bot(BrawlerBotLite, Point.TOP_HALF_LEFT Spawn(BrawlerBotLite, Point.TOP_HALF_LEFT
) if player_count > 2 else None, ) if player_count > 2 else None,
Bot(BrawlerBot, Point.TOP), Spawn(BrawlerBot, Point.TOP),
Bot(BomberBotStaticLite, Point.TURRET_TOP_MIDDLE), Spawn(BomberBotStaticLite, Point.TURRET_TOP_MIDDLE),
]), ]),
Wave(entries=[ Wave(entries=[
Bot(TriggerBotStatic, Point.TURRET_BOTTOM_LEFT), Spawn(TriggerBotStatic, Point.TURRET_BOTTOM_LEFT),
Bot(TriggerBotStatic, Point.TURRET_BOTTOM_RIGHT), Spawn(TriggerBotStatic, Point.TURRET_BOTTOM_RIGHT),
Bot(TriggerBot, Point.BOTTOM), Spawn(TriggerBot, Point.BOTTOM),
Bot(TriggerBot, Point.BOTTOM_HALF_RIGHT Spawn(TriggerBot, Point.BOTTOM_HALF_RIGHT
) if player_count > 1 else None, ) if player_count > 1 else None,
Bot(TriggerBot, Point.BOTTOM_HALF_LEFT Spawn(TriggerBot, Point.BOTTOM_HALF_LEFT
) if player_count > 2 else None, ) if player_count > 2 else None,
]), ]),
Wave(entries=[ Wave(entries=[
Bot(BomberBotStaticLite, Point.TURRET_TOP_LEFT), Spawn(BomberBotStaticLite, Point.TURRET_TOP_LEFT),
Bot(BomberBotStaticLite, Point.TURRET_TOP_RIGHT), Spawn(BomberBotStaticLite, Point.TURRET_TOP_RIGHT),
Bot(ChargerBot, Point.BOTTOM), Spawn(ChargerBot, Point.BOTTOM),
Bot(ChargerBot, Point.BOTTOM_HALF_LEFT Spawn(ChargerBot, Point.BOTTOM_HALF_LEFT
) if player_count > 1 else None, ) if player_count > 1 else None,
Bot(ChargerBot, Point.BOTTOM_HALF_RIGHT Spawn(ChargerBot, Point.BOTTOM_HALF_RIGHT
) if player_count > 2 else None, ) if player_count > 2 else None,
]), ]),
] ]
@ -379,78 +379,78 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
self._waves = [ self._waves = [
Wave(base_angle=-50, Wave(base_angle=-50,
entries=[ entries=[
Bot(BrawlerBot, spacing=12) Spawn(BrawlerBot, spacing=12)
if player_count > 3 else None, if player_count > 3 else None,
Bot(BrawlerBot, spacing=12), Spawn(BrawlerBot, spacing=12),
Bot(BomberBot, spacing=6), Spawn(BomberBot, spacing=6),
Bot(BomberBot, spacing=6) Spawn(BomberBot, spacing=6)
if self._preset is Preset.PRO else None, if self._preset is Preset.PRO else None,
Bot(BomberBot, spacing=6) Spawn(BomberBot, spacing=6)
if player_count > 1 else None, if player_count > 1 else None,
Bot(BrawlerBot, spacing=12), Spawn(BrawlerBot, spacing=12),
Bot(BrawlerBot, spacing=12) Spawn(BrawlerBot, spacing=12)
if player_count > 2 else None, if player_count > 2 else None,
]), ]),
Wave(base_angle=180, Wave(base_angle=180,
entries=[ entries=[
Bot(BrawlerBot, spacing=6) Spawn(BrawlerBot, spacing=6)
if player_count > 3 else None, if player_count > 3 else None,
Bot(BrawlerBot, spacing=6) Spawn(BrawlerBot, spacing=6)
if self._preset is Preset.PRO else None, if self._preset is Preset.PRO else None,
Bot(BrawlerBot, spacing=6), Spawn(BrawlerBot, spacing=6),
Bot(ChargerBot, spacing=45), Spawn(ChargerBot, spacing=45),
Bot(ChargerBot, spacing=45) Spawn(ChargerBot, spacing=45)
if player_count > 1 else None, if player_count > 1 else None,
Bot(BrawlerBot, spacing=6), Spawn(BrawlerBot, spacing=6),
Bot(BrawlerBot, spacing=6) Spawn(BrawlerBot, spacing=6)
if self._preset is Preset.PRO else None, if self._preset is Preset.PRO else None,
Bot(BrawlerBot, spacing=6) Spawn(BrawlerBot, spacing=6)
if player_count > 2 else None, if player_count > 2 else None,
]), ]),
Wave(base_angle=0, Wave(base_angle=0,
entries=[ entries=[
Bot(ChargerBot, spacing=30), Spawn(ChargerBot, spacing=30),
Bot(TriggerBot, spacing=30), Spawn(TriggerBot, spacing=30),
Bot(TriggerBot, spacing=30), Spawn(TriggerBot, spacing=30),
Bot(TriggerBot, spacing=30) Spawn(TriggerBot, spacing=30)
if self._preset is Preset.PRO else None, if self._preset is Preset.PRO else None,
Bot(TriggerBot, spacing=30) Spawn(TriggerBot, spacing=30)
if player_count > 1 else None, if player_count > 1 else None,
Bot(TriggerBot, spacing=30) Spawn(TriggerBot, spacing=30)
if player_count > 3 else None, if player_count > 3 else None,
Bot(ChargerBot, spacing=30), Spawn(ChargerBot, spacing=30),
]), ]),
Wave(base_angle=90, Wave(base_angle=90,
entries=[ entries=[
Bot(StickyBot, spacing=50), Spawn(StickyBot, spacing=50),
Bot(StickyBot, spacing=50) Spawn(StickyBot, spacing=50)
if self._preset is Preset.PRO else None, if self._preset is Preset.PRO else None,
Bot(StickyBot, spacing=50), Spawn(StickyBot, spacing=50),
Bot(StickyBot, spacing=50) Spawn(StickyBot, spacing=50)
if player_count > 1 else None, if player_count > 1 else None,
Bot(StickyBot, spacing=50) Spawn(StickyBot, spacing=50)
if player_count > 3 else None, if player_count > 3 else None,
]), ]),
Wave(base_angle=0, Wave(base_angle=0,
entries=[ entries=[
Bot(TriggerBot, spacing=72), Spawn(TriggerBot, spacing=72),
Bot(TriggerBot, spacing=72), Spawn(TriggerBot, spacing=72),
Bot(TriggerBot, spacing=72) Spawn(TriggerBot, spacing=72)
if self._preset is Preset.PRO else None, if self._preset is Preset.PRO else None,
Bot(TriggerBot, spacing=72), Spawn(TriggerBot, spacing=72),
Bot(TriggerBot, spacing=72), Spawn(TriggerBot, spacing=72),
Bot(TriggerBot, spacing=36) Spawn(TriggerBot, spacing=36)
if player_count > 2 else None, if player_count > 2 else None,
]), ]),
Wave(base_angle=30, Wave(base_angle=30,
entries=[ entries=[
Bot(ChargerBotProShielded, spacing=50), Spawn(ChargerBotProShielded, spacing=50),
Bot(ChargerBotProShielded, spacing=50), Spawn(ChargerBotProShielded, spacing=50),
Bot(ChargerBotProShielded, spacing=50) Spawn(ChargerBotProShielded, spacing=50)
if self._preset is Preset.PRO else None, if self._preset is Preset.PRO else None,
Bot(ChargerBotProShielded, spacing=50) Spawn(ChargerBotProShielded, spacing=50)
if player_count > 1 else None, if player_count > 1 else None,
Bot(ChargerBotProShielded, spacing=50) Spawn(ChargerBotProShielded, spacing=50)
if player_count > 2 else None, if player_count > 2 else None,
]) ])
] ]
@ -466,65 +466,65 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
self._excluded_powerups = [] self._excluded_powerups = []
self._waves = [ self._waves = [
Wave(entries=[ Wave(entries=[
Bot(BomberBotProStatic, Point.TURRET_TOP_MIDDLE_LEFT Spawn(BomberBotProStatic, Point.TURRET_TOP_MIDDLE_LEFT
) if hard else None, ) if hard else None,
Bot(BomberBotProStatic, Point.TURRET_TOP_MIDDLE_RIGHT), Spawn(BomberBotProStatic, Point.TURRET_TOP_MIDDLE_RIGHT),
Bot(BomberBotProStatic, Point.TURRET_TOP_LEFT Spawn(BomberBotProStatic, Point.TURRET_TOP_LEFT
) if player_count > 2 else None, ) if player_count > 2 else None,
Bot(ExplodeyBot, Point.TOP_RIGHT), Spawn(ExplodeyBot, Point.TOP_RIGHT),
Delay(4.0), Delay(4.0),
Bot(ExplodeyBot, Point.TOP_LEFT), Spawn(ExplodeyBot, Point.TOP_LEFT),
]), ]),
Wave(entries=[ Wave(entries=[
Bot(ChargerBot, Point.LEFT), Spawn(ChargerBot, Point.LEFT),
Bot(ChargerBot, Point.RIGHT), Spawn(ChargerBot, Point.RIGHT),
Bot(ChargerBot, Point.RIGHT_UPPER_MORE Spawn(ChargerBot, Point.RIGHT_UPPER_MORE
) if player_count > 2 else None, ) if player_count > 2 else None,
Bot(BomberBotProStatic, Point.TURRET_TOP_LEFT), Spawn(BomberBotProStatic, Point.TURRET_TOP_LEFT),
Bot(BomberBotProStatic, Point.TURRET_TOP_RIGHT), Spawn(BomberBotProStatic, Point.TURRET_TOP_RIGHT),
]), ]),
Wave(entries=[ Wave(entries=[
Bot(TriggerBotPro, Point.TOP_RIGHT), Spawn(TriggerBotPro, Point.TOP_RIGHT),
Bot(TriggerBotPro, Point.RIGHT_UPPER_MORE Spawn(TriggerBotPro, Point.RIGHT_UPPER_MORE
) if player_count > 1 else None, ) if player_count > 1 else None,
Bot(TriggerBotPro, Point.RIGHT_UPPER), Spawn(TriggerBotPro, Point.RIGHT_UPPER),
Bot(TriggerBotPro, Point.RIGHT_LOWER) if hard else None, Spawn(TriggerBotPro, Point.RIGHT_LOWER) if hard else None,
Bot(TriggerBotPro, Point.RIGHT_LOWER_MORE Spawn(TriggerBotPro, Point.RIGHT_LOWER_MORE
) if player_count > 2 else None, ) if player_count > 2 else None,
Bot(TriggerBotPro, Point.BOTTOM_RIGHT), Spawn(TriggerBotPro, Point.BOTTOM_RIGHT),
]), ]),
Wave(entries=[ Wave(entries=[
Bot(ChargerBotProShielded, Point.BOTTOM_RIGHT), Spawn(ChargerBotProShielded, Point.BOTTOM_RIGHT),
Bot(ChargerBotProShielded, Point.BOTTOM Spawn(ChargerBotProShielded, Point.BOTTOM
) if player_count > 2 else None, ) if player_count > 2 else None,
Bot(ChargerBotProShielded, Point.BOTTOM_LEFT), Spawn(ChargerBotProShielded, Point.BOTTOM_LEFT),
Bot(ChargerBotProShielded, Point.TOP) if hard else None, Spawn(ChargerBotProShielded, Point.TOP) if hard else None,
Bot(BomberBotProStatic, Point.TURRET_TOP_MIDDLE), Spawn(BomberBotProStatic, Point.TURRET_TOP_MIDDLE),
]), ]),
Wave(entries=[ Wave(entries=[
Bot(ExplodeyBot, Point.LEFT_UPPER), Spawn(ExplodeyBot, Point.LEFT_UPPER),
Delay(1.0), Delay(1.0),
Bot(BrawlerBotProShielded, Point.LEFT_LOWER), Spawn(BrawlerBotProShielded, Point.LEFT_LOWER),
Bot(BrawlerBotProShielded, Point.LEFT_LOWER_MORE), Spawn(BrawlerBotProShielded, Point.LEFT_LOWER_MORE),
Delay(4.0), Delay(4.0),
Bot(ExplodeyBot, Point.RIGHT_UPPER), Spawn(ExplodeyBot, Point.RIGHT_UPPER),
Delay(1.0), Delay(1.0),
Bot(BrawlerBotProShielded, Point.RIGHT_LOWER), Spawn(BrawlerBotProShielded, Point.RIGHT_LOWER),
Bot(BrawlerBotProShielded, Point.RIGHT_UPPER_MORE), Spawn(BrawlerBotProShielded, Point.RIGHT_UPPER_MORE),
Delay(4.0), Delay(4.0),
Bot(ExplodeyBot, Point.LEFT), Spawn(ExplodeyBot, Point.LEFT),
Delay(5.0), Delay(5.0),
Bot(ExplodeyBot, Point.RIGHT), Spawn(ExplodeyBot, Point.RIGHT),
]), ]),
Wave(entries=[ Wave(entries=[
Bot(BomberBotProStatic, Point.TURRET_TOP_LEFT), Spawn(BomberBotProStatic, Point.TURRET_TOP_LEFT),
Bot(BomberBotProStatic, Point.TURRET_TOP_RIGHT), Spawn(BomberBotProStatic, Point.TURRET_TOP_RIGHT),
Bot(BomberBotProStatic, Point.TURRET_BOTTOM_LEFT), Spawn(BomberBotProStatic, Point.TURRET_BOTTOM_LEFT),
Bot(BomberBotProStatic, Point.TURRET_BOTTOM_RIGHT), Spawn(BomberBotProStatic, Point.TURRET_BOTTOM_RIGHT),
Bot(BomberBotProStatic, Point.TURRET_TOP_MIDDLE_LEFT Spawn(BomberBotProStatic, Point.TURRET_TOP_MIDDLE_LEFT
) if hard else None, ) if hard else None,
Bot(BomberBotProStatic, Point.TURRET_TOP_MIDDLE_RIGHT Spawn(BomberBotProStatic, Point.TURRET_TOP_MIDDLE_RIGHT
) if hard else None, ) if hard else None,
]) ])
] ]
@ -535,7 +535,7 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
self._waves = [] self._waves = []
else: else:
raise Exception('Invalid preset: ' + str(self._preset)) raise RuntimeError(f'Invalid preset: {self._preset}')
# FIXME: Should migrate to use setup_standard_powerup_drops(). # FIXME: Should migrate to use setup_standard_powerup_drops().
@ -1088,8 +1088,8 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
def _add_entries_for_distribution_group( def _add_entries_for_distribution_group(
self, group: List[Tuple[int, int]], self, group: List[Tuple[int, int]],
bot_levels: List[List[Type[SpazBot]]], bot_levels: List[List[Type[SpazBot]]],
all_entries: List[Union[Bot, Spacing, Delay, None]]) -> None: all_entries: List[Union[Spawn, Spacing, Delay, None]]) -> None:
entries: List[Union[Bot, Spacing, Delay, None]] = [] entries: List[Union[Spawn, Spacing, Delay, None]] = []
for entry in group: for entry in group:
bot_level = bot_levels[entry[0] - 1] bot_level = bot_levels[entry[0] - 1]
bot_type = bot_level[random.randrange(len(bot_level))] bot_type = bot_level[random.randrange(len(bot_level))]
@ -1103,9 +1103,9 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
split = random.random() > 0.3 split = random.random() > 0.3
for i in range(entry[1]): for i in range(entry[1]):
if split and i % 2 == 0: if split and i % 2 == 0:
entries.insert(0, Bot(bot_type, spacing=spacing)) entries.insert(0, Spawn(bot_type, spacing=spacing))
else: else:
entries.append(Bot(bot_type, spacing=spacing)) entries.append(Spawn(bot_type, spacing=spacing))
if entries: if entries:
all_entries += entries all_entries += entries
all_entries.append( all_entries.append(
@ -1124,7 +1124,7 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
distribution = self._get_distribution(target_points, min_dudes, distribution = self._get_distribution(target_points, min_dudes,
max_dudes, group_count, max_dudes, group_count,
max_level) max_level)
all_entries: List[Union[Bot, Spacing, Delay, None]] = [] all_entries: List[Union[Spawn, Spacing, Delay, None]] = []
for group in distribution: for group in distribution:
self._add_entries_for_distribution_group(group, bot_levels, self._add_entries_for_distribution_group(group, bot_levels,
all_entries) all_entries)
@ -1149,7 +1149,7 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
if self._game_over: if self._game_over:
return return
assert isinstance(point.value, str) assert isinstance(point.value, str)
pointpos = self.map.defs.points['bot_spawn_' + point.value] pointpos = self.map.defs.points[point.value]
assert self._bots is not None assert self._bots is not None
self._bots.spawn_bot(spaz_type, pos=pointpos, spawn_time=spawn_time) self._bots.spawn_bot(spaz_type, pos=pointpos, spawn_time=spawn_time)
@ -1322,9 +1322,7 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
self.spawn_player(player) self.spawn_player(player)
def _checkroundover(self) -> None: def _checkroundover(self) -> None:
""" """Potentially end the round based on the state of the game."""
see if the round is over in response to an event (player died, etc)
"""
if self.has_ended(): if self.has_ended():
return return
if not any(player.is_alive() for player in self.teams[0].players): if not any(player.is_alive() for player in self.teams[0].players):

View File

@ -1,5 +1,5 @@
<!-- THIS FILE IS AUTO GENERATED; DO NOT EDIT BY HAND --> <!-- THIS FILE IS AUTO GENERATED; DO NOT EDIT BY HAND -->
<h4><em>last updated on 2020-06-09 for Ballistica version 1.5.1 build 20062</em></h4> <h4><em>last updated on 2020-06-09 for Ballistica version 1.5.2 build 20064</em></h4>
<p>This page documents the Python classes and functions in the 'ba' module, <p>This page documents the Python classes and functions in the 'ba' module,
which are the ones most relevant to modding in Ballistica. If you come across something you feel should be included here or could be better explained, please <a href="mailto:support@froemling.net">let me know</a>. Happy modding!</p> which are the ones most relevant to modding in Ballistica. If you come across something you feel should be included here or could be better explained, please <a href="mailto:support@froemling.net">let me know</a>. Happy modding!</p>
<hr> <hr>