Moth Cult

From yourworldoftext.wiki
Jump to navigation Jump to search


Moth Cult is a faction that appeared in 2024/late 2023. Its leader is a user going by Moth Cult Leader(also known as MCL, M or their username /~Ter8).

As a loose faction, the Moth Cult features a Discord server which contains 85 members(as of September 1st, 2024), though Moth Cult Leader is the only one who has a notable presence within YWOT.

MCL's first notable action was making a simple script that spammed "MOTHS," and later "BECOME A MOTH! MOTHS ARE GODS!OBEY THE MOTHS!" all over the Spawn region.

They later gained attention for copying the actions of another user named The Janitor, first by creating a script-maintained box at the center of Spawn and soon after by deploying their own roombas. Similar to The Janitor, MCL's presence was met with strong pushback from some of YWOT's more unruly users(Ex. this wiki page has been repeatedly vandalized.)

MCL would later introduce a number of unique scripted creations, including some which connected Spawn to Our World of Text, a sister site where they are also active.

Moth Roomba[edit | edit source]

Moth Roomba featuring an invite to the Moth Cult Discord server

The creation most commonly associated with Moth Cult Leader.

The Moth Roomba first appeared on February 21st, 2024, after which it became a regular presence at spawn.

MCL's roomba acted in a way similar to the Janitor's roomba except it moved randomly instead of traveling towards text.

The code for MCL's roomba was made public on March 4th, 2024.

import time
import websocket
import requests
import json
import random
#╔═╗║╚╝
r_asci = r"""                
 ╔════════════╗ 
 ║ROOMBA V3 by║ 
 ║moth cult(M)║ 
 ║JOIN DISCORD║ 
 ║vBC7vHqcnn  ║ 
 ╚════════════╝ 
                """
roomba_x = 32
roomba_y = 32
def coord_in_spawn(x,y):
    if x<=16 and x>-33:
        if y<=8 and y>-19:# theres a off-by one error in the negative x and y, but it doesnt matter since i used > and not >=
            print('STOPPED BAD PATH!')
            return True
def path_intersects_spawn(x,y,target_x,target_y):
    ints = False
    while x != target_x or y != target_y:
        if coord_in_spawn(x,y):
            ints=True
            return True
        if x > target_x:
            x -= 1
        if x < target_x:
            x += 1
        if y > target_y:
            y -= 1
        if y < target_y:
            y += 1
        if coord_in_spawn(x,y):
            ints=True
            return True
    return ints
def get_dest():
    work = False
    while not work:
        target_x = random.randint(-128,128)
        target_y = random.randint(-64,64)
        print(target_x,target_y)
        if not path_intersects_spawn(roomba_x,roomba_y,target_x,target_y):
            work=True
    return target_x,target_y
target_x,target_y = get_dest()
home = False
while True:
    try:

        response = requests.post("https://www.yourworldoftext.com/").cookies.items()[0][1]
        print(response)
        headers = {
            "Cookie": f"csrftoken={response}"
        }
        max_ed_len = 16*8
        url = "wss://www.yourworldoftext.com/ws/"
        rid = 0
        l_id = 0

        def build_edit(tx,ty,lx,ly,char):
            global l_id
            l_id += 1
            edit = []
            edit.append(tx)
            edit.append(ty)
            edit.append(ly)
            edit.append(lx)
            edit.append("CURRENT_TIME")
            edit.append(char)
            edit.append(l_id)
            return edit
        def build_json(edits):
            global rid
            rid += 1
            rjsn = {"kind":"write","request_id":rid,"edits":edits}
            return json.dumps(rjsn).replace("CURRENT_TIME",str(round(time.time()*1000)))
        edits = []
        xtemp = 0
        ws = websocket.create_connection(url,headers=headers)
        datar = ws.recv()
        print(datar)
        ws.send("""{"kind":"fetch","request_id":1,"fetchRectangles":[{"minX":-13,"minY":-3,"maxX":12,"maxY":-3},{"minX":-13,"minY":-2,"maxX":12,"maxY":-2},{"minX":-13,"minY":-1,"maxX":12,"maxY":-1},{"minX":-13,"minY":0,"maxX":12,"maxY":0},{"minX":-13,"minY":1,"maxX":12,"maxY":1},{"minX":-13,"minY":2,"maxX":12,"maxY":2}]}""")
        rid += 1
        datar = ws.recv()
        print(datar)
        ws.send("""{"kind":"position","request_id":2,"position":{"x":0,"y":0}}""")
        rid += 1
        gw = 16
        gh = 8
        def convert_to_grid(x,y):
            tilesx = x//gw
            tilesy = y//gh
            letterx = x%gw
            lettery = y%gh
            return tilesy, tilesx, letterx, lettery
        def place_tile(line,x,y):
            edits = []
            for letter in line:
                if letter != "X":
                    tx,ty,lx,ly = convert_to_grid(x,y)
                    edits.append(build_edit(tx,ty,lx,ly,letter))
                x += 1
            return edits
        offset = -20
        mult = r_asci
        while True:
            if rid > 250 and not home:
                print(1/0)
            if roomba_x == target_x and roomba_y == target_y:
                if home:
                    print(1/0)
                target_x,target_y = get_dest()
            if roomba_x > target_x:
                roomba_x -= 1
            if roomba_x < target_x:
                roomba_x += 1

            if roomba_y > target_y:
                roomba_y -= 1
            if roomba_y < target_y:
                roomba_y += 1
            print(roomba_x,roomba_y,target_x,target_y)
            

            big_edits = []
            gad = 0
            for stra in mult.split("\n"):

                
                edits = place_tile(stra,roomba_x,roomba_y+gad)

                big_edits.extend(edits)
                gad += 1
            n = 8*16
            to_send = [big_edits[i:i+n] for i in range(0, len(big_edits), n)]
        
            for s in to_send:
                
                time.sleep(0.6)
                data = build_json(s)
                ws.send(data)
                time.sleep(0.6)
                datar = ws.recv()
                rid += 1
    except KeyboardInterrupt:
        if home:
            print(1/0)
        home = input("Home? (Y/N): ").lower()[0]
        if home == "y":
            target_x = 32
            target_y = 32
            home = True
        else:
            print(1/0)
    except ZeroDivisionError:
        if home:
            print(1/0)
        pass
    except:
        pass



Toy Car[edit | edit source]

Created by Moth Cult Leader on March 13th 2024.

The Toy Car was a text object that operated in a manner similar to the roomba. The main difference was that it was intended to be steered by users, who could control which direction it goes in by typing "x"'s at designated locations within the car.

The car did not seem to function properly however as it would simply delete user inputs without moving.

March 12th, 2024

YWOT Chatroom[edit | edit source]

Created by Moth Cult Leader on March 13th, 2024.

The YWOT Chatroom was a scripted text board which repaired itself automatically. Users could add messages to the chatroom by typing at the top of the board and entering an "x" at a designated location below.

YWOT Chatroom(March 13th, 2024)

OWOT-YWOT Bridges[edit | edit source]

Moth Cult Leader has been known to create two types of bridges that connected YWOT to its sister website Our World of Text. One type was a small portal within which edits are synced between the two websites. The other was a chatroom that YWOT users can use to interact with the OWOT Chat.

August 31st, 2024(Sped Up 20x)
September 4th, 2024(Sped Up 3x)

Catha'vi[edit | edit source]

On April 5th, 2024, Moth Cult Leader realized that their Discord server needed a deity to worship. To this end, they created the Moth God Catha'vi by photoshopping a deer's skull onto a moth's body.

MCL then created a detailed render of the moth deity with orange fur and four arms. This design has since been used in multiple animations and was the subject of many pieces of fan art by the Moth Cult Discord.

Moth Cult Leader shows great pride in their OC and frequently advertises it on the Our World of Text Discord server.

Catha'vi Suit[edit | edit source]

In July 2024, MCL revealed that they have been working on an IRL costume of Catha'vi.

As of October progress has only been made on the moth god's skull, which was modeled on Blender and printed out piece by piece using a local 3D printer.

The rest of Catha'vi's body will be made entirely from brown fabric, though MCL once humored the idea of a functioning mechanical tail.

Catha'vi Game[edit | edit source]

As of October 12th, 2024, Moth Cult Leader has been working on a game named Super Catha'vi World.

WIP(October 12th, 2024)