22 |
22 |
23 type TStatistics = record |
23 type TStatistics = record |
24 DamageRecv, |
24 DamageRecv, |
25 DamageGiven: Longword; |
25 DamageGiven: Longword; |
26 StepDamageRecv, |
26 StepDamageRecv, |
27 StepDamageGiven: Longword; |
27 StepDamageGiven, |
|
28 StepKills: Longword; |
28 MaxStepDamageRecv, |
29 MaxStepDamageRecv, |
29 MaxStepDamageGiven: Longword; |
30 MaxStepDamageGiven, |
|
31 MaxStepKills: Longword; |
30 FinishedTurns: Longword; |
32 FinishedTurns: Longword; |
31 end; |
33 end; |
32 |
34 |
33 procedure AmmoUsed(am: TAmmoType); |
35 procedure AmmoUsed(am: TAmmoType); |
34 procedure HedgehogDamaged(Gear: PGear); |
36 procedure HedgehogDamaged(Gear: PGear); |
65 inc(DamageTotal, Gear^.Damage) |
68 inc(DamageTotal, Gear^.Damage) |
66 end; |
69 end; |
67 |
70 |
68 procedure TurnReaction; |
71 procedure TurnReaction; |
69 var Gear: PGear; |
72 var Gear: PGear; |
|
73 i, t: LongInt; |
70 begin |
74 begin |
71 inc(CurrentHedgehog^.stats.FinishedTurns); |
75 inc(CurrentHedgehog^.stats.FinishedTurns); |
72 |
76 |
73 if (DamageGiven = DamageTotal) and (DamageTotal > 0) then |
77 if (DamageGiven = DamageTotal) and (DamageTotal > 0) then |
74 PlaySound(sndFirstBlood, false) |
78 PlaySound(sndFirstBlood, false) |
92 PlaySound(sndRegret, false) |
96 PlaySound(sndRegret, false) |
93 |
97 |
94 else if AmmoDamagingUsed then |
98 else if AmmoDamagingUsed then |
95 PlaySound(sndMissed, false); |
99 PlaySound(sndMissed, false); |
96 |
100 |
97 Gear:= GearsList; |
101 for t:= 0 to Pred(TeamsCount) do |
98 while Gear <> nil do |
102 with TeamsArray[t]^ do |
99 begin |
103 for i:= 0 to cMaxHHIndex do |
100 if Gear^.Kind = gtHedgehog then |
104 with Hedgehogs[i].stats do |
101 with PHedgehog(Gear^.Hedgehog)^.stats do |
105 begin |
102 begin |
106 inc(DamageRecv, StepDamageRecv); |
103 inc(DamageRecv, StepDamageRecv); |
107 inc(DamageGiven, StepDamageGiven); |
104 inc(DamageGiven, StepDamageGiven); |
108 if StepDamageRecv > MaxStepDamageRecv then MaxStepDamageRecv:= StepDamageRecv; |
105 if StepDamageRecv > MaxStepDamageRecv then MaxStepDamageRecv:= StepDamageRecv; |
109 if StepDamageGiven > MaxStepDamageGiven then MaxStepDamageGiven:= StepDamageGiven; |
106 if StepDamageGiven > MaxStepDamageGiven then MaxStepDamageGiven:= StepDamageGiven; |
110 if StepKills > MaxStepKills then MaxStepKills:= StepKills; |
107 StepDamageRecv:= 0; |
111 StepDamageRecv:= 0; |
108 StepDamageGiven:= 0 |
112 StepDamageGiven:= 0 |
109 end; |
113 end; |
110 Gear:= Gear^.NextGear |
|
111 end; |
|
112 |
114 |
113 Kills:= 0; |
115 Kills:= 0; |
114 KillsClan:= 0; |
116 KillsClan:= 0; |
115 DamageGiven:= 0; |
117 DamageGiven:= 0; |
116 DamageClan:= 0; |
118 DamageClan:= 0; |
124 AmmoDamagingUsed:= AmmoDamagingUsed or Ammoz[am].isDamaging |
126 AmmoDamagingUsed:= AmmoDamagingUsed or Ammoz[am].isDamaging |
125 end; |
127 end; |
126 |
128 |
127 procedure SendStats; |
129 procedure SendStats; |
128 var i, t: LongInt; |
130 var i, t: LongInt; |
129 msd: Longword; msdhh: PHedgehog; |
131 msd, msk: Longword; msdhh, mskhh: PHedgehog; |
|
132 mskcnt: Longword; |
130 begin |
133 begin |
131 msd:= 0; msdhh:= nil; |
134 msd:= 0; msdhh:= nil; |
|
135 msk:= 0; mskhh:= nil; |
|
136 mskcnt:= 0; |
|
137 |
132 for t:= 0 to Pred(TeamsCount) do |
138 for t:= 0 to Pred(TeamsCount) do |
133 with TeamsArray[t]^ do |
139 with TeamsArray[t]^ do |
134 begin |
140 begin |
135 for i:= 0 to cMaxHHIndex do |
141 for i:= 0 to cMaxHHIndex do |
136 if Hedgehogs[i].stats.StepDamageGiven > msd then |
142 begin |
137 begin |
143 if Hedgehogs[i].stats.MaxStepDamageGiven > msd then |
138 msdhh:= @Hedgehogs[i]; |
144 begin |
139 msd:= Hedgehogs[i].stats.StepDamageGiven |
145 msdhh:= @Hedgehogs[i]; |
140 end; |
146 msd:= Hedgehogs[i].stats.MaxStepDamageGiven |
141 end; |
147 end; |
142 if msdhh <> nil then SendStat(siMaxStepDamage, inttostr(msd) + ' ' + |
148 if Hedgehogs[i].stats.MaxStepKills >= msk then |
143 msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')'); |
149 if Hedgehogs[i].stats.MaxStepKills = msk then |
|
150 inc(mskcnt) |
|
151 else |
|
152 begin |
|
153 mskcnt:= 1; |
|
154 mskhh:= @Hedgehogs[i]; |
|
155 msk:= Hedgehogs[i].stats.MaxStepKills |
|
156 end; |
|
157 end |
|
158 end; |
|
159 if msdhh <> nil then |
|
160 SendStat(siMaxStepDamage, inttostr(msd) + ' ' + msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')'); |
|
161 if mskcnt = 1 then |
|
162 SendStat(siMaxStepKills, inttostr(msk) + ' ' + mskhh^.Name + ' (' + mskhh^.Team^.TeamName + ')'); |
|
163 |
144 if KilledHHs > 0 then SendStat(siKilledHHs, inttostr(KilledHHs)); |
164 if KilledHHs > 0 then SendStat(siKilledHHs, inttostr(KilledHHs)); |
145 end; |
165 end; |
146 |
166 |
147 end. |
167 end. |