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/monsterhunter/abilities.ts b/data/mods/monsterhunter/abilities.ts
index 7c1e8fff7f..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;
@@ -1603,8 +1611,11 @@ 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",
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,
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,
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"],
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/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,
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",