Jump to content

Eaty

Developer
  • Posts

    2418
  • Joined

  • Last visited

  • Days Won

    151

Everything posted by Eaty

  1. It's incredibly easy to comment on or judge something from the outside that's why I want to give you some insight. As far as the moderation is concerned, I'm hardly involved at all. There have been several situations in which I have clashed with moderators or GMs, but it had absolutely nothing to do with a dictatorship. It was more often about rules that are technically not possible. One of them, for example, was to permanently remove players from the game and forbid to create new accounts, which cannot be done with our tools, and I was absolutely against banning someone who had played on a new account without breaking rules. Of course, the other side also had good reasons to hold on to it, but it was impossible. Even companies such as Blizzard cannot prevent that. To say that situations like this make me a dictator while having no idea is beyond presumptuous. There have been situations in which smaller groups within Discord were formed that only shit-talked staffs and primarily me. However, this was only made public after they left the team. There were accusations such as "You don't give a fuck about moderation staffs cause you unbanned GoldenPikachu", although I would like to mention that this never happened. GoldenPikachu, like many others, only had the permission to create a new account, as we can't really prevent him from doing so. As for the PvP Council, I would like to speak about this once more. I made a lot of mistakes there that I wouldn't make again. However, it was originally not intended as a PvP Council, which I also wrote publicly. It should serve as a discussion platform. That many of those involved were outraged that they could not decide/vote for PvP bans on their own is a mystery to me to this day. I don't want to shirk my responsibility here either, some decisions should have been made earlier. Now Joro is in control of it and I am sure that there are only few who are dissatisfied with it. Well, the argument that players can't give constructive criticism because their English isn't good enough is an incredibly weak argument. There are always ways to express constructive criticism. May it be with the help of friends or staffs who speak the same language. The only reason not being able to express constructive criticism is that you don't have any. And should someone not being able to express constructive criticism because he, she or diverse was too frustrated in that situation, then it's still possible once calmed down. As mentioned earlier, both Prehax and other staffs have made mistakes in the past and have been confronted for them. This is currently being done by Keita. Should new cases arise, the forum can be used to forward them. As for the mentioned scripter situation, all I can say is that there could only be two possible reasons why this could have happened. The most likely is that the implementation required new features that were not implemented for various reasons and the other is that there wasn't a good reward system. Everything else is usually waved through. If there were other reasons, I am open to listen to and comment on them. I would say that scripters and I work very closely together, as they are often very dependent on dev changes. Honestly, why should I keep scripters from adding more content to the game?
  2. Heyho, I'd like to pick up on a couple of points that will most likely need a more detailed answer and will receive that from Keita later on. I think it's a shame what is made of such an opportunity. Many players have expressed that they feel misunderstood and ignored in the past. Because of that, Keita has created the opportunity to publicly address one's own opinions, ideas and problems. Instead of taking advantage of this opportunity that many have asked for, it is used to insult and corner others. Prehax and many other staffs - I count myself among them - have made mistakes in the past. But to see that players that have been handled with soft gloves complain about staff abuse is quite disappointing. There were players with more than ten infractions handled by several staffs that called him out for staff abuse while they should have been banned way earlier according to our punishment policy, along with a candidate that used third-party software and got a second chance because of his long playtime. Of course you are free to complain about Prehax and other staffs, but then please do it properly. Name points, express constructive criticism and make suggestions for improvements. A fundamentally aggressive attitude will not get us any further. This counts to both staffs and players. Furthermore, I would like to shed some light on the "ignored" suggestions. We read all of the suggestions posted in the forum. It's just insanely time consuming to answer every thread. Once we plan to implement a suggestion we will add it to the dev to-do list. There are weeks when I work on PRO for over 12 hours a day. The players often do not notice a lot of this, as it is often about changes that are not visible to the end user but are necessary. PRO was at a point for a very long time where you could no longer work with the code. This applies to both client and server code. That was because the top priority was to do something that the players can see without considering the further negative effects it would have. You should all keep in mind how much happened over the past two years. Don't just hold onto the negative. There will be more progress that we can all look forward to.
  3. Heyho, the other points will certainly be answered by Keita or other staffs. I would like to concentrate on the second point first, because I do not want to leave it as it is. As you mentioned, I nerfed the speed of jet skis from 8 to 6, as all players used jet skis because of the speed and not the optics. That highly devalued all other surf mounts for literally no reason! The other surf mounts had a speed of 4, which is the normal running speed, and therefore players only used jet skis. I considered whether I should increase the speed of the surf mounts to 8, but the animations of some mounts looked very bad at this speed. That's why I nerfed the speed of jet skis from 8 to 6 and buffed that of every other mount from 4 to 6. That's exactly how I announced it at the time. Furthermore, it took a day to add the NPC to exchange a jet skis for a CC because it had to be tested first. It had nothing to do with the reaction from the community.
  4. Hey, this was due to you not having the PvPCoins variable which was a result of a server transfer. This month was quite busy so I didn't find the time to fix it early, sorry about that. You fully received the coins on silver server where you reached second place.
  5. Heyho boys and girls, I've been thinking a lot about potentially new forms for Summer, Halloween and Christmas the last few days. Since we already have a lot of forms, I wanted to see your ideas. There is no need for pixel art. You can just draw forms and post them here. The only rule there here is that it has to be your own work and idea. Don't post pictures that you googled or is not your idea originally. We may use some ideas. o/ Furthermore, we will hold a public voting and reward the first (if there are many submissions, maybe also the first three). The reward will be a Pokemon mount of your choice. If the mount is not yet added in PRO and isn't impossible to create then we will add it in the next client update. Last but not least, one more thing; If you create a form for a Pokemon with a pre- or evolution, please create forms for the whole family. If the interest or the time investment is not for you, please stick to Pokemon without evolutions. Submission format: The competition ends July 1st 2022 12 AM GMT+0.
  6. Sure, I'll try to implement it next client, no promise.
  7. We are actively working on the new server version. Right now, we are looking for bugs and I am trying to figure out how to fix a bug there. Once I am convinced it's stable enough we'll release it and re-enable all currently disabled scripts again. The only way for you to help us speed up the process is to actively test on test server and to report all bugs you encounter there. I made a Discord announcement about it.
  8. Heyho, I used dozens of bot accounts that spammed HJK. Results are following: Hits 54930 Misses 6070 AVS 0.9004918032786885% From my point of view everything seems fine. Edit: Added a video while bots are battling: High Jump Kick %testing
  9. Eaty

    Update Logs

    Changelog 09.06.2021: Bumped Unity to newest version. Various minor adjustments and cleanups not worth mentioning. Many TBA client changes that will follow before client-server release. Added around 80 new cosmetics that contain of accessories, mounts and headgears. Coded Knockout Drops to knockout one of your Pokemon outside of battles. You do not earn or lose happiness in pvp battles anymore. Coded Thousand Arrows. Coded Power Construct (Zygarde form changes). Reworked PvE switching moves such as U-Turn/Volt Switch/Roar. Fixed that 2 stage moves can bypass semi-invulnerable. High Jump Kick recoil doesn't occur on flinch anymore. Fixed Protect. Protect will protect you against Status moves now. Hyper Cutter only prevents atk lowering now. Clear Smog respects the type immunity now. Coded Random Battles: Coded Random Battles ladder. Users with MS have guaranteed shiny pokemon and a 20% chance for every other pokemon. All pokemon in random battles team have max PP. You can queue for random battle from everywhere. Fixed critical hit. Negative defensive boost won't be ignored anymore. Head Smash recoil is always 50% of the damage dealt now. You can no longer thaw or wake up when you use item in battle. Reworked Fake Out. It should fix all edge cases. Fixed Technician in combination with weather effects/boosts. Changed Avalanche and Pursuit code order to make their effect unaffected by Technician. Sticky Web lowers the speed of Magic Guard pokemon now. Trick is blocked by Protect now. Flinch should only be activated on the attacking turn of 2 turns moves now. Magic Coat bounces back when Soundproof is active now. Gravity is coded now. Red Card is coded now. Added a missing text when status moves fail due to semi-invulnerable moves. Added Battle Turn counter after every round. PvP battles automatically end in a draw after 1000 battle turns now. Fixed a bug where status effects weren't applied after the enemy died due to some edge cases. This includes poison, burn, leftovers, magma storm and similar that were skipped in these cases before. Coded Noble Roar. Coded Zoom Lens. Fixed a raise condition for invalid natures in python. Fixed that breaking Subsitute removed the Ditto Transform. If a Pokemon faints after using Knock Off due to the target's ability (Rough Skin or Iron Barbs) or held Rocky Helmet it doesn't remove the target's held item anymore. Two-stage moves such as Solar Beam can no longer hit Pokemon that are in a semi-invulnerable move. Working on a test framework that should massively reduce the chance of an issue like that to make it into a server release for some time now. Removed redundant assignment for many string.append calls. Renamed a few global vars to have the g_ prefix. Changed user bg_task to not pass the user as argument because it turned out to be more clutter in the end. Changed user mtx type to std::recursive_mutex and renamed it from csTL to user_mtx. Replaced a few calls to is_ptr_alive with nullptr checks. Don't call Faint on npc user objects on battle end. Only send after-battle packet to real players. Renamed class member variables to lower snake case and added "_" prefix to private variables. Reworked cChannels class: Now uses MariaCpp and prepare. Added internal mutex to remove dependency on global g_dba_crit_sec. Removed MariaCpp error wrapper and return MariaCpp connection from get_new_con directly. Moved generic cDB error wrapper from h to cpp file. Reworked cCoinShop to use MariaCpp and removed unused RemoveShopItem method. Changed type of cUser last_saved from int to chrono::time_stamp. Changed type of cConfig autoUserSaveInterval and minUserSaveInterval to chrono::seconds. Made various cpp globals static because they always were supposed to. Being in team-preview will be treated as being in battle now. Use sendEnvironment in thunder method instead of redundant code. Reworked cFriends to use MariaCpp and removed redundant RemoveFriendship method. Reworked cGuild to use MariaCpp and removed part of the motd and logo escape code that was purely db related. Removed redundant guild reload code. Reworked cIgnore to use MariaCpp. Reworked cItem to accept MariaCpp result sets. Reworked cItems to use MariaCpp and more clearly separate global items and user inventories. Added an npc getter that returns a shared_ptr& (npc instances are bound to their respective map objects which are bound to users which in turn are only ever deleted in the main thread. this means that npcs will never get deleted while in use in the main thread.). Reworked cNPCBattles to use MariaCpp and some of the methods now take shared_ptr& instead of shared_ptr. Reworked login code: Moved all initial connection and login code into a coroutine that co_awaits blocking socket reads. Moved threaded part of the login code into load_user method. Added static simple_send method to user class that is supposed to be used before the user object is logged in far enough. The login code now loads the user object in isolation and connects it to the object structure after than in the main thread. Removed connect method as everything related to the process now either happens in the connect coroutine or in the load_user method. Split up msgbox generation and sending to allow the login code to send msg boxes vis simple_send. Split up q packet generation and sending so the login code can send it without a call to teleport. cUsers add_user function now returns a success bool in case a user with the same name is already logged in. Reworked logout code: Don't disconnect user in the ProcessPacketQ method. The only place where users are now being disconnected is in the main socket select and process data code. User objects are now stored as shared_ptr whith a custom deallocation method that ensures the actual destructor is always called from the main thread. The disconnect process now involves one switch into the user save thread to save the user and then back to the main thread to remove global associations with chats and guild. Renamed StartRareBattle to StartWildBattle because thats what all the overloads actually do. Changed is_ip_banned and is_mac_banned to be static and take the ip/mac via parameter because it needs to be usable before the user object has even been instantiated. cUser SetShop now takes an r-value reference to avoid an unnecessary copy. Removed the $ToSoon message right after a normal friendly battle. Added error system message if a person that you accepted a pvp request from has already challenged someone else. Update both player's visible battle state when a teampreview or a battle has been started. Various client->server packets no longer update LastAction or only do so if appropriate. Removed SafeChannelChange logic as this can now easily be scheduled with schedule_func. Fixed a potential uint underflow in the gain money function. cUser set_connected setter now updates the global ip_counter. Removed isMoving as it is not being used anywhere. Various places now allocate a local shared_ptr<cUser> to make sure the user doesn't get deleted unexpectedly. Changed various function argument types from cUser* to shared_ptr<cUser>&. Only try to access users current map if not nullptr (to set region and caught map). cUserPkmns cleanup: Fixed cUserPkmn GetCount. Added get_array_size again and return it instead of GetCount in python to make index access work as expected. Reworked pokemon slot allocation and always resize pkmns array down to only the necessary number of elements. Added constructor for npc battle or random team cUserPkmns instance. Don't use the new ranges stuff anymore in update_arr_positions because in the end it complicated stuff instead of simplifying it. Improved string concatination in user senddetails method. Important fix! call CoInitialize in all threads that potentially use networking. Added special lock_python function that takes a mutex and locks it like the python mode of cs_guard did. Removed user_login_guard for now. Changed user_poke_guard to work with std::recursive mutex and use it to conditionally lock user mutex. Reworked globals: Made globals value types. Moved each global object to its corresponding .h file instead of having one globals.hpp. Implemented proper destructors for them. Moved various global objects out of the g_Users adn g_Environment objects and into their own respective .h files. This necessetated a lot of additional include juggling but in the end its fewer total includes in each file. Moved global object initialization from constructors into load functions as necessary. Changed a few class enums into unscoped enums to get implicit to int conversion but contain them in a namespace with the same name. Removed GetDexId from cPkmns and cUserPkmns and use GetDexMon instead. Changed hidden power logic to exclusively rely on the Type enum which now is unscoped. For xanascript type string we now cast type enum to string and uppercase the result because its not needed anywhere else. Removed redundant user UpdatePokedex and call pokedex.Update directly via the user.GetPokedex() getter. Replaced a few int ids with their corresponding enums. Renamed a few from and to enum conversion functions. Moved phase switch into cUser method. /goto now switches to the targets phase as well. Limit g_Environment update calls to slower interval. Added use after free intentional crash command option but it doesn't work for some reason. Implemented proper handing of potential winsock2 send WOULDBLOCK errors. Merged individual battle stats related methods to one that takes the match type enum as its only argument (this cleaned up a few code smells from the addition of random battles). Changed a few function arguments from const string& to string_view where appropriate. Made a few static data holding objects constexpr. Use discard method in static random function. Fixed potential issue with user_iter helper in case of more than one recursive iteration call (locked_shared needs to count recursions instead of just being a bool). Made IsNumeric function accept negative numbers (strings starting with "-" in particular). Added nodiscard arrtibute to a few functions in helpers. Removed the ToNum helper function that takes an explicit search length and changed the other overload to take a string_view which can be used to achieve the same result. Removed unecessary layer of indirection for exec_every and randomize the initial delay to prevent stacked load on individual server ticks. Fixed log_msg std::format calls in match_maper.cpp because msvc c++20 is now feature complete. Actually use del function on ServerVarsWrapper for delattr and delitem python magic methods. Differentiate between len and count for user.pokes so len - 1 can be used as container index for the last element. Improved server tickrate regulation by using win api timeBeginPeriod to reduce the lag variation of sleeps (and make sleeps viable at all). Improved login speed by accepting up to 25 connections each server tick instead of just one. Fixed python pokemon iterator by storing a shallow copy of the poke pointers and interating that instead (as the object is also used for slices this makes more sense anyway). Removed unnecessary schedule_func wrapping for python pokemon free (the used cUserPkmns methods are entirely thread safe). revert this if pokemon pos overlap issues pop up again.
  10. I am currently looking to add new cosmetics in upcoming clients. Feel free to suggest more mounts, headgears, facegear and accessories. Do not suggest clothes for now!
  11. Hello, the main reason for this change was to lower the inhibition threshold to use Reroll Tickets. Of course, users with more Reroll Tickets can utilize the change more than others but my main idea was to give the Mysterious Ticket another usage as many seem to reach the current legendary limit. This way users can still use the Mysterious Ticket and gain at least one reroll with it. The more you invest the higher your actually chance to get wished IVs but also the risk is. It was not meant to increase the chance to get a wished Hidden Power on legendaries. That's something I do not wish to touch at the moment. I do agree that new players have a significantly lower chance to get decent legendaries than users that spent a lot time in the game but I honestly don't know how to change it so it's still balanced.
  12. Heyho, we plan to add all mega mounts for the mounts we have in-game. Cannot give an ETA but it'll be worked on earlier or later.
  13. Implemented next server update. But lazy people have to pay either 10k, 1 PvP or 2 PvE Coins.
  14. Hey, I was thinking about adding automated tournaments in PRO. I thought about a weekly random battle tournament and a monthly OU tournament. Nothing is decided yet as I want your input first. An NPC could fully handle these tournaments. If we have too many participants, it could make different tournament trees. Random Battles would be thrice a month and OU once a month. You have the whole week/month time to register. To participate you have to pay a fee. Not sure about the amount but I think 10,000-20,000 for random battles and 30,000-50,000 for OU sounds fair. The entry fee would get split between first, second and third place. The % can be discussed at a later point. You need to bring a few hours time for the tournament. The NPC will queue you and handle all battle starts. You disconnect in a battle you lose. Potentially a BO3 for unlucky disconnects? Once a battle is finished you'll be in a queue until your next battle starts. This keeps going until the tournament ends. If the server crashes the NPC gives you 15 minutes to re-enter the tournament after the server rebooted. If you don't re-enter within time you'll be disqualified. The server should be stable by then tho! Please give reasons to make it easier to follow your argumentations.
  15. Absolutely, that was a mistake on my end.
  16. They are not choosen via vote. More votes only increase the chance for the set, there's no guarantee. And the set was not choosen 3-5 times, the set just didn't change since it was randomized (12,5-15% chance to change every 12 hours). Once a set is live the votes for the set will be ignored until the set changed again.
  17. Hm, according to my math that should be the norm. 12,5% chance (up to 15% via votes) to change the spawn set every 12 hours shouldn't change thaaat often.
  18. Feel free to talk about the changes and give feedbacks in here. Please only give feedbacks if you actually used Guild Island this month.
  19. Hello, if balancing wasn't a problem then maybe it would have been an option but I'd rather add a mood in the trainer card where you can select your current mood such as Bashful, Timid or Modest and then you could synchronize with your mood once you activated the Sync Medalion instead of a Pokemon. Sadly balancing is a problem therefore I doubt this will happen. :c
  20. Eaty

    Translation

    Hello, it's not easy due to how scripts are saved and loaded but I think it's highly underestimated how much work that would be. Scripts currently have more than 12,421,961 characters and more than 500,000 lines. Additionally, every release would require translations. It's definitely possible to translate the GUI but that would also cause problems in the communcation, for trades for example.
  21. Eaty

    Custom

    Hey, there are several reasons against this as mentioned above and it would be a huge amount of work for Artists.
  22. If your suggestion was only to avoid gaining/losing happiness in PvP battles then please rename your suggestion title so I can mark it as implemented. Starting next server version update you won't gain/lose happiness in all PvP battles (ranked, unranked, friendly) anymore.
  23. Eaty

    Merge servers

    Correct, on high times we have 800-1000 users on each server. Merging the accounts wouldn't be much of a problem but I don't see many advantages. The only advantage I see is the PvP queue but I rather have a cross-server ranked PvP queue and battles than merging both servers. The two server system works quite well.
  24. Hm, theoretically, I wouldn't mind a pseuedo salon with a cooldown to raise Pokemon's happiness for a small fee. Right now, they are only used for Dig, Dive and Headbutt as far as I am aware. I might also deactivate losing/winning happiness from PvP battles so moves such as Return work as intended and are usable without any problems.
×
×
  • Create New...