ASSBLOW.INT

*This image comes from* Fallout Mod *or from websites created and owned by Game publisher or Game developer, who hold the copyright of* Fallout Mod*. All trademarks and registered trademarks present in the image are proprietary to Game publisher.
The use of images to illustrate articles concerning the subject of the images in question is believed to qualify as **fair use** under United States copyright law, as such display does not significantly impede the right of the copyright holder to sell the copyrighted material.*

Template:Scriptfile

Template:Scriptbox

File:Transcript.png
procedure start;

procedure critter\_p\_proc;

procedure damage\_p\_proc;

procedure destroy\_p\_proc;

procedure map\_enter\_p\_proc;

procedure pickup\_p\_proc;

procedure timed\_event\_p\_proc;

procedure do\_dialogue;

procedure pre\_dialogue;

procedure guard00a;

procedure guard01a;

procedure guard02a;

procedure guard00;

procedure guard00i;

procedure guard00ii;

procedure guard01;

procedure guard01i;

procedure guard02;

procedure guard02i;

procedure guard03;

procedure guard04;

procedure guard05;

procedure guard06;

procedure guard06i;

procedure guard07;

procedure guard08;

procedure guard08i;

procedure guard09;

procedure guard10;

procedure guard11;

procedure guard12;

procedure guard12i;

procedure guard13;

procedure guard14;

procedure guard15;

procedure guard16;

procedure guard17;

procedure Guard18;

procedure guard00N;

procedure guard00Na;

procedure guard01N;

procedure guard02N;

procedure guard03N;

procedure guard04N;

procedure guardend;

variable sneaking;

variable RoundCounter;

variable hostile;

variable warned;

variable line166flag;

import variable weapon\_checked;

import variable sneak\_checked;

import variable times\_caught\_sneaking;

procedure get\_reaction;

procedure ReactToLevel;

procedure LevelToReact;

procedure UpReact;

procedure DownReact;

procedure BottomReact;

procedure TopReact;

procedure BigUpReact;

procedure BigDownReact;

procedure UpReactLevel;

procedure DownReactLevel;

procedure Goodbyes;

variable exit\_line;

procedure start

begin

        if (script\_action == 12) then begin

                call critter\_p\_proc;

        end

        else begin

                if (script\_action == 14) then begin

                        call damage\_p\_proc;

                end

                else begin

                        if (script\_action == 18) then begin

                                call destroy\_p\_proc;

                        end

                        else begin

                                if (script\_action == 15) then begin

                                        call map\_enter\_p\_proc;

                                end

                                else begin

                                        if (script\_action == 4) then begin

                                                call pickup\_p\_proc;

                                        end

                                        else begin

                                                if (script\_action == 11) then begin

                                                        call pre\_dialogue;

                                                end

                                                else begin

                                                        if (script\_action == 21) then begin

                                                                script\_overrides;

                                                                display\_msg(message\_str(135, 100));

                                                        end

                                                        else begin

                                                                if (script\_action == 22) then begin

                                                                        call timed\_event\_p\_proc;

                                                                end

                                                        end

                                                end

                                        end

                                end

                        end

                end

        end

end

procedure critter\_p\_proc

begin

        if (hostile and not(local\_var(4))) then begin

                hostile := 0;

                set\_local\_var(4, 1);

                attack\_complex(dude\_obj, 0, 1, 0, 0, 30000, 0, 0);

        end

        else begin

                if (obj\_can\_see\_obj(self\_obj, dude\_obj)) then begin

                        if (global\_var(247) == 1) then begin

                                if (line166flag == 0) then begin

                                        dialogue\_system\_enter;

                                end

                        end

                        else begin

                                if ((obj\_item\_subtype(critter\_inven\_obj(dude\_obj, 1)) == 3) or (obj\_item\_subtype(critter\_inven\_obj(dude\_obj, 2)) == 3) and not(local\_var(4)) and (global\_var(36) == 0) and (global\_var(104) == 0)) then begin

                                        if (not(weapon\_checked)) then begin

                                                weapon\_checked := 1;

                                                rm\_timer\_event(self\_obj);

                                                add\_timer\_event(self\_obj, game\_ticks(5), 1);

                                                dialogue\_system\_enter;

                                        end

                                end

                                else begin

                                        if (using\_skill(dude\_obj, 8) and not(sneak\_checked)) then begin

                                                sneaking := 1;

                                                sneak\_checked := 1;

                                                rm\_timer\_event(self\_obj);

                                                add\_timer\_event(self\_obj, game\_ticks(5), 2);

                                                dialogue\_system\_enter;

                                        end

                                end

                        end

                end

                if ((game\_time\_hour >= 1900) or (game\_time\_hour < 600)) then begin

                        if (tile\_distance(tile\_num(dude\_obj), 27106) > tile\_distance(tile\_num(dude\_obj), 25905)) then begin

                                if (local\_var(5) == 0) then begin

                                        if (tile\_distance\_objs(self\_obj, dude\_obj) < 12) then begin

                                                if (not(warned)) then begin

                                                        if (not(using\_skill(dude\_obj, 8))) then begin

                                                                warned := 1;

                                                                dialogue\_system\_enter;

                                                                rm\_timer\_event(self\_obj);

                                                                add\_timer\_event(self\_obj, game\_ticks(3), 4);

                                                        end

                                                end

                                        end

                                end

                        end

                end

        end

end

procedure damage\_p\_proc

begin

        if (source\_obj == dude\_obj) then begin

                set\_global\_var(247, 1);

                set\_local\_var(6, 1);

        end

end

procedure destroy\_p\_proc

begin

        if (source\_obj == dude\_obj) then begin

                set\_global\_var(247, 1);

                if (source\_obj == dude\_obj) then begin

                        if (((global\_var(160) + global\_var(159)) >= 25) and ((global\_var(159) > (2 \* global\_var(160))) or (global\_var(156) == 1))) then begin

                                set\_global\_var(156, 1);

                                set\_global\_var(157, 0);

                        end

                        if (((global\_var(160) + global\_var(159)) >= 25) and ((global\_var(160) > (3 \* global\_var(159))) or (global\_var(157) == 1))) then begin

                                set\_global\_var(157, 1);

                                set\_global\_var(156, 0);

                        end

                        set\_global\_var(159, global\_var(159) + 1);

                        if ((global\_var(159) % 2) == 0) then begin

                                set\_global\_var(155, global\_var(155) - 1);

                        end

                end

        end

end

procedure map\_enter\_p\_proc

begin

        if (global\_var(15) == 1) then begin

                kill\_critter(self\_obj, 59);

        end

end

procedure pickup\_p\_proc

begin

        hostile := 1;

end

procedure timed\_event\_p\_proc

begin

        if (fixed\_param == 1) then begin

                if ((obj\_item\_subtype(critter\_inven\_obj(dude\_obj, 1)) == 3) or (obj\_item\_subtype(critter\_inven\_obj(dude\_obj, 2)) == 3)) then begin

                        hostile := 1;

                end

                else begin

                        weapon\_checked := 0;

                end

        end

        else begin

                if (fixed\_param == 2) then begin

                        sneak\_checked := 0;

                end

                else begin

                        if (fixed\_param == 3) then begin

                                hostile := 1;

                        end

                        else begin

                                if (fixed\_param == 4) then begin

                                        if ((game\_time\_hour >= 1900) or (game\_time\_hour < 600)) then begin

                                                if (tile\_distance(tile\_num(dude\_obj), 27106) > tile\_distance(tile\_num(dude\_obj), 25905)) then begin

                                                        if (local\_var(5) == 0) then begin

                                                                if (not(using\_skill(dude\_obj, 8))) then begin

                                                                        hostile := 1;

                                                                end

                                                        end

                                                end

                                                else begin

                                                        warned := 0;

                                                end

                                        end

                                end

                        end

                end

        end

end

procedure do\_dialogue

begin

        call get\_reaction;

        if ((game\_time\_hour >= 1900) or (game\_time\_hour < 600) and (local\_var(7) == 1)) then begin

                if (local\_var(5) == 1) then begin

                        float\_msg(self\_obj, message\_str(135, 167), 0);

                end

                else begin

                        float\_msg(self\_obj, message\_str(135, 156), 0);

                end

        end

        else begin

                start\_gdialog(135, self\_obj, 4, -1, -1);

                gsay\_start;

                if ((obj\_item\_subtype(critter\_inven\_obj(dude\_obj, 1)) == 3) or (obj\_item\_subtype(critter\_inven\_obj(dude\_obj, 2)) == 3) and not(local\_var(4))) then begin

                        call guard00;

                end

                else begin

                        if (sneaking) then begin

                                call guard06;

                        end

                        else begin

                                if ((game\_time\_hour >= 1900) or (game\_time\_hour < 600)) then begin

                                        call guard00N;

                                end

                                else begin

                                        if (local\_var(8) == 0) then begin

                                                call guard10;

                                        end

                                end

                        end

                end

                gsay\_end;

                end\_dialogue;

        end

end

procedure pre\_dialogue

begin

        if ((global\_var(247) == 1) and (line166flag == 0)) then begin

                call Guard18;

        end

        else begin

                if ((obj\_item\_subtype(critter\_inven\_obj(dude\_obj, 1)) == 3) or (obj\_item\_subtype(critter\_inven\_obj(dude\_obj, 2)) == 3) and not(local\_var(4))) then begin

                        call do\_dialogue;

                end

                else begin

                        if (sneaking) then begin

                                call do\_dialogue;

                        end

                        else begin

                                if ((game\_time\_hour >= 1900) or (game\_time\_hour < 600)) then begin

                                        call do\_dialogue;

                                end

                                else begin

                                        if (local\_var(8) == 0) then begin

                                                call do\_dialogue;

                                        end

                                        else begin

                                                call guard02a;

                                        end

                                end

                        end

                end

        end

end

procedure guard00a

begin

        float\_msg(self\_obj, message\_str(135, random(101, 103)), 2);

end

procedure guard01a

begin

        float\_msg(self\_obj, message\_str(135, random(104, 106)), 3);

end

procedure guard02a

begin

        float\_msg(self\_obj, message\_str(135, random(107, 109)), 0);

end

procedure guard00

begin

        gsay\_reply(135, 110);

        giq\_option(4, 135, 111, guard01, 50);

        giq\_option(4, 135, 112, guard00i, 51);

        giq\_option(4, 634, 105, guardend, 50);

        giq\_option(6, 135, 113, guard00ii, 49);

        giq\_option(-3, 135, 114, guard05, 50);

end

procedure guard00i

begin

        call BigDownReact;

        call guard02;

end

procedure guard00ii

begin

        call BigUpReact;

        call guard04;

end

procedure guard01

begin

        gsay\_reply(135, 115);

        giq\_option(4, 135, 116, guard02, 50);

        giq\_option(4, 135, 117, guard01i, 50);

end

procedure guard01i

begin

        if (is\_success(roll\_vs\_skill(dude\_obj, 14, -30))) then begin

                call guard03;

        end

        else begin

                call guard02;

        end

end

procedure guard02

begin

        gsay\_reply(135, 118);

        giq\_option(4, 135, 119, guardend, 50);

        giq\_option(4, 135, 120, guard02i, 51);

end

procedure guard02i

begin

        hostile := 1;

end

procedure guard03

begin

        set\_local\_var(4, 1);

        gsay\_message(135, 121, 50);

end

procedure guard04

begin

        gsay\_message(135, 122, 50);

end

procedure guard05

begin

        gsay\_message(135, 123, 50);

end

procedure guard06

begin

        sneaking := 0;

        gsay\_reply(135, 124);

        giq\_option(4, 135, 125, guard07, 50);

        giq\_option(5, 135, 126, guard06i, 50);

        giq\_option(-3, 135, 127, guard07, 50);

end

procedure guard06i

begin

        variable LVar0 := 0;

        times\_caught\_sneaking := times\_caught\_sneaking + 1;

        LVar0 := -5 \* times\_caught\_sneaking;

        if (is\_success(roll\_vs\_skill(dude\_obj, 14, LVar0))) then begin

                call guard08;

        end

        else begin

                call guard07;

        end

end

procedure guard07

begin

        if (times\_caught\_sneaking > 3) then begin

                gsay\_message(135, 129, 51);

                add\_timer\_event(self\_obj, game\_ticks(10), 3);

        end

        else begin

                gsay\_message(135, 128, 51);

        end

end

procedure guard08

begin

        gsay\_reply(135, 130);

        giq\_option(5, 135, 131, guardend, 50);

        if (get\_critter\_stat(dude\_obj, 34) == 0) then begin

                giq\_option(5, 135, 132, guard08i, 50);

        end

        else begin

                giq\_option(5, 135, 133, guard08i, 50);

        end

end

procedure guard08i

begin

        if (random(0, 1)) then begin

                call UpReact;

        end

        else begin

                call DownReact;

        end

end

procedure guard09

begin

        gsay\_message(135, 134, 50);

end

procedure guard10

begin

        set\_local\_var(8, 1);

        gsay\_reply(135, 135);

        giq\_option(4, 135, 136, guardend, 50);

        giq\_option(5, 135, 137, guard12, 50);

        giq\_option(6, 135, 138, guard15, 50);

        giq\_option(-3, 135, 139, guard11, 50);

end

procedure guard11

begin

        gsay\_message(135, 140, 50);

end

procedure guard12

begin

        gsay\_reply(135, 141);

        giq\_option(5, 135, 142, guard12i, 50);

        giq\_option(5, 135, 143, guard14, 50);

end

procedure guard12i

begin

        if (is\_success(roll\_vs\_skill(dude\_obj, 14, 15))) then begin

                call guard13;

        end

        else begin

                call guard14;

        end

end

procedure guard13

begin

        gsay\_reply(135, 144);

        giq\_option(5, 135, 145, guardend, 50);

        giq\_option(5, 135, 146, BigDownReact, 51);

end

procedure guard14

begin

        gsay\_message(135, 147, 50);

end

procedure guard15

begin

        gsay\_reply(135, 148);

        giq\_option(5, 135, 149, guardend, 50);

        if (get\_critter\_stat(dude\_obj, 34) == 1) then begin

                giq\_option(5, 135, 150, guard16, 50);

        end

end

procedure guard16

begin

        gsay\_message(135, 152, 50);

end

procedure guard17

begin

        gsay\_message(135, random(153, 155), 50);

end

procedure Guard18

begin

        float\_msg(self\_obj, message\_str(135, 166), 2);

        rm\_timer\_event(self\_obj);

        add\_timer\_event(self\_obj, game\_ticks(5), 3);

end

procedure guard00N

begin

        set\_local\_var(7, 1);

        gsay\_reply(135, 156);

        giq\_option(4, 135, 157, guard02N, 50);

        giq\_option(4, 135, 158, guardend, 50);

        giq\_option(5, 135, 159, guard00Na, 50);

        giq\_option(-3, 135, 160, guard01N, 50);

end

procedure guard00Na

begin

        if (is\_success(roll\_vs\_skill(dude\_obj, 14, 0))) then begin

                call guard03N;

        end

        else begin

                call guard02N;

        end

end

procedure guard01N

begin

        gsay\_message(135, 161, 50);

end

procedure guard02N

begin

        gsay\_message(135, 162, 50);

end

procedure guard03N

begin

        set\_local\_var(5, 1);

        gsay\_message(135, 163, 50);

end

procedure guard04N

begin

        set\_local\_var(5, 1);

        gsay\_message(135, message\_str(135, 164) + proto\_data(obj\_pid(dude\_obj), 1) + message\_str(135, 165), 50);

end

procedure guardend

begin

end

procedure get\_reaction

begin

        if (local\_var(2) == 0) then begin

                set\_local\_var(0, 50);

                set\_local\_var(1, 2);

                set\_local\_var(2, 1);

                set\_local\_var(0, local\_var(0) + (5 \* get\_critter\_stat(dude\_obj, 3)) - 25);

                set\_local\_var(0, local\_var(0) + (10 \* has\_trait(0, dude\_obj, 10)));

                if (has\_trait(0, dude\_obj, 39)) then begin

                        if (global\_var(155) > 0) then begin

                                set\_local\_var(0, local\_var(0) + global\_var(155));

                        end

                        else begin

                                set\_local\_var(0, local\_var(0) - global\_var(155));

                        end

                end

                else begin

                        if (local\_var(3) == 1) then begin

                                set\_local\_var(0, local\_var(0) - global\_var(155));

                        end

                        else begin

                                set\_local\_var(0, local\_var(0) + global\_var(155));

                        end

                end

                if (global\_var(158) > 2) then begin

                        set\_local\_var(0, local\_var(0) - 30);

                end

                if (((global\_var(160) + global\_var(159)) >= 25) and ((global\_var(160) > (3 \* global\_var(159))) or (global\_var(157) == 1))) then begin

                        set\_local\_var(0, local\_var(0) + 20);

                end

                if (((global\_var(160) + global\_var(159)) >= 25) and ((global\_var(159) > (2 \* global\_var(160))) or (global\_var(156) == 1))) then begin

                        set\_local\_var(0, local\_var(0) - 20);

                end

                call ReactToLevel;

        end

end

procedure ReactToLevel

begin

        if (local\_var(0) <= 25) then begin

                set\_local\_var(1, 1);

        end

        else begin

                if (local\_var(0) <= 75) then begin

                        set\_local\_var(1, 2);

                end

                else begin

                        set\_local\_var(1, 3);

                end

        end

end

procedure LevelToReact

begin

        if (local\_var(1) == 1) then begin

                set\_local\_var(0, random(1, 25));

        end

        else begin

                if (local\_var(1) == 2) then begin

                        set\_local\_var(0, random(26, 75));

                end

                else begin

                        set\_local\_var(0, random(76, 100));

                end

        end

end

procedure UpReact

begin

        set\_local\_var(0, local\_var(0) + 10);

        call ReactToLevel;

end

procedure DownReact

begin

        set\_local\_var(0, local\_var(0) - 10);

        call ReactToLevel;

end

procedure BottomReact

begin

        set\_local\_var(1, 1);

        set\_local\_var(0, 1);

end

procedure TopReact

begin

        set\_local\_var(0, 100);

        set\_local\_var(1, 3);

end

procedure BigUpReact

begin

        set\_local\_var(0, local\_var(0) + 25);

        call ReactToLevel;

end

procedure BigDownReact

begin

        set\_local\_var(0, local\_var(0) - 25);

        call ReactToLevel;

end

procedure UpReactLevel

begin

        set\_local\_var(1, local\_var(1) + 1);

        if (local\_var(1) > 3) then begin

                set\_local\_var(1, 3);

        end

        call LevelToReact;

end

procedure DownReactLevel

begin

        set\_local\_var(1, local\_var(1) - 1);

        if (local\_var(1) < 1) then begin

                set\_local\_var(1, 1);

        end

        call LevelToReact;

end

procedure Goodbyes

begin

        exit\_line := message\_str(634, random(100, 105));

end