Jump to content

Eaty

Developer
  • Posts

    2483
  • Joined

  • Last visited

  • Days Won

    156

Everything posted by Eaty

  1. 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
  2. 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.
  3. You can see the last edit time now.
  4. 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!
  5. 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.
  6. 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.
  7. Implemented next server update. But lazy people have to pay either 10k, 1 PvP or 2 PvE Coins.
  8. 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.
  9. Absolutely, that was a mistake on my end.
  10. 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.
  11. 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.
  12. Feel free to talk about the changes and give feedbacks in here. Please only give feedbacks if you actually used Guild Island this month.
  13. 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
  14. 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.
  15. Eaty

    Custom

    Hey, there are several reasons against this as mentioned above and it would be a huge amount of work for Artists.
  16. 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.
  17. 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.
  18. 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.
  19. Guild Island Update April 1st 2021 Few changes were made after reading users feedbacks and suggestions. Most changes were done to simplify the whole process as many did not fully understand how it'd work. All current spawn-sets have been updated. They currently contain of Rain, Sun, Sand, Hail, Offense, Balanced, Stall, Support and Trick Room. More spawn-sets will follow in the future. Suggestions in our subforum! There is a 12,5% chance spawn-sets will change every 12 hours. There's an NPC in guild island to vote for your favorite sets. Voting for a spawn-set increases the chance. 50+ votes slightly increase the chance for the spawn-set to change. 50+ votes highly increase the chance to change to your voted spawn-set. Users can subscribe spawn-sets and get an in-game notification as soon as the spawn sets get selected. A new hunt-map without spawn changing sets has been added to Guild Island. The spawns stay the same except for the tier 8-9 spawn. The tier 8-9 spawn changes every week randomly. Once changed, the new spawn will be announced via global system message. Possible spawns: Cutiefly, Rockruff, Sandygast, Komala, Mimikyu, Dhelmise, Jangmo-o, Rattata-Alolan, Raichu-Alolan, Diglett-Alolan, Meowth-Alolan, Geodude-Alolan and Froakie-BB. Every Pokemon that gained the status was huntable before but is not anymore will be added to the list. Once a Pokemon is permanently hunt-able on another map it will be removed from the list. There won't be a fee to enter Guild Island.
  20. The problem is that if we add only one thing it might require two reworks instead of one which is not worth the time investment. We'd rather do it once and completely.
  21. Changing the PC storage is one of the most requested feature in Discord, in-game and Forum. Adding a single filter is not much of a problem but that won't help much. To add many features users requested require a whole rework of the PC storage, server- and client-sided. It's definitely do-able but not as easy as it might sound at first. Adding boxes and make it possible to put your Pokemon wherever you want without auto-sorting is tedious to do but possible. Changing the GUI for that is surely a bit work but that's mainly cause I am not used to this work. The main problem for the PC storage rework is a new filter system. Adding a single filter is easily do-able but users want all different kind of filters. We could add them one by one and overload the GUI with filters but even then there would be more requests. That's why we decided to make a filter similar to Discords where you can filter for pretty much everything and that's hard to do server- and client-sided. We will definitely get back to the PC storage rework but we have many projects at the same time, so please bear with us.
  22. Unranked counts as Uber and won't get a ladder.
  23. Hey, this topic is about random ladder rewards and I am looking for reasonable suggestions as I am absolutely not sure how to handle them. If you have complains/concerns about the whole concepts, please create a separate topic to discuss it.
  24. Hello guys, we are currently working on random battles and expect them to be released in near future (might still take 1-2 months or longer, depends on how it goes). With the random battles we will introduce a second ladder for it while the normal Ranked PvP ladder will (probably) change between OU and UU ladders. With this laddering on more than one server will be prohibited. But we are also uncertain about random ladder rewards. We want them to be low compared to OU/UU as you don't need to invest time in hunting, buying, training and movesets. That's why we would like to hear your opinions about it. Tell us what you think would be appropriated and please give us reasons for it!
  25. Hey, the money-losing penalty is part of the game. You beat NPCs you get money, you lose to NPCs you lose money. This will not be possible anymore after reconnect is implemented. Once you logout in a battle you'll log into the battle again. It's just a matter of time until this mechanic is outdated. I am not saying it's a perfect mechanic and I am always open to suggestions but completely removing it won't happen for the time being. We also capped the money you can lose to $50,000 for veterans that own millions. Users with small budgets lose 5% of their total money which can be obtained again fairly fast.
×
×
  • Create New...