#textdomain wesnoth-sof
[scenario]
    name= _ "Gathering Materials"
    id=4_Gathering_Materials
    scenario_generation=cave
    next_scenario=4t_The_Jeweler

    [story]
        [part]
            story= _ "Those who went to the eastern mines were brave indeed. They were infested with trolls and other vile creatures, who thrived in the dark and gloom of the caves."
        [/part]
        [part]
            story= _ "And braver still were Rugnur and his companions, who had to spend two years in those tunnels. For mining is a lengthy business. But they could for the most part avoid the enemy. They only once had to venture into the very heart of the trolls’ territory."
        [/part]
        [part]
            show_title=yes
            {TO_GATHERING_MATERIALS}
        [/part]
    [/story]

    [generator]
        [settings]
            name= _ "Gathering Materials"
            {TURNS 40 37 34}
            victory_when_enemies_defeated=no

            {SCENARIO_MUSIC underground.ogg}
            {EXTRA_SCENARIO_MUSIC suspense.ogg}

            {UNDERGROUND}

            {SOF_DEATHS}

            # wmllint: recognize Rugnur

            # Note: these event-containing macros are placed here instead of
            # next to the corresponding [side]s because I seemed to run into
            # unexplainable problems when I tried that

            {STARTING_VILLAGES 1 5}
            {STARTING_VILLAGES 2 8}
            {STARTING_VILLAGES 3 8}
            {STARTING_VILLAGES 4 8}

            {LIMIT_CONTEMPORANEOUS_RECRUITS 2 (Troll Rocklobber) 1}
            {LIMIT_CONTEMPORANEOUS_RECRUITS 3 (Ogre) 1}
            {LIMIT_CONTEMPORANEOUS_RECRUITS 4 (Goblin Rouser) 2}
            {LIMIT_CONTEMPORANEOUS_RECRUITS 4 (Goblin Impaler) 2}

            [event]
                name=prestart

                # Alanin and Krawg are taking a break
                # wmllint: recognize Alanin
                # wmllint: recognize Krawg

                [store_unit]
                    [filter]
                        id=Alanin
                    [/filter]

                    variable=alanin
                    kill=yes
                [/store_unit]
                [store_unit]
                    [filter]
                        id=Krawg
                    [/filter]

                    variable=krawg
                    kill=yes
                [/store_unit]

                [store_locations]
                    [and]
                        [filter]
                            side=1
                            canrecruit=yes
                        [/filter]

                        radius=1

                        [filter_radius]
                            terrain=X*
                        [/filter_radius]
                    [/and]

                    [not]
                        [filter]
                            side=1
                            canrecruit=yes
                        [/filter]
                    [/not]

                    variable=adjacent_cavewall
                [/store_locations]

                {FOREACH adjacent_cavewall i}
                    [terrain]
                        x,y=$adjacent_cavewall[$i].x,$adjacent_cavewall[$i].y
                        terrain=Uu
                    [/terrain]
                {NEXT i}

                {CLEAR_VARIABLE adjacent_cavewall}

                [store_locations]
                    [filter]
                        side=1
                        canrecruit=yes
                    [/filter]

                    radius=4

                    [filter_radius]
                        terrain=Cud,Kud
                    [/filter_radius]

                    variable=resource_return_locations
                [/store_locations]

                # Here we need to randomize the coal and gold locations by
                # hand, because the map generator can otherwise sometimes place
                # them inside cavewall.

                # The first coal pile is somewhere near where side 2 starts

                [store_locations]
                    [filter]
                        side=2
                        canrecruit=yes
                    [/filter]

                    radius=5

                    [filter_radius]
                        terrain=!,Xu,Qxu
                    [/filter_radius]

                    variable=possible_coal_1_locations
                [/store_locations]

                {RANDOM 1..$possible_coal_1_locations.length}
                {VARIABLE_OP random sub 1}

                {VARIABLE coal_1.x $possible_coal_1_locations[$random].x}
                {VARIABLE coal_1.y $possible_coal_1_locations[$random].y}

                # The second coal pile is somewhere near where side 4 starts

                [store_locations]
                    [filter]
                        side=4
                        canrecruit=yes
                    [/filter]

                    radius=5

                    [filter_radius]
                        terrain=!,Xu,Qxu
                    [/filter_radius]

                    variable=possible_coal_2_locations
                [/store_locations]

                {RANDOM 1..$possible_coal_2_locations.length}
                {VARIABLE_OP random sub 1}

                {VARIABLE coal_2.x $possible_coal_2_locations[$random].x}
                {VARIABLE coal_2.y $possible_coal_2_locations[$random].y}

                # And the gold pile is 8-12 hexes away from where side 3 starts

                [store_locations]
                    [and]
                        [filter]
                            side=3
                            canrecruit=yes
                        [/filter]

                        radius=12

                        [filter_radius]
                            terrain=!,Xu,Qxu
                        [/filter_radius]
                    [/and]

                    [not]
                        [filter]
                            side=3
                            canrecruit=yes
                        [/filter]

                        radius=8

                        [filter_radius]
                            terrain=!,Xu,Qxu
                        [/filter_radius]
                    [/not]

                    variable=possible_gold_locations
                [/store_locations]

                {RANDOM 1..$possible_gold_locations.length}
                {VARIABLE_OP random sub 1}

                {VARIABLE gold_1.x $possible_gold_locations[$random].x}
                {VARIABLE gold_1.y $possible_gold_locations[$random].y}

                [item]
                    image=items/gold.png
                    x,y=$gold_1.x,$gold_1.y
                [/item]

                [item]
                    image=items/coal.png
                    x,y=$coal_1.x,$coal_1.y
                [/item]

                [item]
                    image=items/coal.png
                    x,y=$coal_2.x,$coal_2.y
                [/item]

                {VARIABLE coalin 0}
                {VARIABLE goldin 0}

                {CLEAR_VARIABLE possible_coal_1_locations}
                {CLEAR_VARIABLE possible_coal_2_locations}
                {CLEAR_VARIABLE possible_gold_locations}

                # Here we overlay a mask containing a rather random pattern of
                # suitable terrains on the map, because the map generator itself
                # only places the very basic terrains (floor, walls, etc)

                [terrain_mask]
                    x,y=1,1
                    mask="{campaigns/Sceptre_of_Fire/maps/4_Gathering_Materials-random.mask}"

                    [rule]
                        old=Uu
                        new=Uu^Ii,Uu^Uf,Uh,Ww,Cud
                    [/rule]

                    [rule]
                        old=Xu,Cud,Kud
                        use_old=yes
                    [/rule]
                [/terrain_mask]

                [objectives]
                    side=1
                    [objective]
                        description= _ "Bring the necessary gold and coal to create the sceptre to the starting castle"
                        condition=win
                    [/objective]
                    [objective]
                        description= _ "1 load of gold and 2 loads of coal are needed"
                        condition=win
                    [/objective]
                    [objective]
                        description= _ "Death of Rugnur"
                        condition=lose
                    [/objective]
                    [objective]
                        description= _ "Death of Thursagan"
                        condition=lose
                    [/objective]

                    {TURNS_RUN_OUT}

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

            [event]
                name=start
                [recall]
                    id=Baglur
                [/recall]
                [recall]
                    id=Thursagan
                [/recall]
                [recall]
                    id=Kinan
                [/recall]
                [recall]
                    id=Rynan
                [/recall]
                [message]
                    speaker=Rugnur
                    message= _ "Well, these are the eastern mines. Trolls and ogres live here, be prepared to fight them; also be prepared to spend quite some time here — mining can take a while."
                [/message]
                [message]
                    speaker=Thursagan
                    message= _ "For me to make the artifact Haldric wants, I need a special type of gold. I do not know where it was found, but Baglur said these mines were the source of it."
                [/message]
                [message]
                    speaker=Baglur
                    message= _ "Also, the only coal that wi’ melt this gold is here."
                [/message]
                [message]
                    speaker=Rugnur
                    message= _ "So we’re down here to, what, mine this gold and coal? That should be easy enough."
                [/message]
                [message]
                    speaker=Thursagan
                    message= _ "Yes, although we will have to hire the miners — they don’t work for free. But beware, there are trolls and such down here..."
                [/message]
            [/event]

            [event]
                name=turn 3

                [filter_condition]
                    [not]
                        [have_unit]
                            type=Dwarvish Miner
                        [/have_unit]
                    [/not]
                [/filter_condition]

                [message]
                    speaker=Thursagan
                    message= _ "Don’t forget to recruit the miners. Our warriors can clear the tunnels of trolls and worse, but once we find the gold and coal we need the miners to acquire it."
                [/message]
            [/event]

            [event]
                name=moveto

                [filter]
                    x,y=$coal_1.x,$coal_1.y

                    [or]
                        x,y=$coal_2.x,$coal_2.y
                    [/or]

                    [and]
                        side=1

                        [not]
                            type=Dwarvish Miner
                        [/not]
                    [/and]
                [/filter]

                [message]
                    speaker=unit
                    message= _ "Here is some of the coal that we need! Bring the miners to take it!"
                [/message]

                [allow_undo][/allow_undo]
            [/event]

            [event]
                name=moveto

                [filter]
                    x,y=$coal_1.x,$coal_1.y
                    side=1
                    type=Dwarvish Miner

                    [not]
                        role=has_coal
                    [/not]

                    [not]
                        role=has_gold
                    [/not]
                [/filter]

                [message]
                    speaker=unit
                    message= _ "I have all the coal I can carry..."
                [/message]
                {VARIABLE unit.role has_coal}
                [unstore_unit]
                    variable=unit
                    find_vacant=no
                [/unstore_unit]
                [unit_overlay]
                    x,y=$x1,$y1
                    image=misc/coal-icon.png
                [/unit_overlay]
                [remove_item]
                    x,y=$x1,$y1
                [/remove_item]
                {VARIABLE coal_1.x 0}
                {VARIABLE coal_1.y 0}
            [/event]

            [event]
                name=moveto

                [filter]
                    x,y=$coal_2.x,$coal_2.y
                    side=1
                    type=Dwarvish Miner

                    [not]
                        role=has_coal
                    [/not]

                    [not]
                        role=has_gold
                    [/not]
                [/filter]

                [message]
                    speaker=unit
                    message= _ "I have all the coal I can carry..."
                [/message]
                {VARIABLE unit.role has_coal}
                [unstore_unit]
                    variable=unit
                    find_vacant=no
                [/unstore_unit]
                [unit_overlay]
                    x,y=$x1,$y1
                    image=misc/coal-icon.png
                [/unit_overlay]
                [remove_item]
                    x,y=$x1,$y1
                [/remove_item]
                {VARIABLE coal_2.x 0}
                {VARIABLE coal_2.y 0}
            [/event]

            [event]
                name=moveto

                [filter]
                    x,y=$gold_1.x,$gold_1.y
                    side=1

                    [not]
                        type=Dwarvish Miner
                    [/not]
                [/filter]

                [message]
                    speaker=unit
                    message= _ "Here is the mine of precious gold! Send the miners this way."
                [/message]

                [allow_undo][/allow_undo]
            [/event]

            [event]
                name=moveto

                [filter]
                    x,y=$gold_1.x,$gold_1.y
                    side=1
                    type=Dwarvish Miner

                    [not]
                        role=has_coal
                    [/not]

                    [not]
                        role=has_gold
                    [/not]
                [/filter]

                [message]
                    speaker=unit
                    message= _ "I have all the gold I can carry..."
                [/message]
                {VARIABLE unit.role has_gold}
                [unstore_unit]
                    variable=unit
                    find_vacant=no
                [/unstore_unit]
                [unit_overlay]
                    x,y=$x1,$y1
                    image=misc/gold-icon.png
                [/unit_overlay]
                [remove_item]
                    x,y=$x1,$y1
                [/remove_item]
                {VARIABLE gold_1.x 0}
                {VARIABLE gold_1.y 0}
            [/event]

            # If a miner carrying coal dies, we let others pick it up

            [event]
                name=die
                first_time_only=no

                [filter]
                    side=1
                    type=Dwarvish Miner
                    role=has_coal
                [/filter]

                [item]
                    x,y=$x1,$y1
                    image=items/coal.png
                [/item]

                {VARIABLE hex_$x1|_$y1|_coal yes}
            [/event]

            [event]
                name=moveto
                first_time_only=no

                [filter]
                    side=1
                    type=Dwarvish Miner

                    [not]
                        role=has_coal
                    [/not]

                    [not]
                        role=has_gold
                    [/not]
                [/filter]

                [if]
                    [variable]
                        name=hex_$x1|_$y1|_coal
                        equals=yes
                    [/variable]

                    [then]
                        [message]
                            speaker=unit
                            message= _ "I have all the coal I can carry..."
                        [/message]

                        {VARIABLE unit.role has_coal}

                        [unstore_unit]
                            variable=unit
                            find_vacant=no
                        [/unstore_unit]

                        [unit_overlay]
                            x,y=$x1,$y1
                            image=misc/coal-icon.png
                        [/unit_overlay]

                        [remove_item]
                            x,y=$x1,$y1
                        [/remove_item]

                        {CLEAR_VARIABLE hex_$x1|_$y1|_coal}
                    [/then]

                    [else]
                        [allow_undo][/allow_undo]
                    [/else]
                [/if]
            [/event]

            # Exactly same as above, but for gold

            [event]
                name=die
                first_time_only=no

                [filter]
                    side=1
                    type=Dwarvish Miner
                    role=has_gold
                [/filter]

                [item]
                    x,y=$x1,$y1
                    image=items/gold.png
                [/item]

                {VARIABLE hex_$x1|_$y1|_gold yes}
            [/event]

            [event]
                name=moveto
                first_time_only=no

                [filter]
                    side=1
                    type=Dwarvish Miner

                    [not]
                        role=has_coal
                    [/not]

                    [not]
                        role=has_gold
                    [/not]
                [/filter]

                [if]
                    [variable]
                        name=hex_$x1|_$y1|_gold
                        equals=yes
                    [/variable]

                    [then]
                        [message]
                            speaker=unit
                            message= _ "I have all the gold I can carry..."
                        [/message]

                        {VARIABLE unit.role has_gold}

                        [unstore_unit]
                            variable=unit
                            find_vacant=no
                        [/unstore_unit]

                        [unit_overlay]
                            x,y=$x1,$y1
                            image=misc/gold-icon.png
                        [/unit_overlay]

                        [remove_item]
                            x,y=$x1,$y1
                        [/remove_item]

                        {CLEAR_VARIABLE hex_$x1|_$y1|_gold}
                    [/then]

                    [else]
                        [allow_undo][/allow_undo]
                    [/else]
                [/if]
            [/event]

            [event]
                name=moveto
                first_time_only=no
                [filter]
                    type=Dwarvish Miner
                    role=has_coal

                    [filter_location]
                        find_in=resource_return_locations
                    [/filter_location]
                [/filter]
                [message]
                    speaker=unit
                    message= _ "My load of coal is delivered!"
                [/message]

                {CLEAR_VARIABLE unit.role}

                [unstore_unit]
                    variable=unit
                    find_vacant=no
                [/unstore_unit]

                [remove_unit_overlay]
                    x,y=$x1,$y1
                    image=misc/coal-icon.png
                [/remove_unit_overlay]

                [set_variable]
                    name=coalin
                    add=1
                [/set_variable]

                [if]
                    [variable]
                        name=coalin
                        greater_than_equal_to=2
                    [/variable]
                    [then]
                        [message]
                            speaker=unit
                            message= _ "That’s the last load of coal we need."
                        [/message]
                        [if]
                            [variable]
                                name=goldin
                                greater_than_equal_to=1
                            [/variable]
                            [then]
                                [message]
                                    speaker=Thursagan
                                    message= _ "This is all we need from these mines. Now we should go back further west, where there are no trolls and ogres, and mine there."
                                [/message]

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

            [event]
                name=moveto
                first_time_only=no
                [filter]
                    type=Dwarvish Miner
                    role=has_gold

                    [filter_location]
                        find_in=resource_return_locations
                    [/filter_location]
                [/filter]
                [message]
                    speaker=unit
                    message= _ "Here’s the gold."
                [/message]

                {CLEAR_VARIABLE unit.role}

                [unstore_unit]
                    variable=unit
                    find_vacant=no
                [/unstore_unit]

                [remove_unit_overlay]
                    x,y=$x1,$y1
                    image=misc/gold-icon.png
                [/remove_unit_overlay]

                [set_variable]
                    name=goldin
                    add=1
                [/set_variable]

                [if]
                    [variable]
                        name=goldin
                        greater_than_equal_to=1
                    [/variable]
                    [then]
                        [if]
                            [variable]
                                name=coalin
                                greater_than_equal_to=2
                            [/variable]
                            [then]
                                [message]
                                    speaker=Thursagan
                                    message= _ "This is all we need from these mines. Now we should go back further west, where there are no trolls and ogres, and mine there."
                                [/message]

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

            [event]
                name=victory

                [unstore_unit]
                    variable=alanin
                [/unstore_unit]

                [unstore_unit]
                    variable=krawg
                [/unstore_unit]

                {CLEAR_VARIABLE alanin}
                {CLEAR_VARIABLE krawg}

                {CLEAR_VARIABLE coalin}
                {CLEAR_VARIABLE goldin}
                {CLEAR_VARIABLE coal_1}
                {CLEAR_VARIABLE coal_2}
                {CLEAR_VARIABLE gold_1}
                {CLEAR_VARIABLE resource_return_locations}

                [kill]
                    type=Dwarvish Miner
                [/kill]

                [disallow_recruit]
                    side=1
                    type=Dwarvish Miner
                [/disallow_recruit]
            [/event]
        [/settings]

        map_width=45
        map_height=45
        flipx_chance=0
        village_density=60

        #the chamber with the player. Near the south-west corner
        [chamber]
            id=player
            x=10-15
            y=32-38
            size=7
            jagged=40
            [items]
                [side]
                    type=Dwarvish Fighter
                    id=Rugnur
                    side=1
                    canrecruit=yes
                    recruit=Dwarvish Fighter,Dwarvish Thunderer,Dwarvish Guardsman,Dwarvish Scout,Gryphon Rider,Dwarvish Miner
                    controller=human
                    shroud=yes
                    {FLAG_VARIANT knalgan}
                    team_name=dwarves
                    user_team_name= _ "Dwarves"
                [/side]
            [/items]
        [/chamber]

        #the chamber with the coal. Somewhere in the southeast.
        [chamber]
            id=coal1
            x=28-35
            y=28-35
            size=8
            [passage]
                chance=70
                width=1
                windiness=5
                destination=gold
            [/passage]
            [passage]
                chance=50
                width=2
                windiness=5
                destination=coal2
            [/passage]
            [passage]
                chance=50
                width=2
                windiness=5
                destination=gold
            [/passage]
            [passage]
                chance=50
                width=2
                windiness=10
                destination=coal2
            [/passage]
            [items]
                [side]
#ifdef HARD
                    type="Troll Warrior"
#else
                    type="Troll"
#endif
                    side=2
                    canrecruit=yes
                    controller=ai
                    [ai]
                        leader_value=2
                        village_value=0.2
                        recruitment_pattern=fighter,fighter,mixed fighter

                        [target]
                            side=1
                            value=2.0
                        [/target]
                    [/ai]
                    recruit=Troll Whelp,Goblin Spearman,Troll Rocklobber
                    team_name=trolls1
                    user_team_name=_"Trolls"
                    {GOLD 75 125 175}
                [/side]
            [/items]
        [/chamber]

        #the northern chamber with only bad guys. Somewhere in the north-east.
        [chamber]
            id=gold
            x=28-35
            y=5-12
            size=8
            jagged=50
            [passage]
                chance=100
                width=2
                windiness=10
                destination=coal1
            [/passage]
            [passage]
                chance=100
                width=2
                windiness=10
                destination=coal2
            [/passage]
            [passage]
                chance=50
                width=1
                windiness=5
                destination=coal1
            [/passage]
            [passage]
                chance=50
                width=1
                windiness=5
                destination=coal2
            [/passage]
            [items]
                [side]
#ifdef HARD
                    type="Troll Warrior"
#else
                    type="Troll"
#endif
                    side=3
                    canrecruit=yes
                    controller=ai
                    [ai]
                        leader_value=2
                        village_value=0.2
                        recruitment_pattern=fighter

                        [target]
                            side=1
                            value=2.0
                        [/target]
                    [/ai]
                    recruit=Troll Whelp,Goblin Spearman,Young Ogre,Ogre
                    team_name=trolls2
                    user_team_name=_"Trolls"
                    {GOLD 75 125 175}
                [/side]
            [/items]
        [/chamber]

        #chamber with the second coal mine. Somewhere in the north-west.
        [chamber]
            id=coal2
            x=8-12
            y=8-12
            size=7
            [passage]
                chance=70
                width=1
                windiness=5
                destination=gold
            [/passage]
            [passage]
                chance=50
                width=2
                windiness=5
                destination=coal1
            [/passage]
            [passage]
                chance=50
                width=2
                windiness=5
                destination=gold
            [/passage]
            [passage]
                chance=50
                width=1
                windiness=5
                destination=coal1
            [/passage]
            [items]
                [side]
#ifdef HARD
                    type="Troll Warrior"
#else
                    type="Troll"
#endif
                    side=4
                    canrecruit=yes
                    controller=ai
                    [ai]
                        leader_value=2
                        village_value=0.2
                        recruitment_pattern=fighter

                        [target]
                            side=1
                            value=2.0
                        [/target]
                    [/ai]
                    recruit=Goblin Spearman,Goblin Rouser,Goblin Impaler
                    team_name=trolls3
                    user_team_name=_"Trolls"
                    {GOLD 75 125 175}
                [/side]
            [/items]
        [/chamber]

        #chamber with gold in it that connects to all the others
        [chamber]
            id=connector
            x=15-20
            y=15-20
            size=4
            #passages to both the troll's chamber and the player’s chamber
            [passage]
                destination=player
                width=2
                windiness=10
            [/passage]
            [passage]
                destination=coal1
                width=2
                windiness=10
            [/passage]
            [passage]
                destination=coal2
                width=2
                windiness=10
            [/passage]
            [passage]
                destination=gold
                width=2
                windiness=10
            [/passage]
        [/chamber]
    [/generator]
[/scenario]
