async def take(cmd): user_data = EwUser(member=cmd.message.author) response = "" poi = ewcfg.id_to_poi.get(user_data.poi) if poi.community_chest == None: response = "There is no community chest here." return await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response)) else: if len(poi.factions) > 0 and user_data.faction not in poi.factions: response = "Get real, asshole. You haven't even enlisted into this gang yet, so it's not like they'd trust you with a key to their valubles." return await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response)) item_search = ewutils.flattenTokenListToString(cmd.tokens[1:]) item_sought = ewitem.find_item(item_search = item_search, id_user = poi.community_chest, id_server = cmd.guild.id if cmd.guild is not None else None) if item_sought: if item_sought.get('item_type') == ewcfg.it_food: food_items = ewitem.inventory( id_user = cmd.message.author.id, id_server = cmd.guild.id, item_type_filter = ewcfg.it_food ) if len(food_items) >= user_data.get_food_capacity(): response = "You can't carry any more food items." return await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response)) if item_sought.get('item_type') == ewcfg.it_weapon: weapons_held = ewitem.inventory( id_user = cmd.message.author.id, id_server = cmd.guild.id, item_type_filter = ewcfg.it_weapon ) if user_data.life_state == ewcfg.life_state_corpse: response = "Ghosts can't hold weapons." return await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response)) elif len(weapons_held) >= user_data.get_weapon_capacity(): response = "You can't carry any more weapons." return await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response)) ewitem.give_item(id_item = item_sought.get('id_item'), id_server = user_data.id_server, id_user = user_data.id_user) response = "You retrieve a {} from the community chest.".format(item_sought.get("name")) else: if item_search: response = "There isn't one here." else: response = "{} which item? (check **{}**)".format(cmd.tokens[0], ewcfg.cmd_communitychest) await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response))
async def store(cmd): user_data = EwUser(member=cmd.message.author) response = "" poi = ewcfg.id_to_poi.get(user_data.poi) if poi.community_chest == None: response = "There is no community chest here." return await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response)) else: if len(poi.factions) > 0 and user_data.faction not in poi.factions: response = "Get real, asshole. You haven't even enlisted into this gang yet, so it's not like they'd trust you with a key to their valubles." return await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response)) item_search = ewutils.flattenTokenListToString(cmd.tokens[1:]) item_sought = ewitem.find_item(item_search = item_search, id_user = cmd.message.author.id, id_server = cmd.guild.id if cmd.guild is not None else None) if item_sought: item = EwItem(id_item = item_sought.get("id_item")) if not item.soulbound: if item.item_type == ewcfg.it_weapon: if user_data.weapon >= 0 and item.id_item == user_data.weapon: if user_data.weaponmarried: weapon = ewcfg.weapon_map.get(item.item_props.get("weapon_type")) response = "Your cuckoldry is appreciated, but your {} will always remain faithful to you.".format(item_sought.get('name')) return await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response)) else: user_data.weapon = -1 user_data.persist() elif item.id_item == user_data.sidearm: user_data.sidearm = -1 user_data.persist() if item.item_type == ewcfg.it_cosmetic: if "adorned" in item.item_props: item.item_props["adorned"] = "false" if "slimeoid" in item.item_props: item.item_props["slimeoid"] = "false" item.persist() ewitem.give_item(id_item = item.id_item, id_server = item.id_server, id_user = poi.community_chest) response = "You store your {} in the community chest.".format(item_sought.get("name")) else: response = "You can't {} soulbound items.".format(cmd.tokens[0]) else: if item_search: response = "You don't have one" else: response = "{} which item? (check **!inventory**)".format(cmd.tokens[0]) await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response))
async def smeltsoul(cmd): item = ewitem.find_item(item_search="reanimatedcorpse", id_user=cmd.message.author.id, id_server=cmd.message.server.id) if not item: response = "You can't rip a soul out of a nonexistent object." else: item_obj = ewitem.EwItem(id_item=item.get('id_item')) if item_obj.item_props.get('target') != None and item_obj.item_props.get('target') != "": targetid = item_obj.item_props.get('target') ewitem.give_item(id_user=cmd.message.author.id, id_item=targetid, id_server=cmd.message.server.id) response = "You ripped the soul out of the reanimated corpse. It's in mangled bits now." ewitem.item_delete(id_item=item.get('id_item')) else: response = "That's not a reanimated corpse. It only looks like one. Get rid of the fake shit and we'll get started." await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response))
async def reel(cmd): user_data = EwUser(member = cmd.message.author) if cmd.message.author.id not in fishers.keys(): fishers[cmd.message.author.id] = EwFisher() fisher = fishers[cmd.message.author.id] poi = ewcfg.id_to_poi.get(user_data.poi) # Ghosts cannot fish. if user_data.life_state == ewcfg.life_state_corpse: response = "You can't fish while you're dead. Try {}.".format(ewcfg.cmd_revive) elif cmd.message.channel.name in [ewcfg.channel_tt_pier, ewcfg.channel_jp_pier, ewcfg.channel_cl_pier, ewcfg.channel_afb_pier, ewcfg.channel_vc_pier, ewcfg.channel_se_pier, ewcfg.channel_ferry]: # Players who haven't cast a line cannot reel. if fisher.fishing == False: response = "You haven't cast your hook yet. Try !cast." # If a fish isn't biting, then a player reels in nothing. elif fisher.bite == False and fisher.fishing == True: fisher.current_fish = "" fisher.current_size = "" fisher.fishing = False fisher.pier = "" response = "You reeled in too early! Nothing was caught." # On successful reel. else: if fisher.current_fish == "item": slimesea_inventory = ewitem.inventory(id_server = cmd.message.server.id, id_user = ewcfg.poi_id_slimesea) pier_poi = ewcfg.id_to_poi.get(fisher.pier) if pier_poi.pier_type != ewcfg.fish_slime_saltwater or len(slimesea_inventory) == 0 or random.random() < 0.5: item = random.choice(ewcfg.mine_results) unearthed_item_amount = (random.randrange(5) + 8) # anywhere from 8-12 drops item_props = ewitem.gen_item_props(item) for creation in range(unearthed_item_amount): ewitem.item_create( item_type = item.item_type, id_user = cmd.message.author.id, id_server = cmd.message.server.id, item_props = item_props ) response = "You reel in {} {}s! ".format(unearthed_item_amount, item.str_name) else: item = random.choice(slimesea_inventory) ewitem.give_item(id_item = item.get('id_item'), member = cmd.message.author) response = "You reel in a {}!".format(item.get('name')) fisher.fishing = False fisher.bite = False fisher.current_fish = "" fisher.current_size = "" fisher.pier = "" user_data.persist() else: user_initial_level = user_data.slimelevel gang_bonus = False has_fishingrod = False if user_data.weapon >= 0: weapon_item = EwItem(id_item = user_data.weapon) weapon = ewcfg.weapon_map.get(weapon_item.item_props.get("weapon_type")) if weapon.id_weapon == "fishingrod": has_fishingrod = True value = 0 if fisher.current_size == ewcfg.fish_size_miniscule: slime_gain = ewcfg.fish_gain * 1 value += 10 elif fisher.current_size == ewcfg.fish_size_small: slime_gain = ewcfg.fish_gain * 2 value += 20 elif fisher.current_size == ewcfg.fish_size_average: slime_gain = ewcfg.fish_gain * 3 value += 30 elif fisher.current_size == ewcfg.fish_size_big: slime_gain = ewcfg.fish_gain * 4 value += 40 elif fisher.current_size == ewcfg.fish_size_huge: slime_gain = ewcfg.fish_gain * 5 value += 50 else: slime_gain = ewcfg.fish_gain * 6 value += 60 if ewcfg.fish_map[fisher.current_fish].rarity == ewcfg.fish_rarity_common: value += 10 if ewcfg.fish_map[fisher.current_fish].rarity == ewcfg.fish_rarity_uncommon: value += 20 if ewcfg.fish_map[fisher.current_fish].rarity == ewcfg.fish_rarity_rare: value += 30 if ewcfg.fish_map[fisher.current_fish].rarity == ewcfg.fish_rarity_promo: value += 40 if user_data.life_state == 2: if ewcfg.fish_map[fisher.current_fish].catch_time == ewcfg.fish_catchtime_day and user_data.faction == ewcfg.faction_rowdys: gang_bonus = True slime_gain = slime_gain * 1.5 value += 20 if ewcfg.fish_map[fisher.current_fish].catch_time == ewcfg.fish_catchtime_night and user_data.faction == ewcfg.faction_killers: gang_bonus = True slime_gain = slime_gain * 1.5 value += 20 if has_fishingrod == True: slime_gain = slime_gain * 2 if fisher.current_fish == "plebefish": slime_gain = ewcfg.fish_gain * .5 value = 10 if poi.is_subzone: district_data = EwDistrict(district = poi.mother_district, id_server = cmd.message.server.id) else: district_data = EwDistrict(district = poi.id_poi, id_server = cmd.message.server.id) if district_data.controlling_faction != "" and district_data.controlling_faction == user_data.faction: slime_gain *= 2 ewitem.item_create( id_user = cmd.message.author.id, id_server = cmd.message.server.id, item_type = ewcfg.it_food, item_props = { 'id_food': ewcfg.fish_map[fisher.current_fish].id_fish, 'food_name': ewcfg.fish_map[fisher.current_fish].str_name, 'food_desc': ewcfg.fish_map[fisher.current_fish].str_desc, 'recover_hunger': 20, 'str_eat': ewcfg.str_eat_raw_material.format(ewcfg.fish_map[fisher.current_fish].str_name), 'rarity': ewcfg.fish_map[fisher.current_fish].rarity, 'size': fisher.current_size, 'time_expir': time.time() + ewcfg.std_food_expir, 'time_fridged': 0, 'acquisition': ewcfg.acquisition_fishing, 'value': value } ) response = "You reel in a {fish}! {flavor} You grab hold and wring {slime} slime from it. "\ .format(fish = ewcfg.fish_map[fisher.current_fish].str_name, flavor = ewcfg.fish_map[fisher.current_fish].str_desc, slime = str(slime_gain)) if gang_bonus == True: if user_data.faction == ewcfg.faction_rowdys: response += "The Rowdy-pride this fish is showing gave you more slime than usual. " elif user_data.faction == ewcfg.faction_killers: response += "The Killer-pride this fish is showing gave you more slime than usual. " levelup_response = user_data.change_slimes(n = slime_gain, source = ewcfg.source_fishing) was_levelup = True if user_initial_level < user_data.slimelevel else False # Tell the player their slime level increased. if was_levelup: response += levelup_response market_data = EwMarket(id_server=user_data.id_server) if market_data.caught_fish == ewcfg.debugfish_goal and fisher.pier in ewcfg.debugpiers: item = ewcfg.debugitem ewitem.item_create( item_type=ewcfg.it_item, id_user=user_data.id_user, id_server=user_data.id_server, item_props={ 'id_item': item.id_item, 'context': item.context, 'item_name': item.str_name, 'item_desc': item.str_desc, } ), ewutils.logMsg('Created item: {}'.format(item.id_item)) item = EwItem(id_item=item.id_item) item.persist() response += ewcfg.debugfish_response market_data.caught_fish += 1 market_data.persist() elif market_data.caught_fish < ewcfg.debugfish_goal and fisher.pier in ewcfg.debugpiers: market_data.caught_fish += 1 market_data.persist() fisher.fishing = False fisher.bite = False fisher.current_fish = "" fisher.current_size = "" fisher.pier = "" user_data.persist() else: response = "You cast your fishing rod unto a sidewalk. That is to say, you've accomplished nothing. Go to a pier if you want to fish." await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response))
async def revive(cmd): time_now = int(time.time()) response = "" if cmd.message.channel.name != ewcfg.channel_endlesswar and cmd.message.channel.name != ewcfg.channel_sewers: response = "Come to me. I hunger. #{}.".format(ewcfg.channel_sewers) else: player_data = EwUser(member=cmd.message.author) time_until_revive = (player_data.time_lastdeath + player_data.degradation) - time_now if time_until_revive > 0: response = "ENDLESS WAR is not ready to {} you yet ({}s).".format( cmd.tokens[0], time_until_revive) return await ewutils.send_message( cmd.client, cmd.message.channel, ewutils.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.message.server.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 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 = ewcfg.id_to_poi.get(player_data.poi_death) if ewmap.inaccessible(poi=poi_death, user_data=player_data): player_data.poi = ewcfg.poi_id_downtown 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_downtown 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.message.server.id) # the amount of slime showered is divided equally amongst the districts districts_amount = len(ewcfg.capturable_districts) geyser_amount = int(0.5 * sewer_data.slimes / districts_amount) # Get a list of all the districts for poi in ewcfg.capturable_districts: district_data = EwDistrict(district=poi, id_server=cmd.message.server.id) district_data.change_slimes(n=geyser_amount) sewer_data.change_slimes(n=-1 * geyser_amount) district_data.persist() sewer_data.persist() sewer_inv = ewitem.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(ewcfg.capturable_districts) ewitem.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) + ewutils.formatMessage(member, deathreport) if slimeoid.life_state == ewcfg.slimeoid_state_active: reunite = "" brain = ewcfg.brain_map.get(slimeoid.ai) reunite += brain.str_revive.format(slimeoid_name=slimeoid.name) new_poi = ewcfg.id_to_poi.get(player_data.poi) revivechannel = ewutils.get_channel(cmd.message.server, new_poi.channel) reunite = ewutils.formatMessage(cmd.message.author, reunite) await ewutils.send_message(cmd.client, revivechannel, reunite) # Send the response to the player. await ewutils.send_message( cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response))
async def smelt(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 ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response)) # Find sought recipe. if cmd.tokens_count > 1: sought_result = ewutils.flattenTokenListToString(cmd.tokens[1:]) found_recipe = ewcfg.smelting_recipe_map.get(sought_result) if found_recipe != None: if 'soul' in found_recipe.products: return await smeltsoul(cmd=cmd) # Checks what ingredients are needed to smelt the recipe. necessary_ingredients = found_recipe.ingredients necessary_ingredients_list = [] owned_ingredients = [] # Seeks out the necessary ingredients in your inventory. missing_ingredients = [] for matched_item in necessary_ingredients: necessary_items = necessary_ingredients.get(matched_item) necessary_str = "{} {}".format(necessary_items, matched_item) if necessary_items > 1: necessary_str += "s" necessary_ingredients_list.append(necessary_str) sought_items = ewitem.find_item_all(item_search = matched_item, id_user = user_data.id_user, id_server = user_data.id_server) missing_items = necessary_items - len(sought_items) if missing_items > 0: missing_str = "{} {}".format(missing_items, matched_item) if missing_items > 1: missing_str += "s" missing_ingredients.append(missing_str) else: for i in range(necessary_ingredients.get(matched_item)): sought_item = sought_items.pop() owned_ingredients.append(sought_item.get('id_item')) # If you don't have all the necessary ingredients. if len(missing_ingredients) > 0: response = "You’ve never done this before, have you? To smelt {}, you’ll need to combine *{}*.".format(found_recipe.str_name, ewutils.formatNiceList(names = necessary_ingredients_list, conjunction = "and")) response += " You are missing *{}*.".format(ewutils.formatNiceList(names = missing_ingredients, conjunction = "and")) else: # If you try to smelt a random cosmetic, use old smelting code to calculate what your result will be. if found_recipe.id_recipe == "cosmetic": patrician_rarity = 20 patrician_smelted = random.randint(1, patrician_rarity) patrician = False if patrician_smelted == 1: patrician = True cosmetics_list = [] for result in ewcfg.cosmetic_items_list: if result.acquisition == ewcfg.acquisition_smelting: cosmetics_list.append(result) else: pass items = [] for cosmetic in cosmetics_list: if patrician and cosmetic.rarity == ewcfg.rarity_patrician: items.append(cosmetic) elif not patrician and cosmetic.rarity == ewcfg.rarity_plebeian: items.append(cosmetic) item = items[random.randint(0, len(items) - 1)] ewitem.item_create( item_type = ewcfg.it_cosmetic, id_user = cmd.message.author.id, id_server = cmd.message.server.id, item_props = { 'id_cosmetic': item.id_cosmetic, 'cosmetic_name': item.str_name, 'cosmetic_desc': item.str_desc, 'rarity': item.rarity, 'adorned': 'false' } ) # If you're trying to smelt a specific item. else: possible_results = [] # Matches the recipe's listed products to actual items. for result in ewcfg.smelt_results: if hasattr(result, 'id_item'): if result.id_item not in found_recipe.products: pass else: possible_results.append(result) if hasattr(result, 'id_food'): if result.id_food not in found_recipe.products: pass else: possible_results.append(result) if hasattr(result, 'id_cosmetic'): if result.id_cosmetic not in found_recipe.products: pass else: possible_results.append(result) if hasattr(result, 'id_weapon'): if result.id_weapon not in found_recipe.products: pass else: possible_results.append(result) if hasattr(result, 'id_furniture'): if result.id_furniture not in found_recipe.products: pass else: possible_results.append(result) # If there are multiple possible products, randomly select one. item = random.choice(possible_results) item_props = ewitem.gen_item_props(item) newitem_id = ewitem.item_create( item_type = item.item_type, id_user = cmd.message.author.id, id_server = cmd.message.server.id, item_props = item_props ) for id_item in owned_ingredients: item_check = ewitem.EwItem(id_item=id_item) if item_check.item_props.get('id_cosmetic') != 'soul': ewitem.item_delete(id_item = id_item) else: newitem = ewitem.EwItem(id_item=newitem_id) newitem.item_props['target'] = id_item newitem.persist() ewitem.give_item(id_item=id_item, id_user='******', id_server=cmd.message.server.id) name = "" if hasattr(item, 'str_name'): name = item.str_name elif hasattr(item, 'id_weapon'): name = item.id_weapon response = "You sacrifice your {} to smelt a {}!!".format(ewutils.formatNiceList(names = necessary_ingredients_list, conjunction = "and"), name) user_data.persist() else: response = "There is no recipe by the name." else: response = "Please specify a desired smelt result." # Send response await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response))
async def reel(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 ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response)) if ewutils.channel_name_is_poi(cmd.message.channel.name) == False: return await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, "You must {} in a zone's channel.".format(cmd.tokens[0]))) if cmd.message.author.id not in fishers.keys(): fishers[cmd.message.author.id] = EwFisher() fisher = fishers[cmd.message.author.id] poi = ewcfg.id_to_poi.get(user_data.poi) # Ghosts cannot fish. if user_data.life_state == ewcfg.life_state_corpse: response = "You can't fish while you're dead. Try {}.".format(ewcfg.cmd_revive) elif user_data.poi in ewcfg.piers: poi = ewcfg.id_to_poi.get(user_data.poi) district_data = EwDistrict(district = poi.id_poi, id_server = user_data.id_server) if district_data.is_degraded(): response = "{} has been degraded by shamblers. You can't {} here anymore.".format(poi.str_name, cmd.tokens[0]) return await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response)) # Players who haven't cast a line cannot reel. if fisher.fishing == False: response = "You haven't cast your hook yet. Try !cast." # If a fish isn't biting, then a player reels in nothing. elif fisher.bite == False: fisher.stop() response = "You reeled in too early! Nothing was caught." # On successful reel. else: if fisher.current_fish == "item": slimesea_inventory = ewitem.inventory(id_server = cmd.guild.id, id_user = ewcfg.poi_id_slimesea) if fisher.pier.pier_type != ewcfg.fish_slime_saltwater or len(slimesea_inventory) == 0 or random.random() < 0.5: item = random.choice(ewcfg.mine_results) unearthed_item_amount = (random.randrange(5) + 8) # anywhere from 8-12 drops item_props = ewitem.gen_item_props(item) for creation in range(unearthed_item_amount): ewitem.item_create( item_type = item.item_type, id_user = cmd.message.author.id, id_server = cmd.guild.id, item_props = item_props ) response = "You reel in {} {}s! ".format(unearthed_item_amount, item.str_name) else: item = random.choice(slimesea_inventory) ewitem.give_item(id_item = item.get('id_item'), member = cmd.message.author) response = "You reel in a {}!".format(item.get('name')) fisher.stop() user_data.persist() else: user_initial_level = user_data.slimelevel gang_bonus = False has_fishingrod = False if user_data.weapon >= 0: weapon_item = EwItem(id_item = user_data.weapon) weapon = ewcfg.weapon_map.get(weapon_item.item_props.get("weapon_type")) if weapon.id_weapon == "fishingrod": has_fishingrod = True #if user_data.sidearm >= 0: # sidearm_item = EwItem(id_item=user_data.sidearm) # sidearm = ewcfg.weapon_map.get(sidearm_item.item_props.get("weapon_type")) # if sidearm.id_weapon == "fishingrod": # has_fishingrod = True value = 0 if fisher.current_size == ewcfg.fish_size_miniscule: slime_gain = ewcfg.fish_gain * 1 value += 10 elif fisher.current_size == ewcfg.fish_size_small: slime_gain = ewcfg.fish_gain * 2 value += 20 elif fisher.current_size == ewcfg.fish_size_average: slime_gain = ewcfg.fish_gain * 3 value += 30 elif fisher.current_size == ewcfg.fish_size_big: slime_gain = ewcfg.fish_gain * 4 value += 40 elif fisher.current_size == ewcfg.fish_size_huge: slime_gain = ewcfg.fish_gain * 5 value += 50 else: slime_gain = ewcfg.fish_gain * 6 value += 60 if ewcfg.fish_map[fisher.current_fish].rarity == ewcfg.fish_rarity_common: value += 10 if ewcfg.fish_map[fisher.current_fish].rarity == ewcfg.fish_rarity_uncommon: value += 20 if ewcfg.fish_map[fisher.current_fish].rarity == ewcfg.fish_rarity_rare: value += 30 if ewcfg.fish_map[fisher.current_fish].rarity == ewcfg.fish_rarity_promo: value += 40 if user_data.life_state == 2: if ewcfg.fish_map[fisher.current_fish].catch_time == ewcfg.fish_catchtime_day and user_data.faction == ewcfg.faction_boober: gang_bonus = True slime_gain = slime_gain * 1.5 value += 20 if ewcfg.fish_map[fisher.current_fish].catch_time == ewcfg.fish_catchtime_night and user_data.faction == ewcfg.faction_milkers: gang_bonus = True slime_gain = slime_gain * 1.5 value += 20 if has_fishingrod == True: slime_gain = slime_gain * 2 if fisher.current_fish == "plebefish": slime_gain = ewcfg.fish_gain * .5 value = 10 controlling_faction = ewutils.get_subzone_controlling_faction(user_data.poi, user_data.id_server) if controlling_faction != "" and controlling_faction == user_data.faction: slime_gain *= 2 if user_data.poi == ewcfg.poi_id_juviesrow_pier: slime_gain = int(slime_gain / 4) trauma = ewcfg.trauma_map.get(user_data.trauma) if trauma != None and trauma.trauma_class == ewcfg.trauma_class_slimegain: slime_gain *= (1 - 0.5 * user_data.degradation / 100) slime_gain = max(0, round(slime_gain)) ewitem.item_create( id_user = cmd.message.author.id, id_server = cmd.guild.id, item_type = ewcfg.it_food, item_props = { 'id_food': ewcfg.fish_map[fisher.current_fish].id_fish, 'food_name': ewcfg.fish_map[fisher.current_fish].str_name, 'food_desc': ewcfg.fish_map[fisher.current_fish].str_desc, 'recover_hunger': 20, 'str_eat': ewcfg.str_eat_raw_material.format(ewcfg.fish_map[fisher.current_fish].str_name), 'rarity': ewcfg.fish_map[fisher.current_fish].rarity, 'size': fisher.current_size, 'time_expir': time.time() + ewcfg.std_food_expir, 'time_fridged': 0, 'acquisition': ewcfg.acquisition_fishing, 'value': value } ) response = "You reel in a {fish}! {flavor} You grab hold and wring {slime:,} slime from it. "\ .format(fish = ewcfg.fish_map[fisher.current_fish].str_name, flavor = ewcfg.fish_map[fisher.current_fish].str_desc, slime = slime_gain) if gang_bonus == True: if user_data.faction == ewcfg.faction_boober: response += "The Rowdy-pride this fish is showing gave you more slime than usual. " elif user_data.faction == ewcfg.faction_milkers: response += "The Killer-pride this fish is showing gave you more slime than usual. " levelup_response = user_data.change_slimes(n = slime_gain, source = ewcfg.source_fishing) was_levelup = True if user_initial_level < user_data.slimelevel else False # Tell the player their slime level increased. if was_levelup: response += levelup_response market_data = EwMarket(id_server=user_data.id_server) # if market_data.caught_fish == ewcfg.debugfish_goal and fisher.pier.id_poi in ewcfg.debugpiers: # # item = ewcfg.debugitem # # ewitem.item_create( # item_type=ewcfg.it_item, # id_user=user_data.id_user, # id_server=user_data.id_server, # item_props={ # 'id_item': item.id_item, # 'context': item.context, # 'item_name': item.str_name, # 'item_desc': item.str_desc, # } # ), # ewutils.logMsg('Created item: {}'.format(item.id_item)) # item = EwItem(id_item=item.id_item) # item.persist() # # response += ewcfg.debugfish_response # market_data.caught_fish += 1 # market_data.persist() # # elif market_data.caught_fish < ewcfg.debugfish_goal and fisher.pier.id_poi in ewcfg.debugpiers: # market_data.caught_fish += 1 # market_data.persist() fisher.stop() # Flag the user for PvP enlisted = True if user_data.life_state == ewcfg.life_state_enlisted else False # user_data.time_expirpvp = ewutils.calculatePvpTimer(user_data.time_expirpvp, ewcfg.time_pvp_fish, enlisted) # user_data.persist() # await ewrolemgr.updateRoles(client = cmd.client, member = cmd.message.author) else: response = "You cast your fishing rod unto a sidewalk. That is to say, you've accomplished nothing. Go to a pier if you want to fish." await ewutils.send_message(cmd.client, cmd.message.channel, ewutils.formatMessage(cmd.message.author, response))