hedgewars/HHHandlers.inc
author sheepluva
Mon, 06 Dec 2010 03:01:44 +0100
branch0.9.14.1
changeset 4338 fb3b20af73a8
parent 4241 835fd7a0e1bf
child 4246 e5cb885492df
permissions -rw-r--r--
change theme of "Tree" map to halloween
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
3236
4ab3917d7d44 Update (c) lines to 2010 as unc0rr requested - they all had varying values so I just took the first year mentioned, then tacked on -2010
nemo
parents: 3196
diff changeset
     3
 * Copyright (c) 2004-2010 Andrey Korotaev <unC0Rr@gmail.com>
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     4
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 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
////////////////////////////////////////////////////////////////////////////////
3682
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    20
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    21
procedure HHHurt(Hedgehog: PHedgehog; Source: TDamageSource);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    22
begin
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    23
if (Source = dsFall) or (Source = dsExplosion) then
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    24
    case random(3) of
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    25
        0: PlaySound(sndOoff1, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    26
        1: PlaySound(sndOoff2, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    27
        2: PlaySound(sndOoff3, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    28
    end
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    29
else if (Source = dsPoison) then
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    30
    case random(2) of
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    31
        0: PlaySound(sndPoisonCough, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    32
        1: PlaySound(sndPoisonMoan, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    33
    end
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    34
else
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    35
    case random(4) of
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    36
        0: PlaySound(sndOw1, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    37
        1: PlaySound(sndOw2, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    38
        2: PlaySound(sndOw3, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    39
        3: PlaySound(sndOw4, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    40
    end
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    41
end;
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    42
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    43
// Shouldn't more of this ammo switching stuff be moved to uAmmos ?
4135
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
    44
function ChangeAmmo(Gear: PGear): boolean;
3943
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3915
diff changeset
    45
var slot, i: Longword;
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3915
diff changeset
    46
    ammoidx: LongInt;
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    47
begin
4135
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
    48
ChangeAmmo:= false;
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    49
slot:= Gear^.MsgParam;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    50
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    51
with PHedgehog(Gear^.Hedgehog)^ do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    52
    begin
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
    53
    Gear^.Message:= Gear^.Message and not gmSlot;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    54
    ammoidx:= 0;
3396
e5b3e5f2818e More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents: 3391
diff changeset
    55
    if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0) or
4140
1563b216f243 revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents: 4138
diff changeset
    56
       (TargetPoint.X <> NoPointX) or
4241
835fd7a0e1bf Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents: 4238
diff changeset
    57
       ((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0)) or
3396
e5b3e5f2818e More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents: 3391
diff changeset
    58
       ((Gear^.State and gstHHDriven) = 0) then exit;
4135
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
    59
    ChangeAmmo:= true;
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
    60
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
    61
    while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> CurAmmoType) do inc(ammoidx);
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    62
4241
835fd7a0e1bf Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents: 4238
diff changeset
    63
    if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(PHedgehog(Gear^.Hedgehog)^);
3430
21c08c95a672 Cheating
nemo
parents: 3428
diff changeset
    64
3396
e5b3e5f2818e More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents: 3391
diff changeset
    65
    MultiShootAttacks:= 0;
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
    66
    Gear^.Message:= Gear^.Message and not (gmLJump or gmHJump);
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    67
    
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    68
    if Ammoz[CurAmmoType].Slot = slot then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    69
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    70
        i:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    71
        repeat
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    72
        inc(ammoidx);
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    73
        if (ammoidx > cMaxSlotAmmoIndex) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    74
            begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    75
            inc(i);
3951
c9a63db3e603 Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents: 3949
diff changeset
    76
            CurAmmoType:= amNothing;
c9a63db3e603 Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents: 3949
diff changeset
    77
            ammoidx:= -1;
c9a63db3e603 Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents: 3949
diff changeset
    78
            //TryDo(i < 2, 'Engine bug: no ammo in current slot', true)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    79
            end;
3951
c9a63db3e603 Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents: 3949
diff changeset
    80
        until ((Ammo^[slot, ammoidx].Count > 0) and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, ammoidx].AmmoType].SkipTurns)) or (i = 1)
3943
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3915
diff changeset
    81
        end 
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3915
diff changeset
    82
    else
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    83
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    84
        i:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    85
        // check whether there is ammo in slot
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    86
        while (i <= cMaxSlotAmmoIndex)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    87
          and ((Ammo^[slot, i].Count = 0)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    88
               or (Team^.Clan^.TurnNumber <= Ammoz[Ammo^[slot, i].AmmoType].SkipTurns)) do inc(i);
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
    89
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    90
        if i <= cMaxSlotAmmoIndex then ammoidx:= i
3943
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3915
diff changeset
    91
        else ammoidx:= -1
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    92
        end;
3943
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3915
diff changeset
    93
        if ammoidx >= 0 then CurAmmoType:= Ammo^[slot, ammoidx].AmmoType;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    94
    end
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    95
end;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    96
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    97
procedure HHSetWeapon(Gear: PGear);
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    98
var t: LongInt;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    99
    weap: TAmmoType;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   100
    Hedgehog: PHedgehog;
4135
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
   101
    s: boolean;
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   102
begin
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   103
weap:= TAmmoType(Gear^.MsgParam);
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   104
Hedgehog:= PHedgehog(Gear^.Hedgehog);
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
   105
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   106
if 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
   107
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   108
Gear^.MsgParam:= Ammoz[weap].Slot;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   109
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   110
t:= cMaxSlotAmmoIndex;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   111
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   112
Gear^.Message:= Gear^.Message and not gmWeapon;
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   113
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   114
with Hedgehog^ do
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   115
    while (CurAmmoType <> weap) and (t >= 0) do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   116
        begin
4135
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
   117
        s:= ChangeAmmo(Gear);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   118
        dec(t)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   119
        end;
1710
cecb3cc93251 Fix angle restriction applying to rc plane when choosing via ammomenu
unc0rr
parents: 1689
diff changeset
   120
4135
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
   121
if s then ApplyAmmoChanges(PHedgehog(Gear^.Hedgehog)^)
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   122
end;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   123
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   124
procedure HHSetTimer(Gear: PGear);
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   125
var CurWeapon: PAmmo;
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   126
begin
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   127
Gear^.Message:= Gear^.Message and not gmTimer;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   128
CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^);
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   129
with PHedgehog(Gear^.Hedgehog)^ do
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   130
    if (CurWeapon^.Propz and ammoprop_Timerable) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   131
        begin
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   132
        CurWeapon^.Timer:= 1000 * Gear^.MsgParam;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   133
        with CurrentTeam^ do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   134
            ApplyAmmoChanges(Hedgehogs[CurrHedgehog]);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   135
        end;
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   136
end;
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   137
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   138
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   139
procedure Attack(Gear: PGear);
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   140
var xx, yy, newDx, newDy, lx, ly: hwFloat;
2042
905c554d62e6 Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents: 2041
diff changeset
   141
    tmpGear: PVisualGear;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   142
    CurWeapon: PAmmo;
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   143
    altUse: boolean;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   144
begin
2807
cd131de34d3d halt team blink on attack
nemo
parents: 2769
diff changeset
   145
bShowFinger:= false;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   146
CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^);
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   147
with Gear^,
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   148
     PHedgehog(Gear^.Hedgehog)^ do
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   149
     begin
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   150
     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
   151
        ((State and (gstAttacked or gstHHChooseTarget)) = 0) and
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
   152
        (((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
   153
            // Allow attacks while moving on ammo with AltAttack
3302
0973c5af5141 Add reference to ammo at time of gear creation to allow switching to work on jetpack/parachute
nemo
parents: 3236
diff changeset
   154
            ((CurAmmoGear <> nil) and ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0)) or
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   155
            ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AttackInMove) <> 0)) and
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   156
        ((TargetPoint.X <> NoPointX) or ((Ammoz[CurAmmoType].Ammo.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
   157
        begin
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   158
        State:= State or gstAttacking;
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   159
        if Power = cMaxPower then Message:= Message and not gmAttack
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   160
        else if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) = 0 then Message:= Message and not gmAttack
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   161
        else begin
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   162
             if Power = 0 then
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   163
                begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   164
                AttackBar:= CurrentTeam^.AttackBar;
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   165
                PlaySound(sndThrowPowerUp)
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   166
                end;
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   167
             inc(Power)
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   168
             end;
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   169
        if ((Message and gmAttack) <> 0) then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   170
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   171
        if (Ammoz[CurAmmoType].Ammo.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
   172
           begin
282
b1e3387389b6 - Pickhammer sound
unc0rr
parents: 263
diff changeset
   173
           StopSound(sndThrowPowerUp);
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   174
           PlaySound(sndThrowRelease);
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   175
           end;
1922
88cdabb51995 Fix bug with rope and bazooka
unc0rr
parents: 1883
diff changeset
   176
519
981df6f6e2a9 - Fix desert eagle
unc0rr
parents: 518
diff changeset
   177
        xx:= SignAs(AngleSin(Angle), dX);
900
5224ac938442 Fix attack direction when perform somersault
unc0rr
parents: 883
diff changeset
   178
        yy:= -AngleCos(Angle);
5224ac938442 Fix attack direction when perform somersault
unc0rr
parents: 883
diff changeset
   179
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   180
        lx:= X + int2hwfloat(round(GetLaunchX(CurAmmoType, hwSign(dX), Angle)));
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   181
        ly:= Y + int2hwfloat(round(GetLaunchY(CurAmmoType, Angle)));
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   182
3469
39e16d76d745 Fix for artillery mode weapon use
nemo
parents: 3431
diff changeset
   183
        if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) then xx:= - xx;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   184
        if Ammoz[CurAmmoType].Ammo.AttackVoice <> sndNone then
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   185
           PlaySound(Ammoz[CurAmmoType].Ammo.AttackVoice, CurrentTeam^.voicepack);
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   186
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   187
// Initiating alt attack
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   188
        if  (CurAmmoGear <> nil) and
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   189
            ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) and
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   190
            ((Gear^.Message and gmLJump) <> 0) and
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   191
            ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   192
            begin
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   193
            newDx:= dX / _2; 
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   194
            newDy:= dY / _2;
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   195
            altUse:= true;
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   196
            end
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   197
        else
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   198
            begin
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   199
            newDx:= xx*Power/cPowerDivisor;
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   200
            newDy:= yy*Power/cPowerDivisor;
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   201
            altUse:= false
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   202
            end;
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   203
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   204
             case CurAmmoType of
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   205
                      amGrenade: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtBomb,         0, newDx, newDy, CurWeapon^.Timer);
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   206
                      amMolotov: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMolotov,      0, newDx, newDy, 0);
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   207
                  amClusterBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtClusterBomb,  0, newDx, newDy, CurWeapon^.Timer);
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   208
                      amGasBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtGasBomb,      0, newDx, newDy, CurWeapon^.Timer);
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   209
                      amBazooka: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtShell,        0, newDx, newDy, 0);
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   210
                          amBee: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtBee,          0, newDx, newDy, 0);
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   211
                      amShotgun: begin
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   212
                                 PlaySound(sndShotgunReload);
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   213
                                 CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), 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
   214
                                 end;
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   215
                   amPickHammer: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly) + cHHRadius, gtPickHammer, 0, _0, _0, 0);
866
ac6f6c95c23f - Some more sounds
unc0rr
parents: 865
diff changeset
   216
                         amSkip: ParseCommand('/skip', true);
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   217
                         amRope: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRope, 0, xx, yy, 0);
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   218
                         amMine: if altUse then
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   219
                                    AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, newDx, newDy, 3000)
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   220
                                 else
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   221
                                    AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000);
3710
411f5c2b5292 Engine:
smaxx
parents: 3682
diff changeset
   222
                        amSMine: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine,    0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   223
                       amDEagle: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0);
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   224
                      amSineGun: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0);
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   225
                    amPortalGun: AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 0);
2827
45817d8386c7 Engine:
smxx
parents: 2807
diff changeset
   226
                  amSniperRifle: begin
45817d8386c7 Engine:
smxx
parents: 2807
diff changeset
   227
                                 PlaySound(sndSniperReload);
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   228
                                 CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0);
2827
45817d8386c7 Engine:
smxx
parents: 2807
diff changeset
   229
                                 end;
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   230
                     amDynamite: AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000);
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   231
                    amFirePunch: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtFirePunch, 0, xx, _0, 0);
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   232
                         amWhip: begin
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   233
                                 CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtWhip, 0, SignAs(_1, dX), - _0_8, 0);
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   234
                                 PlaySound(sndWhipCrack)
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   235
                                 end;
3717
d88719b0f0dc Engine:
smaxx
parents: 3710
diff changeset
   236
                       amHammer: begin
d88719b0f0dc Engine:
smaxx
parents: 3710
diff changeset
   237
                                 CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtHammer, 0, SignAs(_1, dX), - _0_8, 0);
d88719b0f0dc Engine:
smaxx
parents: 3710
diff changeset
   238
                                 PlaySound(sndWhack)
d88719b0f0dc Engine:
smaxx
parents: 3710
diff changeset
   239
                                 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
   240
                  amBaseballBat: begin
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   241
                                 CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0);
2996
dfc7507a21a0 Engine:
smxx
parents: 2995
diff changeset
   242
                                 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
   243
                                 end;
3851
fbe2e9722fc9 Sounds:
smaxx
parents: 3842
diff changeset
   244
                    amParachute: begin
fbe2e9722fc9 Sounds:
smaxx
parents: 3842
diff changeset
   245
                                 CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtParachute, 0, _0, _0, 0);
fbe2e9722fc9 Sounds:
smaxx
parents: 3842
diff changeset
   246
                                 PlaySound(sndParachute)
fbe2e9722fc9 Sounds:
smaxx
parents: 3842
diff changeset
   247
                                 end;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   248
                    // we save CurWeapon^.Pos (in this case: cursor direction) by using it as (otherwise irrelevant) X value of the new gear.
4140
1563b216f243 revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents: 4138
diff changeset
   249
                    amAirAttack: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 0, _0, _0, 0);
1563b216f243 revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents: 4138
diff changeset
   250
                   amMineStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 1, _0, _0, 0);
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   251
                    amBlowTorch: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0);
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   252
                       amGirder: CurAmmoGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0);
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   253
                     amTeleport: CurAmmoGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0);
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   254
                       amSwitch: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0);
2262
0dc94341bf42 sound for mortar
koda
parents: 2238
diff changeset
   255
                       amMortar: begin
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   256
                                 playSound(sndMortar);
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   257
                                 FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMortar,  0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0);
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   258
                                 end;
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   259
                      amRCPlane: begin
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   260
                                 CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRCPlane,  0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0);
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   261
                                 CurAmmoGear^.SoundChannel:= LoopSound(sndRCPlane, nil)
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   262
                                 end;
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   263
                       amKamikaze: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0);
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   264
                         amCake: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, xx, _0, 0);
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   265
                    amSeduction: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius * 2), hwRound(ly + yy * cHHRadius * 2), gtSeduction, 0, xx * _0_4, yy * _0_4, 0);
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   266
                   amWatermelon: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtWatermelon,  0, newDx, newDy, CurWeapon^.Timer);
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   267
                  amHellishBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtHellishBomb,    0, newDx, newDy, 0);
4140
1563b216f243 revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents: 4138
diff changeset
   268
                       amNapalm: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0);
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   269
                        amDrill: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtDrill, 0, newDx, newDy, 0);
3484
3c65b1d979cd Engine:
smxx
parents: 3483
diff changeset
   270
                      amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun,  0, xx * _0_5, yy * _0_5, 0);
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   271
                    amJetpack: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtJetpack, 0, _0, _0, 0);
3123
b0a02930a1dc Engine:
smxx
parents: 3112
diff changeset
   272
                    amBirdy: begin
b0a02930a1dc Engine:
smxx
parents: 3112
diff changeset
   273
                             PlaySound(sndWhistle);
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   274
                             CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly) - 32, gtBirdy, 0, _0, _0, 0);
3123
b0a02930a1dc Engine:
smxx
parents: 3112
diff changeset
   275
                             end;
2908
bd1909984a09 Engine:
smxx
parents: 2882
diff changeset
   276
                      amLowGravity: begin
bd1909984a09 Engine:
smxx
parents: 2882
diff changeset
   277
                                    PlaySound(sndLowGravity);
3355
dc9e61e67484 cWindSpeed recalculation assumed GetRandom returns a value between 0.0-1.0 while in fact is in the 0.0-0.5 range; Halve cMaxWindSpeed to compensate.
palewolf
parents: 3351
diff changeset
   278
                                    cGravity:= cMaxWindSpeed
2908
bd1909984a09 Engine:
smxx
parents: 2882
diff changeset
   279
                                    end;
4224
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   280
                      amExtraDamage:begin 
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   281
                                    PlaySound(sndHellishImpact4);
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   282
                                    cDamageModifier:= _1_5
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   283
                                    end;
1849
2a989e5abda6 4 utilities by nemo
unc0rr
parents: 1749
diff changeset
   284
                      amInvulnerable: Invulnerable:= true;
4224
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   285
                      amExtraTime:  begin
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   286
                                    PlaySound(sndSwitchHog);
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   287
                                    TurnTimeLeft:= TurnTimeLeft + 30000
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   288
                                    end;
1854
6e05013899b2 laser beam by nemo reworked a bit by me
unc0rr
parents: 1849
diff changeset
   289
                      amLaserSight: cLaserSighting:= true;
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   290
                      amVampiric: begin
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   291
                                  PlaySound(sndOw1, Team^.voicepack);
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   292
                                  cVampiric:= true;
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   293
                                  end;
3351
3fd3f116f2fc Engine:
smxx
parents: 3350
diff changeset
   294
                      amPiano: begin
3399
885304636abf Drown the hog using the piano
nemo
parents: 3397
diff changeset
   295
                               // Tuck the hedgehog away until the piano attack is completed
885304636abf Drown the hog using the piano
nemo
parents: 3397
diff changeset
   296
                               Unplaced:= true;
885304636abf Drown the hog using the piano
nemo
parents: 3397
diff changeset
   297
                               X:= _0;
885304636abf Drown the hog using the piano
nemo
parents: 3397
diff changeset
   298
                               Y:= _0;
3351
3fd3f116f2fc Engine:
smxx
parents: 3350
diff changeset
   299
                               FollowGear:= AddGear(TargetPoint.X, 0, gtPiano, 0, _0, _0, 0);
3fd3f116f2fc Engine:
smxx
parents: 3350
diff changeset
   300
                               PauseMusic
3fd3f116f2fc Engine:
smxx
parents: 3350
diff changeset
   301
                               end;
3484
3c65b1d979cd Engine:
smxx
parents: 3483
diff changeset
   302
                      amFlamethrower: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtFlamethrower,  0, xx * _0_5, yy * _0_5, 0);
3991
82e4a5ef18f7 Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents: 3970
diff changeset
   303
                    amResurrector: begin
82e4a5ef18f7 Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents: 3970
diff changeset
   304
                        CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly),
82e4a5ef18f7 Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents: 3970
diff changeset
   305
                                gtResurrector, 0, _0, _0, 0);
82e4a5ef18f7 Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents: 3970
diff changeset
   306
                        CurAmmoGear^.SoundChannel := LoopSound(sndResurrector);
82e4a5ef18f7 Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents: 3970
diff changeset
   307
                    end;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   308
                  end;
829
1209eb768acf Use 'first blood' sound
unc0rr
parents: 800
diff changeset
   309
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   310
        uStats.AmmoUsed(CurAmmoType);
829
1209eb768acf Use 'first blood' sound
unc0rr
parents: 800
diff changeset
   311
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   312
        if not (SpeechText = '') then
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   313
            begin
2042
905c554d62e6 Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents: 2041
diff changeset
   314
            tmpGear:= AddVisualGear(0, 0, vgtSpeechBubble);
2115
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   315
            if tmpGear <> nil then
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   316
               begin
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   317
               tmpGear^.Text:= SpeechText;
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   318
               tmpGear^.Hedgehog:= Gear^.Hedgehog;
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   319
               tmpGear^.FrameTicks:= SpeechType;
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   320
               end;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   321
            SpeechText:= ''
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   322
            end;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   323
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   324
        Power:= 0;
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   325
        if (CurAmmoGear <> nil)
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   326
           and ((Ammoz[CurAmmoType].Ammo.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
   327
           begin
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   328
           CurAmmoGear^.AmmoType:= CurAmmoType;
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   329
           Message:= Message or gmAttack;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   330
           CurAmmoGear^.Message:= Message
82
2f4f3236cccc - New fort
unc0rr
parents: 80
diff changeset
   331
           end else begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   332
           if not CurrentTeam^.ExtDriven and
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   333
             ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then SendIPC('a');
1849
2a989e5abda6 4 utilities by nemo
unc0rr
parents: 1749
diff changeset
   334
           AfterAttack;
82
2f4f3236cccc - New fort
unc0rr
parents: 80
diff changeset
   335
           end
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   336
        end else Message:= Message and not gmAttack;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   337
     end
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   338
end;
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   339
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   340
procedure AfterAttack;
2502
f67c603c23b5 - Fix build
unc0rr
parents: 2500
diff changeset
   341
var s: shortstring;
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   342
    a: TAmmoType;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   343
begin
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 558
diff changeset
   344
with CurrentHedgehog^.Gear^,
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   345
        CurrentHedgehog^ do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   346
    begin
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   347
    a:= CurAmmoType;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   348
    State:= State and not gstAttacking;
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   349
    if (Ammoz[a].Ammo.Propz and ammoprop_Effect) = 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   350
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   351
        Inc(MultiShootAttacks);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   352
        
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   353
        if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   354
            begin
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   355
            s:= inttostr(Ammoz[a].Ammo.NumPerTurn - MultiShootAttacks + 1);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   356
            AddCaption(format(trmsg[sidRemaining], s), cWhiteColor, capgrpAmmostate);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   357
            end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   358
        
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   359
        if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks) or
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   360
            ((GameFlags and gfMultiWeapon) <> 0) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   361
            begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   362
            isInMultiShoot:= true
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   363
            end
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   364
        else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   365
            begin
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   366
            OnUsedAmmo(CurrentHedgehog^);
4241
835fd7a0e1bf Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents: 4238
diff changeset
   367
            if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and ((GameFlags and gfInfAttack) = 0) then
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   368
                TurnTimeLeft:= Ammoz[a].TimeAfterTurn;
4241
835fd7a0e1bf Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents: 4238
diff changeset
   369
            if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) then State:= State or gstAttacked;
835fd7a0e1bf Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents: 4238
diff changeset
   370
            if (Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) <> 0 then ApplyAmmoChanges(CurrentHedgehog^)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   371
            end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   372
        end
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   373
    else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   374
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   375
        OnUsedAmmo(CurrentHedgehog^);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   376
        ApplyAmmoChanges(CurrentHedgehog^);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   377
        end;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   378
    AttackBar:= 0
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   379
    end
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   380
end;
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   381
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   382
////////////////////////////////////////////////////////////////////////////////
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   383
procedure doStepHedgehogDead(Gear: PGear);
868
4884bce5e5eb Hedgehog death animation
unc0rr
parents: 866
diff changeset
   384
const frametime = 200;
4884bce5e5eb Hedgehog death animation
unc0rr
parents: 866
diff changeset
   385
      timertime = frametime * 6;
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   386
begin
2769
82bfcc006afb Some handling of interaction between king mode and place hogs mode.
nemo
parents: 2762
diff changeset
   387
if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit;
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   388
if Gear^.Timer > 1 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   389
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   390
    AllInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   391
    dec(Gear^.Timer);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   392
    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
   393
    end else
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   394
if Gear^.Timer = 1 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   395
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   396
    Gear^.State:= Gear^.State or gstNoDamage;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   397
    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   398
    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
   399
    DeleteGear(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   400
    SetAllToActive
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   401
    end else // Gear^.Timer = 0
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   402
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   403
    AllInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   404
    Gear^.Z:= cCurrHHZ;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   405
    RemoveGearFromList(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   406
    InsertGearToList(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   407
    PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   408
    Gear^.Pos:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   409
    Gear^.Timer:= timertime
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   410
    end
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   411
end;
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   412
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   413
////////////////////////////////////////////////////////////////////////////////
3310
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   414
procedure doStepHedgehogGone(Gear: PGear);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   415
const frametime = 65;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   416
      timertime = frametime * 11;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   417
begin
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   418
if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   419
if Gear^.Timer > 1 then
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   420
    begin
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   421
    AllInactive:= false;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   422
    dec(Gear^.Timer);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   423
    if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos)
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   424
    end else
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   425
if Gear^.Timer = 1 then
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   426
    begin
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   427
    DeleteGear(Gear);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   428
    SetAllToActive
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   429
    end else // Gear^.Timer = 0
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   430
    begin
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   431
    AllInactive:= false;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   432
    Gear^.Z:= cCurrHHZ;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   433
    RemoveGearFromList(Gear);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   434
    InsertGearToList(Gear);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   435
    PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   436
    PlaySound(sndWarp);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   437
    Gear^.Pos:= 0;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   438
    Gear^.Timer:= timertime
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   439
    end
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   440
end;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   441
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   442
////////////////////////////////////////////////////////////////////////////////
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   443
procedure PickUp(HH, Gear: PGear);
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   444
var s: shortstring;
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   445
    a: TAmmoType;
3169
c8c6ac44f51b prophylactic removal of some Integer references, raise a few of the template islands up a bit so they work inverted without triggering border
nemo
parents: 3161
diff changeset
   446
    i: LongInt;
2972
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   447
    vga: PVisualGear;
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   448
begin
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   449
Gear^.Message:= gmDestroy;
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   450
PlaySound(sndShotgunReload);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   451
case Gear^.Pos of
1964
dc9ea05c9d2f - Another way of defining official server
unc0rr
parents: 1922
diff changeset
   452
       posCaseUtility,
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   453
       posCaseAmmo: begin
4238
6f1631765ebd Fix a long-standing bug with ammo due to gstMoving being set on gears generically, causing an incorrect ammo type to be set. This caused crashes and incorrect ammo types.
nemo
parents: 4233
diff changeset
   454
                    a:= Gear^.AmmoType;
553
5478386d935f - Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents: 549
diff changeset
   455
                    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
   456
// 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
   457
// 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
   458
                    if (not (PHedgehog(HH^.Hedgehog)^.Team^.ExtDriven 
1072
6bc4389344c7 Show picked up ammo in demo playing mode
unc0rr
parents: 1066
diff changeset
   459
                      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
   460
                      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
   461
                      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
   462
                        begin
3196
336d6fc3325c Engine:
smxx
parents: 3174
diff changeset
   463
                        s:= trammo[Ammoz[a].NameId] + ' (+' + IntToStr(Ammoz[a].NumberInCase) + ')';
2972
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   464
                        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
   465
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   466
                        // 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
   467
                        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
   468
                        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
   469
                            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
   470
                        end;
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   471
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   472
                    end;
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   473
     posCaseHealth: begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   474
                    inc(HH^.Health, Gear^.Health);
3112
f1bbe35ddb83 Engine:
smxx
parents: 3100
diff changeset
   475
                    PHedgehog(HH^.Hedgehog)^.Effects[hePoisoned] := false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   476
                    str(Gear^.Health, s);
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   477
                    s:= '+' + s;
549
4278a80140a8 - Introduce clans (teams with same color)
unc0rr
parents: 545
diff changeset
   478
                    AddCaption(s, PHedgehog(HH^.Hedgehog)^.Team^.Clan^.Color, capgrpAmmoinfo);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   479
                    RenderHealth(PHedgehog(HH^.Hedgehog)^);
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   480
                    RecountTeamHealth(PHedgehog(HH^.Hedgehog)^.Team);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   481
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   482
                    i:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   483
                    while i < Gear^.Health do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   484
                        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   485
                        AddVisualGear(hwRound(HH^.X), hwRound(HH^.Y), vgtHealth);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   486
                        inc(i, 5);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   487
                        end;
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   488
                    end;
435
25820c10c849 Better AI behavior
unc0rr
parents: 434
diff changeset
   489
     end
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   490
end;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   491
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   492
const StepTicks: LongWord = 0;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   493
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   494
procedure HedgehogStep(Gear: PGear);
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 369
diff changeset
   495
var PrevdX: LongInt;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   496
    CurWeapon: PAmmo;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   497
begin
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   498
CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^);
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   499
if ((Gear^.State and (gstAttacking or gstMoving)) = 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   500
   begin
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   501
   if isCursorVisible then
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   502
      with PHedgehog(Gear^.Hedgehog)^ do
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   503
        with CurWeapon^ do
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   504
          begin
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   505
          if (Gear^.Message and gmLeft  ) <> 0 then
3407
dcc129c4352e Engine:
smxx
parents: 3402
diff changeset
   506
             Pos:= (Pos - 1 + Ammoz[AmmoType].PosCount) mod Ammoz[AmmoType].PosCount
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   507
          else
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   508
          if (Gear^.Message and gmRight ) <> 0 then
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   509
             Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   510
          else exit;
423
5f4559ce7062 Better construction tool
unc0rr
parents: 409
diff changeset
   511
          StepTicks:= 200;
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   512
          exit
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   513
          end;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   514
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   515
    if ((Gear^.Message and gmAnimate) <> 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   516
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   517
        Gear^.Message:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   518
        Gear^.State:= Gear^.State or gstAnimation;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   519
        Gear^.Tag:= Gear^.MsgParam;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   520
        Gear^.Timer:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   521
        Gear^.Pos:= 0
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   522
        end;
1033
622c5de38d72 Start implementing waves
unc0rr
parents: 1012
diff changeset
   523
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   524
   if ((Gear^.Message and gmLJump ) <> 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   525
      begin
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   526
      Gear^.Message:= Gear^.Message and not gmLJump;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   527
      DeleteCI(Gear);
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   528
      if not TestCollisionYwithGear(Gear, -1) then
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   529
         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
   530
         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
   531
      if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX))
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   532
         or   TestCollisionYwithGear(Gear, -1)) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   533
         begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   534
         Gear^.dY:= -_0_15;
2024
2985f3bd18b7 Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents: 2023
diff changeset
   535
         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
   536
         Gear^.State:= Gear^.State or gstMoving or gstHHJumping;
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   537
         PlaySound(sndJump1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   538
         exit
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   539
         end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   540
      end;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   541
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   542
   if ((Gear^.Message and gmHJump ) <> 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   543
      begin
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   544
      DeleteCI(Gear);
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   545
      Gear^.Message:= Gear^.Message and not gmHJump;
855
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   546
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   547
      Gear^.dY:= -_0_2;
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   548
      SetLittle(Gear^.dX);
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   549
      Gear^.State:= Gear^.State or gstMoving or gstHHJumping;
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   550
      PlaySound(sndJump3, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
855
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   551
      exit
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   552
      end;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   553
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   554
   PrevdX:= hwSign(Gear^.dX);
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   555
   if (Gear^.Message and gmLeft  )<>0 then Gear^.dX:= -cLittle else
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   556
   if (Gear^.Message and gmRight )<>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
   557
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   558
   if (Gear^.Message and (gmLeft or gmRight)) <> 0 then
2940
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   559
      begin
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   560
      StepSoundTimer:= cHHStepTicks;
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   561
      end;
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   562
   
74
42257fee61ae - Unicode support for team and hedgehogs names
unc0rr
parents: 73
diff changeset
   563
   StepTicks:= cHHStepTicks;
610
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   564
   if PrevdX <> hwSign(Gear^.dX) then
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   565
      begin
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   566
      FollowGear:= Gear;
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   567
      exit
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   568
      end;
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   569
   DeleteCI(Gear); // must be after exit!! (see previous line)
838
1faae19f2116 Remove tailing spaces in some places
unc0rr
parents: 836
diff changeset
   570
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   571
   PHedgehog(Gear^.Hedgehog)^.visStepPos:= (PHedgehog(Gear^.Hedgehog)^.visStepPos + 1) and 7;
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   572
   if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   573
      begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   574
      if not (TestCollisionXwithXYShift(Gear, _0, -6, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   575
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   576
      if not (TestCollisionXwithXYShift(Gear, _0, -5, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   577
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   578
      if not (TestCollisionXwithXYShift(Gear, _0, -4, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   579
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   580
      if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   581
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   582
      if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   583
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   584
      if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX))
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   585
         or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   586
      end;
1528
3fee15104c1d More stable blowtorch:
unc0rr
parents: 1519
diff changeset
   587
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   588
   if (not cArtillery) and ((Gear^.Message and gmPrecise) = 0) and (not TestCollisionXwithGear(Gear, hwSign(Gear^.dX))) then
2585
0899ce8ad77f Smaxx: only allow change direction when shift key is pressed
unc0rr
parents: 2502
diff changeset
   589
      Gear^.X:= Gear^.X + SignAs(_1, Gear^.dX);
0899ce8ad77f Smaxx: only allow change direction when shift key is pressed
unc0rr
parents: 2502
diff changeset
   590
62
c3eda0c68cd6 No more hedgehogs hung in air
unc0rr
parents: 56
diff changeset
   591
   SetAllHHToActive;
37
2b7f2a43b999 - Properly get seed in net game
unc0rr
parents: 32
diff changeset
   592
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   593
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   594
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   595
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   596
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   597
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   598
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   599
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   600
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   601
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   602
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   603
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   604
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   605
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   606
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   607
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   608
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   609
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   610
   Gear^.Y:= Gear^.Y + _1;
68
cbb93eb90304 Collision-related stuff
unc0rr
parents: 62
diff changeset
   611
   if not TestCollisionYwithGear(Gear, 1) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   612
      begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   613
      Gear^.Y:= Gear^.Y - _6;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   614
      Gear^.dY:= _0;
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   615
      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
   616
      exit
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   617
      end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   618
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   619
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   620
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   621
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   622
   end
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   623
   end;
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   624
   AddGearCI(Gear)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   625
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   626
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   627
303
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
   628
procedure HedgehogChAngle(Gear: PGear);
958
92bb9fa046f9 Aim at high speed when performing rope swinging
unc0rr
parents: 952
diff changeset
   629
var da: LongWord;
303
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
   630
begin
958
92bb9fa046f9 Aim at high speed when performing rope swinging
unc0rr
parents: 952
diff changeset
   631
with PHedgehog(Gear^.Hedgehog)^ do
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   632
    if (CurAmmoType = amRope)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   633
    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
   634
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   635
if (((Gear^.Message and gmPrecise) = 0) or ((GameTicks mod 5) = 1)) then
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   636
    if ((Gear^.Message and gmUp) <> 0) and (Gear^.Angle >= CurMinAngle + da) then dec(Gear^.Angle, da)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   637
    else
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   638
    if ((Gear^.Message and gmDown) <> 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
   639
end;
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
   640
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   641
procedure doStepHedgehog(Gear: PGear); forward;
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   642
////////////////////////////////////////////////////////////////////////////////
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   643
procedure doStepHedgehogMoving(Gear: PGear);
3907
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   644
var isFalling, isUnderwater: boolean;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   645
begin
3907
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   646
isUnderwater:= cWaterLine < hwRound(Gear^.Y) + Gear^.Radius;
3915
c05855146440 Correct bug in flight ceiling for birdy as well, increase clip on velocity to 1.9 (shouldn't cause problems with most collision checks still), apply clip to both + and -
nemo
parents: 3909
diff changeset
   647
if Gear^.dX.QWordValue > 8160437862 then Gear^.dX.QWordValue:= 8160437862;
c05855146440 Correct bug in flight ceiling for birdy as well, increase clip on velocity to 1.9 (shouldn't cause problems with most collision checks still), apply clip to both + and -
nemo
parents: 3909
diff changeset
   648
if Gear^.dY.QWordValue > 8160437862 then Gear^.dY.QWordValue:= 8160437862;
c05855146440 Correct bug in flight ceiling for birdy as well, increase clip on velocity to 1.9 (shouldn't cause problems with most collision checks still), apply clip to both + and -
nemo
parents: 3909
diff changeset
   649
2762
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   650
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
   651
   begin
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   652
   Gear^.dY:= _0;
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   653
   Gear^.dX:= _0;
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   654
   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
   655
   exit
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   656
   end;
855
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   657
isFalling:= (Gear^.dY.isNegative) or not TestCollisionYKick(Gear, 1);
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   658
if isFalling then
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   659
   begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   660
   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
   661
   Gear^.State:= Gear^.State or gstMoving;
3909
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3907
diff changeset
   662
   if isUnderwater then Gear^.dY:= Gear^.dY + cGravity / _2
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3907
diff changeset
   663
   else Gear^.dY:= Gear^.dY + cGravity
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3907
diff changeset
   664
   end 
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3907
diff changeset
   665
else
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   666
   begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   667
   if ((hwAbs(Gear^.dX) + hwAbs(Gear^.dY)) < _0_55)
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   668
      and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX);
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   669
540
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   670
   if not Gear^.dY.isNegative then
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   671
      begin
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   672
      CheckHHDamage(Gear);
790
a6f442173822 Make high jump behaviour like in worms (back somersault)
unc0rr
parents: 783
diff changeset
   673
2137
4bb9ff2069ec Okay, now a real fix
unc0rr
parents: 2136
diff changeset
   674
      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
   675
         (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
   676
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   677
      Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump);
540
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   678
      Gear^.dY:= _0;
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   679
      end else Gear^.dY:= Gear^.dY + cGravity;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   680
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   681
   if ((Gear^.State and gstMoving) <> 0) then Gear^.dX:= Gear^.dX * Gear^.Friction
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   682
   end;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   683
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   684
if (Gear^.State <> 0) then DeleteCI(Gear);
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   685
3907
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   686
if isUnderwater then
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   687
   begin
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   688
   Gear^.dY:= Gear^.dY * _0_999;
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   689
   Gear^.dX:= Gear^.dX * _0_999;
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   690
   end;
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   691
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   692
if (Gear^.State and gstMoving) <> 0 then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   693
   if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   694
      if not isFalling then
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   695
         if hwAbs(Gear^.dX) > _0_01 then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   696
            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
   697
            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
   698
            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
   699
            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
   700
            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
   701
            if hwAbs(Gear^.dX) > _0_02 then Gear^.dX:= -Gear^.Elasticity * Gear^.dX
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   702
                                   else begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   703
                                        Gear^.State:= Gear^.State and not gstMoving;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   704
                                        SetLittle(Gear^.dX)
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   705
                                        end
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   706
            else begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   707
                 Gear^.State:= Gear^.State and not gstMoving;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   708
                 SetLittle(Gear^.dX)
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   709
                 end
1518
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   710
         else if (hwAbs(Gear^.dX) > cLittle)
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   711
                and ((Gear^.State and gstHHJumping) = 0)
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   712
                then Gear^.dX:= -Gear^.Elasticity * Gear^.dX
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   713
                else SetLittle(Gear^.dX);
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   714
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   715
if (not isFalling) and
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   716
   (hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   717
   begin
1865
ebc6dfca60d4 - nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents: 1861
diff changeset
   718
   Gear^.State:= Gear^.State and not gstWinner;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   719
   Gear^.State:= Gear^.State and not gstMoving;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   720
   SetLittle(Gear^.dX);
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   721
   Gear^.dY:= _0
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   722
   end else Gear^.State:= Gear^.State or gstMoving;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   723
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   724
if (Gear^.State and gstMoving) <> 0 then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   725
   begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   726
   Gear^.State:= Gear^.State and not gstAnimation;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   727
// ARTILLERY but not being moved by explosions
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   728
   Gear^.X:= Gear^.X + Gear^.dX;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   729
   Gear^.Y:= Gear^.Y + Gear^.dY;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   730
   if (not Gear^.dY.isNegative) and
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   731
      (not TestCollisionYKick(Gear, 1)) and
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   732
       TestCollisionYwithXYShift(Gear, 0, 1, 1) then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   733
      begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   734
      CheckHHDamage(Gear);
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   735
      Gear^.dY:= _0;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   736
      Gear^.Y:= Gear^.Y + _1
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   737
      end;
1658
208a3258afdf Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents: 1645
diff changeset
   738
   CheckGearDrowning(Gear);
208a3258afdf Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents: 1645
diff changeset
   739
   if (Gear^.State and gstDrowning) <> 0 then isCursorVisible:= false
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   740
   end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   741
3003
0afdba08a858 Engine:
smxx
parents: 2996
diff changeset
   742
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
   743
    begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   744
    inc(Gear^.FlightTime, 1);
3174
17e2602dfdc5 Engine:
smxx
parents: 3169
diff changeset
   745
    if Gear^.FlightTime = 3000 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   746
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   747
        AddCaption(GetEventString(eidHomerun), cWhiteColor, capgrpMessage);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   748
        PlaySound(sndHomerun)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   749
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   750
    end
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   751
else
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   752
    begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   753
    Gear^.FlightTime:= 0;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   754
    end;
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   755
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   756
end;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   757
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   758
procedure doStepHedgehogDriven(Gear: PGear);
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   759
var t: PGear;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   760
    wasJumping: boolean;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   761
    Hedgehog: PHedgehog;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   762
begin
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   763
Hedgehog:= PHedgehog(Gear^.Hedgehog);
558
b2b840eeb10a Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents: 553
diff changeset
   764
if not isInMultiShoot then
b2b840eeb10a Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents: 553
diff changeset
   765
   AllInactive:= false
b2b840eeb10a Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents: 553
diff changeset
   766
else
b2b840eeb10a Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents: 553
diff changeset
   767
   Gear^.Message:= 0;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   768
1035
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1034
diff changeset
   769
if (TurnTimeLeft = 0) or (Gear^.Damage > 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   770
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   771
    TurnTimeLeft:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   772
    isCursorVisible:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   773
    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
   774
    AttackBar:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   775
    if Gear^.Damage > 0 then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   776
        Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump);
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;
1035
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1034
diff changeset
   779
1033
622c5de38d72 Start implementing waves
unc0rr
parents: 1012
diff changeset
   780
if (Gear^.State and gstAnimation) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   781
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   782
    Gear^.Message:= 0;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   783
    if (Gear^.Pos = Wavez[TWave(Gear^.Tag)].VoiceDelay) and (Gear^.Timer = 0) then PlaySound(Wavez[TWave(Gear^.Tag)].Voice, Hedgehog^.Team^.voicepack);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   784
    inc(Gear^.Timer);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   785
    if Gear^.Timer = Wavez[TWave(Gear^.Tag)].Interval then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   786
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   787
        Gear^.Timer:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   788
        inc(Gear^.Pos);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   789
        if Gear^.Pos = Wavez[TWave(Gear^.Tag)].FramesCount then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   790
            Gear^.State:= Gear^.State and not gstAnimation
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   791
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   792
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   793
    end;
1033
622c5de38d72 Start implementing waves
unc0rr
parents: 1012
diff changeset
   794
836
150c7c87e66c - Small formatting changes
unc0rr
parents: 835
diff changeset
   795
if ((Gear^.State and gstMoving) <> 0)
150c7c87e66c - Small formatting changes
unc0rr
parents: 835
diff changeset
   796
    or (StepTicks = cHHStepTicks)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   797
    or (CurAmmoGear <> nil) then // we are moving
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   798
    begin
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   799
    with Hedgehog^ do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   800
        if (CurAmmoGear = nil)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   801
        and (Gear^.dY > _0_39)
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   802
        and (CurAmmoType = amParachute) then Gear^.Message:= Gear^.Message or gmAttack;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   803
    // check for case with ammo
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   804
    t:= CheckGearNear(Gear, gtCase, 36, 36);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   805
    if t <> nil then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   806
        PickUp(Gear, t)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   807
    end;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   808
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   809
if (CurAmmoGear = nil) then
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   810
    if (((Gear^.Message and gmAttack) <> 0)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   811
        or ((Gear^.State and gstAttacking) <> 0)) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   812
        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
   813
    else
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   814
else 
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   815
    with Hedgehog^ do
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   816
        if ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0)
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   817
            and ((Gear^.Message and gmLJump) <> 0)
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   818
            and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   819
            begin
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   820
            Attack(Gear);
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   821
            Gear^.Message:= Gear^.Message and not gmLJump
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   822
            end;
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   823
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   824
if (CurAmmoGear = nil)
3842
fc94291ca1d9 Trying to adjust behaviour of multishoot w/ portal gun so switching weapons works correctly.
nemo
parents: 3837
diff changeset
   825
    or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) 
4241
835fd7a0e1bf Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents: 4238
diff changeset
   826
    or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   827
    begin
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   828
    if ((Gear^.Message and gmSlot) <> 0) then
4135
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
   829
        if ChangeAmmo(Gear) then ApplyAmmoChanges(Hedgehog^);
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   830
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   831
    if ((Gear^.Message and gmWeapon) <> 0) then HHSetWeapon(Gear);
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   832
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   833
    if ((Gear^.Message and gmTimer) <> 0) then HHSetTimer(Gear);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   834
    end;
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   835
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   836
if CurAmmoGear <> nil then
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   837
   begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   838
   CurAmmoGear^.Message:= Gear^.Message;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   839
   exit
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   840
   end;
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   841
952
9dd48265e0b9 Allow aiming while moving
unc0rr
parents: 941
diff changeset
   842
if not isInMultiShoot then
9dd48265e0b9 Allow aiming while moving
unc0rr
parents: 941
diff changeset
   843
   HedgehogChAngle(Gear);
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   844
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   845
if (Gear^.State and gstMoving) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   846
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   847
    wasJumping:= ((Gear^.State and gstHHJumping) <> 0);
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
   848
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   849
    if ((Gear^.Message and gmHJump) <> 0) and
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   850
        wasJumping and
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   851
        ((Gear^.State and gstHHHJump) = 0) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   852
        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
   853
            begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   854
            Gear^.State:= Gear^.State or gstHHHJump;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   855
            Gear^.dY:= -_0_25;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   856
            if not cArtillery then Gear^.dX:= -SignAs(_0_02, Gear^.dX);
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   857
            PlaySound(sndJump2, Hedgehog^.Team^.voicepack)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   858
            end;
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
   859
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   860
    Gear^.Message:= Gear^.Message and not (gmLJump or gmHJump);
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   861
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   862
    if (not cArtillery) and wasJumping and
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   863
        TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX);
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   864
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   865
    doStepHedgehogMoving(Gear);
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   866
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   867
    if ((Gear^.State and (gstMoving or gstDrowning)) = 0) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   868
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   869
        AddGearCI(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   870
        if wasJumping then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   871
            StepTicks:= 410
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   872
        else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   873
            StepTicks:= 95
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   874
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   875
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   876
    end;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   877
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   878
    if not isInMultiShoot then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   879
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   880
        if StepTicks > 0 then dec(StepTicks);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   881
        if (StepTicks = 0) then HedgehogStep(Gear)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   882
        end
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   883
end;
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   884
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   885
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   886
procedure doStepHedgehogFree(Gear: PGear);
511
2b5b9e00419d - Further work on new collisions implementation
unc0rr
parents: 505
diff changeset
   887
var prevState: Longword;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   888
begin
511
2b5b9e00419d - Further work on new collisions implementation
unc0rr
parents: 505
diff changeset
   889
prevState:= Gear^.State;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   890
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   891
doStepHedgehogMoving(Gear);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   892
1002
14ecd5fd4fab Implement drowning hedgehog sprite
unc0rr
parents: 984
diff changeset
   893
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
   894
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   895
    if Gear^.Damage > 0 then CalcRotationDirAngle(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   896
    AllInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   897
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   898
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   899
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   900
if (Gear^.Health = 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   901
    begin
4224
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   902
    if PrvInactive or ((GameFlags and gfInfAttack) <> 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   903
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   904
        Gear^.Timer:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   905
        FollowGear:= Gear;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   906
        PrvInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   907
        AllInactive:= false;
2140
75e5c4fcae2a Death messages thanks to Smaxx
nemo
parents: 2137
diff changeset
   908
3310
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   909
        if not PHedgehog(Gear^.Hedgehog)^.Team^.hasGone then
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   910
            begin
4020
898a55b81d10 clear poison on death
nemo
parents: 4015
diff changeset
   911
            PHedgehog(Gear^.Hedgehog)^.Effects[hePoisoned] := false;
3768
39947624dabb Some survival mode changes by burp
tiyuri@gmail.com
parents: 3717
diff changeset
   912
            if PHedgehog(Gear^.Hedgehog)^.Effects[heResurrectable] then begin
39947624dabb Some survival mode changes by burp
tiyuri@gmail.com
parents: 3717
diff changeset
   913
                ResurrectHedgehog(Gear);
39947624dabb Some survival mode changes by burp
tiyuri@gmail.com
parents: 3717
diff changeset
   914
            end else begin
39947624dabb Some survival mode changes by burp
tiyuri@gmail.com
parents: 3717
diff changeset
   915
                Gear^.State:= Gear^.State or gstHHDeath;
39947624dabb Some survival mode changes by burp
tiyuri@gmail.com
parents: 3717
diff changeset
   916
                Gear^.doStep:= @doStepHedgehogDead;
39947624dabb Some survival mode changes by burp
tiyuri@gmail.com
parents: 3717
diff changeset
   917
                // Death message
39947624dabb Some survival mode changes by burp
tiyuri@gmail.com
parents: 3717
diff changeset
   918
                AddCaption(Format(GetEventString(eidDied), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage);
39947624dabb Some survival mode changes by burp
tiyuri@gmail.com
parents: 3717
diff changeset
   919
            end;
3310
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   920
            end
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   921
        else
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   922
            begin
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   923
            Gear^.State:= Gear^.State or gstHHGone;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   924
            Gear^.doStep:= @doStepHedgehogGone;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   925
            // Gone message
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   926
            AddCaption(Format(GetEventString(eidGone), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   927
            end
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   928
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   929
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   930
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   931
1033
622c5de38d72 Start implementing waves
unc0rr
parents: 1012
diff changeset
   932
if ((Gear^.State and gstWait) = 0) and
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   933
    (prevState <> Gear^.State) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   934
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   935
    Gear^.State:= gstWait;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   936
    Gear^.Timer:= 150
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   937
    end else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   938
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   939
    if Gear^.Timer = 0 then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   940
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   941
        Gear^.State:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   942
        Gear^.Active:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   943
        AddGearCI(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   944
        exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   945
        end else dec(Gear^.Timer)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   946
    end;
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   947
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   948
AllInactive:= false
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   949
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   950
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   951
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   952
procedure doStepHedgehog(Gear: PGear);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   953
begin
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   954
if (Gear^.Message and gmDestroy) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   955
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   956
    DeleteGear(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   957
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   958
    end;
1505
3a96e93572cb - Convert small damage tag to visual gears
unc0rr
parents: 1347
diff changeset
   959
2040
7c366fc3c099 - Fix for desyncs when player exits
unc0rr
parents: 2024
diff changeset
   960
if (Gear^.State and gstHHDriven) = 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   961
    doStepHedgehogFree(Gear)
2040
7c366fc3c099 - Fix for desyncs when player exits
unc0rr
parents: 2024
diff changeset
   962
else
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   963
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   964
    with PHedgehog(Gear^.Hedgehog)^ do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   965
        if Team^.hasGone then TeamGoneEffect(Team^);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   966
    doStepHedgehogDriven(Gear)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   967
    end;
2585
0899ce8ad77f Smaxx: only allow change direction when shift key is pressed
unc0rr
parents: 2502
diff changeset
   968
end;