author | nemo |
Sat, 08 Oct 2011 00:34:41 -0400 | |
changeset 6097 | db10abae541f |
parent 5991 | c3b7064d9226 |
child 5995 | 647d52370ce9 |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
4976 | 3 |
* Copyright (c) 2004-2011 Andrey Korotaev <unC0Rr@gmail.com> |
4 | 4 |
* |
183 | 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 |
|
4 | 8 |
* |
183 | 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. |
|
4 | 13 |
* |
183 | 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 02111-1307, USA |
|
4 | 17 |
*) |
18 |
||
2599 | 19 |
{$INCLUDE "options.inc"} |
2587
0dfa56a8513c
fix a segfault in the iphone simulator by moving options.inc at the beginning of the file
koda
parents:
2586
diff
changeset
|
20 |
|
4 | 21 |
unit uTeams; |
22 |
interface |
|
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4218
diff
changeset
|
23 |
uses uConsts, uKeys, uGears, uRandom, uFloat, uStats, uVisualGears, uCollisions, GLunit, uSound, uTypes; |
534 | 24 |
|
3038 | 25 |
procedure initModule; |
26 |
procedure freeModule; |
|
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
27 |
|
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
28 |
function AddTeam(TeamColor: Longword): PTeam; |
4 | 29 |
procedure SwitchHedgehog; |
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
30 |
procedure AfterSwitchHedgehog; |
4 | 31 |
procedure InitTeams; |
32 |
function TeamSize(p: PTeam): Longword; |
|
47 | 33 |
procedure RecountTeamHealth(team: PTeam); |
72 | 34 |
procedure RestoreTeamsFromSave; |
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
35 |
function CheckForWin: boolean; |
2040 | 36 |
procedure TeamGoneEffect(var Team: TTeam); |
4 | 37 |
|
38 |
implementation |
|
4479
59e11a5a3bfa
Add script hook onNewTurn to the end of AfterSwitchHedgehog. This should signal the very start of a new turn, immediately after CurrentTeam is switched.
nemo
parents:
4465
diff
changeset
|
39 |
uses uLocale, uAmmos, uChat, uMobile, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug, uScript; |
4377 | 40 |
|
371 | 41 |
const MaxTeamHealth: LongInt = 0; |
4 | 42 |
|
92
0c359a7a2356
- Fix win message to appear only after all hedgehogs death
unc0rr
parents:
89
diff
changeset
|
43 |
function CheckForWin: boolean; |
576 | 44 |
var AliveClan: PClan; |
306 | 45 |
s: shortstring; |
1011 | 46 |
t, AliveCount, i, j: LongInt; |
83 | 47 |
begin |
548 | 48 |
AliveCount:= 0; |
549 | 49 |
for t:= 0 to Pred(ClansCount) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
50 |
if ClansArray[t]^.ClanHealth > 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
51 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
52 |
inc(AliveCount); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
53 |
AliveClan:= ClansArray[t] |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
54 |
end; |
548 | 55 |
|
1299 | 56 |
if (AliveCount > 1) |
57 |
or ((AliveCount = 1) and ((GameFlags and gfOneClanMode) <> 0)) then exit(false); |
|
351 | 58 |
CheckForWin:= true; |
83 | 59 |
|
60 |
TurnTimeLeft:= 0; |
|
3774 | 61 |
ReadyTimeLeft:= 0; |
4014
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
62 |
if not GameOver then |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
63 |
begin |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
64 |
if AliveCount = 0 then |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
65 |
begin // draw |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
66 |
AddCaption(trmsg[sidDraw], cWhiteColor, capgrpGameState); |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
67 |
SendStat(siGameResult, trmsg[sidDraw]); |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
68 |
AddGear(0, 0, gtATFinishGame, 0, _0, _0, 3000) |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
69 |
end else // win |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
70 |
with AliveClan^ do |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
71 |
begin |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
72 |
if TeamsNumber = 1 then |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
73 |
s:= Format(shortstring(trmsg[sidWinner]), Teams[0]^.TeamName) // team wins |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
74 |
else |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
75 |
s:= Format(shortstring(trmsg[sidWinner]), Teams[0]^.TeamName); // clan wins |
549 | 76 |
|
4014
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
77 |
for j:= 0 to Pred(TeamsNumber) do |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
78 |
with Teams[j]^ do |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
79 |
for i:= 0 to cMaxHHIndex do |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
80 |
with Hedgehogs[i] do |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
81 |
if (Gear <> nil) then |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
82 |
Gear^.State:= gstWinner; |
4978 | 83 |
if Flawless then |
5638
e35ba2a400d8
Try to avoid overlapping voices for major statements (not things like byebye or oof)
nemo
parents:
5357
diff
changeset
|
84 |
AddVoice(sndFlawless, Teams[0]^.voicepack) |
4978 | 85 |
else |
5638
e35ba2a400d8
Try to avoid overlapping voices for major statements (not things like byebye or oof)
nemo
parents:
5357
diff
changeset
|
86 |
AddVoice(sndVictory, Teams[0]^.voicepack); |
2376 | 87 |
|
4014
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
88 |
AddCaption(s, cWhiteColor, capgrpGameState); |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
89 |
SendStat(siGameResult, s); |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
90 |
AddGear(0, 0, gtATFinishGame, 0, _0, _0, 3000) |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
91 |
end; |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
92 |
SendStats; |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
93 |
end; |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
94 |
GameOver:= true |
83 | 95 |
end; |
96 |
||
4 | 97 |
procedure SwitchHedgehog; |
551 | 98 |
var c: LongWord; |
5052 | 99 |
PrevHH, PrevTeam : LongWord; |
4 | 100 |
begin |
101 |
TargetPoint.X:= NoPointX; |
|
89 | 102 |
TryDo(CurrentTeam <> nil, 'nil Team', true); |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
103 |
with CurrentHedgehog^ do |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
104 |
if (PreviousTeam <> nil) and PlacingHogs and Unplaced then |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
105 |
begin |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
106 |
Unplaced:= false; |
3697 | 107 |
if Gear <> nil then |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
108 |
begin |
2763
f21d3ca74ef2
Do CI correctly. Still need to allow for mode in case of no teleports in ammo
nemo
parents:
2762
diff
changeset
|
109 |
DeleteCI(Gear); |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
110 |
FindPlace(Gear, false, 0, LAND_WIDTH); |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
111 |
if Gear <> nil then AddGearCI(Gear) |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
112 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
113 |
end; |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
114 |
|
1678 | 115 |
PreviousTeam:= CurrentTeam; |
547 | 116 |
|
944 | 117 |
with CurrentHedgehog^ do |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
118 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
119 |
if Gear <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
120 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
121 |
MultiShootAttacks:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
122 |
Gear^.Message:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
123 |
Gear^.Z:= cHHZ; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
124 |
RemoveGearFromList(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
125 |
InsertGearToList(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
126 |
end |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
127 |
end; |
4391
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
128 |
// Try to make the ammo menu viewed when not your turn be a bit more useful for per-hog-ammo mode |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
129 |
with CurrentTeam^ do |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
130 |
if ((GameFlags and gfPerHogAmmo) <> 0) and (not ExtDriven) and (CurrentHedgehog^.BotLevel = 0) then |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
131 |
begin |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
132 |
c:= CurrHedgehog; |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
133 |
repeat |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
134 |
begin |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
135 |
inc(c); |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
136 |
if c > cMaxHHIndex then c:= 0 |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
137 |
end |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
138 |
until (c = CurrHedgehog) or (Hedgehogs[c].Gear <> nil); |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
139 |
LocalAmmo:= Hedgehogs[c].AmmoStore |
de9e1a5102b4
In the case of per-hog-ammo, switch the ammo viewed when not your turn to what will probably be your ammo, assuming that hog survives.
nemo
parents:
4377
diff
changeset
|
140 |
end; |
4 | 141 |
|
550 | 142 |
c:= CurrentTeam^.Clan^.ClanIndex; |
4 | 143 |
repeat |
5021 | 144 |
with ClansArray[c]^ do |
145 |
if (CurrTeam = TagTeamIndex) and ((GameFlags And gfTagTeam) <> 0) then |
|
146 |
begin |
|
147 |
TagTeamIndex:= Pred(TagTeamIndex) mod TeamsNumber; |
|
148 |
CurrTeam:= Pred(CurrTeam) mod TeamsNumber; |
|
149 |
inc(c); |
|
150 |
NextClan:= true; |
|
151 |
end; |
|
152 |
||
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
153 |
if (GameFlags And gfTagTeam) = 0 then inc(c); |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
154 |
|
5021 | 155 |
if c = ClansCount then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
156 |
begin |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
157 |
if not PlacingHogs then inc(TotalRounds); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
158 |
c:= 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
159 |
end; |
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
160 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
161 |
with ClansArray[c]^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
162 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
163 |
PrevTeam:= CurrTeam; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
164 |
repeat |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
165 |
CurrTeam:= Succ(CurrTeam) mod TeamsNumber; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
166 |
CurrentTeam:= Teams[CurrTeam]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
167 |
with CurrentTeam^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
168 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
169 |
PrevHH:= CurrHedgehog mod HedgehogsNumber; // prevent infinite loop when CurrHedgehog = 7, but HedgehogsNumber < 8 (team is destroyed before its first turn) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
170 |
repeat |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
171 |
CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
172 |
until (Hedgehogs[CurrHedgehog].Gear <> nil) or (CurrHedgehog = PrevHH) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
173 |
end |
5021 | 174 |
until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) or (PrevTeam = CurrTeam) or ((CurrTeam = TagTeamIndex) and ((GameFlags And gfTagTeam) <> 0)); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
175 |
end |
2040 | 176 |
until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil); |
83 | 177 |
|
3928
2560731c860d
move all mobile-related functions in their own module, provides a structure for future mobile ports
koda
parents:
3890
diff
changeset
|
178 |
CurrentHedgehog:= @(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]); |
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
179 |
end; |
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
180 |
|
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
181 |
procedure AfterSwitchHedgehog; |
5357
ec36f3d53f3c
Tiny optimization: convert smooth wind indicator change gear into visual gear
unc0rr
parents:
5167
diff
changeset
|
182 |
var i, t: LongInt; |
3960
ada50f8d4186
Remove bit of debug code from prior, don't switch weapons on end of turn (stick with whatever the last weapon was)
nemo
parents:
3935
diff
changeset
|
183 |
CurWeapon: PAmmo; |
ada50f8d4186
Remove bit of debug code from prior, don't switch weapons on end of turn (stick with whatever the last weapon was)
nemo
parents:
3935
diff
changeset
|
184 |
|
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
185 |
begin |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
186 |
if PlacingHogs then |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
187 |
begin |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
188 |
PlacingHogs:= false; |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
189 |
for t:= 0 to Pred(TeamsCount) do |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
190 |
for i:= 0 to cMaxHHIndex do |
3697 | 191 |
if (TeamsArray[t]^.Hedgehogs[i].Gear <> nil) and (TeamsArray[t]^.Hedgehogs[i].Unplaced) then |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
192 |
PlacingHogs:= true; |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
193 |
|
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
194 |
if not PlacingHogs then // Reset various things I mucked with |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
195 |
begin |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
196 |
for i:= 0 to ClansCount do |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
197 |
if ClansArray[i] <> nil then ClansArray[i]^.TurnNumber:= 0; |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
198 |
ResetWeapons |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
199 |
end |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
200 |
end; |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
201 |
|
2431
23242609c44b
Real fix to ammo slot overflow (bug triggered by r2411 fix)
unc0rr
parents:
2376
diff
changeset
|
202 |
inc(CurrentTeam^.Clan^.TurnNumber); |
23242609c44b
Real fix to ammo slot overflow (bug triggered by r2411 fix)
unc0rr
parents:
2376
diff
changeset
|
203 |
|
3960
ada50f8d4186
Remove bit of debug code from prior, don't switch weapons on end of turn (stick with whatever the last weapon was)
nemo
parents:
3935
diff
changeset
|
204 |
CurWeapon:= GetAmmoEntry(CurrentHedgehog^); |
ada50f8d4186
Remove bit of debug code from prior, don't switch weapons on end of turn (stick with whatever the last weapon was)
nemo
parents:
3935
diff
changeset
|
205 |
if CurWeapon^.Count = 0 then CurrentHedgehog^.CurAmmoType:= amNothing; |
2431
23242609c44b
Real fix to ammo slot overflow (bug triggered by r2411 fix)
unc0rr
parents:
2376
diff
changeset
|
206 |
|
602 | 207 |
with CurrentHedgehog^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
208 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
209 |
with Gear^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
210 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
211 |
Z:= cCurrHHZ; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
212 |
State:= gstHHDriven; |
5063 | 213 |
Active:= true; |
214 |
LastDamage:= nil |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
215 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
216 |
RemoveGearFromList(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
217 |
InsertGearToList(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
218 |
FollowGear:= Gear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
219 |
end; |
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
|
220 |
|
4 | 221 |
ResetKbd; |
351 | 222 |
|
4218 | 223 |
if (GameFlags and gfDisableWind) = 0 then |
224 |
begin |
|
225 |
cWindSpeed:= rndSign(GetRandom * 2 * cMaxWindSpeed); |
|
226 |
// cWindSpeedf:= cWindSpeed.QWordValue / _1.QWordValue throws 'Internal error 200502052' on Darwin |
|
227 |
// see http://mantis.freepascal.org/view.php?id=17714 |
|
228 |
cWindSpeedf:= SignAs(cWindSpeed,cWindSpeed).QWordValue / SignAs(_1,_1).QWordValue; |
|
229 |
if cWindSpeed.isNegative then |
|
230 |
CWindSpeedf := -cWindSpeedf; |
|
5357
ec36f3d53f3c
Tiny optimization: convert smooth wind indicator change gear into visual gear
unc0rr
parents:
5167
diff
changeset
|
231 |
AddVisualGear(0, 0, vgtSmoothWindBar); |
4900 | 232 |
AddFileLog('Wind = '+FloatToStr(cWindSpeed)); |
4218 | 233 |
end; |
234 |
||
602 | 235 |
ApplyAmmoChanges(CurrentHedgehog^); |
800 | 236 |
|
5875 | 237 |
if (not CurrentTeam^.ExtDriven) and (CurrentHedgehog^.BotLevel = 0) then SetBinds(CurrentTeam^.Binds); |
1650
a65681cc27c2
Don't fallback to default binds set when switching to remotely driven team
unc0rr
parents:
1495
diff
changeset
|
238 |
|
176 | 239 |
bShowFinger:= true; |
800 | 240 |
|
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
241 |
if PlacingHogs then |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
242 |
begin |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
243 |
if CurrentHedgehog^.Unplaced then TurnTimeLeft:= 15000 |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
244 |
else TurnTimeLeft:= 0 |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
245 |
end |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
246 |
else if ((GameFlags And gfTagTeam) <> 0) and not NextClan then |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
247 |
begin |
5022
d2a2f6c9b236
some final work and buggfix for Tag Team, it is now playable
Henek
parents:
5021
diff
changeset
|
248 |
if TagTurnTimeLeft <> 0 then TurnTimeLeft:= TagTurnTimeLeft; |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
249 |
TagTurnTimeLeft:= 0; |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
250 |
end |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
251 |
else |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
252 |
begin |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
253 |
TurnTimeLeft:= cHedgehogTurnTime; |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
254 |
TagTurnTimeLeft:= 0; |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
255 |
NextClan:= false; |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
256 |
end; |
3774 | 257 |
if (TurnTimeLeft > 0) and (CurrentHedgehog^.BotLevel = 0) then |
258 |
begin |
|
3798 | 259 |
if CurrentTeam^.ExtDriven then |
5638
e35ba2a400d8
Try to avoid overlapping voices for major statements (not things like byebye or oof)
nemo
parents:
5357
diff
changeset
|
260 |
AddVoice(sndIllGetYou, CurrentTeam^.voicepack) |
3798 | 261 |
else |
5638
e35ba2a400d8
Try to avoid overlapping voices for major statements (not things like byebye or oof)
nemo
parents:
5357
diff
changeset
|
262 |
AddVoice(sndYesSir, CurrentTeam^.voicepack); |
4198 | 263 |
if PlacingHogs or (cHedgehogTurnTime < 1000000) then ReadyTimeLeft:= cReadyDelay; |
3799 | 264 |
AddCaption(Format(shortstring(trmsg[sidReady]), CurrentTeam^.TeamName), cWhiteColor, capgrpGameState) |
3774 | 265 |
end |
266 |
else |
|
3798 | 267 |
begin |
268 |
if TurnTimeLeft > 0 then |
|
5638
e35ba2a400d8
Try to avoid overlapping voices for major statements (not things like byebye or oof)
nemo
parents:
5357
diff
changeset
|
269 |
AddVoice(sndIllGetYou, CurrentTeam^.voicepack); |
3798 | 270 |
ReadyTimeLeft:= 0 |
3952
d6412423da45
moved some utilities to a separate column with round buttons
koda
parents:
3935
diff
changeset
|
271 |
end; |
d6412423da45
moved some utilities to a separate column with round buttons
koda
parents:
3935
diff
changeset
|
272 |
|
5167
7b515d0945b1
Clean Augean stables 2 (pascal has classnames available)
koda
parents:
5063
diff
changeset
|
273 |
uMobile.NewTurnBeginning(); |
4480 | 274 |
ScriptCall('onNewTurn'); |
4 | 275 |
end; |
276 |
||
549 | 277 |
function AddTeam(TeamColor: Longword): PTeam; |
2695 | 278 |
var team: PTeam; |
549 | 279 |
c: LongInt; |
4 | 280 |
begin |
1170 | 281 |
TryDo(TeamsCount < cMaxTeams, 'Too many teams', true); |
2695 | 282 |
New(team); |
283 |
TryDo(team <> nil, 'AddTeam: team = nil', true); |
|
284 |
FillChar(team^, sizeof(TTeam), 0); |
|
285 |
team^.AttackBar:= 2; |
|
2806 | 286 |
team^.CurrHedgehog:= 0; |
2747 | 287 |
team^.Flag:= 'hedgewars'; |
547 | 288 |
|
2695 | 289 |
TeamsArray[TeamsCount]:= team; |
547 | 290 |
inc(TeamsCount); |
291 |
||
549 | 292 |
c:= Pred(ClansCount); |
293 |
while (c >= 0) and (ClansArray[c]^.Color <> TeamColor) do dec(c); |
|
294 |
if c < 0 then |
|
295 |
begin |
|
2695 | 296 |
new(team^.Clan); |
297 |
FillChar(team^.Clan^, sizeof(TClan), 0); |
|
298 |
ClansArray[ClansCount]:= team^.Clan; |
|
549 | 299 |
inc(ClansCount); |
2695 | 300 |
with team^.Clan^ do |
549 | 301 |
begin |
550 | 302 |
ClanIndex:= Pred(ClansCount); |
3379 | 303 |
Color:= TeamColor; |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
304 |
TagTeamIndex:= 0; |
4978 | 305 |
Flawless:= true |
549 | 306 |
end |
307 |
end else |
|
308 |
begin |
|
2695 | 309 |
team^.Clan:= ClansArray[c]; |
549 | 310 |
end; |
311 |
||
2695 | 312 |
with team^.Clan^ do |
549 | 313 |
begin |
2695 | 314 |
Teams[TeamsNumber]:= team; |
549 | 315 |
inc(TeamsNumber) |
316 |
end; |
|
317 |
||
2695 | 318 |
CurrentTeam:= team; |
319 |
AddTeam:= team; |
|
4 | 320 |
end; |
321 |
||
47 | 322 |
procedure RecountAllTeamsHealth; |
547 | 323 |
var t: LongInt; |
2376 | 324 |
begin |
547 | 325 |
for t:= 0 to Pred(TeamsCount) do |
326 |
RecountTeamHealth(TeamsArray[t]) |
|
47 | 327 |
end; |
328 |
||
329 |
procedure InitTeams; |
|
547 | 330 |
var i, t: LongInt; |
2784 | 331 |
th, h: LongInt; |
47 | 332 |
begin |
2726 | 333 |
|
547 | 334 |
for t:= 0 to Pred(TeamsCount) do |
4101
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
335 |
with TeamsArray[t]^ do |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
336 |
begin |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
337 |
if (not ExtDriven) and (Hedgehogs[0].BotLevel = 0) then |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
338 |
begin |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
339 |
LocalClan:= Clan^.ClanIndex; |
4465
743673c67d0c
Allow hog speech when not your turn. Currently is set to 40% opacity (could be fainter) and drawn behind the hogs instead of in front. Also allows hog targetting using a number.
nemo
parents:
4413
diff
changeset
|
340 |
LocalTeam:= t; |
4101
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
341 |
LocalAmmo:= Hedgehogs[0].AmmoStore |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
342 |
end; |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
343 |
th:= 0; |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
344 |
for i:= 0 to cMaxHHIndex do |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
345 |
if Hedgehogs[i].Gear <> nil then |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
346 |
inc(th, Hedgehogs[i].Gear^.Health); |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
347 |
if th > MaxTeamHealth then MaxTeamHealth:= th; |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
348 |
// Some initial King buffs |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
349 |
if (GameFlags and gfKing) <> 0 then |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
350 |
begin |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
351 |
Hedgehogs[0].King:= true; |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
352 |
Hedgehogs[0].Hat:= 'crown'; |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
353 |
Hedgehogs[0].Effects[hePoisoned] := false; |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
354 |
h:= Hedgehogs[0].Gear^.Health; |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
355 |
Hedgehogs[0].Gear^.Health:= hwRound(int2hwFloat(th)*_0_375); |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
356 |
if Hedgehogs[0].Gear^.Health > h then |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
357 |
begin |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
358 |
dec(th, h); |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
359 |
inc(th, Hedgehogs[0].Gear^.Health); |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
360 |
if th > MaxTeamHealth then MaxTeamHealth:= th |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
361 |
end |
4102
96efb3bbf8e3
Extend shoppa hack to disable health crates to saucer and portal modes as well
nemo
parents:
4101
diff
changeset
|
362 |
else Hedgehogs[0].Gear^.Health:= h; |
96efb3bbf8e3
Extend shoppa hack to disable health crates to saucer and portal modes as well
nemo
parents:
4101
diff
changeset
|
363 |
Hedgehogs[0].InitialHealth:= Hedgehogs[0].Gear^.Health |
4101
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
364 |
end; |
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset
|
365 |
end; |
2726 | 366 |
|
47 | 367 |
RecountAllTeamsHealth |
4 | 368 |
end; |
369 |
||
370 |
function TeamSize(p: PTeam): Longword; |
|
2695 | 371 |
var i, value: Longword; |
4 | 372 |
begin |
2695 | 373 |
value:= 0; |
4 | 374 |
for i:= 0 to cMaxHHIndex do |
2695 | 375 |
if p^.Hedgehogs[i].Gear <> nil then inc(value); |
376 |
TeamSize:= value; |
|
4 | 377 |
end; |
378 |
||
549 | 379 |
procedure RecountClanHealth(clan: PClan); |
380 |
var i: LongInt; |
|
381 |
begin |
|
382 |
with clan^ do |
|
383 |
begin |
|
384 |
ClanHealth:= 0; |
|
385 |
for i:= 0 to Pred(TeamsNumber) do |
|
386 |
inc(ClanHealth, Teams[i]^.TeamHealth) |
|
387 |
end |
|
388 |
end; |
|
389 |
||
47 | 390 |
procedure RecountTeamHealth(team: PTeam); |
371 | 391 |
var i: LongInt; |
47 | 392 |
begin |
393 |
with team^ do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
394 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
395 |
NewTeamHealthBarWidth:= 0; |
2376 | 396 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
397 |
if not hasGone then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
398 |
for i:= 0 to cMaxHHIndex do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
399 |
if Hedgehogs[i].Gear <> nil then |
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4881
diff
changeset
|
400 |
inc(NewTeamHealthBarWidth, Hedgehogs[i].Gear^.Health) |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4881
diff
changeset
|
401 |
else if Hedgehogs[i].GearHidden <> nil then |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4881
diff
changeset
|
402 |
inc(NewTeamHealthBarWidth, Hedgehogs[i].GearHidden^.Health); |
1352
405ad07cf875
Add more support for handling disconnects while playing (not fully tested)
unc0rr
parents:
1351
diff
changeset
|
403 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
404 |
TeamHealth:= NewTeamHealthBarWidth; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
405 |
if NewTeamHealthBarWidth > MaxTeamHealth then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
406 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
407 |
MaxTeamHealth:= NewTeamHealthBarWidth; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
408 |
RecountAllTeamsHealth; |
4514 | 409 |
end else if NewTeamHealthBarWidth > 0 then NewTeamHealthBarWidth:= (NewTeamHealthBarWidth * cTeamHealthWidth) div MaxTeamHealth |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
410 |
end; |
549 | 411 |
|
412 |
RecountClanHealth(team^.Clan); |
|
413 |
||
2005 | 414 |
AddVisualGear(0, 0, vgtTeamHealthSorter) |
47 | 415 |
end; |
416 |
||
72 | 417 |
procedure RestoreTeamsFromSave; |
547 | 418 |
var t: LongInt; |
72 | 419 |
begin |
547 | 420 |
for t:= 0 to Pred(TeamsCount) do |
421 |
TeamsArray[t]^.ExtDriven:= false |
|
72 | 422 |
end; |
423 |
||
2040 | 424 |
procedure TeamGoneEffect(var Team: TTeam); |
425 |
var i: LongInt; |
|
426 |
begin |
|
427 |
with Team do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
428 |
for i:= 0 to cMaxHHIndex do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
429 |
with Hedgehogs[i] do |
5991 | 430 |
begin |
431 |
if Hedgehogs[i].GearHidden <> nil then |
|
432 |
RestoreHog(@Hedgehogs[i]); |
|
433 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
434 |
if Gear <> nil then |
2826
fbcfc86ef477
Remove invulnerability protection from the team gone effect
nemo
parents:
2806
diff
changeset
|
435 |
begin |
fbcfc86ef477
Remove invulnerability protection from the team gone effect
nemo
parents:
2806
diff
changeset
|
436 |
Gear^.Invulnerable:= false; |
5829
3ec95dc2b249
Don't test for hasGone in unapproved places. Now any possibility of desync on player quit is ruled out. Not tested at all.
unc0rr
parents:
5818
diff
changeset
|
437 |
Gear^.Damage:= Gear^.Health; |
5955 | 438 |
Gear^.State:= (Gear^.State or gstHHGone) and not gstHHDriven |
2826
fbcfc86ef477
Remove invulnerability protection from the team gone effect
nemo
parents:
2806
diff
changeset
|
439 |
end |
5991 | 440 |
end |
2040 | 441 |
end; |
442 |
||
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
443 |
procedure chAddHH(var id: shortstring); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
444 |
var s: shortstring; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
445 |
Gear: PGear; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
446 |
begin |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
447 |
s:= ''; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
448 |
if (not isDeveloperMode) or (CurrentTeam = nil) then exit; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
449 |
with CurrentTeam^ do |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
450 |
begin |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
451 |
SplitBySpace(id, s); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
452 |
CurrentHedgehog:= @Hedgehogs[HedgehogsNumber]; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
453 |
val(id, CurrentHedgehog^.BotLevel); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
454 |
Gear:= AddGear(0, 0, gtHedgehog, 0, _0, _0, 0); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
455 |
SplitBySpace(s, id); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
456 |
val(s, Gear^.Health); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
457 |
TryDo(Gear^.Health > 0, 'Invalid hedgehog health', true); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
458 |
Gear^.Hedgehog^.Team:= CurrentTeam; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
459 |
if (GameFlags and gfSharedAmmo) <> 0 then CurrentHedgehog^.AmmoStore:= Clan^.ClanIndex |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
460 |
else if (GameFlags and gfPerHogAmmo) <> 0 then |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
461 |
begin |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
462 |
AddAmmoStore; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
463 |
CurrentHedgehog^.AmmoStore:= StoreCnt - 1 |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
464 |
end |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
465 |
else CurrentHedgehog^.AmmoStore:= TeamsCount - 1; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
466 |
CurrentHedgehog^.Gear:= Gear; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
467 |
CurrentHedgehog^.Name:= id; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
468 |
CurrentHedgehog^.InitialHealth:= Gear^.Health; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
469 |
CurrHedgehog:= HedgehogsNumber; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
470 |
inc(HedgehogsNumber) |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
471 |
end |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
472 |
end; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
473 |
|
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
474 |
procedure chAddTeam(var s: shortstring); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
475 |
var Color: Longword; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
476 |
ts, cs: shortstring; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
477 |
begin |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
478 |
cs:= ''; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
479 |
ts:= ''; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
480 |
if isDeveloperMode then |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
481 |
begin |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
482 |
SplitBySpace(s, cs); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
483 |
SplitBySpace(cs, ts); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
484 |
val(cs, Color); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
485 |
TryDo(Color <> 0, 'Error: black team color', true); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
486 |
|
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
487 |
// color is always little endian so the mask must be constant also in big endian archs |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
488 |
Color:= Color or $FF000000; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
489 |
|
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
490 |
AddTeam(Color); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
491 |
CurrentTeam^.TeamName:= ts; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
492 |
CurrentTeam^.PlayerHash:= s; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
493 |
if GameType in [gmtDemo, gmtSave] then CurrentTeam^.ExtDriven:= true; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
494 |
|
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
495 |
CurrentTeam^.voicepack:= AskForVoicepack('Default') |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
496 |
end |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
497 |
end; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
498 |
|
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
499 |
procedure chSetHHCoords(var x: shortstring); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
500 |
var y: shortstring; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
501 |
t: Longint; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
502 |
begin |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
503 |
y:= ''; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
504 |
if (not isDeveloperMode) or (CurrentHedgehog = nil) or (CurrentHedgehog^.Gear = nil) then exit; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
505 |
SplitBySpace(x, y); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
506 |
val(x, t); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
507 |
CurrentHedgehog^.Gear^.X:= int2hwFloat(t); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
508 |
val(y, t); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
509 |
CurrentHedgehog^.Gear^.Y:= int2hwFloat(t) |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
510 |
end; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
511 |
|
4401 | 512 |
procedure chBind(var id: shortstring); |
513 |
var s: shortstring; |
|
514 |
b: LongInt; |
|
515 |
begin |
|
516 |
s:= ''; |
|
517 |
if CurrentTeam = nil then exit; |
|
518 |
SplitBySpace(id, s); |
|
519 |
if s[1]='"' then Delete(s, 1, 1); |
|
520 |
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); |
|
521 |
b:= KeyNameToCode(id); |
|
522 |
if b = 0 then OutError(errmsgUnknownVariable + ' "' + id + '"', false) |
|
523 |
else CurrentTeam^.Binds[b]:= s |
|
524 |
end; |
|
525 |
||
4404 | 526 |
procedure chTeamGone(var s:shortstring); |
5832
f730c8a9777b
Remove some unused variables and options.inc which uFloat doesn't use, probably should never use, and was getting in the way of my testcase - but most importantly, remove the inline on hwSqrt which was causing very bad math on my compiler/machine. We may have to remove more inlining. A pity.
nemo
parents:
5829
diff
changeset
|
527 |
var t: LongInt; |
4404 | 528 |
begin |
529 |
t:= 0; |
|
530 |
while (t < cMaxTeams) |
|
531 |
and (TeamsArray[t] <> nil) |
|
532 |
and (TeamsArray[t]^.TeamName <> s) do inc(t); |
|
533 |
if (t = cMaxTeams) or (TeamsArray[t] = nil) then exit; |
|
534 |
||
535 |
with TeamsArray[t]^ do |
|
536 |
begin |
|
537 |
AddChatString('** '+ TeamName + ' is gone'); |
|
538 |
hasGone:= true |
|
539 |
end; |
|
540 |
||
541 |
RecountTeamHealth(TeamsArray[t]) |
|
542 |
end; |
|
543 |
||
544 |
||
3038 | 545 |
procedure initModule; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
546 |
begin |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
547 |
RegisterVariable('addhh', vtCommand, @chAddHH, false); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
548 |
RegisterVariable('addteam', vtCommand, @chAddTeam, false); |
4401 | 549 |
RegisterVariable('hhcoords', vtCommand, @chSetHHCoords, false); |
550 |
RegisterVariable('bind', vtCommand, @chBind, true ); |
|
4404 | 551 |
RegisterVariable('teamgone', vtCommand, @chTeamGone, true ); |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4393
diff
changeset
|
552 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
553 |
CurrentTeam:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
554 |
PreviousTeam:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
555 |
CurrentHedgehog:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
556 |
TeamsCount:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
557 |
ClansCount:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
558 |
LocalClan:= -1; |
4465
743673c67d0c
Allow hog speech when not your turn. Currently is set to 40% opacity (could be fainter) and drawn behind the hogs instead of in front. Also allows hog targetting using a number.
nemo
parents:
4413
diff
changeset
|
559 |
LocalTeam:= -1; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
560 |
LocalAmmo:= -1; |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
561 |
GameOver:= false; |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
562 |
NextClan:= true; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
563 |
end; |
4 | 564 |
|
3038 | 565 |
procedure freeModule; |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4514
diff
changeset
|
566 |
var i, h: LongWord; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
567 |
begin |
3051 | 568 |
if TeamsCount > 0 then |
569 |
begin |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4514
diff
changeset
|
570 |
for i:= 0 to Pred(TeamsCount) do |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4514
diff
changeset
|
571 |
begin |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4514
diff
changeset
|
572 |
for h:= 0 to cMaxHHIndex do |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4514
diff
changeset
|
573 |
if TeamsArray[i]^.Hedgehogs[h].GearHidden <> nil then |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4514
diff
changeset
|
574 |
Dispose(TeamsArray[i]^.Hedgehogs[h].GearHidden); |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4514
diff
changeset
|
575 |
Dispose(TeamsArray[i]); |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4514
diff
changeset
|
576 |
end; |
3051 | 577 |
for i:= 0 to Pred(ClansCount) do Dispose(ClansArray[i]); |
578 |
end; |
|
579 |
TeamsCount:= 0; |
|
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
580 |
ClansCount:= 0; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
581 |
end; |
4 | 582 |
|
583 |
end. |