hedgewars/uGearsHedgehog.pas
author nemo
Fri, 27 Jul 2012 23:16:30 -0400
changeset 7462 9cc5a2586978
parent 7459 8511a3f899d3
child 7503 deaeac102355
child 7597 1ef520fea21c
permissions -rw-r--r--
oops
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
     1
(*
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
     2
 * Hedgewars, a free turn based strategy game
6700
e04da46ee43c the most important commit of the year
koda
parents: 6581
diff changeset
     3
 * Copyright (c) 2004-2012 Andrey Korotaev <unC0Rr@gmail.com>
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
     4
 *
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
     8
 *
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    12
 * GNU General Public License for more details.
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    13
 *
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    14
 * You should have received a copy of the GNU General Public License
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    15
 * along with this program; if not, write to the Free Software
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    17
 *)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    18
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    19
{$INCLUDE "options.inc"}
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    20
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    21
unit uGearsHedgehog;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    22
interface
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    23
uses uTypes;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    24
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    25
procedure doStepHedgehog(Gear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    26
procedure AfterAttack; 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    27
procedure HedgehogStep(Gear: PGear); 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    28
procedure doStepHedgehogMoving(Gear: PGear); 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    29
procedure HedgehogChAngle(HHGear: PGear); 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    30
procedure PickUp(HH, Gear: PGear);
7389
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
    31
procedure AddPickup(HH: THedgehog; ammo: TAmmoType; cnt, X, Y: LongWord);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    32
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    33
implementation
6992
b8f3d8991e92 marked a couple of functions as inline
koda
parents: 6982
diff changeset
    34
uses uConsts, uVariables, uFloat, uAmmos, uSound, uCaptions, 
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    35
    uCommands, uLocale, uUtils, uVisualGears, uStats, uIO, uScript,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    36
    uGearsList, uGears, uCollisions, uRandom, uStore, uTeams, 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    37
    uGearsUtils;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    38
7028
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 7010
diff changeset
    39
var GHStepTicks: LongWord = 0;
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 7010
diff changeset
    40
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    41
// Shouldn't more of this ammo switching stuff be moved to uAmmos ?
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    42
function ChangeAmmo(HHGear: PGear): boolean;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    43
var slot, i: Longword;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    44
    ammoidx: LongInt;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    45
begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    46
ChangeAmmo:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    47
slot:= HHGear^.MsgParam;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    48
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    49
with HHGear^.Hedgehog^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    50
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    51
    HHGear^.Message:= HHGear^.Message and (not gmSlot);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    52
    ammoidx:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    53
    if ((HHGear^.State and (gstAttacking or gstAttacked)) <> 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    54
    or ((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0))
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    55
    or ((HHGear^.State and gstHHDriven) = 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    56
        exit;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    57
    ChangeAmmo:= true;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    58
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    59
    while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> CurAmmoType) do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    60
        inc(ammoidx);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    61
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    62
    if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    63
        OnUsedAmmo(HHGear^.Hedgehog^);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    64
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    65
    MultiShootAttacks:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    66
    HHGear^.Message:= HHGear^.Message and (not (gmLJump or gmHJump));
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    67
    
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    68
    if Ammoz[CurAmmoType].Slot = slot then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    69
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    70
        i:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    71
        repeat
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    72
        inc(ammoidx);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    73
        if (ammoidx > cMaxSlotAmmoIndex) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    74
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    75
            inc(i);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    76
            CurAmmoType:= amNothing;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    77
            ammoidx:= -1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    78
            //TryDo(i < 2, 'Engine bug: no ammo in current slot', true)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    79
            end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    80
        until (i = 1) or ((Ammo^[slot, ammoidx].Count > 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    81
        and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, ammoidx].AmmoType].SkipTurns))
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    82
        
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    83
        end 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    84
    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    85
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    86
        i:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    87
        // check whether there is ammo in slot
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    88
        while (i <= cMaxSlotAmmoIndex) and ((Ammo^[slot, i].Count = 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    89
        or (Team^.Clan^.TurnNumber <= Ammoz[Ammo^[slot, i].AmmoType].SkipTurns))
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    90
            do inc(i);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    91
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    92
        if i <= cMaxSlotAmmoIndex then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    93
            ammoidx:= i
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    94
        else ammoidx:= -1
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    95
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    96
        if ammoidx >= 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    97
            CurAmmoType:= Ammo^[slot, ammoidx].AmmoType;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    98
    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
    99
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   100
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   101
procedure HHSetWeapon(HHGear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   102
var t: LongInt;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   103
    weap: TAmmoType;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   104
    Hedgehog: PHedgehog;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   105
    s: boolean;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   106
begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   107
s:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   108
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   109
weap:= TAmmoType(HHGear^.MsgParam);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   110
Hedgehog:= HHGear^.Hedgehog;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   111
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   112
if Hedgehog^.Team^.Clan^.TurnNumber <= Ammoz[weap].SkipTurns then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   113
    exit; // weapon is not activated yet
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   114
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   115
HHGear^.MsgParam:= Ammoz[weap].Slot;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   116
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   117
t:= cMaxSlotAmmoIndex;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   118
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   119
HHGear^.Message:= HHGear^.Message and (not gmWeapon);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   120
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   121
with Hedgehog^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   122
    while (CurAmmoType <> weap) and (t >= 0) do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   123
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   124
        s:= ChangeAmmo(HHGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   125
        dec(t)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   126
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   127
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   128
if s then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   129
    ApplyAmmoChanges(HHGear^.Hedgehog^)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   130
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   131
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   132
procedure HHSetTimer(Gear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   133
var CurWeapon: PAmmo;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   134
    color: LongWord;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   135
begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   136
Gear^.Message:= Gear^.Message and (not gmTimer);
6924
57b66ee3bff3 Get rid of overloaded functions in uAmmo
unc0rr
parents: 6700
diff changeset
   137
CurWeapon:= GetCurAmmoEntry(Gear^.Hedgehog^);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   138
with Gear^.Hedgehog^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   139
    if ((Gear^.Message and gmPrecise) <> 0) and ((CurWeapon^.Propz and ammoprop_SetBounce) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   140
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   141
        color:= Gear^.Hedgehog^.Team^.Clan^.Color;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   142
        case Gear^.MsgParam of
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   143
            1: begin
7069
bcf9d8e64e92 pas2c stuff again
unc0rr
parents: 7067
diff changeset
   144
               AddCaption(FormatA(trmsg[sidBounce], trmsg[sidBounce1]), color, capgrpAmmostate);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   145
               CurWeapon^.Bounciness:= 350;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   146
               end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   147
            2: begin
7069
bcf9d8e64e92 pas2c stuff again
unc0rr
parents: 7067
diff changeset
   148
               AddCaption(FormatA(trmsg[sidBounce], trmsg[sidBounce2]), color, capgrpAmmostate);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   149
               CurWeapon^.Bounciness:= 700;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   150
               end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   151
            3: begin
7069
bcf9d8e64e92 pas2c stuff again
unc0rr
parents: 7067
diff changeset
   152
               AddCaption(FormatA(trmsg[sidBounce], trmsg[sidBounce3]), color, capgrpAmmostate);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   153
               CurWeapon^.Bounciness:= 1000;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   154
               end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   155
            4: begin
7069
bcf9d8e64e92 pas2c stuff again
unc0rr
parents: 7067
diff changeset
   156
               AddCaption(FormatA(trmsg[sidBounce], trmsg[sidBounce4]), color, capgrpAmmostate);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   157
               CurWeapon^.Bounciness:= 2000;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   158
               end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   159
            5: begin
7069
bcf9d8e64e92 pas2c stuff again
unc0rr
parents: 7067
diff changeset
   160
               AddCaption(FormatA(trmsg[sidBounce], trmsg[sidBounce5]), color, capgrpAmmostate);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   161
               CurWeapon^.Bounciness:= 4000;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   162
               end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   163
            end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   164
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   165
    else if (CurWeapon^.Propz and ammoprop_Timerable) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   166
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   167
        CurWeapon^.Timer:= 1000 * Gear^.MsgParam;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   168
        with CurrentTeam^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   169
            ApplyAmmoChanges(Hedgehogs[CurrHedgehog]);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   170
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   171
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   172
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   173
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   174
procedure Attack(Gear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   175
var xx, yy, newDx, newDy, lx, ly: hwFloat;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   176
    speech: PVisualGear;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   177
    newGear:  PGear;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   178
    CurWeapon: PAmmo;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   179
    altUse: boolean;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   180
    elastic: hwFloat;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   181
begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   182
newGear:= nil;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   183
bShowFinger:= false;
6924
57b66ee3bff3 Get rid of overloaded functions in uAmmo
unc0rr
parents: 6700
diff changeset
   184
CurWeapon:= GetCurAmmoEntry(Gear^.Hedgehog^);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   185
with Gear^,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   186
    Gear^.Hedgehog^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   187
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   188
        if ((State and gstHHDriven) <> 0) and ((State and (gstAttacked or gstHHChooseTarget)) = 0) and (((State and gstMoving) = 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   189
        or (Power > 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   190
        or (CurAmmoType = amTeleport)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   191
        or 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   192
        // Allow attacks while moving on ammo with AltAttack
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   193
        ((CurAmmoGear <> nil) and ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0))
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   194
        or ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AttackInMove) <> 0))
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   195
        and ((TargetPoint.X <> NoPointX) or ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) = 0)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   196
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   197
            State:= State or gstAttacking;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   198
            if Power = cMaxPower then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   199
                Message:= Message and (not gmAttack)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   200
            else if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   201
                Message:= Message and (not gmAttack)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   202
            else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   203
                begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   204
                if Power = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   205
                    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   206
                    AttackBar:= CurrentTeam^.AttackBar;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   207
                    PlaySound(sndThrowPowerUp)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   208
                    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   209
                inc(Power)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   210
                end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   211
        if ((Message and gmAttack) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   212
            exit;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   213
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   214
        if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   215
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   216
            StopSound(sndThrowPowerUp);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   217
            PlaySound(sndThrowRelease);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   218
            end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   219
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   220
        xx:= SignAs(AngleSin(Angle), dX);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   221
        yy:= -AngleCos(Angle);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   222
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   223
        lx:= X + int2hwfloat(round(GetLaunchX(CurAmmoType, hwSign(dX), Angle)));
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   224
        ly:= Y + int2hwfloat(round(GetLaunchY(CurAmmoType, Angle)));
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   225
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   226
        if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   227
            xx:= - xx;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   228
        if Ammoz[CurAmmoType].Ammo.AttackVoice <> sndNone then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   229
            AddVoice(Ammoz[CurAmmoType].Ammo.AttackVoice, CurrentTeam^.voicepack);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   230
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   231
// Initiating alt attack
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   232
        if  (CurAmmoGear <> nil)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   233
        and ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   234
        and ((Gear^.Message and gmLJump) <> 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   235
        and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   236
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   237
            newDx:= dX / _2; 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   238
            newDy:= dY / _2;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   239
            altUse:= true;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   240
            end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   241
        else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   242
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   243
            newDx:= xx*Power/cPowerDivisor;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   244
            newDy:= yy*Power/cPowerDivisor;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   245
            altUse:= false
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   246
            end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   247
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   248
             case CurAmmoType of
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   249
                      amGrenade: newGear:= AddGear(hwRound(lx), hwRound(ly), gtGrenade,         0, newDx, newDy, CurWeapon^.Timer);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   250
                      amMolotov: newGear:= AddGear(hwRound(lx), hwRound(ly), gtMolotov,      0, newDx, newDy, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   251
                  amClusterBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtClusterBomb,  0, newDx, newDy, CurWeapon^.Timer);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   252
                      amGasBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtGasBomb,      0, newDx, newDy, CurWeapon^.Timer);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   253
                      amBazooka: newGear:= AddGear(hwRound(lx), hwRound(ly), gtShell,        0, newDx, newDy, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   254
                     amSnowball: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSnowball,     0, newDx, newDy, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   255
                          amBee: newGear:= AddGear(hwRound(lx), hwRound(ly), gtBee,          0, newDx, newDy, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   256
                      amShotgun: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   257
                                 PlaySound(sndShotgunReload);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   258
                                 newGear:= AddGear(hwRound(lx), hwRound(ly), gtShotgunShot,  0, xx * _0_5, yy * _0_5, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   259
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   260
                   amPickHammer: newGear:= AddGear(hwRound(lx), hwRound(ly) + cHHRadius, gtPickHammer, 0, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   261
                         amSkip: ParseCommand('/skip', true);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   262
                         amRope: newGear:= AddGear(hwRound(lx), hwRound(ly), gtRope, 0, xx, yy, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   263
                         amMine: if altUse then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   264
                                     newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, newDx, newDy, 3000)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   265
                                 else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   266
                                     newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   267
                        amSMine: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine,    0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   268
                       amDEagle: newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   269
                      amSineGun: newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   270
                    amPortalGun: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   271
                                 newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   272
                                 // set selected color
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   273
                                 CurWeapon^.Pos);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   274
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   275
                  amSniperRifle: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   276
                                 PlaySound(sndSniperReload);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   277
                                 newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   278
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   279
                     amDynamite: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   280
                    amFirePunch: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtFirePunch, 0, xx, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   281
                         amWhip: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   282
                                 newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtWhip, 0, SignAs(_1, dX), - _0_8, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   283
                                 PlaySound(sndWhipCrack)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   284
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   285
                       amHammer: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   286
                                 newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtHammer, 0, SignAs(_1, dX), - _0_8, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   287
                                 PlaySound(sndWhack)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   288
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   289
                  amBaseballBat: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   290
                                 newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   291
                                 PlaySound(sndBaseballBat) // TODO: Only play if something is hit?
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   292
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   293
                    amParachute: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   294
                                 newGear:= AddGear(hwRound(lx), hwRound(ly), gtParachute, 0, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   295
                                 PlaySound(sndParachute)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   296
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   297
                    // we save CurWeapon^.Pos (in this case: cursor direction) by using it as (otherwise irrelevant) X value of the new gear.
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   298
                    amAirAttack: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 0, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   299
                   amMineStrike: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 1, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   300
                  amDrillStrike: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 3, _0, _0, CurWeapon^.Timer);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   301
                       amNapalm: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   302
                    amBlowTorch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   303
                       amGirder: newGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   304
                     amTeleport: newGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   305
                       amSwitch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   306
                       amMortar: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   307
                                 playSound(sndMortar);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   308
                                 newGear:= AddGear(hwRound(lx), hwRound(ly), gtMortar,  0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   309
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   310
                      amRCPlane: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   311
                                 newGear:= AddGear(hwRound(lx), hwRound(ly), gtRCPlane,  0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0);
7053
8c9dcaedc7a8 Make pas2c happier with uSound
unc0rr
parents: 7028
diff changeset
   312
                                 newGear^.SoundChannel:= LoopSound(sndRCPlane)
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   313
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   314
                     amKamikaze: newGear:= AddGear(hwRound(lx), hwRound(ly), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   315
                         amCake: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, xx, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   316
                    amSeduction: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSeduction, 0, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   317
                   amWatermelon: newGear:= AddGear(hwRound(lx), hwRound(ly), gtWatermelon,  0, newDx, newDy, CurWeapon^.Timer);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   318
                  amHellishBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtHellishBomb,    0, newDx, newDy, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   319
                        amDrill: newGear:= AddGear(hwRound(lx), hwRound(ly), gtDrill, 0, newDx, newDy, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   320
                      amBallgun: newGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun,  0, xx * _0_5, yy * _0_5, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   321
                      amJetpack: newGear:= AddGear(hwRound(lx), hwRound(ly), gtJetpack, 0, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   322
                        amBirdy: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   323
                             PlaySound(sndWhistle);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   324
                             newGear:= AddGear(hwRound(lx), hwRound(ly) - 32, gtBirdy, 0, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   325
                             end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   326
                   amLowGravity: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   327
                                 PlaySound(sndLowGravity);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   328
                                 cGravity:= cMaxWindSpeed;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   329
                                 cGravityf:= 0.00025
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   330
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   331
                  amExtraDamage: begin 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   332
                                 PlaySound(sndHellishImpact4);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   333
                                 cDamageModifier:= _1_5
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   334
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   335
                 amInvulnerable: Invulnerable:= true;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   336
                    amExtraTime: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   337
                                 PlaySound(sndSwitchHog);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   338
                                 TurnTimeLeft:= TurnTimeLeft + 30000
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   339
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   340
                   amLaserSight: cLaserSighting:= true;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   341
                     amVampiric: begin
7053
8c9dcaedc7a8 Make pas2c happier with uSound
unc0rr
parents: 7028
diff changeset
   342
                                 PlaySoundV(sndOw1, Team^.voicepack);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   343
                                 cVampiric:= true;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   344
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   345
                        amPiano: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   346
                                 // Tuck the hedgehog away until the piano attack is completed
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   347
                                 Unplaced:= true;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   348
                                 X:= _0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   349
                                 Y:= _0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   350
                                 newGear:= AddGear(TargetPoint.X, 0, gtPiano, 0, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   351
                                 PauseMusic
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   352
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   353
                 amFlamethrower: newGear:= AddGear(hwRound(X), hwRound(Y), gtFlamethrower,  0, xx * _0_5, yy * _0_5, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   354
                      amLandGun: newGear:= AddGear(hwRound(X), hwRound(Y), gtLandGun,  0, xx * _0_5, yy * _0_5, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   355
                  amResurrector: begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   356
                                 newGear:= AddGear(hwRound(lx), hwRound(ly), gtResurrector, 0, _0, _0, 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   357
                                 newGear^.SoundChannel := LoopSound(sndResurrector);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   358
                                 end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   359
                    amStructure: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtStructure, gstWait, SignAs(_0_02, dX), _0, 3000);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   360
                       amTardis: newGear:= AddGear(hwRound(X), hwRound(Y), gtTardis, 0, _0, _0, 5000);
7010
10a0a31804f3 Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents: 6992
diff changeset
   361
                       amIceGun: newGear:= AddGear(hwRound(X), hwRound(Y), gtIceGun, 0, _0, _0, 0);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   362
             end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   363
             
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   364
             case CurAmmoType of
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   365
                      amGrenade, amMolotov, 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   366
                  amClusterBomb, amGasBomb, 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   367
                      amBazooka, amSnowball, 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   368
                          amBee, amSMine,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   369
                       amMortar, amWatermelon,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   370
                  amHellishBomb, amDrill: FollowGear:= newGear;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   371
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   372
                      amShotgun, amPickHammer,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   373
                         amRope, amDEagle,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   374
                      amSineGun, amSniperRifle,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   375
                    amFirePunch, amWhip,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   376
                       amHammer, amBaseballBat,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   377
                    amParachute, amBlowTorch,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   378
                       amGirder, amTeleport,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   379
                       amSwitch, amRCPlane,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   380
                     amKamikaze, amCake,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   381
                    amSeduction, amBallgun,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   382
                      amJetpack, amBirdy,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   383
                 amFlamethrower, amLandGun,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   384
                  amResurrector, amStructure,
7010
10a0a31804f3 Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents: 6992
diff changeset
   385
                       amTardis, amPiano,
10a0a31804f3 Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents: 6992
diff changeset
   386
                       amIceGun: CurAmmoGear:= newGear;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   387
             end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   388
             
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   389
            if ((CurAmmoType = amMine) or (CurAmmoType = amSMine)) and (GameFlags and gfInfAttack <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   390
                newGear^.FlightTime:= GameTicks + 1000
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   391
            else if CurAmmoType = amDrill then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   392
                newGear^.FlightTime:= GameTicks + 250;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   393
        if Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   394
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   395
            newGear^.Target.X:= TargetPoint.X;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   396
            newGear^.Target.Y:= TargetPoint.Y
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   397
            end;
7272
71df899c4163 Second part of the change. Make collision check use the new mask bit.
nemo
parents: 7187
diff changeset
   398
        if newGear <> nil then newGear^.CollisionMask:= $FF7F;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   399
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   400
        // Clear FollowGear if using on a rope/parachute/saucer etc so focus stays with the hog's movement
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   401
        if altUse then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   402
            FollowGear:= nil;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   403
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   404
        if (newGear <> nil) and ((Ammoz[newGear^.AmmoType].Ammo.Propz and ammoprop_SetBounce) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   405
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   406
            elastic:=  int2hwfloat(CurWeapon^.Bounciness) / _1000;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   407
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   408
            if elastic < _1 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   409
                newGear^.Elasticity:= newGear^.Elasticity * elastic
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   410
            else if elastic > _1 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   411
                newGear^.Elasticity:= _1 - ((_1-newGear^.Elasticity) / elastic);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   412
(* Experimented with friction modifier. Didn't seem helpful 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   413
            fric:= int2hwfloat(CurWeapon^.Bounciness) / _250;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   414
            if fric < _1 then newGear^.Friction:= newGear^.Friction * fric
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   415
            else if fric > _1 then newGear^.Friction:= _1 - ((_1-newGear^.Friction) / fric)*)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   416
            end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   417
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   418
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   419
        uStats.AmmoUsed(CurAmmoType);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   420
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   421
        if not (SpeechText = '') then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   422
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   423
            speech:= AddVisualGear(0, 0, vgtSpeechBubble);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   424
            if speech <> nil then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   425
                begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   426
                speech^.Text:= SpeechText;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   427
                speech^.Hedgehog:= Gear^.Hedgehog;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   428
                speech^.FrameTicks:= SpeechType;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   429
                end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   430
            SpeechText:= ''
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   431
            end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   432
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   433
        Power:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   434
        if (CurAmmoGear <> nil)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   435
            and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) = 0){check for dropping ammo from rope} then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   436
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   437
            Message:= Message or gmAttack;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   438
            CurAmmoGear^.Message:= Message
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   439
            end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   440
        else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   441
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   442
            if not CurrentTeam^.ExtDriven
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   443
            and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then
7067
f98ec3aecf4e A solution to char vs string problem: mark single-letter strings with _S macro
unc0rr
parents: 7053
diff changeset
   444
                SendIPC(_S'a');
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   445
            AfterAttack;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   446
            end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   447
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   448
    else 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   449
        Message:= Message and (not gmAttack);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   450
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   451
    TargetPoint.X := NoPointX;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   452
    ScriptCall('onHogAttack');
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   453
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   454
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   455
procedure AfterAttack;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   456
var s: shortstring;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   457
    a: TAmmoType;
7459
8511a3f899d3 Allow AfterAttack to proceed even if the Hedgehog is dead. They could be resurrected after all.
nemo
parents: 7426
diff changeset
   458
    HHGear: PGear;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   459
begin
7459
8511a3f899d3 Allow AfterAttack to proceed even if the Hedgehog is dead. They could be resurrected after all.
nemo
parents: 7426
diff changeset
   460
with CurrentHedgehog^ do
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   461
    begin
7459
8511a3f899d3 Allow AfterAttack to proceed even if the Hedgehog is dead. They could be resurrected after all.
nemo
parents: 7426
diff changeset
   462
    HHGear:= Gear;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   463
    a:= CurAmmoType;
7459
8511a3f899d3 Allow AfterAttack to proceed even if the Hedgehog is dead. They could be resurrected after all.
nemo
parents: 7426
diff changeset
   464
    if HHGear <> nil then HHGear^.State:= HHGear^.State and (not gstAttacking);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   465
    if (Ammoz[a].Ammo.Propz and ammoprop_Effect) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   466
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   467
        Inc(MultiShootAttacks);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   468
        
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   469
        if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   470
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   471
            s:= inttostr(Ammoz[a].Ammo.NumPerTurn - MultiShootAttacks + 1);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   472
            AddCaption(format(trmsg[sidRemaining], s), cWhiteColor, capgrpAmmostate);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   473
            end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   474
        
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   475
        if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   476
        or ((GameFlags and gfMultiWeapon) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   477
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   478
            isInMultiShoot:= true
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   479
            end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   480
        else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   481
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   482
            OnUsedAmmo(CurrentHedgehog^);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   483
            if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and (((GameFlags and gfInfAttack) = 0) or PlacingHogs) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   484
                begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   485
                if TagTurnTimeLeft = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   486
                    TagTurnTimeLeft:= TurnTimeLeft;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   487
                TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 100;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   488
                end;
7459
8511a3f899d3 Allow AfterAttack to proceed even if the Hedgehog is dead. They could be resurrected after all.
nemo
parents: 7426
diff changeset
   489
            if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and (HHGear <> nil) then 
7462
nemo
parents: 7459
diff changeset
   490
                HHGear^.State:= HHGear^.State or gstAttacked;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   491
            if (Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   492
                ApplyAmmoChanges(CurrentHedgehog^)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   493
            end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   494
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   495
    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   496
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   497
        OnUsedAmmo(CurrentHedgehog^);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   498
        ApplyAmmoChanges(CurrentHedgehog^);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   499
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   500
    AttackBar:= 0
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   501
    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   502
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   503
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   504
////////////////////////////////////////////////////////////////////////////////
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   505
procedure doStepHedgehogDead(Gear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   506
const frametime = 200;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   507
      timertime = frametime * 6;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   508
begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   509
if Gear^.Hedgehog^.Unplaced then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   510
    exit;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   511
if Gear^.Timer > 1 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   512
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   513
    AllInactive:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   514
    dec(Gear^.Timer);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   515
    if (Gear^.Timer mod frametime) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   516
        inc(Gear^.Pos)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   517
    end 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   518
else if Gear^.Timer = 1 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   519
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   520
    Gear^.State:= Gear^.State or gstNoDamage;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   521
    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, CurrentHedgehog, EXPLAutoSound);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   522
    AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   523
    DeleteGear(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   524
    SetAllToActive
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   525
    end 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   526
else // Gear^.Timer = 0
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   527
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   528
    AllInactive:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   529
    Gear^.Z:= cCurrHHZ;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   530
    RemoveGearFromList(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   531
    InsertGearToList(Gear);
7053
8c9dcaedc7a8 Make pas2c happier with uSound
unc0rr
parents: 7028
diff changeset
   532
    PlaySoundV(sndByeBye, Gear^.Hedgehog^.Team^.voicepack);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   533
    Gear^.Pos:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   534
    Gear^.Timer:= timertime
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   535
    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   536
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   537
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   538
////////////////////////////////////////////////////////////////////////////////
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   539
procedure doStepHedgehogGone(Gear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   540
const frametime = 65;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   541
      timertime = frametime * 11;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   542
begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   543
if Gear^.Hedgehog^.Unplaced then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   544
    exit;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   545
if Gear^.Timer > 1 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   546
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   547
    AllInactive:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   548
    dec(Gear^.Timer);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   549
    if (Gear^.Timer mod frametime) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   550
        inc(Gear^.Pos)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   551
    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   552
else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   553
if Gear^.Timer = 1 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   554
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   555
    DeleteGear(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   556
    SetAllToActive
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   557
    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   558
else // Gear^.Timer = 0
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   559
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   560
    AllInactive:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   561
    Gear^.Z:= cCurrHHZ;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   562
    RemoveGearFromList(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   563
    InsertGearToList(Gear);
7053
8c9dcaedc7a8 Make pas2c happier with uSound
unc0rr
parents: 7028
diff changeset
   564
    PlaySoundV(sndByeBye, Gear^.Hedgehog^.Team^.voicepack);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   565
    PlaySound(sndWarp);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   566
    Gear^.Pos:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   567
    Gear^.Timer:= timertime
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   568
    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   569
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   570
7389
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   571
procedure AddPickup(HH: THedgehog; ammo: TAmmoType; cnt, X, Y: LongWord);
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   572
var s: shortstring;
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   573
    vga: PVisualGear;
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   574
begin
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   575
    PlaySound(sndShotgunReload);
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   576
    if cnt <> 0 then AddAmmo(HH, ammo, cnt)
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   577
    else AddAmmo(HH, ammo);
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   578
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   579
    if (not (HH.Team^.ExtDriven 
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   580
    or (HH.BotLevel > 0)))
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   581
    or (HH.Team^.Clan^.ClanIndex = LocalClan)
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   582
    or (GameType = gmtDemo)  then
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   583
        begin
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   584
        if cnt <> 0 then
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   585
            s:= trammo[Ammoz[ammo].NameId] + ' (+' + IntToStr(cnt) + ')'
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   586
        else
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   587
            s:= trammo[Ammoz[ammo].NameId] + ' (+' + IntToStr(Ammoz[ammo].NumberInCase) + ')';
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   588
        AddCaption(s, HH.Team^.Clan^.Color, capgrpAmmoinfo);
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   589
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   590
        // show ammo icon
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   591
        vga:= AddVisualGear(X, Y, vgtAmmo);
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   592
        if vga <> nil then
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   593
            vga^.Frame:= Longword(ammo);
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   594
        end;
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   595
end;
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   596
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   597
////////////////////////////////////////////////////////////////////////////////
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   598
procedure PickUp(HH, Gear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   599
var s: shortstring;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   600
    a: TAmmoType;
7406
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   601
    i: LongInt;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   602
    vga: PVisualGear;
7406
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   603
    ag, gi: PGear;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   604
begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   605
Gear^.Message:= gmDestroy;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   606
if (Gear^.Pos and posCaseExplode) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   607
    if (Gear^.Pos and posCasePoison) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   608
        doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound + EXPLPoisoned)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   609
    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   610
        doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   611
else if (Gear^.Pos and posCasePoison) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   612
    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound + EXPLPoisoned + EXPLNoDamage)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   613
else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   614
case Gear^.Pos of
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   615
       posCaseUtility,
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   616
       posCaseAmmo: begin
7389
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   617
                    if Gear^.AmmoType <> amNothing then 
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   618
                        begin
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   619
                        AddPickup(HH^.Hedgehog^, Gear^.AmmoType, Gear^.Power, hwRound(Gear^.X), hwRound(Gear^.Y));
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   620
                        end
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   621
                    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   622
                        begin
7389
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   623
// Add spawning here...
7409
fd91aa100ce0 Avoid desync playing back demos
nemo
parents: 7406
diff changeset
   624
                        AddRandomness(GameTicks);
7406
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   625
                        
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   626
                        gi := GearsList;
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   627
                        while gi <> nil do
7391
588eabb4b384 Apparently order of multiple getrandom in params is undefined. Also remove broken and pointless getrandom call.
nemo
parents: 7389
diff changeset
   628
                            begin
7406
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   629
                            if gi^.Kind = gtGenericFaller then
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   630
                                begin
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   631
                                gi^.Active:= true;
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   632
                                gi^.X:= int2hwFloat(GetRandom(rightX-leftX)+leftX);
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   633
                                gi^.Y:= int2hwFloat(GetRandom(LAND_HEIGHT-topY)+topY);
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   634
                                gi^.dX:= _90-(GetRandomf*_360);
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   635
                                gi^.dY:= _90-(GetRandomf*_360)
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   636
                                end;
1fe2c821f9bf Try avoiding spamming the log by retaining the gears. untested.
nemo
parents: 7391
diff changeset
   637
                            gi := gi^.NextGear
7391
588eabb4b384 Apparently order of multiple getrandom in params is undefined. Also remove broken and pointless getrandom call.
nemo
parents: 7389
diff changeset
   638
                            end;
7389
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   639
                        ag:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAddAmmo, gstInvisible, _0, _0, GetRandom(200)+100);
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   640
                        ag^.Pos:= Gear^.Pos;
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   641
                        ag^.Power:= Gear^.Power
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   642
                        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   643
                    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   644
     posCaseHealth: begin
7389
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
   645
                    PlaySound(sndShotgunReload);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   646
                    inc(HH^.Health, Gear^.Health);
7010
10a0a31804f3 Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents: 6992
diff changeset
   647
                    HH^.Hedgehog^.Effects[hePoisoned] := 0;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   648
                    str(Gear^.Health, s);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   649
                    s:= '+' + s;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   650
                    AddCaption(s, HH^.Hedgehog^.Team^.Clan^.Color, capgrpAmmoinfo);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   651
                    RenderHealth(HH^.Hedgehog^);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   652
                    RecountTeamHealth(HH^.Hedgehog^.Team);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   653
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   654
                    i:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   655
                    while i < Gear^.Health do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   656
                        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   657
                        vga:= AddVisualGear(hwRound(HH^.X), hwRound(HH^.Y), vgtStraightShot);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   658
                        if vga <> nil then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   659
                            with vga^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   660
                                begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   661
                                Tint:= $00FF00FF;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   662
                                State:= ord(sprHealth)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   663
                                end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   664
                        inc(i, 5);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   665
                        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   666
                    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   667
     end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   668
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   669
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   670
procedure HedgehogStep(Gear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   671
var PrevdX: LongInt;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   672
    CurWeapon: PAmmo;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   673
begin
6924
57b66ee3bff3 Get rid of overloaded functions in uAmmo
unc0rr
parents: 6700
diff changeset
   674
CurWeapon:= GetCurAmmoEntry(Gear^.Hedgehog^);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   675
if ((Gear^.State and (gstAttacking or gstMoving)) = 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   676
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   677
    if isCursorVisible then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   678
        with Gear^.Hedgehog^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   679
            with CurWeapon^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   680
                begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   681
                if (Gear^.Message and gmLeft  ) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   682
                    Pos:= (Pos - 1 + Ammoz[AmmoType].PosCount) mod Ammoz[AmmoType].PosCount
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   683
                else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   684
                    if (Gear^.Message and gmRight ) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   685
                        Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   686
    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   687
        exit;
7028
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 7010
diff changeset
   688
    GHStepTicks:= 200;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   689
    exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   690
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   691
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   692
    if ((Gear^.Message and gmAnimate) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   693
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   694
        Gear^.Message:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   695
        Gear^.State:= Gear^.State or gstAnimation;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   696
        Gear^.Tag:= Gear^.MsgParam;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   697
        Gear^.Timer:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   698
        Gear^.Pos:= 0
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   699
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   700
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   701
    if ((Gear^.Message and gmLJump ) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   702
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   703
        Gear^.Message:= Gear^.Message and (not gmLJump);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   704
        DeleteCI(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   705
        if TestCollisionYwithGear(Gear, -1) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   706
            if not TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   707
                Gear^.Y:= Gear^.Y - _2
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   708
            else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   709
                if not TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   710
                    Gear^.Y:= Gear^.Y - _1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   711
            if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX))
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   712
            or   (TestCollisionYwithGear(Gear, -1) <> 0)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   713
                begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   714
                Gear^.dY:= -_0_15;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   715
                if not cArtillery then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   716
                    Gear^.dX:= SignAs(_0_15, Gear^.dX);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   717
                Gear^.State:= Gear^.State or gstMoving or gstHHJumping;
7053
8c9dcaedc7a8 Make pas2c happier with uSound
unc0rr
parents: 7028
diff changeset
   718
                PlaySoundV(sndJump1, Gear^.Hedgehog^.Team^.voicepack);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   719
        exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   720
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   721
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   722
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   723
    if ((Gear^.Message and gmHJump ) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   724
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   725
        DeleteCI(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   726
        Gear^.Message:= Gear^.Message and (not gmHJump);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   727
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   728
        Gear^.dY:= -_0_2;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   729
        SetLittle(Gear^.dX);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   730
        Gear^.State:= Gear^.State or gstMoving or gstHHJumping;
7053
8c9dcaedc7a8 Make pas2c happier with uSound
unc0rr
parents: 7028
diff changeset
   731
        PlaySoundV(sndJump3, Gear^.Hedgehog^.Team^.voicepack);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   732
        exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   733
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   734
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   735
    PrevdX:= hwSign(Gear^.dX);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   736
    if (Gear^.Message and gmLeft  )<>0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   737
        Gear^.dX:= -cLittle else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   738
    if (Gear^.Message and gmRight )<>0 then
7187
aff30d80bd7b - Allow camera movement while current hedgehog is falling
unc0rr
parents: 7164
diff changeset
   739
        Gear^.dX:=  cLittle 
aff30d80bd7b - Allow camera movement while current hedgehog is falling
unc0rr
parents: 7164
diff changeset
   740
        else exit;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   741
7187
aff30d80bd7b - Allow camera movement while current hedgehog is falling
unc0rr
parents: 7164
diff changeset
   742
    StepSoundTimer:= cHHStepTicks;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   743
   
7028
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 7010
diff changeset
   744
    GHStepTicks:= cHHStepTicks;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   745
    if PrevdX <> hwSign(Gear^.dX) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   746
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   747
        FollowGear:= Gear;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   748
        exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   749
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   750
    DeleteCI(Gear); // must be after exit!! (see previous line)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   751
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   752
    Gear^.Hedgehog^.visStepPos:= (Gear^.Hedgehog^.visStepPos + 1) and 7;
7164
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   753
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   754
    if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   755
        begin
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   756
        Gear^.Y:= Gear^.Y - _1;
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   757
    if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   758
        begin
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   759
        Gear^.Y:= Gear^.Y - _1;
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   760
    if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   761
        begin
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   762
        Gear^.Y:= Gear^.Y - _1;
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   763
    if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   764
        begin
7164
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   765
        Gear^.Y:= Gear^.Y - _1;
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   766
    if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   767
        begin
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   768
        Gear^.Y:= Gear^.Y - _1;
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   769
    if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   770
        begin
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   771
        Gear^.Y:= Gear^.Y - _1;
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   772
        if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   773
            Gear^.Y:= Gear^.Y + _6
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   774
        end else Gear^.Y:= Gear^.Y + _5 else
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   775
        end else Gear^.Y:= Gear^.Y + _4 else
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   776
        end else Gear^.Y:= Gear^.Y + _3 else
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   777
        end else Gear^.Y:= Gear^.Y + _2 else
fad64b97947e Some brainfucking code which greatly reduces number of TestCollision* calls in hedgehog walk routine. Especially helpful to AI optimization. Also fixes some edge cases.
unc0rr
parents: 7069
diff changeset
   778
        end else Gear^.Y:= Gear^.Y + _1
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   779
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   780
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   781
    if (not cArtillery) and ((Gear^.Message and gmPrecise) = 0) and (not TestCollisionXwithGear(Gear, hwSign(Gear^.dX))) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   782
        Gear^.X:= Gear^.X + SignAs(_1, Gear^.dX);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   783
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   784
   SetAllHHToActive;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   785
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   786
    if TestCollisionYwithGear(Gear, 1) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   787
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   788
        Gear^.Y:= Gear^.Y + _1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   789
    if TestCollisionYwithGear(Gear, 1) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   790
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   791
        Gear^.Y:= Gear^.Y + _1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   792
    if TestCollisionYwithGear(Gear, 1) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   793
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   794
        Gear^.Y:= Gear^.Y + _1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   795
    if TestCollisionYwithGear(Gear, 1) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   796
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   797
        Gear^.Y:= Gear^.Y + _1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   798
    if TestCollisionYwithGear(Gear, 1) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   799
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   800
        Gear^.Y:= Gear^.Y + _1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   801
    if TestCollisionYwithGear(Gear, 1) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   802
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   803
        Gear^.Y:= Gear^.Y + _1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   804
    if TestCollisionYwithGear(Gear, 1) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   805
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   806
        Gear^.Y:= Gear^.Y - _6;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   807
        Gear^.dY:= _0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   808
        Gear^.State:= Gear^.State or gstMoving;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   809
        exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   810
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   811
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   812
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   813
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   814
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   815
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   816
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   817
    AddGearCI(Gear)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   818
    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   819
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   820
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   821
procedure HedgehogChAngle(HHGear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   822
var da: LongWord;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   823
begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   824
with HHGear^.Hedgehog^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   825
    if ((CurAmmoType = amRope) and ((HHGear^.State and (gstMoving or gstHHJumping)) = gstMoving))
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   826
    or ((CurAmmoType = amPortalGun) and ((HHGear^.State and gstMoving) <> 0)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   827
        da:= 2
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   828
    else da:= 1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   829
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   830
if (((HHGear^.Message and gmPrecise) = 0) or ((GameTicks mod 5) = 1)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   831
    if ((HHGear^.Message and gmUp) <> 0) and (HHGear^.Angle >= CurMinAngle + da) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   832
        dec(HHGear^.Angle, da)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   833
    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   834
        if ((HHGear^.Message and gmDown) <> 0) and (HHGear^.Angle + da <= CurMaxAngle) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   835
            inc(HHGear^.Angle, da)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   836
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   837
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   838
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   839
////////////////////////////////////////////////////////////////////////////////
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   840
procedure doStepHedgehogMoving(Gear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   841
var isFalling, isUnderwater: boolean;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   842
    land: Word;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   843
begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   844
land:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   845
isUnderwater:= cWaterLine < hwRound(Gear^.Y) + Gear^.Radius;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   846
if Gear^.dX.QWordValue > 8160437862 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   847
    Gear^.dX.QWordValue:= 8160437862;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   848
if Gear^.dY.QWordValue > 8160437862 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   849
    Gear^.dY.QWordValue:= 8160437862;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   850
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   851
if Gear^.Hedgehog^.Unplaced then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   852
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   853
    Gear^.dY:= _0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   854
    Gear^.dX:= _0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   855
    Gear^.State:= Gear^.State and (not gstMoving);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   856
    exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   857
    end;
7426
55b49cc1f33a Changes for the benefit of pas2c. Use downto in for loops to avoid repeated calls of Random/GetRandom. Wrap nots.
nemo
parents: 7409
diff changeset
   858
isFalling:= (Gear^.dY.isNegative) or (not TestCollisionYKick(Gear, 1));
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   859
if isFalling then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   860
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   861
    if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   862
        Gear^.dY:= _0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   863
    Gear^.State:= Gear^.State or gstMoving;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   864
    if (CurrentHedgehog^.Gear = Gear)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   865
        and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   866
        begin
7187
aff30d80bd7b - Allow camera movement while current hedgehog is falling
unc0rr
parents: 7164
diff changeset
   867
        // TODO: why so aggressive at setting FollowGear when falling?
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   868
        FollowGear:= Gear;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   869
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   870
    if isUnderwater then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   871
       Gear^.dY:= Gear^.dY + cGravity / _2
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   872
    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   873
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   874
        Gear^.dY:= Gear^.dY + cGravity;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   875
// this set of circumstances could be less complex if jumping was more clearly identified
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   876
        if ((GameFlags and gfMoreWind) <> 0) and (((Gear^.Damage <> 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   877
        or ((CurAmmoGear <> nil) and ((CurAmmoGear^.AmmoType = amJetpack) or (CurAmmoGear^.AmmoType = amBirdy)))
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   878
        or ((Gear^.dY.QWordValue + Gear^.dX.QWordValue) > _0_55.QWordValue))) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   879
            Gear^.dX := Gear^.dX + cWindSpeed / Gear^.Density
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   880
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   881
    end 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   882
else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   883
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   884
    land:= TestCollisionYwithGear(Gear, 1);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   885
    if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_55.QWordValue) and ((land and lfIce) = 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   886
    and ((Gear^.State and gstHHJumping) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   887
        SetLittle(Gear^.dX);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   888
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   889
    if not Gear^.dY.isNegative then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   890
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   891
        CheckHHDamage(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   892
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   893
        if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   894
        and (Gear^.dX.QWordValue < _0_02.QWordValue) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   895
            Gear^.dX.isNegative:= not Gear^.dX.isNegative; // landing after high jump
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   896
        Gear^.State:= Gear^.State and (not (gstHHJumping or gstHHHJump));
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   897
        Gear^.dY:= _0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   898
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   899
    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   900
        Gear^.dY:= Gear^.dY + cGravity;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   901
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   902
    if ((Gear^.State and gstMoving) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   903
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   904
        if land and lfIce <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   905
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   906
            Gear^.dX:= Gear^.dX * (_1 - (_1 - Gear^.Friction) / _2)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   907
            end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   908
        else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   909
            Gear^.dX:= Gear^.dX * Gear^.Friction;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   910
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   911
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   912
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   913
if (Gear^.State <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   914
    DeleteCI(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   915
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   916
if isUnderwater then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   917
   begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   918
   Gear^.dY:= Gear^.dY * _0_999;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   919
   Gear^.dX:= Gear^.dX * _0_999;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   920
   end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   921
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   922
if (Gear^.State and gstMoving) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   923
    if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   924
        if not isFalling then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   925
            if hwAbs(Gear^.dX) > _0_01 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   926
                if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -1, hwSign(Gear^.dX)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   927
                    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   928
                    Gear^.X:= Gear^.X + Gear^.dX;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   929
                    Gear^.dX:= Gear^.dX * _0_96;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   930
                    Gear^.Y:= Gear^.Y - _1
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   931
                    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   932
                else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   933
                    if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -2, hwSign(Gear^.dX)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   934
                        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   935
                        Gear^.X:= Gear^.X + Gear^.dX;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   936
                        Gear^.dX:= Gear^.dX * _0_93;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   937
                        Gear^.Y:= Gear^.Y - _2
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   938
                        end 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   939
                    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   940
                        if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -3, hwSign(Gear^.dX)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   941
                        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   942
                        Gear^.X:= Gear^.X + Gear^.dX;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   943
                        Gear^.dX:= Gear^.dX * _0_9 ;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   944
                        Gear^.Y:= Gear^.Y - _3
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   945
                        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   946
                    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   947
                        if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -4, hwSign(Gear^.dX)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   948
                            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   949
                            Gear^.X:= Gear^.X + Gear^.dX;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   950
                            Gear^.dX:= Gear^.dX * _0_87;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   951
                            Gear^.Y:= Gear^.Y - _4
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   952
                            end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   953
                    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   954
                        if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -5, hwSign(Gear^.dX)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   955
                            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   956
                            Gear^.X:= Gear^.X + Gear^.dX;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   957
                            Gear^.dX:= Gear^.dX * _0_84;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   958
                            Gear^.Y:= Gear^.Y - _5
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   959
                            end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   960
                    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   961
                        if hwAbs(Gear^.dX) > _0_02 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   962
                            Gear^.dX:= -Gear^.Elasticity * Gear^.dX
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   963
                        else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   964
                            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   965
                            Gear^.State:= Gear^.State and (not gstMoving);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   966
                            while TestCollisionYWithGear(Gear,1) = 0 do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   967
                                Gear^.Y:= Gear^.Y+_1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   968
                            SetLittle(Gear^.dX)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   969
                            end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   970
            else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   971
                begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   972
                Gear^.State:= Gear^.State and (not gstMoving);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   973
                while TestCollisionYWithGear(Gear,1) = 0 do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   974
                    Gear^.Y:= Gear^.Y+_1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   975
                SetLittle(Gear^.dX)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   976
                end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   977
        else if (hwAbs(Gear^.dX) > cLittle)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   978
        and ((Gear^.State and gstHHJumping) = 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   979
            Gear^.dX:= -Gear^.Elasticity * Gear^.dX
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   980
        else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   981
            SetLittle(Gear^.dX);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   982
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   983
if (not isFalling)
7362
53bcfc714cb3 Fix rare condition when hog's gear stucks in an infinite loop which adds 1 to its Y coordinate not checking for drowning
unc0rr
parents: 7339
diff changeset
   984
  and (hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   985
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   986
    Gear^.State:= Gear^.State and (not gstWinner);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   987
    Gear^.State:= Gear^.State and (not gstMoving);
7426
55b49cc1f33a Changes for the benefit of pas2c. Use downto in for loops to avoid repeated calls of Random/GetRandom. Wrap nots.
nemo
parents: 7409
diff changeset
   988
    while (TestCollisionYWithGear(Gear,1) = 0) and (not CheckGearDrowning(Gear)) do
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   989
        Gear^.Y:= Gear^.Y+_1;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   990
    SetLittle(Gear^.dX);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   991
    Gear^.dY:= _0
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   992
    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   993
else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   994
    Gear^.State:= Gear^.State or gstMoving;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   995
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   996
if (Gear^.State and gstMoving) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   997
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   998
    Gear^.State:= Gear^.State and (not gstAnimation);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
   999
// ARTILLERY but not being moved by explosions
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1000
    Gear^.X:= Gear^.X + Gear^.dX;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1001
    Gear^.Y:= Gear^.Y + Gear^.dY;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1002
    if (not Gear^.dY.isNegative) and (not TestCollisionYKick(Gear, 1)) 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1003
    and TestCollisionYwithXYShift(Gear, 0, 1, 1) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1004
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1005
        CheckHHDamage(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1006
        Gear^.dY:= _0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1007
        Gear^.Y:= Gear^.Y + _1
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1008
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1009
    CheckGearDrowning(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1010
    // hide target cursor if current hog is drowning
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1011
    if (Gear^.State and gstDrowning) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1012
        if (CurrentHedgehog^.Gear = Gear) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1013
            isCursorVisible:= false
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1014
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1015
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1016
if (hwAbs(Gear^.dY) > _0) and (Gear^.FlightTime > 0) and ((GameFlags and gfLowGravity) = 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1017
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1018
    inc(Gear^.FlightTime);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1019
    if Gear^.FlightTime = 3000 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1020
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1021
        AddCaption(GetEventString(eidHomerun), cWhiteColor, capgrpMessage);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1022
        PlaySound(sndHomerun)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1023
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1024
    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1025
else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1026
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1027
    uStats.hedgehogFlight(Gear, Gear^.FlightTime);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1028
    Gear^.FlightTime:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1029
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1030
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1031
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1032
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1033
procedure doStepHedgehogDriven(HHGear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1034
var t: PGear;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1035
    wasJumping: boolean;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1036
    Hedgehog: PHedgehog;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1037
begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1038
Hedgehog:= HHGear^.Hedgehog;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1039
if isInMultiShoot then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1040
    HHGear^.Message:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1041
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1042
if ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_Utility) <> 0) and isInMultiShoot then 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1043
    AllInactive:= true
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1044
else if not isInMultiShoot then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1045
    AllInactive:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1046
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1047
if (TurnTimeLeft = 0) or (HHGear^.Damage > 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1048
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1049
    if TagTurnTimeLeft = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1050
        TagTurnTimeLeft:= TurnTimeLeft;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1051
    TurnTimeLeft:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1052
    isCursorVisible:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1053
    HHGear^.State:= HHGear^.State and (not (gstHHDriven or gstAnimation or gstAttacking));
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1054
    AttackBar:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1055
    if HHGear^.Damage > 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1056
        HHGear^.State:= HHGear^.State and (not (gstHHJumping or gstHHHJump));
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1057
    exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1058
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1059
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1060
if (HHGear^.State and gstAnimation) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1061
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1062
    HHGear^.Message:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1063
    if (HHGear^.Pos = Wavez[TWave(HHGear^.Tag)].VoiceDelay) and (HHGear^.Timer = 0) then
7053
8c9dcaedc7a8 Make pas2c happier with uSound
unc0rr
parents: 7028
diff changeset
  1064
        PlaySoundV(Wavez[TWave(HHGear^.Tag)].Voice, Hedgehog^.Team^.voicepack);
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1065
    inc(HHGear^.Timer);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1066
    if HHGear^.Timer = Wavez[TWave(HHGear^.Tag)].Interval then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1067
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1068
        HHGear^.Timer:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1069
        inc(HHGear^.Pos);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1070
        if HHGear^.Pos = Wavez[TWave(HHGear^.Tag)].FramesCount then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1071
            HHGear^.State:= HHGear^.State and (not gstAnimation)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1072
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1073
    exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1074
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1075
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1076
if ((HHGear^.State and gstMoving) <> 0)
7028
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 7010
diff changeset
  1077
or (GHStepTicks = cHHStepTicks)
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1078
or (CurAmmoGear <> nil) then // we are moving
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1079
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1080
    with Hedgehog^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1081
        if (CurAmmoGear = nil)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1082
        and (HHGear^.dY > _0_39)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1083
        and (CurAmmoType = amParachute) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1084
            HHGear^.Message:= HHGear^.Message or gmAttack;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1085
    // check for case with ammo
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1086
    t:= CheckGearNear(HHGear, gtCase, 36, 36);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1087
    if t <> nil then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1088
        PickUp(HHGear, t)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1089
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1090
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1091
if (CurAmmoGear = nil) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1092
    if (((HHGear^.Message and gmAttack) <> 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1093
    or ((HHGear^.State and gstAttacking) <> 0)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1094
        Attack(HHGear) // should be before others to avoid desync with '/put' msg and changing weapon msgs
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1095
    else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1096
else 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1097
    with Hedgehog^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1098
        if ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1099
        and ((HHGear^.Message and gmLJump) <> 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1100
        and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1101
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1102
            Attack(HHGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1103
            HHGear^.Message:= HHGear^.Message and (not gmLJump)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1104
            end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1105
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1106
if (CurAmmoGear = nil)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1107
or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1108
or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1109
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1110
    if ((HHGear^.Message and gmSlot) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1111
        if ChangeAmmo(HHGear) then ApplyAmmoChanges(Hedgehog^);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1112
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1113
    if ((HHGear^.Message and gmWeapon) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1114
        HHSetWeapon(HHGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1115
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1116
    if ((HHGear^.Message and gmTimer) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1117
        HHSetTimer(HHGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1118
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1119
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1120
if CurAmmoGear <> nil then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1121
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1122
    CurAmmoGear^.Message:= HHGear^.Message;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1123
    exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1124
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1125
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1126
if not isInMultiShoot then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1127
    HedgehogChAngle(HHGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1128
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1129
if (HHGear^.State and gstMoving) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1130
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1131
    wasJumping:= ((HHGear^.State and gstHHJumping) <> 0);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1132
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1133
    if ((HHGear^.Message and gmHJump) <> 0) and wasJumping and ((HHGear^.State and gstHHHJump) = 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1134
        if (not (hwAbs(HHGear^.dX) > cLittle)) and (HHGear^.dY < -_0_02) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1135
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1136
            HHGear^.State:= HHGear^.State or gstHHHJump;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1137
            HHGear^.dY:= -_0_25;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1138
            if not cArtillery then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1139
                HHGear^.dX:= -SignAs(_0_02, HHGear^.dX);
7053
8c9dcaedc7a8 Make pas2c happier with uSound
unc0rr
parents: 7028
diff changeset
  1140
            PlaySoundV(sndJump2, Hedgehog^.Team^.voicepack)
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1141
            end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1142
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1143
    HHGear^.Message:= HHGear^.Message and (not (gmLJump or gmHJump));
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1144
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1145
    if (not cArtillery) and wasJumping and TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1146
        SetLittle(HHGear^.dX);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1147
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1148
    if Hedgehog^.Gear <> nil then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1149
        doStepHedgehogMoving(HHGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1150
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1151
    if ((HHGear^.State and (gstMoving or gstDrowning)) = 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1152
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1153
        AddGearCI(HHGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1154
        if wasJumping then
7028
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 7010
diff changeset
  1155
            GHStepTicks:= 410
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1156
        else
7028
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 7010
diff changeset
  1157
            GHStepTicks:= 95
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1158
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1159
    exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1160
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1161
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1162
    if not isInMultiShoot and (Hedgehog^.Gear <> nil) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1163
        begin
7028
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 7010
diff changeset
  1164
        if GHStepTicks > 0 then
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 7010
diff changeset
  1165
            dec(GHStepTicks);
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 7010
diff changeset
  1166
        if (GHStepTicks = 0) then
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1167
            HedgehogStep(HHGear)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1168
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1169
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1170
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1171
////////////////////////////////////////////////////////////////////////////////
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1172
procedure doStepHedgehogFree(Gear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1173
var prevState: Longword;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1174
begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1175
prevState:= Gear^.State;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1176
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1177
doStepHedgehogMoving(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1178
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1179
if (Gear^.State and (gstMoving or gstDrowning)) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1180
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1181
    if Gear^.Damage > 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1182
        CalcRotationDirAngle(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1183
    AllInactive:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1184
    exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1185
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1186
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1187
if (Gear^.Health = 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1188
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1189
    if PrvInactive or ((GameFlags and gfInfAttack) <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1190
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1191
        Gear^.Timer:= 0;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1192
        FollowGear:= Gear;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1193
        PrvInactive:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1194
        AllInactive:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1195
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1196
        if (Gear^.State and gstHHGone) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1197
            begin
7010
10a0a31804f3 Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents: 6992
diff changeset
  1198
            Gear^.Hedgehog^.Effects[hePoisoned] := 0;
10a0a31804f3 Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents: 6992
diff changeset
  1199
            if Gear^.Hedgehog^.Effects[heResurrectable] <> 0 then
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1200
                begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1201
                ResurrectHedgehog(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1202
                end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1203
            else 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1204
                begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1205
                Gear^.State:= (Gear^.State or gstHHDeath) and (not gstAnimation);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1206
                Gear^.doStep:= @doStepHedgehogDead;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1207
                // Death message
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1208
                AddCaption(Format(GetEventString(eidDied), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1209
                end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1210
            end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1211
        else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1212
            begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1213
            Gear^.State:= Gear^.State and (not gstAnimation);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1214
            Gear^.doStep:= @doStepHedgehogGone;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1215
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1216
            // Gone message
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1217
            AddCaption(Format(GetEventString(eidGone), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1218
            end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1219
        end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1220
    exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1221
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1222
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1223
if ((Gear^.State and gstWait) = 0) and
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1224
    (prevState <> Gear^.State) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1225
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1226
    Gear^.State:= Gear^.State or gstWait;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1227
    Gear^.Timer:= 150
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1228
    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1229
else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1230
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1231
    if Gear^.Timer = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1232
        begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1233
        Gear^.State:= Gear^.State and (not (gstWait or gstLoser or gstWinner or gstAttacked or gstNotKickable or gstHHChooseTarget));
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1234
        Gear^.Active:= false;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1235
        AddGearCI(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1236
        exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1237
        end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1238
    else dec(Gear^.Timer)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1239
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1240
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1241
AllInactive:= false
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1242
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1243
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1244
////////////////////////////////////////////////////////////////////////////////
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1245
procedure doStepHedgehog(Gear: PGear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1246
(*
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1247
var x,y,tx,ty: LongInt;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1248
    tdX, tdY, slope: hwFloat; 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1249
    land: Word; *)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1250
var slope: hwFloat; 
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1251
begin
7389
15c3fb4882df Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents: 7375
diff changeset
  1252
CheckSum:= CheckSum xor Gear^.Hedgehog^.BotLevel;
6581
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1253
if (Gear^.Message and gmDestroy) <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1254
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1255
    DeleteGear(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1256
    exit
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1257
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1258
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1259
if (Gear^.State and gstHHDriven) = 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1260
    doStepHedgehogFree(Gear)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1261
else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1262
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1263
    with Gear^.Hedgehog^ do
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1264
        if Team^.hasGone then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1265
            TeamGoneEffect(Team^)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1266
        else
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1267
            doStepHedgehogDriven(Gear)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1268
    end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1269
if (Gear^.Message and (gmAllStoppable or gmLJump or gmHJump) = 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1270
and (Gear^.State and (gstHHJumping or gstHHHJump or gstAttacking) = 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1271
and (not Gear^.dY.isNegative) and (GameTicks mod (100*LongWOrd(hwRound(cMaxWindSpeed*2/cGravity))) = 0)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1272
and (TestCollisionYwithGear(Gear, 1) and lfIce <> 0) then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1273
    begin
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1274
    slope:= CalcSlopeBelowGear(Gear);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1275
    Gear^.dX:=Gear^.dX+slope*_0_07;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1276
    if slope.QWordValue <> 0 then
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1277
        Gear^.State:= Gear^.State or gstMoving;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1278
(*
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1279
    x:= hwRound(Gear^.X);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1280
    y:= hwRound(Gear^.Y);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1281
    AddVisualGear(x, y, vgtSmokeTrace);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1282
    AddVisualGear(x - hwRound(_5*slope), y + hwRound(_5*slope), vgtSmokeTrace);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1283
    AddVisualGear(x + hwRound(_5*slope), y - hwRound(_5*slope), vgtSmokeTrace);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1284
    AddVisualGear(x - hwRound(_20 * slope), y + hwRound(_20 * slope), vgtSmokeTrace);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1285
    AddVisualGear(x + hwRound(_20 * slope), y - hwRound(_20 * slope), vgtSmokeTrace);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1286
    AddVisualGear(x - hwRound(_30 * slope), y + hwRound(_30 * slope), vgtSmokeTrace);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1287
    AddVisualGear(x + hwRound(_30 * slope), y - hwRound(_30 * slope), vgtSmokeTrace);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1288
    AddVisualGear(x - hwRound(_40 * slope), y + hwRound(_40 * slope), vgtSmokeTrace);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1289
    AddVisualGear(x + hwRound(_40 * slope), y - hwRound(_40 * slope), vgtSmokeTrace);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1290
    AddVisualGear(x - hwRound(_50 * slope), y + hwRound(_50 * slope), vgtSmokeTrace);
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1291
    AddVisualGear(x + hwRound(_50 * slope), y - hwRound(_50 * slope), vgtSmokeTrace); *)
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1292
    end
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1293
end;
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1294
e510d1245bd7 fix line endings
nemo
parents: 6580
diff changeset
  1295
end.