From b459ec7c8a2d9c32d1818dc8c89549c5c6373b34 Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 Date: Sat, 9 May 2026 10:28:37 +0300 Subject: [PATCH 01/18] Added glowing_profiles, Simpleredefiner --- plugins/utilities/glowing_profiles.py | 142 ++++++++++++++++++++++++++ plugins/utilities/simpleredefiner.py | 102 ++++++++++++++++++ 2 files changed, 244 insertions(+) create mode 100644 plugins/utilities/glowing_profiles.py create mode 100644 plugins/utilities/simpleredefiner.py diff --git a/plugins/utilities/glowing_profiles.py b/plugins/utilities/glowing_profiles.py new file mode 100644 index 00000000..bf39f048 --- /dev/null +++ b/plugins/utilities/glowing_profiles.py @@ -0,0 +1,142 @@ +# ba_meta require api 9 +import babase +import _babase +from pathlib import Path +import bauiv1 as bui + +import bascenev1 as bs + +from simpleredefiner import redefine_flag, redefine_class_methods, RedefineFlag + +plugman = dict( + plugin_name="glowing_profiles", + description="This plugin gives your profile glowlight, just like on some servers, but only offline. Dependences: simpleredefiner", + external_url="https://m.youtube.com/watch?v=Jb_dKz99rhY", + authors=[ + {"name": "andrejkuroglo8", "email": "andrejkuroglo8@gmail.com", "discord": "andrewku"}, + ], + version="1.0.0", +) + +file_dependence=Path("simpleredefiner.py") + +def get_locale(*args): + return "Error" + + +@redefine_class_methods(bs.Chooser) +class Chooser: + _redefine_methods = ('_gcinit', '_get_glowing_colors', 'update_from_profile', + '_getname') + + def _gcinit(self): + if hasattr(self, '_gcinit_done'): + return + self.glow_dict = {} + self._markers = ('"', "'", '^', '%', ';', '`') + self._get_glowing_colors() + self._gcinit_done = True + + @redefine_flag(RedefineFlag.REDEFINE) + def _get_glowing_colors(self): + """Search glowing code among profiles.""" + try: + should_del = [] + for i in self._profilenames: + for m in self._markers: + if i.startswith(m + ','): + code = i.split(',') + self.glow_dict[code[0]] = ( + float(code[1]), + float(code[2]), + int(code[3]), + int(code[4])) + # should_del.append(i) + for i in should_del: + self._profilenames.remove(i) + except Exception as err: + print(err) + ba.screenmessage( + get_locale('init_glowing_code_error'), + color=(1, 0, 0), + clients=[self._player.get_input_device().client_id], + transient=True) + + @redefine_flag(RedefineFlag.DECORATE_ADVANCED) + def _getname(self, full=True, old_function=None): + name = old_function(self, full) + for m in self._markers: + name = name.replace(m, '') + return name + + @redefine_flag(RedefineFlag.DECORATE_ADVANCED) + def update_from_profile(self, old_function): + self._gcinit() + from bascenev1 import _profile + try: + self._profilename = self._profilenames[self._profileindex] + character = self._profiles[self._profilename]['character'] + + if self._profilename[0] in self.glow_dict: + if (character not in self._character_names + and character in _ba.app.spaz_appearances): + self._character_names.append(character) + self._character_index = self._character_names.index(character) + + player_glowing_dict = self.glow_dict[self._profilename[0]] + color_marker = player_glowing_dict[0] + color_marker = max(-999.0, min(color_marker, 50.0)) + + highlight_marker = float(player_glowing_dict[1]) + highlight_marker = max(-999.0, min(highlight_marker, 50.0)) + + stabilize_color = int(player_glowing_dict[2]) > 0 + stabilize_highlight = int(player_glowing_dict[3]) > 0 + self._color, self._highlight = \ + _profile.get_player_profile_colors( + self._profilename, + profiles=self._profiles) + + if stabilize_color: + m = max(self._color) + self._color = list(self._color) + for i in (0, 1, 2): + if self._color[i] == m: + self._color[i] = self._color[i] * color_marker + self._color = tuple(self._color) + else: + self._color = ( + self._color[0] * color_marker, + self._color[1] * color_marker, + self._color[2] * color_marker) + + if not stabilize_highlight: + self._highlight = ( + self._highlight[0] * highlight_marker, + self._highlight[1] * highlight_marker, + self._highlight[2] * highlight_marker) + else: + m = max(self._highlight) + self._highlight = list(self._highlight) + for i in (0, 1, 2): + if self._highlight[i] == m: + self._highlight[i] = \ + self._highlight[i] * highlight_marker + self._highlight = tuple(self._highlight) + else: + old_function(self) + except KeyError: + self.character_index = self._random_character_index + self._color = self._random_color + self._highlight = self._random_highlight + + self._update_icon() + self._update_text() + +# ba_meta export babase.Plugin +class Glowing(babase.Plugin): + def __init__(self): + if file_path.exists(): + pass + else: + babase.screenmessage(f"File {file_dependence} not installed. Please, install!") \ No newline at end of file diff --git a/plugins/utilities/simpleredefiner.py b/plugins/utilities/simpleredefiner.py new file mode 100644 index 00000000..3da2982f --- /dev/null +++ b/plugins/utilities/simpleredefiner.py @@ -0,0 +1,102 @@ +# ba_meta require api 9 +from __future__ import annotations + +from typing import TYPE_CHECKING + +from types import FunctionType +import enum +import babase + +if TYPE_CHECKING: + from typing import Type, Callable, Any, Tuple + +plugman = dict( + plugin_name="simpleredefiner", + description="Plugin redefine classes and methods, when it is addressed", + external_url="", + authors=[ + {"name": "andrejkuroglo8", "email": "andrejkuroglo8@gmail.com", "discord": "andrewku"}, + ], + version="1.0.0", +) + +def redefine_method(dst: Tuple[Any, str], src: Tuple[Any, str]) -> None: + if hasattr(getattr(*src), '__redefine_type') and getattr(*src).__redefine_type in ( + RedefineFlag.DECORATE_PRE, RedefineFlag.DECORATE_AFTER, RedefineFlag.DECORATE_ADVANCED): + new = getattr(*src) + old = getattr(*dst) + func: Callable + if getattr(*src).__redefine_type == RedefineFlag.DECORATE_AFTER: + def func(*args, **kwargs): + returned = old(*args, **kwargs) + return new(*args, **kwargs, returned=returned) + elif getattr(*src).__redefine_type == RedefineFlag.DECORATE_PRE: + def func(*args, **kwargs): + new(*args, **kwargs) + return old(*args, **kwargs) + else: + def func(*args, **kwargs): + return new(*args, **kwargs, old_function=old) + + setattr(*dst, func) + else: + setattr(*dst, getattr(*src)) + + # Fucking super()! + # dst.__code__ = CodeType( + # src.__code__.co_argcount, + # src.__code__.co_posonlyargcount, + # src.__code__.co_kwonlyargcount, + # src.__code__.co_nlocals, + # src.__code__.co_stacksize, + # src.__code__.co_flags, + # src.__code__.co_code, + # src.__code__.co_consts, + # src.__code__.co_names, + # src.__code__.co_varnames, + # src.__code__.co_filename, + # dst.__code__.co_name, + # src.__code__.co_firstlineno, + # src.__code__.co_lnotab, + # dst.__code__.co_freevars, + # dst.__code__.co_cellvars) + + +def redefine_class_methods(orig_cls: Type[object]) -> Callable[[Any], None]: + """Returns decorator that redefines all class methods + + Parameters: + orig_cls (Type[object]): class that will redefined""" + + def decorator(cls) -> None: + # for method in filter(lambda x: isinstance(getattr(cls, x), FunctionType), dir(cls)): + for method in cls._redefine_methods: + if hasattr(orig_cls, method): + redefine_method((orig_cls, method), (cls, method)) + else: + setattr(orig_cls, method, getattr(cls, method)) + # setattr(getattr(orig_cls, 'self'), '__class__', getattr(cls, method)) # Fucking super()!!!! + + return decorator + + +class RedefineFlag(enum.Enum): + REDEFINE = 0 + DECORATE_AFTER = 1 + DECORATE_PRE = 2 + DECORATE_ADVANCED = 3 + DECORATE = DECORATE_AFTER + + +def redefine_flag(*flags: RedefineFlag) -> Callable[[Callable], Callable]: + def decorator(func: Callable) -> Callable: + for flag in flags: + if flag in (RedefineFlag.DECORATE_AFTER, RedefineFlag.REDEFINE, RedefineFlag.DECORATE_PRE, + RedefineFlag.DECORATE_ADVANCED): + func.__redefine_type = flag + return func + + return decorator +# ba_meta export babase.Plugin +class Simpleredefiner(babase.Plugin): + pass From 66ccfec2e8182d08f8ff7a2b68ce66c171e3c32e Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 <176418899+andrejkuroglo8@users.noreply.github.com> Date: Sat, 9 May 2026 08:05:19 +0000 Subject: [PATCH 02/18] [ci] apply-plugin-metadata-and-formatting --- plugins/utilities.json | 28 +++++++++++++++++++++++++++ plugins/utilities/glowing_profiles.py | 15 ++++++++------ plugins/utilities/simpleredefiner.py | 5 ++++- 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/plugins/utilities.json b/plugins/utilities.json index 036bc89b..5cc1ca73 100644 --- a/plugins/utilities.json +++ b/plugins/utilities.json @@ -2569,6 +2569,34 @@ "md5sum": "487c0520dc833f15942941e0dbc82f1e" } } + }, + "glowing_profiles": { + "description": "This plugin gives your profile glowlight, just like on some servers, but only offline. Dependences: simpleredefiner", + "external_url": "https://m.youtube.com/watch?v=Jb_dKz99rhY", + "authors": [ + { + "name": "andrejkuroglo8", + "email": "andrejkuroglo8@gmail.com", + "discord": "andrewku" + } + ], + "versions": { + "1.0.0": null + } + }, + "simpleredefiner": { + "description": "Plugin redefine classes and methods, when it is addressed", + "external_url": "", + "authors": [ + { + "name": "andrejkuroglo8", + "email": "andrejkuroglo8@gmail.com", + "discord": "andrewku" + } + ], + "versions": { + "1.0.0": null + } } } } \ No newline at end of file diff --git a/plugins/utilities/glowing_profiles.py b/plugins/utilities/glowing_profiles.py index bf39f048..19038ee9 100644 --- a/plugins/utilities/glowing_profiles.py +++ b/plugins/utilities/glowing_profiles.py @@ -18,7 +18,8 @@ version="1.0.0", ) -file_dependence=Path("simpleredefiner.py") +file_dependence = Path("simpleredefiner.py") + def get_locale(*args): return "Error" @@ -134,9 +135,11 @@ def update_from_profile(self, old_function): self._update_text() # ba_meta export babase.Plugin + + class Glowing(babase.Plugin): - def __init__(self): - if file_path.exists(): - pass - else: - babase.screenmessage(f"File {file_dependence} not installed. Please, install!") \ No newline at end of file + def __init__(self): + if file_path.exists(): + pass + else: + babase.screenmessage(f"File {file_dependence} not installed. Please, install!") diff --git a/plugins/utilities/simpleredefiner.py b/plugins/utilities/simpleredefiner.py index 3da2982f..a5af958d 100644 --- a/plugins/utilities/simpleredefiner.py +++ b/plugins/utilities/simpleredefiner.py @@ -20,6 +20,7 @@ version="1.0.0", ) + def redefine_method(dst: Tuple[Any, str], src: Tuple[Any, str]) -> None: if hasattr(getattr(*src), '__redefine_type') and getattr(*src).__redefine_type in ( RedefineFlag.DECORATE_PRE, RedefineFlag.DECORATE_AFTER, RedefineFlag.DECORATE_ADVANCED): @@ -98,5 +99,7 @@ def decorator(func: Callable) -> Callable: return decorator # ba_meta export babase.Plugin + + class Simpleredefiner(babase.Plugin): - pass + pass From 94682ad41a3328177decfcdaa98b48e20a621c66 Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 <176418899+andrejkuroglo8@users.noreply.github.com> Date: Sat, 9 May 2026 08:05:20 +0000 Subject: [PATCH 03/18] [ci] apply-version-metadata --- plugins/utilities.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/utilities.json b/plugins/utilities.json index 5cc1ca73..08f15bde 100644 --- a/plugins/utilities.json +++ b/plugins/utilities.json @@ -2581,7 +2581,12 @@ } ], "versions": { - "1.0.0": null + "1.0.0": { + "api_version": 9, + "commit_sha": "66ccfec", + "released_on": "09-05-2026", + "md5sum": "faa0c022fb4f73938022e27832100567" + } } }, "simpleredefiner": { @@ -2595,7 +2600,12 @@ } ], "versions": { - "1.0.0": null + "1.0.0": { + "api_version": 9, + "commit_sha": "66ccfec", + "released_on": "09-05-2026", + "md5sum": "4119c3097882cf2470b23f0cdcbef77c" + } } } } From 18123ab8f7567203673043b58837c6abc369284a Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 Date: Sat, 9 May 2026 11:22:08 +0300 Subject: [PATCH 04/18] Update glowing_profiles.py Fixing minor bugs and removing unnecessary modules --- plugins/utilities/glowing_profiles.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/plugins/utilities/glowing_profiles.py b/plugins/utilities/glowing_profiles.py index 19038ee9..34b94f0f 100644 --- a/plugins/utilities/glowing_profiles.py +++ b/plugins/utilities/glowing_profiles.py @@ -2,8 +2,6 @@ import babase import _babase from pathlib import Path -import bauiv1 as bui - import bascenev1 as bs from simpleredefiner import redefine_flag, redefine_class_methods, RedefineFlag @@ -139,7 +137,7 @@ def update_from_profile(self, old_function): class Glowing(babase.Plugin): def __init__(self): - if file_path.exists(): + if file_dependence.exists(): pass else: babase.screenmessage(f"File {file_dependence} not installed. Please, install!") From b6c9c755e5ec477a02d70fb431669918f129f7c8 Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 Date: Sat, 9 May 2026 11:26:00 +0300 Subject: [PATCH 05/18] Update glowing_profiles.py --- plugins/utilities/glowing_profiles.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/utilities/glowing_profiles.py b/plugins/utilities/glowing_profiles.py index 34b94f0f..91502da6 100644 --- a/plugins/utilities/glowing_profiles.py +++ b/plugins/utilities/glowing_profiles.py @@ -13,7 +13,7 @@ authors=[ {"name": "andrejkuroglo8", "email": "andrejkuroglo8@gmail.com", "discord": "andrewku"}, ], - version="1.0.0", + version="1.0.1", ) file_dependence = Path("simpleredefiner.py") From 7a491b4ab3880761eabf936d487310790c07a95b Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 Date: Sat, 9 May 2026 11:29:47 +0300 Subject: [PATCH 06/18] Update glowing_profiles.py --- plugins/utilities/glowing_profiles.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/utilities/glowing_profiles.py b/plugins/utilities/glowing_profiles.py index 91502da6..34b94f0f 100644 --- a/plugins/utilities/glowing_profiles.py +++ b/plugins/utilities/glowing_profiles.py @@ -13,7 +13,7 @@ authors=[ {"name": "andrejkuroglo8", "email": "andrejkuroglo8@gmail.com", "discord": "andrewku"}, ], - version="1.0.1", + version="1.0.0", ) file_dependence = Path("simpleredefiner.py") From 6af8338b72c2188e4f46225097058c4b09e613c1 Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 Date: Sat, 9 May 2026 11:43:48 +0300 Subject: [PATCH 07/18] Update utilities.json --- plugins/utilities.json | 40 +--------------------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/plugins/utilities.json b/plugins/utilities.json index 08f15bde..8d90570a 100644 --- a/plugins/utilities.json +++ b/plugins/utilities.json @@ -2569,44 +2569,6 @@ "md5sum": "487c0520dc833f15942941e0dbc82f1e" } } - }, - "glowing_profiles": { - "description": "This plugin gives your profile glowlight, just like on some servers, but only offline. Dependences: simpleredefiner", - "external_url": "https://m.youtube.com/watch?v=Jb_dKz99rhY", - "authors": [ - { - "name": "andrejkuroglo8", - "email": "andrejkuroglo8@gmail.com", - "discord": "andrewku" - } - ], - "versions": { - "1.0.0": { - "api_version": 9, - "commit_sha": "66ccfec", - "released_on": "09-05-2026", - "md5sum": "faa0c022fb4f73938022e27832100567" - } - } - }, - "simpleredefiner": { - "description": "Plugin redefine classes and methods, when it is addressed", - "external_url": "", - "authors": [ - { - "name": "andrejkuroglo8", - "email": "andrejkuroglo8@gmail.com", - "discord": "andrewku" - } - ], - "versions": { - "1.0.0": { - "api_version": 9, - "commit_sha": "66ccfec", - "released_on": "09-05-2026", - "md5sum": "4119c3097882cf2470b23f0cdcbef77c" - } - } } } -} \ No newline at end of file +} From 780878757437ff64cec92d36699b524458017dc3 Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 <176418899+andrejkuroglo8@users.noreply.github.com> Date: Sat, 9 May 2026 08:44:14 +0000 Subject: [PATCH 08/18] [ci] apply-plugin-metadata-and-formatting --- plugins/utilities.json | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/plugins/utilities.json b/plugins/utilities.json index 8d90570a..5cc1ca73 100644 --- a/plugins/utilities.json +++ b/plugins/utilities.json @@ -2569,6 +2569,34 @@ "md5sum": "487c0520dc833f15942941e0dbc82f1e" } } + }, + "glowing_profiles": { + "description": "This plugin gives your profile glowlight, just like on some servers, but only offline. Dependences: simpleredefiner", + "external_url": "https://m.youtube.com/watch?v=Jb_dKz99rhY", + "authors": [ + { + "name": "andrejkuroglo8", + "email": "andrejkuroglo8@gmail.com", + "discord": "andrewku" + } + ], + "versions": { + "1.0.0": null + } + }, + "simpleredefiner": { + "description": "Plugin redefine classes and methods, when it is addressed", + "external_url": "", + "authors": [ + { + "name": "andrejkuroglo8", + "email": "andrejkuroglo8@gmail.com", + "discord": "andrewku" + } + ], + "versions": { + "1.0.0": null + } } } -} +} \ No newline at end of file From eead1f3c831ef97e07de6119421c8cd868ddad5d Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 <176418899+andrejkuroglo8@users.noreply.github.com> Date: Sat, 9 May 2026 08:44:16 +0000 Subject: [PATCH 09/18] [ci] apply-version-metadata --- plugins/utilities.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/utilities.json b/plugins/utilities.json index 5cc1ca73..127045be 100644 --- a/plugins/utilities.json +++ b/plugins/utilities.json @@ -2581,7 +2581,12 @@ } ], "versions": { - "1.0.0": null + "1.0.0": { + "api_version": 9, + "commit_sha": "7808787", + "released_on": "09-05-2026", + "md5sum": "39ff3c68f7f749fdb3a78e01555e468e" + } } }, "simpleredefiner": { @@ -2595,7 +2600,12 @@ } ], "versions": { - "1.0.0": null + "1.0.0": { + "api_version": 9, + "commit_sha": "7808787", + "released_on": "09-05-2026", + "md5sum": "4119c3097882cf2470b23f0cdcbef77c" + } } } } From 8271fdf19282b17af505a7f44e7198e36a17646b Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 Date: Sun, 10 May 2026 13:49:43 +0300 Subject: [PATCH 10/18] Update utilities.json --- plugins/utilities.json | 40 +--------------------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/plugins/utilities.json b/plugins/utilities.json index 127045be..8d90570a 100644 --- a/plugins/utilities.json +++ b/plugins/utilities.json @@ -2569,44 +2569,6 @@ "md5sum": "487c0520dc833f15942941e0dbc82f1e" } } - }, - "glowing_profiles": { - "description": "This plugin gives your profile glowlight, just like on some servers, but only offline. Dependences: simpleredefiner", - "external_url": "https://m.youtube.com/watch?v=Jb_dKz99rhY", - "authors": [ - { - "name": "andrejkuroglo8", - "email": "andrejkuroglo8@gmail.com", - "discord": "andrewku" - } - ], - "versions": { - "1.0.0": { - "api_version": 9, - "commit_sha": "7808787", - "released_on": "09-05-2026", - "md5sum": "39ff3c68f7f749fdb3a78e01555e468e" - } - } - }, - "simpleredefiner": { - "description": "Plugin redefine classes and methods, when it is addressed", - "external_url": "", - "authors": [ - { - "name": "andrejkuroglo8", - "email": "andrejkuroglo8@gmail.com", - "discord": "andrewku" - } - ], - "versions": { - "1.0.0": { - "api_version": 9, - "commit_sha": "7808787", - "released_on": "09-05-2026", - "md5sum": "4119c3097882cf2470b23f0cdcbef77c" - } - } } } -} \ No newline at end of file +} From d5cf26bff045532d4d3c961d01770020f2a9b493 Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 <176418899+andrejkuroglo8@users.noreply.github.com> Date: Sun, 10 May 2026 10:50:11 +0000 Subject: [PATCH 11/18] [ci] apply-plugin-metadata-and-formatting --- plugins/utilities.json | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/plugins/utilities.json b/plugins/utilities.json index 8d90570a..5cc1ca73 100644 --- a/plugins/utilities.json +++ b/plugins/utilities.json @@ -2569,6 +2569,34 @@ "md5sum": "487c0520dc833f15942941e0dbc82f1e" } } + }, + "glowing_profiles": { + "description": "This plugin gives your profile glowlight, just like on some servers, but only offline. Dependences: simpleredefiner", + "external_url": "https://m.youtube.com/watch?v=Jb_dKz99rhY", + "authors": [ + { + "name": "andrejkuroglo8", + "email": "andrejkuroglo8@gmail.com", + "discord": "andrewku" + } + ], + "versions": { + "1.0.0": null + } + }, + "simpleredefiner": { + "description": "Plugin redefine classes and methods, when it is addressed", + "external_url": "", + "authors": [ + { + "name": "andrejkuroglo8", + "email": "andrejkuroglo8@gmail.com", + "discord": "andrewku" + } + ], + "versions": { + "1.0.0": null + } } } -} +} \ No newline at end of file From 8da091ccc505af9174f5759f7a7f0d987575c79d Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 <176418899+andrejkuroglo8@users.noreply.github.com> Date: Sun, 10 May 2026 10:50:12 +0000 Subject: [PATCH 12/18] [ci] apply-version-metadata --- plugins/utilities.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/utilities.json b/plugins/utilities.json index 5cc1ca73..110a18f3 100644 --- a/plugins/utilities.json +++ b/plugins/utilities.json @@ -2581,7 +2581,12 @@ } ], "versions": { - "1.0.0": null + "1.0.0": { + "api_version": 9, + "commit_sha": "d5cf26b", + "released_on": "10-05-2026", + "md5sum": "39ff3c68f7f749fdb3a78e01555e468e" + } } }, "simpleredefiner": { @@ -2595,7 +2600,12 @@ } ], "versions": { - "1.0.0": null + "1.0.0": { + "api_version": 9, + "commit_sha": "d5cf26b", + "released_on": "10-05-2026", + "md5sum": "4119c3097882cf2470b23f0cdcbef77c" + } } } } From d92836dee5e291f9b74da1ef7bdaef056fee15b9 Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 Date: Sun, 10 May 2026 13:51:55 +0300 Subject: [PATCH 13/18] Delete plugins/utilities/glowing_profiles.py --- plugins/utilities/glowing_profiles.py | 143 -------------------------- 1 file changed, 143 deletions(-) delete mode 100644 plugins/utilities/glowing_profiles.py diff --git a/plugins/utilities/glowing_profiles.py b/plugins/utilities/glowing_profiles.py deleted file mode 100644 index 34b94f0f..00000000 --- a/plugins/utilities/glowing_profiles.py +++ /dev/null @@ -1,143 +0,0 @@ -# ba_meta require api 9 -import babase -import _babase -from pathlib import Path -import bascenev1 as bs - -from simpleredefiner import redefine_flag, redefine_class_methods, RedefineFlag - -plugman = dict( - plugin_name="glowing_profiles", - description="This plugin gives your profile glowlight, just like on some servers, but only offline. Dependences: simpleredefiner", - external_url="https://m.youtube.com/watch?v=Jb_dKz99rhY", - authors=[ - {"name": "andrejkuroglo8", "email": "andrejkuroglo8@gmail.com", "discord": "andrewku"}, - ], - version="1.0.0", -) - -file_dependence = Path("simpleredefiner.py") - - -def get_locale(*args): - return "Error" - - -@redefine_class_methods(bs.Chooser) -class Chooser: - _redefine_methods = ('_gcinit', '_get_glowing_colors', 'update_from_profile', - '_getname') - - def _gcinit(self): - if hasattr(self, '_gcinit_done'): - return - self.glow_dict = {} - self._markers = ('"', "'", '^', '%', ';', '`') - self._get_glowing_colors() - self._gcinit_done = True - - @redefine_flag(RedefineFlag.REDEFINE) - def _get_glowing_colors(self): - """Search glowing code among profiles.""" - try: - should_del = [] - for i in self._profilenames: - for m in self._markers: - if i.startswith(m + ','): - code = i.split(',') - self.glow_dict[code[0]] = ( - float(code[1]), - float(code[2]), - int(code[3]), - int(code[4])) - # should_del.append(i) - for i in should_del: - self._profilenames.remove(i) - except Exception as err: - print(err) - ba.screenmessage( - get_locale('init_glowing_code_error'), - color=(1, 0, 0), - clients=[self._player.get_input_device().client_id], - transient=True) - - @redefine_flag(RedefineFlag.DECORATE_ADVANCED) - def _getname(self, full=True, old_function=None): - name = old_function(self, full) - for m in self._markers: - name = name.replace(m, '') - return name - - @redefine_flag(RedefineFlag.DECORATE_ADVANCED) - def update_from_profile(self, old_function): - self._gcinit() - from bascenev1 import _profile - try: - self._profilename = self._profilenames[self._profileindex] - character = self._profiles[self._profilename]['character'] - - if self._profilename[0] in self.glow_dict: - if (character not in self._character_names - and character in _ba.app.spaz_appearances): - self._character_names.append(character) - self._character_index = self._character_names.index(character) - - player_glowing_dict = self.glow_dict[self._profilename[0]] - color_marker = player_glowing_dict[0] - color_marker = max(-999.0, min(color_marker, 50.0)) - - highlight_marker = float(player_glowing_dict[1]) - highlight_marker = max(-999.0, min(highlight_marker, 50.0)) - - stabilize_color = int(player_glowing_dict[2]) > 0 - stabilize_highlight = int(player_glowing_dict[3]) > 0 - self._color, self._highlight = \ - _profile.get_player_profile_colors( - self._profilename, - profiles=self._profiles) - - if stabilize_color: - m = max(self._color) - self._color = list(self._color) - for i in (0, 1, 2): - if self._color[i] == m: - self._color[i] = self._color[i] * color_marker - self._color = tuple(self._color) - else: - self._color = ( - self._color[0] * color_marker, - self._color[1] * color_marker, - self._color[2] * color_marker) - - if not stabilize_highlight: - self._highlight = ( - self._highlight[0] * highlight_marker, - self._highlight[1] * highlight_marker, - self._highlight[2] * highlight_marker) - else: - m = max(self._highlight) - self._highlight = list(self._highlight) - for i in (0, 1, 2): - if self._highlight[i] == m: - self._highlight[i] = \ - self._highlight[i] * highlight_marker - self._highlight = tuple(self._highlight) - else: - old_function(self) - except KeyError: - self.character_index = self._random_character_index - self._color = self._random_color - self._highlight = self._random_highlight - - self._update_icon() - self._update_text() - -# ba_meta export babase.Plugin - - -class Glowing(babase.Plugin): - def __init__(self): - if file_dependence.exists(): - pass - else: - babase.screenmessage(f"File {file_dependence} not installed. Please, install!") From 10356bbc55541c3213aab5902f0d64e9e11c02b6 Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 Date: Sun, 10 May 2026 13:52:17 +0300 Subject: [PATCH 14/18] Delete plugins/utilities/simpleredefiner.py --- plugins/utilities/simpleredefiner.py | 105 --------------------------- 1 file changed, 105 deletions(-) delete mode 100644 plugins/utilities/simpleredefiner.py diff --git a/plugins/utilities/simpleredefiner.py b/plugins/utilities/simpleredefiner.py deleted file mode 100644 index a5af958d..00000000 --- a/plugins/utilities/simpleredefiner.py +++ /dev/null @@ -1,105 +0,0 @@ -# ba_meta require api 9 -from __future__ import annotations - -from typing import TYPE_CHECKING - -from types import FunctionType -import enum -import babase - -if TYPE_CHECKING: - from typing import Type, Callable, Any, Tuple - -plugman = dict( - plugin_name="simpleredefiner", - description="Plugin redefine classes and methods, when it is addressed", - external_url="", - authors=[ - {"name": "andrejkuroglo8", "email": "andrejkuroglo8@gmail.com", "discord": "andrewku"}, - ], - version="1.0.0", -) - - -def redefine_method(dst: Tuple[Any, str], src: Tuple[Any, str]) -> None: - if hasattr(getattr(*src), '__redefine_type') and getattr(*src).__redefine_type in ( - RedefineFlag.DECORATE_PRE, RedefineFlag.DECORATE_AFTER, RedefineFlag.DECORATE_ADVANCED): - new = getattr(*src) - old = getattr(*dst) - func: Callable - if getattr(*src).__redefine_type == RedefineFlag.DECORATE_AFTER: - def func(*args, **kwargs): - returned = old(*args, **kwargs) - return new(*args, **kwargs, returned=returned) - elif getattr(*src).__redefine_type == RedefineFlag.DECORATE_PRE: - def func(*args, **kwargs): - new(*args, **kwargs) - return old(*args, **kwargs) - else: - def func(*args, **kwargs): - return new(*args, **kwargs, old_function=old) - - setattr(*dst, func) - else: - setattr(*dst, getattr(*src)) - - # Fucking super()! - # dst.__code__ = CodeType( - # src.__code__.co_argcount, - # src.__code__.co_posonlyargcount, - # src.__code__.co_kwonlyargcount, - # src.__code__.co_nlocals, - # src.__code__.co_stacksize, - # src.__code__.co_flags, - # src.__code__.co_code, - # src.__code__.co_consts, - # src.__code__.co_names, - # src.__code__.co_varnames, - # src.__code__.co_filename, - # dst.__code__.co_name, - # src.__code__.co_firstlineno, - # src.__code__.co_lnotab, - # dst.__code__.co_freevars, - # dst.__code__.co_cellvars) - - -def redefine_class_methods(orig_cls: Type[object]) -> Callable[[Any], None]: - """Returns decorator that redefines all class methods - - Parameters: - orig_cls (Type[object]): class that will redefined""" - - def decorator(cls) -> None: - # for method in filter(lambda x: isinstance(getattr(cls, x), FunctionType), dir(cls)): - for method in cls._redefine_methods: - if hasattr(orig_cls, method): - redefine_method((orig_cls, method), (cls, method)) - else: - setattr(orig_cls, method, getattr(cls, method)) - # setattr(getattr(orig_cls, 'self'), '__class__', getattr(cls, method)) # Fucking super()!!!! - - return decorator - - -class RedefineFlag(enum.Enum): - REDEFINE = 0 - DECORATE_AFTER = 1 - DECORATE_PRE = 2 - DECORATE_ADVANCED = 3 - DECORATE = DECORATE_AFTER - - -def redefine_flag(*flags: RedefineFlag) -> Callable[[Callable], Callable]: - def decorator(func: Callable) -> Callable: - for flag in flags: - if flag in (RedefineFlag.DECORATE_AFTER, RedefineFlag.REDEFINE, RedefineFlag.DECORATE_PRE, - RedefineFlag.DECORATE_ADVANCED): - func.__redefine_type = flag - return func - - return decorator -# ba_meta export babase.Plugin - - -class Simpleredefiner(babase.Plugin): - pass From 44dbcff69eed8df82aecbf56aded18f4db286d9e Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 Date: Sun, 10 May 2026 13:52:47 +0300 Subject: [PATCH 15/18] Add files via upload --- plugins/utilities/glowing_profiles.py | 218 ++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 plugins/utilities/glowing_profiles.py diff --git a/plugins/utilities/glowing_profiles.py b/plugins/utilities/glowing_profiles.py new file mode 100644 index 00000000..18d2a234 --- /dev/null +++ b/plugins/utilities/glowing_profiles.py @@ -0,0 +1,218 @@ +# ba_meta require api 9 +from __future__ import annotations + +from typing import TYPE_CHECKING +import babase +import _babase + +import bascenev1 as bs +from types import FunctionType +import enum + + +if TYPE_CHECKING: + from typing import Type, Callable, Any, Tuple + +plugman = dict( + plugin_name="glowing_profiles", + description="This plugin gives your profile glowlight, just like on some servers, but only offline. Dependences: simpleredefiner", + external_url="https://m.youtube.com/watch?v=Jb_dKz99rhY", + authors=[ + {"name": "andrejkuroglo8", "email": "andrejkuroglo8@gmail.com", "discord": "andrewku"}, + ], + version="1.0.0", +) + +def redefine_method(dst: Tuple[Any, str], src: Tuple[Any, str]) -> None: + if hasattr(getattr(*src), '__redefine_type') and getattr(*src).__redefine_type in ( + RedefineFlag.DECORATE_PRE, RedefineFlag.DECORATE_AFTER, RedefineFlag.DECORATE_ADVANCED): + new = getattr(*src) + old = getattr(*dst) + func: Callable + if getattr(*src).__redefine_type == RedefineFlag.DECORATE_AFTER: + def func(*args, **kwargs): + returned = old(*args, **kwargs) + return new(*args, **kwargs, returned=returned) + elif getattr(*src).__redefine_type == RedefineFlag.DECORATE_PRE: + def func(*args, **kwargs): + new(*args, **kwargs) + return old(*args, **kwargs) + else: + def func(*args, **kwargs): + return new(*args, **kwargs, old_function=old) + + setattr(*dst, func) + else: + setattr(*dst, getattr(*src)) + + # Fucking super()! + # dst.__code__ = CodeType( + # src.__code__.co_argcount, + # src.__code__.co_posonlyargcount, + # src.__code__.co_kwonlyargcount, + # src.__code__.co_nlocals, + # src.__code__.co_stacksize, + # src.__code__.co_flags, + # src.__code__.co_code, + # src.__code__.co_consts, + # src.__code__.co_names, + # src.__code__.co_varnames, + # src.__code__.co_filename, + # dst.__code__.co_name, + # src.__code__.co_firstlineno, + # src.__code__.co_lnotab, + # dst.__code__.co_freevars, + # dst.__code__.co_cellvars) + + +def redefine_class_methods(orig_cls: Type[object]) -> Callable[[Any], None]: + """Returns decorator that redefines all class methods + + Parameters: + orig_cls (Type[object]): class that will redefined""" + + def decorator(cls) -> None: + # for method in filter(lambda x: isinstance(getattr(cls, x), FunctionType), dir(cls)): + for method in cls._redefine_methods: + if hasattr(orig_cls, method): + redefine_method((orig_cls, method), (cls, method)) + else: + setattr(orig_cls, method, getattr(cls, method)) + # setattr(getattr(orig_cls, 'self'), '__class__', getattr(cls, method)) # Fucking super()!!!! + + return decorator + +class RedefineFlag(enum.Enum): + REDEFINE = 0 + DECORATE_AFTER = 1 + DECORATE_PRE = 2 + DECORATE_ADVANCED = 3 + DECORATE = DECORATE_AFTER + + +def redefine_flag(*flags: RedefineFlag) -> Callable[[Callable], Callable]: + def decorator(func: Callable) -> Callable: + for flag in flags: + if flag in (RedefineFlag.DECORATE_AFTER, RedefineFlag.REDEFINE, RedefineFlag.DECORATE_PRE, + RedefineFlag.DECORATE_ADVANCED): + func.__redefine_type = flag + return func + + return decorator + +def get_locale(*args): + return "Error" + + +@redefine_class_methods(bs.Chooser) +class Chooser: + _redefine_methods = ('_gcinit', '_get_glowing_colors', 'update_from_profile', + '_getname') + + def _gcinit(self): + if hasattr(self, '_gcinit_done'): + return + self.glow_dict = {} + self._markers = ('"', "'", '^', '%', ';', '`') + self._get_glowing_colors() + self._gcinit_done = True + + @redefine_flag(RedefineFlag.REDEFINE) + def _get_glowing_colors(self): + """Search glowing code among profiles.""" + try: + should_del = [] + for i in self._profilenames: + for m in self._markers: + if i.startswith(m + ','): + code = i.split(',') + self.glow_dict[code[0]] = ( + float(code[1]), + float(code[2]), + int(code[3]), + int(code[4])) + # should_del.append(i) + for i in should_del: + self._profilenames.remove(i) + except Exception as err: + print(err) + ba.screenmessage( + get_locale('init_glowing_code_error'), + color=(1, 0, 0), + clients=[self._player.get_input_device().client_id], + transient=True) + + @redefine_flag(RedefineFlag.DECORATE_ADVANCED) + def _getname(self, full=True, old_function=None): + name = old_function(self, full) + for m in self._markers: + name = name.replace(m, '') + return name + + @redefine_flag(RedefineFlag.DECORATE_ADVANCED) + def update_from_profile(self, old_function): + self._gcinit() + from bascenev1 import _profile + try: + self._profilename = self._profilenames[self._profileindex] + character = self._profiles[self._profilename]['character'] + + if self._profilename[0] in self.glow_dict: + if (character not in self._character_names + and character in _ba.app.spaz_appearances): + self._character_names.append(character) + self._character_index = self._character_names.index(character) + + player_glowing_dict = self.glow_dict[self._profilename[0]] + color_marker = player_glowing_dict[0] + color_marker = max(-999.0, min(color_marker, 50.0)) + + highlight_marker = float(player_glowing_dict[1]) + highlight_marker = max(-999.0, min(highlight_marker, 50.0)) + + stabilize_color = int(player_glowing_dict[2]) > 0 + stabilize_highlight = int(player_glowing_dict[3]) > 0 + self._color, self._highlight = \ + _profile.get_player_profile_colors( + self._profilename, + profiles=self._profiles) + + if stabilize_color: + m = max(self._color) + self._color = list(self._color) + for i in (0, 1, 2): + if self._color[i] == m: + self._color[i] = self._color[i] * color_marker + self._color = tuple(self._color) + else: + self._color = ( + self._color[0] * color_marker, + self._color[1] * color_marker, + self._color[2] * color_marker) + + if not stabilize_highlight: + self._highlight = ( + self._highlight[0] * highlight_marker, + self._highlight[1] * highlight_marker, + self._highlight[2] * highlight_marker) + else: + m = max(self._highlight) + self._highlight = list(self._highlight) + for i in (0, 1, 2): + if self._highlight[i] == m: + self._highlight[i] = \ + self._highlight[i] * highlight_marker + self._highlight = tuple(self._highlight) + else: + old_function(self) + except KeyError: + self.character_index = self._random_character_index + self._color = self._random_color + self._highlight = self._random_highlight + + self._update_icon() + self._update_text() + +# ba_meta export babase.Plugin +class Glowing(babase.Plugin): + pass \ No newline at end of file From 9d6d467737e6498dfe85dae4d2b6dae3bb0227bc Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 Date: Sun, 10 May 2026 14:01:03 +0300 Subject: [PATCH 16/18] Update glowing_profiles.py --- plugins/utilities/glowing_profiles.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/utilities/glowing_profiles.py b/plugins/utilities/glowing_profiles.py index 18d2a234..9f89ae4c 100644 --- a/plugins/utilities/glowing_profiles.py +++ b/plugins/utilities/glowing_profiles.py @@ -15,12 +15,12 @@ plugman = dict( plugin_name="glowing_profiles", - description="This plugin gives your profile glowlight, just like on some servers, but only offline. Dependences: simpleredefiner", - external_url="https://m.youtube.com/watch?v=Jb_dKz99rhY", + description="This plugin gives your profile glowlight, just like on some servers, but only offline.", + external_url="https://m.youtube.com/watch?v=Jb_dKz99rhY", authors=[ {"name": "andrejkuroglo8", "email": "andrejkuroglo8@gmail.com", "discord": "andrewku"}, ], - version="1.0.0", + version="1.0.1", ) def redefine_method(dst: Tuple[Any, str], src: Tuple[Any, str]) -> None: @@ -215,4 +215,4 @@ def update_from_profile(self, old_function): # ba_meta export babase.Plugin class Glowing(babase.Plugin): - pass \ No newline at end of file + pass From 2a859b84956fb23ea5b5b0cf3cd5c02935e0cf3c Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 <176418899+andrejkuroglo8@users.noreply.github.com> Date: Sun, 10 May 2026 11:01:28 +0000 Subject: [PATCH 17/18] [ci] apply-plugin-metadata-and-formatting --- plugins/utilities.json | 3 ++- plugins/utilities/glowing_profiles.py | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/plugins/utilities.json b/plugins/utilities.json index 110a18f3..87a7a050 100644 --- a/plugins/utilities.json +++ b/plugins/utilities.json @@ -2571,7 +2571,7 @@ } }, "glowing_profiles": { - "description": "This plugin gives your profile glowlight, just like on some servers, but only offline. Dependences: simpleredefiner", + "description": "This plugin gives your profile glowlight, just like on some servers, but only offline.", "external_url": "https://m.youtube.com/watch?v=Jb_dKz99rhY", "authors": [ { @@ -2581,6 +2581,7 @@ } ], "versions": { + "1.0.1": null, "1.0.0": { "api_version": 9, "commit_sha": "d5cf26b", diff --git a/plugins/utilities/glowing_profiles.py b/plugins/utilities/glowing_profiles.py index 9f89ae4c..26cbe202 100644 --- a/plugins/utilities/glowing_profiles.py +++ b/plugins/utilities/glowing_profiles.py @@ -12,17 +12,18 @@ if TYPE_CHECKING: from typing import Type, Callable, Any, Tuple - + plugman = dict( plugin_name="glowing_profiles", description="This plugin gives your profile glowlight, just like on some servers, but only offline.", - external_url="https://m.youtube.com/watch?v=Jb_dKz99rhY", + external_url="https://m.youtube.com/watch?v=Jb_dKz99rhY", authors=[ {"name": "andrejkuroglo8", "email": "andrejkuroglo8@gmail.com", "discord": "andrewku"}, ], version="1.0.1", ) + def redefine_method(dst: Tuple[Any, str], src: Tuple[Any, str]) -> None: if hasattr(getattr(*src), '__redefine_type') and getattr(*src).__redefine_type in ( RedefineFlag.DECORATE_PRE, RedefineFlag.DECORATE_AFTER, RedefineFlag.DECORATE_ADVANCED): @@ -82,6 +83,7 @@ def decorator(cls) -> None: return decorator + class RedefineFlag(enum.Enum): REDEFINE = 0 DECORATE_AFTER = 1 @@ -100,6 +102,7 @@ def decorator(func: Callable) -> Callable: return decorator + def get_locale(*args): return "Error" @@ -214,5 +217,7 @@ def update_from_profile(self, old_function): self._update_text() # ba_meta export babase.Plugin + + class Glowing(babase.Plugin): - pass + pass From 681ad3aff1608c588964cb96d299315ac2a67904 Mon Sep 17 00:00:00 2001 From: andrejkuroglo8 <176418899+andrejkuroglo8@users.noreply.github.com> Date: Sun, 10 May 2026 11:01:30 +0000 Subject: [PATCH 18/18] [ci] apply-version-metadata --- plugins/utilities.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/utilities.json b/plugins/utilities.json index 87a7a050..4cf0adb3 100644 --- a/plugins/utilities.json +++ b/plugins/utilities.json @@ -2581,7 +2581,12 @@ } ], "versions": { - "1.0.1": null, + "1.0.1": { + "api_version": 9, + "commit_sha": "2a859b8", + "released_on": "10-05-2026", + "md5sum": "0a1f8d66a0cc4bd8d50e8c0b60171362" + }, "1.0.0": { "api_version": 9, "commit_sha": "d5cf26b",