示例#1
0
    def do_replaceAbility(self, args):
        '''
        replaceAbility [Character Name] [Old Ability] [New Ability]

        This command replaces an ability on a character that has already
        been created.
        '''
        league = self._lm.get_current_league()
        if league == "":
            print("You need to create a league first before trying to "
                  "replace the ability of one of its characters.")
            return

        result = args.split(" ")
        if len(result) < 3:
            print("Not enough arguments. Please try again")
            return
            # What if there are too many arguments ???

        input_v = InputView()
        character = league.find_character(result[0])

        if character is not None:
            try:
                # Validate the input:
                input_v.check_valid_ability(result[1],
                                            self._lm.get_all_abilities())
                input_v.check_valid_ability(result[2],
                                            self._lm.get_all_abilities())
                # Check the user does not already have that ability:
                abilities_list = character.get_abilities_names()
                abilities_list.append(result[2])
                input_v.check_duplicate_values(abilities_list)

                character.replace_ability(character, result[1], result[2])
                # print(result[0] + " has had the ability " + result[1] +
                #      " replaced with " + result[2])
            except InputException as e:
                print(e.value)
        else:
            print(result[0] + " is not in the " +
                  self._lm.get_current_league().get_name() + " league Please "
                  "try again.")
示例#2
0
    def replace_all_abilities(self, result, character):
        """
        Written by MH
        This method will check whether the character's abilities can be
        replaced with new ones
        :param result: a list con
        :param character:
        :return:
        """
        input_v = InputView()

        if len(result) == 1:
            print("You have not set any abilities")
        elif len(result) == 2:
            try:
                # Validate the input:
                input_v.check_valid_ability(result[1],
                                            self._lm.get_all_abilities())
                character.check_abilities(character.get_name(),
                                          character.__class__.__name__,
                                          character.get_subclass_level
                                          (character),
                                          character.get_number_abilities(),
                                          arg1=result[1])

                # Delete the character's current abilities and set the new ones
                character.clear_abilities()
                character.set_abilities(arg1=result[1])
                print("New abilities have been set for " +
                      character.get_name() + ": " +
                      character.get_abilities()[0].get_name())
            except InputException as e:
                print(e.value)
            except CharacterException as e:
                print(e.value)

        elif len(result) == 3:
            try:
                # Validate the input:
                input_v.check_valid_ability(result[1],
                                            self._lm.get_all_abilities())
                input_v.check_valid_ability(result[2],
                                            self._lm.get_all_abilities())
                character.check_abilities(character.get_name(),
                                          character.__class__.__name__,
                                          character.get_subclass_level
                                          (character),
                                          character.get_number_abilities(),
                                          arg1=result[1], arg2=result[2])
                # Check the user is not adding duplicate abilities:
                abilities_list = character.get_abilities_names()
                abilities_list.extend([result[1], result[2]])
                input_v.check_duplicate_values(abilities_list)

                # Delete the character's current abilities and set the new ones
                character.clear_abilities()
                character.set_abilities(arg1=result[1], arg2=result[2])
                print("New abilities have been set for " +
                      character.get_name() + ": " +
                      character.get_abilities()[0].get_name() + " " +
                      character.get_abilities()[1].get_name())
            except InputException as e:
                print(e.value)
            except CharacterException as e:
                print(e.value)

        elif len(result) == 4:
            try:
                # Validate the input:
                input_v.check_valid_ability(result[1],
                                            self._lm.get_all_abilities())
                input_v.check_valid_ability(result[2],
                                            self._lm.get_all_abilities())
                input_v.check_valid_ability(result[3],
                                            self._lm.get_all_abilities())
                character.check_abilities(character.get_name(),
                                          character.__class__.__name__,
                                          character.get_subclass_level
                                          (character),
                                          character.get_number_abilities(),
                                          arg1=result[1], arg2=result[2],
                                          arg3=result[3])
                # Check the user is not adding duplicate abilities:
                abilities_list = character.get_abilities_names()
                abilities_list.extend([result[1], result[2], result[3]])
                input_v.check_duplicate_values(abilities_list)

                # Delete the character's current abilities and set the new ones
                character.clear_abilities()
                character.set_abilities(arg1=result[1], arg2=result[2],
                                        arg3=result[3])
                print("New abilities have been set for " +
                      character.get_name() + ": " +
                      character.get_abilities()[0].get_name() + " " +
                      character.get_abilities()[1].get_name() + " " +
                      character.get_abilities()[2].get_name())
            except InputException as e:
                print(e.value)
            except CharacterException as e:
                print(e.value)
        else:
            print("You have entered too many arguments. Please try again.")
示例#3
0
    def do_addCharacter(self, args):
        '''
        addCharacter [CharacterName] [CharacterType] [Health] [Brawl] [Shoot]
        [Dodge] [Might] [Finesse] [Cunning]
        [Ability 1] [Ability 2] [Ability 3]

        Example
            addCharacter Testing Leader d10 3d8 3d10 3d10 2d8 3d10 2d10 Mighty
            Brash Crafty

        -----------------------------------------------------------------------
        This command adds a character to the current league.
        Your league starts with 10 roster slots.
        -----------------------------------------------------------------------
        [Character Name] = The character's name
        [CharacterType] = Can be either 'Leader' 'SideKick' 'Ally' or
        'Follower', You can only have ONE leader

        Skills. See below for examples on how to use this argument

        [Health] = A number used to represent your characters overall condition
        [Brawl] = Represents a character's overall hand-to-hand combat prowess
        [Shoot] = Indicates a character's combat effectiveness with all manner
                  of ranged weapons
        [Dodge] = Determines the character's ability to avoid enemy attacks,
                  perils, and other dangers.
        [Might] = Indicates a character's power, fitness and general
                  athleticism
        [Finesse] = measures the character's co ordination, awareness and
                  ability to manipulate
        [Cunning] = Represents a character's knowledge, resolve and ability to
                  solve complicated problems.

        Skill levels by type

        Leader
            MUST have a health value of d10
            Select four skills to start at 3 dice and two skills to start at
            2 dice
            Select four skills to start at d10 and two skills to start at d8
            Can choose 3 abilities at any level
        SideKick
            MUST have a health value of d8
            Select three skills to start at 3 dice and three skills to start at
            2 dice
            Select three skills to start at d8 and three skills to start at d6
            Can choose 2 abilities at level 1 to 3
            Uses three roster slots
        Ally
            MUST have a health value of d6
            Select two skills to start at 2 dice and four skills to start at
            1 dice
            All skills start at d6
            Can choose 1 ability at level 1 to 2
            Uses two roster slots
        Follower
            MUST have a health value of d6
            ALL skills must be 1d6
            Can choose 1 ability at level 1
            Uses one roster slot
        '''
        league = self._lm.get_current_league()
        if league == "":
            print("You need to create a league first before adding a "
                  "character.")
            return

        result = args.split(" ")
        inputV = InputView()

        if self._lm.get_current_league() is None:
            print("You need to create a league first!")
            return

        if len(result) >= 10:
            try:
                inputV.check_valid_name(result[0])
                inputV.check_valid_class(result[1])
                inputV.check_valid_skill_dice(result[3])
                inputV.check_valid_skill_dice(result[4])
                inputV.check_valid_skill_dice(result[5])
                inputV.check_valid_skill_dice(result[6])
                inputV.check_valid_skill_dice(result[7])
                inputV.check_valid_skill_dice(result[8])

                all_abilities = self._lm.get_all_abilities()

                if len(result) == 10:
                    try:
                        inputV.check_valid_ability(result[9], all_abilities)
                        league.add_character(name=result[0],
                                             char_type=result[1],
                                             health=result[2], brawl=result[3],
                                             shoot=result[4], dodge=result[5],
                                             might=result[
                                                 6], finesse=result[7],
                                             cunning=result[8], arg1=result[9])
                    except InputException as e:
                        print(e.value)

                elif len(result) == 11:
                    try:
                        inputV.check_valid_ability(result[9], all_abilities)
                        inputV.check_valid_ability(result[10], all_abilities)
                        inputV.check_duplicate_values([result[9], result[10]])

                        league.add_character(name=result[0],
                                             char_type=result[1],
                                             health=result[2], brawl=result[3],
                                             shoot=result[4], dodge=result[5],
                                             might=result[6],
                                             finesse=result[7],
                                             cunning=result[8], arg1=result[9],
                                             arg2=result[10])
                    except InputException as e:
                        print(e.value)

                elif len(result) == 12:
                    try:
                        inputV.check_valid_ability(result[9], all_abilities)
                        inputV.check_valid_ability(result[10], all_abilities)
                        inputV.check_valid_ability(result[11], all_abilities)
                        inputV.check_duplicate_values([result[9], result[10],
                                                       result[11]])
                        league.add_character(name=result[0],
                                             char_type=result[1],
                                             health=result[2], brawl=result[3],
                                             shoot=result[4], dodge=result[5],
                                             might=result[
                                                 6], finesse=result[7],
                                             cunning=result[8], arg1=result[9],
                                             arg2=result[10], arg3=result[11])
                    except InputException as e:
                        print(e.value)
                else:
                    print("You have entered too many arguments. Please try "
                          "again.")
            except InputException as e:
                print(e.value)
        else:
            print("You have not entered enough arguments to create a character"
                  ". Please try again.")