Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- import random
- import time
- import timeit
- # ----------
- # game data configs
- # ----------
- ENEMIES = {
- # Windmill Town
- "WT1": {
- "name": "Bandit",
- "island": "Windmill Town",
- "damage": 5,
- "health": 25,
- "miss": 2,
- "power": None,
- "exp": 10,
- "money": 100,
- "drops": [("Bandit Leather [Common Item]", 3)],
- },
- "WT2": {
- "name": "Rouge Bandit",
- "island": "Windmill Town",
- "damage": 30,
- "health": 150,
- "miss": 3,
- "power": "Weak Smash",
- "exp": 30,
- "money": 150,
- "drops": [
- ("Black Leather [Common Item]", 3),
- ("Weak Smash [Uncommon Power]", 4),
- ],
- },
- # Marine Island
- "MI1": {
- "name": "Navy Lieutenant",
- "island": "Marine Island",
- "damage": 55,
- "health": 275,
- "miss": 3,
- "power": None,
- "exp": 50,
- "money": 200,
- "drops": [("Marine Hat [Common Item]", 3)],
- },
- "MI2": {
- "name": "Navy Captain",
- "island": "Marine Island",
- "damage": 80,
- "health": 400,
- "miss": 4,
- "power": "Flying Slash",
- "exp": 70,
- "money": 250,
- "drops": [("Flying Slash [Uncommon Power]", 4)],
- },
- "MI3": {
- "name": "Captain Morgy",
- "island": "Marine Island",
- "damage": 130,
- "health": 650,
- "miss": 4,
- "power": "Smash",
- "exp": 110,
- "money": 350,
- "is_boss": True,
- "boss_chance": 10, # 1 in 10 chance to spawn
- "drops": [
- ("Morgan's Axe [Very Rare Item]", 7),
- ("Smash [Rare Power]", 5),
- ],
- },
- # Gray Town
- "GT1": {
- "name": "Stout Squatter",
- "island": "Gray Town",
- "damage": 105,
- "health": 525,
- "miss": 5,
- "power": None,
- "exp": 90,
- "money": 300,
- "drops": [("Platinum Robot Head [Ancient Item]", 300)],
- },
- "GT2": {
- "name": "Squatter Commander",
- "island": "Gray Town",
- "damage": 130,
- "health": 650,
- "miss": 5,
- "power": "Flying Slash",
- "exp": 110,
- "money": 350,
- "drops": [("Platinum Robot Torso [Ancient Item]", 300)],
- },
- # Sandy Barren
- "SB1": {
- "name": "Desert Watcher",
- "island": "Sandy Barren",
- "damage": 155,
- "health": 775,
- "miss": 5,
- "power": "Weak Smash",
- "exp": 130,
- "money": 400,
- "drops": [
- ("Sandy Cloth [Common Item]", 3),
- ("Weak Smash [Uncommon Power]", 4),
- ],
- },
- "SB2": {
- "name": "Desert Knight",
- "island": "Sandy Barren",
- "damage": 180,
- "health": 900,
- "miss": 5,
- "power": "Flying Slash",
- "exp": 150,
- "money": 450,
- "drops": [("Heat-Treated Helmet [Ultra Rare]", 70)],
- },
- # Kingfisher Depths
- "KD1": {
- "name": "Deepsea Abyssal",
- "island": "Kingfisher Depths - Fight",
- "damage": 205,
- "health": 1025,
- "miss": 5,
- "power": "Weak Smash",
- "exp": 180,
- "money": 500,
- "drops": [
- ("Deepsea Coral [Common Item]", 3),
- ("Weak Smash [Uncommon Power]", 4),
- ],
- },
- "KD2": {
- "name": "Coral Guardian",
- "island": "Kingfisher Depths - Castle",
- "damage": 230,
- "health": 1150,
- "miss": 5,
- "power": "Flying Slash",
- "exp": 210,
- "money": 550,
- "drops": [
- ("Aquamarine Pearl [Rare Item]", 12),
- ("Flying Slash [Uncommon Power]", 4),
- ],
- },
- "KD3": {
- "name": "Abyssal Kraken",
- "island": "Kingfisher Depths - Abyssal Reef",
- "damage": 310,
- "health": 1550,
- "miss": 4,
- "power": "Smash",
- "exp": 350,
- "money": 800,
- "is_boss": True,
- "boss_chance": 10, # 1 in 10 chance to spawn
- "drops": [
- ("Kraken Tentacle Trident [Very Rare Item]", 25),
- ("Smash [Rare Power]", 5),
- ],
- },
- # Beast Jungle
- "BJ1": {
- "name": "Jungle Hunter", # Level 100
- "island": "Beast Jungle",
- "damage": 255,
- "health": 1275,
- "miss": 5,
- "power": "Weak Smash",
- "exp": 230,
- "money": 600,
- "drops": [
- ("Jungle Pelt [Common Item]", 3),
- ("Weak Smash [Uncommon Power]", 4),
- ],
- },
- "BJ2": {
- "name": "Wild Chimpanzee", # Level 110
- "island": "Beast Jungle",
- "damage": 280,
- "health": 1400,
- "miss": 5,
- "power": "Weak Smash",
- "exp": 250,
- "money": 650,
- "drops": [
- ("Sharp Fang [Common Item]", 3),
- ("Weak Smash [Uncommon Power]", 4),
- ],
- },
- "BJ3": {
- "name": "Stone Tomb Guardian", # Level 120
- "island": "Beast Jungle - Stone Tomb",
- "damage": 305,
- "health": 1525,
- "miss": 5,
- "power": "Flying Slash",
- "exp": 270,
- "money": 700,
- "drops": [
- ("Ancient Relic [Uncommon Item]", 5),
- ("Flying Slash [Uncommon Power]", 4),
- ],
- },
- "BJ4": {
- "name": "Alpha Tiger", # Level 130
- "island": "Beast Jungle",
- "damage": 330,
- "health": 1650,
- "miss": 4,
- "power": "Flying Slash",
- "exp": 290,
- "money": 750,
- "drops": [
- ("Tiger Striped Hide [Rare Item]", 12),
- ("Flying Slash [Uncommon Power]", 4),
- ],
- },
- }
- POWERS_DATA = {
- "Smash": {
- "full_name": "Smash [Rare Power]",
- "mult": 1.5,
- "desc": "The Enemy's head hits the ground forming a large crack!",
- },
- "Weak Smash": {
- "full_name": "Weak Smash [Uncommon Power]",
- "mult": 1.1,
- "desc": "The Enemy's head hits the ground forming a large crack!",
- },
- "Flying Slash": {
- "full_name": "Flying Slash [Uncommon Power]",
- "mult": 1.2,
- "desc": "A sharp wind strikes the enemy!",
- },
- }
- ISLANDS = {
- "Windmill Town": {
- "travel_lvl": "0-10",
- "arrival_msg": "steps in the grassy plain, the windmills scattered around the island create a peaceful ambience.",
- "menu": "A. Fight | B. Travel | C. Upgrades | D. Stats | E. Inventory | F. Boat Shop | G. Paper | H. Behind Windmill",
- },
- "Marine Island": {
- "travel_lvl": "20-30 (50 BOSS)",
- "arrival_msg": "arrives at the island, covered in marine domes. Strong military willpower fills the air!",
- "menu": "A. Fight | B. Travel | C. Upgrades | D. Stats | E. Inventory | F. Fishing | G. Fallen Note | H. Hero Recruiter",
- },
- "Gray Town": {
- "travel_lvl": "40-50",
- "arrival_msg": "looks around the gray, foggy island. Large piles of rubbish are scattered everywhere.",
- "menu": "A. Fight | B. Travel | C. Upgrades | D. Stats | E. Inventory",
- },
- "Sandy Barren": {
- "travel_lvl": "60-70",
- "arrival_msg": "steps on the hot sand trickling with heat, spotting a nearby desert village.",
- "menu": "A. Fight | B. Travel | C. Upgrades | D. Stats | E. Inventory | F. Pyramid",
- },
- "Kingfisher Depths": {
- "travel_lvl": "80-90 (120 BOSS)",
- "arrival_msg": "arrives at the beautiful underwater city, protected by aquabubble gear.",
- "menu": "A. Fight | B. Travel | C. Upgrades | D. Stats | E. Inventory | F. Castle | G. City | H. Abyssal Reef",
- },
- "Beast Jungle": {
- "travel_lvl": "100-130",
- "arrival_msg": "arrives at the deep jungle, with plants, trees, and wildlife everywhere.",
- "menu": "A. Fight | B. Travel | C. Upgrades | D. Stats | E. Inventory | F. Stone Tomb",
- },
- }
- BOAT_SPEEDS = {
- "Old Boat": 10,
- "Normal Boat": 5,
- "Speedboat": 3,
- "Lightspeed Yacht": 1,
- }
- # ---------
- # player class
- # ----------
- class Player:
- def __init__(self, name="Roger"):
- self.name = name
- self.money = 0
- self.points = 0
- self.damage_points = 0
- self.health_points = 0
- self.base_damage = 5
- self.base_health = 25
- self.experience = 0
- self.exp_needed = 2
- self.put_points_amount = 1
- self.delete_amount = 1
- self.inventory = []
- self.power_inventory = []
- self.max_powers = 5
- self.island = "Windmill Town"
- self.boat = "Old Boat"
- self.hero = False
- self.villain = False
- self.reputation = 0
- self.bounty = 0
- @property
- def max_health(self):
- return self.base_health + (self.health_points * 25)
- @property
- def damage(self):
- return self.base_damage + (self.damage_points * 5)
- @property
- def power_level(self):
- return self.damage_points + self.health_points + self.points
- def add_exp(self, amount):
- self.experience += amount
- print(f"+{amount} Exp!")
- while self.experience >= self.exp_needed:
- self.experience -= self.exp_needed
- self.exp_needed += 8
- self.points += 1
- print("✨ Level Up! +1 Stat Point!")
- def show_stats(self):
- print("\n----------\nStats\n----------")
- print(f"Power Level: {self.power_level}")
- print(f"Damage: {self.damage} | Health: {self.max_health}")
- print(f"Points Available: {self.points}")
- print(f"Money: ${self.money}")
- print(f"EXP: {self.experience}/{self.exp_needed}")
- print(f"Hero: {'Yes' if self.hero else 'No'}")
- print(f"Villain: {'Yes' if self.villain else 'No'}")
- print(f"Reputation: {self.reputation} | Bounty: {self.bounty}")
- def manage_upgrades(self):
- print(f"\nPoints Available: {self.points}")
- print(
- f"Dmg Pts: {self.damage_points} | HP Pts: {self.health_points} | Power Level: {self.power_level}"
- )
- choice = (
- input(
- "A. Damage Points | B. Health Points | C. Set Allocation Amount | ?. Back: "
- )
- .strip()
- .upper()
- )
- if choice == "A":
- self._allocate_points("damage")
- elif choice == "B":
- self._allocate_points("health")
- elif choice == "C":
- val = get_int_input("Set Allocation Amount: ", default=1)
- self.put_points_amount = max(1, val)
- print(f"Set point allocation step to {self.put_points_amount}.")
- def _allocate_points(self, stat_type):
- if self.points <= 0:
- print("No Points Available!")
- return
- to_add = min(self.points, self.put_points_amount)
- self.points -= to_add
- if stat_type == "damage":
- self.damage_points += to_add
- print(f"+{to_add} Damage Point(s)!")
- else:
- self.health_points += to_add
- print(f"+{to_add} Health Point(s)!")
- def manage_inventory(self):
- from collections import Counter
- # Count identical items
- item_counts = Counter(self.inventory)
- # Format inventory as: "Item Name (4x)" or "Item Name" if count > 1
- formatted_inventory = [
- f"{item} ({count}x)" if count > 1 else item
- for item, count in item_counts.items()
- ]
- print(f"\nInventory ({len(self.inventory)} total items):")
- if not formatted_inventory:
- print(" [Empty]")
- else:
- for display_str in formatted_inventory:
- print(f" - {display_str}")
- choice = (
- input(
- "\nA. Delete Item | B. Set Delete Amount | C. Delete All of Item | D. Powers Menu | ?. Back: "
- )
- .strip()
- .upper()
- )
- if choice == "A":
- item = input("Item name to delete: ").strip()
- for _ in range(self.delete_amount):
- if item in self.inventory:
- self.inventory.remove(item)
- print(f"Deleted 1x {item}.")
- else:
- print(f"No '{item}' found.")
- break
- elif choice == "B":
- self.delete_amount = max(
- 1, get_int_input("Set Delete Amount: ", default=1)
- )
- print(f"Delete amount set to {self.delete_amount}.")
- elif choice == "C":
- item = input("Item name to remove completely: ").strip()
- count = self.inventory.count(item)
- if count > 0:
- self.inventory = [i for i in self.inventory if i != item]
- print(f"Removed all {count}x {item}.")
- else:
- print(f"No '{item}' found.")
- elif choice == "D":
- self.manage_powers()
- def manage_powers(self):
- choice = (
- input("\nA. Equip Power | B. Unequip Power | ?. Back: ")
- .strip()
- .upper()
- )
- print(
- f"Equipped Powers ({len(self.power_inventory)}/{self.max_powers}): {self.power_inventory}"
- )
- if choice == "A":
- if len(self.power_inventory) >= self.max_powers:
- print("Max Powers Equipped!")
- return
- p_name = input("Type power item name from inventory: ").strip()
- if p_name in self.inventory and p_name not in self.power_inventory:
- self.power_inventory.append(p_name)
- print(f"Successfully Equipped '{p_name}'!")
- else:
- print("Item not in inventory or already equipped.")
- elif choice == "B":
- p_name = input("Type power item name to unequip: ").strip()
- if p_name in self.power_inventory:
- self.power_inventory.remove(p_name)
- print(f"Successfully Unequipped '{p_name}'.")
- else:
- print("Power not equipped.")
- # --- Save & Load Implementation ---
- def to_dict(self):
- return {
- "name": self.name,
- "money": self.money,
- "points": self.points,
- "damage_points": self.damage_points,
- "health_points": self.health_points,
- "base_damage": self.base_damage,
- "base_health": self.base_health,
- "experience": self.experience,
- "exp_needed": self.exp_needed,
- "put_points_amount": self.put_points_amount,
- "delete_amount": self.delete_amount,
- "inventory": self.inventory,
- "power_inventory": self.power_inventory,
- "max_powers": self.max_powers,
- "island": self.island,
- "boat": self.boat,
- "hero": self.hero,
- "villain": self.villain,
- "reputation": self.reputation,
- "bounty": self.bounty,
- }
- def save_game(self, filename="savegame.json"):
- try:
- with open(filename, "w") as f:
- json.dump(self.to_dict(), f, indent=4)
- print("\n💾 Game saved successfully!")
- except Exception as e:
- print(f"\n❌ Save failed: {e}")
- @classmethod
- def load_game(cls, filename="savegame.json"):
- try:
- with open(filename, "r") as f:
- data = json.load(f)
- player = cls(name=data.get("name", "Roger"))
- for key, val in data.items():
- setattr(player, key, val)
- print("\n💾 Game loaded successfully!")
- return player
- except FileNotFoundError:
- print("\n❌ No save file found.")
- return None
- except Exception as e:
- print(f"\n❌ Error loading save file: {e}")
- return None
- # ----------
- # helper func
- # ----------
- def get_int_input(prompt, default=0):
- val = input(prompt).strip()
- return int(val) if val.isdigit() else default
- def travel_system(player):
- print("\n----------\nIslands\n----------")
- for key, data in ISLANDS.items():
- print(f"- {key} [Power Level {data['travel_lvl']}]")
- if player.hero:
- print("PG. Paradise Guild")
- if player.villain:
- print("VL. Villain's Lair")
- choice = (
- input(
- "Pick Island Name or initial (A=Windmill, B=Marine, C=Gray, D=Sandy, E=Kingfisher, F=Beast Jungle): "
- )
- .strip()
- .upper()
- )
- dest_map = {
- "A": "Windmill Town",
- "B": "Marine Island",
- "C": "Gray Town",
- "D": "Sandy Barren",
- "E": "Kingfisher Depths",
- "F": "Beast Jungle",
- "PG": "Paradise Guild",
- "VL": "Villain's Lair",
- }
- target = dest_map.get(choice, None)
- if target and target in ISLANDS:
- print(f"\n{player.name}: *Travelling...*")
- time.sleep(BOAT_SPEEDS.get(player.boat, 5))
- player.island = target
- print(
- f"Arrived at {target}!\n{player.name} {ISLANDS[target]['arrival_msg']}"
- )
- else:
- print("Cancelled or Invalid Island.")
- # ----------
- # combat
- # ----------
- def start_combat(player, location_override=None):
- target_island = location_override if location_override else player.island
- available = {
- k: v for k, v in ENEMIES.items() if v["island"] == target_island
- }
- if not available:
- print("No enemies found in this area.")
- return
- print("\nEnemies:")
- for k, v in available.items():
- print(f"{k}. {v['name']}")
- print("?. Back")
- choice = input("Select Enemy: ").strip().upper()
- if choice == "?" or choice not in available:
- print("Combat cancelled.")
- return
- enemy_data = available[choice]
- if enemy_data.get("is_boss", False):
- if random.randint(1, enemy_data["boss_chance"]) != 1:
- print(
- f"\nLooks like {enemy_data['name']} is not here right now..."
- )
- return
- print("\n[BOSS ENCOUNTER!]")
- enemy_hp = enemy_data["health"]
- enemy_max_hp = enemy_data["health"]
- player_hp = player.max_health
- enemy_power_lvl = round(enemy_data["damage"] / 5 + enemy_hp / 25) - 2
- print(
- f"\n{enemy_data['name']} [PL {enemy_power_lvl}] vs. {player.name} [PL {player.power_level}]"
- )
- while enemy_hp > 0 and player_hp > 0:
- print(
- f"\n{enemy_data['name']}: {enemy_hp}/{enemy_max_hp} | You: {player_hp}/{player.max_health}"
- )
- timer_start = timeit.default_timer()
- act = input("A. Attack | B. Use Powers | C. Flee: ").strip().upper()
- elapsed = timeit.default_timer() - timer_start
- if act == "A":
- if elapsed < 5:
- dmg = player.damage
- enemy_hp -= dmg
- print(f"You dealt {dmg} damage to {enemy_data['name']}!")
- else:
- print("Took too long! Your attack missed!")
- elif act == "B":
- print(f"\nEquipped Powers: {player.power_inventory}")
- p_used = input(
- "Type Power Name (e.g. Smash, Flying Slash): "
- ).strip()
- if p_used in POWERS_DATA and elapsed < 10:
- p_info = POWERS_DATA[p_used]
- if p_info["full_name"] in player.power_inventory:
- dmg = round(player.damage * p_info["mult"])
- enemy_hp -= dmg
- print(
- f"You unleashed '{p_used}' dealing {dmg} damage! {p_info['desc']}"
- )
- else:
- print("Power not equipped or invalid! Missed!")
- else:
- print("Invalid power or timed out! Missed!")
- elif act == "C":
- print("You fled the battle safely!")
- return
- if enemy_hp <= 0:
- break
- time.sleep(1)
- if random.randint(1, enemy_data["miss"]) == 1:
- print(f"{enemy_data['name']} Missed!")
- else:
- e_dmg = enemy_data["damage"]
- player_hp -= e_dmg
- print(f"{enemy_data['name']} dealt {e_dmg} damage!")
- if (
- enemy_data["power"]
- and random.randint(1, 3) == 1
- and enemy_data["power"] in POWERS_DATA
- ):
- bonus_dmg = round(
- e_dmg * POWERS_DATA[enemy_data["power"]]["mult"] * 0.3
- )
- player_hp -= bonus_dmg
- print(
- f"{enemy_data['name']} unleashed '{enemy_data['power']}' for +{bonus_dmg} extra damage!"
- )
- if player_hp <= 0:
- print(f"\n{player.name} got badly beaten up... Better luck next time.")
- elif enemy_hp <= 0:
- print(f"\nYou Defeated The {enemy_data['name']}!")
- player.money += enemy_data["money"]
- print(f"+${enemy_data['money']}!")
- # --- Diminishing EXP Returns Logic ---
- level_difference = player.power_level - enemy_power_lvl
- gained_exp = enemy_data["exp"]
- if level_difference > 9:
- gained_exp = max(1, round(enemy_data["exp"] * 0.1))
- print("⚠️ Enemy level is too low! EXP gained reduced by 90%.")
- player.add_exp(gained_exp)
- for item_name, chance in enemy_data.get("drops", []):
- if random.randint(1, chance) == 1:
- player.inventory.append(item_name)
- print(f"DROPPED: '{item_name}'!")
- def fishing_activity(player):
- print("\nFishing...")
- time.sleep(3)
- if random.randint(1, 2) == 1:
- res = random.randint(1, 4)
- if res == 1:
- player.money += 300
- print("Caught old boots and sold them for $300!")
- elif res == 2:
- player.inventory.append("Old Pile of Clothes [Uncommon Item]")
- print("Found Old Pile of Clothes [Uncommon Item]!")
- elif res == 3:
- player.inventory.append("Gold Nuggets [Uncommon Item]")
- print("Found Gold Nuggets [Uncommon Item]!")
- elif res == 4:
- if random.randint(1, 18) == 1:
- player.inventory.append("Golden Swordfish [Very Rare Item]")
- print("CAUGHT: Golden Swordfish [Very Rare Item]!")
- else:
- print("A rare Golden Swordfish got away...")
- else:
- print("You didn't catch anything this time.")
- def cheat_menu(player):
- print("\n[ CHEAT / RESTORE MENU ]")
- print(
- "A. Money | B. Damage Pts | C. Health Pts | D. Teleport | E. Add Item | F. Set Points | G. Set Boat"
- )
- opt = input("Choice: ").strip().upper()
- if opt == "A":
- player.money = get_int_input("Set Money: ")
- elif opt == "B":
- player.damage_points = get_int_input("Set Damage Points: ")
- elif opt == "C":
- player.health_points = get_int_input("Set Health Points: ")
- elif opt == "D":
- isl = input("Island Name: ").strip()
- player.island = isl
- elif opt == "E":
- itm = input("Item Name: ").strip()
- amt = get_int_input("Amount: ", default=1)
- for _ in range(amt):
- player.inventory.append(itm)
- print(f"Added {amt}x {itm}.")
- elif opt == "F":
- player.points = get_int_input("Set Stat Points: ")
- elif opt == "G":
- player.boat = input("Boat Name: ").strip()
- # ----------
- # game loop
- # ----------
- def main():
- print(
- "Conquer The World • Version 1.4 Refresh • Inspired by Blox Fruits/One Piece"
- )
- player = None
- load_choice = (
- input("Would you like to load a saved game? (Y/N): ").strip().upper()
- )
- if load_choice == "Y":
- player = Player.load_game()
- if not player:
- p_name = input("Enter your character name (Default 'Roger'): ").strip()
- player = Player(name=p_name if p_name else "Roger")
- while True:
- current_isl = player.island
- isl_info = ISLANDS.get(current_isl, {})
- print(f"\n----------\n{current_isl}\n----------")
- prompt = isl_info.get(
- "menu",
- "A. Fight | B. Travel | C. Upgrades | D. Stats | E. Inventory",
- )
- print(f"{prompt} | S. Save Game | Q. Quit")
- action = input("Choice: ").strip().upper()
- if action == "A":
- if current_isl == "Kingfisher Depths":
- start_combat(
- player, location_override="Kingfisher Depths - Fight"
- )
- else:
- start_combat(player)
- elif action == "B":
- travel_system(player)
- elif action == "C":
- player.manage_upgrades()
- elif action == "D":
- player.show_stats()
- elif action == "E":
- player.manage_inventory()
- elif action == "F":
- if current_isl == "Windmill Town":
- print(f"\nMoney: ${player.money}")
- b_choice = (
- input(
- "A. Normal Boat ($2500) | B. Speedboat ($10000) | C. Yacht ($250000): "
- )
- .strip()
- .upper()
- )
- costs = {
- "A": ("Normal Boat", 2500),
- "B": ("Speedboat", 10000),
- "C": ("Lightspeed Yacht", 250000),
- }
- if b_choice in costs:
- b_name, cost = costs[b_choice]
- if player.money >= cost:
- player.money -= cost
- player.boat = b_name
- print(f"Purchased {b_name}!")
- else:
- print("Not enough cash!")
- elif current_isl == "Marine Island":
- fishing_activity(player)
- elif current_isl == "Kingfisher Depths":
- start_combat(
- player, location_override="Kingfisher Depths - Castle"
- )
- elif current_isl == "Beast Jungle":
- start_combat(
- player, location_override="Beast Jungle - Stone Tomb"
- )
- elif action == "G":
- if current_isl == "Windmill Town":
- print(
- "\nPaper: Welcome to Conquer The World! Defeat enemies, gain exp, and upgrade stats!"
- )
- elif current_isl == "Marine Island":
- print(
- "\nFallen Note: Darkbane... The ultimate villain. We lost against him."
- )
- elif action == "H":
- if current_isl == "Windmill Town":
- rec = input("Join Villains? (Y/N): ").strip().upper()
- if rec == "Y":
- player.villain, player.hero = True, False
- print("Registered as Villain!")
- elif current_isl == "Marine Island":
- rec = input("Join Heroes? (Y/N): ").strip().upper()
- if rec == "Y":
- player.hero, player.villain = True, False
- print("Registered as Hero!")
- elif current_isl == "Kingfisher Depths":
- start_combat(
- player,
- location_override="Kingfisher Depths - Abyssal Reef",
- )
- elif action == "S":
- player.save_game()
- elif action == "Q":
- confirm = input("Save before quitting? (Y/N): ").strip().upper()
- if confirm == "Y":
- player.save_game()
- print("Thanks for playing!")
- break
- elif action == "Z":
- cheat_menu(player)
- if __name__ == "__main__":
- main()
- # notes to self: (1,3) are for commons, (1,4-8) are for uncommons, (1,9-14) are for rares, (1,15-50) are for Very Rares, (1,51-100) are for Ultra Rares, (1,101-300) are for Ancients and (1,301+) are for Mythics1
Advertisement
Add Comment
Please, Sign In to add comment