async def shamble(cmd): user_data = EwUser(member=cmd.message.author) if user_data.life_state != ewcfg.life_state_shambler and user_data.poi != ewcfg.poi_id_assaultflatsbeach: response = "You have too many higher brain functions left to {}.".format(cmd.tokens[0]) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) elif user_data.life_state in [ewcfg.life_state_juvenile, ewcfg.life_state_enlisted] and user_data.poi == ewcfg.poi_id_assaultflatsbeach: response = "You feel an overwhelming sympathy for the plight of the Shamblers and decide to join their ranks." await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) await asyncio.sleep(5) user_data = EwUser(member=cmd.message.author) user_data.life_state = ewcfg.life_state_shambler #user_data.degradation = 100 ewutils.moves_active[user_data.id_user] = 0 user_data.poi = ewcfg.poi_id_nuclear_beach_edge user_data.persist() member = cmd.message.author base_poi_channel = fe_utils.get_channel(cmd.message.guild, 'nuclear-beach-edge') response = 'You arrive inside the facility and are injected with a unique strain of the Modelovirus. Not long after, a voice on the intercom chimes in.\n**"Welcome, {}. Welcome to Downpour Laboratories. It\'s safer here. Please treat all machines and facilities with respect, they are precious to our cause."**'.format(member.display_name) await ewrolemgr.updateRoles(client=cmd.client, member=member) return await fe_utils.send_message(cmd.client, base_poi_channel, fe_utils.formatMessage(cmd.message.author, response)) else: pass
async def renounce(cmd): user_data = EwUser(member=cmd.message.author) if user_data.life_state == ewcfg.life_state_shambler: response = "You lack the higher brain functions required to {}.".format(cmd.tokens[0]) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) if user_data.life_state == ewcfg.life_state_corpse: response = "You're dead, bitch." return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) elif user_data.life_state != ewcfg.life_state_enlisted: response = "What exactly are you renouncing? Your lackadaisical, idyllic life free of vice and violence? You aren't actually currently enlisted in any gang, retard." elif user_data.poi not in [ewcfg.poi_id_rowdyroughhouse, ewcfg.poi_id_copkilltown, ewcfg.poi_id_thebreakroom]: response = "To turn in your badge, you must return to your soon-to-be former gang base." else: renounce_fee = int(user_data.slimes) / 2 user_data.change_slimes(n=-renounce_fee) faction = user_data.faction user_data.life_state = ewcfg.life_state_juvenile user_data.weapon = -1 user_data.sidearm = -1 user_data.persist() response = "You are no longer enlisted in the {}, but you are not free of association with them. Your former teammates immediately begin to beat the shit out of you, knocking {} slime out of you before you're able to get away.".format(faction, renounce_fee) await ewrolemgr.updateRoles(client=cmd.client, member=cmd.message.author) await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response))
async def rejuvenate(cmd): user_data = EwUser(member=cmd.message.author) if user_data.life_state == ewcfg.life_state_shambler and user_data.poi != ewcfg.poi_id_oozegardens: response = "You lack the higher brain functions required to {}.".format(cmd.tokens[0]) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) elif user_data.life_state == ewcfg.life_state_shambler and user_data.poi == ewcfg.poi_id_oozegardens: response = "You decide to change your ways and become one of the Garden Gankers in order to overthrow your old master." await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) await asyncio.sleep(5) user_data = EwUser(member=cmd.message.author) user_data.life_state = ewcfg.life_state_juvenile #user_data.degradation = 0 # user_data.gvs_currency = 0 ewutils.moves_active[user_data.id_user] = 0 user_data.poi = ewcfg.poi_id_og_farms user_data.persist() client = ewutils.get_client() server = client.get_guild(user_data.id_server) member = server.get_member(user_data.id_user) base_poi_channel = fe_utils.get_channel(cmd.message.guild, ewcfg.channel_og_farms) response = "You enter into Atomic Forest inside the farms of Ooze Gardens and are sterilized of the Modelovirus. Hortisolis gives you a big hug and says he's glad you've overcome your desire for vengeance in pursuit of deposing Downpour." await ewrolemgr.updateRoles(client=cmd.client, member=member) return await fe_utils.send_message(cmd.client, base_poi_channel, fe_utils.formatMessage(cmd.message.author, response)) else: pass
async def pardon(cmd): user_data = EwUser(member=cmd.message.author) if user_data.life_state != ewcfg.life_state_kingpin and user_data.life_state != ewcfg.life_state_executive and not cmd.message.author.guild_permissions.administrator: response = "Only the Rowdy F****r {} and the Cop Killer {} can do that.".format( ewcfg.emote_rowdyfucker, ewcfg.emote_copkiller, ewcfg.emote_slimecorp) else: member = None if cmd.mentions_count == 1: member = cmd.mentions[0] if member.id == cmd.message.author.id: member = None if member == None: response = "Who?" else: member_data = EwUser(member=member) member_data.unban(faction=user_data.faction) if member_data.faction == "": response = "{} has been allowed to join the {} again.".format( member.display_name, user_data.faction) else: faction_old = member_data.faction member_data.faction = "" if member_data.life_state == ewcfg.life_state_enlisted: member_data.life_state = ewcfg.life_state_juvenile member_data.weapon = -1 member_data.sidearm = -1 response = "{} has been released from their association with the {}.".format( member.display_name, faction_old) member_poi = poi_static.id_to_poi.get(member_data.poi) if move_utils.inaccessible(user_data=member_data, poi=member_poi): member_data.poi = ewcfg.poi_id_downtown member_data.persist() await ewrolemgr.updateRoles(client=cmd.client, member=member) await fe_utils.send_message( cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response))
async def begin_tutorial(member): user_data = EwUser(member=member) dungeonutils.user_to_tutorial_state[user_data.id_user] = 0 scene = poi_static.dungeon_tutorial[0] if scene.poi != None: user_data.poi = scene.poi if scene.life_state != None: user_data.life_state = scene.life_state user_data.persist() await ewrolemgr.updateRoles(client=ewutils.get_client(), member=member) response = format_tutorial_response(scene) poi_def = poi_static.id_to_poi.get(user_data.poi) channels = [poi_def.channel] return await fe_utils.post_in_channels( member.guild.id, fe_utils.formatMessage(member, response), channels)
async def banish(cmd): user_data = EwUser(member=cmd.message.author) if user_data.life_state != ewcfg.life_state_kingpin and user_data.life_state != ewcfg.life_state_executive and not cmd.message.author.guild_permissions.administrator: response = "Only the Rowdy F****r {} and the Cop Killer {} can do that.".format( ewcfg.emote_rowdyfucker, ewcfg.emote_copkiller) else: member = None if cmd.mentions_count == 1: member = cmd.mentions[0] # >:] # if member.id == cmd.message.author.id: # member = None if member == None: response = "Who?" else: member_data = EwUser(member=member) member_data.ban(faction=user_data.faction) member_data.unvouch(faction=user_data.faction) if member_data.faction == user_data.faction: member_data.faction = "" if member_data.life_state == ewcfg.life_state_enlisted: member_data.life_state = ewcfg.life_state_juvenile member_poi = poi_static.id_to_poi.get(member_data.poi) if move_utils.inaccessible(user_data=member_data, poi=member_poi): member_data.poi = ewcfg.poi_id_downtown member_data.persist() response = "{} has been banned from enlisting in the {}".format( member.display_name, user_data.faction) await ewrolemgr.updateRoles(client=cmd.client, member=member) await fe_utils.send_message( cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response))
async def revive(cmd, player_auto=None): time_now = int(time.time()) response = "" if cmd.message.channel.name != ewcfg.channel_endlesswar and cmd.message.channel.name != ewcfg.channel_sewers and player_auto is None: response = "Come to me. I hunger. #{}.".format(ewcfg.channel_sewers) else: if player_auto: player_data = EwUser(id_server=cmd.guild.id, id_user=player_auto) else: player_data = EwUser(member=cmd.message.author) # time_until_revive = (player_data.time_lastdeath + 600) - time_now time_until_revive = (player_data.time_lastdeath) - time_now if time_until_revive > 0 and player_auto is None: response = "ENDLESS WAR is not ready to {} you yet ({}s).".format( cmd.tokens[0], time_until_revive) return await fe_utils.send_message( cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) slimeoid = EwSlimeoid(member=cmd.message.author) if player_data.life_state == ewcfg.life_state_corpse: market_data = EwMarket(id_server=cmd.guild.id) # Endless War collects his fee. # fee = (player_data.slimecoin / 10) # player_data.change_slimecoin(n = -fee, coinsource = ewcfg.coinsource_revival) # market_data.slimes_revivefee += fee # player_data.busted = False # Preserve negaslime if player_data.slimes < 0: # market_data.negaslime += player_data.slimes player_data.change_slimes(n=-player_data.slimes) # set to 0 # reset slimelevel to zero player_data.slimelevel = 0 # Set time of last revive. This used to provied spawn protection, but currently isn't used. player_data.time_lastrevive = time_now if False: #player_data.degradation >= 100: player_data.life_state = ewcfg.life_state_shambler player_data.change_slimes(n=0.5 * ewcfg.slimes_shambler) player_data.trauma = "" poi_death = poi_static.id_to_poi.get(player_data.poi_death) if move_utils.inaccessible(poi=poi_death, user_data=player_data): player_data.poi = ewcfg.poi_id_endlesswar else: player_data.poi = poi_death.id_poi else: # Set life state. This is what determines whether the player is actually alive. player_data.life_state = ewcfg.life_state_juvenile # Give player some initial slimes. player_data.change_slimes(n=ewcfg.slimes_onrevive) # Get the player out of the sewers. player_data.poi = ewcfg.poi_id_endlesswar # Give newly spawned juvies a foul odour player_data.applyStatus(ewcfg.status_repelled_id) player_data.persist() market_data.persist() # Shower every district in the city with slime from the sewers. sewer_data = EwDistrict(district=ewcfg.poi_id_thesewers, id_server=cmd.guild.id) # the amount of slime showered is divided equally amongst the districts districts_amount = len(poi_static.capturable_districts) geyser_amount = int(0.5 * sewer_data.slimes / districts_amount) # Get a list of all the districts for poi in poi_static.capturable_districts: district_data = EwDistrict(district=poi, id_server=cmd.guild.id) district_data.change_slimes(n=geyser_amount) sewer_data.change_slimes(n=-1 * geyser_amount) district_data.persist() sewer_data.persist() sewer_inv = bknd_item.inventory(id_user=sewer_data.name, id_server=sewer_data.id_server) for item in sewer_inv: district = ewcfg.poi_id_slimesea if random.random() < 0.5: district = random.choice(poi_static.capturable_districts) bknd_item.give_item(id_item=item.get("id_item"), id_user=district, id_server=sewer_data.id_server) await ewrolemgr.updateRoles(client=cmd.client, member=cmd.message.author) response = '{slime4} Geysers of fresh slime erupt from every manhole in the city, showering their surrounding districts. {slime4} {name} has been reborn in slime. {slime4}'.format( slime4=ewcfg.emote_slime4, name=cmd.message.author.display_name) else: response = 'You\'re not dead just yet.' # deathreport = "You were {} by {}. {}".format(kill_descriptor, cmd.message.author.display_name, ewcfg.emote_slimeskull) # deathreport = "{} ".format(ewcfg.emote_slimeskull) + fe_utils.formatMessage(member, deathreport) if slimeoid.life_state == ewcfg.slimeoid_state_active: reunite = "" brain = sl_static.brain_map.get(slimeoid.ai) reunite += brain.str_revive.format(slimeoid_name=slimeoid.name) new_poi = poi_static.id_to_poi.get(player_data.poi) revivechannel = fe_utils.get_channel(cmd.guild, new_poi.channel) reunite = fe_utils.formatMessage(cmd.message.author, reunite) await fe_utils.send_message(cmd.client, revivechannel, reunite) # Send the response to the player. await fe_utils.send_message( cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response))
async def tutorial_cmd(cmd): user_data = EwUser(member=cmd.message.author) client = cmd.client if user_data.poi not in poi_static.tutorial_pois: return if user_data.id_user not in dungeonutils.user_to_tutorial_state: return await dungeon_utils.begin_tutorial(cmd.message.author) tutorial_state = dungeonutils.user_to_tutorial_state.get(user_data.id_user) tutorial_scene = poi_static.dungeon_tutorial[tutorial_state] cmd_content = cmd.message.content[1:].lower() # Administrators can skip the tutorial if cmd_content == "skiptutorial" and cmd.message.author.guild_permissions.administrator: new_state = 20 dungeonutils.user_to_tutorial_state[user_data.id_user] = new_state scene = poi_static.dungeon_tutorial[new_state] if scene.poi != None: user_data.poi = scene.poi if scene.life_state != None: user_data.life_state = scene.life_state user_data.persist() await ewrolemgr.updateRoles(client=cmd.client, member=cmd.message.author) response = dungeon_utils.format_tutorial_response(scene) poi_def = poi_static.id_to_poi.get(user_data.poi) channels = [poi_def.channel] return await fe_utils.post_in_channels( cmd.guild.id, fe_utils.formatMessage(cmd.message.author, response), channels) if cmd_content in tutorial_scene.options: new_state = tutorial_scene.options.get(cmd_content) dungeonutils.user_to_tutorial_state[user_data.id_user] = new_state scene = poi_static.dungeon_tutorial[new_state] if scene.poi != None: user_data.poi = scene.poi if scene.life_state != None: user_data.life_state = scene.life_state user_data.persist() await ewrolemgr.updateRoles(client=cmd.client, member=cmd.message.author) response = dungeon_utils.format_tutorial_response(scene) poi_def = poi_static.id_to_poi.get(user_data.poi) channels = [poi_def.channel] return await fe_utils.post_in_channels( cmd.guild.id, fe_utils.formatMessage(cmd.message.author, response), channels) else: """ couldn't process the command. bail out!! """ """ bot rule 0: be cute """ randint = random.randint(1, 3) msg_mistake = "ENDLESS WAR is growing frustrated." if randint == 2: msg_mistake = "ENDLESS WAR denies you his favor." elif randint == 3: msg_mistake = "ENDLESS WAR pays you no mind." msg = await fe_utils.send_message(client, cmd.message.channel, msg_mistake) await asyncio.sleep(2) try: await msg.delete() pass except: pass # response = dungeon_utils.format_tutorial_response(tutorial_scene) # return await fe_utils.send_message(client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) return
async def enlist(cmd): user_data = EwUser(member=cmd.message.author) if user_data.life_state == ewcfg.life_state_shambler: response = "You lack the higher brain functions required to {}.".format(cmd.tokens[0]) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) user_slimes = user_data.slimes time_now = int(time.time()) bans = user_data.get_bans() vouchers = user_data.get_vouchers() if user_data.life_state == ewcfg.life_state_corpse: response = "You're dead, bitch." return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) elif ewutils.active_restrictions.get(user_data.id_user) != None and ewutils.active_restrictions.get(user_data.id_user) > 0: response = "You can't do that right now." return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) elif user_slimes < ewcfg.slimes_toenlist: response = "You need to mine more slime to rise above your lowly station. ({}/{})".format(user_slimes, ewcfg.slimes_toenlist) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) if cmd.tokens_count > 1: desired_faction = cmd.tokens[1].lower() else: response = "Which faction? Say '{} {}', '{} {}', or '{} {}'.".format(ewcfg.cmd_enlist, ewcfg.faction_killers, ewcfg.cmd_enlist, ewcfg.faction_rowdys, ewcfg.cmd_enlist, ewcfg.faction_slimecorp) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) if desired_faction == ewcfg.faction_killers: if ewcfg.faction_killers in bans: response = "You are banned from enlisting in the {}.".format(ewcfg.faction_killers) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) elif ewcfg.faction_killers not in vouchers and user_data.faction != ewcfg.faction_killers: response = "You need a current gang member's permission to join the {}.".format(ewcfg.faction_killers) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) elif user_data.life_state in [ewcfg.life_state_enlisted, ewcfg.life_state_kingpin] and user_data.faction == ewcfg.faction_killers: response = "You are already enlisted in the {}! Look, your name is purple! Get a clue, idiot.".format(user_data.faction) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) elif user_data.faction == ewcfg.faction_rowdys or user_data.faction == ewcfg.faction_slimecorp: response = "Traitor! You can only {} in the {}, you treacherous cretin. Ask for a {} if you're that weak-willed.".format(ewcfg.cmd_enlist, user_data.faction, ewcfg.cmd_pardon) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) # elif user_data.poi not in [ewcfg.poi_id_copkilltown]: # response = "How do you want to enlist in a gang's forces without even being in their headquarters? Get going to Cop Killtown, bitch." # return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) else: response = "Enlisting in the {}.".format(ewcfg.faction_killers) user_data.life_state = ewcfg.life_state_enlisted user_data.faction = ewcfg.faction_killers user_data.time_lastenlist = time_now + ewcfg.cd_enlist for faction in vouchers: user_data.unvouch(faction) user_data.persist() await ewrolemgr.updateRoles(client=cmd.client, member=cmd.message.author) elif desired_faction == ewcfg.faction_rowdys: if ewcfg.faction_rowdys in bans: response = "You are banned from enlisting in the {}.".format(ewcfg.faction_rowdys) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) if ewcfg.faction_rowdys not in vouchers and user_data.faction != ewcfg.faction_rowdys: response = "You need a current gang member's permission to join the {}.".format(ewcfg.faction_rowdys) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) elif user_data.life_state in [ewcfg.life_state_enlisted, ewcfg.life_state_kingpin] and user_data.faction == ewcfg.faction_rowdys: response = "You are already enlisted in the {}! Look, your name is pink! Get a clue, idiot.".format(user_data.faction) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) elif user_data.faction == ewcfg.faction_killers or user_data.faction == ewcfg.faction_slimecorp: response = "Traitor! You can only {} in the {}, you treacherous cretin. Ask for a {} if you're that weak-willed.".format(ewcfg.cmd_enlist, user_data.faction, ewcfg.cmd_pardon) return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) # elif user_data.poi not in [ewcfg.poi_id_rowdyroughhouse]: # response = "How do you want to enlist in a gang's forces without even being in their headquarters? Get going to the Rowdy Roughhouse, bitch." # return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) else: response = "Enlisting in the {}.".format(ewcfg.faction_rowdys) user_data.life_state = ewcfg.life_state_enlisted user_data.faction = ewcfg.faction_rowdys user_data.time_lastenlist = time_now + ewcfg.cd_enlist for faction in vouchers: user_data.unvouch(faction) user_data.persist() await ewrolemgr.updateRoles(client=cmd.client, member=cmd.message.author) elif desired_faction == ewcfg.faction_slimecorp: response = "Sorry, pal. That ship has sailed." return await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) else: response = "That's not a valid gang you can enlist in, bitch." # Send the response to the player. await fe_utils.send_message(cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response))
async def defect(cmd): accepted = False member = cmd.message.author modauth = 0 response = "You feel...traitor-ish today. Hey mods, any takers? Let them free, !yes or !no?" await fe_utils.send_message( cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) try: message = await cmd.client.wait_for( 'message', timeout=30, check=lambda message: 0 < ewrolemgr.checkClearance( member=message.author) <= 4 and message.content.lower( ) in [ewcfg.cmd_yes, ewcfg.cmd_no]) if message != None: if message.content.lower() == ewcfg.cmd_yes: accepted = True modauth = message.author if message.content.lower() == ewcfg.cmd_no: accepted = False except Exception as e: print(e) accepted = False if not accepted: response = "Well if it isn't the boy who cried backstab. Guess you won't be going anywhere." return await fe_utils.send_message( cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response)) else: member_data = EwUser(member=cmd.message.author) mod_data = EwUser(member=modauth) member_data.unban(faction=mod_data.faction) if member_data.faction == "": response = "{} has been allowed to join the {} again.".format( member.display_name, mod_data.faction) else: faction_old = member_data.faction member_data.faction = "" if member_data.life_state == ewcfg.life_state_enlisted: member_data.life_state = ewcfg.life_state_juvenile member_data.weapon = -1 member_data.sidearm = -1 response = "{} has been released from their association with the {}.".format( member.display_name, faction_old) member_poi = poi_static.id_to_poi.get(member_data.poi) if move_utils.inaccessible(user_data=member_data, poi=member_poi): member_data.poi = ewcfg.poi_id_downtown member_data.persist() await ewrolemgr.updateRoles(client=cmd.client, member=member) leak_channel = fe_utils.get_channel(server=cmd.guild, channel_name='squickyleaks') await fe_utils.send_message( cmd.client, leak_channel, "{}: Let {} defect.".format(modauth.display_name, member.display_name)) await fe_utils.send_message( cmd.client, cmd.message.channel, fe_utils.formatMessage(cmd.message.author, response))