hedgewars/GSHandlers.inc
author sheepluva
Sat, 26 Jun 2010 19:30:16 +0200
changeset 3569 27b0ec683572
parent 3562 c601630a12d5
child 3570 3836fa355f96
permissions -rw-r--r--
portal / slope detection: * make portal shot collision work regardless of portal projectile velocity * small hax so that hogs can open portals below their feet * killing some whitespaces for my personal entertainment
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     1
(*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 1047
diff changeset
     2
 * Hedgewars, a free turn based strategy game
3236
4ab3917d7d44 Update (c) lines to 2010 as unc0rr requested - they all had varying values so I just took the first year mentioned, then tacked on -2010
nemo
parents: 3216
diff changeset
     3
 * Copyright (c) 2004-2010 Andrey Korotaev <unC0Rr@gmail.com>
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     4
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 161
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
57c2ef19f719 Relicense to GPL
unc0rr
parents: 161
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
57c2ef19f719 Relicense to GPL
unc0rr
parents: 161
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     8
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 161
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
57c2ef19f719 Relicense to GPL
unc0rr
parents: 161
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
57c2ef19f719 Relicense to GPL
unc0rr
parents: 161
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
57c2ef19f719 Relicense to GPL
unc0rr
parents: 161
diff changeset
    12
 * GNU General Public License for more details.
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    13
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 161
diff changeset
    14
 * You should have received a copy of the GNU General Public License
57c2ef19f719 Relicense to GPL
unc0rr
parents: 161
diff changeset
    15
 * along with this program; if not, write to the Free Software
57c2ef19f719 Relicense to GPL
unc0rr
parents: 161
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    17
 *)
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    18
3569
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    19
procedure doStepPerPixel(Gear: PGear; step: TGearStepProcedure; onlyCheckIfChanged: boolean);
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    20
var
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    21
    dX, dY, sX, sY: hwFloat;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    22
    i, steps: LongWord;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    23
    caller: TGearStepProcedure;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    24
begin
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    25
    dX:= Gear^.dX;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    26
    dY:= Gear^.dY;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    27
    steps:= max(abs(hwRound(Gear^.X+dX)-hwRound(Gear^.X)), abs(hwRound(Gear^.Y+dY)-hwRound(Gear^.Y)));
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    28
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    29
    // Gear is still on the same Pixel it was before
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    30
    if steps < 1 then
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    31
    begin
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    32
        if onlyCheckIfChanged then
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    33
        begin
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    34
            Gear^.X := Gear^.X + dX;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    35
            Gear^.Y := Gear^.Y + dY;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    36
            EXIT;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    37
        end
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    38
        else
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    39
            steps := 1;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    40
    end;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    41
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    42
    if steps > 1 then
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    43
    begin
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    44
        sX:= dX / steps;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    45
        sY:= dY / steps;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    46
    end
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    47
    else
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    48
    begin
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    49
        sX:= dX;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    50
        sY:= dY;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    51
    end;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    52
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    53
    caller:= Gear^.doStep;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    54
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    55
    for i:= 1 to steps do
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    56
    begin
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    57
        Gear^.X := Gear^.X + sX;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    58
        Gear^.Y := Gear^.Y + sY;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    59
        step(Gear);
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    60
        if (Gear^.doStep <> caller)
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    61
        or ((Gear^.State and gstCollision) <> 0)
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    62
        or ((Gear^.State and gstMoving) = 0) then
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    63
            break;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    64
    end;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    65
end;
27b0ec683572 portal / slope detection:
sheepluva
parents: 3562
diff changeset
    66
2647
0e1208e92dfe Smaxx patch with tuning by me:
unc0rr
parents: 2634
diff changeset
    67
procedure makeHogsWorry(x, y: hwFloat; r: LongInt);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    68
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    69
    gi: PGear;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    70
    d: LongInt;
2647
0e1208e92dfe Smaxx patch with tuning by me:
unc0rr
parents: 2634
diff changeset
    71
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    72
    gi := GearsList;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
    73
    while gi <> nil do
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    74
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    75
        if (gi^.Kind = gtHedgehog) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
    76
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    77
            d := r - hwRound(Distance(gi^.X - x, gi^.Y - y));
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    78
            if (d > 1) and not gi^.Invulnerable and (GetRandom(2) = 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
    79
            begin
3143
682bc7f99c63 * tweaked some random stuff in GSHandlers.inc
sheepluva
parents: 3139
diff changeset
    80
                if (CurrentHedgehog^.Gear = gi) then
682bc7f99c63 * tweaked some random stuff in GSHandlers.inc
sheepluva
parents: 3139
diff changeset
    81
                    PlaySound(sndOops, PHedgehog(gi^.Hedgehog)^.Team^.voicepack)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
    82
                else
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    83
                begin
3143
682bc7f99c63 * tweaked some random stuff in GSHandlers.inc
sheepluva
parents: 3139
diff changeset
    84
                    if (gi^.State and gstMoving) = 0 then
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    85
                        gi^.State := gi^.State or gstLoser;
3143
682bc7f99c63 * tweaked some random stuff in GSHandlers.inc
sheepluva
parents: 3139
diff changeset
    86
                    if d > r div 2 then
682bc7f99c63 * tweaked some random stuff in GSHandlers.inc
sheepluva
parents: 3139
diff changeset
    87
                        PlaySound(sndNooo, PHedgehog(gi^.Hedgehog)^.Team^.voicepack)
682bc7f99c63 * tweaked some random stuff in GSHandlers.inc
sheepluva
parents: 3139
diff changeset
    88
                    else
682bc7f99c63 * tweaked some random stuff in GSHandlers.inc
sheepluva
parents: 3139
diff changeset
    89
                        PlaySound(sndUhOh, PHedgehog(gi^.Hedgehog)^.Team^.voicepack);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
    90
                end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
    91
            end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
    92
        end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    93
        gi := gi^.NextGear
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    94
    end;
2647
0e1208e92dfe Smaxx patch with tuning by me:
unc0rr
parents: 2634
diff changeset
    95
end;
0e1208e92dfe Smaxx patch with tuning by me:
unc0rr
parents: 2634
diff changeset
    96
////////////////////////////////////////////////////////////////////////////////
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    97
procedure doStepDrowningGear(Gear: PGear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
    98
forward;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    99
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   100
function CheckGearDrowning(Gear: PGear): boolean;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   101
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   102
    skipSpeed, skipAngle, skipDecay: hwFloat;
2982
4213c6a8aceb Palewolf adds droplets to his splashes
nemo
parents: 2974
diff changeset
   103
    i, maxDrops: LongInt;
4213c6a8aceb Palewolf adds droplets to his splashes
nemo
parents: 2974
diff changeset
   104
    particle: PVisualGear;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   105
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   106
    // probably needs tweaking. might need to be in a case statement based upon gear type
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   107
    if cWaterLine < hwRound(Gear^.Y) + Gear^.Radius then
1918
975d5061712f patch by nemo: water bouncing + some tweaks
unc0rr
parents: 1915
diff changeset
   108
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   109
        skipSpeed := _0_25;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   110
        skipAngle := _1_9;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   111
        skipDecay := _0_87;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   112
        // this could perhaps be a tiny bit higher.
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   113
        if  (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > skipSpeed) and
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   114
           (hwAbs(Gear^.dX) > skipAngle * hwAbs(Gear^.dY)) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   115
        begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   116
            Gear^.dY.isNegative := true;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   117
            Gear^.dY := Gear^.dY * skipDecay;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   118
            Gear^.dX := Gear^.dX * skipDecay;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   119
            CheckGearDrowning := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   120
            PlaySound(sndSkip)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   121
        end
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   122
        else
1918
975d5061712f patch by nemo: water bouncing + some tweaks
unc0rr
parents: 1915
diff changeset
   123
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   124
            CheckGearDrowning := true;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   125
            Gear^.State := gstDrowning;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   126
            Gear^.RenderTimer := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   127
            if (Gear^.Kind <> gtSniperRifleShot) and (Gear^.Kind <> gtShotgunShot) and (Gear^.Kind <> gtDEagleShot) and (Gear^.Kind <> gtSineGunShot) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   128
                Gear^.doStep := @doStepDrowningGear;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   129
            if Gear^.Kind = gtHedgehog then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   130
            begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   131
                Gear^.State := Gear^.State and (not gstHHDriven);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   132
                AddCaption(Format(GetEventString(eidDrowned), PHedgehog(Gear^.Hedgehog)^.Name),
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   133
                cWhiteColor, capgrpMessage);
3359
d17b9f6adae5 Engine:
smxx
parents: 3358
diff changeset
   134
            end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   135
            if hwRound(Gear^.Y) < cWaterLine + 64 + Gear^.Radius then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   136
                // don't play splash if they are already way past the surface
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   137
                PlaySound(sndSplash)
1918
975d5061712f patch by nemo: water bouncing + some tweaks
unc0rr
parents: 1915
diff changeset
   138
        end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   139
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   140
        if not cReducedQuality and (hwRound(Gear^.Y) < cWaterLine + 64 + Gear^.Radius) then
2982
4213c6a8aceb Palewolf adds droplets to his splashes
nemo
parents: 2974
diff changeset
   141
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   142
            AddVisualGear(hwRound(Gear^.X), cWaterLine, vgtSplash);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   143
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   144
            maxDrops := (Gear^.Radius div 2) + hwRound(Gear^.dX * Gear^.Radius * 2) + hwRound(Gear^.
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   145
                        dY * Gear^.Radius * 2);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   146
            for i:= max(maxDrops div 3, min(32, Random(maxDrops))) downto 0 do
2982
4213c6a8aceb Palewolf adds droplets to his splashes
nemo
parents: 2974
diff changeset
   147
            begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   148
                particle := AddVisualGear(hwRound(Gear^.X) - 3 + Random(6), cWaterLine, vgtDroplet);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   149
                if particle <> nil then
2982
4213c6a8aceb Palewolf adds droplets to his splashes
nemo
parents: 2974
diff changeset
   150
                begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   151
                    particle^.dX := particle^.dX - (Gear^.dX / 10);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   152
                    particle^.dY := particle^.dY - (Gear^.dY / 5)
2982
4213c6a8aceb Palewolf adds droplets to his splashes
nemo
parents: 2974
diff changeset
   153
                end
4213c6a8aceb Palewolf adds droplets to his splashes
nemo
parents: 2974
diff changeset
   154
            end
4213c6a8aceb Palewolf adds droplets to his splashes
nemo
parents: 2974
diff changeset
   155
        end;
1918
975d5061712f patch by nemo: water bouncing + some tweaks
unc0rr
parents: 1915
diff changeset
   156
    end
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   157
    else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   158
        CheckGearDrowning := false
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   159
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   160
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   161
procedure CheckCollision(Gear: PGear);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   162
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   163
    if TestCollisionXwithGear(Gear, hwSign(Gear^.X)) or TestCollisionYwithGear(Gear, hwSign(Gear^.Y)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   164
       )
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   165
        then Gear^.State := Gear^.State or      gstCollision
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   166
    else Gear^.State := Gear^.State and not gstCollision
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   167
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   168
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   169
procedure CheckHHDamage(Gear: PGear);
2848
8a1725b4f724 Engine:
smxx
parents: 2840
diff changeset
   170
var 
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   171
    dmg: Longword;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   172
    i: LongInt;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   173
    particle: PVisualGear;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   174
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   175
    if _0_4 < Gear^.dY then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   176
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   177
        dmg := ModifyDamage(1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70), Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   178
        if dmg < 1 then exit;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   179
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   180
        for i:= min(12, (3 + dmg div 10)) downto 0 do
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   181
        begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   182
            particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12,
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   183
                        vgtDust);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   184
            if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX / 5);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   185
        end;
2871
eec42a0b7014 rearrange fall damage a bit so invulnerability still causes dust
nemo
parents: 2859
diff changeset
   186
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   187
        if (Gear^.Invulnerable) then exit;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   188
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   189
        if _0_6 < Gear^.dY then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   190
            PlaySound(sndOw4, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   191
        else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   192
            PlaySound(sndOw1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   193
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   194
        ApplyDamage(Gear, dmg);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   195
    end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   196
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   197
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   198
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   199
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   200
procedure CalcRotationDirAngle(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   201
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   202
    dAngle: real;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   203
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   204
    dAngle := (Gear^.dX.QWordValue + Gear^.dY.QWordValue) / $80000000;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   205
    if not Gear^.dX.isNegative then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   206
        Gear^.DirAngle := Gear^.DirAngle + dAngle
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   207
    else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   208
        Gear^.DirAngle := Gear^.DirAngle - dAngle;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   209
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   210
    if Gear^.DirAngle < 0 then Gear^.DirAngle := Gear^.DirAngle + 360
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   211
    else if 360 < Gear^.DirAngle then Gear^.DirAngle := Gear^.DirAngle - 360
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   212
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   213
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   214
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   215
procedure doStepDrowningGear(Gear: PGear);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   216
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   217
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   218
    Gear^.Y := Gear^.Y + cDrownSpeed;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   219
    Gear^.X := Gear^.X + Gear^.dX * cDrownSpeed;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   220
    if (cWaterOpacity > $FE) or (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   221
        DeleteGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   222
    // Create some bubbles (0.5% might be better but causes too few bubbles sometimes)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   223
    if (cWaterOpacity < $FF) and ((GameTicks and $1F) = 0) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   224
        if (Gear^.Kind = gtHedgehog) and (Random(4) = 0) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   225
            AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius,
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   226
            vgtBubble)
2225
162d8f6bca25 Fewer bubbles for non-breathing gears
nemo
parents: 2221
diff changeset
   227
    else if Random(12) = 0 then
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   228
             AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius,
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   229
             vgtBubble)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   230
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   231
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   232
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   233
procedure doStepFallingGear(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   234
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   235
    isFalling: boolean;
3020
9b443edb8dd1 use cWaterLine for steam, splashes and droplets
nemo
parents: 3019
diff changeset
   236
    //tmp: QWord;
2998
5b74906c14bb Slightly better behaved bounce, assuming we can make this 45 deg thing work, calcs could stand some optimisation.
nemo
parents: 2995
diff changeset
   237
    tdX, tdY: hwFloat;
3001
a1d1e0d0067a Still fiddling with bouncing, hoping to make it work
nemo
parents: 2998
diff changeset
   238
    collV, collH: LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   239
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   240
    if Gear^.dX > _0_995 then Gear^.dX := _0_995;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   241
    if Gear^.dY > _0_995 then Gear^.dY := _0_995;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   242
    Gear^.State := Gear^.State and not gstCollision;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   243
    collV := 0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   244
    collH := 0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   245
    tdX := Gear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   246
    tdY := Gear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   247
503
2cfdc4bfc2be Mines also collide
unc0rr
parents: 498
diff changeset
   248
3359
d17b9f6adae5 Engine:
smxx
parents: 3358
diff changeset
   249
// might need some testing/adjustments - just to avoid projectiles to fly forever (accelerated by wind/skips)
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   250
    if (hwRound(Gear^.X) < LAND_WIDTH div -2) or (hwRound(Gear^.X) > LAND_WIDTH * 3 div 2) then
3359
d17b9f6adae5 Engine:
smxx
parents: 3358
diff changeset
   251
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   252
        Gear^.State := Gear^.State or gstCollision;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   253
        exit
3359
d17b9f6adae5 Engine:
smxx
parents: 3358
diff changeset
   254
    end;
d17b9f6adae5 Engine:
smxx
parents: 3358
diff changeset
   255
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   256
    if Gear^.dY.isNegative then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   257
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   258
        isFalling := true;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   259
        if TestCollisionYwithGear(Gear, -1) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   260
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   261
            collV := -1;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   262
            Gear^.dX :=   Gear^.dX * Gear^.Friction;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   263
            Gear^.dY := - Gear^.dY * Gear^.Elasticity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   264
            Gear^.State := Gear^.State or gstCollision
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   265
        end
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   266
        else if (Gear^.AdvBounce=1) and TestCollisionYwithGear(Gear, 1) then collV := 1;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   267
    end
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   268
    else if TestCollisionYwithGear(Gear, 1) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   269
        begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   270
            collV := 1;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   271
            isFalling := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   272
            Gear^.dX :=   Gear^.dX * Gear^.Friction;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   273
            Gear^.dY := - Gear^.dY * Gear^.Elasticity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   274
            Gear^.State := Gear^.State or gstCollision
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   275
        end
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   276
    else
3071
f40a3fbe3b34 Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents: 3065
diff changeset
   277
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   278
        isFalling := true;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   279
        if (Gear^.AdvBounce=1) and not Gear^.dY.isNegative and TestCollisionYwithGear(Gear, -1) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   280
            collV := -1;
3071
f40a3fbe3b34 Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents: 3065
diff changeset
   281
    end;
503
2cfdc4bfc2be Mines also collide
unc0rr
parents: 498
diff changeset
   282
2989
b49d87499398 Add back sheepluva's 45° patch for some weapons. Rescale Tiy's latest icons to his specifications.
nemo
parents: 2983
diff changeset
   283
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   284
    if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   285
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   286
        collH := hwSign(Gear^.dX);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   287
        Gear^.dX := - Gear^.dX * Gear^.Elasticity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   288
        Gear^.dY :=   Gear^.dY * Gear^.Elasticity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   289
        Gear^.State := Gear^.State or gstCollision
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   290
    end
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   291
    else if (Gear^.AdvBounce=1) and TestCollisionXwithGear(Gear, -hwSign(Gear^.dX)) then 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   292
        collH := -hwSign(Gear^.dX); 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   293
    //if Gear^.AdvBounce and (collV <>0) and (collH <> 0) and (hwSqr(tdX) + hwSqr(tdY) > _0_08) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   294
    if (Gear^.AdvBounce=1) and (collV <>0) and (collH <> 0) and ((collV=-1) or ((tdX.QWordValue +
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   295
       tdY.QWordValue) > _0_2.QWordValue)) then
3001
a1d1e0d0067a Still fiddling with bouncing, hoping to make it work
nemo
parents: 2998
diff changeset
   296
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   297
        Gear^.dX := tdY*Gear^.Elasticity*Gear^.Friction;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   298
        Gear^.dY := tdX*Gear^.Elasticity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   299
        //*Gear^.Friction;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   300
        Gear^.dY.isNegative := not tdY.isNegative;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   301
        isFalling := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   302
        Gear^.AdvBounce := 10;
3001
a1d1e0d0067a Still fiddling with bouncing, hoping to make it work
nemo
parents: 2998
diff changeset
   303
    end;
503
2cfdc4bfc2be Mines also collide
unc0rr
parents: 498
diff changeset
   304
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   305
    if Gear^.AdvBounce > 1 then dec(Gear^.AdvBounce);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   306
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   307
    if isFalling then Gear^.dY := Gear^.dY + cGravity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   308
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   309
    Gear^.X := Gear^.X + Gear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   310
    Gear^.Y := Gear^.Y + Gear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   311
    CheckGearDrowning(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   312
    //if (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) < _0_0002) and
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   313
    if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_02.QWordValue) and
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   314
       (not isFalling) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   315
        Gear^.State := Gear^.State and not gstMoving
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   316
    else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   317
        Gear^.State := Gear^.State or      gstMoving;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   318
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   319
    if (Gear^.nImpactSounds > 0) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   320
        if ((Gear^.Damage <> 0) or ((Gear^.State and (gstCollision or gstMoving)) = (gstCollision or
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   321
           gstMoving))) and
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   322
           ((Gear^.dX.QWordValue > _0_1.QWordValue) or (Gear^.dY.QWordValue > _0_1.QWordValue)) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   323
            PlaySound(TSound(ord(Gear^.ImpactSound) + LongInt(GetRandom(Gear^.nImpactSounds))), true
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   324
            );
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   325
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   326
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   327
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   328
procedure doStepBomb(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   329
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   330
    i, x, y: LongInt;
919
fadfefc2ae40 It looks like fix for cluster bomb issue...
unc0rr
parents: 915
diff changeset
   331
    dX, dY: hwFloat;
2538
661079b00177 Just checking this in so prg can try it. May back it out
nemo
parents: 2524
diff changeset
   332
    Fire: PGear;
3475
95345f98da19 Engine:
smxx
parents: 3473
diff changeset
   333
    vg: PVisualGear;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   334
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   335
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   336
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   337
    doStepFallingGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   338
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   339
    dec(Gear^.Timer);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   340
    if Gear^.Timer = 1000 then // might need adjustments
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   341
        case Gear^.Kind of 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   342
            gtAmmo_Bomb: makeHogsWorry(Gear^.X, Gear^.Y, 50);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   343
            gtClusterBomb: makeHogsWorry(Gear^.X, Gear^.Y, 20);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   344
            gtWatermelon: makeHogsWorry(Gear^.X, Gear^.Y, 75);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   345
            gtHellishBomb: makeHogsWorry(Gear^.X, Gear^.Y, 90);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   346
            gtGasBomb: makeHogsWorry(Gear^.X, Gear^.Y, 50);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   347
        end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   348
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   349
    if (Gear^.Kind = gtBall) and ((Gear^.State and gstTmpFlag) <> 0) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   350
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   351
        CheckCollision(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   352
        if (Gear^.State and gstCollision) <> 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   353
            doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLDontDraw or EXPLNoGfx);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   354
    end;
3004
e9b3613cc3fb Engine:
smxx
parents: 3002
diff changeset
   355
3475
95345f98da19 Engine:
smxx
parents: 3473
diff changeset
   356
    if (Gear^.Kind = gtGasBomb) and ((GameTicks mod 200) = 0) then
95345f98da19 Engine:
smxx
parents: 3473
diff changeset
   357
    begin
95345f98da19 Engine:
smxx
parents: 3473
diff changeset
   358
        vg:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeWhite);
95345f98da19 Engine:
smxx
parents: 3473
diff changeset
   359
        if vg <> nil then
95345f98da19 Engine:
smxx
parents: 3473
diff changeset
   360
            vg^.Tint:= $FFC0C000;
95345f98da19 Engine:
smxx
parents: 3473
diff changeset
   361
    end;
95345f98da19 Engine:
smxx
parents: 3473
diff changeset
   362
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   363
    if Gear^.Timer = 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   364
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   365
        case Gear^.Kind of 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   366
            gtAmmo_Bomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   367
            gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, EXPLAutoSound);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   368
            gtClusterBomb: 
3476
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   369
                begin
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   370
                    x := hwRound(Gear^.X);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   371
                    y := hwRound(Gear^.Y);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   372
                    doMakeExplosion(x, y, 20, EXPLAutoSound);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   373
                    for i:= 0 to 4 do
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   374
                        begin
3505
ada9f697eb11 Engine:
mario.liebisch
parents: 3497
diff changeset
   375
                        dX := rndSign(GetRandom * _0_1) + Gear^.dX / 5;
3476
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   376
                        dY := (GetRandom - _3) * _0_08;
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   377
                        AddGear(x, y, gtCluster, 0, dX, dY, 25);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   378
                        end
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   379
                end;
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   380
            gtWatermelon: 
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   381
                begin
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   382
                x := hwRound(Gear^.X);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   383
                y := hwRound(Gear^.Y);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   384
                doMakeExplosion(x, y, 75, EXPLAutoSound);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   385
                for i:= 0 to 5 do
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   386
                    begin
3505
ada9f697eb11 Engine:
mario.liebisch
parents: 3497
diff changeset
   387
                    dX := rndSign(GetRandom * _0_1) + Gear^.dX / 5;
3476
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   388
                    dY := (GetRandom - _1_5) * _0_3;
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   389
                    AddGear(x, y, gtMelonPiece, 0, dX, dY, 75)^.DirAngle := i * 60;
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   390
                    end
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   391
                end;
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   392
            gtHellishBomb: 
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   393
                begin
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   394
                x := hwRound(Gear^.X);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   395
                y := hwRound(Gear^.Y);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   396
                doMakeExplosion(x, y, 90, EXPLAutoSound);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   397
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   398
                for i:= 0 to 127 do
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   399
                    begin
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   400
                    dX := AngleCos(i * 16) * _0_5 * (GetRandom + _1);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   401
                    dY := AngleSin(i * 16) * _0_5 * (GetRandom + _1);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   402
                    Fire := AddGear(x, y, gtFlame, 0, dX, dY, 0);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   403
                    if i mod 2 = 0 then Fire^.State := Fire^.State or gsttmpFlag;
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   404
                    Fire := AddGear(x, y, gtFlame, 0, dX, -dY, 0);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   405
                    if i mod 2 <> 0 then Fire^.State := Fire^.State or gsttmpFlag;
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   406
                    end
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   407
                end;
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   408
            gtGasBomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound or EXPLPoisoned);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   409
        end;
3476
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   410
    DeleteGear(Gear);
1ec68b8d3bd1 Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents: 3475
diff changeset
   411
    exit
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   412
end;
1263
24677a82531d Add Hellish bomb weapon
unc0rr
parents: 1262
diff changeset
   413
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   414
CalcRotationDirAngle(Gear);
1263
24677a82531d Add Hellish bomb weapon
unc0rr
parents: 1262
diff changeset
   415
24677a82531d Add Hellish bomb weapon
unc0rr
parents: 1262
diff changeset
   416
if Gear^.Kind = gtHellishBomb then
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   417
begin
3118
1320933fd651 New impact sounds for HHG
nemo
parents: 3115
diff changeset
   418
1320933fd651 New impact sounds for HHG
nemo
parents: 3115
diff changeset
   419
    if Gear^.Timer = 3000 then
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   420
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   421
        Gear^.nImpactSounds := 0;
3118
1320933fd651 New impact sounds for HHG
nemo
parents: 3115
diff changeset
   422
        PlaySound(sndHellish);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   423
    end;
1279
33cae6d1635c Use new sounds
unc0rr
parents: 1273
diff changeset
   424
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   425
    if (GameTicks and $3F) = 0 then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   426
        if (Gear^.State and gstCollision) = 0 then
3440
dee31c5149e0 * gtHealthTag, gtSmokeTrace, gtEvilTrace, gtExplosion and gtBigExplosion are visual gears now (vgt*)
sheepluva
parents: 3431
diff changeset
   427
            AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEvilTrace);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   428
end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   429
end;
2457
ecf0c7e7995b Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents: 2455
diff changeset
   430
////////////////////////////////////////////////////////////////////////////////
ecf0c7e7995b Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents: 2455
diff changeset
   431
procedure doStepMolotov(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   432
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   433
    i, gX, gY: LongInt;
2457
ecf0c7e7995b Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents: 2455
diff changeset
   434
    dX, dY: hwFloat;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   435
    Fire: PGear;
2457
ecf0c7e7995b Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents: 2455
diff changeset
   436
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   437
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   438
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   439
    doStepFallingGear(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   440
    CalcRotationDirAngle(Gear);
2457
ecf0c7e7995b Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents: 2455
diff changeset
   441
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   442
    if (Gear^.State and gstCollision) <> 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   443
    begin
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   444
        PlaySound(sndMolotov);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   445
        gX := hwRound(Gear^.X);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   446
        gY := hwRound(Gear^.Y);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   447
        //doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 5, EXPLAutoSound);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   448
        for i:= 0 to 20 do
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   449
        begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   450
            dX := AngleCos(i * 2) * ((_0_1*(i div 5))) * (GetRandom + _1);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   451
            dY := AngleSin(i * 8) * _0_5 * (GetRandom + _1);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   452
            Fire := AddGear(gX, gY, gtFlame, 0, dX, dY, 0);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   453
            Fire^.State := Fire^.State or gsttmpFlag;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   454
            Fire := AddGear(gX, gY, gtFlame, 0, dX, -dY, 0);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   455
            Fire^.State := Fire^.State or gsttmpFlag;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   456
            Fire := AddGear(gX, gY, gtFlame, 0, -dX, dY, 0);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   457
            Fire^.State := Fire^.State or gsttmpFlag;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   458
            Fire := AddGear(gX, gY, gtFlame, 0, -dX, -dY, 0);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   459
            Fire^.State := Fire^.State or gsttmpFlag;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   460
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   461
        DeleteGear(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   462
        exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   463
    end;
2457
ecf0c7e7995b Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents: 2455
diff changeset
   464
end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   465
1279
33cae6d1635c Use new sounds
unc0rr
parents: 1273
diff changeset
   466
procedure doStepWatermelon(Gear: PGear);
33cae6d1635c Use new sounds
unc0rr
parents: 1273
diff changeset
   467
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   468
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   469
    Gear^.doStep := @doStepBomb
1279
33cae6d1635c Use new sounds
unc0rr
parents: 1273
diff changeset
   470
end;
33cae6d1635c Use new sounds
unc0rr
parents: 1273
diff changeset
   471
78
66bb79dd248d Cluster bomb
unc0rr
parents: 75
diff changeset
   472
procedure doStepCluster(Gear: PGear);
66bb79dd248d Cluster bomb
unc0rr
parents: 75
diff changeset
   473
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   474
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   475
    doStepFallingGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   476
    if (Gear^.State and gstCollision) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   477
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   478
        doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Timer, EXPLAutoSound);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   479
        DeleteGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   480
        exit
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   481
    end;
1262
e9191c693e44 Add watermelon sprite
unc0rr
parents: 1261
diff changeset
   482
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   483
    if (Gear^.Kind = gtMelonPiece) or (Gear^.Kind = gtBall) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   484
        CalcRotationDirAngle(Gear)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   485
    else if (GameTicks and $1F) = 0 then
3440
dee31c5149e0 * gtHealthTag, gtSmokeTrace, gtEvilTrace, gtExplosion and gtBigExplosion are visual gears now (vgt*)
sheepluva
parents: 3431
diff changeset
   486
        AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace)
78
66bb79dd248d Cluster bomb
unc0rr
parents: 75
diff changeset
   487
end;
66bb79dd248d Cluster bomb
unc0rr
parents: 75
diff changeset
   488
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   489
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   490
procedure doStepGrenade(Gear: PGear);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   491
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   492
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   493
    Gear^.dX := Gear^.dX + cWindSpeed;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   494
    doStepFallingGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   495
    if (Gear^.State and gstCollision) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   496
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   497
        doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   498
        DeleteGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   499
        exit
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   500
    end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   501
    if (GameTicks and $3F) = 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   502
        AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace);
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 89
diff changeset
   503
end;
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 89
diff changeset
   504
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   505
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   506
procedure doStepGrave(Gear: PGear);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   507
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   508
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   509
    if Gear^.dY.isNegative then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   510
        if TestCollisionY(Gear, -1) then Gear^.dY := _0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   511
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   512
    if not Gear^.dY.isNegative then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   513
        if TestCollisionY(Gear, 1) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   514
        begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   515
            Gear^.dY := - Gear^.dY * Gear^.Elasticity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   516
            if Gear^.dY > - _1div1024 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   517
            begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   518
                Gear^.Active := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   519
                exit
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   520
            end
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   521
            else if Gear^.dY < - _0_03 then PlaySound(Gear^.ImpactSound)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   522
        end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   523
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   524
    Gear^.Y := Gear^.Y + Gear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   525
    CheckGearDrowning(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   526
    Gear^.dY := Gear^.dY + cGravity
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   527
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   528
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   529
////////////////////////////////////////////////////////////////////////////////
3080
b7fa8ad60e3b Engine:
smxx
parents: 3075
diff changeset
   530
procedure doStepBeeWork(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   531
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   532
    t: hwFloat;
3143
682bc7f99c63 * tweaked some random stuff in GSHandlers.inc
sheepluva
parents: 3139
diff changeset
   533
    gX,gY: LongInt;
3139
a075f5344796 Engine:
smxx
parents: 3136
diff changeset
   534
    nuw: boolean;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   535
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   536
const uw: boolean =   false;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   537
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   538
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   539
    gX := hwRound(Gear^.X);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   540
    gY := hwRound(Gear^.Y);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   541
    nuw := (cWaterLine < hwRound(Gear^.Y) + Gear^.Radius);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   542
    if nuw and not uw then
3139
a075f5344796 Engine:
smxx
parents: 3136
diff changeset
   543
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   544
        AddVisualGear(gX, cWaterLine, vgtSplash);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   545
        AddVisualGear(gX - 3 + Random(6), cWaterLine, vgtDroplet);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   546
        AddVisualGear(gX - 3 + Random(6), cWaterLine, vgtDroplet);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   547
        AddVisualGear(gX - 3 + Random(6), cWaterLine, vgtDroplet);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   548
        AddVisualGear(gX - 3 + Random(6), cWaterLine, vgtDroplet);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   549
        StopSound(Gear^.SoundChannel);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   550
        Gear^.SoundChannel := LoopSound(sndBeeWater);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   551
        uw := nuw
3139
a075f5344796 Engine:
smxx
parents: 3136
diff changeset
   552
    end
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   553
    else if not nuw and uw then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   554
        begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   555
            AddVisualGear(gX, cWaterLine, vgtSplash);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   556
            StopSound(Gear^.SoundChannel);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   557
            Gear^.SoundChannel := LoopSound(sndBee);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   558
            uw := nuw
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   559
        end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   560
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   561
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   562
    t := Distance(Gear^.dX, Gear^.dY);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   563
    Gear^.dX := Gear^.Elasticity * (Gear^.dX + _0_000004 * (TargetPoint.X - gX));
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   564
    Gear^.dY := Gear^.Elasticity * (Gear^.dY + _0_000004 * (TargetPoint.Y - gY));
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   565
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   566
    t := t / Distance(Gear^.dX, Gear^.dY);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   567
    Gear^.dX := Gear^.dX * t;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   568
    Gear^.dY := Gear^.dY * t;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   569
    Gear^.X := Gear^.X + Gear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   570
    Gear^.Y := Gear^.Y + Gear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   571
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   572
    if (GameTicks and $3F) = 0 then
3139
a075f5344796 Engine:
smxx
parents: 3136
diff changeset
   573
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   574
        AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBeeTrace);
3139
a075f5344796 Engine:
smxx
parents: 3136
diff changeset
   575
    end;
a075f5344796 Engine:
smxx
parents: 3136
diff changeset
   576
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   577
    CheckCollision(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   578
    dec(Gear^.Timer);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   579
    if ((Gear^.State and gstCollision) <> 0) or (Gear^.Timer = 0) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   580
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   581
        StopSound(Gear^.SoundChannel);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   582
        doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   583
        DeleteGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   584
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   585
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   586
3080
b7fa8ad60e3b Engine:
smxx
parents: 3075
diff changeset
   587
procedure doStepBee(Gear: PGear);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   588
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   589
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   590
    Gear^.X := Gear^.X + Gear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   591
    Gear^.Y := Gear^.Y + Gear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   592
    Gear^.dY := Gear^.dY + cGravity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   593
    CheckCollision(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   594
    if (Gear^.State and gstCollision) <> 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   595
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   596
        doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   597
        DeleteGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   598
        exit
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   599
    end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   600
    dec(Gear^.Timer);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   601
    if Gear^.Timer = 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   602
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   603
        Gear^.SoundChannel := LoopSound(sndBee);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   604
        Gear^.Timer := 5000;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   605
        Gear^.doStep := @doStepBeeWork
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   606
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   607
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   608
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   609
////////////////////////////////////////////////////////////////////////////////
876
d5b6e0ae5755 Desert Eagle and Shotgun shot animations
unc0rr
parents: 854
diff changeset
   610
procedure doStepShotIdle(Gear: PGear);
d5b6e0ae5755 Desert Eagle and Shotgun shot animations
unc0rr
parents: 854
diff changeset
   611
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   612
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   613
    inc(Gear^.Timer);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   614
    if Gear^.Timer > 75 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   615
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   616
        DeleteGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   617
        AfterAttack
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   618
    end
876
d5b6e0ae5755 Desert Eagle and Shotgun shot animations
unc0rr
parents: 854
diff changeset
   619
end;
d5b6e0ae5755 Desert Eagle and Shotgun shot animations
unc0rr
parents: 854
diff changeset
   620
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   621
procedure doStepShotgunShot(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   622
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   623
    i: LongWord;
2828
e45410eae9ea Engine:
smxx
parents: 2762
diff changeset
   624
    shell: PVisualGear;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   625
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   626
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   627
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   628
    if ((Gear^.State and gstAnimation) = 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   629
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   630
        dec(Gear^.Timer);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   631
        if Gear^.Timer = 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   632
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   633
            PlaySound(sndShotgunFire);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   634
            shell := AddVisualGear(hwRound(Gear^.x), hwRound(Gear^.y), vgtShell);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   635
            if shell <> nil then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   636
            begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   637
                shell^.dX := gear^.dX / -4;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   638
                shell^.dY := gear^.dY / -4;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   639
                shell^.Frame := 0
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   640
            end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   641
            Gear^.State := Gear^.State or gstAnimation
2858
4c5c4bc0ae35 Add nil check to shotgun shell
nemo
parents: 2857
diff changeset
   642
        end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   643
        exit
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   644
    end
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   645
    else inc(Gear^.Timer);
876
d5b6e0ae5755 Desert Eagle and Shotgun shot animations
unc0rr
parents: 854
diff changeset
   646
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   647
    i := 200;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   648
    repeat
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   649
        Gear^.X := Gear^.X + Gear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   650
        Gear^.Y := Gear^.Y + Gear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   651
        CheckCollision(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   652
        if (Gear^.State and gstCollision) <> 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   653
        begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   654
            Gear^.X := Gear^.X + Gear^.dX * 8;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   655
            Gear^.Y := Gear^.Y + Gear^.dY * 8;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   656
            ShotgunShot(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   657
            Gear^.doStep := @doStepShotIdle;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   658
            exit
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   659
        end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   660
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   661
        CheckGearDrowning(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   662
        if (Gear^.State and gstDrowning) <> 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   663
        begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   664
            Gear^.doStep := @doStepShotIdle;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   665
            exit
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   666
        end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   667
        dec(i)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   668
    until i = 0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   669
    if (hwRound(Gear^.X) and LAND_WIDTH_MASK <> 0) or (hwRound(Gear^.Y) and LAND_HEIGHT_MASK <> 0)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   670
        then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   671
        Gear^.doStep := @doStepShotIdle
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   672
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   673
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   674
////////////////////////////////////////////////////////////////////////////////
2023
41d3afaa20c7 Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents: 2017
diff changeset
   675
procedure doStepBulletWork(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   676
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   677
    i, x, y: LongWord;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   678
    oX, oY: hwFloat;
38
c1ec4b15d70e Better Desert Eagle and Shotgun
unc0rr
parents: 37
diff changeset
   679
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   680
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   681
    inc(Gear^.Timer);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   682
    i := 80;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   683
    oX := Gear^.X;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   684
    oY := Gear^.Y;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   685
    repeat
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   686
        Gear^.X := Gear^.X + Gear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   687
        Gear^.Y := Gear^.Y + Gear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   688
        x := hwRound(Gear^.X);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   689
        y := hwRound(Gear^.Y);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   690
        if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   691
           and (Land[y, x] <> 0) then inc(Gear^.Damage);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   692
        if Gear^.Damage > 5 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   693
            if Gear^.Ammo^.AmmoType = amDEagle then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   694
                AmmoShove(Gear, 7, 20)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   695
        else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   696
            AmmoShove(Gear, Gear^.Timer, 20);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   697
        CheckGearDrowning(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   698
        dec(i)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   699
    until (i = 0) or (Gear^.Damage > Gear^.Health) or ((Gear^.State and gstDrowning) <> 0);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   700
    if Gear^.Damage > 0 then
2994
7ae3067546f2 Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents: 2989
diff changeset
   701
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   702
        DrawTunnel(oX, oY, Gear^.dX, Gear^.dY, 82 - i, 1);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   703
        dec(Gear^.Health, Gear^.Damage);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   704
        Gear^.Damage := 0
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   705
    end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   706
    if ((Gear^.State and gstDrowning) <> 0) and (Gear^.Damage < Gear^.Health) and (cWaterOpacity < $FF) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   707
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   708
        for i:=(Gear^.Health - Gear^.Damage) * 4 downto 0 do
2994
7ae3067546f2 Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents: 2989
diff changeset
   709
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   710
            if Random(6) = 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   711
                AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   712
            Gear^.X := Gear^.X + Gear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   713
            Gear^.Y := Gear^.Y + Gear^.dY;
2994
7ae3067546f2 Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents: 2989
diff changeset
   714
        end;
7ae3067546f2 Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents: 2989
diff changeset
   715
    end;
1760
55a1edd97911 Fix nemo's large land patch
unc0rr
parents: 1753
diff changeset
   716
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   717
    if (Gear^.Health <= 0)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   718
       or (hwRound(Gear^.X) and LAND_WIDTH_MASK <> 0)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   719
       or (hwRound(Gear^.Y) and LAND_HEIGHT_MASK <> 0) then
2031
b6f3e56fb100 david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents: 2029
diff changeset
   720
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   721
        if (Gear^.Kind = gtSniperRifleShot) and ((GameFlags and gfLaserSight) = 0) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   722
            cLaserSighting := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   723
        if (Gear^.Ammo^.NumPerTurn <= CurrentHedgehog^.MultiShootAttacks) and
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   724
           ((GameFlags and gfArtillery) = 0) then cArtillery := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   725
        Gear^.doStep := @doStepShotIdle
2031
b6f3e56fb100 david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents: 2029
diff changeset
   726
    end;
37
2b7f2a43b999 - Properly get seed in net game
unc0rr
parents: 23
diff changeset
   727
end;
2b7f2a43b999 - Properly get seed in net game
unc0rr
parents: 23
diff changeset
   728
559
6083fffc9e2f Desert Eagle sound
unc0rr
parents: 557
diff changeset
   729
procedure doStepDEagleShot(Gear: PGear);
6083fffc9e2f Desert Eagle sound
unc0rr
parents: 557
diff changeset
   730
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   731
    PlaySound(sndGun);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   732
    Gear^.doStep := @doStepBulletWork
2023
41d3afaa20c7 Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents: 2017
diff changeset
   733
end;
41d3afaa20c7 Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents: 2017
diff changeset
   734
41d3afaa20c7 Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents: 2017
diff changeset
   735
procedure doStepSniperRifleShot(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   736
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   737
    HHGear: PGear;
2828
e45410eae9ea Engine:
smxx
parents: 2762
diff changeset
   738
    shell: PVisualGear;
2023
41d3afaa20c7 Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents: 2017
diff changeset
   739
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   740
    cArtillery := true;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   741
    HHGear := PHedgehog(Gear^.Hedgehog)^.Gear;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   742
    HHGear^.State := HHGear^.State or gstNotKickable;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   743
    HedgehogChAngle(HHGear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   744
    if not cLaserSighting then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   745
        // game does not have default laser sight. turn it on and give them a chance to aim
2023
41d3afaa20c7 Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents: 2017
diff changeset
   746
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   747
        cLaserSighting := true;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   748
        HHGear^.Message := 0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   749
        if (HHGear^.Angle - 32 >= 0) then dec(HHGear^.Angle,32)
2031
b6f3e56fb100 david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents: 2029
diff changeset
   750
    end;
b6f3e56fb100 david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents: 2029
diff changeset
   751
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   752
    if (HHGear^.Message and gm_Attack) <> 0 then
2031
b6f3e56fb100 david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents: 2029
diff changeset
   753
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   754
        shell := AddVisualGear(hwRound(Gear^.x), hwRound(Gear^.y), vgtShell);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   755
        if shell <> nil then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   756
        begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   757
            shell^.dX := gear^.dX / -2;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   758
            shell^.dY := gear^.dY / -2;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   759
            shell^.Frame := 1
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   760
        end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   761
        Gear^.State := Gear^.State or gstAnimation;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   762
        Gear^.dX := SignAs(AngleSin(HHGear^.Angle), HHGear^.dX) * _0_5;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   763
        Gear^.dY := -AngleCos(HHGear^.Angle) * _0_5;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   764
        PlaySound(sndGun);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   765
        Gear^.doStep := @doStepBulletWork;
2024
2985f3bd18b7 Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents: 2023
diff changeset
   766
    end
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   767
    else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   768
        if (GameTicks mod 32) = 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   769
            if (GameTicks mod 4096) < 2048 then
2052
1f67933cb620 constrain angle, decrement turn time
nemo
parents: 2042
diff changeset
   770
            begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   771
                if (HHGear^.Angle + 1 <= cMaxAngle) then inc(HHGear^.Angle)
2052
1f67933cb620 constrain angle, decrement turn time
nemo
parents: 2042
diff changeset
   772
            end
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   773
    else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   774
        if (HHGear^.Angle - 1 >= 0) then dec(HHGear^.Angle);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   775
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   776
    if (TurnTimeLeft > 0) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   777
        dec(TurnTimeLeft)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   778
    else
2058
5c2b52755141 Neglected to delete gear at end of turn
nemo
parents: 2052
diff changeset
   779
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   780
        DeleteGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   781
        AfterAttack
2058
5c2b52755141 Neglected to delete gear at end of turn
nemo
parents: 2052
diff changeset
   782
    end;
559
6083fffc9e2f Desert Eagle sound
unc0rr
parents: 557
diff changeset
   783
end;
6083fffc9e2f Desert Eagle sound
unc0rr
parents: 557
diff changeset
   784
37
2b7f2a43b999 - Properly get seed in net game
unc0rr
parents: 23
diff changeset
   785
////////////////////////////////////////////////////////////////////////////////
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   786
procedure doStepActionTimer(Gear: PGear);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   787
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   788
    dec(Gear^.Timer);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   789
    case Gear^.Kind of 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   790
        gtATStartGame: 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   791
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   792
        AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   793
        if Gear^.Timer = 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   794
        begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   795
            AddCaption(trmsg[sidStartFight], cWhiteColor, capgrpGameState);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   796
        end
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   797
    end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   798
    gtATSmoothWindCh: 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   799
begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   800
    if Gear^.Timer = 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   801
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   802
        if WindBarWidth < Gear^.Tag then inc(WindBarWidth)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   803
        else if WindBarWidth > Gear^.Tag then dec(WindBarWidth);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   804
        if WindBarWidth <> Gear^.Tag then Gear^.Timer := 10;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   805
    end
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   806
end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   807
gtATFinishGame: 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   808
begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   809
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   810
    if Gear^.Timer = 1000 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   811
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   812
        ScreenFade := sfToBlack;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   813
        ScreenFadeValue := 0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   814
        ScreenFadeSpeed := 1;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   815
    end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   816
    if Gear^.Timer = 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   817
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   818
        SendIPC('N');
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   819
        SendIPC('q');
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   820
        GameState := gsExit
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   821
    end
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   822
end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   823
end;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   824
if Gear^.Timer = 0 then DeleteGear(Gear)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   825
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   826
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   827
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   828
procedure doStepPickHammerWork(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   829
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   830
    i, ei: LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   831
    HHGear: PGear;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   832
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   833
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   834
    HHGear := PHedgehog(Gear^.Hedgehog)^.Gear;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   835
    dec(Gear^.Timer);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   836
    if (Gear^.Timer = 0)or((Gear^.Message and gm_Destroy) <> 0)or((HHGear^.State and gstHHDriven) =
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   837
       0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   838
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   839
        StopSound(Gear^.SoundChannel);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   840
        DeleteGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   841
        AfterAttack;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   842
        exit
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   843
    end;
845
ca72cf446ec2 Add sprite for pickhammer
unc0rr
parents: 820
diff changeset
   844
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   845
    if (Gear^.Timer mod 33) = 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   846
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   847
        HHGear^.State := HHGear^.State or gstNoDamage;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   848
        doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y) + 7, 6, EXPLDontDraw);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   849
        HHGear^.State := HHGear^.State and not gstNoDamage
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   850
    end;
422
12295a8b8b2f Tune pickhammer
unc0rr
parents: 415
diff changeset
   851
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   852
    if (Gear^.Timer mod 47) = 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   853
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   854
        i := hwRound(Gear^.X) - Gear^.Radius - LongInt(GetRandom(2));
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   855
        ei := hwRound(Gear^.X) + Gear^.Radius + LongInt(GetRandom(2));
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   856
        while i <= ei do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   857
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   858
            DrawExplosion(i, hwRound(Gear^.Y) + 3, 3);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   859
            inc(i, 1)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   860
        end;
2331
e4941a7986d6 Another try at keeping blowtorch/firepunch/jackhammer from going through indestructible stuff. Shame these routines don't use hedgehog movement
nemo
parents: 2329
diff changeset
   861
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   862
        if CheckLandValue(hwRound(Gear^.X + Gear^.dX + SignAs(_6,Gear^.dX)), hwRound(Gear^.Y + _1_9)
3519
56cbc035b74b rename flags
nemo
parents: 3509
diff changeset
   863
           , lfIndestructible) then
2090
4edb0d49a42d prevent unc0rr from getting clever with jackhammer too. bring blowtorch into line with the other - should be more fun anyway
nemo
parents: 2089
diff changeset
   864
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   865
            Gear^.X := Gear^.X + Gear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   866
            Gear^.Y := Gear^.Y + _1_9;
2090
4edb0d49a42d prevent unc0rr from getting clever with jackhammer too. bring blowtorch into line with the other - should be more fun anyway
nemo
parents: 2089
diff changeset
   867
        end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   868
        SetAllHHToActive;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   869
    end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   870
    if TestCollisionYwithGear(Gear, 1) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   871
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   872
        Gear^.dY := _0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   873
        SetLittle(HHGear^.dX);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   874
        HHGear^.dY := _0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   875
    end
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   876
    else
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   877
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   878
        Gear^.dY := Gear^.dY + cGravity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   879
        Gear^.Y := Gear^.Y + Gear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   880
        if hwRound(Gear^.Y) > cWaterLine then Gear^.Timer := 1
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   881
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   882
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   883
    Gear^.X := Gear^.X + HHGear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   884
    HHGear^.X := Gear^.X;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   885
    HHGear^.Y := Gear^.Y - int2hwFloat(cHHRadius);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   886
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   887
    if (Gear^.Message and gm_Attack) <> 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   888
        if (Gear^.State and gsttmpFlag) <> 0 then Gear^.Timer := 1
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   889
    else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   890
    else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   891
        if (Gear^.State and gsttmpFlag) = 0 then Gear^.State := Gear^.State or gsttmpFlag;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   892
    if ((Gear^.Message and gm_Left) <> 0) then Gear^.dX := - _0_3
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   893
    else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   894
        if ((Gear^.Message and gm_Right) <> 0) then Gear^.dX := _0_3
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   895
    else Gear^.dX := _0;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   896
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   897
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   898
procedure doStepPickHammer(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   899
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   900
    i, y: LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   901
    ar: TRangeArray;
911
b709fe13ed69 Fix issue with hedgehog on top of the hedgehog with pickhammer
unc0rr
parents: 883
diff changeset
   902
    HHGear: PGear;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   903
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   904
    i := 0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   905
    HHGear := PHedgehog(Gear^.Hedgehog)^.Gear;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   906
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   907
    y := hwRound(Gear^.Y) - cHHRadius * 2;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   908
    while y < hwRound(Gear^.Y) do
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   909
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   910
        ar[i].Left := hwRound(Gear^.X) - Gear^.Radius - LongInt(GetRandom(2));
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   911
        ar[i].Right := hwRound(Gear^.X) + Gear^.Radius + LongInt(GetRandom(2));
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   912
        inc(y, 2);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   913
        inc(i)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   914
    end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   915
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   916
    DrawHLinesExplosions(@ar, 3, hwRound(Gear^.Y) - cHHRadius * 2, 2, Pred(i));
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   917
    Gear^.dY := HHGear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   918
    DeleteCI(HHGear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   919
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   920
    Gear^.SoundChannel := LoopSound(sndPickhammer);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   921
    doStepPickHammerWork(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   922
    Gear^.doStep := @doStepPickHammerWork
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   923
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   924
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   925
////////////////////////////////////////////////////////////////////////////////
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   926
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   927
    BTPrevAngle, BTSteps: LongInt;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   928
303
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
   929
procedure doStepBlowTorchWork(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   930
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   931
    HHGear: PGear;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   932
    b: boolean;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   933
    prevX: LongInt;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   934
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   935
    AllInactive := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   936
    dec(Gear^.Timer);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   937
    HHGear := PHedgehog(Gear^.Hedgehog)^.Gear;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   938
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   939
    HedgehogChAngle(HHGear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   940
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   941
    b := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   942
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   943
    if abs(LongInt(HHGear^.Angle) - BTPrevAngle) > 7  then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   944
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   945
        Gear^.dX := SignAs(AngleSin(HHGear^.Angle) * _0_5, HHGear^.dX);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   946
        Gear^.dY := AngleCos(HHGear^.Angle) * ( - _0_5);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   947
        BTPrevAngle := HHGear^.Angle;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   948
        b := true
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   949
    end;
1528
3fee15104c1d More stable blowtorch:
unc0rr
parents: 1507
diff changeset
   950
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   951
    if ((HHGear^.State and gstMoving) <> 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   952
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   953
        doStepHedgehogMoving(HHGear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   954
        if (HHGear^.State and gstHHDriven) = 0 then Gear^.Timer := 0
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   955
    end;
305
1c1cd66ffcdc Better blowtorch
unc0rr
parents: 304
diff changeset
   956
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   957
    if Gear^.Timer mod cHHStepTicks = 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   958
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   959
        b := true;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   960
        if Gear^.dX.isNegative then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   961
            HHGear^.Message := (HHGear^.Message and (gm_Attack or gm_Up or gm_Down)) or gm_Left
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   962
        else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   963
            HHGear^.Message := (HHGear^.Message and (gm_Attack or gm_Up or gm_Down)) or gm_Right;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   964
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   965
        if ((HHGear^.State and gstMoving) = 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   966
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   967
            HHGear^.State := HHGear^.State and not gstAttacking;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   968
            prevX := hwRound(HHGear^.X);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   969
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   970
            // why the call to HedgehogStep then a further increment of X?
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   971
            if (prevX = hwRound(HHGear^.X)) and
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   972
               CheckLandValue(hwRound(HHGear^.X + SignAs(_6, HHGear^.dX)), hwRound(HHGear^.Y),
3519
56cbc035b74b rename flags
nemo
parents: 3509
diff changeset
   973
               lfIndestructible) then HedgehogStep(HHGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   974
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   975
            if (prevX = hwRound(HHGear^.X)) and
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   976
               CheckLandValue(hwRound(HHGear^.X + SignAs(_6, HHGear^.dX)), hwRound(HHGear^.Y),
3519
56cbc035b74b rename flags
nemo
parents: 3509
diff changeset
   977
               lfIndestructible) then HHGear^.X := HHGear^.X + SignAs(_1, HHGear^.dX);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   978
            HHGear^.State := HHGear^.State or gstAttacking
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   979
        end;
305
1c1cd66ffcdc Better blowtorch
unc0rr
parents: 304
diff changeset
   980
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   981
        inc(BTSteps);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   982
        if BTSteps = 7 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   983
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   984
            BTSteps := 0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   985
            if CheckLandValue(hwRound(HHGear^.X + Gear^.dX * (cHHRadius + cBlowTorchC) + SignAs(_6,
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   986
               Gear^.dX)), hwRound(HHGear^.Y + Gear^.dY * (cHHRadius + cBlowTorchC)),
3519
56cbc035b74b rename flags
nemo
parents: 3509
diff changeset
   987
               lfIndestructible) then
2090
4edb0d49a42d prevent unc0rr from getting clever with jackhammer too. bring blowtorch into line with the other - should be more fun anyway
nemo
parents: 2089
diff changeset
   988
            begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   989
                Gear^.X := HHGear^.X + Gear^.dX * (cHHRadius + cBlowTorchC);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   990
                Gear^.Y := HHGear^.Y + Gear^.dY * (cHHRadius + cBlowTorchC);
2090
4edb0d49a42d prevent unc0rr from getting clever with jackhammer too. bring blowtorch into line with the other - should be more fun anyway
nemo
parents: 2089
diff changeset
   991
            end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   992
            HHGear^.State := HHGear^.State or gstNoDamage;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   993
            AmmoShove(Gear, 2, 15);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   994
            HHGear^.State := HHGear^.State and not gstNoDamage
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   995
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
   996
    end;
305
1c1cd66ffcdc Better blowtorch
unc0rr
parents: 304
diff changeset
   997
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   998
    if b then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
   999
        DrawTunnel(HHGear^.X - Gear^.dX * cHHRadius, HHGear^.Y - _4 - Gear^.dY * cHHRadius + hwAbs(
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1000
                   Gear^.dY) * 7,
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1001
        Gear^.dX, Gear^.dY,
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1002
        cHHRadius * 5, cHHRadius * 2 + 7);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1003
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1004
    if (Gear^.Timer = 0) or ((HHGear^.Message and gm_Attack) <> 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1005
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1006
        HHGear^.Message := 0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1007
        HHGear^.State := HHGear^.State and (not gstNotKickable);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1008
        DeleteGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1009
        AfterAttack
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1010
    end
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
  1011
end;
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
  1012
303
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
  1013
procedure doStepBlowTorch(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1014
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1015
    HHGear: PGear;
303
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
  1016
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1017
    BTPrevAngle := High(LongInt);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1018
    BTSteps := 0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1019
    HHGear := PHedgehog(Gear^.Hedgehog)^.Gear;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1020
    HHGear^.Message := 0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1021
    HHGear^.State := HHGear^.State or gstNotKickable;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1022
    Gear^.doStep := @doStepBlowTorchWork
303
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
  1023
end;
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
  1024
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
  1025
////////////////////////////////////////////////////////////////////////////////
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
  1026
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1027
procedure doStepRope(Gear: PGear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1028
forward;
1781
28f674367d68 - Right way to handle rope ammo
unc0rr
parents: 1776
diff changeset
  1029
28f674367d68 - Right way to handle rope ammo
unc0rr
parents: 1776
diff changeset
  1030
procedure doStepRopeAfterAttack(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1031
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1032
    HHGear: PGear;
1781
28f674367d68 - Right way to handle rope ammo
unc0rr
parents: 1776
diff changeset
  1033
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1034
    HHGear := PHedgehog(Gear^.Hedgehog)^.Gear;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1035
    if ((HHGear^.State and gstHHDriven) = 0)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1036
       or (CheckGearDrowning(HHGear))
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1037
       or TestCollisionYwithGear(HHGear, 1) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1038
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1039
        DeleteGear(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1040
        isCursorVisible := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1041
        ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1042
        exit
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1043
    end;
1781
28f674367d68 - Right way to handle rope ammo
unc0rr
parents: 1776
diff changeset
  1044
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1045
    HedgehogChAngle(HHGear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1046
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1047
    if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1048
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1049
    if HHGear^.dY.isNegative and TestCollisionYwithGear(HHGear, -1) then HHGear^.dY := _0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1050
    HHGear^.X := HHGear^.X + HHGear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1051
    HHGear^.Y := HHGear^.Y + HHGear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1052
    HHGear^.dY := HHGear^.dY + cGravity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1053
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1054
    if (Gear^.Message and gm_Attack) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1055
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1056
        Gear^.X := HHGear^.X;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1057
        Gear^.Y := HHGear^.Y;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1058
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1059
        ApplyAngleBounds(PHedgehog(Gear^.Hedgehog)^, amRope);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1060
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1061
        Gear^.dX := SignAs(AngleSin(HHGear^.Angle), HHGear^.dX);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1062
        Gear^.dY := -AngleCos(HHGear^.Angle);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1063
        Gear^.Friction := _450;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1064
        Gear^.Elasticity := _0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1065
        Gear^.State := Gear^.State and not gsttmpflag;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1066
        Gear^.doStep := @doStepRope;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1067
    end
1781
28f674367d68 - Right way to handle rope ammo
unc0rr
parents: 1776
diff changeset
  1068
end;
28f674367d68 - Right way to handle rope ammo
unc0rr
parents: 1776
diff changeset
  1069
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1070
procedure doStepRopeWork(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1071
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1072
    HHGear: PGear;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1073
    len, tx, ty, nx, ny, ropeDx, ropeDy, mdX, mdY: hwFloat;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1074
    lx, ly: LongInt;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1075
    haveCollision,
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1076
    haveDivided: boolean;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1077
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1078
procedure DeleteMe;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1079
begin
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1080
    with HHGear^ do
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1081
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1082
        Message := Message and not gm_Attack;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1083
        State := (State or gstMoving) and not gstWinner;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1084
    end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1085
    DeleteGear(Gear)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1086
end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1087
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1088
procedure WaitCollision;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1089
begin
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1090
    with HHGear^ do
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1091
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1092
        Message := Message and not gm_Attack;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1093
        State := State or gstMoving;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1094
    end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1095
    RopePoints.Count := 0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1096
    Gear^.Elasticity := _0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1097
    Gear^.doStep := @doStepRopeAfterAttack
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1098
end;
1781
28f674367d68 - Right way to handle rope ammo
unc0rr
parents: 1776
diff changeset
  1099
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1100
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1101
    HHGear := PHedgehog(Gear^.Hedgehog)^.Gear;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1102
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1103
    if ((HHGear^.State and gstHHDriven) = 0)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1104
       or (CheckGearDrowning(HHGear)) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1105
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1106
        PlaySound(sndRopeRelease);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1107
        DeleteMe;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1108
        exit
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1109
    end;
928
b9064b48b001 Some preparation work for attacking from rope, parachute and etc.
unc0rr
parents: 925
diff changeset
  1110
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1111
    if (Gear^.Message and gm_Left  <> 0) then HHGear^.dX := HHGear^.dX - _0_0002
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1112
    else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1113
        if (Gear^.Message and gm_Right <> 0) then HHGear^.dX := HHGear^.dX + _0_0002;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1114
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1115
    if not TestCollisionYwithGear(HHGear, 1) then HHGear^.dY := HHGear^.dY + cGravity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1116
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1117
    ropeDx := HHGear^.X - Gear^.X;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1118
    // vector between hedgehog and rope attaching point
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1119
    ropeDy := HHGear^.Y - Gear^.Y;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1120
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1121
    mdX := ropeDx + HHGear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1122
    mdY := ropeDy + HHGear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1123
    len := _1 / Distance(mdX, mdY);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1124
    mdX := mdX * len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1125
    // rope vector plus hedgehog direction vector normalized
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1126
    mdY := mdY * len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1127
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1128
    Gear^.dX := mdX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1129
    // for visual purposes only
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1130
    Gear^.dY := mdY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1131
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1132
    /////
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1133
    tx := HHGear^.X;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1134
    ty := HHGear^.Y;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1135
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1136
    if ((Gear^.Message and gm_Down) <> 0) and (Gear^.Elasticity < Gear^.Friction) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1137
        if not (TestCollisionXwithGear(HHGear, hwSign(ropeDx))
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1138
           or TestCollisionYwithGear(HHGear, hwSign(ropeDy))) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1139
            Gear^.Elasticity := Gear^.Elasticity + _0_3;
1652
2f15a299ffc6 Reorganize rope code, adjust some constants
unc0rr
parents: 1643
diff changeset
  1140
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1141
    if ((Gear^.Message and gm_Up) <> 0) and (Gear^.Elasticity > _30) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1142
        if not (TestCollisionXwithGear(HHGear, -hwSign(ropeDx))
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1143
           or TestCollisionYwithGear(HHGear, -hwSign(ropeDy))) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1144
            Gear^.Elasticity := Gear^.Elasticity - _0_3;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1145
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1146
    HHGear^.X := Gear^.X + mdX * Gear^.Elasticity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1147
    HHGear^.Y := Gear^.Y + mdY * Gear^.Elasticity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1148
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1149
    HHGear^.dX := HHGear^.X - tx;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1150
    HHGear^.dY := HHGear^.Y - ty;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1151
    ////
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1152
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1153
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1154
    haveDivided := false;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1155
    // check whether rope needs dividing
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1156
    len := _1 / Distance(ropeDx, ropeDy);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1157
    // old rope pos
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1158
    nx := ropeDx * len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1159
    ny := ropeDy * len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1160
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1161
    len := Gear^.Elasticity - _5;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1162
    while len > _3 do
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1163
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1164
        lx := hwRound(Gear^.X + mdX * len);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1165
        ly := hwRound(Gear^.Y + mdY * len);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1166
        if ((ly and LAND_HEIGHT_MASK) = 0) and ((lx and LAND_WIDTH_MASK) = 0) and (Land[ly, lx] <> 0
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1167
           ) then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1168
        begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1169
            with RopePoints.ar[RopePoints.Count] do
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1170
            begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1171
                X := Gear^.X;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1172
                Y := Gear^.Y;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1173
                if RopePoints.Count = 0 then RopePoints.HookAngle := DxDy2Angle(Gear^.dY, Gear^.dX);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1174
                b := (nx * HHGear^.dY) > (ny * HHGear^.dX);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1175
                dLen := len
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1176
            end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1177
            with RopePoints.rounded[RopePoints.Count] do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1178
            begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1179
                X := hwRound(Gear^.X);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1180
                Y := hwRound(Gear^.Y);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1181
            end;
1553
77f326c7f0ef The best final fix for rope stucking in the ground bug
unc0rr
parents: 1552
diff changeset
  1182
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1183
            Gear^.X := Gear^.X + nx * len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1184
            Gear^.Y := Gear^.Y + ny * len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1185
            inc(RopePoints.Count);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1186
            TryDo(RopePoints.Count <= MAXROPEPOINTS, 'Rope points overflow', true);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1187
            Gear^.Elasticity := Gear^.Elasticity - len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1188
            Gear^.Friction := Gear^.Friction - len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1189
            haveDivided := true;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1190
            break
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1191
        end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1192
        len := len - _0_3 // should be the same as increase step
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1193
    end;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1194
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1195
    if not haveDivided then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1196
        if RopePoints.Count > 0 then // check whether the last dividing point could be removed
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1197
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1198
            tx := RopePoints.ar[Pred(RopePoints.Count)].X;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1199
            ty := RopePoints.ar[Pred(RopePoints.Count)].Y;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1200
            mdX := tx - Gear^.X;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1201
            mdY := ty - Gear^.Y;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1202
            if RopePoints.ar[Pred(RopePoints.Count)].b xor (mdX * (ty - HHGear^.Y) > (tx - HHGear^.X
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1203
               ) * mdY) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1204
            begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1205
                dec(RopePoints.Count);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1206
                Gear^.X := RopePoints.ar[RopePoints.Count].X;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1207
                Gear^.Y := RopePoints.ar[RopePoints.Count].Y;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1208
                Gear^.Elasticity := Gear^.Elasticity + RopePoints.ar[RopePoints.Count].dLen;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1209
                Gear^.Friction := Gear^.Friction + RopePoints.ar[RopePoints.Count].dLen;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1210
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1211
                // restore hog position
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1212
                len := _1 / Distance(mdX, mdY);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1213
                mdX := mdX * len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1214
                mdY := mdY * len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1215
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1216
                HHGear^.X := Gear^.X - mdX * Gear^.Elasticity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1217
                HHGear^.Y := Gear^.Y - mdY * Gear^.Elasticity;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1218
            end
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1219
        end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1220
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1221
    haveCollision := false;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1222
    if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1223
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1224
        HHGear^.dX := -_0_6 * HHGear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1225
        haveCollision := true
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1226
    end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1227
    if TestCollisionYwithGear(HHGear, hwSign(HHGear^.dY)) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1228
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1229
        HHGear^.dY := -_0_6 * HHGear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1230
        haveCollision := true
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1231
    end;
1551
c747e69f98f3 Add some speed to hedgehog on rope when colliding with land and pressing left or right arrow key
unc0rr
parents: 1548
diff changeset
  1232
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1233
    if haveCollision
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1234
       and (Gear^.Message and (gm_Left or gm_Right) <> 0)
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1235
       and (Gear^.Message and (gm_Up or gm_Down) <> 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1236
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1237
        HHGear^.dX := SignAs(hwAbs(HHGear^.dX) + _0_2, HHGear^.dX);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1238
        HHGear^.dY := SignAs(hwAbs(HHGear^.dY) + _0_2, HHGear^.dY)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1239
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1240
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1241
    len := Distance(HHGear^.dX, HHGear^.dY);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1242
    if len > _0_8 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1243
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1244
        len := _0_8 / len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1245
        HHGear^.dX := HHGear^.dX * len;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1246
        HHGear^.dY := HHGear^.dY * len;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1247
    end;
789
3d976d2579eb - More accurate rope collision detection
unc0rr
parents: 776
diff changeset
  1248
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1249
    if (Gear^.Message and gm_Attack) <> 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1250
        if (Gear^.State and gsttmpFlag) <> 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1251
            with PHedgehog(Gear^.Hedgehog)^ do
3320
506f7d6a82b3 Engine:
smxx
parents: 3307
diff changeset
  1252
            begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1253
                PlaySound(sndRopeRelease);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1254
                if Ammo^[CurSlot, CurAmmo].AmmoType <> amParachute then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1255
                    WaitCollision
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1256
                else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1257
                    DeleteMe
3320
506f7d6a82b3 Engine:
smxx
parents: 3307
diff changeset
  1258
            end
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1259
    else
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1260
    else
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1261
        if (Gear^.State and gsttmpFlag) = 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1262
            Gear^.State := Gear^.State or gsttmpFlag;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1263
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1264
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1265
procedure doStepRopeAttach(Gear: PGear);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1266
var 
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1267
    HHGear: PGear;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1268
    tx, ty, tt: hwFloat;
1781
28f674367d68 - Right way to handle rope ammo
unc0rr
parents: 1776
diff changeset
  1269
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1270
procedure RemoveFromAmmo;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1271
begin
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1272
    if (Gear^.State and gstAttacked) = 0 then
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1273
    begin
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1274
        OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^);
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1275
        Gear^.State := Gear^.State or gstAttacked
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1276
    end;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1277
    ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^)
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1278
end;
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2367
diff changeset
  1279
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1280
begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1281
    Gear^.X := Gear^.X - Gear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1282
    Gear^.Y := Gear^.Y - Gear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1283
    Gear^.Elasticity := Gear^.Elasticity + _1;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1284
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1285
    HHGear := PHedgehog(Gear^.Hedgehog)^.Gear;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1286
    DeleteCI(HHGear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1287
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1288
    if (HHGear^.State and gstMoving) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1289
    begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1290
        if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1291
        if HHGear^.dY.isNegative and TestCollisionYwithGear(HHGear, -1) then HHGear^.dY := _0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1292
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1293
        HHGear^.X := HHGear^.X + HHGear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1294
        Gear^.X := Gear^.X + HHGear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1295
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1296
        if TestCollisionYwithGear(HHGear, 1) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1297
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1298
            CheckHHDamage(HHGear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1299
            HHGear^.dY := _0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1300
            //HHGear^.State:= HHGear^.State and not (gstHHJumping or gstHHHJump);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1301
        end
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1302
        else
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1303
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1304
            HHGear^.Y := HHGear^.Y + HHGear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1305
            Gear^.Y := Gear^.Y + HHGear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1306
            HHGear^.dY := HHGear^.dY + cGravity;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1307
        end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1308
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1309
        tt := Gear^.Elasticity;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1310
        tx := _0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1311
        ty := _0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1312
        while tt > _20 do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1313
        begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1314
            if  TestCollisionXwithXYShift(Gear, tx, hwRound(ty), -hwSign(Gear^.dX))
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1315
               or TestCollisionYwithXYShift(Gear, hwRound(tx), hwRound(ty), -hwSign(Gear^.dY)) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1316
            begin
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1317
                Gear^.X := Gear^.X + tx;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1318
                Gear^.Y := Gear^.Y + ty;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1319
                Gear^.Elasticity := tt;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1320
                Gear^.doStep := @doStepRopeWork;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1321
                PlaySound(sndRopeAttach);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1322
                with HHGear^ do
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1323
                    State := State and not (gstAttacking or gstHHJumping or gstHHHJump);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1324
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1325
                RemoveFromAmmo;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1326
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1327
                tt := _0;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1328
                exit
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1329
            end;
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1330
            tx := tx + Gear^.dX + Gear^.dX;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1331
            ty := ty + Gear^.dY + Gear^.dY;
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1332
            tt := tt - _2;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1333
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1334
    end;
929
9456e1e77369 - Continue preparation for implementing attack from rope and parachute
unc0rr
parents: 928
diff changeset
  1335
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1336
    CheckCollision(Gear);
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1337
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1338
    if (Gear^.State and gstCollision) <> 0 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1339
        if Gear^.Elasticity < _10 then
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1340
            Gear^.Elasticity := _10000
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2944
diff changeset
  1341
    else
3454
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1342
    begin
a9bef74bd6e0 Code restlyling: experimental restyling of one module
mbait
parents: 3440
diff changeset
  1343
        Gear^.doStep := @doStepRopeWork;
3320
506f7d6a82b3 Engine:
smxx
parents: