RogueEdit / pyRogue

Educational Project
GNU Affero General Public License v3.0
50 stars 40 forks source link

Feature: Implement the ability to unlock the hidden skill on a per-starter basis #42

Closed motoreagattoimburrato closed 4 months ago

motoreagattoimburrato commented 4 months ago

As title, I would like to have the possibility to unlock all skill/abilities of a starter pokemon.

immagine

JulianStiebler commented 4 months ago

As far as im concerned we do that already but do not ask for input

def unlock_all_starters(self)

def unlock_all_starters(self) -> None:
        """
        Unlocks all starters.

        Returns:
            None
        """
        trainer_data = self.__load_data("trainer.json")
        if not trainer_data:
            print("There was something wrong with the data, please restart the tool.")
            return None
        ....
        ...
        for entry in trainer_data["dexData"].keys():
                    caught: int = random.randint(150, 250)
                    seen: int = random.randint(150, 350)
                    total_caught += caught
                    total_seen += seen
                    randIv: List[int] = random.sample(range(20, 30), 6)

                    trainer_data["dexData"][entry] = {
                        "seenAttr": 479,
                        "caughtAttr": self.__MAX_BIG_INT if choice == 1 else shiny,
                        "natureAttr": 67108862,
                        "seenCount": seen,
                        "caughtCount": caught,
                        "hatchedCount": 0,
                        "ivs": randIv if iv == 2 else [31, 31, 31, 31, 31, 31]
                    }
                    trainer_data["starterData"][entry] = {
                        "moveset": None,
                        "eggMoves": 15,
                        "candyCount": caught + 20,
                        "friendship": random.randint(1, 300),
                        "abilityAttr": 7,
                        "passiveAttr": 0 if (entry in self.passive_data["noPassive"]) or (passive == 2) else 3,
                        "valueReduction": 2,
                        "classicWinCount": None if ribbon == 2 else random.randint(1, 5),
                    }

edit_starter

    def starter_edit(self, dexId: Optional[Union[str, int]] = None) -> None:
            """
            Edits a starter Pokémon.

            Args:
                dexId (Optional[Union[str, int]]): The ID or name of the Pokémon. Defaults to None.

            Returns:
                None
        """
        trainer_data = self.__load_data("trainer.json")     
        ...
        ...
        trainer_data["starterData"][dexId] = {
                    "moveset": None,
                    "eggMoves": 15,
                    "candyCount": candies,
                    "friendship": None if not friendship else friendship,
                    "abilityAttr": 7,
                    "passiveAttr": passiveAttr,
                    "valueReduction": 2,
                    "classicWinCount": None if ribbon == 2 else random.randint(1, 50)
                }

where as "abilityAttr": 7 we also set "eggMoves": 15 and this is for each object ["starterData"][entry] was entry stands for pokedexID

Do you like to see that this will be an avaiable input or do you think the current solution also is valid?