From 86af80afd0465d8f2a483f59441728a35eecf045 Mon Sep 17 00:00:00 2001 From: KnivesTotality Date: Thu, 5 Feb 2026 13:04:19 -0500 Subject: [PATCH 01/10] Update pokedex.ts --- data/mods/monsterhunter/pokedex.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/monsterhunter/pokedex.ts b/data/mods/monsterhunter/pokedex.ts index 9679947e39..3891927d8f 100644 --- a/data/mods/monsterhunter/pokedex.ts +++ b/data/mods/monsterhunter/pokedex.ts @@ -1827,7 +1827,7 @@ export const Pokedex: {[k: string]: ModdednameData} = { baseSpecies: "Magnamalo", forme: "Mega", types: ["Ghost", "Dark"], - baseStats: {hp: 105, atk: 145, def: 90, spa: 100, spd: 110, spe: 100}, + baseStats: {hp: 105, atk: 140, def: 100, spa: 105, spd: 110, spe: 90}, abilities: {0: "Sinister Grudge"}, weightkg: 212.2, tags: ["Fanged Wyvern"], From af43089df55a6724ec06b0260a3ee867bb6d1247 Mon Sep 17 00:00:00 2001 From: KnivesTotality Date: Fri, 6 Feb 2026 17:45:44 -0500 Subject: [PATCH 02/10] Update conditions.ts --- data/mods/monsterhunter/conditions.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/data/mods/monsterhunter/conditions.ts b/data/mods/monsterhunter/conditions.ts index 24f60fdf8f..568eac7c46 100644 --- a/data/mods/monsterhunter/conditions.ts +++ b/data/mods/monsterhunter/conditions.ts @@ -403,7 +403,14 @@ export const Conditions: { [k: string]: ConditionData; } = { if (!this.field.pseudoWeather['ruststorm']) return; if (!target || !target.hasType('Steel')) return; if (target.hasAbility('Rusted Gale')) return typeMod; - if (typeMod < 0) return 0; + // Only remove Steel's resistances IF Steel is the one providing them + if (typeMod < 0) { + const steelMod = this.dex.getEffectiveness(type, 'Steel'); + if (steelMod < 0) { + return 0; + } + } + // Otherwise, do not modify the effectiveness return typeMod; }, onModifyDefPriority: 10, From baadadaa4948b8f0571fef57837c2b8d72974a9f Mon Sep 17 00:00:00 2001 From: KnivesTotality Date: Sat, 7 Feb 2026 22:12:05 -0500 Subject: [PATCH 03/10] MHS --- config/formats.ts | 2 +- data/mods/monsterhuntersl/abilities.ts | 29 +++++++++++-- data/mods/monsterhuntersl/learnsets.ts | 20 ++------- data/mods/monsterhuntersl/moves.ts | 58 +++++++++++++++++++++++--- data/mods/monsterhuntersl/pokedex.ts | 10 ++--- 5 files changed, 88 insertions(+), 31 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index d6799d8b73..678c809915 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -5422,7 +5422,7 @@ export const Formats: FormatList = [ ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause'], banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', - 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Baton Pass', 'Shagaru Magala + Strength Sap', 'King\'s Rock', 'Razor Fang'], + 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Baton Pass', 'Shagaru Magala + Strength Sap', 'Light Clay', 'King\'s Rock', 'Razor Fang'], onBegin() { this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); }, diff --git a/data/mods/monsterhuntersl/abilities.ts b/data/mods/monsterhuntersl/abilities.ts index f912ac8151..0eb75e629f 100644 --- a/data/mods/monsterhuntersl/abilities.ts +++ b/data/mods/monsterhuntersl/abilities.ts @@ -811,14 +811,14 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = { onModifyAtk(atk, attacker, defender, move) { if (move.type === 'Fire') { this.debug('Incandescent Boost'); - return this.chainModify(1.5); + return this.chainModify(1.3); } }, onModifySpAPriority: 5, onModifySpA(atk, attacker, defender, move) { if (move.type === 'Fire') { this.debug('Incandescent Boost'); - return this.chainModify(1.5); + return this.chainModify(1.3); } }, onTryHit(target, source, move) { @@ -829,7 +829,30 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = { }, flags: {breakable: 1}, name: "Incandescent", - shortDesc: "User gains Fire-type STAB and Fire-Type Immunity.", + shortDesc: "This Pokemon is immune to Fire Moves; 1.3x offenses when using Fire-type attacks.", + }, + sinistergrudge: { + onStart(pokemon) { + if (pokemon.side.totalFainted) { + this.add('-activate', pokemon, 'ability: Sinister Grudge'); + const fallen = Math.min(pokemon.side.totalFainted, 5); + this.add('-start', pokemon, `fallen${fallen}`, '[silent]'); + this.effectState.fallen = fallen; + } + }, + onEnd(pokemon) { + this.add('-end', pokemon, `fallen${this.effectState.fallen}`, '[silent]'); + }, + onBasePowerPriority: 21, + onBasePower(basePower, attacker, defender, move) { + if (this.effectState.fallen) { + const powMod = [4096, 4300, 4505, 4710, 4915, 5120]; + this.debug(`Sinister Grudge boost: ${powMod[this.effectState.fallen]}/4096`); + return this.chainModify([powMod[this.effectState.fallen], 4096]); + } + }, + name: "Sinister Grudge", + shortDesc: "This Pokemon's moves have 5% more power for each fainted ally, up to 5 allies.", }, insectarmor: { onModifyAtkPriority: 5, diff --git a/data/mods/monsterhuntersl/learnsets.ts b/data/mods/monsterhuntersl/learnsets.ts index 218cf166ce..4da3b4091e 100644 --- a/data/mods/monsterhuntersl/learnsets.ts +++ b/data/mods/monsterhuntersl/learnsets.ts @@ -2060,12 +2060,10 @@ export const Learnsets: {[k: string]: LearnsetData} = { attract: ["9M"], beatup: ["9M"], bulletpunch: ["9M"], - ceaselessedge: ["9M"], confide: ["9M"], cut: ["9M"], dig: ["9M"], endure: ["9M"], - extremespeed: ["9M"], facade: ["9M"], falseswipe: ["9M"], flashcannon: ["9M"], @@ -2078,9 +2076,7 @@ export const Learnsets: {[k: string]: LearnsetData} = { hyperbeam: ["9M"], icespinner: ["9M"], ironhead: ["9M", "9L57"], - knockoff: ["9T"], kowtowcleave: ["9M"], - lashout: ["9M"], leer: ["9L1"], lowkick: ["9M"], lowsweep: ["9M"], @@ -3580,17 +3576,17 @@ export const Learnsets: {[k: string]: LearnsetData} = { solarbeam: ["9M", "9L48"], spicyextract: ["9L0"], stompingtantrum: ["9M"], + acid: ["9M"], + gastroacid: ["9M"], substitute: ["9M"], sunnyday: ["9M", "9L17"], takedown: ["9M"], temperflare: ["9M"], terablast: ["9M"], thief: ["9M"], - toxicspikes: ["9M"], willowisp: ["9M"], worryseed: ["9L33"], workup: ["9L1"], - toxic: ["9M"], }, }, malzeno: { @@ -6057,7 +6053,6 @@ export const Learnsets: {[k: string]: LearnsetData} = { armthrust: ["9L1"], attract: ["9L1"], bittermalice: ["9L1"], - frenzyslam: ["9L1"], brutalswing: ["9L1"], clearsmog: ["9L1"], corrosivegas: ["9L1"], @@ -6420,7 +6415,6 @@ export const Learnsets: {[k: string]: LearnsetData} = { steelwing: ["9L1"], anchorshot: ["9L1"], attract: ["9L1"], - swordsdance: ["9L1"], scaleshot: ["9L1"], irondefense: ["9L1"], dragondance: ["9L1"], @@ -7887,7 +7881,6 @@ export const Learnsets: {[k: string]: LearnsetData} = { acrobatics: ["9L1"], supremacysquall: ["9L1"], arcticshriek: ["9L1"], - nastyplot: ["9L1"], swordsdance: ["9L1"], airslash: ["9L1"], healpulse: ["9L1"], @@ -9842,10 +9835,8 @@ export const Learnsets: {[k: string]: LearnsetData} = { scorchingsands: ["9L1"], trickroom: ["9L1"], tarshot: ["9L1"], - nastyplot: ["9L1"], sludgewave: ["9L1"], mudbomb: ["9L1"], - partingshot: ["9L1"], taunt: ["9L1"], acidspray: ["9L1"], beatup: ["9L1"], @@ -9894,7 +9885,6 @@ export const Learnsets: {[k: string]: LearnsetData} = { substitute: ["9L1"], swallow: ["9L1"], terablast: ["9L1"], - toxic: ["9L1"], thief: ["9L1"], tickle: ["9L1"], trick: ["9L1"], @@ -10949,7 +10939,7 @@ export const Learnsets: {[k: string]: LearnsetData} = { growth: ["9L1"], meteormash: ["9L1"], aromatherapy: ["9L1"], - dragondance: ["9L1"], + wakeupslap: ["9L1"], bulkup: ["9L1"], bodypress: ["9L1"], brickbreak: ["9L1"], @@ -12885,7 +12875,7 @@ export const Learnsets: {[k: string]: LearnsetData} = { rototiller: ["9L1"], sandtomb: ["9L1"], sandstorm: ["9L1"], - shoreup: ["9L1"], + slackoff: ["9L1"], snore: ["9L1"], spikecannon: ["9L1"], stealthrock: ["9L1"], @@ -13618,7 +13608,6 @@ export const Learnsets: {[k: string]: LearnsetData} = { facade: ["9L1"], growl: ["9L1"], headbutt: ["9L1"], - headcharge: ["9L1"], headlongrush: ["9L1"], headsmash: ["9L1"], highhorsepower: ["9L1"], @@ -13638,7 +13627,6 @@ export const Learnsets: {[k: string]: LearnsetData} = { substitute: ["9L1"], tackle: ["9L1"], terablast: ["9L1"], - uturn: ["9L1"], workup: ["9L1"], zenheadbutt: ["9L1"], }, diff --git a/data/mods/monsterhuntersl/moves.ts b/data/mods/monsterhuntersl/moves.ts index b12cbbd114..db9d1f7678 100644 --- a/data/mods/monsterhuntersl/moves.ts +++ b/data/mods/monsterhuntersl/moves.ts @@ -121,7 +121,7 @@ export const Moves: {[moveid: string]: MoveData} = { }, wretchedwater: { accuracy: 100, - basePower: 90, + basePower: 80, category: "Special", name: "Wretched Water", shortDesc: "30% chance to paralyze the target.", @@ -455,7 +455,7 @@ export const Moves: {[moveid: string]: MoveData} = { }, boltbreath: { accuracy: 100, - basePower: 70, + basePower: 60, basePowerCallback(pokemon, target, move) { if (target.newlySwitched || this.queue.willMove(target)) { this.debug('Bolt Breath damage boost'); @@ -480,7 +480,7 @@ export const Moves: {[moveid: string]: MoveData} = { }, cyclonerend: { accuracy: 100, - basePower: 70, + basePower: 60, basePowerCallback(pokemon, target, move) { if (target.newlySwitched || this.queue.willMove(target)) { this.debug('Cyclone Rend damage boost'); @@ -1238,18 +1238,17 @@ export const Moves: {[moveid: string]: MoveData} = { }, thousandblades: { accuracy: 100, - basePower: 95, + basePower: 90, category: "Physical", name: "Thousand Blades", pp: 15, priority: 0, flags: {contact: 1, protect: 1, mirror: 1, metronome: 1, slicing: 1}, - critRatio: 2, secondary: { chance: 20, volatileStatus: 'bleeding', }, - shortDesc: "High crit ratio. 20% chance to bleed.", + shortDesc: "20% chance to bleed.", target: "normal", type: "Fighting", contestType: "Cool", @@ -1799,6 +1798,31 @@ export const Moves: {[moveid: string]: MoveData} = { target: "normal", type: "Fire", }, + blotout: { + accuracy: 100, + basePower: 0, + category: "Status", + name: "Blot Out", + shortDesc: "Target becomes weaker to Fire; user switches out.", + pp: 10, + priority: 0, + flags: {protect: 1, reflectable: 1, mirror: 1}, + selfSwitch: true, + secondary: null, + target: "normal", + type: "Dark", + onHit(target, source) { + // Apply Tar Shot's Fire weakness without Speed drop + if (!target.volatiles['tarshot']) { + target.addVolatile('tarshot'); + // Remove the Speed drop Tar Shot normally applies + if (target.boosts.spe < 0) { + this.boost({spe: -target.boosts.spe}, target); // undo any drop + } + } + }, + + }, /* Edits */ @@ -1892,6 +1916,7 @@ export const Moves: {[moveid: string]: MoveData} = { }, dualchop: { inherit: true, + accuracy: 100, shortDesc: "Hits twice. Removes Reflect, Light Screen, and Aurora Veil on hit.", onTryHit(pokemon) { // will shatter screens through sub, before you hit @@ -1905,6 +1930,27 @@ export const Moves: {[moveid: string]: MoveData} = { viable: true, accuracy: 90, }, + dualwingbeat: { + inherit: true, + accuracy: 100, + }, + spectralthief: { + inherit: true, + viable: true, + basePower: 70, + }, + electroshot: { + inherit: true, + basePower: 110, + }, + astralbarrage: { + inherit: true, + basePower: 110, + }, + glaciallance: { + inherit: true, + basePower: 110, + }, chipaway: { inherit: true, viable: true, diff --git a/data/mods/monsterhuntersl/pokedex.ts b/data/mods/monsterhuntersl/pokedex.ts index 98d563feea..8b473dd04f 100644 --- a/data/mods/monsterhuntersl/pokedex.ts +++ b/data/mods/monsterhuntersl/pokedex.ts @@ -399,7 +399,7 @@ export const Pokedex: {[k: string]: ModdednameData} = { baseSpecies: "Kirin", forme: "Mega", types: ["Ghost", "Electric"], - baseStats: {hp: 92, atk: 95, def: 91, spa: 135, spd: 112, spe: 125}, + baseStats: {hp: 92, atk: 100, def: 91, spa: 130, spd: 112, spe: 125}, abilities: {0: "Teravolt"}, weightkg: 90.0, tags: ["Elder Dragon"], @@ -968,7 +968,7 @@ export const Pokedex: {[k: string]: ModdednameData} = { num: 51, name: "Lagiacrus", types: ["Water", "Electric"], - baseStats: {hp: 118, atk: 100, def: 110, spa: 100, spd: 110, spe: 43}, + baseStats: {hp: 118, atk: 100, def: 110, spa: 100, spd: 110, spe: 40}, abilities: {0: "Surge Surfer", 1: "Swift Swim", H: "Electromorphosis"}, weightkg: 70.0, tags: ["Leviathan"], @@ -1742,7 +1742,7 @@ export const Pokedex: {[k: string]: ModdednameData} = { num: 96, name: "Goss Harag", types: ["Ice", "Fighting"], - baseStats: {hp: 80, atk: 126, def: 104, spa: 80, spd: 102, spe: 68}, + baseStats: {hp: 80, atk: 121, def: 104, spa: 85, spd: 102, spe: 68}, abilities: {0: "Stakeout", H: "Adaptability"}, weightkg: 240.5, tags: ["Fanged Beast"], @@ -1827,8 +1827,8 @@ export const Pokedex: {[k: string]: ModdednameData} = { baseSpecies: "Magnamalo", forme: "Mega", types: ["Ghost", "Dark"], - baseStats: {hp: 105, atk: 145, def: 90, spa: 100, spd: 110, spe: 100}, - abilities: {0: "Supreme Overlord"}, + baseStats: {hp: 105, atk: 140, def: 100, spa: 105, spd: 110, spe: 90}, + abilities: {0: "Sinister Grudge"}, weightkg: 212.2, tags: ["Fanged Wyvern"], requiredItem: "Magnamalite", From 0a7d1ee3028bd4c49a7195c660231ba4e0115c65 Mon Sep 17 00:00:00 2001 From: KnivesTotality Date: Sat, 7 Feb 2026 22:16:16 -0500 Subject: [PATCH 04/10] Update conditions.ts --- data/mods/monsterhuntersl/conditions.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/data/mods/monsterhuntersl/conditions.ts b/data/mods/monsterhuntersl/conditions.ts index 24f60fdf8f..568eac7c46 100644 --- a/data/mods/monsterhuntersl/conditions.ts +++ b/data/mods/monsterhuntersl/conditions.ts @@ -403,7 +403,14 @@ export const Conditions: { [k: string]: ConditionData; } = { if (!this.field.pseudoWeather['ruststorm']) return; if (!target || !target.hasType('Steel')) return; if (target.hasAbility('Rusted Gale')) return typeMod; - if (typeMod < 0) return 0; + // Only remove Steel's resistances IF Steel is the one providing them + if (typeMod < 0) { + const steelMod = this.dex.getEffectiveness(type, 'Steel'); + if (steelMod < 0) { + return 0; + } + } + // Otherwise, do not modify the effectiveness return typeMod; }, onModifyDefPriority: 10, From f1d6f58f03ff50ff324bc0e50a7708948fd04cb4 Mon Sep 17 00:00:00 2001 From: KnivesTotality Date: Sat, 7 Feb 2026 23:31:28 -0500 Subject: [PATCH 05/10] Update abilities.ts --- data/mods/monsterhunter/abilities.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/data/mods/monsterhunter/abilities.ts b/data/mods/monsterhunter/abilities.ts index 7c1e8fff7f..fe26f9ce59 100644 --- a/data/mods/monsterhunter/abilities.ts +++ b/data/mods/monsterhunter/abilities.ts @@ -1603,12 +1603,15 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = { rivalry: { onBasePowerPriority: 24, onBasePower(basePower, pokemon, target) { - if (target.hasType(pokemon.getTypes())) { - return this.chainModify(1.33); + const userTypes = pokemon.getTypes(); + for (const type of userTypes) { + if (target.hasType(type)) { + return this.chainModify(1.33); + } } }, name: "Rivalry", - shortDesc: "This Pokemon's moves deal 1.33x damage to targets that share a type with it.", + shortDesc: "This Pokémon's moves deal 1.33x damage to targets that share a type with it.", }, rustedgale: { onStart(pokemon) { From eb1d828e61519c66793372c5d871668937079407 Mon Sep 17 00:00:00 2001 From: KnivesTotality Date: Sat, 7 Feb 2026 23:31:50 -0500 Subject: [PATCH 06/10] Update abilities.ts --- data/mods/monsterhunter/abilities.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/monsterhunter/abilities.ts b/data/mods/monsterhunter/abilities.ts index fe26f9ce59..4dcfc56107 100644 --- a/data/mods/monsterhunter/abilities.ts +++ b/data/mods/monsterhunter/abilities.ts @@ -1611,7 +1611,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = { } }, name: "Rivalry", - shortDesc: "This Pokémon's moves deal 1.33x damage to targets that share a type with it.", + shortDesc: "This Pokemon's moves deal 1.33x damage to targets that share a type with it.", }, rustedgale: { onStart(pokemon) { From d3f6fcece759cf41248819b3b79f4373dfebff2d Mon Sep 17 00:00:00 2001 From: KnivesTotality Date: Sun, 8 Feb 2026 00:19:37 -0500 Subject: [PATCH 07/10] H2 --- data/mods/monsterhunter/learnsets.ts | 1 - data/mods/monsterhunter/moves.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/data/mods/monsterhunter/learnsets.ts b/data/mods/monsterhunter/learnsets.ts index 6091bf5598..51804d3bfd 100644 --- a/data/mods/monsterhunter/learnsets.ts +++ b/data/mods/monsterhunter/learnsets.ts @@ -6832,7 +6832,6 @@ export const Learnsets: {[k: string]: LearnsetData} = { mistball: ["9L1"], protect: ["9L1"], rest: ["9L1"], - secretsword: ["9L1"], shadowball: ["9L1"], snarl: ["9L1"], substitute: ["9L1"], diff --git a/data/mods/monsterhunter/moves.ts b/data/mods/monsterhunter/moves.ts index c683b9758e..41b01abfc5 100644 --- a/data/mods/monsterhunter/moves.ts +++ b/data/mods/monsterhunter/moves.ts @@ -1968,7 +1968,7 @@ export const Moves: {[moveid: string]: MoveData} = { }, astralbarrage: { inherit: true, - basePower: 110, + basePower: 100, }, glaciallance: { inherit: true, From 87754831532f0868d6e2d20715821daccf4c1ae3 Mon Sep 17 00:00:00 2001 From: KnivesTotality Date: Sun, 8 Feb 2026 13:18:23 -0500 Subject: [PATCH 08/10] Snowman --- data/mods/monsterhunter/conditions.ts | 10 ++++------ data/mods/monsterhuntersl/conditions.ts | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/data/mods/monsterhunter/conditions.ts b/data/mods/monsterhunter/conditions.ts index 568eac7c46..44d1d565cd 100644 --- a/data/mods/monsterhunter/conditions.ts +++ b/data/mods/monsterhunter/conditions.ts @@ -221,17 +221,15 @@ export const Conditions: { [k: string]: ConditionData; } = { name: 'Snowman', onStart(pokemon) { this.add('-start', pokemon, 'Snowman'); - this.add('-message', `${pokemon.name} is a Snowman! Unable to move.`); + this.add('-message', `${pokemon.name} is a Snowman! Sometimes it can't move!`); }, onBeforeMovePriority: 10, onBeforeMove(pokemon, target, move) { if (move.flags['defrost']) return; - if (this.randomChance(1, 5)) { - pokemon.cureStatus(); - return; + if (this.randomChance(1, 10)) { + this.add('cant', pokemon, 'snowman'); + return false; } - this.add('cant', pokemon, 'snowman'); - return false; }, onModifyMove(move, pokemon) { if (move.flags['defrost']) { diff --git a/data/mods/monsterhuntersl/conditions.ts b/data/mods/monsterhuntersl/conditions.ts index 568eac7c46..44d1d565cd 100644 --- a/data/mods/monsterhuntersl/conditions.ts +++ b/data/mods/monsterhuntersl/conditions.ts @@ -221,17 +221,15 @@ export const Conditions: { [k: string]: ConditionData; } = { name: 'Snowman', onStart(pokemon) { this.add('-start', pokemon, 'Snowman'); - this.add('-message', `${pokemon.name} is a Snowman! Unable to move.`); + this.add('-message', `${pokemon.name} is a Snowman! Sometimes it can't move!`); }, onBeforeMovePriority: 10, onBeforeMove(pokemon, target, move) { if (move.flags['defrost']) return; - if (this.randomChance(1, 5)) { - pokemon.cureStatus(); - return; + if (this.randomChance(1, 10)) { + this.add('cant', pokemon, 'snowman'); + return false; } - this.add('cant', pokemon, 'snowman'); - return false; }, onModifyMove(move, pokemon) { if (move.flags['defrost']) { From ed6ce4e0a6df88dae2c661f183c48c4326fc6e4d Mon Sep 17 00:00:00 2001 From: KnivesTotality Date: Sun, 8 Feb 2026 13:51:23 -0500 Subject: [PATCH 09/10] Snowman --- data/mods/monsterhunter/conditions.ts | 10 ++++++---- data/mods/monsterhuntersl/conditions.ts | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/data/mods/monsterhunter/conditions.ts b/data/mods/monsterhunter/conditions.ts index 44d1d565cd..568eac7c46 100644 --- a/data/mods/monsterhunter/conditions.ts +++ b/data/mods/monsterhunter/conditions.ts @@ -221,15 +221,17 @@ export const Conditions: { [k: string]: ConditionData; } = { name: 'Snowman', onStart(pokemon) { this.add('-start', pokemon, 'Snowman'); - this.add('-message', `${pokemon.name} is a Snowman! Sometimes it can't move!`); + this.add('-message', `${pokemon.name} is a Snowman! Unable to move.`); }, onBeforeMovePriority: 10, onBeforeMove(pokemon, target, move) { if (move.flags['defrost']) return; - if (this.randomChance(1, 10)) { - this.add('cant', pokemon, 'snowman'); - return false; + if (this.randomChance(1, 5)) { + pokemon.cureStatus(); + return; } + this.add('cant', pokemon, 'snowman'); + return false; }, onModifyMove(move, pokemon) { if (move.flags['defrost']) { diff --git a/data/mods/monsterhuntersl/conditions.ts b/data/mods/monsterhuntersl/conditions.ts index 44d1d565cd..568eac7c46 100644 --- a/data/mods/monsterhuntersl/conditions.ts +++ b/data/mods/monsterhuntersl/conditions.ts @@ -221,15 +221,17 @@ export const Conditions: { [k: string]: ConditionData; } = { name: 'Snowman', onStart(pokemon) { this.add('-start', pokemon, 'Snowman'); - this.add('-message', `${pokemon.name} is a Snowman! Sometimes it can't move!`); + this.add('-message', `${pokemon.name} is a Snowman! Unable to move.`); }, onBeforeMovePriority: 10, onBeforeMove(pokemon, target, move) { if (move.flags['defrost']) return; - if (this.randomChance(1, 10)) { - this.add('cant', pokemon, 'snowman'); - return false; + if (this.randomChance(1, 5)) { + pokemon.cureStatus(); + return; } + this.add('cant', pokemon, 'snowman'); + return false; }, onModifyMove(move, pokemon) { if (move.flags['defrost']) { From 353a12cf3270037c67837b86555ea9c76aac59e2 Mon Sep 17 00:00:00 2001 From: KnivesTotality Date: Sun, 8 Feb 2026 23:50:04 -0500 Subject: [PATCH 10/10] Update abilities.ts --- data/mods/monsterhunter/abilities.ts | 40 +++++++++++++++++----------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/data/mods/monsterhunter/abilities.ts b/data/mods/monsterhunter/abilities.ts index 4dcfc56107..625aac11bc 100644 --- a/data/mods/monsterhunter/abilities.ts +++ b/data/mods/monsterhunter/abilities.ts @@ -83,22 +83,30 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = { shortDesc: "Slicing moves: +1 priority at full HP, always crit at 1/3 HP or less.", }, bewitchingtail: { - onModifyStats(stats, pokemon, target, move) { - if (target && target.status === 'slp') { - stats.atk = this.chainModify([stats.atk, 0x1333]); - stats.spa = this.chainModify([stats.spa, 0x1333]); - stats.spe = this.chainModify([stats.spe, 0x1333]); - } - }, - onSourceModifyDamage(damage, source, target, move) { - if (source.status === 'slp') { - return this.chainModify(0.833); - } - }, - flags: {}, - name: "Bewitching Tail", - shortDesc: "Targeting drowsy foes: Atk/SpA/Spe 1.2x | From drowsy foes: Damage 0.83x", - }, + onModifyAtk(atk, pokemon, target, move) { + if (target && target.status === 'slp') { + return this.chainModify(0x1333); // 1.2x + } + }, + onModifySpA(spa, pokemon, target, move) { + if (target && target.status === 'slp') { + return this.chainModify(0x1333); // 1.2x + } + }, + onModifySpe(spe, pokemon, target, move) { + if (target && target.status === 'slp') { + return this.chainModify(0x1800); // 1.5x + } + }, + onSourceModifyDamage(damage, source, target, move) { + if (source.status === 'slp') { + return this.chainModify(0.8); + } + }, + flags: {}, + name: "Bewitching Tail", + shortDesc: "Targeting drowsy foes: Offenses 1.2x, Spe 1.5x | From drowsy foes: 0.8x Damage.", +}, biosynthesis: { onSwitchIn(pokemon) { const terrain = this.field.terrain;