GithubHelp home page GithubHelp logo

po-devs / pokemon-online Goto Github PK

View Code? Open in Web Editor NEW
289.0 42.0 170.0 123.54 MB

Online Pokemon Battle Simulator

Home Page: http://pokemon-online.eu

License: GNU General Public License v3.0

QMake 1.03% C++ 87.53% C 5.61% CSS 1.32% JavaScript 0.52% HTML 0.39% Shell 0.78% Python 0.17% QML 2.26% Prolog 0.04% Objective-C++ 0.05% Assembly 0.13% Yacc 0.17%

pokemon-online's Introduction

This is Pokémon Online

Build Status

Home Page | Forums | Source Code

Build Instructions, Scripting Guides and more on https://github.com/po-devs/pokemon-online/wiki

To test, qmake CONFIG+="po_all" and run scripts/run-tests.sh from the main folder.

License GNU General Public License

###Requirements

On Linux:

sudo apt-get install git g++ libpulse-dev libzip-dev qt5-default qtbase5-dev qtmultimedia5-dev qtquick1-5-dev qtscript5-dev qtdeclarative5-dev qtdeclarative5-qtquick2-plugin qtdeclarative5-particles-plugin libqt5webkit5-dev

On Windows, everything should be ready. Don't forget to check the Wiki.

pokemon-online's People

Contributors

alicirno avatar animegamemirrors avatar antar1011 avatar axelwik avatar beastcharizard avatar carnegiejames avatar coyotte508 avatar crystalmoogle avatar ctcc1 avatar dgurjar avatar encukou avatar forgive avatar fuzzysqurl avatar kalashaymins avatar lamperi avatar liuyanghejerry avatar nixeagle avatar plexish avatar quvide avatar romaster2 avatar scotttm17 avatar skypo avatar sulcata avatar turbedi avatar veteranpadgett avatar wavywavy avatar whisperdoll avatar withoutatrace avatar wrigglenite avatar zorodark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pokemon-online's Issues

Add a stop peeking when the player receives a choice

Also, maybe make so that the blank message before new turn is sent at the end of the previous turn, rather than the beginning of the current one.

The problem occur when a replacement with intimidate is sent at the end of turn: no blank message, so PO is still in "peeking" state (with new battle window)

html battle logs crash the server

Server crashes upon battle completion. Raw (replay) log written. Html log is blank. I disable html logs, the server doesn't crash.

Use appropriate zip compression level

On the server, there are several occasions in which you want to compress. Once zip compression is used where needed, make sure the compression levels are appropriate. For example announcement and tier are a one time compression for everybody evergreen, so you want to use maximum level, but for reconnect you may want to use a low level of compression for the packets to send. Same when automatically compressing a large packet. The automatic compression of a large packet could be done in another thread, the network thread, too.

"But it failed appearing twice"

The but it failed message is currently sent twice to the client each time, once with silent to true, once with it to false. It should only be sent once....

U-turn KO in wrong order

Obviously low priority, since it doesn't affect gameplay.

If one pokemon KOs another with U-turn (or Volt Switch), then the u-turner should be called back and the replacement sent out before the game registers that the defending pokemon was KOed. This is not the case:

Start of turn 15!
Ambipom used U-turn!
Tortoise lost 44 HP! (12% of its health)
Tortoise fainted!
Tortoise's Iron Barbs hurts Ambipom
Ambipom is hurt by its Life Orb!
Still Not Ginger called Ambipom back!
Still Not Ginger sent out Kingdra!
Pointed stones dug into Kingdra!

Create lists of players by configuration on server

List of players who support zip, list of players who don't, list of players that want chat messages in some format, list of players that don't. List of players that are logged in.

Could be extended to list of players using PO protocol, list of players using IRC protocols.

And means to send a notify(...) to a group of players / intersection of groups.

html files generated using battlelog plugin too simple

In the old version, server-side battle logs were very different than client-side battle logs, containing a bit more information. For example, each line had its own "<div class..." that specified what the message was.

The current version is basically a carbon copy of what appears in the battle. Is there any way the detailed battle log functionality could be restored?

Make the battle logs plugin thread safe

It's really silly, i just noticed, but if someone forfeits at the same time a battle turn is being executed, it's possible that the calls to the emitCommand part of the plugin happen from two different threads at the same time. A simple mutex system should be enough.

Fix sounds

Get another sound system than phonon. Maybe SFML's.

Make a sound menu where you can set music/cry volume, as well as the music folder.

Temporary move/pokemon

Make temporary moves and PP changes (like with mimic) work. This means that maybe a struct has to be created in AuxPokeDataProxy to store stuff. See how it pans out with zoroark, too.

It's pretty complicated actually, seeing the QML scene bases itself off the team. Would that mean making duplicates even for non-player pokemons?

Also, make Sketch change the move too

Update all move, item and ability messages.

Most, if not all, of the current messages are either erroneous, missing or just made up - "Tauros is extremely pissed off!" for Anger Point being the main one I can remember.

These need collecting from the games themselves - whether from extracting the data or just from collecting them ourselves. It also needs doing for all Generations.

Generation I only needs move messages.
Generation II needs move and item messages.
Generations III, IV and V all need move, item and ability messages.

If this isn't supposed to be here, let me know and I'll move it - as well as the other issue. Additionally, if it would be best to make seperate issues for each Generation, please go ahead and do so.

Log & replay file names

Remove all invalid character from the names when saving them, so people like Luck>Skill can save their logs/replays.

Preserialize/convert string in bytearrays on server where possible to save CPU

As now we convert strings to UTF-8 byte arrays when serializing, more CPU is used. It'd be a great idea if wherever possible, preserialized strings are used. For example PlayerInfo could have preserialized bundle() with serialized string instead of creating a new one everytime.

Where to check:

  • Player list sending

Fix disable PMs

Fix it so that the person with PMs disabled can still start PM convos

Nicknames in pokemon battles

With the system overhauled, the "no nicknames" option doesn't work any more. It could be made to work, but would need a qsettings in BattleManager. Anyway to do.

Sound volume control

It'd be nice to add a sound config window, in which you can change the sound volume of cries and music to adjust them. If you want the music more prominent than cries, etc.

Also under windows link to the K-Lite codec pack with explanations that with it PO can read all music formats.

Have battle logs indicate who forfeited

If this has already been addressed, I'm sorry.

We over at Smogon have recently had some issues with groups of users gaming the ladder by creating groups of alts whose only real purpose is to forfeit against accounts whose ladder rating they want to see raised. Currently (or, at least, with 1.0.23), a forfeit results in an abrupt end to the battle log without any indication of who forfeited. Is it possible to correct this and have a battle that ends in a forfeit say something along the lines of "Antar resigned" (with proper div tags and such)?

Thanks.

Finish the EV/stats/item/nature/gender/shiny changing part in the teambuilder

See the design of the teambuilder there: http://pokemon-online.eu/forums/showthread.php?391-Design-of-the-app&p=2687&viewfull=1#post2687

I already did a lot of the UI work in the devel branch, but now all the connecting stuff needs to be associated with the logic when editing a pokemon. I want clean code, so i'll probably make some comments before it's good :x

If you have any questions ask them. If you do all that, then you can do the move choice & IVs part, or I can do the UI first if needed.

Also, the code of the old teambuilder (including ev box, ...) is all in the Teambuilder/ subfolder of the source (src/Teambuilder/Teambuilder/*) if you want to copy paste some stuff.

I'm working on the network protocol for now.

Add team previews to battle logs?

I've been trying to figure it out for myself and have had no luck. @coyotte508 would you mind sticking them in?

The format I'm looking for is, as an example:

Dragonite Trainer's team:Jirachi / Dragonite / Snorlax / Arceus-Dragon / Gengar / Mew
jess the outlaw's team:Kyogre / Ludicolo / Kabutops / Cloyster / Kingdra / Palkia

Note the lack of nicknames and the presence of formes.

Implement Tempban support.

By adding a new field into SecurityManager::Member.

Protocol does not need to be broken for this, can be implemented to master branch.

Think about the client GUI a bit. Maybe add on player list right click: Tempban for -> one hour | one day | choose time

Controlpanel could use "Change ban time" and "Unban on..". Server could just readjust the ban length. Needs to think about the two scenaries: Ban for xxx time and ban until xxx datetime.

What about auth levels? Put everything on auth >= 2 or grant a short tempban to mods?

Also needs scripts functions: sys.tempBan(name, time_as_seconds) or extend sys.ban().

Update Gen 5 Ability Messages

In Generations 3 and 4, the abilities were included in the messages themselves i.e. "Grace's Own Tempo prevents confusion!"

In Generation 5, a graphic pops-up on top of the sprite of the Pokemon stating the ability - "Grace's Own Tempo!" - and then a seperate message is displayed where the normal text is displayed - "Grace doesn't get confused!"

No graphic is necessary on the old battle window, as the ability message can be displayed with the second message - from Trainer 1's point of view:
Trainer 2's Smeargle used Swagger!
Grace's Own Tempo!
Grace doesn't get confused!

or from Trainer 2's point of view:
Smeargle used Swagger!
Grace's Own Tempo!
Trainer 1's Grace doesn't get confused!

The graphic could be included in the new battle window, but it is not necessary if the text is implemented.

This is dependant upon having the correct messages for all moves and abilities in Generation 5. That is a work in progress.
Also, if this isn't supposed to be here, let me know and I'll move it - as well as the other issue.

Adapt registry to new network protocol

Things to do:

  • Support network with 4 bytes instead of 2 for sending & receiving. See changes in Teambuilder's network files.
  • Change port to 8080 in client & registry for clientside-listening
  • Add global announcement, if we want to announce stuff like new version
  • add a byte to say if server is locked by a password
  • handle multiple ports better, receive all ports from server
  • use DataStream instead of QDataStream (Utilities/coreclasses.h)

Improve profile management

Check the devel branch.

For now there's only one profile, and you can save/load it.

What i want is a management of profiles like mods, or like boxes. There's a list of profiles (all the files in the Profile folder), you can switch between them, rename them, add them, delete them, etc, easily.

Here's how I see it. Instead of the load profile / save profile delete buttons, there's a current profile (which you can rename) and under that a list of profiles you can select. If you double click one, it becomes the current profile. If you click a trash can or "delete profile" button under the list (QToolBoxButton ?) the current profile selected in the list is deleted.

And the changes to info/name/etc are automatically saved, too.

Of course you can do it your way, too.

Introduce proper version warning for clients

Meaning version warning with server network protocol. If minor protocol is different, warn for slight features missing, if major protocol is different warn for some compatibility breaks. Save user action on warnings (ok/ignore) in order to not repeat them if ignored. Etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.