author | nemo |
Tue, 13 Apr 2021 15:40:11 -0400 | |
changeset 15804 | 6409d756e9da |
parent 15720 | f681c3f2eeba |
child 15857 | f0f615dcbe7c |
permissions | -rw-r--r-- |
393 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
11046 | 3 |
* Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com> |
393 | 4 |
* |
5 |
* This program is free software; you can redistribute it and/or modify |
|
6 |
* it under the terms of the GNU General Public License as published by |
|
7 |
* the Free Software Foundation; version 2 of the License |
|
8 |
* |
|
9 |
* This program is distributed in the hope that it will be useful, |
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU General Public License for more details. |
|
13 |
* |
|
14 |
* You should have received a copy of the GNU General Public License |
|
15 |
* along with this program; if not, write to the Free Software |
|
10108
c68cf030eded
update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents:
10105
diff
changeset
|
16 |
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
393 | 17 |
*) |
18 |
||
2630 | 19 |
{$INCLUDE "options.inc"} |
20 |
||
288 | 21 |
unit uAmmos; |
22 |
interface |
|
7754 | 23 |
uses uConsts, uTypes, uStore; |
288 | 24 |
|
3038 | 25 |
procedure initModule; |
26 |
procedure freeModule; |
|
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2715
diff
changeset
|
27 |
|
3346 | 28 |
procedure AddAmmoStore; |
6898 | 29 |
procedure SetAmmoLoadout(var s: shortstring); |
30 |
procedure SetAmmoProbability(var s: shortstring); |
|
31 |
procedure SetAmmoDelay(var s: shortstring); |
|
32 |
procedure SetAmmoReinforcement(var s: shortstring); |
|
288 | 33 |
procedure AssignStores; |
553
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
34 |
procedure AddAmmo(var Hedgehog: THedgehog; ammo: TAmmoType); |
7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7037
diff
changeset
|
35 |
procedure AddAmmo(var Hedgehog: THedgehog; ammo: TAmmoType; amt: LongWord); |
6924 | 36 |
procedure SetAmmo(var Hedgehog: THedgehog; ammo: TAmmoType; cnt: LongWord); |
6770
7d2c6cdb816a
Start on adding drowning bonus to bat/firepunch/whip. AI still is not smart enough to change direction when firepunching to face the water, or change the angle of the bat.
nemo
parents:
6762
diff
changeset
|
37 |
function HHHasAmmo(var Hedgehog: THedgehog; Ammo: TAmmoType): LongWord; |
371 | 38 |
procedure PackAmmo(Ammo: PHHAmmo; Slot: LongInt); |
534 | 39 |
procedure OnUsedAmmo(var Hedgehog: THedgehog); |
1964 | 40 |
procedure ApplyAngleBounds(var Hedgehog: THedgehog; AmmoType: TAmmoType); |
553
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
41 |
procedure ApplyAmmoChanges(var Hedgehog: THedgehog); |
1922 | 42 |
procedure SwitchNotHeldAmmo(var Hedgehog: THedgehog); |
783 | 43 |
procedure SetWeapon(weap: TAmmoType); |
1784 | 44 |
procedure DisableSomeWeapons; |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset
|
45 |
procedure ResetWeapons; |
10560 | 46 |
function GetAmmoByNum(num: LongInt): PHHAmmo; |
6924 | 47 |
function GetCurAmmoEntry(var Hedgehog: THedgehog): PAmmo; |
5272 | 48 |
function GetAmmoEntry(var Hedgehog: THedgehog; am: TAmmoType): PAmmo; |
288 | 49 |
|
10560 | 50 |
var StoreCnt: LongInt; |
1966 | 51 |
|
288 | 52 |
implementation |
12156
9755922396f5
Lua callback: onUsedAmmo, after using up an ammo
Wuzzy <almikes@aol.com>
parents:
11939
diff
changeset
|
53 |
uses uVariables, uCommands, uUtils, uCaptions, uDebug, uScript; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2715
diff
changeset
|
54 |
|
13457
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
55 |
type TAmmoArray = array[TAmmoType] of TAmmo; |
288 | 56 |
var StoresList: array[0..Pred(cMaxHHs)] of PHHAmmo; |
3346 | 57 |
ammoLoadout, ammoProbability, ammoDelay, ammoReinforcement: shortstring; |
13457
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
58 |
InitialCountsLocal: array[0..Pred(cMaxHHs)] of TAmmoCounts; |
288 | 59 |
|
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
60 |
procedure FillAmmoStore(Ammo: PHHAmmo; var newAmmo: TAmmoArray); |
288 | 61 |
var mi: array[0..cMaxSlotIndex] of byte; |
62 |
a: TAmmoType; |
|
295 | 63 |
begin |
3407 | 64 |
{$HINTS OFF} |
295 | 65 |
FillChar(mi, sizeof(mi), 0); |
3407 | 66 |
{$HINTS ON} |
295 | 67 |
FillChar(Ammo^, sizeof(Ammo^), 0); |
68 |
for a:= Low(TAmmoType) to High(TAmmoType) do |
|
2764 | 69 |
begin |
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
70 |
if newAmmo[a].Count > 0 then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
71 |
begin |
11532 | 72 |
if checkFails(mi[Ammoz[a].Slot] <= cMaxSlotAmmoIndex, 'Ammo slot overflow', true) then exit; |
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
73 |
Ammo^[Ammoz[a].Slot, mi[Ammoz[a].Slot]]:= newAmmo[a]; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
74 |
inc(mi[Ammoz[a].Slot]) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
75 |
end |
6631 | 76 |
end; |
77 |
AmmoMenuInvalidated:= true; |
|
295 | 78 |
end; |
79 |
||
3346 | 80 |
procedure AddAmmoStore; |
295 | 81 |
var cnt: Longword; |
82 |
a: TAmmoType; |
|
83 |
ammos: TAmmoCounts; |
|
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
84 |
newAmmos: TAmmoArray; |
288 | 85 |
begin |
11532 | 86 |
if checkFails((byte(ammoLoadout[0]) = byte(ord(High(TAmmoType)))) and (byte(ammoProbability[0]) = byte(ord(High(TAmmoType)))) and (byte(ammoDelay[0]) = byte(ord(High(TAmmoType)))) and (byte(ammoReinforcement[0]) = byte(ord(High(TAmmoType)))) |
87 |
, 'Incomplete or missing ammo scheme set (incompatible frontend or demo/save?)' |
|
88 |
, true) |
|
89 |
then exit; |
|
288 | 90 |
|
11534 | 91 |
if checkFails(StoreCnt < cMaxHHs, 'Ammo stores overflow', true) then exit; |
288 | 92 |
inc(StoreCnt); |
93 |
||
94 |
new(StoresList[Pred(StoreCnt)]); |
|
95 |
||
96 |
for a:= Low(TAmmoType) to High(TAmmoType) do |
|
97 |
begin |
|
2357
babe1a55e284
Add an empty weapon to avoid selection of weapons which aren't yet ready. Might all be useful to switch to amNothing in certain situations, like after using up all ropes, instead of bazooka.
nemo
parents:
2246
diff
changeset
|
98 |
if a <> amNothing then |
1895 | 99 |
begin |
13456
794dcf69a5aa
New Lua API function: GetAmmo, to get ammo config
Wuzzy <Wuzzy2@mail.ru>
parents:
12733
diff
changeset
|
100 |
Ammoz[a].Probability:= probabilityLevels[byte(ammoProbability[ord(a)]) - byte('0')]; |
3346 | 101 |
Ammoz[a].SkipTurns:= (byte(ammoDelay[ord(a)]) - byte('0')); |
102 |
Ammoz[a].NumberInCase:= (byte(ammoReinforcement[ord(a)]) - byte('0')); |
|
103 |
cnt:= byte(ammoLoadout[ord(a)]) - byte('0'); |
|
2370 | 104 |
// avoid things we already have infinite number |
2357
babe1a55e284
Add an empty weapon to avoid selection of weapons which aren't yet ready. Might all be useful to switch to amNothing in certain situations, like after using up all ropes, instead of bazooka.
nemo
parents:
2246
diff
changeset
|
105 |
if cnt = 9 then |
babe1a55e284
Add an empty weapon to avoid selection of weapons which aren't yet ready. Might all be useful to switch to amNothing in certain situations, like after using up all ropes, instead of bazooka.
nemo
parents:
2246
diff
changeset
|
106 |
begin |
babe1a55e284
Add an empty weapon to avoid selection of weapons which aren't yet ready. Might all be useful to switch to amNothing in certain situations, like after using up all ropes, instead of bazooka.
nemo
parents:
2246
diff
changeset
|
107 |
cnt:= AMMO_INFINITE; |
2370 | 108 |
Ammoz[a].Probability:= 0 |
2357
babe1a55e284
Add an empty weapon to avoid selection of weapons which aren't yet ready. Might all be useful to switch to amNothing in certain situations, like after using up all ropes, instead of bazooka.
nemo
parents:
2246
diff
changeset
|
109 |
end; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
110 |
if Ammoz[a].NumberInCase = 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
111 |
Ammoz[a].Probability:= 0; |
2860
13a53315ae18
Awesome patch from TheException - adds editing of weapon delay and crate count. Tiy might want to tweak the crate graphic, could make be smaller or less overlappy.
nemo
parents:
2855
diff
changeset
|
112 |
|
2370 | 113 |
// avoid things we already have by scheme |
2461 | 114 |
// merge this into DisableSomeWeapons ? |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
115 |
if ((a = amLowGravity) and ((GameFlags and gfLowGravity) <> 0)) |
15720
f681c3f2eeba
Remove Vamp/Resurrect ammos in gfInvulnerable mode
Wuzzy <Wuzzy2@mail.ru>
parents:
15466
diff
changeset
|
116 |
or ((a in [amInvulnerable, amResurrector, amVampiric]) and ((GameFlags and gfInvulnerable) <> 0)) |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
117 |
or ((a = amLaserSight) and ((GameFlags and gfLaserSight) <> 0)) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
118 |
or ((a = amVampiric) and ((GameFlags and gfVampiric) <> 0)) |
13875
ccfbc5f59c52
Hide creeper from frontend, prevent addition of creeper ammo via ammo scheme
Wuzzy <Wuzzy2@mail.ru>
parents:
13504
diff
changeset
|
119 |
or ((a = amExtraTime) and (cHedgehogTurnTime >= 1000000)) |
ccfbc5f59c52
Hide creeper from frontend, prevent addition of creeper ammo via ammo scheme
Wuzzy <Wuzzy2@mail.ru>
parents:
13504
diff
changeset
|
120 |
// Always remove creeper because it's unfinished. |
ccfbc5f59c52
Hide creeper from frontend, prevent addition of creeper ammo via ammo scheme
Wuzzy <Wuzzy2@mail.ru>
parents:
13504
diff
changeset
|
121 |
// TODO: Re-enable creeper when creeper is done |
ccfbc5f59c52
Hide creeper from frontend, prevent addition of creeper ammo via ammo scheme
Wuzzy <Wuzzy2@mail.ru>
parents:
13504
diff
changeset
|
122 |
or (a = amCreeper) then |
2128 | 123 |
begin |
2357
babe1a55e284
Add an empty weapon to avoid selection of weapons which aren't yet ready. Might all be useful to switch to amNothing in certain situations, like after using up all ropes, instead of bazooka.
nemo
parents:
2246
diff
changeset
|
124 |
cnt:= 0; |
2370 | 125 |
Ammoz[a].Probability:= 0 |
126 |
end; |
|
2457
ecf0c7e7995b
Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents:
2453
diff
changeset
|
127 |
ammos[a]:= cnt; |
2730
f56592281526
Remove king invulnerability, disable everything but teleport instead.
nemo
parents:
2716
diff
changeset
|
128 |
|
15241
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13875
diff
changeset
|
129 |
if (((GameFlags and gfPlaceHog) <> 0) |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13875
diff
changeset
|
130 |
or (((GameFlags and gfKing) <> 0) and ((GameFlags and gfPlaceHog) = 0))) |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
131 |
and (a <> amTeleport) and (a <> amSkip) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
132 |
and (Ammoz[a].SkipTurns < 10000) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
133 |
inc(Ammoz[a].SkipTurns,10000); |
15241
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13875
diff
changeset
|
134 |
if (((GameFlags and gfPlaceHog) <> 0) |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13875
diff
changeset
|
135 |
or (((GameFlags and gfKing) <> 0) and ((GameFlags and gfPlaceHog) = 0))) |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13875
diff
changeset
|
136 |
and (a = amTeleport) then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
137 |
ammos[a]:= AMMO_INFINITE |
10015 | 138 |
end |
139 |
||
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
140 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
141 |
ammos[a]:= AMMO_INFINITE; |
15241
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13875
diff
changeset
|
142 |
|
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13875
diff
changeset
|
143 |
if (((GameFlags and gfPlaceHog) <> 0) |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13875
diff
changeset
|
144 |
or (((GameFlags and gfKing) <> 0) and ((GameFlags and gfPlaceHog) = 0))) |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13875
diff
changeset
|
145 |
and (a = amTeleport) then |
13457
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
146 |
begin |
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
147 |
InitialCountsLocal[Pred(StoreCnt)][a]:= cnt; |
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
148 |
InitialAmmoCounts[a]:= cnt; |
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
149 |
end |
4344
23ab3bdbf218
This should fix Chip's bug with unlimited teleports. Also remove more hog placement special behaviour and just use ResetWeapons with a check against PlacingHogs mode
nemo
parents:
4339
diff
changeset
|
150 |
else |
13457
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
151 |
begin |
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
152 |
InitialCountsLocal[Pred(StoreCnt)][a]:= ammos[a]; |
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
153 |
InitialAmmoCounts[a]:= ammos[a]; |
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
154 |
end |
288 | 155 |
end; |
10015 | 156 |
|
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
157 |
for a:= Low(TAmmoType) to High(TAmmoType) do |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
158 |
begin |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
159 |
newAmmos[a]:= Ammoz[a].Ammo; |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
160 |
newAmmos[a].Count:= ammos[a] |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
161 |
end; |
10015 | 162 |
|
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
163 |
FillAmmoStore(StoresList[Pred(StoreCnt)], newAmmos) |
288 | 164 |
end; |
165 |
||
10560 | 166 |
function GetAmmoByNum(num: LongInt): PHHAmmo; |
288 | 167 |
begin |
13504
c41b16ac2e05
Clarify the wording of a few checkFails messages
Wuzzy <Wuzzy2@mail.ru>
parents:
13457
diff
changeset
|
168 |
if checkFails(num < StoreCnt, 'Invalid ammo store number', true) then |
11532 | 169 |
GetAmmoByNum:= nil |
170 |
else |
|
171 |
GetAmmoByNum:= StoresList[num] |
|
288 | 172 |
end; |
173 |
||
6924 | 174 |
function GetCurAmmoEntry(var Hedgehog: THedgehog): PAmmo; |
5272 | 175 |
begin |
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6924
diff
changeset
|
176 |
GetCurAmmoEntry:= GetAmmoEntry(Hedgehog, Hedgehog.CurAmmoType) |
5272 | 177 |
end; |
178 |
||
179 |
function GetAmmoEntry(var Hedgehog: THedgehog; am: TAmmoType): PAmmo; |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
180 |
var ammoidx, slot: LongWord; |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
181 |
begin |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
182 |
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:
3697
diff
changeset
|
183 |
begin |
5272 | 184 |
slot:= Ammoz[am].Slot; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
185 |
ammoidx:= 0; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
186 |
while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> am) do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
187 |
inc(ammoidx); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
188 |
GetAmmoEntry:= @Ammo^[slot, ammoidx]; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
189 |
if (Ammo^[slot, ammoidx].AmmoType <> am) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
190 |
GetAmmoEntry:= GetAmmoEntry(Hedgehog, amNothing) |
5676
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5640
diff
changeset
|
191 |
end; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
192 |
end; |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
193 |
|
288 | 194 |
procedure AssignStores; |
547 | 195 |
var t: LongInt; |
288 | 196 |
i: Longword; |
197 |
begin |
|
547 | 198 |
for t:= 0 to Pred(TeamsCount) do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
199 |
with TeamsArray[t]^ do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
200 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
201 |
for i:= 0 to cMaxHHIndex do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
202 |
if Hedgehogs[i].Gear <> nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
203 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
204 |
Hedgehogs[i].Ammo:= GetAmmoByNum(Hedgehogs[i].AmmoStore); |
15385
114b036522a6
King Mode: Automatically select teleport in king placement phase
Wuzzy <Wuzzy2@mail.ru>
parents:
15267
diff
changeset
|
205 |
if ((GameFlags and gfPlaceHog) <> 0) or (((GameFlags and gfKing) <> 0) and (Hedgehogs[i].King = true)) then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
206 |
Hedgehogs[i].CurAmmoType:= amTeleport |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
207 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
208 |
Hedgehogs[i].CurAmmoType:= amNothing |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
209 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
210 |
end |
288 | 211 |
end; |
212 |
||
7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7037
diff
changeset
|
213 |
procedure AddAmmo(var Hedgehog: THedgehog; ammo: TAmmoType; amt: LongWord); |
5273 | 214 |
var cnt: LongWord; |
5676
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5640
diff
changeset
|
215 |
a: PAmmo; |
5272 | 216 |
begin |
5676
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5640
diff
changeset
|
217 |
a:= GetAmmoEntry(Hedgehog, ammo); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
218 |
if (a^.AmmoType <> amNothing) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
219 |
cnt:= a^.Count |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
220 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
221 |
cnt:= 0; |
12733
353cb2ce6f9c
Fix AddAmmo setting ammo to 99 when trying to add infinite ammo
Wuzzy <Wuzzy2@mail.ru>
parents:
12691
diff
changeset
|
222 |
if (cnt >= AMMO_INFINITE) or (amt >= AMMO_INFINITE) then |
353cb2ce6f9c
Fix AddAmmo setting ammo to 99 when trying to add infinite ammo
Wuzzy <Wuzzy2@mail.ru>
parents:
12691
diff
changeset
|
223 |
cnt:= AMMO_INFINITE |
353cb2ce6f9c
Fix AddAmmo setting ammo to 99 when trying to add infinite ammo
Wuzzy <Wuzzy2@mail.ru>
parents:
12691
diff
changeset
|
224 |
else |
12671
87b3009f51c3
Fix team getting inf. ammo when stockpiling >= 100 ammo
Wuzzy <almikes@aol.com>
parents:
12649
diff
changeset
|
225 |
cnt:= min(AMMO_FINITE_MAX, cnt + amt); |
12733
353cb2ce6f9c
Fix AddAmmo setting ammo to 99 when trying to add infinite ammo
Wuzzy <Wuzzy2@mail.ru>
parents:
12691
diff
changeset
|
226 |
SetAmmo(Hedgehog, ammo, cnt); |
5272 | 227 |
end; |
228 |
||
7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7037
diff
changeset
|
229 |
procedure AddAmmo(var Hedgehog: THedgehog; ammo: TAmmoType); |
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7037
diff
changeset
|
230 |
begin |
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7037
diff
changeset
|
231 |
AddAmmo(Hedgehog, ammo, Ammoz[ammo].NumberInCase); |
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7037
diff
changeset
|
232 |
end; |
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7037
diff
changeset
|
233 |
|
6924 | 234 |
procedure SetAmmo(var Hedgehog: THedgehog; ammo: TAmmoType; cnt: LongWord); |
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
235 |
var ammos: TAmmoArray; |
371 | 236 |
slot, ami: LongInt; |
295 | 237 |
hhammo: PHHAmmo; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5273
diff
changeset
|
238 |
CurWeapon: PAmmo; |
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
239 |
a: TAmmoType; |
295 | 240 |
begin |
9660 | 241 |
if ammo = amNothing then exit; |
3407 | 242 |
{$HINTS OFF} |
295 | 243 |
FillChar(ammos, sizeof(ammos), 0); |
3407 | 244 |
{$HINTS ON} |
553
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
245 |
hhammo:= Hedgehog.Ammo; |
295 | 246 |
|
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
247 |
for a:= Low(TAmmoType) to High(TAmmoType) do |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
248 |
begin |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
249 |
ammos[a]:= Ammoz[a].Ammo; |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
250 |
ammos[a].Count:= 0 |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
251 |
end; |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
252 |
|
295 | 253 |
for slot:= 0 to cMaxSlotIndex do |
254 |
for ami:= 0 to cMaxSlotAmmoIndex do |
|
351 | 255 |
if hhammo^[slot, ami].Count > 0 then |
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
256 |
ammos[hhammo^[slot, ami].AmmoType]:= hhammo^[slot, ami]; |
295 | 257 |
|
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
258 |
ammos[ammo].Count:= cnt; |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
259 |
if ammos[ammo].Count > AMMO_INFINITE then ammos[ammo].Count:= AMMO_INFINITE; |
941
b5222ddafe1f
- Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
927
diff
changeset
|
260 |
|
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5273
diff
changeset
|
261 |
FillAmmoStore(hhammo, ammos); |
6924 | 262 |
CurWeapon:= GetCurAmmoEntry(Hedgehog); |
5345
3c5480e91951
Simplify code using 'with', convert some tabs to spaces
unc0rr
parents:
5316
diff
changeset
|
263 |
with Hedgehog, CurWeapon^ do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
264 |
if (Count = 0) or (AmmoType = amNothing) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
265 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
266 |
PackAmmo(Ammo, Ammoz[AmmoType].Slot); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
267 |
CurAmmoType:= amNothing |
15466
6031c0cfec89
Make sure AI doesn't skip after collecting ammo. Fixes bug 796
Wuzzy <Wuzzy2@mail.ru>
parents:
15385
diff
changeset
|
268 |
end; |
6031c0cfec89
Make sure AI doesn't skip after collecting ammo. Fixes bug 796
Wuzzy <Wuzzy2@mail.ru>
parents:
15385
diff
changeset
|
269 |
if Hedgehog.BotLevel <> 0 then |
6031c0cfec89
Make sure AI doesn't skip after collecting ammo. Fixes bug 796
Wuzzy <Wuzzy2@mail.ru>
parents:
15385
diff
changeset
|
270 |
Hedgehog.Gear^.AIHints := Hedgehog.Gear^.AIHints or aihAmmosChanged; |
295 | 271 |
end; |
272 |
||
371 | 273 |
procedure PackAmmo(Ammo: PHHAmmo; Slot: LongInt); |
274 |
var ami: LongInt; |
|
295 | 275 |
b: boolean; |
276 |
begin |
|
277 |
repeat |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
278 |
b:= false; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
279 |
ami:= 0; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
280 |
while (not b) and (ami < cMaxSlotAmmoIndex) do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
281 |
if (Ammo^[Slot, ami].Count = 0) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
282 |
and (Ammo^[Slot, ami + 1].Count > 0) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
283 |
b:= true |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
284 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
285 |
inc(ami); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
286 |
if b then // there is a free item in ammo stack |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
287 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
288 |
Ammo^[Slot, ami]:= Ammo^[Slot, ami + 1]; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
289 |
Ammo^[Slot, ami + 1].Count:= 0 |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
290 |
end; |
8026
4a4f21070479
merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents:
7754
diff
changeset
|
291 |
until (not b); |
6631 | 292 |
AmmoMenuInvalidated:= true; |
295 | 293 |
end; |
294 |
||
534 | 295 |
procedure OnUsedAmmo(var Hedgehog: THedgehog); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
296 |
var CurWeapon: PAmmo; |
295 | 297 |
begin |
6924 | 298 |
CurWeapon:= GetCurAmmoEntry(Hedgehog); |
534 | 299 |
with Hedgehog do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
300 |
begin |
12156
9755922396f5
Lua callback: onUsedAmmo, after using up an ammo
Wuzzy <almikes@aol.com>
parents:
11939
diff
changeset
|
301 |
if CurAmmoType <> amNothing then |
9755922396f5
Lua callback: onUsedAmmo, after using up an ammo
Wuzzy <almikes@aol.com>
parents:
11939
diff
changeset
|
302 |
ScriptCall('onUsedAmmo', ord(CurAmmoType)); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
303 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
304 |
MultiShootAttacks:= 0; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
305 |
with CurWeapon^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
306 |
if Count <> AMMO_INFINITE then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
307 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
308 |
dec(Count); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
309 |
if Count = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
310 |
begin |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
311 |
PackAmmo(Ammo, Ammoz[AmmoType].Slot); |
3931
fd04228971b3
Set ammo to amNothing after using up the current ammo. This should reduce noob fail where they blow themselves up w/ bazooka.
nemo
parents:
3836
diff
changeset
|
312 |
//SwitchNotHeldAmmo(Hedgehog); |
7754 | 313 |
if CurAmmoType = amKnife then LoadHedgehogHat(Hedgehog, Hedgehog.Hat); |
9006
552517b23882
bleah. sorry for spam. this reverts the first attempt in uAmmos
nemo
parents:
9004
diff
changeset
|
314 |
CurAmmoType:= amNothing |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
315 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
316 |
end |
3935 | 317 |
end; |
295 | 318 |
end; |
319 |
||
6770
7d2c6cdb816a
Start on adding drowning bonus to bat/firepunch/whip. AI still is not smart enough to change direction when firepunching to face the water, or change the angle of the bat.
nemo
parents:
6762
diff
changeset
|
320 |
function HHHasAmmo(var Hedgehog: THedgehog; Ammo: TAmmoType): LongWord; |
371 | 321 |
var slot, ami: LongInt; |
295 | 322 |
begin |
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6924
diff
changeset
|
323 |
HHHasAmmo:= 0; |
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6924
diff
changeset
|
324 |
Slot:= Ammoz[Ammo].Slot; |
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6924
diff
changeset
|
325 |
ami:= 0; |
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6924
diff
changeset
|
326 |
while (ami <= cMaxSlotAmmoIndex) do |
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6924
diff
changeset
|
327 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
328 |
with Hedgehog.Ammo^[Slot, ami] do |
941
b5222ddafe1f
- Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
927
diff
changeset
|
329 |
if (AmmoType = Ammo) then |
6770
7d2c6cdb816a
Start on adding drowning bonus to bat/firepunch/whip. AI still is not smart enough to change direction when firepunching to face the water, or change the angle of the bat.
nemo
parents:
6762
diff
changeset
|
330 |
if Hedgehog.Team^.Clan^.TurnNumber > Ammoz[AmmoType].SkipTurns then |
7037 | 331 |
exit(Count) |
10015 | 332 |
else |
7037 | 333 |
exit(0); |
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6924
diff
changeset
|
334 |
inc(ami) |
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6924
diff
changeset
|
335 |
end; |
295 | 336 |
end; |
337 |
||
1964 | 338 |
procedure ApplyAngleBounds(var Hedgehog: THedgehog; AmmoType: TAmmoType); |
1922 | 339 |
begin |
7341
d70478d265ec
Fix crash when hedgehog dies while switching from it
unc0rr
parents:
7337
diff
changeset
|
340 |
if Hedgehog.Gear <> nil then |
d70478d265ec
Fix crash when hedgehog dies while switching from it
unc0rr
parents:
7337
diff
changeset
|
341 |
with Hedgehog do |
d70478d265ec
Fix crash when hedgehog dies while switching from it
unc0rr
parents:
7337
diff
changeset
|
342 |
begin |
9717
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
343 |
if (AmmoType <> amNothing) then |
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
344 |
begin |
12691
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
345 |
if ((CurAmmoGear <> nil) and (CurAmmoGear^.AmmoType = amRope)) then |
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
346 |
begin |
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
347 |
CurMaxAngle:= Ammoz[amRope].maxAngle; |
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
348 |
CurMinAngle:= Ammoz[amRope].minAngle; |
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
349 |
end |
9717
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
350 |
else |
12691
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
351 |
begin |
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
352 |
CurMinAngle:= Ammoz[AmmoType].minAngle; |
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
353 |
if Ammoz[AmmoType].maxAngle <> 0 then |
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
354 |
CurMaxAngle:= Ammoz[AmmoType].maxAngle |
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
355 |
else |
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
356 |
CurMaxAngle:= cMaxAngle; |
286afe079117
Fix rope angle possible to go below 0° if having secondary weapon selected
Wuzzy <almikes@aol.com>
parents:
12671
diff
changeset
|
357 |
end; |
1964 | 358 |
|
9717
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
359 |
with Hedgehog.Gear^ do |
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
360 |
begin |
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
361 |
if Angle < CurMinAngle then |
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
362 |
Angle:= CurMinAngle; |
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
363 |
if Angle > CurMaxAngle then |
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
364 |
Angle:= CurMaxAngle; |
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
365 |
end |
7341
d70478d265ec
Fix crash when hedgehog dies while switching from it
unc0rr
parents:
7337
diff
changeset
|
366 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
367 |
end |
1922 | 368 |
end; |
369 |
||
2432
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset
|
370 |
procedure SwitchToFirstLegalAmmo(var Hedgehog: THedgehog); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
371 |
var slot, ammoidx: LongWord; |
2432
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset
|
372 |
begin |
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset
|
373 |
with Hedgehog do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
374 |
begin |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
375 |
CurAmmoType:= amNothing; |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
376 |
slot:= 0; |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
377 |
ammoidx:= 0; |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
378 |
while (slot <= cMaxSlotIndex) and |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
379 |
((Ammo^[slot, ammoidx].Count = 0) or |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
380 |
(Ammoz[Ammo^[slot, ammoidx].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber >= 0)) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
381 |
do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
382 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
383 |
while (ammoidx <= cMaxSlotAmmoIndex) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
384 |
and ((Ammo^[slot, ammoidx].Count = 0) or (Ammoz[Ammo^[slot, ammoidx].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber >= 0)) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
385 |
do inc(ammoidx); |
2432
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset
|
386 |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
387 |
if (ammoidx > cMaxSlotAmmoIndex) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
388 |
begin |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
389 |
ammoidx:= 0; |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
390 |
inc(slot) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
391 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
392 |
end; |
11532 | 393 |
if checkFails(slot <= cMaxSlotIndex, 'Ammo slot index overflow', true) then exit; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
394 |
CurAmmoType:= Ammo^[slot, ammoidx].AmmoType; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
395 |
end |
2432
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset
|
396 |
end; |
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset
|
397 |
|
553
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
398 |
procedure ApplyAmmoChanges(var Hedgehog: THedgehog); |
10123 | 399 |
var s: ansistring; |
12649
2837dee472cc
Show selected weapon again when using it in inf attack mode
Wuzzy <almikes@aol.com>
parents:
12156
diff
changeset
|
400 |
OldWeapon, CurWeapon: PAmmo; |
553
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
401 |
begin |
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
402 |
TargetPoint.X:= NoPointX; |
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
403 |
|
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
404 |
with Hedgehog do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
405 |
begin |
6924 | 406 |
CurWeapon:= GetCurAmmoEntry(Hedgehog); |
12649
2837dee472cc
Show selected weapon again when using it in inf attack mode
Wuzzy <almikes@aol.com>
parents:
12156
diff
changeset
|
407 |
OldWeapon:= GetCurAmmoEntry(Hedgehog); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
408 |
|
15804
6409d756e9da
bug #823 missing nil checks crasher introduced in r4aa19b21707d
nemo
parents:
15720
diff
changeset
|
409 |
if (Hedgehog.Gear <> nil) and (Hedgehog.Gear^.State and gstHHDriven = 0) then |
15267
4aa19b21707d
Fix cursor not being disabled when teleporting hog into water
Wuzzy <Wuzzy2@mail.ru>
parents:
15241
diff
changeset
|
410 |
Hedgehog.CurAmmoType:= amNothing |
4aa19b21707d
Fix cursor not being disabled when teleporting hog into water
Wuzzy <Wuzzy2@mail.ru>
parents:
15241
diff
changeset
|
411 |
else if (CurWeapon^.Count = 0) then |
6131 | 412 |
SwitchToFirstLegalAmmo(Hedgehog) |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
413 |
else if CurWeapon^.AmmoType = amNothing then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
414 |
Hedgehog.CurAmmoType:= amNothing; |
2431
23242609c44b
Real fix to ammo slot overflow (bug triggered by r2411 fix)
unc0rr
parents:
2409
diff
changeset
|
415 |
|
6924 | 416 |
CurWeapon:= GetCurAmmoEntry(Hedgehog); |
553
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
417 |
|
12649
2837dee472cc
Show selected weapon again when using it in inf attack mode
Wuzzy <almikes@aol.com>
parents:
12156
diff
changeset
|
418 |
// Weapon selection animation (if new ammo type) |
2837dee472cc
Show selected weapon again when using it in inf attack mode
Wuzzy <almikes@aol.com>
parents:
12156
diff
changeset
|
419 |
if CurWeapon^.AmmoType <> OldWeapon^.AmmoType then |
2837dee472cc
Show selected weapon again when using it in inf attack mode
Wuzzy <almikes@aol.com>
parents:
12156
diff
changeset
|
420 |
Timer:= 10; |
2837dee472cc
Show selected weapon again when using it in inf attack mode
Wuzzy <almikes@aol.com>
parents:
12156
diff
changeset
|
421 |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
422 |
ApplyAngleBounds(Hedgehog, CurWeapon^.AmmoType); |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
423 |
|
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3697
diff
changeset
|
424 |
with CurWeapon^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
425 |
begin |
11939
c7ec309cd685
Add Lua API function SetAmmoTexts (see issue 82)
Wuzzy <almikes@aol.com>
parents:
11534
diff
changeset
|
426 |
if length(trluaammo[Ammoz[AmmoType].NameId]) > 0 then |
c7ec309cd685
Add Lua API function SetAmmoTexts (see issue 82)
Wuzzy <almikes@aol.com>
parents:
11534
diff
changeset
|
427 |
s:= trluaammo[Ammoz[AmmoType].NameId] |
c7ec309cd685
Add Lua API function SetAmmoTexts (see issue 82)
Wuzzy <almikes@aol.com>
parents:
11534
diff
changeset
|
428 |
else |
c7ec309cd685
Add Lua API function SetAmmoTexts (see issue 82)
Wuzzy <almikes@aol.com>
parents:
11534
diff
changeset
|
429 |
s:= trammo[Ammoz[AmmoType].NameId]; |
7426
55b49cc1f33a
Changes for the benefit of pas2c. Use downto in for loops to avoid repeated calls of Random/GetRandom. Wrap nots.
nemo
parents:
7341
diff
changeset
|
430 |
if (Count <> AMMO_INFINITE) and (not (Hedgehog.Team^.ExtDriven or (Hedgehog.BotLevel > 0))) then |
10123 | 431 |
s:= s + ansistring(' (' + IntToStr(Count) + ')'); |
4807
180dbfb13903
display caption for ammotype amNothing when switched to so that players know what just happened
sheepluva
parents:
4403
diff
changeset
|
432 |
if (Propz and ammoprop_Timerable) <> 0 then |
10123 | 433 |
s:= s + ansistring(', ' + IntToStr(Timer div 1000) + ' ') + trammo[sidSeconds]; |
15804
6409d756e9da
bug #823 missing nil checks crasher introduced in r4aa19b21707d
nemo
parents:
15720
diff
changeset
|
434 |
if (Hedgehog.Gear <> nil) and (Hedgehog.Gear^.State and gstHHDriven <> 0) then |
15267
4aa19b21707d
Fix cursor not being disabled when teleporting hog into water
Wuzzy <Wuzzy2@mail.ru>
parents:
15241
diff
changeset
|
435 |
AddCaption(s, Team^.Clan^.Color, capgrpAmmoinfo); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
436 |
if (Propz and ammoprop_NeedTarget) <> 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
437 |
begin |
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10560
diff
changeset
|
438 |
if Gear <> nil then Gear^.State:= Gear^.State or gstChooseTarget; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
439 |
isCursorVisible:= true |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
440 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
441 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
442 |
begin |
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10560
diff
changeset
|
443 |
if Gear <> nil then Gear^.State:= Gear^.State and (not gstChooseTarget); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
444 |
isCursorVisible:= false |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
445 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
446 |
end |
3935 | 447 |
end; |
553
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
448 |
end; |
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
449 |
|
1922 | 450 |
procedure SwitchNotHeldAmmo(var Hedgehog: THedgehog); |
553
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
451 |
begin |
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
452 |
with Hedgehog do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
453 |
if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_DontHold) <> 0) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
454 |
or (Ammoz[CurAmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber >= 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
455 |
SwitchToFirstLegalAmmo(Hedgehog); |
553
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
456 |
end; |
5478386d935f
- Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset
|
457 |
|
783 | 458 |
procedure SetWeapon(weap: TAmmoType); |
459 |
begin |
|
1850 | 460 |
ParseCommand('/setweap ' + char(weap), true) |
783 | 461 |
end; |
462 |
||
1784 | 463 |
procedure DisableSomeWeapons; |
464 |
var i, slot, a: Longword; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
465 |
t: TAmmoType; |
1784 | 466 |
begin |
467 |
for i:= 0 to Pred(StoreCnt) do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
468 |
for slot:= 0 to cMaxSlotIndex do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
469 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
470 |
for a:= 0 to cMaxSlotAmmoIndex do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
471 |
with StoresList[i]^[slot, a] do |
3697 | 472 |
if (Propz and ammoprop_NotBorder) <> 0 then |
3319 | 473 |
begin |
474 |
Count:= 0; |
|
13457
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
475 |
InitialCountsLocal[i][AmmoType]:= 0 |
3319 | 476 |
end; |
1784 | 477 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
478 |
PackAmmo(StoresList[i], slot) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
479 |
end; |
1784 | 480 |
|
481 |
for t:= Low(TAmmoType) to High(TAmmoType) do |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
482 |
if (Ammoz[t].Ammo.Propz and ammoprop_NotBorder) <> 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
483 |
Ammoz[t].Probability:= 0 |
1784 | 484 |
end; |
485 |
||
6898 | 486 |
procedure SetAmmoLoadout(var s: shortstring); |
3346 | 487 |
begin |
488 |
ammoLoadout:= s; |
|
489 |
end; |
|
490 |
||
6898 | 491 |
procedure SetAmmoProbability(var s: shortstring); |
3346 | 492 |
begin |
493 |
ammoProbability:= s; |
|
494 |
end; |
|
495 |
||
6898 | 496 |
procedure SetAmmoDelay(var s: shortstring); |
3346 | 497 |
begin |
498 |
ammoDelay:= s; |
|
499 |
end; |
|
500 |
||
6898 | 501 |
procedure SetAmmoReinforcement(var s: shortstring); |
3346 | 502 |
begin |
503 |
ammoReinforcement:= s; |
|
504 |
end; |
|
505 |
||
15241
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13875
diff
changeset
|
506 |
// Restore indefinitely disabled weapons and initial weapon counts. |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset
|
507 |
procedure ResetWeapons; |
3955 | 508 |
var i, t: Longword; |
509 |
a: TAmmoType; |
|
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
510 |
newAmmos: TAmmoArray; |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset
|
511 |
begin |
3955 | 512 |
for t:= 0 to Pred(TeamsCount) do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
513 |
with TeamsArray[t]^ do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
514 |
for i:= 0 to cMaxHHIndex do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
515 |
Hedgehogs[i].CurAmmoType:= amNothing; |
6519 | 516 |
|
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
517 |
for a:= Low(TAmmoType) to High(TAmmoType) do |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
518 |
newAmmos[a]:= Ammoz[a].Ammo; |
10015 | 519 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
520 |
for i:= 0 to Pred(StoreCnt) do |
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
521 |
begin |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
522 |
for a:= Low(TAmmoType) to High(TAmmoType) do |
13457
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
523 |
newAmmos[a].Count:= InitialCountsLocal[i][a]; |
9391
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
524 |
FillAmmoStore(StoresList[i], newAmmos); |
2af25494f3bb
Preserve weapon settings in AddAmmo. Fixes issue 450.
unc0rr
parents:
9080
diff
changeset
|
525 |
end; |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset
|
526 |
|
3955 | 527 |
for a:= Low(TAmmoType) to High(TAmmoType) do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
528 |
if Ammoz[a].SkipTurns >= 10000 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
529 |
dec(Ammoz[a].SkipTurns,10000) |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset
|
530 |
end; |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset
|
531 |
|
4401 | 532 |
|
533 |
||
534 |
procedure chAddAmmoStore(var descr: shortstring); |
|
535 |
begin |
|
10015 | 536 |
descr:= ''; // avoid compiler hint |
537 |
AddAmmoStore |
|
4401 | 538 |
end; |
539 |
||
3038 | 540 |
procedure initModule; |
6762
85ba0c55d077
Set default empty ammo sets. Current mission handling appears to not pass any default ammo set, so script was never getting a chance to set its own.
nemo
parents:
6700
diff
changeset
|
541 |
var i: Longword; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2715
diff
changeset
|
542 |
begin |
6898 | 543 |
RegisterVariable('ammloadt', @SetAmmoLoadout, false); |
544 |
RegisterVariable('ammdelay', @SetAmmoDelay, false); |
|
545 |
RegisterVariable('ammprob', @SetAmmoProbability, false); |
|
546 |
RegisterVariable('ammreinf', @SetAmmoReinforcement, false); |
|
547 |
RegisterVariable('ammstore', @chAddAmmoStore , false); |
|
4401 | 548 |
|
9717
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
549 |
CurMinAngle:= 0; |
b8b7ef99a084
don't let (am)Nothing change allowed aiming angles. e.g. fixes aiming problems when on last rope. please test for possible side effects (flying saucer and whatnot)
sheepluva
parents:
9660
diff
changeset
|
550 |
CurMaxAngle:= cMaxAngle; |
3346 | 551 |
StoreCnt:= 0; |
552 |
ammoLoadout:= ''; |
|
553 |
ammoProbability:= ''; |
|
554 |
ammoDelay:= ''; |
|
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:
3943
diff
changeset
|
555 |
ammoReinforcement:= ''; |
6762
85ba0c55d077
Set default empty ammo sets. Current mission handling appears to not pass any default ammo set, so script was never getting a chance to set its own.
nemo
parents:
6700
diff
changeset
|
556 |
for i:=1 to ord(High(TAmmoType)) do |
85ba0c55d077
Set default empty ammo sets. Current mission handling appears to not pass any default ammo set, so script was never getting a chance to set its own.
nemo
parents:
6700
diff
changeset
|
557 |
begin |
85ba0c55d077
Set default empty ammo sets. Current mission handling appears to not pass any default ammo set, so script was never getting a chance to set its own.
nemo
parents:
6700
diff
changeset
|
558 |
ammoLoadout:= ammoLoadout + '0'; |
85ba0c55d077
Set default empty ammo sets. Current mission handling appears to not pass any default ammo set, so script was never getting a chance to set its own.
nemo
parents:
6700
diff
changeset
|
559 |
ammoProbability:= ammoProbability + '0'; |
85ba0c55d077
Set default empty ammo sets. Current mission handling appears to not pass any default ammo set, so script was never getting a chance to set its own.
nemo
parents:
6700
diff
changeset
|
560 |
ammoDelay:= ammoDelay + '0'; |
85ba0c55d077
Set default empty ammo sets. Current mission handling appears to not pass any default ammo set, so script was never getting a chance to set its own.
nemo
parents:
6700
diff
changeset
|
561 |
ammoReinforcement:= ammoReinforcement + '0' |
85ba0c55d077
Set default empty ammo sets. Current mission handling appears to not pass any default ammo set, so script was never getting a chance to set its own.
nemo
parents:
6700
diff
changeset
|
562 |
end; |
13457
38814954a248
Fix GetAmmo getting wrong ammo count
Wuzzy <Wuzzy2@mail.ru>
parents:
13456
diff
changeset
|
563 |
FillChar(InitialCountsLocal, sizeof(InitialCountsLocal), 0) |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2715
diff
changeset
|
564 |
end; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2715
diff
changeset
|
565 |
|
3038 | 566 |
procedure freeModule; |
2715
0e4e0db79e2a
Free up some unfreed memory. Needed for Koda's iphone lib work
nemo
parents:
2630
diff
changeset
|
567 |
var i: LongWord; |
0e4e0db79e2a
Free up some unfreed memory. Needed for Koda's iphone lib work
nemo
parents:
2630
diff
changeset
|
568 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2860
diff
changeset
|
569 |
if StoreCnt > 0 then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
570 |
for i:= 0 to Pred(StoreCnt) do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6519
diff
changeset
|
571 |
Dispose(StoresList[i]) |
2715
0e4e0db79e2a
Free up some unfreed memory. Needed for Koda's iphone lib work
nemo
parents:
2630
diff
changeset
|
572 |
end; |
0e4e0db79e2a
Free up some unfreed memory. Needed for Koda's iphone lib work
nemo
parents:
2630
diff
changeset
|
573 |
|
288 | 574 |
end. |