diff --git a/config/formats.ts b/config/formats.ts
index c53d43e67e..f2956031df 100644
--- a/config/formats.ts
+++ b/config/formats.ts
@@ -2809,17 +2809,6 @@ export const Formats: FormatList = [
this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');
},
},
- /*
- {
- name: "[Gen 8] Ink's Winter Wonderland",
- desc: `Play around both your opponent and the treacherous weather conditions in this randomized micrometa!`,
- mod: 'inksrandbats',
- team: 'random',
- ruleset: ['Dynamax Clause', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Freeze Clause Mod', 'Permasnow'],
- searchShow: false,
- challengeShow: false,
- },
- */
// Non-Smogon Mods
{
section: "Non-Smogon Mods",
diff --git a/data/mods/inksdynamaxadventure/abilities.ts b/data/mods/inksandboxy/abilities.ts
similarity index 100%
rename from data/mods/inksdynamaxadventure/abilities.ts
rename to data/mods/inksandboxy/abilities.ts
diff --git a/data/mods/inksdynamaxadventure/formats-data.ts b/data/mods/inksandboxy/formats-data.ts
similarity index 76%
rename from data/mods/inksdynamaxadventure/formats-data.ts
rename to data/mods/inksandboxy/formats-data.ts
index 1c56bbd634..388776daa5 100644
--- a/data/mods/inksdynamaxadventure/formats-data.ts
+++ b/data/mods/inksandboxy/formats-data.ts
@@ -29,9 +29,6 @@ export const FormatsData: {[k: string]: ModdedFormatsData} = {
spectriersoul: {
tier: "NEW",
},
- falinks: {
- tier: "NEW",
- },
decidueyemega: {
tier: "NEW",
},
@@ -47,4 +44,22 @@ export const FormatsData: {[k: string]: ModdedFormatsData} = {
bunslinger: {
tier: "NEW",
},
+ stalagmight: {
+ tier: "NEW",
+ },
+ stalactice: {
+ tier: "NEW",
+ },
+ magmalodon: {
+ tier: "NEW",
+ },
+ blizzeraph: {
+ tier: "NEW",
+ },
+ primchilla: {
+ tier: "NEW",
+ },
+ chemacaw: {
+ tier: "NEW",
+ },
};
\ No newline at end of file
diff --git a/data/mods/inksdynamaxadventure/items.ts b/data/mods/inksandboxy/items.ts
similarity index 95%
rename from data/mods/inksdynamaxadventure/items.ts
rename to data/mods/inksandboxy/items.ts
index b1cbd721e3..0db90444b7 100644
--- a/data/mods/inksdynamaxadventure/items.ts
+++ b/data/mods/inksandboxy/items.ts
@@ -2,26 +2,10 @@ export const Items: {[k: string]: ModdedItemData} = {
//-------------------------------------------
//ITEMS EDITED FOR COMPATIBILITY
//-------------------------------------------
- heavydutyboots: {
- inherit: true,
- desc: "When switching in, the holder is unaffected by grounded hazards on its side of the field.",
- // Hazard Immunity implemented in moves.js
- },
//-------------------------------------------
//NEW ITEMS
//-------------------------------------------
- hardhat: {
- name: "Hard Hat",
- spritenum: 417,
- fling: {
- basePower: 80,
- },
- num: 1120,
- gen: 8,
- desc: "When switching in, the holder is unaffected by airborne hazards on its side of the field.",
- // Hazard Immunity implemented in moves.js
- },
//-------------------------------------------
//SIGNATURE/MEGA STONE
diff --git a/data/mods/inksdynamaxadventure/learnsets.ts b/data/mods/inksandboxy/learnsets.ts
similarity index 100%
rename from data/mods/inksdynamaxadventure/learnsets.ts
rename to data/mods/inksandboxy/learnsets.ts
diff --git a/data/mods/inksdynamaxadventure/moves.ts b/data/mods/inksandboxy/moves.ts
similarity index 86%
rename from data/mods/inksdynamaxadventure/moves.ts
rename to data/mods/inksandboxy/moves.ts
index 06ffca237f..1a33006c8a 100644
--- a/data/mods/inksdynamaxadventure/moves.ts
+++ b/data/mods/inksandboxy/moves.ts
@@ -3,36 +3,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
//MOVES EDITED FOR COMPATIBILITY
//Hazard/screen removal, etc
//------------------------------------------
- //For item compatibility:
- stealthrock: {
- num: 446,
- accuracy: true,
- basePower: 0,
- category: "Status",
- desc: "Sets up a hazard on the opposing side of the field, damaging each opposing Pokemon that switches in. Fails if the effect is already active on the opposing side. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Rock type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any opposing Pokemon uses Rapid Spin or Defog successfully, or is hit by Defog.",
- shortDesc: "Hurts foes on switch-in. Factors Rock weakness.",
- name: "Stealth Rock",
- pp: 20,
- priority: 0,
- flags: {reflectable: 1},
- sideCondition: 'stealthrock',
- condition: {
- // this is a side condition
- onStart(side) {
- this.add('-sidestart', side, 'move: Stealth Rock');
- },
- onSwitchIn(pokemon) {
- if (pokemon.hasItem('hardhat')) return;
- const typeMod = this.clampIntRange(pokemon.runEffectiveness(this.dex.getActiveMove('stealthrock')), -6, 6);
- this.damage(pokemon.maxhp * Math.pow(2, typeMod) / 8);
- },
- },
- secondary: null,
- target: "foeSide",
- type: "Rock",
- zMove: {boost: {def: 1}},
- contestType: "Cool",
- },
//For new hazard/screen compatibility:
gmaxwindrage: {
num: 1000,
@@ -284,31 +254,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
//------------------------------------------
//EDITED MOVES
//------------------------------------------
- gmaxfinale: {
- num: 1000,
- accuracy: true,
- basePower: 10,
- category: "Physical",
- desc: "Power is equal to the base move's Max Move power. If this move is successful, each Pokemon on the user's side restores 1/6 of its current maximum HP, even if they have a substitute.",
- shortDesc: "Base move affects power. Allies: +1/6 max HP.",
- name: "G-Max Finale",
- pp: 5,
- priority: 0,
- flags: {heal: 1},
- isMax: "Alcremie",
- self: {
- onHit(target, source, move) {
- for (const pokemon of source.side.active) {
- this.heal(pokemon.maxhp / 6, pokemon, source, move);
- }
- },
- },
- secondary: null,
- target: "adjacentFoe",
- type: "Fairy",
- contestType: "Cool",
- },
-
gmaxsmite: {
num: 1000,
accuracy: true,
@@ -349,41 +294,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
type: "Fairy",
contestType: "Cool",
},
- gmaxhydrosnipe: {
- num: 1000,
- accuracy: true,
- basePower: 10,
- category: "Physical",
- desc: "Power is equal to the base move's Max Move power. This move ignores the abilities of opposing Pokemon.",
- shortDesc: "Base move affects power. Ignores abilities.",
- name: "G-Max Hydrosnipe",
- pp: 5,
- priority: 0,
- flags: {},
- onModifyMove(move, pokemon, target) {
- const atk = pokemon.getStat('atk', false, true);
- const spa = pokemon.getStat('spa', false, true);
- const def = target.getStat('def', false, true);
- const spd = target.getStat('spd', false, true);
- const physical = Math.floor(Math.floor(Math.floor(Math.floor(2 * pokemon.level / 5 + 2) * 90 * atk) / def) / 50);
- const special = Math.floor(Math.floor(Math.floor(Math.floor(2 * pokemon.level / 5 + 2) * 90 * spa) / spd) / 50);
- if (physical > special || (physical === special && this.random(2) === 0)) {
- move.category = 'Physical';
- move.flags.contact = 1;
- }
- },
- onHit(target, source, move) {
- this.hint(move.category + " Hydrosnipe");
- },
- onAfterSubDamage(damage, target, source, move) {
- this.hint(move.category + " Hydrosnipe");
- },
- isMax: "Inteleon",
- secondary: null,
- target: "adjacentFoe",
- type: "Water",
- contestType: "Cool",
- },
snipeshot: {
num: 745,
@@ -511,47 +421,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
//------------------------------------------
//NEW MOVES
//------------------------------------------
- gmaxbaddybad: {
- num: 1000,
- accuracy: true,
- basePower: 10,
- category: "Physical",
- desc: "This move summons Reflect for 5 turns upon use.",
- shortDesc: "Summons Reflect.",
- name: "G-Max Baddy Bad",
- pp: 5,
- priority: 0,
- flags: {},
- isMax: "Eevee",
- self: {
- sideCondition: 'reflect',
- },
- secondary: null,
- target: "adjacentFoe",
- type: "Dark",
- contestType: "Cool",
- },
-
- gmaxglitzyglow: {
- num: 1000,
- accuracy: true,
- basePower: 10,
- category: "Physical",
- desc: "This move summons Light Screen for 5 turns upon use.",
- shortDesc: "Summons Light Screen.",
- name: "G-Max Glitzy Glow",
- pp: 5,
- priority: 0,
- flags: {},
- isMax: "Eevee",
- self: {
- sideCondition: 'lightscreen',
- },
- secondary: null,
- target: "adjacentFoe",
- type: "Psychic",
- contestType: "Cool",
- },
snowfill: {
num: 0.1,
diff --git a/data/mods/inksandboxy/pokedex.ts b/data/mods/inksandboxy/pokedex.ts
new file mode 100644
index 0000000000..9c1447cd8d
--- /dev/null
+++ b/data/mods/inksandboxy/pokedex.ts
@@ -0,0 +1,439 @@
+export const Pokedex: {[speciesid: string]: ModdedSpeciesData} = {
+
+ //-------------------------------------------
+ //EDITED POKEMON + NEW MEGAS
+ //-------------------------------------------
+ moltresgalar: {
+ num: 146,
+ name: "Moltres-Galar",
+ baseSpecies: "Moltres",
+ forme: "Galar",
+ types: ["Dark", "Flying"],
+ gender: "N",
+ //90/85/90/100/125/90
+ baseStats: {hp: 90, atk: 100, def: 90, spa: 85, spd: 125, spe: 90},
+ abilities: {0: "Berserk"},
+ heightm: 2,
+ weightkg: 66,
+ color: "Red",
+ eggGroups: ["Undiscovered"],
+ },
+
+ regieleki: {
+ num: 894,
+ name: "Regieleki",
+ types: ["Electric"],
+ gender: "N",
+ baseStats: {hp: 80, atk: 80, def: 70, spa: 80, spd: 70, spe: 200},
+ abilities: {0: "Reinitialize", 1: "Transistor", H: "Plus"},
+ heightm: 1.2,
+ weightkg: 145,
+ color: "Yellow",
+ eggGroups: ["Undiscovered"],
+ },
+ regidrago: {
+ num: 895,
+ name: "Regidrago",
+ types: ["Dragon"],
+ gender: "N",
+ baseStats: {hp: 200, atk: 70, def: 80, spa: 70, spd: 80, spe: 80},
+ abilities: {0: "Dragon's Maw", 1: "Dragon Overflow", H: "Minus"},
+ heightm: 2.1,
+ weightkg: 200,
+ color: "Green",
+ eggGroups: ["Undiscovered"],
+ },
+
+ glastrier: {
+ num: 896,
+ name: "Glastrier",
+ types: ["Ice"],
+ gender: "N",
+ baseStats: {hp: 100, atk: 125, def: 130, spa: 85, spd: 110, spe: 30},
+ abilities: {0: "Chilling Neigh", S: "Battle Bond"},
+ heightm: 2.2,
+ weightkg: 800,
+ color: "White",
+ eggGroups: ["Undiscovered"],
+ otherFormes: ["Glastrier-Heart"],
+ // non-activated Battle Bond is forme 1, but PS does not currently distinguish it
+ formeOrder: ["Glastrier", "Glastrier", "Glastrier-Heart"],
+ },
+ glastrierheart: {
+ num: 658,
+ name: "Glastrier-Heart",
+ baseSpecies: "Glastrier",
+ forme: "Heart",
+ types: ["Ice", "Psychic"],
+ baseStats: {hp: 100, atk: 155, def: 160, spa: 95, spd: 130, spe: 40},
+ abilities: {0: "Battle Bond"},
+ heightm: 2.2,
+ weightkg: 800,
+ color: "White",
+ eggGroups: ["Undiscovered"],
+ requiredAbility: "Battle Bond",
+ battleOnly: "Glastrier",
+ },
+ spectrier: {
+ num: 897,
+ name: "Spectrier",
+ types: ["Ghost"],
+ gender: "N",
+ baseStats: {hp: 100, atk: 85, def: 50, spa: 130, spd: 90, spe: 125},
+ abilities: {0: "Grim Neigh", S: "Battle Bond"},
+ heightm: 2,
+ weightkg: 44.5,
+ color: "Black",
+ eggGroups: ["Undiscovered"],
+ otherFormes: ["Spectrier-Soul"],
+ // non-activated Battle Bond is forme 1, but PS does not currently distinguish it
+ formeOrder: ["Spectrier", "Spectrier", "Spectrier-Soul"],
+ },
+ spectriersoul: {
+ num: 658,
+ name: "Spectrier-Soul",
+ baseSpecies: "Spectrier",
+ forme: "Soul",
+ types: ["Ghost", "Psychic"],
+ baseStats: {hp: 100, atk: 95, def: 70, spa: 160, spd: 110, spe: 145},
+ abilities: {0: "Battle Bond"},
+ heightm: 2,
+ weightkg: 44.5,
+ color: "Black",
+ eggGroups: ["Undiscovered"],
+ requiredAbility: "Battle Bond",
+ battleOnly: "Spectrier",
+ },
+ froslass: {
+ inherit: true,
+ otherFormes: ["Froslass-Mega"],
+ formeOrder: ["Froslass", "Froslass-Mega"],
+ },
+ froslassmega: {
+ num: 478,
+ name: "Froslass-Mega",
+ baseSpecies: "Froslass",
+ forme: "Mega",
+ types: ["Ice", "Ghost"],
+ baseStats: {hp: 70, atk: 100, def: 70, spa: 110, spd: 110, spe: 120},
+ abilities: {0: "Dry Ice"},
+ heightm: 1.3,
+ weightkg: 26.6,
+ color: "White",
+ requiredItem: "Froslassite",
+ },
+
+ decidueye: {
+ inherit: true,
+ abilities: {0: "Overgrow", 1: "Concealment", H: "Long Reach"},
+ otherFormes: ["Decidueye-Mega"],
+ formeOrder: ["Decidueye", "Decidueye-Mega"],
+ },
+ decidueyemega: {
+ num: 724,
+ name: "Decidueye-Mega",
+ baseSpecies: "Decidueye",
+ forme: "Mega",
+ types: ["Grass", "Ghost"],
+ genderRatio: {M: 0.875, F: 0.125},
+ baseStats: {hp: 78, atk: 127, def: 95, spa: 120, spd: 120, spe: 90},
+ abilities: {0: "Illusion"},
+ heightm: 1.6,
+ weightkg: 36.6,
+ color: "Brown",
+ requiredItem: "Deciduite",
+ },
+ grapploct: {
+ num: 853,
+ name: "Grapploct",
+ types: ["Fighting"],
+ baseStats: {hp: 118, atk: 80, def: 90, spa: 70, spd: 80, spe: 42},
+ abilities: {0: "Limber", 1: "Regenerator", H: "Technician"},
+ heightm: 1.6,
+ weightkg: 39,
+ color: "Blue",
+ prevo: "Clobbopus",
+ evoType: "levelMove",
+ evoMove: "Taunt",
+ eggGroups: ["Water 1", "Human-Like"],
+ },
+
+ frosmoth: {
+ num: 873,
+ name: "Frosmoth",
+ types: ["Ice", "Bug"],
+ baseStats: {hp: 60, atk: 55, def: 90, spa: 105, spd: 90, spe: 75},
+ abilities: {0: "Shield Dust", 1: "Fur Coat", H: "Ice Scales"},
+ heightm: 1.3,
+ weightkg: 42,
+ color: "White",
+ prevo: "Snom",
+ evoType: "levelFriendship",
+ evoCondition: "at night",
+ eggGroups: ["Bug"],
+ },
+ dugtrio: {
+ inherit: true,
+ otherFormes: ["Dugtrio-Alola", "Dugtrio-Mega"],
+ formeOrder: ["Dugtrio", "Dugtrio-Alola", "Dugtrio-Mega"],
+ },
+ dugtriomega: {
+ num: 51,
+ name: "Dugtrio",
+ types: ["Ground", "Bug"],
+ baseStats: {hp: 35, atk: 150, def: 90, spa: 50, spd: 70, spe: 130},
+ abilities: {0: "Sap Sipper"},
+ heightm: 0.7,
+ weightkg: 33.3,
+ color: "Brown",
+ requiredItem: "Dugtrionite",
+ },
+
+ //-------------------------------------------
+ //NEW POKEMON
+ //-------------------------------------------
+ snowshoo: {
+ num: 99.1,
+ name: "Snowshoo",
+ types: ["Normal", "Ice"],
+ baseStats: {hp: 60, atk: 65, def: 102, spa: 53, spd: 85, spe: 30},
+ abilities: {0: "Gluttony", 1: "Cheek Pouch", H: "Flurry Down"},
+ heightm: 0.4,
+ weightkg: 5.5,
+ color: "White",
+ evos: ["Harefrost"],
+ eggGroups: ["Field"],
+ },
+ harefrost: {
+ num: 99.2,
+ name: "Harefrost",
+ types: ["Normal", "Ice"],
+ baseStats: {hp: 80, atk: 95, def: 117, spa: 85, spd: 90, spe: 45},
+ abilities: {0: "Slush Rush", 1: "Cheek Pouch", H: "Flurry Down"},
+ heightm: 1,
+ weightkg: 42.4,
+ color: "White",
+ prevo: ["Snowshoo"],
+ eggGroups: ["Field"],
+ },
+ neuroboxin: {
+ num: 99.3,
+ name: "Neuroboxin",
+ types: ["Poison", "Fighting"],
+ baseStats: {hp: 114, atk: 72, def: 96, spa: 85, spd: 81, spe: 109},
+ abilities: {0: "Infiltrator", 1: "Sticky Hold", H: "Trace"},
+ heightm: 1.6,
+ weightkg: 39,
+ color: "Purple",
+ },
+ shadeo: {
+ num: 99.4,
+ name: "Shadeo",
+ gender: "N",
+ types: ["Ghost"],
+ baseStats: {hp: 70, atk: 105, def: 60, spa: 70, spd: 70, spe: 105},
+ abilities: {0: "Prankster"},
+ heightm: 0.5,
+ weightkg: 17,
+ color: "Gray",
+ },
+ pocketwatch: {
+ num: 99.5,
+ name: "UB Pocketwatch",
+ gender: "N",
+ types: ["Psychic", "Fighting"],
+ baseStats: {hp: 71, atk: 127, def: 127, spa: 23, spd: 23, spe: 199},
+ abilities: {0: "Beast Boost"},
+ heightm: 1,
+ weightkg: 34.5,
+ color: "Brown",
+ },
+ finneon: {
+ inherit: true,
+ otherFormes: ["Finneon-Alola"],
+ formeOrder: ["Finneon", "Finneon-Alola"],
+ },
+ finneonalola: {
+ num: 456,
+ name: "Finneon-Alola",
+ baseSpecies: "Finneon",
+ forme: "Alola",
+ types: ["Water", "Fairy"],
+ baseStats: {hp: 49, atk: 49, def: 56, spa: 49, spd: 61, spe: 66},
+ abilities: {0: "Swift Swim", 1: "Storm Drain", H: "Pastel Veil"},
+ heightm: 0.4,
+ weightkg: 7,
+ color: "Blue",
+ evos: ["Lumineon-Alola"],
+ eggGroups: ["Water 2", "Fairy"],
+ },
+ lumineon: {
+ inherit: true,
+ otherFormes: ["Lumineon-Alola"],
+ formeOrder: ["Lumineon", "Lumineon-Alola"],
+ },
+ lumineonalola: {
+ num: 457,
+ name: "Lumineon-Alola",
+ baseSpecies: "Lumineon",
+ forme: "Alola",
+ types: ["Water", "Fairy"],
+ baseStats: {hp: 69, atk: 69, def: 76, spa: 69, spd: 86, spe: 91},
+ abilities: {0: "Swift Swim", 1: "Storm Drain", H: "Pastel Veil"},
+ heightm: 1.2,
+ weightkg: 24,
+ color: "Blue",
+ prevo: "Finneon-Alola",
+ evoLevel: 31,
+ eggGroups: ["Water 2", "Fairy"],
+ },
+ teravole: {
+ num: 99.6,
+ name: "Teravole",
+ types: ["Electric"],
+ baseStats: {hp: 79, atk: 42, def: 94, spa: 89, spd: 124, spe: 67},
+ abilities: {0: "Regenerator", 1: "Static", H: "Triage"},
+ heightm: 0.5,
+ weightkg: 7.9,
+ color: "Yellow",
+ eggGroups: ["Field", "Fairy"],
+ },
+ emblob: {
+ num: 99.7,
+ name: "Emblob",
+ gender: "N",
+ types: ["Fire"],
+ baseStats: {hp: 55, atk: 75, def: 100, spa: 75, spd: 100, spe: 70},
+ abilities: {0: "Innards Out"},
+ heightm: 0.3,
+ weightkg: 4,
+ color: "Red",
+ eggGroups: ["Mineral"],
+ },
+ bunslinger: {
+ num: 99.8,
+ name: "Bunslinger",
+ types: ["Normal", "Grass"],
+ baseStats: {hp: 70, atk: 115, def: 86, spa: 66, spd: 66, spe: 84},
+ abilities: {0: "Skill Link", 1: "Technician", H: "Quick Draw"},
+ heightm: 1.2,
+ weightkg: 33.3,
+ color: "Brown",
+ eggGroups: ["Field", "Human-Like"],
+ },
+ stalagmight: {
+ num: 99.9,
+ name: "Stalagmight",
+ types: ["Rock"],
+ baseStats: {hp: 45, atk: 81, def: 118, spa: 35, spd: 47, spe: 118},
+ abilities: {0: "Sturdy", 1: "Contrary", H: "Limber"},
+ heightm: 1.2,
+ weightkg: 56,
+ color: "Brown",
+ eggGroups: ["Mineral"],
+ },
+ stalactice: {
+ num: 100.1,
+ name: "Stalactice",
+ types: ["Ice"],
+ baseStats: {hp: 65, atk: 91, def: 78, spa: 45, spd: 118, spe: 47},
+ abilities: {0: "Sturdy", 1: "Contrary", H: "Water Veil"},
+ heightm: 1.2,
+ weightkg: 36.3,
+ color: "White",
+ eggGroups: ["Mineral"],
+ },
+ magmalodon: {
+ num: 100.2,
+ name: "Magmalodon",
+ gender: "N",
+ types: ["Fire", "Dragon"],
+ //category: "Magma Mantle",
+ baseStats: {hp: 85, atk: 67, def: 111, spa: 82, spd: 111, spe: 94},
+ abilities: {0: "Clear Body", H: "Immunity"},
+ heightm: 1.6,
+ weightkg: 139,
+ color: "Red",
+ eggGroups: ["Undiscovered"],
+ },
+ blizzeraph: {
+ num: 100.3,
+ name: "Blizzeraph",
+ gender: "N",
+ types: ["Ice", "Flying"],
+ //category: "Snow Angel",
+ baseStats: {hp: 80, atk: 81, def: 103, spa: 87, spd: 86, spe: 113},
+ abilities: {0: "Competitive", H: "Magic Guard"},
+ heightm: 1.7,
+ weightkg: 55.4,
+ color: "Blue",
+ eggGroups: ["Undiscovered"],
+ },
+ primchilla: {
+ num: 100.4,
+ name: "Primchilla",
+ types: ["Normal"],
+ //category: "Fashionista",
+ baseStats: {hp: 85, atk: 105, def: 70, spa: 85, spd: 70, spe: 115},
+ abilities: {0: "Frisk"},
+ heightm: 0.4,
+ weightkg: 7.5,
+ color: "White",
+ eggGroups: ["Field"],
+ otherFormes: ["Primchilla-Specs", "Primchilla-Band", "Primchilla-Scarf"],
+ formeOrder: ["Primchilla", "Primchilla-Specs", "Primchilla-Band", "Primchilla-Scarf"],
+ },
+ primchillaspecs: {
+ num: 100.4,
+ name: "Primchilla-Specs",
+ baseSpecies: "Primchilla",
+ forme: "Specs",
+ types: ["Normal"],
+ baseStats: {hp: 85, atk: 95, def: 60, spa: 125, spd: 60, spe: 105},
+ abilities: {0: "Compound Eyes"},
+ heightm: 0.4,
+ weightkg: 7.5,
+ color: "White",
+ eggGroups: ["Field"],
+ battleOnly: "Primchilla",
+ },
+ primchillaband: {
+ num: 100.4,
+ name: "Primchilla-Band",
+ baseSpecies: "Primchilla",
+ forme: "Band",
+ types: ["Normal"],
+ baseStats: {hp: 85, atk: 135, def: 75, spa: 75, spd: 75, spe: 85},
+ abilities: {0: "Regenerator"},
+ heightm: 0.4,
+ weightkg: 7.5,
+ color: "White",
+ eggGroups: ["Field"],
+ battleOnly: "Primchilla",
+ },
+ primchillascarf: {
+ num: 100.4,
+ name: "Primchilla-Scarf",
+ baseSpecies: "Primchilla",
+ forme: "Scarf",
+ types: ["Normal"],
+ baseStats: {hp: 85, atk: 110, def: 60, spa: 110, spd: 60, spe: 105},
+ abilities: {0: "Fur Coat"},
+ heightm: 0.4,
+ weightkg: 7.5,
+ color: "White",
+ eggGroups: ["Field"],
+ battleOnly: "Primchilla",
+ },
+ chemacaw: {
+ num: 100.5,
+ name: "Chemacaw",
+ types: ["Poison", "Fire"],
+ baseStats: {hp: 55, atk: 115, def: 35, spa: 127, spd: 101, spe: 117},
+ abilities: {0: "Poison Touch", 1: "Aftermath", H: "Infiltrator"},
+ heightm: 1.2,
+ weightkg: 35,
+ color: "Black",
+ eggGroups: ["Undiscovered"],
+ },
+}
\ No newline at end of file
diff --git a/data/mods/inksandboxy/rulesets.ts b/data/mods/inksandboxy/rulesets.ts
new file mode 100644
index 0000000000..6008acc957
--- /dev/null
+++ b/data/mods/inksandboxy/rulesets.ts
@@ -0,0 +1,565 @@
+export const Formats: {[k: string]: FormatData} = {
+ /*
+ const IconCategories: {[k: string]: any} = {
+ regions: {
+ kanto: {},
+ johto: {},
+ hoenn: {},
+ sinnoh: {},
+ unova: {},
+ kalos: {},
+ alola: {},
+ galar: {}
+ },
+ types: {
+ bug: {
+ favored: ["alder", "emmet", "lian", "all:ninjaboy"],
+ exclusive: ["aaron", "all:bugcatcher", "all:bugmaniac", "all:bugsy", "burgh", "guzma",
+ "viola"]
+ },
+ dark: {
+ favored: ["adaman", "archer", "all:archie", "cyrus", "all:gladion", "marnie",
+ "all:maxie", "all:ninjaboy", "shadowtriad", "all:aqua", "all:magma", "all:yellgrunt"],
+ exclusive: ["all:grimsley", "all:karen", "nanu", "piers", "all:sidney"]
+ },
+ dragon: {
+ favored: ["adaman", "all:cynthia", "irida", "all:lance", "nurseryaide", "all:veteran",
+ "volo", "zinnia"],
+ exclusive: ["all:clair", "all:dragontamer", "all:drake", "drasna", "drayden", "iris",
+ "raihan"]
+ },
+ electric: {
+ favored: ["all:cameraman", "all:cyclist", "emmet", "all:guitarist", "all:rocker",
+ "all:supernerd"],
+ exclusive: ["clemont", "all:elesa", "all:ltsurge", "volkner", "all:wattson", "sophocles"]
+ },
+ fairy: {
+ favored: ["bede", "cogita"],
+ exclusive: ["bede-leader", "all:furisode", "all:mina", "opal"]
+ },
+ fighting: {
+ favored: ["all:mustard"],
+ exclusive: ["all:battlegirl", "bea", "all:blackbelt", "all:brawly", "all:bruno",
+ "all:chuck", "hala", "korrina", "marshal"]
+ },
+ fire: {
+ favored: ["all:magma", "all:maxie"],
+ exclusive: ["all:blaine", "chili", "all:firebreather", "all:flannery", "flint", "kabu",
+ "kiawe", "malva"]
+ },
+ flying: {
+ favored: ["all:cyclist", "cyrus", "all:lance"],
+ exclusive: ["all:birdkeeper", "falkner", "kahili", "pilot", "skyla", "all:winona"]
+ },
+ ghost: {
+ favored: [],
+ exclusive: ["acerola", "all:agatha", "allister", "all:channeler", "fantina",
+ "all:hexmaniac", "all:phoebe", "shauntal"]
+ },
+ grass: {
+ favored: ["adaman"],
+ exclusive: ["all:aromalady", "cilan", "all:erika", "gardenia", "mallow", "all:milo",
+ "ramos"]
+ },
+ ground: {
+ favored: ["all:giovanni", "all:hiker", "all:ruinmaniac"],
+ exclusive: ["bertha", "clay", "hapu"]
+ },
+ ice: {
+ favored: ["all:acetrainersnow", "irida", "workerice"],
+ exclusive: ["all:boarder", "brycen", "candice", "glacia", "all:lorelei", "melony",
+ "all:pryce", "all:skier", "wulfric"]
+ },
+ normal: {
+ favored: ["all:anabel", "calaba", "cheren", "mai", "mars", "all:youngster"],
+ exclusive: ["cheren-gen5bw2", "ilima", "lenora", "all:norman", "all:whitney"]
+ },
+ poison: {
+ favored: ["archer", "all:ninjaboy", "oleana"],
+ exclusive: ["jupiter", "all:koga", "petrel", "plumeria", "proton", "roxie"]
+ },
+ psychic: {
+ favored: ["all:anabel", "bede-leader", "irida", "all:ruinmaniac", "all:wally"],
+ exclusive: ["avery", "bede", "all:caitlin", "faba", "all:liza", "all:tate", "lucian",
+ "olympia", "all:psychic", "all:sabrina", "all:will"]
+ },
+ rock: {
+ favored: ["emmet", "all:hiker", "lian", "peonia", "all:ruinmaniac"],
+ exclusive: ["all:brock", "gordie", "olivia", "roark", "roxanne"]
+ },
+ steel: {
+ favored: ["adaman", "ingo", "all:steven", "all:supernerd"],
+ exclusive: ["byron", "jasmine:all", "molayne", "peony", "rose", "wikstrom"]
+ },
+ water: {
+ favored: ["adaman", "all:archie", "irida", "all:parasollady", "all:sailor", "all:aqua"],
+ exclusive: ["crasherwake", "all:fisher", "all:juan", "lana", "marlon", "all:misty",
+ "nessa", "siebold", "all:sisandbro", "all:swimmer", "all:tuber", "all:wallace"]
+ }
+ },
+ };
+ */
+ sandboxmod: {
+ effectType: 'Rule',
+ name: 'Sandbox Mod',
+ desc: "Allows customization of a Pokémon's types and stats based on its nickname.",
+ onBegin() { //This section handles custom Megas using the sandbox mega stones.
+ for (const pokemon of this.getAllPokemon()) {
+ if (!pokemon.set.name) return;
+ if (pokemon.set.name.substr(0, 1) === "*") {
+ if (['Mega Stone 1', 'Mega Stone 2', 'Mega Stone H'].includes(pokemon.getItem().name)) {
+ let newSpecies = this.dex.deepClone(pokemon.species);
+ switch (pokemon.set.name.substr(1, 1)) {//Primary type
+ case "a":
+ case "A":
+ newSpecies.types[0] = "Dragon";
+ break;
+ case "b":
+ case "B":
+ newSpecies.types[0] = "Bug";
+ break;
+ case "c":
+ case "C":
+ newSpecies.types[0] = "Psychic";
+ break;
+ case "d":
+ case "D":
+ newSpecies.types[0] = "Dark";
+ break;
+ case "e":
+ case "E":
+ newSpecies.types[0] = "Electric";
+ break;
+ case "f":
+ case "F":
+ newSpecies.types[0] = "Fairy";
+ break;
+ case "g":
+ case "G":
+ newSpecies.types[0] = "Grass";
+ break;
+ case "h":
+ case "H":
+ newSpecies.types[0] = "Fighting";
+ break;
+ case "i":
+ case "I":
+ newSpecies.types[0] = "Ice";
+ break;
+ case "k":
+ case "K":
+ newSpecies.types[0] = "Rock";
+ break;
+ case "n":
+ case "N":
+ newSpecies.types[0] = "Normal";
+ break;
+ case "o":
+ case "O":
+ newSpecies.types[0] = "Ghost";
+ break;
+ case "p":
+ case "P":
+ newSpecies.types[0] = "Poison";
+ break;
+ case "r":
+ case "R":
+ newSpecies.types[0] = "Fire";
+ break;
+ case "s":
+ case "S":
+ newSpecies.types[0] = "Steel";
+ break;
+ case "u":
+ case "U":
+ newSpecies.types[0] = "Ground";
+ break;
+ case "w":
+ case "W":
+ newSpecies.types[0] = "Water";
+ break;
+ case "y":
+ case "Y":
+ newSpecies.types[0] = "Flying";
+ break;
+ case "z":
+ case "Z":
+ newSpecies.types[0] = "";
+ break;
+ }
+ switch (pokemon.set.name.substr(2, 1)) {//Secondary type
+ case "a":
+ case "A":
+ newSpecies.types[1] = "Dragon";
+ break;
+ case "b":
+ case "B":
+ newSpecies.types[1] = "Bug";
+ break;
+ case "c":
+ case "C":
+ newSpecies.types[1] = "Psychic";
+ break;
+ case "d":
+ case "D":
+ newSpecies.types[1] = "Dark";
+ break;
+ case "e":
+ case "E":
+ newSpecies.types[1] = "Electric";
+ break;
+ case "f":
+ case "F":
+ newSpecies.types[1] = "Fairy";
+ break;
+ case "g":
+ case "G":
+ newSpecies.types[1] = "Grass";
+ break;
+ case "h":
+ case "H":
+ newSpecies.types[1] = "Fighting";
+ break;
+ case "i":
+ case "I":
+ newSpecies.types[1] = "Ice";
+ break;
+ case "k":
+ case "K":
+ newSpecies.types[1] = "Rock";
+ break;
+ case "n":
+ case "N":
+ newSpecies.types[1] = "Normal";
+ break;
+ case "o":
+ case "O":
+ newSpecies.types[1] = "Ghost";
+ break;
+ case "p":
+ case "P":
+ newSpecies.types[1] = "Poison";
+ break;
+ case "r":
+ case "R":
+ newSpecies.types[1] = "Fire";
+ break;
+ case "s":
+ case "S":
+ newSpecies.types[1] = "Steel";
+ break;
+ case "u":
+ case "U":
+ newSpecies.types[1] = "Ground";
+ break;
+ case "w":
+ case "W":
+ newSpecies.types[1] = "Water";
+ break;
+ case "y":
+ case "Y":
+ newSpecies.types[1] = "Flying";
+ break;
+ case "z":
+ case "Z":
+ newSpecies.types[1] = "";
+ break;
+ }
+ //Use isNaN() (lit. Not a Number) to allow for not modifying specific base stats if we want, by just inputting like, xxx
+ if (!isNaN(pokemon.set.name.substr(3, 3))) newSpecies.baseStats.atk = pokemon.set.name.substr(3, 3);
+ if (!isNaN(pokemon.set.name.substr(6, 3))) newSpecies.baseStats.def = pokemon.set.name.substr(6, 3);
+ if (!isNaN(pokemon.set.name.substr(9, 3))) newSpecies.baseStats.spa = pokemon.set.name.substr(9, 3);
+ if (!isNaN(pokemon.set.name.substr(12, 3))) newSpecies.baseStats.spd = pokemon.set.name.substr(12, 3);
+ if (!isNaN(pokemon.set.name.substr(15, 3))) newSpecies.baseStats.spe = pokemon.set.name.substr(15, 3);
+ newSpecies.baseSpecies = pokemon.baseSpecies;
+ newSpecies.abilities[0] = pokemon.ability;
+ newSpecies.forme = 'Mega';
+ newSpecies.name = pokemon.species.name + '-Mega';
+ pokemon.moddedMega = newSpecies;
+ pokemon.canMegaEvo = pokemon.moddedMega;
+ const abilities = pokemon.species.abilities;
+ let ability = abilities[0];
+ if (pokemon.getItem().name === 'Mega Stone 2' && abilities[1]) ability = abilities[1];
+ if (pokemon.getItem().name === 'Mega Stone H' && abilities['H']) ability = abilities['H'];
+ pokemon.setAbility(ability);
+ pokemon.baseAbility = ability as ID;
+ pokemon.ability = ability as ID;
+ }
+ }
+ }
+ },
+ onModifySpecies(species, target, source) {
+ if (!target.set.name) return;
+ if (source || !target?.side || ['Mega Stone 1', 'Mega Stone 2', 'Mega Stone H'].includes(target.getItem().name)) return;
+ //See if nickname+species qualifies for any presets/easter eggs, set a variable to true
+ if (target.set.name.substr(0, 1) === "*") {//Add "or (var)"
+ let newSpecies = this.dex.deepClone(species);
+ //If (var), use preset instead and then return newSpecies
+ switch (target.set.name.substr(1, 1)) {//Primary type
+ case "a":
+ case "A":
+ newSpecies.types[0] = "Dragon";
+ break;
+ case "b":
+ case "B":
+ newSpecies.types[0] = "Bug";
+ break;
+ case "c":
+ case "C":
+ newSpecies.types[0] = "Psychic";
+ break;
+ case "d":
+ case "D":
+ newSpecies.types[0] = "Dark";
+ break;
+ case "e":
+ case "E":
+ newSpecies.types[0] = "Electric";
+ break;
+ case "f":
+ case "F":
+ newSpecies.types[0] = "Fairy";
+ break;
+ case "g":
+ case "G":
+ newSpecies.types[0] = "Grass";
+ break;
+ case "h":
+ case "H":
+ newSpecies.types[0] = "Fighting";
+ break;
+ case "i":
+ case "I":
+ newSpecies.types[0] = "Ice";
+ break;
+ case "k":
+ case "K":
+ newSpecies.types[0] = "Rock";
+ break;
+ case "n":
+ case "N":
+ newSpecies.types[0] = "Normal";
+ break;
+ case "o":
+ case "O":
+ newSpecies.types[0] = "Ghost";
+ break;
+ case "p":
+ case "P":
+ newSpecies.types[0] = "Poison";
+ break;
+ case "r":
+ case "R":
+ newSpecies.types[0] = "Fire";
+ break;
+ case "s":
+ case "S":
+ newSpecies.types[0] = "Steel";
+ break;
+ case "u":
+ case "U":
+ newSpecies.types[0] = "Ground";
+ break;
+ case "w":
+ case "W":
+ newSpecies.types[0] = "Water";
+ break;
+ case "y":
+ case "Y":
+ newSpecies.types[0] = "Flying";
+ break;
+ case "z":
+ case "Z":
+ newSpecies.types[0] = "";
+ break;
+ }
+ switch (target.set.name.substr(2, 1)) {//Secondary type
+ case "a":
+ case "A":
+ newSpecies.types[1] = "Dragon";
+ break;
+ case "b":
+ case "B":
+ newSpecies.types[1] = "Bug";
+ break;
+ case "c":
+ case "C":
+ newSpecies.types[1] = "Psychic";
+ break;
+ case "d":
+ case "D":
+ newSpecies.types[1] = "Dark";
+ break;
+ case "e":
+ case "E":
+ newSpecies.types[1] = "Electric";
+ break;
+ case "f":
+ case "F":
+ newSpecies.types[1] = "Fairy";
+ break;
+ case "g":
+ case "G":
+ newSpecies.types[1] = "Grass";
+ break;
+ case "h":
+ case "H":
+ newSpecies.types[1] = "Fighting";
+ break;
+ case "i":
+ case "I":
+ newSpecies.types[1] = "Ice";
+ break;
+ case "k":
+ case "K":
+ newSpecies.types[1] = "Rock";
+ break;
+ case "n":
+ case "N":
+ newSpecies.types[1] = "Normal";
+ break;
+ case "o":
+ case "O":
+ newSpecies.types[1] = "Ghost";
+ break;
+ case "p":
+ case "P":
+ newSpecies.types[1] = "Poison";
+ break;
+ case "r":
+ case "R":
+ newSpecies.types[1] = "Fire";
+ break;
+ case "s":
+ case "S":
+ newSpecies.types[1] = "Steel";
+ break;
+ case "u":
+ case "U":
+ newSpecies.types[1] = "Ground";
+ break;
+ case "w":
+ case "W":
+ newSpecies.types[1] = "Water";
+ break;
+ case "y":
+ case "Y":
+ newSpecies.types[1] = "Flying";
+ break;
+ case "z":
+ case "Z":
+ newSpecies.types[1] = "";
+ break;
+ }
+ if (target.set.name.length > 3) {//Allow compatibility for JUST changing the type; if the rest is blank, dont zero stats
+ let offset = 0;
+ let mods = ["Y", "Z", "y", "z", "+", "-"];
+ /*
+ if (target.set.name.length > 18) {//Only account for HP if the name is longer than the old format (R.I.P.)
+ offset = 3;
+ //Use isNaN() to allow for not modifying specific base stats if we want, by just inputting like, xxx
+ if (!isNaN(target.set.name.substr(3, 3))) newSpecies.baseStats.hp = target.set.name.substr(3, 3);
+ }
+ */
+ //Check to see if we want to ADD or SUB
+ if (
+ target.set.name.substr(3, 3).toLowerCase() === "add" ||
+ target.set.name.substr(3, 3).toLowerCase() === "sub" ||
+ mods.includes(target.set.name.substr(3, 1))
+ ) {//2 digit stat modifications
+ let sign = (target.set.name.substr(3, 3).toLowerCase() === "sub") ? -1 : 1;
+ //Individual modifier logic
+ let m = new Array(6).fill(sign);
+ if (mods.includes(target.set.name.substr(3, 1))) {
+ let key = Array.from(target.set.name.substr(3, 3));
+ for (let k = 0; k < key.length; k++) {
+ //If lowercase (or -): negative. else positive
+ //If Z (or -): negative. else positive
+ m[k*2] = (key[k] === "+") ? 1 :
+ (key[k].toLowerCase() === key[k]) ? -1 : 1;
+ m[k*2 + 1] = (key[k] === "-") ? -1 :
+ (key[k].toLowerCase() === "z") ? -1 : 1;
+ }
+ }
+ if (!isNaN(target.set.name.substr(6, 2))) {
+ newSpecies.baseStats.hp = species.baseStats.hp + target.set.name.substr(6, 2)*m[0];
+ } if (!isNaN(target.set.name.substr(8, 2))) {
+ newSpecies.baseStats.atk = species.baseStats.atk + target.set.name.substr(8, 2)*m[1];
+ } if (!isNaN(target.set.name.substr(10, 2))) {
+ newSpecies.baseStats.def = species.baseStats.def + target.set.name.substr(10, 2)*m[2];
+ } if (!isNaN(target.set.name.substr(12, 2))) {
+ newSpecies.baseStats.spa = species.baseStats.spa + target.set.name.substr(12, 2)*m[3];
+ } if (!isNaN(target.set.name.substr(14, 2))) {
+ newSpecies.baseStats.spd = species.baseStats.spd + target.set.name.substr(14, 2)*m[4];
+ } if (!isNaN(target.set.name.substr(16, 2))) {
+ newSpecies.baseStats.spe = species.baseStats.spe + target.set.name.substr(16, 2)*m[5];
+ }
+ }
+ else {//3 digit stat assignments
+ if (!isNaN(target.set.name.substr(3 + offset, 3))) newSpecies.baseStats.atk = target.set.name.substr(3 + offset, 3);
+ if (!isNaN(target.set.name.substr(6 + offset, 3))) newSpecies.baseStats.def = target.set.name.substr(6 + offset, 3);
+ if (!isNaN(target.set.name.substr(9 + offset, 3))) newSpecies.baseStats.spa = target.set.name.substr(9 + offset, 3);
+ if (!isNaN(target.set.name.substr(12 + offset, 3))) newSpecies.baseStats.spd = target.set.name.substr(12 + offset, 3);
+ if (!isNaN(target.set.name.substr(15 + offset, 3))) newSpecies.baseStats.spe = target.set.name.substr(15 + offset, 3);
+ }
+ }
+ target.isModded = true;
+ return newSpecies;
+ }
+ },
+ //onSwitchInPriority, so we go before Data Mod 100% of the time
+ onSwitchInPriority: 1,
+ onSwitchIn(pokemon) {
+ let species = pokemon.species;
+ let switchedIn = pokemon.switchedIn;
+ if (pokemon.illusion) {
+ if (!pokemon.illusion.isModded) return;
+ species = pokemon.illusion.species;
+ this.add('-start', pokemon, 'typechange', species.types.join('/'), '[silent]');
+ if (pokemon.illusion.switchedIn) return;
+ pokemon.illusion.switchedIn = true;
+ } else {
+ if (!pokemon.isModded) return;
+ this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');
+ if (pokemon.switchedIn) return;
+ pokemon.switchedIn = true;
+ }
+ const baseStats = species.baseStats;
+ const type = species.types[0];
+ if (species.types[1]) {
+ const type2 = species.types[1];
+ this.add(`raw|
- ` + species.name + `
`);
+ } else {
+ this.add(`raw|- ` + species.name + `
`);
+ }
+ this.add(`raw|- HP
` + baseStats.hp + ` Atk
` + baseStats.atk + ` Def
` + baseStats.def + ` SpA
` + baseStats.spa + ` SpD
` + baseStats.spd + ` Spe
` + baseStats.spe + `
`);
+ },
+ //onDamagingHitOrder, so we go before Data Mod (and after Illusion wearing off, which I modded to have a priority of 1) 100% of the time
+ onDamagingHitOrder: 2,
+ onDamagingHit(damage, target, source, move) {
+ if (target.hasAbility('illusion')) { // making sure the correct information is given when an Illusion breaks
+ if (target.isModded) {
+ this.add('-start', target, 'typechange', target.species.types.join('/'), '[silent]');
+ if (!target.switchedIn) {
+ target.switchedIn = true;
+ let species = target.species;
+ const baseStats = species.baseStats;
+ const type = species.types[0];
+ if (species.types[1]) {
+ const type2 = species.types[1];
+ this.add(`raw|- ` + species.name + `
`);
+ } else {
+ this.add(`raw|- ` + species.name + `
`);
+ }
+ this.add(`raw|- HP
` + baseStats.hp + ` Atk
` + baseStats.atk + ` Def
` + baseStats.def + ` SpA
` + baseStats.spa + ` SpD
` + baseStats.spd + ` Spe
` + baseStats.spe + `
`);
+ }
+ } else {
+ const types = target.baseSpecies.types;
+ if (target.getTypes().join() === types.join()) {
+ this.add('-end', target, 'typechange', '[silent]');
+ }
+ }
+ }
+ },
+ },
+};
\ No newline at end of file
diff --git a/data/mods/inksdynamaxadventure/scripts.ts b/data/mods/inksandboxy/scripts.ts
similarity index 100%
rename from data/mods/inksdynamaxadventure/scripts.ts
rename to data/mods/inksandboxy/scripts.ts
diff --git a/data/mods/inksdynamaxadventure/sprites/back-shiny/readme.txt b/data/mods/inksandboxy/sprites/back-shiny/readme.txt
similarity index 100%
rename from data/mods/inksdynamaxadventure/sprites/back-shiny/readme.txt
rename to data/mods/inksandboxy/sprites/back-shiny/readme.txt
diff --git a/data/mods/inksdynamaxadventure/sprites/back/readme.txt b/data/mods/inksandboxy/sprites/back/readme.txt
similarity index 100%
rename from data/mods/inksdynamaxadventure/sprites/back/readme.txt
rename to data/mods/inksandboxy/sprites/back/readme.txt
diff --git a/data/mods/inksdynamaxadventure/sprites/front-shiny/readme.txt b/data/mods/inksandboxy/sprites/front-shiny/readme.txt
similarity index 100%
rename from data/mods/inksdynamaxadventure/sprites/front-shiny/readme.txt
rename to data/mods/inksandboxy/sprites/front-shiny/readme.txt
diff --git a/data/mods/inksdynamaxadventure/sprites/front/readme.txt b/data/mods/inksandboxy/sprites/front/readme.txt
similarity index 100%
rename from data/mods/inksdynamaxadventure/sprites/front/readme.txt
rename to data/mods/inksandboxy/sprites/front/readme.txt
diff --git a/data/mods/inksdynamaxadventure/sprites/icons/readme.txt b/data/mods/inksandboxy/sprites/icons/readme.txt
similarity index 100%
rename from data/mods/inksdynamaxadventure/sprites/icons/readme.txt
rename to data/mods/inksandboxy/sprites/icons/readme.txt
diff --git a/data/mods/inksdynamaxadventure/sprites/items/readme.txt b/data/mods/inksandboxy/sprites/items/readme.txt
similarity index 100%
rename from data/mods/inksdynamaxadventure/sprites/items/readme.txt
rename to data/mods/inksandboxy/sprites/items/readme.txt
diff --git a/data/mods/inksdynamaxadventure/conditions.ts b/data/mods/inksdynamaxadventure/conditions.ts
deleted file mode 100644
index 43a77bcaca..0000000000
--- a/data/mods/inksdynamaxadventure/conditions.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-export const Conditions: {[k: string]: ConditionData} = {
- dynamax: {
- name: 'Dynamax',
- noCopy: true,
- duration: 3,
- onStart(pokemon) {
- pokemon.removeVolatile('substitute');
- if (pokemon.volatiles['torment']) {
- delete pokemon.volatiles['torment'];
- this.add('-end', pokemon, 'Torment', '[silent]');
- }
- if (['cramorantgulping', 'cramorantgorging'].includes(pokemon.species.id) && !pokemon.transformed) {
- pokemon.formeChange('cramorant');
- }
- this.add('-start', pokemon, 'Dynamax');
- const gMaxSpecies = this.dex.getSpecies(pokemon.species.name + '-Gmax');
- if (pokemon.gigantamax && pokemon.canGigantamax) this.add('-formechange', pokemon, gMaxSpecies);
- if (pokemon.species.maxAb || gMaxSpecies.gMaxAb) {
- if (pokemon.gigantamax && pokemon.canGigantamax && gMaxSpecies.gMaxAb) {
- pokemon.setAbility(gMaxSpecies.gMaxAb[0]);
- this.add('-ability', pokemon, gMaxSpecies.gMaxAb[0]);
- }
- else {
- pokemon.setAbility(pokemon.species.maxAb[0]);
- this.add('-ability', pokemon, pokemon.species.maxAb[0]);
- }
- }
- if (pokemon.baseSpecies.name === 'Shedinja') return;
-
- // Changes based on dynamax level, 2 is max (at LVL 10)
- const ratio = this.format.id.startsWith('gen8doublesou') ? 1.5 : 2;
-
- pokemon.maxhp = Math.floor(pokemon.maxhp * ratio);
- pokemon.hp = Math.floor(pokemon.hp * ratio);
- this.add('-heal', pokemon, pokemon.getHealth, '[silent]');
- },
- onTryAddVolatile(status, pokemon) {
- if (status.id === 'flinch') return null;
- },
- onBeforeSwitchOutPriority: -1,
- onBeforeSwitchOut(pokemon) {
- pokemon.removeVolatile('dynamax');
- },
- onSourceModifyDamage(damage, source, target, move) {
- if (move.id === 'behemothbash' || move.id === 'behemothblade' || move.id === 'dynamaxcannon') {
- return this.chainModify(2);
- }
- },
- onDragOutPriority: 2,
- onDragOut(pokemon) {
- this.add('-block', pokemon, 'Dynamax');
- return null;
- },
- onResidualPriority: -100,
- onEnd(pokemon) {
- this.add('-end', pokemon, 'Dynamax');
- if (pokemon.canGigantamax) this.add('-formechange', pokemon, pokemon.species.name);
- if (pokemon.species.maxAb) {
- pokemon.setAbility(pokemon.baseAbility);
- this.add('-ability', pokemon, pokemon.baseAbility);
- }
- if (pokemon.baseSpecies.name === 'Shedinja') return;
- pokemon.hp = pokemon.getUndynamaxedHP();
- pokemon.maxhp = pokemon.baseMaxhp;
- this.add('-heal', pokemon, pokemon.getHealth, '[silent]');
- },
- },
-
-
-
-};
\ No newline at end of file
diff --git a/data/mods/inksdynamaxadventure/pokedex.ts b/data/mods/inksdynamaxadventure/pokedex.ts
deleted file mode 100644
index 46edbe9085..0000000000
--- a/data/mods/inksdynamaxadventure/pokedex.ts
+++ /dev/null
@@ -1,992 +0,0 @@
-export const Pokedex: {[speciesid: string]: ModdedSpeciesData} = {
- //-------------------------------------------
- //G-MAXES
- //-------------------------------------------
- venusaur: {
- inherit: true,
- },
-
- venusaurgmax: {
- num: 3,
- name: "Venusaur-Gmax",
- baseSpecies: "Venusaur",
- forme: "Gmax",
- types: ["Grass", "Poison"],
- genderRatio: {M: 0.875, F: 0.125},
- baseStats: {hp: 80, atk: 82, def: 83, spa: 100, spd: 100, spe: 80},
- abilities: {0: "Overgrow", H: "Chlorophyll"},
- heightm: 2,
- weightkg: 0,
- color: "Green",
- eggGroups: ["Monster", "Grass"],
- isGigantamax: "G-Max Vine Lash",
- },
-
- charizard: {
- inherit: true,
- },
-
- charizardgmax: {
- num: 6,
- name: "Charizard-Gmax",
- baseSpecies: "Charizard",
- forme: "Gmax",
- types: ["Fire", "Flying"],
- genderRatio: {M: 0.875, F: 0.125},
- baseStats: {hp: 78, atk: 84, def: 78, spa: 109, spd: 85, spe: 100},
- abilities: {0: "Blaze", H: "Solar Power"},
- heightm: 28,
- weightkg: 0,
- color: "Red",
- eggGroups: ["Monster", "Dragon"],
- isGigantamax: "G-Max Wildfire",
- },
-
- blastoise: {
- inherit: true,
- },
-
- blastoisegmax: {
- num: 9,
- name: "Blastoise-Gmax",
- baseSpecies: "Blastoise",
- forme: "Gmax",
- types: ["Water"],
- genderRatio: {M: 0.875, F: 0.125},
- baseStats: {hp: 79, atk: 83, def: 100, spa: 85, spd: 105, spe: 78},
- abilities: {0: "Torrent", H: "Rain Dish"},
- heightm: 1.6,
- weightkg: 0,
- color: "Blue",
- eggGroups: ["Monster", "Water 1"],
- isGigantamax: "G-Max Cannonade",
- },
-
- butterfree: {
- inherit: true,
- },
-
- butterfreegmax: {
- num: 12,
- name: "Butterfree-Gmax",
- baseSpecies: "Butterfree",
- forme: "Gmax",
- types: ["Bug", "Flying"],
- baseStats: {hp: 60, atk: 45, def: 50, spa: 90, spd: 80, spe: 70},
- abilities: {0: "Compound Eyes", H: "Tinted Lens"},
- heightm: 17,
- weightkg: 0,
- color: "White",
- eggGroups: ["Bug"],
- isGigantamax: "G-Max Befuddle",
- },
-
- pikachu: {
- inherit: true,
- },
-
- pikachugmax: {
- num: 25,
- name: "Pikachu-Gmax",
- baseSpecies: "Pikachu",
- forme: "Gmax",
- types: ["Electric"],
- baseStats: {hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90},
- abilities: {0: "Static", H: "Lightning Rod"},
- heightm: 21,
- weightkg: 0,
- color: "Yellow",
- eggGroups: ["Field", "Fairy"],
- isGigantamax: "G-Max Volt Crash",
- },
-
- machamp: {
- inherit: true,
- },
-
- machampgmax: {
- num: 68,
- name: "Machamp-Gmax",
- baseSpecies: "Machamp",
- forme: "Gmax",
- types: ["Fighting"],
- genderRatio: {M: 0.75, F: 0.25},
- baseStats: {hp: 90, atk: 130, def: 80, spa: 65, spd: 85, spe: 55},
- abilities: {0: "Guts", 1: "No Guard", H: "Steadfast"},
- heightm: 25,
- weightkg: 0,
- color: "Gray",
- eggGroups: ["Human-Like"],
- isGigantamax: "G-Max Chi Strike",
- },
-
- gengar: {
- inherit: true,
- },
-
- gengargmax: {
- num: 94,
- name: "Gengar-Gmax",
- baseSpecies: "Gengar",
- forme: "Gmax",
- types: ["Ghost", "Poison"],
- baseStats: {hp: 60, atk: 65, def: 60, spa: 130, spd: 75, spe: 110},
- abilities: {0: "Cursed Body"},
- heightm: 20,
- weightkg: 0,
- color: "Purple",
- eggGroups: ["Amorphous"],
- isGigantamax: "G-Max Terror",
- },
-
- kingler: {
- inherit: true,
- },
-
- kinglergmax: {
- num: 99,
- name: "Kingler-Gmax",
- baseSpecies: "Kingler",
- forme: "Gmax",
- types: ["Water"],
- baseStats: {hp: 55, atk: 130, def: 115, spa: 50, spd: 50, spe: 75},
- abilities: {0: "Hyper Cutter", 1: "Shell Armor", H: "Sheer Force"},
- heightm: 19,
- weightkg: 0,
- color: "Red",
- eggGroups: ["Water 3"],
- isGigantamax: "G-Max Foam Burst",
- },
-
- lapras: {
- inherit: true,
- },
-
- laprasgmax: {
- num: 131,
- name: "Lapras-Gmax",
- baseSpecies: "Lapras",
- forme: "Gmax",
- types: ["Water", "Ice"],
- baseStats: {hp: 130, atk: 85, def: 80, spa: 85, spd: 95, spe: 60},
- abilities: {0: "Water Absorb", 1: "Shell Armor", H: "Hydration"},
- heightm: 24,
- weightkg: 0,
- color: "Blue",
- eggGroups: ["Monster", "Water 1"],
- isGigantamax: "G-Max Resonance",
- },
-
- eevee: {
- inherit: true,
- maxAb: {0: "Wonder Guard"},
- },
-
- eeveegmax: {
- num: 133,
- name: "Eevee-Gmax",
- baseSpecies: "Eevee",
- forme: "Gmax",
- types: ["Normal"],
- genderRatio: {M: 0.875, F: 0.125},
- baseStats: {hp: 55, atk: 55, def: 50, spa: 45, spd: 65, spe: 55},
- abilities: {0: "Run Away", 1: "Adaptability", H: "Anticipation"},
- heightm: 18,
- weightkg: 0,
- color: "Brown",
- eggGroups: ["Field"],
- isGigantamax: "G-Max Cuddle",
- gMaxMoves: ["G-Max Cuddle", "G-Max Baddy Bad", "G-Max Glitzy Glow"],
- gMaxAb: {0: "Wonder Guard"},
- },
-
- snorlax: {
- inherit: true,
- maxAb: {0: "Intimidate"},
- },
-
- snorlaxgmax: {
- num: 143,
- name: "Snorlax-Gmax",
- baseSpecies: "Snorlax",
- forme: "Gmax",
- types: ["Normal"],
- genderRatio: {M: 0.875, F: 0.125},
- baseStats: {hp: 160, atk: 110, def: 65, spa: 65, spd: 110, spe: 30},
- abilities: {0: "Immunity", 1: "Thick Fat", H: "Gluttony"},
- heightm: 35,
- weightkg: 0,
- color: "Black",
- eggGroups: ["Monster"],
- isGigantamax: "G-Max Replenish",
- gMaxAb: {0: "Grassy Surge"},
- },
-
- garbodor: {
- inherit: true,
- },
-
- garbodorgmax: {
- num: 569,
- name: "Garbodor-Gmax",
- baseSpecies: "Garbodor",
- forme: "Gmax",
- types: ["Poison"],
- baseStats: {hp: 80, atk: 95, def: 82, spa: 60, spd: 82, spe: 75},
- abilities: {0: "Stench", 1: "Weak Armor", H: "Aftermath"},
- heightm: 21,
- weightkg: 0,
- color: "Green",
- eggGroups: ["Mineral"],
- isGigantamax: "G-Max Malodor",
- },
-
- melmetal: {
- inherit: true,
- },
-
- melmetalgmax: {
- num: 809,
- name: "Melmetal-Gmax",
- baseSpecies: "Melmetal",
- forme: "Gmax",
- types: ["Steel"],
- gender: "N",
- baseStats: {hp: 135, atk: 143, def: 143, spa: 80, spd: 65, spe: 34},
- abilities: {0: "Iron Fist"},
- heightm: 25,
- weightkg: 0,
- color: "Gray",
- eggGroups: ["Undiscovered"],
- isGigantamax: "G-Max Meltdown",
- },
-
- rillaboom: {
- inherit: true,
- },
-
- rillaboomgmax: {
- num: 812,
- name: "Rillaboom-Gmax",
- baseSpecies: "Rillaboom",
- forme: "Gmax",
- types: ["Grass"],
- genderRatio: {M: 0.875, F: 0.125},
- baseStats: {hp: 100, atk: 125, def: 90, spa: 60, spd: 70, spe: 85},
- abilities: {0: "Overgrow", H: "Grassy Surge"},
- heightm: 3,
- weightkg: 0,
- color: "Green",
- eggGroups: ["Field", "Grass"],
- isGigantamax: "G-Max Drum Solo",
- },
-
- cinderace: {
- inherit: true,
- abilities: {0: "Blaze", H: "Adaptability"},
- maxAb: {0: "Moxie"},
- },
-
- cinderacegmax: {
- num: 815,
- name: "Cinderace-Gmax",
- baseSpecies: "Cinderace",
- forme: "Gmax",
- types: ["Fire"],
- genderRatio: {M: 0.875, F: 0.125},
- baseStats: {hp: 80, atk: 116, def: 75, spa: 65, spd: 75, spe: 119},
- abilities: {0: "Blaze", H: "Adaptability"},
- heightm: 3,
- weightkg: 0,
- color: "White",
- eggGroups: ["Field", "Human-Like"],
- isGigantamax: "G-Max Fireball",
- gMaxAb: {0: "Libero"},
- },
-
- inteleon: {
- abilities: {0: "Torrent", H: "Quick Draw"},
- maxAb: {0: "Storm Drain"},
- inherit: true,
- },
-
- inteleongmax: {
- num: 818,
- name: "Inteleon-Gmax",
- baseSpecies: "Inteleon",
- forme: "Gmax",
- types: ["Water"],
- genderRatio: {M: 0.875, F: 0.125},
- baseStats: {hp: 70, atk: 85, def: 65, spa: 125, spd: 65, spe: 120},
- abilities: {0: "Torrent", H: "Quick Draw"},
- heightm: 3,
- weightkg: 0,
- color: "Blue",
- eggGroups: ["Water 1", "Field"],
- isGigantamax: "G-Max Hydrosnipe",
- gMaxAb: {0: "Download"},
- },
-
- corviknight: {
- inherit: true,
- },
-
- corviknightgmax: {
- num: 823,
- name: "Corviknight-Gmax",
- baseSpecies: "Corviknight",
- forme: "Gmax",
- types: ["Flying", "Steel"],
- baseStats: {hp: 98, atk: 87, def: 105, spa: 53, spd: 85, spe: 67},
- abilities: {0: "Pressure", 1: "Unnerve", H: "Mirror Armor"},
- heightm: 14,
- weightkg: 0,
- color: "Purple",
- eggGroups: ["Flying"],
- isGigantamax: "G-Max Wind Rage",
- },
-
- orbeetle: {
- inherit: true,
- },
-
- orbeetlegmax: {
- num: 826,
- name: "Orbeetle-Gmax",
- baseSpecies: "Orbeetle",
- forme: "Gmax",
- types: ["Bug", "Psychic"],
- baseStats: {hp: 60, atk: 45, def: 110, spa: 80, spd: 120, spe: 90},
- abilities: {0: "Swarm", 1: "Frisk", H: "Telepathy"},
- heightm: 14,
- weightkg: 0,
- color: "Red",
- eggGroups: ["Bug"],
- isGigantamax: "G-Max Gravitas",
- },
-
- drednaw: {
- inherit: true,
- },
-
- drednawgmax: {
- num: 834,
- name: "Drednaw-Gmax",
- baseSpecies: "Drednaw",
- forme: "Gmax",
- types: ["Water", "Rock"],
- baseStats: {hp: 90, atk: 115, def: 90, spa: 48, spd: 68, spe: 74},
- abilities: {0: "Strong Jaw", 1: "Shell Armor", H: "Swift Swim"},
- heightm: 24,
- weightkg: 0,
- color: "Green",
- eggGroups: ["Monster", "Water 1"],
- isGigantamax: "G-Max Stonesurge",
- },
-
- coalossal: {
- inherit: true,
- },
-
- coalossalgmax: {
- num: 839,
- name: "Coalossal-Gmax",
- baseSpecies: "Coalossal",
- forme: "Gmax",
- types: ["Rock", "Fire"],
- baseStats: {hp: 110, atk: 80, def: 120, spa: 80, spd: 90, spe: 30},
- abilities: {0: "Steam Engine", 1: "Flame Body", H: "Flash Fire"},
- heightm: 42,
- weightkg: 0,
- color: "Black",
- eggGroups: ["Mineral"],
- isGigantamax: "G-Max Volcalith",
- },
-
- flapple: {
- inherit: true,
- },
-
- flapplegmax: {
- num: 841,
- name: "Flapple-Gmax",
- baseSpecies: "Flapple",
- forme: "Gmax",
- types: ["Grass", "Dragon"],
- baseStats: {hp: 70, atk: 110, def: 80, spa: 95, spd: 60, spe: 70},
- abilities: {0: "Ripen", 1: "Gluttony", H: "Hustle"},
- heightm: 24,
- weightkg: 0,
- color: "Green",
- eggGroups: ["Grass", "Dragon"],
- isGigantamax: "G-Max Tartness",
- },
-
- appletun: {
- inherit: true,
- },
-
- appletungmax: {
- num: 842,
- name: "Appletun-Gmax",
- baseSpecies: "Appletun",
- forme: "Gmax",
- types: ["Grass", "Dragon"],
- baseStats: {hp: 110, atk: 85, def: 80, spa: 100, spd: 80, spe: 30},
- abilities: {0: "Ripen", 1: "Gluttony", H: "Thick Fat"},
- heightm: 24,
- weightkg: 0,
- color: "Green",
- eggGroups: ["Grass", "Dragon"],
- isGigantamax: "G-Max Sweetness",
- },
-
- sandaconda: {
- inherit: true,
- },
-
- sandacondagmax: {
- num: 844,
- name: "Sandaconda-Gmax",
- baseSpecies: "Sandaconda",
- forme: "Gmax",
- types: ["Ground"],
- baseStats: {hp: 72, atk: 107, def: 125, spa: 65, spd: 70, spe: 71},
- abilities: {0: "Sand Spit", 1: "Shed Skin", H: "Sand Veil"},
- heightm: 22,
- weightkg: 0,
- color: "Green",
- eggGroups: ["Field", "Dragon"],
- isGigantamax: "G-Max Sandblast",
- },
-
- toxtricity: {
- inherit: true,
- },
-
- toxtricitylowkey: {
- inherit: true,
- },
-
- toxtricitygmax: {
- num: 849,
- name: "Toxtricity-Gmax",
- baseSpecies: "Toxtricity",
- forme: "Gmax",
- types: ["Electric", "Poison"],
- baseStats: {hp: 75, atk: 98, def: 70, spa: 114, spd: 70, spe: 75},
- abilities: {0: "Punk Rock", 1: "Plus", H: "Technician"},
- heightm: 24,
- weightkg: 0,
- color: "Purple",
- eggGroups: ["Human-Like"],
- isGigantamax: "G-Max Stun Shock",
- },
- toxtricitylowkeygmax: {
- num: 849,
- name: "Toxtricity-Low-Key-Gmax",
- baseSpecies: "Toxtricity",
- forme: "Low-Key-Gmax",
- types: ["Electric", "Poison"],
- baseStats: {hp: 75, atk: 98, def: 70, spa: 114, spd: 70, spe: 75},
- abilities: {0: "Punk Rock", 1: "Plus", H: "Technician"},
- heightm: 24,
- weightkg: 0,
- color: "Purple",
- eggGroups: ["Human-Like"],
- isGigantamax: "G-Max Stun Shock",
- battleOnly: "Toxtricity-Low-Key",
- },
-
- centiskorch: {
- inherit: true,
- },
-
- centiskorchgmax: {
- num: 851,
- name: "Centiskorch-Gmax",
- baseSpecies: "Centiskorch",
- forme: "Gmax",
- types: ["Fire", "Bug"],
- baseStats: {hp: 100, atk: 115, def: 65, spa: 90, spd: 90, spe: 65},
- abilities: {0: "Flash Fire", 1: "White Smoke", H: "Flame Body"},
- heightm: 75,
- weightkg: 0,
- color: "Red",
- eggGroups: ["Bug"],
- isGigantamax: "G-Max Centiferno",
- },
-
- hatterene: {
- inherit: true,
- maxAb: {0: "Analytic"},
- },
- hatterenegmax: {
- num: 858,
- name: "Hatterene-Gmax",
- baseSpecies: "Hatterene",
- forme: "Gmax",
- types: ["Psychic", "Fairy"],
- gender: "F",
- baseStats: {hp: 57, atk: 90, def: 95, spa: 136, spd: 103, spe: 29},
- abilities: {0: "Healer", 1: "Anticipation", H: "Magic Bounce"},
- heightm: 26,
- weightkg: 0,
- color: "Pink",
- eggGroups: ["Fairy"],
- isGigantamax: "G-Max Smite",
- gMaxAb: {0: "Tangling Hair"},
- },
-
- grimmsnarl: {
- inherit: true,
- },
-
- grimmsnarlgmax: {
- num: 861,
- name: "Grimmsnarl-Gmax",
- baseSpecies: "Grimmsnarl",
- forme: "Gmax",
- types: ["Dark", "Fairy"],
- gender: "M",
- baseStats: {hp: 95, atk: 120, def: 65, spa: 95, spd: 75, spe: 60},
- abilities: {0: "Prankster", 1: "Frisk", H: "Pickpocket"},
- heightm: 32,
- weightkg: 0,
- color: "Purple",
- eggGroups: ["Fairy", "Human-Like"],
- isGigantamax: "G-Max Snooze",
- },
-
- alcremie: {
- inherit: true,
- },
-
- alcremiegmax: {
- num: 869,
- name: "Alcremie-Gmax",
- baseSpecies: "Alcremie",
- forme: "Gmax",
- types: ["Fairy"],
- gender: "F",
- baseStats: {hp: 65, atk: 60, def: 75, spa: 110, spd: 121, spe: 64},
- abilities: {0: "Sweet Veil", H: "Aroma Veil"},
- heightm: 30,
- weightkg: 0,
- color: "White",
- eggGroups: ["Fairy", "Amorphous"],
- isGigantamax: "G-Max Finale",
- },
-
- copperajah: {
- inherit: true,
- },
-
- copperajahgmax: {
- num: 879,
- name: "Copperajah-Gmax",
- baseSpecies: "Copperajah",
- forme: "Gmax",
- types: ["Steel"],
- baseStats: {hp: 122, atk: 130, def: 69, spa: 80, spd: 69, spe: 30},
- abilities: {0: "Sheer Force", H: "Heavy Metal"},
- heightm: 23,
- weightkg: 0,
- color: "Green",
- eggGroups: ["Field", "Mineral"],
- isGigantamax: "G-Max Steelsurge",
- },
-
- duraludon: {
- inherit: true,
- },
-
- duraludongmax: {
- num: 884,
- name: "Duraludon-Gmax",
- baseSpecies: "Duraludon",
- forme: "Gmax",
- types: ["Steel", "Dragon"],
- baseStats: {hp: 70, atk: 95, def: 115, spa: 120, spd: 50, spe: 85},
- abilities: {0: "Light Metal", 1: "Heavy Metal", H: "Stalwart"},
- heightm: 43,
- weightkg: 0,
- color: "White",
- eggGroups: ["Mineral", "Dragon"],
- isGigantamax: "G-Max Depletion",
- },
-
- urshifu: {
- inherit: true,
- },
-
- urshifurapidstrike: {
- inherit: true,
- },
-
- urshifugmax: {
- num: 892,
- name: "Urshifu-Gmax",
- baseSpecies: "Urshifu",
- forme: "Gmax",
- types: ["Fighting", "Dark"],
- genderRatio: {M: 0.875, F: 0.125},
- baseStats: {hp: 100, atk: 130, def: 100, spa: 63, spd: 60, spe: 97},
- abilities: {0: "Unseen Fist"},
- heightm: 3,
- weightkg: 0,
- color: "Gray",
- eggGroups: ["Undiscovered"],
- isGigantamax: "G-Max One Blow",
- },
-
- urshifurapidstrikegmax: {
- num: 892,
- name: "Urshifu-Rapid-Strike-Gmax",
- baseSpecies: "Urshifu",
- forme: "Rapid-Strike-Gmax",
- types: ["Fighting", "Water"],
- genderRatio: {M: 0.875, F: 0.125},
- baseStats: {hp: 100, atk: 130, def: 100, spa: 63, spd: 60, spe: 97},
- abilities: {0: "Unseen Fist"},
- heightm: 1.9,
- weightkg: 105,
- color: "Gray",
- eggGroups: ["Undiscovered"],
- isGigantamax: "G-Max Rapid Flow",
- battleOnly: "Urshifu-Rapid-Strike",
- },
-
- //-------------------------------------------
- //EDITED POKEMON + NEW MEGAS
- //-------------------------------------------
- moltresgalar: {
- num: 146,
- name: "Moltres-Galar",
- baseSpecies: "Moltres",
- forme: "Galar",
- types: ["Dark", "Flying"],
- gender: "N",
- //90/85/90/100/125/90
- baseStats: {hp: 90, atk: 100, def: 90, spa: 85, spd: 125, spe: 90},
- abilities: {0: "Berserk"},
- heightm: 2,
- weightkg: 66,
- color: "Red",
- eggGroups: ["Undiscovered"],
- },
-
- regieleki: {
- num: 894,
- name: "Regieleki",
- types: ["Electric"],
- gender: "N",
- baseStats: {hp: 80, atk: 80, def: 70, spa: 80, spd: 70, spe: 200},
- abilities: {0: "Reinitialize", 1: "Transistor", H: "Plus"},
- heightm: 1.2,
- weightkg: 145,
- color: "Yellow",
- eggGroups: ["Undiscovered"],
- },
- regidrago: {
- num: 895,
- name: "Regidrago",
- types: ["Dragon"],
- gender: "N",
- baseStats: {hp: 200, atk: 70, def: 80, spa: 70, spd: 80, spe: 80},
- abilities: {0: "Dragon's Maw", 1: "Dragon Overflow", H: "Minus"},
- heightm: 2.1,
- weightkg: 200,
- color: "Green",
- eggGroups: ["Undiscovered"],
- },
-
- glastrier: {
- num: 896,
- name: "Glastrier",
- types: ["Ice"],
- gender: "N",
- baseStats: {hp: 100, atk: 125, def: 130, spa: 85, spd: 110, spe: 30},
- abilities: {0: "Chilling Neigh", S: "Battle Bond"},
- heightm: 2.2,
- weightkg: 800,
- color: "White",
- eggGroups: ["Undiscovered"],
- otherFormes: ["Glastrier-Heart"],
- // non-activated Battle Bond is forme 1, but PS does not currently distinguish it
- formeOrder: ["Glastrier", "Glastrier", "Glastrier-Heart"],
- },
- glastrierheart: {
- num: 658,
- name: "Glastrier-Heart",
- baseSpecies: "Glastrier",
- forme: "Heart",
- types: ["Ice", "Psychic"],
- baseStats: {hp: 100, atk: 155, def: 160, spa: 95, spd: 130, spe: 40},
- abilities: {0: "Battle Bond"},
- heightm: 2.2,
- weightkg: 800,
- color: "White",
- eggGroups: ["Undiscovered"],
- requiredAbility: "Battle Bond",
- battleOnly: "Glastrier",
- },
- spectrier: {
- num: 897,
- name: "Spectrier",
- types: ["Ghost"],
- gender: "N",
- baseStats: {hp: 100, atk: 85, def: 50, spa: 130, spd: 90, spe: 125},
- abilities: {0: "Grim Neigh", S: "Battle Bond"},
- heightm: 2,
- weightkg: 44.5,
- color: "Black",
- eggGroups: ["Undiscovered"],
- otherFormes: ["Spectrier-Soul"],
- // non-activated Battle Bond is forme 1, but PS does not currently distinguish it
- formeOrder: ["Spectrier", "Spectrier", "Spectrier-Soul"],
- },
- spectriersoul: {
- num: 658,
- name: "Spectrier-Soul",
- baseSpecies: "Spectrier",
- forme: "Soul",
- types: ["Ghost", "Psychic"],
- baseStats: {hp: 100, atk: 95, def: 70, spa: 160, spd: 110, spe: 145},
- abilities: {0: "Battle Bond"},
- heightm: 2,
- weightkg: 44.5,
- color: "Black",
- eggGroups: ["Undiscovered"],
- requiredAbility: "Battle Bond",
- battleOnly: "Spectrier",
- },
- froslass: {
- inherit: true,
- otherFormes: ["Froslass-Mega"],
- formeOrder: ["Froslass", "Froslass-Mega"],
- },
- froslassmega: {
- num: 478,
- name: "Froslass-Mega",
- baseSpecies: "Froslass",
- forme: "Mega",
- types: ["Ice", "Ghost"],
- baseStats: {hp: 70, atk: 100, def: 70, spa: 110, spd: 110, spe: 120},
- abilities: {0: "Dry Ice"},
- heightm: 1.3,
- weightkg: 26.6,
- color: "White",
- requiredItem: "Froslassite",
- },
-
- decidueye: {
- inherit: true,
- abilities: {0: "Overgrow", 1: "Concealment", H: "Long Reach"},
- otherFormes: ["Decidueye-Mega"],
- formeOrder: ["Decidueye", "Decidueye-Mega"],
- },
- decidueyemega: {
- num: 724,
- name: "Decidueye-Mega",
- baseSpecies: "Decidueye",
- forme: "Mega",
- types: ["Grass", "Ghost"],
- genderRatio: {M: 0.875, F: 0.125},
- baseStats: {hp: 78, atk: 127, def: 95, spa: 120, spd: 120, spe: 90},
- abilities: {0: "Illusion"},
- heightm: 1.6,
- weightkg: 36.6,
- color: "Brown",
- requiredItem: "Deciduite",
- },
- grapploct: {
- num: 853,
- name: "Grapploct",
- types: ["Fighting"],
- baseStats: {hp: 118, atk: 80, def: 90, spa: 70, spd: 80, spe: 42},
- abilities: {0: "Limber", 1: "Regenerator", H: "Technician"},
- heightm: 1.6,
- weightkg: 39,
- color: "Blue",
- prevo: "Clobbopus",
- evoType: "levelMove",
- evoMove: "Taunt",
- eggGroups: ["Water 1", "Human-Like"],
- },
-
- falinks: {
- num: 870,
- name: "Falinks",
- types: ["Fighting", "Rock"],
- gender: "N",
- baseStats: {hp: 65, atk: 100, def: 100, spa: 70, spd: 60, spe: 90},
- abilities: {0: "Battle Armor", H: "Defiant"},
- heightm: 3,
- weightkg: 62,
- color: "Yellow",
- eggGroups: ["Fairy", "Mineral"],
- },
-
- frosmoth: {
- num: 873,
- name: "Frosmoth",
- types: ["Ice", "Bug"],
- baseStats: {hp: 60, atk: 55, def: 90, spa: 105, spd: 90, spe: 75},
- abilities: {0: "Shield Dust", 1: "Fur Coat", H: "Ice Scales"},
- heightm: 1.3,
- weightkg: 42,
- color: "White",
- prevo: "Snom",
- evoType: "levelFriendship",
- evoCondition: "at night",
- eggGroups: ["Bug"],
- },
- dugtrio: {
- inherit: true,
- otherFormes: ["Dugtrio-Alola", "Dugtrio-Mega"],
- formeOrder: ["Dugtrio", "Dugtrio-Alola", "Dugtrio-Mega"],
- },
- dugtriomega: {
- num: 51,
- name: "Dugtrio",
- types: ["Ground", "Bug"],
- baseStats: {hp: 35, atk: 150, def: 90, spa: 50, spd: 70, spe: 130},
- abilities: {0: "Sap Sipper"},
- heightm: 0.7,
- weightkg: 33.3,
- color: "Brown",
- requiredItem: "Dugtrionite",
- },
-
- //-------------------------------------------
- //NEW POKEMON
- //-------------------------------------------
- snowshoo: {
- num: 99.1,
- name: "Snowshoo",
- types: ["Normal", "Ice"],
- baseStats: {hp: 60, atk: 65, def: 102, spa: 53, spd: 85, spe: 30},
- abilities: {0: "Gluttony", 1: "Cheek Pouch", H: "Flurry Down"},
- heightm: 0.4,
- weightkg: 5.5,
- color: "White",
- evos: ["Harefrost"],
- eggGroups: ["Field"],
- },
- harefrost: {
- num: 99.2,
- name: "Harefrost",
- types: ["Normal", "Ice"],
- baseStats: {hp: 80, atk: 95, def: 117, spa: 85, spd: 90, spe: 45},
- abilities: {0: "Slush Rush", 1: "Cheek Pouch", H: "Flurry Down"},
- heightm: 1,
- weightkg: 42.4,
- color: "White",
- prevo: ["Snowshoo"],
- eggGroups: ["Field"],
- },
- neuroboxin: {
- num: 99.3,
- name: "Neuroboxin",
- types: ["Poison", "Fighting"],
- baseStats: {hp: 114, atk: 72, def: 96, spa: 85, spd: 81, spe: 109},
- abilities: {0: "Infiltrator", 1: "Sticky Hold", H: "Trace"},
- heightm: 1.6,
- weightkg: 39,
- color: "Purple",
- },
- shadeo: {
- num: 99.4,
- name: "Shadeo",
- types: ["Ghost"],
- baseStats: {hp: 70, atk: 105, def: 60, spa: 70, spd: 70, spe: 105},
- abilities: {0: "Prankster"},
- heightm: 0.5,
- weightkg: 17,
- color: "Gray",
- },
- pocketwatch: {
- num: 99.5,
- name: "UB Pocketwatch",
- types: ["Psychic", "Fighting"],
- baseStats: {hp: 71, atk: 127, def: 127, spa: 23, spd: 23, spe: 199},
- abilities: {0: "Beast Boost"},
- heightm: 1,
- weightkg: 34.5,
- color: "Brown",
- },
- finneon: {
- inherit: true,
- otherFormes: ["Finneon-Alola"],
- formeOrder: ["Finneon", "Finneon-Alola"],
- },
- finneonalola: {
- num: 456,
- name: "Finneon-Alola",
- baseSpecies: "Finneon",
- forme: "Alola",
- types: ["Water", "Fairy"],
- baseStats: {hp: 49, atk: 49, def: 56, spa: 49, spd: 61, spe: 66},
- abilities: {0: "Swift Swim", 1: "Storm Drain", H: "Pastel Veil"},
- heightm: 0.4,
- weightkg: 7,
- color: "Blue",
- evos: ["Lumineon-Alola"],
- eggGroups: ["Water 2", "Fairy"],
- },
- lumineon: {
- inherit: true,
- otherFormes: ["Lumineon-Alola"],
- formeOrder: ["Lumineon", "Lumineon-Alola"],
- },
- lumineonalola: {
- num: 457,
- name: "Lumineon-Alola",
- baseSpecies: "Lumineon",
- forme: "Alola",
- types: ["Water", "Fairy"],
- baseStats: {hp: 69, atk: 69, def: 76, spa: 69, spd: 86, spe: 91},
- abilities: {0: "Swift Swim", 1: "Storm Drain", H: "Pastel Veil"},
- heightm: 1.2,
- weightkg: 24,
- color: "Blue",
- prevo: "Finneon-Alola",
- evoLevel: 31,
- eggGroups: ["Water 2", "Fairy"],
- },
- teravole: {
- num: 99.6,
- name: "Teravole",
- types: ["Electric"],
- baseStats: {hp: 79, atk: 42, def: 94, spa: 89, spd: 124, spe: 67},
- abilities: {0: "Regenerator", 1: "Static", H: "Triage"},
- heightm: 0.5,
- weightkg: 7.9,
- color: "Yellow",
- eggGroups: ["Field", "Fairy"],
- },
- emblob: {
- num: 99.7,
- name: "Emblob",
- types: ["Fire"],
- baseStats: {hp: 55, atk: 75, def: 100, spa: 75, spd: 100, spe: 70},
- abilities: {0: "Innards Out"},
- heightm: 0.3,
- weightkg: 4,
- color: "Red",
- eggGroups: ["Mineral"],
- },
- bunslinger: {
- num: 99.8,
- name: "Bunslinger",
- types: ["Normal", "Grass"],
- baseStats: {hp: 70, atk: 115, def: 86, spa: 66, spd: 66, spe: 84},
- abilities: {0: "Skill Link", 1: "Technician", H: "Quick Draw"},
- heightm: 1.2,
- weightkg: 33.3,
- color: "Brown",
- eggGroups: ["Field", "Human-Like"],
- },
-
-}
\ No newline at end of file
diff --git a/data/mods/m4asandbox/abilities.ts b/data/mods/m4asandbox/abilities.ts
index b17433bc70..59f31f4f01 100644
--- a/data/mods/m4asandbox/abilities.ts
+++ b/data/mods/m4asandbox/abilities.ts
@@ -2999,6 +2999,8 @@ export const Abilities: {[abilityid: string]: ModdedAbilityData} = {
if (pokemon === pokemon.side.pokemon[i]) return;
pokemon.illusion = pokemon.side.pokemon[i];
},
+ //For sandbox mod utilichart. Hope this doesn't break anything:
+ onDamagingHitOrder: 1,
onDamagingHit(damage, target, source, move) {
if (target.illusion) {
this.singleEvent('End', this.dex.getAbility('Illusion'), target.abilityData, target, source, move);
diff --git a/data/mods/m4asandbox/rulesets.ts b/data/mods/m4asandbox/rulesets.ts
index f9e1ce5d2e..938f84a815 100644
--- a/data/mods/m4asandbox/rulesets.ts
+++ b/data/mods/m4asandbox/rulesets.ts
@@ -911,14 +911,13 @@ export const Formats: {[k: string]: FormatData} = {
effectType: 'Rule',
name: 'Sandbox Mod',
desc: "Allows customization of a Pokémon's types and stats based on its nickname.",
- onBegin() {
+ onBegin() { //This section handles custom Megas using the sandbox mega stones.
for (const pokemon of this.getAllPokemon()) {
- pokemon.m.originalSpecies = this.dex.getSpecies(pokemon.species.name); // MnM4A
if (!pokemon.set.name) return;
if (pokemon.set.name.substr(0, 1) === "*") {
if (['Mega Stone 1', 'Mega Stone 2', 'Mega Stone H'].includes(pokemon.getItem().name)) {
let newSpecies = this.dex.deepClone(pokemon.species);
- switch (pokemon.set.name.substr(1, 1)) {
+ switch (pokemon.set.name.substr(1, 1)) {//Primary type
case "a":
case "A":
newSpecies.types[0] = "Dragon";
@@ -969,7 +968,7 @@ export const Formats: {[k: string]: FormatData} = {
break;
case "p":
case "P":
- newSpecies.types[0] = "Poison";
+ newSpecies.types[0] = "Poison";
break;
case "r":
case "R":
@@ -996,7 +995,7 @@ export const Formats: {[k: string]: FormatData} = {
newSpecies.types[0] = "";
break;
}
- switch (pokemon.set.name.substr(2, 1)) {
+ switch (pokemon.set.name.substr(2, 1)) {//Secondary type
case "a":
case "A":
newSpecies.types[1] = "Dragon";
@@ -1047,7 +1046,7 @@ export const Formats: {[k: string]: FormatData} = {
break;
case "p":
case "P":
- newSpecies.types[1] = "Poison";
+ newSpecies.types[1] = "Poison";
break;
case "r":
case "R":
@@ -1074,11 +1073,12 @@ export const Formats: {[k: string]: FormatData} = {
newSpecies.types[1] = "";
break;
}
- newSpecies.baseStats.atk = pokemon.set.name.substr(3, 3);
- newSpecies.baseStats.def = pokemon.set.name.substr(6, 3);
- newSpecies.baseStats.spa = pokemon.set.name.substr(9, 3);
- newSpecies.baseStats.spd = pokemon.set.name.substr(12, 3);
- newSpecies.baseStats.spe = pokemon.set.name.substr(15, 3);
+ //Use isNaN() (lit. Not a Number) to allow for not modifying specific base stats if we want, by just inputting like, xxx
+ if (!isNaN(pokemon.set.name.substr(3, 3))) newSpecies.baseStats.atk = pokemon.set.name.substr(3, 3);
+ if (!isNaN(pokemon.set.name.substr(6, 3))) newSpecies.baseStats.def = pokemon.set.name.substr(6, 3);
+ if (!isNaN(pokemon.set.name.substr(9, 3))) newSpecies.baseStats.spa = pokemon.set.name.substr(9, 3);
+ if (!isNaN(pokemon.set.name.substr(12, 3))) newSpecies.baseStats.spd = pokemon.set.name.substr(12, 3);
+ if (!isNaN(pokemon.set.name.substr(15, 3))) newSpecies.baseStats.spe = pokemon.set.name.substr(15, 3);
newSpecies.baseSpecies = pokemon.baseSpecies;
newSpecies.abilities[0] = pokemon.ability;
newSpecies.forme = 'Mega';
@@ -1097,10 +1097,13 @@ export const Formats: {[k: string]: FormatData} = {
}
},
onModifySpecies(species, target, source) {
+ if (!target.set.name) return;
if (source || !target?.side || ['Mega Stone 1', 'Mega Stone 2', 'Mega Stone H'].includes(target.getItem().name)) return;
- if (target.set.name.substr(0, 1) === "*") {
+ //See if nickname+species qualifies for any presets/easter eggs, set a variable to true
+ if (target.set.name.substr(0, 1) === "*") {//Add "or (var)"
let newSpecies = this.dex.deepClone(species);
- switch (target.set.name.substr(1, 1)) {
+ //If (var), use preset instead and then return newSpecies
+ switch (target.set.name.substr(1, 1)) {//Primary type
case "a":
case "A":
newSpecies.types[0] = "Dragon";
@@ -1151,7 +1154,7 @@ export const Formats: {[k: string]: FormatData} = {
break;
case "p":
case "P":
- newSpecies.types[0] = "Poison";
+ newSpecies.types[0] = "Poison";
break;
case "r":
case "R":
@@ -1178,7 +1181,7 @@ export const Formats: {[k: string]: FormatData} = {
newSpecies.types[0] = "";
break;
}
- switch (target.set.name.substr(2, 1)) {
+ switch (target.set.name.substr(2, 1)) {//Secondary type
case "a":
case "A":
newSpecies.types[1] = "Dragon";
@@ -1229,7 +1232,7 @@ export const Formats: {[k: string]: FormatData} = {
break;
case "p":
case "P":
- newSpecies.types[1] = "Poison";
+ newSpecies.types[1] = "Poison";
break;
case "r":
case "R":
@@ -1256,46 +1259,65 @@ export const Formats: {[k: string]: FormatData} = {
newSpecies.types[1] = "";
break;
}
- newSpecies.baseStats.atk = target.set.name.substr(3, 3);
- newSpecies.baseStats.def = target.set.name.substr(6, 3);
- newSpecies.baseStats.spa = target.set.name.substr(9, 3);
- newSpecies.baseStats.spd = target.set.name.substr(12, 3);
- newSpecies.baseStats.spe = target.set.name.substr(15, 3);
- target.isModded = true;
- target.canMegaEvo = null;
- if (target.species.isMega) {
- const megaSpecies = this.doGetMixedSpecies(newSpecies, this.getMegaDeltas(this.dex.getSpecies(target.canMegaEvo)));
- return megaSpecies;
+ if (target.set.name.length > 3) {//Allow compatibility for JUST changing the type; if the rest is blank, dont zero stats
+ let offset = 0;
+ let mods = ["Y", "Z", "y", "z", "+", "-"];
+ /*
+ if (target.set.name.length > 18) {//Only account for HP if the name is longer than the old format (R.I.P.)
+ offset = 3;
+ //Use isNaN() to allow for not modifying specific base stats if we want, by just inputting like, xxx
+ if (!isNaN(target.set.name.substr(3, 3))) newSpecies.baseStats.hp = target.set.name.substr(3, 3);
+ }
+ */
+ //Check to see if we want to ADD or SUB
+ if (
+ target.set.name.substr(3, 3).toLowerCase() === "add" ||
+ target.set.name.substr(3, 3).toLowerCase() === "sub" ||
+ mods.includes(target.set.name.substr(3, 1))
+ ) {//2 digit stat modifications
+ let sign = (target.set.name.substr(3, 3).toLowerCase() === "sub") ? -1 : 1;
+ //Individual modifier logic
+ let m = new Array(6).fill(sign);
+ if (mods.includes(target.set.name.substr(3, 1))) {
+ let key = Array.from(target.set.name.substr(3, 3));
+ for (let k = 0; k < key.length; k++) {
+ //If lowercase (or -): negative. else positive
+ //If Z (or -): negative. else positive
+ m[k*2] = (key[k] === "+") ? 1 :
+ (key[k].toLowerCase() === key[k]) ? -1 : 1;
+ m[k*2 + 1] = (key[k] === "-") ? -1 :
+ (key[k].toLowerCase() === "z") ? -1 : 1;
+ }
+ }
+ if (!isNaN(target.set.name.substr(6, 2))) {
+ newSpecies.baseStats.hp = species.baseStats.hp + target.set.name.substr(6, 2)*m[0];
+ } if (!isNaN(target.set.name.substr(8, 2))) {
+ newSpecies.baseStats.atk = species.baseStats.atk + target.set.name.substr(8, 2)*m[1];
+ } if (!isNaN(target.set.name.substr(10, 2))) {
+ newSpecies.baseStats.def = species.baseStats.def + target.set.name.substr(10, 2)*m[2];
+ } if (!isNaN(target.set.name.substr(12, 2))) {
+ newSpecies.baseStats.spa = species.baseStats.spa + target.set.name.substr(12, 2)*m[3];
+ } if (!isNaN(target.set.name.substr(14, 2))) {
+ newSpecies.baseStats.spd = species.baseStats.spd + target.set.name.substr(14, 2)*m[4];
+ } if (!isNaN(target.set.name.substr(16, 2))) {
+ newSpecies.baseStats.spe = species.baseStats.spe + target.set.name.substr(16, 2)*m[5];
+ }
+ }
+ else {//3 digit stat assignments
+ if (!isNaN(target.set.name.substr(3 + offset, 3))) newSpecies.baseStats.atk = target.set.name.substr(3 + offset, 3);
+ if (!isNaN(target.set.name.substr(6 + offset, 3))) newSpecies.baseStats.def = target.set.name.substr(6 + offset, 3);
+ if (!isNaN(target.set.name.substr(9 + offset, 3))) newSpecies.baseStats.spa = target.set.name.substr(9 + offset, 3);
+ if (!isNaN(target.set.name.substr(12 + offset, 3))) newSpecies.baseStats.spd = target.set.name.substr(12 + offset, 3);
+ if (!isNaN(target.set.name.substr(15 + offset, 3))) newSpecies.baseStats.spe = target.set.name.substr(15 + offset, 3);
+ }
}
- target.m.originalSpecies = newSpecies;
- target.m.moddedSpecies = newSpecies;
+ target.isModded = true;
return newSpecies;
}
},
+ //onSwitchInPriority, so we go before Data Mod 100% of the time
+ onSwitchInPriority: 1,
onSwitchIn(pokemon) {
- // MnM4A
- if (pokemon.illusion) {
- const oMegaSpecies = this.dex.getSpecies(pokemon.illusion.species.originalMega);
- if (oMegaSpecies.exists) {
- // Place volatiles on the Pokémon to show its mega-evolved condition and details
- if (oMegaSpecies.requiredItem || oMegaSpecies.requiredMove) this.add('-start', pokemon, oMegaSpecies.requiredItem || oMegaSpecies.requiredMove, '[silent]');
- const oSpecies = this.dex.getSpecies(pokemon.illusion.m.originalSpecies);
- if (oSpecies.types.length !== pokemon.illusion.species.types.length || oSpecies.types[1] !== pokemon.species.types[1]) {
- this.add('-start', pokemon, 'typechange', pokemon.illusion.species.types.join('/'), '[silent]');
- }
- }
- } else {
- const oMegaSpecies = this.dex.getSpecies(pokemon.species.originalMega);
- if (oMegaSpecies.exists) {
- // Place volatiles on the Pokémon to show its mega-evolved condition and details
- if (oMegaSpecies.requiredItem || oMegaSpecies.requiredMove) this.add('-start', pokemon, oMegaSpecies.requiredItem || oMegaSpecies.requiredMove, '[silent]');
- const oSpecies = this.dex.getSpecies(pokemon.m.originalSpecies);
- if (oSpecies.types.length !== pokemon.species.types.length || oSpecies.types[1] !== pokemon.species.types[1]) {
- this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');
- }
- }
- }
- // Sandbox
let species = pokemon.species;
let switchedIn = pokemon.switchedIn;
if (pokemon.illusion) {
@@ -1320,13 +1342,8 @@ export const Formats: {[k: string]: FormatData} = {
}
this.add(`raw|- HP
` + baseStats.hp + ` Atk
` + baseStats.atk + ` Def
` + baseStats.def + ` SpA
` + baseStats.spa + ` SpD
` + baseStats.spd + ` Spe
` + baseStats.spe + `
`);
},
- onSwitchOut(pokemon) {
- // @ts-ignore
- const oMegaSpecies = this.dex.getSpecies(pokemon.species.originalMega);
- if (oMegaSpecies.exists) {
- this.add('-end', pokemon, oMegaSpecies.requiredItem || oMegaSpecies.requiredMove, '[silent]');
- }
- },
+ //onDamagingHitOrder, so we go before Data Mod (and after Illusion wearing off, which I modded to have a priority of 1) 100% of the time
+ onDamagingHitOrder: 2,
onDamagingHit(damage, target, source, move) {
if (target.hasAbility('illusion')) { // making sure the correct information is given when an Illusion breaks
if (target.isModded) {
diff --git a/data/mods/m4av6/sprites/icons/delibirdmegafestiverider.png b/data/mods/m4av6/sprites/icons/delibirdmegafestiverider.png
deleted file mode 100644
index 8e9a1ec79b..0000000000
Binary files a/data/mods/m4av6/sprites/icons/delibirdmegafestiverider.png and /dev/null differ
diff --git a/data/mods/inksrandbats/abilities.ts b/mod archive/inksrandbats/abilities.ts
similarity index 100%
rename from data/mods/inksrandbats/abilities.ts
rename to mod archive/inksrandbats/abilities.ts
diff --git a/data/mods/inksrandbats/conditions.ts b/mod archive/inksrandbats/conditions.ts
similarity index 100%
rename from data/mods/inksrandbats/conditions.ts
rename to mod archive/inksrandbats/conditions.ts
diff --git a/data/mods/inksrandbats/formats-data.ts b/mod archive/inksrandbats/formats-data.ts
similarity index 100%
rename from data/mods/inksrandbats/formats-data.ts
rename to mod archive/inksrandbats/formats-data.ts
diff --git a/data/mods/inksrandbats/moves.ts b/mod archive/inksrandbats/moves.ts
similarity index 100%
rename from data/mods/inksrandbats/moves.ts
rename to mod archive/inksrandbats/moves.ts
diff --git a/data/mods/inksrandbats/pokedex.ts b/mod archive/inksrandbats/pokedex.ts
similarity index 100%
rename from data/mods/inksrandbats/pokedex.ts
rename to mod archive/inksrandbats/pokedex.ts
diff --git a/data/mods/inksrandbats/random-teams.ts b/mod archive/inksrandbats/random-teams.ts
similarity index 100%
rename from data/mods/inksrandbats/random-teams.ts
rename to mod archive/inksrandbats/random-teams.ts
diff --git a/data/mods/inksrandbats/rulesets.ts b/mod archive/inksrandbats/rulesets.ts
similarity index 100%
rename from data/mods/inksrandbats/rulesets.ts
rename to mod archive/inksrandbats/rulesets.ts