31 procedure InitTeams; |
31 procedure InitTeams; |
32 function TeamSize(p: PTeam): Longword; |
32 function TeamSize(p: PTeam): Longword; |
33 procedure RecountTeamHealth(team: PTeam); |
33 procedure RecountTeamHealth(team: PTeam); |
34 procedure RestoreTeamsFromSave; |
34 procedure RestoreTeamsFromSave; |
35 function CheckForWin: boolean; |
35 function CheckForWin: boolean; |
36 procedure TeamGone(s: shortstring); |
|
37 procedure TeamGoneEffect(var Team: TTeam); |
36 procedure TeamGoneEffect(var Team: TTeam); |
38 function GetTeamStatString(p: PTeam): shortstring; |
37 function GetTeamStatString(p: PTeam): shortstring; |
39 |
38 |
40 implementation |
39 implementation |
41 uses uLocale, uAmmos, uChat, uMobile, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug; |
40 uses uLocale, uAmmos, uChat, uMobile, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug; |
392 begin |
391 begin |
393 for t:= 0 to Pred(TeamsCount) do |
392 for t:= 0 to Pred(TeamsCount) do |
394 TeamsArray[t]^.ExtDriven:= false |
393 TeamsArray[t]^.ExtDriven:= false |
395 end; |
394 end; |
396 |
395 |
397 procedure TeamGone(s: shortstring); |
|
398 var t: LongInt; |
|
399 begin |
|
400 t:= 0; |
|
401 while (t < cMaxTeams) |
|
402 and (TeamsArray[t] <> nil) |
|
403 and (TeamsArray[t]^.TeamName <> s) do inc(t); |
|
404 if (t = cMaxTeams) or (TeamsArray[t] = nil) then exit; |
|
405 |
|
406 with TeamsArray[t]^ do |
|
407 begin |
|
408 AddChatString('** '+ TeamName + ' is gone'); |
|
409 hasGone:= true |
|
410 end; |
|
411 |
|
412 RecountTeamHealth(TeamsArray[t]) |
|
413 end; |
|
414 |
|
415 procedure TeamGoneEffect(var Team: TTeam); |
396 procedure TeamGoneEffect(var Team: TTeam); |
416 var i: LongInt; |
397 var i: LongInt; |
417 begin |
398 begin |
418 with Team do |
399 with Team do |
419 for i:= 0 to cMaxHHIndex do |
400 for i:= 0 to cMaxHHIndex do |
513 b:= KeyNameToCode(id); |
494 b:= KeyNameToCode(id); |
514 if b = 0 then OutError(errmsgUnknownVariable + ' "' + id + '"', false) |
495 if b = 0 then OutError(errmsgUnknownVariable + ' "' + id + '"', false) |
515 else CurrentTeam^.Binds[b]:= s |
496 else CurrentTeam^.Binds[b]:= s |
516 end; |
497 end; |
517 |
498 |
|
499 procedure chTeamGone(var s:shortstring); |
|
500 var t: LongInt; |
|
501 begin |
|
502 t:= 0; |
|
503 while (t < cMaxTeams) |
|
504 and (TeamsArray[t] <> nil) |
|
505 and (TeamsArray[t]^.TeamName <> s) do inc(t); |
|
506 if (t = cMaxTeams) or (TeamsArray[t] = nil) then exit; |
|
507 |
|
508 with TeamsArray[t]^ do |
|
509 begin |
|
510 AddChatString('** '+ TeamName + ' is gone'); |
|
511 hasGone:= true |
|
512 end; |
|
513 |
|
514 RecountTeamHealth(TeamsArray[t]) |
|
515 end; |
|
516 |
|
517 |
518 procedure initModule; |
518 procedure initModule; |
519 begin |
519 begin |
520 RegisterVariable('addhh', vtCommand, @chAddHH, false); |
520 RegisterVariable('addhh', vtCommand, @chAddHH, false); |
521 RegisterVariable('addteam', vtCommand, @chAddTeam, false); |
521 RegisterVariable('addteam', vtCommand, @chAddTeam, false); |
522 RegisterVariable('hhcoords', vtCommand, @chSetHHCoords, false); |
522 RegisterVariable('hhcoords', vtCommand, @chSetHHCoords, false); |
523 RegisterVariable('bind', vtCommand, @chBind, true ); |
523 RegisterVariable('bind', vtCommand, @chBind, true ); |
|
524 RegisterVariable('teamgone', vtCommand, @chTeamGone, true ); |
524 |
525 |
525 CurrentTeam:= nil; |
526 CurrentTeam:= nil; |
526 PreviousTeam:= nil; |
527 PreviousTeam:= nil; |
527 CurrentHedgehog:= nil; |
528 CurrentHedgehog:= nil; |
528 TeamsCount:= 0; |
529 TeamsCount:= 0; |