#textdomain wesnoth-ei
[scenario]
    id=05_Northern_Outpost
    name= _ "Northern Outpost"
    map_data="{campaigns/Eastern_Invasion/maps/05_Northern_Outpost.map}"
    turns=20
    next_scenario=06_Two_Paths
    victory_when_enemies_defeated=no
    {DEFAULT_SCHEDULE}

    {INTRO_AND_SCENARIO_MUSIC traveling_minstrels.ogg loyalists.ogg}
    {EXTRA_SCENARIO_MUSIC battle.ogg}
    {EXTRA_SCENARIO_MUSIC legends_of_the_north.ogg}

    {campaigns/Eastern_Invasion/utils/deaths.cfg}

    {BIGMAP_05}

    [side]
        type=Lieutenant
        id=Gweddry
        name= _ "Gweddry"
        side=1
        canrecruit=yes
        recruit=Spearman,Cavalryman,Mage,Horseman,Heavy Infantryman
        controller=human
        team_name=good
        user_team_name=_"Wesnothians"
        {GOLD 200 150 150}
        {FLAG_VARIANT loyalist}
    [/side]

    {AI_CONTROLLER () 1 2 ()}

    [side]
        type=Mounted Fighter
        id=Owaec
        name= _ "Owaec"
        side=2
        canrecruit=yes
        facing=sw
        recruit=Cavalryman,Mage,Heavy Infantryman
        team_name=good
        user_team_name=_"Wesnothians"
        profile=portraits/owaec.png
        {GOLD 90 70 50}
        [ai]
            passive_leader=yes
            recruitment_pattern=mixed fighter,fighter,scout,mixed fighter,fighter
            {NO_SCOUTS}
            [avoid]
                x=1-32
                y=1-18
            [/avoid]
        [/ai]
    [/side]

    [side]
        type=Revenant
        id=Lanar-Skal
        name= _ "Lanar-Skal"
        side=3
        canrecruit=yes
        facing=sw
        recruit=Skeleton,Skeleton Archer
        team_name=undead
        user_team_name=_"Undead"
        {INCOME 5 10 15}
        {GOLD 30 40 50}
        {FLAG_VARIANT undead}
        [ai]
            aggression=-0.1
            recruitment_pattern=archer,fighter
        [/ai]
    [/side]

    [side]
        side=4
        no_leader=yes
        team_name=bad
        user_team_name=_"Evil"
        [ai]
            grouping=no
        [/ai]
    [/side]

    [event]
        name=prestart

        # {SCATTER_IMAGE (terrain=Gg) 20 scenery/pine1.png}
        # {SCATTER_IMAGE (terrain=Gs^Fp) 12 scenery/oak-leaning.png}
        {PLACE_IMAGE scenery/rock1.png 15 28}
        {PLACE_IMAGE scenery/rock2.png 8 5}

        [objectives]
            side=1
            [objective]
                description= _ "Find the outlaw leader and defeat him"
                condition=win
            [/objective]
            [objective]
                description= _ "Defeat the undead leader"
                condition=win
            [/objective]
            [objective]
                description= _ "Death of Gweddry"
                condition=lose
            [/objective]
            [objective]
                description= _ "Death of Dacyn"
                condition=lose
            [/objective]
            [objective]
                description= _ "Death of Owaec"
                condition=lose
            [/objective]

            {TURNS_RUN_OUT}

            [gold_carryover]
                bonus=yes
                carryover_percentage=40
            [/gold_carryover]

            {AI_CONTROLLER_NOTE}
        [/objectives]
    [/event]

    [event]
        name=start

        [recall]
            id=Dacyn
        [/recall]
        [recall]
            id=Terraent
        [/recall]
        [message]
            speaker=Owaec
            message= _ "Hail, Gweddry!"
        [/message]
        [message]
            speaker=Gweddry
            message= _ "Greetings, Owaec! We have been forced from our positions by undead invaders. They follow us even now."
        [/message]
        [message]
            speaker=Dacyn
            message= _ "Indeed, they do. And do not think you will be able to defeat them. They are too powerful. We are heading for the Northlands, where I hope to find a means to stop this invasion. Will you join us?"
        [/message]
        [message]
            speaker=Owaec
            message= _ "I cannot. My orders were to protect these villages. If I leave, the villagers will be at the mercy of a gang of bandits. I cannot find a way to defeat them; the outlaws hide in the villages whenever I send in my troops."
        [/message]
        [message]
            speaker=Dacyn
            message= _ "Hoping to protect these villages is foolish; all who stay here will die. However, if we can drive these bandits out, will you organize the villagers to flee to the west? There they may survive for a time. But soon nowhere in Wesnoth will be safe."
        [/message]
        [message]
            speaker=Owaec
            message= _ "If the situation is as dire as you’ve described, I must... but we have no way to remove these bandits."
        [/message]
        [message]
            speaker=Dacyn
            message= _ "I think I may be able to help. Gweddry, I believe I can cast a spell that will reveal the bandits when our troops enter a village. However, this magic will require my full attention; I won’t be able to help you in battle."
        [/message]
        [message]
            speaker=Gweddry
            message= _ "That sounds good; it is time to drive out some bandits. Dacyn, cast your spell!"
        [/message]
        [message]
            speaker=Owaec
            message= _ "I believe there is a leader behind these outlaws; kill him and we will face no further resistance. I will place my clansmen at your service."
        [/message]
        [message]
            speaker=narrator
            message= _ "You may now recruit horsemen!"
            image=wesnoth-icon.png
        [/message]
        [message]
            speaker=Lanar-Skal
            message= _ "Go, go far from here! But me and my kind will chase you, and kill you!"
        [/message]
        [message]
            speaker=Dacyn
            message= _ "It seems the undead have caught up with us! We will have to kill them too if we want the villagers to be safe. Well, I will begin casting the spell."
        [/message]

        {MOVE_UNIT id=Dacyn 13 14}

        {DACYN_CASTING_SPELL_ANIMATION_OBJECT}

        {MODIFY_UNIT id=Dacyn variables.casting_the_spell yes}

        # mark half of the villages as containing bandits
        [store_locations]
            terrain=*^V*
            y=1-25

            variable=all_villages
        [/store_locations]

        {VARIABLE num_of_bandit_villages $all_villages.length}
        {VARIABLE_OP num_of_bandit_villages divide 2}

        {REPEAT $num_of_bandit_villages (
            {VARIABLE_OP bandit_village_i rand "1..$all_villages.length"}
            {VARIABLE_OP bandit_village_i sub 1}

            [store_locations]
                x,y=$all_villages[$bandit_village_i].x,$all_villages[$bandit_village_i].y
                [or]
                    find_in=bandit_villages
                [/or]

                variable=bandit_villages
            [/store_locations]

            [store_locations]
                find_in=all_villages
                [not]
                    x,y=$all_villages[$bandit_village_i].x,$all_villages[$bandit_village_i].y
                [/not]

                variable=all_villages
            [/store_locations]
        )}

        # handy for debugging, puts labels on all bandit villages:
        # {FOREACH bandit_villages i}
        #     [label]
        #         x,y=$bandit_villages[$i].x,$bandit_villages[$i].y
        #         text="bandits"
        #     [/label]
        # {NEXT i}

        {CLEAR_VARIABLE all_villages,bandit_village_i}
    [/event]

    # Dacyn remains busy until the bandits are defeated
    [event]
        name=side 1 turn refresh
        first_time_only=no

        [if]
            [have_unit]
                id=Dacyn
                [filter_wml]
                    [variables]
                        casting_the_spell="yes"
                    [/variables]
                [/filter_wml]
            [/have_unit]

            [then]
                {MODIFY_UNIT id=Dacyn moves 0}
                {MODIFY_UNIT id=Dacyn attacks_left 0}
            [/then]
        [/if]
    [/event]

    [event]
        name=capture
        first_time_only=no

        [filter]
            side=1

            [filter_location]
                find_in=bandit_villages
            [/filter_location]
        [/filter]

        [store_locations]
            find_in=bandit_villages
            [not]
                x,y=$x1,$y1
            [/not]

            variable=bandit_villages
        [/store_locations]

        [store_locations]
            x,y=$x1,$y1
            [or]
                find_in=cleared_villages
            [/or]

            variable=cleared_villages
        [/store_locations]

        {VARIABLE_OP bandit_villages_visited add 1}

        [message]
            speaker=unit
            message= _ "They’re here!"
        [/message]

        # 50% chance that the number of bandits will be 1..4 instead of 1..3
        {RANDOM 3..4}
        {RANDOM 1..$random}

        {VARIABLE i 0}

        [while]
            [variable]
                name=i
                less_than=$random
            [/variable]

            [do]
#ifdef EASY
                {VARIABLE_OP new_bandit_type rand "Footpad,Footpad,Poacher,Poacher,Thug,Thug,Thug,Thug,Thief,Thief,Thief,Thief"}
#else
                {VARIABLE_OP new_bandit_type rand "Footpad,Footpad,Poacher,Poacher,Thug,Thug,Thug,Thug,Thief,Thief,Thief,Thief,Rogue,Bandit,Outlaw"}
#endif

                [store_locations]
                    [not]
                        [filter]
                        [/filter]
                    [/not]

                    [and]
                        x,y=$x1,$y1
                        radius=1
                    [/and]

                    variable=new_bandit_locations
                [/store_locations]

                [if]
                    [variable]
                        name=new_bandit_locations.length
                        less_than=1
                    [/variable]

                    [then]
                        [store_locations]
                            [not]
                                [filter]
                                [/filter]
                            [/not]

                            [and]
                                x,y=$x1,$y1
                                radius=2
                            [/and]

                            variable=new_bandit_locations
                        [/store_locations]
                    [/then]
                [/if]

                {VARIABLE_OP loc_i rand "1..$new_bandit_locations.length"}
                {VARIABLE_OP loc_i sub 1}

                [move_unit_fake]
                    x=$x1|,$new_bandit_locations[$loc_i].x
                    y=$y1|,$new_bandit_locations[$loc_i].y
                    type=$new_bandit_type
                    side=4
                [/move_unit_fake]

                [unit]
                    x,y=$new_bandit_locations[$loc_i].x,$new_bandit_locations[$loc_i].y
                    type=$new_bandit_type
                    side=4
                    random_traits=yes
                    generate_name=yes
                    upkeep=loyal
                [/unit]

                {VARIABLE_OP i add 1}
            [/do]
        [/while]

        [if]
            [variable]
                name=shodrano_found
                not_equals=yes
            [/variable]

            [then]
                # the chance of shodrano appearing is 100% divided by the number of
                # uninvestigated bandit villages remaining, except that it can't happen
                # in the first two bandit villages found and is forced to happen not
                # later than in the second last bandit village visited
                {VARIABLE chance_of_shodrano 100}
                {VARIABLE_OP chance_of_shodrano divide $bandit_villages.length}

                {RANDOM "0..100"}

                [if]
                    [and]
                        [variable]
                            name=random
                            less_than=$chance_of_shodrano
                        [/variable]

                        [or]
                            [variable]
                                name=bandit_villages.length
                                less_than=3
                            [/variable]
                        [/or]
                    [/and]

                    [variable]
                        name=bandit_villages_visited
                        greater_than=2
                    [/variable]

                    [then]
                        [store_locations]
                            [not]
                                [filter]
                                [/filter]
                            [/not]

                            [and]
                                x,y=$x1,$y1
                                radius=2
                            [/and]

                            variable=new_bandit_locations
                        [/store_locations]

                        {VARIABLE_OP loc_i rand "1..$new_bandit_locations.length"}
                        {VARIABLE_OP loc_i sub 1}

                        [move_unit_fake]
                            x=$x1|,$new_bandit_locations[$loc_i].x
                            y=$y1|,$new_bandit_locations[$loc_i].y
                            type=Assassin
                            side=4
                        [/move_unit_fake]

                        [unit]
                            x,y=$new_bandit_locations[$loc_i].x,$new_bandit_locations[$loc_i].y
                            type=Assassin
                            side=4
                            id=Shodrano
                            name= _ "Shodrano"
                            canrecruit=yes
                        [/unit]
                        [message]
                            speaker=Shodrano
                            message= _ "So, you have found my hiding place. Very well, I guess I will have to kill you!"
                        [/message]
                        [message]
                            speaker=Owaec
                            message= _ "That’s the bandit leader! Kill him!"
                        [/message]

                        {VARIABLE shodrano_found yes}
                    [/then]
                [/if]
            [/then]
        [/if]

        {CLEAR_VARIABLE new_bandit_type,new_bandit_locations}
    [/event]

    [event]
        name=capture
        first_time_only=no

        [filter]
            side=1

            [filter_location]
                [not]
                    find_in=bandit_villages
                [/not]
                [not]
                    find_in=cleared_villages
                [/not]
            [/filter_location]
        [/filter]

        [store_locations]
            x,y=$x1,$y1
            [or]
                find_in=cleared_villages
            [/or]

            variable=cleared_villages
        [/store_locations]

        [message]
            speaker=unit
            message= _ "No outlaws in this village."
        [/message]
    [/event]

    [event]
        name=last breath
        [filter]
            id=Shodrano
        [/filter]
        [message]
            speaker=Shodrano
            message= _ "You have defeated me! I can terrorize the villagers no more..."
        [/message]
        [kill]
            x,y=$x1,$y1
            animate=yes
            fire_event=no
        [/kill]

        # this prevents the "no outlaws in this village" messages from appearing
        # anymore
        [store_locations]
            terrain=*^V*

            variable=cleared_villages
        [/store_locations]

        # and this prevents any further bandits from appearing
        {CLEAR_VARIABLE bandit_villages}

        {MODIFY_UNIT id=Dacyn variables.casting_the_spell no}

        [if]
            [have_unit]
                id=Lanar-Skal
            [/have_unit]
            [then]
                [message]
                    speaker=Owaec
                    message= _ "We still need to defeat these undead for the villagers to be safe."
                [/message]
            [/then]
            [else]
                [endlevel]
                    result=victory
                    bonus=yes
                    {NEW_GOLD_CARRYOVER 40}
                [/endlevel]
            [/else]
        [/if]
    [/event]

    [event]
        name=die
        [filter]
            id=Lanar-Skal
        [/filter]
        [if]
            [have_unit]
                id=Shodrano
            [/have_unit]
            [or]
                [variable]
                    name=shodrano_found
                    not_equals=yes
                [/variable]
            [/or]
            [then]
                [message]
                    speaker=Owaec
                    message= _ "There are still these outlaws to take care of — we must continue fighting here."
                [/message]
            [/then]
            [else]
                [endlevel]
                    result=victory
                    bonus=yes
                    {NEW_GOLD_CARRYOVER 40}
                [/endlevel]
            [/else]
        [/if]
    [/event]

    [event]
        name=victory

        {MODIFY_UNIT id=Dacyn variables.casting_the_spell no}

        [message]
            speaker=Owaec
            message= _ "Well, both the outlaws and undead are defeated. We have some time to spare now before more undead arrive."
        [/message]

        [message]
            speaker=Dacyn
            message= _ "Good! Now, we must move onward, north. Tell the villagers to pack their belongings and head west."
        [/message]

        [store_unit]
            [filter]
                id=Owaec
            [/filter]

            kill=yes
            variable=stored_Owaec
        [/store_unit]

        [unit]
            side=1
            id=Owaec
            name= _ "Owaec"
            unrenamable=yes
            x,y=$stored_Owaec.x,$stored_Owaec.y
            type=$stored_Owaec.type
            experience=$stored_Owaec.experience
            profile=portraits/owaec.png
            {IS_HERO}
            random_traits=no
            [modifications]
                {TRAIT_LOYAL}
            [/modifications]
        [/unit]

        {CLEAR_VARIABLE stored_Owaec}
        {CLEAR_VARIABLE bandit_villages,cleared_villages,bandit_villages_visited}
    [/event]

    {PICKUPPABLE_ITEM holy_amulet 2 25 side=1 items/ankh-necklace.png
    _"Wearing this amulet will cause every blow you deal to inflict <i>arcane</i> damage!"
    _"holy amulet^Take it"
    _"holy amulet^Leave it"
    _"I am not suited to using this item! Let another take it." (
        [object]
            name= _ "Holy Amulet"
            image=items/ankh-necklace.png
            duration=forever

            [effect]
                apply_to=attack
                range=melee
                set_type=arcane
            [/effect]
            [effect]
                apply_to=attack
                range=ranged
                set_type=arcane
            [/effect]
        [/object]
    )}

    {WESNOTH_DEFEAT}
[/scenario]
