jac0bdeal / pikamon Goto Github PK
View Code? Open in Web Editor NEWA Pokemon Discord bot inspired by the late Pokecord.
License: MIT License
A Pokemon Discord bot inspired by the late Pokecord.
License: MIT License
Some items should be rarer than others (e.g. potion vs. master ball).
catch
(called as p!ka catch
)catch
with correct spelling awards pokemon to that user (not storing it right now)This depends on #17
Implement the design of the evolution part of the leveling system. This should only include the code:
The bot currently just fails to start up if it can't connect to discord right away. Their should be exponential backoff retry logic on startup to make the bot more robust.
Need to determine how we want to be able to level up the pokemon. Perhaps if you can "trade" excess pokemon of a species you own to grant exp or levels to another pokemon you own of that species.
Example:
Suppose you have 3 Charmander's. You could "trade" or give up 2 of them to get 2 exp (or 2 levels?) to use on your remaining Charmander. You would not, however, be able to use that exp on your Pikachu (not saying this has to be the case, but this is just one idea).
Just need to design the mechanics of how we want this to work that allows the users to level up the pokemon. The challenge I see here is being able to give the user a way to level up the pokemon without making it on of the following extremes:
This is a result of #23.
The p!ka help
command returns a list of all the commands, what they do, and example usage. This command needs to be updated to reflect all of the current commands.
Add a command that lists a user's pokemon.
p!ka list pokemon
commandItems should be randomly awarded to users. This system requires the persistence layer to be updated to include a user's items, as well as a spawner on the bot with the logic for distributing them.
Once the trade has been accepted it needs to be executed. For this the program should:
Where the primary trader is the user who initiated the trade and the secondary trader is the user who accepted the trade. This should be reflected in the database.
We want to be able to trade Pokemon between two parties. The following should be implemented:
p!ka trade <trader 1 pokemon list> with @<user> for <trader 2 pokemon list>
p!ka accept @<user> trade
For the purpose of this issue, the trade does not have to occur. Instead, it should just print a success message along the lines of
successfully traded pokemon!
or
<user> denied the trade request! womp! womp!
It should however verify that the pokemon both traders are offering are owned by those traders. This may depend on the list functionality in the Catching System
milestone.
This depends on #17
Implement the base design of the leveling system. This base design should only include:
This would not include:
A user will want to be able to look up their pokemon and do things with them, in order to do this we need a persistence layer.
Need to agree on the structure of the battle system. We know (generally) what we would like to support. However, we are unsure of the mechanics. As an example, we know we want to:
However, we need to decide on the following:
Dependencies:
Catching System
implementationUsers need a way to see what items they have, and what quantities.
p!ka list items
)Design and implement the DB schema for storing what pokemon is active. Perhaps this can be as simple as a foreign key reference to a pokemon on the trainer's table.
The user needs a method to set their active pokemon. The syntax should be p!ka set active <id>
where id is the id of the pokemon desired. This should update the active pokemon for that trainer in the persistence layer to the chosen pokemon.
Additional consideration: Since pokemon ids are currently an autoincremented integer and not specific to a trainer, care should be taken to ensure that a pokemon not belonging to a trainer can't be their active pokemon. A future code change could potentially take care of this by having each trainer's pokemon have their own domain of ids. But for now a simple check that the pokemon belongs to the trainer should suffice.
Users need a way to use their items.
p!ka use
The user needs a way to view their current Pokemon along with it's current stats.
The command for doing this should have the syntax p!ka view active
and should display a UI of their active pokemon. Some basic things that should be on this UI:
Could be potentially cool to have the highest rarity items be picked-up in a manner similar to pokemon being caught (e.g. p!ka pickup masterball
), where it is a race for users to pick up the item first. Thoughts?
The general idea is that the catching system will allow for different types of balls to be used, each with their own set of pros and cons.
For example, the basic pokeball would require the exact spelling of the name to be correct, whereas other balls could allow for varying degrees of spelling accuracy. Other ideas so far have been for a ball that gives advantage based on speed of reaction, a ball that just requires the correct type(s), etc.
This issue is to document ideas for ball mechanics, and subsequent issues will be opened to implement them.
Need a way to for a primary user to initiate a battle with a secondary party/discord user. It should be something like the following:
Primary user initiates battle
p!ka battle @<secondary user>
Secondary party/discord user accepts or declines
accepts
p!ka accept battle
or
p!ka decline battle
For this item it should not start a battle. Instead, it should simply print a response of either:
Starting battle between <primary user> and <secondary user>
in the case of accept or
<primary user>'s request to battle <secondary user> was declined! <secondary user> is scared!
in the case of decline
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.