from enum import IntEnum


class Effect(IntEnum):
    """
    Genie Editor Effect (Command) Types.
    
    Source: https://ageofempires.fandom.com/wiki/Genie_Editor#Commands
    """
    # Attribute Modifiers
    SET_ATTRIBUTE = 0
    ADD_ATTRIBUTE = 4
    MULTIPLY_ATTRIBUTE = 5
    
    # Resource Modifiers
    SET_RESOURCE = 1
    MULTIPLY_RESOURCE = 6
    
    # Unit State
    ENABLE_UNIT = 2
    UPGRADE_UNIT = 3
    SPAWN_UNIT = 7
    
    # Technology
    MODIFY_TECH = 8
    SET_PLAYER_DATA_CIV_NAME = 9
    
    # Team Effects (10-19)
    SET_ATTRIBUTE_TEAM = 10
    SET_RESOURCE_TEAM = 11
    ENABLE_UNIT_TEAM = 12
    UPGRADE_UNIT_TEAM = 13
    ADD_ATTRIBUTE_TEAM = 14
    MULTIPLY_ATTRIBUTE_TEAM = 15
    MULTIPLY_RESOURCE_TEAM = 16
    SPAWN_UNIT_TEAM = 17
    MODIFY_TECH_TEAM = 18
    SET_PLAYER_DATA_CIV_NAME_TEAM = 19
    
    # Enemy Effects (20-29)
    SET_ATTRIBUTE_ENEMY = 20
    SET_RESOURCE_ENEMY = 21
    ENABLE_UNIT_ENEMY = 22
    UPGRADE_UNIT_ENEMY = 23
    ADD_ATTRIBUTE_ENEMY = 24
    MULTIPLY_ATTRIBUTE_ENEMY = 25
    MULTIPLY_RESOURCE_ENEMY = 26
    SPAWN_UNIT_ENEMY = 27
    MODIFY_TECH_ENEMY = 28
    SET_PLAYER_DATA_CIV_NAME_ENEMY = 29
    
    # Neutral Effects (30-39)
    SET_ATTRIBUTE_NEUTRAL = 30
    SET_RESOURCE_NEUTRAL = 31
    ENABLE_UNIT_NEUTRAL = 32
    UPGRADE_UNIT_NEUTRAL = 33
    ADD_ATTRIBUTE_NEUTRAL = 34
    MULTIPLY_ATTRIBUTE_NEUTRAL = 35
    MULTIPLY_RESOURCE_NEUTRAL = 36
    SPAWN_UNIT_NEUTRAL = 37
    MODIFY_TECH_NEUTRAL = 38
    SET_PLAYER_DATA_CIV_NAME_NEUTRAL = 39
    
    # Gaia Effects (40-48)
    SET_ATTRIBUTE_GAIA = 40
    SET_RESOURCE_GAIA = 41
    ENABLE_UNIT_GAIA = 42
    UPGRADE_UNIT_GAIA = 43
    ADD_ATTRIBUTE_GAIA = 44
    MULTIPLY_ATTRIBUTE_GAIA = 45
    MULTIPLY_RESOURCE_GAIA = 46
    SPAWN_UNIT_GAIA = 47
    MODIFY_TECH_GAIA = 48
    
    # Technology Specific
    TECH_COST_MODIFIER = 101
    DISABLE_TECH = 102
    TECH_TIME_MODIFIER = 103
    
    # Local Building Effects
    SET_ATTRIBUTE_LOCAL_BUILDING = 200
    ADD_ATTRIBUTE_LOCAL_BUILDING = 201
