Implements AddArenaTrapTagHitAttr for moves like Stone Axe and Ceaseless Edge.
Fixes chance for selfstatus moves.
Added Comments For AddArenaTrapTagHitAttr
* Bug fixes for spite, creates class to extend spite for eerie spell
* Comments for clarity, creates class to extend ReducePpMoveAttr
* Resolve reference error with AttackReducePpMoveAttr
* Shows move failed in a clearer way with showMoveText
* Localization of pp reduction moves
* Fixes issue of eerie spell reducing pp when ratio is 0
* Removes unnecessary phase replacement
* Remove partial implementation from eerie spell
* Adds locale entry for ppReduced to other languages
* Partially implemented Magnet Rise
* Implemented Magnet Rise
* Changed pokemon.ts so all TypeImmune tags work instead of just
MagnetRisen
* Magnet Risen is now removed when Gravity is used.
* Magnet Rise is ignored by Thousand Arrows
and Smack Down.
* Fixed a bug where status ground type moves
would also be ignored by Magnet Rise
* Added a message when Magnet Rise is removed
* Inserted TypeImmuneTag check in
getAttackMoveEffectiveness() for the AI
* Created a magnetRiseCondition separately
* Created a test for Magnet Rise
* Bug Fix in Magnet Rise test
* Created Magnet Rise test with Gravity
* Shifted the code from getAttackMoveEffectiveness
and apply into getAttackTypeEffectiveness instead
* Replaced onNextPrompt with doAttack
* Removed redundant runFrom(Phase)
* Replaced magnetRiseCondition with
battlerTags.every anonymous function
* Fixed import errors
* Added an undefined check for summonData
for TypeImmuneTag in getAttackTypeEffectiveness
* Replaced undefined-check with optional chaining
* Force multi-hit moves to hit once if they are against an immune type
* Add test for multi-hit attacks against immune types
* Document MultiHitAttr
* Tiny change
* Wording fix
* Use shortcut methods in unit tests
* Fix leftover modifications from METRONOME testing
* Reorganize SAP SIPPER tests
* Fix extra imports
* Implement Arceus Plates and Silvally Memories
* German localization for items
* Run linter on changes, add items to zh_TW localization
* linter cleanup
* Finish localization for other languages
Names for items sourced from Bulbapedia. Names for the items in Portuguese could not be reliably sourced, so they were as directly translated as possible.
* Add custom Blank Memory item
Currently does nothing, but the idea is that it would be used if the all-in-one form change item idea is followed through.
* Update item atlas
* Use move.type instead of type.value
The type effectiveness now works again.
* Update comments
* Fix type changing affecting only Silvally
* Condense switch cases down to a single line
As per Brain Frog's suggestion.
* Added check for move changing type before determining if defending is immune to it because of an ability
* Remove duplicate Ability change class and added getType() function under a move
* Reworking how moves get passed into hit calc
* Fixing exceptions and overreaching changes
* reverting forwarn and dancing move back to original since they are not being changed
* fixing some small move related bugs
* Fixing file permissions after testing
* Fixing move type not resetting after individual MoveEffectPhase
* Fixing move.ts permissions (again)
* Addressing some MR feedback and adding some documentation for PokemonMove class
* [Move] Implemented Court Change
* Returned overides to normal
* Added recommended changes
* Removed an unnecessary if statement for swaparenatagsattr
* Move the swaptags array to the call as well as changes to the quiet boolean
---------
Co-authored-by: Juan <jmora279@fiu.edu>
* Fixing Liquid Ooze to turn move user and not one with the ability as well as converted strength sap to use same logic instead of making it a separate class
* Replaced "undefined" with "null"
* Updated based on feedback + fix file permissions
* Fixing file permission on battler-tags
* Adding localization for drain message
* Apparently this file is 755 unlike the others
* Removed ability for custom message in exchange for getting to pass Pokemon name
* Once again changing moves from 644 to 755 like it is in repo right now :)
* putting ability back to 755 (why are file permissions all over the place)
* add type inference to getAttrs methods and refactor accordingly
* Tests/infer types for get attrs methods (#1)
* #1633: add spec/tests for coverage
* move ability/move tests into /src/tests and rename to *.test.ts to match common naming patterns
* use None in test cases to remove ambiguity
* revert back to before test cases were merged
---------
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
* Transferring item does not kick out of transfer menu
* Select simultaneously the item to transfer and the quantity
* eslint fix
* eslint fix
* Reset quantity on scroll
* Documentation
* eslint fix
* Add unthaw to moves that are missing it
* Add unthaw to all damaging fire moves
* Add Status Effect overrides for easier testing
* clean up comments and readd status cure prefaint
* use helper instead of accessing attrs directly
* remove status overrides
* Implement Triple Kick/Triple Axel/Population Bomb
* Add maximum allowed base power increments
* Add documentation
* Fix Population Bomb, Account for Skill Link
* Change multi-hit power increment behavior
* Fix Typo
* Partially implement Cheek Pouch ability
* add cheek pouch trigger to EatBerryAttr class
* Partially implement Cheek Pouch ability
* add cheek pouch trigger to EatBerryAttr class
* add cheek pouch trigger to new berry phase, remove partial tag
* run auto formatter because I forgot
* hotfix berries triggering before status effects
* Revert "hotfix berries triggering before status effects"
This reverts commit 3fbbc9a165.
* add partial tags to abilities that would be blocked by Heal Block
* Changed the move Acrobatics so it doesn't include
non-held items on it's damage calculations
* Changed exception so it includes within_party
items, and updated the move description
* Small typo e_e'
* Change Description of Move
---------
Co-authored-by: Benjamin Odom <bennybroseph@gmail.com>
* Use getBattleStat instead of getStat in BattleStatRatioPowerAttr
* Change unnecessary let into const
* Refactor BattleStatRatioPowerAttr into two distinct classes
* Add TSDoc for the new classes
* Implementation of Destiny Bond
* Add TSDocs
* Make the move fail in boss battles
* Fix boss immunity and ally fainting
* Update docs
* Add doc of return value of tag lapse
* Fix ESLint
* eslint config + packages
* updated eslint config
* fix the issue eslint adding ;;;; at interfaces
* first round with eslint --fix .
* removed config for unused export
* Revert "first round with eslint --fix ."
This reverts commit 77a88e0895.
* removed config for camelCase
* for real this time, first round of eslint --fix .
* halfway to manual eslint fix
* eslint done
* added "how to setup" the hook to eslint --fix each new file before commit (if wanted)
* removed eslintrc config file duplicat
* fix human error + ignore build folder + merge overrides
* added curly brace style + eslint
* applied double quote linter rule
* added lefthook
* test precommit
* test precommit
* test precommit
* test precommit
* test precommit
* test precommit
* test precommit
* github action to run eslint
* added node_modules to ignore eslint
* different action for typescript
* no need for different glob (default src)
* node 20
* node 20
* removed no longer needed install file
* remove hooks part from README
* eslint fixes
---------
Co-authored-by: Frederico Santos <frederico.f.santos@tecnico.ulisboa.pt>
* Fix Entry Hazard Miss
Made Entry Hazards bypass the accuracy check as they cannot miss a target. There's still one more bug to fix with this but it requires way more code changes. This change needed to be done as well, so I'm getting it out early.
* Update move.ts
* Use getBattleStat instead of getStat in BattleStatRatioPowerAttr
* Change unnecessary let into const
* Refactor BattleStatRatioPowerAttr into two distinct classes
* Add TSDoc for the new classes
* Implemented Power Split and Guard Split
* Update changeStat method to use summonData for Pokemon stats
This commit modifies the `changeStat` method in the `Pokemon` class to use the `summonData` object for updating Pokemon stats instead of directly modifying the `stats` object. This change ensures that the updated stats are correctly reflected in the `summonData` object, which is used for battle calculations and other related operations.
Refactor the `getStat` method to check if `summonData` exists and return the corresponding stat value from `summonData.stats` if it does. Otherwise, return the stat value from the `stats` object.
This change improves the accuracy of stat calculations during battles and ensures consistency between the `stats` and `summonData` objects.
* Added documentation for Power Split and Guard Split + linting
* removed incorrect files
* Removed incorrect folder
* removed unnecessary import
* Added documentation for getStat and changeSummonStat methods
* New description for getStat()
* Adjusting function descriptions
* adjusted descriptions according to guideline
---------
Co-authored-by: Frederico Santos <frederico.santos@fivedegrees.nl>
* added auto hit and 2x damage from certain moves when targetting a pokemon who used minimize
* review fixes and bad merge
* review fixes and bad merge v2
* changed to be double damage instead of power for the minimize condition
* added TSdocs for function]
* remove ability to add minimize tag to dynamax-mons
* status cannot be applied to max-mons, and falls off if they dynamax
* updated doccumentation
* Update move.ts
---------
Co-authored-by: Cae Rulius <cae@polywhack.com>
Co-authored-by: Benjamin Odom <bennybroseph@gmail.com>
* Sacrifical Moves (that dont require a target like explosion or self destruct) now also work if the target is flying, diving etc.
There is also a new catagorie of moves. "SacrificalMovesOnHit" for all moves that need to hit for them to be sacrifical like MEMENTO
* Added comments, added (what i think is TSDoc) to functions and classes. Removed empty lines i introduced
* .
* Added fixes for the Review by TempsRay.
* Added missing *
* Remove Target Requirement of SacrificialAttr
* Update move.ts
---------
Co-authored-by: Benjamin Odom <bennybroseph@gmail.com>
* Made Sheer Cold not affect Ice Types, as well as implementing the Gen VII change of 20% for non ice types.
* Pushed accurancy change
* Updated and separated the accuracy attribute and the Ice no effect attribute
* Fixed the OHKO attribute (accidentally removed) and fixed multiplier
* Updated attribute names, as well as making the move cancelled instead of 0x multiplier
* Added TSDoc comments
* Updated accuracy logic
* Changed the text response for Sheer Cold immunity
* Added immune to the HitResult enum
* Ability Corrosion
Implemented Corrosion Partially.
Tested against:
- Poison Powder
- Toxic
- Dire Claw
- Sludge Bomb
- Psycho Shift
They all work as expected
Missing ability Magic Bounce to test against.
* Added TSDoc Documentation
Added documentation to the new IgnoreTypeStatusEffectImunnityAbAttr and added comments to the checks for this ability attribute.
* Added More Documentation
Add comment into Phases for what sourcePokemon is for.
Renamed source to sourcePokemon onto trySetStatus and canSetStatus.
Added TSDoc head for what sourcePokemon is and anything else I am aware of what they are used for.
* Removed unfinished TSDoc
Removed TSDoc headers due to not having enough understanding to fill out all of the parameters
* Fix Formatting and Reorder Parameters
* Update arena-tag.ts
* Update phases.ts
* Update ability.ts
Added access modifiers to my class and the class I compared to.
---------
Co-authored-by: Benjamin Odom <bennybroseph@gmail.com>
This primarily just affects Zippy Zap, as it loses its always crit attribute for an evasion increase (Associated localization strings will need updating). Also implemented Sparkly Swirl's status curing attribute.
Also included is a wild evolution delay for some stone evolution Pokémon that was previously overlooked.
* Heart Swap implementation.
Simply switches the values in 3 arrays.
* Fixed missing space
* Removed some lines.
Removed a for loop.
* Removed an unneccesary line
* TSDoc commentation added
* Changed message method to be more descriptive
* Adjusted message line to be consistent with Pokemon Showdown
* Adjusted priorBoostArray to priorBoost integer
Only one values is relevant at a time, so the array was pointless, woops.
* Implemented Snipe Shot and Stalwart/Propeller Tail
* Remove Testing Overrides
I don't know why these got pushed, they are in the gitignore file.
* Snipe Shot also has a high crit rate
* Add Comment
* Add TsDoc documentation to BypassRedirectAttr
* Add ability pop-up for when Propeller Tail/Stalwart proc.
* Fix Formatting
* Tab align comment
* Hydro Steam, Spirit Shackle, U-turn fix
Match formatting to project style
Co-authored-by: Samuel H <flashfireex@gmail.com>
* Fix Hydro Steam power up in Sun, even harsh sun if type changes
* Fix issue with Hydro Steam outside sun
* Add comments to IgnoreWeatherTypeDebuffAttr for documentation
* Move U-turn fix to another PR
---------
Co-authored-by: Samuel H <flashfireex@gmail.com>
* adds frame for StatusCureAttr
* heal bell and aromatherapy functioning as intended
* refactor attr to solely handle party cure, party interaction unique enough to justify
* adds header to PartyStatusCureAttr
* code comment
* comment formatting improvement
* checks for passives as well
* code comment
* shows ability bar if immune
* Fixed Crash Moves and Reckless
Added a new MoveFlags flag 'RECKLESS_MOVE' to make crash and recoil moves in line with other move flag boosting attacks.
Modified how flags were defined so they are easier to maintain.
Added the appropriate flag to all mvoes listed as being affected by Reckless. Steel Beam and Mind Blown do not count according to source:
https://bulbapedia.bulbagarden.net/wiki/Reckless_(Ability)
* Update move.ts
* Update abilities.ts
* add hazard removal for Rapid Spin, Defog, Tidy Up, Mortal Spin
* Updated templating and fixed some errors
support for either pokemon using it
added better templating
* revert logic, and remove partial tags
---------
Co-authored-by: kenwang <kenwang@umich.edu>
Co-authored-by: Gwen Valentine <gwenvalentine@starshine.dev>
Mind Blown targets all users and was triggering recoil every time it hit. Changed so that it only applies once after all targets take damage by adding a new MoveEffectTrigger, POST_TARGET. This also fixes an issue where dying to recoil stopped the rest of the damage from hitting the remaining targets.
This change also applies fixes for Steel Beam since they are have the same effect but is single target.
Also added missing messages for Damp and Recoil. All messaging is in line with Pokémon Showdown.
* abilities: implement guard dog, abilities that give intimidate immunity
* abilities: implement rattled's second effect, remove refs to mold breaker
* abilities: fix rattled not giving the attack drop still
* abilities: make ability bars pop in to some success
* abilities: implement suction cups since it has the same effect
* moves: add custom fail text, fix animation issues with Guard Dog/Roar
* abilities: manually show intimidate ability bar to prevent weirdness
* Expanding Force Implementation
Added target change attribute based on terrain
* Class change I guess
* Expanding Force Implementation
Added target change attribute based on terrain
Class change I guess
Squashed weird split commit
* Fixed removed commits
My bad
* ACTUALLY fixed removed commits
* Smack down and thousand arrows should cancel charging fly
* Remove console log
* Update interruptible check to use flying tag instead of move history
* Remove extra comma
Moves that deal half of a target's HP were not able to deal damage if the target had 1 HP. Used Math.max to ensure 1 is the lowest this value ever evaluates to.
* Implemented Synchronoise's effect
Tested with Soak, Forest's Curse, and a variety of attacker and defender types.
* Fixed Synchronoise double battle functionality
It now does zero damage only to targets who do not share any types with it, while correctly damaging any who do. It also fails entirely if the user is UNKNOWN type.
* implement wish move
* Serene grace implementation idea
* only do the thingy if it actually gets effected.
* Revert "only do the thingy if it actually gets effected."
This reverts commit 4b084658d2.
* Revert "Serene grace implementation idea"
This reverts commit 4dd2504bc7.
* Fixes for Wish implementation
---------
Co-authored-by: Flashfyre <flashfireex@gmail.com>
* Some Fixes
- HP ratio related checks (`getHpRatio`): Added rounding to 2 decimals for non-precise option.
- Hustle (`BattleStatMultiplierAbAttr`): added optional condition; Hustle now works only for physical attacks.
- Imposter (`PostSummonTransformAbAttr`): Switch in a double battle after both foes have been defeated no longer crashes the game.
- Sleep Talk (`RandomMovesetMoveAttr`): Single target moves no longer target allies.
* Formatting changes for consistency
---------
Co-authored-by: Flashfyre <flashfireex@gmail.com>
* Edited Electro Shot to raise stat before attacking
Should be a fix to issue #85
* Updated ElectroShotChargeAttr
Moved the Sp Atk boost to be inside the ElectroShotChargeAttr function
* Updated ElectroShotChargeAttr to raise SPATK before the move fires
* Updated ElectroShotChargeAttr with comments on process
* Updated formatting
* Implement Rivalry
* Implement Quick Feet, Liquid Voice, and Normalize
* Forgot paralysis is half speed instead of a quarter
* Remove log statements
* Fix minor edge case in rivalry for gendered vs genderless
* Add wind abilities and charge
* Implement Charge and more abilities
* Add i18n support and Beedrill fury cutter
* Fix merge conflict in taunt
* More English strings removed
* Implemented barrier-breaking moves
* removed (P) from move names
* refactored to support defog
* Implements Burn Up & Double Shock
* Removed code irrelevant to current PR
* i18n for moves
* Remove extra comma from merge
* Fixed some missing moves description
* Infer move i18n keys
---------
Co-authored-by: Samuel H <flashfireex@gmail.com>
* Implements present, adds an override in the dmg calc to make 0 power moves do 0 dmg
* present doesn't make contact
* removes console log
* only === 0
* whirlwind should hit pokemon charging fly
* Thunder should hit flying
* magnitude and fissure should hit dig
* Add battle tag for underwater (dive), allow surf/whirlpool to hit diving
* reorder underwater in enums to match battler-tags order
* hurricane and thousand arrows should hit fly
* Added a new BattlerTagType and support for Laser Focus
BattlerTagType.ALWAYS_CRIT
* Updated battler-tags to support ALWAYS_CRIT
* Added ALWAYS_CRIT = "ALWAYS_CRIT", for the updated battler-tag-type
* Updated the crit formula to include the new critAlways
* Updated crit logic to include critAlways, fixed indents
* Updated ForceSwitchOutAttr
Should fix issue #83
* Removed the additional indents
* Updated the import and fixed the ForceSwitchOutAttr coding errors
* Removed the rest of the indents
* Updated formatting
Rapid Spin now removes the tags for trapping moves and seeds rather than having them lapse. Re-added the (P) to the move since clearing arena hazards hasn't been implemented yet.
Changed Counterdamage attribute to include a multiplier for metal burst and comeuppance. Changed logic for Comeuppance that caused it to always fail, no matter if a physical or special move hit it. Implemented Metal Burst.