There's actually a Pokemon Gamekit in progress here, but it's development is quite slow. Though, if you're looking to make a Pokemon game for 1:1, may I suggest Pokemon Essentials instead? It's for RPG Maker XP, so besides the cost of RPGMXP up front: Pokemon Essentials is free. Making a system like this from scratch in Construct 2 would be very difficult, though, especially with tackling a custom battle system, savedata, and data storage (such as to manage everything like moves).
Regardless, I'm happy to walk you through of what you may need to do, so you're not clueless. I've never done anything like this in Construct 2, so please bare with me as I'm just putting together educated guesses of how to make various features work in Construct 2.
One of the biggest things you'll need to do is likely work on a custom battle system. Attempting to approach that is a big can of worms, but you want to look into a few things. Arrays and maybe dictionaries (which are just hash-tables) for example, particularly. You'll probably want something to manage deciding which turn it is (such as if it's your Pokemon's turn), and that could be something as simple as a global variable unless you want to get more elaborate. A variable should be fine enough, as long as it's global.
You'll likely need some sort of thing to store and data, such as all the moves, Pokemon stats, etc. Arrays and dictionaries come to mind, and while dictionaries are far easier to learn, arrays provide a lot more flexibility and probably would be vital for handling mass-data such as moves and all their properties. I'm not really sure how to approach things like Pokemon evolution, but you could have all Pokemon be one object (with multiple sprites in the same object) and instance variables to determine unique qualities. Then just run condition checks for things like evolving based on a high enough level, etc, at a basic. You may have more work cut out though, just to pick the right instance.
Random encounters could be done by checking the player is overlapping with a sprite, and then running a random number to decide if they will have an encounter each step. You'll want some method to keep track of steps, such as a variable. I'm not sure how to approach keeping track of steps and how to increase that, so that's just a hunch of mine. Then you can use choose() to pick a Pokemon from a set list. You can use instance variables and some sort of randomization to give each individual Pokemon it's own unique stats, even for two of the same, such as a Pidgey.
Type effectiveness, there's probably more than a few ways to handle this, but for starters, the simplest solution is that each Pokemon should have an instance variable named Type. When attacking, make a check condition. Such as "Enemy Pokemon's type instance variable equals = Grass" and then act accordingly with damage or affects. Pokemon breeding would work similarly. Instance variables such as "Gender", "Egg Group 1", "Egg Group 2", and then comparing them with partner Pokemon to determine if they're viable to produce Pokemon eggs.
For handling an inventory, at the very basics, you can setup a set of graphic files or preferably, 9-patch objects and then utilize timescale to pause things if you must. Since a Pokemon inventory may arguably seem more complex than something say, for comparison, Zelda, you'll probably need arrays and dictionaries to manage inventory, what's in it, etc.