# Path: data/pokedex.py

# 
# Path: data/types.py



from random import randint, choice
from copy import deepcopy
from data.moves import Moves
from data.pokedex import Pokedex
from data.types import Types

        chargeMove = 'recharge' in Moves[moveid]['flags'] or 'charge' in Moves[moveid]['flags']
        if moveid in blacklist or chargeMove or 'mindBlownRecoil' in Moves[moveid]:
            values[moveid] = 0
            continue

        # STAB-bonus
        if move['type'] in Pokedex[mySpecies]['types']:
            values[moveid] *= 1.5

        # Stat drops and raises
        boostTable = [1, 1.5, 2, 2.5, 3, 3.5, 4]
        category = 'atk' if move['category'] == 'Physical' else 'spa'
        if 'useAlternativeOffensiveStat' in move:
            category = move['useAlternativeOffensiveStat']
        if pokemon.boosts[category] > 0 or opponent.boosts[category] < 0:
            values[moveid] *= boostTable[pokemon.boosts[category]]
        if pokemon.boosts[category] < 0 or opponent.boosts[category] > 0:
            values[moveid] /= boostTable[-pokemon.boosts[category]]

        # Multiply with the effectiveness of the move
        eff = 1
        if len(Pokedex[oppSpecies]['types']) > 1:
            types = Pokedex[oppSpecies]['types']
            eff = Types[types[0]][move['type']] * Types[types[1]][move['type']]
        else:
            eff = Types[ Pokedex[oppSpecies]['types'][0] ][move['type']]
        values[moveid] *= eff

        # Abilities that give immunities

# Path: data/pokedex.py

# 
# Path: data/types.py



# Path: plugins/battling/battleLogic.py
from random import randint, choice
from copy import deepcopy
from data.moves import Moves
from data.pokedex import Pokedex
from data.types import Types


        chargeMove = 'recharge' in Moves[moveid]['flags'] or 'charge' in Moves[moveid]['flags']
        if moveid in blacklist or chargeMove or 'mindBlownRecoil' in Moves[moveid]:
            values[moveid] = 0
            continue

        # STAB-bonus
        if move['type'] in Pokedex[mySpecies]['types']:
            values[moveid] *= 1.5

        # Stat drops and raises
        boostTable = [1, 1.5, 2, 2.5, 3, 3.5, 4]
        category = 'atk' if move['category'] == 'Physical' else 'spa'
        if 'useAlternativeOffensiveStat' in move:
            category = move['useAlternativeOffensiveStat']
        if pokemon.boosts[category] > 0 or opponent.boosts[category] < 0:
            values[moveid] *= boostTable[pokemon.boosts[category]]
        if pokemon.boosts[category] < 0 or opponent.boosts[category] > 0:
            values[moveid] /= boostTable[-pokemon.boosts[category]]

        # Multiply with the effectiveness of the move
        eff = 1
        if len(Pokedex[oppSpecies]['types']) > 1:
            types = Pokedex[oppSpecies]['types']
            eff = Types[types[0]][move['type']] * Types[types[1]][move['type']]
        else:
            eff = Types[ Pokedex[oppSpecies]['types'][0] ][move['type']]
        values[moveid] *= eff

        # Abilities that give immunities

        if move['type'] == 'Water' and Pokedex[oppSpecies]['abilities']['0'] in waterImmune: