Jump to content

Update Logs


Red

Recommended Posts

  • Developer

Changelog 05.10.2020:

 

  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...
  • Developer

Changelog 19.10.2020:

 

- Fixed a bug with U-turn and recoil damage.

- Imposter doesn't transform into a Pokemon behind a Substitute anymore.

- Fixed a bug with Evolite.
- Fixed that players were able to skip the recharge turn.


- Switch-ins after a Pokemon died is handled correctly by the server now:
  - Abilities will be activated in the right order (Intimidate, Trace, Imposter, Speed Boost etc.) now.
  - Burn and toxic will no longer be triggered.
  - Toxic Orb, Flame Orb, Leftovers etc. will no longer be triggered.
  - Weather and room moves will no longer lose a turn.
  - No wrong behaviour when both Pokemon die in the same turn anymore.


- Fixed Rattata-Alolan and Raichu-Alolan stats.
- There have been rumours that there will be a little surprise mid-late October.
  -  Smooge Holmes and Shinowattson already investigate.

  • Like 6
Link to comment
Share on other sites

  • Developer

Changelog 22.10.2020:

  • Disguise works now.
  • Celebrate works now.
  • Parting Shot works now.
  • Frost Breath works now.
  • Storm Throw works now.
  • Mystical Fire works now.
  • Deep Sea Scale works now.
  • Deep Sea Tooth works now.
  • Struggle Bug works now.
  • Fixed edge case with Recharge moves.
  • Fixed ability order, you won't get randomly Intimidated anymore.
  • Fixed server.vars bug.
  • Fixed a few Team Preview bugs.
     
  • Like 5
  • Haha 2
Link to comment
Share on other sites

  • 2 weeks later...
  • Developer

Changelog 31.10.2020

  • Water Compaction works now.
  • Shore Up works now.
  • Sleep Talk whilst being awake consumes PP now.
  • Disguise works correctly with Life Orb now.
  • Mold Breaker won't affect abilities beyond the attack anymore.
  • User won't get stuck anymore when dying while a trap move is active.
Link to comment
Share on other sites

  • Developer

Changelog 02.11.2020

  • Forecast is coded now.
  • Zen Mode is coded now.
  • Steelworker is coded now.
  • Hone Claws is coded now.
  • Eruption and Water Spout are coded now.
  • Fixed an edge case where you were able to attack while your opponent is dead.
  • Accuracy stages work correctly now.
  • Draining moves don't heal on breaking Disguise anymore.
  • Coil boosts accuracy now.
  • Schooling is coded now.
  • Chatter confuses its target now.
  • Dive will be absorbed by Water Absorb now.
  • Anchor Shot traps its target now.
  • Flare Blitz thaws frozen Pokemon now.
  • Final Gambit works correctly now.
  • You can't trap ghost type pokemon anymore.
  • Weather affects the power of certain types of all moves now. There were a few moves that didn't get the boost.
  • Like 7
Link to comment
Share on other sites

  • 2 weeks later...
  • Developer

Changelog 16.11.2020

 

  • Coded the move Metronome.
  • Coded Conversion.
  • Coded Gastro Acid.
  • Coded Solid Rock.
  • Coded Dark Aura.
  • Coded Fairy Aura.
  • Coded Aura Break.
  • Coded Teravolt.
  • Coded Turboblaze.
  • Coded Air Lock.
  • Coded Merciless.
  • Coded Bright Powder.
  • Sand Veil and Snow Cloak decrease now the target accuracy by 20% instead of 25%.
  • Rayquaza is able to mega evolve now.
  • Max Revive works in battle now.
  • Fixed 2 bugs that got users stuck in matches when a Pokemon dies to Hazards.
  • Fixed another stuck bug in matches when a charge move gets disabled.
  • No weird behaviours with U-Turn and Recoil anymore.
  • Knock off Max-PP and base PP was changed to 32 and 20.
  • Counter and Mirror Move are unaffected by Abilities like Multi-Scale and deal direct damage to the opponent now.
  • A failed move won't consume Damage-reducing Berries anymore.
  • Counter doesn't bypass Substitute anymore.
  • Pokemon with Inner Focus can flinch to a Pokemon with Mold Breaker, Teravolt and Turboblaze now.
  • Cloud Nine will negate the effect of Forecast now.
  • Aurora Veil will now fail when a Pokemon with Air Lock or Cloud Nine is on the field.
  • Fixed a bug with Outrage and hazards.
  • Effect Spore won't be activated anymore when your opponent has already a status effect.
  • Parting Shot lowers the ATK and SPATK of the target now.
  • Burn, toxic and Poison Heal will be trigger now even if you tried to run or failed to catch in wild battles.
  • Poison Touch won't be activated when the move failed due to type immunity or the move was absorbed by Flash Fire.
  • Weakness Policy will now be activated even against Knock Off.
  • Swift cannot hit pokemon that are in a semi-invulnerable turn like Fly and Dive anymore.
  • Revive works correctly with Shedinja now.
  • Revival Herb and Max Revive show the correct message now.
  • Pokemon with the Ability Magic Guard are immune to Black Sludge Damage now.
  • Protean won't be activated when a status move was blocked by Taunt.
  • Choice Items now lock Sleep Talk instead of the used move.
  • If a sturdy pokemon held a Focus Sash, the sash won't be consumed. 
  • Fixed a Visual Bug with Multi Hits and Rough Skin.
  • Ghost pokemon will get turn-based damage from Fire Spin and Whirlpool now.
  • Whirlpool and Sand tomb will not deal damage anymore when the opponent dies in the same turn.
  • Sacred Fire and Steam Eruption thaw frozen Pokemon now.
  • Perish Song will not consume Focus Sash anymore.
  • Reworked Dream Eater.
  • Reworked Struggle from scratch:
    • Struggle is now a physical move.
    • Doesn't bypass Substitute anymore.
    • Priority is fixed. 
    • If a Pokémon is forced to use Struggle, it will not be able to Mega Evolve.
  • Like 8
Link to comment
Share on other sites

  • 3 weeks later...
  • Developer

Changelog 28.11.2020

  • Coded Simple.
  • Magic Guard prevents Iron Barbs, Rough Skin and Rocky Helmet damage now.
  • Fixed a bug that Fake Out fails after both Pokemon fainted.
  • The trainer name will be displayed in the battle text now.
  • Rocky Helmet won't be activated if Seismic Toss failed due to immunity anymore.
  • Paralyze will halve the speed value in the damage calculation and running away chance calculation now. The base power of Gyro Ball will be higher now when Ferrothorn gets paralyzed.
  • Aftermath will not be activated if a Pokémon with Damp is on the field anymore.
  • Fixed a visual bug with Weak Armor.
  • Fixed an off-by-one-error in the secondary effect chance code. This decrease the chance for a secondary effect of 1%. For example, the chance of freezing the target with Ice Beam is now 10% instead of 11%.
  • Cleaned up the critical hit chance code. Changed the critical hit chance from 5.167% to 4.167% (1/24).
  • Cleaned up the Hazard code. Hazards will be activated in the right order after both Pokemon fainted now.
  • Reworked the fainted code and should work like in the original games now.  In general, the player that fainted last wins the battle now.
    • If the player’s final Pokemon used Selfdestruct, Explosion, Destiny Bond, or Final Gambit, and both players’ final Pokemon faint as a result, the player who used the move loses that game.
    • if a player’s final Pokemon used Double‐Edge, Volt Tackle, Flare Blitz, Take Down, Submission, Brave Bird, Wood Hammer, Head Smash, Struggle, Head Charge, or Wild Charge, or was holding Life Orb, and both players’ final Pokémon faint as a result, the player who used the move wins that game.
    • if both players’ final Pokemon faint due to a weather condition, such as Hail or Sandstorm, the player whose Pokemon faints last wins the game. This includes the effects of Perish Song.
  • Like 9
Link to comment
Share on other sites

  • Developer

Changelog 01.12.2020:

  • Bumped Unity to newest version.
  • Added dynamic window layering a la Windows. BEFOREAFTER
    • This should fix pretty much all window layering problems.
  • Added an option to limit the lowest ranked opponent you can encounter.
    • There's a slider in the PvP Queue window to select how big the rating different between your and your opponent can be downwards.
  • Slightly changed the PvP Queue window.
  • Reworked the PvP Queue code from scratch.
  • Added a rotate button for Magic Mirror instead of auto-rotating.
  • Added new hairstyles for a future Magic Mirror update. Probably for the post-Christmas client.
  • Added few Mega Mounts (Charizard X, Charizard Y, Xmas Houndoom, Houndoom, Gyarados). 
    • Normal mounts will be upgradable to Mega Mounts for a fee. They won't be tradable after the upgrade.
  • Added a small surprise for the time between Christmas and New Year's Day.
  • Fixed a crucial bug that was responsible for 99% of all server crashes PRO had within the last two years.
  • Added new comsetics and a few Christmas forms.
  • Many small reworks, important bug fixes, clean-ups and optimizations.
  • Like 24
  • Haha 1
Link to comment
Share on other sites

  • Developer

Changelog 14.02.2021:

 

  • Coded Illusion.
  • Coded Spiky Shield.
  • Coded Smack Down.
  • Coded Psycho Shift.
  • Coded Gluttony.
  • Coded Iron Ball.
  • Coded Evolution Moves. 
    • After a Pokemon evolves, it immediately attempts to learn all evolution moves for its evolved form.
  • Female Meowstic can learn now all moves based on gen 7 with the respective method. 
  • All Lycanroc forms should learn now their correct moves by the respective learn method.
  • Shell Bell works properly now.
  • Multistrike moves (such as Rock Blast) are rerolling the damage and crit chance with each hit now. 
  • The Recoil damage from Iron Barbs, Rocky Helmet and Rough Skin will be applied directly on each hit from a multi-strike move now. 
  • Burn, Multiscale and Screens (such as Reflect) are modifiers in the calculation formula instead of halving the damage in the code somewhere. Resulting in the same effect but fixed a few edge cases.
    • The damage dealt by Aegislash will consider burn and screens into the damage calculation now. 
  • The status conditions and confusion will be applied on the player's Pokemon even if the move requires a target and the opponent's pokemon is dead.
    • Moves like Flare Blitz will thaw the Player's Pokemon now in this case.
  • if a player’s final Pokemon was holding Rocky Helmet or has the Ability Rough Skin or Iron Barbs and both players’ final Pokemon faint as a result, the player who used the move wins that game regardless if the players’pokemon fainted due to the Recoil damage.
  • The effect of Will-of-wisp will be nullified by Flash Fire now.
  • The damage will be nullified now If player's Pokemon use Magma Storm or Fire Spin against a Pokemon behind a Substitute with the Ability Flash Fire.
  • The move Curse will now sacrifice 50% of the total HP instead of HP left.
  • Damage reducing berries are only halving the damage of the first hit of a multi-strike move now.
  • Recovering moves are failing now when the player’s Pokemon is at full hp.
    • Roost and Rest, where the player’s Pokemon loses flying type and falls asleep, respectively, shouldn't happen in this case.
  • Final Gambit will not consider as self target move anymore. 
    • If Final Gambit doesn't hit the opponent due to missing, type immunity, or protection, then Final Gambit will fail, and the user will not faint.
  • Curse will not consider as self target move anymore. 
    • Dark types are immune to Prankster Curse now.
  • The moves Stealth Rock, Spikes, Toxic Spikes and Sticky Web are affected by Pressure now
  • The secondary effect of a damaging move will only be activated when you damaged the opponent now.
    • You cannot get burned by a secondary effect anymore when the move was absorbed by Dry Skin.
  • Pokemon can become grounded now.
  • Fixed a bug that Cursed Body gets activated even if the move was protected.
  • Weak Armor should not trigger anymore when the opponent's pokemon is immune to the move used.
  • Fixed a bug that a badly poisoned pokemon takes damage equal to 1/8 of its maxinum HP instead of 1/16 in the first turn. 
  • Sturdy and Focus Sash message will show up now when the player’s Pokemon is hit by a multi-strike move.
  • Fixed a bug where Players were able to use the Staff Tags in chat.
  • Synchronize will now be activated even through Abilities like Poison Point.
  • Fixed a visual bug with Tinted Lens.
  • Fixed a bug that Bright Powder is still active after its being knocked off.
  • Charge will double the atk power of the next electric move instead of the damage dealt. (resulting in virtually the same effect).
  • Fixed a visual bug with critical hits and Aegislash.
  • Safari and Bug Catching Code were reworked. You will stay in the bug-catching area and safari zone now if you disconnect. Keep in mind, you still get ported to the last recent poke center if you disconnect while being in battle.
  • Many, many, many clean-ups and small reworks in the battle code.
  • Like 9
  • Haha 1
Link to comment
Share on other sites

  • 5 months later...
  • Developer

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.
  • Like 15
  • Checked/Done 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...