author  nemo 
Sun, 14 Nov 2010 12:53:33 0500  
branch  0.9.14.1 
changeset 4330  1e03ca5d4311 
parent 4234  60920aeb1606 
child 4339  58d4733c9cad 
permissions  rwrr 
393  1 
(* 
1066  2 
* Hedgewars, a free turn based strategy game 
883  3 
* Copyright (c) 20062008 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 

16 
* Foundation, Inc., 59 Temple Place  Suite 330, Boston, MA 021111307, USA 

17 
*) 

18 

2630  19 
{$INCLUDE "options.inc"} 
20 

288  21 
unit uAmmos; 
22 
interface 

3033
2a8f385ab466
FillAmmoStore is reused  check for before start of play.
nemo
parents:
3030
diff
changeset

23 
uses uConsts, uTeams, uStats; 
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; 
29 
procedure SetAmmoLoadout(s: shortstring); 

30 
procedure SetAmmoProbability(s: shortstring); 

31 
procedure SetAmmoDelay(s: shortstring); 

32 
procedure SetAmmoReinforcement(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); 
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

35 
function HHHasAmmo(var Hedgehog: THedgehog; Ammo: TAmmoType): boolean; 
371  36 
procedure PackAmmo(Ammo: PHHAmmo; Slot: LongInt); 
534  37 
procedure OnUsedAmmo(var Hedgehog: THedgehog); 
1964  38 
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

39 
procedure ApplyAmmoChanges(var Hedgehog: THedgehog); 
1922  40 
procedure SwitchNotHeldAmmo(var Hedgehog: THedgehog); 
783  41 
procedure SetWeapon(weap: TAmmoType); 
1784  42 
procedure DisableSomeWeapons; 
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset

43 
procedure ResetWeapons; 
3405  44 
function GetAmmoByNum(num: Longword): PHHAmmo; 
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

45 
function GetAmmoEntry(var Hedgehog: THedgehog): PAmmo; 
288  46 

4143
eb7981f34800
Remove the last vestiges of the shoppa hack by adding 2 spinners for percentage health and amount of health in crate, also update translations and increase SD spinner (some users have requested it)
henek
parents:
4141
diff
changeset

47 
var StoreCnt: Longword; 
1966  48 

288  49 
implementation 
3935  50 
uses uMisc, uGears, uWorld, uLocale, uConsole, uMobile; 
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2715
diff
changeset

51 

295  52 
type TAmmoCounts = array[TAmmoType] of Longword; 
288  53 
var StoresList: array[0..Pred(cMaxHHs)] of PHHAmmo; 
3346  54 
ammoLoadout, ammoProbability, ammoDelay, ammoReinforcement: shortstring; 
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

55 
InitialCounts: array[0..Pred(cMaxHHs)] of TAmmoCounts; 
288  56 

295  57 
procedure FillAmmoStore(Ammo: PHHAmmo; var cnts: TAmmoCounts); 
288  58 
var mi: array[0..cMaxSlotIndex] of byte; 
59 
a: TAmmoType; 

295  60 
begin 
3407  61 
{$HINTS OFF} 
295  62 
FillChar(mi, sizeof(mi), 0); 
3407  63 
{$HINTS ON} 
295  64 
FillChar(Ammo^, sizeof(Ammo^), 0); 
65 
for a:= Low(TAmmoType) to High(TAmmoType) do 

2764  66 
begin 
295  67 
if cnts[a] > 0 then 
68 
begin 

69 
TryDo(mi[Ammoz[a].Slot] <= cMaxSlotAmmoIndex, 'Ammo slot overflow', true); 

351  70 
Ammo^[Ammoz[a].Slot, mi[Ammoz[a].Slot]]:= Ammoz[a].Ammo; 
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

71 
with Ammo^[Ammoz[a].Slot, mi[Ammoz[a].Slot]] do 
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

72 
begin 
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

73 
Count:= cnts[a]; 
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

74 
if (TotalRounds < 0) and ((GameFlags and gfPlaceHog) <> 0) and (a = amTeleport) then Count:= AMMO_INFINITE; 
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

75 
end; 
295  76 
inc(mi[Ammoz[a].Slot]) 
77 
end 

3697  78 
else if (TotalRounds < 0) and ((GameFlags and gfPlaceHog) <> 0) and (a = amTeleport) then 
2764  79 
begin 
80 
TryDo(mi[Ammoz[a].Slot] <= cMaxSlotAmmoIndex, 'Ammo slot overflow', true); 

81 
Ammo^[Ammoz[a].Slot, mi[Ammoz[a].Slot]]:= Ammoz[a].Ammo; 

82 

2767  83 
Ammo^[Ammoz[a].Slot, mi[Ammoz[a].Slot]].Count:= AMMO_INFINITE; 
2764  84 

85 
inc(mi[Ammoz[a].Slot]) 

86 
end 

87 
end 

295  88 
end; 
89 

3346  90 
procedure AddAmmoStore; 
3255
6d6f4241debe
Alter distribution of probabilities from frontend, allow utility crates in shoppa if probabilities permit (still ban health crates)
nemo
parents:
3114
diff
changeset

91 
const probability: array [0..8] of LongWord = (0,20,30,60,100,200,400,600,800); 
295  92 
var cnt: Longword; 
93 
a: TAmmoType; 

94 
ammos: TAmmoCounts; 

288  95 
begin 
3346  96 
TryDo((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)))), 'Incomplete or missing ammo scheme set (incompatible frontend or demo/save?)', true); 
288  97 

98 
inc(StoreCnt); 

99 
TryDo(StoreCnt <= cMaxHHs, 'Ammo stores overflow', true); 

100 

101 
new(StoresList[Pred(StoreCnt)]); 

102 

103 
for a:= Low(TAmmoType) to High(TAmmoType) do 

104 
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

105 
if a <> amNothing then 
1895  106 
begin 
3346  107 
Ammoz[a].Probability:= probability[byte(ammoProbability[ord(a)])  byte('0')]; 
108 
Ammoz[a].SkipTurns:= (byte(ammoDelay[ord(a)])  byte('0')); 

109 
Ammoz[a].NumberInCase:= (byte(ammoReinforcement[ord(a)])  byte('0')); 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

110 
if (TrainingFlags and tfIgnoreDelays) <> 0 then Ammoz[a].SkipTurns:= 0; 
3346  111 
cnt:= byte(ammoLoadout[ord(a)])  byte('0'); 
2370  112 
// 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

113 
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

114 
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

115 
cnt:= AMMO_INFINITE; 
2370  116 
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

117 
end; 
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

118 
if Ammoz[a].NumberInCase = 0 then Ammoz[a].Probability:= 0; 
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

119 

2370  120 
// avoid things we already have by scheme 
2461  121 
// merge this into DisableSomeWeapons ? 
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

122 
if ((a = amLowGravity) and ((GameFlags and gfLowGravity) <> 0)) or 
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

123 
((a = amInvulnerable) and ((GameFlags and gfInvulnerable) <> 0)) or 
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 
((a = amLaserSight) and ((GameFlags and gfLaserSight) <> 0)) or 
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

125 
((a = amVampiric) and ((GameFlags and gfVampiric) <> 0)) then 
2128  126 
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

127 
cnt:= 0; 
2370  128 
Ammoz[a].Probability:= 0 
129 
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

130 
ammos[a]:= cnt; 
2730
f56592281526
Remove king invulnerability, disable everything but teleport instead.
nemo
parents:
2716
diff
changeset

131 

3697  132 
if ((GameFlags and gfKing) <> 0) and ((GameFlags and gfPlaceHog) = 0) and (Ammoz[a].SkipTurns = 0) and (a <> amTeleport) and (a <> amSkip) then 
2732
d893901eff4a
Only add turn timeout for weapons that don't already have a timeout
nemo
parents:
2731
diff
changeset

133 
Ammoz[a].SkipTurns:= 1; 
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset

134 

2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset

135 
if ((GameFlags and gfPlaceHog) <> 0) and 
3697  136 
(a <> amTeleport) and (a <> amSkip) and 
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset

137 
(Ammoz[a].SkipTurns < 10000) then inc(Ammoz[a].SkipTurns,10000) 
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

138 
end 
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

139 
else ammos[a]:= AMMO_INFINITE; 
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

140 
InitialCounts[Pred(StoreCnt)][a]:= ammos[a]; 
288  141 
end; 
295  142 
FillAmmoStore(StoresList[Pred(StoreCnt)], ammos) 
288  143 
end; 
144 

145 
function GetAmmoByNum(num: Longword): PHHAmmo; 

146 
begin 

147 
TryDo(num < StoreCnt, 'Invalid store number', true); 

351  148 
exit(StoresList[num]) 
288  149 
end; 
150 

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

151 
function GetAmmoEntry(var Hedgehog: THedgehog): PAmmo; 
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

152 
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

153 
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

154 
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

155 
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

156 
slot:= Ammoz[CurAmmoType].Slot; 
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

157 
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

158 
while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> CurAmmoType) do inc(ammoidx); 
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

159 
GetAmmoEntry:= @Ammo^[slot, ammoidx]; 
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

160 
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

161 
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

162 

288  163 
procedure AssignStores; 
547  164 
var t: LongInt; 
288  165 
i: Longword; 
166 
begin 

547  167 
for t:= 0 to Pred(TeamsCount) do 
168 
with TeamsArray[t]^ do 

288  169 
begin 
170 
for i:= 0 to cMaxHHIndex do 

547  171 
if Hedgehogs[i].Gear <> nil then 
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

172 
begin 
547  173 
Hedgehogs[i].Ammo:= GetAmmoByNum(Hedgehogs[i].AmmoStore); 
4330  174 
if (GameFlags and gfPlaceHog) <> 0 then 
175 
Hedgehogs[i].CurAmmoType:= amTeleport 

176 
else 

177 
Hedgehogs[i].CurAmmoType:= amNothing 

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

178 
end 
288  179 
end 
180 
end; 

181 

553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

182 
procedure AddAmmo(var Hedgehog: THedgehog; ammo: TAmmoType); 
295  183 
var ammos: TAmmoCounts; 
371  184 
slot, ami: LongInt; 
295  185 
hhammo: PHHAmmo; 
186 
begin 

3407  187 
{$HINTS OFF} 
295  188 
FillChar(ammos, sizeof(ammos), 0); 
3407  189 
{$HINTS ON} 
553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

190 
hhammo:= Hedgehog.Ammo; 
295  191 

192 
for slot:= 0 to cMaxSlotIndex do 

193 
for ami:= 0 to cMaxSlotAmmoIndex do 

351  194 
if hhammo^[slot, ami].Count > 0 then 
195 
ammos[hhammo^[slot, ami].AmmoType]:= hhammo^[slot, ami].Count; 

295  196 

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

197 
if ammos[ammo] <> AMMO_INFINITE then 
b5222ddafe1f
 Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
927
diff
changeset

198 
begin 
b5222ddafe1f
 Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
927
diff
changeset

199 
inc(ammos[ammo], Ammoz[ammo].NumberInCase); 
b5222ddafe1f
 Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
927
diff
changeset

200 
if ammos[ammo] > AMMO_INFINITE then ammos[ammo]:= AMMO_INFINITE 
b5222ddafe1f
 Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
927
diff
changeset

201 
end; 
b5222ddafe1f
 Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
927
diff
changeset

202 

295  203 
FillAmmoStore(hhammo, ammos) 
204 
end; 

205 

371  206 
procedure PackAmmo(Ammo: PHHAmmo; Slot: LongInt); 
207 
var ami: LongInt; 

295  208 
b: boolean; 
209 
begin 

210 
repeat 

211 
b:= false; 

212 
ami:= 0; 

213 
while (not b) and (ami < cMaxSlotAmmoIndex) do 

351  214 
if (Ammo^[Slot, ami].Count = 0) 
215 
and (Ammo^[Slot, ami + 1].Count > 0) then b:= true 

553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

216 
else inc(ami); 
2221  217 
if b then // there is a free item in ammo stack 
295  218 
begin 
351  219 
Ammo^[Slot, ami]:= Ammo^[Slot, ami + 1]; 
220 
Ammo^[Slot, ami + 1].Count:= 0 

295  221 
end; 
222 
until not b; 

223 
end; 

224 

534  225 
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

226 
var CurWeapon: PAmmo; 
295  227 
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

228 
CurWeapon:= GetAmmoEntry(Hedgehog); 
534  229 
with Hedgehog do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

230 
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

231 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

232 
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

233 
with CurWeapon^ do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

234 
if Count <> AMMO_INFINITE then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

235 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

236 
dec(Count); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

237 
if Count = 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

238 
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

239 
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

240 
//SwitchNotHeldAmmo(Hedgehog); 
4234  241 
ShowCrossHair:= false; 
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

242 
CurAmmoType:= amNothing 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

243 
end 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

244 
end 
3935  245 
end; 
3952
d6412423da45
moved some utilities to a separate column with round buttons
koda
parents:
3943
diff
changeset

246 
perfExt_AmmoUpdate; 
295  247 
end; 
248 

553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

249 
function HHHasAmmo(var Hedgehog: THedgehog; Ammo: TAmmoType): boolean; 
371  250 
var slot, ami: LongInt; 
295  251 
begin 
252 
Slot:= Ammoz[Ammo].Slot; 

253 
ami:= 0; 

351  254 
while (ami <= cMaxSlotAmmoIndex) do 
295  255 
begin 
553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

256 
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

257 
if (AmmoType = Ammo) then 
b5222ddafe1f
 Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
927
diff
changeset

258 
exit((Count > 0) and (Hedgehog.Team^.Clan^.TurnNumber > Ammoz[AmmoType].SkipTurns)); 
295  259 
inc(ami) 
351  260 
end; 
261 
HHHasAmmo:= false 

295  262 
end; 
263 

1964  264 
procedure ApplyAngleBounds(var Hedgehog: THedgehog; AmmoType: TAmmoType); 
1922  265 
begin 
266 
with Hedgehog do 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

267 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

268 
CurMinAngle:= Ammoz[AmmoType].minAngle; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

269 
if Ammoz[AmmoType].maxAngle <> 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

270 
CurMaxAngle:= Ammoz[AmmoType].maxAngle 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

271 
else 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

272 
CurMaxAngle:= cMaxAngle; 
1964  273 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

274 
with Hedgehog.Gear^ do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

275 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

276 
if Angle < CurMinAngle then Angle:= CurMinAngle; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

277 
if Angle > CurMaxAngle then Angle:= CurMaxAngle; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

278 
end 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

279 
end 
1922  280 
end; 
281 

2432
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset

282 
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

283 
var slot, ammoidx: LongWord; 
2432
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset

284 
begin 
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset

285 
with Hedgehog do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

286 
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

287 
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

288 
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

289 
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

290 
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

291 
((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

292 
(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

293 
do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

294 
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

295 
while (ammoidx <= cMaxSlotAmmoIndex) 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

296 
((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

297 
(Ammoz[Ammo^[slot, ammoidx].AmmoType].SkipTurns  CurrentTeam^.Clan^.TurnNumber >= 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

298 
do inc(ammoidx); 
2432
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset

299 

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

300 
if (ammoidx > cMaxSlotAmmoIndex) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

301 
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

302 
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

303 
inc(slot) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

304 
end 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

305 
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

306 
TryDo(slot <= cMaxSlotIndex, 'Ammo slot index overflow', true); 
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

307 
CurAmmoType:= Ammo^[slot, ammoidx].AmmoType; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

308 
end 
2432
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset

309 
end; 
1a0bb82d55f0
Switch to first legal ammo when hedgehog can't hold current one
unc0rr
parents:
2431
diff
changeset

310 

553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

311 
procedure ApplyAmmoChanges(var Hedgehog: THedgehog); 
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

312 
var s: shortstring; 
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

313 
CurWeapon: PAmmo; 
553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

314 
begin 
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

315 
TargetPoint.X:= NoPointX; 
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

316 

5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

317 
with Hedgehog do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

318 
begin 
3030  319 
Timer:= 10; 
2409
dbf195c3e09c
fix a very rare bug in which CurSlot becomes greater than cMaxCurSlot
koda
parents:
2370
diff
changeset

320 

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

321 
CurWeapon:= GetAmmoEntry(Hedgehog); 
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

322 

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

323 
if (CurWeapon^.Count = 0) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

324 
SwitchToFirstLegalAmmo(Hedgehog); 
2431
23242609c44b
Real fix to ammo slot overflow (bug triggered by r2411 fix)
unc0rr
parents:
2409
diff
changeset

325 

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

326 
CurWeapon:= GetAmmoEntry(Hedgehog); 
553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

327 

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

328 
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

329 

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

330 
with CurWeapon^ do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

331 
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

332 
if AmmoType <> amNothing 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

333 
begin 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

334 
s:= trammo[Ammoz[AmmoType].NameId]; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

335 
if (Count <> AMMO_INFINITE) and not (Hedgehog.Team^.ExtDriven or (Hedgehog.BotLevel > 0)) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

336 
s:= s + ' (' + IntToStr(Count) + ')'; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

337 
if (Propz and ammoprop_Timerable) <> 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

338 
s:= s + ', ' + inttostr(Timer div 1000) + ' ' + trammo[sidSeconds]; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

339 
AddCaption(s, Team^.Clan^.Color, capgrpAmmoinfo); 
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

340 
end; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

341 
if (Propz and ammoprop_NeedTarget) <> 0 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

342 
then begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

343 
Gear^.State:= Gear^.State or gstHHChooseTarget; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

344 
isCursorVisible:= true 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

345 
end else begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

346 
Gear^.State:= Gear^.State and not gstHHChooseTarget; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

347 
isCursorVisible:= false 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

348 
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

349 
if (CurAmmoGear <> nil) and ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) then 
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

350 
ShowCrosshair:= (Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_NoCrossHair) = 0 
3114
3a3d1ee2ebd0
Tidier way to handle crosshair drawing. show/hide based on CurAmmoGear for alt attack weps
nemo
parents:
3075
diff
changeset

351 
else 
3a3d1ee2ebd0
Tidier way to handle crosshair drawing. show/hide based on CurAmmoGear for alt attack weps
nemo
parents:
3075
diff
changeset

352 
ShowCrosshair:= (Propz and ammoprop_NoCrosshair) = 0; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

353 
end 
3935  354 
end; 
553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

355 
end; 
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

356 

1922  357 
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

358 
begin 
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

359 
with 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:
3697
diff
changeset

360 
if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_DontHold) <> 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

361 
(Ammoz[CurAmmoType].SkipTurns  CurrentTeam^.Clan^.TurnNumber >= 0) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

362 
SwitchToFirstLegalAmmo(Hedgehog); 
553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

363 
end; 
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
547
diff
changeset

364 

783  365 
procedure SetWeapon(weap: TAmmoType); 
366 
begin 

1850  367 
ParseCommand('/setweap ' + char(weap), true) 
783  368 
end; 
369 

1784  370 
procedure DisableSomeWeapons; 
371 
var i, slot, a: Longword; 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

372 
t: TAmmoType; 
1784  373 
begin 
374 
for i:= 0 to Pred(StoreCnt) do 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

375 
for slot:= 0 to cMaxSlotIndex do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

376 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

377 
for a:= 0 to cMaxSlotAmmoIndex do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

378 
with StoresList[i]^[slot, a] do 
3697  379 
if (Propz and ammoprop_NotBorder) <> 0 then 
3319  380 
begin 
381 
Count:= 0; 

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

382 
InitialCounts[i][AmmoType]:= 0 
3319  383 
end; 
1784  384 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

385 
PackAmmo(StoresList[i], slot) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

386 
end; 
1784  387 

388 
for t:= Low(TAmmoType) to High(TAmmoType) do 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

389 
if (Ammoz[t].Ammo.Propz and ammoprop_NotBorder) <> 0 then Ammoz[t].Probability:= 0 
1784  390 
end; 
391 

3346  392 
procedure SetAmmoLoadout(s: shortstring); 
393 
begin 

394 
ammoLoadout:= s; 

395 
end; 

396 

397 
procedure SetAmmoProbability(s: shortstring); 

398 
begin 

399 
ammoProbability:= s; 

400 
end; 

401 

402 
procedure SetAmmoDelay(s: shortstring); 

403 
begin 

404 
ammoDelay:= s; 

405 
end; 

406 

407 
procedure SetAmmoReinforcement(s: shortstring); 

408 
begin 

409 
ammoReinforcement:= s; 

410 
end; 

411 

2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset

412 
// Restore indefinitely disabled weapons and initial weapon counts. Only used for hog placement right now 
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset

413 
procedure ResetWeapons; 
3955  414 
var i, t: Longword; 
415 
a: TAmmoType; 

2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset

416 
begin 
3955  417 
for t:= 0 to Pred(TeamsCount) do 
418 
with TeamsArray[t]^ do 

419 
for i:= 0 to cMaxHHIndex do 

420 
if Hedgehogs[i].Gear <> nil then 

421 
FillAmmoStore(Hedgehogs[i].Ammo, InitialCounts[Hedgehogs[i].AmmoStore]); 

2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset

422 

3955  423 
for a:= Low(TAmmoType) to High(TAmmoType) do 
424 
if Ammoz[a].SkipTurns >= 10000 then 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

425 
end; 
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2732
diff
changeset

426 

3038  427 
procedure initModule; 
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2715
diff
changeset

428 
begin 
3346  429 
StoreCnt:= 0; 
430 
ammoLoadout:= ''; 

431 
ammoProbability:= ''; 

432 
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

433 
ammoReinforcement:= ''; 
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

434 
FillChar(InitialCounts, sizeof(InitialCounts), 0) 
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2715
diff
changeset

435 
end; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2715
diff
changeset

436 

3038  437 
procedure freeModule; 
2715
0e4e0db79e2a
Free up some unfreed memory. Needed for Koda's iphone lib work
nemo
parents:
2630
diff
changeset

438 
var i: LongWord; 
0e4e0db79e2a
Free up some unfreed memory. Needed for Koda's iphone lib work
nemo
parents:
2630
diff
changeset

439 
begin 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2860
diff
changeset

440 
if StoreCnt > 0 then 
3052  441 
for i:= 0 to Pred(StoreCnt) do Dispose(StoresList[i]) 
2715
0e4e0db79e2a
Free up some unfreed memory. Needed for Koda's iphone lib work
nemo
parents:
2630
diff
changeset

442 
end; 
0e4e0db79e2a
Free up some unfreed memory. Needed for Koda's iphone lib work
nemo
parents:
2630
diff
changeset

443 

288  444 
end. 