Ejemplo n.º 1
0
def factory(random_col: bool):
    act = _ba.get_foreground_host_activity()
    if not isinstance(act, GameActivity):
        return
    m = _ba.get_foreground_host_activity().map.get_def_bound_box(
        'area_of_interest_bounds')
    part1 = list(m)
    part2 = list(m)
    half = (m[0] + m[3]) / 2
    part1[3] = half
    part2[0] = half
    ba.timer(0.3, ba.Call(create_fly, part1, random_col))
    ba.timer(1, ba.Call(create_fly, part2, random_col))
    ba.timer(0.12, ba.Call(create_fly, part1, random_col))
    ba.timer(0.88, ba.Call(create_fly, part2, random_col))
    ba.timer(1.8, ba.Call(create_fly, part1, random_col))
    ba.timer(3.3, ba.Call(create_fly, part2, random_col))
    ba.timer(4.78, ba.Call(create_fly, part1, random_col))
    ba.timer(2, ba.Call(create_fly, part2, random_col))
    ba.timer(6.3, ba.Call(create_fly, part1, random_col))
    ba.timer(3.3, ba.Call(create_fly, part2, random_col))
    ba.timer(4.78, ba.Call(create_fly, part1, random_col))
    ba.timer(2, ba.Call(create_fly, part2, random_col))
    ba.timer(6.3, ba.Call(create_fly, part1, random_col))
    ba.timer(3.5, ba.Call(create_fly, part2, random_col))
    ba.timer(4.28, ba.Call(create_fly, part1, random_col))
    ba.timer(2.2, ba.Call(create_fly, part2, random_col))
    ba.timer(6.1, ba.Call(create_fly, part1, random_col))
Ejemplo n.º 2
0
def fly(arguments):

    if arguments == [] or arguments == ['']:
        return

    elif arguments[0] == 'all':

        activity = _ba.get_foreground_host_activity()

        for players in activity.players:
            if players.actor.node.fly != True:
                players.actor.node.fly = True
            else:
                players.actor.node.fly = False

    else:
        try:

            activity = _ba.get_foreground_host_activity()
            player = int(arguments[0])

            if activity.players[player].actor.node.fly != True:
                activity.players[player].actor.node.fly = True
            else:
                activity.players[player].actor.node.fly = False

        except:
            return
Ejemplo n.º 3
0
def creep(arguments):

    if arguments == [] or arguments == ['']:
        return

    elif arguments[0] == 'all':

        activity = _ba.get_foreground_host_activity()

        for players in activity.players:
            node = players.actor.node

            if node.head_model != None:
                node.head_model = None
                node.handlemessage(ba.PowerupMessage(poweruptype='punch'))
                node.handlemessage(ba.PowerupMessage(poweruptype='shield'))

    else:
        try:
            player = int(arguments[0])
            activity = _ba.get_foreground_host_activity()

            node = activity.players[player].actor.node

            if node.head_model != None:
                node.head_model = None
                node.handlemessage(ba.PowerupMessage(poweruptype='punch'))
                node.handlemessage(ba.PowerupMessage(poweruptype='shield'))
        except:
            return
Ejemplo n.º 4
0
def headless(arguments):

    if arguments == [] or arguments == ['']:
        return

    elif arguments[0] == 'all':

        activity = _ba.get_foreground_host_activity()

        for players in activity.players:

            node = players.actor.node
            if node.head_model != None:
                node.head_model = None
                node.style = 'cyborg'

    else:
        try:
            player = int(arguments[0])
            activity = _ba.get_foreground_host_activity()

            node = activity.players[player].actor.node

            if node.head_model != None:
                node.head_model = None
                node.style = 'cyborg'
        except:
            return
def end(arguments):

    if arguments == [] or arguments == ['']:

        try:
            with _ba.Context(_ba.get_foreground_host_activity()):
                _ba.get_foreground_host_activity().end_game()
        except:
            pass
Ejemplo n.º 6
0
        def _put_log() -> None:
            try:
                sessionname = str(_ba.get_foreground_host_session())
            except Exception:
                sessionname = 'unavailable'
            try:
                activityname = str(_ba.get_foreground_host_activity())
            except Exception:
                activityname = 'unavailable'

            info = {
                'log': _ba.getlog(),
                'version': app.version,
                'build': app.build_number,
                'userAgentString': app.user_agent_string,
                'session': sessionname,
                'activity': activityname,
                'fatal': 0,
                'userRanCommands': _ba.has_user_run_commands(),
                'time': _ba.time(TimeType.REAL),
                'userModded': _ba.has_user_mods(),
                'newsShow': _ba.get_news_show(),
            }

            def response(data: Any) -> None:
                # A non-None response means success; lets
                # take note that we don't need to report further
                # log info this run
                if data is not None:
                    app.log_have_new = False
                    _ba.mark_log_sent()

            master_server_post('bsLog', info, response)
Ejemplo n.º 7
0
    def pause(self) -> None:
        """Pause the game due to a user request or menu popping up.

        If there's a foreground host-activity that says it's pausable, tell it
        to pause ..we now no longer pause if there are connected clients.
        """
        activity: Optional[ba.Activity] = _ba.get_foreground_host_activity()
        if (activity is not None and activity.allow_pausing
                and not _ba.have_connected_clients()):
            from ba import _gameutils
            from ba._language import Lstr
            from ba._nodeactor import NodeActor

            # FIXME: Shouldn't be touching scene stuff here;
            #  should just pass the request on to the host-session.
            with _ba.Context(activity):
                globs = activity.globalsnode
                if not globs.paused:
                    _ba.playsound(_ba.getsound('refWhistle'))
                    globs.paused = True

                # FIXME: This should not be an attr on Actor.
                activity.paused_text = NodeActor(
                    _ba.newnode('text',
                                attrs={
                                    'text': Lstr(resource='pausedByHostText'),
                                    'client_only': True,
                                    'flatness': 1.0,
                                    'h_align': 'center'
                                }))
def handlemsg_all(msg):
    """Handle Spaz message for all players in activity"""

    activity = _ba.get_foreground_host_activity()

    for i in activity.players:
        i.actor.node.handlemessage(msg)
Ejemplo n.º 9
0
def getactivity(gameactivity: bool = False) -> Optional[Activity]:
    activity = get_foreground_host_activity()
    if activity:
        if (gameactivity and isinstance(activity.__class__, GameActivity)
                and not getattr(activity, 'has_ended', lambda: True)
            ()) or not gameactivity:
            return weakref.ref(activity)()
    return None
def god_mode(arguments, clientid):

    if arguments == [] or arguments == ['']:
        myself = clientid_to_myself(clientid)
        activity = _ba.get_foreground_host_activity()
        player = activity.players[myself].actor

        if player._punch_power_scale != 7:
            player._punch_power_scale = 7
            player.node.hockey = True
            player.node.invincible = True

        else:
            player._punch_power_scale = 1.2
            player.node.hockey = False
            player.node.invincible = False

    elif arguments[0] == 'all':

        activity = _ba.get_foreground_host_activity()

        for i in activity.players:
            if i.actor._punch_power_scale != 7:
                i.actor._punch_power_scale = 7
                i.actor.node.hockey = True
                i.actor.node.invincible = True
            else:
                i.actor._punch_power_scale = 1.2
                i.actor.node.hockey = False
                i.actor.node.invincible = False

    else:
        activity = _ba.get_foreground_host_activity()
        req_player = int(arguments[0])
        player = activity.players[req_player].actor

        if player._punch_power_scale != 7:
            player._punch_power_scale = 7
            player.node.hockey = True
            player.node.invincible = True

        else:
            player._punch_power_scale = 1.2
            player.node.hockey = False
            player.node.invincible = False
def rotate_camera():

    activity = _ba.get_foreground_host_activity()

    if activity.globalsnode.camera_mode != 'rotate':
        activity.globalsnode.camera_mode = 'rotate'

    else:
        activity.globalsnode.camera_mode == 'normal'
def pause():

    activity = _ba.get_foreground_host_activity()

    if activity.globalsnode.paused != True:
        activity.globalsnode.paused = True

    else:
        activity.globalsnode.paused = False
def slow_motion():

    activity = _ba.get_foreground_host_activity()

    if activity.globalsnode.slow_motion != True:
        activity.globalsnode.slow_motion = True

    else:
        activity.globalsnode.slow_motion = False
Ejemplo n.º 14
0
def new_end(self,
            results: Any = None,
            delay: float = 0.0,
            force: bool = False):
    """Runs when game is ended."""
    activity = _ba.get_foreground_host_activity()
    if isinstance(activity, CoopScoreScreen):
        team_balancer.checkToExitCoop()
    org_end(self, results, delay, force)
def super_punch(arguments, clientid):

    activity = _ba.get_foreground_host_activity()

    if arguments == [] or arguments == ['']:

        myself = clientid_to_myself(clientid)

        if activity.players[myself].actor._punch_power_scale != 15:
            activity.players[myself].actor._punch_power_scale = 15
            activity.players[myself].actor._punch_cooldown = 0
        else:
            activity.players[myself].actor._punch_power_scale = 1.2
            activity.players[myself].actor._punch_cooldown = 400

    elif arguments[0] == 'all':

        activity = _ba.get_foreground_host_activity()

        for i in activity.players:
            if i.actor._punch_power_scale != 15:
                i.actor._punch_power_scale = 15
                i.actor._punch_cooldown = 0
            else:
                i.actor._punch_power_scale = 1.2
                i.actor._punch_cooldown = 400

    else:
        try:
            activity = _ba.get_foreground_host_activity()
            req_player = int(arguments[0])

            if activity.players[req_player].actor._punch_power_scale != 15:
                activity.players[req_player].actor._punch_power_scale = 15
                activity.players[req_player].actor._punch_cooldown = 0
            else:
                activity.players[req_player].actor._punch_power_scale = 1.2
                activity.players[req_player].actor._punch_cooldown = 400
        except:
            return
Ejemplo n.º 16
0
def invi(arguments):

    if arguments == [] or arguments == ['']:
        return

    elif arguments[0] == 'all':

        activity = _ba.get_foreground_host_activity()

        for i in activity.players:
            body = i.actor.node
            if body.torso_model != None:
                body.head_model = None
                body.torso_model = None
                body.upper_arm_model = None
                body.forearm_model = None
                body.pelvis_model = None
                body.hand_model = None
                body.toes_model = None
                body.upper_leg_model = None
                body.lower_leg_model = None
                body.style = 'cyborg'
    else:

        player = int(arguments[0])
        activity = _ba.get_foreground_host_activity()

        body = activity.players[player].actor.node

        if body.torso_model != None:
            body.head_model = None
            body.torso_model = None
            body.upper_arm_model = None
            body.forearm_model = None
            body.pelvis_model = None
            body.hand_model = None
            body.toes_model = None
            body.upper_leg_model = None
            body.lower_leg_model = None
            body.style = 'cyborg'
Ejemplo n.º 17
0
def list_callback(playerdata: PlayerData, args):
    client_ids = [
        (i['players'][0]['name_full'] if i['players'] else i['displayString'],
         str(i['client_id'])) for i in _ba.get_game_roster()
    ]

    chatmessage(get_locale('player_ids_text'))
    activity = _ba.get_foreground_host_activity()
    for i in range(len(activity.players)):
        p = activity.players[i]
        chatmessage('{} | {} | {}'.format(
            i,
            p.getname().ljust(15), p.sessionplayer.inputdevice.client_id))
    chatmessage(get_locale('dividing_strip_text'))
Ejemplo n.º 18
0
        def _new_hp():
            if not self.node:
                return
            hp = ba.newnode('math',
                            owner=self.node,
                            attrs={
                                'input1': (0, 0.65, 0),
                                'operation': 'add'
                            })
            self.node.connectattr('torso_position', hp, 'input2')
            self.hp = ba.newnode('text',
                                 owner=self.node,
                                 attrs={
                                     'text': '',
                                     'in_world': True,
                                     'shadow': 1.0,
                                     'flatness': 1.0,
                                     'scale': 0.008,
                                     'h_align': 'center',
                                 })
            hp.connectattr('output', self.hp, 'position')
            #ba.animate(self.hp, 'scale', {0:0, 0.2:0, 0.6:0.018, 0.8:0.012})
            activity = get_foreground_host_activity()
            if don.tint:
                activity.globalsnode.tint = (tintColor)

            def _update():
                if not self.hp:
                    return
                if self.shield:
                    hptext = int(
                        (self.shield_hitpoints / self.shield_hitpoints_max) *
                        100)
                else:
                    hptext = int(self.hitpoints * 0.1)
                if hptext >= 75:
                    color = (1, 1, 1)
                elif hptext >= 50:
                    color = (1, 1, 1)
                elif hptext >= 25:
                    color = (1, 1, 1)
                else:
                    color = (1, 1, 1)
                self.hp.text = 'HP:' + str(hptext)
                self.hp.color = (0.2, 1.0, 0.8) if self.shield else color

            ba.timer(0.05, _update, repeat=True)
def dv(arguments):

    activity = _ba.get_foreground_host_activity()

    if arguments == [] or arguments == ['']:

        if activity.globalsnode.tint != (1, 1, 1):
            activity.globalsnode.tint = (1, 1, 1)
        else:
            #will fix this soon
            pass

    elif arguments[0] == 'off':
        if activity.globalsnode.tint != (1, 1, 1):
            return
        else:
            pass
Ejemplo n.º 20
0
def display_achievement_banner(achname: str) -> None:
    """Display a completion banner for an achievement.

    Used for server-driven achievements.
    """
    try:
        # FIXME: Need to get these using the UI context or some other
        #  purely local context somehow instead of trying to inject these
        #  into whatever activity happens to be active
        #  (since that won't work while in client mode).
        activity = _ba.get_foreground_host_activity()
        if activity is not None:
            with _ba.Context(activity):
                get_achievement(achname).announce_completion()
    except Exception:
        from ba import _error
        _error.print_exception('error showing server ach')
def sleep(arguments, clientid):

    activity = _ba.get_foreground_host_activity()

    if arguments == [] or arguments == ['']:
        myself = clientid_to_myself(clientid)
        activity.players[myself].actor.node.handlemessage('knockout', 8000)

    elif arguments[0] == 'all':
        for i in activity.players:
            i.actor.node.handlemessage('knockout', 8000)
    else:
        try:
            req_player = int(arguments[0])
            activity.players[req_player].actor.node.handlemessage(
                'knockout', 8000)
        except:
            return
Ejemplo n.º 22
0
def night_mode() -> None:
    """Checks the time and enables night mode."""

    if settings['autoNightMode']['enable']:

        start = datetime.strptime(settings['autoNightMode']['startTime'],
                                  "%H:%M")
        end = datetime.strptime(settings['autoNightMode']['endTime'], "%H:%M")
        now = datetime.now()

        if now.time() > start.time() or now.time() < end.time():
            activity = _ba.get_foreground_host_activity()

            activity.globalsnode.tint = (0.5, 0.7, 1.0)

            if settings['autoNightMode']['fireflies']:
                fire_flies.factory(
                    settings['autoNightMode']["fireflies_random_color"])
Ejemplo n.º 23
0
    def resume(self) -> None:
        """Resume the game due to a user request or menu closing.

        If there's a foreground host-activity that's currently paused, tell it
        to resume.
        """

        # FIXME: Shouldn't be touching scene stuff here;
        #  should just pass the request on to the host-session.
        activity = _ba.get_foreground_host_activity()
        if activity is not None:
            with _ba.Context(activity):
                globs = activity.globalsnode
                if globs.paused:
                    _ba.playsound(_ba.getsound('refWhistle'))
                    globs.paused = False

                    # FIXME: This should not be an actor attr.
                    activity.paused_text = None
Ejemplo n.º 24
0
def _notify_handlers(cmd: str, playerdata: PlayerData):
    args = cmd.split()
    for handler in _handlers:
        if args[0] in handler.commands and playerdata.status in handler.statuses:
            if _lastrun.get(playerdata.id, {}).get(
                    args[0], 0) + handler.statuses[playerdata.status] < int(
                        datetime.now().timestamp()):
                try:
                    with ba.Context(get_foreground_host_activity()):
                        handler.callback(playerdata, args)
                except Exception:
                    ba.print_exception(
                        f'Error while processing command {cmd} from {playerdata.id}'
                    )
                    chatmessage(get_locale('command_some_error'))
                lastrun = _lastrun.get(playerdata.id, {})
                lastrun[args[0]] = int(datetime.now().timestamp())
                _lastrun[playerdata.id] = lastrun
            else:
                chatmessage(get_locale('commands_too_many'))
def handlemsg(client, msg):
    """Handles Spaz Msg For Single Player"""

    activity = _ba.get_foreground_host_activity()
    activity.players[client].actor.node.handlemessage(msg)