"""
Catalog of Savage Primal Map Content Encounters, Biomes, Affixes, and Bosses.
Decoupled from execution logic.
Adheres strictly to Grimdark Savage Primal Exile ARPG themes.
"""

from __future__ import annotations
from typing import Dict, List, Tuple, Any
from server.world.endgame_types import ContentType, MapBiomeType


ALL_CONTENT_TYPES: Tuple[ContentType, ...] = tuple(ContentType)


CONTENT_DEFINITIONS: Dict[ContentType, Dict[str, Any]] = {
    ContentType.BLOOD_ALTAR: {
        "name": "Huyết Tế Trận (Savage Blood Altar)",
        "description": "Bàn tế máu cổ xưa của man tộc. Kích hoạt triệu hồi 3 đợt thú hiến tế hung bạo; hạ gục để hiến tế linh hồn đổi Cổ Cốt Ấn và Huyết Hồn Thạch.",
        "base_difficulty": 3,
        "reward_type": "Cổ Cốt Ấn & Huyết Hồn Thạch",
        "weight": 25,
    },
    ContentType.ABYSSAL_FISSURE: {
        "name": "Khe Nứt Hư Không (Abyssal Fissure)",
        "description": "Vết nứt đen ngòm rạch toạc lòng đất hoang dã, bò dài giải phóng bầy bọ ăn xác và kết thúc bằng Cổ Cốt Hư Không Tháp.",
        "base_difficulty": 2,
        "reward_type": "Bụi Huyết Cốt & Phôi Trang Bị iLvl Cao",
        "weight": 25,
    },
    ContentType.BONE_STRONGBOX: {
        "name": "Hòm Xương Ma Quỷ (Bone Strongbox)",
        "description": "Rương xương bọc xích sắt rỉ yểm tà ấn. Mở rương sẽ giải phóng đàn quái tinh anh bẫy rập (đóng băng, nổ xác, mưa máu).",
        "base_difficulty": 2,
        "reward_type": "Phôi Trang Bị & Hắc Sơ Thạch",
        "weight": 30,
    },
    ContentType.FERAL_ESSENCE: {
        "name": "Tàn Cốt Tinh Hoa (Feral Essence Monolith)",
        "description": "Quái thú cổ đại bị giam cầm trong khối huyết thạch thô. Phá vỡ phong ấn để cướp đoạt Tinh Hoa Dị Biến rèn ép thuộc tính trang bị.",
        "base_difficulty": 3,
        "reward_type": "Tinh Hoa Dị Biến & Uẩn Ma Thạch",
        "weight": 25,
    },
    ContentType.SCOURGE_INCURSION: {
        "name": "Thao Thiết Xâm Thực (Scourge Flesh Incursion)",
        "description": "Cổng dị biến máu thịt mở ra trong 45 giây đếm ngược. Bước vào không gian bóng tối đẫm máu săn lùng Quỷ Vương Thao Thiết.",
        "base_difficulty": 4,
        "reward_type": "Huyết Ảnh Cổ Kính & Tà Ấn Mùa Giải",
        "weight": 15,
    },
    ContentType.WARLORD_AMBUSH: {
        "name": "Đột Kích Lãnh Chúa (Warlord Warband Ambush)",
        "description": "Đội quân lưu đày phản trắc phục kích bất ngờ với các thủ lĩnh đao phủ trang bị giáp xương đẫm máu.",
        "base_difficulty": 3,
        "reward_type": "Tàn Cốt Thần Binh & U Minh Cốt Đinh",
        "weight": 20,
    },
    ContentType.SMUGGLER_DEN: {
        "name": "Bí Thất Hắc Thị (Secret Smuggler Den)",
        "description": "Hốc đá ngầm ẩn giấu nơi Thương Nhân Chợ Đen Lưu Đày buôn lậu phôi đồ iLvl 85+ và tiền tệ chế tác độc bản.",
        "base_difficulty": 1,
        "reward_type": "Thương Nhân Chợ Đen & Giảm Thuế Ký Gửi",
        "weight": 10,
    },
    ContentType.BEAST_HUNT: {
        "name": "Thần Thú Tế Đàn (Primal Beast Totem Hunt)",
        "description": "Lần theo dấu vết máu để săn bắt Thần Thú Cổ Đại mang 4 thuộc tính dị biến man rợ, phong ấn vào bùa tế.",
        "base_difficulty": 4,
        "reward_type": "Cổ Cốt Thú Vương & Mạch Máu Dị Biến",
        "weight": 15,
    },
}


BIOME_METADATA: Dict[MapBiomeType, Dict[str, Any]] = {
    MapBiomeType.BONE_STRAND: {
        "name_vi": "Bờ Đá Tàn Xương",
        "name_en": "The Bone Strand",
        "base_environment": "Duyên hải hoang tàn, xác tàu vỡ vụn, cọc xương cắm đầu lâu",
        "native_boss": "Đao Phủ Bến Tàu Tàn Xương",
    },
    MapBiomeType.PUTRID_FEN: {
        "name_vi": "Đầm Lầy Thối Rữa",
        "name_en": "The Putrid Fens",
        "base_environment": "Vũng lầy ngập bùn độc, đỉa hút máu khổng lồ, chướng khí tím",
        "native_boss": "Cổ Thi Ngàn Năm Đầm Lầy",
    },
    MapBiomeType.BONE_WASTES: {
        "name_vi": "Sa Cốt Hoang Mạc",
        "name_en": "The Bone Wastes",
        "base_environment": "Cồn cát vàng lốc xoáy chôn vùi hàng ngàn khung xương voi ma mút",
        "native_boss": "Bọ Cạp Sa Cốt Khổng Lồ",
    },
    MapBiomeType.SLAUGHTER_RUINS: {
        "name_vi": "Phế Tích Xẻ Thịt",
        "name_en": "The Slaughter Ruins",
        "base_environment": "Đấu trường đá sụp đổ nhuốm máu khô đen, móc sắt treo xác",
        "native_boss": "Cuồng Tướng Xẻ Thịt Lưu Đày",
    },
    MapBiomeType.PRIMAL_ALTAR: {
        "name_vi": "Tế Đàn Man Hoang",
        "name_en": "The Primal Altar",
        "base_environment": "Rừng đá dựng đứng vòng cung, totem xương thú khổng lồ",
        "native_boss": "Tư Tế Tế Máu Man Tộc",
    },
    MapBiomeType.BILE_MIRE: {
        "name_vi": "Vực Đầm Băng Độc",
        "name_en": "The Abyssal Bile Mire",
        "base_environment": "Đầm lầy nước đen buốt giá bốc hơi acid độc của loài xà quái",
        "native_boss": "Trăn Mật Độc Vực Thẳm",
    },
    MapBiomeType.GORGE_STARVED: {
        "name_vi": "Vực Đói Nuốt Chửng",
        "name_en": "The Gorge of the Starved",
        "base_environment": "Hẻm vực sâu hun hút gió rít như tiếng kêu gào của quỷ đói",
        "native_boss": "Quỷ Vương Thao Thiết Cốt",
    },
    MapBiomeType.BLOODFORGE: {
        "name_vi": "Miệng Lửa Nung Máu",
        "name_en": "The Bloodforge Caldera",
        "base_environment": "Hồ dung nham sôi sùng sục nung đỏ đá basalt hắc diện thạch",
        "native_boss": "Hắc Nham Cự Thú Rực Lửa",
    },
    MapBiomeType.APEX_SLAUGHTER: {
        "name_vi": "Bệ Thờ Quỷ Đoạt Mệnh",
        "name_en": "The Apex of Slaughter",
        "base_environment": "Đỉnh núi đá xám lạnh thấu xương, bia đá khắc tà công cuồng sát",
        "native_boss": "Chiến Tướng Đoạt Mệnh Đoạn Độc Hành",
    },
    MapBiomeType.ABYSSAL_VOID: {
        "name_vi": "Cõi Hư Không Tuyệt Địa",
        "name_en": "The Void Abyss",
        "base_environment": "Vết nứt không thời gian trôi nổi các mảnh đá vỡ và tinh vân đen",
        "native_boss": "Tà Thần Hư Không Vô Tận",
    },
}


AFFIX_POOL_BY_TIER: Dict[str, List[str]] = {
    "low": [  # Tier 1 - 5
        "Quái vật gây thêm 20% sát thương Hỏa",
        "Quái vật tăng 25% tốc độ di chuyển",
        "Quái vật kháng sát thương Băng +25%",
        "Người chơi giảm 15% hiệu quả giáp",
    ],
    "mid": [  # Tier 6 - 10
        "Quái vật bắn thêm 2 tia đạn phân nhánh",
        "Khu vực bị nguyền rủa bởi Lời Nguyền Huyết Thương",
        "Quái Tinh Anh sở hữu thêm 2 thuộc tính dị biến",
        "Đòn đánh của quái vật gây chảy máu trong 4 giây",
        "Mặt đất phủ đầy vũng bùn độc làm chậm 30%",
    ],
    "high": [  # Tier 11 - 15
        "Người chơi không thể hồi phục sinh lực tự nhiên",
        "Quái vật phản lại 15% sát thương vật lý",
        "Thủ lĩnh bản đồ tăng 40% máu tối đa và 30% diện tích chiêu thức",
        "Quái vật nhận bùa Cuồng Bạo vĩnh viễn khi dưới 50% HP",
        "Khu vực chịu ảnh hưởng bởi Bão Lôi Đạn Liên Hoàn",
    ],
    "uber": [  # Tier 16+
        "Quái vật bỏ qua 30% kháng nguyên tố của người chơi",
        "Xuất hiện thêm 1 Thủ Lĩnh Song Sinh cùng tham chiến",
        "Hiệu ứng Dị Biến Tà Huyết kích hoạt toàn khu vực",
        "Thời gian duy trì thân pháp trườn né i-frame giảm 50%",
    ],
}


def calculate_content_count_for_tier(tier: int) -> Tuple[int, int]:
    """Returns (min_content_count, max_content_count) for a given map tier."""
    if tier <= 5:
        return (1, 2)
    elif tier <= 10:
        return (2, 3)
    elif tier <= 15:
        return (2, 4)
    else:  # Tier 16+
        return (3, 5)


def get_content_definition(content_type: ContentType) -> Dict[str, Any]:
    """Retrieves metadata definition for a map content encounter."""
    return CONTENT_DEFINITIONS.get(content_type, {
        "name": content_type.value,
        "description": "Cơ chế nội dung hoang dã",
        "base_difficulty": 1,
        "reward_type": "Huyết Hồn Thạch",
        "weight": 10,
    })
