hedgewars/HHHandlers.inc
author nemo
Fri, 26 Mar 2010 15:52:47 +0000
changeset 3077 8bf3b6d9839c
parent 3066 5c0efa437728
child 3080 b7fa8ad60e3b
permissions -rw-r--r--
Uppercase all theme and map names
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: 1035
diff changeset
     2
 * Hedgewars, a free turn based strategy game
1689
3d0eee01f734 RC Plane
unc0rr
parents: 1682
diff changeset
     3
 * Copyright (c) 2004-2009 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: 149
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
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: 149
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
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: 149
diff changeset
    14
 * You should have received a copy of the GNU General Public License
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
    15
 * along with this program; if not, write to the Free Software
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
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
37
2b7f2a43b999 - Properly get seed in net game
unc0rr
parents: 32
diff changeset
    19
////////////////////////////////////////////////////////////////////////////////
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    20
procedure ChangeAmmo(Gear: PGear);
941
b5222ddafe1f - Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents: 931
diff changeset
    21
var slot, i: Longword;
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    22
begin
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    23
slot:= Gear^.MsgParam;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    24
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    25
with PHedgehog(Gear^.Hedgehog)^ do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    26
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    27
    Gear^.Message:= Gear^.Message and not gm_Slot;
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
    28
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    29
    if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    30
        or (MultiShootAttacks > 0)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    31
        or ((Gear^.State and gstHHDriven) = 0) then exit;
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    32
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    33
    Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    34
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    35
    if CurSlot = slot then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    36
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    37
        i:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    38
        repeat
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    39
        inc(CurAmmo);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    40
        if (CurAmmo > cMaxSlotAmmoIndex) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    41
            begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    42
            CurAmmo:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    43
            inc(i);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    44
            TryDo(i < 2, 'Engine bug: no ammo in current slot', true)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    45
            end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    46
        until (Ammo^[slot, CurAmmo].Count > 0) and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, CurAmmo].AmmoType].SkipTurns)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    47
        end else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    48
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    49
        i:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    50
        // check whether there is ammo in slot
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    51
        while (i <= cMaxSlotAmmoIndex)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    52
          and ((Ammo^[slot, i].Count = 0)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    53
               or (Team^.Clan^.TurnNumber <= Ammoz[Ammo^[slot, i].AmmoType].SkipTurns)) do inc(i);
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
    54
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    55
        if i <= cMaxSlotAmmoIndex then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    56
            begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    57
            CurSlot:= slot;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    58
            CurAmmo:= i
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    59
            end
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    60
        end
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    61
    end
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    62
end;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    63
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    64
procedure HHSetWeapon(Gear: PGear);
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    65
var t: LongInt;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    66
    weap: TAmmoType;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    67
begin
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    68
weap:= TAmmoType(Gear^.MsgParam);
941
b5222ddafe1f - Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents: 931
diff changeset
    69
2434
5faa05d99241 Smaxx: less hacks
unc0rr
parents: 2428
diff changeset
    70
if PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.TurnNumber <= Ammoz[weap].SkipTurns then exit; // weapon is not activated yet
941
b5222ddafe1f - Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents: 931
diff changeset
    71
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    72
Gear^.MsgParam:= Ammoz[weap].Slot;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    73
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    74
t:= cMaxSlotAmmoIndex;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    75
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    76
Gear^.Message:= Gear^.Message and not gm_Weapon;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    77
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    78
with PHedgehog(Gear^.Hedgehog)^ do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    79
    while (Ammo^[CurSlot, CurAmmo].AmmoType <> weap) and (t >= 0) do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    80
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    81
        ChangeAmmo(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    82
        dec(t)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    83
        end;
1710
cecb3cc93251 Fix angle restriction applying to rc plane when choosing via ammomenu
unc0rr
parents: 1689
diff changeset
    84
cecb3cc93251 Fix angle restriction applying to rc plane when choosing via ammomenu
unc0rr
parents: 1689
diff changeset
    85
ApplyAmmoChanges(PHedgehog(Gear^.Hedgehog)^)
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    86
end;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    87
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
    88
procedure HHSetTimer(Gear: PGear);
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
    89
begin
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
    90
Gear^.Message:= Gear^.Message and not gm_Timer;
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
    91
with PHedgehog(Gear^.Hedgehog)^ do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    92
    if (Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Timerable) <> 0 then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    93
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    94
        Ammo^[CurSlot, CurAmmo].Timer:= 1000 * Gear^.MsgParam;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    95
        with CurrentTeam^ do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    96
            ApplyAmmoChanges(Hedgehogs[CurrHedgehog]);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    97
        end;
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
    98
end;
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
    99
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   100
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   101
procedure Attack(Gear: PGear);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   102
var xx, yy: hwFloat;
2042
905c554d62e6 Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents: 2041
diff changeset
   103
    tmpGear: PVisualGear;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   104
begin
2807
cd131de34d3d halt team blink on attack
nemo
parents: 2769
diff changeset
   105
bShowFinger:= false;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   106
with Gear^,
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   107
     PHedgehog(Gear^.Hedgehog)^ do
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   108
     begin
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   109
     if ((State and gstHHDriven) <> 0)and
2223
e009fee03c96 allow attacks while moving on ammo with alt attack (parachute/rope/jetpack) - needs testing.
nemo
parents: 2221
diff changeset
   110
        ((State and (gstAttacked or gstHHChooseTarget)) = 0) and
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
   111
        (((State and gstMoving) = 0) or
2223
e009fee03c96 allow attacks while moving on ammo with alt attack (parachute/rope/jetpack) - needs testing.
nemo
parents: 2221
diff changeset
   112
            // Allow attacks while moving on ammo with AltAttack
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
   113
            ((CurAmmoGear <> nil) and ((CurAmmoGear^.Ammo^.Propz and ammoprop_AltAttack) <> 0)) or
2238
1a0d26408324 Accidentally switched property in last checkin
nemo
parents: 2223
diff changeset
   114
            ((Ammo^[CurSlot, CurAmmo].Propz and ammoprop_AttackInMove) <> 0)) and
836
150c7c87e66c - Small formatting changes
unc0rr
parents: 835
diff changeset
   115
        ((TargetPoint.X <> NoPointX) or ((Ammo^[CurSlot, CurAmmo].Propz and ammoprop_NeedTarget) = 0)) then
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   116
        begin
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   117
        State:= State or gstAttacking;
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   118
        if Power = cMaxPower then Message:= Message and not gm_Attack
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   119
        else if (Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Power) = 0 then Message:= Message and not gm_Attack
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   120
        else begin
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   121
             if Power = 0 then
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   122
                begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   123
                AttackBar:= CurrentTeam^.AttackBar;
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   124
                PlaySound(sndThrowPowerUp)
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   125
                end;
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   126
             inc(Power)
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   127
             end;
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   128
        if ((Message and gm_Attack) <> 0) then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   129
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   130
        if (Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Power) <> 0 then
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   131
           begin
282
b1e3387389b6 - Pickhammer sound
unc0rr
parents: 263
diff changeset
   132
           StopSound(sndThrowPowerUp);
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   133
           PlaySound(sndThrowRelease);
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   134
           end;
1922
88cdabb51995 Fix bug with rope and bazooka
unc0rr
parents: 1883
diff changeset
   135
519
981df6f6e2a9 - Fix desert eagle
unc0rr
parents: 518
diff changeset
   136
        xx:= SignAs(AngleSin(Angle), dX);
900
5224ac938442 Fix attack direction when perform somersault
unc0rr
parents: 883
diff changeset
   137
        yy:= -AngleCos(Angle);
5224ac938442 Fix attack direction when perform somersault
unc0rr
parents: 883
diff changeset
   138
5224ac938442 Fix attack direction when perform somersault
unc0rr
parents: 883
diff changeset
   139
        if ((Gear^.State and gstHHHJump) <> 0) then xx:= - xx;
2647
0e1208e92dfe Smaxx patch with tuning by me:
unc0rr
parents: 2619
diff changeset
   140
        if Ammo^[CurSlot, CurAmmo].AttackVoice <> sndNone then
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   141
           PlaySound(Ammo^[CurSlot, CurAmmo].AttackVoice, CurrentTeam^.voicepack);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   142
             case Ammo^[CurSlot, CurAmmo].AmmoType of
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   143
                      amGrenade: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtAmmo_Bomb,    0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, Ammo^[CurSlot, CurAmmo].Timer);
2470
44b66fbf37da molotov sound FTW
koda
parents: 2466
diff changeset
   144
                      amMolotov: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtMolotov,      0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   145
                  amClusterBomb: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtClusterBomb,  0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, Ammo^[CurSlot, CurAmmo].Timer);
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   146
                      amBazooka: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtAmmo_Grenade, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   147
                          amUFO: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtUFO,          0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   148
                      amShotgun: begin
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   149
                                 PlaySound(sndShotgunReload);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   150
                                 CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtShotgunShot,  0, xx * _0_5, yy * _0_5, 0);
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   151
                                 end;
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   152
                   amPickHammer: CurAmmoGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) + cHHRadius, gtPickHammer, 0, _0, _0, 0);
866
ac6f6c95c23f - Some more sounds
unc0rr
parents: 865
diff changeset
   153
                         amSkip: ParseCommand('/skip', true);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   154
                         amRope: CurAmmoGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtRope, 0, xx, yy, 0);
2882
b9aceb3fe3d6 Dude mine probability spinner
nemo
parents: 2856
diff changeset
   155
                         amMine: AddGear(hwRound(X) + hwSign(dX) * 7, hwRound(Y), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000);
876
d5b6e0ae5755 Desert Eagle and Shotgun shot animations
unc0rr
parents: 868
diff changeset
   156
                       amDEagle: CurAmmoGear:= AddGear(hwRound(X + xx * cHHRadius), hwRound(Y + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0);
2827
45817d8386c7 Engine:
smxx
parents: 2807
diff changeset
   157
                  amSniperRifle: begin
45817d8386c7 Engine:
smxx
parents: 2807
diff changeset
   158
                                 PlaySound(sndSniperReload);
45817d8386c7 Engine:
smxx
parents: 2807
diff changeset
   159
                                 CurAmmoGear:= AddGear(hwRound(X + xx * cHHRadius), hwRound(Y + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0);
45817d8386c7 Engine:
smxx
parents: 2807
diff changeset
   160
                                 end;
2647
0e1208e92dfe Smaxx patch with tuning by me:
unc0rr
parents: 2619
diff changeset
   161
                     amDynamite: AddGear(hwRound(X) + hwSign(dX) * 7, hwRound(Y), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000);
979
edb8f208c1d9 Fix firepunch direction when attacking from high jump
unc0rr
parents: 958
diff changeset
   162
                    amFirePunch: CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 10, hwRound(Y), gtFirePunch, 0, xx, _0, 0);
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   163
                         amWhip: begin
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   164
                                 CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 10, hwRound(Y), gtWhip, 0, SignAs(_1, dX), - _0_8, 0);
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   165
                                 PlaySound(sndWhipCrack)
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   166
                                 end;
2143
ad05f6b2d1c0 New baseball bat sound, steam when fire lands on water (needs new hiss sound), bubbles when hedgehog drowns, more messages on
nemo
parents: 2142
diff changeset
   167
                  amBaseballBat: begin
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   168
                                 CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 10, hwRound(Y), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0);
2996
dfc7507a21a0 Engine:
smxx
parents: 2995
diff changeset
   169
                                 PlaySound(sndBaseballBat) // TODO: Only play if something is hit?
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   170
                                 end;
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   171
                    amParachute: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtParachute, 0, _0, _0, 0);
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   172
                    amAirAttack: AddGear(Ammo^[CurSlot, CurAmmo].Pos, 0, gtAirAttack, 0, _0, _0, 0);
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   173
                   amMineStrike: AddGear(Ammo^[CurSlot, CurAmmo].Pos, 0, gtAirAttack, 1, _0, _0, 0);
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   174
                    amBlowTorch: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0);
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   175
                       amGirder: CurAmmoGear:= AddGear(0, 0, gtGirder, Ammo^[CurSlot, CurAmmo].Pos, _0, _0, 0);
520
e83dfb7ffead Teleportation tool
unc0rr
parents: 519
diff changeset
   176
                     amTeleport: CurAmmoGear:= AddGear(0, 0, gtTeleport, 0, _0, _0, 0);
534
92fb2b0d5117 - Fix some bugs
unc0rr
parents: 528
diff changeset
   177
                       amSwitch: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtSwitcher, 0, _0, _0, 0);
2262
0dc94341bf42 sound for mortar
koda
parents: 2238
diff changeset
   178
                       amMortar: begin
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   179
                playSound(sndMortar);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   180
                FollowGear:= AddGear(hwRound(X), hwRound(Y), gtMortar,  0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   181
                 end;
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   182
                      amRCPlane: begin
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   183
                                 CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtRCPlane,  0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0);
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   184
                                 CurAmmoGear^.SoundChannel:= LoopSound(sndRCPlane, nil)
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   185
                                 end;
984
dd5f16f69926 Kamikaze weapon
unc0rr
parents: 979
diff changeset
   186
                       amKamikaze: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0);
2647
0e1208e92dfe Smaxx patch with tuning by me:
unc0rr
parents: 2619
diff changeset
   187
                         amCake: CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 3, hwRound(Y), gtCake, 0, xx, _0, 0);
1286
a02a5345b91e Seduction animation
unc0rr
parents: 1285
diff changeset
   188
                    amSeduction: CurAmmoGear:= AddGear(hwRound(X + xx * cHHRadius * 2), hwRound(Y + yy * cHHRadius * 2), gtSeduction, 0, xx * _0_4, yy * _0_4, 0);
1261
903058d382c7 Add watermelon weapon (without proper sprites yet)
unc0rr
parents: 1259
diff changeset
   189
                   amWatermelon: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtWatermelon,  0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, Ammo^[CurSlot, CurAmmo].Timer);
2302
0f122917d799 Better support for scripting by gears
unc0rr
parents: 2262
diff changeset
   190
                  amHellishBomb: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtHellishBomb,    0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
1507
d18c67b7ad4c Quick and dirty napalm implementation
unc0rr
parents: 1505
diff changeset
   191
                       amNapalm: AddGear(Ammo^[CurSlot, CurAmmo].Pos, 0, gtAirAttack, 2, _0, _0, 0);
1573
cf88e0ace609 Drill rocket
unc0rr
parents: 1528
diff changeset
   192
                        amDrill: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtDrill, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
2177
c045698e044f Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents: 2143
diff changeset
   193
                      amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun,  0, xx * _0_5, yy * _0_5, 0);
3066
5c0efa437728 Enable birdy. Has egg bombing. Eggs should possibly have a dX component. No poison yet, no egg sprite.
nemo
parents: 3065
diff changeset
   194
                    amJetpack: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtJetpack, 0, _0, _0, 0);
5c0efa437728 Enable birdy. Has egg bombing. Eggs should possibly have a dX component. No poison yet, no egg sprite.
nemo
parents: 3065
diff changeset
   195
                    amBirdy: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y) - 120, gtBirdy, 0, _0, _0, 0);
2908
bd1909984a09 Engine:
smxx
parents: 2882
diff changeset
   196
                      amLowGravity: begin
bd1909984a09 Engine:
smxx
parents: 2882
diff changeset
   197
                                    PlaySound(sndLowGravity);
bd1909984a09 Engine:
smxx
parents: 2882
diff changeset
   198
                                    cGravity:= cMaxWindSpeed / 2
bd1909984a09 Engine:
smxx
parents: 2882
diff changeset
   199
                                    end;
1849
2a989e5abda6 4 utilities by nemo
unc0rr
parents: 1749
diff changeset
   200
                      amExtraDamage: cDamageModifier:= _1_5;
2a989e5abda6 4 utilities by nemo
unc0rr
parents: 1749
diff changeset
   201
                      amInvulnerable: Invulnerable:= true;
2a989e5abda6 4 utilities by nemo
unc0rr
parents: 1749
diff changeset
   202
                      amExtraTime: TurnTimeLeft:= TurnTimeLeft + 30000;
1854
6e05013899b2 laser beam by nemo reworked a bit by me
unc0rr
parents: 1849
diff changeset
   203
                      amLaserSight: cLaserSighting:= true;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   204
                      amVampiric: cVampiric:= true;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   205
                  end;
829
1209eb768acf Use 'first blood' sound
unc0rr
parents: 800
diff changeset
   206
1209eb768acf Use 'first blood' sound
unc0rr
parents: 800
diff changeset
   207
        uStats.AmmoUsed(Ammo^[CurSlot, CurAmmo].AmmoType);
1209eb768acf Use 'first blood' sound
unc0rr
parents: 800
diff changeset
   208
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   209
        if not (SpeechText = '') then
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   210
            begin
2042
905c554d62e6 Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents: 2041
diff changeset
   211
            tmpGear:= AddVisualGear(0, 0, vgtSpeechBubble);
2115
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   212
            if tmpGear <> nil then
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   213
               begin
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   214
               tmpGear^.Text:= SpeechText;
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   215
               tmpGear^.Hedgehog:= Gear^.Hedgehog;
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   216
               tmpGear^.FrameTicks:= SpeechType;
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   217
               end;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   218
            SpeechText:= ''
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   219
            end;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   220
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   221
        Power:= 0;
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   222
        if (CurAmmoGear <> nil)
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   223
           and (((Ammo^[CurSlot, CurAmmo].Propz) and ammoprop_AltUse) = 0){check for dropping ammo from rope} then
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   224
           begin
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   225
           CurAmmoGear^.Ammo:= @(Ammo^[CurSlot, CurAmmo]);
82
2f4f3236cccc - New fort
unc0rr
parents: 80
diff changeset
   226
           Message:= Message or gm_Attack;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   227
           CurAmmoGear^.Message:= Message
82
2f4f3236cccc - New fort
unc0rr
parents: 80
diff changeset
   228
           end else begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   229
           if not CurrentTeam^.ExtDriven and
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   230
             ((Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Power) <> 0) then SendIPC('a');
1849
2a989e5abda6 4 utilities by nemo
unc0rr
parents: 1749
diff changeset
   231
           AfterAttack;
82
2f4f3236cccc - New fort
unc0rr
parents: 80
diff changeset
   232
           end
1849
2a989e5abda6 4 utilities by nemo
unc0rr
parents: 1749
diff changeset
   233
        end else Message:= Message and not gm_Attack;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   234
     end
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   235
end;
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   236
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   237
procedure AfterAttack;
2502
f67c603c23b5 - Fix build
unc0rr
parents: 2500
diff changeset
   238
var s: shortstring;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   239
begin
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 558
diff changeset
   240
with CurrentHedgehog^.Gear^,
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   241
        CurrentHedgehog^ do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   242
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   243
    State:= State and not gstAttacking;
3037
ab6e949eb5cb Rename current things called utilities to Effects (since they impact game state / flags w/o using a gear) and add a bunch of things that don't cause damage and are just used to move to Utility crate.
nemo
parents: 3003
diff changeset
   244
    if ((Ammo^[CurSlot, CurAmmo].Propz) and ammoprop_Effect) = 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   245
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   246
        Inc(MultiShootAttacks);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   247
        
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   248
        if (Ammo^[CurSlot, CurAmmo].NumPerTurn >= MultiShootAttacks) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   249
            begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   250
            s:= inttostr(Ammo^[CurSlot, CurAmmo].NumPerTurn + 1 - MultiShootAttacks);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   251
            AddCaption(format(trmsg[sidRemaining], s), cWhiteColor, capgrpAmmostate);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   252
            end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   253
        
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   254
        if (Ammo^[CurSlot, CurAmmo].NumPerTurn >= MultiShootAttacks) or
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   255
            ((GameFlags and gfMultiWeapon) <> 0) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   256
            begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   257
            isInMultiShoot:= true
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   258
            end
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   259
        else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   260
            begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   261
            TurnTimeLeft:= Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].TimeAfterTurn;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   262
            State:= State or gstAttacked;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   263
            OnUsedAmmo(CurrentHedgehog^);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   264
            end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   265
        end
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   266
    else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   267
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   268
        OnUsedAmmo(CurrentHedgehog^);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   269
        ApplyAmmoChanges(CurrentHedgehog^);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   270
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   271
    AttackBar:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   272
    end
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   273
end;
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   274
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   275
////////////////////////////////////////////////////////////////////////////////
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   276
procedure doStepHedgehogDead(Gear: PGear);
868
4884bce5e5eb Hedgehog death animation
unc0rr
parents: 866
diff changeset
   277
const frametime = 200;
4884bce5e5eb Hedgehog death animation
unc0rr
parents: 866
diff changeset
   278
      timertime = frametime * 6;
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   279
begin
2769
82bfcc006afb Some handling of interaction between king mode and place hogs mode.
nemo
parents: 2762
diff changeset
   280
if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit;
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   281
if Gear^.Timer > 1 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   282
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   283
    AllInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   284
    dec(Gear^.Timer);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   285
    if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   286
    end else
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   287
if Gear^.Timer = 1 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   288
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   289
    Gear^.State:= Gear^.State or gstNoDamage;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   290
    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   291
    AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   292
    DeleteGear(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   293
    SetAllToActive
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   294
    end else // Gear^.Timer = 0
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   295
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   296
    AllInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   297
    Gear^.Z:= cCurrHHZ;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   298
    RemoveGearFromList(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   299
    InsertGearToList(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   300
    PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   301
    Gear^.Pos:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   302
    Gear^.Timer:= timertime
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   303
    end
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   304
end;
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   305
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   306
////////////////////////////////////////////////////////////////////////////////
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   307
procedure PickUp(HH, Gear: PGear);
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   308
var s: shortstring;
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   309
    a: TAmmoType;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   310
    i: Integer;
2972
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   311
    vga: PVisualGear;
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   312
begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   313
Gear^.Message:= gm_Destroy;
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   314
PlaySound(sndShotgunReload);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   315
case Gear^.Pos of
1964
dc9ea05c9d2f - Another way of defining official server
unc0rr
parents: 1922
diff changeset
   316
       posCaseUtility,
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   317
       posCaseAmmo: begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   318
                    a:= TAmmoType(Gear^.State);
553
5478386d935f - Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents: 549
diff changeset
   319
                    AddAmmo(PHedgehog(HH^.Hedgehog)^, a);
2853
953a6d71396f Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents: 2827
diff changeset
   320
// Possibly needs to check shared clan ammo game flag once added.
953a6d71396f Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents: 2827
diff changeset
   321
// On the other hand, no obvious reason that clan members shouldn't know what ammo another clan member picked up
953a6d71396f Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents: 2827
diff changeset
   322
                    if (not (PHedgehog(HH^.Hedgehog)^.Team^.ExtDriven 
1072
6bc4389344c7 Show picked up ammo in demo playing mode
unc0rr
parents: 1066
diff changeset
   323
                      or (PHedgehog(HH^.Hedgehog)^.BotLevel > 0)))
2972
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   324
                      or (PHedgehog(HH^.Hedgehog)^.Team^.Clan^.ClanIndex = LocalClan)
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   325
                      or (GameType = gmtDemo)  then
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   326
                        begin
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   327
                        s:= trammo[Ammoz[a].NameId] + '(+' + IntToStr(Ammoz[a].NumberInCase) + ')';
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   328
                        AddCaption(s, PHedgehog(HH^.Hedgehog)^.Team^.Clan^.Color, capgrpAmmoinfo);
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   329
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   330
                        // show ammo icon
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   331
                        vga:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtAmmo);
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   332
                        if vga <> nil then
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   333
                            vga^.Frame:= Longword(a);
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   334
                        end;
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   335
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   336
                    end;
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   337
     posCaseHealth: begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   338
                    inc(HH^.Health, Gear^.Health);
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   339
                    str(Gear^.Health, s);
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   340
                    s:= '+' + s;
549
4278a80140a8 - Introduce clans (teams with same color)
unc0rr
parents: 545
diff changeset
   341
                    AddCaption(s, PHedgehog(HH^.Hedgehog)^.Team^.Clan^.Color, capgrpAmmoinfo);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   342
                    RenderHealth(PHedgehog(HH^.Hedgehog)^);
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   343
                    RecountTeamHealth(PHedgehog(HH^.Hedgehog)^.Team);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   344
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   345
                    i:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   346
                    while i < Gear^.Health do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   347
                        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   348
                        AddVisualGear(hwRound(HH^.X), hwRound(HH^.Y), vgtHealth);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   349
                        inc(i, 5);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   350
                        end;
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   351
                    end;
435
25820c10c849 Better AI behavior
unc0rr
parents: 434
diff changeset
   352
     end
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   353
end;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   354
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   355
const StepTicks: LongWord = 0;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   356
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   357
procedure HedgehogStep(Gear: PGear);
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 369
diff changeset
   358
var PrevdX: LongInt;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   359
begin
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   360
if ((Gear^.State and (gstAttacking or gstMoving)) = 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   361
   begin
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   362
   if isCursorVisible then
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   363
      with PHedgehog(Gear^.Hedgehog)^ do
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   364
        with Ammo^[CurSlot, CurAmmo] do
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   365
          begin
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   366
          if (Gear^.Message and gm_Left  ) <> 0 then
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   367
             Pos:= (Pos + Ammoz[AmmoType].PosCount - 1) mod Ammoz[AmmoType].PosCount
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   368
          else
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   369
          if (Gear^.Message and gm_Right ) <> 0 then
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   370
             Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   371
          else exit;
423
5f4559ce7062 Better construction tool
unc0rr
parents: 409
diff changeset
   372
          StepTicks:= 200;
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   373
          exit
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   374
          end;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   375
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   376
    if ((Gear^.Message and gm_Animate) <> 0) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   377
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   378
        Gear^.Message:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   379
        Gear^.State:= Gear^.State or gstAnimation;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   380
        Gear^.Tag:= Gear^.MsgParam;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   381
        Gear^.Timer:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   382
        Gear^.Pos:= 0
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   383
        end;
1033
622c5de38d72 Start implementing waves
unc0rr
parents: 1012
diff changeset
   384
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   385
   if ((Gear^.Message and gm_LJump ) <> 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   386
      begin
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   387
      Gear^.Message:= Gear^.Message and not gm_LJump;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   388
      DeleteCI(Gear);
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   389
      if not TestCollisionYwithGear(Gear, -1) then
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   390
         if not TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _2 else
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   391
         if not TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _1;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   392
      if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX))
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   393
         or   TestCollisionYwithGear(Gear, -1)) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   394
         begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   395
         Gear^.dY:= -_0_15;
2024
2985f3bd18b7 Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents: 2023
diff changeset
   396
         if not cArtillery then Gear^.dX:= SignAs(_0_15, Gear^.dX);
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   397
         Gear^.State:= Gear^.State or gstMoving or gstHHJumping;
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   398
         PlaySound(sndJump1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   399
         exit
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   400
         end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   401
      end;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   402
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   403
   if ((Gear^.Message and gm_HJump ) <> 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   404
      begin
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   405
      DeleteCI(Gear);
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   406
      Gear^.Message:= Gear^.Message and not gm_HJump;
855
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   407
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   408
      Gear^.dY:= -_0_2;
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   409
      SetLittle(Gear^.dX);
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   410
      Gear^.State:= Gear^.State or gstMoving or gstHHJumping;
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   411
      PlaySound(sndJump3, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
855
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   412
      exit
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   413
      end;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   414
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   415
   PrevdX:= hwSign(Gear^.dX);
2603
abed6070a669 revert previous commit to remove a wip patch
koda
parents: 2602
diff changeset
   416
   if (Gear^.Message and gm_Left  )<>0 then Gear^.dX:= -cLittle else
abed6070a669 revert previous commit to remove a wip patch
koda
parents: 2602
diff changeset
   417
   if (Gear^.Message and gm_Right )<>0 then Gear^.dX:=  cLittle else exit;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   418
2940
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   419
   if (Gear^.Message and (gm_Left or gm_Right)) <> 0 then
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   420
      begin
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   421
      StepSoundTimer:= cHHStepTicks;
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   422
      end;
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   423
   
74
42257fee61ae - Unicode support for team and hedgehogs names
unc0rr
parents: 73
diff changeset
   424
   StepTicks:= cHHStepTicks;
610
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   425
   if PrevdX <> hwSign(Gear^.dX) then
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   426
      begin
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   427
      FollowGear:= Gear;
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   428
      exit
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   429
      end;
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   430
   DeleteCI(Gear); // must be after exit!! (see previous line)
838
1faae19f2116 Remove tailing spaces in some places
unc0rr
parents: 836
diff changeset
   431
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   432
   PHedgehog(Gear^.Hedgehog)^.visStepPos:= (PHedgehog(Gear^.Hedgehog)^.visStepPos + 1) and 7;
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   433
   if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   434
      begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   435
      if not (TestCollisionXwithXYShift(Gear, _0, -6, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   436
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   437
      if not (TestCollisionXwithXYShift(Gear, _0, -5, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   438
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   439
      if not (TestCollisionXwithXYShift(Gear, _0, -4, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   440
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   441
      if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   442
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   443
      if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   444
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   445
      if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   446
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   447
      end;
1528
3fee15104c1d More stable blowtorch:
unc0rr
parents: 1519
diff changeset
   448
2585
0899ce8ad77f Smaxx: only allow change direction when shift key is pressed
unc0rr
parents: 2502
diff changeset
   449
   if (not cArtillery) and ((Gear^.Message and gm_Precise) = 0) and (not TestCollisionXwithGear(Gear, hwSign(Gear^.dX))) then
0899ce8ad77f Smaxx: only allow change direction when shift key is pressed
unc0rr
parents: 2502
diff changeset
   450
      Gear^.X:= Gear^.X + SignAs(_1, Gear^.dX);
0899ce8ad77f Smaxx: only allow change direction when shift key is pressed
unc0rr
parents: 2502
diff changeset
   451
62
c3eda0c68cd6 No more hedgehogs hung in air
unc0rr
parents: 56
diff changeset
   452
   SetAllHHToActive;
37
2b7f2a43b999 - Properly get seed in net game
unc0rr
parents: 32
diff changeset
   453
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   454
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   455
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   456
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   457
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   458
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   459
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   460
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   461
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   462
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   463
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   464
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   465
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   466
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   467
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   468
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   469
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   470
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   471
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   472
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   473
      begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   474
      Gear^.Y:= Gear^.Y - _6;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   475
      Gear^.dY:= _0;
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   476
      Gear^.State:= Gear^.State or gstMoving;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   477
      exit
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   478
      end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   479
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   480
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   481
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   482
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   483
   end
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   484
   end;
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   485
   AddGearCI(Gear)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   486
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   487
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   488
303
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
   489
procedure HedgehogChAngle(Gear: PGear);
958
92bb9fa046f9 Aim at high speed when performing rope swinging
unc0rr
parents: 952
diff changeset
   490
var da: LongWord;
303
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
   491
begin
958
92bb9fa046f9 Aim at high speed when performing rope swinging
unc0rr
parents: 952
diff changeset
   492
with PHedgehog(Gear^.Hedgehog)^ do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   493
    if (Ammo^[CurSlot, CurAmmo].AmmoType = amRope)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   494
    and ((Gear^.State and (gstMoving or gstHHJumping)) = gstMoving) then da:= 2 else da:= 1;
958
92bb9fa046f9 Aim at high speed when performing rope swinging
unc0rr
parents: 952
diff changeset
   495
1639
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1629
diff changeset
   496
if (((Gear^.Message and gm_Precise) = 0) or ((GameTicks mod 5) = 1)) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   497
    if ((Gear^.Message and gm_Up) <> 0) and (Gear^.Angle >= CurMinAngle + da) then dec(Gear^.Angle, da)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   498
    else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   499
    if ((Gear^.Message and gm_Down) <> 0) and (Gear^.Angle + da <= CurMaxAngle) then inc(Gear^.Angle, da)
303
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
   500
end;
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
   501
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   502
procedure doStepHedgehog(Gear: PGear); forward;
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   503
////////////////////////////////////////////////////////////////////////////////
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   504
procedure doStepHedgehogMoving(Gear: PGear);
545
f527450337c1 Fix some warnings
unc0rr
parents: 543
diff changeset
   505
var isFalling: boolean;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   506
begin
2762
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   507
if PHedgehog(Gear^.Hedgehog)^.Unplaced then
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   508
   begin
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   509
   Gear^.dY:= _0;
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   510
   Gear^.dX:= _0;
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   511
   Gear^.State:= Gear^.State and not gstMoving;
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   512
   exit
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   513
   end;
855
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   514
isFalling:= (Gear^.dY.isNegative) or not TestCollisionYKick(Gear, 1);
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   515
if isFalling then
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   516
   begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   517
   if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0;
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   518
   Gear^.State:= Gear^.State or gstMoving;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   519
   Gear^.dY:= Gear^.dY + cGravity
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   520
   end else
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   521
   begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   522
   if ((hwAbs(Gear^.dX) + hwAbs(Gear^.dY)) < _0_55)
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   523
      and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX);
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   524
540
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   525
   if not Gear^.dY.isNegative then
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   526
      begin
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   527
      CheckHHDamage(Gear);
790
a6f442173822 Make high jump behaviour like in worms (back somersault)
unc0rr
parents: 783
diff changeset
   528
2137
4bb9ff2069ec Okay, now a real fix
unc0rr
parents: 2136
diff changeset
   529
      if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) and
790
a6f442173822 Make high jump behaviour like in worms (back somersault)
unc0rr
parents: 783
diff changeset
   530
         (Gear^.dX.QWordValue < _0_02.QWordValue) then Gear^.dX.isNegative:= not Gear^.dX.isNegative; // landing after high jump
a6f442173822 Make high jump behaviour like in worms (back somersault)
unc0rr
parents: 783
diff changeset
   531
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   532
      Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump);
540
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   533
      Gear^.dY:= _0;
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   534
      end else Gear^.dY:= Gear^.dY + cGravity;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   535
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   536
   if ((Gear^.State and gstMoving) <> 0) then Gear^.dX:= Gear^.dX * Gear^.Friction
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   537
   end;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   539
if (Gear^.State <> 0) then DeleteCI(Gear);
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   540
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   541
if (Gear^.State and gstMoving) <> 0 then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   542
   if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   543
      if not isFalling then
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   544
         if hwAbs(Gear^.dX) > _0_01 then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   545
            if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -1, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_96; Gear^.Y:= Gear^.Y - _1 end else
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   546
            if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -2, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_93; Gear^.Y:= Gear^.Y - _2 end else
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   547
            if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -3, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_9 ; Gear^.Y:= Gear^.Y - _3 end else
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   548
            if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -4, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_87; Gear^.Y:= Gear^.Y - _4 end else
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   549
            if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -5, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_84; Gear^.Y:= Gear^.Y - _5 end else
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   550
            if hwAbs(Gear^.dX) > _0_02 then Gear^.dX:= -Gear^.Elasticity * Gear^.dX
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   551
                                   else begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   552
                                        Gear^.State:= Gear^.State and not gstMoving;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   553
                                        SetLittle(Gear^.dX)
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   554
                                        end
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   555
            else begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   556
                 Gear^.State:= Gear^.State and not gstMoving;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   557
                 SetLittle(Gear^.dX)
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   558
                 end
1518
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   559
         else if (hwAbs(Gear^.dX) > cLittle)
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   560
                and ((Gear^.State and gstHHJumping) = 0)
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   561
                then Gear^.dX:= -Gear^.Elasticity * Gear^.dX
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   562
                else SetLittle(Gear^.dX);
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   563
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   564
if (not isFalling) and
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   565
   (hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   566
   begin
1865
ebc6dfca60d4 - nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents: 1861
diff changeset
   567
   Gear^.State:= Gear^.State and not gstWinner;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   568
   Gear^.State:= Gear^.State and not gstMoving;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   569
   SetLittle(Gear^.dX);
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   570
   Gear^.dY:= _0
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   571
   end else Gear^.State:= Gear^.State or gstMoving;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   572
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   573
if (Gear^.State and gstMoving) <> 0 then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   574
   begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   575
   Gear^.State:= Gear^.State and not gstAnimation;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   576
// ARTILLERY but not being moved by explosions
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   577
   Gear^.X:= Gear^.X + Gear^.dX;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   578
   Gear^.Y:= Gear^.Y + Gear^.dY;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   579
   if (not Gear^.dY.isNegative) and
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   580
      (not TestCollisionYKick(Gear, 1)) and
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   581
       TestCollisionYwithXYShift(Gear, 0, 1, 1) then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   582
      begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   583
      CheckHHDamage(Gear);
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   584
      Gear^.dY:= _0;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   585
      Gear^.Y:= Gear^.Y + _1
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   586
      end;
1658
208a3258afdf Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents: 1645
diff changeset
   587
   CheckGearDrowning(Gear);
208a3258afdf Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents: 1645
diff changeset
   588
   if (Gear^.State and gstDrowning) <> 0 then isCursorVisible:= false
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   589
   end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   590
3003
0afdba08a858 Engine:
smxx
parents: 2996
diff changeset
   591
if (hwAbs(Gear^.dY) > _0) and (Gear^.FlightTime > 0) and ((GameFlags and gfLowGravity) = 0) then
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   592
    begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   593
    inc(Gear^.FlightTime, 1);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   594
    if Gear^.FlightTime = 2000 then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   595
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   596
        AddCaption(GetEventString(eidHomerun), cWhiteColor, capgrpMessage);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   597
        PlaySound(sndHomerun)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   598
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   599
    end
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   600
else
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   601
    begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   602
    Gear^.FlightTime:= 0;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   603
    end;
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   604
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   605
end;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   606
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   607
procedure doStepHedgehogDriven(Gear: PGear);
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   608
var t: PGear;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   609
    wasJumping: boolean;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   610
begin
558
b2b840eeb10a Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents: 553
diff changeset
   611
if not isInMultiShoot then
b2b840eeb10a Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents: 553
diff changeset
   612
   AllInactive:= false
b2b840eeb10a Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents: 553
diff changeset
   613
else
b2b840eeb10a Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents: 553
diff changeset
   614
   Gear^.Message:= 0;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   615
1035
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1034
diff changeset
   616
if (TurnTimeLeft = 0) or (Gear^.Damage > 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   617
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   618
    TurnTimeLeft:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   619
    isCursorVisible:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   620
    Gear^.State:= Gear^.State and not (gstHHDriven or gstAnimation or gstAttacking);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   621
    AttackBar:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   622
    if Gear^.Damage > 0 then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   623
        Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   624
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   625
    end;
1035
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1034
diff changeset
   626
1033
622c5de38d72 Start implementing waves
unc0rr
parents: 1012
diff changeset
   627
if (Gear^.State and gstAnimation) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   628
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   629
    Gear^.Message:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   630
    if (Gear^.Pos = Wavez[TWave(Gear^.Tag)].VoiceDelay) and (Gear^.Timer = 0) then PlaySound(Wavez[TWave(Gear^.Tag)].Voice, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   631
    inc(Gear^.Timer);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   632
    if Gear^.Timer = Wavez[TWave(Gear^.Tag)].Interval then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   633
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   634
        Gear^.Timer:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   635
        inc(Gear^.Pos);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   636
        if Gear^.Pos = Wavez[TWave(Gear^.Tag)].FramesCount then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   637
            Gear^.State:= Gear^.State and not gstAnimation
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   638
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   639
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   640
    end;
1033
622c5de38d72 Start implementing waves
unc0rr
parents: 1012
diff changeset
   641
836
150c7c87e66c - Small formatting changes
unc0rr
parents: 835
diff changeset
   642
if ((Gear^.State and gstMoving) <> 0)
150c7c87e66c - Small formatting changes
unc0rr
parents: 835
diff changeset
   643
    or (StepTicks = cHHStepTicks)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   644
    or (CurAmmoGear <> nil) then // we are moving
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   645
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   646
    with PHedgehog(Gear^.Hedgehog)^ do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   647
        if (CurAmmoGear = nil)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   648
        and (Gear^.dY > _0_39)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   649
        and (Ammo^[CurSlot, CurAmmo].AmmoType = amParachute) then Gear^.Message:= Gear^.Message or gm_Attack;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   650
    // check for case with ammo
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   651
    t:= CheckGearNear(Gear, gtCase, 36, 36);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   652
    if t <> nil then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   653
        PickUp(Gear, t)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   654
    end;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   655
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   656
if (CurAmmoGear = nil) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   657
    if (((Gear^.Message and gm_Attack) <> 0)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   658
        or ((Gear^.State and gstAttacking) <> 0)) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   659
        Attack(Gear) // should be before others to avoid desync with '/put' msg and changing weapon msgs
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   660
    else
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   661
else with PHedgehog(Gear^.Hedgehog)^ do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   662
     if ((CurAmmoGear^.Ammo^.Propz and ammoprop_AltAttack) <> 0)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   663
        and ((Gear^.Message and gm_LJump) <> 0)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   664
        and (((Ammo^[CurSlot, CurAmmo].Propz) and ammoprop_AltUse) <> 0) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   665
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   666
        Gear^.Message:= Gear^.Message and not gm_LJump;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   667
        Attack(Gear)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   668
        end;
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   669
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   670
if (CurAmmoGear = nil)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   671
    or ((CurAmmoGear^.Ammo^.Propz and ammoprop_AltAttack) <> 0) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   672
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   673
    if ((Gear^.Message and gm_Slot) <> 0) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   674
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   675
        ChangeAmmo(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   676
        ApplyAmmoChanges(PHedgehog(Gear^.Hedgehog)^)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   677
        end;
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   678
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   679
    if ((Gear^.Message and gm_Weapon) <> 0) then HHSetWeapon(Gear);
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   680
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   681
    if ((Gear^.Message and gm_Timer) <> 0) then HHSetTimer(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   682
    end;
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   683
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   684
if CurAmmoGear <> nil then
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   685
   begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   686
   CurAmmoGear^.Message:= Gear^.Message;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   687
   exit
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   688
   end;
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   689
952
9dd48265e0b9 Allow aiming while moving
unc0rr
parents: 941
diff changeset
   690
if not isInMultiShoot then
9dd48265e0b9 Allow aiming while moving
unc0rr
parents: 941
diff changeset
   691
   HedgehogChAngle(Gear);
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   692
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   693
if (Gear^.State and gstMoving) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   694
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   695
    wasJumping:= ((Gear^.State and gstHHJumping) <> 0);
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
   696
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   697
    if ((Gear^.Message and gm_HJump) <> 0) and
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   698
        wasJumping and
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   699
        ((Gear^.State and gstHHHJump) = 0) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   700
        if (not (hwAbs(Gear^.dX) > cLittle)) and (Gear^.dY < -_0_02) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   701
            begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   702
            Gear^.State:= Gear^.State or gstHHHJump;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   703
            Gear^.dY:= -_0_25;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   704
            if not cArtillery then Gear^.dX:= -SignAs(_0_02, Gear^.dX);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   705
            PlaySound(sndJump2, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   706
            end;
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
   707
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   708
    Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   709
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   710
    if (not cArtillery) and wasJumping and
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   711
        TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX);
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   712
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   713
    doStepHedgehogMoving(Gear);
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   714
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   715
    if ((Gear^.State and (gstMoving or gstDrowning)) = 0) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   716
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   717
        AddGearCI(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   718
        if wasJumping then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   719
            StepTicks:= 410
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   720
        else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   721
            StepTicks:= 95
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   722
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   723
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   724
    end;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   725
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   726
    if not isInMultiShoot then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   727
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   728
        if StepTicks > 0 then dec(StepTicks);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   729
        if (StepTicks = 0) then HedgehogStep(Gear)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   730
        end
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   731
end;
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   732
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   733
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   734
procedure doStepHedgehogFree(Gear: PGear);
511
2b5b9e00419d - Further work on new collisions implementation
unc0rr
parents: 505
diff changeset
   735
var prevState: Longword;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   736
begin
511
2b5b9e00419d - Further work on new collisions implementation
unc0rr
parents: 505
diff changeset
   737
prevState:= Gear^.State;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   738
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   739
doStepHedgehogMoving(Gear);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   740
1002
14ecd5fd4fab Implement drowning hedgehog sprite
unc0rr
parents: 984
diff changeset
   741
if (Gear^.State and (gstMoving or gstDrowning)) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   742
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   743
    if Gear^.Damage > 0 then CalcRotationDirAngle(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   744
    AllInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   745
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   746
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   747
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   748
if (Gear^.Health = 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   749
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   750
    if PrvInactive then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   751
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   752
        Gear^.Timer:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   753
        Gear^.State:= Gear^.State or gstHHDeath;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   754
        Gear^.doStep:= @doStepHedgehogDead;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   755
        FollowGear:= Gear;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   756
        PrvInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   757
        AllInactive:= false;
2140
75e5c4fcae2a Death messages thanks to Smaxx
nemo
parents: 2137
diff changeset
   758
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   759
        // Death message
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   760
        AddCaption(Format(GetEventString(eidDied), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   761
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   762
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   763
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   764
1033
622c5de38d72 Start implementing waves
unc0rr
parents: 1012
diff changeset
   765
if ((Gear^.State and gstWait) = 0) and
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   766
    (prevState <> Gear^.State) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   767
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   768
    Gear^.State:= gstWait;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   769
    Gear^.Timer:= 150
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   770
    end else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   771
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   772
    if Gear^.Timer = 0 then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   773
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   774
        Gear^.State:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   775
        Gear^.Active:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   776
        AddGearCI(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   777
        exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   778
        end else dec(Gear^.Timer)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   779
    end;
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   780
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   781
AllInactive:= false
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   782
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   783
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   784
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   785
procedure doStepHedgehog(Gear: PGear);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   786
begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   787
if (Gear^.Message and gm_Destroy) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   788
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   789
    DeleteGear(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   790
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   791
    end;
1505
3a96e93572cb - Convert small damage tag to visual gears
unc0rr
parents: 1347
diff changeset
   792
2040
7c366fc3c099 - Fix for desyncs when player exits
unc0rr
parents: 2024
diff changeset
   793
if (Gear^.State and gstHHDriven) = 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   794
    doStepHedgehogFree(Gear)
2040
7c366fc3c099 - Fix for desyncs when player exits
unc0rr
parents: 2024
diff changeset
   795
else
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   796
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   797
    with PHedgehog(Gear^.Hedgehog)^ do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   798
        if Team^.hasGone then TeamGoneEffect(Team^);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   799
    doStepHedgehogDriven(Gear)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   800
    end;
2585
0899ce8ad77f Smaxx: only allow change direction when shift key is pressed
unc0rr
parents: 2502
diff changeset
   801
end;