export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
	// Archas
	lilligantiumz: {
		name: "Lilligantium Z",
		spritenum: 633,
		onTakeItem: false,
		zMove: "Aura Rain",
		zMoveFrom: "Quiver Dance",
		itemUser: ["Lilligant"],
		desc: "If held by a Lilligant with Quiver Dance, it can use Aura Rain.",
	},
	// Arya
	flygonite: {
		name: "Flygonite",
		spritenum: 111,
		itemUser: ["Flygon"],
		megaStone: { "Flygon": "Trapinch" },
		onTakeItem(item, source) {
			return !item.megaStone?.[source.baseSpecies.baseSpecies];
		},
		desc: "If held by a Flygon, this item allows it to Mega Evolve in battle.",
	},
	// Irpachuza
	irpatuziniumz: {
		name: "Irpatuzinium Z",
		spritenum: 648,
		onTakeItem: false,
		zMove: "Bibbidi-Bobbidi-Rands",
		zMoveFrom: "Fleur Cannon",
		itemUser: ["Mr. Mime"],
		desc: "If held by a Mr. Mime with Fleur Cannon, it can use Bibbidi-Bobbidi-Rands.",
	},
	// Loethalion
	gardevoirite: {
		inherit: true,
		itemUser: ["Ralts"],
		megaStone: { "Ralts": "Gardevoir-Mega" },
		desc: "If held by a Ralts, this item allows it to Mega Evolve in battle.",
	},
	// Peary
	pearyumz: {
		name: "Pearyum Z",
		spritenum: 647,
		onTakeItem: false,
		zMove: "1000 Gears",
		zMoveFrom: "Gear Grind",
		itemUser: ["Klinklang"],
		desc: "If held by a Klinklang with Gear Grind, it can use 1000 Gears.",
	},
	// Rainshaft
	rainiumz: {
		name: "Rainium Z",
		spritenum: 652,
		onTakeItem: false,
		zMove: "Hatsune Miku's Lucky Orb",
		zMoveFrom: "Sparkling Aria",
		itemUser: ["Xerneas"],
		desc: "If held by a Xerneas with Sparkling Aria, it can use Hatsune Miku's Lucky Orb.",
	},

	// Modified for other effects

	eviolite: {
		inherit: true,
		onModifyDef(def, pokemon) {
			// Added Pichu-Spiky-eared for Hydrostatics to use Eviolite
			if (pokemon.baseSpecies.nfe || pokemon.species.id === 'pichuspikyeared') {
				return this.chainModify(1.5);
			}
		},
		onModifySpD(spd, pokemon) {
			// Added Pichu-Spiky-eared for Hydrostatics to use Eviolite
			if (pokemon.baseSpecies.nfe || pokemon.species.id === 'pichuspikyeared') {
				return this.chainModify(1.5);
			}
		},
	},

	// modified for nya's ability
	focusband: {
		inherit: true,
		onDamage(damage, target, source, effect) {
			const chance = target.hasAbility('adorablegrace') ? 2 : 1;
			if (this.randomChance(chance, 10) && damage >= target.hp && effect && effect.effectType === 'Move') {
				this.add("-activate", target, "item: Focus Band");
				return target.hp - 1;
			}
		},
	},
	quickclaw: {
		inherit: true,
		onFractionalPriority(priority, pokemon) {
			const chance = pokemon.hasAbility('adorablegrace') ? 2 : 1;
			if (priority <= 0 && this.randomChance(chance, 5)) {
				this.add('-activate', pokemon, 'item: Quick Claw');
				return 0.1;
			}
		},
	},

	// modified for SexyMalasada's ability
	lifeorb: {
		inherit: true,
		onAfterMoveSecondarySelf(source, target, move) {
			if (source && source !== target && move && move.category !== 'Status' && !source.forceSwitchFlag) {
				if (source.hasAbility('Ancestry Ritual')) {
					this.heal(source.baseMaxhp / 10, source, source, this.dex.items.get('lifeorb'));
				} else {
					this.damage(source.baseMaxhp / 10, source, source, this.dex.items.get('lifeorb'));
				}
			}
		},
	},

	safetygoggles: {
		inherit: true,
		onImmunity(type, pokemon) {
			if (type === 'sandstorm' || type === 'deserteddunes' || type === 'hail' || type === 'powder') return false;
		},
	},
	utilityumbrella: {
		inherit: true,
		onStart(pokemon) {
			if (!pokemon.ignoringItem()) return;
			if (['sunnyday', 'raindance', 'desolateland', 'primordialsea', 'stormsurge'].includes(this.field.effectiveWeather())) {
				this.runEvent('WeatherChange', pokemon, pokemon, this.effect);
			}
		},
		onUpdate(pokemon) {
			if (!this.effectState.inactive) return;
			this.effectState.inactive = false;
			if (['sunnyday', 'raindance', 'desolateland', 'primordialsea', 'stormsurge'].includes(this.field.effectiveWeather())) {
				this.runEvent('WeatherChange', pokemon, pokemon, this.effect);
			}
		},
		onEnd(pokemon) {
			if (['sunnyday', 'raindance', 'desolateland', 'primordialsea', 'stormsurge'].includes(this.field.effectiveWeather())) {
				this.runEvent('WeatherChange', pokemon, pokemon, this.effect);
			}
			this.effectState.inactive = true;
		},
	},
};
