merge conflicts

This commit is contained in:
Ayush Saini 2022-11-26 18:05:55 +05:30
commit 212be77f9e
2 changed files with 127 additions and 110 deletions

View file

@ -313,7 +313,12 @@
} }
], ],
"versions": { "versions": {
"1.0.0": null "1.0.0": {
"api_version": 7,
"commit_sha": "7bc4d9e",
"released_on": "26-11-2022",
"md5sum": "0ef6342b43ca82cdfbb6276d6119a488"
}
} }
}, },
"server_switch": { "server_switch": {

View file

@ -1,5 +1,5 @@
# ba_meta require api 7 # ba_meta require api 7
# AutoStunt mod by - Mr.Smoothy x Rikko # AutoStunt mod by - Mr.Smoothy x Rikko
# https://discord.gg/ucyaesh # https://discord.gg/ucyaesh
# https://bombsquad.ga # https://bombsquad.ga
# Dont modify redistribute this plugin , if want to use features of this plugin in your mod write logic in seprate file # Dont modify redistribute this plugin , if want to use features of this plugin in your mod write logic in seprate file
@ -35,35 +35,43 @@ original_chatmessage = _ba.chatmessage
class ControlsUI: class ControlsUI:
def on_jump_press(activity): def on_jump_press(activity):
activity._jump_image.node.color = list(channel * 2 for channel in activity._jump_image.node.color[:3]) + [1] activity._jump_image.node.color = list(channel * 2 for channel in activity._jump_image.node.color[:3]) + [1]
def on_jump_release(activity): def on_jump_release(activity):
activity._jump_image.node.color = list(channel * 0.5 for channel in activity._jump_image.node.color[:3]) + [1] activity._jump_image.node.color = list(
channel * 0.5 for channel in activity._jump_image.node.color[:3]) + [1]
def on_pickup_press(activity): def on_pickup_press(activity):
activity._pickup_image.node.color = list(channel * 2 for channel in activity._pickup_image.node.color[:3]) + [1] activity._pickup_image.node.color = list(
channel * 2 for channel in activity._pickup_image.node.color[:3]) + [1]
def on_pickup_release(activity): def on_pickup_release(activity):
activity._pickup_image.node.color = list(channel * 0.5 for channel in activity._pickup_image.node.color[:3]) + [1] activity._pickup_image.node.color = list(
channel * 0.5 for channel in activity._pickup_image.node.color[:3]) + [1]
def on_punch_press(activity): def on_punch_press(activity):
activity._punch_image.node.color = list(channel * 2 for channel in activity._punch_image.node.color[:3]) + [1] activity._punch_image.node.color = list(
channel * 2 for channel in activity._punch_image.node.color[:3]) + [1]
def on_punch_release(activity): def on_punch_release(activity):
activity._punch_image.node.color = list(channel * 0.5 for channel in activity._punch_image.node.color[:3]) + [1] activity._punch_image.node.color = list(
channel * 0.5 for channel in activity._punch_image.node.color[:3]) + [1]
def on_bomb_press(activity): def on_bomb_press(activity):
activity._bomb_image.node.color = list(channel * 2 for channel in activity._bomb_image.node.color[:3]) + [1] activity._bomb_image.node.color = list(
channel * 2 for channel in activity._bomb_image.node.color[:3]) + [1]
def on_bomb_release(activity): def on_bomb_release(activity):
activity._bomb_image.node.color = list(channel * 0.5 for channel in activity._bomb_image.node.color[:3]) + [1] activity._bomb_image.node.color = list(
channel * 0.5 for channel in activity._bomb_image.node.color[:3]) + [1]
def on_move_ud(activity,value):
activity.set_stick_image_position(activity,x=activity.stick_image_position_x,y=value) def on_move_ud(activity, value):
activity.set_stick_image_position(activity, x=activity.stick_image_position_x, y=value)
def on_move_lr(activity,value):
activity.set_stick_image_position(activity,x=value,y=activity.stick_image_position_y) def on_move_lr(activity, value):
activity.set_stick_image_position(activity, x=value, y=activity.stick_image_position_y)
def display(activity): def display(activity):
activity._jump_image.node.color = list(activity._jump_image.node.color[:3]) + [1] activity._jump_image.node.color = list(activity._jump_image.node.color[:3]) + [1]
@ -94,6 +102,8 @@ CONTROLS_UI_MAP = {
"UP_DOWN": ControlsUI.on_move_ud, "UP_DOWN": ControlsUI.on_move_ud,
"LEFT_RIGHT": ControlsUI.on_move_lr "LEFT_RIGHT": ControlsUI.on_move_lr
} }
class NewSpaz(bastd.actor.spaz.Spaz): class NewSpaz(bastd.actor.spaz.Spaz):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -113,6 +123,7 @@ class NewSpaz(bastd.actor.spaz.Spaz):
"RUN": self.on_run, "RUN": self.on_run,
} }
class NewPlayerSpaz(bastd.actor.playerspaz.PlayerSpaz): class NewPlayerSpaz(bastd.actor.playerspaz.PlayerSpaz):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -134,7 +145,6 @@ class NewPlayerSpaz(bastd.actor.playerspaz.PlayerSpaz):
self.mirror_spaz = [] self.mirror_spaz = []
self.source_player.in_replay = False self.source_player.in_replay = False
self.source_player.mirror_mode = False self.source_player.mirror_mode = False
def _handle_action(self, action, value: Optional[float] = None) -> None: def _handle_action(self, action, value: Optional[float] = None) -> None:
if self.source_player.sessionplayer in PLAYERS_STUNT_INFO: if self.source_player.sessionplayer in PLAYERS_STUNT_INFO:
@ -148,20 +158,17 @@ class NewPlayerSpaz(bastd.actor.playerspaz.PlayerSpaz):
elif self.source_player.in_replay: elif self.source_player.in_replay:
ui_activation = CONTROLS_UI_MAP.get(action) ui_activation = CONTROLS_UI_MAP.get(action)
if ui_activation: if ui_activation:
if action in ["UP_DOWN","LEFT_RIGHT"]: if action in ["UP_DOWN", "LEFT_RIGHT"]:
ui_activation(self.source_player.actor._activity(),value) ui_activation(self.source_player.actor._activity(), value)
else: else:
ui_activation(self.source_player.actor._activity()) ui_activation(self.source_player.actor._activity())
elif self.source_player.mirror_mode: elif self.source_player.mirror_mode:
for mspaz in self.mirror_spaz: for mspaz in self.mirror_spaz:
if mspaz and mspaz.node.exists(): if mspaz and mspaz.node.exists():
if action in ["UP_DOWN","LEFT_RIGHT","RUN"]: if action in ["UP_DOWN", "LEFT_RIGHT", "RUN"]:
mspaz.move_map[action](value) mspaz.move_map[action](value)
else: else:
mspaz.move_map[action]() mspaz.move_map[action]()
def on_move_up_down(self, value: float, *args, **kwargs) -> None: def on_move_up_down(self, value: float, *args, **kwargs) -> None:
self._handle_action("UP_DOWN", value) self._handle_action("UP_DOWN", value)
@ -228,10 +235,12 @@ def get_player_from_client_id(client_id, activity=None):
return player return player
raise ba.SessionPlayerNotFound() raise ba.SessionPlayerNotFound()
def mirror(clieid): def mirror(clieid):
player = get_player_from_client_id(clieid) player = get_player_from_client_id(clieid)
spawn_mirror_spaz(player) spawn_mirror_spaz(player)
def capture(player): def capture(player):
with ba.Context(player.actor._activity()): with ba.Context(player.actor._activity()):
player.recording_start_time = ba.time() player.recording_start_time = ba.time()
@ -277,15 +286,18 @@ def replay(player, stunt_name):
time_to_hide_controls = last_move_time + 1 time_to_hide_controls = last_move_time + 1
ba.timer(time_to_hide_controls, ba.Call(handle_player_replay_end, player)) ba.timer(time_to_hide_controls, ba.Call(handle_player_replay_end, player))
def spawn_mirror_spaz(player): def spawn_mirror_spaz(player):
player.mirror_mode = True player.mirror_mode = True
with ba.Context(player.actor._activity()): with ba.Context(player.actor._activity()):
bot=spaz.Spaz(player.color,player.highlight,character=player.character).autoretain() bot = spaz.Spaz(player.color, player.highlight, character=player.character).autoretain()
bot.handlemessage(ba.StandMessage((player.actor.node.position[0], player.actor.node.position[1], player.actor.node.position[2]+1), 93)) bot.handlemessage(ba.StandMessage(
(player.actor.node.position[0], player.actor.node.position[1], player.actor.node.position[2]+1), 93))
bot.node.name = player.actor.node.name bot.node.name = player.actor.node.name
bot.node.name_color = player.actor.node.name_color bot.node.name_color = player.actor.node.name_color
player.actor.mirror_spaz.append(bot) player.actor.mirror_spaz.append(bot)
def ghost(player, stunt_name): def ghost(player, stunt_name):
stunt_path = f"{os.path.join(BASE_STUNTS_DIRECTORY, stunt_name)}.json" stunt_path = f"{os.path.join(BASE_STUNTS_DIRECTORY, stunt_name)}.json"
if stunt_name in STUNT_CACHE: if stunt_name in STUNT_CACHE:
@ -299,11 +311,10 @@ def ghost(player, stunt_name):
ba.screenmessage(f"{stunt_name} doesn't exists") ba.screenmessage(f"{stunt_name} doesn't exists")
return return
player.in_replay = True player.in_replay = True
with ba.Context(player.actor._activity()): with ba.Context(player.actor._activity()):
bot=spaz.Spaz((1,0,0),character="Spaz").autoretain() bot = spaz.Spaz((1, 0, 0), character="Spaz").autoretain()
bot.handlemessage(ba.StandMessage(player.actor.node.position,93)) bot.handlemessage(ba.StandMessage(player.actor.node.position, 93))
give_ghost_power(bot) give_ghost_power(bot)
ControlsUI.display(player.actor._activity()) ControlsUI.display(player.actor._activity())
for move in stunt: for move in stunt:
@ -317,7 +328,7 @@ def ghost(player, stunt_name):
if ui_activation: if ui_activation:
ba.timer( ba.timer(
move["time"], move["time"],
ba.Call(ui_activation,player.actor._activity()) ba.Call(ui_activation, player.actor._activity())
) )
else: else:
ba.timer( ba.timer(
@ -329,34 +340,35 @@ def ghost(player, stunt_name):
if ui_activation: if ui_activation:
ba.timer( ba.timer(
move["time"], move["time"],
ba.Call(ui_activation,player.actor._activity(), move["move"]["value"] ) ba.Call(ui_activation, player.actor._activity(), move["move"]["value"])
) )
last_move_time = move["time"] last_move_time = move["time"]
time_to_hide_controls = last_move_time + 1 time_to_hide_controls = last_move_time + 1
ba.timer(time_to_hide_controls, ba.Call(handle_player_replay_end, player)) ba.timer(time_to_hide_controls, ba.Call(handle_player_replay_end, player))
ba.timer(time_to_hide_controls, ba.Call(bot.node.delete)) ba.timer(time_to_hide_controls, ba.Call(bot.node.delete))
def give_ghost_power(spaz): def give_ghost_power(spaz):
spaz.node.invincible = True spaz.node.invincible = True
shared = SharedObjects.get() shared = SharedObjects.get()
factory = SpazFactory.get() factory = SpazFactory.get()
ghost=ba.Material() ghost = ba.Material()
# smoothy hecks # smoothy hecks
ghost.add_actions( ghost.add_actions(
conditions=(('they_have_material', factory.spaz_material), 'or', conditions=(('they_have_material', factory.spaz_material), 'or',
('they_have_material', shared.player_material), 'or', ('they_have_material', shared.player_material), 'or',
('they_have_material', shared.attack_material), 'or', ('they_have_material', shared.attack_material), 'or',
('they_have_material', shared.pickup_material), 'or', ('they_have_material', shared.pickup_material), 'or',
('they_have_material', PowerupBoxFactory.get().powerup_accept_material)), ('they_have_material', PowerupBoxFactory.get().powerup_accept_material)),
actions=( actions=(
('modify_part_collision', 'collide', False), ('modify_part_collision', 'collide', False),
('modify_part_collision', 'physical', False) ('modify_part_collision', 'physical', False)
)) ))
mats=list(spaz.node.materials) mats = list(spaz.node.materials)
roller=list(spaz.node.roller_materials) roller = list(spaz.node.roller_materials)
ext=list(spaz.node.extras_material) ext = list(spaz.node.extras_material)
pick=list(spaz.node.pickup_materials) pick = list(spaz.node.pickup_materials)
punch=list(spaz.node.punch_materials) punch = list(spaz.node.punch_materials)
mats.append(ghost) mats.append(ghost)
roller.append(ghost) roller.append(ghost)
@ -364,13 +376,13 @@ def give_ghost_power(spaz):
pick.append(ghost) pick.append(ghost)
punch.append(ghost) punch.append(ghost)
spaz.node.materials=tuple(mats) spaz.node.materials = tuple(mats)
spaz.node.roller_materials=tuple(roller) spaz.node.roller_materials = tuple(roller)
spaz.node.extras_material=tuple(ext) spaz.node.extras_material = tuple(ext)
spaz.node.pickup_materials=tuple(pick) spaz.node.pickup_materials = tuple(pick)
spaz.node.punch_materials=tuple(pick) spaz.node.punch_materials = tuple(pick)
def new_chatmessage(msg): def new_chatmessage(msg):
if not msg.startswith("*"): if not msg.startswith("*"):
return original_chatmessage(msg) return original_chatmessage(msg)
@ -422,88 +434,90 @@ def new_chatmessage(msg):
spawn_mirror_spaz(player) spawn_mirror_spaz(player)
return original_chatmessage(msg) return original_chatmessage(msg)
def set_stick_image_position(self, x: float, y: float) -> None: def set_stick_image_position(self, x: float, y: float) -> None:
# Clamp this to a circle. # Clamp this to a circle.
len_squared = x * x + y * y len_squared = x * x + y * y
if len_squared > 1.0: if len_squared > 1.0:
length = math.sqrt(len_squared) length = math.sqrt(len_squared)
mult = 1.0 / length mult = 1.0 / length
x *= mult x *= mult
y *= mult y *= mult
self.stick_image_position_x = x
self.stick_image_position_y = y
offs = 50.0
assert self._scale is not None
p = [
self._stick_nub_position[0] + x * offs * 0.6,
self._stick_nub_position[1] + y * offs * 0.6
]
c = list(self._stick_nub_image_color)
if abs(x) > 0.1 or abs(y) > 0.1:
c[0] *= 2.0
c[1] *= 4.0
c[2] *= 2.0
assert self._stick_nub_image is not None
self._stick_nub_image.position = p
self._stick_nub_image.color = c
c = list(self._stick_base_image_color)
if abs(x) > 0.1 or abs(y) > 0.1:
c[0] *= 1.5
c[1] *= 1.5
c[2] *= 1.5
assert self._stick_base_image is not None
self._stick_base_image.color = c
self.stick_image_position_x = x
self.stick_image_position_y = y
offs = 50.0
assert self._scale is not None
p = [
self._stick_nub_position[0] + x * offs * 0.6,
self._stick_nub_position[1] + y * offs * 0.6
]
c = list(self._stick_nub_image_color)
if abs(x) > 0.1 or abs(y) > 0.1:
c[0] *= 2.0
c[1] *= 4.0
c[2] *= 2.0
assert self._stick_nub_image is not None
self._stick_nub_image.position = p
self._stick_nub_image.color = c
c = list(self._stick_base_image_color)
if abs(x) > 0.1 or abs(y) > 0.1:
c[0] *= 1.5
c[1] *= 1.5
c[2] *= 1.5
assert self._stick_base_image is not None
self._stick_base_image.color = c
def on_begin(self, *args, **kwargs) -> None: def on_begin(self, *args, **kwargs) -> None:
self._jump_image = Image( self._jump_image = Image(
ba.gettexture('buttonJump'), ba.gettexture('buttonJump'),
position=(385,160), position=(385, 160),
scale=(50,50), scale=(50, 50),
color=[0.1,0.45,0.1,0] color=[0.1, 0.45, 0.1, 0]
) )
self._pickup_image = Image( self._pickup_image = Image(
ba.gettexture('buttonPickUp'), ba.gettexture('buttonPickUp'),
position=(385,240), position=(385, 240),
scale=(50,50), scale=(50, 50),
color=[0,0.35,0,0] color=[0, 0.35, 0, 0]
) )
self._punch_image = Image( self._punch_image = Image(
ba.gettexture('buttonPunch'), ba.gettexture('buttonPunch'),
position=(345,200), position=(345, 200),
scale=(50,50), scale=(50, 50),
color=[0.45,0.45,0,0] color=[0.45, 0.45, 0, 0]
) )
self._bomb_image = Image( self._bomb_image = Image(
ba.gettexture('buttonBomb'), ba.gettexture('buttonBomb'),
position=(425,200), position=(425, 200),
scale=(50,50), scale=(50, 50),
color=[0.45,0.1,0.1,0] color=[0.45, 0.1, 0.1, 0]
) )
self.stick_image_position_x = self.stick_image_position_y = 0.0 self.stick_image_position_x = self.stick_image_position_y = 0.0
self._stick_base_position = p = (-328,200) self._stick_base_position = p = (-328, 200)
self._stick_base_image_color = c2 = (0.25, 0.25, 0.25, 1.0) self._stick_base_image_color = c2 = (0.25, 0.25, 0.25, 1.0)
self._stick_base_image = ba.newnode( self._stick_base_image = ba.newnode(
'image', 'image',
attrs={ attrs={
'texture': ba.gettexture('nub'), 'texture': ba.gettexture('nub'),
'absolute_scale': True, 'absolute_scale': True,
'vr_depth': -40, 'vr_depth': -40,
'position': p, 'position': p,
'scale': ( 220.0*0.6, 220.0*0.6), 'scale': (220.0*0.6, 220.0*0.6),
'color': c2 'color': c2
}) })
self._stick_nub_position = p = (-328, 200) self._stick_nub_position = p = (-328, 200)
self._stick_nub_image_color = c3 = (0.4, 0.4, 0.4, 1.0) self._stick_nub_image_color = c3 = (0.4, 0.4, 0.4, 1.0)
self._stick_nub_image = ba.newnode('image', self._stick_nub_image = ba.newnode('image',
attrs={ attrs={
'texture': ba.gettexture('nub'), 'texture': ba.gettexture('nub'),
'absolute_scale': True, 'absolute_scale': True,
'position': p, 'position': p,
'scale': (110*0.6, 110*0.66), 'scale': (110*0.6, 110*0.66),
'color': c3 'color': c3
}) })
self._stick_base_image.opacity = 0.0 self._stick_base_image.opacity = 0.0
self._stick_nub_image.opacity = 0.0 self._stick_nub_image.opacity = 0.0
self.set_stick_image_position = set_stick_image_position self.set_stick_image_position = set_stick_image_position
@ -520,8 +534,6 @@ class byHeySmoothy(ba.Plugin):
bastd.actor.spaz.Spaz = NewSpaz bastd.actor.spaz.Spaz = NewSpaz
# lets define a sample elimination game that can use super power of this plugin # lets define a sample elimination game that can use super power of this plugin
# ba_meta export game # ba_meta export game
@ -531,4 +543,4 @@ class BroEliminaition(EliminationGame):
def spawn_player(self, player) -> ba.Actor: def spawn_player(self, player) -> ba.Actor:
super().spawn_player(player) super().spawn_player(player)
spawn_mirror_spaz(player) spawn_mirror_spaz(player)