#textdomain wesnoth-ei
[scenario]
    id=Northern_Outpost
    name= _ "Northern Outpost"
    map_data="{campaigns/Eastern_Invasion/maps/Northern_Outpost.map}"
    turns=20
    next_scenario=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}

    [story]
        [part]
            show_title=yes
            {TO_NORTHERN_OUTPOST}
        [/part]
    [/story]

    [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}
    [/side]

    [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 in the villages and kill 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 Owaec"
                condition=lose
            [/objective]

            note={EARLY_FINISH_BONUS_NOTE}+{NEW_GOLD_CARRYOVER_NOTE_40}
        [/objectives]
    [/event]

    [event]
        name=start

        [recall]
            id=Dacyn
        [/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 we may be able to outrun them. Will you join us?"
        [/message]
        [message]
            speaker=Owaec
            message= _ "I am not sure. There are bandits in this country, and I have been told that it is my duty to defeat them, and protect the local villages. However, I cannot find a way to defeat them. The outlaws hide in the villages when we are close, and come out when we are far away."
        [/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, we will be able to have all the villagers follow us into the northlands. There they may survive. But Wesnoth is no longer safe."
        [/message]
        [message]
            speaker=Owaec
            message= _ "Well, you appear to know what you're talking about... but, I have no way to remove these bandits."
        [/message]
        [message]
            speaker=Dacyn
            message= _ "I think I may be able to help you. I am a mage; I believe I will be able to cast a spell that will reveal them if you enter the villages. However, 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, go cast your spell!"
        [/message]
        [message]
            speaker=Owaec
            message= _ "I believe there is a leader behind these outlaws; kill him, and we will have defeated these bandits."
        [/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 these villages to be safe. Well, I will see you when you defeat the outlaws and undead!"
        [/message]
        [store_unit]
            [filter]
                id=Dacyn
            [/filter]
            variable=dacyn
            kill=yes
        [/store_unit]

        # 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 add -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]

    [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 add -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 add -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, and we will have fulfilled our duty!"
                        [/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}

        [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]
                [message]
                    speaker=Owaec
                    message= _ "I have fulfilled my duty to the villages. Now I suppose I can join you in your quest."
                [/message]
                [unstore_unit]
                    variable=dacyn
                    find_vacant=yes
                [/unstore_unit]
                {CLEAR_VARIABLE dacyn}
                [message]
                    speaker=Dacyn
                    message= _ "Good job! Now, we should move onward, north. Tell the villagers to pack their belongings and follow us."
                [/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}

                [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]
                [message]
                    speaker=Owaec
                    message= _ "Well, both the outlaws and undead are defeated. We have some time to spare now before more undead arrive."
                [/message]
                [unstore_unit]
                    variable=dacyn
                    find_vacant=yes
                [/unstore_unit]
                {CLEAR_VARIABLE dacyn}
                [message]
                    speaker=Dacyn
                    message= _ "Good work! Now, we should move onward, north. Tell the villagers to pack their belongings and follow us."
                [/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}

                [endlevel]
                    result=victory
                    bonus=yes
                    {NEW_GOLD_CARRYOVER 40}
                [/endlevel]
            [/else]
        [/if]
    [/event]

    [event]
        name=victory

        {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 arcane damage!"
    _"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]
