wallabra Posted May 29, 2016 So, looking at my past, it seems my music is SHIT. I laughed at it! I really make way better music nowadays! This inspired me to do something to help the other guys that still are struggling to compose. Give them a chance to practice more while composing to this project! (like NOVA series, only musical) Theme: Any (as long as you don't pick a theme you're bad at) This is the workflow: The advanced musicians makes examples for the novices to listen and get inspired to make their musics better. All in this channel!-- I mean thread :P (I'm getting addicted with roleplaying in IRC) What did you think of the workflow? (This thread is also to keep the novice composers practicing so they don't lose the hang in something they are just starting to grasp :P ) 0 Share this post Link to post
Walter confetti Posted May 29, 2016 At first i was thinking of making good maps with "bad" music... 0 Share this post Link to post
NaZa Posted May 29, 2016 This is actually much better than your previous works, I'll try to revamp it so you can see how much actual potential it has. 0 Share this post Link to post
Fonze Posted May 29, 2016 Gustavo6046 said:(I'm getting addicted with roleplaying in IRC) There's a funny, newfound reason for the old saying, "just be yourself." http://www.forbes.com/sites/amitchowdhry/2016/04/30/study-links-heavy-facebook-and-social-media-usage-to-depression/#d38ffd57e4bb 0 Share this post Link to post
wallabra Posted May 29, 2016 Fonze said:There's a funny, newfound reason for the old saying, "just be yourself." http://www.forbes.com/sites/amitchowdhry/2016/04/30/study-links-heavy-facebook-and-social-media-usage-to-depression/#d38ffd57e4bb Yes but it's so fun! I even made a Sentient Mushes game based on the roleplay we did for 2 days, in Python (it's a IRC bot): Spoiler from json import load import os import socket import sys import time import random import json import threading start = time.time() exiting = False joined = 0 class SMException(BaseException): pass class BossSystemError(SMException): pass class GiverThread(threading.Thread): def __init__(self, threadID, name): threading.Thread.__init__(self) self.threadID = threadID self.name = name def run(self): while True: time.sleep(3.0 - ((time.time() - start) % 3.0)) for p in players: players[p]["health"]["self"] += players[p]["healthrate"] if players[p]["health"]["self"] > players[p]["maxhealth"]: players[p]["health"]["self"] = players[p]["maxhealth"] if exiting: break t = GiverThread(1, "Spore thread") t.start() addr, port = sys.argv[1].split(":") port = int(port) name = sys.argv[2] sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((addr, port)) sock.setblocking(False) sock.send("NICK " + name + "\r\n") sock.send("USER " + name + " " + name + "_ " + name + "__ :" + name + "\r\n") def calcdamage(player): damg = players[fr]["damage"] if players[player]["transferred"]: damg = players[player]["transferdata"]["damage"] for f in players[fr]["friends"]: damg += things[f]["damage"] * players[fr]["friends"][f][0] return damg def damage(player, amt): if players[player]["transferred"]: players[player]["transferdata"]["health"] -= amt if players[player]["transferdata"]["health"] <= 0: players[player]["transferdata"] = None players[player]["transferred"] = False else: players[player]["health"]["self"] -= amt if players[player]["health"]["self"] <= 0: players.pop(player) def gethealth(player): if players[player]["transferred"]: return players[player]["transferdata"]["health"] return players[player]["health"]["self"] def getmaxhealth(player): if players[player]["transferred"]: return players[player]["transferdata"]["maxhealth"] return players[player]["maxhealth"] def say(txt, to): to = to.strip() sock.sendall("PRIVMSG " + to + " :" + txt + "\r\n") def notice(txt, to): sock.sendall("NOTICE " + to + " :" + txt + "\r\n") def action(txt, to): sock.sendall("PRIVMSG " + to + " :\01ACTION " + txt + "\01\r\n") try: f = open("save." + name + ".json", "r") dat = json.load(f) f.close() except: dat = {} locations = { } players = { } things = { } bosses_attacked = { } battlerequests = [] def befriend(player, thing): players[fr]["numfriends"] += 1 players[player]["friends"][thing] = players[player]["friends"].get(thing, [0, 0]) players[player]["health"][thing] = players[player]["health"].get(thing, 0) players[player]["friends"][thing][0] += 1 players[player]["friends"][thing][1] += 1 players[player]["health"][thing] += things[thing]["health"] def cmd_attack(cmd, fr, ch): if fr not in players: say(fr + ": start playing first!", ch) return try: thing = " ".join(cmd[1:]).lower() except IndexError: say(fr + ", specify a boss to kill!", ch) return if thing not in players: if thing not in things.keys(): say(fr + ": Thing non-existant!", ch) return if not things[thing]["boss"]: say(fr + ": The thing is not a boss!", ch) return attackers = [boss["attackers"] for boss in bosses_attacked.values() if boss["type"] == thing] for x in attackers: attackers.remove(x) attackers.append(*x) if fr not in attackers: bosses_attacked[thing + str(len([boss for boss in bosses_attacked.values() if boss["type"] == thing]))] = { "type": thing, "health": things[thing]["health"], "attackers": [fr]} say(fr + " started an attack against a {} of {}!".format(thing, players[fr]["place"] - 1), ch) return boss = None for x in bosses_attacked: if fr in x["attackers"]: boss = x break if boss is None: raise BossSystemError("An boss was falsely detected as being attacked by fr!") bosses_attacked[thing + str(bosses_attacked.values().index(boss) + 1)]["health"] -= calcdamage(fr) / ( 2 if players[fr]["transferdata"] == {} or players[fr]["transferdata"]["host"] not in things[thing][ "weakhosts"] else 1) boss["health"] -= calcdamage(fr) say(fr + " dealt {} damage to a {} boss!".format(calcdamage(fr) / ( 2 if players[fr]["transferdata"] == {} or players[fr]["transferdata"]["host"] not in things[thing][ "weakhosts"] else 1), thing), ch) if bosses_attacked[thing + str(bosses_attacked.values().index(boss) + 1)]["health"] < 0: bosses_attacked.pop(bosses_attacked[thing + str(bosses_attacked.values().index(boss) + 1)]) players[fr]["experience"] += things[thing]["exp"] damage(fr, -(getmaxhealth(fr) / 2)) say(fr + " succesfully killed a {} *boss*!! He was awarded with {} exp and {} health.".format(thing, things[thing][ "exp"], -( getmaxhealth(fr) / 2)), ch) return damage(fr, things[thing]["damage"]) if gethealth(fr) < 0: players.pop(fr) say(fr + " died trying to kill a {}! He is out of the game and will have to rejoin.".format(thing), ch) def cmd_available(cmd, fr, ch): if fr not in players: say(fr + ": start playing first!", ch) return if len(cmd) == 1: place = locations[players[fr]["place"]] message = "" cango = "" for thing_type, amount in place[1].iteritems(): if len(message) != 0: message += ", " message += "{} {}s".format(amount, thing_type) for c in place[0]: if len(cango) != 0: cango += ", " cango += c say(fr + ": Things available at your location: " + message, ch) say(fr + ": You can go to: " + cango, ch) def cmd_dumpthings(cmd, fr, ch): message = fr + ": Things available: " for thing in things.keys(): if message[-2] == ":": message += thing else: message += ", " + thing say(message, ch) def cmd_dumplocations(cmd, fr, ch): message = fr + ": Locations available: " for location in locations.keys(): if message[-2] == ":": message += location else: message += ", " + location say(message, ch) def cmd_harvest(cmd, fr, ch): if fr not in players: say(fr + ": start playing first!", ch) return try: thing = " ".join(cmd[1:]).lower() except IndexError: say(fr + ", specify a thing to harvest souls from!", ch) return if thing not in players: infthing = thing.replace("random ", "") if infthing not in things.keys(): say(fr + ": No such thing!", ch) return if locations[players[fr]["place"]][1].get(infthing, 0) <= 0: say(fr + " can't find a " + infthing + "!", ch) return if things[infthing]["boss"]: say(fr + ": .attack to attack bosses!" + infthing + "!", ch) return if things[infthing]["damage"] > gethealth(fr): players[fr]["dead"] = True players[fr]["health"] = 0 say(fr + " has died trying to harvest souls from a {}! He's out of the game!".format(cmd[1]), ch) players.pop(fr) return elif things[infthing]["health"] < calcdamage(fr): say(fr + " harvests " + str(things[infthing]["souls"]) + " souls from a " + infthing + "!", ch) damage(fr, things[infthing]["damage"]) locations[players[fr]["place"]][1][infthing] -= 1 players[fr]["souls"] += things[infthing]["souls"] return else: say(fr + " doesn't have enough damage points to kill a {}!".format(thing), ch) def cmd_where(cmd, fr, ch): if fr not in players: say(fr + ": start playing first!", ch) return say(fr + " is at " + players[fr]["place"], ch) def cmd_join(cmd, fr, ch): global joined if fr in players: say(fr + " is already playing!", ch) return players[fr] = {"place": "start", "numfriends": 0, "friends": {}, "health": {"self": 200}, "maxhealth": 200, "healthrate": 0.0, "spores": 10, "maxspores": 10, "experience": 0, "attacking": None, "upgradepoints": 0, "damage": 15, "souls": 1, "dead": False, "transferred": False, "transferdata": {}} joined += 1 say(fr + " joined the game at start.", ch) def cmd_transfer(cmd, fr, ch): if fr not in players: say(fr + ": start playing first!", ch) return try: thing = " ".join(cmd[1:]).lower() except IndexError: say(fr + ", specify a thing to transfer to!", ch) return if thing not in players: infthing = thing.replace("random ", "") if locations[players[fr]["place"]][1].get(infthing, 0) <= 0: say(fr + " can't find a " + infthing + "!", ch) return if things[infthing]["immune"] > players[fr]["spores"]: say(fr + " didn't transfer to a " + infthing + " because he didn't have enough spores!", ch) if things[infthing]["damage"] > gethealth(fr): players.pop(fr) say(fr + " has died trying to transfer to a {}! He's out of the game!".format(cmd[1]), ch) return locations[players[fr]["place"]][1][infthing] -= 1 players[fr]["spores"] -= things[infthing]["immune"] players[fr]["transferred"] = True players[fr]["transferdata"] = {} players[fr]["transferdata"].update(things[infthing]) players[fr]["transferdata"]["maxhealth"] = players[fr]["transferdata"]["health"] players[fr]["transferdata"]["host"] = infthing return def cmd_spores(cmd, fr, ch): if fr not in players: say(fr + ": start playing first!", ch) return say(fr + " has " + str(players[fr]["spores"]) + "/" + str(players[fr]["maxspores"]) + " spore(s).", ch) def cmd_health(cmd, fr, ch): if fr not in players: say(fr + ": start playing first!", ch) return say(fr + " has " + str(gethealth(fr)) + "/" + str(getmaxhealth(fr)) + " health, +" + str( players[fr]["healthrate"]) + " health per 3 seconds.", ch) def cmd_upgrade(cmd, fr, ch): if players[fr]["upgradepoints"] < 1: say(fr + " tried to upgrade something without the points", ch) return if cmd[1] == "health": say(fr + " upgrades maximum health.", ch) players[fr]["maxhealth"] += 30 players[fr]["health"]["self"] = players[fr]["maxhealth"] elif cmd[1] == "healthregen": say(fr + " upgrades health regeneration.", ch) players[fr]["healthrate"] += 2 else: return players[fr]["upgradepoints"] -= 1 def cmd_stats(cmd, fr, ch): if fr not in players: say(fr + ": start playing first!", ch) return say("{} has {}/{} experience points, {} souls and {} damage points.".format(fr, players[fr]["experience"], 30 + players[fr]["maxspores"] * 2, players[fr]["souls"], calcdamage(fr)), ch) def cmd_parsejson(cmd, fr, ch): if len(cmd) < 2: say(fr + ": Not enough parameters!", ch) return try: fname = os.path.join("jsondir", cmd[1]) if ".." in fname: return parsed_json = json.load(open(fname)) locations.update(parsed_json.get("Locations", {})) things.update(parsed_json.get("Things", {})) things.update(parsed_json.get("Enemies", {})) except BaseException as error: say(fr + ": Error loading file: " + str(error), ch) return say(fr + ": JSON parsed succesfully!", ch) def cmd_infect(cmd, fr, ch): if fr not in players: say(fr + ": start playing first!", ch) return if players[fr]["spores"] < 1: say(fr + " doesn't have enough spores!", ch) return thing = " ".join(cmd[1:]).lower() if thing not in players: infthing = thing.replace("random ", "") if locations[players[fr]["place"]][1].get(infthing, 0) <= 0: say(fr + " can't find a " + infthing + "!", ch) return befriend(fr, "mush") locations[players[fr]["place"]][1][infthing] -= 1 players[fr]["experience"] += 5 if players[fr]["experience"] >= 30 + players[fr]["maxspores"] * 2: players[fr]["experience"] = 0 players[fr]["upgradepoints"] = 2 players[fr]["maxspores"] += 4 say(fr + " infects " + infthing + " and gets a minion! " + fr + " gets four more spore capacity!", ch) else: say(fr + " infects " + infthing + " and gets a minion! +5 XP!", ch) players[fr]["spores"] -= 1 return def cmd_befriend(cmd, fr, ch): if fr not in players: say(fr + ": start playing first!", ch) return thing = " ".join(cmd[1:]).lower() if thing not in players: infthing = thing.replace("random ", "") if locations[players[fr]["place"]][1].get(infthing, 0) <= 0: say(fr + " can't find a " + infthing + "!", ch) return say(fr + " befriends a " + infthing + "!", ch) befriend(fr, infthing) locations[players[fr]["place"]][1][infthing] -= 1 players[fr]["spores"] += 1 return def cmd_fixit(cmd, fr, ch): say( "FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT", ch) time.sleep(2.5) say("FIXIT FIXIT FIXIT", ch) def cmd_boot(cmd, fr, ch): action("kicks everyone", ch) def cmd_go(cmd, fr, ch): if fr not in players: say(fr + ": start playing first!", ch) return place = " ".join(cmd[1:]).lower() if place not in locations: say(fr + ": unknown place", ch) return if place not in locations[players[fr]["place"]][0]: say(fr + " can't go to " + place, ch) return if len(locations[place]) > 2: if locations[place][2] == "requires-empty": tally = sum(locations[players[fr]["place"]][1].values()) if tally > 0: say(fr + " tried to go to " + place + " even though there are still things there...", ch) return players[fr]["place"] = place say(fr + " is now in " + place + "!", ch) def cmd_trade(cmd, fr, ch): if len(cmd) < 2: say(fr + ": How many strenght points?", ch) return try: if players[fr]["souls"] > int(cmd[1]) + 1: players[fr]["damage"] += int(cmd[1]) players[fr]["souls"] -= int(cmd[1]) say(fr + ": You traded {0} souls for {0} damage points succesfully!".format(int(cmd[1])), ch) else: say(fr + ": You don't have enough souls!", ch) except ValueError: say(fr + ": Invalid number!", ch) return def cmd_help(cmd, fr, ch): cmdhelp = { "attack": "Attack the boss", "available": "Find available locations and things", "harvest": "Harvest a soul from an animal", "join": "Start playing", "transfer": "Transfer into a host", "infect": "Infect an animal", "befriend": "Befriend an animal", "go": "Go somewhere", "spores": "Show the stats for spores", "health": "Show health, max health and health regen", "where": "Find out where you're currently at", "upgrade": "Upgrade something", "stats": "Find out how much of experience points, damage points and souls you have", "locations": "Know of every location in the game! (including parsed JSON addons)", "things": "Know of every thing in the game! (including parsed JSON addons)", } if len(cmd) == 1: say("Commands:", fr) say( " .availables, .attack, .harvest, .join, .transfer, .infect, .befriend, .go, .spores, .health, .stats, .where, .upgrade, .things, .locations", fr) say( "You are a sentient mush trying to avenge the humans for having they take you from your home planet, " "Tamina.", fr) say("You start on the start location.", fr) say("You can befriend or infect animals, good luck!", fr) else: say(cmdhelp.get(cmd[1], "unknown command"), ch) commands = {"attack": cmd_attack, "available": cmd_available, "harvest": cmd_harvest, "upgrade": cmd_upgrade, "where": cmd_where, "join": cmd_join, "transfer": cmd_transfer, "spores": cmd_spores, "health": cmd_health, "stats": cmd_stats, "infect": cmd_infect, "befriend": cmd_befriend, "go": cmd_go, "help": cmd_help, "parsejson": cmd_parsejson, "trade": cmd_trade, "things": cmd_dumpthings, "locations": cmd_dumplocations, "fixit": cmd_fixit, "boot": cmd_boot} def run_cmd(cmd, fr, ch): global exiting if ch != "#sentientmushes": if fr == "Gustavo6046": if cmd.strip()[0] == "#": sock.send("JOIN " + cmd.strip() + "\r\n") elif cmd == "quit": sock.send("PART #sentientmushes :Good game! Bye!\r\n") exiting = True else: sock.send(cmd.strip() + "\r\n") else: catchphrases = [ "You are not authorized to access the inner workings of me. Please pick up the Argent Energy on the way here to activate the red keycard.", "Noooooooooooooooooooo *SPLAT*", "Please press the RED button that says 'DO NOT PRESS'.", "YOU JUST GOT BOOTED!", "/me kicks you", "You need 35000 souls to enter The Dungeon.", "Do not enter at your own risk. I would then die, and I would be forced to kick you.", "I AM A ROBOT STOP PLEASE INSERT MY KAMIKAZE SPHERE SO I CAN BLOW YOU UP STOP", "... wat", "You are attempting to enter The Core. Please wait FIVE seconds for me to blow you up.", "BEEP BOOP I AM A ROBOT YOU ARE STUPID BEEP BOOP STOP", "Oh snap! Something went wrong!", "YOU JUST GOT KICKED!!", "Meet my brother, SMBot2!", "Deja Vu!", "Deja Vu!", "_.-'|STUPIDSTUPIDSTUPID|'-._", "Please wait FIVE seconds for the crusher to hit you.", "You got 1-UP", "You lost all your coins!", "You got 500 coins!", "oOxX SUPA MLG 360 NOSCOPE HEADSHOT XxOo", "HEADshOT", "Beep boop, I'm a bot. You're stupid.", "Do you know what you need most? AUTOCORRECT!", "Do you know why you're talking to me? AUTOCORRECT!", "/me enables my autocorrect", "/em disvalxaf i's grommur end speltib coar" ] say(random.choice(catchphrases), fr) return cmd = cmd.split(" ") if cmd[0] in commands: try: commands[cmd[0]](cmd, fr, ch) except BaseException as e: say(fr + ": command " + cmd[0] + " failed: " + e.__class__.__name__ + ": " + str(e), ch) # else: # say(fr + ": unknown command " + cmd[0], ch) try: while True: if exiting: break try: text = sock.recv(2048) if text: print text except: text = "" pass if text.startswith("PING "): sock.sendall("PONG " + text.split(" ")[1] + "\r\n") if text.startswith("ERROR "): break try: thing = text.split(" ")[1] except: thing = "" if thing == "PRIVMSG" and text.find(":") != -1: msg = text.split(" ", 3)[3][1:].strip() fr = text[1:].split("!")[0] chan = text.split(" ")[2] if len(msg) == 0: continue if chan == name: run_cmd(msg, fr, fr) else: if msg[0] == ".": cmd = msg[1:].strip() run_cmd(cmd, fr, chan) elif msg.startswith("@" + name): cmd = msg[len(name) + 1:].strip() run_cmd(cmd, fr, chan) elif thing == "KICK": text = text.split(" ") if text[3] == name: if len(joined) == 0: sock.sendall("JOIN :" + text[1] + "\r\n") finally: exiting = True 0 Share this post Link to post
wallabra Posted May 30, 2016 Bump; forgot to respond to some posts. DoomLover234 said:This is actually much better than your previous works, I'll try to revamp it so you can see how much actual potential it has. I'm waiting. :) Spoiler walter confalonieri said:At first i was thinking of making good maps with "bad" music... lol 0 Share this post Link to post