import {
  BasicAttribute,
  CharacterBuffDurationType,
  CharacterBuffType,
  EntityAttackType,
  EntityEffectBlueprint,
  IFaqItem,
  IInformationCenterItem,
  IInformationCenterNPC,
  ItemRarities,
  ItemSlotType,
  ItemSubType,
  ItemType,
  IVideoGuide,
  LootProbability,
  MovementSpeed,
  NPCAlignment,
  NPCSubtype,
  RangeTypes,
  SpellsBlueprint,
  VideoGuideCategory,
  VideoGuideLanguage
} from '@rpg-engine/shared';


export const mockBestiaryItems: IInformationCenterNPC[] = [
  {
    id: '1',
    name: 'Yellow Dragon',
    key: 'yellow-dragon-02/down/standing/0.png',
    subType: NPCSubtype.Dragon,
    alignment: NPCAlignment.Hostile,
    attackType: EntityAttackType.Melee,
    maxRangeAttack: RangeTypes.High,
    speed: MovementSpeed.Standard,
    baseHealth: 5000,
    isBoss: true,
    skills: {
      level: 300,
      strength: { level: 280 },
      dexterity: { level: 260 },
      resistance: { level: 290 },
    },
    fleeOnLowHealth: false,
    entityEffects: [EntityEffectBlueprint.Burning],
    areaSpells: [
      {
        spellKey: 'VampiricStorm',
        texturePath: 'spell-icons/vampiric-storm.png',
        probability: 35,
        power: 'UltraHigh',
      },
      {
        spellKey: 'ArrowCreationSpell',
        texturePath: 'spell-icons/arrow-creation-spell.png',
        probability: 45,
        power: 'High',
      },
    ],
    loots: [
      {
        itemBlueprintKey: 'maces/dragonscale-cleaver-club.png',
        chance: LootProbability.Uncommon,
      },
      {
        itemBlueprintKey: 'staffs/thunder-bolt-staff.png',
        chance: LootProbability.Rare,
      },
      {
        itemBlueprintKey: 'crafting-resources/dragon-tooth.png',
        chance: LootProbability.Uncommon,
        quantityRange: [1, 3],
      },
    ],
  },
  {
    id: '2',
    name: 'Orc Warrior',
    key: 'orc-warrior/down/standing/0.png',
    subType: NPCSubtype.Humanoid,
    alignment: NPCAlignment.Hostile,
    attackType: EntityAttackType.Melee,
    maxRangeAttack: RangeTypes.High,
    speed: MovementSpeed.Standard,
    baseHealth: 800,
    isBoss: false,
    skills: {
      level: 85,
      strength: { level: 95 },
      dexterity: { level: 75 },
      resistance: { level: 80 },
    },
    fleeOnLowHealth: false,
    entityEffects: [EntityEffectBlueprint.Bleeding, EntityEffectBlueprint.Rage],
    areaSpells: [
      {
        spellKey: 'WarCry',
        probability: 25,
        power: 'Medium',
        texturePath: ''
      },
    ],
    loots: [
      {
        itemBlueprintKey: 'crafting-resources/leather.png',
        chance: LootProbability.Uncommon,
      },
      {
        itemBlueprintKey: 'crafting-resources/herb.png',
        chance: LootProbability.Common,
        quantityRange: [1, 4],
      },
    ],
  },
  {
    id: '3',
    name: 'Ancient Skeleton',
    key: 'skeleton/down/standing/0.png',
    subType: NPCSubtype.Undead,
    alignment: NPCAlignment.Hostile,
    attackType: EntityAttackType.Melee,
    maxRangeAttack: RangeTypes.High,
    speed: MovementSpeed.Standard,
    baseHealth: 400,
    isBoss: false,
    skills: {
      level: 45,
      strength: { level: 50 },
      dexterity: { level: 60 },
      resistance: { level: 40 },
    },
    fleeOnLowHealth: false,
    entityEffects: [
      EntityEffectBlueprint.Curse,
      EntityEffectBlueprint.Weakness,
    ],
    areaSpells: [
      {
        spellKey: 'BoneShards',
        probability: 20,
        power: 'Medium',
        texturePath: ''
      },
    ],
    loots: [
      {
        itemBlueprintKey: 'RustySword',
        chance: LootProbability.Common,
      },
      {
        itemBlueprintKey: 'BoneDust',
        chance: LootProbability.Uncommon,
        quantityRange: [1, 3],
      },
    ],
  },
  {
    id: '4',
    name: 'Dire Wolf',
    key: 'wolf/down/standing/0.png',
    subType: NPCSubtype.Animal,
    alignment: NPCAlignment.Hostile,
    attackType: EntityAttackType.Melee,
    maxRangeAttack: RangeTypes.High,
    speed: MovementSpeed.Fast,
    baseHealth: 350,
    isBoss: false,
    skills: {
      level: 40,
      strength: { level: 45 },
      dexterity: { level: 65 },
      resistance: { level: 35 },
    },
    fleeOnLowHealth: true,
    entityEffects: [
      EntityEffectBlueprint.Bleeding,
      EntityEffectBlueprint.Cripple,
    ],
    areaSpells: [],
    loots: [
      {
        itemBlueprintKey: 'WolfFang',
        chance: LootProbability.Common,
        quantityRange: [1, 2],
      },
      {
        itemBlueprintKey: 'WolfPelt',
        chance: LootProbability.Uncommon,
      },
    ],
  },
  {
    id: '5',
    name: 'Minotaur',
    key: 'minotaur/down/standing/0.png',
    subType: NPCSubtype.Animal,
    alignment: NPCAlignment.Hostile,
    attackType: EntityAttackType.Melee,
    maxRangeAttack: RangeTypes.High,
    speed: MovementSpeed.Fast,
    baseHealth: 420,
    isBoss: false,
    skills: {
      level: 50,
      strength: { level: 55 },
      dexterity: { level: 70 },
      resistance: { level: 60 },
    },
    fleeOnLowHealth: true,
    entityEffects: [
      EntityEffectBlueprint.Freezing,
      EntityEffectBlueprint.Bleeding,
    ],
    areaSpells: [
      {
        spellKey: 'VampiricStorm',
        texturePath: 'spell-icons/vampiric-storm.png',
        probability: 15,
        power: 'Medium',
      },
    ],
    loots: [
      {
        itemBlueprintKey: 'FrostEssence',
        chance: LootProbability.Uncommon,
        quantityRange: [1, 2],
      },
      {
        itemBlueprintKey: 'ArcticPelt',
        chance: LootProbability.Rare,
      },
    ],
  },
  {
    id: '6',
    name: 'Lich Lord',
    key: 'litch/down/standing/0.png',
    subType: NPCSubtype.Undead,
    alignment: NPCAlignment.Hostile,
    attackType: EntityAttackType.Ranged,
    maxRangeAttack: RangeTypes.High,
    speed: MovementSpeed.Standard,
    baseHealth: 2200,
    isBoss: false,
    skills: {
      level: 200,
      strength: { level: 160 },
      dexterity: { level: 180 },
      resistance: { level: 220 },
    },
    fleeOnLowHealth: false,
    entityEffects: [
      EntityEffectBlueprint.Curse,
      EntityEffectBlueprint.Drain,
      EntityEffectBlueprint.Shadow,
    ],
    areaSpells: [
      {
        spellKey: 'DeathNova',
        probability: 30,
        power: 'VeryHigh',
        texturePath: ''
      },
      {
        spellKey: 'SoulDrain',
        probability: 25,
        power: 'High',
        texturePath: ''
      },
    ],
    loots: [
      {
        itemBlueprintKey: 'Phylactery',
        chance: LootProbability.VeryRare,
      },
      {
        itemBlueprintKey: 'NecromancerStaff',
        chance: LootProbability.Rare,
      },
      {
        itemBlueprintKey: 'DarkEssence',
        chance: LootProbability.Uncommon,
        quantityRange: [2, 4],
      },
    ],
  },
  {
    id: '7',
    name: 'Cyclops',
    key: 'cyclops/down/standing/0.png',
    subType: NPCSubtype.Animal,
    alignment: NPCAlignment.Hostile,
    attackType: EntityAttackType.Ranged,
    maxRangeAttack: RangeTypes.High,
    speed: MovementSpeed.Slow,
    baseHealth: 1800,
    isBoss: false,
    skills: {
      level: 150,
      strength: { level: 180 },
      dexterity: { level: 90 },
      resistance: { level: 130 },
    },
    fleeOnLowHealth: false,
    entityEffects: [
      EntityEffectBlueprint.Stun,
      EntityEffectBlueprint.Knockback,
    ],
    areaSpells: [
      {
        spellKey: 'BoulderThrow',
        probability: 40,
        power: 'High',
        texturePath: ''
      },
    ],
    loots: [
      {
        itemBlueprintKey: 'GiantClub',
        chance: LootProbability.Uncommon,
      },
      {
        itemBlueprintKey: 'CyclopsEye',
        chance: LootProbability.VeryRare,
      },
      {
        itemBlueprintKey: 'GiantBone',
        chance: LootProbability.Common,
        quantityRange: [1, 3],
      },
    ],
  },
  {
    id: '8',
    name: 'Forest Troll',
    key: 'forest-troll/down/standing/0.png',
    subType: NPCSubtype.Animal,
    alignment: NPCAlignment.Hostile,
    attackType: EntityAttackType.Melee,
    maxRangeAttack: RangeTypes.High,
    speed: MovementSpeed.Standard,
    baseHealth: 1200,
    isBoss: false,
    skills: {
      level: 100,
      strength: { level: 130 },
      dexterity: { level: 80 },
      resistance: { level: 110 },
    },
    fleeOnLowHealth: false,
    entityEffects: [
      EntityEffectBlueprint.Poison,
      EntityEffectBlueprint.Regeneration,
    ],
    areaSpells: [
      {
        spellKey: 'ToxicCloud',
        probability: 20,
        power: 'Medium',
        texturePath: ''
      },
    ],
    loots: [
      {
        itemBlueprintKey: 'TrollClub',
        chance: LootProbability.Uncommon,
      },
      {
        itemBlueprintKey: 'TrollBlood',
        chance: LootProbability.Rare,
        quantityRange: [1, 2],
      },
      {
        itemBlueprintKey: 'MossyPendant',
        chance: LootProbability.Uncommon,
      },
    ],
  },
  {
    id: '9',
    name: "Red Deer",
    subType: NPCSubtype.Animal,
    key: 'red-deer/up/walking/2.png',
    alignment: NPCAlignment.Neutral,
    attackType: EntityAttackType.Melee,
    maxRangeAttack: RangeTypes.High,
    speed: MovementSpeed.Standard,
    isBoss: false,
    baseHealth: 30,
    skills: {
      level: 3,
      strength: {
        level: 3,
      },
      dexterity: {
        level: 1,
      },
      resistance: {
        level: 5,
      },
    },
    loots: [
      {
        itemBlueprintKey: 'foods/red-meat.png',
        chance: 30,
        quantityRange: [1, 4],
      },
      {
        itemBlueprintKey: 'crafting-resources/leather.png',
        chance: 50,
        quantityRange: [1, 3],
      },
    ],
    fleeOnLowHealth: false,
    entityEffects: [],
    areaSpells: []
  },
  {
    id: '10',
    name: 'Inferno Widow',
    key: 'giant-spider/down/standing/0.png',
    subType: NPCSubtype.Insect,
    alignment: NPCAlignment.Hostile,
    attackType: EntityAttackType.MeleeRanged,
    speed: MovementSpeed.Standard,
    maxRangeAttack: RangeTypes.High,
    baseHealth: 60000,
    isBoss: true,
    skills: {
      level: 298,
      strength: {
        level: 298,
      },
      dexterity: {
        level: 298,
      },
      resistance: {
        level: 298,
      }
    },
    fleeOnLowHealth: true,
    loots: [
      {
        itemBlueprintKey: 'accessories/gilded-necklace.png',
        chance: LootProbability.Rare,
      },

      {
        itemBlueprintKey: 'armors/golden-armor.png',
        chance: LootProbability.SemiCommon,
      }
    ],
    entityEffects: [EntityEffectBlueprint.Poison],
    areaSpells: [
      {
        spellKey: SpellsBlueprint.NaturesRevenge,
        texturePath: 'spell-icons/natures-revenge.png',
        probability: 10,
        power: 'High',
      },
      {
        spellKey: SpellsBlueprint.VampiricStorm,
        texturePath: 'spell-icons/vampiric-storm.png',
        probability: 50,
        power: 'High',
      },
      {
        spellKey: SpellsBlueprint.FireStorm,
        texturePath: 'spell-icons/fire-storm.png',
        probability: 90,
        power: 'Medium',
      },
      {
        spellKey: SpellsBlueprint.SelfHealingSpell,
        texturePath: 'spell-icons/self-healing-spell.png',
        probability: 90,
        power: "Hidh",
      },
    ],
  }
];

export const mockItems: IInformationCenterItem[] = [
  {
    name: 'Dragon Scale Armor',
    key: 'dark-shield',
    type: ItemType.Armor,
    subType: ItemSubType.Armor,
    textureAtlas: 'items',
    texturePath: 'shields/dark-shield.png',
    description: 'A legendary armor forged from dragon scales.',
    weight: 15,
    basePrice: 5000,
    canSell: true,
    maxStackSize: 1,
    usableEffectDescription: 'Increases defense by 150',
    allowedEquipSlotType: [ItemSlotType.Torso],
    attack: 0,
    defense: 150,
    tier: 5,
    rarity: ItemRarities.Legendary,
    equippedBuff: [
      {
        type: CharacterBuffType.Skill,
        trait: BasicAttribute.Strength,
        buffPercentage: 10,
        durationType: CharacterBuffDurationType.Permanent,
      },
    ],
    equippedBuffDescription: 'Increases strength by 10%',
    entityEffects: [EntityEffectBlueprint.Burning],
    entityEffectChance: 70,
  },
  {
    name: 'Angelic Sword',
    key: 'angelic-sword',
    type: ItemType.Weapon,
    subType: ItemSubType.Sword,
    textureAtlas: 'items',
    texturePath: 'swords/angelic-sword.png',
    description: 'A legendary sword imbued with the power of lightning.',
    weight: 8,
    basePrice: 8000,
    canSell: true,
    allowedEquipSlotType: [ItemSlotType.LeftHand, ItemSlotType.RightHand],
    attack: 120,
    defense: 0,
    tier: 5,
    rangeType: EntityAttackType.Melee,
    rarity: ItemRarities.Legendary,
    maxStackSize: 1,
    usableEffectDescription: 'Increases attack by 120',
  },
  {
    name: 'Greater Life Potion',
    key: 'greater-life-potion',
    type: ItemType.Consumable,
    subType: ItemSubType.Potion,
    textureAtlas: 'items',
    texturePath: 'potions/greater-life-potion.png',
    description: 'Restores a significant amount of health.',
    weight: 0.5,
    basePrice: 100,
    canSell: true,
    maxStackSize: 100,
    usableEffectDescription: 'Restores 200 HP when consumed',
    rarity: ItemRarities.Common,
    tier: 1,
    allowedEquipSlotType: [ItemSlotType.LeftHand],
  },
  {
    name: 'Zephyrus Bow',
    key: 'ranged-weapons/zephyrus-bow.png',
    type: ItemType.Weapon,
    subType: ItemSubType.Ranged,
    textureAtlas: 'items',
    texturePath: 'ranged-weapons/zephyrus-bow.png',
    description: 'A basic wooden shield.',
    weight: 3,
    basePrice: 50,
    canSell: true,
    maxStackSize: 1,
    usableEffectDescription: 'Increases attack by 120',
    allowedEquipSlotType: [ItemSlotType.LeftHand],
    attack: 0,
    defense: 15,
    tier: 1,
    rarity: ItemRarities.Common,
  },
];

export const mockFaqItems: IFaqItem[] = [
  {
    id: '1',
    question: 'How do I level up my character?',
    answer:
      'You can level up by gaining experience points through combat, completing quests, and exploring new areas. Each level grants you skill points to improve your abilities.',
  },
  {
    id: '2',
    question: 'What are the different item rarities?',
    answer:
      'Items come in different rarities: Common (white), Uncommon (green), Rare (blue), and Very Rare (purple). Higher rarity items generally have better stats and unique properties.',
  },
  {
    id: '3',
    question: 'How does combat work?',
    answer:
      "Combat is turn-based and depends on your character's stats. Attack determines damage dealt, Defense reduces damage taken, and HP represents your health points.",
  },
];

export const mockTutorials: IVideoGuide[] = [
  {
    id: '1',
    title: 'Getting Started Guide',
    description: 'Learn the basics of character creation, movement, and basic combat.',
    videoUrl: 'https://youtu.be/_8d7e-otQoo',
    category: VideoGuideCategory.General,
    language: VideoGuideLanguage.English,
  },
  {
    id: '2',
    title: 'Advanced Combat Techniques for class Archer',
    description: 'Master the art of combat with advanced combos and spell casting.',
    videoUrl: 'https://youtu.be/7LQlyy0Y720?si=wZ79VC4sCsI781Mn',
    category: VideoGuideCategory.Combat,
    language: VideoGuideLanguage.English,
  },
  {
    id: '3',
    title: 'Crafting System Tutorial',
    description: 'Everything you need to know about crafting weapons and items.',
    localImage: 'https://youtube.com/watch?v=crafting',
    videoUrl: 'https://youtube.com/watch?v=crafting',
    category: VideoGuideCategory.Crafting,
    language: VideoGuideLanguage.English,
  },
  {
    id: '4',
    title: 'Secret Areas Guide',
    description: 'Discover hidden locations and treasures across the world.',
    localImage: 'https://youtube.com/watch?v=exploration',
    videoUrl: 'https://youtube.com/watch?v=exploration',
    category: VideoGuideCategory.Exploration,
    language: VideoGuideLanguage.English,
  },
  {
    id: '5',
    title: 'Boss Battle Strategies',
    description: 'Learn effective strategies to defeat challenging boss encounters.',
    localImage: 'https://youtube.com/watch?v=boss-battles',
    videoUrl: 'https://youtube.com/watch?v=boss-battles',
    category: VideoGuideCategory.Combat,
    language: VideoGuideLanguage.English,
  },
  {
    id: '6',
    title: 'Resource Gathering Guide',
    description: 'Efficient methods for gathering crafting materials and resources.',
    localImage: 'https://youtube.com/watch?v=resource-gathering',
    videoUrl: 'https://youtube.com/watch?v=resource-gathering',
    category: VideoGuideCategory.Crafting,
    language: VideoGuideLanguage.English,
  },
  {
    id: '7',
    title: 'Dungeon Exploration Tips',
    description: 'Essential tips for surviving and navigating dangerous dungeons.',
    localImage: 'https://youtube.com/watch?v=dungeon-tips',
    videoUrl: 'https://youtube.com/watch?v=dungeon-tips',
    category: VideoGuideCategory.Exploration,
    language: VideoGuideLanguage.English,
  },
  {
    id: '8',
    title: 'Character Build Guide',
    description: 'Optimize your character builds for different playstyles.',
    localImage: 'https://youtube.com/watch?v=character-builds',
    videoUrl: 'https://youtube.com/watch?v=character-builds',
    category: VideoGuideCategory.General,
    language: VideoGuideLanguage.Portuguese,
  },
  {
    id: '9',
    title: 'PvP Combat Guide',
    description: 'Advanced tactics for player versus player combat scenarios.',
    localImage: 'https://youtube.com/watch?v=pvp-combat',
    videoUrl: 'https://youtube.com/watch?v=pvp-combat',
    category: VideoGuideCategory.Combat,
    language: VideoGuideLanguage.Portuguese,
  },
  {
    id: '10',
    title: 'Rare Item Crafting',
    description: 'Special recipes and techniques for crafting rare and legendary items.',
    localImage: 'https://youtube.com/watch?v=rare-crafting',
    videoUrl: 'https://youtube.com/watch?v=rare-crafting',
    category: VideoGuideCategory.Crafting,
    language: VideoGuideLanguage.Portuguese,
  },
];
