From ba4b63a7e671b02ee2bbfb387e535f27b7c8eb0a Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Wed, 21 Aug 2019 15:03:17 -0400 Subject: [PATCH 01/42] Update pokedex.js --- data/mods/crossoverchaos/pokedex.js | 82 ++++++++++++++++++++++------- 1 file changed, 64 insertions(+), 18 deletions(-) diff --git a/data/mods/crossoverchaos/pokedex.js b/data/mods/crossoverchaos/pokedex.js index b327e9a5bc..1cc84abef2 100644 --- a/data/mods/crossoverchaos/pokedex.js +++ b/data/mods/crossoverchaos/pokedex.js @@ -841,7 +841,7 @@ theknight: { gender: "N", baseStats: {hp: 60, atk: 115, def: 95, spa: 115, spd: 95, spe: 120}, abilities: {0: "Shade Soul"}, - weightkg: 0.4, + weightkg: 4, otherFormes: ["theknightshade"], }, theknightshade: { @@ -863,7 +863,7 @@ falseknight: { gender: "M", baseStats: {hp: 50, atk: 150, def: 140, spa: 50, spd: 90, spe: 80}, abilities: {0: "Stolen Armour"}, - weightkg: 20, + weightkg: 200, otherFormes: ["falseknightunarmored"], }, falseknightunarmored: { @@ -876,8 +876,8 @@ falseknightunarmored: { gender: "M", baseStats: {hp: 50, atk: 75, def: 70, spa: 25, spd: 45, spe: 40}, abilities: {0: "Stolen Armour"}, - heightm: 0.1, - weightkg: 0.5, + heightm: 1, + weightkg: 5, }, sans: { num: 6000039, @@ -1767,8 +1767,8 @@ steve: { gender: "M", baseStats: {hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95}, abilities: {0: "Battle Armor", 1: "Hunger", H: "Miner"}, - heightm: 1.8, - weightkg: 55, + heightm: 1.85, + weightkg: 80, }, dimentio: { num: 6000101, @@ -1777,7 +1777,7 @@ dimentio: { gender: "M", baseStats: {hp: 80, atk: 64, def: 64, spa: 144, spd: 112, spe: 96}, abilities: {0: "Dimensional Mastery", H: "Levitate"}, - heightm: 1.5, + heightm: 1.7, weightkg: 55, }, dimentiosuper: { @@ -1810,8 +1810,8 @@ archer: { gender: "M", baseStats: {hp: 80, atk: 100, def: 80, spa: 50, spd: 80, spe: 90}, abilities: {0: "Justified", 1: "Protean", H: "Trace"}, - heightm: 1.8, - weightkg: 55, + heightm: 1.7, + weightkg: 60, }, magus: { num: 6000104, @@ -1821,7 +1821,7 @@ magus: { baseStats: {hp: 110, atk: 96, def: 90, spa: 140, spd: 120, spe: 110}, abilities: {0: "Dark Aura", H: "Barrier Change"}, heightm: 1.8, - weightkg: 55, + weightkg: 70, }, silver: { num: 6000105, @@ -1889,8 +1889,8 @@ knuckles: { gender: "M", baseStats: {hp: 85, atk: 135, def: 105, spa: 70, spd: 85, spe: 110}, abilities: {0: "Iron Fist", H: "Scrappy"}, - heightm: 1, - weightkg: 35, + heightm: 1.1, + weightkg: 40, }, hrh: { num: 6000108, @@ -1939,8 +1939,8 @@ sectonia: { gender: "F", baseStats: {hp: 80, atk: 125, def: 75, spa: 115, spd: 85, spe: 120}, abilities: {0: "Queenly Majesty", 1: "Pressure", H: "Levitate"}, - heightm: 2, - weightkg: 69, + heightm: 1, + weightkg: 20, }, sectoniadreamstalk: { num: 6000112, @@ -1968,7 +1968,7 @@ sectoniasoul: { heightm: 2700, weightkg: 999.9, }, -sectoniasoul: { +sectoniasoulunrooted: { num: 6000112, species: "Sectonia-Soul-Unrooted", baseSpecies: "Sectonia", @@ -1985,9 +1985,10 @@ creeper: { num: 6000113, species: "Creeper", /* Minecraft */ types: ["Grass"], + gender: "N", baseStats: {hp: 95, atk: 120, def: 50, spa: 55, spd: 50, spe: 50}, abilities: {0: "Supercharge"}, - heightm: 1.8, + heightm: 1.625, weightkg: 55, }, creepercharged: { @@ -1997,15 +1998,17 @@ creepercharged: { forme: "Charged", formeLetter: "C", types: ["Grass"], + gender: "N", baseStats: {hp: 95, atk: 180, def: 50, spa: 55, spd: 50, spe: 50}, abilities: {0: "Supercharge"}, - heightm: 1.8, + heightm: 1.625, weightkg: 55, }, darkmind: { num: 6000114, species: "Dark Mind", /* Kirby and the Amazing Mirror */ types: ["Rock", "Fire"], + gender: "N", baseStats: {hp: 60, atk: 60, def: 110, spa: 130, spd: 110, spe: 110}, abilities: {0: "Levitate", H: "Emergency Exit"}, heightm: 1.8, @@ -2018,11 +2021,54 @@ darkmindtrue: { forme: "True", formeLetter: "T", types: ["Rock", "Fire"], + gender: "N", baseStats: {hp: 120, atk: 60, def: 100, spa: 140, spd: 100, spe: 80}, abilities: {0: "Levitate", H: "Emergency Exit"}, heightm: 2, weightkg: 50, }, +flandrescarlet: { + num: 6000115, + species: "Flandre Scarlet", /* Touhou */ + types: ["Fire", "Dark"], + gender: "F", + baseStats: {hp: 90, atk: 150, def: 50, spa: 150, spd: 50, spe: 130}, + abilities: {0: "Four of a Kind", H: "Ability to Destroy Anything"}, + heightm: 1.4, + weightkg: 35, +}, +zeromus: { + num: 6000116, + species: "Zeromus", /* Final Fantasy IV / XII */ + types: ["Ghost"], + gender: "M", + baseStats: {hp: 40, atk: 40, def: 40, spa: 100, spd: 40, spe: 40}, + abilities: {0: "Noncorporeal"}, + heightm: 5, + weightkg: 100, + evos: ["truezeromus"] +}, +truezeromus: { + num: 6000117, + species: "True Zeromus", + types: ["Ghost", "Dark"], + gender: "M", + baseStats: {hp: 150, atk: 158, def: 148, spa: 101, spd: 52, spe: 59}, + abilities: {0: "Flash Fire"}, + heightm: 6.5, + weightkg: 500, + prevo: "zeromus" +}, +dharkon: { + num: 6000118, + species: "Dharkon", /* Super Smash Bros. */ + types: ["Dark", "Poison"], + gender: "N", + baseStats: {hp: 97, atk: 142, def: 101, spa: 65, spd: 88, spe: 100}, + abilities: {0: "Bane of Light"}, + heightm: 5, + weightkg: 200, +}, walle: { num: 7000001, species: "WALL-E", /* WALL-E */ @@ -2063,7 +2109,7 @@ oktaviavonseckendorff: { abilities: {0: "Regenerator", H: "Unaware"}, heightm: 10, weightkg: 480, - prevo: ["sayakamiki"] + prevo: "sayakamiki" }, skipper: { num: 7000005, From dd212e3075f629de728132b8f3be9d675d450d0b Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Wed, 21 Aug 2019 15:15:03 -0400 Subject: [PATCH 02/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 28 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 6333418238..63279565c6 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -31,9 +31,9 @@ exports.BattleAbilities = { desc: "This Pokemon's Psychic-type attacks are super-effective against Dark-types and its Fairy-type attacks are super-effective against Poison-types. Psychic-type attacks ignore the Dark-type's immunity.", shortDesc: "User's Psychic- and Fairy-type moves are SE against Dark and Poison, respectively, ignoring immunities if applicable.", onModifyMovePriority: -5, - onModifyMove(move) { + onModifyMove(move, source, target) { if (!move.ignoreImmunity) move.ignoreImmunity = {}; - if (move.ignoreImmunity !== true) { + if (move.ignoreImmunity !== true && target.hasType('Dark')) { move.ignoreImmunity['Psychic'] = true; } }, @@ -283,7 +283,7 @@ exports.BattleAbilities = { return typeMod; }, onEffectiveness(typeMod, target, type, move) { - if (move && move.type === 'Water') return 1; + if (move && move.type === 'Water') return (target.types[0] == type ? 1 : 0); return typeMod; }, /* I don't know how to force a 4x weakness so I'm going to do a pro gamer move */ onSourceModifyAtkPriority: 6, @@ -307,18 +307,28 @@ exports.BattleAbilities = { shortDesc: "Punching moves 1.5x power, sound moves Physical.", onBasePowerPriority: 8, onBasePower(basePower, attacker, defender, move) { - if (move.flags['punch']) { + if (move.flags['sound']) { this.debug('voiceless boost'); return this.chainModify(1.5); } - if {move.flags['sound']) { - this.debug('voiceless category change'); - if (move.category === 'Status') return; + }, + onModifyMove(move) { + if (move.flags['sound'] && move.category !== 'Status') { move.category = 'Physical'; - /* idk how to remove flags from moves since i haven't seen any other ability that does it */ - }, + delete move.flags['sound']; + } }, id: "voiceless", name: "voiceless", }, + "baneoflight": { + desc: "This Pokemon's Dark-type attacks are super-effective against Fairy-types, and its Poison-type attacks are super-effective against Psychic-types.", + shortDesc: "User's Dark- and Poison-type moves are SE against Fairy and Psychic, respectively.", + onSourceEffectiveness(typeMod, target, type, move) { + if (move && ((type === 'Fairy' && move.type === 'Dark') || (type === 'Psychic' && move.type === 'Poison'))) return 1; + return typeMod; + }, + id: "baneoflight", + name: "Bane of Light", + }, }; From 347cecec6e1f3d3e9bb293513dffbd22e6944a04 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Wed, 21 Aug 2019 15:29:02 -0400 Subject: [PATCH 03/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 130 +++++++++++++++++++++++++- 1 file changed, 128 insertions(+), 2 deletions(-) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 63279565c6..f8acf87fe8 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -1,7 +1,7 @@ 'use strict'; exports.BattleAbilities = { "karmicretribution": { - desc: "This Pokemon's damaging moves become multi-hit moves that hit four times. The second hit has its damage quartered. Does not affect moves that have multiple targets or moves that use the target's attacking stats instead of the user's.", + desc: "This Pokemon's damaging moves become multi-hit moves that hit four times. Does not affect moves that have multiple targets or moves that use the target's attacking stats instead of the user's.", shortDesc: "This Pokemon's damaging moves hit four times (not Foul Play).", onPrepareHit(source, target, move) { if (['iceball', 'rollout'].includes(move.id) || move.useTargetOffensive || move.useSourceDefensive) return; @@ -283,7 +283,7 @@ exports.BattleAbilities = { return typeMod; }, onEffectiveness(typeMod, target, type, move) { - if (move && move.type === 'Water') return (target.types[0] == type ? 1 : 0); + if (move && move.type === 'Water') return (target.types[0] === type ? 1 : 0); return typeMod; }, /* I don't know how to force a 4x weakness so I'm going to do a pro gamer move */ onSourceModifyAtkPriority: 6, @@ -331,4 +331,130 @@ exports.BattleAbilities = { id: "baneoflight", name: "Bane of Light", }, + "fourofakind": { + desc: "This Pokemon's damaging moves become multi-hit moves that hit four times. Does not affect moves that have multiple targets or moves that use the target's attacking stats instead of the user's.", + shortDesc: "This Pokemon's damaging moves hit four times, but have x0.25 power and halved secondary chances.", + onModifyMovePriority: -2, + onModifyMove(move) { + if (move.secondaries && move.multihitType === 'parentalbond') { + this.debug('halving secondary chance'); + for (const secondary of move.secondaries) { + if (secondary.chance) secondary.chance /= 2; + } + } + }, + onPrepareHit(source, target, move) { + if (['iceball', 'rollout'].includes(move.id)) return; + if (move.category !== 'Status' && !move.selfdestruct && !move.multihit && !move.flags['charge'] && !move.spreadHit && !move.isZ) { + move.multihit = 4; + move.multihitType = 'parentalbond'; + if (move.secondaries) { + this.debug('halving secondary chance'); + for (const secondary of move.secondaries) { + if (secondary.chance) secondary.chance /= 2; + } + } + } + }, + onBasePowerPriority: 8, + onBasePower(basePower, pokemon, target, move) { + if (move.multihitType === 'parentalbond') return this.chainModify(0.25); + }, + onSourceModifySecondaries(secondaries, target, source, move) { + if (move.multihitType === 'parentalbond' && move.id === 'secretpower' && move.hit < 4) { + // hack to prevent accidentally suppressing King's Rock/Razor Fang + return secondaries.filter(effect => effect.volatileStatus === 'flinch'); + } + }, + id: "fourofakind", + name: "Four of a Kind", + }, + "fourheads": { + desc: "This Pokemon's damaging moves become multi-hit moves that hit four times. Does not affect moves that have multiple targets or moves that use the target's attacking stats instead of the user's.", + shortDesc: "This Pokemon's damaging moves hit four times, but have x0.3 power and halved secondary chances.", + onModifyMovePriority: -2, + onModifyMove(move) { + if (move.secondaries && move.multihitType === 'fourheads') { + this.debug('halving secondary chance'); + for (const secondary of move.secondaries) { + if (secondary.chance) secondary.chance /= 2; + } + } + }, + onPrepareHit(source, target, move) { + if (['iceball', 'rollout'].includes(move.id)) return; + if (move.category !== 'Status' && !move.selfdestruct && !move.multihit && !move.flags['charge'] && !move.spreadHit && !move.isZ) { + move.multihit = 4; + move.multihitType = 'fourheads'; + if (move.secondaries) { + this.debug('halving secondary chance'); + for (const secondary of move.secondaries) { + if (secondary.chance) secondary.chance /= 2; + } + } + } + }, + onBasePowerPriority: 8, + onBasePower(basePower, pokemon, target, move) { + if (move.multihitType === 'fourheads') return this.chainModify(0.3); + }, + onSourceModifySecondaries(secondaries, target, source, move) { + if (move.multihitType === 'fourheads' && move.id === 'secretpower' && move.hit < 4) { + // hack to prevent accidentally suppressing King's Rock/Razor Fang + return secondaries.filter(effect => effect.volatileStatus === 'flinch'); + } + }, + id: "fourheads", + name: "Four Heads", + }, + "mummy": { + desc: "Pokemon making contact with this Pokemon have their Ability changed to Mummy. Does not affect the Battle Bond, Comatose, Disguise, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, and Zen Mode Abilities.", + shortDesc: "Pokemon making contact with this Pokemon have their Ability changed to Mummy.", + id: "mummy", + name: "Mummy", + onAfterDamage(damage, target, source, move) { + if (source && source !== target && move && move.flags['contact'] && source.ability !== 'mummy') { + let oldAbility = source.setAbility('mummy', target); + if (oldAbility) { + this.add('-activate', target, 'ability: Mummy', this.getAbility(oldAbility).name, '[of] ' + source); + } + } + }, + onBasePower(basePower, pokemon, target, move) { + if (move.multihitType === 'parentalbond' && move.hit > 1) return this.chainModify(0.25); + if (move.multihitType === 'fourheads' && move.hit > 1) return this.chainModify(0.3); + }, + rating: 2.5, + num: 152, + }, + "abilitytodestroyanything": { + shortDesc: "Sniper + Sheer Force + Super Luck + This Pokemon's moves that would otherwise lack recoil now deal 25% of damage dealt back to the user.", + onModifyMove(move, pokemon) { + if (move.secondaries) { + delete move.secondaries; + // Technically not a secondary effect, but it is negated + if (move.id === 'clangoroussoulblaze') delete move.selfBoost; + // Actual negation of `AfterMoveSecondary` effects implemented in scripts.js + move.hasSheerForce = true; + } + if (!move.recoil){ + move.recoil = [1, 4]; + } + }, + onBasePowerPriority: 8, + onBasePower(basePower, pokemon, target, move) { + if (move.hasSheerForce) return this.chainModify([0x14CD, 0x1000]); + }, + onModifyDamage(damage, source, target, move) { + if (target.getMoveHitData(move).crit) { + this.debug('Sniper boost'); + return this.chainModify(1.5); + } + }, + onModifyCritRatio(critRatio) { + return critRatio + 1; + }, + id: "abilitytodestroyanything", + name: "Ability to Destroy Anything", + }, }; From 2b2181a6e734f1a4d6cfcd940920a3fc87dbe97e Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Wed, 21 Aug 2019 15:30:21 -0400 Subject: [PATCH 04/42] Update items.js --- data/mods/crossoverchaos/items.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/data/mods/crossoverchaos/items.js b/data/mods/crossoverchaos/items.js index 80c970be02..56bd3d3f10 100644 --- a/data/mods/crossoverchaos/items.js +++ b/data/mods/crossoverchaos/items.js @@ -31,5 +31,23 @@ exports.BattleItems = { zMoveUser: ["SiIvaGunner"], desc: "If held by SiIvaGunner with Snow Halation, he can use Stone Halation.", }, - + "lifeorb": { + id: "lifeorb", + name: "Life Orb", + spritenum: 249, + fling: { + basePower: 30, + }, + onModifyDamage(damage, source, target, move) { + return this.chainModify([0x14CC, 0x1000]); + }, + onAfterMoveSecondarySelf(source, target, move) { + if (source && source !== target && move && move.category !== 'Status' && !(source.hasAbility('abilitytodestroyanything') && move.hasSheerForce)) { + this.damage(source.maxhp / 10, source, source, this.getItem('lifeorb')); + } + }, + num: 270, + gen: 4, + desc: "Holder's attacks do 1.3x damage, and it loses 1/10 its max HP after the attack.", + }, }; From b13f546219a122826d5b96a6db63509aa95b551e Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Wed, 21 Aug 2019 15:32:43 -0400 Subject: [PATCH 05/42] Update scripts.js --- data/mods/crossoverchaos/scripts.js | 192 +++++++++++++++++++++++----- 1 file changed, 162 insertions(+), 30 deletions(-) diff --git a/data/mods/crossoverchaos/scripts.js b/data/mods/crossoverchaos/scripts.js index 2a1aa79b56..6b2c8743eb 100644 --- a/data/mods/crossoverchaos/scripts.js +++ b/data/mods/crossoverchaos/scripts.js @@ -2,38 +2,170 @@ exports.BattleScripts = { + useMoveInner(moveOrMoveName, pokemon, target, sourceEffect, zMove) { + if (!sourceEffect && this.effect.id) sourceEffect = this.effect; + if (sourceEffect && ['instruct', 'custapberry'].includes(sourceEffect.id)) sourceEffect = null; + + let move = this.getActiveMove(moveOrMoveName); + if (move.id === 'weatherball' && zMove) { + // Z-Weather Ball only changes types if it's used directly, + // not if it's called by Z-Sleep Talk or something. + this.singleEvent('ModifyMove', move, null, pokemon, target, move, move); + if (move.type !== 'Normal') sourceEffect = move; + } + if (zMove || (move.category !== 'Status' && sourceEffect && sourceEffect.isZ)) { + move = this.getActiveZMove(move, pokemon); + } + + if (this.activeMove) { + move.priority = this.activeMove.priority; + if (!move.hasBounced) move.pranksterBoosted = this.activeMove.pranksterBoosted; + } + let baseTarget = move.target; + if (target === undefined) target = this.resolveTarget(pokemon, move); + if (move.target === 'self' || move.target === 'allies') { + target = pokemon; + } + if (sourceEffect) { + move.sourceEffect = sourceEffect.id; + move.ignoreAbility = false; + } + let moveResult = false; + + this.setActiveMove(move, pokemon, target); + + this.singleEvent('ModifyMove', move, null, pokemon, target, move, move); + if (baseTarget !== move.target) { + // Target changed in ModifyMove, so we must adjust it here + // Adjust before the next event so the correct target is passed to the + // event + target = this.resolveTarget(pokemon, move); + } + move = this.runEvent('ModifyMove', pokemon, target, move, move); + if (baseTarget !== move.target) { + // Adjust again + target = this.resolveTarget(pokemon, move); + } + if (!move || pokemon.fainted) { + return false; + } + + let attrs = ''; + + let movename = move.name; + if (move.id === 'hiddenpower') movename = 'Hidden Power'; + if (sourceEffect) attrs += '|[from]' + this.getEffect(sourceEffect); + if (zMove && move.isZ === true) { + attrs = '|[anim]' + movename + attrs; + movename = 'Z-' + movename; + } + this.addMove('move', pokemon, movename, target + attrs); + + if (zMove) this.runZPower(move, pokemon); + + if (!target) { + this.attrLastMove('[notarget]'); + this.add(this.gen >= 5 ? '-fail' : '-notarget', pokemon); + return false; + } + + const {targets, pressureTargets} = pokemon.getMoveTargets(move, target); + + if (!sourceEffect || sourceEffect.id === 'pursuit') { + let extraPP = 0; + for (const source of pressureTargets) { + let ppDrop = this.runEvent('DeductPP', source, pokemon, move); + if (ppDrop !== true) { + extraPP += ppDrop || 0; + } + } + if (extraPP > 0) { + pokemon.deductPP(move, extraPP); + } + } + + if (!this.singleEvent('TryMove', move, null, pokemon, target, move) || + !this.runEvent('TryMove', pokemon, target, move)) { + move.mindBlownRecoil = false; + return false; + } + + this.singleEvent('UseMoveMessage', move, null, pokemon, target, move); + + if (move.ignoreImmunity === undefined) { + move.ignoreImmunity = (move.category === 'Status'); + } + + if (this.gen !== 4 && move.selfdestruct === 'always') { + this.faint(pokemon, pokemon, move); + } + + /** @type {number | false | undefined | ''} */ + let damage = false; + if (move.target === 'all' || move.target === 'foeSide' || move.target === 'allySide' || move.target === 'allyTeam') { + damage = this.tryMoveHit(target, pokemon, move); + if (damage === this.NOT_FAIL) pokemon.moveThisTurnResult = null; + if (damage || damage === 0 || damage === undefined) moveResult = true; + } else { + if (!targets.length) { + this.attrLastMove('[notarget]'); + this.add(this.gen >= 5 ? '-fail' : '-notarget', pokemon); + return false; + } + if (this.gen === 4 && move.selfdestruct === 'always') { + this.faint(pokemon, pokemon, move); + } + moveResult = this.trySpreadMoveHit(targets, pokemon, move); + } + if (move.selfBoost && moveResult) this.moveHit(pokemon, pokemon, move, move.selfBoost, false, true); + if (!pokemon.hp) { + this.faint(pokemon, pokemon, move); + } + + if (!moveResult) { + this.singleEvent('MoveFail', move, null, target, pokemon, move); + return false; + } + + if (!move.negateSecondary && !(move.hasSheerForce && pokemon.hasAbility(['sheerforce', 'abilitytodestroyanything']))) { + this.singleEvent('AfterMoveSecondarySelf', move, null, pokemon, target, move); + this.runEvent('AfterMoveSecondarySelf', pokemon, target, move); + } + + return true; + }, pokemon: { - getHealth = () => { - if (!this.hp) return {side: this.side.id, secret: '0 fnt', shared: '0 fnt'}; - let secret = `${this.hp}/${this.maxhp}`; - let shared; - const ratio = ((!!('tippedarrowpsychic' in this.volatiles) ? 1 : this.hp) / this.maxhp); - if (this.battle.reportExactHP) { - shared = secret; - } else if (this.battle.reportPercentages) { - // HP Percentage Mod mechanics - let percentage = Math.ceil(ratio * 100); - if ((percentage === 100) && (ratio < 1.0)) { - percentage = 99; - } - shared = `${percentage}/100`; - } else { - // In-game accurate pixel health mechanics - const pixels = Math.floor(ratio * 48) || 1; - shared = `${pixels}/48`; - if ((pixels === 9) && (ratio > 0.2)) { - shared += 'y'; // force yellow HP bar - } else if ((pixels === 24) && (ratio > 0.5)) { - shared += 'g'; // force green HP bar - } - } - if (this.status) { - secret += ` ${this.status}`; - shared += ` ${this.status}`; - } - return {side: this.side.id, secret, shared}; - }; +// getHealth = () => { +// if (!this.hp) return {side: this.side.id, secret: '0 fnt', shared: '0 fnt'}; +// let secret = `${this.hp}/${this.maxhp}`; +// let shared; +// const ratio = ((!!('tippedarrowpsychic' in this.volatiles) ? 1 : this.hp) / this.maxhp); +// if (this.battle.reportExactHP) { +// shared = secret; +// } else if (this.battle.reportPercentages) { +// // HP Percentage Mod mechanics +// let percentage = Math.ceil(ratio * 100); +// if ((percentage === 100) && (ratio < 1.0)) { +// percentage = 99; +// } +// shared = `${percentage}/100`; +// } else { +// // In-game accurate pixel health mechanics +// const pixels = Math.floor(ratio * 48) || 1; +// shared = `${pixels}/48`; +// if ((pixels === 9) && (ratio > 0.2)) { +// shared += 'y'; // force yellow HP bar +// } else if ((pixels === 24) && (ratio > 0.5)) { +// shared += 'g'; // force green HP bar +// } +// } +// if (this.status) { +// secret += ` ${this.status}`; +// shared += ` ${this.status}`; +// } +// return {side: this.side.id, secret, shared}; +// }; isGrounded(negateImmunity: boolean = false) { if ('gravity' in this.battle.field.pseudoWeather) return true; From b0a8cc7900429cec1ffa52be1288db1d25e99ebe Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Wed, 21 Aug 2019 15:37:20 -0400 Subject: [PATCH 06/42] Update items.js --- data/mods/crossoverchaos/items.js | 57 ++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 19 deletions(-) diff --git a/data/mods/crossoverchaos/items.js b/data/mods/crossoverchaos/items.js index 56bd3d3f10..64e3c54114 100644 --- a/data/mods/crossoverchaos/items.js +++ b/data/mods/crossoverchaos/items.js @@ -31,23 +31,42 @@ exports.BattleItems = { zMoveUser: ["SiIvaGunner"], desc: "If held by SiIvaGunner with Snow Halation, he can use Stone Halation.", }, - "lifeorb": { - id: "lifeorb", - name: "Life Orb", - spritenum: 249, - fling: { - basePower: 30, - }, - onModifyDamage(damage, source, target, move) { - return this.chainModify([0x14CC, 0x1000]); - }, - onAfterMoveSecondarySelf(source, target, move) { - if (source && source !== target && move && move.category !== 'Status' && !(source.hasAbility('abilitytodestroyanything') && move.hasSheerForce)) { - this.damage(source.maxhp / 10, source, source, this.getItem('lifeorb')); - } - }, - num: 270, - gen: 4, - desc: "Holder's attacks do 1.3x damage, and it loses 1/10 its max HP after the attack.", - }, + "chaosemeralds": { + id: "chaosemeralds", + name: "Chaos Emeralds", + megaStone: "Sonic-Super", + megaEvolves: "Sonic", + onTakeItem(item, source) { + if (item.megaEvolves === source.baseTemplate.baseSpecies) return false; + return true; + }, + desc: "If held by Sonic, this item allows him to become Super Sonic in battle." + }, + "zeromiumz": { + id: "zeromiumz", + name: "Zeromium Z", + onTakeItem: false, + zMove: "Big Bang", + zMoveFrom: "Thunder", + zMoveUser: ["True Zeromus"], + desc: "If held by True Zeromus with Thunder, he can use Big Bang.", + }, + "galeemiumz": { + id: "galeemiumz", + name: "Galeemium Z", + onTakeItem: false, + zMove: "Spear of Light", + zMoveFrom: "Angelic Flare", + zMoveUser: ["Galeem"], + desc: "If held by Galeem with Angelic Flare, it can use Spear of Light.", + }, + "dharkoniumz": { + id: "dharkoniumz", + name: "Dharkonium Z", + onTakeItem: false, + zMove: "Hammer of Darkness", + zMoveFrom: "Demonic Rend", + zMoveUser: ["Dharkon"], + desc: "If held by Dharkon with Demonic Rend, it can use Hammer of Darkness.", + }, }; From d29e7341ff15e21247e0fedacd04fe100b08e1b0 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Wed, 21 Aug 2019 15:49:02 -0400 Subject: [PATCH 07/42] Update moves.js --- data/mods/crossoverchaos/moves.js | 73 +++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 3 deletions(-) diff --git a/data/mods/crossoverchaos/moves.js b/data/mods/crossoverchaos/moves.js index ebc9c24dcf..60d61aa198 100644 --- a/data/mods/crossoverchaos/moves.js +++ b/data/mods/crossoverchaos/moves.js @@ -454,7 +454,7 @@ let BattleMovedex = { pp: 5, priority: 0, flags: {contact: 1, protect: 1, mirror: 1}, - self: { + selfBoost: { boosts: { def: -1, spe: -1, @@ -720,8 +720,12 @@ let BattleMovedex = { if (type === 'Ground') return false; }, onResidualOrder: 15, + onResidual(pokemon) { + if (!pokemon.hp) return; + pokemon.removeVolatile('cycloneslash'); + }, onEnd(target) { - this.add('-end', target, 'Magnet Rise'); + this.add('-end', target, 'Cyclone Slash'); }, }, secondary: null, @@ -730,6 +734,69 @@ let BattleMovedex = { zMovePower: 140, contestType: "Cool", }, + "spearoflight": { + accuracy: true, + basePower: 150, + category: "Special", + desc: "This move is always a critical hit unless the target is under the effect of Lucky Chant or has the Battle Armor or Shell Armor Abilities.", + shortDesc: "Always results in a critical hit.", + id: "spearoflight", + name: "Spear of Light", + pp: 1, + priority: 0, + flags: {}, + isZ: "galeemiumz", + willCrit: true, + secondary: null, + target: "normal", + type: "Fairy", + contestType: "Beautiful", + }, + "demonicrend": { + accuracy: 100, + basePower: 110, + category: "Physical", + desc: "Has a 40% chance to lower each target's Speed by 1 stage.", + shortDesc: "40% chance to lower each target's Speed by 1.", + id: "demonicrend", + isViable: true, + name: "Demonic Rend", + pp: 5, + priority: 0, + flags: {protect: 1, mirror: 1, contact: 1}, + secondary: { + chance: 40, + boosts: { + spe: -1, + }, + }, + target: "allAdjacentFoes", + type: "Dark", + zMovePower: 185, + contestType: "Tough", + }, + "hammerofdarkness": { + accuracy: true, + basePower: 195, + category: "Special", + desc: "Has a 100% chance to lower the target's Speed by 1 stage.", + shortDesc: "100% chance to lower the target's Speed by 1.", + id: "hammerofdarkness", + name: "Hammer of Darkness", + pp: 1, + priority: 0, + flags: {contact: 1}, + isZ: "dharkoniumz", + secondary: { + chance: 100, + boosts: { + spe: -1, + }, + }, + target: "normal", + type: "Dark", + contestType: "Tough", + }, "suicideride": { num: 50001, accuracy: 100, @@ -793,7 +860,7 @@ let BattleMovedex = { zMovePower: 190, contestType: "Beautiful", }, - "meettheflinstones": { + "meettheflintstones": { num: 50004, accuracy: 100, basePower: 95, From caf876a1dbd7c1ec5cd0149118d4c260cf6818d8 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Wed, 21 Aug 2019 15:49:45 -0400 Subject: [PATCH 08/42] Update moves.js --- data/mods/crossoverchaos/moves.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/data/mods/crossoverchaos/moves.js b/data/mods/crossoverchaos/moves.js index 60d61aa198..901271d584 100644 --- a/data/mods/crossoverchaos/moves.js +++ b/data/mods/crossoverchaos/moves.js @@ -735,6 +735,7 @@ let BattleMovedex = { contestType: "Cool", }, "spearoflight": { + num: 40027, accuracy: true, basePower: 150, category: "Special", @@ -753,6 +754,7 @@ let BattleMovedex = { contestType: "Beautiful", }, "demonicrend": { + num: 40028, accuracy: 100, basePower: 110, category: "Physical", @@ -776,9 +778,10 @@ let BattleMovedex = { contestType: "Tough", }, "hammerofdarkness": { + num: 40029, accuracy: true, basePower: 195, - category: "Special", + category: "Physical", desc: "Has a 100% chance to lower the target's Speed by 1 stage.", shortDesc: "100% chance to lower the target's Speed by 1.", id: "hammerofdarkness", From 9d8a297ad0eb632825917fc51f686dfb1442580d Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Thu, 22 Aug 2019 12:50:33 -0400 Subject: [PATCH 09/42] Update moves.js --- data/mods/crossoverchaos/moves.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/mods/crossoverchaos/moves.js b/data/mods/crossoverchaos/moves.js index 901271d584..197a0f0a0f 100644 --- a/data/mods/crossoverchaos/moves.js +++ b/data/mods/crossoverchaos/moves.js @@ -665,7 +665,7 @@ let BattleMovedex = { name: "Dedede Hammer Throw", pp: 15, priority: 0, - flags: {contact: 1, protect: 1, mirror: 1}, + flags: {protect: 1, mirror: 1}, secondary: { chance: 10, status: 'brn', @@ -688,7 +688,7 @@ let BattleMovedex = { name: "Battle Rifle", pp: 10, priority: 0, - flags: {protect: 1, mirror: 1}, + flags: {bullet: 1, protect: 1, mirror: 1}, multihit: 3, secondary: null, target: "normal", From d2afb3b9521698e93efdc23b1bb8e9a7299fc177 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Thu, 22 Aug 2019 13:04:50 -0400 Subject: [PATCH 10/42] Update moves.js --- data/mods/crossoverchaos/moves.js | 43 ++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/data/mods/crossoverchaos/moves.js b/data/mods/crossoverchaos/moves.js index 197a0f0a0f..2d58f7d78e 100644 --- a/data/mods/crossoverchaos/moves.js +++ b/data/mods/crossoverchaos/moves.js @@ -74,12 +74,20 @@ let BattleMovedex = { basePower: 80, category: "Special", desc: "The target's Ability is rendered ineffective as long as it remains active. If the target uses Baton Pass, the replacement will remain under this effect. If the target's Ability is Battle Bond, Comatose, Disguise, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, or Zen Mode, this effect does not happen, and receiving the effect through Baton Pass ends the effect immediately.", - shortDesc: "Nullifies the target's Ability.", + shortDesc: "Nullifies the target's Ability. Damages user for 25% of HP if not Shulk or Chibiterasu.", id: "monadopurge", name: "Monado Purge", pp: 15, priority: 0, flags: {protect: 1, mirror: 1}, + mindBlownRecoil: true, + onAfterMove(pokemon, target, move) { + if (['Shulk', 'Chibiterasu'].includes(pokemon.template.species)){ + move.mindBlownRecoil = false; + } else if (move.mindBlownRecoil && !move.multihit) { + this.damage(Math.round(pokemon.maxhp / 4), pokemon, pokemon, this.getEffect('Monado Purge'), true); + } + }, volatileStatus: 'gastroacid', secondary: null, target: "normal", @@ -103,6 +111,18 @@ let BattleMovedex = { pp: 5, priority: 0, flags: {protect: 1, mirror: 1}, + mindBlownRecoil: true, + onHit(target) { + target.clearBoosts(); + this.add('-clearboost', target); + }, + onAfterMove(pokemon, target, move) { + if (['Shulk', 'Chibiterasu'].includes(pokemon.template.species)){ + move.mindBlownRecoil = false; + } else if (move.mindBlownRecoil && !move.multihit) { + this.damage(Math.round(pokemon.maxhp / 4), pokemon, pokemon, this.getEffect('Monado Eater'), true); + } + }, secondary: null, target: "normal", type: "Fighting", @@ -800,6 +820,27 @@ let BattleMovedex = { type: "Dark", contestType: "Tough", }, + "finaldeathbloom": { + num: 40030, + accuracy: 90, + basePower: 140, + category: "Special", + desc: "If the target lost HP, the user takes recoil damage equal to 1/2 the HP lost by the target, rounded half up, but not less than 1 HP.", + shortDesc: "Has 1/2 recoil.", + id: "finaldeathbloom", + isViable: true, + name: "Final Death Bloom", + pp: 5, + priority: 0, + flags: {protect: 1, mirror: 1}, + isUnreleased: true, + recoil: [1, 2], + secondary: null, + target: "normal", + type: "Grass", + zMovePower: 200, + contestType: "Beautiful", + }, "suicideride": { num: 50001, accuracy: 100, From 35ef3f4fd8a126cdc93c12c9fdcfadcb9aa93690 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Fri, 23 Aug 2019 14:43:12 -0400 Subject: [PATCH 11/42] Update moves.js --- data/mods/crossoverchaos/moves.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/crossoverchaos/moves.js b/data/mods/crossoverchaos/moves.js index 2d58f7d78e..af7f493d36 100644 --- a/data/mods/crossoverchaos/moves.js +++ b/data/mods/crossoverchaos/moves.js @@ -451,7 +451,7 @@ let BattleMovedex = { priority: 0, flags: {snatch: 1, heal: 1}, onHit(pokemon) { - if (['', 'slp', 'frz'].includes(pokemon.status)) return false; + if (['', 'slp', 'frz'].includes(pokemon.status) && pokemon.hp >= pokemon.maxhp) return false; pokemon.cureStatus(); }, heal: [1, 2], From caca65343d96d3ea7aa141087ab698ab87f0e401 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Fri, 23 Aug 2019 14:51:34 -0400 Subject: [PATCH 12/42] Update moves.js --- data/mods/crossoverchaos/moves.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/data/mods/crossoverchaos/moves.js b/data/mods/crossoverchaos/moves.js index af7f493d36..ae214a246a 100644 --- a/data/mods/crossoverchaos/moves.js +++ b/data/mods/crossoverchaos/moves.js @@ -841,6 +841,25 @@ let BattleMovedex = { zMovePower: 200, contestType: "Beautiful", }, + "katamaridash": { + num: 40031, + accuracy: 100, + basePower: 80, + category: "Physical", + desc: "No additional effect.", + shortDesc: "Nearly always goes first.", + id: "katamaridash", + isViable: true, + name: "Katamari Dash", + pp: 5, + priority: 2, + flags: {bullet: 1, contact: 1, protect: 1, mirror: 1}, + secondary: null, + target: "normal", + type: "Psychic", + zMovePower: 160, + contestType: "Cool", + }, "suicideride": { num: 50001, accuracy: 100, From b83eeef68988672ec01988272846008b64052c22 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Fri, 23 Aug 2019 16:15:05 -0400 Subject: [PATCH 13/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index f8acf87fe8..bfd02a26a8 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -169,7 +169,7 @@ exports.BattleAbilities = { name: "Crystal Barrier", }, "powershield": { - shortDesc: "This Pokemon's moves of over 90 base power have 90 base power instead.", + shortDesc: "Incoming moves of over 90 base power have 90 base power instead.", onBasePowerPriority: 8, onSourceBasePower(basePower, attacker, defender, move) { if (basePower > 90) { From 51344e98682fe1546a457b6fbdcdc5149f8047b3 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Fri, 23 Aug 2019 16:21:36 -0400 Subject: [PATCH 14/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index bfd02a26a8..e4d3ef9ded 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -457,4 +457,23 @@ exports.BattleAbilities = { id: "abilitytodestroyanything", name: "Ability to Destroy Anything", }, + "miner": { + shortDesc: "This Pokemon's attacking stat is multiplied by 1.5 while using a Rock-type attack.", + onModifyAtkPriority: 5, + onModifyAtk(atk, attacker, defender, move) { + if (move.type === 'Rock') { + this.debug('Miner boost (except not really because x1.5 multiplier)'); + return this.chainModify(1.5); + } + }, + onModifySpAPriority: 5, + onModifySpA(atk, attacker, defender, move) { + if (move.type === 'Rock') { + this.debug('Miner boost (except not really because x1.5 multiplier)'); + return this.chainModify(1.5); + } + }, + id: "miner", + name: "Miner", + }, }; From a3251cb8f93750093cfa0f7a749ab7e7ae931368 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Fri, 23 Aug 2019 16:24:40 -0400 Subject: [PATCH 15/42] Update moves.js --- data/mods/crossoverchaos/moves.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/data/mods/crossoverchaos/moves.js b/data/mods/crossoverchaos/moves.js index ae214a246a..24560c4feb 100644 --- a/data/mods/crossoverchaos/moves.js +++ b/data/mods/crossoverchaos/moves.js @@ -858,7 +858,27 @@ let BattleMovedex = { target: "normal", type: "Psychic", zMovePower: 160, - contestType: "Cool", + contestType: "Clever", + }, + "creeperblast": { + num: 40032, + accuracy: 100, + basePower: 500, + category: "Physical", + desc: "The user faints after using this move, even if this move fails for having no target. This move is prevented from executing if any active Pokemon has the Damp Ability.", + shortDesc: "Hits adjacent Pokemon. The user faints.", + id: "creeperblast", + isViable: true, + name: "Creeper Blast", + pp: 5, + priority: 0, + flags: {protect: 1, mirror: 1}, + selfdestruct: "always", + secondary: null, + target: "allAdjacent", + type: "Grass", + zMovePower: 200, + contestType: "Clever", }, "suicideride": { num: 50001, From 41da2f70cc454887214aaf131b0ef8ed331aae3c Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Fri, 23 Aug 2019 16:25:58 -0400 Subject: [PATCH 16/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 113 ++++++++++++++++---------- 1 file changed, 68 insertions(+), 45 deletions(-) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index e4d3ef9ded..698eb7219d 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -276,51 +276,6 @@ exports.BattleAbilities = { id: "powerofsummer", name: "Power of Summer", }, - "cursed": { - shortDesc: "This Pokemon hits Fairy super-effectively with Dark moves, but is weak to Water and takes an additional 2x damage.", - onSourceEffectiveness(typeMod, target, type, move) { - if (move && ((type === 'Fairy' && move.type === 'Dark'))) return 1; - return typeMod; - }, - onEffectiveness(typeMod, target, type, move) { - if (move && move.type === 'Water') return (target.types[0] === type ? 1 : 0); - return typeMod; - }, /* I don't know how to force a 4x weakness so I'm going to do a pro gamer move */ - onSourceModifyAtkPriority: 6, - onSourceModifyAtk(atk, attacker, defender, move) { - if (move.type === 'Water') { - this.debug('Cursed strengthen'); - return this.chainModify(2); - } - }, - onSourceModifySpAPriority: 5, - onSourceModifySpA(atk, attacker, defender, move) { - if (move.type === 'Water') { - this.debug('Cursed strengthen'); - return this.chainModify(2); - } - }, - id: "cursed", - name: "Cursed", - }, - "voiceless": { - shortDesc: "Punching moves 1.5x power, sound moves Physical.", - onBasePowerPriority: 8, - onBasePower(basePower, attacker, defender, move) { - if (move.flags['sound']) { - this.debug('voiceless boost'); - return this.chainModify(1.5); - } - }, - onModifyMove(move) { - if (move.flags['sound'] && move.category !== 'Status') { - move.category = 'Physical'; - delete move.flags['sound']; - } - }, - id: "voiceless", - name: "voiceless", - }, "baneoflight": { desc: "This Pokemon's Dark-type attacks are super-effective against Fairy-types, and its Poison-type attacks are super-effective against Psychic-types.", shortDesc: "User's Dark- and Poison-type moves are SE against Fairy and Psychic, respectively.", @@ -476,4 +431,72 @@ exports.BattleAbilities = { id: "miner", name: "Miner", }, + + "damp": { + desc: "While this Pokemon is active, Explosion, Mind Blown, Self-Destruct, and the Aftermath Ability are prevented from having an effect.", + shortDesc: "Prevents Explosion/Mind Blown/Self-Destruct/Creeper Blast/Aftermath while this Pokemon is active.", + id: "damp", + onAnyTryMove(target, source, effect) { + if (['explosion', 'mindblown', 'selfdestruct', 'creeperblast'].includes(effect.id)) { + this.attrLastMove('[still]'); + this.add('cant', this.effectData.target, 'ability: Damp', effect, '[of] ' + target); + return false; + } + }, + onAnyDamage(damage, target, source, effect) { + if (effect && effect.id === 'aftermath') { + return false; + } + }, + name: "Damp", + rating: 1, + num: 6, + }, + //Expanded abilities start here. + + "cursed": { + shortDesc: "This Pokemon hits Fairy super-effectively with Dark moves, but is weak to Water and takes an additional 2x damage.", + onSourceEffectiveness(typeMod, target, type, move) { + if (move && ((type === 'Fairy' && move.type === 'Dark'))) return 1; + return typeMod; + }, + onEffectiveness(typeMod, target, type, move) { + if (move && move.type === 'Water') return (target.types[0] === type ? 1 : 0); + return typeMod; + }, /* I don't know how to force a 4x weakness so I'm going to do a pro gamer move */ + onSourceModifyAtkPriority: 6, + onSourceModifyAtk(atk, attacker, defender, move) { + if (move.type === 'Water') { + this.debug('Cursed strengthen'); + return this.chainModify(2); + } + }, + onSourceModifySpAPriority: 5, + onSourceModifySpA(atk, attacker, defender, move) { + if (move.type === 'Water') { + this.debug('Cursed strengthen'); + return this.chainModify(2); + } + }, + id: "cursed", + name: "Cursed", + }, + "voiceless": { + shortDesc: "Punching moves 1.5x power, sound moves Physical.", + onBasePowerPriority: 8, + onBasePower(basePower, attacker, defender, move) { + if (move.flags['sound']) { + this.debug('voiceless boost'); + return this.chainModify(1.5); + } + }, + onModifyMove(move) { + if (move.flags['sound'] && move.category !== 'Status') { + move.category = 'Physical'; + delete move.flags['sound']; + } + }, + id: "voiceless", + name: "voiceless", + }, }; From 6dc850ffbd4ca6986e15bdd2c8ffd6c344abf40e Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Fri, 23 Aug 2019 16:48:38 -0400 Subject: [PATCH 17/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 698eb7219d..5f5d9ab24e 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -431,6 +431,19 @@ exports.BattleAbilities = { id: "miner", name: "Miner", }, + "noncorporeal": { + shortDesc: "This Pokemon can only be damaged by supereffective or Rock-type moves and indirect damage.", + onTryHit(target, source, move) { + if (target === source || move.category === 'Status' || move.type === '???' ||| move.type === 'Rock' || move.id === 'struggle') return; + this.debug('Wonder Guard immunity: ' + move.id); + if (target.runEffectiveness(move) <= 0) { + this.add('-immune', target, '[from] ability: Noncorporeal'); + return null; + } + }, + id: "noncorporeal", + name: "Noncorporeal", + }, "damp": { desc: "While this Pokemon is active, Explosion, Mind Blown, Self-Destruct, and the Aftermath Ability are prevented from having an effect.", From 9c83fb005c08a5bdfe9f1c8cf6eb41ae9e8c38d8 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Fri, 23 Aug 2019 16:57:31 -0400 Subject: [PATCH 18/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 49 ++++++++++++++++----------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 5f5d9ab24e..f85b1b34b0 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -362,26 +362,6 @@ exports.BattleAbilities = { id: "fourheads", name: "Four Heads", }, - "mummy": { - desc: "Pokemon making contact with this Pokemon have their Ability changed to Mummy. Does not affect the Battle Bond, Comatose, Disguise, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, and Zen Mode Abilities.", - shortDesc: "Pokemon making contact with this Pokemon have their Ability changed to Mummy.", - id: "mummy", - name: "Mummy", - onAfterDamage(damage, target, source, move) { - if (source && source !== target && move && move.flags['contact'] && source.ability !== 'mummy') { - let oldAbility = source.setAbility('mummy', target); - if (oldAbility) { - this.add('-activate', target, 'ability: Mummy', this.getAbility(oldAbility).name, '[of] ' + source); - } - } - }, - onBasePower(basePower, pokemon, target, move) { - if (move.multihitType === 'parentalbond' && move.hit > 1) return this.chainModify(0.25); - if (move.multihitType === 'fourheads' && move.hit > 1) return this.chainModify(0.3); - }, - rating: 2.5, - num: 152, - }, "abilitytodestroyanything": { shortDesc: "Sniper + Sheer Force + Super Luck + This Pokemon's moves that would otherwise lack recoil now deal 25% of damage dealt back to the user.", onModifyMove(move, pokemon) { @@ -444,7 +424,36 @@ exports.BattleAbilities = { id: "noncorporeal", name: "Noncorporeal", }, + "kalibersfury": { + shortDesc: "Any attacks with 60 bp or less get a +1 to priority.", + onModifyPriority: function(priority, pokemon, target, move, basePower) { + if (move.category !== 'Status' && move.basePower <= 60) return priority + 1; + }, + id: "kalibersfury", + name: "Kaliber's Fury", + }, + + "mummy": { + desc: "Pokemon making contact with this Pokemon have their Ability changed to Mummy. Does not affect the Battle Bond, Comatose, Disguise, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, and Zen Mode Abilities.", + shortDesc: "Pokemon making contact with this Pokemon have their Ability changed to Mummy.", + id: "mummy", + name: "Mummy", + onAfterDamage(damage, target, source, move) { + if (source && source !== target && move && move.flags['contact'] && source.ability !== 'mummy') { + let oldAbility = source.setAbility('mummy', target); + if (oldAbility) { + this.add('-activate', target, 'ability: Mummy', this.getAbility(oldAbility).name, '[of] ' + source); + } + } + }, + onBasePower(basePower, pokemon, target, move) { + if (move.multihitType === 'parentalbond' && move.hit > 1) return this.chainModify(0.25); + if (move.multihitType === 'fourheads' && move.hit > 1) return this.chainModify(0.3); + }, + rating: 2.5, + num: 152, + }, "damp": { desc: "While this Pokemon is active, Explosion, Mind Blown, Self-Destruct, and the Aftermath Ability are prevented from having an effect.", shortDesc: "Prevents Explosion/Mind Blown/Self-Destruct/Creeper Blast/Aftermath while this Pokemon is active.", From 92b5abf1d30b00468005f752e8f0032c02b5137a Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Sat, 24 Aug 2019 21:41:22 -0400 Subject: [PATCH 19/42] Update pokedex.js --- data/mods/crossoverchaos/pokedex.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/data/mods/crossoverchaos/pokedex.js b/data/mods/crossoverchaos/pokedex.js index 1cc84abef2..8dffcaaed6 100644 --- a/data/mods/crossoverchaos/pokedex.js +++ b/data/mods/crossoverchaos/pokedex.js @@ -458,6 +458,7 @@ stardream: { abilities: {0: "Levitate", H: "Soul-Heart"}, heightm: 20, weightkg: 250, + color: "Gray", otherFormes: ["stardreamaccessark", "stardreamclockworkstar", "stardreamsoulos", "stardreamsoulosaccessark", "stardreamsoulosclockworkstar", "stardreamsoulosheart"], }, stardreamaccessark: { @@ -472,6 +473,7 @@ stardreamaccessark: { abilities: {0: "Levitate", H: "Soul-Heart"}, heightm: 12700000, weightkg: 999.9, + color: "Gray", }, stardreamclockworkstar: { num: 6000015, @@ -485,6 +487,7 @@ stardreamclockworkstar: { abilities: {0: "Levitate", H: "Soul-Heart"}, heightm: 12700000, weightkg: 999.9, + color: "Gray", }, stardreamsoulos: { num: 6000015, @@ -498,6 +501,7 @@ stardreamsoulos: { abilities: {0: "Soul 0 System"}, heightm: 20, weightkg: 250, + color: "Black", }, stardreamsoulosaccessark: { num: 6000015, @@ -511,6 +515,7 @@ stardreamsoulosaccessark: { abilities: {0: "Soul 0 System"}, heightm: 12700000, weightkg: 999.9, + color: "Gray", }, stardreamsoulosclockworkstar: { num: 6000015, @@ -524,6 +529,7 @@ stardreamsoulosclockworkstar: { abilities: {0: "Soul 0 System"}, heightm: 12700000, weightkg: 999.9, + color: "Yellow", }, stardreamsoulosheart: { num: 6000015, @@ -537,6 +543,7 @@ stardreamsoulosheart: { abilities: {0: "Soul 0 System"}, heightm: 0.5, weightkg: 25, + color: "Pink", }, daroach: { num: 6000016, From 93d6476d80db97a4ea80601fc3ecef0ddc38801d Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Sat, 24 Aug 2019 21:54:37 -0400 Subject: [PATCH 20/42] Update moves.js --- data/mods/crossoverchaos/moves.js | 90 +++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/data/mods/crossoverchaos/moves.js b/data/mods/crossoverchaos/moves.js index 24560c4feb..d28733e6a8 100644 --- a/data/mods/crossoverchaos/moves.js +++ b/data/mods/crossoverchaos/moves.js @@ -880,6 +880,96 @@ let BattleMovedex = { zMovePower: 200, contestType: "Clever", }, + "flarecannon": { + num: 40033, + accuracy: 90, + basePower: 100, + category: "Special", + desc: "Has a 20% chance to burn the target.", + shortDesc: "20% chance to burn adjacent Pokemon.", + id: "flarecannon", + isViable: true, + name: "Flare Cannon", + pp: 10, + priority: 0, + flags: {protect: 1, mirror: 1}, + secondary: { + chance: 20, + status: 'brn', + }, + target: "allAdjacent", + type: "Fire", + zMovePower: 180, + contestType: "Tough", + }, + "shocktherapist": { + num: 40034, + accuracy: 90, + basePower: 100, + category: "Special", + desc: "Has a 20% chance to paralyze the target.", + shortDesc: "20% chance to paralyze adjacent Pokemon.", + id: "shocktherapist", + isViable: true, + name: "Shock Therapist", + pp: 10, + priority: 0, + flags: {protect: 1, mirror: 1}, + secondary: { + chance: 20, + status: 'par', + }, + target: "allAdjacent", + type: "Electric", + zMovePower: 180, + contestType: "Cool", + }, + "monsterpump": { + num: 40035, + accuracy: 90, + basePower: 100, + category: "Special", + desc: "Has a 20% chance to lower the target's Attack by 1 stage.", + shortDesc: "20% chance to lower the foe(s) Attack by 1.", + id: "monsterpump", + isViable: true, + name: "Monster Pump", + pp: 10, + priority: 0, + flags: {protect: 1, mirror: 1}, + secondary: { + chance: 20, + boosts: { + atk: -1, + }, + }, + target: "allAdjacent", + type: "Water", + zMovePower: 180, + contestType: "Beautiful", + }, + "comedybomb": { + num: 40036, + accuracy: 90, + basePower: 100, + category: "Special", + desc: "Has a 20% chance to poison the target.", + shortDesc: "20% chance to poison adjacent Pokemon.", + id: "comedybomb", + isViable: true, + name: "Comedy Bomb", + pp: 10, + priority: 0, + flags: {protect: 1, mirror: 1}, + secondary: { + chance: 20, + status: 'psn', + }, + target: "allAdjacent", + type: "Poison", + zMovePower: 180, + contestType: "Clever", + }, "suicideride": { num: 50001, accuracy: 100, From 55a9fca1f5f2c93579f6723197f3b6640ed5fc3d Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Sat, 24 Aug 2019 21:55:15 -0400 Subject: [PATCH 21/42] Update moves.js --- data/mods/crossoverchaos/moves.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/mods/crossoverchaos/moves.js b/data/mods/crossoverchaos/moves.js index d28733e6a8..c61fb3821a 100644 --- a/data/mods/crossoverchaos/moves.js +++ b/data/mods/crossoverchaos/moves.js @@ -897,7 +897,7 @@ let BattleMovedex = { chance: 20, status: 'brn', }, - target: "allAdjacent", + target: "allAdjacentFoes", type: "Fire", zMovePower: 180, contestType: "Tough", @@ -919,7 +919,7 @@ let BattleMovedex = { chance: 20, status: 'par', }, - target: "allAdjacent", + target: "allAdjacentFoes", type: "Electric", zMovePower: 180, contestType: "Cool", @@ -943,7 +943,7 @@ let BattleMovedex = { atk: -1, }, }, - target: "allAdjacent", + target: "allAdjacentFoes", type: "Water", zMovePower: 180, contestType: "Beautiful", @@ -965,7 +965,7 @@ let BattleMovedex = { chance: 20, status: 'psn', }, - target: "allAdjacent", + target: "allAdjacentFoes", type: "Poison", zMovePower: 180, contestType: "Clever", From d0b5395b93a51fe991a6e762d39d15b429c9c6bb Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Sun, 25 Aug 2019 03:55:24 -0400 Subject: [PATCH 22/42] Update learnsets.js --- data/mods/crossoverchaos/learnsets.js | 1 + 1 file changed, 1 insertion(+) diff --git a/data/mods/crossoverchaos/learnsets.js b/data/mods/crossoverchaos/learnsets.js index 47735a02c7..a147d6fe36 100644 --- a/data/mods/crossoverchaos/learnsets.js +++ b/data/mods/crossoverchaos/learnsets.js @@ -5744,6 +5744,7 @@ kyoko: {learnset: { irondefense: ["7L1"], iciclespear: ["7L1"], barrier: ["7L1"], + safeguard: ["7L1"], }}, steve: {learnset: { explosion: ["7L1"], From 67c64d1845fd1da70c512570bc9149637659b1ab Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Sun, 25 Aug 2019 12:46:57 -0400 Subject: [PATCH 23/42] Update pokedex.js --- data/mods/crossoverchaos/pokedex.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/data/mods/crossoverchaos/pokedex.js b/data/mods/crossoverchaos/pokedex.js index 8dffcaaed6..2429f35a9a 100644 --- a/data/mods/crossoverchaos/pokedex.js +++ b/data/mods/crossoverchaos/pokedex.js @@ -1666,8 +1666,8 @@ cirno: { gender: "F", baseStats: {hp: 99, atk: 99, def: 99, spa: 99, spd: 99, spe: 99}, abilities: {0: "Snow Warning", 1: "Levitate", H: "Freeze Atmosphere"}, - heightm: 1.3, - weightkg: 30, + heightm: 1.4, + weightkg: 38, otherFormes: ["cirnotanned"], }, cirnotanned: { @@ -1680,8 +1680,8 @@ cirnotanned: { gender: "F", baseStats: {hp: 99, atk: 99, def: 99, spa: 99, spd: 99, spe: 99}, abilities: {0: "Power of Summer"}, - heightm: 1.3, - weightkg: 30, + heightm: 1.4, + weightkg: 38, }, monokuma: { num: 6000094, @@ -1764,7 +1764,7 @@ kyoko: { gender: "F", baseStats: {hp: 90, atk: 50, def: 60, spa: 60, spd: 60, spe: 50}, abilities: {0: "Crystal Barrier"}, - heightm: 1.8, + heightm: 1.7, weightkg: 55, }, steve: { From 695c671ff759b2fcfe804446ed2826319eb5d2f3 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Sun, 25 Aug 2019 14:14:41 -0400 Subject: [PATCH 24/42] Update pokedex.js --- data/mods/crossoverchaos/pokedex.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/crossoverchaos/pokedex.js b/data/mods/crossoverchaos/pokedex.js index 2429f35a9a..086fea1dad 100644 --- a/data/mods/crossoverchaos/pokedex.js +++ b/data/mods/crossoverchaos/pokedex.js @@ -2430,7 +2430,7 @@ sakinikaido: { majinbuu: { num: 7000025, species: "Majin Buu", /* Dragon Ball */ - types: ["Dark", "Ghost"], + types: ["Fairy", "Fighting"], gender: "M", baseStats: {hp: 160, atk: 105, def: 50, spa: 115, spd: 100, spe: 100}, abilities: {0: "Regenerator", 1: "Magic Bounce", H: "Gluttony"}, From ef34f7a6687e9959b152d2c5ff9ddbeec469efa6 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Mon, 26 Aug 2019 16:06:50 -0400 Subject: [PATCH 25/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index f85b1b34b0..6dfbce8dfb 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -432,7 +432,27 @@ exports.BattleAbilities = { id: "kalibersfury", name: "Kaliber's Fury", }, + "unsteadyhood": { + desc: "If this Pokemon is Hyness, the first hit taken in battle deals halved damage and causes a forme-change into Unhooded Hyness. Confusion damage also breaks the disguise.", + shortDesc: "If this Pokemon is Hyness, the first hit taken in battle deals halved damage and causes a forme-change into Hyness-Unhooded.", + onDamagePriority: 1, + onDamage(damage, target, source, effect) { + if (effect && effect.effectType === 'Move' && target.template.speciesid === 'hyness' && !target.transformed) { + this.add('-activate', target, 'ability: Unsteady Hood'); + this.effectData.busted = true; + return damage / 2; + } + }, + onUpdate(pokemon) { + if (pokemon.template.speciesid === 'hyness' && this.effectData.busted) { + pokemon.formeChange('Hyness-Unhooded', this.effect, true); + } + }, + id: "unsteadyhood", + name: "Unsteady Hood", + }, + //These vanilla abilities are overridden, though mostly just to account for custom elements (For instance, Damp blocking Creeper Blast, etc.) "mummy": { desc: "Pokemon making contact with this Pokemon have their Ability changed to Mummy. Does not affect the Battle Bond, Comatose, Disguise, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, and Zen Mode Abilities.", From 6ed1e05d79ec2f64dac63555638eac5c19ad853e Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Mon, 26 Aug 2019 16:34:42 -0400 Subject: [PATCH 26/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 6dfbce8dfb..6eddfd8f6e 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -451,6 +451,27 @@ exports.BattleAbilities = { id: "unsteadyhood", name: "Unsteady Hood", }, + "moonstruckblossom": { + desc: "This Pokemon's moon-based moves have their power multiplied by 1.5. Moonlight now restores 1.5x more HP. If this Pokemon is a Grass-type, then the weaknesses of said type are negated.", + shortDesc: "x1.5 power to Moon moves; Moonlight heals 1.5x more HP to the user; Weaknesses from the Grass type are negated.", + onBasePowerPriority: 8, + onBasePower(basePower, attacker, defender, move) { + if (['moonblast', 'moongeistbeam', 'menacingmoonrazemaelstrom'].includes(move.id)) { + return this.chainModify(1.5); + } + }, + onSourceTryHeal(damage, target, source, effect) { + this.debug("Heal is occurring: " + target + " <- " + source + " :: " + effect.id); + if (effect.id === 'moonlight') { + return damage * 1.5; + } + }, + onEffectiveness(typeMod, target, type, move) { + if (move && type === 'Grass' && typeMod > 0) return 0; + }, + id: "moonstruckblossom", + name: "Moonstruck Blossom", + }, //These vanilla abilities are overridden, though mostly just to account for custom elements (For instance, Damp blocking Creeper Blast, etc.) From 15fefe8574aa8ec76eed7513185f70f0c6c7f218 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Mon, 26 Aug 2019 16:34:58 -0400 Subject: [PATCH 27/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 6eddfd8f6e..fb4a3af089 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -460,7 +460,7 @@ exports.BattleAbilities = { return this.chainModify(1.5); } }, - onSourceTryHeal(damage, target, source, effect) { + onTryHeal(damage, target, source, effect) { this.debug("Heal is occurring: " + target + " <- " + source + " :: " + effect.id); if (effect.id === 'moonlight') { return damage * 1.5; From af9de13f584083102a9f587cd405c4bfc75e3f20 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Mon, 26 Aug 2019 16:52:58 -0400 Subject: [PATCH 28/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index fb4a3af089..11c88ace48 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -472,6 +472,38 @@ exports.BattleAbilities = { id: "moonstruckblossom", name: "Moonstruck Blossom", }, + "soul0system": { + desc: "This Pokemon is immune to Ghost. If this Pokemon is Star Dream Soul 0S's Clockwork Star forme, a situation that would cause it to faint instead forme-changes it into Star Dream Soul 0S-Heart, restoring back to full HP. This Pokemon's Psychic-type moves become Ghost-type moves and have their power multiplied by 1.2. This effect comes after other effects that change a move's type, but before Electrify's effects.", + shortDesc: "This Pokemon's Psychic-type moves become Ghost type and have 1.2x power. This Pokemon is immune to Ghost. If Star Dream Soul 0S-Clockwork Star, becomes Star Dream Soul 0S-Heart when it would faint and restores to full HP.", + onTryHit(target, source, move) { + if (target !== source && move.type === 'Ghost') { + this.add('-immune', target, '[from] ability: Soul 0 System'); + return null; + } + }, + onDamagePriority: -100, + onDamage(damage, target, source, effect) { + if (damage >= target.hp && target.template.speciesid === 'stardreamsoulosclockworkstar') { + this.damage(target.hp - 1, target, target); + target.formeChange('Star Dream-Soul OS-Heart', this.effect, false, '[msg]'); + this.heal(target.maxhp); + return null; + } + }, + onModifyMovePriority: -1, + onModifyMove(move, pokemon) { + if (move.type === 'Psychic' && !['judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'weatherball'].includes(move.id) && !(move.isZ && move.category !== 'Status')) { + move.type = 'Ghost'; + move.soul0SBoosted = true; + } + }, + onBasePowerPriority: 8, + onBasePower(basePower, pokemon, target, move) { + if (move.soul0SBoosted) return this.chainModify([0x1333, 0x1000]); + }, + id: "soul0system", + name: "Soul 0 System", + }, //These vanilla abilities are overridden, though mostly just to account for custom elements (For instance, Damp blocking Creeper Blast, etc.) From 193e02c38d420eb384db2d2e5ec62e8f8dcc48a9 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Mon, 26 Aug 2019 16:57:22 -0400 Subject: [PATCH 29/42] Update pokedex.js --- data/mods/crossoverchaos/pokedex.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/mods/crossoverchaos/pokedex.js b/data/mods/crossoverchaos/pokedex.js index 086fea1dad..abf42b0ad9 100644 --- a/data/mods/crossoverchaos/pokedex.js +++ b/data/mods/crossoverchaos/pokedex.js @@ -469,7 +469,7 @@ stardreamaccessark: { formeLetter: "A", types: ["Steel", "Psychic"], gender: "N", - baseStats: {hp: 120, atk: 130, def: 140, spa: 130, spd: 110, spe: 70}, + baseStats: {hp: 120, atk: 130, def: 140, spa: 110, spd: 110, spe: 70}, abilities: {0: "Levitate", H: "Soul-Heart"}, heightm: 12700000, weightkg: 999.9, @@ -483,7 +483,7 @@ stardreamclockworkstar: { formeLetter: "C", types: ["Steel", "Psychic"], gender: "N", - baseStats: {hp: 120, atk: 120, def: 120, spa: 160, spd: 110, spe: 90}, + baseStats: {hp: 120, atk: 120, def: 100, spa: 160, spd: 110, spe: 70}, abilities: {0: "Levitate", H: "Soul-Heart"}, heightm: 12700000, weightkg: 999.9, @@ -511,7 +511,7 @@ stardreamsoulosaccessark: { formeLetter: "S", types: ["Steel", "Ghost"], gender: "N", - baseStats: {hp: 120, atk: 160, def: 160, spa: 160, spd: 130, spe: 70}, + baseStats: {hp: 120, atk: 160, def: 160, spa: 140, spd: 130, spe: 70}, abilities: {0: "Soul 0 System"}, heightm: 12700000, weightkg: 999.9, @@ -525,7 +525,7 @@ stardreamsoulosclockworkstar: { formeLetter: "S", types: ["Steel", "Ghost"], gender: "N", - baseStats: {hp: 120, atk: 140, def: 140, spa: 200, spd: 130, spe: 90}, + baseStats: {hp: 120, atk: 140, def: 120, spa: 200, spd: 130, spe: 70}, abilities: {0: "Soul 0 System"}, heightm: 12700000, weightkg: 999.9, From 3baa38da98cd9a9494048a459dd54b8c1dcdd57c Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Mon, 26 Aug 2019 17:04:25 -0400 Subject: [PATCH 30/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 11c88ace48..2e5d032589 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -504,6 +504,36 @@ exports.BattleAbilities = { id: "soul0system", name: "Soul 0 System", }, + "shadesoul": { + desc: "If this Pokemon is The Knight, a situation that would cause it to faint instead forme-changes it into The Knight-Shade.", + shortDesc: "If The Knight, becomes The Knight-Shade it would otherwise faint and restores to full HP.", + onDamagePriority: -100, + onDamage(damage, target, source, effect) { + if (damage >= target.hp && target.template.speciesid === 'theknight') { + this.damage(target.hp - 1, target, target); + target.formeChange('The Knight-Shade', this.effect, false, '[msg]'); + this.heal(target.maxhp); + return null; + } + }, + id: "shadesoul", + name: "Shade Soul", + }, + "physicalbreakdown": { + desc: "If this Pokemon is the Chaos Kin, a situation that would cause it to faint instead forme-changes it into its ashen forme.", + shortDesc: "If Chaos Kin, becomes Chaos Kin-Ash if it would otherwise faint and restores to half HP.", + onDamagePriority: -100, + onDamage(damage, target, source, effect) { + if (damage >= target.hp && target.template.speciesid === 'chaoskin') { + this.damage(target.hp - 1, target, target); + target.formeChange('Chaos Kin-Ash', this.effect, false, '[msg]'); + this.heal(target.maxhp / 2); + return null; + } + }, + id: "physicalbreakdown", + name: "Physical Breakdown", + }, //These vanilla abilities are overridden, though mostly just to account for custom elements (For instance, Damp blocking Creeper Blast, etc.) From ae7f74f390a0ee234d714dafd689eecce7fe9915 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Mon, 26 Aug 2019 19:42:32 -0400 Subject: [PATCH 31/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 2e5d032589..4745a320d1 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -534,6 +534,21 @@ exports.BattleAbilities = { id: "physicalbreakdown", name: "Physical Breakdown", }, + "lastditcheffort": { + desc: "If this Pokemon is 0, a situation that would cause it to faint instead causes the iris to burst out, changing formes and restoring HP.", + shortDesc: "If Zero (Kirby), becomes Zero-Iris if it would otherwise faint and restores to full HP.", + onDamagePriority: -100, + onDamage(damage, target, source, effect) { + if (damage >= target.hp && target.template.speciesid === 'zerokirby') { + this.damage(target.hp - 1, target, target); + target.formeChange('Zero-Iris', this.effect, false, '[msg]'); + this.heal(target.maxhp); + return null; + } + }, + id: "lastditcheffort", + name: "Last-Ditch Effort", + }, //These vanilla abilities are overridden, though mostly just to account for custom elements (For instance, Damp blocking Creeper Blast, etc.) From ddf5011b96d1fc258a890f1e3937e481b76146aa Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Mon, 26 Aug 2019 19:54:28 -0400 Subject: [PATCH 32/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 4745a320d1..50f653ceda 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -549,6 +549,35 @@ exports.BattleAbilities = { id: "lastditcheffort", name: "Last-Ditch Effort", }, + "eternalbeauty": { + desc: "This Pokemon's attacking stat is multiplied by 1.5 while using a Grass- or Fairy-type attack. If this Pokemon is Soul of Sectonia, she changes forme and unroots herself if she has 1/2 or less of her maximum HP, and changes to Meteor Form if it has more than 1/2 its maximum HP. This check is done on switch-in and at the end of each turn. While in its Meteor Form, it cannot become affected by major status conditions. Moongeist Beam, Sunsteel Strike, and the Mold Breaker, Teravolt, and Turboblaze Abilities cannot ignore this Ability.", + shortDesc: "This Pokemon's attacking stat is multiplied by 1.5 while using a Grass- or Fairy-type attack. If Sectonia-Soul, end of turn changes to Soul-Unrooted at 1/2 max HP or less.", + onResidualOrder: 27, + onResidual(pokemon) { + if (pokemon.baseTemplate.baseSpecies !== 'Sectonia' || pokemon.transformed || !pokemon.hp) return; + if (pokemon.hp <= pokemon.maxhp / 2) { + if (pokemon.template.speciesid === 'sectoniasoul') { + pokemon.formeChange('Sectonia-Soul-Unrooted'); + } + } + }, + onModifyAtkPriority: 5, + onModifyAtk(atk, attacker, defender, move) { + if (move.type === 'Grass' || move.type === 'Fairy') { + this.debug('Eternal Beauty boost'); + return this.chainModify(1.5); + } + }, + onModifySpAPriority: 5, + onModifySpA(atk, attacker, defender, move) { + if (move.type === 'Grass' || move.type === 'Fairy') { + this.debug('Eternal Beauty boost'); + return this.chainModify(1.5); + } + }, + id: "eternalbeauty", + name: "Eternal Beauty", + }, //These vanilla abilities are overridden, though mostly just to account for custom elements (For instance, Damp blocking Creeper Blast, etc.) From 5726cacdd95ccb24b3a5ea5d25399113abf8bcc0 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Tue, 27 Aug 2019 12:22:06 -0400 Subject: [PATCH 33/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 50f653ceda..948fbd4843 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -578,6 +578,21 @@ exports.BattleAbilities = { id: "eternalbeauty", name: "Eternal Beauty", }, + "incorporeal": { + shortDesc: "This Pokemon's attacks do not make contact with the target. Any moves that otherwise would have 1.2x power.", + onModifyMove(move) { + if (move.flags['contact']){ + delete move.flags['contact']; + move.incorporealBoosted = true; + } + }, + onBasePowerPriority: 8, + onBasePower(basePower, pokemon, target, move) { + if (move.incorporealBoosted) return this.chainModify([0x1333, 0x1000]); + }, + id: "incorporeal", + name: "Incorporeal", + }, //These vanilla abilities are overridden, though mostly just to account for custom elements (For instance, Damp blocking Creeper Blast, etc.) From 20d782235c0bb70de2915f5c63807c68a9e0d98f Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Tue, 27 Aug 2019 12:27:53 -0400 Subject: [PATCH 34/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 948fbd4843..47acb54f50 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -593,6 +593,18 @@ exports.BattleAbilities = { id: "incorporeal", name: "Incorporeal", }, + "supercharge": { + desc: "If this Pokemon is a Creeper and takes damage from an Electric-type Attack, it forme-changes into a Charged Creeper.", + shortDesc: "If Creeper, forme-change into Creeper-Charged after taking damage from an Electric-type attack.", + onAfterDamageOrder: 1, + onAfterDamage(damage, target, source, move) { + if (source && source !== target && move && move.type === 'Electric' && target.template.speciesid === 'creeper') { + target.formeChange('Creeper-Charged', this.effect, false, '[msg]'); + } + }, + id: "supercharge", + name: "Supercharge", + }, //These vanilla abilities are overridden, though mostly just to account for custom elements (For instance, Damp blocking Creeper Blast, etc.) From 633fd4f10772484c54e73a9be6c0abcfb6611535 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Tue, 27 Aug 2019 12:31:26 -0400 Subject: [PATCH 35/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 47acb54f50..374bf39fcd 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -605,6 +605,17 @@ exports.BattleAbilities = { id: "supercharge", name: "Supercharge", }, + "kroganrage": { + desc: "This Pokemon's Attack and Speed are both raised by 1 stage if it attacks and knocks out another Pokemon with a Physical attack.", + shortDesc: "This Pokemon's Attack and Speed are raised by 1 stage if it attacks and KOes another Pokemon via Physical move.", + onSourceFaint(target, source, effect) { + if (effect && effect.effectType === 'Move' && effect.category === 'Physical') { + this.boost({atk: 1, spe: 1}, source); + } + }, + id: "kroganrage", + name: "Krogan Rage", + }, //These vanilla abilities are overridden, though mostly just to account for custom elements (For instance, Damp blocking Creeper Blast, etc.) From 8e00ac75288adf6c82b65d349fbfb2299f26b02d Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Tue, 27 Aug 2019 12:36:18 -0400 Subject: [PATCH 36/42] Update pokedex.js --- data/mods/crossoverchaos/pokedex.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/mods/crossoverchaos/pokedex.js b/data/mods/crossoverchaos/pokedex.js index abf42b0ad9..5bda15a688 100644 --- a/data/mods/crossoverchaos/pokedex.js +++ b/data/mods/crossoverchaos/pokedex.js @@ -1946,7 +1946,7 @@ sectonia: { gender: "F", baseStats: {hp: 80, atk: 125, def: 75, spa: 115, spd: 85, spe: 120}, abilities: {0: "Queenly Majesty", 1: "Pressure", H: "Levitate"}, - heightm: 1, + heightm: 0.9, weightkg: 20, }, sectoniadreamstalk: { @@ -1985,7 +1985,7 @@ sectoniasoulunrooted: { gender: "F", baseStats: {hp: 75, atk: 160, def: 115, spa: 170, spd: 120, spe: 140}, abilities: {0: "Eternal Beauty"}, - heightm: 0.2, + heightm: 0.4, weightkg: 5, }, creeper: { From 29320b68dbb4f8d91b03d88820472f3239fd1ce1 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Tue, 27 Aug 2019 21:01:52 -0400 Subject: [PATCH 37/42] Update pokedex.js --- data/mods/crossoverchaos/pokedex.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/data/mods/crossoverchaos/pokedex.js b/data/mods/crossoverchaos/pokedex.js index 5bda15a688..64505856ff 100644 --- a/data/mods/crossoverchaos/pokedex.js +++ b/data/mods/crossoverchaos/pokedex.js @@ -1295,8 +1295,8 @@ galeem: { gender: "N", baseStats: {hp: 100, atk: 40, def: 40, spa: 160, spd: 160, spe: 100}, abilities: {0: "Bane of Darkness"}, - heightm: 5, - weightkg: 20, + heightm: 8, + weightkg: 66.6, }, isabelle: { num: 6000063, @@ -1315,7 +1315,7 @@ joker: { baseStats: {hp: 70, atk: 120, def: 70, spa: 120, spd: 70, spe: 140}, abilities: {0: "Moxie", 1: "Mold Breaker", H: "Persona Change"}, heightm: 1.76, - weightkg: 50, + weightkg: 55, }, riki: { num: 6000065, @@ -1891,7 +1891,7 @@ tamamonomaeninetails: { }, knuckles: { num: 6000107, - species: "Knuckles", /* Fate/EXTRA */ + species: "Knuckles", /* Sonic the Hedgehog series */ types: ["Ground", "Fighting"], gender: "M", baseStats: {hp: 85, atk: 135, def: 105, spa: 70, spd: 85, spe: 110}, @@ -2073,8 +2073,8 @@ dharkon: { gender: "N", baseStats: {hp: 97, atk: 142, def: 101, spa: 65, spd: 88, spe: 100}, abilities: {0: "Bane of Light"}, - heightm: 5, - weightkg: 200, + heightm: 8, + weightkg: 666, }, walle: { num: 7000001, From 19f2e3e971a9a244264f6d0e88a3f0e91459e41f Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Thu, 29 Aug 2019 12:06:59 -0400 Subject: [PATCH 38/42] Update pokedex.js --- data/mods/crossoverchaos/pokedex.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/data/mods/crossoverchaos/pokedex.js b/data/mods/crossoverchaos/pokedex.js index 64505856ff..7cc09bd6d2 100644 --- a/data/mods/crossoverchaos/pokedex.js +++ b/data/mods/crossoverchaos/pokedex.js @@ -1079,7 +1079,7 @@ zerokirby: { abilities: {0: "Last-Ditch Effort", H: "Levitate"}, heightm: 1.3, weightkg: 400, - otherFormes: ["iris0"], + otherFormes: ["zeroiris", "zero2"], }, zeroiris: { //Writing it as "0iris" would've done problems. num: 6000048, @@ -1097,6 +1097,9 @@ zeroiris: { //Writing it as "0iris" would've done problems. zero2: { num: 6000048, species: "Zero^2", + baseSpecies: "Zero (Kirby)", + forme: "2", + formeLetter: "2", types: ["Dark", "Poison"], gender: "N", baseStats: {hp: 120, atk: 90, def: 150, spa: 140, spd: 110, spe: 70}, From dd9e2f9d7f30b39075778df4905a7ccbb76ae69c Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Thu, 29 Aug 2019 12:15:00 -0400 Subject: [PATCH 39/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 374bf39fcd..3d83825929 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -616,6 +616,26 @@ exports.BattleAbilities = { id: "kroganrage", name: "Krogan Rage", }, + "knightmare": { + desc: "This Pokemon's slash-based moves deal x1.33 damage and bypass type-based immunities.", + shortDesc: "This Pokemon's slash-based moves deal x1.33 damage and bypass immunities.", + onModifyMovePriority: -1, + onModifyMove(move, pokemon) { + if (move.type === 'Normal' && !['judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'weatherball'].includes(move.id) && !(move.isZ && move.category !== 'Status')) { + move.type = 'Ice'; + move.refrigerateBoosted = true; + } + }, + onBasePowerPriority: 8, + onBasePower(basePower, attacker, defender, move) { + if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { + this.debug('Knightmare boost'); + return this.chainModify([0x1333, 0x1000]); + } + }, + id: "knightmare", + name: "Knightmare", + }, //These vanilla abilities are overridden, though mostly just to account for custom elements (For instance, Damp blocking Creeper Blast, etc.) From d877d1ac1376d85dbfd7ba52f3366892ff3f964c Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Thu, 29 Aug 2019 14:40:35 -0400 Subject: [PATCH 40/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 3d83825929..2402cedc7b 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -617,20 +617,20 @@ exports.BattleAbilities = { name: "Krogan Rage", }, "knightmare": { - desc: "This Pokemon's slash-based moves deal x1.33 damage and bypass type-based immunities.", - shortDesc: "This Pokemon's slash-based moves deal x1.33 damage and bypass immunities.", + desc: "This Pokemon's slash-based moves deal x1.3 damage and bypass type-based immunities.", + shortDesc: "This Pokemon's slash-based moves deal x1.3 damage and bypass immunities.", onModifyMovePriority: -1, onModifyMove(move, pokemon) { - if (move.type === 'Normal' && !['judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'weatherball'].includes(move.id) && !(move.isZ && move.category !== 'Status')) { - move.type = 'Ice'; - move.refrigerateBoosted = true; + if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { + move.ignoreImmunity = true; + move.knightmareBoosted = true; } }, onBasePowerPriority: 8, onBasePower(basePower, attacker, defender, move) { - if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { + if (move.knightmareBoosted) { this.debug('Knightmare boost'); - return this.chainModify([0x1333, 0x1000]); + return this.chainModify([0x14CD, 0x1000]); } }, id: "knightmare", From e89969ea6301794470de971b8100214a222660e3 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Thu, 29 Aug 2019 17:48:33 -0400 Subject: [PATCH 41/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 48 +++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 2402cedc7b..48ad471321 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -636,6 +636,54 @@ exports.BattleAbilities = { id: "knightmare", name: "Knightmare", }, + "swordofswords": { + shortDesc: "This Pokemon deals x1.33 damage with slash-based moves and takes x0.667 damage from slash-based moves.", + onModifyMovePriority: -1, + onAnyModifyMove(move, pokemon) { + if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { + move.swordOfSwordsBoosted = true; + } + }, + onBasePowerPriority: 8, + onAnyBasePower(basePower, attacker, defender, move) { + if (move.swordOfSwordsBoosted && [attacker, defender].includes(this.effectData.target)) { + this.debug('Sword of Swords - Altering damage taken.'); + return this.chainModify([((defender === this.effectData.target) ? 0x0AAC : 0x1547), 0x1000]); + } + }, + id: "swordofswords", + name: "Sword of Swords", + }, + "swordspirit": { + shortDesc: "This Pokemon deals x1.5 damage with slash-based moves and takes x0.5 damage from slash-based moves.", + onModifyMovePriority: -1, + onAnyModifyMove(move, pokemon) { + if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { + move.swordSpiritBoosted = true; + } + }, + onBasePowerPriority: 8, + onAnyBasePower(basePower, attacker, defender, move) { + if (move.swordSpiritBoosted && [attacker, defender].includes(this.effectData.target)) { + this.debug('Sword Spirit - Altering damage taken.'); + return this.chainModify(((defender === this.effectData.target) ? 0.5 : 1.5)); + } + }, + id: "swordspirit", + name: "Sword Spirit", + }, + "saberclass": { + shortDesc: "This Pokemon deals x1.33 damage with slash-based moves.", + onBasePowerPriority: 8, + onBasePower(basePower, attacker, defender, move) { + if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { + this.debug('Saber Class - Boosting Damage.'); + return this.chainModify([0x1547, 0x1000]); + } + }, + id: "saberclass", + name: "Saber Class", + }, //These vanilla abilities are overridden, though mostly just to account for custom elements (For instance, Damp blocking Creeper Blast, etc.) From fe85a7677f4448868d12e3063ef2fb765e0df6e4 Mon Sep 17 00:00:00 2001 From: KirbyRider1337 <39121695+KirbyRider1337@users.noreply.github.com> Date: Fri, 30 Aug 2019 23:12:13 -0400 Subject: [PATCH 42/42] Update abilities.js --- data/mods/crossoverchaos/abilities.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/mods/crossoverchaos/abilities.js b/data/mods/crossoverchaos/abilities.js index 48ad471321..1cc9c80de8 100644 --- a/data/mods/crossoverchaos/abilities.js +++ b/data/mods/crossoverchaos/abilities.js @@ -640,7 +640,7 @@ exports.BattleAbilities = { shortDesc: "This Pokemon deals x1.33 damage with slash-based moves and takes x0.667 damage from slash-based moves.", onModifyMovePriority: -1, onAnyModifyMove(move, pokemon) { - if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { + if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'gladiusanusblauserium', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { move.swordOfSwordsBoosted = true; } }, @@ -658,7 +658,7 @@ exports.BattleAbilities = { shortDesc: "This Pokemon deals x1.5 damage with slash-based moves and takes x0.5 damage from slash-based moves.", onModifyMovePriority: -1, onAnyModifyMove(move, pokemon) { - if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { + if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'gladiusanusblauserium', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { move.swordSpiritBoosted = true; } }, @@ -676,7 +676,7 @@ exports.BattleAbilities = { shortDesc: "This Pokemon deals x1.33 damage with slash-based moves.", onBasePowerPriority: 8, onBasePower(basePower, attacker, defender, move) { - if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { + if (['sacredsword', 'leafblade', 'cut', 'nightslash', 'crosspoison', 'slash', 'razorwind', 'airslash', 'furycutter', 'falseswipe', 'psychocut', 'secretsword', 'xscissor', 'swordrainbeta', 'machtornado', 'solarblade', 'invisibleair', 'foilflourish', 'zsaber', 'risingphoenix', 'chargedsaber', 'dashslash', 'greatslash', 'cycloneslash', 'swordofhisou', 'excaliburswordofpromisedvictory', 'gladiusanusblauserium', 'rosaichthys', 'underworldkingslash', 'laevateinn', 'demonicrend'].includes(move.id)) { this.debug('Saber Class - Boosting Damage.'); return this.chainModify([0x1547, 0x1000]); }