export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable = {
	standard: {
		effectType: 'ValidatorRule',
		name: 'Standard',
		ruleset: [
			'Standard AG',
			'Sleep Clause Mod', 'Freeze Clause Mod', 'Species Clause', 'Nickname Clause', 'OHKO Clause', 'Evasion Moves Clause',
		],
		banlist: ['Dig', 'Fly'],
	},
	nc1997movelegality: {
		effectType: 'ValidatorRule',
		name: 'NC 1997 Move Legality',
		desc: "Bans move combinations on Pok\u00e9mon that would only be obtainable in Pok\u00e9mon Yellow.",
		banlist: [
			// https://www.smogon.com/forums/threads/rby-and-gsc-illegal-movesets.78638/
			// https://www.smogon.com/forums/threads/rby-tradebacks-bug-report-thread.3524844/post-9235903
			// Due to Yellow learnset modifications not applying, there are a few more incompatibilities than usual.
			'Nidoking + Fury Attack + Thrash', 'Nidoking + Double Kick + Thrash',
			'Butterfree + Tackle + Harden', 'Butterfree + String Shot + Harden',
			'Exeggutor + Poison Powder + Stomp', 'Exeggutor + Sleep Powder + Stomp', 'Exeggutor + Stun Spore + Stomp',
			'Eevee + Tackle + Growl',
			'Vaporeon + Tackle + Growl',
			'Jolteon + Tackle + Growl', 'Jolteon + Focus Energy + Thunder Shock',
			'Flareon + Tackle + Growl', 'Flareon + Focus Energy + Ember',
		],
		onValidateSet(set) {
			const rgb97Legality: { [speciesid: string]: { [moveid: string]: 'illegal' | number } } = {
				charizard: { fly: 'illegal' },
				butterfree: {
					confusion: 12, poisonpowder: 15, stunspore: 16, sleeppowder: 17, supersonic: 21,
					psybeam: 34, flash: 'illegal', gust: 'illegal',
				},
				fearow: { payday: 'illegal' },
				pikachu: { quickattack: 16, tailwhip: 'illegal', slam: 'illegal', lightscreen: 'illegal' },
				raichu: { quickattack: 16, tailwhip: 'illegal', slam: 'illegal', lightscreen: 'illegal' },
				nidoranf: { doublekick: 43 },
				nidorina: { doublekick: 43 },
				nidoqueen: { doublekick: 43 },
				nidoranm: { doublekick: 43 },
				nidorino: { doublekick: 43 },
				nidoking: { doublekick: 43 },
				venonat: { poisonpowder: 24, supersonic: 'illegal', confusion: 'illegal' },
				venomoth: { poisonpowder: 24, supersonic: 'illegal' },
				diglett: { cut: 'illegal' },
				dugtrio: { cut: 'illegal' },
				psyduck: { amnesia: 'illegal' },
				golduck: { amnesia: 'illegal' },
				mankey: { lowkick: 'illegal', screech: 'illegal' },
				primeape: { lowkick: 'illegal', screech: 'illegal' },
				kadabra: { kinesis: 'illegal' },
				alakazam: { kinesis: 'illegal' },
				rapidash: { payday: 'illegal' },
				cubone: { tailwhip: 'illegal', headbutt: 'illegal' },
				marowak: { tailwhip: 'illegal', headbutt: 'illegal' },
				chansey: { tailwhip: 'illegal' },
				tangela: { absorb: 29, growth: 49, vinewhip: 'illegal' },
				scyther: { wingattack: 'illegal' },
				pinsir: { bind: 'illegal' },
				magikarp: { dragonrage: 'illegal' },
				eevee: { quickattack: 27, tailwhip: 31, bite: 37, growl: 'illegal', focusenergy: 'illegal' },
				vaporeon: {
					quickattack: 27, tailwhip: 31, watergun: 31, bite: 37, acidarmor: 42, haze: 44, mist: 48, hydropump: 54,
					growl: 'illegal', focusenergy: 'illegal', aurorabeam: 'illegal',
				},
				jolteon: {
					quickattack: 27, tailwhip: 31, thundershock: 31, bite: 37, doublekick: 42, agility: 44,
					pinmissile: 48, growl: 'illegal', focusenergy: 'illegal',
				},
				flareon: {
					quickattack: 27, tailwhip: 31, ember: 31, bite: 37, leer: 42, firespin: 44, flamethrower: 54,
					growl: 'illegal', focusenergy: 'illegal', smog: 'illegal',
				},
			};
			const species = this.dex.species.get(set.species || set.name);
			const legalityList = rgb97Legality[species.id];
			if (!legalityList) return;
			const problems = [];
			if (set.moves) {
				for (const moveid of set.moves.map(this.toID)) {
					const legality = legalityList[moveid];
					if (legality) {
						if (legality === 'illegal') {
							problems.push(`${set.species} can't learn ${this.dex.moves.get(moveid).name} in 1997.`);
						} else if (set.level < legality) {
							problems.push(`${set.species} can't learn ${this.dex.moves.get(moveid).name} before level ${legalityList[moveid]} in 1997.`);
						}
					}
				}
			}
			return problems;
		},
	},
};
