hedgewars/HHHandlers.inc
author Xeli
Mon, 28 Nov 2011 17:38:50 +0100
changeset 6465 1968718ea11c
parent 6453 11c578d30bd3
child 6468 da1e7fe7cff7
permissions -rw-r--r--
typo... >,<
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     1
(*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 1035
diff changeset
     2
 * Hedgewars, a free turn based strategy game
4976
088d40d8aba2 Happy 2011 :)
koda
parents: 4881
diff changeset
     3
 * Copyright (c) 2004-2011 Andrey Korotaev <unC0Rr@gmail.com>
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     4
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     8
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
    12
 * GNU General Public License for more details.
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    13
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
    14
 * You should have received a copy of the GNU General Public License
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
    15
 * along with this program; if not, write to the Free Software
57c2ef19f719 Relicense to GPL
unc0rr
parents: 149
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    17
 *)
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    18
37
2b7f2a43b999 - Properly get seed in net game
unc0rr
parents: 32
diff changeset
    19
////////////////////////////////////////////////////////////////////////////////
3682
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    20
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    21
procedure HHHurt(Hedgehog: PHedgehog; Source: TDamageSource);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    22
begin
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    23
if (Source = dsFall) or (Source = dsExplosion) then
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    24
    case random(3) of
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    25
        0: PlaySound(sndOoff1, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    26
        1: PlaySound(sndOoff2, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    27
        2: PlaySound(sndOoff3, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    28
    end
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    29
else if (Source = dsPoison) then
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    30
    case random(2) of
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    31
        0: PlaySound(sndPoisonCough, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    32
        1: PlaySound(sndPoisonMoan, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    33
    end
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    34
else
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    35
    case random(4) of
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    36
        0: PlaySound(sndOw1, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    37
        1: PlaySound(sndOw2, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    38
        2: PlaySound(sndOw3, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    39
        3: PlaySound(sndOw4, Hedgehog^.Team^.voicepack);
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    40
    end
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    41
end;
45b416c5b976 Engine:
smaxx
parents: 3485
diff changeset
    42
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    43
// Shouldn't more of this ammo switching stuff be moved to uAmmos ?
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
    44
function ChangeAmmo(HHGear: PGear): boolean;
3943
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3915
diff changeset
    45
var slot, i: Longword;
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3915
diff changeset
    46
    ammoidx: LongInt;
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    47
begin
4135
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
    48
ChangeAmmo:= false;
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
    49
slot:= HHGear^.MsgParam;
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    50
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
    51
with HHGear^.Hedgehog^ do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    52
    begin
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
    53
    HHGear^.Message:= HHGear^.Message and (not gmSlot);
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    54
    ammoidx:= 0;
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
    55
    if ((HHGear^.State and (gstAttacking or gstAttacked)) <> 0) or
4241
835fd7a0e1bf Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents: 4238
diff changeset
    56
       ((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0)) or
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
    57
       ((HHGear^.State and gstHHDriven) = 0) then exit;
4135
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
    58
    ChangeAmmo:= true;
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
    59
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
    60
    while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> CurAmmoType) do inc(ammoidx);
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    61
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
    62
    if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(HHGear^.Hedgehog^);
3430
21c08c95a672 Cheating
nemo
parents: 3428
diff changeset
    63
3396
e5b3e5f2818e More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents: 3391
diff changeset
    64
    MultiShootAttacks:= 0;
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
    65
    HHGear^.Message:= HHGear^.Message and (not (gmLJump or gmHJump));
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    66
    
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    67
    if Ammoz[CurAmmoType].Slot = slot then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    68
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    69
        i:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    70
        repeat
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    71
        inc(ammoidx);
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    72
        if (ammoidx > cMaxSlotAmmoIndex) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    73
            begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    74
            inc(i);
3951
c9a63db3e603 Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents: 3949
diff changeset
    75
            CurAmmoType:= amNothing;
c9a63db3e603 Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents: 3949
diff changeset
    76
            ammoidx:= -1;
c9a63db3e603 Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents: 3949
diff changeset
    77
            //TryDo(i < 2, 'Engine bug: no ammo in current slot', true)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    78
            end;
5439
25d3784dc0f6 test on i should be first condition
nemo
parents: 5372
diff changeset
    79
        until (i = 1) or ((Ammo^[slot, ammoidx].Count > 0) and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, ammoidx].AmmoType].SkipTurns))
3943
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3915
diff changeset
    80
        end 
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3915
diff changeset
    81
    else
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    82
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    83
        i:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    84
        // check whether there is ammo in slot
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    85
        while (i <= cMaxSlotAmmoIndex)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    86
          and ((Ammo^[slot, i].Count = 0)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    87
               or (Team^.Clan^.TurnNumber <= Ammoz[Ammo^[slot, i].AmmoType].SkipTurns)) do inc(i);
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
    88
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    89
        if i <= cMaxSlotAmmoIndex then ammoidx:= i
3943
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3915
diff changeset
    90
        else ammoidx:= -1
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    91
        end;
5136
948da1e50205 Fix a few crosshair bugs. Disable ShowCrosshair and just decide when drawing.
nemo
parents: 5038
diff changeset
    92
        if ammoidx >= 0 then CurAmmoType:= Ammo^[slot, ammoidx].AmmoType;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
    93
    end
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    94
end;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    95
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
    96
procedure HHSetWeapon(HHGear: PGear);
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    97
var t: LongInt;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
    98
    weap: TAmmoType;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
    99
    Hedgehog: PHedgehog;
4135
5be798ecafdc This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents: 4020
diff changeset
   100
    s: boolean;
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   101
begin
4827
7895de87636b Initialize flag. Fixes weapon changing animation between shots when AI uses shotgun.
unc0rr
parents: 4824
diff changeset
   102
s:= false;
7895de87636b Initialize flag. Fixes weapon changing animation between shots when AI uses shotgun.
unc0rr
parents: 4824
diff changeset
   103
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   104
weap:= TAmmoType(HHGear^.MsgParam);
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   105
Hedgehog:= HHGear^.Hedgehog;
941
b5222ddafe1f - Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents: 931
diff changeset
   106
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   107
if Hedgehog^.Team^.Clan^.TurnNumber <= Ammoz[weap].SkipTurns then exit; // weapon is not activated yet
941
b5222ddafe1f - Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents: 931
diff changeset
   108
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   109
HHGear^.MsgParam:= Ammoz[weap].Slot;
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   110
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   111
t:= cMaxSlotAmmoIndex;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   112
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   113
HHGear^.Message:= HHGear^.Message and (not gmWeapon);
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   114
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   115
with Hedgehog^ do
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   116
    while (CurAmmoType <> weap) and (t >= 0) do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   117
        begin
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   118
        s:= ChangeAmmo(HHGear);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   119
        dec(t)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   120
        end;
1710
cecb3cc93251 Fix angle restriction applying to rc plane when choosing via ammomenu
unc0rr
parents: 1689
diff changeset
   121
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   122
if s then ApplyAmmoChanges(HHGear^.Hedgehog^)
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   123
end;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   124
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   125
procedure HHSetTimer(Gear: PGear);
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   126
var CurWeapon: PAmmo;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   127
    color: LongWord;
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   128
begin
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   129
Gear^.Message:= Gear^.Message and (not gmTimer);
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   130
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^);
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   131
with Gear^.Hedgehog^ do
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   132
    if ((Gear^.Message and gmPrecise) <> 0) and ((CurWeapon^.Propz and ammoprop_SetBounce) <> 0) then
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   133
        begin
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   134
        color:= Gear^.Hedgehog^.Team^.Clan^.Color;
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   135
        case Gear^.MsgParam of
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   136
            1: begin
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   137
               AddCaption(format(trmsg[sidBounce], trmsg[sidBounce1]), color, capgrpAmmostate);
5319
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   138
               CurWeapon^.Bounciness:= 350;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   139
               end;
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   140
            2: begin
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   141
               AddCaption(format(trmsg[sidBounce], trmsg[sidBounce2]), color, capgrpAmmostate);
5319
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   142
               CurWeapon^.Bounciness:= 700;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   143
               end;
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   144
            3: begin
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   145
               AddCaption(format(trmsg[sidBounce], trmsg[sidBounce3]), color, capgrpAmmostate);
5319
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   146
               CurWeapon^.Bounciness:= 1000;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   147
               end;
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   148
            4: begin
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   149
               AddCaption(format(trmsg[sidBounce], trmsg[sidBounce4]), color, capgrpAmmostate);
5319
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   150
               CurWeapon^.Bounciness:= 2000;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   151
               end;
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   152
            5: begin
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   153
               AddCaption(format(trmsg[sidBounce], trmsg[sidBounce5]), color, capgrpAmmostate);
5319
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   154
               CurWeapon^.Bounciness:= 4000;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   155
               end
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   156
            end
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   157
        end
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   158
    else if (CurWeapon^.Propz and ammoprop_Timerable) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   159
        begin
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   160
        CurWeapon^.Timer:= 1000 * Gear^.MsgParam;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   161
        with CurrentTeam^ do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   162
            ApplyAmmoChanges(Hedgehogs[CurrHedgehog]);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   163
        end;
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   164
end;
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   165
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   166
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   167
procedure Attack(Gear: PGear);
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   168
var xx, yy, newDx, newDy, lx, ly: hwFloat;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   169
    speech: PVisualGear;
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   170
    newGear:  PGear;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   171
    CurWeapon: PAmmo;
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   172
    altUse: boolean;
5319
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   173
    elastic: hwFloat;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   174
begin
5322
1bcc12a30d5d add missing nil check, increase despeckling of background too
nemo
parents: 5319
diff changeset
   175
newGear:= nil;
2807
cd131de34d3d halt team blink on attack
nemo
parents: 2769
diff changeset
   176
bShowFinger:= false;
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   177
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^);
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   178
with Gear^,
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   179
     Gear^.Hedgehog^ do
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   180
     begin
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   181
     if ((State and gstHHDriven) <> 0)and
2223
e009fee03c96 allow attacks while moving on ammo with alt attack (parachute/rope/jetpack) - needs testing.
nemo
parents: 2221
diff changeset
   182
        ((State and (gstAttacked or gstHHChooseTarget)) = 0) and
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
   183
        (((State and gstMoving) = 0) or
6244
23801d8b83d5 don't let forced hog movement (with no damage) suspend/halt shot charging
sheepluva
parents: 6131
diff changeset
   184
            (Power > 0) or
5513
79dd457193e6 make a special case for teleport instead. also allows teleporting off of a parachute
nemo
parents: 5511
diff changeset
   185
            (CurAmmoType = amTeleport) or 
2223
e009fee03c96 allow attacks while moving on ammo with alt attack (parachute/rope/jetpack) - needs testing.
nemo
parents: 2221
diff changeset
   186
            // Allow attacks while moving on ammo with AltAttack
3302
0973c5af5141 Add reference to ammo at time of gear creation to allow switching to work on jetpack/parachute
nemo
parents: 3236
diff changeset
   187
            ((CurAmmoGear <> nil) and ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0)) or
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   188
            ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AttackInMove) <> 0)) and
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   189
        ((TargetPoint.X <> NoPointX) or ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) = 0)) then
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   190
        begin
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   191
        State:= State or gstAttacking;
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   192
        if Power = cMaxPower then Message:= Message and (not gmAttack)
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   193
        else if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) = 0 then Message:= Message and (not gmAttack)
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   194
        else begin
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   195
             if Power = 0 then
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   196
                begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   197
                AttackBar:= CurrentTeam^.AttackBar;
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   198
                PlaySound(sndThrowPowerUp)
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   199
                end;
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   200
             inc(Power)
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 82
diff changeset
   201
             end;
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   202
        if ((Message and gmAttack) <> 0) then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   203
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   204
        if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0 then
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   205
           begin
282
b1e3387389b6 - Pickhammer sound
unc0rr
parents: 263
diff changeset
   206
           StopSound(sndThrowPowerUp);
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   207
           PlaySound(sndThrowRelease);
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   208
           end;
1922
88cdabb51995 Fix bug with rope and bazooka
unc0rr
parents: 1883
diff changeset
   209
519
981df6f6e2a9 - Fix desert eagle
unc0rr
parents: 518
diff changeset
   210
        xx:= SignAs(AngleSin(Angle), dX);
900
5224ac938442 Fix attack direction when perform somersault
unc0rr
parents: 883
diff changeset
   211
        yy:= -AngleCos(Angle);
5224ac938442 Fix attack direction when perform somersault
unc0rr
parents: 883
diff changeset
   212
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   213
        lx:= X + int2hwfloat(round(GetLaunchX(CurAmmoType, hwSign(dX), Angle)));
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   214
        ly:= Y + int2hwfloat(round(GetLaunchY(CurAmmoType, Angle)));
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   215
3469
39e16d76d745 Fix for artillery mode weapon use
nemo
parents: 3431
diff changeset
   216
        if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) then xx:= - xx;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   217
        if Ammoz[CurAmmoType].Ammo.AttackVoice <> sndNone then
5638
e35ba2a400d8 Try to avoid overlapping voices for major statements (not things like byebye or oof)
nemo
parents: 5612
diff changeset
   218
           AddVoice(Ammoz[CurAmmoType].Ammo.AttackVoice, CurrentTeam^.voicepack);
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   219
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   220
// Initiating alt attack
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   221
        if  (CurAmmoGear <> nil) and
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   222
            ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) and
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   223
            ((Gear^.Message and gmLJump) <> 0) and
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   224
            ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   225
            begin
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   226
            newDx:= dX / _2; 
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   227
            newDy:= dY / _2;
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   228
            altUse:= true;
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   229
            end
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   230
        else
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   231
            begin
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   232
            newDx:= xx*Power/cPowerDivisor;
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   233
            newDy:= yy*Power/cPowerDivisor;
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   234
            altUse:= false
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   235
            end;
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   236
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   237
             case CurAmmoType of
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   238
                      amGrenade: newGear:= AddGear(hwRound(lx), hwRound(ly), gtGrenade,         0, newDx, newDy, CurWeapon^.Timer);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   239
                      amMolotov: newGear:= AddGear(hwRound(lx), hwRound(ly), gtMolotov,      0, newDx, newDy, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   240
                  amClusterBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtClusterBomb,  0, newDx, newDy, CurWeapon^.Timer);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   241
                      amGasBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtGasBomb,      0, newDx, newDy, CurWeapon^.Timer);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   242
                      amBazooka: newGear:= AddGear(hwRound(lx), hwRound(ly), gtShell,        0, newDx, newDy, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   243
                     amSnowball: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSnowball,     0, newDx, newDy, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   244
                          amBee: newGear:= AddGear(hwRound(lx), hwRound(ly), gtBee,          0, newDx, newDy, 0);
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   245
                      amShotgun: begin
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   246
                                 PlaySound(sndShotgunReload);
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   247
                                 newGear:= AddGear(hwRound(lx), hwRound(ly), gtShotgunShot,  0, xx * _0_5, yy * _0_5, 0);
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   248
                                 end;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   249
                   amPickHammer: newGear:= AddGear(hwRound(lx), hwRound(ly) + cHHRadius, gtPickHammer, 0, _0, _0, 0);
866
ac6f6c95c23f - Some more sounds
unc0rr
parents: 865
diff changeset
   250
                         amSkip: ParseCommand('/skip', true);
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   251
                         amRope: newGear:= AddGear(hwRound(lx), hwRound(ly), gtRope, 0, xx, yy, 0);
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   252
                         amMine: if altUse then
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   253
                                    newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, newDx, newDy, 3000)
4233
b4ad20bfe310 make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents: 4224
diff changeset
   254
                                 else
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   255
                                    newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   256
                        amSMine: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine,    0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   257
                       amDEagle: newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   258
                      amSineGun: newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0);
4790
4cb3f7890fbd fix portal gun wrong color issue
sheepluva
parents: 4641
diff changeset
   259
                    amPortalGun: begin
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   260
                                 newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 
4790
4cb3f7890fbd fix portal gun wrong color issue
sheepluva
parents: 4641
diff changeset
   261
                                 // set selected color
4cb3f7890fbd fix portal gun wrong color issue
sheepluva
parents: 4641
diff changeset
   262
                                 CurWeapon^.Pos);
4cb3f7890fbd fix portal gun wrong color issue
sheepluva
parents: 4641
diff changeset
   263
                                 end;
2827
45817d8386c7 Engine:
smxx
parents: 2807
diff changeset
   264
                  amSniperRifle: begin
45817d8386c7 Engine:
smxx
parents: 2807
diff changeset
   265
                                 PlaySound(sndSniperReload);
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   266
                                 newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0);
2827
45817d8386c7 Engine:
smxx
parents: 2807
diff changeset
   267
                                 end;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   268
                     amDynamite: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   269
                    amFirePunch: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtFirePunch, 0, xx, _0, 0);
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   270
                         amWhip: begin
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   271
                                 newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtWhip, 0, SignAs(_1, dX), - _0_8, 0);
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   272
                                 PlaySound(sndWhipCrack)
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   273
                                 end;
3717
d88719b0f0dc Engine:
smaxx
parents: 3710
diff changeset
   274
                       amHammer: begin
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   275
                                 newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtHammer, 0, SignAs(_1, dX), - _0_8, 0);
3717
d88719b0f0dc Engine:
smaxx
parents: 3710
diff changeset
   276
                                 PlaySound(sndWhack)
d88719b0f0dc Engine:
smaxx
parents: 3710
diff changeset
   277
                                 end;
2143
ad05f6b2d1c0 New baseball bat sound, steam when fire lands on water (needs new hiss sound), bubbles when hedgehog drowns, more messages on
nemo
parents: 2142
diff changeset
   278
                  amBaseballBat: begin
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   279
                                 newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0);
2996
dfc7507a21a0 Engine:
smxx
parents: 2995
diff changeset
   280
                                 PlaySound(sndBaseballBat) // TODO: Only play if something is hit?
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   281
                                 end;
3851
fbe2e9722fc9 Sounds:
smaxx
parents: 3842
diff changeset
   282
                    amParachute: begin
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   283
                                 newGear:= AddGear(hwRound(lx), hwRound(ly), gtParachute, 0, _0, _0, 0);
3851
fbe2e9722fc9 Sounds:
smaxx
parents: 3842
diff changeset
   284
                                 PlaySound(sndParachute)
fbe2e9722fc9 Sounds:
smaxx
parents: 3842
diff changeset
   285
                                 end;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   286
                    // we save CurWeapon^.Pos (in this case: cursor direction) by using it as (otherwise irrelevant) X value of the new gear.
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   287
                    amAirAttack: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 0, _0, _0, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   288
                   amMineStrike: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 1, _0, _0, 0);
5372
7283bc768228 Change bee pos sprite, make aiming napalm a little easier, adjust napalm flames to be more centred on the target
nemo
parents: 5343
diff changeset
   289
                  amDrillStrike: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 3, _0, _0, CurWeapon^.Timer);
7283bc768228 Change bee pos sprite, make aiming napalm a little easier, adjust napalm flames to be more centred on the target
nemo
parents: 5343
diff changeset
   290
                       amNapalm: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0);
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   291
                    amBlowTorch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   292
                       amGirder: newGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   293
                     amTeleport: newGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   294
                       amSwitch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0);
2262
0dc94341bf42 sound for mortar
koda
parents: 2238
diff changeset
   295
                       amMortar: begin
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   296
                                 playSound(sndMortar);
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   297
                                 newGear:= AddGear(hwRound(lx), hwRound(ly), gtMortar,  0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0);
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   298
                                 end;
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   299
                      amRCPlane: begin
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   300
                                 newGear:= AddGear(hwRound(lx), hwRound(ly), gtRCPlane,  0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   301
                                 newGear^.SoundChannel:= LoopSound(sndRCPlane, nil)
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1710
diff changeset
   302
                                 end;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   303
                       amKamikaze: newGear:= AddGear(hwRound(lx), hwRound(ly), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   304
                         amCake: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, xx, _0, 0);
5526
70a5ec7b1020 remove offset in seduction gear creation
nemo
parents: 5513
diff changeset
   305
                    amSeduction: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSeduction, 0, _0, _0, 0);
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   306
                   amWatermelon: newGear:= AddGear(hwRound(lx), hwRound(ly), gtWatermelon,  0, newDx, newDy, CurWeapon^.Timer);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   307
                  amHellishBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtHellishBomb,    0, newDx, newDy, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   308
                        amDrill: newGear:= AddGear(hwRound(lx), hwRound(ly), gtDrill, 0, newDx, newDy, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   309
                      amBallgun: newGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun,  0, xx * _0_5, yy * _0_5, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   310
                    amJetpack: newGear:= AddGear(hwRound(lx), hwRound(ly), gtJetpack, 0, _0, _0, 0);
3123
b0a02930a1dc Engine:
smxx
parents: 3112
diff changeset
   311
                    amBirdy: begin
b0a02930a1dc Engine:
smxx
parents: 3112
diff changeset
   312
                             PlaySound(sndWhistle);
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   313
                             newGear:= AddGear(hwRound(lx), hwRound(ly) - 32, gtBirdy, 0, _0, _0, 0);
3123
b0a02930a1dc Engine:
smxx
parents: 3112
diff changeset
   314
                             end;
2908
bd1909984a09 Engine:
smxx
parents: 2882
diff changeset
   315
                      amLowGravity: begin
bd1909984a09 Engine:
smxx
parents: 2882
diff changeset
   316
                                    PlaySound(sndLowGravity);
4623
fa24dac6c473 apply cGravityf when changing cGravity
nemo
parents: 4578
diff changeset
   317
                                    cGravity:= cMaxWindSpeed;
fa24dac6c473 apply cGravityf when changing cGravity
nemo
parents: 4578
diff changeset
   318
                                    cGravityf:= 0.00025
2908
bd1909984a09 Engine:
smxx
parents: 2882
diff changeset
   319
                                    end;
4224
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   320
                      amExtraDamage:begin 
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   321
                                    PlaySound(sndHellishImpact4);
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   322
                                    cDamageModifier:= _1_5
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   323
                                    end;
1849
2a989e5abda6 4 utilities by nemo
unc0rr
parents: 1749
diff changeset
   324
                      amInvulnerable: Invulnerable:= true;
4224
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   325
                      amExtraTime:  begin
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   326
                                    PlaySound(sndSwitchHog);
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   327
                                    TurnTimeLeft:= TurnTimeLeft + 30000
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
   328
                                    end;
1854
6e05013899b2 laser beam by nemo reworked a bit by me
unc0rr
parents: 1849
diff changeset
   329
                      amLaserSight: cLaserSighting:= true;
3483
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   330
                      amVampiric: begin
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   331
                                  PlaySound(sndOw1, Team^.voicepack);
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   332
                                  cVampiric:= true;
54ff8cbabaa6 Engine:
smxx
parents: 3476
diff changeset
   333
                                  end;
3351
3fd3f116f2fc Engine:
smxx
parents: 3350
diff changeset
   334
                      amPiano: begin
3399
885304636abf Drown the hog using the piano
nemo
parents: 3397
diff changeset
   335
                               // Tuck the hedgehog away until the piano attack is completed
885304636abf Drown the hog using the piano
nemo
parents: 3397
diff changeset
   336
                               Unplaced:= true;
885304636abf Drown the hog using the piano
nemo
parents: 3397
diff changeset
   337
                               X:= _0;
885304636abf Drown the hog using the piano
nemo
parents: 3397
diff changeset
   338
                               Y:= _0;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   339
                               newGear:= AddGear(TargetPoint.X, 0, gtPiano, 0, _0, _0, 0);
3351
3fd3f116f2fc Engine:
smxx
parents: 3350
diff changeset
   340
                               PauseMusic
3fd3f116f2fc Engine:
smxx
parents: 3350
diff changeset
   341
                               end;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   342
                      amFlamethrower: newGear:= AddGear(hwRound(X), hwRound(Y), gtFlamethrower,  0, xx * _0_5, yy * _0_5, 0);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   343
                      amLandGun: newGear:= AddGear(hwRound(X), hwRound(Y), gtLandGun,  0, xx * _0_5, yy * _0_5, 0);
3991
82e4a5ef18f7 Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents: 3970
diff changeset
   344
                    amResurrector: begin
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   345
                        newGear:= AddGear(hwRound(lx), hwRound(ly),
3991
82e4a5ef18f7 Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents: 3970
diff changeset
   346
                                gtResurrector, 0, _0, _0, 0);
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   347
                        newGear^.SoundChannel := LoopSound(sndResurrector);
3991
82e4a5ef18f7 Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents: 3970
diff changeset
   348
                    end;
4246
e5cb885492df drillstrike! might require the drill patch to improve behavior
koda
parents: 4241
diff changeset
   349
                   //amMelonStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 4, _0, _0, 0);
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   350
                     amStructure: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtStructure, gstWait, SignAs(_0_02, dX), _0, 3000);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   351
                        amTardis: newGear:= AddGear(hwRound(X), hwRound(Y), gtTardis, 0, _0, _0, 5000);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   352
                  end;
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   353
             case CurAmmoType of
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   354
                      amGrenade, amMolotov, 
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   355
                  amClusterBomb, amGasBomb, 
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   356
                      amBazooka, amSnowball, 
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   357
                          amBee, amSMine,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   358
                       amMortar, amWatermelon,
6304
3036c242b19d Set CurrentAmmoGear on piano (should fix notes again). Also disable focus on current hog if unplaced.
nemo
parents: 6295
diff changeset
   359
                  amHellishBomb, amDrill: FollowGear:= newGear;
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   360
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   361
                      amShotgun, amPickHammer,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   362
                         amRope, amDEagle,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   363
                      amSineGun, amSniperRifle,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   364
                    amFirePunch, amWhip,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   365
                       amHammer, amBaseballBat,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   366
                    amParachute, amBlowTorch,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   367
                       amGirder, amTeleport,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   368
                       amSwitch, amRCPlane,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   369
                     amKamikaze, amCake,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   370
                    amSeduction, amBallgun,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   371
                      amJetpack, amBirdy,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   372
                 amFlamethrower, amLandGun,
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   373
                  amResurrector, amStructure,
6304
3036c242b19d Set CurrentAmmoGear on piano (should fix notes again). Also disable focus on current hog if unplaced.
nemo
parents: 6295
diff changeset
   374
                       amTardis, amPiano: CurAmmoGear:= newGear;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   375
                  end;
6122
nemo
parents: 6121
diff changeset
   376
              if (CurAmmoType = amMine) or (CurAmmoType = amSMine) and (GameFlags and gfInfAttack <> 0) then newGear^.FlightTime:= GameTicks + 1000;
5507
1040c0946ef8 This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents: 5439
diff changeset
   377
        if Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0 then
1040c0946ef8 This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents: 5439
diff changeset
   378
            begin
5612
2638dec1b323 This really should have been a TPoint for consistency
nemo
parents: 5584
diff changeset
   379
            newGear^.Target.X:= TargetPoint.X;
2638dec1b323 This really should have been a TPoint for consistency
nemo
parents: 5584
diff changeset
   380
            newGear^.Target.Y:= TargetPoint.Y
5507
1040c0946ef8 This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents: 5439
diff changeset
   381
            end;
829
1209eb768acf Use 'first blood' sound
unc0rr
parents: 800
diff changeset
   382
4994
2d9a52d6ea24 Issue #194, turn off followgear for altuse
nemo
parents: 4976
diff changeset
   383
        // Clear FollowGear if using on a rope/parachute/saucer etc so focus stays with the hog's movement
2d9a52d6ea24 Issue #194, turn off followgear for altuse
nemo
parents: 4976
diff changeset
   384
        if altUse then FollowGear:= nil;
2d9a52d6ea24 Issue #194, turn off followgear for altuse
nemo
parents: 4976
diff changeset
   385
5322
1bcc12a30d5d add missing nil check, increase despeckling of background too
nemo
parents: 5319
diff changeset
   386
        if (newGear <> nil) and ((Ammoz[newGear^.AmmoType].Ammo.Propz and ammoprop_SetBounce) <> 0) then
5319
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   387
            begin
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   388
            elastic:=  int2hwfloat(CurWeapon^.Bounciness) / _1000;
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   389
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   390
            if elastic < _1 then newGear^.Elasticity:= newGear^.Elasticity * elastic
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   391
            else if elastic > _1 then newGear^.Elasticity:= _1 - ((_1-newGear^.Elasticity) / elastic);
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   392
(* Experimented with friction modifier. Didn't seem helpful 
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   393
            fric:= int2hwfloat(CurWeapon^.Bounciness) / _250;
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   394
            if fric < _1 then newGear^.Friction:= newGear^.Friction * fric
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   395
            else if fric > _1 then newGear^.Friction:= _1 - ((_1-newGear^.Friction) / fric)*)
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   396
            end;
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   397
51d8e4747876 bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents: 5316
diff changeset
   398
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   399
        uStats.AmmoUsed(CurAmmoType);
829
1209eb768acf Use 'first blood' sound
unc0rr
parents: 800
diff changeset
   400
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   401
        if not (SpeechText = '') then
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   402
            begin
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   403
            speech:= AddVisualGear(0, 0, vgtSpeechBubble);
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   404
            if speech <> nil then
2115
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   405
               begin
5316
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   406
               speech^.Text:= SpeechText;
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   407
               speech^.Hedgehog:= Gear^.Hedgehog;
191cd6c06203 Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents: 5313
diff changeset
   408
               speech^.FrameTicks:= SpeechType;
2115
1c9a8081aef6 unc0rr forgot nil check here too
nemo
parents: 2056
diff changeset
   409
               end;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   410
            SpeechText:= ''
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   411
            end;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   412
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   413
        Power:= 0;
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   414
        if (CurAmmoGear <> nil)
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   415
           and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) = 0){check for dropping ammo from rope} then
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   416
           begin
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   417
           Message:= Message or gmAttack;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   418
           CurAmmoGear^.Message:= Message
82
2f4f3236cccc - New fort
unc0rr
parents: 80
diff changeset
   419
           end else begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   420
           if not CurrentTeam^.ExtDriven and
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   421
             ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then SendIPC('a');
1849
2a989e5abda6 4 utilities by nemo
unc0rr
parents: 1749
diff changeset
   422
           AfterAttack;
82
2f4f3236cccc - New fort
unc0rr
parents: 80
diff changeset
   423
           end
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   424
        end else Message:= Message and (not gmAttack);
5511
13a222b00a9d prevent attempting to teleport in mid-air during inf attack
nemo
parents: 5507
diff changeset
   425
     end;
5720
a962d0823f49 onHogAttack hook. Might reposition this later.
mikade
parents: 5706
diff changeset
   426
     TargetPoint.X := NoPointX;
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   427
     ScriptCall('onHogAttack');
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   428
end;
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   429
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   430
procedure AfterAttack;
2502
f67c603c23b5 - Fix build
unc0rr
parents: 2500
diff changeset
   431
var s: shortstring;
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   432
    a: TAmmoType;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   433
begin
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 558
diff changeset
   434
with CurrentHedgehog^.Gear^,
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   435
        CurrentHedgehog^ do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   436
    begin
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   437
    a:= CurAmmoType;
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   438
    State:= State and (not gstAttacking);
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   439
    if (Ammoz[a].Ammo.Propz and ammoprop_Effect) = 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   440
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   441
        Inc(MultiShootAttacks);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   442
        
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   443
        if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   444
            begin
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   445
            s:= inttostr(Ammoz[a].Ammo.NumPerTurn - MultiShootAttacks + 1);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   446
            AddCaption(format(trmsg[sidRemaining], s), cWhiteColor, capgrpAmmostate);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   447
            end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   448
        
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   449
        if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks) or
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   450
            ((GameFlags and gfMultiWeapon) <> 0) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   451
            begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   452
            isInMultiShoot:= true
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   453
            end
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   454
        else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   455
            begin
3970
0f6e3219c108 set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents: 3965
diff changeset
   456
            OnUsedAmmo(CurrentHedgehog^);
5287
ffc1475a4afd fixed gfInfAttack preventing ending of turn while placing hedgehogs
Henek
parents: 5279
diff changeset
   457
            if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and (((GameFlags and gfInfAttack) = 0) or PlacingHogs) then
5016
9347d82a26cc added game mode Tag Team, mostly untested, please test :)
Henek
parents: 5013
diff changeset
   458
                begin
9347d82a26cc added game mode Tag Team, mostly untested, please test :)
Henek
parents: 5013
diff changeset
   459
                if TagTurnTimeLeft = 0 then TagTurnTimeLeft:= TurnTimeLeft;
5035
a00636066077 nikin just wants to get commit count up
nikin
parents: 5034
diff changeset
   460
                TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 100;
5016
9347d82a26cc added game mode Tag Team, mostly untested, please test :)
Henek
parents: 5013
diff changeset
   461
                end;
4241
835fd7a0e1bf Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents: 4238
diff changeset
   462
            if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) then State:= State or gstAttacked;
835fd7a0e1bf Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents: 4238
diff changeset
   463
            if (Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) <> 0 then ApplyAmmoChanges(CurrentHedgehog^)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   464
            end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   465
        end
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   466
    else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   467
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   468
        OnUsedAmmo(CurrentHedgehog^);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   469
        ApplyAmmoChanges(CurrentHedgehog^);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   470
        end;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   471
    AttackBar:= 0
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   472
    end
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   473
end;
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   474
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   475
////////////////////////////////////////////////////////////////////////////////
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   476
procedure doStepHedgehogDead(Gear: PGear);
868
4884bce5e5eb Hedgehog death animation
unc0rr
parents: 866
diff changeset
   477
const frametime = 200;
4884bce5e5eb Hedgehog death animation
unc0rr
parents: 866
diff changeset
   478
      timertime = frametime * 6;
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   479
begin
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   480
if Gear^.Hedgehog^.Unplaced then exit;
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   481
if Gear^.Timer > 1 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   482
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   483
    AllInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   484
    dec(Gear^.Timer);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   485
    if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos)
5972
add1cae1add6 Clear gstAnimation and reset Timer before entering death animation
nemo
parents: 5965
diff changeset
   486
    end 
add1cae1add6 Clear gstAnimation and reset Timer before entering death animation
nemo
parents: 5965
diff changeset
   487
else if Gear^.Timer = 1 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   488
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   489
    Gear^.State:= Gear^.State or gstNoDamage;
4837
2ea0a152c319 Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents: 4827
diff changeset
   490
    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, CurrentHedgehog, EXPLAutoSound);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   491
    AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   492
    DeleteGear(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   493
    SetAllToActive
5972
add1cae1add6 Clear gstAnimation and reset Timer before entering death animation
nemo
parents: 5965
diff changeset
   494
    end 
add1cae1add6 Clear gstAnimation and reset Timer before entering death animation
nemo
parents: 5965
diff changeset
   495
else // Gear^.Timer = 0
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   496
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   497
    AllInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   498
    Gear^.Z:= cCurrHHZ;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   499
    RemoveGearFromList(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   500
    InsertGearToList(Gear);
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   501
    PlaySound(sndByeBye, Gear^.Hedgehog^.Team^.voicepack);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   502
    Gear^.Pos:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   503
    Gear^.Timer:= timertime
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   504
    end
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   505
end;
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   506
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
   507
////////////////////////////////////////////////////////////////////////////////
3310
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   508
procedure doStepHedgehogGone(Gear: PGear);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   509
const frametime = 65;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   510
      timertime = frametime * 11;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   511
begin
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   512
if Gear^.Hedgehog^.Unplaced then exit;
3310
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   513
if Gear^.Timer > 1 then
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   514
    begin
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   515
    AllInactive:= false;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   516
    dec(Gear^.Timer);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   517
    if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos)
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   518
    end else
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   519
if Gear^.Timer = 1 then
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   520
    begin
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   521
    DeleteGear(Gear);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   522
    SetAllToActive
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   523
    end else // Gear^.Timer = 0
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   524
    begin
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   525
    AllInactive:= false;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   526
    Gear^.Z:= cCurrHHZ;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   527
    RemoveGearFromList(Gear);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   528
    InsertGearToList(Gear);
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   529
    PlaySound(sndByeBye, Gear^.Hedgehog^.Team^.voicepack);
3310
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   530
    PlaySound(sndWarp);
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   531
    Gear^.Pos:= 0;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   532
    Gear^.Timer:= timertime
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   533
    end
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   534
end;
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   535
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
   536
////////////////////////////////////////////////////////////////////////////////
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   537
procedure PickUp(HH, Gear: PGear);
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   538
var s: shortstring;
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   539
    a: TAmmoType;
3169
c8c6ac44f51b prophylactic removal of some Integer references, raise a few of the template islands up a bit so they work inverted without triggering border
nemo
parents: 3161
diff changeset
   540
    i: LongInt;
2972
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   541
    vga: PVisualGear;
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   542
begin
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   543
Gear^.Message:= gmDestroy;
2745
11fce231f24a Engine:
smxx
parents: 2660
diff changeset
   544
PlaySound(sndShotgunReload);
5343
ff7ecf483759 fake crates now with complementary poison
Henek
parents: 5322
diff changeset
   545
if (Gear^.Pos and posCaseExplode) <> 0 then
ff7ecf483759 fake crates now with complementary poison
Henek
parents: 5322
diff changeset
   546
    if (Gear^.Pos and posCasePoison) <> 0 then
ff7ecf483759 fake crates now with complementary poison
Henek
parents: 5322
diff changeset
   547
        doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound + EXPLPoisoned)
ff7ecf483759 fake crates now with complementary poison
Henek
parents: 5322
diff changeset
   548
    else
ff7ecf483759 fake crates now with complementary poison
Henek
parents: 5322
diff changeset
   549
        doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound)
ff7ecf483759 fake crates now with complementary poison
Henek
parents: 5322
diff changeset
   550
else if (Gear^.Pos and posCasePoison) <> 0 then
ff7ecf483759 fake crates now with complementary poison
Henek
parents: 5322
diff changeset
   551
    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound + EXPLPoisoned + EXPLNoDamage)
5313
5e18eaef65d0 now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents: 5287
diff changeset
   552
else
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   553
case Gear^.Pos of
1964
dc9ea05c9d2f - Another way of defining official server
unc0rr
parents: 1922
diff changeset
   554
       posCaseUtility,
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   555
       posCaseAmmo: begin
5584
e0b9722bd653 Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents: 5564
diff changeset
   556
                    if Gear^.AmmoType <> amNothing then a:= Gear^.AmmoType 
e0b9722bd653 Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents: 5564
diff changeset
   557
                    else
e0b9722bd653 Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents: 5564
diff changeset
   558
                        begin
e0b9722bd653 Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents: 5564
diff changeset
   559
                        for i:= 0 to GameTicks and $7F do GetRandom(2); // Burn some random numbers
e0b9722bd653 Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents: 5564
diff changeset
   560
                        if Gear^.Pos = posCaseUtility then a:= GetUtility
e0b9722bd653 Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents: 5564
diff changeset
   561
                        else a:= GetAmmo
e0b9722bd653 Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents: 5564
diff changeset
   562
                        end;
4372
3836973380b9 remove some more PHedgehog casts
nemo
parents: 4365
diff changeset
   563
                    AddAmmo(HH^.Hedgehog^, a);
2853
953a6d71396f Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents: 2827
diff changeset
   564
// Possibly needs to check shared clan ammo game flag once added.
953a6d71396f Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents: 2827
diff changeset
   565
// On the other hand, no obvious reason that clan members shouldn't know what ammo another clan member picked up
4372
3836973380b9 remove some more PHedgehog casts
nemo
parents: 4365
diff changeset
   566
                    if (not (HH^.Hedgehog^.Team^.ExtDriven 
3836973380b9 remove some more PHedgehog casts
nemo
parents: 4365
diff changeset
   567
                      or (HH^.Hedgehog^.BotLevel > 0)))
3836973380b9 remove some more PHedgehog casts
nemo
parents: 4365
diff changeset
   568
                      or (HH^.Hedgehog^.Team^.Clan^.ClanIndex = LocalClan)
2972
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   569
                      or (GameType = gmtDemo)  then
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   570
                        begin
3196
336d6fc3325c Engine:
smxx
parents: 3174
diff changeset
   571
                        s:= trammo[Ammoz[a].NameId] + ' (+' + IntToStr(Ammoz[a].NumberInCase) + ')';
4372
3836973380b9 remove some more PHedgehog casts
nemo
parents: 4365
diff changeset
   572
                        AddCaption(s, HH^.Hedgehog^.Team^.Clan^.Color, capgrpAmmoinfo);
2972
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   573
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   574
                        // show ammo icon
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   575
                        vga:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtAmmo);
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   576
                        if vga <> nil then
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   577
                            vga^.Frame:= Longword(a);
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   578
                        end;
82828fd23dea Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents: 2948
diff changeset
   579
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   580
                    end;
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   581
     posCaseHealth: begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   582
                    inc(HH^.Health, Gear^.Health);
4372
3836973380b9 remove some more PHedgehog casts
nemo
parents: 4365
diff changeset
   583
                    HH^.Hedgehog^.Effects[hePoisoned] := false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   584
                    str(Gear^.Health, s);
295
8834f3cb620e - Implement ammo cases
unc0rr
parents: 285
diff changeset
   585
                    s:= '+' + s;
4372
3836973380b9 remove some more PHedgehog casts
nemo
parents: 4365
diff changeset
   586
                    AddCaption(s, HH^.Hedgehog^.Team^.Clan^.Color, capgrpAmmoinfo);
3836973380b9 remove some more PHedgehog casts
nemo
parents: 4365
diff changeset
   587
                    RenderHealth(HH^.Hedgehog^);
3836973380b9 remove some more PHedgehog casts
nemo
parents: 4365
diff changeset
   588
                    RecountTeamHealth(HH^.Hedgehog^.Team);
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   589
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   590
                    i:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   591
                    while i < Gear^.Health do
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   592
                        begin
5563
fc73b6e941f7 Use same visual gear for health tags and hearts.
nemo
parents: 5526
diff changeset
   593
                        vga:= AddVisualGear(hwRound(HH^.X), hwRound(HH^.Y), vgtStraightShot);
fc73b6e941f7 Use same visual gear for health tags and hearts.
nemo
parents: 5526
diff changeset
   594
                        if vga <> nil then
fc73b6e941f7 Use same visual gear for health tags and hearts.
nemo
parents: 5526
diff changeset
   595
                            with vga^ do
fc73b6e941f7 Use same visual gear for health tags and hearts.
nemo
parents: 5526
diff changeset
   596
                                begin
fc73b6e941f7 Use same visual gear for health tags and hearts.
nemo
parents: 5526
diff changeset
   597
                                Tint:= $00FF00FF;
5564
4f42009237df For mikade's sake, use old dx/dy/frametick as default, so health crosses move the same
nemo
parents: 5563
diff changeset
   598
                                State:= ord(sprHealth)
5563
fc73b6e941f7 Use same visual gear for health tags and hearts.
nemo
parents: 5526
diff changeset
   599
                                end;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   600
                        inc(i, 5);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   601
                        end;
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   602
                    end;
435
25820c10c849 Better AI behavior
unc0rr
parents: 434
diff changeset
   603
     end
42
72ffe21f027c - Fixed console behavior
unc0rr
parents: 39
diff changeset
   604
end;
32
78bff13b11c0 With this patch the game doesn't crash when gaming by net
unc0rr
parents: 16
diff changeset
   605
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   606
const StepTicks: LongWord = 0;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   607
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   608
procedure HedgehogStep(Gear: PGear);
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 369
diff changeset
   609
var PrevdX: LongInt;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   610
    CurWeapon: PAmmo;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   611
begin
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   612
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^);
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   613
if ((Gear^.State and (gstAttacking or gstMoving)) = 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   614
   begin
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   615
   if isCursorVisible then
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   616
      with Gear^.Hedgehog^ do
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   617
        with CurWeapon^ do
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   618
          begin
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   619
          if (Gear^.Message and gmLeft  ) <> 0 then
3407
dcc129c4352e Engine:
smxx
parents: 3402
diff changeset
   620
             Pos:= (Pos - 1 + Ammoz[AmmoType].PosCount) mod Ammoz[AmmoType].PosCount
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   621
          else
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   622
          if (Gear^.Message and gmRight ) <> 0 then
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   623
             Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   624
          else exit;
423
5f4559ce7062 Better construction tool
unc0rr
parents: 409
diff changeset
   625
          StepTicks:= 200;
408
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   626
          exit
6c3da4907d00 Airplane can fly from right to left
unc0rr
parents: 394
diff changeset
   627
          end;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   628
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   629
    if ((Gear^.Message and gmAnimate) <> 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   630
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   631
        Gear^.Message:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   632
        Gear^.State:= Gear^.State or gstAnimation;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   633
        Gear^.Tag:= Gear^.MsgParam;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   634
        Gear^.Timer:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   635
        Gear^.Pos:= 0
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   636
        end;
1033
622c5de38d72 Start implementing waves
unc0rr
parents: 1012
diff changeset
   637
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   638
   if ((Gear^.Message and gmLJump ) <> 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   639
      begin
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   640
      Gear^.Message:= Gear^.Message and (not gmLJump);
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   641
      DeleteCI(Gear);
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   642
      if TestCollisionYwithGear(Gear, -1) = 0 then
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   643
         if not TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _2 else
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   644
         if not TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _1;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   645
      if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX))
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   646
         or   (TestCollisionYwithGear(Gear, -1) <> 0)) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   647
         begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   648
         Gear^.dY:= -_0_15;
2024
2985f3bd18b7 Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents: 2023
diff changeset
   649
         if not cArtillery then Gear^.dX:= SignAs(_0_15, Gear^.dX);
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   650
         Gear^.State:= Gear^.State or gstMoving or gstHHJumping;
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   651
         PlaySound(sndJump1, Gear^.Hedgehog^.Team^.voicepack);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   652
         exit
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   653
         end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   654
      end;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   655
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   656
   if ((Gear^.Message and gmHJump ) <> 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   657
      begin
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   658
      DeleteCI(Gear);
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   659
      Gear^.Message:= Gear^.Message and (not gmHJump);
855
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   660
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   661
      Gear^.dY:= -_0_2;
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   662
      SetLittle(Gear^.dX);
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   663
      Gear^.State:= Gear^.State or gstMoving or gstHHJumping;
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   664
      PlaySound(sndJump3, Gear^.Hedgehog^.Team^.voicepack);
855
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   665
      exit
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   666
      end;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   667
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   668
   PrevdX:= hwSign(Gear^.dX);
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   669
   if (Gear^.Message and gmLeft  )<>0 then Gear^.dX:= -cLittle else
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   670
   if (Gear^.Message and gmRight )<>0 then Gear^.dX:=  cLittle else exit;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   671
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   672
   if (Gear^.Message and (gmLeft or gmRight)) <> 0 then
2940
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   673
      begin
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   674
      StepSoundTimer:= cHHStepTicks;
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   675
      end;
c02119eee12a Engine:
smxx
parents: 2908
diff changeset
   676
   
74
42257fee61ae - Unicode support for team and hedgehogs names
unc0rr
parents: 73
diff changeset
   677
   StepTicks:= cHHStepTicks;
610
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   678
   if PrevdX <> hwSign(Gear^.dX) then
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   679
      begin
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   680
      FollowGear:= Gear;
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   681
      exit
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   682
      end;
9b5a6200f667 - Training format change
unc0rr
parents: 602
diff changeset
   683
   DeleteCI(Gear); // must be after exit!! (see previous line)
838
1faae19f2116 Remove tailing spaces in some places
unc0rr
parents: 836
diff changeset
   684
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   685
   Gear^.Hedgehog^.visStepPos:= (Gear^.Hedgehog^.visStepPos + 1) and 7;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 304
diff changeset
   686
   if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   687
      begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   688
      if not (TestCollisionXwithXYShift(Gear, _0, -6, hwSign(Gear^.dX))
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   689
         or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1;
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   690
      if not (TestCollisionXwithXYShift(Gear, _0, -5, hwSign(Gear^.dX))
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   691
         or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1;
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   692
      if not (TestCollisionXwithXYShift(Gear, _0, -4, hwSign(Gear^.dX))
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   693
         or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1;
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   694
      if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX))
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   695
         or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1;
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   696
      if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX))
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   697
         or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1;
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   698
      if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX))
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   699
         or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   700
      end;
1528
3fee15104c1d More stable blowtorch:
unc0rr
parents: 1519
diff changeset
   701
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
   702
   if (not cArtillery) and ((Gear^.Message and gmPrecise) = 0) and (not TestCollisionXwithGear(Gear, hwSign(Gear^.dX))) then
2585
0899ce8ad77f Smaxx: only allow change direction when shift key is pressed
unc0rr
parents: 2502
diff changeset
   703
      Gear^.X:= Gear^.X + SignAs(_1, Gear^.dX);
0899ce8ad77f Smaxx: only allow change direction when shift key is pressed
unc0rr
parents: 2502
diff changeset
   704
62
c3eda0c68cd6 No more hedgehogs hung in air
unc0rr
parents: 56
diff changeset
   705
   SetAllHHToActive;
37
2b7f2a43b999 - Properly get seed in net game
unc0rr
parents: 32
diff changeset
   706
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   707
   if TestCollisionYwithGear(Gear, 1) = 0 then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   708
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   709
   Gear^.Y:= Gear^.Y + _1;
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   710
   if TestCollisionYwithGear(Gear, 1) = 0 then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   711
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   712
   Gear^.Y:= Gear^.Y + _1;
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   713
   if TestCollisionYwithGear(Gear, 1) = 0 then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   714
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   715
   Gear^.Y:= Gear^.Y + _1;
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   716
   if TestCollisionYwithGear(Gear, 1) = 0 then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   717
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   718
   Gear^.Y:= Gear^.Y + _1;
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   719
   if TestCollisionYwithGear(Gear, 1) = 0 then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   720
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   721
   Gear^.Y:= Gear^.Y + _1;
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   722
   if TestCollisionYwithGear(Gear, 1) = 0 then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   723
   begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   724
   Gear^.Y:= Gear^.Y + _1;
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   725
   if TestCollisionYwithGear(Gear, 1) = 0 then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   726
      begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   727
      Gear^.Y:= Gear^.Y - _6;
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 435
diff changeset
   728
      Gear^.dY:= _0;
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   729
      Gear^.State:= Gear^.State or gstMoving;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   730
      exit
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   731
      end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   732
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   733
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   734
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   735
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   736
   end
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   737
   end;
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   738
   AddGearCI(Gear)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   739
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   740
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   741
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   742
procedure HedgehogChAngle(HHGear: PGear);
958
92bb9fa046f9 Aim at high speed when performing rope swinging
unc0rr
parents: 952
diff changeset
   743
var da: LongWord;
303
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
   744
begin
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   745
with HHGear^.Hedgehog^ do
5640
07676ee23aff make it easier to do portal shoppa, ensure structure doesn't show up by accident in a weaponset
nemo
parents: 5638
diff changeset
   746
    if ((CurAmmoType = amRope) and 
07676ee23aff make it easier to do portal shoppa, ensure structure doesn't show up by accident in a weaponset
nemo
parents: 5638
diff changeset
   747
        ((HHGear^.State and (gstMoving or gstHHJumping)) = gstMoving)) or
07676ee23aff make it easier to do portal shoppa, ensure structure doesn't show up by accident in a weaponset
nemo
parents: 5638
diff changeset
   748
       ((CurAmmoType = amPortalGun) and 
07676ee23aff make it easier to do portal shoppa, ensure structure doesn't show up by accident in a weaponset
nemo
parents: 5638
diff changeset
   749
        ((HHGear^.State and gstMoving) <> 0)) then da:= 2
07676ee23aff make it easier to do portal shoppa, ensure structure doesn't show up by accident in a weaponset
nemo
parents: 5638
diff changeset
   750
    else da:= 1;
958
92bb9fa046f9 Aim at high speed when performing rope swinging
unc0rr
parents: 952
diff changeset
   751
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   752
if (((HHGear^.Message and gmPrecise) = 0) or ((GameTicks mod 5) = 1)) then
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   753
    if ((HHGear^.Message and gmUp) <> 0) and (HHGear^.Angle >= CurMinAngle + da) then dec(HHGear^.Angle, da)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   754
    else
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   755
    if ((HHGear^.Message and gmDown) <> 0) and (HHGear^.Angle + da <= CurMaxAngle) then inc(HHGear^.Angle, da)
303
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
   756
end;
1659c4aad5ab Now blow torch angle can be changed during blowing :)
unc0rr
parents: 302
diff changeset
   757
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   758
procedure doStepHedgehog(Gear: PGear); forward;
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   759
////////////////////////////////////////////////////////////////////////////////
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   760
procedure doStepHedgehogMoving(Gear: PGear);
3907
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   761
var isFalling, isUnderwater: boolean;
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   762
    land: Word;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   763
begin
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   764
land:= 0;
3907
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   765
isUnderwater:= cWaterLine < hwRound(Gear^.Y) + Gear^.Radius;
3915
c05855146440 Correct bug in flight ceiling for birdy as well, increase clip on velocity to 1.9 (shouldn't cause problems with most collision checks still), apply clip to both + and -
nemo
parents: 3909
diff changeset
   766
if Gear^.dX.QWordValue > 8160437862 then Gear^.dX.QWordValue:= 8160437862;
c05855146440 Correct bug in flight ceiling for birdy as well, increase clip on velocity to 1.9 (shouldn't cause problems with most collision checks still), apply clip to both + and -
nemo
parents: 3909
diff changeset
   767
if Gear^.dY.QWordValue > 8160437862 then Gear^.dY.QWordValue:= 8160437862;
c05855146440 Correct bug in flight ceiling for birdy as well, increase clip on velocity to 1.9 (shouldn't cause problems with most collision checks still), apply clip to both + and -
nemo
parents: 3909
diff changeset
   768
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
   769
if Gear^.Hedgehog^.Unplaced then
2762
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   770
   begin
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   771
   Gear^.dY:= _0;
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   772
   Gear^.dX:= _0;
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   773
   Gear^.State:= Gear^.State and (not gstMoving);
2762
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   774
   exit
2fbc8d35eb52 Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents: 2745
diff changeset
   775
   end;
855
8842c71d16bf - Fix too long delay between shotgun and deagle shots
unc0rr
parents: 854
diff changeset
   776
isFalling:= (Gear^.dY.isNegative) or not TestCollisionYKick(Gear, 1);
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   777
if isFalling then
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   778
   begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   779
   if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0;
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   780
   Gear^.State:= Gear^.State or gstMoving;
5851
e6151aca2d7c Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents: 5838
diff changeset
   781
   if (CurrentHedgehog^.Gear = Gear)
e6151aca2d7c Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents: 5838
diff changeset
   782
        and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then 
e6151aca2d7c Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents: 5838
diff changeset
   783
        begin
e6151aca2d7c Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents: 5838
diff changeset
   784
        FollowGear:= Gear;
e6151aca2d7c Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents: 5838
diff changeset
   785
        end;
3909
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3907
diff changeset
   786
   if isUnderwater then Gear^.dY:= Gear^.dY + cGravity / _2
4301
4866cc130b8d Apply wind while roping too (with the game flag set)
nemo
parents: 4246
diff changeset
   787
   else
4866cc130b8d Apply wind while roping too (with the game flag set)
nemo
parents: 4246
diff changeset
   788
       begin
4866cc130b8d Apply wind while roping too (with the game flag set)
nemo
parents: 4246
diff changeset
   789
       Gear^.dY:= Gear^.dY + cGravity;
4866cc130b8d Apply wind while roping too (with the game flag set)
nemo
parents: 4246
diff changeset
   790
// this set of circumstances could be less complex if jumping was more clearly identified
4866cc130b8d Apply wind while roping too (with the game flag set)
nemo
parents: 4246
diff changeset
   791
       if ((GameFlags and gfMoreWind) <> 0) and 
4633
e69becb1ac14 braces fail
nemo
parents: 4623
diff changeset
   792
          (((Gear^.Damage <> 0) or
4301
4866cc130b8d Apply wind while roping too (with the game flag set)
nemo
parents: 4246
diff changeset
   793
          ((CurAmmoGear <> nil) and
4866cc130b8d Apply wind while roping too (with the game flag set)
nemo
parents: 4246
diff changeset
   794
            ((CurAmmoGear^.AmmoType = amJetpack) or
4866cc130b8d Apply wind while roping too (with the game flag set)
nemo
parents: 4246
diff changeset
   795
            (CurAmmoGear^.AmmoType = amBirdy))) or
4633
e69becb1ac14 braces fail
nemo
parents: 4623
diff changeset
   796
          ((Gear^.dY.QWordValue + Gear^.dX.QWordValue) > _0_55.QWordValue)))
4641
43d17e3b81de Tweak more wind values / densities
nemo
parents: 4633
diff changeset
   797
          then Gear^.dX := Gear^.dX + cWindSpeed / Gear^.Density
4301
4866cc130b8d Apply wind while roping too (with the game flag set)
nemo
parents: 4246
diff changeset
   798
       end
3909
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3907
diff changeset
   799
   end 
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3907
diff changeset
   800
else
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   801
   begin
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   802
   land:= TestCollisionYwithGear(Gear, 1);
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   803
   if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_55.QWordValue) and ((land and lfIce) = 0)
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   804
      and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX);
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   805
540
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   806
   if not Gear^.dY.isNegative then
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   807
      begin
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   808
      CheckHHDamage(Gear);
790
a6f442173822 Make high jump behaviour like in worms (back somersault)
unc0rr
parents: 783
diff changeset
   809
2137
4bb9ff2069ec Okay, now a real fix
unc0rr
parents: 2136
diff changeset
   810
      if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) and
790
a6f442173822 Make high jump behaviour like in worms (back somersault)
unc0rr
parents: 783
diff changeset
   811
         (Gear^.dX.QWordValue < _0_02.QWordValue) then Gear^.dX.isNegative:= not Gear^.dX.isNegative; // landing after high jump
a6f442173822 Make high jump behaviour like in worms (back somersault)
unc0rr
parents: 783
diff changeset
   812
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   813
      Gear^.State:= Gear^.State and (not (gstHHJumping or gstHHHJump));
540
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   814
      Gear^.dY:= _0;
b06c5aace2fa - Many fixes related to hh switcher
unc0rr
parents: 538
diff changeset
   815
      end else Gear^.dY:= Gear^.dY + cGravity;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   816
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   817
   if ((Gear^.State and gstMoving) <> 0) then
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   818
       begin
6291
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
   819
       if land and lfIce <> 0 then
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
   820
           begin
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
   821
           Gear^.dX:= Gear^.dX * (_1 - (_1 - Gear^.Friction) / _2)
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
   822
           end
6081
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   823
       else Gear^.dX:= Gear^.dX * Gear^.Friction;
537bbd5c1a62 Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents: 6014
diff changeset
   824
       end
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   825
   end;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   826
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   827
if (Gear^.State <> 0) then DeleteCI(Gear);
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 614
diff changeset
   828
3907
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   829
if isUnderwater then
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   830
   begin
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   831
   Gear^.dY:= Gear^.dY * _0_999;
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   832
   Gear^.dX:= Gear^.dX * _0_999;
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   833
   end;
5b516f0d9957 Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents: 3894
diff changeset
   834
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   835
if (Gear^.State and gstMoving) <> 0 then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   836
   if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   837
      if not isFalling then
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   838
         if hwAbs(Gear^.dX) > _0_01 then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   839
            if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -1, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_96; Gear^.Y:= Gear^.Y - _1 end else
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   840
            if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -2, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_93; Gear^.Y:= Gear^.Y - _2 end else
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   841
            if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -3, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_9 ; Gear^.Y:= Gear^.Y - _3 end else
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   842
            if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -4, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_87; Gear^.Y:= Gear^.Y - _4 end else
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   843
            if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -5, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_84; Gear^.Y:= Gear^.Y - _5 end else
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   844
            if hwAbs(Gear^.dX) > _0_02 then Gear^.dX:= -Gear^.Elasticity * Gear^.dX
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   845
                                   else begin
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   846
                                        Gear^.State:= Gear^.State and (not gstMoving);
6291
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
   847
                                        while TestCollisionYWithGear(Gear,1) = 0 do Gear^.Y:= Gear^.Y+_1;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   848
                                        SetLittle(Gear^.dX)
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   849
                                        end
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   850
            else begin
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   851
                 Gear^.State:= Gear^.State and (not gstMoving);
6291
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
   852
                 while TestCollisionYWithGear(Gear,1) = 0 do Gear^.Y:= Gear^.Y+_1;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   853
                 SetLittle(Gear^.dX)
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   854
                 end
1518
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   855
         else if (hwAbs(Gear^.dX) > cLittle)
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   856
                and ((Gear^.State and gstHHJumping) = 0)
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   857
                then Gear^.dX:= -Gear^.Elasticity * Gear^.dX
4e5796fe3aac Fix jump landing after turn end
unc0rr
parents: 1507
diff changeset
   858
                else SetLittle(Gear^.dX);
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   859
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
   860
if (not isFalling) and
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   861
   (hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   862
   begin
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   863
   Gear^.State:= Gear^.State and (not gstWinner);
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   864
   Gear^.State:= Gear^.State and (not gstMoving);
6291
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
   865
   while TestCollisionYWithGear(Gear,1) = 0 do Gear^.Y:= Gear^.Y+_1;
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   866
   SetLittle(Gear^.dX);
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   867
   Gear^.dY:= _0
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   868
   end else Gear^.State:= Gear^.State or gstMoving;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   869
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   870
if (Gear^.State and gstMoving) <> 0 then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   871
   begin
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   872
   Gear^.State:= Gear^.State and (not gstAnimation);
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1964
diff changeset
   873
// ARTILLERY but not being moved by explosions
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   874
   Gear^.X:= Gear^.X + Gear^.dX;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   875
   Gear^.Y:= Gear^.Y + Gear^.dY;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   876
   if (not Gear^.dY.isNegative) and
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   877
      (not TestCollisionYKick(Gear, 1)) and
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   878
       TestCollisionYwithXYShift(Gear, 0, 1, 1) then
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   879
      begin
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   880
      CheckHHDamage(Gear);
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   881
      Gear^.dY:= _0;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   882
      Gear^.Y:= Gear^.Y + _1
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   883
      end;
1658
208a3258afdf Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents: 1645
diff changeset
   884
   CheckGearDrowning(Gear);
6248
103bc8fd4f1b don't hide target cursor if a hedgehog (other than current) is drowning, thanks to mikade for pointing this out
sheepluva
parents: 6244
diff changeset
   885
   // hide target cursor if current hog is drowning
103bc8fd4f1b don't hide target cursor if a hedgehog (other than current) is drowning, thanks to mikade for pointing this out
sheepluva
parents: 6244
diff changeset
   886
   if (Gear^.State and gstDrowning) <> 0 then
103bc8fd4f1b don't hide target cursor if a hedgehog (other than current) is drowning, thanks to mikade for pointing this out
sheepluva
parents: 6244
diff changeset
   887
       if (CurrentHedgehog^.Gear = Gear) then
103bc8fd4f1b don't hide target cursor if a hedgehog (other than current) is drowning, thanks to mikade for pointing this out
sheepluva
parents: 6244
diff changeset
   888
          isCursorVisible:= false
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   889
   end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   890
3003
0afdba08a858 Engine:
smxx
parents: 2996
diff changeset
   891
if (hwAbs(Gear^.dY) > _0) and (Gear^.FlightTime > 0) and ((GameFlags and gfLowGravity) = 0) then
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   892
    begin
6014
b432c4b9cc9b Report long flight archievement
unc0rr
parents: 6011
diff changeset
   893
    inc(Gear^.FlightTime);
3174
17e2602dfdc5 Engine:
smxx
parents: 3169
diff changeset
   894
    if Gear^.FlightTime = 3000 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   895
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   896
        AddCaption(GetEventString(eidHomerun), cWhiteColor, capgrpMessage);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   897
        PlaySound(sndHomerun)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   898
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   899
    end
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   900
else
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   901
    begin
6014
b432c4b9cc9b Report long flight archievement
unc0rr
parents: 6011
diff changeset
   902
    uStats.hedgehogFlight(Gear, Gear^.FlightTime);
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   903
    Gear^.FlightTime:= 0;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   904
    end;
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2376
diff changeset
   905
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   906
end;
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
   907
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   908
procedure doStepHedgehogDriven(HHGear: PGear);
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   909
var t: PGear;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   910
    wasJumping: boolean;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   911
    Hedgehog: PHedgehog;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   912
begin
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   913
Hedgehog:= HHGear^.Hedgehog;
6092
fd602b5838ab This should allow hedgehogs to still move freely after trapping other hedgehogs in a portal loop.
nemo
parents: 6081
diff changeset
   914
if isInMultiShoot then
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   915
   HHGear^.Message:= 0;
505
fcba7d7aea0d Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents: 498
diff changeset
   916
6092
fd602b5838ab This should allow hedgehogs to still move freely after trapping other hedgehogs in a portal loop.
nemo
parents: 6081
diff changeset
   917
if ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_Utility) <> 0) and isInMultiShoot then 
fd602b5838ab This should allow hedgehogs to still move freely after trapping other hedgehogs in a portal loop.
nemo
parents: 6081
diff changeset
   918
    AllInactive:= true
fd602b5838ab This should allow hedgehogs to still move freely after trapping other hedgehogs in a portal loop.
nemo
parents: 6081
diff changeset
   919
else if not isInMultiShoot then AllInactive:= false;
fd602b5838ab This should allow hedgehogs to still move freely after trapping other hedgehogs in a portal loop.
nemo
parents: 6081
diff changeset
   920
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   921
if (TurnTimeLeft = 0) or (HHGear^.Damage > 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   922
    begin
5016
9347d82a26cc added game mode Tag Team, mostly untested, please test :)
Henek
parents: 5013
diff changeset
   923
    if TagTurnTimeLeft = 0 then TagTurnTimeLeft:= TurnTimeLeft;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   924
    TurnTimeLeft:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   925
    isCursorVisible:= false;
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   926
    HHGear^.State:= HHGear^.State and (not (gstHHDriven or gstAnimation or gstAttacking));
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   927
    AttackBar:= 0;
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   928
    if HHGear^.Damage > 0 then
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   929
        HHGear^.State:= HHGear^.State and (not (gstHHJumping or gstHHHJump));
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   930
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   931
    end;
1035
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1034
diff changeset
   932
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   933
if (HHGear^.State and gstAnimation) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   934
    begin
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   935
    HHGear^.Message:= 0;
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   936
    if (HHGear^.Pos = Wavez[TWave(HHGear^.Tag)].VoiceDelay) and (HHGear^.Timer = 0) then PlaySound(Wavez[TWave(HHGear^.Tag)].Voice, Hedgehog^.Team^.voicepack);
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   937
    inc(HHGear^.Timer);
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   938
    if HHGear^.Timer = Wavez[TWave(HHGear^.Tag)].Interval then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   939
        begin
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   940
        HHGear^.Timer:= 0;
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   941
        inc(HHGear^.Pos);
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   942
        if HHGear^.Pos = Wavez[TWave(HHGear^.Tag)].FramesCount then
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   943
            HHGear^.State:= HHGear^.State and (not gstAnimation)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   944
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   945
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   946
    end;
1033
622c5de38d72 Start implementing waves
unc0rr
parents: 1012
diff changeset
   947
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   948
if ((HHGear^.State and gstMoving) <> 0)
836
150c7c87e66c - Small formatting changes
unc0rr
parents: 835
diff changeset
   949
    or (StepTicks = cHHStepTicks)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   950
    or (CurAmmoGear <> nil) then // we are moving
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   951
    begin
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   952
    with Hedgehog^ do
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   953
        if (CurAmmoGear = nil)
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   954
        and (HHGear^.dY > _0_39)
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   955
        and (CurAmmoType = amParachute) then HHGear^.Message:= HHGear^.Message or gmAttack;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   956
    // check for case with ammo
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   957
    t:= CheckGearNear(HHGear, gtCase, 36, 36);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   958
    if t <> nil then
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   959
        PickUp(HHGear, t)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   960
    end;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   961
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   962
if (CurAmmoGear = nil) then
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   963
    if (((HHGear^.Message and gmAttack) <> 0)
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   964
        or ((HHGear^.State and gstAttacking) <> 0)) then
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   965
        Attack(HHGear) // should be before others to avoid desync with '/put' msg and changing weapon msgs
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   966
    else
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   967
else 
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   968
    with Hedgehog^ do
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   969
        if ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0)
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   970
            and ((HHGear^.Message and gmLJump) <> 0)
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   971
            and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   972
            begin
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   973
            Attack(HHGear);
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
   974
            HHGear^.Message:= HHGear^.Message and (not gmLJump)
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
   975
            end;
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   976
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   977
if (CurAmmoGear = nil)
3842
fc94291ca1d9 Trying to adjust behaviour of multishoot w/ portal gun so switching weapons works correctly.
nemo
parents: 3837
diff changeset
   978
    or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) 
4241
835fd7a0e1bf Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents: 4238
diff changeset
   979
    or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   980
    begin
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   981
    if ((HHGear^.Message and gmSlot) <> 0) then
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   982
        if ChangeAmmo(HHGear) then ApplyAmmoChanges(Hedgehog^);
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   983
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   984
    if ((HHGear^.Message and gmWeapon) <> 0) then HHSetWeapon(HHGear);
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   985
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   986
    if ((HHGear^.Message and gmTimer) <> 0) then HHSetTimer(HHGear);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   987
    end;
930
3f61bd3b08fd Initial support for attacking from rope
unc0rr
parents: 928
diff changeset
   988
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   989
if CurAmmoGear <> nil then
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   990
   begin
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   991
   CurAmmoGear^.Message:= HHGear^.Message;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   992
   exit
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   993
   end;
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
   994
952
9dd48265e0b9 Allow aiming while moving
unc0rr
parents: 941
diff changeset
   995
if not isInMultiShoot then
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   996
   HedgehogChAngle(HHGear);
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 925
diff changeset
   997
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
   998
if (HHGear^.State and gstMoving) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
   999
    begin
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1000
    wasJumping:= ((HHGear^.State and gstHHJumping) <> 0);
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
  1001
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1002
    if ((HHGear^.Message and gmHJump) <> 0) and
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1003
        wasJumping and
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1004
        ((HHGear^.State and gstHHHJump) = 0) then
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1005
        if (not (hwAbs(HHGear^.dX) > cLittle)) and (HHGear^.dY < -_0_02) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1006
            begin
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1007
            HHGear^.State:= HHGear^.State or gstHHHJump;
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1008
            HHGear^.dY:= -_0_25;
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1009
            if not cArtillery then HHGear^.dX:= -SignAs(_0_02, HHGear^.dX);
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3768
diff changeset
  1010
            PlaySound(sndJump2, Hedgehog^.Team^.voicepack)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1011
            end;
2376
ece7b87f1334 Strip trailing spaces
nemo
parents: 2302
diff changeset
  1012
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
  1013
    HHGear^.Message:= HHGear^.Message and (not (gmLJump or gmHJump));
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
  1014
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1015
    if (not cArtillery) and wasJumping and
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1016
        TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX);
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
  1017
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1018
    if Hedgehog^.Gear <> nil then doStepHedgehogMoving(HHGear);
542
ec26095f1bed - Get rid of ammoProp_AttackInFall and gstFalling
unc0rr
parents: 540
diff changeset
  1019
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1020
    if ((HHGear^.State and (gstMoving or gstDrowning)) = 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1021
        begin
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1022
        AddGearCI(HHGear);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1023
        if wasJumping then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1024
            StepTicks:= 410
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1025
        else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1026
            StepTicks:= 95
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1027
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1028
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1029
    end;
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
  1030
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1031
    if not isInMultiShoot and (Hedgehog^.Gear <> nil) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1032
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1033
        if StepTicks > 0 then dec(StepTicks);
4881
35e6269227b6 still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents: 4867
diff changeset
  1034
        if (StepTicks = 0) then HedgehogStep(HHGear)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1035
        end
302
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
  1036
end;
7aca131ecd7f First implementation of Blow Torch
unc0rr
parents: 300
diff changeset
  1037
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1038
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1039
procedure doStepHedgehogFree(Gear: PGear);
6011
519f8a58c021 Fix a bunch of warnings (also improves speed a bit in 32 bit code)
unC0Rr
parents: 5991
diff changeset
  1040
var prevState: Longword;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1041
begin
511
2b5b9e00419d - Further work on new collisions implementation
unc0rr
parents: 505
diff changeset
  1042
prevState:= Gear^.State;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1043
538
74219eadab5e - Various small fixes
unc0rr
parents: 534
diff changeset
  1044
doStepHedgehogMoving(Gear);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1045
1002
14ecd5fd4fab Implement drowning hedgehog sprite
unc0rr
parents: 984
diff changeset
  1046
if (Gear^.State and (gstMoving or gstDrowning)) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1047
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1048
    if Gear^.Damage > 0 then CalcRotationDirAngle(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1049
    AllInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1050
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1051
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1052
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
  1053
if (Gear^.Health = 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1054
    begin
4224
99c6d87df131 No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents: 4168
diff changeset
  1055
    if PrvInactive or ((GameFlags and gfInfAttack) <> 0) then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1056
        begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1057
        Gear^.Timer:= 0;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1058
        FollowGear:= Gear;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1059
        PrvInactive:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1060
        AllInactive:= false;
2140
75e5c4fcae2a Death messages thanks to Smaxx
nemo
parents: 2137
diff changeset
  1061
5991
c3b7064d9226 Fix sheepluva's merge
unc0rr
parents: 5977
diff changeset
  1062
        if (Gear^.State and gstHHGone) = 0 then
3310
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
  1063
            begin
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
  1064
            Gear^.Hedgehog^.Effects[hePoisoned] := false;
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
  1065
            if Gear^.Hedgehog^.Effects[heResurrectable] then begin
3768
39947624dabb Some survival mode changes by burp
tiyuri@gmail.com
parents: 3717
diff changeset
  1066
                ResurrectHedgehog(Gear);
5972
add1cae1add6 Clear gstAnimation and reset Timer before entering death animation
nemo
parents: 5965
diff changeset
  1067
            end else 
add1cae1add6 Clear gstAnimation and reset Timer before entering death animation
nemo
parents: 5965
diff changeset
  1068
                begin
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
  1069
                Gear^.State:= (Gear^.State or gstHHDeath) and (not gstAnimation);
3768
39947624dabb Some survival mode changes by burp
tiyuri@gmail.com
parents: 3717
diff changeset
  1070
                Gear^.doStep:= @doStepHedgehogDead;
39947624dabb Some survival mode changes by burp
tiyuri@gmail.com
parents: 3717
diff changeset
  1071
                // Death message
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
  1072
                AddCaption(Format(GetEventString(eidDied), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage);
5972
add1cae1add6 Clear gstAnimation and reset Timer before entering death animation
nemo
parents: 5965
diff changeset
  1073
                end;
3310
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
  1074
            end
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
  1075
        else
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
  1076
            begin
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
  1077
            Gear^.State:= Gear^.State and (not gstAnimation);
3310
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
  1078
            Gear^.doStep:= @doStepHedgehogGone;
5818
d071162d550d There. Push this back on to unc0rr. This effect can still desync, 'cause it always could, but at least now the two are linked w/o argument I think.
nemo
parents: 5720
diff changeset
  1079
3310
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
  1080
            // Gone message
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
  1081
            AddCaption(Format(GetEventString(eidGone), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage);
3310
e6e9b811d32f Engine:
smxx
parents: 3302
diff changeset
  1082
            end
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1083
        end;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1084
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1085
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1086
1033
622c5de38d72 Start implementing waves
unc0rr
parents: 1012
diff changeset
  1087
if ((Gear^.State and gstWait) = 0) and
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1088
    (prevState <> Gear^.State) then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1089
    begin
5955
07f6fa51ea58 - Unset hhdriven flag for gone hedgehog
unc0rr
parents: 5851
diff changeset
  1090
    Gear^.State:= Gear^.State or gstWait;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1091
    Gear^.Timer:= 150
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1092
    end else
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1093
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1094
    if Gear^.Timer = 0 then
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1095
        begin
6450
14224c9b4594 - Improvement to the parser
unc0rr
parents: 6402
diff changeset
  1096
        Gear^.State:= Gear^.State and (not (gstWait or gstLoser or gstWinner or gstAttacked or gstNotKickable or gstHHChooseTarget));
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1097
        Gear^.Active:= false;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1098
        AddGearCI(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1099
        exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1100
        end else dec(Gear^.Timer)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1101
    end;
863
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
  1102
dfa3aa51ecb5 Merge some more sounds
unc0rr
parents: 855
diff changeset
  1103
AllInactive:= false
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1104
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1105
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1106
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1107
procedure doStepHedgehog(Gear: PGear);
6117
2a4829172a29 Experiment in making ice more treacherous. also tweak to snow/christmas flake spawn
nemo
parents: 6116
diff changeset
  1108
(*
2a4829172a29 Experiment in making ice more treacherous. also tweak to snow/christmas flake spawn
nemo
parents: 6116
diff changeset
  1109
var x,y,tx,ty: LongInt;
6291
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1110
    tdX, tdY, slope: hwFloat; 
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1111
    land: Word; *)
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1112
var slope: hwFloat; 
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
  1113
begin
3894
9abce5468583 Engine:
smaxx
parents: 3851
diff changeset
  1114
if (Gear^.Message and gmDestroy) <> 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1115
    begin
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1116
    DeleteGear(Gear);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1117
    exit
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1118
    end;
1505
3a96e93572cb - Convert small damage tag to visual gears
unc0rr
parents: 1347
diff changeset
  1119
2040
7c366fc3c099 - Fix for desyncs when player exits
unc0rr
parents: 2024
diff changeset
  1120
if (Gear^.State and gstHHDriven) = 0 then
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1121
    doStepHedgehogFree(Gear)
2040
7c366fc3c099 - Fix for desyncs when player exits
unc0rr
parents: 2024
diff changeset
  1122
else
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1123
    begin
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4301
diff changeset
  1124
    with Gear^.Hedgehog^ do
5955
07f6fa51ea58 - Unset hhdriven flag for gone hedgehog
unc0rr
parents: 5851
diff changeset
  1125
        if Team^.hasGone then
5829
3ec95dc2b249 Don't test for hasGone in unapproved places. Now any possibility of desync on player quit is ruled out. Not tested at all.
unc0rr
parents: 5820
diff changeset
  1126
            TeamGoneEffect(Team^)
3ec95dc2b249 Don't test for hasGone in unapproved places. Now any possibility of desync on player quit is ruled out. Not tested at all.
unc0rr
parents: 5820
diff changeset
  1127
        else
3ec95dc2b249 Don't test for hasGone in unapproved places. Now any possibility of desync on player quit is ruled out. Not tested at all.
unc0rr
parents: 5820
diff changeset
  1128
            doStepHedgehogDriven(Gear)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2940
diff changeset
  1129
    end;
6295
5b2b304a91ec Due to the small values and friction, halve the step in low gravity, instead of the value
nemo
parents: 6294
diff changeset
  1130
if (Gear^.Message and (gmAllStoppable or gmLJump or gmHJump) = 0) and
6293
60d7f88a7de3 skip when attacking as well
nemo
parents: 6291
diff changeset
  1131
   (Gear^.State and (gstHHJumping or gstHHHJump or gstAttacking) = 0) and
6453
11c578d30bd3 Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents: 6450
diff changeset
  1132
   (not Gear^.dY.isNegative) and
6335
f753b290d966 nevermind
koda
parents: 6333
diff changeset
  1133
   (GameTicks mod (100*LongWOrd(hwRound(cMaxWindSpeed*2/cGravity))) = 0) and
6291
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1134
   (TestCollisionYwithGear(Gear, 1) and lfIce <> 0) then
6117
2a4829172a29 Experiment in making ice more treacherous. also tweak to snow/christmas flake spawn
nemo
parents: 6116
diff changeset
  1135
    begin
6291
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1136
    slope:= CalcSlopeBelowGear(Gear);
6295
5b2b304a91ec Due to the small values and friction, halve the step in low gravity, instead of the value
nemo
parents: 6294
diff changeset
  1137
    Gear^.dX:=Gear^.dX+slope*_0_07;
6294
34aa727d4a25 Don't set moving if on flat surface
nemo
parents: 6293
diff changeset
  1138
    if slope.QWordValue <> 0 then Gear^.State:= Gear^.State or gstMoving;
6117
2a4829172a29 Experiment in making ice more treacherous. also tweak to snow/christmas flake spawn
nemo
parents: 6116
diff changeset
  1139
(*
6291
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1140
    x:= hwRound(Gear^.X);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1141
    y:= hwRound(Gear^.Y);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1142
    AddVisualGear(x, y, vgtSmokeTrace);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1143
    AddVisualGear(x - hwRound(_5*slope), y + hwRound(_5*slope), vgtSmokeTrace);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1144
    AddVisualGear(x + hwRound(_5*slope), y - hwRound(_5*slope), vgtSmokeTrace);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1145
    AddVisualGear(x - hwRound(_20 * slope), y + hwRound(_20 * slope), vgtSmokeTrace);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1146
    AddVisualGear(x + hwRound(_20 * slope), y - hwRound(_20 * slope), vgtSmokeTrace);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1147
    AddVisualGear(x - hwRound(_30 * slope), y + hwRound(_30 * slope), vgtSmokeTrace);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1148
    AddVisualGear(x + hwRound(_30 * slope), y - hwRound(_30 * slope), vgtSmokeTrace);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1149
    AddVisualGear(x - hwRound(_40 * slope), y + hwRound(_40 * slope), vgtSmokeTrace);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1150
    AddVisualGear(x + hwRound(_40 * slope), y - hwRound(_40 * slope), vgtSmokeTrace);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1151
    AddVisualGear(x - hwRound(_50 * slope), y + hwRound(_50 * slope), vgtSmokeTrace);
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1152
    AddVisualGear(x + hwRound(_50 * slope), y - hwRound(_50 * slope), vgtSmokeTrace); *)
cfd2483b8c97 A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents: 6248
diff changeset
  1153
    end
2585
0899ce8ad77f Smaxx: only allow change direction when shift key is pressed
unc0rr
parents: 2502
diff changeset
  1154
end;