author | Wuzzy <Wuzzy2@mail.ru> |
Thu, 11 Jul 2019 00:53:29 +0200 | |
changeset 15229 | f16376e9374f |
parent 15225 | ceb289e8a582 |
child 15342 | 63372e3879df |
permissions | -rw-r--r-- |
9285 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
11046 | 3 |
* Copyright (c) 2004-2015 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 |
|
10108
c68cf030eded
update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents:
10105
diff
changeset
|
16 |
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
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 |
|
10015 | 23 |
uses uConsts, uInputHandler, uRandom, uFloat, uStats, |
9295
f8819c3dde54
Remove some GLunit dependencies noticed on graph. uUtils was using it for GLfloat - but, the stuff it was returning to was usually converting to "real" anyway. uLand was including it unnecessarily. Minor refactor
nemo
parents:
9291
diff
changeset
|
24 |
uCollisions, uSound, uStore, uTypes, uScript |
7837 | 25 |
{$IFDEF USE_TOUCH_INTERFACE}, uWorld{$ENDIF}; |
26 |
||
534 | 27 |
|
3038 | 28 |
procedure initModule; |
29 |
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
|
30 |
|
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
31 |
function AddTeam(TeamColor: Longword): PTeam; |
14483 | 32 |
function SetMissionTeam(): PTeam; |
4 | 33 |
procedure SwitchHedgehog; |
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
34 |
procedure AfterSwitchHedgehog; |
4 | 35 |
procedure InitTeams; |
36 |
function TeamSize(p: PTeam): Longword; |
|
47 | 37 |
procedure RecountTeamHealth(team: PTeam); |
10581 | 38 |
procedure RecountAllTeamsHealth(); |
8817
0d3014097240
move RestoreHog from uGears to uTeams to break a circular dependency
koda
parents:
8681
diff
changeset
|
39 |
procedure RestoreHog(HH: PHedgehog); |
0d3014097240
move RestoreHog from uGears to uTeams to break a circular dependency
koda
parents:
8681
diff
changeset
|
40 |
|
72 | 41 |
procedure RestoreTeamsFromSave; |
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
42 |
function CheckForWin: boolean; |
2040 | 43 |
procedure TeamGoneEffect(var Team: TTeam); |
7270
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
44 |
procedure SwitchCurrentHedgehog(newHog: PHedgehog); |
4 | 45 |
|
9720
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9685
diff
changeset
|
46 |
var MaxTeamHealth: LongInt; |
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9685
diff
changeset
|
47 |
|
4 | 48 |
implementation |
8370 | 49 |
uses uLocale, uAmmos, uChat, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug, |
9468
3d07fd84c39d
- Actually call uTexture.initModule and .freeModule
unc0rr
parents:
9466
diff
changeset
|
50 |
uGearsUtils, uGearsList, uVisualGearsList, uTextures |
7837 | 51 |
{$IFDEF USE_TOUCH_INTERFACE}, uTouch{$ENDIF}; |
4377 | 52 |
|
12327
9aa483762025
Fix sndBoring being played when force-ending turn due to victory
Wuzzy <almikes@aol.com>
parents:
12281
diff
changeset
|
53 |
var TeamsGameOver: boolean; |
8145
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8054
diff
changeset
|
54 |
NextClan: boolean; |
13656
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
55 |
SwapClanPre, SwapClanReal: LongInt; |
4 | 56 |
|
92
0c359a7a2356
- Fix win message to appear only after all hedgehogs death
unc0rr
parents:
89
diff
changeset
|
57 |
function CheckForWin: boolean; |
576 | 58 |
var AliveClan: PClan; |
13052
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
59 |
s, cap: ansistring; |
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
60 |
ts: array[0..(cMaxTeams - 1)] of ansistring; |
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
61 |
t, ActiveAliveCount, i, j: LongInt; |
13813
5c6052351991
On victory, center camera on a winning hedgehog
Wuzzy <Wuzzy2@mail.ru>
parents:
13782
diff
changeset
|
62 |
allWin, winCamera: boolean; |
83 | 63 |
begin |
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6982
diff
changeset
|
64 |
CheckForWin:= false; |
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
65 |
ActiveAliveCount:= 0; |
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
66 |
// Victory if there is 1 living and non-passive clan left |
549 | 67 |
for t:= 0 to Pred(ClansCount) do |
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
68 |
if (ClansArray[t]^.ClanHealth > 0) and (not ClansArray[t]^.Passive) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
69 |
begin |
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
70 |
inc(ActiveAliveCount); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
71 |
AliveClan:= ClansArray[t] |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
72 |
end; |
548 | 73 |
|
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
74 |
// Exception: gfOneClanMode, then there is no winner |
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
75 |
if (ActiveAliveCount > 1) or ((ActiveAliveCount = 1) and ((GameFlags and gfOneClanMode) <> 0)) then |
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6982
diff
changeset
|
76 |
exit; |
351 | 77 |
CheckForWin:= true; |
83 | 78 |
|
79 |
TurnTimeLeft:= 0; |
|
3774 | 80 |
ReadyTimeLeft:= 0; |
7669
a85e1c167b69
I didn't want to do this since it seems less clean, but...
sheepluva
parents:
7442
diff
changeset
|
81 |
|
13782
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13773
diff
changeset
|
82 |
// If the game ends during a multishot, or after the Sudden Death |
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13773
diff
changeset
|
83 |
// water has risen, do last turn stats / reaction. |
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13773
diff
changeset
|
84 |
if ((not bBetweenTurns) and isInMultiShoot) or (bDuringWaterRise) then |
13760
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13659
diff
changeset
|
85 |
begin |
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13659
diff
changeset
|
86 |
TurnStats(); |
13782
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13773
diff
changeset
|
87 |
if (not bDuringWaterRise) then |
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13773
diff
changeset
|
88 |
TurnReaction(); |
13766
6fd56a26e8b8
Fix turn reaction not working properly after turn
Wuzzy <Wuzzy2@mail.ru>
parents:
13765
diff
changeset
|
89 |
TurnStatsReset(); |
13760
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13659
diff
changeset
|
90 |
end; |
7669
a85e1c167b69
I didn't want to do this since it seems less clean, but...
sheepluva
parents:
7442
diff
changeset
|
91 |
|
12327
9aa483762025
Fix sndBoring being played when force-ending turn due to victory
Wuzzy <almikes@aol.com>
parents:
12281
diff
changeset
|
92 |
if not TeamsGameOver then |
4014
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
93 |
begin |
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
94 |
if ActiveAliveCount = 0 then |
4014
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
95 |
begin // draw |
13647
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13602
diff
changeset
|
96 |
AddCaption(GetEventString(eidRoundDraw), capcolDefault, capgrpGameState); |
12337
657a8d63c99d
Lua API: SendAchevementsStatsOff, SendGameResultOff, SendRankingStatsOff
Wuzzy <almikes@aol.com>
parents:
12327
diff
changeset
|
97 |
if SendGameResultOn then |
657a8d63c99d
Lua API: SendAchevementsStatsOff, SendGameResultOff, SendRankingStatsOff
Wuzzy <almikes@aol.com>
parents:
12327
diff
changeset
|
98 |
SendStat(siGameResult, shortstring(trmsg[sidDraw])); |
13765 | 99 |
if PreviousTeam <> nil then |
14029
03a5d9f0bcc9
Play sndStupid on round draw instead of sndNutter
Wuzzy <Wuzzy2@mail.ru>
parents:
13882
diff
changeset
|
100 |
AddVoice(sndStupid, PreviousTeam^.voicepack) |
13765 | 101 |
else |
14029
03a5d9f0bcc9
Play sndStupid on round draw instead of sndNutter
Wuzzy <Wuzzy2@mail.ru>
parents:
13882
diff
changeset
|
102 |
AddVoice(sndStupid, TeamsArray[0]^.voicepack); |
12177
fe2946e2a859
Implement random round draw / team win messages
Wuzzy <almikes@aol.com>
parents:
11918
diff
changeset
|
103 |
AddGear(0, 0, gtATFinishGame, 0, _0, _0, 3000); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
104 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
105 |
else // win |
12584
0411e04cf12a
Fix stats screen caption showing only one winner if multiple teams have won
Wuzzy <almikes@aol.com>
parents:
12415
diff
changeset
|
106 |
begin |
13773
c084bd440009
Add funny message in stats screen when everyone wins
Wuzzy <Wuzzy2@mail.ru>
parents:
13766
diff
changeset
|
107 |
allWin:= false; |
4014
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
108 |
with AliveClan^ do |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
109 |
begin |
13052
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
110 |
if TeamsNumber = 1 then // single team wins |
12177
fe2946e2a859
Implement random round draw / team win messages
Wuzzy <almikes@aol.com>
parents:
11918
diff
changeset
|
111 |
begin |
13052
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
112 |
s:= ansistring(Teams[0]^.TeamName); |
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
113 |
// Victory caption is randomly selected |
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
114 |
cap:= FormatA(GetEventString(eidRoundWin), s); |
13647
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13602
diff
changeset
|
115 |
AddCaption(cap, capcolDefault, capgrpGameState); |
13052
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
116 |
s:= FormatA(trmsg[sidWinner], s); |
12177
fe2946e2a859
Implement random round draw / team win messages
Wuzzy <almikes@aol.com>
parents:
11918
diff
changeset
|
117 |
end |
13052
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
118 |
else // clan with at least 2 teams wins |
12177
fe2946e2a859
Implement random round draw / team win messages
Wuzzy <almikes@aol.com>
parents:
11918
diff
changeset
|
119 |
begin |
12584
0411e04cf12a
Fix stats screen caption showing only one winner if multiple teams have won
Wuzzy <almikes@aol.com>
parents:
12415
diff
changeset
|
120 |
s:= ''; |
0411e04cf12a
Fix stats screen caption showing only one winner if multiple teams have won
Wuzzy <almikes@aol.com>
parents:
12415
diff
changeset
|
121 |
for j:= 0 to Pred(TeamsNumber) do |
0411e04cf12a
Fix stats screen caption showing only one winner if multiple teams have won
Wuzzy <almikes@aol.com>
parents:
12415
diff
changeset
|
122 |
begin |
13052
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
123 |
ts[j] := Teams[j]^.TeamName; |
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
124 |
end; |
12584
0411e04cf12a
Fix stats screen caption showing only one winner if multiple teams have won
Wuzzy <almikes@aol.com>
parents:
12415
diff
changeset
|
125 |
|
13052
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
126 |
// Write victory message for caption and stats page |
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
127 |
if (TeamsNumber = cMaxTeams) or (TeamsCount = TeamsNumber) then |
13773
c084bd440009
Add funny message in stats screen when everyone wins
Wuzzy <Wuzzy2@mail.ru>
parents:
13766
diff
changeset
|
128 |
begin |
14371
2ab312c47dc3
make pas2c function without haskell aborting if locale is C
nemo
parents:
14356
diff
changeset
|
129 |
// No enemies for some reason ... Everyone wins!!1! |
13773
c084bd440009
Add funny message in stats screen when everyone wins
Wuzzy <Wuzzy2@mail.ru>
parents:
13766
diff
changeset
|
130 |
s:= trmsg[sidWinnerAll]; |
c084bd440009
Add funny message in stats screen when everyone wins
Wuzzy <Wuzzy2@mail.ru>
parents:
13766
diff
changeset
|
131 |
allWin:= true; |
c084bd440009
Add funny message in stats screen when everyone wins
Wuzzy <Wuzzy2@mail.ru>
parents:
13766
diff
changeset
|
132 |
end |
13052
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
133 |
else if (TeamsNumber >= 2) and (TeamsNumber < cMaxTeams) then |
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
134 |
// List all winning teams in a list |
13837
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
135 |
if (TeamsNumber = 2) then |
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
136 |
s:= FormatA(trmsg[TMsgStrId(sidWinner2)], ts[0], ts[1]) |
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
137 |
else if (TeamsNumber = 3) then |
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
138 |
s:= FormatA(trmsg[TMsgStrId(sidWinner3)], ts[0], ts[1], ts[2]) |
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
139 |
else if (TeamsNumber = 4) then |
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
140 |
s:= FormatA(trmsg[TMsgStrId(sidWinner4)], ts[0], ts[1], ts[2], ts[3]) |
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
141 |
else if (TeamsNumber = 5) then |
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
142 |
s:= FormatA(trmsg[TMsgStrId(sidWinner5)], ts[0], ts[1], ts[2], ts[3], ts[4]) |
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
143 |
else if (TeamsNumber = 6) then |
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
144 |
s:= FormatA(trmsg[TMsgStrId(sidWinner6)], ts[0], ts[1], ts[2], ts[3], ts[4], ts[5]) |
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
145 |
else if (TeamsNumber = 7) then |
10a3b80130b5
Change syntax for Format/FormatA, remove array in function to be friendlier to Pas2C
Wuzzy <Wuzzy2@mail.ru>
parents:
13813
diff
changeset
|
146 |
s:= FormatA(trmsg[TMsgStrId(sidWinner7)], ts[0], ts[1], ts[2], ts[3], ts[4], ts[5], ts[6]); |
12584
0411e04cf12a
Fix stats screen caption showing only one winner if multiple teams have won
Wuzzy <almikes@aol.com>
parents:
12415
diff
changeset
|
147 |
|
13052
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
148 |
// The winner caption is the same as the stats message and not randomized |
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
149 |
cap:= s; |
13647
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13602
diff
changeset
|
150 |
AddCaption(cap, capcolDefault, capgrpGameState); |
13052
eadf8259306f
Improve/fix messaging when multiple teams win
Wuzzy <Wuzzy2@mail.ru>
parents:
13023
diff
changeset
|
151 |
// TODO (maybe): Show victory animation/captions per-team instead of all winners at once? |
12177
fe2946e2a859
Implement random round draw / team win messages
Wuzzy <almikes@aol.com>
parents:
11918
diff
changeset
|
152 |
end; |
549 | 153 |
|
13813
5c6052351991
On victory, center camera on a winning hedgehog
Wuzzy <Wuzzy2@mail.ru>
parents:
13782
diff
changeset
|
154 |
// Enable winner state for winning hogs and move camera to a winning hedgehog |
5c6052351991
On victory, center camera on a winning hedgehog
Wuzzy <Wuzzy2@mail.ru>
parents:
13782
diff
changeset
|
155 |
winCamera:= false; |
4014
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
156 |
for j:= 0 to Pred(TeamsNumber) do |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
157 |
with Teams[j]^ do |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
158 |
for i:= 0 to cMaxHHIndex do |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
159 |
with Hedgehogs[i] do |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
160 |
if (Gear <> nil) then |
13813
5c6052351991
On victory, center camera on a winning hedgehog
Wuzzy <Wuzzy2@mail.ru>
parents:
13782
diff
changeset
|
161 |
begin |
5c6052351991
On victory, center camera on a winning hedgehog
Wuzzy <Wuzzy2@mail.ru>
parents:
13782
diff
changeset
|
162 |
if (not winCamera) then |
5c6052351991
On victory, center camera on a winning hedgehog
Wuzzy <Wuzzy2@mail.ru>
parents:
13782
diff
changeset
|
163 |
begin |
5c6052351991
On victory, center camera on a winning hedgehog
Wuzzy <Wuzzy2@mail.ru>
parents:
13782
diff
changeset
|
164 |
FollowGear:= Gear; |
5c6052351991
On victory, center camera on a winning hedgehog
Wuzzy <Wuzzy2@mail.ru>
parents:
13782
diff
changeset
|
165 |
winCamera:= true; |
5c6052351991
On victory, center camera on a winning hedgehog
Wuzzy <Wuzzy2@mail.ru>
parents:
13782
diff
changeset
|
166 |
end; |
4014
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
167 |
Gear^.State:= gstWinner; |
13813
5c6052351991
On victory, center camera on a winning hedgehog
Wuzzy <Wuzzy2@mail.ru>
parents:
13782
diff
changeset
|
168 |
end; |
4978 | 169 |
if Flawless then |
9157
2f8b60b89121
ok. this could be tidier, but, I'm sick of hogs w/ unmodified thaw thawing on exactly wrong turn.
nemo
parents:
9137
diff
changeset
|
170 |
AddVoice(sndFlawless, Teams[0]^.voicepack) |
4978 | 171 |
else |
5638
e35ba2a400d8
Try to avoid overlapping voices for major statements (not things like byebye or oof)
nemo
parents:
5357
diff
changeset
|
172 |
AddVoice(sndVictory, Teams[0]^.voicepack); |
12584
0411e04cf12a
Fix stats screen caption showing only one winner if multiple teams have won
Wuzzy <almikes@aol.com>
parents:
12415
diff
changeset
|
173 |
end; |
2376 | 174 |
|
12584
0411e04cf12a
Fix stats screen caption showing only one winner if multiple teams have won
Wuzzy <almikes@aol.com>
parents:
12415
diff
changeset
|
175 |
if SendGameResultOn then |
0411e04cf12a
Fix stats screen caption showing only one winner if multiple teams have won
Wuzzy <almikes@aol.com>
parents:
12415
diff
changeset
|
176 |
SendStat(siGameResult, shortstring(s)); |
13773
c084bd440009
Add funny message in stats screen when everyone wins
Wuzzy <Wuzzy2@mail.ru>
parents:
13766
diff
changeset
|
177 |
if allWin and SendAchievementsStatsOn then |
c084bd440009
Add funny message in stats screen when everyone wins
Wuzzy <Wuzzy2@mail.ru>
parents:
13766
diff
changeset
|
178 |
SendStat(siEverAfter, ''); |
12584
0411e04cf12a
Fix stats screen caption showing only one winner if multiple teams have won
Wuzzy <almikes@aol.com>
parents:
12415
diff
changeset
|
179 |
AddGear(0, 0, gtATFinishGame, 0, _0, _0, 3000) |
0411e04cf12a
Fix stats screen caption showing only one winner if multiple teams have won
Wuzzy <almikes@aol.com>
parents:
12415
diff
changeset
|
180 |
end; |
4014
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
181 |
SendStats; |
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
182 |
end; |
12327
9aa483762025
Fix sndBoring being played when force-ending turn due to victory
Wuzzy <almikes@aol.com>
parents:
12281
diff
changeset
|
183 |
TeamsGameOver:= true; |
4014
e9baae83370b
Avoid doing this stuff twice, even if CheckForWin is called twice
nemo
parents:
3996
diff
changeset
|
184 |
GameOver:= true |
83 | 185 |
end; |
186 |
||
4 | 187 |
procedure SwitchHedgehog; |
9137
d987230b85ed
fixed all engine compilation hints and notes (that I could see)
sheepluva
parents:
9080
diff
changeset
|
188 |
var c, i, t: LongWord; |
5052 | 189 |
PrevHH, PrevTeam : LongWord; |
4 | 190 |
begin |
191 |
TargetPoint.X:= NoPointX; |
|
13504
c41b16ac2e05
Clarify the wording of a few checkFails messages
Wuzzy <Wuzzy2@mail.ru>
parents:
13481
diff
changeset
|
192 |
if checkFails(CurrentTeam <> nil, 'Team is nil!', true) then exit; |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
193 |
with CurrentHedgehog^ do |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
194 |
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
|
195 |
begin |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
196 |
Unplaced:= false; |
3697 | 197 |
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
|
198 |
begin |
2763
f21d3ca74ef2
Do CI correctly. Still need to allow for mode in case of no teleports in ammo
nemo
parents:
2762
diff
changeset
|
199 |
DeleteCI(Gear); |
11476 | 200 |
FindPlace(Gear, false, 0, LAND_WIDTH, true); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
201 |
if Gear <> nil then |
9291
15f7bb217b66
Make add/delete consistent (this has bugged me for so long)
nemo
parents:
9285
diff
changeset
|
202 |
AddCI(Gear) |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
203 |
end |
15225
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
204 |
end |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
205 |
else if (PreviousTeam <> nil) and PlacingKings and UnplacedKing then |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
206 |
UnplacedKing:= false; |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
207 |
|
1678 | 208 |
PreviousTeam:= CurrentTeam; |
547 | 209 |
|
944 | 210 |
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
|
211 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
212 |
if Gear <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
213 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
214 |
MultiShootAttacks:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
215 |
Gear^.Message:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
216 |
Gear^.Z:= cHHZ; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
217 |
RemoveGearFromList(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
218 |
InsertGearToList(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
219 |
end |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
220 |
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
|
221 |
// 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
|
222 |
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
|
223 |
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
|
224 |
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
|
225 |
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
|
226 |
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
|
227 |
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
|
228 |
inc(c); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
229 |
if c > cMaxHHIndex then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
230 |
c:= 0 |
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
|
231 |
end |
10193
d7cd5b43588f
By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents:
10124
diff
changeset
|
232 |
until (c = CurrHedgehog) or (Hedgehogs[c].Gear <> nil) and (Hedgehogs[c].Effects[heFrozen] < 50255); |
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
|
233 |
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
|
234 |
end; |
4 | 235 |
|
550 | 236 |
c:= CurrentTeam^.Clan^.ClanIndex; |
4 | 237 |
repeat |
13655
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
238 |
if (GameFlags and gfTagTeam) <> 0 then |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
239 |
begin |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
240 |
with ClansArray[c]^ do |
5021 | 241 |
begin |
13655
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
242 |
if (CurrTeam = TagTeamIndex) then |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
243 |
begin |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
244 |
TagTeamIndex:= Pred(TagTeamIndex) mod TeamsNumber; |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
245 |
CurrTeam:= Pred(CurrTeam) mod TeamsNumber; |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
246 |
inc(c); |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
247 |
if c = ClansCount then |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
248 |
c:= 0; |
13656
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
249 |
if c = SwapClanReal then |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
250 |
inc(TotalRoundsReal); |
13655
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
251 |
NextClan:= true; |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
252 |
end; |
13651
67d8f75f048d
Backout 0f02dd1ff4c9. This is not how TotalRounds should work
Wuzzy <Wuzzy2@mail.ru>
parents:
13647
diff
changeset
|
253 |
end; |
5021 | 254 |
|
13655
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
255 |
with ClansArray[c]^ do |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
256 |
begin |
15225
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
257 |
if (not PlacingHogs) and (not PlacingKings) and ((Succ(CurrTeam) mod TeamsNumber) = TagTeamIndex) then |
13655
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
258 |
begin |
13656
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
259 |
if c = SwapClanPre then |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
260 |
inc(TotalRoundsPre); |
13655
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
261 |
end; |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
262 |
end; |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
263 |
end |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
264 |
else |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
265 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
266 |
inc(c); |
13655
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
267 |
if c = ClansCount then |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
268 |
c:= 0; |
15225
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
269 |
if (not PlacingHogs) and (not PlacingKings) then |
13655
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
270 |
begin |
13656
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
271 |
if c = SwapClanPre then |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
272 |
inc(TotalRoundsPre); |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
273 |
if c = SwapClanReal then |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
274 |
inc(TotalRoundsReal); |
13655
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
275 |
end; |
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
276 |
end; |
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
277 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
278 |
with ClansArray[c]^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
279 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
280 |
PrevTeam:= CurrTeam; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
281 |
repeat |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
282 |
CurrTeam:= Succ(CurrTeam) mod TeamsNumber; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
283 |
CurrentTeam:= Teams[CurrTeam]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
284 |
with CurrentTeam^ do |
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
285 |
if (not Passive) then |
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
286 |
begin |
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
287 |
PrevHH:= CurrHedgehog mod HedgehogsNumber; // prevent infinite loop when CurrHedgehog = 7, but HedgehogsNumber < 8 (team is destroyed before its first turn) |
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
288 |
repeat |
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
289 |
CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber; |
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
290 |
until ((Hedgehogs[CurrHedgehog].Gear <> nil) and (Hedgehogs[CurrHedgehog].Effects[heFrozen] < 256)) or (CurrHedgehog = PrevHH) |
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
291 |
end |
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
292 |
until ((not CurrentTeam^.Passive) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] < 256)) or (PrevTeam = CurrTeam) or ((CurrTeam = TagTeamIndex) and ((GameFlags and gfTagTeam) <> 0)) |
8934
a4ec39eac0be
So. This should fix ammo delays being off on a team that is resurrected later in the game, even up freezing delays a bit, prevent an infinite loop in freezing, and reduces fuel burn when adjusting freezer to one-fourth.
nemo
parents:
8681
diff
changeset
|
293 |
end; |
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
294 |
if (CurrentTeam^.Passive) or (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear = nil) or (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] > 255) then |
8934
a4ec39eac0be
So. This should fix ammo delays being off on a team that is resurrected later in the game, even up freezing delays a bit, prevent an infinite loop in freezing, and reduces fuel burn when adjusting freezer to one-fourth.
nemo
parents:
8681
diff
changeset
|
295 |
begin |
a4ec39eac0be
So. This should fix ammo delays being off on a team that is resurrected later in the game, even up freezing delays a bit, prevent an infinite loop in freezing, and reduces fuel burn when adjusting freezer to one-fourth.
nemo
parents:
8681
diff
changeset
|
296 |
with CurrentTeam^.Clan^ do |
a4ec39eac0be
So. This should fix ammo delays being off on a team that is resurrected later in the game, even up freezing delays a bit, prevent an infinite loop in freezing, and reduces fuel burn when adjusting freezer to one-fourth.
nemo
parents:
8681
diff
changeset
|
297 |
for t:= 0 to Pred(TeamsNumber) do |
a4ec39eac0be
So. This should fix ammo delays being off on a team that is resurrected later in the game, even up freezing delays a bit, prevent an infinite loop in freezing, and reduces fuel burn when adjusting freezer to one-fourth.
nemo
parents:
8681
diff
changeset
|
298 |
with Teams[t]^ do |
a4ec39eac0be
So. This should fix ammo delays being off on a team that is resurrected later in the game, even up freezing delays a bit, prevent an infinite loop in freezing, and reduces fuel burn when adjusting freezer to one-fourth.
nemo
parents:
8681
diff
changeset
|
299 |
for i:= 0 to Pred(HedgehogsNumber) do |
a4ec39eac0be
So. This should fix ammo delays being off on a team that is resurrected later in the game, even up freezing delays a bit, prevent an infinite loop in freezing, and reduces fuel burn when adjusting freezer to one-fourth.
nemo
parents:
8681
diff
changeset
|
300 |
with Hedgehogs[i] do |
9157
2f8b60b89121
ok. this could be tidier, but, I'm sick of hogs w/ unmodified thaw thawing on exactly wrong turn.
nemo
parents:
9137
diff
changeset
|
301 |
begin |
2f8b60b89121
ok. this could be tidier, but, I'm sick of hogs w/ unmodified thaw thawing on exactly wrong turn.
nemo
parents:
9137
diff
changeset
|
302 |
if Effects[heFrozen] > 255 then Effects[heFrozen]:= max(255,Effects[heFrozen]-50000); |
2f8b60b89121
ok. this could be tidier, but, I'm sick of hogs w/ unmodified thaw thawing on exactly wrong turn.
nemo
parents:
9137
diff
changeset
|
303 |
if (Gear <> nil) and (Effects[heFrozen] < 256) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] > 255) then |
2f8b60b89121
ok. this could be tidier, but, I'm sick of hogs w/ unmodified thaw thawing on exactly wrong turn.
nemo
parents:
9137
diff
changeset
|
304 |
CurrHedgehog:= i |
2f8b60b89121
ok. this could be tidier, but, I'm sick of hogs w/ unmodified thaw thawing on exactly wrong turn.
nemo
parents:
9137
diff
changeset
|
305 |
end; |
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
306 |
if (not CurrentTeam^.Passive) and ((CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear = nil) or (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] > 255)) then |
9157
2f8b60b89121
ok. this could be tidier, but, I'm sick of hogs w/ unmodified thaw thawing on exactly wrong turn.
nemo
parents:
9137
diff
changeset
|
307 |
inc(CurrentTeam^.Clan^.TurnNumber); |
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
308 |
end; |
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
309 |
until (not CurrentTeam^.Passive) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen] < 256); |
83 | 310 |
|
7270
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
311 |
SwitchCurrentHedgehog(@(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog])); |
6691
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
312 |
{$IFDEF USE_TOUCH_INTERFACE} |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
313 |
if (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NoCrosshair) = 0 then |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
314 |
begin |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
315 |
if not(arrowUp.show) then |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
316 |
begin |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
317 |
animateWidget(@arrowUp, true, true); |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
318 |
animateWidget(@arrowDown, true, true); |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
319 |
end; |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
320 |
end |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
321 |
else |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
322 |
if arrowUp.show then |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
323 |
begin |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
324 |
animateWidget(@arrowUp, true, false); |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
325 |
animateWidget(@arrowDown, true, false); |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
326 |
end; |
79c96abd06d6
added hide/show animation for the aiming keys (should animateWidget() be moved to another unit?)
Xeli
parents:
6622
diff
changeset
|
327 |
{$ENDIF} |
6622 | 328 |
AmmoMenuInvalidated:= true; |
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
329 |
end; |
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
330 |
|
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
331 |
procedure AfterSwitchHedgehog; |
5357
ec36f3d53f3c
Tiny optimization: convert smooth wind indicator change gear into visual gear
unc0rr
parents:
5167
diff
changeset
|
332 |
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
|
333 |
CurWeapon: PAmmo; |
6913 | 334 |
w: real; |
335 |
vg: PVisualGear; |
|
13277
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
336 |
g: PGear; |
10124
aabd1b75d5a3
Even more explicit type conversions and other stuff to help pas2c use ansistrings
unc0rr
parents:
10116
diff
changeset
|
337 |
s: ansistring; |
1058
c53c5c4e7b48
- Proper turns counting, split SwitchHedgehog into two functions
unc0rr
parents:
1011
diff
changeset
|
338 |
begin |
15225
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
339 |
if PlacingHogs or PlacingKings then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
340 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
341 |
PlacingHogs:= false; |
15225
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
342 |
PlacingKings:= false; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
343 |
for t:= 0 to Pred(TeamsCount) do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
344 |
for i:= 0 to cMaxHHIndex do |
15225
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
345 |
if ((GameFlags and gfPlaceHog) <> 0) and (TeamsArray[t]^.Hedgehogs[i].Gear <> nil) and (TeamsArray[t]^.Hedgehogs[i].Unplaced) then |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
346 |
PlacingHogs:= true |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
347 |
else if ((GameFlags and gfPlaceHog) = 0) and ((GameFlags and gfKing) <> 0) and (TeamsArray[t]^.Hedgehogs[i].Gear <> nil) and (TeamsArray[t]^.Hedgehogs[i].UnplacedKing) then |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
348 |
PlacingKings:= true; |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
349 |
|
15225
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
350 |
if (not PlacingHogs) and (not PlacingKings) then // Reset various things I mucked with |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
351 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
352 |
for i:= 0 to ClansCount do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
353 |
if ClansArray[i] <> nil then |
13761
a0d6404a80a2
Rework rankings of losing clans: Rank them in the reverse order they died
Wuzzy <Wuzzy2@mail.ru>
parents:
13760
diff
changeset
|
354 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
355 |
ClansArray[i]^.TurnNumber:= 0; |
13761
a0d6404a80a2
Rework rankings of losing clans: Rank them in the reverse order they died
Wuzzy <Wuzzy2@mail.ru>
parents:
13760
diff
changeset
|
356 |
end; |
13652
7b506f1357e4
Backed out changeset 2d787d122083 to revert TotalRounds to 0.9.23 behaviour
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset
|
357 |
ResetWeapons |
13654
d5fe7db1baa9
Fix TotalRounds increasing incorrectly if gfRandomOrder is off
Wuzzy <Wuzzy2@mail.ru>
parents:
13653
diff
changeset
|
358 |
end; |
d5fe7db1baa9
Fix TotalRounds increasing incorrectly if gfRandomOrder is off
Wuzzy <Wuzzy2@mail.ru>
parents:
13653
diff
changeset
|
359 |
|
13653
f606ca8b80fd
Backed out changeset c265a3e6f6da to revert to 0.9.23 TotalRounds behaviour
Wuzzy <Wuzzy2@mail.ru>
parents:
13652
diff
changeset
|
360 |
end; |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
361 |
|
15225
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
362 |
if (not PlacingHogs) and (not PlacingKings) then |
13659
5b58aa82b5dc
Oops, add forgotten begin/end in uTeams
Wuzzy <Wuzzy2@mail.ru>
parents:
13657
diff
changeset
|
363 |
begin |
13656
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
364 |
if (TotalRoundsReal = -1) then |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
365 |
TotalRoundsReal:= 0; |
13657
de2b7bc00d40
More straightforward TotalRoundsPre counting if there's only 1 clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13656
diff
changeset
|
366 |
if (TotalRoundsPre = -1) and (ClansCount = 1) then |
de2b7bc00d40
More straightforward TotalRoundsPre counting if there's only 1 clan
Wuzzy <Wuzzy2@mail.ru>
parents:
13656
diff
changeset
|
367 |
TotalRoundsPre:= 0; |
13659
5b58aa82b5dc
Oops, add forgotten begin/end in uTeams
Wuzzy <Wuzzy2@mail.ru>
parents:
13657
diff
changeset
|
368 |
end; |
13656
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
369 |
|
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
370 |
// Determine clan ID to check to determine whether to increase TotalRoundsPre/TotalRoundsReal |
15225
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
371 |
if (not PlacingHogs) and (not PlacingKings) then |
13655
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
372 |
begin |
13656
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
373 |
if SwapClanPre = -1 then |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
374 |
begin |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
375 |
if (GameFlags and gfRandomOrder) <> 0 then |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
376 |
SwapClanPre:= 0 |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
377 |
else |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
378 |
SwapClanPre:= ClansCount - 1; |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
379 |
end; |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
380 |
if SwapClanReal = -1 then |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
381 |
SwapClanReal:= CurrentTeam^.Clan^.ClanIndex; |
13655
34aeaa627400
Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on
Wuzzy <Wuzzy2@mail.ru>
parents:
13654
diff
changeset
|
382 |
end; |
13654
d5fe7db1baa9
Fix TotalRounds increasing incorrectly if gfRandomOrder is off
Wuzzy <Wuzzy2@mail.ru>
parents:
13653
diff
changeset
|
383 |
|
2431
23242609c44b
Real fix to ammo slot overflow (bug triggered by r2411 fix)
unc0rr
parents:
2376
diff
changeset
|
384 |
inc(CurrentTeam^.Clan^.TurnNumber); |
8935 | 385 |
with CurrentTeam^.Clan^ do |
386 |
for t:= 0 to Pred(TeamsNumber) do |
|
387 |
with Teams[t]^ do |
|
388 |
for i:= 0 to Pred(HedgehogsNumber) do |
|
389 |
with Hedgehogs[i] do |
|
390 |
if Effects[heFrozen] > 255 then |
|
391 |
Effects[heFrozen]:= max(255,Effects[heFrozen]-50000); |
|
2431
23242609c44b
Real fix to ammo slot overflow (bug triggered by r2411 fix)
unc0rr
parents:
2376
diff
changeset
|
392 |
|
6924 | 393 |
CurWeapon:= GetCurAmmoEntry(CurrentHedgehog^); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
394 |
if CurWeapon^.Count = 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
395 |
CurrentHedgehog^.CurAmmoType:= amNothing; |
2431
23242609c44b
Real fix to ammo slot overflow (bug triggered by r2411 fix)
unc0rr
parents:
2376
diff
changeset
|
396 |
|
602 | 397 |
with CurrentHedgehog^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
398 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
399 |
with Gear^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
400 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
401 |
Z:= cCurrHHZ; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
402 |
State:= gstHHDriven; |
5063 | 403 |
Active:= true; |
7835
a84936d1618a
Clear hedgehog's gear Power value when switching. Should fix issue 446 (not tested, but looks obvious).
unc0rr
parents:
7755
diff
changeset
|
404 |
Power:= 0; |
5063 | 405 |
LastDamage:= nil |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
406 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
407 |
RemoveGearFromList(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
408 |
InsertGearToList(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
409 |
FollowGear:= Gear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
410 |
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
|
411 |
|
4218 | 412 |
if (GameFlags and gfDisableWind) = 0 then |
413 |
begin |
|
7001 | 414 |
cWindSpeed:= rndSign(GetRandomf * 2 * cMaxWindSpeed); |
6913 | 415 |
w:= hwFloat2Float(cWindSpeed); |
416 |
vg:= AddVisualGear(0, 0, vgtSmoothWindBar); |
|
417 |
if vg <> nil then vg^.dAngle:= w; |
|
4900 | 418 |
AddFileLog('Wind = '+FloatToStr(cWindSpeed)); |
4218 | 419 |
end; |
420 |
||
602 | 421 |
ApplyAmmoChanges(CurrentHedgehog^); |
800 | 422 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
423 |
if (not CurrentTeam^.ExtDriven) and (CurrentHedgehog^.BotLevel = 0) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
424 |
SetBinds(CurrentTeam^.Binds); |
1650
a65681cc27c2
Don't fallback to default binds set when switching to remotely driven team
unc0rr
parents:
1495
diff
changeset
|
425 |
|
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2758
diff
changeset
|
426 |
if PlacingHogs then |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
427 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
428 |
if CurrentHedgehog^.Unplaced then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
429 |
TurnTimeLeft:= 15000 |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
430 |
else TurnTimeLeft:= 0 |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
431 |
end |
15225
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
432 |
else if PlacingKings then |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
433 |
if CurrentHedgehog^.King and CurrentHedgehog^.UnplacedKing then |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
434 |
TurnTimeLeft:= cHedgehogTurnTime |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
435 |
else |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15058
diff
changeset
|
436 |
TurnTimeLeft:= 0 |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
437 |
else |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
438 |
begin |
13277
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
439 |
if ((GameFlags and gfTagTeam) <> 0) and (not NextClan) then |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
440 |
begin |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
441 |
if TagTurnTimeLeft <> 0 then |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
442 |
TurnTimeLeft:= TagTurnTimeLeft; |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
443 |
TagTurnTimeLeft:= 0; |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
444 |
end |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
445 |
else |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
446 |
begin |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
447 |
TurnTimeLeft:= cHedgehogTurnTime; |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
448 |
TagTurnTimeLeft:= 0; |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
449 |
NextClan:= false; |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
450 |
end; |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
451 |
|
14356
ce7f9f7cd359
Never enable switcher while in the "Place your King" round
Wuzzy <Wuzzy2@mail.ru>
parents:
14224
diff
changeset
|
452 |
// Enable switching mode when gfSwitchHog is active |
ce7f9f7cd359
Never enable switcher while in the "Place your King" round
Wuzzy <Wuzzy2@mail.ru>
parents:
14224
diff
changeset
|
453 |
if ((GameFlags and gfSwitchHog) <> 0) and (not CurrentTeam^.hasGone) and |
ce7f9f7cd359
Never enable switcher while in the "Place your King" round
Wuzzy <Wuzzy2@mail.ru>
parents:
14224
diff
changeset
|
454 |
// Exception: During the special "Place your King" round in King Mode; |
ce7f9f7cd359
Never enable switcher while in the "Place your King" round
Wuzzy <Wuzzy2@mail.ru>
parents:
14224
diff
changeset
|
455 |
// you're not supposed to switch away from your king in this round. |
ce7f9f7cd359
Never enable switcher while in the "Place your King" round
Wuzzy <Wuzzy2@mail.ru>
parents:
14224
diff
changeset
|
456 |
(not (((GameFlags and gfKing) <> 0) and ((GameFlags and gfPlaceHog) = 0) and (TotalRoundsReal <= 0))) then |
13277
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
457 |
begin |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
458 |
g:= AddGear(hwRound(CurrentHedgehog^.Gear^.X), hwRound(CurrentHedgehog^.Gear^.Y), gtSwitcher, 0, _0, _0, 0); |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
459 |
CurAmmoGear:= g; |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
460 |
lastGearByUID:= g; |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
461 |
end |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
462 |
else |
5984e8c6cbeb
Add new game flag gfSwitchHog, enable hog switching at turn start
Wuzzy <Wuzzy2@mail.ru>
parents:
13179
diff
changeset
|
463 |
bShowFinger:= true; |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
464 |
end; |
11918
232b57a70aca
Make the timer red when it is the get-away time
Wuzzy <almikes@aol.com>
parents:
11739
diff
changeset
|
465 |
IsGetAwayTime:= false; |
7980
7f8df51553a7
Remove duplicate files from voices (add a fallback check in uSound). Add JustYouWait as an alternate to IllGetYou. Note that IllGetYou being called every turn seems awkward. IMO they probably should be reserved for significant enemy action. Maybe played by team of heavily damaged or killed hog.
nemo
parents:
7837
diff
changeset
|
466 |
|
14047
006f97a6f6a7
Enemy/AI hogs now say “Hmm” on turn start. Use IllGetYou/JustYouWait for hit after attack
Wuzzy <Wuzzy2@mail.ru>
parents:
14039
diff
changeset
|
467 |
// turn start taunt: sndYesSir for own team, sndHmm for enemy or computer team |
3774 | 468 |
if (TurnTimeLeft > 0) and (CurrentHedgehog^.BotLevel = 0) then |
469 |
begin |
|
14661
db05d9bf7466
Hide hog GUI extras in scripted cinematic, also suppress some voices
Wuzzy <Wuzzy2@mail.ru>
parents:
14616
diff
changeset
|
470 |
if (not CinematicScript) then |
db05d9bf7466
Hide hog GUI extras in scripted cinematic, also suppress some voices
Wuzzy <Wuzzy2@mail.ru>
parents:
14616
diff
changeset
|
471 |
if CurrentTeam^.ExtDriven then |
db05d9bf7466
Hide hog GUI extras in scripted cinematic, also suppress some voices
Wuzzy <Wuzzy2@mail.ru>
parents:
14616
diff
changeset
|
472 |
AddVoice(sndHmm, CurrentTeam^.voicepack) |
db05d9bf7466
Hide hog GUI extras in scripted cinematic, also suppress some voices
Wuzzy <Wuzzy2@mail.ru>
parents:
14616
diff
changeset
|
473 |
else |
db05d9bf7466
Hide hog GUI extras in scripted cinematic, also suppress some voices
Wuzzy <Wuzzy2@mail.ru>
parents:
14616
diff
changeset
|
474 |
AddVoice(sndYesSir, CurrentTeam^.voicepack); |
6905 | 475 |
if cHedgehogTurnTime < 1000000 then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
476 |
ReadyTimeLeft:= cReadyDelay; |
10124
aabd1b75d5a3
Even more explicit type conversions and other stuff to help pas2c use ansistrings
unc0rr
parents:
10116
diff
changeset
|
477 |
s:= ansistring(CurrentTeam^.TeamName); |
13647
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13602
diff
changeset
|
478 |
AddCaption(FormatA(trmsg[sidReady], s), capcolDefault, capgrpGameState) |
3774 | 479 |
end |
480 |
else |
|
3798 | 481 |
begin |
14661
db05d9bf7466
Hide hog GUI extras in scripted cinematic, also suppress some voices
Wuzzy <Wuzzy2@mail.ru>
parents:
14616
diff
changeset
|
482 |
if (TurnTimeLeft > 0) and (not CinematicScript) then |
db05d9bf7466
Hide hog GUI extras in scripted cinematic, also suppress some voices
Wuzzy <Wuzzy2@mail.ru>
parents:
14616
diff
changeset
|
483 |
AddVoice(sndHmm, CurrentTeam^.voicepack); |
db05d9bf7466
Hide hog GUI extras in scripted cinematic, also suppress some voices
Wuzzy <Wuzzy2@mail.ru>
parents:
14616
diff
changeset
|
484 |
ReadyTimeLeft:= 0; |
3952
d6412423da45
moved some utilities to a separate column with round buttons
koda
parents:
3935
diff
changeset
|
485 |
end; |
4 | 486 |
end; |
487 |
||
14483 | 488 |
function SetMissionTeam(): PTeam; |
14482
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
489 |
var team: PTeam; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
490 |
begin |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
491 |
New(team); |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
492 |
if checkFails(team <> nil, 'AddTeam: team = nil', true) then exit(nil); |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
493 |
FillChar(team^, sizeof(TTeam), 0); |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
494 |
team^.HedgehogsNumber:= 0; |
14541
181509fe1ae8
Fix player team ignoring custom team control scheme in campaign/missions
Wuzzy <Wuzzy2@mail.ru>
parents:
14533
diff
changeset
|
495 |
team^.Binds:= DefaultBinds; |
14482
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
496 |
|
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
497 |
CurrentTeam:= team; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
498 |
MissionTeam:= team; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
499 |
SetMissionTeam:= team; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
500 |
end; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
501 |
|
549 | 502 |
function AddTeam(TeamColor: Longword): PTeam; |
2695 | 503 |
var team: PTeam; |
13073 | 504 |
c: LongInt; |
4 | 505 |
begin |
11537 | 506 |
if checkFails(TeamsCount < cMaxTeams, 'Too many teams', true) then exit(nil); |
2695 | 507 |
New(team); |
11537 | 508 |
if checkFails(team <> nil, 'AddTeam: team = nil', true) then exit(nil); |
2695 | 509 |
FillChar(team^, sizeof(TTeam), 0); |
510 |
team^.AttackBar:= 2; |
|
2806 | 511 |
team^.CurrHedgehog:= 0; |
2747 | 512 |
team^.Flag:= 'hedgewars'; |
547 | 513 |
|
2695 | 514 |
TeamsArray[TeamsCount]:= team; |
547 | 515 |
inc(TeamsCount); |
13179
061d55939e47
Use visible team count instead of total team count to determine rendered team bar height
Wuzzy <Wuzzy2@mail.ru>
parents:
13161
diff
changeset
|
516 |
inc(VisibleTeamsCount); |
547 | 517 |
|
13073 | 518 |
team^.Binds:= DefaultBinds; |
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
519 |
team^.Passive:= false; |
8346 | 520 |
|
549 | 521 |
c:= Pred(ClansCount); |
522 |
while (c >= 0) and (ClansArray[c]^.Color <> TeamColor) do dec(c); |
|
523 |
if c < 0 then |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
524 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
525 |
new(team^.Clan); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
526 |
FillChar(team^.Clan^, sizeof(TClan), 0); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
527 |
ClansArray[ClansCount]:= team^.Clan; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
528 |
inc(ClansCount); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
529 |
with team^.Clan^ do |
549 | 530 |
begin |
550 | 531 |
ClanIndex:= Pred(ClansCount); |
3379 | 532 |
Color:= TeamColor; |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
4978
diff
changeset
|
533 |
TagTeamIndex:= 0; |
13761
a0d6404a80a2
Rework rankings of losing clans: Rank them in the reverse order they died
Wuzzy <Wuzzy2@mail.ru>
parents:
13760
diff
changeset
|
534 |
Flawless:= true; |
15057
1a754860b0e5
Refactor definition of "local" clans
Wuzzy <Wuzzy2@mail.ru>
parents:
14945
diff
changeset
|
535 |
LocalOrAlly:= false; |
13763
b1177e9c9ee9
Fix player rankings getting confused if a clan was revived
Wuzzy <Wuzzy2@mail.ru>
parents:
13761
diff
changeset
|
536 |
DeathLogged:= false; |
13761
a0d6404a80a2
Rework rankings of losing clans: Rank them in the reverse order they died
Wuzzy <Wuzzy2@mail.ru>
parents:
13760
diff
changeset
|
537 |
StatsHandled:= false; |
549 | 538 |
end |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
539 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
540 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
541 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
542 |
team^.Clan:= ClansArray[c]; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
543 |
end; |
549 | 544 |
|
2695 | 545 |
with team^.Clan^ do |
549 | 546 |
begin |
2695 | 547 |
Teams[TeamsNumber]:= team; |
14616
3cf7799e04b5
Add SetTeamPassive. Passive teams are treated like frozen teams
Wuzzy <Wuzzy2@mail.ru>
parents:
14578
diff
changeset
|
548 |
Passive:= false; |
549 | 549 |
inc(TeamsNumber) |
550 |
end; |
|
551 |
||
11739 | 552 |
// mirror changes into array for clans to spawn |
553 |
SpawnClansArray:= ClansArray; |
|
554 |
||
2695 | 555 |
CurrentTeam:= team; |
556 |
AddTeam:= team; |
|
4 | 557 |
end; |
558 |
||
47 | 559 |
procedure RecountAllTeamsHealth; |
547 | 560 |
var t: LongInt; |
2376 | 561 |
begin |
547 | 562 |
for t:= 0 to Pred(TeamsCount) do |
563 |
RecountTeamHealth(TeamsArray[t]) |
|
47 | 564 |
end; |
565 |
||
566 |
procedure InitTeams; |
|
547 | 567 |
var i, t: LongInt; |
2784 | 568 |
th, h: LongInt; |
47 | 569 |
begin |
2726 | 570 |
|
547 | 571 |
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
|
572 |
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
|
573 |
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
|
574 |
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
|
575 |
begin |
15058
e3b3fa42a93b
IsHogLocal: If there's a mission team, only count members in the clan of that team
Wuzzy <Wuzzy2@mail.ru>
parents:
15057
diff
changeset
|
576 |
if (MissionTeam = nil) or (MissionTeam^.TeamName = TeamName) then |
e3b3fa42a93b
IsHogLocal: If there's a mission team, only count members in the clan of that team
Wuzzy <Wuzzy2@mail.ru>
parents:
15057
diff
changeset
|
577 |
Clan^.LocalOrAlly:= true; |
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
|
578 |
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
|
579 |
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
|
580 |
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
|
581 |
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
|
582 |
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
|
583 |
if Hedgehogs[i].Gear <> nil then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
584 |
inc(th, Hedgehogs[i].Gear^.Health); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
585 |
if th > MaxTeamHealth then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
586 |
MaxTeamHealth:= th; |
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
|
587 |
// 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
|
588 |
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
|
589 |
begin |
14403
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14371
diff
changeset
|
590 |
hasKing:= true; |
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
|
591 |
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
|
592 |
Hedgehogs[0].Hat:= 'crown'; |
7010
10a0a31804f3
Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents:
7001
diff
changeset
|
593 |
Hedgehogs[0].Effects[hePoisoned] := 0; |
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
|
594 |
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
|
595 |
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
|
596 |
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
|
597 |
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
|
598 |
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
|
599 |
inc(th, Hedgehogs[0].Gear^.Health); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
600 |
if th > MaxTeamHealth then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
601 |
MaxTeamHealth:= th |
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
|
602 |
end |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
603 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
604 |
Hedgehogs[0].Gear^.Health:= h; |
13602
f7cbf7d8298d
Cap hedgehog health to prevent overflow bugs
Wuzzy <Wuzzy2@mail.ru>
parents:
13504
diff
changeset
|
605 |
// Prevent overflow |
f7cbf7d8298d
Cap hedgehog health to prevent overflow bugs
Wuzzy <Wuzzy2@mail.ru>
parents:
13504
diff
changeset
|
606 |
if (Hedgehogs[0].Gear^.Health < 0) or (Hedgehogs[0].Gear^.Health > cMaxHogHealth) then |
f7cbf7d8298d
Cap hedgehog health to prevent overflow bugs
Wuzzy <Wuzzy2@mail.ru>
parents:
13504
diff
changeset
|
607 |
Hedgehogs[0].Gear^.Health:= cMaxHogHealth; |
4102
96efb3bbf8e3
Extend shoppa hack to disable health crates to saucer and portal modes as well
nemo
parents:
4101
diff
changeset
|
608 |
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
|
609 |
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
|
610 |
end; |
2726 | 611 |
|
47 | 612 |
RecountAllTeamsHealth |
4 | 613 |
end; |
614 |
||
615 |
function TeamSize(p: PTeam): Longword; |
|
2695 | 616 |
var i, value: Longword; |
4 | 617 |
begin |
2695 | 618 |
value:= 0; |
4 | 619 |
for i:= 0 to cMaxHHIndex do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
620 |
if p^.Hedgehogs[i].Gear <> nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
621 |
inc(value); |
2695 | 622 |
TeamSize:= value; |
4 | 623 |
end; |
624 |
||
549 | 625 |
procedure RecountClanHealth(clan: PClan); |
626 |
var i: LongInt; |
|
627 |
begin |
|
628 |
with clan^ do |
|
629 |
begin |
|
630 |
ClanHealth:= 0; |
|
631 |
for i:= 0 to Pred(TeamsNumber) do |
|
632 |
inc(ClanHealth, Teams[i]^.TeamHealth) |
|
633 |
end |
|
634 |
end; |
|
635 |
||
47 | 636 |
procedure RecountTeamHealth(team: PTeam); |
371 | 637 |
var i: LongInt; |
47 | 638 |
begin |
639 |
with team^ do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
640 |
begin |
7990 | 641 |
TeamHealth:= 0; |
642 |
for i:= 0 to cMaxHHIndex do |
|
643 |
if Hedgehogs[i].Gear <> nil then |
|
644 |
inc(TeamHealth, Hedgehogs[i].Gear^.Health) |
|
645 |
else if Hedgehogs[i].GearHidden <> nil then |
|
646 |
inc(TeamHealth, Hedgehogs[i].GearHidden^.Health); |
|
2376 | 647 |
|
9720
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9685
diff
changeset
|
648 |
if TeamHealth > MaxTeamHealth then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
649 |
begin |
9720
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9685
diff
changeset
|
650 |
MaxTeamHealth:= TeamHealth; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
651 |
RecountAllTeamsHealth; |
9720
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9685
diff
changeset
|
652 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
653 |
end; |
549 | 654 |
|
655 |
RecountClanHealth(team^.Clan); |
|
656 |
||
2005 | 657 |
AddVisualGear(0, 0, vgtTeamHealthSorter) |
47 | 658 |
end; |
659 |
||
8817
0d3014097240
move RestoreHog from uGears to uTeams to break a circular dependency
koda
parents:
8681
diff
changeset
|
660 |
procedure RestoreHog(HH: PHedgehog); |
0d3014097240
move RestoreHog from uGears to uTeams to break a circular dependency
koda
parents:
8681
diff
changeset
|
661 |
begin |
0d3014097240
move RestoreHog from uGears to uTeams to break a circular dependency
koda
parents:
8681
diff
changeset
|
662 |
HH^.Gear:=HH^.GearHidden; |
0d3014097240
move RestoreHog from uGears to uTeams to break a circular dependency
koda
parents:
8681
diff
changeset
|
663 |
HH^.GearHidden:= nil; |
0d3014097240
move RestoreHog from uGears to uTeams to break a circular dependency
koda
parents:
8681
diff
changeset
|
664 |
InsertGearToList(HH^.Gear); |
0d3014097240
move RestoreHog from uGears to uTeams to break a circular dependency
koda
parents:
8681
diff
changeset
|
665 |
HH^.Gear^.State:= (HH^.Gear^.State and (not (gstHHDriven or gstInvisible or gstAttacking))) or gstAttacked; |
9291
15f7bb217b66
Make add/delete consistent (this has bugged me for so long)
nemo
parents:
9285
diff
changeset
|
666 |
AddCI(HH^.Gear); |
8817
0d3014097240
move RestoreHog from uGears to uTeams to break a circular dependency
koda
parents:
8681
diff
changeset
|
667 |
HH^.Gear^.Active:= true; |
13145
e330feceb662
Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents:
13073
diff
changeset
|
668 |
ScriptCall('onHogRestore', HH^.Gear^.Uid); |
e330feceb662
Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents:
13073
diff
changeset
|
669 |
AddVisualGear(0, 0, vgtTeamHealthSorter); |
8817
0d3014097240
move RestoreHog from uGears to uTeams to break a circular dependency
koda
parents:
8681
diff
changeset
|
670 |
end; |
0d3014097240
move RestoreHog from uGears to uTeams to break a circular dependency
koda
parents:
8681
diff
changeset
|
671 |
|
72 | 672 |
procedure RestoreTeamsFromSave; |
547 | 673 |
var t: LongInt; |
72 | 674 |
begin |
547 | 675 |
for t:= 0 to Pred(TeamsCount) do |
676 |
TeamsArray[t]^.ExtDriven:= false |
|
72 | 677 |
end; |
678 |
||
2040 | 679 |
procedure TeamGoneEffect(var Team: TTeam); |
680 |
var i: LongInt; |
|
681 |
begin |
|
10345 | 682 |
with Team do |
683 |
if skippedTurns < 3 then |
|
6131 | 684 |
begin |
10349
a51de45dcc42
Fix some issues with rejoining (rejoining client still desyncs though)
unc0rr
parents:
10345
diff
changeset
|
685 |
inc(skippedTurns); |
a51de45dcc42
Fix some issues with rejoining (rejoining client still desyncs though)
unc0rr
parents:
10345
diff
changeset
|
686 |
for i:= 0 to cMaxHHIndex do |
a51de45dcc42
Fix some issues with rejoining (rejoining client still desyncs though)
unc0rr
parents:
10345
diff
changeset
|
687 |
with Hedgehogs[i] do |
a51de45dcc42
Fix some issues with rejoining (rejoining client still desyncs though)
unc0rr
parents:
10345
diff
changeset
|
688 |
if Gear <> nil then |
a51de45dcc42
Fix some issues with rejoining (rejoining client still desyncs though)
unc0rr
parents:
10345
diff
changeset
|
689 |
Gear^.State:= Gear^.State and (not gstHHDriven); |
a51de45dcc42
Fix some issues with rejoining (rejoining client still desyncs though)
unc0rr
parents:
10345
diff
changeset
|
690 |
|
a51de45dcc42
Fix some issues with rejoining (rejoining client still desyncs though)
unc0rr
parents:
10345
diff
changeset
|
691 |
ParseCommand('/skip', true); |
10345 | 692 |
end |
693 |
else |
|
694 |
for i:= 0 to cMaxHHIndex do |
|
695 |
with Hedgehogs[i] do |
|
696 |
begin |
|
697 |
if Hedgehogs[i].GearHidden <> nil then |
|
698 |
RestoreHog(@Hedgehogs[i]); |
|
6131 | 699 |
|
10345 | 700 |
if Gear <> nil then |
701 |
begin |
|
702 |
Gear^.Hedgehog^.Effects[heInvulnerable]:= 0; |
|
703 |
Gear^.Damage:= Gear^.Health; |
|
704 |
Gear^.State:= (Gear^.State or gstHHGone) and (not gstHHDriven) |
|
705 |
end |
|
706 |
end |
|
2040 | 707 |
end; |
708 |
||
14482
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
709 |
procedure chAddMissionHH(var id: shortstring); |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
710 |
var s: shortstring; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
711 |
Health: LongInt; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
712 |
begin |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
713 |
s:= ''; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
714 |
if (not isDeveloperMode) then |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
715 |
exit; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
716 |
if checkFails((CurrentTeam <> nil), 'Can''t add hedgehogs yet, add a team first!', true) then exit; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
717 |
with CurrentTeam^ do |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
718 |
begin |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
719 |
if checkFails(HedgehogsNumber<=cMaxHHIndex, 'Can''t add hedgehog to "' + TeamName + '"! (already ' + intToStr(HedgehogsNumber) + ' hogs)', true) then exit; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
720 |
SplitBySpace(id, s); |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
721 |
CurrentHedgehog:= @Hedgehogs[HedgehogsNumber]; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
722 |
CurrentHedgehog^.BotLevel:= StrToInt(id); |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
723 |
CurrentHedgehog^.Team:= CurrentTeam; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
724 |
SplitBySpace(s, id); |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
725 |
Health:= StrToInt(s); |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
726 |
if checkFails((Health > 0) and (Health <= cMaxHogHealth), 'Invalid hedgehog health (must be between 1 and '+IntToStr(cMaxHogHealth)+')', true) then exit; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
727 |
CurrentHedgehog^.Name:= id; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
728 |
CurrentHedgehog^.InitialHealth:= Health; |
14945
8b848c2939da
Add taunt sndFlyAway when hog flies off the map
Wuzzy <Wuzzy2@mail.ru>
parents:
14936
diff
changeset
|
729 |
CurrentHedgehog^.RevengeHog:= nil; |
14482
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
730 |
inc(HedgehogsNumber) |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
731 |
end |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
732 |
end; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
733 |
|
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
|
734 |
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
|
735 |
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
|
736 |
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
|
737 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
738 |
s:= ''; |
10883
294ef49efdd2
terminate engine and output fatal error message if hedgehogs are added incorrectly
sheepluva
parents:
10665
diff
changeset
|
739 |
if (not isDeveloperMode) then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
740 |
exit; |
11537 | 741 |
if checkFails((CurrentTeam <> nil), 'Can''t add hedgehogs yet, add a team first!', true) then exit; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
742 |
with CurrentTeam^ do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
743 |
begin |
11537 | 744 |
if checkFails(HedgehogsNumber<=cMaxHHIndex, 'Can''t add hedgehog to "' + TeamName + '"! (already ' + intToStr(HedgehogsNumber) + ' hogs)', true) then exit; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
745 |
SplitBySpace(id, s); |
7270
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
746 |
SwitchCurrentHedgehog(@Hedgehogs[HedgehogsNumber]); |
8370 | 747 |
CurrentHedgehog^.BotLevel:= StrToInt(id); |
9749
443d233316e5
make the team association with hog before calling gear creation. makes some lua a little easier
nemo
parents:
9720
diff
changeset
|
748 |
CurrentHedgehog^.Team:= CurrentTeam; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
749 |
Gear:= AddGear(0, 0, gtHedgehog, 0, _0, _0, 0); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
750 |
SplitBySpace(s, id); |
8370 | 751 |
Gear^.Health:= StrToInt(s); |
13602
f7cbf7d8298d
Cap hedgehog health to prevent overflow bugs
Wuzzy <Wuzzy2@mail.ru>
parents:
13504
diff
changeset
|
752 |
if checkFails((Gear^.Health > 0) and (Gear^.Health <= cMaxHogHealth), 'Invalid hedgehog health (must be between 1 and '+IntToStr(cMaxHogHealth)+')', true) then exit; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
753 |
if (GameFlags and gfSharedAmmo) <> 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
754 |
CurrentHedgehog^.AmmoStore:= Clan^.ClanIndex |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
755 |
else if (GameFlags and gfPerHogAmmo) <> 0 then |
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
|
756 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
757 |
AddAmmoStore; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
758 |
CurrentHedgehog^.AmmoStore:= StoreCnt - 1 |
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
|
759 |
end |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
760 |
else CurrentHedgehog^.AmmoStore:= TeamsCount - 1; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
761 |
CurrentHedgehog^.Gear:= Gear; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
762 |
CurrentHedgehog^.Name:= id; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
763 |
CurrentHedgehog^.InitialHealth:= Gear^.Health; |
14039 | 764 |
CurrentHedgehog^.RevengeHog:= nil; |
14945
8b848c2939da
Add taunt sndFlyAway when hog flies off the map
Wuzzy <Wuzzy2@mail.ru>
parents:
14936
diff
changeset
|
765 |
CurrentHedgehog^.FlownOffMap:= false; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
766 |
CurrHedgehog:= HedgehogsNumber; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
767 |
inc(HedgehogsNumber) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
768 |
end |
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
|
769 |
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
|
770 |
|
9407
860f959f92c9
Engine loads team binds from team config. Frontend still sends default binds commands, and default binds in team config aren't processed.
unc0rr
parents:
9295
diff
changeset
|
771 |
procedure loadTeamBinds(s: shortstring); |
860f959f92c9
Engine loads team binds from team config. Frontend still sends default binds commands, and default binds in team config aren't processed.
unc0rr
parents:
9295
diff
changeset
|
772 |
var i: LongInt; |
860f959f92c9
Engine loads team binds from team config. Frontend still sends default binds commands, and default binds in team config aren't processed.
unc0rr
parents:
9295
diff
changeset
|
773 |
begin |
860f959f92c9
Engine loads team binds from team config. Frontend still sends default binds commands, and default binds in team config aren't processed.
unc0rr
parents:
9295
diff
changeset
|
774 |
for i:= 1 to length(s) do |
9521
8054d9d775fd
merge with latest defaul, fixing compiling with fpc, parsing and rendering with pas2c, some minor problems with compiling with clang
koda
diff
changeset
|
775 |
if ((s[i] = '\') or |
8054d9d775fd
merge with latest defaul, fixing compiling with fpc, parsing and rendering with pas2c, some minor problems with compiling with clang
koda
diff
changeset
|
776 |
(s[i] = '/') or |
8054d9d775fd
merge with latest defaul, fixing compiling with fpc, parsing and rendering with pas2c, some minor problems with compiling with clang
koda
diff
changeset
|
777 |
(s[i] = ':')) then |
8054d9d775fd
merge with latest defaul, fixing compiling with fpc, parsing and rendering with pas2c, some minor problems with compiling with clang
koda
diff
changeset
|
778 |
s[i]:= '_'; |
9407
860f959f92c9
Engine loads team binds from team config. Frontend still sends default binds commands, and default binds in team config aren't processed.
unc0rr
parents:
9295
diff
changeset
|
779 |
|
9466 | 780 |
s:= cPathz[ptTeams] + '/' + s + '.hwt'; |
9464
901e363d5837
Finish rework of default binds system. Default binds now work even before first turn.
unc0rr
parents:
9407
diff
changeset
|
781 |
|
9466 | 782 |
loadBinds('bind', s); |
9407
860f959f92c9
Engine loads team binds from team config. Frontend still sends default binds commands, and default binds in team config aren't processed.
unc0rr
parents:
9295
diff
changeset
|
783 |
end; |
860f959f92c9
Engine loads team binds from team config. Frontend still sends default binds commands, and default binds in team config aren't processed.
unc0rr
parents:
9295
diff
changeset
|
784 |
|
14486
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
785 |
// Make sure the team name of chTeam is unique. |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
786 |
// If it isn't, the name is changed to be unique. |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
787 |
procedure makeTeamNameUnique(chTeam: PTeam); |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
788 |
var tail: shortstring; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
789 |
t, numLen, numTail: LongInt; |
14578
9be988a01565
Fix "unused variable" warning (valOK)
Wuzzy <Wuzzy2@mail.ru>
parents:
14541
diff
changeset
|
790 |
// valOK: Word; -- see pas2c-related FIXME below |
14486
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
791 |
nameDupeCheck: boolean; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
792 |
chChar: char; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
793 |
begin |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
794 |
nameDupeCheck:= false; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
795 |
while(nameDupeCheck = false) do |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
796 |
begin |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
797 |
nameDupeCheck:= true; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
798 |
for t:=0 to TeamsCount - 1 do |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
799 |
begin |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
800 |
// Name collision? |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
801 |
if (chTeam <> teamsArray[t]) and (TeamsArray[t]^.TeamName = chTeam^.TeamName) then |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
802 |
begin |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
803 |
// Change the name by appending a sequence number, starting from 2 |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
804 |
numLen:= 0; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
805 |
chChar:= chTeam^.TeamName[Length(chTeam^.TeamName) - numLen]; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
806 |
// Parse number at end of team name (if any) |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
807 |
while (chChar >= '0') and (chChar <= '9') and (numLen < Length(chTeam^.TeamName)) do |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
808 |
begin |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
809 |
inc(numLen); |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
810 |
chChar:= chTeam^.TeamName[Length(chTeam^.TeamName) - numLen]; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
811 |
end; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
812 |
|
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
813 |
if numLen > 0 then |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
814 |
// Number found: Increment it by 1 |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
815 |
begin |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
816 |
tail:= Copy(chTeam^.TeamName, Length(chTeam^.TeamName) - numLen + 1, numLen); |
14515
bcb418530a1c
remove Wuzzy's val checking, add a FIXME to add that to the C implementation
nemo
parents:
14486
diff
changeset
|
817 |
(* FIXME - pas2c missing 3rd param for val |
14486
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
818 |
valOK:= 1; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
819 |
Val(tail, numTail, valOK); |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
820 |
Inc(numTail); |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
821 |
if valOK = 0 then |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
822 |
tail:= IntToStr(numTail) |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
823 |
else |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
824 |
// This should not happen |
14515
bcb418530a1c
remove Wuzzy's val checking, add a FIXME to add that to the C implementation
nemo
parents:
14486
diff
changeset
|
825 |
tail:= shortstring('X'); |
bcb418530a1c
remove Wuzzy's val checking, add a FIXME to add that to the C implementation
nemo
parents:
14486
diff
changeset
|
826 |
*) |
bcb418530a1c
remove Wuzzy's val checking, add a FIXME to add that to the C implementation
nemo
parents:
14486
diff
changeset
|
827 |
Val(tail, numTail); |
bcb418530a1c
remove Wuzzy's val checking, add a FIXME to add that to the C implementation
nemo
parents:
14486
diff
changeset
|
828 |
Inc(numTail); |
14516
3e6b12d23957
heh. apparently pas2c doesn't validate pascal, so I guess we need to dogfood *both*
nemo
parents:
14515
diff
changeset
|
829 |
tail:= IntToStr(numTail); |
14486
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
830 |
chTeam^.TeamName:= Copy(chTeam^.TeamName, 0, Length(chTeam^.TeamName) - numLen) + tail; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
831 |
end |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
832 |
else |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
833 |
// No number at team end: Just append a '2' |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
834 |
chTeam^.TeamName:= chTeam^.TeamName + ' 2'; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
835 |
nameDupeCheck:= false; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
836 |
break; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
837 |
end; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
838 |
end; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
839 |
end; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
840 |
end; |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
841 |
|
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
|
842 |
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
|
843 |
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
|
844 |
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
|
845 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
846 |
cs:= ''; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
847 |
ts:= ''; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
848 |
if isDeveloperMode then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
849 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
850 |
SplitBySpace(s, cs); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
851 |
SplitBySpace(cs, ts); |
8370 | 852 |
Color:= StrToInt(cs); |
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
|
853 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
854 |
// color is always little endian so the mask must be constant also in big endian archs |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
855 |
Color:= Color or $FF000000; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
856 |
AddTeam(Color); |
14482
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
857 |
|
11544 | 858 |
if CurrentTeam <> nil then |
859 |
begin |
|
860 |
CurrentTeam^.TeamName:= ts; |
|
14486
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
861 |
makeTeamNameUnique(CurrentTeam); |
65b25ca6ff31
Check team name collision and make them unique, if neccessary
Wuzzy <Wuzzy2@mail.ru>
parents:
14483
diff
changeset
|
862 |
|
11544 | 863 |
CurrentTeam^.PlayerHash:= s; |
864 |
loadTeamBinds(ts); |
|
10015 | 865 |
|
11544 | 866 |
if GameType in [gmtDemo, gmtSave, gmtRecord] then |
867 |
CurrentTeam^.ExtDriven:= 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
|
868 |
|
14936
ba5fd934f49b
Don't agressively select voicepack language automatically, must be now enabled explicitly with _qau suffix
Wuzzy <Wuzzy2@mail.ru>
parents:
14739
diff
changeset
|
869 |
CurrentTeam^.voicepack:= AskForVoicepack('Default_qau') |
11544 | 870 |
end |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
871 |
end |
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
|
872 |
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
|
873 |
|
14482
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
874 |
procedure chSetMissionTeam(var s: shortstring); |
14483 | 875 |
var ts, cs: shortstring; |
14482
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
876 |
begin |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
877 |
cs:= ''; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
878 |
ts:= ''; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
879 |
if isDeveloperMode then |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
880 |
begin |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
881 |
SplitBySpace(s, cs); |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
882 |
SplitBySpace(cs, ts); |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
883 |
|
14483 | 884 |
SetMissionTeam(); |
14482
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
885 |
|
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
886 |
if CurrentTeam <> nil then |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
887 |
begin |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
888 |
CurrentTeam^.TeamName:= ts; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
889 |
CurrentTeam^.PlayerHash:= s; |
14541
181509fe1ae8
Fix player team ignoring custom team control scheme in campaign/missions
Wuzzy <Wuzzy2@mail.ru>
parents:
14533
diff
changeset
|
890 |
loadTeamBinds(ts); |
14936
ba5fd934f49b
Don't agressively select voicepack language automatically, must be now enabled explicitly with _qau suffix
Wuzzy <Wuzzy2@mail.ru>
parents:
14739
diff
changeset
|
891 |
CurrentTeam^.voicepack:= AskForVoicepack('Default_qau') |
14482
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
892 |
end |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
893 |
end |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
894 |
end; |
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
895 |
|
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
|
896 |
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
|
897 |
var y: shortstring; |
8370 | 898 |
t: Longint; |
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
|
899 |
begin |
8370 | 900 |
y:= ''; |
901 |
if (not isDeveloperMode) or (CurrentHedgehog = nil) or (CurrentHedgehog^.Gear = nil) then |
|
902 |
exit; |
|
903 |
SplitBySpace(x, y); |
|
904 |
t:= StrToInt(x); |
|
905 |
CurrentHedgehog^.Gear^.X:= int2hwFloat(t); |
|
906 |
t:= StrToInt(y); |
|
907 |
CurrentHedgehog^.Gear^.Y:= int2hwFloat(t) |
|
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
|
908 |
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
|
909 |
|
4401 | 910 |
procedure chBind(var id: shortstring); |
911 |
begin |
|
9466 | 912 |
if CurrentTeam = nil then |
913 |
exit; |
|
7191
9419294e5f33
first attempt at implementing support for keys with modifiers
Xeli
parents:
7184
diff
changeset
|
914 |
|
9466 | 915 |
addBind(CurrentTeam^.Binds, id) |
4401 | 916 |
end; |
917 |
||
4404 | 918 |
procedure chTeamGone(var s:shortstring); |
10344
cceabf9628bb
Fix issues with unsynced F and G messages being lost if current team which is supposed to convert them to synced f/g quits
unc0rr
parents:
10343
diff
changeset
|
919 |
var t, i: LongInt; |
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
920 |
isSynced: boolean; |
4404 | 921 |
begin |
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
922 |
isSynced:= s[1] = 's'; |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
923 |
|
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
924 |
Delete(s, 1, 1); |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
925 |
|
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
926 |
t:= 0; |
10665 | 927 |
while (t < TeamsCount) and (TeamsArray[t]^.TeamName <> s) do |
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
928 |
inc(t); |
10665 | 929 |
if t = TeamsCount then |
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
930 |
exit; |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
931 |
|
10397 | 932 |
TeamsArray[t]^.isGoneFlagPendingToBeSet:= true; |
10344
cceabf9628bb
Fix issues with unsynced F and G messages being lost if current team which is supposed to convert them to synced f/g quits
unc0rr
parents:
10343
diff
changeset
|
933 |
|
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
934 |
if isSynced then |
10665 | 935 |
begin |
936 |
for i:= 0 to Pred(TeamsCount) do |
|
937 |
with TeamsArray[i]^ do |
|
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
938 |
begin |
10665 | 939 |
if (not hasGone) and isGoneFlagPendingToBeSet then |
940 |
begin |
|
14533
6446ddf0c0ba
Suppress “<team> is gone message on game end
Wuzzy <Wuzzy2@mail.ru>
parents:
14516
diff
changeset
|
941 |
if (not TeamsGameOver) then |
6446ddf0c0ba
Suppress “<team> is gone message on game end
Wuzzy <Wuzzy2@mail.ru>
parents:
14516
diff
changeset
|
942 |
AddChatString(#7 + Format('* '+shortstring(trmsg[sidTeamGone]), TeamName)); |
10665 | 943 |
if not CurrentTeam^.ExtDriven then SendIPC(_S'f' + s); |
944 |
hasGone:= true; |
|
945 |
skippedTurns:= 0; |
|
946 |
isGoneFlagPendingToBeSet:= false; |
|
947 |
RecountTeamHealth(TeamsArray[i]) |
|
948 |
end; |
|
949 |
if hasGone and isGoneFlagPendingToBeUnset then |
|
950 |
ParseCommand('/teamback s' + s, true) |
|
951 |
end |
|
952 |
end |
|
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
953 |
else |
10665 | 954 |
begin |
10944
c4b3440eeac6
- Fix order of messages, also don't duplicate last timestamped message
unc0rr
parents:
10883
diff
changeset
|
955 |
//TeamsArray[t]^.isGoneFlagPendingToBeSet:= true; |
10344
cceabf9628bb
Fix issues with unsynced F and G messages being lost if current team which is supposed to convert them to synced f/g quits
unc0rr
parents:
10343
diff
changeset
|
956 |
|
10398 | 957 |
if (not CurrentTeam^.ExtDriven) or (CurrentTeam^.TeamName = s) or (CurrentTeam^.hasGone) then |
10665 | 958 |
ParseCommand('/teamgone s' + s, true) |
959 |
end; |
|
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
960 |
end; |
4404 | 961 |
|
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
962 |
procedure chTeamBack(var s:shortstring); |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
963 |
var t: LongInt; |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
964 |
isSynced: boolean; |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
965 |
begin |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
966 |
isSynced:= s[1] = 's'; |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
967 |
|
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
968 |
Delete(s, 1, 1); |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
969 |
|
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
970 |
t:= 0; |
10665 | 971 |
while (t < TeamsCount) and (TeamsArray[t]^.TeamName <> s) do |
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
972 |
inc(t); |
10665 | 973 |
if t = TeamsCount then |
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
974 |
exit; |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
975 |
|
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
976 |
if isSynced then |
7119 | 977 |
begin |
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
978 |
with TeamsArray[t]^ do |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
979 |
if hasGone then |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
980 |
begin |
13882 | 981 |
AddChatString(#8 + Format('* '+shortstring(trmsg[sidTeamBack]), TeamName)); |
10344
cceabf9628bb
Fix issues with unsynced F and G messages being lost if current team which is supposed to convert them to synced f/g quits
unc0rr
parents:
10343
diff
changeset
|
982 |
if not CurrentTeam^.ExtDriven then SendIPC(_S'g' + s); |
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
983 |
hasGone:= false; |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
984 |
|
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
985 |
RecountTeamHealth(TeamsArray[t]); |
4404 | 986 |
|
10397 | 987 |
if isGoneFlagPendingToBeUnset and (Owner = UserNick) then |
10350
4e919f7b9d92
Don't pick up own team if only recieved synced teamback message. Fixes second rejoin desync (untested).
unc0rr
parents:
10349
diff
changeset
|
988 |
ExtDriven:= false; |
4e919f7b9d92
Don't pick up own team if only recieved synced teamback message. Fixes second rejoin desync (untested).
unc0rr
parents:
10349
diff
changeset
|
989 |
|
10397 | 990 |
isGoneFlagPendingToBeUnset:= false; |
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
991 |
end; |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
992 |
end |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
993 |
else |
10665 | 994 |
begin |
10397 | 995 |
TeamsArray[t]^.isGoneFlagPendingToBeUnset:= true; |
10344
cceabf9628bb
Fix issues with unsynced F and G messages being lost if current team which is supposed to convert them to synced f/g quits
unc0rr
parents:
10343
diff
changeset
|
996 |
|
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
997 |
if not CurrentTeam^.ExtDriven then |
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
998 |
ParseCommand('/teamback s' + s, true); |
10665 | 999 |
end; |
4404 | 1000 |
end; |
1001 |
||
1002 |
||
7270
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1003 |
procedure SwitchCurrentHedgehog(newHog: PHedgehog); |
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1004 |
var oldCI, newCI: boolean; |
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1005 |
oldHH: PHedgehog; |
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1006 |
begin |
7755
b8958e64e68d
Also shove using shotgun, switch off hat when not active hog
nemo
parents:
7669
diff
changeset
|
1007 |
if (CurrentHedgehog <> nil) and (CurrentHedgehog^.CurAmmoType = amKnife) then |
b8958e64e68d
Also shove using shotgun, switch off hat when not active hog
nemo
parents:
7669
diff
changeset
|
1008 |
LoadHedgehogHat(CurrentHedgehog^, CurrentHedgehog^.Hat); |
7270
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1009 |
oldCI:= (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear^.CollisionIndex >= 0); |
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1010 |
newCI:= (newHog^.Gear <> nil) and (newHog^.Gear^.CollisionIndex >= 0); |
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1011 |
if oldCI then DeleteCI(CurrentHedgehog^.Gear); |
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1012 |
if newCI then DeleteCI(newHog^.Gear); |
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1013 |
oldHH:= CurrentHedgehog; |
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1014 |
CurrentHedgehog:= newHog; |
9291
15f7bb217b66
Make add/delete consistent (this has bugged me for so long)
nemo
parents:
9285
diff
changeset
|
1015 |
if oldCI then AddCI(oldHH^.Gear); |
15f7bb217b66
Make add/delete consistent (this has bugged me for so long)
nemo
parents:
9285
diff
changeset
|
1016 |
if newCI then AddCI(newHog^.Gear) |
7270
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1017 |
end; |
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1018 |
|
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7191
diff
changeset
|
1019 |
|
9790 | 1020 |
procedure chSetHat(var s: shortstring); |
1021 |
begin |
|
1022 |
if (not isDeveloperMode) or (CurrentTeam = nil) then exit; |
|
1023 |
with CurrentTeam^ do |
|
1024 |
begin |
|
1025 |
if not CurrentHedgehog^.King then |
|
1026 |
if (s = '') |
|
1027 |
or (((GameFlags and gfKing) <> 0) and (s = 'crown')) |
|
1028 |
or ((Length(s) > 39) and (Copy(s,1,8) = 'Reserved') and (Copy(s,9,32) <> PlayerHash)) then |
|
1029 |
CurrentHedgehog^.Hat:= 'NoHat' |
|
1030 |
else |
|
1031 |
CurrentHedgehog^.Hat:= s |
|
1032 |
end; |
|
1033 |
end; |
|
1034 |
||
1035 |
procedure chGrave(var s: shortstring); |
|
1036 |
begin |
|
1037 |
if CurrentTeam = nil then |
|
1038 |
OutError(errmsgIncorrectUse + ' "/grave"', true); |
|
1039 |
if s[1]='"' then |
|
1040 |
Delete(s, 1, 1); |
|
1041 |
if s[byte(s[0])]='"' then |
|
1042 |
Delete(s, byte(s[0]), 1); |
|
1043 |
CurrentTeam^.GraveName:= s |
|
1044 |
end; |
|
1045 |
||
1046 |
procedure chFort(var s: shortstring); |
|
1047 |
begin |
|
1048 |
if CurrentTeam = nil then |
|
1049 |
OutError(errmsgIncorrectUse + ' "/fort"', true); |
|
1050 |
if s[1]='"' then |
|
1051 |
Delete(s, 1, 1); |
|
1052 |
if s[byte(s[0])]='"' then |
|
1053 |
Delete(s, byte(s[0]), 1); |
|
1054 |
CurrentTeam^.FortName:= s |
|
1055 |
end; |
|
1056 |
||
1057 |
procedure chFlag(var s: shortstring); |
|
1058 |
begin |
|
1059 |
if CurrentTeam = nil then |
|
1060 |
OutError(errmsgIncorrectUse + ' "/flag"', true); |
|
1061 |
if s[1]='"' then |
|
1062 |
Delete(s, 1, 1); |
|
1063 |
if s[byte(s[0])]='"' then |
|
1064 |
Delete(s, byte(s[0]), 1); |
|
1065 |
CurrentTeam^.flag:= s |
|
1066 |
end; |
|
1067 |
||
1068 |
procedure chOwner(var s: shortstring); |
|
1069 |
begin |
|
1070 |
if CurrentTeam = nil then |
|
1071 |
OutError(errmsgIncorrectUse + ' "/owner"', true); |
|
1072 |
||
1073 |
CurrentTeam^.Owner:= s |
|
1074 |
end; |
|
1075 |
||
3038 | 1076 |
procedure initModule; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1077 |
begin |
6898 | 1078 |
RegisterVariable('addhh', @chAddHH, false); |
14482
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
1079 |
RegisterVariable('addmisshh', @chAddMissionHH, false); |
6898 | 1080 |
RegisterVariable('addteam', @chAddTeam, false); |
14482
4b678aad50e9
Lua API: Add functions to add team selected in campaign/mission page
Wuzzy <Wuzzy2@mail.ru>
parents:
14403
diff
changeset
|
1081 |
RegisterVariable('setmissteam', @chSetMissionTeam, false); |
6898 | 1082 |
RegisterVariable('hhcoords', @chSetHHCoords, false); |
1083 |
RegisterVariable('bind', @chBind, true ); |
|
1084 |
RegisterVariable('teamgone', @chTeamGone, true ); |
|
10343
fe9853dea6c4
Finish implementation of ability to take control over your team after being disconnected. Completely untested.
unc0rr
parents:
10193
diff
changeset
|
1085 |
RegisterVariable('teamback', @chTeamBack, true ); |
9790 | 1086 |
RegisterVariable('fort' , @chFort , false); |
1087 |
RegisterVariable('grave' , @chGrave , false); |
|
1088 |
RegisterVariable('hat' , @chSetHat , false); |
|
1089 |
RegisterVariable('flag' , @chFlag , false); |
|
1090 |
RegisterVariable('owner' , @chOwner , false); |
|
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
|
1091 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1092 |
CurrentTeam:= nil; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1093 |
PreviousTeam:= nil; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1094 |
CurrentHedgehog:= nil; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1095 |
TeamsCount:= 0; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1096 |
ClansCount:= 0; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1097 |
LocalTeam:= -1; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1098 |
LocalAmmo:= -1; |
13250
195208deff1d
- Correct initialisation of TeamsGameOver (on mobile it doesn't get reset between plays, so ones set to true, prevents game to be finished next time)
antonc27 <antonc27@mail.ru>
parents:
12584
diff
changeset
|
1099 |
TeamsGameOver:= false; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1100 |
NextClan:= true; |
13656
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
1101 |
SwapClanPre:= -1; |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
1102 |
SwapClanReal:= -1; |
6982 | 1103 |
MaxTeamHealth:= 0; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1104 |
end; |
4 | 1105 |
|
3038 | 1106 |
procedure freeModule; |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4514
diff
changeset
|
1107 |
var i, h: LongWord; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1108 |
begin |
10635
8e8b320eefad
nil out CurrentHedgehog in FreeModule, add a test for nil'd CurrentHedgehog in DelCI since I'd still like to use DeleteGear for the other stuff it does. Move some variable initialiasations in AI Misc to hopefully avoid some uninit val errors.
nemo
parents:
10634
diff
changeset
|
1109 |
CurrentHedgehog:= nil; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1110 |
if TeamsCount > 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1111 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1112 |
for i:= 0 to Pred(TeamsCount) do |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4514
diff
changeset
|
1113 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1114 |
for h:= 0 to cMaxHHIndex do |
9468
3d07fd84c39d
- Actually call uTexture.initModule and .freeModule
unc0rr
parents:
9466
diff
changeset
|
1115 |
with TeamsArray[i]^.Hedgehogs[h] do |
3d07fd84c39d
- Actually call uTexture.initModule and .freeModule
unc0rr
parents:
9466
diff
changeset
|
1116 |
begin |
10646
0be6442946b1
put back the old uteams cleanup, leaks and all, to worry about post-release since my attempt to use DeleteGear was running into the fact that that procedure does way more than just delete a gear. might need an explicit cleanup routine for both to call.
nemo
parents:
10643
diff
changeset
|
1117 |
// if Gear <> nil then |
0be6442946b1
put back the old uteams cleanup, leaks and all, to worry about post-release since my attempt to use DeleteGear was running into the fact that that procedure does way more than just delete a gear. might need an explicit cleanup routine for both to call.
nemo
parents:
10643
diff
changeset
|
1118 |
// DeleteGearStage(Gear, true); |
9468
3d07fd84c39d
- Actually call uTexture.initModule and .freeModule
unc0rr
parents:
9466
diff
changeset
|
1119 |
if GearHidden <> nil then |
10646
0be6442946b1
put back the old uteams cleanup, leaks and all, to worry about post-release since my attempt to use DeleteGear was running into the fact that that procedure does way more than just delete a gear. might need an explicit cleanup routine for both to call.
nemo
parents:
10643
diff
changeset
|
1120 |
Dispose(GearHidden); |
0be6442946b1
put back the old uteams cleanup, leaks and all, to worry about post-release since my attempt to use DeleteGear was running into the fact that that procedure does way more than just delete a gear. might need an explicit cleanup routine for both to call.
nemo
parents:
10643
diff
changeset
|
1121 |
// DeleteGearStage(GearHidden, true); |
9655
e154ccca4dad
Tinted crosshair (without that cool white dot in the middle)
unc0rr
parents:
9468
diff
changeset
|
1122 |
|
10634
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1123 |
FreeAndNilTexture(NameTagTex); |
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1124 |
FreeAndNilTexture(HealthTagTex); |
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1125 |
FreeAndNilTexture(HatTex) |
9468
3d07fd84c39d
- Actually call uTexture.initModule and .freeModule
unc0rr
parents:
9466
diff
changeset
|
1126 |
end; |
9655
e154ccca4dad
Tinted crosshair (without that cool white dot in the middle)
unc0rr
parents:
9468
diff
changeset
|
1127 |
|
9468
3d07fd84c39d
- Actually call uTexture.initModule and .freeModule
unc0rr
parents:
9466
diff
changeset
|
1128 |
with TeamsArray[i]^ do |
3d07fd84c39d
- Actually call uTexture.initModule and .freeModule
unc0rr
parents:
9466
diff
changeset
|
1129 |
begin |
10634
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1130 |
FreeAndNilTexture(NameTagTex); |
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1131 |
FreeAndNilTexture(OwnerTex); |
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1132 |
FreeAndNilTexture(GraveTex); |
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1133 |
FreeAndNilTexture(AIKillsTex); |
13023
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12924
diff
changeset
|
1134 |
FreeAndNilTexture(LuaTeamValueTex); |
10634
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1135 |
FreeAndNilTexture(FlagTex); |
9468
3d07fd84c39d
- Actually call uTexture.initModule and .freeModule
unc0rr
parents:
9466
diff
changeset
|
1136 |
end; |
9655
e154ccca4dad
Tinted crosshair (without that cool white dot in the middle)
unc0rr
parents:
9468
diff
changeset
|
1137 |
|
10634
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1138 |
Dispose(TeamsArray[i]) |
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1139 |
end; |
9656 | 1140 |
for i:= 0 to Pred(ClansCount) do |
1141 |
begin |
|
10634
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1142 |
FreeAndNilTexture(ClansArray[i]^.HealthTex); |
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10581
diff
changeset
|
1143 |
Dispose(ClansArray[i]) |
9656 | 1144 |
end |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1145 |
end; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1146 |
TeamsCount:= 0; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1147 |
ClansCount:= 0; |
13656
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
1148 |
SwapClanPre:= -1; |
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13655
diff
changeset
|
1149 |
SwapClanReal:= -1; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1150 |
end; |
4 | 1151 |
|
1152 |
end. |