1
21
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve and repo issues
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
-----
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Version**
|
||||
Run `[p]help Pokecord` and return the version in the help.
|
14
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Summary of your suggestion**
|
||||
Brief outlook on what it should be and how it should work.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
49
.github/workflows/publish_crowdin.yml
vendored
Normal file
|
@ -0,0 +1,49 @@
|
|||
# All credits goes to Cog-Creators for this crowdin setup
|
||||
# https://github.com/Cog-Creators/Red-DiscordBot/blob/V3/develop/.github/workflows/publish_crowdin.yml
|
||||
|
||||
name: Crowdin
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 20 1 * *"
|
||||
|
||||
env:
|
||||
CROWDIN_API_KEY: ${{ secrets.crowdin_token }}
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.crowdin_identifier }}
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
if: github.repository == 'flaree/pokecord-red'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
with:
|
||||
python-version: "3.8"
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
curl https://artifacts.crowdin.com/repo/GPG-KEY-crowdin | sudo apt-key add -
|
||||
echo "deb https://artifacts.crowdin.com/repo/deb/ /" | sudo tee -a /etc/apt/sources.list
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y crowdin
|
||||
pip install redgettext==3.2
|
||||
- name: Generate source files
|
||||
run: |
|
||||
make gettext
|
||||
- name: Upload source files
|
||||
run: |
|
||||
make upload_translations
|
||||
- name: Download translations
|
||||
run: |
|
||||
make download_translations
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v2
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
commit-message: Automated Crowdin downstream
|
||||
title: "[i18n] Automated Crowdin downstream"
|
||||
body: |
|
||||
This is an automated PR.
|
||||
Please ensure that there are no errors or invalid files are in the PR.
|
||||
branch: "automated/i18n"
|
31
.github/workflows/run_precommit.yaml
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
name: Run pre-commit
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
run_precommit:
|
||||
name: Run pre-commit
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
# Checkout repository
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
# Setup Python and install pre-commit
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
python_version: "3.8"
|
||||
- name: Install pre-commit
|
||||
run: |
|
||||
pip install -U pre-commit
|
||||
# Load cached pre-commit environment
|
||||
- name: set PY
|
||||
run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/.cache/pre-commit
|
||||
key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
|
||||
# Run pre-commit
|
||||
- name: Run pre-commit
|
||||
run: |
|
||||
pre-commit run --show-diff-on-failure --color=never --all-files --verbose
|
132
.gitignore
vendored
Normal file
|
@ -0,0 +1,132 @@
|
|||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
pip-wheel-metadata/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
.python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
chromedriver.exe
|
||||
|
||||
.vscode/
|
39
.pre-commit-config.yaml
Normal file
|
@ -0,0 +1,39 @@
|
|||
default_language_version:
|
||||
python: python3.8
|
||||
fail_fast: false
|
||||
ci:
|
||||
autoupdate_schedule: quarterly
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.0.1
|
||||
hooks:
|
||||
- id: check-yaml
|
||||
- id: trailing-whitespace
|
||||
- id: check-builtin-literals
|
||||
- id: check-ast
|
||||
- id: check-docstring-first
|
||||
- id: check-json
|
||||
- id: detect-private-key
|
||||
- id: check-toml
|
||||
- id: requirements-txt-fixer
|
||||
- id: trailing-whitespace
|
||||
args: [--markdown-linebreak-ext=md]
|
||||
|
||||
- repo: https://github.com/humitos/mirrors-autoflake.git
|
||||
rev: v1.1
|
||||
hooks:
|
||||
- id: autoflake
|
||||
args: ['--in-place', '--remove-unused-variable']
|
||||
|
||||
- repo: https://github.com/psf/black
|
||||
rev: '21.6b0'
|
||||
hooks:
|
||||
- id: black
|
||||
- repo: https://github.com/Pierre-Sassoulas/black-disable-checker
|
||||
rev: '1.0.1'
|
||||
hooks:
|
||||
- id: black-disable-checker
|
||||
- repo: https://github.com/pycqa/isort
|
||||
rev: '5.9.1'
|
||||
hooks:
|
||||
- id: isort
|
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2020 Jamie
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
17
Makefile
Normal file
|
@ -0,0 +1,17 @@
|
|||
gettext:
|
||||
redgettext --command-docstrings --verbose --recursive pokecord/ --exclude-files 'pokecord/data/*'
|
||||
|
||||
upload_translations:
|
||||
crowdin upload sources
|
||||
|
||||
download_translations:
|
||||
crowdin download
|
||||
|
||||
reformat:
|
||||
python3 -m black -l 99 `git ls-files "*.py"`
|
||||
|
||||
stylecheck:
|
||||
python3 -m black -l 99 --check --diff `git ls-files "*.py"`
|
||||
|
||||
compile:
|
||||
python3 -m compileall .
|
11
README.md
|
@ -1 +1,10 @@
|
|||
# Ava-Cogs
|
||||
# Pokecord-Red
|
||||
|
||||
# This repo is NOT maintained.
|
||||
|
||||
## This is a cog for Red! This is NOT a standalone bot. You can find the docs for Red @ https://docs.discord.red/
|
||||
|
||||
# Contact
|
||||
You can contact me in the Red Cog support support in #support_flare-cogs
|
||||
|
||||
<br>
|
||||
|
|
7
crowdin.yml
Normal file
|
@ -0,0 +1,7 @@
|
|||
api_key_env: CROWDIN_API_KEY
|
||||
project_identifier_env: CROWDIN_PROJECT_ID
|
||||
base_path: ./pokecord/
|
||||
preserve_hierarchy: true
|
||||
files:
|
||||
- source: locales/messages.pot
|
||||
translation: locales/%locale%.po
|
17
info.json
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"author": [
|
||||
"Valerie (1050531216589332581)"
|
||||
],
|
||||
"install_msg": "Thanks for adding Ava Cogs!",
|
||||
"name": "Ava Cogs",
|
||||
"short": "Ava Cogs, for our fork of Red-DiscordBot",
|
||||
"description": "Ava Cogs, for our fork of Red-DiscordBot",
|
||||
"tags": [
|
||||
"avacogs",
|
||||
"pokemon",
|
||||
"utility",
|
||||
"information",
|
||||
"nsfw",
|
||||
"various"
|
||||
]
|
||||
}
|
12
locales/messages.pot
Normal file
|
@ -0,0 +1,12 @@
|
|||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2020-08-01 23:53+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: redgettext 3.1\n"
|
50
make.bat
Normal file
|
@ -0,0 +1,50 @@
|
|||
@echo off
|
||||
|
||||
if [%1] == [] goto help
|
||||
|
||||
REM This allows us to expand variables at execution
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
|
||||
REM This will set DIFF as a list of staged files
|
||||
set DIFF=
|
||||
for /F "tokens=* USEBACKQ" %%A in (`git diff --name-only --staged "*.py" "*.pyi"`) do (
|
||||
set DIFF=!DIFF! %%A
|
||||
)
|
||||
|
||||
REM This will set DIFF as a list of files tracked by git
|
||||
if [!DIFF!]==[] (
|
||||
set DIFF=
|
||||
for /F "tokens=* USEBACKQ" %%A in (`git ls-files "*.py" "*.pyi"`) do (
|
||||
set DIFF=!DIFF! %%A
|
||||
)
|
||||
)
|
||||
|
||||
goto %1
|
||||
|
||||
:reformat
|
||||
py -m autoflake --in-place --imports=aiohttp,discord,redbot !DIFF! || goto :eof
|
||||
py -m isort !DIFF! || goto :eof
|
||||
py -m black !DIFF!
|
||||
goto :eof
|
||||
|
||||
:stylecheck
|
||||
autoflake --check --imports aiohttp,discord,redbot !DIFF! || goto :eof
|
||||
isort --check-only !DIFF! || goto :eof
|
||||
black --check !DIFF!
|
||||
goto :eof
|
||||
|
||||
:reformatblack
|
||||
black !DIFF!
|
||||
goto :eof
|
||||
|
||||
|
||||
:help
|
||||
echo Usage:
|
||||
echo make ^<command^>
|
||||
echo.
|
||||
echo Commands:
|
||||
echo reformat Reformat all .py files being tracked by git.
|
||||
echo stylecheck Check which tracked .py files need reformatting.
|
||||
echo newenv Create or replace this project's virtual environment.
|
||||
echo syncenv Sync this project's virtual environment to Red's latest
|
||||
echo dependencies.
|
11
nsfw/__init__.py
Normal file
|
@ -0,0 +1,11 @@
|
|||
from redbot.core.bot import Red
|
||||
from .nsfw import Nsfw
|
||||
|
||||
__red_end_user_data_statement__ = (
|
||||
"This cog does not persistently store data or metadata about users."
|
||||
)
|
||||
|
||||
|
||||
async def setup(bot: Red):
|
||||
cog = Nsfw(bot)
|
||||
await bot.add_cog(cog)
|
344
nsfw/constants.py
Normal file
|
@ -0,0 +1,344 @@
|
|||
from random import choice
|
||||
|
||||
# Stuff for the cog
|
||||
|
||||
|
||||
def emoji():
|
||||
"""Randomize footer emojis."""
|
||||
EMOJIS = [
|
||||
"\N{AUBERGINE}",
|
||||
"\N{SMIRKING FACE}",
|
||||
"\N{PEACH}",
|
||||
"\N{SPLASHING SWEAT SYMBOL}",
|
||||
"\N{BANANA}",
|
||||
"\N{KISS MARK}",
|
||||
]
|
||||
emoji = choice(EMOJIS)
|
||||
return emoji
|
||||
|
||||
|
||||
REDDIT_BASEURL = "https://api.reddit.com/r/{sub}/random"
|
||||
MARTINE_API_BASE_URL = "https://api.martinebot.com/v1/images/subreddit"
|
||||
IMGUR_LINKS = ("http://imgur.com", "https://m.imgur.com", "https://imgur.com")
|
||||
NOT_EMBED_DOMAINS = (
|
||||
"gfycat.com/",
|
||||
"gifdeliverynetwork.com/",
|
||||
"redgifs.com",
|
||||
"imgur.com/gallery/",
|
||||
"imgur.com/a/",
|
||||
".gifv",
|
||||
)
|
||||
GOOD_EXTENSIONS = (".png", ".jpg", ".jpeg", ".gif", "gifv")
|
||||
|
||||
# Subreddits
|
||||
FOUR_K = [
|
||||
"Hegre",
|
||||
"HighResNSFW",
|
||||
"NSFW_Wallpapers",
|
||||
"UHDnsfw",
|
||||
"closeup",
|
||||
]
|
||||
AHEGAO = ["AhegaoGirls", "EyeRollOrgasm", "O_Faces", "RealAhegao"]
|
||||
ASS = [
|
||||
"AssOnTheGlass",
|
||||
"AssholeBehindThong",
|
||||
"ButtsAndBareFeet",
|
||||
"HungryButts",
|
||||
"Mooning",
|
||||
"SnakeButt",
|
||||
"TheUnderbun",
|
||||
"Upshorts",
|
||||
"ass",
|
||||
"asshole",
|
||||
"assinthong",
|
||||
"asstastic",
|
||||
"beautifulbutt",
|
||||
"bigasses",
|
||||
"booty",
|
||||
"datgap",
|
||||
"girlsinleggings",
|
||||
"girlsinyogapants",
|
||||
"hugeass",
|
||||
"paag",
|
||||
"pawg",
|
||||
"facedownassup",
|
||||
]
|
||||
ASIANPORN = [
|
||||
"AsianCuties",
|
||||
"AsianHotties",
|
||||
"AsianNSFW",
|
||||
"AsianPorn",
|
||||
"AsiansGoneWild",
|
||||
"KoreanHotties",
|
||||
"NSFW_Japan",
|
||||
"bustyasians",
|
||||
"juicyasians",
|
||||
]
|
||||
ANAL = [
|
||||
"AnalGW",
|
||||
"MasterOfAnal",
|
||||
"NotInThePussy",
|
||||
"anal",
|
||||
"analinsertions",
|
||||
"assholegonewild",
|
||||
"buttsthatgrip",
|
||||
]
|
||||
BBW = [
|
||||
"BBW",
|
||||
"BBW_Chubby",
|
||||
"GoneWildPlus",
|
||||
"PerkyChubby",
|
||||
"chubby",
|
||||
"gonewildcurvy",
|
||||
]
|
||||
BDSM = ["BDSMGW", "BDSM_NoSpam", "Bondage", "Spanking", "bdsm"]
|
||||
BLACKCOCK = ["bigblackcocks", "blackcock"]
|
||||
BLOWJOB = [
|
||||
"AsianBlowjobs",
|
||||
"Blowjobs",
|
||||
"OralCreampie",
|
||||
"SwordSwallowers",
|
||||
"blowjobsandwich",
|
||||
]
|
||||
BOOBS = [
|
||||
"AreolasGW",
|
||||
"BestTits",
|
||||
"BigBoobsGW",
|
||||
"BigBoobsGonewild",
|
||||
"BiggerThanYouThought",
|
||||
"Boobies",
|
||||
"BustyNaturals",
|
||||
"BustyPetite",
|
||||
"Nipples",
|
||||
"PerfectTits",
|
||||
"PiercedNSFW",
|
||||
"Stacked",
|
||||
"TheHangingBoobs",
|
||||
"TheUnderboob",
|
||||
"TinyTits",
|
||||
"Titties",
|
||||
"TittyDrop",
|
||||
"boobbounce",
|
||||
"boobgifs",
|
||||
"boobs",
|
||||
"burstingout",
|
||||
"fortyfivefiftyfive",
|
||||
"ghostnipples",
|
||||
"homegrowntits",
|
||||
"hugeboobs",
|
||||
"naturaltitties",
|
||||
"pokies",
|
||||
"smallboobs",
|
||||
"tits",
|
||||
]
|
||||
BOTTOMLESS = ["nopanties", "upskirt"]
|
||||
COSPLAY = [
|
||||
"CosplayLewd",
|
||||
"Cosplayheels",
|
||||
"nsfwcosplay",
|
||||
]
|
||||
CUNNI = ["cunnilingus"]
|
||||
CUMSHOTS = [
|
||||
"GirlsFinishingTheJob",
|
||||
"amateurcumsluts",
|
||||
"bodyshots",
|
||||
"cumfetish",
|
||||
"cumontongue",
|
||||
"cumshots",
|
||||
"facialcumshots",
|
||||
"pulsatingcumshots",
|
||||
]
|
||||
DEEPTHROAT = [
|
||||
"DeepThroatTears",
|
||||
"SwordSwallowers",
|
||||
"deepthroat",
|
||||
]
|
||||
DICK = [
|
||||
"MassiveCock",
|
||||
"ThickDick",
|
||||
"bulges",
|
||||
"cock",
|
||||
"penis",
|
||||
"twinks",
|
||||
]
|
||||
DOUBLE_P = ["Technical_DP", "doublepenetration"]
|
||||
EBONY = [
|
||||
"DarkAngels",
|
||||
"Ebony",
|
||||
"EbonyGirls",
|
||||
"bigblackasses",
|
||||
"blackchickswhitedicks",
|
||||
"ebonyamateurs",
|
||||
]
|
||||
FACIALS = ["FacialFun", "facialcumshots"]
|
||||
FEET = [
|
||||
"ButtsAndBareFeet",
|
||||
"Feet_NSFW",
|
||||
"Feetup",
|
||||
"FootFetish",
|
||||
"rule34feet",
|
||||
]
|
||||
FEMDOM = ["Femdom", "FemdomHumiliation", "femdom", "hentaifemdom"]
|
||||
FUTA = [
|
||||
"FutanariHentai",
|
||||
"HorsecockFuta",
|
||||
]
|
||||
GAY_P = [
|
||||
"CuteGuyButts",
|
||||
"GayDaddiesPics",
|
||||
"GayGifs",
|
||||
"ManSex",
|
||||
"broslikeus",
|
||||
"bulges",
|
||||
"gaybears",
|
||||
"gaynsfw",
|
||||
"gayotters",
|
||||
"jockstraps",
|
||||
"ladybonersgw",
|
||||
"lovegaymale",
|
||||
"manass",
|
||||
"MaleUnderwear",
|
||||
]
|
||||
GROUPS = ["GroupOfNudeGirls", "groupsex"]
|
||||
LESBIANS = [
|
||||
"HDLesbianGifs",
|
||||
"Lesbian_gifs",
|
||||
"StraightGirlsPlaying",
|
||||
"dyke",
|
||||
"girlskissing",
|
||||
"lesbians",
|
||||
"mmgirls",
|
||||
"scissoring",
|
||||
]
|
||||
MILF = [
|
||||
"AgedBeauty",
|
||||
"MILFs",
|
||||
"Milfie",
|
||||
"amateur_milfs",
|
||||
"cougars",
|
||||
"hairymilfs",
|
||||
"maturemilf",
|
||||
"milf",
|
||||
]
|
||||
ORAL = [
|
||||
"AsianBlowjobs",
|
||||
"Blowjobs",
|
||||
"DeepThroatTears",
|
||||
"OralCreampie",
|
||||
"SwordSwallowers",
|
||||
"blowjobsandwich",
|
||||
"cunnilingus",
|
||||
"deepthroat",
|
||||
]
|
||||
PUBLIC = [
|
||||
"ChangingRooms",
|
||||
"Flashing",
|
||||
"FlashingAndFlaunting",
|
||||
"FlashingGirls",
|
||||
"NSFW_Outdoors",
|
||||
"NotSafeForNature",
|
||||
"PublicFlashing",
|
||||
"WoodNymphs",
|
||||
"bitchinbubba",
|
||||
"casualnudity",
|
||||
"exposedinpublic",
|
||||
"gwpublic",
|
||||
"holdthemoan",
|
||||
"publicplug",
|
||||
"snowgirls",
|
||||
]
|
||||
PUSSY = [
|
||||
"GodPussy",
|
||||
"HairyPussy",
|
||||
"Innies",
|
||||
"LabiaGW",
|
||||
"LipsThatGrip",
|
||||
"MoundofVenus",
|
||||
"PussyFlashing",
|
||||
"PussyMound",
|
||||
"grool",
|
||||
"peachlips",
|
||||
"pelfie",
|
||||
"pussy",
|
||||
"rearpussy",
|
||||
"spreadeagle",
|
||||
"ButterflyWings",
|
||||
"DangleAndJingle",
|
||||
]
|
||||
REAL_GIRLS = [
|
||||
"CellShots",
|
||||
"ChangingRooms",
|
||||
"Nude_Selfie",
|
||||
"RealGirls",
|
||||
"selfpix",
|
||||
]
|
||||
REDHEADS = [
|
||||
"FreckledRedheads",
|
||||
"RedheadGifs",
|
||||
"RedheadsPorn",
|
||||
"ginger",
|
||||
"nsfw_redhead",
|
||||
"redheads",
|
||||
]
|
||||
RULE_34 = [
|
||||
"Overwatch_Porn",
|
||||
"Rule34LoL",
|
||||
"Rule_34",
|
||||
"rule34",
|
||||
]
|
||||
SQUIRTS = ["squirting", "squirting_gifs", "wetspot", "grool"]
|
||||
THIGHS = [
|
||||
"ThickThighs",
|
||||
"Thigh",
|
||||
"datgap",
|
||||
"leggingsgonewild",
|
||||
"legs",
|
||||
"theratio",
|
||||
"thighhighs",
|
||||
]
|
||||
THREESOME = [
|
||||
"AirTight",
|
||||
"SpitRoasted",
|
||||
"Threesome",
|
||||
"Xsome",
|
||||
"amateur_threesomes",
|
||||
"groupsex",
|
||||
"gangbang",
|
||||
"blowbang",
|
||||
]
|
||||
TRANS = [
|
||||
"GoneWildTrans",
|
||||
"Shemale_Big_Cock",
|
||||
"Shemales",
|
||||
"ShemalesParadise",
|
||||
"trapgifs",
|
||||
"traps",
|
||||
]
|
||||
WILD = [
|
||||
"ArtGW",
|
||||
"AsiansGoneWild",
|
||||
"BigBoobsGW",
|
||||
"BigBoobsGonewild",
|
||||
"GWCouples",
|
||||
"GWNerdy",
|
||||
"GoneWildSmiles",
|
||||
"LabiaGW",
|
||||
"LingerieGW",
|
||||
"PetiteGoneWild",
|
||||
"Swingersgw",
|
||||
"TallGoneWild",
|
||||
"UnderwearGW",
|
||||
"altgonewild",
|
||||
"bigonewild",
|
||||
"dirtysmall",
|
||||
"gonewild",
|
||||
"gonewildcolor",
|
||||
"gonewildcouples",
|
||||
"gonewildcurvy",
|
||||
"gwpublic",
|
||||
"workgonewild",
|
||||
]
|
||||
YIFF = ["Hyiff", "Yiffbondage", "femyiff", "yiff", "yiffgif"]
|
||||
# Other APIs
|
||||
NEKOBOT_HENTAI = choice(["hentai_anal", "hentai"])
|
||||
NEKOBOT_URL = "https://nekobot.xyz/api/image?type={}"
|
242
nsfw/core.py
Normal file
|
@ -0,0 +1,242 @@
|
|||
import asyncio
|
||||
import json
|
||||
import sys
|
||||
from random import choice
|
||||
from typing import List, Optional, Union
|
||||
|
||||
import aiohttp
|
||||
import discord
|
||||
from redbot.core import Config, commands
|
||||
from redbot.core.bot import Red
|
||||
from redbot.core.i18n import Translator, cog_i18n
|
||||
from redbot.core.utils.chat_formatting import bold, box, inline
|
||||
|
||||
from .constants import (
|
||||
GOOD_EXTENSIONS,
|
||||
IMGUR_LINKS,
|
||||
MARTINE_API_BASE_URL,
|
||||
NOT_EMBED_DOMAINS,
|
||||
REDDIT_BASEURL,
|
||||
emoji,
|
||||
)
|
||||
|
||||
_ = Translator("Nsfw", __file__)
|
||||
|
||||
|
||||
# FIXME: This code really needs a good rewrite at some point.
|
||||
@cog_i18n(_)
|
||||
class Core(commands.Cog):
|
||||
|
||||
__author__ = ["Predä", "aikaterna"]
|
||||
__version__ = "2.3.99"
|
||||
|
||||
async def red_delete_data_for_user(self, **kwargs):
|
||||
"""Nothing to delete."""
|
||||
return
|
||||
|
||||
def __init__(self, bot: Red):
|
||||
self.bot = bot
|
||||
self.session = aiohttp.ClientSession(
|
||||
headers={
|
||||
"User-Agent": (
|
||||
f"Red-DiscordBot PredaCogs-Nsfw/{self.__version__} "
|
||||
f"(Python/{'.'.join(map(str, sys.version_info[:3]))} aiohttp/{aiohttp.__version__})"
|
||||
)
|
||||
}
|
||||
)
|
||||
self.config = Config.get_conf(self, identifier=512227974893010954, force_registration=True)
|
||||
self.config.register_global(use_reddit_api=False)
|
||||
|
||||
def cog_unload(self):
|
||||
self.bot.loop.create_task(self.session.close())
|
||||
|
||||
def format_help_for_context(self, ctx: commands.Context) -> str:
|
||||
"""Thanks Sinbad!"""
|
||||
pre_processed = super().format_help_for_context(ctx)
|
||||
return f"{pre_processed}\n\nAuthors: {', '.join(self.__author__)}\nCog Version: {self.__version__}"
|
||||
|
||||
async def _get_imgs(self, subs: List[str] = None):
|
||||
"""Get images from Reddit API."""
|
||||
tries = 0
|
||||
while tries < 5:
|
||||
sub = choice(subs)
|
||||
try:
|
||||
if await self.config.use_reddit_api():
|
||||
async with self.session.get(REDDIT_BASEURL.format(sub=sub)) as reddit:
|
||||
if reddit.status != 200:
|
||||
return None, None
|
||||
try:
|
||||
data = await reddit.json(content_type=None)
|
||||
content = data[0]["data"]["children"][0]["data"]
|
||||
url = content["url"]
|
||||
subr = content["subreddit"]
|
||||
except (KeyError, ValueError, json.decoder.JSONDecodeError):
|
||||
tries += 1
|
||||
continue
|
||||
if url.startswith(IMGUR_LINKS):
|
||||
url = url + ".png"
|
||||
elif url.endswith(".mp4"):
|
||||
url = url[:-3] + "gif"
|
||||
elif url.endswith(".gifv"):
|
||||
url = url[:-1]
|
||||
elif not url.endswith(GOOD_EXTENSIONS) and not url.startswith(
|
||||
"https://gfycat.com"
|
||||
) or "redgifs" in url:
|
||||
tries += 1
|
||||
continue
|
||||
return url, subr
|
||||
else:
|
||||
async with self.session.get(
|
||||
MARTINE_API_BASE_URL, params={"name": sub}
|
||||
) as resp:
|
||||
if resp.status != 200:
|
||||
tries += 1
|
||||
continue
|
||||
try:
|
||||
data = await resp.json()
|
||||
return data["data"]["image_url"], data["data"]["subreddit"]["name"]
|
||||
except (KeyError, json.JSONDecodeError):
|
||||
tries += 1
|
||||
continue
|
||||
except aiohttp.client_exceptions.ClientConnectionError:
|
||||
tries += 1
|
||||
continue
|
||||
|
||||
return None, None
|
||||
|
||||
async def _get_others_imgs(self, ctx: commands.Context, url: str = None):
|
||||
"""Get images from all other images APIs."""
|
||||
try:
|
||||
async with self.session.get(url) as resp:
|
||||
if resp.status != 200:
|
||||
await self._api_errors_msg(ctx, error_code=resp.status)
|
||||
return None
|
||||
try:
|
||||
data = await resp.json(content_type=None)
|
||||
except json.decoder.JSONDecodeError as exception:
|
||||
await self._api_errors_msg(ctx, error_code=exception)
|
||||
return None
|
||||
data = dict(img=data)
|
||||
return data
|
||||
except aiohttp.client_exceptions.ClientConnectionError:
|
||||
await self._api_errors_msg(ctx, error_code="JSON decode failed")
|
||||
return None
|
||||
|
||||
async def _api_errors_msg(self, ctx: commands.Context, error_code: int = None):
|
||||
"""Error message when API calls fail."""
|
||||
return await ctx.send(
|
||||
_("Error when trying to contact image service, please try again later. ")
|
||||
+ "(Code: {})".format(inline(str(error_code)))
|
||||
)
|
||||
|
||||
async def _version_msg(self, ctx: commands.Context, version: str, authors: List[str]):
|
||||
"""Cog version message."""
|
||||
msg = box(
|
||||
_("Nsfw cog version: {version}\nAuthors: {authors}").format(
|
||||
version=version, authors=", ".join(authors)
|
||||
),
|
||||
lang="py",
|
||||
)
|
||||
return await ctx.send(msg)
|
||||
|
||||
async def _make_embed(self, ctx: commands.Context, subs: List[str], name: str):
|
||||
"""Function to make the embed for all Reddit API images."""
|
||||
try:
|
||||
url, subr = await asyncio.wait_for(self._get_imgs(subs=subs), 5)
|
||||
except asyncio.TimeoutError:
|
||||
await ctx.send("Failed to get an image. Please try again later. (Timeout error)")
|
||||
return
|
||||
if not url:
|
||||
return
|
||||
|
||||
if any(wrong in url for wrong in NOT_EMBED_DOMAINS):
|
||||
em = (
|
||||
_("Here is {name} gif ...")
|
||||
+ " \N{EYES}\n\n"
|
||||
+ _("Requested by {req} {emoji} • From {r}\n{url}")
|
||||
).format(
|
||||
name=name,
|
||||
req=bold(ctx.author.display_name),
|
||||
emoji=emoji(),
|
||||
r=bold(f"r/{subr}"),
|
||||
url=url,
|
||||
)
|
||||
else:
|
||||
em = await self._embed(
|
||||
color=0x891193,
|
||||
title=(_("Here is {name} image ...") + " \N{EYES}").format(name=name),
|
||||
description=bold(
|
||||
_("[Link if you don't see image]({url})").format(url=url),
|
||||
escape_formatting=False,
|
||||
),
|
||||
image=url,
|
||||
footer=_("Requested by {req} {emoji} • From r/{r}").format(
|
||||
req=ctx.author.display_name, emoji=emoji(), r=subr
|
||||
),
|
||||
)
|
||||
|
||||
return em
|
||||
|
||||
async def _make_embed_other(
|
||||
self, ctx: commands.Context, name: str, url: str, arg: str, source: str
|
||||
):
|
||||
"""Function to make the embed for all others APIs images."""
|
||||
try:
|
||||
data = await asyncio.wait_for(self._get_others_imgs(ctx, url=url), 5)
|
||||
except asyncio.TimeoutError:
|
||||
await ctx.send("Failed to get an image. Please try again later. (Timeout error)")
|
||||
return
|
||||
if not data:
|
||||
return
|
||||
em = await self._embed(
|
||||
color=0x891193,
|
||||
title=(_("Here is {name} image ...") + " \N{EYES}").format(name=name),
|
||||
description=bold(
|
||||
_("[Link if you don't see image]({url})").format(url=data["img"][arg]),
|
||||
escape_formatting=False,
|
||||
),
|
||||
image=data["img"][arg],
|
||||
footer=_("Requested by {req} {emoji} • From {source}").format(
|
||||
req=ctx.author.display_name, emoji=emoji(), source=source
|
||||
),
|
||||
)
|
||||
return em
|
||||
|
||||
async def _maybe_embed(self, ctx: commands.Context, embed: Union[discord.Embed, str]):
|
||||
"""
|
||||
Function to choose if type of the message is an embed or not
|
||||
and if not send a simple message.
|
||||
"""
|
||||
try:
|
||||
if isinstance(embed, discord.Embed):
|
||||
await ctx.send(embed=embed)
|
||||
else:
|
||||
await ctx.send(embed)
|
||||
except discord.HTTPException:
|
||||
return
|
||||
|
||||
async def _send_msg(self, ctx: commands.Context, name: str, subs: List[str] = None):
|
||||
"""Main function called in all Reddit API commands."""
|
||||
embed = await self._make_embed(ctx, subs, name)
|
||||
return await self._maybe_embed(ctx, embed=embed)
|
||||
|
||||
async def _send_other_msg(
|
||||
self, ctx: commands.Context, name: str, arg: str, source: str, url: str = None
|
||||
):
|
||||
"""Main function called in all others APIs commands."""
|
||||
embed = await self._make_embed_other(ctx, name, url, arg, source)
|
||||
return await self._maybe_embed(ctx, embed)
|
||||
|
||||
@staticmethod
|
||||
async def _embed(
|
||||
color: Union[int, discord.Color] = None,
|
||||
title: str = None,
|
||||
description: str = None,
|
||||
image: str = None,
|
||||
footer: Optional[str] = None,
|
||||
):
|
||||
em = discord.Embed(color=color, title=title, description=description)
|
||||
em.set_image(url=image)
|
||||
if footer:
|
||||
em.set_footer(text=footer)
|
||||
return em
|
10
nsfw/info.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"author": ["Predä", "aikaterna"],
|
||||
"install_msg": "Thank you for installing my Nsfw cog!\n\n__Important note:__ As indicated in name of this cog, it contains mature content and is not suited for all audiences, use it responsibly.\n__Second important note:__ This cog uses by default Martine's API, this is to avoid your bot being ratelimited by Reddit pretty fast. That API is owned by this cog's author. It keeps a hash of your bot's IP in order to get ratelimits working, then access logs are not stored persistently. See privacy policy here: https://api.martinebot.com/v1/privacypolicy. If you ever want to switch back to use Reddit API, it is possible by using `[p]nsfwset switchredditapi`\n\nUse `[p]help Nsfw` to get all commands.",
|
||||
"name": "Nsfw",
|
||||
"short": "Send random NSFW images from random subreddits and Nekobot API.",
|
||||
"description": "Send random NSFW images from random subreddits and Nekobot API in NSFW only channels.",
|
||||
"tags": ["nsfw", "reddit", "images"],
|
||||
"min_bot_version" : "3.5.0",
|
||||
"end_user_data_statement": "This cog does not persistently store data or metadata about users."
|
||||
}
|
398
nsfw/locales/nl-NL.po
Normal file
|
@ -0,0 +1,398 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR ORGANIZATION
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2019-07-22 12:43+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: redgettext 2.2\n"
|
||||
|
||||
|
||||
#: core.py:76
|
||||
msgid "Error when trying to contact image service, please try again later. "
|
||||
msgstr "Fout bij het proberen contact te maken met de beeldservice. Probeer het later opnieuw.""
|
||||
|
||||
#: core.py:83
|
||||
msgid ""
|
||||
"Nsfw cog version: {version}\n"
|
||||
"Authors: {authors}"
|
||||
msgstr ""
|
||||
"Nsfw cog versie: {version}\n"
|
||||
"Auteurs: {authors}"
|
||||
|
||||
#: core.py:98 core.py:126
|
||||
msgid "Here is {name} image ..."
|
||||
msgstr "Hier is {name} afbeelding ..."
|
||||
|
||||
#: core.py:99 core.py:127
|
||||
msgid "[Link if you don't see image]({url})"
|
||||
msgstr "[Link als je geen afbeelding ziet]({url})"
|
||||
|
||||
#: core.py:101
|
||||
msgid "Requested by {req} {emoji} • From r/{r}"
|
||||
msgstr "Aangevraagd door {req} {emoji} • Van r/{r}"
|
||||
|
||||
#: core.py:107
|
||||
msgid "Here is {name} gif ..."
|
||||
msgstr "Hier is {name} gif ..."
|
||||
|
||||
#: core.py:109
|
||||
msgid ""
|
||||
"Requested by {req} {emoji} • From {r}\n"
|
||||
"{url}"
|
||||
msgstr ""
|
||||
"Aangevraagd door {req} {emoji} • Van {r}\n"
|
||||
"{url}"
|
||||
|
||||
#: core.py:129
|
||||
msgid "Requested by {req} {emoji} • From Nekobot API"
|
||||
msgstr "Aangevraagd door {req} {emoji} • Van Nekobot API"
|
||||
|
||||
#: core.py:195
|
||||
msgid "You can't use this command in a non-NSFW channel !"
|
||||
msgstr "Je kunt die opdracht niet gebruiken in een niet-NSFW-kanaal!"
|
||||
|
||||
#: nsfw.py:16
|
||||
#, docstring
|
||||
msgid ""
|
||||
"\n"
|
||||
" Send random NSFW images from random subreddits\n"
|
||||
"\n"
|
||||
" If `[p]help Nsfw` or any other Nsfw commands are used in a non-nsfw channel,\n"
|
||||
" you will not be able to see the list of commands for this category.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" Stuur willekeurige NSFW-afbeeldingen van willekeurige subreddits\n"
|
||||
"\n"
|
||||
" Typ `[p]help Nsfw`of een andere nsfw command in niet-nsfw-kanalen,\n"
|
||||
" dan zal je de lijst met opdrachten voor deze categorie niet kunnen zien.\n"
|
||||
" "
|
||||
|
||||
#: nsfw.py:28
|
||||
#, docstring
|
||||
msgid "Get the version of the installed Nsfw cog."
|
||||
msgstr "Download de versie van het geïnstalleerde Nsfw-cog."
|
||||
|
||||
#: nsfw.py:36
|
||||
#, docstring
|
||||
msgid ""
|
||||
"\n"
|
||||
" Delete a number specified of DM's from the bot.\n"
|
||||
"\n"
|
||||
" `<number>`: Number of messages from the bot you want\n"
|
||||
" to delete in your DM's.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" Verwijder een aantal opgegeven DM's uit de bot.\n"
|
||||
"\n"
|
||||
" `<number>`: Aantal berichten die je wilt verwijderen\n"
|
||||
" van de bot in je DM's.\n"
|
||||
" "
|
||||
|
||||
|
||||
#: nsfw.py:43
|
||||
msgid "This command works only for DM's messages !"
|
||||
msgstr "Deze command werkt alleen in privé berichten!"
|
||||
|
||||
#: nsfw.py:54
|
||||
#, docstring
|
||||
msgid "Show some 4k images from random subreddits."
|
||||
msgstr "Toon een aantal 4k-afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:56
|
||||
msgid "4k"
|
||||
msgstr "4k"
|
||||
|
||||
#: nsfw.py:63
|
||||
#, docstring
|
||||
msgid "Show some ahegao images from random subreddits."
|
||||
msgstr "Toon enkele ahegao-afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:65
|
||||
msgid "ahegao"
|
||||
msgstr "ahego"
|
||||
|
||||
#: nsfw.py:72
|
||||
#, docstring
|
||||
msgid "Show some ass images from random subreddits."
|
||||
msgstr "Toon enkele bibs-afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:74
|
||||
msgid "ass"
|
||||
msgstr "bips"
|
||||
|
||||
#: nsfw.py:81
|
||||
#, docstring
|
||||
msgid "Show some anal images/gifs from random subreddits."
|
||||
msgstr "Toon enkele bips afbeeldingen / gifs van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:83
|
||||
msgid "anal"
|
||||
msgstr "anaal"
|
||||
|
||||
#: nsfw.py:90
|
||||
#, docstring
|
||||
msgid "Show some bdsm from random subreddits."
|
||||
msgstr "Toon enkele bdsm afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:92
|
||||
msgid "bdsm"
|
||||
msgstr "bdsm"
|
||||
|
||||
#: nsfw.py:99
|
||||
#, docstring
|
||||
msgid "Show some blackcock images from random subreddits."
|
||||
msgstr "Toon enkele donkere piemels van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:101
|
||||
msgid "black cock"
|
||||
msgstr "donkere piemels"
|
||||
|
||||
#: nsfw.py:108
|
||||
#, docstring
|
||||
msgid "Show some blowjob images/gifs from random subreddits."
|
||||
msgstr "Toon enkele blowjob van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:110
|
||||
msgid "blowjob"
|
||||
msgstr "blowjob"
|
||||
|
||||
#: nsfw.py:117
|
||||
#, docstring
|
||||
msgid "Show some boobs images from random subreddits."
|
||||
msgstr "Toon enkele tieten van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:119
|
||||
msgid "boobs"
|
||||
msgstr "tieten"
|
||||
|
||||
#: nsfw.py:126
|
||||
#, docstring
|
||||
msgid "Show some bottomless images from random subreddits."
|
||||
msgstr "Toon enkele bottomless afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:128
|
||||
msgid "bottomless"
|
||||
msgstr "bottomless"
|
||||
|
||||
#: nsfw.py:135
|
||||
#, docstring
|
||||
msgid "Show some nsfw cosplay images from random subreddits."
|
||||
msgstr "Toon enkele nsfw cosplay afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:137
|
||||
msgid "nsfw cosplay"
|
||||
msgstr "nsfw cosplay"
|
||||
|
||||
#: nsfw.py:144
|
||||
#, docstring
|
||||
msgid "Show some cunnilingus images from random subreddits."
|
||||
msgstr "Toon enkele cunnilingus afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:146
|
||||
msgid "cunnilingus"
|
||||
msgstr "cunnilingus"
|
||||
|
||||
#: nsfw.py:153
|
||||
#, docstring
|
||||
msgid "Show some cumshot images/gifs from random subreddits."
|
||||
msgstr "Toon enkele cumshot afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:155
|
||||
msgid "cumshot"
|
||||
msgstr "cumshot"
|
||||
|
||||
#: nsfw.py:162
|
||||
#, docstring
|
||||
msgid "Show some deepthroat images from random subreddits."
|
||||
msgstr "Toon enkele feest-in-je-mond afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:164
|
||||
msgid "deepthroat"
|
||||
msgstr "feest-in-je-mond"
|
||||
|
||||
#: nsfw.py:171
|
||||
#, docstring
|
||||
msgid "Show some dicks images from random subreddits."
|
||||
msgstr "Toon enkele piemels van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:173
|
||||
msgid "dick"
|
||||
msgstr "piemels"
|
||||
|
||||
#: nsfw.py:180
|
||||
#, docstring
|
||||
msgid "Show some double penetration images/gifs from random subreddits."
|
||||
msgstr "Toon enkele dubbel-feestje afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:182
|
||||
msgid "double penetration"
|
||||
msgstr "dubbel-feestje"
|
||||
|
||||
#: nsfw.py:189
|
||||
#, docstring
|
||||
msgid "Show some futa images from random subreddits."
|
||||
msgstr "Toon enkele futa afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:191
|
||||
msgid "futa"
|
||||
msgstr "futa"
|
||||
|
||||
#: nsfw.py:198
|
||||
#, docstring
|
||||
msgid "Show some gay porn from random subreddits."
|
||||
msgstr "Toon enkele homo porno afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:200
|
||||
msgid "gay porn"
|
||||
msgstr "homo porno"
|
||||
|
||||
#: nsfw.py:207
|
||||
#, docstring
|
||||
msgid "Show some groups nudes from random subreddits."
|
||||
msgstr "Toon enkele afbeeldingen van naakte groepen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:216
|
||||
#, docstring
|
||||
msgid "Show some hentai images/gifs from Nekobot API."
|
||||
msgstr "Toon enkele hentai afbeeldingen van Nekobot API."
|
||||
|
||||
#: nsfw.py:218
|
||||
msgid "hentai"
|
||||
msgstr "hentai"
|
||||
|
||||
#: nsfw.py:225
|
||||
#, docstring
|
||||
msgid "Show some lesbian gifs or images from random subreddits."
|
||||
msgstr "Toon enkele lesbo afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:227
|
||||
msgid "lesbian"
|
||||
msgstr "lesbo"
|
||||
|
||||
#: nsfw.py:234
|
||||
#, docstring
|
||||
msgid "Show some milf images from random subreddits."
|
||||
msgstr "Toon enkele milf afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:236
|
||||
msgid "milf"
|
||||
msgstr "milf"
|
||||
|
||||
#: nsfw.py:243
|
||||
#, docstring
|
||||
msgid "Show some oral gifs or images from random subreddits."
|
||||
msgstr "Toon enkele orale afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:245
|
||||
msgid "oral"
|
||||
msgstr "oraal"
|
||||
|
||||
#: nsfw.py:252
|
||||
#, docstring
|
||||
msgid "Show some porn gifs from Nekobot API."
|
||||
msgstr "Toon enkele porno gifjes van Nekobot API."
|
||||
|
||||
#: nsfw.py:254
|
||||
msgid "porn gif"
|
||||
msgstr "porno gifjes"
|
||||
|
||||
#: nsfw.py:261
|
||||
#, docstring
|
||||
msgid "Show some public nude images from random subreddits."
|
||||
msgstr "Toon enkele afbeeldingen van publiekelijk naakte mensen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:263
|
||||
msgid "public nude"
|
||||
msgstr "publiekelijk naakt"
|
||||
|
||||
#: nsfw.py:270
|
||||
#, docstring
|
||||
msgid "Show some pussy nude images from random subreddits."
|
||||
msgstr "Toon enkele kutjes van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:272
|
||||
msgid "pussy"
|
||||
msgstr "kutjes"
|
||||
|
||||
#: nsfw.py:279
|
||||
#, docstring
|
||||
msgid "Show some real girls images from random subreddits."
|
||||
msgstr "Toon enkele naakte dames van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:281
|
||||
msgid "real nudes"
|
||||
msgstr "echte naaktfoto's"
|
||||
|
||||
#: nsfw.py:288
|
||||
#, docstring
|
||||
msgid "Show some red heads images from random subreddits."
|
||||
msgstr "Toon enkele roodharigen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:290
|
||||
msgid "red head"
|
||||
msgstr "roodharigen"
|
||||
|
||||
#: nsfw.py:297
|
||||
#, docstring
|
||||
msgid "Show some rule34 images from random subreddits."
|
||||
msgstr "Toon enkele rule34 afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:299
|
||||
msgid "rule34"
|
||||
msgstr "rule34"
|
||||
|
||||
#: nsfw.py:306
|
||||
#, docstring
|
||||
msgid "Show some squirts images from random subreddits."
|
||||
msgstr "Toon enkele squirt afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:308
|
||||
msgid "squirt"
|
||||
msgstr "squirts"
|
||||
|
||||
#: nsfw.py:315
|
||||
#, docstring
|
||||
msgid "Show some thighs images from random subreddits."
|
||||
msgstr "Toon enkele thigh afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:317
|
||||
msgid "thigh"
|
||||
msgstr "thigh"
|
||||
|
||||
#: nsfw.py:324
|
||||
#, docstring
|
||||
msgid "Show some traps from random subreddits."
|
||||
msgstr "Toon enkele trap afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:326
|
||||
msgid "trap"
|
||||
msgstr "trap"
|
||||
|
||||
#: nsfw.py:333
|
||||
#, docstring
|
||||
msgid "Show some gonewild images from random subreddits."
|
||||
msgstr "Toon enkele gonewild afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:335
|
||||
msgid "gonewild"
|
||||
msgstr "gonewild"
|
||||
|
||||
#: nsfw.py:342
|
||||
#, docstring
|
||||
msgid "Show some yiff images from random subreddits."
|
||||
msgstr "Toon enkele yiff afbeeldingen van willekeurige subreddits."
|
||||
|
||||
#: nsfw.py:344
|
||||
msgid "yiff"
|
||||
msgstr "yiff"
|
||||
|
435
nsfw/nsfw.py
Normal file
|
@ -0,0 +1,435 @@
|
|||
import discord
|
||||
|
||||
from redbot.core import commands
|
||||
from redbot.core.i18n import Translator, cog_i18n
|
||||
|
||||
import contextlib
|
||||
|
||||
from . import constants as sub
|
||||
from .core import Core
|
||||
|
||||
_ = Translator("Nsfw", __file__)
|
||||
|
||||
|
||||
@cog_i18n(_)
|
||||
class Nsfw(Core):
|
||||
"""
|
||||
Send random NSFW images from random subreddits
|
||||
|
||||
If `[p]help Nsfw` or any other Nsfw commands are used in a non-nsfw channel,
|
||||
you will not be able to see the list of commands for this category.
|
||||
"""
|
||||
|
||||
@commands.command()
|
||||
async def nsfwversion(self, ctx: commands.Context):
|
||||
"""Get the version of the installed Nsfw cog."""
|
||||
|
||||
await self._version_msg(ctx, self.__version__, self.__author__)
|
||||
|
||||
@commands.is_owner()
|
||||
@commands.group()
|
||||
async def nsfwset(self, ctx: commands.Context):
|
||||
"""Settings for the Nsfw cog."""
|
||||
|
||||
@nsfwset.command()
|
||||
async def switchredditapi(self, ctx: commands.Context):
|
||||
"""Toggle to use Reddit API directly with the cost of getting ratelimited fast, or use Martine API with faster results and no ratelimits problems.
|
||||
|
||||
Defaults to Martine API."""
|
||||
val = await self.config.use_reddit_api()
|
||||
await self.config.use_reddit_api.set(not val)
|
||||
await ctx.send(
|
||||
"Switched to Reddit API. Warning: Your bot might be ratelimited by Reddit fast."
|
||||
if not val
|
||||
else "Switched back to Martine API."
|
||||
)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.command()
|
||||
@commands.cooldown(1, 3, commands.BucketType.user)
|
||||
async def cleandm(self, ctx: commands.Context, number: int):
|
||||
"""
|
||||
Delete a number specified of DM's from the bot.
|
||||
|
||||
`<number>`: Number of messages from the bot you want
|
||||
to delete in your DM's.
|
||||
"""
|
||||
if ctx.guild:
|
||||
return await ctx.send(_("This command works only for DM's messages !"))
|
||||
async for message in ctx.channel.history(limit=number):
|
||||
if message.author.id == ctx.bot.user.id:
|
||||
with contextlib.suppress(discord.NotFound):
|
||||
await message.delete()
|
||||
await ctx.tick()
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(name="4k", aliases=["4K", "fourk"])
|
||||
async def four_k(self, ctx: commands.Context):
|
||||
"""Sends some 4k images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("4k"), sub.FOUR_K)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["oface", "ofaces"])
|
||||
async def ahegao(self, ctx: commands.Context):
|
||||
"""Sends some ahegao images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("ahegao"), sub.AHEGAO)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["butt", "booty"])
|
||||
async def ass(self, ctx: commands.Context):
|
||||
"""Sends some ass images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("ass"), sub.ASS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["asian"])
|
||||
async def asianporn(self, ctx: commands.Context):
|
||||
"""Sends some asian porn images."""
|
||||
|
||||
await self._send_msg(ctx, _("asian porn"), sub.ASIANPORN)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["sodomy"])
|
||||
async def anal(self, ctx: commands.Context):
|
||||
"""Sends some anal images/gifs from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("anal"), sub.ANAL)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command()
|
||||
async def bbw(self, ctx: commands.Context):
|
||||
"""Sends some bbw images."""
|
||||
|
||||
await self._send_msg(ctx, _("bbw"), sub.BBW)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["shibari"])
|
||||
async def bdsm(self, ctx: commands.Context):
|
||||
"""Sends some bdsm from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("bdsm"), sub.BDSM)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["blackdick", "bcock", "bdick", "blackcocks", "blackdicks"])
|
||||
async def blackcock(self, ctx: commands.Context):
|
||||
"""Sends some blackcock images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("black cock"), sub.BLACKCOCK)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["blowjobs", "blowj", "bjob", "fellatio", "fellation"])
|
||||
async def blowjob(self, ctx: commands.Context):
|
||||
"""Sends some blowjob images/gifs from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("blowjob"), sub.BLOWJOB)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["boob", "boobies", "tits", "titties", "breasts", "breast"])
|
||||
async def boobs(self, ctx: commands.Context):
|
||||
"""Sends some boobs images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("boobs"), sub.BOOBS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["boless"])
|
||||
async def bottomless(self, ctx: commands.Context):
|
||||
"""Sends some bottomless images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("bottomless"), sub.BOTTOMLESS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command()
|
||||
async def cosplay(self, ctx: commands.Context):
|
||||
"""Sends some nsfw cosplay images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("nsfw cosplay"), sub.COSPLAY)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["cunni", "pussyeating"])
|
||||
async def cunnilingus(self, ctx: commands.Context):
|
||||
"""Sends some cunnilingus images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("cunnilingus"), sub.CUNNI)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["cum", "cums", "cumshots"])
|
||||
async def cumshot(self, ctx: commands.Context):
|
||||
"""Sends some cumshot images/gifs from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("cumshot"), sub.CUMSHOTS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["deept", "deepthroating"])
|
||||
async def deepthroat(self, ctx: commands.Context):
|
||||
"""Sends some deepthroat images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("deepthroat"), sub.DEEPTHROAT)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["cock"])
|
||||
async def dick(self, ctx: commands.Context):
|
||||
"""Sends some dicks images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("dick"), sub.DICK)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["doublep"])
|
||||
async def doublepenetration(self, ctx: commands.Context):
|
||||
"""Sends some double penetration images/gifs from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("double penetration"), sub.DOUBLE_P)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command()
|
||||
async def ebony(self, ctx: commands.Context):
|
||||
"""Sends some ebony images."""
|
||||
|
||||
await self._send_msg(ctx, _("ebony"), sub.EBONY)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["facial"])
|
||||
async def facials(self, ctx: commands.Context):
|
||||
"""Sends some facials images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("facials"), sub.FACIALS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["feets", "feetish"])
|
||||
async def feet(self, ctx: commands.Context):
|
||||
"""Sends some feet images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("feets"), sub.FEET)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command()
|
||||
async def femdom(self, ctx: commands.Context):
|
||||
"""Sends some femdom images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("femdom"), sub.FEMDOM)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["futanari"])
|
||||
async def futa(self, ctx: commands.Context):
|
||||
"""Sends some futa images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("futa"), sub.FUTA)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["gayporn"])
|
||||
async def gay(self, ctx: commands.Context):
|
||||
"""Sends some gay porn from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("gay porn"), sub.GAY_P)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["groups", "nudegroup", "nudegroups"])
|
||||
async def group(self, ctx: commands.Context):
|
||||
"""Sends some groups nudes from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, "groups nudes", sub.GROUPS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command()
|
||||
async def hentai(self, ctx: commands.Context):
|
||||
"""Sends some hentai images/gifs from Nekobot API."""
|
||||
|
||||
await self._send_other_msg(
|
||||
ctx,
|
||||
name=_("hentai"),
|
||||
arg="message",
|
||||
source="Nekobot API",
|
||||
url=sub.NEKOBOT_URL.format(sub.NEKOBOT_HENTAI),
|
||||
)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["lesbians"])
|
||||
async def lesbian(self, ctx: commands.Context):
|
||||
"""Sends some lesbian gifs or images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("lesbian"), sub.LESBIANS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["milfs"])
|
||||
async def milf(self, ctx: commands.Context):
|
||||
"""Sends some milf images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("milf"), sub.MILF)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["oralsex"])
|
||||
async def oral(self, ctx: commands.Context):
|
||||
"""Sends some oral gifs or images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("oral"), sub.ORAL)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["pgif", "prongif"])
|
||||
async def porngif(self, ctx: commands.Context):
|
||||
"""Sends some porn gifs from Nekobot API."""
|
||||
|
||||
await self._send_other_msg(
|
||||
ctx,
|
||||
name=_("porn gif"),
|
||||
arg="message",
|
||||
source="Nekobot API",
|
||||
url=sub.NEKOBOT_URL.format("pgif"),
|
||||
)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command()
|
||||
async def public(self, ctx: commands.Context):
|
||||
"""Sends some public nude images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("public nude"), sub.PUBLIC)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["vagina", "puss"])
|
||||
async def pussy(self, ctx: commands.Context):
|
||||
"""Sends some pussy nude images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("pussy"), sub.PUSSY)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command()
|
||||
async def realgirls(self, ctx: commands.Context):
|
||||
"""Sends some real girls images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("real nudes"), sub.REAL_GIRLS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["redheads", "ginger", "gingers"])
|
||||
async def redhead(self, ctx: commands.Context):
|
||||
"""Sends some red heads images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("red head"), sub.REDHEADS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["r34"])
|
||||
async def rule34(self, ctx: commands.Context):
|
||||
"""Sends some rule34 images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("rule34"), sub.RULE_34)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["squirts"])
|
||||
async def squirt(self, ctx: commands.Context):
|
||||
"""Sends some squirts images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("squirt"), sub.SQUIRTS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["thighs", "legs"])
|
||||
async def thigh(self, ctx: commands.Context):
|
||||
"""Sends some thighs images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("thigh"), sub.THIGHS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["groupsex"])
|
||||
async def threesome(self, ctx: commands.Context):
|
||||
"""Sends some threesome images."""
|
||||
|
||||
await self._send_msg(ctx, _("threesome"), sub.THREESOME)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["trap", "shemale", "shemales"])
|
||||
async def trans(self, ctx: commands.Context):
|
||||
"""Sends some trans from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("trans"), sub.TRANS)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["wild", "gwild"])
|
||||
async def gonewild(self, ctx: commands.Context):
|
||||
"""Sends some gonewild images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("gonewild"), sub.WILD)
|
||||
|
||||
@commands.is_nsfw()
|
||||
@commands.bot_has_permissions(embed_links=True)
|
||||
@commands.cooldown(1, 0.5, commands.BucketType.user)
|
||||
@commands.command(aliases=["yiffs"])
|
||||
async def yiff(self, ctx: commands.Context):
|
||||
"""Sends some yiff images from random subreddits."""
|
||||
|
||||
await self._send_msg(ctx, _("yiff"), sub.YIFF)
|
7
pokecord/__init__.py
Normal file
|
@ -0,0 +1,7 @@
|
|||
from .pokecord import Pokecord
|
||||
|
||||
|
||||
async def setup(bot):
|
||||
cog = Pokecord(bot)
|
||||
await cog.initalize()
|
||||
await bot.add_cog(cog)
|
40
pokecord/abc.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
from abc import ABC, abstractmethod
|
||||
|
||||
from redbot.core import Config, commands
|
||||
from redbot.core.bot import Red
|
||||
|
||||
|
||||
class MixinMeta(ABC):
|
||||
"""Base class for well behaved type hint detection with composite class.
|
||||
Basically, to keep developers sane when not all attributes are defined in each mixin.
|
||||
"""
|
||||
|
||||
def __init__(self, *_args):
|
||||
self.config: Config
|
||||
self.bot: Red
|
||||
self.datapath: str
|
||||
self.spawnedpokemon: dict
|
||||
self.maybe_spawn: dict
|
||||
self.guildcache: dict
|
||||
|
||||
@abstractmethod
|
||||
async def is_global(self):
|
||||
raise NotImplementedError
|
||||
|
||||
@abstractmethod
|
||||
async def user_is_global(self):
|
||||
raise NotImplementedError
|
||||
|
||||
@abstractmethod
|
||||
def pokemon_choose(self):
|
||||
raise NotImplementedError
|
||||
|
||||
@abstractmethod
|
||||
def get_name(self):
|
||||
raise NotImplementedError
|
||||
|
||||
@commands.group(name="poke")
|
||||
async def poke(self, ctx: commands.Context):
|
||||
"""
|
||||
Pokecord commands
|
||||
"""
|
49
pokecord/converters.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
import argparse
|
||||
|
||||
from redbot.core.commands import BadArgument, Converter
|
||||
|
||||
|
||||
class NoExitParser(argparse.ArgumentParser):
|
||||
def error(self, message):
|
||||
raise BadArgument()
|
||||
|
||||
|
||||
class Args(Converter):
|
||||
async def convert(self, ctx, argument):
|
||||
argument = argument.replace("—", "--")
|
||||
parser = NoExitParser(description="Pokecord Search", add_help=False)
|
||||
|
||||
pokemon = parser.add_mutually_exclusive_group()
|
||||
pokemon.add_argument("--name", "--n", nargs="*", dest="names", default=[])
|
||||
pokemon.add_argument("--level", "--l", nargs="*", dest="level", type=int, default=0)
|
||||
pokemon.add_argument("--id", "--i", nargs="*", dest="id", type=int, default=0)
|
||||
pokemon.add_argument("--variant", "--v", nargs="*", dest="variant", default=[])
|
||||
pokemon.add_argument("--gender", "--g", nargs="*", dest="gender", default=[])
|
||||
pokemon.add_argument("--iv", nargs="*", dest="iv", type=int, default=0)
|
||||
pokemon.add_argument("--type", "--t", nargs="*", dest="type", default=[])
|
||||
|
||||
try:
|
||||
vals = vars(parser.parse_args(argument.split(" ")))
|
||||
except Exception as error:
|
||||
raise BadArgument() from error
|
||||
|
||||
if not any(
|
||||
[
|
||||
vals["names"],
|
||||
vals["level"],
|
||||
vals["id"],
|
||||
vals["variant"],
|
||||
vals["gender"],
|
||||
vals["iv"],
|
||||
vals["type"],
|
||||
]
|
||||
):
|
||||
raise BadArgument(
|
||||
"You must provide one of `--name`, `--level`, `--id`, `--variant`, `--iv`, `--gender` or `--type``"
|
||||
)
|
||||
|
||||
vals["names"] = " ".join(vals["names"])
|
||||
vals["variant"] = " ".join(vals["variant"])
|
||||
vals["gender"] = " ".join(vals["gender"])
|
||||
vals["type"] = " ".join(vals["type"])
|
||||
return vals
|
420
pokecord/data/alolan.json
Normal file
|
@ -0,0 +1,420 @@
|
|||
[
|
||||
{
|
||||
"id": 19,
|
||||
"name": {
|
||||
"english": "Rattata",
|
||||
"japanese": "\u30b3\u30e9\u30c3\u30bf",
|
||||
"chinese": "\u5c0f\u62c9\u9054",
|
||||
"french": "Rattata"
|
||||
},
|
||||
"type": [
|
||||
"Normal"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 30,
|
||||
"Attack": 56,
|
||||
"Defence": 35,
|
||||
"Sp. Atk": 25,
|
||||
"Sp. Def": 35,
|
||||
"Speed": 72
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Rattata"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": {
|
||||
"english": "Raticate",
|
||||
"japanese": "\u30e9\u30c3\u30bf",
|
||||
"chinese": "\u62c9\u9054",
|
||||
"french": "Rattatac"
|
||||
},
|
||||
"type": [
|
||||
"Normal"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 55,
|
||||
"Attack": 81,
|
||||
"Defence": 60,
|
||||
"Sp. Atk": 50,
|
||||
"Sp. Def": 70,
|
||||
"Speed": 97
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Raticate"
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": {
|
||||
"english": "Raichu",
|
||||
"japanese": "\u30e9\u30a4\u30c1\u30e5\u30a6",
|
||||
"chinese": "\u96f7\u4e18",
|
||||
"french": "Raichu"
|
||||
},
|
||||
"type": [
|
||||
"Electric"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 60,
|
||||
"Attack": 90,
|
||||
"Defence": 55,
|
||||
"Sp. Atk": 90,
|
||||
"Sp. Def": 80,
|
||||
"Speed": 110
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Raichu"
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": {
|
||||
"english": "Sandshrew",
|
||||
"japanese": "\u30b5\u30f3\u30c9",
|
||||
"chinese": "\u7a7f\u5c71\u9f20",
|
||||
"french": "Sabelette"
|
||||
},
|
||||
"type": [
|
||||
"Ground"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 50,
|
||||
"Attack": 75,
|
||||
"Defence": 85,
|
||||
"Sp. Atk": 20,
|
||||
"Sp. Def": 30,
|
||||
"Speed": 40
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Sandshrew"
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": {
|
||||
"english": "Sandslash",
|
||||
"japanese": "\u30b5\u30f3\u30c9\u30d1\u30f3",
|
||||
"chinese": "\u7a7f\u5c71\u738b",
|
||||
"french": "Sablaireau"
|
||||
},
|
||||
"type": [
|
||||
"Ground"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 75,
|
||||
"Attack": 100,
|
||||
"Defence": 110,
|
||||
"Sp. Atk": 45,
|
||||
"Sp. Def": 55,
|
||||
"Speed": 65
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Sandslash"
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": {
|
||||
"english": "Vulpix",
|
||||
"japanese": "\u30ed\u30b3\u30f3",
|
||||
"chinese": "\u516d\u5c3e",
|
||||
"french": "Goupix"
|
||||
},
|
||||
"type": [
|
||||
"Fire"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 38,
|
||||
"Attack": 41,
|
||||
"Defence": 40,
|
||||
"Sp. Atk": 50,
|
||||
"Sp. Def": 65,
|
||||
"Speed": 65
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Vulpix"
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": {
|
||||
"english": "Ninetales",
|
||||
"japanese": "\u30ad\u30e5\u30a6\u30b3\u30f3",
|
||||
"chinese": "\u4e5d\u5c3e",
|
||||
"french": "Feunard"
|
||||
},
|
||||
"type": [
|
||||
"Fire"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 73,
|
||||
"Attack": 76,
|
||||
"Defence": 75,
|
||||
"Sp. Atk": 81,
|
||||
"Sp. Def": 100,
|
||||
"Speed": 100
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Ninetales"
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"name": {
|
||||
"english": "Diglett",
|
||||
"japanese": "\u30c7\u30a3\u30b0\u30c0",
|
||||
"chinese": "\u5730\u9f20",
|
||||
"french": "Taupiqueur"
|
||||
},
|
||||
"type": [
|
||||
"Ground"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 10,
|
||||
"Attack": 55,
|
||||
"Defence": 25,
|
||||
"Sp. Atk": 35,
|
||||
"Sp. Def": 45,
|
||||
"Speed": 95
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Diglett"
|
||||
},
|
||||
{
|
||||
"id": 51,
|
||||
"name": {
|
||||
"english": "Dugtrio",
|
||||
"japanese": "\u30c0\u30b0\u30c8\u30ea\u30aa",
|
||||
"chinese": "\u4e09\u5730\u9f20",
|
||||
"french": "Triopikeur"
|
||||
},
|
||||
"type": [
|
||||
"Ground"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 35,
|
||||
"Attack": 100,
|
||||
"Defence": 50,
|
||||
"Sp. Atk": 50,
|
||||
"Sp. Def": 70,
|
||||
"Speed": 120
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Dugtrio"
|
||||
},
|
||||
{
|
||||
"id": 52,
|
||||
"name": {
|
||||
"english": "Meowth",
|
||||
"japanese": "\u30cb\u30e3\u30fc\u30b9",
|
||||
"chinese": "\u55b5\u55b5",
|
||||
"french": "Miaouss"
|
||||
},
|
||||
"type": [
|
||||
"Normal"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 40,
|
||||
"Attack": 45,
|
||||
"Defence": 35,
|
||||
"Sp. Atk": 40,
|
||||
"Sp. Def": 40,
|
||||
"Speed": 90
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Meowth"
|
||||
},
|
||||
{
|
||||
"id": 53,
|
||||
"name": {
|
||||
"english": "Persian",
|
||||
"japanese": "\u30da\u30eb\u30b7\u30a2\u30f3",
|
||||
"chinese": "\u8c93\u8001\u5927",
|
||||
"french": "Persian"
|
||||
},
|
||||
"type": [
|
||||
"Normal"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 65,
|
||||
"Attack": 70,
|
||||
"Defence": 60,
|
||||
"Sp. Atk": 65,
|
||||
"Sp. Def": 65,
|
||||
"Speed": 115
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Persian"
|
||||
},
|
||||
{
|
||||
"id": 74,
|
||||
"name": {
|
||||
"english": "Geodude",
|
||||
"japanese": "\u30a4\u30b7\u30c4\u30d6\u30c6",
|
||||
"chinese": "\u5c0f\u62f3\u77f3",
|
||||
"french": "Racaillou"
|
||||
},
|
||||
"type": [
|
||||
"Rock",
|
||||
"Ground"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 40,
|
||||
"Attack": 80,
|
||||
"Defence": 100,
|
||||
"Sp. Atk": 30,
|
||||
"Sp. Def": 30,
|
||||
"Speed": 20
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Geodude"
|
||||
},
|
||||
{
|
||||
"id": 75,
|
||||
"name": {
|
||||
"english": "Graveler",
|
||||
"japanese": "\u30b4\u30ed\u30fc\u30f3",
|
||||
"chinese": "\u9686\u9686\u77f3",
|
||||
"french": "Gravalanch"
|
||||
},
|
||||
"type": [
|
||||
"Rock",
|
||||
"Ground"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 55,
|
||||
"Attack": 95,
|
||||
"Defence": 115,
|
||||
"Sp. Atk": 45,
|
||||
"Sp. Def": 45,
|
||||
"Speed": 35
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Graveler"
|
||||
},
|
||||
{
|
||||
"id": 76,
|
||||
"name": {
|
||||
"english": "Golem",
|
||||
"japanese": "\u30b4\u30ed\u30fc\u30cb\u30e3",
|
||||
"chinese": "\u9686\u9686\u5ca9",
|
||||
"french": "Grolem"
|
||||
},
|
||||
"type": [
|
||||
"Rock",
|
||||
"Ground"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 80,
|
||||
"Attack": 120,
|
||||
"Defence": 130,
|
||||
"Sp. Atk": 55,
|
||||
"Sp. Def": 65,
|
||||
"Speed": 45
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Golem"
|
||||
},
|
||||
{
|
||||
"id": 88,
|
||||
"name": {
|
||||
"english": "Grimer",
|
||||
"japanese": "\u30d9\u30c8\u30d9\u30bf\u30fc",
|
||||
"chinese": "\u81ed\u6ce5",
|
||||
"french": "Tadmorv"
|
||||
},
|
||||
"type": [
|
||||
"Poison"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 80,
|
||||
"Attack": 80,
|
||||
"Defence": 50,
|
||||
"Sp. Atk": 40,
|
||||
"Sp. Def": 50,
|
||||
"Speed": 25
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Grimer"
|
||||
},
|
||||
{
|
||||
"id": 89,
|
||||
"name": {
|
||||
"english": "Muk",
|
||||
"japanese": "\u30d9\u30c8\u30d9\u30c8\u30f3",
|
||||
"chinese": "\u81ed\u81ed\u6ce5",
|
||||
"french": "Grotadmorv"
|
||||
},
|
||||
"type": [
|
||||
"Poison"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 105,
|
||||
"Attack": 105,
|
||||
"Defence": 75,
|
||||
"Sp. Atk": 65,
|
||||
"Sp. Def": 100,
|
||||
"Speed": 50
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Muk"
|
||||
},
|
||||
{
|
||||
"id": 103,
|
||||
"name": {
|
||||
"english": "Exeggutor",
|
||||
"japanese": "\u30ca\u30c3\u30b7\u30fc",
|
||||
"chinese": "\u6930\u86cb\u6a39",
|
||||
"french": "Noadkoko"
|
||||
},
|
||||
"type": [
|
||||
"Grass",
|
||||
"Psychic"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 95,
|
||||
"Attack": 95,
|
||||
"Defence": 85,
|
||||
"Sp. Atk": 125,
|
||||
"Sp. Def": 75,
|
||||
"Speed": 55
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Exeggutor"
|
||||
},
|
||||
{
|
||||
"id": 105,
|
||||
"name": {
|
||||
"english": "Marowak",
|
||||
"japanese": "\u30ac\u30e9\u30ac\u30e9",
|
||||
"chinese": "\u560e\u5566\u560e\u5566",
|
||||
"french": "Ossatueur"
|
||||
},
|
||||
"type": [
|
||||
"Ground"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 60,
|
||||
"Attack": 80,
|
||||
"Defence": 110,
|
||||
"Sp. Atk": 50,
|
||||
"Sp. Def": 80,
|
||||
"Speed": 45
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Alolan",
|
||||
"alias": "Alolan Marowak"
|
||||
}
|
||||
]
|
351
pokecord/data/evolve.json
Normal file
|
@ -0,0 +1,351 @@
|
|||
{
|
||||
"Bulbasaur": {"evolution": "Ivysaur", "level": "16"},
|
||||
"Ivysaur": {"evolution": "Venusaur", "level": "32"},
|
||||
"Charmander": {"evolution": "Charmeleon", "level": "16"},
|
||||
"Charmeleon": {"evolution": "Charizard", "level": "36"},
|
||||
"Squirtle": {"evolution": "Wartortle", "level": "16"},
|
||||
"Wartortle": {"evolution": "Blastoise", "level": "36"},
|
||||
"Caterpie": {"evolution": "Metapod", "level": "7"},
|
||||
"Metapod": {"evolution": "Butterfree", "level": "10"},
|
||||
"Weedle": {"evolution": "Kakuna", "level": "7"},
|
||||
"Kakuna": {"evolution": "Beedrill", "level": "10"},
|
||||
"Pidgey": {"evolution": "Pidgeotto", "level": "18"},
|
||||
"Pidgeotto": {"evolution": "Pidgeot", "level": "36"},
|
||||
"Rattata": {"evolution": "Raticate", "level": "20"},
|
||||
"Alolan Rattata": {"evolution": "Alolan Raticate", "level": "20"},
|
||||
"Spearow": {"evolution": "Fearow", "level": "20"},
|
||||
"Ekans": {"evolution": "Arbok", "level": "22"},
|
||||
"Sandshrew": {"evolution": "Sandslash", "level": "22"},
|
||||
"Nidoran\u2640": {"evolution": "Nidorina", "level": "16"},
|
||||
"Nidoran\u2642": {"evolution": "Nidorino", "level": "16"},
|
||||
"Zubat": {"evolution": "Golbat", "level": "22"},
|
||||
"Oddish": {"evolution": "Gloom", "level": "21"},
|
||||
"Paras": {"evolution": "Parasect", "level": "24"},
|
||||
"Venonat": {"evolution": "Venomoth", "level": "31"},
|
||||
"Diglett": {"evolution": "Dugtrio", "level": "26"},
|
||||
"Alolan Diglett": {"evolution": "Alolan Dugtrio", "level": "26"},
|
||||
"Meowth": {"evolution": "Persian", "level": "28"},
|
||||
"Galarian Meowth": {"evolution": "Perrserker", "level": "28"},
|
||||
"Psyduck": {"evolution": "Golduck", "level": "33"},
|
||||
"Mankey": {"evolution": "Primeape", "level": "28"},
|
||||
"Poliwag": {"evolution": "Poliwhirl", "level": "25"},
|
||||
"Abra": {"evolution": "Kadabra", "level": "16"},
|
||||
"Machop": {"evolution": "Machoke", "level": "28"},
|
||||
"Bellsprout": {"evolution": "Weepinbell", "level": "21"},
|
||||
"Tentacool": {"evolution": "Tentacruel", "level": "30"},
|
||||
"Geodude": {"evolution": "Graveler", "level": "25"},
|
||||
"Alolan Geodude": {"evolution": "Alolan Graveler", "level": "25"},
|
||||
"Ponyta": {"evolution": "Rapidash", "level": "40"},
|
||||
"Galarian Ponyta": {"evolution": "Galarian Rapidash", "level": "40"},
|
||||
"Slowpoke": {"evolution": "Slowbro", "level": "37"},
|
||||
"Magnemite": {"evolution": "Magneton", "level": "30"},
|
||||
"Doduo": {"evolution": "Dodrio", "level": "31"},
|
||||
"Seel": {"evolution": "Dewgong", "level": "34"},
|
||||
"Grimer": {"evolution": "Muk", "level": "38"},
|
||||
"Alolan Grimer": {"evolution": "Alolan Muk", "level": "38"},
|
||||
"Gastly": {"evolution": "Haunter", "level": "25"},
|
||||
"Drowzee": {"evolution": "Hypno", "level": "26"},
|
||||
"Krabby": {"evolution": "Kingler", "level": "28"},
|
||||
"Voltorb": {"evolution": "Electrode", "level": "30"},
|
||||
"Cubone": {"evolution": "Alolan Marowak", "level": "28"},
|
||||
"Tyrogue": {"evolution": "Hitmontop", "level": "20"},
|
||||
"Koffing": {"evolution": "Galarian Weezing", "level": "35"},
|
||||
"Rhyhorn": {"evolution": "Rhydon", "level": "42"},
|
||||
"Horsea": {"evolution": "Seadra", "level": "32"},
|
||||
"Goldeen": {"evolution": "Seaking", "level": "33"},
|
||||
"Galarian Mr. Mime": {"evolution": "Mr. Rime", "level": "42"},
|
||||
"Smoochum": {"evolution": "Jynx", "level": "30"},
|
||||
"Elekid": {"evolution": "Electabuzz", "level": "30"},
|
||||
"Magby": {"evolution": "Magmar", "level": "30"},
|
||||
"Magikarp": {"evolution": "Gyarados", "level": "20"},
|
||||
"Omanyte": {"evolution": "Omastar", "level": "40"},
|
||||
"Kabuto": {"evolution": "Kabutops", "level": "40"},
|
||||
"Dratini": {"evolution": "Dragonair", "level": "30"},
|
||||
"Dragonair": {"evolution": "Dragonite", "level": "55"},
|
||||
"Chikorita": {"evolution": "Bayleef", "level": "16"},
|
||||
"Bayleef": {"evolution": "Meganium", "level": "32"},
|
||||
"Cyndaquil": {"evolution": "Quilava", "level": "14"},
|
||||
"Quilava": {"evolution": "Typhlosion", "level": "36"},
|
||||
"Totodile": {"evolution": "Croconaw", "level": "18"},
|
||||
"Croconaw": {"evolution": "Feraligatr", "level": "30"},
|
||||
"Sentret": {"evolution": "Furret", "level": "15"},
|
||||
"Hoothoot": {"evolution": "Noctowl", "level": "20"},
|
||||
"Ledyba": {"evolution": "Ledian", "level": "18"},
|
||||
"Spinarak": {"evolution": "Ariados", "level": "22"},
|
||||
"Chinchou": {"evolution": "Lanturn", "level": "27"},
|
||||
"Natu": {"evolution": "Xatu", "level": "25"},
|
||||
"Mareep": {"evolution": "Flaaffy", "level": "15"},
|
||||
"Flaaffy": {"evolution": "Ampharos", "level": "30"},
|
||||
"Marill": {"evolution": "Azumarill", "level": "18"},
|
||||
"Hoppip": {"evolution": "Skiploom", "level": "18"},
|
||||
"Skiploom": {"evolution": "Jumpluff", "level": "27"},
|
||||
"Wooper": {"evolution": "Quagsire", "level": "20"},
|
||||
"Wynaut": {"evolution": "Wobbuffet", "level": "15"},
|
||||
"Pineco": {"evolution": "Forretress", "level": "31"},
|
||||
"Snubbull": {"evolution": "Granbull", "level": "23"},
|
||||
"Teddiursa": {"evolution": "Ursaring", "level": "30"},
|
||||
"Slugma": {"evolution": "Magcargo", "level": "38"},
|
||||
"Swinub": {"evolution": "Piloswine", "level": "33"},
|
||||
"Remoraid": {"evolution": "Octillery", "level": "25"},
|
||||
"Houndour": {"evolution": "Houndoom", "level": "24"},
|
||||
"Phanpy": {"evolution": "Donphan", "level": "25"},
|
||||
"Larvitar": {"evolution": "Pupitar", "level": "30"},
|
||||
"Pupitar": {"evolution": "Tyranitar", "level": "55"},
|
||||
"Treecko": {"evolution": "Grovyle", "level": "16"},
|
||||
"Grovyle": {"evolution": "Sceptile", "level": "36"},
|
||||
"Torchic": {"evolution": "Combusken", "level": "16"},
|
||||
"Combusken": {"evolution": "Blaziken", "level": "36"},
|
||||
"Mudkip": {"evolution": "Marshtomp", "level": "16"},
|
||||
"Marshtomp": {"evolution": "Swampert", "level": "36"},
|
||||
"Poochyena": {"evolution": "Mightyena", "level": "18"},
|
||||
"Zigzagoon": {"evolution": "Linoone", "level": "20"},
|
||||
"Galarian Zigzagoon": {"evolution": "Galarian Linoone", "level": "20"},
|
||||
"Galarian Linoone": {"evolution": "Obstagoon", "level": "35"},
|
||||
"Wurmple": {"evolution": "Cascoon", "level": "7"},
|
||||
"Silcoon": {"evolution": "Beautifly", "level": "10"},
|
||||
"Cascoon": {"evolution": "Dustox", "level": "10"},
|
||||
"Lotad": {"evolution": "Lombre", "level": "14"},
|
||||
"Seedot": {"evolution": "Nuzleaf", "level": "14"},
|
||||
"Taillow": {"evolution": "Swellow", "level": "22"},
|
||||
"Wingull": {"evolution": "Pelipper", "level": "25"},
|
||||
"Ralts": {"evolution": "Kirlia", "level": "20"},
|
||||
"Kirlia": {"evolution": "Gardevoir", "level": "30"},
|
||||
"Surskit": {"evolution": "Masquerain", "level": "22"},
|
||||
"Shroomish": {"evolution": "Breloom", "level": "23"},
|
||||
"Slakoth": {"evolution": "Vigoroth", "level": "18"},
|
||||
"Vigoroth": {"evolution": "Slaking", "level": "36"},
|
||||
"Nincada": {"evolution": "Shedinja", "level": "20"},
|
||||
"Whismur": {"evolution": "Loudred", "level": "20"},
|
||||
"Loudred": {"evolution": "Exploud", "level": "40"},
|
||||
"Makuhita": {"evolution": "Hariyama", "level": "24"},
|
||||
"Aron": {"evolution": "Lairon", "level": "32"},
|
||||
"Lairon": {"evolution": "Aggron", "level": "42"},
|
||||
"Meditite": {"evolution": "Medicham", "level": "37"},
|
||||
"Electrike": {"evolution": "Manectric", "level": "26"},
|
||||
"Gulpin": {"evolution": "Swalot", "level": "26"},
|
||||
"Carvanha": {"evolution": "Sharpedo", "level": "30"},
|
||||
"Wailmer": {"evolution": "Wailord", "level": "40"},
|
||||
"Numel": {"evolution": "Camerupt", "level": "33"},
|
||||
"Spoink": {"evolution": "Grumpig", "level": "32"},
|
||||
"Trapinch": {"evolution": "Vibrava", "level": "35"},
|
||||
"Vibrava": {"evolution": "Flygon", "level": "45"},
|
||||
"Cacnea": {"evolution": "Cacturne", "level": "32"},
|
||||
"Swablu": {"evolution": "Altaria", "level": "35"},
|
||||
"Barboach": {"evolution": "Whiscash", "level": "30"},
|
||||
"Corphish": {"evolution": "Crawdaunt", "level": "30"},
|
||||
"Baltoy": {"evolution": "Claydol", "level": "36"},
|
||||
"Lileep": {"evolution": "Cradily", "level": "40"},
|
||||
"Anorith": {"evolution": "Armaldo", "level": "40"},
|
||||
"Shuppet": {"evolution": "Banette", "level": "37"},
|
||||
"Duskull": {"evolution": "Dusclops", "level": "37"},
|
||||
"Snorunt": {"evolution": "Glalie", "level": "42"},
|
||||
"Spheal": {"evolution": "Sealeo", "level": "32"},
|
||||
"Sealeo": {"evolution": "Walrein", "level": "44"},
|
||||
"Bagon": {"evolution": "Shelgon", "level": "30"},
|
||||
"Shelgon": {"evolution": "Salamence", "level": "50"},
|
||||
"Beldum": {"evolution": "Metang", "level": "20"},
|
||||
"Metang": {"evolution": "Metagross", "level": "45"},
|
||||
"Turtwig": {"evolution": "Grotle", "level": "18"},
|
||||
"Grotle": {"evolution": "Torterra", "level": "32"},
|
||||
"Chimchar": {"evolution": "Monferno", "level": "14"},
|
||||
"Monferno": {"evolution": "Infernape", "level": "36"},
|
||||
"Piplup": {"evolution": "Prinplup", "level": "16"},
|
||||
"Prinplup": {"evolution": "Empoleon", "level": "36"},
|
||||
"Starly": {"evolution": "Staravia", "level": "14"},
|
||||
"Staravia": {"evolution": "Staraptor", "level": "34"},
|
||||
"Bidoof": {"evolution": "Bibarel", "level": "15"},
|
||||
"Kricketot": {"evolution": "Kricketune", "level": "10"},
|
||||
"Shinx": {"evolution": "Luxio", "level": "15"},
|
||||
"Luxio": {"evolution": "Luxray", "level": "30"},
|
||||
"Cranidos": {"evolution": "Rampardos", "level": "30"},
|
||||
"Shieldon": {"evolution": "Bastiodon", "level": "30"},
|
||||
"Burmy": {"evolution": "Trash Cloak", "level": "20"},
|
||||
"Combee": {"evolution": "Vespiquen", "level": "21"},
|
||||
"Buizel": {"evolution": "Floatzel", "level": "26"},
|
||||
"Cherubi": {"evolution": "Cherrim", "level": "25"},
|
||||
"Shellos": {"evolution": "Gastrodon", "level": "30"},
|
||||
"Drifloon": {"evolution": "Drifblim", "level": "28"},
|
||||
"Glameow": {"evolution": "Purugly", "level": "38"},
|
||||
"Stunky": {"evolution": "Skuntank", "level": "34"},
|
||||
"Bronzor": {"evolution": "Bronzong", "level": "33"},
|
||||
"Gible": {"evolution": "Gabite", "level": "24"},
|
||||
"Gabite": {"evolution": "Garchomp", "level": "48"},
|
||||
"Hippopotas": {"evolution": "Hippowdon", "level": "34"},
|
||||
"Skorupi": {"evolution": "Drapion", "level": "40"},
|
||||
"Croagunk": {"evolution": "Toxicroak", "level": "37"},
|
||||
"Finneon": {"evolution": "Lumineon", "level": "31"},
|
||||
"Snover": {"evolution": "Abomasnow", "level": "40"},
|
||||
"Snivy": {"evolution": "Servine", "level": "17"},
|
||||
"Servine": {"evolution": "Serperior", "level": "36"},
|
||||
"Tepig": {"evolution": "Pignite", "level": "17"},
|
||||
"Pignite": {"evolution": "Emboar", "level": "36"},
|
||||
"Oshawott": {"evolution": "Dewott", "level": "17"},
|
||||
"Dewott": {"evolution": "Samurott", "level": "36"},
|
||||
"Patrat": {"evolution": "Watchog", "level": "20"},
|
||||
"Lillipup": {"evolution": "Herdier", "level": "16"},
|
||||
"Herdier": {"evolution": "Stoutland", "level": "32"},
|
||||
"Purrloin": {"evolution": "Liepard", "level": "20"},
|
||||
"Pidove": {"evolution": "Tranquill", "level": "21"},
|
||||
"Tranquill": {"evolution": "Unfezant", "level": "32"},
|
||||
"Blitzle": {"evolution": "Zebstrika", "level": "27"},
|
||||
"Roggenrola": {"evolution": "Boldore", "level": "25"},
|
||||
"Drilbur": {"evolution": "Excadrill", "level": "31"},
|
||||
"Timburr": {"evolution": "Gurdurr", "level": "25"},
|
||||
"Tympole": {"evolution": "Palpitoad", "level": "25"},
|
||||
"Palpitoad": {"evolution": "Seismitoad", "level": "36"},
|
||||
"Sewaddle": {"evolution": "Swadloon", "level": "20"},
|
||||
"Venipede": {"evolution": "Whirlipede", "level": "22"},
|
||||
"Whirlipede": {"evolution": "Scolipede", "level": "30"},
|
||||
"Sandile": {"evolution": "Krokorok", "level": "29"},
|
||||
"Krokorok": {"evolution": "Krookodile", "level": "40"},
|
||||
"Darumaka": {"evolution": "Standard Mode", "level": "35"},
|
||||
"Dwebble": {"evolution": "Crustle", "level": "34"},
|
||||
"Scraggy": {"evolution": "Scrafty", "level": "39"},
|
||||
"Yamask": {"evolution": "Cofagrigus", "level": "34"},
|
||||
"Tirtouga": {"evolution": "Carracosta", "level": "37"},
|
||||
"Archen": {"evolution": "Archeops", "level": "37"},
|
||||
"Trubbish": {"evolution": "Garbodor", "level": "36"},
|
||||
"Zorua": {"evolution": "Zoroark", "level": "30"},
|
||||
"Gothita": {"evolution": "Gothorita", "level": "32"},
|
||||
"Gothorita": {"evolution": "Gothitelle", "level": "41"},
|
||||
"Solosis": {"evolution": "Duosion", "level": "32"},
|
||||
"Duosion": {"evolution": "Reuniclus", "level": "41"},
|
||||
"Ducklett": {"evolution": "Swanna", "level": "35"},
|
||||
"Vanillite": {"evolution": "Vanillish", "level": "35"},
|
||||
"Vanillish": {"evolution": "Vanilluxe", "level": "47"},
|
||||
"Deerling": {"evolution": "Sawsbuck", "level": "34"},
|
||||
"Foongus": {"evolution": "Amoonguss", "level": "39"},
|
||||
"Frillish": {"evolution": "Jellicent", "level": "40"},
|
||||
"Joltik": {"evolution": "Galvantula", "level": "36"},
|
||||
"Ferroseed": {"evolution": "Ferrothorn", "level": "40"},
|
||||
"Klink": {"evolution": "Klang", "level": "38"},
|
||||
"Klang": {"evolution": "Klinklang", "level": "49"},
|
||||
"Tynamo": {"evolution": "Eelektrik", "level": "39"},
|
||||
"Elgyem": {"evolution": "Beheeyem", "level": "42"},
|
||||
"Litwick": {"evolution": "Lampent", "level": "41"},
|
||||
"Axew": {"evolution": "Fraxure", "level": "38"},
|
||||
"Fraxure": {"evolution": "Haxorus", "level": "48"},
|
||||
"Cubchoo": {"evolution": "Beartic", "level": "37"},
|
||||
"Mienfoo": {"evolution": "Mienshao", "level": "50"},
|
||||
"Golett": {"evolution": "Golurk", "level": "43"},
|
||||
"Pawniard": {"evolution": "Bisharp", "level": "52"},
|
||||
"Rufflet": {"evolution": "Braviary", "level": "54"},
|
||||
"Vullaby": {"evolution": "Mandibuzz", "level": "54"},
|
||||
"Deino": {"evolution": "Zweilous", "level": "50"},
|
||||
"Zweilous": {"evolution": "Hydreigon", "level": "64"},
|
||||
"Larvesta": {"evolution": "Volcarona", "level": "59"},
|
||||
"Chespin": {"evolution": "Quilladin", "level": "16"},
|
||||
"Quilladin": {"evolution": "Chesnaught", "level": "36"},
|
||||
"Fennekin": {"evolution": "Braixen", "level": "16"},
|
||||
"Braixen": {"evolution": "Delphox", "level": "36"},
|
||||
"Froakie": {"evolution": "Frogadier", "level": "16"},
|
||||
"Frogadier": {"evolution": "Greninja", "level": "36"},
|
||||
"Bunnelby": {"evolution": "Diggersby", "level": "20"},
|
||||
"Fletchling": {"evolution": "Fletchinder", "level": "17"},
|
||||
"Fletchinder": {"evolution": "Talonflame", "level": "35"},
|
||||
"Scatterbug": {"evolution": "Spewpa", "level": "9"},
|
||||
"Spewpa": {"evolution": "Vivillon", "level": "12"},
|
||||
"Litleo": {"evolution": "Pyroar", "level": "35"},
|
||||
"Flab\u00e9b\u00e9": {"evolution": "Floette", "level": "19"},
|
||||
"Skiddo": {"evolution": "Gogoat", "level": "32"},
|
||||
"Pancham": {"evolution": "Pangoro", "level": "32"},
|
||||
"Espurr": {"evolution": "Meowstic", "level": "25"},
|
||||
"Honedge": {"evolution": "Doublade", "level": "35"},
|
||||
"Inkay": {"evolution": "Malamar", "level": "30"},
|
||||
"Binacle": {"evolution": "Barbaracle", "level": "39"},
|
||||
"Skrelp": {"evolution": "Dragalge", "level": "48"},
|
||||
"Clauncher": {"evolution": "Clawitzer", "level": "37"},
|
||||
"Tyrunt": {"evolution": "Tyrantrum", "level": "39"},
|
||||
"Amaura": {"evolution": "Aurorus", "level": "39"},
|
||||
"Goomy": {"evolution": "Sliggoo", "level": "40"},
|
||||
"Sliggoo": {"evolution": "Goodra", "level": "50"},
|
||||
"Bergmite": {"evolution": "Avalugg", "level": "37"},
|
||||
"Noibat": {"evolution": "Noivern", "level": "48"},
|
||||
"Rowlet": {"evolution": "Dartrix", "level": "17"},
|
||||
"Dartrix": {"evolution": "Decidueye", "level": "34"},
|
||||
"Litten": {"evolution": "Torracat", "level": "17"},
|
||||
"Torracat": {"evolution": "Incineroar", "level": "34"},
|
||||
"Popplio": {"evolution": "Brionne", "level": "17"},
|
||||
"Brionne": {"evolution": "Primarina", "level": "34"},
|
||||
"Pikipek": {"evolution": "Trumbeak", "level": "14"},
|
||||
"Trumbeak": {"evolution": "Toucannon", "level": "28"},
|
||||
"Yungoos": {"evolution": "Gumshoos", "level": "20"},
|
||||
"Grubbin": {"evolution": "Charjabug", "level": "20"},
|
||||
"Cutiefly": {"evolution": "Ribombee", "level": "25"},
|
||||
"Rockruff": {"evolution": "Midnight Form", "level": "25"},
|
||||
"Own Tempo Rockruff": {"evolution": "Dusk Form", "level": "25"},
|
||||
"Mareanie": {"evolution": "Toxapex", "level": "38"},
|
||||
"Mudbray": {"evolution": "Mudsdale", "level": "30"},
|
||||
"Dewpider": {"evolution": "Araquanid", "level": "22"},
|
||||
"Fomantis": {"evolution": "Lurantis", "level": "34"},
|
||||
"Morelull": {"evolution": "Shiinotic", "level": "24"},
|
||||
"Salandit": {"evolution": "Salazzle", "level": "33"},
|
||||
"Stufful": {"evolution": "Bewear", "level": "27"},
|
||||
"Bounsweet": {"evolution": "Steenee", "level": "18"},
|
||||
"Wimpod": {"evolution": "Golisopod", "level": "30"},
|
||||
"Sandygast": {"evolution": "Palossand", "level": "42"},
|
||||
"Jangmo-o": {"evolution": "Hakamo-o", "level": "35"},
|
||||
"Hakamo-o": {"evolution": "Kommo-o", "level": "45"},
|
||||
"Cosmog": {"evolution": "Cosmoem", "level": "43"},
|
||||
"Cosmoem": {"evolution": "Lunala", "level": "53"},
|
||||
"Grookey": {"evolution": "Thwackey", "level": "16"},
|
||||
"Thwackey": {"evolution": "Rillaboom", "level": "35"},
|
||||
"Scorbunny": {"evolution": "Raboot", "level": "16"},
|
||||
"Raboot": {"evolution": "Cinderace", "level": "35"},
|
||||
"Sobble": {"evolution": "Drizzile", "level": "16"},
|
||||
"Drizzile": {"evolution": "Inteleon", "level": "35"},
|
||||
"Blipbug": {"evolution": "Dottler", "level": "10"},
|
||||
"Dottler": {"evolution": "Orbeetle", "level": "30"},
|
||||
"Rookidee": {"evolution": "Corvisquire", "level": "18"},
|
||||
"Corvisquire": {"evolution": "Corviknight", "level": "38"},
|
||||
"Skwovet": {"evolution": "Greedent", "level": "24"},
|
||||
"Nickit": {"evolution": "Thievul", "level": "18"},
|
||||
"Wooloo": {"evolution": "Dubwool", "level": "24"},
|
||||
"Chewtle": {"evolution": "Drednaw", "level": "22"},
|
||||
"Yamper": {"evolution": "Boltund", "level": "25"},
|
||||
"Gossifleur": {"evolution": "Eldegoss", "level": "20"},
|
||||
"Sizzlipede": {"evolution": "Centiskorch", "level": "28"},
|
||||
"Rolycoly": {"evolution": "Carkol", "level": "18"},
|
||||
"Carkol": {"evolution": "Coalossal", "level": "34"},
|
||||
"Arrokuda": {"evolution": "Barraskewda", "level": "26"},
|
||||
"Galarian Corsola": {"evolution": "Cursola", "level": "38"},
|
||||
"Impidimp": {"evolution": "Morgrem", "level": "32"},
|
||||
"Morgrem": {"evolution": "Grimmsnarl", "level": "42"},
|
||||
"Hatenna": {"evolution": "Hattrem", "level": "32"},
|
||||
"Hattrem": {"evolution": "Hatterene", "level": "42"},
|
||||
"Cufant": {"evolution": "Copperajah", "level": "34"},
|
||||
"Toxel": {"evolution": "Amped Form", "level": "30"},
|
||||
"Silicobra": {"evolution": "Sandaconda", "level": "36"},
|
||||
"Dreepy": {"evolution": "Drakloak", "level": "50"},
|
||||
"Drakloak": {"evolution": "Dragapult", "level": "60"},
|
||||
"Sprigatito": {"evolution": "Floragato", "level": "16"},
|
||||
"Floragato": {"evolution": "Meowscarada", "level": "36"},
|
||||
"Fuecoco": {"evolution": "Crocalor", "level": "16"},
|
||||
"Crocalor": {"evolution": "Skeledirge", "level": "36"},
|
||||
"Quaxly": {"evolution": "Quaxwell", "level": "16"},
|
||||
"Quaxwell": {"evolution": "Quaquaval", "level": "36"},
|
||||
"Lechonk": {"evolution": "Oinkologne", "level": "16"},
|
||||
"Tarountula": {"evolution": "Spidops", "level": "15"},
|
||||
"Nymble": {"evolution": "Lokix", "level": "24"},
|
||||
"Pawmi": {"evolution": "Pawmo", "level": "18"},
|
||||
"Tandemaus": {"evolution": "Maushold", "level": "25"},
|
||||
"Fidough": {"evolution": "Dachsbun", "level": "26"},
|
||||
"Smoliv": {"evolution": "Dolliv", "level": "25"},
|
||||
"Dolliv": {"evolution": "Arboliva", "level": "35"},
|
||||
"Nacli": {"evolution": "Naclstack", "level": "24"},
|
||||
"Naclstack": {"evolution": "Garganacl", "level": "38"},
|
||||
"Wattrel": {"evolution": "Kilowattrel", "level": "25"},
|
||||
"Maschiff": {"evolution": "Machamp", "level": "30"},
|
||||
"Shroodle": {"evolution": "Grafaiai", "level": "28"},
|
||||
"Toedscool": {"evolution": "Toedscruel", "level": "30"},
|
||||
"Flittle": {"evolution": "Espathra", "level": "35"},
|
||||
"Tinkatink": {"evolution": "Tinkatuff", "level": "24"},
|
||||
"Tinkatuff": {"evolution": "Tinkaton", "level": "38"},
|
||||
"Wiglett": {"evolution": "Wugtrio", "level": "26"},
|
||||
"Finizen": {"evolution": "Palafin", "level": "28"},
|
||||
"Varoom": {"evolution": "Revavroom", "level": "40"},
|
||||
"Glimmet": {"evolution": "Glimmet", "level": "35"},
|
||||
"Greavard": {"evolution": "Houndstone", "level": "30"},
|
||||
"Frigibax": {"evolution": "Arctibax", "level": "35"},
|
||||
"Arctibax": {"evolution": "Baxcalibur", "level": "54"}
|
||||
}
|
590
pokecord/data/galarian.json
Normal file
|
@ -0,0 +1,590 @@
|
|||
[
|
||||
{
|
||||
"id": 52,
|
||||
"name": {
|
||||
"english": "Meowth",
|
||||
"japanese": "\u30cb\u30e3\u30fc\u30b9",
|
||||
"chinese": "\u55b5\u55b5",
|
||||
"french": "Miaouss"
|
||||
},
|
||||
"type": [
|
||||
"Normal"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 40,
|
||||
"Attack": 45,
|
||||
"Defence": 35,
|
||||
"Sp. Atk": 40,
|
||||
"Sp. Def": 40,
|
||||
"Speed": 90
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Meowth"
|
||||
},
|
||||
{
|
||||
"id": 77,
|
||||
"name": {
|
||||
"english": "Ponyta",
|
||||
"japanese": "\u30dd\u30cb\u30fc\u30bf",
|
||||
"chinese": "\u5c0f\u706b\u99ac",
|
||||
"french": "Ponyta"
|
||||
},
|
||||
"type": [
|
||||
"Fire"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 50,
|
||||
"Attack": 85,
|
||||
"Defence": 55,
|
||||
"Sp. Atk": 65,
|
||||
"Sp. Def": 65,
|
||||
"Speed": 90
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Ponyta"
|
||||
},
|
||||
{
|
||||
"id": 78,
|
||||
"name": {
|
||||
"english": "Rapidash",
|
||||
"japanese": "\u30ae\u30e3\u30ed\u30c3\u30d7",
|
||||
"chinese": "\u70c8\u7130\u99ac",
|
||||
"french": "Galopa"
|
||||
},
|
||||
"type": [
|
||||
"Fire"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 65,
|
||||
"Attack": 100,
|
||||
"Defence": 70,
|
||||
"Sp. Atk": 80,
|
||||
"Sp. Def": 80,
|
||||
"Speed": 105
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Rapidash"
|
||||
},
|
||||
{
|
||||
"id": 79,
|
||||
"name": {
|
||||
"english": "Slowpoke",
|
||||
"japanese": "\u30e4\u30c9\u30f3",
|
||||
"chinese": "\u5446\u5446\u7378",
|
||||
"french": "Ramoloss"
|
||||
},
|
||||
"type": [
|
||||
"Water",
|
||||
"Psychic"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 90,
|
||||
"Attack": 65,
|
||||
"Defence": 65,
|
||||
"Sp. Atk": 40,
|
||||
"Sp. Def": 40,
|
||||
"Speed": 15
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Slowpoke"
|
||||
},
|
||||
{
|
||||
"id": 80,
|
||||
"name": {
|
||||
"english": "Slowbro",
|
||||
"japanese": "\u30e4\u30c9\u30e9\u30f3",
|
||||
"chinese": "\u5446\u6bbc\u7378",
|
||||
"french": "Flagadoss"
|
||||
},
|
||||
"type": [
|
||||
"Water",
|
||||
"Psychic"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 95,
|
||||
"Attack": 75,
|
||||
"Defence": 110,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 80,
|
||||
"Speed": 30
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Slowbro"
|
||||
},
|
||||
{
|
||||
"id": 83,
|
||||
"name": {
|
||||
"english": "Farfetch'd",
|
||||
"japanese": "\u30ab\u30e2\u30cd\u30ae",
|
||||
"chinese": "\u5927\u8525\u9d28",
|
||||
"french": "Canarticho"
|
||||
},
|
||||
"type": [
|
||||
"Normal",
|
||||
"Flying"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 52,
|
||||
"Attack": 90,
|
||||
"Defence": 55,
|
||||
"Sp. Atk": 58,
|
||||
"Sp. Def": 62,
|
||||
"Speed": 60
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Farfetch'd"
|
||||
},
|
||||
{
|
||||
"id": 110,
|
||||
"name": {
|
||||
"english": "Weezing",
|
||||
"japanese": "\u30de\u30bf\u30c9\u30ac\u30b9",
|
||||
"chinese": "\u96d9\u5f48\u74e6\u65af",
|
||||
"french": "Smogogo"
|
||||
},
|
||||
"type": [
|
||||
"Poison"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 65,
|
||||
"Attack": 90,
|
||||
"Defence": 120,
|
||||
"Sp. Atk": 85,
|
||||
"Sp. Def": 70,
|
||||
"Speed": 60
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Weezing"
|
||||
},
|
||||
{
|
||||
"id": 122,
|
||||
"name": {
|
||||
"english": "Mr. Mime",
|
||||
"japanese": "\u30d0\u30ea\u30e4\u30fc\u30c9",
|
||||
"chinese": "\u9b54\u7246\u4eba\u5076",
|
||||
"french": "M. Mime"
|
||||
},
|
||||
"type": [
|
||||
"Psychic",
|
||||
"Fairy"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 40,
|
||||
"Attack": 45,
|
||||
"Defence": 65,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 120,
|
||||
"Speed": 90
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Mr. Mime"
|
||||
},
|
||||
{
|
||||
"id": 144,
|
||||
"name": {
|
||||
"english": "Articuno",
|
||||
"japanese": "\u30d5\u30ea\u30fc\u30b6\u30fc",
|
||||
"chinese": "\u6025\u51cd\u9ce5",
|
||||
"french": "Artikodin"
|
||||
},
|
||||
"type": [
|
||||
"Psychic",
|
||||
"Flying"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 90,
|
||||
"Attack": 85,
|
||||
"Defence": 85,
|
||||
"Sp. Atk": 125,
|
||||
"Sp. Def": 100,
|
||||
"Speed": 95
|
||||
},
|
||||
"spawnchance": 0.00015,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Articuno"
|
||||
},
|
||||
{
|
||||
"id": 145,
|
||||
"name": {
|
||||
"english": "Zapdos",
|
||||
"japanese": "\u30b5\u30f3\u30c0\u30fc",
|
||||
"chinese": "\u9583\u96fb\u9ce5",
|
||||
"french": "\u00c9lecthor"
|
||||
},
|
||||
"type": [
|
||||
"Fighting",
|
||||
"Flying"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 90,
|
||||
"Attack": 125,
|
||||
"Defence": 90,
|
||||
"Sp. Atk": 85,
|
||||
"Sp. Def": 90,
|
||||
"Speed": 100
|
||||
},
|
||||
"spawnchance": 0.00015,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Zapdos"
|
||||
},
|
||||
{
|
||||
"id": 146,
|
||||
"name": {
|
||||
"english": "Moltres",
|
||||
"japanese": "\u30d5\u30a1\u30a4\u30e4\u30fc",
|
||||
"chinese": "\u706b\u7130\u9ce5",
|
||||
"french": "Sulfura"
|
||||
},
|
||||
"type": [
|
||||
"Dark",
|
||||
"Flying"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 90,
|
||||
"Attack": 85,
|
||||
"Defence": 90,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 125,
|
||||
"Speed": 90
|
||||
},
|
||||
"spawnchance": 0.00015,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Moltres"
|
||||
},
|
||||
{
|
||||
"id": 199,
|
||||
"name": {
|
||||
"english": "Slowking",
|
||||
"japanese": "\u30e4\u30c9\u30ad\u30f3\u30b0",
|
||||
"chinese": "\u5446\u5446\u738b",
|
||||
"french": "Roigada"
|
||||
},
|
||||
"type": [
|
||||
"Water",
|
||||
"Psychic"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 95,
|
||||
"Attack": 75,
|
||||
"Defence": 80,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 110,
|
||||
"Speed": 30
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Slowking"
|
||||
},
|
||||
{
|
||||
"id": 222,
|
||||
"name": {
|
||||
"english": "Corsola",
|
||||
"japanese": "\u30b5\u30cb\u30fc\u30b4",
|
||||
"chinese": "\u592a\u967d\u73ca\u745a",
|
||||
"french": "Corayon"
|
||||
},
|
||||
"type": [
|
||||
"Water",
|
||||
"Rock"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 65,
|
||||
"Attack": 55,
|
||||
"Defence": 95,
|
||||
"Sp. Atk": 65,
|
||||
"Sp. Def": 95,
|
||||
"Speed": 35
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Corsola"
|
||||
},
|
||||
{
|
||||
"id": 263,
|
||||
"name": {
|
||||
"english": "Zigzagoon",
|
||||
"japanese": "\u30b8\u30b0\u30b6\u30b0\u30de",
|
||||
"chinese": "\u86c7\u7d0b\u718a",
|
||||
"french": "Zigzaton"
|
||||
},
|
||||
"type": [
|
||||
"Normal"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 38,
|
||||
"Attack": 30,
|
||||
"Defence": 41,
|
||||
"Sp. Atk": 30,
|
||||
"Sp. Def": 41,
|
||||
"Speed": 60
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Zigzagoon"
|
||||
},
|
||||
{
|
||||
"id": 264,
|
||||
"name": {
|
||||
"english": "Linoone",
|
||||
"japanese": "\u30de\u30c3\u30b9\u30b0\u30de",
|
||||
"chinese": "\u76f4\u885d\u718a",
|
||||
"french": "Lin\u00e9on"
|
||||
},
|
||||
"type": [
|
||||
"Normal"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 78,
|
||||
"Attack": 70,
|
||||
"Defence": 61,
|
||||
"Sp. Atk": 50,
|
||||
"Sp. Def": 61,
|
||||
"Speed": 100
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Linoone"
|
||||
},
|
||||
{
|
||||
"id": 554,
|
||||
"name": {
|
||||
"english": "Darumaka",
|
||||
"japanese": "\u30c0\u30eb\u30de\u30c3\u30ab",
|
||||
"chinese": "\u706b\u7d05\u4e0d\u5012\u7fc1",
|
||||
"french": "Darumarond"
|
||||
},
|
||||
"type": [
|
||||
"Fire"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 70,
|
||||
"Attack": 90,
|
||||
"Defence": 45,
|
||||
"Sp. Atk": 15,
|
||||
"Sp. Def": 45,
|
||||
"Speed": 50
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Darumaka"
|
||||
},
|
||||
{
|
||||
"id": 555,
|
||||
"name": {
|
||||
"english": "Darmanitan",
|
||||
"japanese": "\u30d2\u30d2\u30c0\u30eb\u30de",
|
||||
"chinese": "\u9054\u6469\u72d2\u72d2",
|
||||
"french": "Darumacho"
|
||||
},
|
||||
"type": [
|
||||
"Fire"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 105,
|
||||
"Attack": 140,
|
||||
"Defence": 55,
|
||||
"Sp. Atk": 30,
|
||||
"Sp. Def": 55,
|
||||
"Speed": 95
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Darmanitan"
|
||||
},
|
||||
{
|
||||
"id": 562,
|
||||
"name": {
|
||||
"english": "Yamask",
|
||||
"japanese": "\u30c7\u30b9\u30de\u30b9",
|
||||
"chinese": "\u54ed\u54ed\u9762\u5177",
|
||||
"french": "Tutafeh"
|
||||
},
|
||||
"type": [
|
||||
"Ghost"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 38,
|
||||
"Attack": 30,
|
||||
"Defence": 85,
|
||||
"Sp. Atk": 55,
|
||||
"Sp. Def": 65,
|
||||
"Speed": 30
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Yamask"
|
||||
},
|
||||
{
|
||||
"id": 618,
|
||||
"name": {
|
||||
"english": "Stunfisk",
|
||||
"japanese": "\u30de\u30c3\u30ae\u30e7",
|
||||
"chinese": "\u6ce5\u5df4\u9b5a",
|
||||
"french": "Limonde"
|
||||
},
|
||||
"type": [
|
||||
"Ground",
|
||||
"Electric"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 109,
|
||||
"Attack": 66,
|
||||
"Defence": 84,
|
||||
"Sp. Atk": 81,
|
||||
"Sp. Def": 99,
|
||||
"Speed": 32
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Stunfisk"
|
||||
},
|
||||
{
|
||||
"id": 862,
|
||||
"name": {
|
||||
"english": "Obstagoon",
|
||||
"japanese": "\u30bf\u30c1\u30d5\u30b5\u30b0\u30de",
|
||||
"chinese": "\u5835\u6514\u718a",
|
||||
"french": "Ixon"
|
||||
},
|
||||
"type": [
|
||||
"Dark",
|
||||
"Normal"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 93,
|
||||
"Attack": 90,
|
||||
"Defence": 101,
|
||||
"Sp. Atk": 60,
|
||||
"Sp. Def": 81,
|
||||
"Speed": 95
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Obstagoon"
|
||||
},
|
||||
{
|
||||
"id": 863,
|
||||
"name": {
|
||||
"english": "Perrserker",
|
||||
"japanese": "\u30cb\u30e3\u30a4\u30ad\u30f3\u30b0",
|
||||
"chinese": "\u55b5\u982d\u76ee",
|
||||
"french": "Berserkatt"
|
||||
},
|
||||
"type": [
|
||||
"Steel"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 70,
|
||||
"Attack": 110,
|
||||
"Defence": 100,
|
||||
"Sp. Atk": 50,
|
||||
"Sp. Def": 60,
|
||||
"Speed": 50
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Perrserker"
|
||||
},
|
||||
{
|
||||
"id": 864,
|
||||
"name": {
|
||||
"english": "Cursola",
|
||||
"japanese": "\u30b5\u30cb\u30b4\u30fc\u30f3",
|
||||
"chinese": "\u9b54\u9748\u73ca\u745a",
|
||||
"french": "Coray\u00f4me"
|
||||
},
|
||||
"type": [
|
||||
"Ghost"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 60,
|
||||
"Attack": 95,
|
||||
"Defence": 50,
|
||||
"Sp. Atk": 145,
|
||||
"Sp. Def": 130,
|
||||
"Speed": 30
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Cursola"
|
||||
},
|
||||
{
|
||||
"id": 865,
|
||||
"name": {
|
||||
"english": "Sirfetch'd",
|
||||
"japanese": "\u30cd\u30ae\u30ac\u30ca\u30a4\u30c8",
|
||||
"chinese": "\u8525\u904a\u5175",
|
||||
"french": "Palarticho"
|
||||
},
|
||||
"type": [
|
||||
"Fighting"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 62,
|
||||
"Attack": 135,
|
||||
"Defence": 95,
|
||||
"Sp. Atk": 68,
|
||||
"Sp. Def": 82,
|
||||
"Speed": 65
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Sirfetch'd"
|
||||
},
|
||||
{
|
||||
"id": 866,
|
||||
"name": {
|
||||
"english": "Mr. Rime",
|
||||
"japanese": "\u30d0\u30ea\u30b3\u30aa\u30eb",
|
||||
"chinese": "\u8e0f\u51b0\u4eba\u5076",
|
||||
"french": "M. Glaquette"
|
||||
},
|
||||
"type": [
|
||||
"Ice",
|
||||
"Psychic"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 80,
|
||||
"Attack": 85,
|
||||
"Defence": 75,
|
||||
"Sp. Atk": 110,
|
||||
"Sp. Def": 100,
|
||||
"Speed": 70
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Mr. Rime"
|
||||
},
|
||||
{
|
||||
"id": 867,
|
||||
"name": {
|
||||
"english": "Runerigus",
|
||||
"japanese": "\u30c7\u30b9\u30d0\u30fc\u30f3",
|
||||
"chinese": "\u6b7b\u795e\u677f",
|
||||
"french": "Tut\u00e9t\u00e9kri"
|
||||
},
|
||||
"type": [
|
||||
"Ground",
|
||||
"Ghost"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 58,
|
||||
"Attack": 95,
|
||||
"Defence": 145,
|
||||
"Sp. Atk": 50,
|
||||
"Sp. Def": 105,
|
||||
"Speed": 30
|
||||
},
|
||||
"spawnchance": 0.15,
|
||||
"variant": "Galarian",
|
||||
"alias": "Galarian Runerigus"
|
||||
}
|
||||
]
|
809
pokecord/data/genders.json
Normal file
|
@ -0,0 +1,809 @@
|
|||
{
|
||||
"Abomasnow": 4,
|
||||
"Abra": 2,
|
||||
"Absol": 4,
|
||||
"Accelgor": 4,
|
||||
"Aegislash": 4,
|
||||
"Aerodactyl": 1,
|
||||
"Aggron": 4,
|
||||
"Aipom": 4,
|
||||
"Alakazam": 2,
|
||||
"Alomomola": 4,
|
||||
"Altaria": 4,
|
||||
"Amaura": 1,
|
||||
"Ambipom": 4,
|
||||
"Amoonguss": 4,
|
||||
"Ampharos": 4,
|
||||
"Anorith": 1,
|
||||
"Araquanid": 4,
|
||||
"Arbok": 4,
|
||||
"Arcanine": 2,
|
||||
"Arceus": -1,
|
||||
"Archen": 1,
|
||||
"Archeops": 1,
|
||||
"Ariados": 4,
|
||||
"Armaldo": 1,
|
||||
"Aromatisse": 4,
|
||||
"Aron": 4,
|
||||
"Articuno": -1,
|
||||
"Audino": 4,
|
||||
"Aurorus": 1,
|
||||
"Avalugg": 4,
|
||||
"Axew": 4,
|
||||
"Azelf": -1,
|
||||
"Azumarill": 4,
|
||||
"Azurill": 6,
|
||||
"Bagon": 4,
|
||||
"Baltoy": -1,
|
||||
"Banette": 4,
|
||||
"Barbaracle": 4,
|
||||
"Barboach": 4,
|
||||
"Basculin": 4,
|
||||
"Bastiodon": 1,
|
||||
"Bayleef": 1,
|
||||
"Beartic": 4,
|
||||
"Beautifly": 4,
|
||||
"Beedrill": 4,
|
||||
"Beheeyem": 4,
|
||||
"Beldum": -1,
|
||||
"Bellossom": 4,
|
||||
"Bellsprout": 4,
|
||||
"Bergmite": 4,
|
||||
"Bewear": 4,
|
||||
"Bibarel": 4,
|
||||
"Bidoof": 4,
|
||||
"Binacle": 4,
|
||||
"Bisharp": 4,
|
||||
"Blacephalon": -1,
|
||||
"Blastoise": 1,
|
||||
"Blaziken": 1,
|
||||
"Blissey": 8,
|
||||
"Blitzle": 4,
|
||||
"Boldore": 4,
|
||||
"Bonsly": 4,
|
||||
"Bouffalant": 4,
|
||||
"Bounsweet": 8,
|
||||
"Braixen": 1,
|
||||
"Braviary": 0,
|
||||
"Breloom": 4,
|
||||
"Brionne": 1,
|
||||
"Bronzong": -1,
|
||||
"Bronzor": -1,
|
||||
"Bruxish": 4,
|
||||
"Budew": 4,
|
||||
"Buizel": 4,
|
||||
"Bulbasaur": 1,
|
||||
"Buneary": 4,
|
||||
"Bunnelby": 4,
|
||||
"Burmy": 4,
|
||||
"Butterfree": 4,
|
||||
"Buzzwole": -1,
|
||||
"Cacnea": 4,
|
||||
"Cacturne": 4,
|
||||
"Camerupt": 4,
|
||||
"Carbink": -1,
|
||||
"Carnivine": 4,
|
||||
"Carracosta": 1,
|
||||
"Carvanha": 4,
|
||||
"Cascoon": 4,
|
||||
"Castform": 4,
|
||||
"Caterpie": 4,
|
||||
"Celebi": -1,
|
||||
"Celesteela": -1,
|
||||
"Chandelure": 4,
|
||||
"Chansey": 8,
|
||||
"Charizard": 1,
|
||||
"Charjabug": 4,
|
||||
"Charmander": 1,
|
||||
"Charmeleon": 1,
|
||||
"Chatot": 4,
|
||||
"Cherrim": 4,
|
||||
"Cherubi": 4,
|
||||
"Chesnaught": 1,
|
||||
"Chespin": 1,
|
||||
"Chikorita": 1,
|
||||
"Chimchar": 1,
|
||||
"Chimecho": 4,
|
||||
"Chinchou": 4,
|
||||
"Chingling": 4,
|
||||
"Cinccino": 6,
|
||||
"Clamperl": 4,
|
||||
"Clauncher": 4,
|
||||
"Clawitzer": 4,
|
||||
"Claydol": -1,
|
||||
"Clefable": 6,
|
||||
"Clefairy": 6,
|
||||
"Cleffa": 6,
|
||||
"Cloyster": 4,
|
||||
"Cobalion": -1,
|
||||
"Cofagrigus": 4,
|
||||
"Combee": 1,
|
||||
"Combusken": 1,
|
||||
"Comfey": 6,
|
||||
"Conkeldurr": 2,
|
||||
"Corphish": 4,
|
||||
"Corsola": 6,
|
||||
"Cosmoem": -1,
|
||||
"Cosmog": -1,
|
||||
"Cottonee": 4,
|
||||
"Crabominable": 4,
|
||||
"Crabrawler": 4,
|
||||
"Cradily": 1,
|
||||
"Cranidos": 1,
|
||||
"Crawdaunt": 4,
|
||||
"Cresselia": 8,
|
||||
"Croagunk": 4,
|
||||
"Crobat": 4,
|
||||
"Croconaw": 1,
|
||||
"Crustle": 4,
|
||||
"Cryogonal": -1,
|
||||
"Cubchoo": 4,
|
||||
"Cubone": 4,
|
||||
"Cutiefly": 4,
|
||||
"Cyndaquil": 1,
|
||||
"Darkrai": -1,
|
||||
"Darmanitan": 4,
|
||||
"Dartrix": 1,
|
||||
"Darumaka": 4,
|
||||
"Decidueye": 1,
|
||||
"Dedenne": 4,
|
||||
"Deerling": 4,
|
||||
"Deino": 4,
|
||||
"Delcatty": 6,
|
||||
"Delibird": 4,
|
||||
"Delphox": 1,
|
||||
"Deoxys": -1,
|
||||
"Dewgong": 4,
|
||||
"Dewott": 1,
|
||||
"Dewpider": 4,
|
||||
"Dhelmise": -1,
|
||||
"Dialga": -1,
|
||||
"Diancie": -1,
|
||||
"Diggersby": 4,
|
||||
"Diglett": 4,
|
||||
"Ditto": -1,
|
||||
"Dodrio": 4,
|
||||
"Doduo": 4,
|
||||
"Donphan": 4,
|
||||
"Doublade": 4,
|
||||
"Dragalge": 4,
|
||||
"Dragonair": 4,
|
||||
"Dragonite": 4,
|
||||
"Drampa": 4,
|
||||
"Drapion": 4,
|
||||
"Dratini": 4,
|
||||
"Drifblim": 4,
|
||||
"Drifloon": 4,
|
||||
"Drilbur": 4,
|
||||
"Drowzee": 4,
|
||||
"Druddigon": 4,
|
||||
"Ducklett": 4,
|
||||
"Dugtrio": 4,
|
||||
"Dunsparce": 4,
|
||||
"Duosion": 4,
|
||||
"Durant": 4,
|
||||
"Dusclops": 4,
|
||||
"Dusknoir": 4,
|
||||
"Duskull": 4,
|
||||
"Dustox": 4,
|
||||
"Dwebble": 4,
|
||||
"Eelektrik": 4,
|
||||
"Eelektross": 4,
|
||||
"Eevee": 1,
|
||||
"Ekans": 4,
|
||||
"Electabuzz": 2,
|
||||
"Electivire": 2,
|
||||
"Electrike": 4,
|
||||
"Electrode": -1,
|
||||
"Elekid": 2,
|
||||
"Elgyem": 4,
|
||||
"Emboar": 1,
|
||||
"Emolga": 4,
|
||||
"Empoleon": 1,
|
||||
"Entei": -1,
|
||||
"Escavalier": 4,
|
||||
"Espeon": 1,
|
||||
"Espurr": 4,
|
||||
"Excadrill": 4,
|
||||
"Exeggcute": 4,
|
||||
"Exeggutor": 4,
|
||||
"Exploud": 4,
|
||||
"Farfetch\u2019d": 4,
|
||||
"Fearow": 4,
|
||||
"Feebas": 4,
|
||||
"Fennekin": 1,
|
||||
"Feraligatr": 1,
|
||||
"Ferroseed": 4,
|
||||
"Ferrothorn": 4,
|
||||
"Finneon": 4,
|
||||
"Flaaffy": 4,
|
||||
"Flab\u00e9b\u00e9": 8,
|
||||
"Flareon": 1,
|
||||
"Fletchinder": 4,
|
||||
"Fletchling": 4,
|
||||
"Floatzel": 4,
|
||||
"Floette": 8,
|
||||
"Florges": 8,
|
||||
"Flygon": 4,
|
||||
"Fomantis": 4,
|
||||
"Foongus": 4,
|
||||
"Forretress": 4,
|
||||
"Fraxure": 4,
|
||||
"Frillish": 4,
|
||||
"Froakie": 1,
|
||||
"Frogadier": 1,
|
||||
"Froslass": 8,
|
||||
"Furfrou": 4,
|
||||
"Furret": 4,
|
||||
"Gabite": 4,
|
||||
"Gallade": 0,
|
||||
"Galvantula": 4,
|
||||
"Garbodor": 4,
|
||||
"Garchomp": 4,
|
||||
"Gardevoir": 4,
|
||||
"Gastly": 4,
|
||||
"Gastrodon": 4,
|
||||
"Genesect": -1,
|
||||
"Gengar": 4,
|
||||
"Geodude": 4,
|
||||
"Gible": 4,
|
||||
"Gigalith": 4,
|
||||
"Girafarig": 4,
|
||||
"Giratina": -1,
|
||||
"Glaceon": 1,
|
||||
"Glalie": 4,
|
||||
"Glameow": 6,
|
||||
"Gligar": 4,
|
||||
"Gliscor": 4,
|
||||
"Gloom": 4,
|
||||
"Gogoat": 4,
|
||||
"Golbat": 4,
|
||||
"Goldeen": 4,
|
||||
"Golduck": 4,
|
||||
"Golem": 4,
|
||||
"Golett": -1,
|
||||
"Golisopod": 4,
|
||||
"Golurk": -1,
|
||||
"Goodra": 4,
|
||||
"Goomy": 4,
|
||||
"Gorebyss": 4,
|
||||
"Gothita": 6,
|
||||
"Gothitelle": 6,
|
||||
"Gothorita": 6,
|
||||
"Gourgeist": 4,
|
||||
"Granbull": 6,
|
||||
"Graveler": 4,
|
||||
"Greninja": 1,
|
||||
"Grimer": 4,
|
||||
"Grotle": 1,
|
||||
"Groudon": -1,
|
||||
"Grovyle": 1,
|
||||
"Growlithe": 2,
|
||||
"Grubbin": 4,
|
||||
"Grumpig": 4,
|
||||
"Gulpin": 4,
|
||||
"Gumshoos": 4,
|
||||
"Gurdurr": 2,
|
||||
"Guzzlord": -1,
|
||||
"Gyarados": 4,
|
||||
"Hakamo-o": 4,
|
||||
"Happiny": 8,
|
||||
"Hariyama": 2,
|
||||
"Haunter": 4,
|
||||
"Hawlucha": 4,
|
||||
"Haxorus": 4,
|
||||
"Heatmor": 4,
|
||||
"Heatran": 4,
|
||||
"Heliolisk": 4,
|
||||
"Helioptile": 4,
|
||||
"Heracross": 4,
|
||||
"Herdier": 4,
|
||||
"Hippopotas": 4,
|
||||
"Hippowdon": 4,
|
||||
"Hitmonchan": 0,
|
||||
"Hitmonlee": 0,
|
||||
"Hitmontop": 0,
|
||||
"Ho-Oh": -1,
|
||||
"Honchkrow": 4,
|
||||
"Honedge": 4,
|
||||
"Hoopa": -1,
|
||||
"Hoothoot": 4,
|
||||
"Hoppip": 4,
|
||||
"Horsea": 4,
|
||||
"Houndoom": 4,
|
||||
"Houndour": 4,
|
||||
"Huntail": 4,
|
||||
"Hydreigon": 4,
|
||||
"Hypno": 4,
|
||||
"Igglybuff": 6,
|
||||
"Illumise": 8,
|
||||
"Incineroar": 1,
|
||||
"Infernape": 1,
|
||||
"Inkay": 4,
|
||||
"Ivysaur": 1,
|
||||
"Jangmo-o": 4,
|
||||
"Jellicent": 4,
|
||||
"Jigglypuff": 6,
|
||||
"Jirachi": -1,
|
||||
"Jolteon": 1,
|
||||
"Joltik": 4,
|
||||
"Jumpluff": 4,
|
||||
"Jynx": 8,
|
||||
"Kabuto": 1,
|
||||
"Kabutops": 1,
|
||||
"Kadabra": 2,
|
||||
"Kakuna": 4,
|
||||
"Kangaskhan": 8,
|
||||
"Karrablast": 4,
|
||||
"Kartana": -1,
|
||||
"Kecleon": 4,
|
||||
"Keldeo": -1,
|
||||
"Kingdra": 4,
|
||||
"Kingler": 4,
|
||||
"Kirlia": 4,
|
||||
"Klang": -1,
|
||||
"Klefki": 4,
|
||||
"Klink": -1,
|
||||
"Klinklang": -1,
|
||||
"Koffing": 4,
|
||||
"Komala": 4,
|
||||
"Kommo-o": 4,
|
||||
"Krabby": 4,
|
||||
"Kricketot": 4,
|
||||
"Kricketune": 4,
|
||||
"Krokorok": 4,
|
||||
"Krookodile": 4,
|
||||
"Kyogre": -1,
|
||||
"Kyurem": -1,
|
||||
"Lairon": 4,
|
||||
"Lampent": 4,
|
||||
"Landorus": 0,
|
||||
"Lanturn": 4,
|
||||
"Lapras": 4,
|
||||
"Larvesta": 4,
|
||||
"Larvitar": 4,
|
||||
"Latias": 8,
|
||||
"Latios": 0,
|
||||
"Leafeon": 1,
|
||||
"Leavanny": 4,
|
||||
"Ledian": 4,
|
||||
"Ledyba": 4,
|
||||
"Lickilicky": 4,
|
||||
"Lickitung": 4,
|
||||
"Liepard": 4,
|
||||
"Lileep": 1,
|
||||
"Lilligant": 8,
|
||||
"Lillipup": 4,
|
||||
"Linoone": 4,
|
||||
"Litleo": 7,
|
||||
"Litten": 1,
|
||||
"Litwick": 4,
|
||||
"Lombre": 4,
|
||||
"Lopunny": 4,
|
||||
"Lotad": 4,
|
||||
"Loudred": 4,
|
||||
"Lucario": 1,
|
||||
"Ludicolo": 4,
|
||||
"Lugia": -1,
|
||||
"Lumineon": 4,
|
||||
"Lunala": -1,
|
||||
"Lunatone": -1,
|
||||
"Lurantis": 4,
|
||||
"Luvdisc": 6,
|
||||
"Luxio": 4,
|
||||
"Luxray": 4,
|
||||
"Lycanroc": 4,
|
||||
"Machamp": 2,
|
||||
"Machoke": 2,
|
||||
"Machop": 2,
|
||||
"Magby": 2,
|
||||
"Magcargo": 4,
|
||||
"Magearna": -1,
|
||||
"Magikarp": 4,
|
||||
"Magmar": 2,
|
||||
"Magmortar": 2,
|
||||
"Magnemite": -1,
|
||||
"Magneton": -1,
|
||||
"Magnezone": -1,
|
||||
"Makuhita": 2,
|
||||
"Malamar": 4,
|
||||
"Mamoswine": 4,
|
||||
"Manaphy": -1,
|
||||
"Mandibuzz": 8,
|
||||
"Manectric": 4,
|
||||
"Mankey": 4,
|
||||
"Mantine": 4,
|
||||
"Mantyke": 4,
|
||||
"Maractus": 4,
|
||||
"Mareanie": 4,
|
||||
"Mareep": 4,
|
||||
"Marill": 4,
|
||||
"Marowak": 4,
|
||||
"Marshadow": -1,
|
||||
"Marshtomp": 1,
|
||||
"Masquerain": 4,
|
||||
"Mawile": 4,
|
||||
"Medicham": 4,
|
||||
"Meditite": 4,
|
||||
"Meganium": 1,
|
||||
"Meloetta": -1,
|
||||
"Meowstic": 4,
|
||||
"Meowth": 4,
|
||||
"Mesprit": -1,
|
||||
"Metagross": -1,
|
||||
"Metang": -1,
|
||||
"Metapod": 4,
|
||||
"Mew": -1,
|
||||
"Mewtwo": -1,
|
||||
"Mienfoo": 4,
|
||||
"Mienshao": 4,
|
||||
"Mightyena": 4,
|
||||
"Milotic": 4,
|
||||
"Miltank": 8,
|
||||
"Mime Jr.": 4,
|
||||
"Mimikyu": 4,
|
||||
"Minccino": 6,
|
||||
"Minior": -1,
|
||||
"Minun": 4,
|
||||
"Misdreavus": 4,
|
||||
"Mismagius": 4,
|
||||
"Moltres": -1,
|
||||
"Monferno": 1,
|
||||
"Morelull": 4,
|
||||
"Mothim": 0,
|
||||
"Mr. Mime": 4,
|
||||
"Mudbray": 4,
|
||||
"Mudkip": 1,
|
||||
"Mudsdale": 4,
|
||||
"Muk": 4,
|
||||
"Munchlax": 1,
|
||||
"Munna": 4,
|
||||
"Murkrow": 4,
|
||||
"Musharna": 4,
|
||||
"Naganadel": -1,
|
||||
"Natu": 4,
|
||||
"Necrozma": -1,
|
||||
"Nidoking": 0,
|
||||
"Nidoqueen": 8,
|
||||
"Nidoran\u2640": 8,
|
||||
"Nidoran\u2642": 0,
|
||||
"Nidorina": 8,
|
||||
"Nidorino": 0,
|
||||
"Nihilego": -1,
|
||||
"Nincada": 4,
|
||||
"Ninetales": 6,
|
||||
"Ninjask": 4,
|
||||
"Noctowl": 4,
|
||||
"Noibat": 4,
|
||||
"Noivern": 4,
|
||||
"Nosepass": 4,
|
||||
"Numel": 4,
|
||||
"Nuzleaf": 4,
|
||||
"Octillery": 4,
|
||||
"Oddish": 4,
|
||||
"Omanyte": 1,
|
||||
"Omastar": 1,
|
||||
"Onix": 4,
|
||||
"Oranguru": 4,
|
||||
"Oricorio": 6,
|
||||
"Oshawott": 1,
|
||||
"Pachirisu": 4,
|
||||
"Palkia": -1,
|
||||
"Palossand": 4,
|
||||
"Palpitoad": 4,
|
||||
"Pancham": 4,
|
||||
"Pangoro": 4,
|
||||
"Panpour": 1,
|
||||
"Pansage": 1,
|
||||
"Pansear": 1,
|
||||
"Paras": 4,
|
||||
"Parasect": 4,
|
||||
"Passimian": 4,
|
||||
"Patrat": 4,
|
||||
"Pawniard": 4,
|
||||
"Pelipper": 4,
|
||||
"Persian": 4,
|
||||
"Petilil": 8,
|
||||
"Phanpy": 4,
|
||||
"Phantump": 4,
|
||||
"Pheromosa": -1,
|
||||
"Phione": -1,
|
||||
"Pichu": 4,
|
||||
"Pidgeot": 4,
|
||||
"Pidgeotto": 4,
|
||||
"Pidgey": 4,
|
||||
"Pidove": 4,
|
||||
"Pignite": 1,
|
||||
"Pikachu": 4,
|
||||
"Pikipek": 4,
|
||||
"Piloswine": 4,
|
||||
"Pineco": 4,
|
||||
"Pinsir": 4,
|
||||
"Piplup": 1,
|
||||
"Plusle": 4,
|
||||
"Poipole": -1,
|
||||
"Politoed": 4,
|
||||
"Poliwag": 4,
|
||||
"Poliwhirl": 4,
|
||||
"Poliwrath": 4,
|
||||
"Ponyta": 4,
|
||||
"Poochyena": 4,
|
||||
"Popplio": 1,
|
||||
"Porygon": -1,
|
||||
"Porygon-Z": -1,
|
||||
"Porygon2": -1,
|
||||
"Primarina": 1,
|
||||
"Primeape": 4,
|
||||
"Prinplup": 1,
|
||||
"Probopass": 4,
|
||||
"Psyduck": 4,
|
||||
"Pumpkaboo": 4,
|
||||
"Pupitar": 4,
|
||||
"Purrloin": 4,
|
||||
"Purugly": 6,
|
||||
"Pyroar": 7,
|
||||
"Pyukumuku": 4,
|
||||
"Quagsire": 4,
|
||||
"Quilava": 1,
|
||||
"Quilladin": 1,
|
||||
"Qwilfish": 4,
|
||||
"Raichu": 4,
|
||||
"Raikou": -1,
|
||||
"Ralts": 4,
|
||||
"Rampardos": 1,
|
||||
"Rapidash": 4,
|
||||
"Raticate": 4,
|
||||
"Rattata": 4,
|
||||
"Rayquaza": -1,
|
||||
"Regice": -1,
|
||||
"Regigigas": -1,
|
||||
"Regirock": -1,
|
||||
"Registeel": -1,
|
||||
"Relicanth": 1,
|
||||
"Remoraid": 4,
|
||||
"Reshiram": -1,
|
||||
"Reuniclus": 4,
|
||||
"Rhydon": 4,
|
||||
"Rhyhorn": 4,
|
||||
"Rhyperior": 4,
|
||||
"Ribombee": 4,
|
||||
"Riolu": 1,
|
||||
"Rockruff": 4,
|
||||
"Roggenrola": 4,
|
||||
"Roselia": 4,
|
||||
"Roserade": 4,
|
||||
"Rotom": -1,
|
||||
"Rowlet": 1,
|
||||
"Rufflet": 0,
|
||||
"Sableye": 4,
|
||||
"Salamence": 4,
|
||||
"Salandit": 1,
|
||||
"Salazzle": 8,
|
||||
"Samurott": 1,
|
||||
"Sandile": 4,
|
||||
"Sandshrew": 4,
|
||||
"Sandslash": 4,
|
||||
"Sandygast": 4,
|
||||
"Sawk": 0,
|
||||
"Sawsbuck": 4,
|
||||
"Scatterbug": 4,
|
||||
"Sceptile": 1,
|
||||
"Scizor": 4,
|
||||
"Scolipede": 4,
|
||||
"Scrafty": 4,
|
||||
"Scraggy": 4,
|
||||
"Scyther": 4,
|
||||
"Seadra": 4,
|
||||
"Seaking": 4,
|
||||
"Sealeo": 4,
|
||||
"Seedot": 4,
|
||||
"Seel": 4,
|
||||
"Seismitoad": 4,
|
||||
"Sentret": 4,
|
||||
"Serperior": 1,
|
||||
"Servine": 1,
|
||||
"Seviper": 4,
|
||||
"Sewaddle": 4,
|
||||
"Sharpedo": 4,
|
||||
"Shaymin": -1,
|
||||
"Shedinja": -1,
|
||||
"Shelgon": 4,
|
||||
"Shellder": 4,
|
||||
"Shellos": 4,
|
||||
"Shelmet": 4,
|
||||
"Shieldon": 1,
|
||||
"Shiftry": 4,
|
||||
"Shiinotic": 4,
|
||||
"Shinx": 4,
|
||||
"Shroomish": 4,
|
||||
"Shuckle": 4,
|
||||
"Shuppet": 4,
|
||||
"Sigilyph": 4,
|
||||
"Silcoon": 4,
|
||||
"Silvally": -1,
|
||||
"Simipour": 1,
|
||||
"Simisage": 1,
|
||||
"Simisear": 1,
|
||||
"Skarmory": 4,
|
||||
"Skiddo": 4,
|
||||
"Skiploom": 4,
|
||||
"Skitty": 6,
|
||||
"Skorupi": 4,
|
||||
"Skrelp": 4,
|
||||
"Skuntank": 4,
|
||||
"Slaking": 4,
|
||||
"Slakoth": 4,
|
||||
"Sliggoo": 4,
|
||||
"Slowbro": 4,
|
||||
"Slowking": 4,
|
||||
"Slowpoke": 4,
|
||||
"Slugma": 4,
|
||||
"Slurpuff": 4,
|
||||
"Smeargle": 4,
|
||||
"Smoochum": 8,
|
||||
"Sneasel": 4,
|
||||
"Snivy": 1,
|
||||
"Snorlax": 1,
|
||||
"Snorunt": 4,
|
||||
"Snover": 4,
|
||||
"Snubbull": 6,
|
||||
"Solgaleo": -1,
|
||||
"Solosis": 4,
|
||||
"Solrock": -1,
|
||||
"Spearow": 4,
|
||||
"Spewpa": 4,
|
||||
"Spheal": 4,
|
||||
"Spinarak": 4,
|
||||
"Spinda": 4,
|
||||
"Spiritomb": 4,
|
||||
"Spoink": 4,
|
||||
"Spritzee": 4,
|
||||
"Squirtle": 1,
|
||||
"Stakataka": -1,
|
||||
"Stantler": 4,
|
||||
"Staraptor": 4,
|
||||
"Staravia": 4,
|
||||
"Starly": 4,
|
||||
"Starmie": -1,
|
||||
"Staryu": -1,
|
||||
"Steelix": 4,
|
||||
"Steenee": 8,
|
||||
"Stoutland": 4,
|
||||
"Stufful": 4,
|
||||
"Stunfisk": 4,
|
||||
"Stunky": 4,
|
||||
"Sudowoodo": 4,
|
||||
"Suicune": -1,
|
||||
"Sunflora": 4,
|
||||
"Sunkern": 4,
|
||||
"Surskit": 4,
|
||||
"Swablu": 4,
|
||||
"Swadloon": 4,
|
||||
"Swalot": 4,
|
||||
"Swampert": 1,
|
||||
"Swanna": 4,
|
||||
"Swellow": 4,
|
||||
"Swinub": 4,
|
||||
"Swirlix": 4,
|
||||
"Swoobat": 4,
|
||||
"Sylveon": 1,
|
||||
"Taillow": 4,
|
||||
"Talonflame": 4,
|
||||
"Tangela": 4,
|
||||
"Tangrowth": 4,
|
||||
"Tapu Bulu": -1,
|
||||
"Tapu Fini": -1,
|
||||
"Tapu Koko": -1,
|
||||
"Tapu Lele": -1,
|
||||
"Tauros": 0,
|
||||
"Teddiursa": 4,
|
||||
"Tentacool": 4,
|
||||
"Tentacruel": 4,
|
||||
"Tepig": 1,
|
||||
"Terrakion": -1,
|
||||
"Throh": 0,
|
||||
"Thundurus": 0,
|
||||
"Timburr": 2,
|
||||
"Tirtouga": 1,
|
||||
"Togedemaru": 4,
|
||||
"Togekiss": 1,
|
||||
"Togepi": 1,
|
||||
"Togetic": 1,
|
||||
"Torchic": 1,
|
||||
"Torkoal": 4,
|
||||
"Tornadus": 0,
|
||||
"Torracat": 1,
|
||||
"Torterra": 1,
|
||||
"Totodile": 1,
|
||||
"Toucannon": 4,
|
||||
"Toxapex": 4,
|
||||
"Toxicroak": 4,
|
||||
"Tranquill": 4,
|
||||
"Trapinch": 4,
|
||||
"Treecko": 1,
|
||||
"Trevenant": 4,
|
||||
"Tropius": 4,
|
||||
"Trubbish": 4,
|
||||
"Trumbeak": 4,
|
||||
"Tsareena": 8,
|
||||
"Turtonator": 4,
|
||||
"Turtwig": 1,
|
||||
"Tympole": 4,
|
||||
"Tynamo": 4,
|
||||
"Type: Null": -1,
|
||||
"Typhlosion": 1,
|
||||
"Tyranitar": 4,
|
||||
"Tyrantrum": 1,
|
||||
"Tyrogue": 0,
|
||||
"Tyrunt": 1,
|
||||
"Umbreon": 1,
|
||||
"Unfezant": 4,
|
||||
"Unown": -1,
|
||||
"Ursaring": 4,
|
||||
"Uxie": -1,
|
||||
"Vanillish": 4,
|
||||
"Vanillite": 4,
|
||||
"Vanilluxe": 4,
|
||||
"Vaporeon": 1,
|
||||
"Venipede": 4,
|
||||
"Venomoth": 4,
|
||||
"Venonat": 4,
|
||||
"Venusaur": 1,
|
||||
"Vespiquen": 8,
|
||||
"Vibrava": 4,
|
||||
"Victini": -1,
|
||||
"Victreebel": 4,
|
||||
"Vigoroth": 4,
|
||||
"Vikavolt": 4,
|
||||
"Vileplume": 4,
|
||||
"Virizion": -1,
|
||||
"Vivillon": 4,
|
||||
"Volbeat": 0,
|
||||
"Volcanion": -1,
|
||||
"Volcarona": 4,
|
||||
"Voltorb": -1,
|
||||
"Vullaby": 8,
|
||||
"Vulpix": 6,
|
||||
"Wailmer": 4,
|
||||
"Wailord": 4,
|
||||
"Walrein": 4,
|
||||
"Wartortle": 1,
|
||||
"Watchog": 4,
|
||||
"Weavile": 4,
|
||||
"Weedle": 4,
|
||||
"Weepinbell": 4,
|
||||
"Weezing": 4,
|
||||
"Whimsicott": 4,
|
||||
"Whirlipede": 4,
|
||||
"Whiscash": 4,
|
||||
"Whismur": 4,
|
||||
"Wigglytuff": 6,
|
||||
"Wimpod": 4,
|
||||
"Wingull": 4,
|
||||
"Wishiwashi": 4,
|
||||
"Wobbuffet": 4,
|
||||
"Woobat": 4,
|
||||
"Wooper": 4,
|
||||
"Wormadam": 8,
|
||||
"Wurmple": 4,
|
||||
"Wynaut": 4,
|
||||
"Xatu": 4,
|
||||
"Xerneas": -1,
|
||||
"Xurkitree": -1,
|
||||
"Yamask": 4,
|
||||
"Yanma": 4,
|
||||
"Yanmega": 4,
|
||||
"Yungoos": 4,
|
||||
"Yveltal": -1,
|
||||
"Zangoose": 4,
|
||||
"Zapdos": -1,
|
||||
"Zebstrika": 4,
|
||||
"Zekrom": -1,
|
||||
"Zeraora": -1,
|
||||
"Zigzagoon": 4,
|
||||
"Zoroark": 1,
|
||||
"Zorua": 1,
|
||||
"Zubat": 4,
|
||||
"Zweilous": 4,
|
||||
"Zygarde": -1
|
||||
}
|
361
pokecord/data/hisuian.json
Normal file
|
@ -0,0 +1,361 @@
|
|||
[
|
||||
{
|
||||
"id": 503,
|
||||
"name": {
|
||||
"english": "Samurott",
|
||||
"japanese": "ダイケンキ",
|
||||
"chinese": "大剑鬼",
|
||||
"french": "Clamiral"
|
||||
},
|
||||
"type": [
|
||||
"water",
|
||||
"Dark"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 90,
|
||||
"Attack": 108,
|
||||
"Defence": 80,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 65,
|
||||
"Speed": 85
|
||||
},
|
||||
"spawnchance": 0.34,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Samurott"
|
||||
},
|
||||
{
|
||||
"id": 724,
|
||||
"name": {
|
||||
"english": "Decidueye",
|
||||
"japanese": "\u30b8\u30e5\u30ca\u30a4\u30d1\u30fc",
|
||||
"chinese": "\u72d9\u5c04\u6a39\u689f",
|
||||
"french": "Arch\u00e9duc"
|
||||
},
|
||||
"type": [
|
||||
"Grass",
|
||||
"Fighting"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 88,
|
||||
"Attack": 112,
|
||||
"Defence": 80,
|
||||
"Sp. Atk": 95,
|
||||
"Sp. Def": 95,
|
||||
"Speed": 60
|
||||
},
|
||||
"spawnchance": 0.34,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Decidueye"
|
||||
},
|
||||
{
|
||||
"id": 157,
|
||||
"name": {
|
||||
"english": "Typhlosion",
|
||||
"japanese": "\u30d0\u30af\u30d5\u30fc\u30f3",
|
||||
"chinese": "\u706b\u7206\u7378",
|
||||
"french": "Typhlosion"
|
||||
},
|
||||
"type": [
|
||||
"Fire",
|
||||
"Ghost"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 73,
|
||||
"Attack": 84,
|
||||
"Defence": 78,
|
||||
"Sp. Atk": 119,
|
||||
"Sp. Def": 85,
|
||||
"Speed": 95
|
||||
},
|
||||
"spawnchance": 0.34,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Typhlosion"
|
||||
},
|
||||
{
|
||||
"id": 570,
|
||||
"name": {
|
||||
"english": "Zorua",
|
||||
"japanese": "\u30be\u30ed\u30a2",
|
||||
"chinese": "\u7d22\u7f85\u4e9e",
|
||||
"french": "Zorua"
|
||||
},
|
||||
"type": [
|
||||
"Ghost",
|
||||
"Normal"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 35,
|
||||
"Attack": 60,
|
||||
"Defence": 40,
|
||||
"Sp. Atk": 85,
|
||||
"Sp. Def": 40,
|
||||
"Speed": 70
|
||||
},
|
||||
"spawnchance": 0.34,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Zorua"
|
||||
},
|
||||
{
|
||||
"id": 571,
|
||||
"name": {
|
||||
"english": "Zoroark",
|
||||
"japanese": "\u30be\u30ed\u30a2\u30fc\u30af",
|
||||
"chinese": "\u7d22\u7f85\u4e9e\u514b",
|
||||
"french": "Zoroark"
|
||||
},
|
||||
"type": [
|
||||
"Ghost",
|
||||
"Normal"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 55,
|
||||
"Attack": 100,
|
||||
"Defence": 60,
|
||||
"Sp. Atk": 125,
|
||||
"Sp. Def": 60,
|
||||
"Speed": 110
|
||||
},
|
||||
"spawnchance": 0.34,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Zoroark"
|
||||
},
|
||||
{
|
||||
"id": 549,
|
||||
"name": {
|
||||
"english": "Lilligant",
|
||||
"japanese": "\u30c9\u30ec\u30c7\u30a3\u30a2",
|
||||
"chinese": "\u88d9\u5152\u5c0f\u59d0",
|
||||
"french": "Fragilady"
|
||||
},
|
||||
"type": [
|
||||
"Grass",
|
||||
"Fighting"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 70,
|
||||
"Attack": 105,
|
||||
"Defence": 75,
|
||||
"Sp. Atk": 50,
|
||||
"Sp. Def": 75,
|
||||
"Speed": 105
|
||||
},
|
||||
"spawnchance": 0.34,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Lilligant"
|
||||
},
|
||||
{
|
||||
"id": 100,
|
||||
"name": {
|
||||
"english": "Voltorb",
|
||||
"japanese": "\u30d3\u30ea\u30ea\u30c0\u30de",
|
||||
"chinese": "\u9739\u9742\u96fb\u7403",
|
||||
"french": "Voltorbe"
|
||||
},
|
||||
"type": [
|
||||
"Electric",
|
||||
"Grass"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 40,
|
||||
"Attack": 30,
|
||||
"Defence": 50,
|
||||
"Sp. Atk": 55,
|
||||
"Sp. Def": 55,
|
||||
"Speed": 100
|
||||
},
|
||||
"spawnchance": 0.5875,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Voltorb"
|
||||
},
|
||||
{
|
||||
"id": 101,
|
||||
"name": {
|
||||
"english": "Electrode",
|
||||
"japanese": "\u30de\u30eb\u30de\u30a4\u30f3",
|
||||
"chinese": "\u9811\u76ae\u96f7\u5f48",
|
||||
"french": "\u00c9lectrode"
|
||||
},
|
||||
"type": [
|
||||
"Electric"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 60,
|
||||
"Attack": 50,
|
||||
"Defence": 70,
|
||||
"Sp. Atk": 80,
|
||||
"Sp. Def": 80,
|
||||
"Speed": 150
|
||||
},
|
||||
"spawnchance": 0.5875,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Electrode"
|
||||
},
|
||||
{
|
||||
"id": 713,
|
||||
"name": {
|
||||
"english": "Avalugg",
|
||||
"japanese": "\u30af\u30ec\u30d9\u30fc\u30b9",
|
||||
"chinese": "\u51b0\u5ca9\u602a",
|
||||
"french": "S\u00e9racrawl"
|
||||
},
|
||||
"type": [
|
||||
"Ice",
|
||||
"Rock"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 95,
|
||||
"Attack": 127,
|
||||
"Defence": 184,
|
||||
"Sp. Atk": 34,
|
||||
"Sp. Def": 36,
|
||||
"Speed": 38
|
||||
},
|
||||
"spawnchance": 0.3575,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Avalugg"
|
||||
},
|
||||
{
|
||||
"id": 628,
|
||||
"name": {
|
||||
"english": "Braviary",
|
||||
"japanese": "\u30a6\u30a9\u30fc\u30b0\u30eb",
|
||||
"chinese": "\u52c7\u58eb\u96c4\u9df9",
|
||||
"french": "Gueriaigle"
|
||||
},
|
||||
"type": [
|
||||
"Psychic",
|
||||
"Flying"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 110,
|
||||
"Attack": 83,
|
||||
"Defence": 70,
|
||||
"Sp. Atk": 112,
|
||||
"Sp. Def": 70,
|
||||
"Speed": 65
|
||||
},
|
||||
"spawnchance": 0.3625,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Braviary"
|
||||
},
|
||||
{
|
||||
"id": 705,
|
||||
"name": {
|
||||
"english": "Sliggoo",
|
||||
"japanese": "\u30cc\u30e1\u30a4\u30eb",
|
||||
"chinese": "\u9ecf\u7f8e\u5152",
|
||||
"french": "Colimucus"
|
||||
},
|
||||
"type": [
|
||||
"Dragon",
|
||||
"Steel"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 58,
|
||||
"Attack": 75,
|
||||
"Defence": 83,
|
||||
"Sp. Atk": 83,
|
||||
"Sp. Def": 113,
|
||||
"Speed": 40
|
||||
},
|
||||
"spawnchance": 0.435,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Sliggoo"
|
||||
},
|
||||
{
|
||||
"id": 706,
|
||||
"name": {
|
||||
"english": "Goodra",
|
||||
"japanese": "\u30cc\u30e1\u30eb\u30b4\u30f3",
|
||||
"chinese": "\u9ecf\u7f8e\u9f8d",
|
||||
"french": "Muplodocus"
|
||||
},
|
||||
"type": [
|
||||
"Dragon",
|
||||
"Steel"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 80,
|
||||
"Attack": 100,
|
||||
"Defence": 100,
|
||||
"Sp. Atk": 110,
|
||||
"Sp. Def": 150,
|
||||
"Speed": 60
|
||||
},
|
||||
"spawnchance": 0.25,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Goodra"
|
||||
},
|
||||
{
|
||||
"id": 215,
|
||||
"name": {
|
||||
"english": "Sneasel",
|
||||
"japanese": "\u30cb\u30e5\u30fc\u30e9",
|
||||
"chinese": "\u72c3\u62c9",
|
||||
"french": "Farfuret"
|
||||
},
|
||||
"type": [
|
||||
"Fighting",
|
||||
"Poison"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 55,
|
||||
"Attack": 95,
|
||||
"Defence": 55,
|
||||
"Sp. Atk": 35,
|
||||
"Sp. Def": 75,
|
||||
"Speed": 115
|
||||
},
|
||||
"spawnchance": 0.4625,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Sneasel"
|
||||
},
|
||||
{
|
||||
"id": 211,
|
||||
"name": {
|
||||
"english": "Qwilfish",
|
||||
"japanese": "\u30cf\u30ea\u30fc\u30bb\u30f3",
|
||||
"chinese": "\u5343\u91dd\u9b5a",
|
||||
"french": "Qwilfish"
|
||||
},
|
||||
"type": [
|
||||
"Dark",
|
||||
"Poison"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 65,
|
||||
"Attack": 95,
|
||||
"Defence": 85,
|
||||
"Sp. Atk": 55,
|
||||
"Sp. Def": 55,
|
||||
"Speed": 85
|
||||
},
|
||||
"spawnchance": 0.45,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Qwilfish"
|
||||
},
|
||||
{
|
||||
"id": 58,
|
||||
"name": {
|
||||
"english": "Growlithe",
|
||||
"japanese": "\u30ac\u30fc\u30c7\u30a3",
|
||||
"chinese": "\u5361\u8482\u72d7",
|
||||
"french": "Caninos"
|
||||
},
|
||||
"type": [
|
||||
"Fire",
|
||||
"Rock"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 60,
|
||||
"Attack": 75,
|
||||
"Defence": 45,
|
||||
"Sp. Atk": 65,
|
||||
"Sp. Def": 50,
|
||||
"Speed": 55
|
||||
},
|
||||
"spawnchance": 0.5625,
|
||||
"variant": "hisuian",
|
||||
"alias": "Hisuian Growlithe"
|
||||
}
|
||||
]
|
1515
pokecord/data/legendary.json
Normal file
1116
pokecord/data/megas.json
Normal file
452
pokecord/data/mythical.json
Normal file
|
@ -0,0 +1,452 @@
|
|||
[
|
||||
{
|
||||
"id": 151,
|
||||
"name": {
|
||||
"english": "Mew",
|
||||
"japanese": "\u30df\u30e5\u30a6",
|
||||
"chinese": "\u5922\u5e7b",
|
||||
"french": "Mew"
|
||||
},
|
||||
"type": [
|
||||
"Psychic"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 100,
|
||||
"Attack": 100,
|
||||
"Defence": 100,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 100,
|
||||
"Speed": 100
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 251,
|
||||
"name": {
|
||||
"english": "Celebi",
|
||||
"japanese": "\u30bb\u30ec\u30d3\u30a3",
|
||||
"chinese": "\u6642\u62c9\u6bd4",
|
||||
"french": "Celebi"
|
||||
},
|
||||
"type": [
|
||||
"Psychic",
|
||||
"Grass"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 100,
|
||||
"Attack": 100,
|
||||
"Defence": 100,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 100,
|
||||
"Speed": 100
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 385,
|
||||
"name": {
|
||||
"english": "Jirachi",
|
||||
"japanese": "\u30b8\u30e9\u30fc\u30c1",
|
||||
"chinese": "\u57fa\u62c9\u7948",
|
||||
"french": "Jirachi"
|
||||
},
|
||||
"type": [
|
||||
"Steel",
|
||||
"Psychic"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 100,
|
||||
"Attack": 100,
|
||||
"Defence": 100,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 100,
|
||||
"Speed": 100
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 386,
|
||||
"name": {
|
||||
"english": "Deoxys",
|
||||
"japanese": "\u30c7\u30aa\u30ad\u30b7\u30b9",
|
||||
"chinese": "\u4ee3\u6b50\u5947\u5e0c\u65af",
|
||||
"french": "Deoxys"
|
||||
},
|
||||
"type": [
|
||||
"Psychic"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 50,
|
||||
"Attack": 150,
|
||||
"Defence": 50,
|
||||
"Sp. Atk": 150,
|
||||
"Sp. Def": 50,
|
||||
"Speed": 150
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 489,
|
||||
"name": {
|
||||
"english": "Phione",
|
||||
"japanese": "\u30d5\u30a3\u30aa\u30cd",
|
||||
"chinese": "\u970f\u6b50\u7d0d",
|
||||
"french": "Phione"
|
||||
},
|
||||
"type": [
|
||||
"Water"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 80,
|
||||
"Attack": 80,
|
||||
"Defence": 80,
|
||||
"Sp. Atk": 80,
|
||||
"Sp. Def": 80,
|
||||
"Speed": 80
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 490,
|
||||
"name": {
|
||||
"english": "Manaphy",
|
||||
"japanese": "\u30de\u30ca\u30d5\u30a3",
|
||||
"chinese": "\u746a\u7d0d\u970f",
|
||||
"french": "Manaphy"
|
||||
},
|
||||
"type": [
|
||||
"Water"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 100,
|
||||
"Attack": 100,
|
||||
"Defence": 100,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 100,
|
||||
"Speed": 100
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 491,
|
||||
"name": {
|
||||
"english": "Darkrai",
|
||||
"japanese": "\u30c0\u30fc\u30af\u30e9\u30a4",
|
||||
"chinese": "\u9054\u514b\u840a\u4f0a",
|
||||
"french": "Darkrai"
|
||||
},
|
||||
"type": [
|
||||
"Dark"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 70,
|
||||
"Attack": 90,
|
||||
"Defence": 90,
|
||||
"Sp. Atk": 135,
|
||||
"Sp. Def": 90,
|
||||
"Speed": 125
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 492,
|
||||
"name": {
|
||||
"english": "Shaymin",
|
||||
"japanese": "\u30b7\u30a7\u30a4\u30df",
|
||||
"chinese": "\u8b1d\u7c73",
|
||||
"french": "Shaymin"
|
||||
},
|
||||
"type": [
|
||||
"Grass"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 100,
|
||||
"Attack": 100,
|
||||
"Defence": 100,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 100,
|
||||
"Speed": 100
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 493,
|
||||
"name": {
|
||||
"english": "Arceus",
|
||||
"japanese": "\u30a2\u30eb\u30bb\u30a6\u30b9",
|
||||
"chinese": "\u963f\u723e\u5b99\u65af",
|
||||
"french": "Arceus"
|
||||
},
|
||||
"type": [
|
||||
"Normal"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 120,
|
||||
"Attack": 120,
|
||||
"Defence": 120,
|
||||
"Sp. Atk": 120,
|
||||
"Sp. Def": 120,
|
||||
"Speed": 120
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 494,
|
||||
"name": {
|
||||
"english": "Victini",
|
||||
"japanese": "\u30d3\u30af\u30c6\u30a3\u30cb",
|
||||
"chinese": "\u6bd4\u514b\u63d0\u5c3c",
|
||||
"french": "Victini"
|
||||
},
|
||||
"type": [
|
||||
"Psychic",
|
||||
"Fire"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 100,
|
||||
"Attack": 100,
|
||||
"Defence": 100,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 100,
|
||||
"Speed": 100
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 647,
|
||||
"name": {
|
||||
"english": "Keldeo",
|
||||
"japanese": "\u30b1\u30eb\u30c7\u30a3\u30aa",
|
||||
"chinese": "\u51f1\u8def\u8fea\u6b50",
|
||||
"french": "Keldeo"
|
||||
},
|
||||
"type": [
|
||||
"Water",
|
||||
"Fighting"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 91,
|
||||
"Attack": 72,
|
||||
"Defence": 90,
|
||||
"Sp. Atk": 129,
|
||||
"Sp. Def": 90,
|
||||
"Speed": 108
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 648,
|
||||
"name": {
|
||||
"english": "Meloetta",
|
||||
"japanese": "\u30e1\u30ed\u30a8\u30c3\u30bf",
|
||||
"chinese": "\u7f8e\u6d1b\u8036\u5854",
|
||||
"french": "Meloetta"
|
||||
},
|
||||
"type": [
|
||||
"Normal",
|
||||
"Psychic"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 100,
|
||||
"Attack": 77,
|
||||
"Defence": 77,
|
||||
"Sp. Atk": 128,
|
||||
"Sp. Def": 128,
|
||||
"Speed": 90
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 649,
|
||||
"name": {
|
||||
"english": "Genesect",
|
||||
"japanese": "\u30b2\u30ce\u30bb\u30af\u30c8",
|
||||
"chinese": "\u84cb\u8afe\u8cfd\u514b\u7279",
|
||||
"french": "Genesect"
|
||||
},
|
||||
"type": [
|
||||
"Bug",
|
||||
"Steel"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 71,
|
||||
"Attack": 120,
|
||||
"Defence": 95,
|
||||
"Sp. Atk": 120,
|
||||
"Sp. Def": 95,
|
||||
"Speed": 99
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 719,
|
||||
"name": {
|
||||
"english": "Diancie",
|
||||
"japanese": "\u30c7\u30a3\u30a2\u30f3\u30b7\u30fc",
|
||||
"chinese": "\u8482\u5b89\u5e0c",
|
||||
"french": "Diancie"
|
||||
},
|
||||
"type": [
|
||||
"Rock",
|
||||
"Fairy"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 50,
|
||||
"Attack": 100,
|
||||
"Defence": 150,
|
||||
"Sp. Atk": 100,
|
||||
"Sp. Def": 150,
|
||||
"Speed": 50
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 720,
|
||||
"name": {
|
||||
"english": "Hoopa",
|
||||
"japanese": "\u30d5\u30fc\u30d1",
|
||||
"chinese": "\u80e1\u5e15",
|
||||
"french": "Hoopa"
|
||||
},
|
||||
"type": [
|
||||
"Psychic",
|
||||
"Ghost"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 80,
|
||||
"Attack": 110,
|
||||
"Defence": 60,
|
||||
"Sp. Atk": 150,
|
||||
"Sp. Def": 130,
|
||||
"Speed": 70
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 801,
|
||||
"name": {
|
||||
"english": "Magearna",
|
||||
"japanese": "\u30de\u30ae\u30a2\u30ca",
|
||||
"chinese": "\u746a\u6a5f\u96c5\u5a1c",
|
||||
"french": "Magearna"
|
||||
},
|
||||
"type": [
|
||||
"Steel",
|
||||
"Fairy"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 80,
|
||||
"Attack": 95,
|
||||
"Defence": 115,
|
||||
"Sp. Atk": 130,
|
||||
"Sp. Def": 115,
|
||||
"Speed": 65
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 802,
|
||||
"name": {
|
||||
"english": "Marshadow",
|
||||
"japanese": "\u30de\u30fc\u30b7\u30e3\u30c9\u30fc",
|
||||
"chinese": "\u746a\u590f\u591a",
|
||||
"french": "Marshadow"
|
||||
},
|
||||
"type": [
|
||||
"Fighting",
|
||||
"Ghost"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 90,
|
||||
"Attack": 125,
|
||||
"Defence": 80,
|
||||
"Sp. Atk": 90,
|
||||
"Sp. Def": 90,
|
||||
"Speed": 125
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 807,
|
||||
"name": {
|
||||
"english": "Zeraora",
|
||||
"japanese": "\u30bc\u30e9\u30aa\u30e9",
|
||||
"chinese": "\u6377\u62c9\u5967\u62c9",
|
||||
"french": "Zeraora"
|
||||
},
|
||||
"type": [
|
||||
"Electric"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 88,
|
||||
"Attack": 112,
|
||||
"Defence": 75,
|
||||
"Sp. Atk": 102,
|
||||
"Sp. Def": 80,
|
||||
"Speed": 143
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 808,
|
||||
"name": {
|
||||
"english": "Meltan",
|
||||
"japanese": "\u30e1\u30eb\u30bf\u30f3",
|
||||
"chinese": "\u7f8e\u9304\u5766",
|
||||
"french": "Meltan"
|
||||
},
|
||||
"type": [
|
||||
"Steel"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 46,
|
||||
"Attack": 65,
|
||||
"Defence": 65,
|
||||
"Sp. Atk": 55,
|
||||
"Sp. Def": 35,
|
||||
"Speed": 34
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
},
|
||||
{
|
||||
"id": 809,
|
||||
"name": {
|
||||
"english": "Melmetal",
|
||||
"japanese": "\u30e1\u30eb\u30e1\u30bf\u30eb",
|
||||
"chinese": "\u7f8e\u9304\u6885\u5854",
|
||||
"french": "Melmetal"
|
||||
},
|
||||
"type": [
|
||||
"Steel"
|
||||
],
|
||||
"stats": {
|
||||
"HP": 135,
|
||||
"Attack": 143,
|
||||
"Defence": 143,
|
||||
"Sp. Atk": 80,
|
||||
"Sp. Def": 65,
|
||||
"Speed": 34
|
||||
},
|
||||
"spawnchance": 0.001,
|
||||
"variant": "Mythical"
|
||||
}
|
||||
]
|
2238
pokecord/data/paldea.json
Normal file
17714
pokecord/data/pokedex.json
Normal file
BIN
pokecord/data/pokemon/Abomasnow.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
pokecord/data/pokemon/Abra.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
pokecord/data/pokemon/Absol.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
pokecord/data/pokemon/Accelgor.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
pokecord/data/pokemon/Aegislash.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
pokecord/data/pokemon/Aerodactyl.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
pokecord/data/pokemon/Aggron.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
pokecord/data/pokemon/Aipom.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
pokecord/data/pokemon/Alakazam.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
pokecord/data/pokemon/Alcremie.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
pokecord/data/pokemon/Alolan Diglett.png
Normal file
After Width: | Height: | Size: 171 KiB |
BIN
pokecord/data/pokemon/Alolan Dugtrio.png
Normal file
After Width: | Height: | Size: 223 KiB |
BIN
pokecord/data/pokemon/Alolan Exeggutor.png
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
pokecord/data/pokemon/Alolan Geodude.png
Normal file
After Width: | Height: | Size: 197 KiB |
BIN
pokecord/data/pokemon/Alolan Golem.png
Normal file
After Width: | Height: | Size: 251 KiB |
BIN
pokecord/data/pokemon/Alolan Graveler.png
Normal file
After Width: | Height: | Size: 192 KiB |
BIN
pokecord/data/pokemon/Alolan Grimer.png
Normal file
After Width: | Height: | Size: 183 KiB |
BIN
pokecord/data/pokemon/Alolan Marowak.png
Normal file
After Width: | Height: | Size: 147 KiB |
BIN
pokecord/data/pokemon/Alolan Meowth.png
Normal file
After Width: | Height: | Size: 165 KiB |
BIN
pokecord/data/pokemon/Alolan Muk.png
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
pokecord/data/pokemon/Alolan Ninetales.png
Normal file
After Width: | Height: | Size: 160 KiB |
BIN
pokecord/data/pokemon/Alolan Persian.png
Normal file
After Width: | Height: | Size: 192 KiB |
BIN
pokecord/data/pokemon/Alolan Raichu.png
Normal file
After Width: | Height: | Size: 168 KiB |
BIN
pokecord/data/pokemon/Alolan Raticate.png
Normal file
After Width: | Height: | Size: 199 KiB |
BIN
pokecord/data/pokemon/Alolan Rattata.png
Normal file
After Width: | Height: | Size: 172 KiB |
BIN
pokecord/data/pokemon/Alolan Sandshrew.png
Normal file
After Width: | Height: | Size: 254 KiB |
BIN
pokecord/data/pokemon/Alolan Sandslash.png
Normal file
After Width: | Height: | Size: 229 KiB |
BIN
pokecord/data/pokemon/Alolan Vulpix.png
Normal file
After Width: | Height: | Size: 186 KiB |
BIN
pokecord/data/pokemon/Alomomola.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
pokecord/data/pokemon/Altaria.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
pokecord/data/pokemon/Amaura.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
pokecord/data/pokemon/Ambipom.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
pokecord/data/pokemon/Amoonguss.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
pokecord/data/pokemon/Ampharos.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
pokecord/data/pokemon/Annihilape.png
Normal file
After Width: | Height: | Size: 131 KiB |
BIN
pokecord/data/pokemon/Anorith.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
pokecord/data/pokemon/Appletun.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
pokecord/data/pokemon/Applin.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
pokecord/data/pokemon/Araquanid.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
pokecord/data/pokemon/Arbok.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
pokecord/data/pokemon/Arboliva.png
Normal file
After Width: | Height: | Size: 113 KiB |
BIN
pokecord/data/pokemon/Arcanine.png
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
pokecord/data/pokemon/Arceus.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
pokecord/data/pokemon/Archen.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
pokecord/data/pokemon/Archeops.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
pokecord/data/pokemon/Arctibax.png
Normal file
After Width: | Height: | Size: 126 KiB |
BIN
pokecord/data/pokemon/Arctovish.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
pokecord/data/pokemon/Arctozolt.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
pokecord/data/pokemon/Ariados.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
pokecord/data/pokemon/Armaldo.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
pokecord/data/pokemon/Armarouge.png
Normal file
After Width: | Height: | Size: 124 KiB |
BIN
pokecord/data/pokemon/Aromatisse.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
pokecord/data/pokemon/Aron.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
pokecord/data/pokemon/Arrokuda.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
pokecord/data/pokemon/Articuno.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
pokecord/data/pokemon/Audino.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
pokecord/data/pokemon/Aurorus.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
pokecord/data/pokemon/Avalugg.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
pokecord/data/pokemon/Axew.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
pokecord/data/pokemon/Azelf.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
pokecord/data/pokemon/Azumarill.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
pokecord/data/pokemon/Azurill.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
pokecord/data/pokemon/Bagon.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
pokecord/data/pokemon/Baltoy.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
pokecord/data/pokemon/Banette.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
pokecord/data/pokemon/Barbaracle.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
pokecord/data/pokemon/Barboach.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
pokecord/data/pokemon/Barraskewda.png
Normal file
After Width: | Height: | Size: 28 KiB |