]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Adding scoreboard created by z411 and improved by LegendGuard
authorLegendaryGuard <rootuser999@gmail.com>
Mon, 14 Jun 2021 09:52:09 +0000 (11:52 +0200)
committerLegendaryGuard <rootuser999@gmail.com>
Mon, 14 Jun 2021 09:52:09 +0000 (11:52 +0200)
268 files changed:
gfx/flags/0.tga [new file with mode: 0644]
gfx/flags/1.tga [new file with mode: 0644]
gfx/flags/10.tga [new file with mode: 0644]
gfx/flags/100.tga [new file with mode: 0644]
gfx/flags/101.tga [new file with mode: 0644]
gfx/flags/102.tga [new file with mode: 0644]
gfx/flags/103.tga [new file with mode: 0644]
gfx/flags/104.tga [new file with mode: 0644]
gfx/flags/105.tga [new file with mode: 0644]
gfx/flags/106.tga [new file with mode: 0644]
gfx/flags/107.tga [new file with mode: 0644]
gfx/flags/108.tga [new file with mode: 0644]
gfx/flags/109.tga [new file with mode: 0644]
gfx/flags/11.tga [new file with mode: 0644]
gfx/flags/110.tga [new file with mode: 0644]
gfx/flags/111.tga [new file with mode: 0644]
gfx/flags/112.tga [new file with mode: 0644]
gfx/flags/113.tga [new file with mode: 0644]
gfx/flags/114.tga [new file with mode: 0644]
gfx/flags/115.tga [new file with mode: 0644]
gfx/flags/116.tga [new file with mode: 0644]
gfx/flags/117.tga [new file with mode: 0644]
gfx/flags/118.tga [new file with mode: 0644]
gfx/flags/119.tga [new file with mode: 0644]
gfx/flags/12.tga [new file with mode: 0644]
gfx/flags/120.tga [new file with mode: 0644]
gfx/flags/121.tga [new file with mode: 0644]
gfx/flags/122.tga [new file with mode: 0644]
gfx/flags/123.tga [new file with mode: 0644]
gfx/flags/124.tga [new file with mode: 0644]
gfx/flags/125.tga [new file with mode: 0644]
gfx/flags/126.tga [new file with mode: 0644]
gfx/flags/127.tga [new file with mode: 0644]
gfx/flags/128.tga [new file with mode: 0644]
gfx/flags/129.tga [new file with mode: 0644]
gfx/flags/13.tga [new file with mode: 0644]
gfx/flags/130.tga [new file with mode: 0644]
gfx/flags/131.tga [new file with mode: 0644]
gfx/flags/132.tga [new file with mode: 0644]
gfx/flags/133.tga [new file with mode: 0644]
gfx/flags/134.tga [new file with mode: 0644]
gfx/flags/135.tga [new file with mode: 0644]
gfx/flags/136.tga [new file with mode: 0644]
gfx/flags/137.tga [new file with mode: 0644]
gfx/flags/138.tga [new file with mode: 0644]
gfx/flags/139.tga [new file with mode: 0644]
gfx/flags/14.tga [new file with mode: 0644]
gfx/flags/140.tga [new file with mode: 0644]
gfx/flags/141.tga [new file with mode: 0644]
gfx/flags/142.tga [new file with mode: 0644]
gfx/flags/143.tga [new file with mode: 0644]
gfx/flags/144.tga [new file with mode: 0644]
gfx/flags/145.tga [new file with mode: 0644]
gfx/flags/146.tga [new file with mode: 0644]
gfx/flags/147.tga [new file with mode: 0644]
gfx/flags/148.tga [new file with mode: 0644]
gfx/flags/149.tga [new file with mode: 0644]
gfx/flags/15.tga [new file with mode: 0644]
gfx/flags/150.tga [new file with mode: 0644]
gfx/flags/151.tga [new file with mode: 0644]
gfx/flags/152.tga [new file with mode: 0644]
gfx/flags/153.tga [new file with mode: 0644]
gfx/flags/154.tga [new file with mode: 0644]
gfx/flags/155.tga [new file with mode: 0644]
gfx/flags/156.tga [new file with mode: 0644]
gfx/flags/157.tga [new file with mode: 0644]
gfx/flags/158.tga [new file with mode: 0644]
gfx/flags/159.tga [new file with mode: 0644]
gfx/flags/16.tga [new file with mode: 0644]
gfx/flags/160.tga [new file with mode: 0644]
gfx/flags/161.tga [new file with mode: 0644]
gfx/flags/162.tga [new file with mode: 0644]
gfx/flags/163.tga [new file with mode: 0644]
gfx/flags/164.tga [new file with mode: 0644]
gfx/flags/165.tga [new file with mode: 0644]
gfx/flags/166.tga [new file with mode: 0644]
gfx/flags/167.tga [new file with mode: 0644]
gfx/flags/168.tga [new file with mode: 0644]
gfx/flags/169.tga [new file with mode: 0644]
gfx/flags/17.tga [new file with mode: 0644]
gfx/flags/170.tga [new file with mode: 0644]
gfx/flags/171.tga [new file with mode: 0644]
gfx/flags/172.tga [new file with mode: 0644]
gfx/flags/173.tga [new file with mode: 0644]
gfx/flags/174.tga [new file with mode: 0644]
gfx/flags/175.tga [new file with mode: 0644]
gfx/flags/176.tga [new file with mode: 0644]
gfx/flags/177.tga [new file with mode: 0644]
gfx/flags/178.tga [new file with mode: 0644]
gfx/flags/179.tga [new file with mode: 0644]
gfx/flags/18.tga [new file with mode: 0644]
gfx/flags/180.tga [new file with mode: 0644]
gfx/flags/181.tga [new file with mode: 0644]
gfx/flags/182.tga [new file with mode: 0644]
gfx/flags/183.tga [new file with mode: 0644]
gfx/flags/184.tga [new file with mode: 0644]
gfx/flags/185.tga [new file with mode: 0644]
gfx/flags/186.tga [new file with mode: 0644]
gfx/flags/187.tga [new file with mode: 0644]
gfx/flags/188.tga [new file with mode: 0644]
gfx/flags/189.tga [new file with mode: 0644]
gfx/flags/19.tga [new file with mode: 0644]
gfx/flags/190.tga [new file with mode: 0644]
gfx/flags/191.tga [new file with mode: 0644]
gfx/flags/192.tga [new file with mode: 0644]
gfx/flags/193.tga [new file with mode: 0644]
gfx/flags/194.tga [new file with mode: 0644]
gfx/flags/195.tga [new file with mode: 0644]
gfx/flags/196.tga [new file with mode: 0644]
gfx/flags/197.tga [new file with mode: 0644]
gfx/flags/198.tga [new file with mode: 0644]
gfx/flags/199.tga [new file with mode: 0644]
gfx/flags/2.tga [new file with mode: 0644]
gfx/flags/20.tga [new file with mode: 0644]
gfx/flags/200.tga [new file with mode: 0644]
gfx/flags/201.tga [new file with mode: 0644]
gfx/flags/202.tga [new file with mode: 0644]
gfx/flags/203.tga [new file with mode: 0644]
gfx/flags/204.tga [new file with mode: 0644]
gfx/flags/205.tga [new file with mode: 0644]
gfx/flags/206.tga [new file with mode: 0644]
gfx/flags/207.tga [new file with mode: 0644]
gfx/flags/208.tga [new file with mode: 0644]
gfx/flags/209.tga [new file with mode: 0644]
gfx/flags/21.tga [new file with mode: 0644]
gfx/flags/210.tga [new file with mode: 0644]
gfx/flags/211.tga [new file with mode: 0644]
gfx/flags/212.tga [new file with mode: 0644]
gfx/flags/213.tga [new file with mode: 0644]
gfx/flags/214.tga [new file with mode: 0644]
gfx/flags/215.tga [new file with mode: 0644]
gfx/flags/216.tga [new file with mode: 0644]
gfx/flags/217.tga [new file with mode: 0644]
gfx/flags/218.tga [new file with mode: 0644]
gfx/flags/219.tga [new file with mode: 0644]
gfx/flags/22.tga [new file with mode: 0644]
gfx/flags/220.tga [new file with mode: 0644]
gfx/flags/221.tga [new file with mode: 0644]
gfx/flags/222.tga [new file with mode: 0644]
gfx/flags/223.tga [new file with mode: 0644]
gfx/flags/224.tga [new file with mode: 0644]
gfx/flags/225.tga [new file with mode: 0644]
gfx/flags/226.tga [new file with mode: 0644]
gfx/flags/227.tga [new file with mode: 0644]
gfx/flags/228.tga [new file with mode: 0644]
gfx/flags/229.tga [new file with mode: 0644]
gfx/flags/23.tga [new file with mode: 0644]
gfx/flags/230.tga [new file with mode: 0644]
gfx/flags/231.tga [new file with mode: 0644]
gfx/flags/232.tga [new file with mode: 0644]
gfx/flags/233.tga [new file with mode: 0644]
gfx/flags/234.tga [new file with mode: 0644]
gfx/flags/235.tga [new file with mode: 0644]
gfx/flags/236.tga [new file with mode: 0644]
gfx/flags/237.tga [new file with mode: 0644]
gfx/flags/238.tga [new file with mode: 0644]
gfx/flags/239.tga [new file with mode: 0644]
gfx/flags/24.tga [new file with mode: 0644]
gfx/flags/240.tga [new file with mode: 0644]
gfx/flags/241.tga [new file with mode: 0644]
gfx/flags/242.tga [new file with mode: 0644]
gfx/flags/243.tga [new file with mode: 0644]
gfx/flags/244.tga [new file with mode: 0644]
gfx/flags/245.tga [new file with mode: 0644]
gfx/flags/246.tga [new file with mode: 0644]
gfx/flags/247.tga [new file with mode: 0644]
gfx/flags/248.tga [new file with mode: 0644]
gfx/flags/249.tga [new file with mode: 0644]
gfx/flags/25.tga [new file with mode: 0644]
gfx/flags/26.tga [new file with mode: 0644]
gfx/flags/27.tga [new file with mode: 0644]
gfx/flags/28.tga [new file with mode: 0644]
gfx/flags/29.tga [new file with mode: 0644]
gfx/flags/3.tga [new file with mode: 0644]
gfx/flags/30.tga [new file with mode: 0644]
gfx/flags/31.tga [new file with mode: 0644]
gfx/flags/32.tga [new file with mode: 0644]
gfx/flags/33.tga [new file with mode: 0644]
gfx/flags/34.tga [new file with mode: 0644]
gfx/flags/35.tga [new file with mode: 0644]
gfx/flags/36.tga [new file with mode: 0644]
gfx/flags/37.tga [new file with mode: 0644]
gfx/flags/38.tga [new file with mode: 0644]
gfx/flags/39.tga [new file with mode: 0644]
gfx/flags/4.tga [new file with mode: 0644]
gfx/flags/40.tga [new file with mode: 0644]
gfx/flags/41.tga [new file with mode: 0644]
gfx/flags/42.tga [new file with mode: 0644]
gfx/flags/43.tga [new file with mode: 0644]
gfx/flags/44.tga [new file with mode: 0644]
gfx/flags/45.tga [new file with mode: 0644]
gfx/flags/46.tga [new file with mode: 0644]
gfx/flags/47.tga [new file with mode: 0644]
gfx/flags/48.tga [new file with mode: 0644]
gfx/flags/49.tga [new file with mode: 0644]
gfx/flags/5.tga [new file with mode: 0644]
gfx/flags/50.tga [new file with mode: 0644]
gfx/flags/51.tga [new file with mode: 0644]
gfx/flags/52.tga [new file with mode: 0644]
gfx/flags/53.tga [new file with mode: 0644]
gfx/flags/54.tga [new file with mode: 0644]
gfx/flags/55.tga [new file with mode: 0644]
gfx/flags/56.tga [new file with mode: 0644]
gfx/flags/57.tga [new file with mode: 0644]
gfx/flags/58.tga [new file with mode: 0644]
gfx/flags/59.tga [new file with mode: 0644]
gfx/flags/6.tga [new file with mode: 0644]
gfx/flags/60.tga [new file with mode: 0644]
gfx/flags/61.tga [new file with mode: 0644]
gfx/flags/62.tga [new file with mode: 0644]
gfx/flags/63.tga [new file with mode: 0644]
gfx/flags/64.tga [new file with mode: 0644]
gfx/flags/65.tga [new file with mode: 0644]
gfx/flags/66.tga [new file with mode: 0644]
gfx/flags/67.tga [new file with mode: 0644]
gfx/flags/68.tga [new file with mode: 0644]
gfx/flags/69.tga [new file with mode: 0644]
gfx/flags/7.tga [new file with mode: 0644]
gfx/flags/70.tga [new file with mode: 0644]
gfx/flags/71.tga [new file with mode: 0644]
gfx/flags/72.tga [new file with mode: 0644]
gfx/flags/73.tga [new file with mode: 0644]
gfx/flags/74.tga [new file with mode: 0644]
gfx/flags/75.tga [new file with mode: 0644]
gfx/flags/76.tga [new file with mode: 0644]
gfx/flags/77.tga [new file with mode: 0644]
gfx/flags/78.tga [new file with mode: 0644]
gfx/flags/79.tga [new file with mode: 0644]
gfx/flags/8.tga [new file with mode: 0644]
gfx/flags/80.tga [new file with mode: 0644]
gfx/flags/81.tga [new file with mode: 0644]
gfx/flags/82.tga [new file with mode: 0644]
gfx/flags/83.tga [new file with mode: 0644]
gfx/flags/84.tga [new file with mode: 0644]
gfx/flags/85.tga [new file with mode: 0644]
gfx/flags/86.tga [new file with mode: 0644]
gfx/flags/87.tga [new file with mode: 0644]
gfx/flags/88.tga [new file with mode: 0644]
gfx/flags/89.tga [new file with mode: 0644]
gfx/flags/9.tga [new file with mode: 0644]
gfx/flags/90.tga [new file with mode: 0644]
gfx/flags/91.tga [new file with mode: 0644]
gfx/flags/92.tga [new file with mode: 0644]
gfx/flags/93.tga [new file with mode: 0644]
gfx/flags/94.tga [new file with mode: 0644]
gfx/flags/95.tga [new file with mode: 0644]
gfx/flags/96.tga [new file with mode: 0644]
gfx/flags/97.tga [new file with mode: 0644]
gfx/flags/98.tga [new file with mode: 0644]
gfx/flags/99.tga [new file with mode: 0644]
gfx/logo.png [new file with mode: 0644]
qcsrc/client/hud/panel/score.qc
qcsrc/client/hud/panel/scoreboard.qc
qcsrc/client/main.qh
qcsrc/common/ent_cs.qc
qcsrc/common/ent_cs.qh
qcsrc/common/gamemodes/gamemode/clanarena/cl_clanarena.qc
qcsrc/common/gamemodes/gamemode/clanarena/cl_clanarena.qh
qcsrc/common/gamemodes/gamemode/clanarena/clanarena.qh
qcsrc/common/gamemodes/gamemode/freezetag/cl_freezetag.qc
qcsrc/common/gamemodes/gamemode/freezetag/cl_freezetag.qh
qcsrc/common/gamemodes/gamemode/freezetag/freezetag.qh
qcsrc/common/items/inventory.qh
qcsrc/common/mapinfo.qh
qcsrc/common/scores.qh
qcsrc/common/teams.qh
qcsrc/server/client.qh
qcsrc/server/command/sv_cmd.qc

diff --git a/gfx/flags/0.tga b/gfx/flags/0.tga
new file mode 100644 (file)
index 0000000..21259bf
Binary files /dev/null and b/gfx/flags/0.tga differ
diff --git a/gfx/flags/1.tga b/gfx/flags/1.tga
new file mode 100644 (file)
index 0000000..aa9fd4c
Binary files /dev/null and b/gfx/flags/1.tga differ
diff --git a/gfx/flags/10.tga b/gfx/flags/10.tga
new file mode 100644 (file)
index 0000000..9d9acf7
Binary files /dev/null and b/gfx/flags/10.tga differ
diff --git a/gfx/flags/100.tga b/gfx/flags/100.tga
new file mode 100644 (file)
index 0000000..0065476
Binary files /dev/null and b/gfx/flags/100.tga differ
diff --git a/gfx/flags/101.tga b/gfx/flags/101.tga
new file mode 100644 (file)
index 0000000..cfb5e6c
Binary files /dev/null and b/gfx/flags/101.tga differ
diff --git a/gfx/flags/102.tga b/gfx/flags/102.tga
new file mode 100644 (file)
index 0000000..f3a5fcf
Binary files /dev/null and b/gfx/flags/102.tga differ
diff --git a/gfx/flags/103.tga b/gfx/flags/103.tga
new file mode 100644 (file)
index 0000000..60cf0a4
Binary files /dev/null and b/gfx/flags/103.tga differ
diff --git a/gfx/flags/104.tga b/gfx/flags/104.tga
new file mode 100644 (file)
index 0000000..81dac7e
Binary files /dev/null and b/gfx/flags/104.tga differ
diff --git a/gfx/flags/105.tga b/gfx/flags/105.tga
new file mode 100644 (file)
index 0000000..5e13fc6
Binary files /dev/null and b/gfx/flags/105.tga differ
diff --git a/gfx/flags/106.tga b/gfx/flags/106.tga
new file mode 100644 (file)
index 0000000..7386940
Binary files /dev/null and b/gfx/flags/106.tga differ
diff --git a/gfx/flags/107.tga b/gfx/flags/107.tga
new file mode 100644 (file)
index 0000000..6600c49
Binary files /dev/null and b/gfx/flags/107.tga differ
diff --git a/gfx/flags/108.tga b/gfx/flags/108.tga
new file mode 100644 (file)
index 0000000..c74d9bb
Binary files /dev/null and b/gfx/flags/108.tga differ
diff --git a/gfx/flags/109.tga b/gfx/flags/109.tga
new file mode 100644 (file)
index 0000000..421a158
Binary files /dev/null and b/gfx/flags/109.tga differ
diff --git a/gfx/flags/11.tga b/gfx/flags/11.tga
new file mode 100644 (file)
index 0000000..ec0317c
Binary files /dev/null and b/gfx/flags/11.tga differ
diff --git a/gfx/flags/110.tga b/gfx/flags/110.tga
new file mode 100644 (file)
index 0000000..6a9453b
Binary files /dev/null and b/gfx/flags/110.tga differ
diff --git a/gfx/flags/111.tga b/gfx/flags/111.tga
new file mode 100644 (file)
index 0000000..51c2e21
Binary files /dev/null and b/gfx/flags/111.tga differ
diff --git a/gfx/flags/112.tga b/gfx/flags/112.tga
new file mode 100644 (file)
index 0000000..d195677
Binary files /dev/null and b/gfx/flags/112.tga differ
diff --git a/gfx/flags/113.tga b/gfx/flags/113.tga
new file mode 100644 (file)
index 0000000..79ca029
Binary files /dev/null and b/gfx/flags/113.tga differ
diff --git a/gfx/flags/114.tga b/gfx/flags/114.tga
new file mode 100644 (file)
index 0000000..5964553
Binary files /dev/null and b/gfx/flags/114.tga differ
diff --git a/gfx/flags/115.tga b/gfx/flags/115.tga
new file mode 100644 (file)
index 0000000..40675df
Binary files /dev/null and b/gfx/flags/115.tga differ
diff --git a/gfx/flags/116.tga b/gfx/flags/116.tga
new file mode 100644 (file)
index 0000000..922a09f
Binary files /dev/null and b/gfx/flags/116.tga differ
diff --git a/gfx/flags/117.tga b/gfx/flags/117.tga
new file mode 100644 (file)
index 0000000..b3c602f
Binary files /dev/null and b/gfx/flags/117.tga differ
diff --git a/gfx/flags/118.tga b/gfx/flags/118.tga
new file mode 100644 (file)
index 0000000..6d21196
Binary files /dev/null and b/gfx/flags/118.tga differ
diff --git a/gfx/flags/119.tga b/gfx/flags/119.tga
new file mode 100644 (file)
index 0000000..418630b
Binary files /dev/null and b/gfx/flags/119.tga differ
diff --git a/gfx/flags/12.tga b/gfx/flags/12.tga
new file mode 100644 (file)
index 0000000..6d17f33
Binary files /dev/null and b/gfx/flags/12.tga differ
diff --git a/gfx/flags/120.tga b/gfx/flags/120.tga
new file mode 100644 (file)
index 0000000..04e7e5b
Binary files /dev/null and b/gfx/flags/120.tga differ
diff --git a/gfx/flags/121.tga b/gfx/flags/121.tga
new file mode 100644 (file)
index 0000000..9050be8
Binary files /dev/null and b/gfx/flags/121.tga differ
diff --git a/gfx/flags/122.tga b/gfx/flags/122.tga
new file mode 100644 (file)
index 0000000..8f7a9fb
Binary files /dev/null and b/gfx/flags/122.tga differ
diff --git a/gfx/flags/123.tga b/gfx/flags/123.tga
new file mode 100644 (file)
index 0000000..c197895
Binary files /dev/null and b/gfx/flags/123.tga differ
diff --git a/gfx/flags/124.tga b/gfx/flags/124.tga
new file mode 100644 (file)
index 0000000..4ecb999
Binary files /dev/null and b/gfx/flags/124.tga differ
diff --git a/gfx/flags/125.tga b/gfx/flags/125.tga
new file mode 100644 (file)
index 0000000..71ab1e3
Binary files /dev/null and b/gfx/flags/125.tga differ
diff --git a/gfx/flags/126.tga b/gfx/flags/126.tga
new file mode 100644 (file)
index 0000000..e48602b
Binary files /dev/null and b/gfx/flags/126.tga differ
diff --git a/gfx/flags/127.tga b/gfx/flags/127.tga
new file mode 100644 (file)
index 0000000..67152ae
Binary files /dev/null and b/gfx/flags/127.tga differ
diff --git a/gfx/flags/128.tga b/gfx/flags/128.tga
new file mode 100644 (file)
index 0000000..7b4dc0e
Binary files /dev/null and b/gfx/flags/128.tga differ
diff --git a/gfx/flags/129.tga b/gfx/flags/129.tga
new file mode 100644 (file)
index 0000000..0d380fb
Binary files /dev/null and b/gfx/flags/129.tga differ
diff --git a/gfx/flags/13.tga b/gfx/flags/13.tga
new file mode 100644 (file)
index 0000000..bac36ba
Binary files /dev/null and b/gfx/flags/13.tga differ
diff --git a/gfx/flags/130.tga b/gfx/flags/130.tga
new file mode 100644 (file)
index 0000000..06409e7
Binary files /dev/null and b/gfx/flags/130.tga differ
diff --git a/gfx/flags/131.tga b/gfx/flags/131.tga
new file mode 100644 (file)
index 0000000..4ecb1e7
Binary files /dev/null and b/gfx/flags/131.tga differ
diff --git a/gfx/flags/132.tga b/gfx/flags/132.tga
new file mode 100644 (file)
index 0000000..0ebea40
Binary files /dev/null and b/gfx/flags/132.tga differ
diff --git a/gfx/flags/133.tga b/gfx/flags/133.tga
new file mode 100644 (file)
index 0000000..5fa9b16
Binary files /dev/null and b/gfx/flags/133.tga differ
diff --git a/gfx/flags/134.tga b/gfx/flags/134.tga
new file mode 100644 (file)
index 0000000..4e33e7d
Binary files /dev/null and b/gfx/flags/134.tga differ
diff --git a/gfx/flags/135.tga b/gfx/flags/135.tga
new file mode 100644 (file)
index 0000000..bb4f448
Binary files /dev/null and b/gfx/flags/135.tga differ
diff --git a/gfx/flags/136.tga b/gfx/flags/136.tga
new file mode 100644 (file)
index 0000000..4a30ca6
Binary files /dev/null and b/gfx/flags/136.tga differ
diff --git a/gfx/flags/137.tga b/gfx/flags/137.tga
new file mode 100644 (file)
index 0000000..3988cc5
Binary files /dev/null and b/gfx/flags/137.tga differ
diff --git a/gfx/flags/138.tga b/gfx/flags/138.tga
new file mode 100644 (file)
index 0000000..3677b70
Binary files /dev/null and b/gfx/flags/138.tga differ
diff --git a/gfx/flags/139.tga b/gfx/flags/139.tga
new file mode 100644 (file)
index 0000000..d3ee665
Binary files /dev/null and b/gfx/flags/139.tga differ
diff --git a/gfx/flags/14.tga b/gfx/flags/14.tga
new file mode 100644 (file)
index 0000000..9e26881
Binary files /dev/null and b/gfx/flags/14.tga differ
diff --git a/gfx/flags/140.tga b/gfx/flags/140.tga
new file mode 100644 (file)
index 0000000..dd9b948
Binary files /dev/null and b/gfx/flags/140.tga differ
diff --git a/gfx/flags/141.tga b/gfx/flags/141.tga
new file mode 100644 (file)
index 0000000..c019a7f
Binary files /dev/null and b/gfx/flags/141.tga differ
diff --git a/gfx/flags/142.tga b/gfx/flags/142.tga
new file mode 100644 (file)
index 0000000..e60184d
Binary files /dev/null and b/gfx/flags/142.tga differ
diff --git a/gfx/flags/143.tga b/gfx/flags/143.tga
new file mode 100644 (file)
index 0000000..f3eb443
Binary files /dev/null and b/gfx/flags/143.tga differ
diff --git a/gfx/flags/144.tga b/gfx/flags/144.tga
new file mode 100644 (file)
index 0000000..0d4554f
Binary files /dev/null and b/gfx/flags/144.tga differ
diff --git a/gfx/flags/145.tga b/gfx/flags/145.tga
new file mode 100644 (file)
index 0000000..6ecfb35
Binary files /dev/null and b/gfx/flags/145.tga differ
diff --git a/gfx/flags/146.tga b/gfx/flags/146.tga
new file mode 100644 (file)
index 0000000..8641672
Binary files /dev/null and b/gfx/flags/146.tga differ
diff --git a/gfx/flags/147.tga b/gfx/flags/147.tga
new file mode 100644 (file)
index 0000000..2e5ef72
Binary files /dev/null and b/gfx/flags/147.tga differ
diff --git a/gfx/flags/148.tga b/gfx/flags/148.tga
new file mode 100644 (file)
index 0000000..2ed5930
Binary files /dev/null and b/gfx/flags/148.tga differ
diff --git a/gfx/flags/149.tga b/gfx/flags/149.tga
new file mode 100644 (file)
index 0000000..a665deb
Binary files /dev/null and b/gfx/flags/149.tga differ
diff --git a/gfx/flags/15.tga b/gfx/flags/15.tga
new file mode 100644 (file)
index 0000000..48d523d
Binary files /dev/null and b/gfx/flags/15.tga differ
diff --git a/gfx/flags/150.tga b/gfx/flags/150.tga
new file mode 100644 (file)
index 0000000..a936829
Binary files /dev/null and b/gfx/flags/150.tga differ
diff --git a/gfx/flags/151.tga b/gfx/flags/151.tga
new file mode 100644 (file)
index 0000000..5e38366
Binary files /dev/null and b/gfx/flags/151.tga differ
diff --git a/gfx/flags/152.tga b/gfx/flags/152.tga
new file mode 100644 (file)
index 0000000..a27ccd2
Binary files /dev/null and b/gfx/flags/152.tga differ
diff --git a/gfx/flags/153.tga b/gfx/flags/153.tga
new file mode 100644 (file)
index 0000000..2464885
Binary files /dev/null and b/gfx/flags/153.tga differ
diff --git a/gfx/flags/154.tga b/gfx/flags/154.tga
new file mode 100644 (file)
index 0000000..ec7e348
Binary files /dev/null and b/gfx/flags/154.tga differ
diff --git a/gfx/flags/155.tga b/gfx/flags/155.tga
new file mode 100644 (file)
index 0000000..ae1116b
Binary files /dev/null and b/gfx/flags/155.tga differ
diff --git a/gfx/flags/156.tga b/gfx/flags/156.tga
new file mode 100644 (file)
index 0000000..898fdea
Binary files /dev/null and b/gfx/flags/156.tga differ
diff --git a/gfx/flags/157.tga b/gfx/flags/157.tga
new file mode 100644 (file)
index 0000000..79a2ebd
Binary files /dev/null and b/gfx/flags/157.tga differ
diff --git a/gfx/flags/158.tga b/gfx/flags/158.tga
new file mode 100644 (file)
index 0000000..1b1249d
Binary files /dev/null and b/gfx/flags/158.tga differ
diff --git a/gfx/flags/159.tga b/gfx/flags/159.tga
new file mode 100644 (file)
index 0000000..352ad2e
Binary files /dev/null and b/gfx/flags/159.tga differ
diff --git a/gfx/flags/16.tga b/gfx/flags/16.tga
new file mode 100644 (file)
index 0000000..e5d796f
Binary files /dev/null and b/gfx/flags/16.tga differ
diff --git a/gfx/flags/160.tga b/gfx/flags/160.tga
new file mode 100644 (file)
index 0000000..e8847ca
Binary files /dev/null and b/gfx/flags/160.tga differ
diff --git a/gfx/flags/161.tga b/gfx/flags/161.tga
new file mode 100644 (file)
index 0000000..0ffb307
Binary files /dev/null and b/gfx/flags/161.tga differ
diff --git a/gfx/flags/162.tga b/gfx/flags/162.tga
new file mode 100644 (file)
index 0000000..9868716
Binary files /dev/null and b/gfx/flags/162.tga differ
diff --git a/gfx/flags/163.tga b/gfx/flags/163.tga
new file mode 100644 (file)
index 0000000..6f39ba0
Binary files /dev/null and b/gfx/flags/163.tga differ
diff --git a/gfx/flags/164.tga b/gfx/flags/164.tga
new file mode 100644 (file)
index 0000000..a5be70d
Binary files /dev/null and b/gfx/flags/164.tga differ
diff --git a/gfx/flags/165.tga b/gfx/flags/165.tga
new file mode 100644 (file)
index 0000000..87fac0a
Binary files /dev/null and b/gfx/flags/165.tga differ
diff --git a/gfx/flags/166.tga b/gfx/flags/166.tga
new file mode 100644 (file)
index 0000000..a6a8774
Binary files /dev/null and b/gfx/flags/166.tga differ
diff --git a/gfx/flags/167.tga b/gfx/flags/167.tga
new file mode 100644 (file)
index 0000000..c9836c9
Binary files /dev/null and b/gfx/flags/167.tga differ
diff --git a/gfx/flags/168.tga b/gfx/flags/168.tga
new file mode 100644 (file)
index 0000000..a228164
Binary files /dev/null and b/gfx/flags/168.tga differ
diff --git a/gfx/flags/169.tga b/gfx/flags/169.tga
new file mode 100644 (file)
index 0000000..93f2ed7
Binary files /dev/null and b/gfx/flags/169.tga differ
diff --git a/gfx/flags/17.tga b/gfx/flags/17.tga
new file mode 100644 (file)
index 0000000..4010a6d
Binary files /dev/null and b/gfx/flags/17.tga differ
diff --git a/gfx/flags/170.tga b/gfx/flags/170.tga
new file mode 100644 (file)
index 0000000..73e57ac
Binary files /dev/null and b/gfx/flags/170.tga differ
diff --git a/gfx/flags/171.tga b/gfx/flags/171.tga
new file mode 100644 (file)
index 0000000..99e6b48
Binary files /dev/null and b/gfx/flags/171.tga differ
diff --git a/gfx/flags/172.tga b/gfx/flags/172.tga
new file mode 100644 (file)
index 0000000..452e070
Binary files /dev/null and b/gfx/flags/172.tga differ
diff --git a/gfx/flags/173.tga b/gfx/flags/173.tga
new file mode 100644 (file)
index 0000000..a351503
Binary files /dev/null and b/gfx/flags/173.tga differ
diff --git a/gfx/flags/174.tga b/gfx/flags/174.tga
new file mode 100644 (file)
index 0000000..7dbad2c
Binary files /dev/null and b/gfx/flags/174.tga differ
diff --git a/gfx/flags/175.tga b/gfx/flags/175.tga
new file mode 100644 (file)
index 0000000..90fd6b3
Binary files /dev/null and b/gfx/flags/175.tga differ
diff --git a/gfx/flags/176.tga b/gfx/flags/176.tga
new file mode 100644 (file)
index 0000000..1d3db23
Binary files /dev/null and b/gfx/flags/176.tga differ
diff --git a/gfx/flags/177.tga b/gfx/flags/177.tga
new file mode 100644 (file)
index 0000000..39c938f
Binary files /dev/null and b/gfx/flags/177.tga differ
diff --git a/gfx/flags/178.tga b/gfx/flags/178.tga
new file mode 100644 (file)
index 0000000..5dbb3d5
Binary files /dev/null and b/gfx/flags/178.tga differ
diff --git a/gfx/flags/179.tga b/gfx/flags/179.tga
new file mode 100644 (file)
index 0000000..3e5a9b4
Binary files /dev/null and b/gfx/flags/179.tga differ
diff --git a/gfx/flags/18.tga b/gfx/flags/18.tga
new file mode 100644 (file)
index 0000000..8b3e723
Binary files /dev/null and b/gfx/flags/18.tga differ
diff --git a/gfx/flags/180.tga b/gfx/flags/180.tga
new file mode 100644 (file)
index 0000000..f2d9986
Binary files /dev/null and b/gfx/flags/180.tga differ
diff --git a/gfx/flags/181.tga b/gfx/flags/181.tga
new file mode 100644 (file)
index 0000000..45f3b06
Binary files /dev/null and b/gfx/flags/181.tga differ
diff --git a/gfx/flags/182.tga b/gfx/flags/182.tga
new file mode 100644 (file)
index 0000000..dda1211
Binary files /dev/null and b/gfx/flags/182.tga differ
diff --git a/gfx/flags/183.tga b/gfx/flags/183.tga
new file mode 100644 (file)
index 0000000..5621d52
Binary files /dev/null and b/gfx/flags/183.tga differ
diff --git a/gfx/flags/184.tga b/gfx/flags/184.tga
new file mode 100644 (file)
index 0000000..a7ea282
Binary files /dev/null and b/gfx/flags/184.tga differ
diff --git a/gfx/flags/185.tga b/gfx/flags/185.tga
new file mode 100644 (file)
index 0000000..45f3b06
Binary files /dev/null and b/gfx/flags/185.tga differ
diff --git a/gfx/flags/186.tga b/gfx/flags/186.tga
new file mode 100644 (file)
index 0000000..588d042
Binary files /dev/null and b/gfx/flags/186.tga differ
diff --git a/gfx/flags/187.tga b/gfx/flags/187.tga
new file mode 100644 (file)
index 0000000..0338ede
Binary files /dev/null and b/gfx/flags/187.tga differ
diff --git a/gfx/flags/188.tga b/gfx/flags/188.tga
new file mode 100644 (file)
index 0000000..4a88b14
Binary files /dev/null and b/gfx/flags/188.tga differ
diff --git a/gfx/flags/189.tga b/gfx/flags/189.tga
new file mode 100644 (file)
index 0000000..45f3b06
Binary files /dev/null and b/gfx/flags/189.tga differ
diff --git a/gfx/flags/19.tga b/gfx/flags/19.tga
new file mode 100644 (file)
index 0000000..3b7d487
Binary files /dev/null and b/gfx/flags/19.tga differ
diff --git a/gfx/flags/190.tga b/gfx/flags/190.tga
new file mode 100644 (file)
index 0000000..fed9fae
Binary files /dev/null and b/gfx/flags/190.tga differ
diff --git a/gfx/flags/191.tga b/gfx/flags/191.tga
new file mode 100644 (file)
index 0000000..3892bdd
Binary files /dev/null and b/gfx/flags/191.tga differ
diff --git a/gfx/flags/192.tga b/gfx/flags/192.tga
new file mode 100644 (file)
index 0000000..ba82f44
Binary files /dev/null and b/gfx/flags/192.tga differ
diff --git a/gfx/flags/193.tga b/gfx/flags/193.tga
new file mode 100644 (file)
index 0000000..c6c74a2
Binary files /dev/null and b/gfx/flags/193.tga differ
diff --git a/gfx/flags/194.tga b/gfx/flags/194.tga
new file mode 100644 (file)
index 0000000..3db1d0e
Binary files /dev/null and b/gfx/flags/194.tga differ
diff --git a/gfx/flags/195.tga b/gfx/flags/195.tga
new file mode 100644 (file)
index 0000000..373905c
Binary files /dev/null and b/gfx/flags/195.tga differ
diff --git a/gfx/flags/196.tga b/gfx/flags/196.tga
new file mode 100644 (file)
index 0000000..96451ca
Binary files /dev/null and b/gfx/flags/196.tga differ
diff --git a/gfx/flags/197.tga b/gfx/flags/197.tga
new file mode 100644 (file)
index 0000000..77e3fed
Binary files /dev/null and b/gfx/flags/197.tga differ
diff --git a/gfx/flags/198.tga b/gfx/flags/198.tga
new file mode 100644 (file)
index 0000000..f6e65b0
Binary files /dev/null and b/gfx/flags/198.tga differ
diff --git a/gfx/flags/199.tga b/gfx/flags/199.tga
new file mode 100644 (file)
index 0000000..3139c8d
Binary files /dev/null and b/gfx/flags/199.tga differ
diff --git a/gfx/flags/2.tga b/gfx/flags/2.tga
new file mode 100644 (file)
index 0000000..9db5a0b
Binary files /dev/null and b/gfx/flags/2.tga differ
diff --git a/gfx/flags/20.tga b/gfx/flags/20.tga
new file mode 100644 (file)
index 0000000..dd2c172
Binary files /dev/null and b/gfx/flags/20.tga differ
diff --git a/gfx/flags/200.tga b/gfx/flags/200.tga
new file mode 100644 (file)
index 0000000..c394265
Binary files /dev/null and b/gfx/flags/200.tga differ
diff --git a/gfx/flags/201.tga b/gfx/flags/201.tga
new file mode 100644 (file)
index 0000000..457e91c
Binary files /dev/null and b/gfx/flags/201.tga differ
diff --git a/gfx/flags/202.tga b/gfx/flags/202.tga
new file mode 100644 (file)
index 0000000..a31ee6c
Binary files /dev/null and b/gfx/flags/202.tga differ
diff --git a/gfx/flags/203.tga b/gfx/flags/203.tga
new file mode 100644 (file)
index 0000000..0f48674
Binary files /dev/null and b/gfx/flags/203.tga differ
diff --git a/gfx/flags/204.tga b/gfx/flags/204.tga
new file mode 100644 (file)
index 0000000..7105d69
Binary files /dev/null and b/gfx/flags/204.tga differ
diff --git a/gfx/flags/205.tga b/gfx/flags/205.tga
new file mode 100644 (file)
index 0000000..c13f351
Binary files /dev/null and b/gfx/flags/205.tga differ
diff --git a/gfx/flags/206.tga b/gfx/flags/206.tga
new file mode 100644 (file)
index 0000000..832c937
Binary files /dev/null and b/gfx/flags/206.tga differ
diff --git a/gfx/flags/207.tga b/gfx/flags/207.tga
new file mode 100644 (file)
index 0000000..c4729a1
Binary files /dev/null and b/gfx/flags/207.tga differ
diff --git a/gfx/flags/208.tga b/gfx/flags/208.tga
new file mode 100644 (file)
index 0000000..d35b404
Binary files /dev/null and b/gfx/flags/208.tga differ
diff --git a/gfx/flags/209.tga b/gfx/flags/209.tga
new file mode 100644 (file)
index 0000000..43e3439
Binary files /dev/null and b/gfx/flags/209.tga differ
diff --git a/gfx/flags/21.tga b/gfx/flags/21.tga
new file mode 100644 (file)
index 0000000..bd2030f
Binary files /dev/null and b/gfx/flags/21.tga differ
diff --git a/gfx/flags/210.tga b/gfx/flags/210.tga
new file mode 100644 (file)
index 0000000..e518774
Binary files /dev/null and b/gfx/flags/210.tga differ
diff --git a/gfx/flags/211.tga b/gfx/flags/211.tga
new file mode 100644 (file)
index 0000000..47a7a8e
Binary files /dev/null and b/gfx/flags/211.tga differ
diff --git a/gfx/flags/212.tga b/gfx/flags/212.tga
new file mode 100644 (file)
index 0000000..44ed3c6
Binary files /dev/null and b/gfx/flags/212.tga differ
diff --git a/gfx/flags/213.tga b/gfx/flags/213.tga
new file mode 100644 (file)
index 0000000..a6a8774
Binary files /dev/null and b/gfx/flags/213.tga differ
diff --git a/gfx/flags/214.tga b/gfx/flags/214.tga
new file mode 100644 (file)
index 0000000..c2f3537
Binary files /dev/null and b/gfx/flags/214.tga differ
diff --git a/gfx/flags/215.tga b/gfx/flags/215.tga
new file mode 100644 (file)
index 0000000..63032c9
Binary files /dev/null and b/gfx/flags/215.tga differ
diff --git a/gfx/flags/216.tga b/gfx/flags/216.tga
new file mode 100644 (file)
index 0000000..9f1bc1c
Binary files /dev/null and b/gfx/flags/216.tga differ
diff --git a/gfx/flags/217.tga b/gfx/flags/217.tga
new file mode 100644 (file)
index 0000000..3e9cb94
Binary files /dev/null and b/gfx/flags/217.tga differ
diff --git a/gfx/flags/218.tga b/gfx/flags/218.tga
new file mode 100644 (file)
index 0000000..90533b6
Binary files /dev/null and b/gfx/flags/218.tga differ
diff --git a/gfx/flags/219.tga b/gfx/flags/219.tga
new file mode 100644 (file)
index 0000000..4ef3454
Binary files /dev/null and b/gfx/flags/219.tga differ
diff --git a/gfx/flags/22.tga b/gfx/flags/22.tga
new file mode 100644 (file)
index 0000000..a4aff32
Binary files /dev/null and b/gfx/flags/22.tga differ
diff --git a/gfx/flags/220.tga b/gfx/flags/220.tga
new file mode 100644 (file)
index 0000000..10acd54
Binary files /dev/null and b/gfx/flags/220.tga differ
diff --git a/gfx/flags/221.tga b/gfx/flags/221.tga
new file mode 100644 (file)
index 0000000..a931c01
Binary files /dev/null and b/gfx/flags/221.tga differ
diff --git a/gfx/flags/222.tga b/gfx/flags/222.tga
new file mode 100644 (file)
index 0000000..d0dc6cb
Binary files /dev/null and b/gfx/flags/222.tga differ
diff --git a/gfx/flags/223.tga b/gfx/flags/223.tga
new file mode 100644 (file)
index 0000000..f46f58f
Binary files /dev/null and b/gfx/flags/223.tga differ
diff --git a/gfx/flags/224.tga b/gfx/flags/224.tga
new file mode 100644 (file)
index 0000000..5a4d863
Binary files /dev/null and b/gfx/flags/224.tga differ
diff --git a/gfx/flags/225.tga b/gfx/flags/225.tga
new file mode 100644 (file)
index 0000000..f6dd050
Binary files /dev/null and b/gfx/flags/225.tga differ
diff --git a/gfx/flags/226.tga b/gfx/flags/226.tga
new file mode 100644 (file)
index 0000000..b044d5d
Binary files /dev/null and b/gfx/flags/226.tga differ
diff --git a/gfx/flags/227.tga b/gfx/flags/227.tga
new file mode 100644 (file)
index 0000000..6223dcf
Binary files /dev/null and b/gfx/flags/227.tga differ
diff --git a/gfx/flags/228.tga b/gfx/flags/228.tga
new file mode 100644 (file)
index 0000000..6ffc146
Binary files /dev/null and b/gfx/flags/228.tga differ
diff --git a/gfx/flags/229.tga b/gfx/flags/229.tga
new file mode 100644 (file)
index 0000000..29a6587
Binary files /dev/null and b/gfx/flags/229.tga differ
diff --git a/gfx/flags/23.tga b/gfx/flags/23.tga
new file mode 100644 (file)
index 0000000..b6efa3f
Binary files /dev/null and b/gfx/flags/23.tga differ
diff --git a/gfx/flags/230.tga b/gfx/flags/230.tga
new file mode 100644 (file)
index 0000000..ddc9b68
Binary files /dev/null and b/gfx/flags/230.tga differ
diff --git a/gfx/flags/231.tga b/gfx/flags/231.tga
new file mode 100644 (file)
index 0000000..549e6b6
Binary files /dev/null and b/gfx/flags/231.tga differ
diff --git a/gfx/flags/232.tga b/gfx/flags/232.tga
new file mode 100644 (file)
index 0000000..b217e26
Binary files /dev/null and b/gfx/flags/232.tga differ
diff --git a/gfx/flags/233.tga b/gfx/flags/233.tga
new file mode 100644 (file)
index 0000000..c979976
Binary files /dev/null and b/gfx/flags/233.tga differ
diff --git a/gfx/flags/234.tga b/gfx/flags/234.tga
new file mode 100644 (file)
index 0000000..f27c864
Binary files /dev/null and b/gfx/flags/234.tga differ
diff --git a/gfx/flags/235.tga b/gfx/flags/235.tga
new file mode 100644 (file)
index 0000000..b4a3e12
Binary files /dev/null and b/gfx/flags/235.tga differ
diff --git a/gfx/flags/236.tga b/gfx/flags/236.tga
new file mode 100644 (file)
index 0000000..76d5976
Binary files /dev/null and b/gfx/flags/236.tga differ
diff --git a/gfx/flags/237.tga b/gfx/flags/237.tga
new file mode 100644 (file)
index 0000000..76d5976
Binary files /dev/null and b/gfx/flags/237.tga differ
diff --git a/gfx/flags/238.tga b/gfx/flags/238.tga
new file mode 100644 (file)
index 0000000..e9f0a2a
Binary files /dev/null and b/gfx/flags/238.tga differ
diff --git a/gfx/flags/239.tga b/gfx/flags/239.tga
new file mode 100644 (file)
index 0000000..4ab4fbb
Binary files /dev/null and b/gfx/flags/239.tga differ
diff --git a/gfx/flags/24.tga b/gfx/flags/24.tga
new file mode 100644 (file)
index 0000000..786558f
Binary files /dev/null and b/gfx/flags/24.tga differ
diff --git a/gfx/flags/240.tga b/gfx/flags/240.tga
new file mode 100644 (file)
index 0000000..5580333
Binary files /dev/null and b/gfx/flags/240.tga differ
diff --git a/gfx/flags/241.tga b/gfx/flags/241.tga
new file mode 100644 (file)
index 0000000..66c542e
Binary files /dev/null and b/gfx/flags/241.tga differ
diff --git a/gfx/flags/242.tga b/gfx/flags/242.tga
new file mode 100644 (file)
index 0000000..76cdf03
Binary files /dev/null and b/gfx/flags/242.tga differ
diff --git a/gfx/flags/243.tga b/gfx/flags/243.tga
new file mode 100644 (file)
index 0000000..741c23d
Binary files /dev/null and b/gfx/flags/243.tga differ
diff --git a/gfx/flags/244.tga b/gfx/flags/244.tga
new file mode 100644 (file)
index 0000000..badcaa6
Binary files /dev/null and b/gfx/flags/244.tga differ
diff --git a/gfx/flags/245.tga b/gfx/flags/245.tga
new file mode 100644 (file)
index 0000000..adf0846
Binary files /dev/null and b/gfx/flags/245.tga differ
diff --git a/gfx/flags/246.tga b/gfx/flags/246.tga
new file mode 100644 (file)
index 0000000..d6f25a1
Binary files /dev/null and b/gfx/flags/246.tga differ
diff --git a/gfx/flags/247.tga b/gfx/flags/247.tga
new file mode 100644 (file)
index 0000000..8be8237
Binary files /dev/null and b/gfx/flags/247.tga differ
diff --git a/gfx/flags/248.tga b/gfx/flags/248.tga
new file mode 100644 (file)
index 0000000..0f90ab1
Binary files /dev/null and b/gfx/flags/248.tga differ
diff --git a/gfx/flags/249.tga b/gfx/flags/249.tga
new file mode 100644 (file)
index 0000000..9b3ffa8
Binary files /dev/null and b/gfx/flags/249.tga differ
diff --git a/gfx/flags/25.tga b/gfx/flags/25.tga
new file mode 100644 (file)
index 0000000..a1a32bc
Binary files /dev/null and b/gfx/flags/25.tga differ
diff --git a/gfx/flags/26.tga b/gfx/flags/26.tga
new file mode 100644 (file)
index 0000000..5eff9ab
Binary files /dev/null and b/gfx/flags/26.tga differ
diff --git a/gfx/flags/27.tga b/gfx/flags/27.tga
new file mode 100644 (file)
index 0000000..f3fe4e8
Binary files /dev/null and b/gfx/flags/27.tga differ
diff --git a/gfx/flags/28.tga b/gfx/flags/28.tga
new file mode 100644 (file)
index 0000000..79a2ebd
Binary files /dev/null and b/gfx/flags/28.tga differ
diff --git a/gfx/flags/29.tga b/gfx/flags/29.tga
new file mode 100644 (file)
index 0000000..adfea30
Binary files /dev/null and b/gfx/flags/29.tga differ
diff --git a/gfx/flags/3.tga b/gfx/flags/3.tga
new file mode 100644 (file)
index 0000000..78f882b
Binary files /dev/null and b/gfx/flags/3.tga differ
diff --git a/gfx/flags/30.tga b/gfx/flags/30.tga
new file mode 100644 (file)
index 0000000..53fb99f
Binary files /dev/null and b/gfx/flags/30.tga differ
diff --git a/gfx/flags/31.tga b/gfx/flags/31.tga
new file mode 100644 (file)
index 0000000..a6a8774
Binary files /dev/null and b/gfx/flags/31.tga differ
diff --git a/gfx/flags/32.tga b/gfx/flags/32.tga
new file mode 100644 (file)
index 0000000..525faad
Binary files /dev/null and b/gfx/flags/32.tga differ
diff --git a/gfx/flags/33.tga b/gfx/flags/33.tga
new file mode 100644 (file)
index 0000000..03a540c
Binary files /dev/null and b/gfx/flags/33.tga differ
diff --git a/gfx/flags/34.tga b/gfx/flags/34.tga
new file mode 100644 (file)
index 0000000..9d266f2
Binary files /dev/null and b/gfx/flags/34.tga differ
diff --git a/gfx/flags/35.tga b/gfx/flags/35.tga
new file mode 100644 (file)
index 0000000..8adeebf
Binary files /dev/null and b/gfx/flags/35.tga differ
diff --git a/gfx/flags/36.tga b/gfx/flags/36.tga
new file mode 100644 (file)
index 0000000..5a9b775
Binary files /dev/null and b/gfx/flags/36.tga differ
diff --git a/gfx/flags/37.tga b/gfx/flags/37.tga
new file mode 100644 (file)
index 0000000..3cefd5e
Binary files /dev/null and b/gfx/flags/37.tga differ
diff --git a/gfx/flags/38.tga b/gfx/flags/38.tga
new file mode 100644 (file)
index 0000000..3dcc8f2
Binary files /dev/null and b/gfx/flags/38.tga differ
diff --git a/gfx/flags/39.tga b/gfx/flags/39.tga
new file mode 100644 (file)
index 0000000..cfe3e5e
Binary files /dev/null and b/gfx/flags/39.tga differ
diff --git a/gfx/flags/4.tga b/gfx/flags/4.tga
new file mode 100644 (file)
index 0000000..ba81689
Binary files /dev/null and b/gfx/flags/4.tga differ
diff --git a/gfx/flags/40.tga b/gfx/flags/40.tga
new file mode 100644 (file)
index 0000000..a3d51a3
Binary files /dev/null and b/gfx/flags/40.tga differ
diff --git a/gfx/flags/41.tga b/gfx/flags/41.tga
new file mode 100644 (file)
index 0000000..e26f0b1
Binary files /dev/null and b/gfx/flags/41.tga differ
diff --git a/gfx/flags/42.tga b/gfx/flags/42.tga
new file mode 100644 (file)
index 0000000..0def965
Binary files /dev/null and b/gfx/flags/42.tga differ
diff --git a/gfx/flags/43.tga b/gfx/flags/43.tga
new file mode 100644 (file)
index 0000000..24795fa
Binary files /dev/null and b/gfx/flags/43.tga differ
diff --git a/gfx/flags/44.tga b/gfx/flags/44.tga
new file mode 100644 (file)
index 0000000..2467c4d
Binary files /dev/null and b/gfx/flags/44.tga differ
diff --git a/gfx/flags/45.tga b/gfx/flags/45.tga
new file mode 100644 (file)
index 0000000..6200971
Binary files /dev/null and b/gfx/flags/45.tga differ
diff --git a/gfx/flags/46.tga b/gfx/flags/46.tga
new file mode 100644 (file)
index 0000000..f3b378e
Binary files /dev/null and b/gfx/flags/46.tga differ
diff --git a/gfx/flags/47.tga b/gfx/flags/47.tga
new file mode 100644 (file)
index 0000000..9741aa3
Binary files /dev/null and b/gfx/flags/47.tga differ
diff --git a/gfx/flags/48.tga b/gfx/flags/48.tga
new file mode 100644 (file)
index 0000000..030709e
Binary files /dev/null and b/gfx/flags/48.tga differ
diff --git a/gfx/flags/49.tga b/gfx/flags/49.tga
new file mode 100644 (file)
index 0000000..9f11483
Binary files /dev/null and b/gfx/flags/49.tga differ
diff --git a/gfx/flags/5.tga b/gfx/flags/5.tga
new file mode 100644 (file)
index 0000000..68e3fdc
Binary files /dev/null and b/gfx/flags/5.tga differ
diff --git a/gfx/flags/50.tga b/gfx/flags/50.tga
new file mode 100644 (file)
index 0000000..0bc26ac
Binary files /dev/null and b/gfx/flags/50.tga differ
diff --git a/gfx/flags/51.tga b/gfx/flags/51.tga
new file mode 100644 (file)
index 0000000..b3af029
Binary files /dev/null and b/gfx/flags/51.tga differ
diff --git a/gfx/flags/52.tga b/gfx/flags/52.tga
new file mode 100644 (file)
index 0000000..f52fac2
Binary files /dev/null and b/gfx/flags/52.tga differ
diff --git a/gfx/flags/53.tga b/gfx/flags/53.tga
new file mode 100644 (file)
index 0000000..1ec32d3
Binary files /dev/null and b/gfx/flags/53.tga differ
diff --git a/gfx/flags/54.tga b/gfx/flags/54.tga
new file mode 100644 (file)
index 0000000..9d1f16a
Binary files /dev/null and b/gfx/flags/54.tga differ
diff --git a/gfx/flags/55.tga b/gfx/flags/55.tga
new file mode 100644 (file)
index 0000000..9c97029
Binary files /dev/null and b/gfx/flags/55.tga differ
diff --git a/gfx/flags/56.tga b/gfx/flags/56.tga
new file mode 100644 (file)
index 0000000..32a1641
Binary files /dev/null and b/gfx/flags/56.tga differ
diff --git a/gfx/flags/57.tga b/gfx/flags/57.tga
new file mode 100644 (file)
index 0000000..d31088d
Binary files /dev/null and b/gfx/flags/57.tga differ
diff --git a/gfx/flags/58.tga b/gfx/flags/58.tga
new file mode 100644 (file)
index 0000000..f901e02
Binary files /dev/null and b/gfx/flags/58.tga differ
diff --git a/gfx/flags/59.tga b/gfx/flags/59.tga
new file mode 100644 (file)
index 0000000..6daf973
Binary files /dev/null and b/gfx/flags/59.tga differ
diff --git a/gfx/flags/6.tga b/gfx/flags/6.tga
new file mode 100644 (file)
index 0000000..e163207
Binary files /dev/null and b/gfx/flags/6.tga differ
diff --git a/gfx/flags/60.tga b/gfx/flags/60.tga
new file mode 100644 (file)
index 0000000..a3a64fb
Binary files /dev/null and b/gfx/flags/60.tga differ
diff --git a/gfx/flags/61.tga b/gfx/flags/61.tga
new file mode 100644 (file)
index 0000000..ce87b84
Binary files /dev/null and b/gfx/flags/61.tga differ
diff --git a/gfx/flags/62.tga b/gfx/flags/62.tga
new file mode 100644 (file)
index 0000000..0087433
Binary files /dev/null and b/gfx/flags/62.tga differ
diff --git a/gfx/flags/63.tga b/gfx/flags/63.tga
new file mode 100644 (file)
index 0000000..55f909c
Binary files /dev/null and b/gfx/flags/63.tga differ
diff --git a/gfx/flags/64.tga b/gfx/flags/64.tga
new file mode 100644 (file)
index 0000000..21371f2
Binary files /dev/null and b/gfx/flags/64.tga differ
diff --git a/gfx/flags/65.tga b/gfx/flags/65.tga
new file mode 100644 (file)
index 0000000..74188f7
Binary files /dev/null and b/gfx/flags/65.tga differ
diff --git a/gfx/flags/66.tga b/gfx/flags/66.tga
new file mode 100644 (file)
index 0000000..dc6d717
Binary files /dev/null and b/gfx/flags/66.tga differ
diff --git a/gfx/flags/67.tga b/gfx/flags/67.tga
new file mode 100644 (file)
index 0000000..ac61877
Binary files /dev/null and b/gfx/flags/67.tga differ
diff --git a/gfx/flags/68.tga b/gfx/flags/68.tga
new file mode 100644 (file)
index 0000000..ac4aeb9
Binary files /dev/null and b/gfx/flags/68.tga differ
diff --git a/gfx/flags/69.tga b/gfx/flags/69.tga
new file mode 100644 (file)
index 0000000..fdca68a
Binary files /dev/null and b/gfx/flags/69.tga differ
diff --git a/gfx/flags/7.tga b/gfx/flags/7.tga
new file mode 100644 (file)
index 0000000..c994521
Binary files /dev/null and b/gfx/flags/7.tga differ
diff --git a/gfx/flags/70.tga b/gfx/flags/70.tga
new file mode 100644 (file)
index 0000000..fd41787
Binary files /dev/null and b/gfx/flags/70.tga differ
diff --git a/gfx/flags/71.tga b/gfx/flags/71.tga
new file mode 100644 (file)
index 0000000..588083d
Binary files /dev/null and b/gfx/flags/71.tga differ
diff --git a/gfx/flags/72.tga b/gfx/flags/72.tga
new file mode 100644 (file)
index 0000000..9bad9b3
Binary files /dev/null and b/gfx/flags/72.tga differ
diff --git a/gfx/flags/73.tga b/gfx/flags/73.tga
new file mode 100644 (file)
index 0000000..508c56b
Binary files /dev/null and b/gfx/flags/73.tga differ
diff --git a/gfx/flags/74.tga b/gfx/flags/74.tga
new file mode 100644 (file)
index 0000000..eb86a34
Binary files /dev/null and b/gfx/flags/74.tga differ
diff --git a/gfx/flags/75.tga b/gfx/flags/75.tga
new file mode 100644 (file)
index 0000000..910c0c7
Binary files /dev/null and b/gfx/flags/75.tga differ
diff --git a/gfx/flags/76.tga b/gfx/flags/76.tga
new file mode 100644 (file)
index 0000000..45f3b06
Binary files /dev/null and b/gfx/flags/76.tga differ
diff --git a/gfx/flags/77.tga b/gfx/flags/77.tga
new file mode 100644 (file)
index 0000000..db171ee
Binary files /dev/null and b/gfx/flags/77.tga differ
diff --git a/gfx/flags/78.tga b/gfx/flags/78.tga
new file mode 100644 (file)
index 0000000..40b1577
Binary files /dev/null and b/gfx/flags/78.tga differ
diff --git a/gfx/flags/79.tga b/gfx/flags/79.tga
new file mode 100644 (file)
index 0000000..45f3b06
Binary files /dev/null and b/gfx/flags/79.tga differ
diff --git a/gfx/flags/8.tga b/gfx/flags/8.tga
new file mode 100644 (file)
index 0000000..abcfc3f
Binary files /dev/null and b/gfx/flags/8.tga differ
diff --git a/gfx/flags/80.tga b/gfx/flags/80.tga
new file mode 100644 (file)
index 0000000..8f43eb8
Binary files /dev/null and b/gfx/flags/80.tga differ
diff --git a/gfx/flags/81.tga b/gfx/flags/81.tga
new file mode 100644 (file)
index 0000000..70aa897
Binary files /dev/null and b/gfx/flags/81.tga differ
diff --git a/gfx/flags/82.tga b/gfx/flags/82.tga
new file mode 100644 (file)
index 0000000..4e77310
Binary files /dev/null and b/gfx/flags/82.tga differ
diff --git a/gfx/flags/83.tga b/gfx/flags/83.tga
new file mode 100644 (file)
index 0000000..2087886
Binary files /dev/null and b/gfx/flags/83.tga differ
diff --git a/gfx/flags/84.tga b/gfx/flags/84.tga
new file mode 100644 (file)
index 0000000..1153136
Binary files /dev/null and b/gfx/flags/84.tga differ
diff --git a/gfx/flags/85.tga b/gfx/flags/85.tga
new file mode 100644 (file)
index 0000000..f03c988
Binary files /dev/null and b/gfx/flags/85.tga differ
diff --git a/gfx/flags/86.tga b/gfx/flags/86.tga
new file mode 100644 (file)
index 0000000..05fd0e4
Binary files /dev/null and b/gfx/flags/86.tga differ
diff --git a/gfx/flags/87.tga b/gfx/flags/87.tga
new file mode 100644 (file)
index 0000000..daa98bd
Binary files /dev/null and b/gfx/flags/87.tga differ
diff --git a/gfx/flags/88.tga b/gfx/flags/88.tga
new file mode 100644 (file)
index 0000000..fc8ed45
Binary files /dev/null and b/gfx/flags/88.tga differ
diff --git a/gfx/flags/89.tga b/gfx/flags/89.tga
new file mode 100644 (file)
index 0000000..5d0dbd4
Binary files /dev/null and b/gfx/flags/89.tga differ
diff --git a/gfx/flags/9.tga b/gfx/flags/9.tga
new file mode 100644 (file)
index 0000000..3507194
Binary files /dev/null and b/gfx/flags/9.tga differ
diff --git a/gfx/flags/90.tga b/gfx/flags/90.tga
new file mode 100644 (file)
index 0000000..2c2fce7
Binary files /dev/null and b/gfx/flags/90.tga differ
diff --git a/gfx/flags/91.tga b/gfx/flags/91.tga
new file mode 100644 (file)
index 0000000..52d7b31
Binary files /dev/null and b/gfx/flags/91.tga differ
diff --git a/gfx/flags/92.tga b/gfx/flags/92.tga
new file mode 100644 (file)
index 0000000..7ad7716
Binary files /dev/null and b/gfx/flags/92.tga differ
diff --git a/gfx/flags/93.tga b/gfx/flags/93.tga
new file mode 100644 (file)
index 0000000..8429257
Binary files /dev/null and b/gfx/flags/93.tga differ
diff --git a/gfx/flags/94.tga b/gfx/flags/94.tga
new file mode 100644 (file)
index 0000000..2d25b40
Binary files /dev/null and b/gfx/flags/94.tga differ
diff --git a/gfx/flags/95.tga b/gfx/flags/95.tga
new file mode 100644 (file)
index 0000000..efb3baa
Binary files /dev/null and b/gfx/flags/95.tga differ
diff --git a/gfx/flags/96.tga b/gfx/flags/96.tga
new file mode 100644 (file)
index 0000000..d2f11f3
Binary files /dev/null and b/gfx/flags/96.tga differ
diff --git a/gfx/flags/97.tga b/gfx/flags/97.tga
new file mode 100644 (file)
index 0000000..9e26881
Binary files /dev/null and b/gfx/flags/97.tga differ
diff --git a/gfx/flags/98.tga b/gfx/flags/98.tga
new file mode 100644 (file)
index 0000000..d7876d8
Binary files /dev/null and b/gfx/flags/98.tga differ
diff --git a/gfx/flags/99.tga b/gfx/flags/99.tga
new file mode 100644 (file)
index 0000000..f4f9f35
Binary files /dev/null and b/gfx/flags/99.tga differ
diff --git a/gfx/logo.png b/gfx/logo.png
new file mode 100644 (file)
index 0000000..146f245
Binary files /dev/null and b/gfx/logo.png differ
index 24a059a6c9460592fec67b461b411b21c3026fd9..15d2e6191e050f69299eafb829a4de64e312ed0e 100644 (file)
@@ -79,6 +79,7 @@ void HUD_Score_Rankings(vector pos, vector mySize, entity me)
 
        if (!scoreboard_fade_alpha) // the scoreboard too calls Scoreboard_UpdatePlayerTeams
                Scoreboard_UpdatePlayerTeams();
+       /*
        if (team_count)
        {
                // show team scores in the first line
@@ -97,45 +98,111 @@ void HUD_Score_Rankings(vector pos, vector mySize, entity me)
                first_pl = 1;
                pos.y += fontsize.y;
                tm = teams.sort_next;
-       }
-       i = first_pl;
-
-       do
-       for (pl = players.sort_next; pl && i<entries; pl = pl.sort_next)
+       }*/
+       
+       
+       // z411 Basic team stats
+       if (team_count)
        {
-               if ((team_count && pl.team != tm.team) || pl.team == NUM_SPECTATOR)
-                       continue;
-
-               if (i == entries-1 && !me_printed && pl != me)
-               if (autocvar_hud_panel_score_rankings == 1 && spectatee_status != -1)
-               {
-                       for (pl = me.sort_next; pl; pl = pl.sort_next)
-                               if (pl.team != NUM_SPECTATOR)
-                                       break;
+               i = 0;
+               for(tm = teams.sort_next; tm; tm = tm.sort_next) {
+                       if(tm.team == NUM_SPECTATOR)
+                               continue;
+                       if(!tm.team)
+                               continue;
 
-                       if (pl)
-                               rgb = '1 1 0'; //not last but not among the leading players: yellow
-                       else
-                               rgb = '1 0 0'; //last: red
-                       pl = me;
+                       /*if (tm.team == myteam)
+                               drawfill(pos + eX * score_size * i, vec2(score_size, fontsize.y), '1 1 1', highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawstring_aspect(pos + eX * score_size * i, ftos(tm.(teamscores(ts_primary))), vec2(score_size, fontsize.y), Team_ColorRGB(tm.team) * 0.8, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       ++i;*/
+                       
+                       if (tm.team == myteam)
+                       {
+                               if (i == 0)
+                                       rgb = '0 1 0'; //first: green
+                               me_printed = true;
+                               drawfill(pos, eX * mySize.x + eY * fontsize.y, rgb, highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                       }
+                       
+                       score_color = Team_ColorRGB(tm.team) * 0.8;
+                       
+                       // TODO secondary scores test, remove
+                       if(gametype.m_modscores)
+                       {
+                               string icon;
+                               if(tm.team == NUM_TEAM_1)
+                                       icon = "gfx/hud/luma/player_red";
+                               else if(tm.team == NUM_TEAM_2)
+                                       icon = "gfx/hud/luma/player_blue";
+                               else
+                                       icon = "gfx/hud/luma/player_neutral";
+                               
+                               vector icon_sz = draw_getimagesize(icon);
+                               vector icon_sz_new = vec2(fontsize.y*(icon_sz.x/icon_sz.y), fontsize.y);
+                               
+                               s = ftos(gametype.m_modscores(tm.team));
+                               float s_width = stringwidth(s, false, fontsize) + icon_sz_new.x;
+                               
+                               //drawfill(pos, eX * s_width + eY * fontsize.y, score_color, panel_fg_alpha * 0.3, DRAWFLAG_NORMAL);
+                               drawpic(pos, icon, icon_sz_new, '1 1 1', panel_fg_alpha * 0.7, DRAWFLAG_NORMAL);
+                               drawstring(pos + eX * icon_sz_new.x, s, fontsize, '1 1 1', panel_fg_alpha * 0.7, DRAWFLAG_NORMAL);
+                               
+                               s = textShortenToWidth(Team_CustomName(tm.team), name_size - s_width, fontsize, stringwidth_colors);
+                       } else
+                               s = textShortenToWidth(Team_CustomName(tm.team), name_size, fontsize, stringwidth_colors);
+                       // TODO end
+                       
+                       drawcolorcodedstring(pos + eX * (name_size - stringwidth(s, true, fontsize)), s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       
+                       draw_beginBoldFont();
+                       drawstring(pos + eX * (name_size + spacing_size), ftos(tm.(teamscores(ts_primary))), fontsize, score_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       draw_endBoldFont();
+                       
+                       pos.y += fontsize.y;
+                       ++i;
                }
-
-               if (pl == me)
+       } else {
+               i = first_pl;
+               
+               do
+               for (pl = players.sort_next; pl && i<entries; pl = pl.sort_next)
                {
-                       if (i == first_pl)
-                               rgb = '0 1 0'; //first: green
-                       me_printed = true;
-                       drawfill(pos, eX * mySize.x + eY * fontsize.y, rgb, highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                       if ((team_count && pl.team != tm.team) || pl.team == NUM_SPECTATOR)
+                               continue;
+
+                       if (i == entries-1 && !me_printed && pl != me)
+                       if (autocvar_hud_panel_score_rankings == 1 && spectatee_status != -1)
+                       {
+                               for (pl = me.sort_next; pl; pl = pl.sort_next)
+                                       if (pl.team != NUM_SPECTATOR)
+                                               break;
+
+                               if (pl)
+                                       rgb = '1 1 0'; //not last but not among the leading players: yellow
+                               else
+                                       rgb = '1 0 0'; //last: red
+                               pl = me;
+                       }
+               
+                       if (team_count)
+                               score_color = Team_ColorRGB(pl.team) * 0.8;
+                       
+                       if (pl == me)
+                       {
+                               if (i == first_pl)
+                                       rgb = '0 1 0'; //first: green
+                               me_printed = true;
+                               drawfill(pos, eX * mySize.x + eY * fontsize.y, rgb, highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                       }
+                       
+                       s = textShortenToWidth(entcs_GetName(pl.sv_entnum), name_size, fontsize, stringwidth_colors);
+                       drawcolorcodedstring(pos + eX * (name_size - stringwidth(s, true, fontsize)), s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawstring(pos + eX * (name_size + spacing_size), ftos(pl.(scores(ps_primary))), fontsize, score_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       pos.y += fontsize.y;
+                       ++i;
                }
-               if (team_count)
-                       score_color = Team_ColorRGB(pl.team) * 0.8;
-               s = textShortenToWidth(entcs_GetName(pl.sv_entnum), name_size, fontsize, stringwidth_colors);
-               drawcolorcodedstring(pos + eX * (name_size - stringwidth(s, true, fontsize)), s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
-               drawstring(pos + eX * (name_size + spacing_size), ftos(pl.(scores(ps_primary))), fontsize, score_color, panel_fg_alpha, DRAWFLAG_NORMAL);
-               pos.y += fontsize.y;
-               ++i;
+               while (i<entries && team_count && (tm = tm.sort_next) && (tm.team != NUM_SPECTATOR || (tm = tm.sort_next)));
        }
-       while (i<entries && team_count && (tm = tm.sort_next) && (tm.team != NUM_SPECTATOR || (tm = tm.sort_next)));
 }
 
 void HUD_Score()
index 2db57485b948815f946d3921c295375c20b44c28..a4b26e47eb9c4c8ebe1d3540ac61222309683bb9 100644 (file)
@@ -48,6 +48,13 @@ string autocvar_hud_fontsize;
 string hud_fontsize_str;
 float max_namesize;
 
+vector duel_score_fontsize;
+vector duel_name_fontsize;
+vector duel_score_size;
+vector team_score_fontsize;
+vector team_name_fontsize;
+vector team_score_size;
+
 float sbt_bg_alpha;
 float sbt_fg_alpha;
 float sbt_fg_alpha_self;
@@ -120,6 +127,7 @@ string Label_getInfo(string label, int mode)
                case "bctime":       if (!mode) return CTX(_("SCO^bctime"));       else LOG_HELP(strcat("^3", "bctime", "             ^7", _("Total amount of time holding the ball in Keepaway")));
                case "caps":         if (!mode) return CTX(_("SCO^caps"));         else LOG_HELP(strcat("^3", "caps", "               ^7", _("How often a flag (CTF) or a key (KeyHunt) was captured")));
                case "captime":      if (!mode) return CTX(_("SCO^captime"));      else LOG_HELP(strcat("^3", "captime", "            ^7", _("Time of fastest capture (CTF)")));
+               case "country":      if (!mode) return CTX(_("SCO^country"));      else LOG_HELP(strcat("^3", "country", "            ^7", _("Player country"))); //LegendGuard adds country for Country column 05-04-2021
                case "deaths":       if (!mode) return CTX(_("SCO^deaths"));       else LOG_HELP(strcat("^3", "deaths", "             ^7", _("Number of deaths")));
                case "destroyed":    if (!mode) return CTX(_("SCO^destroyed"));    else LOG_HELP(strcat("^3", "destroyed", "          ^7", _("Number of keys destroyed by pushing them into void")));
                case "dmg":          if (!mode) return CTX(_("SCO^damage"));       else LOG_HELP(strcat("^3", "dmg", "                ^7", _("The total damage done")));
@@ -391,7 +399,7 @@ void Cmd_Scoreboard_Help()
 // otherwise the previous exclusive rule warns anyway
 // e.g. -teams,rc,cts,lms/kills ?+rc/kills
 #define SCOREBOARD_DEFAULT_COLUMNS \
-"ping pl fps name |" \
+"ping pl fps country name |" \
 " -teams,rc,cts,inv,lms/kills +ft,tdm/kills ?+rc,inv/kills" \
 " -teams,lms/deaths +ft,tdm/deaths" \
 " +tdm/sum" \
@@ -441,7 +449,7 @@ void Cmd_Scoreboard_SetFields(int argc)
                }
                else if(argv(2) == "all" || argv(2) == "ALL")
                {
-                       string s = "ping pl name |"; // scores without label (not really scores)
+                       string s = "ping pl country name |"; // scores without label (not really scores)
                        if(argv(2) == "ALL")
                        {
                                // scores without label
@@ -467,6 +475,14 @@ void Cmd_Scoreboard_SetFields(int argc)
 
        hud_fontsize = HUD_GetFontsize("hud_fontsize");
 
+       duel_score_fontsize = hud_fontsize * 3;
+       duel_name_fontsize = hud_fontsize * 1.5;
+       duel_score_size = vec2(duel_score_fontsize.x * 1.5, duel_score_fontsize.y * 1.25);
+       
+       team_score_fontsize = hud_fontsize * 2;
+       team_name_fontsize = hud_fontsize * 1.5;
+       team_score_size = vec2(team_score_fontsize.x * 1.5, team_score_fontsize.y * 1.25);
+
        for(i = 1; i < argc - 1; ++i)
        {
                str = argv(i+1);
@@ -497,6 +513,7 @@ void Cmd_Scoreboard_SetFields(int argc)
                        // fields without a label (not networked via the score system)
                        case "ping": sbt_field[sbt_num_fields] = SP_PING; break;
                        case "pl": sbt_field[sbt_num_fields] = SP_PL; break;
+                       case "country": sbt_field[sbt_num_fields] = SP_COUNTRY; break; //LegendGuard adds country label for Country column 05-04-2021
                        case "name": case "nick": sbt_field[sbt_num_fields] = SP_NAME; have_name = true; break;
                        case "|": sbt_field[sbt_num_fields] = SP_SEPARATOR; have_separator = true; break;
                        case "kd": case "kdr": case "kdratio": sbt_field[sbt_num_fields] = SP_KDRATIO; break;
@@ -618,6 +635,7 @@ vector sbt_field_rgb;
 string sbt_field_icon0;
 string sbt_field_icon1;
 string sbt_field_icon2;
+string sbt_field_icon3; //LegendGuard adds for Country player flags 05-04-2021
 vector sbt_field_icon0_rgb;
 vector sbt_field_icon1_rgb;
 vector sbt_field_icon2_rgb;
@@ -641,6 +659,19 @@ string Scoreboard_GetName(entity pl)
        return entcs_GetName(pl.sv_entnum);
 }
 
+//LegendGuard adds GetCountrycode function 05-04-2021
+string Scoreboard_GetCountrycode(entity pl)
+{
+       int ccode = entcs_GetCountryCode(pl.sv_entnum);
+       if(ccode)
+               sbt_field_icon3 = strcat("gfx/flags/", ftos(ccode));
+       else
+               sbt_field_icon3 = strcat("gfx/flags/", ftos(0)); //if user hasn't assigned country flag
+       
+       return "";
+       //return ftos(entcs_GetCountryCode(pl.sv_entnum)); //returns a number
+}
+
 string Scoreboard_GetField(entity pl, PlayerScoreField field)
 {
        float tmp, num, denom;
@@ -650,6 +681,7 @@ string Scoreboard_GetField(entity pl, PlayerScoreField field)
        sbt_field_icon0 = "";
        sbt_field_icon1 = "";
        sbt_field_icon2 = "";
+       sbt_field_icon3 = ""; //LegendGuard adds for Country column 05-04-2021
        sbt_field_icon0_rgb = '1 1 1';
        sbt_field_icon1_rgb = '1 1 1';
        sbt_field_icon2_rgb = '1 1 1';
@@ -679,6 +711,16 @@ string Scoreboard_GetField(entity pl, PlayerScoreField field)
                        tmp = bound(0, f / 0.2 + tmp / 0.04, 1); // 20% is REALLY BAD pl
                        sbt_field_rgb = '1 0.5 0.5' - '0 0.5 0.5' * tmp;
                        return str;
+                       
+               //LegendGuard adds Country REGISTER in the switch 05-04-2021
+               case SP_COUNTRY:
+                       str = Scoreboard_GetCountrycode(pl);
+                       return str;
+
+               //LegendGuard adds Country REGISTER in the switch 05-04-2021
+               case SP_COUNTRY:
+                       str = Scoreboard_GetCountrycode(pl);
+                       return str;
 
                case SP_NAME:
                        str = Scoreboard_GetName(pl);
@@ -794,6 +836,15 @@ string Scoreboard_FixColumnWidth(int i, string str)
                        sbt_fixcolumnwidth_iconlen = f;
        }
 
+       //LegendGuard adds conditional for Country column 05-04-2021
+       if(sbt_field_icon3 != "")
+       {
+               sz = draw_getimagesize(sbt_field_icon3);
+               f = sz.x / sz.y;
+               if(sbt_fixcolumnwidth_iconlen < f)
+                       sbt_fixcolumnwidth_iconlen = f;
+       }
+
        if(sbt_fixcolumnwidth_iconlen != 0)
        {
                sbt_fixcolumnwidth_iconlen *= hud_fontsize.y / hud_fontsize.x; // fix icon aspect
@@ -942,6 +993,8 @@ void Scoreboard_DrawItem(vector item_pos, vector rgb, entity pl, bool is_self, i
                        drawpic(pos - tmp, sbt_field_icon1, vec2(hud_fontsize.x * sbt_fixcolumnwidth_iconlen, hud_fontsize.y), sbt_field_icon1_rgb, fg_alpha, DRAWFLAG_NORMAL);
                if(sbt_field_icon2 != "")
                        drawpic(pos - tmp, sbt_field_icon2, vec2(hud_fontsize.x * sbt_fixcolumnwidth_iconlen, hud_fontsize.y), sbt_field_icon2_rgb, fg_alpha, DRAWFLAG_NORMAL);
+               if(sbt_field_icon3 != "") //LegendGuard adds conditional for Country column 05-04-2021
+                       drawpic(pos - tmp, sbt_field_icon3, vec2(hud_fontsize.x * sbt_fixcolumnwidth_iconlen, hud_fontsize.y), sbt_field_icon1_rgb, fg_alpha, DRAWFLAG_NORMAL);
        }
 
        if(sbt_field[i] == SP_SEPARATOR)
@@ -976,6 +1029,8 @@ void Scoreboard_DrawItem(vector item_pos, vector rgb, entity pl, bool is_self, i
                                drawpic(pos - tmp, sbt_field_icon1, vec2(hud_fontsize.x * sbt_fixcolumnwidth_iconlen, hud_fontsize.y), sbt_field_icon1_rgb, fg_alpha, DRAWFLAG_NORMAL);
                        if(sbt_field_icon2 != "")
                                drawpic(pos - tmp, sbt_field_icon2, vec2(hud_fontsize.x * sbt_fixcolumnwidth_iconlen, hud_fontsize.y), sbt_field_icon2_rgb, fg_alpha, DRAWFLAG_NORMAL);
+                       if(sbt_field_icon3 != "") //LegendGuard adds conditional for Country column 05-04-2021
+                               drawpic(pos - tmp, sbt_field_icon3, vec2(hud_fontsize.x * sbt_fixcolumnwidth_iconlen, hud_fontsize.y), sbt_field_icon1_rgb, fg_alpha, DRAWFLAG_NORMAL);
                        pos.x -= sbt_field_size[i] + hud_fontsize.x;
                }
        }
@@ -989,6 +1044,7 @@ vector Scoreboard_DrawOthers(vector item_pos, vector rgb, int this_team, entity
        int i = 0;
        vector h_pos = item_pos;
        vector h_size = vec2(panel_size.x, hud_fontsize.y * 1.25);
+       vector sz;
 
        bool complete = (this_team == NUM_SPECTATOR);
 
@@ -1022,6 +1078,16 @@ vector Scoreboard_DrawOthers(vector item_pos, vector rgb, int this_team, entity
                        continue;
                if(pl == ignored_pl)
                        continue;
+               
+               string flag_name = "";
+               vector flag_size = '0 0 0';
+               Scoreboard_GetField(pl, SP_COUNTRY);
+               
+               if(sbt_field_icon3 != "") {
+                       sz = draw_getimagesize(sbt_field_icon3);
+                       flag_name = sbt_field_icon3;
+                       flag_size = vec2(hud_fontsize.x * (sz.x / sz.y), hud_fontsize.y);
+               }
 
                field = "";
                if(this_team == NUM_SPECTATOR)
@@ -1092,6 +1158,292 @@ vector Scoreboard_DrawOthers(vector item_pos, vector rgb, int this_team, entity
        return vec2(item_pos.x, item_pos.y + i * hud_fontsize.y * 1.25);
 }
 
+vector Scoreboard_Duel_DrawPickup(vector pos, bool skinned, string icon, vector sz, float number, bool invert)
+{
+       vector tmp_in = pos;
+       vector tmp_sz, tmp_sz2;
+       string picpath;
+       
+       // Icon
+       if(skinned) {
+               picpath = strcat(hud_skin_path, "/", icon);
+               if(precache_pic(picpath) == "")
+                       picpath = strcat("gfx/hud/default/", icon);
+       } else {
+               picpath = icon;
+       }
+               
+       tmp_sz = draw_getimagesize(picpath);
+       tmp_sz2 = vec2(sz.y*(tmp_sz.x/tmp_sz.y), sz.y);
+       
+       tmp_in.x = pos.x + ((sz.x - tmp_sz2.x) / 2);
+       drawpic(tmp_in, picpath, tmp_sz2, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       
+       // Number
+       if(invert)
+               tmp_in.x += tmp_sz2.x + hud_fontsize.x * 0.25;
+       else
+               tmp_in.x -= hud_fontsize.x * 0.25 + hud_fontsize.x;
+       
+       tmp_in.y += (tmp_sz2.y - hud_fontsize.y) / 2;
+       drawstring(tmp_in,
+               ((number == -1) ? "?" : ftos(number)),
+               hud_fontsize, ((number > 0) ? '1 1 1' : '0.5 0.5 0.5'),
+               panel_fg_alpha,
+               DRAWFLAG_NORMAL);
+       
+       pos.y += sz.y * 1.1;
+       return pos;
+}
+
+int left_pl_dmg = 50;
+int right_pl_dmg = 50;
+void Scoreboard_Duel_DrawTable(vector pos, bool invert, entity pl, entity tm)
+{
+       vector tmp, tmp_in, tmp_sz, tmp_acc;
+       string tmp_str;
+       float sz;
+       float average_acc = 0;
+       
+       panel_pos = pos;
+       
+       HUD_Panel_DrawBg();
+       
+       // Stop here if there are no scores available
+       if(!pl) return;
+       if(entcs_GetSpecState(pl.sv_entnum) == ENTCS_SPEC_PURE) return;
+       
+       tmp = pos;
+       tmp.x += panel_bg_padding;
+       tmp.y += panel_bg_padding;
+       panel_size.x -= panel_bg_padding * 2;
+       
+       //if (sbt_bg_alpha)
+       //      drawpic_tiled(pos, "gfx/scoreboard/scoreboard_bg", tmp, panel_size, rgb, sbt_bg_alpha, DRAWFLAG_NORMAL);
+
+       // Score: highlight
+       if(invert) { tmp.x += panel_size.x; tmp.x -= duel_score_size.x; }
+       drawfill(tmp, duel_score_size, '0 0 0', sbt_highlight_alpha, DRAWFLAG_NORMAL);
+       
+       // Score: text
+       tmp_str = ftos(pl.(scores(SP_SCORE)));
+       tmp_in = tmp;
+       tmp_in.x += (duel_score_size.x / 2) - (stringwidth(tmp_str, true, duel_score_fontsize) / 2);
+       tmp_in.y += (duel_score_size.y / 2) - (duel_score_fontsize.y / 2);
+       
+       draw_beginBoldFont();
+       drawstring(tmp_in, tmp_str, duel_score_fontsize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       draw_endBoldFont();
+       
+       // Player name
+       tmp_str = Scoreboard_GetField(pl, SP_NAME);
+       tmp_in = tmp;
+       if(invert)
+               tmp_in.x -= stringwidth_colors(tmp_str, duel_name_fontsize) + duel_name_fontsize.x * 0.5;
+       else
+               tmp_in.x += duel_score_size.x + duel_name_fontsize.x * 0.5;
+       tmp_in.y += (duel_score_size.y - duel_name_fontsize.y) / 2;
+       drawcolorcodedstring(tmp_in, tmp_str, duel_name_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+       
+       //LegendGuard adds a conditional sentence for country column 05-04-2021
+       // Player country icon/flag
+       Scoreboard_GetField(pl, SP_COUNTRY);
+       if(sbt_field_icon3 != "") {
+               vector rsz = draw_getimagesize(sbt_field_icon3);
+               sbt_fixcolumnwidth_iconlen = rsz.x / rsz.y;
+               if(invert)
+                       tmp_in.x -= hud_fontsize.x * sbt_fixcolumnwidth_iconlen + duel_name_fontsize.x * 0.5;
+               else
+                       tmp_in.x += stringwidth_colors(tmp_str, duel_name_fontsize) + duel_name_fontsize.x * 0.5;
+               tmp_in.y += (duel_name_fontsize.y - hud_fontsize.y) / 2;
+               drawpic(tmp_in, sbt_field_icon3, vec2(hud_fontsize.x * sbt_fixcolumnwidth_iconlen, hud_fontsize.y), sbt_field_icon1_rgb, panel_fg_alpha, DRAWFLAG_NORMAL);
+       }
+       
+       // Header
+       float column_width = panel_size.x / 5;
+       tmp.x = pos.x + panel_bg_padding;
+       tmp.y += hud_fontsize.y * 3 + hud_fontsize.y;
+       
+       vector column_dim;
+       int i;
+
+       i = (invert ? 4 : 0);
+       column_dim = vec2(column_width * 4, hud_fontsize.y);
+       
+       drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth("kills", false, hud_fontsize) / 2),
+               "kills", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth("dmg", false, hud_fontsize) / 2),
+               "dmg", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth("acc", false, hud_fontsize) / 2),
+               "acc", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth("hits", false, hud_fontsize) / 2),
+               "hits", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth("ping", false, hud_fontsize) / 2),
+               "ping", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       
+       tmp.x = pos.x + panel_bg_padding;
+       tmp.y += hud_fontsize.y;
+       
+       // Main row
+       i = (invert ? 4 : 0);
+       
+       tmp_str = ftos(pl.(scores(SP_KILLS)));
+       drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth(tmp_str, false, hud_fontsize * 1.25) / 2),
+               tmp_str, hud_fontsize  * 1.25, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       
+       tmp_str = ftos(pl.(scores(SP_DMG)));
+       drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth(tmp_str, false, hud_fontsize * 1.25) / 2),
+               tmp_str, hud_fontsize  * 1.25, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       
+       tmp_acc = tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2);
+       
+       if(invert)
+               i--;
+       else
+               i++;
+       
+       tmp_str = Scoreboard_GetField(pl, SP_PING);
+       drawstring(tmp + eX * column_width * i + (eX * column_width / 2) - eX * (stringwidth(tmp_str, false, hud_fontsize * 1.25) / 2),
+               tmp_str, hud_fontsize * 1.25, sbt_field_rgb, panel_fg_alpha, DRAWFLAG_NORMAL);
+
+       tmp_str = Scoreboard_GetField(pl, SP_PL);
+       drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth(tmp_str, false, hud_fontsize * 0.75) / 2) + eY * (hud_fontsize.y * 1.25),
+               tmp_str, hud_fontsize * 0.75, sbt_field_rgb, panel_fg_alpha, DRAWFLAG_NORMAL);
+
+       tmp.x = pos.x + panel_bg_padding;
+       tmp.y += hud_fontsize.y * 2;
+       
+       tmp_in = tmp;
+       
+       int total_weapons = 0;
+       
+       // Accuracy rows
+       int dmg_percent;
+       vector dmg_color;
+       
+       WepSet weapons_inmap = WepSet_GetFromStat_InMap();
+       FOREACH(Weapons, it != WEP_Null, {
+               WepSet set = it.m_wepset;
+               if (!(weapons_inmap & set) && it != WEP_BLASTER && it != WEP_SHOTGUN) // z411 TODO : We'll be hardcoding this for now.
+                       continue;
+               if (it.spawnflags & WEP_TYPE_OTHER)
+                       continue;
+
+               int weapon_cnt_fired = pl.accuracy_cnt_fired[i - WEP_FIRST];
+               int weapon_cnt_hit   = pl.accuracy_cnt_hit[i - WEP_FIRST];
+               int weapon_acc = 0;
+               if(weapon_cnt_fired)
+                       weapon_acc = floor((weapon_cnt_hit / weapon_cnt_fired) * 100);
+               average_acc += weapon_acc;
+               
+               // draw row background
+               drawfill(tmp_in + eX * column_width * (invert ? 1 : 0), column_dim, '0 0 0', sbt_highlight_alpha, DRAWFLAG_NORMAL);
+               
+               if(weapon_cnt_fired) {
+                       if(invert) {
+                               if(pl.accuracy_hit[i - WEP_FIRST] > left_pl_dmg)
+                                       left_pl_dmg = pl.accuracy_hit[i - WEP_FIRST];
+                               dmg_percent = pl.accuracy_hit[i - WEP_FIRST] / left_pl_dmg;
+                       } else {
+                               if(pl.accuracy_hit[i - WEP_FIRST] > right_pl_dmg)
+                                       right_pl_dmg = pl.accuracy_hit[i - WEP_FIRST];
+                               dmg_percent = pl.accuracy_hit[i - WEP_FIRST] / right_pl_dmg;
+                       }
+                       
+                       // convert percentage range to 0.4 - 1
+                       dmg_percent = dmg_percent * (1 - 0.4) + 0.4;
+                       
+                       dmg_color.x = dmg_percent;
+                       dmg_color.y = dmg_percent;
+                       dmg_color.z = dmg_percent;
+                       
+                       string draw_str;
+                       
+                       // weapon stats
+                       int c = (invert ? 4 : 0);
+                       
+                       draw_str = ftos(pl.accuracy_frags[i - WEP_FIRST]);
+                       drawstring(tmp_in + eX * column_width * (invert ? c-- : c++) + eX * ((column_width - stringwidth(draw_str, false, hud_fontsize)) / 2),
+                               draw_str, hud_fontsize, dmg_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       
+                       draw_str = ftos(pl.accuracy_hit[i - WEP_FIRST]);
+                       drawstring(tmp_in + eX * column_width * (invert ? c-- : c++) + eX * ((column_width - stringwidth(draw_str, false, hud_fontsize)) / 2),
+                               draw_str, hud_fontsize, dmg_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       
+                       draw_str = sprintf("%d%%", weapon_acc);
+                       drawstring(tmp_in + eX * column_width * (invert ? c-- : c++) + eX * ((column_width - stringwidth(draw_str, false, hud_fontsize)) / 2),
+                               draw_str, hud_fontsize, dmg_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       
+                       draw_str = strcat(ftos(weapon_cnt_hit), " / ", ftos(weapon_cnt_fired));
+                       drawstring(tmp_in + eX * column_width * (invert ? c-- : c++) + eX * (column_width / 2) - eX * stringwidth(ftos(weapon_cnt_hit), false, hud_fontsize) - eX * hud_fontsize.x * 0.5,
+                               draw_str, hud_fontsize, dmg_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+
+                       total_weapons++;
+               }
+               
+               // weapon icon
+               if(invert) {
+                       tmp_in.x = pos.x + panel_size.x - panel_bg_padding - hud_fontsize.x / 2;
+                       drawpic_aspect_skin(tmp_in, it.model2, vec2(50, hud_fontsize.y * 1.15), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+               }
+               
+               tmp_in.x = pos.x + panel_bg_padding;
+               tmp_in.y += hud_fontsize.y * 1.25;
+       });
+       if(total_weapons)
+               average_acc = floor((average_acc / total_weapons) + 0.5);
+       
+       // draw total accuracy now
+       tmp_str = sprintf("%d%%", average_acc);
+       drawstring(tmp_acc - eX * (stringwidth(tmp_str, false, hud_fontsize * 1.25) / 2),
+               tmp_str, hud_fontsize * 1.25, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       
+       // Icon column
+       vector icon_sz = vec2(column_width, hud_fontsize.y*1.5);
+       
+       if(!invert)
+               tmp.x += column_width * 4;
+       
+       // Item rows
+       drawstring(tmp + eX * ((column_width - stringwidth("items", false, hud_fontsize)) / 2),
+               "items", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       tmp.y += hud_fontsize.y * 1.25;
+       
+       float inv_num = -1;
+       FOREACH(Items,
+               it.m_id == ITEM_ArmorMega.m_id ||
+               it.m_id == ITEM_HealthMega.m_id ||
+               it.m_id == ITEM_ArmorBig.m_id, {
+               // If the match isn't over, Only show pickups if we're spectating or they're our own
+               /*if(intermission || warmup_stage || spectatee_status || pl.sv_entnum == current_player)
+                       inv_num = inventoryslots[pl.sv_entnum].inv_items[it.m_id];*/
+               tmp = Scoreboard_Duel_DrawPickup(tmp, true, it.m_icon, icon_sz, inv_num, invert);
+               
+               if(it.m_id == REGISTRY_MAX(Items))
+               break;
+       });
+}
+
+vector Scoreboard_MakeDuelTable(vector pos, entity tm, vector rgb, vector bg_size)
+{
+       vector end_pos = pos;
+       float screen_half = panel_size.x / 2;
+       float weapon_margin = hud_fontsize.x;
+       
+       panel_size.x = screen_half - weapon_margin;
+       panel_size.y = (duel_score_size.y * 5.5);
+       
+       entity pl_left = players.sort_next;
+       entity pl_right = pl_left.sort_next;
+       
+       Scoreboard_Duel_DrawTable(pos, true, pl_left, tm);
+       Scoreboard_Duel_DrawTable(pos + eX * screen_half + eX * weapon_margin, false, pl_right, tm);
+       
+       end_pos.y += panel_size.y + (panel_bg_padding * 2);
+       panel_size.x = screen_half * 2;
+       return end_pos;
+}
+
 vector Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_size)
 {
        int max_players = 999;
@@ -1492,7 +1844,7 @@ vector MapStats_DrawKeyValue(vector pos, string key, string value) {
        return pos;
 }
 
-vector Scoreboard_MapStats_Draw(vector pos, vector rgb, vector bg_size) {
+/*vector Scoreboard_MapStats_Draw(vector pos, vector rgb, vector bg_size) {
        float stat_secrets_found, stat_secrets_total;
        float stat_monsters_killed, stat_monsters_total;
        float rows = 0;
@@ -1559,7 +1911,7 @@ vector Scoreboard_MapStats_Draw(vector pos, vector rgb, vector bg_size) {
 
        panel_size.x += panel_bg_padding * 2; // restore initial width
        return end_pos;
-}
+}*/
 
 
 vector Scoreboard_Rankings_Draw(vector pos, string ranktitle, entity pl, vector rgb, vector bg_size)
@@ -1701,6 +2053,20 @@ bool Scoreboard_AccuracyStats_WouldDraw(float ypos)
        return true;
 }
 
+.bool uninteresting;
+STATIC_INIT(default_order_items_label)
+{
+       IL_EACH(default_order_items, true, {
+               if(!(it.instanceOfPowerup
+                       || it == ITEM_HealthMega || it == ITEM_HealthBig
+                       || it == ITEM_ArmorMega || it == ITEM_ArmorBig
+                       ))
+               {
+                       it.uninteresting = true;
+               }
+       });
+}
+
 bool have_item_stats;
 bool Scoreboard_ItemStats_WouldDraw(float ypos)
 {
@@ -1719,7 +2085,7 @@ bool Scoreboard_ItemStats_WouldDraw(float ypos)
        if (!have_item_stats)
        {
                IL_EACH(default_order_items, true, {
-                       if (!is_item_filtered(it))
+                       if (!(autocvar_hud_panel_scoreboard_itemstats_filter && it.uninteresting))
                        {
                                int q = g_inventory.inv_items[it.m_id];
                                //q = 1; // debug: display all items
@@ -1849,11 +2215,26 @@ void Scoreboard_Draw()
        sb_gameinfo_type_fontsize = hud_fontsize * 2.5;
        sb_gameinfo_detail_fontsize = hud_fontsize * 1.3;
 
+       // z411 server name
+       //drawcolorcodedstring(pos, "xonotic.org", sb_gameinfo_type_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+       //drawpic_aspect(pos + '1 0 0' * (panel_size.x - 150), "gfx/logo", vec2(150, sb_gameinfo_type_fontsize.y), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       //pos.y += sb_gameinfo_type_fontsize.y;
+       
        // Game Info: Game Type
        str = MapInfo_Type_ToText(gametype);
+       
        draw_beginBoldFont();
-       drawcolorcodedstring(pos + '0.5 0 0' * (panel_size.x - stringwidth(str, true, sb_gameinfo_type_fontsize)), str, sb_gameinfo_type_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+       //drawcolorcodedstring(pos + '0.5 0 0' * (panel_size.x - stringwidth(str, true, sb_gameinfo_type_fontsize)), str, sb_gameinfo_type_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawcolorcodedstring(pos, str, sb_gameinfo_type_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
        draw_endBoldFont();
+       
+       vector tmp_old_sz = draw_getimagesize("gfx/logo");
+       float tmp_aspect = tmp_old_sz.x/tmp_old_sz.y;
+       vector tmp_new_sz = vec2(sb_gameinfo_type_fontsize.y * tmp_aspect, sb_gameinfo_type_fontsize.y);
+
+       drawpic(pos + '1 0 0' * (panel_size.x - tmp_new_sz.x), "gfx/logo", tmp_new_sz, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+       
+       pos.y += sb_gameinfo_type_fontsize.y;
 
        // Game Info: Game Detail
        float tl = STAT(TIMELIMIT);
@@ -1973,20 +2354,20 @@ void Scoreboard_Draw()
                        if(!tm.team)
                                continue;
 
-                       draw_beginBoldFont();
                        vector rgb = Team_ColorRGB(tm.team);
+                       /*draw_beginBoldFont();
                        str = ftos(tm.(teamscores(ts_primary)));
                        if (autocvar_hud_panel_scoreboard_team_size_position != 1) // team size not on left
                        {
                                // team score on the left (default)
-                               str_pos = pos + team_score_baseoffset - eX * stringwidth(str, false, hud_fontsize * 1.5);
+                               str_pos = pos + team_score_baseoffset - eX * stringwidth(str, false, hud_fontsize * 3);
                        }
                        else
                        {
                                // team score on the right
-                               str_pos = pos + team_score_baseoffset + eX * (panel_size.x + hud_fontsize.x * 1.5);
+                               str_pos = pos + team_score_baseoffset + eX * (panel_size.x + hud_fontsize.x * 3);
                        }
-                       drawstring(str_pos, str, hud_fontsize * 1.5, rgb, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawstring(str_pos, str, hud_fontsize * 3, rgb, panel_fg_alpha, DRAWFLAG_NORMAL);
 
                        // team size (if set to show on the side)
                        if (autocvar_hud_panel_scoreboard_team_size_position != 0) // team size not off
@@ -2029,6 +2410,31 @@ void Scoreboard_Draw()
                                drawstring(str_pos, str, hud_fontsize, rgb, panel_fg_alpha, DRAWFLAG_NORMAL);
                        }
                        draw_endBoldFont();
+                       */
+                       
+                       // z411 My team header
+                       // Score: highlight
+                       drawfill(pos, team_score_size, rgb * 0.5, sbt_highlight_alpha, DRAWFLAG_NORMAL);
+                       
+                       // Score: text
+                       str = ftos(tm.(teamscores(ts_primary)));
+                       str_pos = pos;
+                       str_pos.x += (team_score_size.x / 2) - (stringwidth(str, true, team_score_fontsize) / 2);
+                       str_pos.y += (team_score_size.y / 2) - (team_score_fontsize.y / 2);
+                       
+                       draw_beginBoldFont();
+                       drawstring(str_pos, str, team_score_fontsize, rgb, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       draw_endBoldFont();
+                       
+                       // Team name
+                       str = Team_CustomName(tm.team);
+                       str_pos = pos;
+                       str_pos.x += team_score_size.x + team_name_fontsize.x * 0.5;
+                       str_pos.y += (team_score_size.y / 2) - (team_name_fontsize.y / 2);
+                       drawcolorcodedstring(str_pos, str, team_name_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       
+                       pos.y += team_score_size.y + (hud_fontsize.y * 0.5);
+                       
                        if(autocvar_hud_panel_scoreboard_bg_teams_color_team > 0)
                                panel_bg_color = rgb * autocvar_hud_panel_scoreboard_bg_teams_color_team;
                        else if(panel_bg_color_team > 0)
@@ -2039,6 +2445,15 @@ void Scoreboard_Draw()
                }
                panel_bg_color = panel_bg_color_save;
        }
+       else if(gametype == MAPINFO_TYPE_DUEL)
+       {
+               for(tm = teams.sort_next; tm; tm = tm.sort_next)
+                       if(tm.team != NUM_SPECTATOR)
+                               break;
+               
+               // z411 make DUEL TABLE
+               pos = Scoreboard_MakeDuelTable(pos, tm, panel_bg_color, bg_size);
+       }
        else
        {
                for(tm = teams.sort_next; tm; tm = tm.sort_next)
@@ -2083,7 +2498,7 @@ void Scoreboard_Draw()
                pos = Scoreboard_Spectators_Draw(pos, tm, str, hud_fontsize);
        }
 
-       pos = Scoreboard_MapStats_Draw(pos, panel_bg_color, bg_size);
+       //pos = Scoreboard_MapStats_Draw(pos, panel_bg_color, bg_size);
 
        // draw scoreboard spectators after mapstats
        if (autocvar_hud_panel_scoreboard_spectators_position == 3) {
index 83417c08d9c59ecd7a54c493f8c1bc40ec999d7f..622bf3e047e8824ac71376aadb7fd535c67b17b4 100644 (file)
@@ -154,8 +154,15 @@ string GetSpeedUnit(int speed_unit);
 .int enttype; // entity type sent from server
 .int sv_entnum; // entity number sent from server
 
+// z411 accuracy info
+.float accuracy_frags[REGISTRY_MAX(Weapons)];
+.float accuracy_hit[REGISTRY_MAX(Weapons)];
+.float accuracy_cnt_hit[REGISTRY_MAX(Weapons)];
+.float accuracy_cnt_fired[REGISTRY_MAX(Weapons)];
+
 .int team;
 .int team_size;
+.int countrycode;
 
 int binddb;
 
index a3691386be379296ae2b494025666e320a13de18..c4d24ed1f584a337d8327684f68514ae44e12189 100644 (file)
@@ -152,6 +152,10 @@ ENTCS_PROP(FRAGS, true, frags, frags, ENTCS_SET_NORMAL,
        { WriteShort(chan, ent.frags); },
        { ent.frags = ReadShort(); })
 
+ENTCS_PROP(COUNTRYCODE, true, countrycode, countrycode, ENTCS_SET_NORMAL,
+       { WriteByte(chan, ent.countrycode); },
+       { ent.countrycode = ReadByte(); })
+
 // use sv_solid to avoid changing solidity state of entcs entities
 ENTCS_PROP(SOLID, true, sv_solid, solid, ENTCS_SET_NORMAL,
        { WriteByte(chan, ent.sv_solid); },
index db0dc466ba9144c076f9f60284e5366c68055645..e708be1c3fca020e473d166a71089c72ae7cf8c0 100644 (file)
@@ -133,6 +133,12 @@ REGISTER_NET_TEMP(CLIENT_ENTCS)
                return ColorTranslateRGB(e ? e.netname : getplayerkeyvalue(i, "name"));
        }
 
+       int entcs_GetCountryCode(int i)
+       {
+               entity e = entcs_receiver(i);
+               return e.countrycode;
+       }
+
     /**
      * @param i zero indexed player
      */
index 65f21fdd24c388eba082130f86c999aeb4ca23fd..82844386cdd78c1d9be85f743bb8f401b93e3e0e 100644 (file)
@@ -1,6 +1,6 @@
 #include "cl_clanarena.qh"
 
-#include <client/draw.qh>
+/*#include <client/draw.qh>
 
 void HUD_Mod_CA_Export(int fh)
 {
@@ -78,4 +78,19 @@ void HUD_Mod_CA(vector myPos, vector mySize)
        mod_active = 1; // required in each mod function that always shows something
 
        HUD_Mod_CA_Draw(myPos, mySize, autocvar_hud_panel_modicons_ca_layout);
-}
+}*/
+
+// Clan Arena and Freeze Tag scores
+int HUD_Scores_CA(int team)
+{
+       switch(team)
+       {
+               case NUM_TEAM_1: return STAT(REDALIVE);
+               case NUM_TEAM_2: return STAT(BLUEALIVE);
+               case NUM_TEAM_3: return STAT(YELLOWALIVE);
+               default:
+               case NUM_TEAM_4: return STAT(PINKALIVE);
+       }
+       
+       return 0;
+}
\ No newline at end of file
index 586d7eb17eb8e5fa025ef0fd70adef0b4095f90b..1c0be1e7293897acbe4fb91761c50e4e4e9e646a 100644 (file)
@@ -1,7 +1,8 @@
 #pragma once
 
-int autocvar_hud_panel_modicons_ca_layout;
+int HUD_Scores_CA(int team);
 
+/*int autocvar_hud_panel_modicons_ca_layout;
 void HUD_Mod_CA(vector myPos, vector mySize);
 void HUD_Mod_CA_Draw(vector myPos, vector mySize, int layout);
-void HUD_Mod_CA_Export(int fh);
+void HUD_Mod_CA_Export(int fh);*/
\ No newline at end of file
index 3b3dace64e30be13fad4c5ded3be8ba2b5a264ad..27846b3ca4df7e10d831b27aebfe807f122985a1 100644 (file)
@@ -3,8 +3,9 @@
 #include <common/mapinfo.qh>
 
 #ifdef CSQC
-void HUD_Mod_CA(vector pos, vector mySize);
-void HUD_Mod_CA_Export(int fh);
+//void HUD_Mod_CA(vector pos, vector mySize);
+//void HUD_Mod_CA_Export(int fh);
+int HUD_Scores_CA(int team);
 #endif
 CLASS(ClanArena, Gametype)
     INIT(ClanArena)
@@ -40,8 +41,9 @@ CLASS(ClanArena, Gametype)
         returns(menu, _("Frag limit:"),      5,  100,  5, "fraglimit_override",        "g_ca_teams_override",          _("The amount of frags needed before the match will end"));
     }
 #ifdef CSQC
-    ATTRIB(ClanArena, m_modicons, void(vector pos, vector mySize), HUD_Mod_CA);
-    ATTRIB(ClanArena, m_modicons_export, void(int fh), HUD_Mod_CA_Export);
+    //ATTRIB(ClanArena, m_modicons, void(vector pos, vector mySize), HUD_Mod_CA);
+    //ATTRIB(ClanArena, m_modicons_export, void(int fh), HUD_Mod_CA_Export);
+    ATTRIB(ClanArena, m_modscores, int(int team), HUD_Scores_CA);
 #endif
     ATTRIB(ClanArena, m_legacydefaults, string, "10 20 0");
 ENDCLASS(ClanArena)
index df4931a37133793b69a021ed28d66d106b70beee..b4e3118c7f43f1127a1931d8fd18f48525969d92 100644 (file)
@@ -1,6 +1,6 @@
 #include "cl_freezetag.qh"
 
-#include <common/gamemodes/gamemode/clanarena/cl_clanarena.qh>
+/*#include <common/gamemodes/gamemode/clanarena/cl_clanarena.qh>
 
 void HUD_Mod_FreezeTag_Export(int fh)
 {
@@ -12,4 +12,4 @@ void HUD_Mod_FreezeTag(vector myPos, vector mySize)
        mod_active = 1; // required in each mod function that always shows something
 
        HUD_Mod_CA_Draw(myPos, mySize, autocvar_hud_panel_modicons_freezetag_layout);
-}
+}*/
index 75bfeefd483541c7c63e88edde625730b31d2848..6640be9365880cf8a2276dbdc8a245bdd688b4e9 100644 (file)
@@ -1,5 +1,5 @@
 #pragma once
 
-int autocvar_hud_panel_modicons_freezetag_layout;
+/*int autocvar_hud_panel_modicons_freezetag_layout;
 
-void HUD_Mod_FreezeTag_Export(int fh);
+void HUD_Mod_FreezeTag_Export(int fh);*/
index 61d3b91e9416c0653b4d4ebe04a60456dee064b6..f9270bdecddf6a99e6b61a8f51f2fc4ec990f8ea 100644 (file)
@@ -5,10 +5,10 @@
        #include <common/gamemodes/gamemode/clanarena/cl_clanarena.qh>
 #endif
 
-#ifdef CSQC
-void HUD_Mod_FreezeTag(vector myPos, vector mySize);
-void HUD_Mod_FreezeTag_Export(int fh);
-#endif
+//#ifdef CSQC
+//void HUD_Mod_FreezeTag(vector myPos, vector mySize);
+//void HUD_Mod_FreezeTag_Export(int fh);
+//#endif
 CLASS(FreezeTag, Gametype)
     INIT(FreezeTag)
     {
@@ -43,8 +43,9 @@ CLASS(FreezeTag, Gametype)
         returns(menu, _("Frag limit:"),      5,  100,  5, "fraglimit_override",        "g_freezetag_teams_override",   _("The amount of frags needed before the match will end"));
     }
 #ifdef CSQC
-    ATTRIB(FreezeTag, m_modicons, void(vector pos, vector mySize), HUD_Mod_FreezeTag);
-    ATTRIB(FreezeTag, m_modicons_export, void(int fh), HUD_Mod_FreezeTag_Export);
+    //ATTRIB(FreezeTag, m_modicons, void(vector pos, vector mySize), HUD_Mod_FreezeTag);
+    //ATTRIB(FreezeTag, m_modicons_export, void(int fh), HUD_Mod_FreezeTag_Export);
+    ATTRIB(FreezeTag, m_modscores, int(int team), HUD_Scores_CA);
 #endif
     ATTRIB(FreezeTag, m_legacydefaults, string, "10 20 0");
 ENDCLASS(FreezeTag)
index 22a4d94c387335f833d0867f2acb1df01e776663..749af8ed95430d7215a09da3d7b83049f55d0791 100644 (file)
-#pragma once
-
-#include "all.qh"
-
-#ifdef GAMEQC
-CLASS(Inventory, Object)
-    /** Stores counts of items, the id being the index */
-    ATTRIBARRAY(Inventory, inv_items, int, REGISTRY_MAX(Items));
-ENDCLASS(Inventory)
-
-/** Player inventory */
-.Inventory inventory;
-/** Player inventory storage (holds previous state) */
-.Inventory inventory_store;
-
-REGISTER_NET_LINKED(ENT_CLIENT_INVENTORY)
-
-const int Inventory_groups_minor = 8; // must be a multiple of 8 (one byte) to optimize bandwidth usage
-const int Inventory_groups_major = 4; // must be >= ceil(REGISTRY_COUNT(Items) / Inventory_groups_minor)
-#endif
-
-// no need to perform these checks on both server and client
-#ifdef CSQC
-STATIC_INIT(Inventory)
-{
-       if (Inventory_groups_minor / 8 != floor(Inventory_groups_minor / 8))
-               error("Inventory_groups_minor is not a multiple of 8.");
-       int min_major_value = ceil(REGISTRY_COUNT(Items) / Inventory_groups_minor);
-       if (Inventory_groups_major < min_major_value)
-               error(sprintf("Inventory_groups_major can not be < %d.", min_major_value));
-}
-#endif
-
-#ifdef SVQC
-#define G_MAJOR(id) (floor((id) / Inventory_groups_minor))
-#define G_MINOR(id) ((id) % Inventory_groups_minor)
-#endif
-
-#ifdef CSQC
-Inventory g_inventory;
-void Inventory_remove(entity this)
-{
-    if(g_inventory == this)
-        g_inventory = NULL;
-}
-
-NET_HANDLE(ENT_CLIENT_INVENTORY, bool isnew)
-{
-    make_pure(this);
-    g_inventory = this;
-    this.entremove = Inventory_remove;
-    const int majorBits = Readbits(Inventory_groups_major);
-    for (int i = 0; i < Inventory_groups_major; ++i) {
-        if (!(majorBits & BIT(i))) {
-            continue;
-        }
-        const int minorBits = Readbits(Inventory_groups_minor);
-        for (int j = 0; j < Inventory_groups_minor; ++j) {
-            if (!(minorBits & BIT(j))) {
-                continue;
-            }
-            const GameItem it = REGISTRY_GET(Items, Inventory_groups_minor * i + j);
-            .int fld = inv_items[it.m_id];
-            int prev = this.(fld);
-            int next = this.(fld) = ReadByte();
-            LOG_DEBUGF("%s: %.0f -> %.0f", it.m_name, prev, next);
-        }
-    }
-    return true;
-}
-#endif
-
-#ifdef SVQC
-int minorBitsArr[Inventory_groups_major];
-void Inventory_Write(Inventory data, Inventory store)
-{
-    if (!data) {
-        WriteShort(MSG_ENTITY, 0);
-        return;
-    }
-    TC(Inventory, data);
-
-       for (int i = 0; i < Inventory_groups_major; ++i)
-               minorBitsArr[i] = 0;
-
-    int majorBits = 0;
-    FOREACH(Items, true, {
-        .int fld = inv_items[it.m_id];
-        const bool changed = store.(fld) != data.(fld);
-        store.(fld) = data.(fld);
-        if (changed) {
-                       int maj = G_MAJOR(it.m_id);
-                       majorBits = BITSET(majorBits, BIT(maj), true);
-                       minorBitsArr[maj] = BITSET(minorBitsArr[maj], BIT(G_MINOR(it.m_id)), true);
-        }
-    });
-
-       Writebits(MSG_ENTITY, majorBits, Inventory_groups_major);
-       for (int i = 0; i < Inventory_groups_major; ++i)
-       {
-               if (!(majorBits & BIT(i)))
-                       continue;
-
-               const int minorBits = minorBitsArr[i];
-               Writebits(MSG_ENTITY, minorBits, Inventory_groups_minor);
-               for (int j = 0; j < Inventory_groups_minor; ++j)
-               {
-                       if (!(minorBits & BIT(j)))
-                               continue;
-
-                       const entity it = REGISTRY_GET(Items, Inventory_groups_minor * i + j);
-                       WriteByte(MSG_ENTITY, data.inv_items[it.m_id]);
-               }
-       }
-}
-#endif
-
-#undef G_MAJOR
-#undef G_MINOR
-
-#ifdef SVQC
-bool Inventory_Send(Inventory this, Client to, int sf)
-{
-    TC(Inventory, this);
-    WriteHeader(MSG_ENTITY, ENT_CLIENT_INVENTORY);
-    TC(PlayerState, this.owner);
-    Inventory_Write(this, to.inventory_store);
-    return true;
-}
-
-bool Inventory_customize(entity this, entity client)
-{
-    // sends to spectators too!
-    return (PS(client) && PS(client).inventory == this);
-}
-
-void Inventory_new(PlayerState this)
-{
-    Inventory inv = NEW(Inventory);
-    setcefc(inv, Inventory_customize);
-       this.inventory = inv;
-       inv.owner = this;
-       Net_LinkEntity(inv, false, 0, Inventory_Send);
-}
-void Inventory_delete(entity e) { delete(e.inventory); }
-void Inventory_update(entity e) { e.inventory.SendFlags = 0xFFFFFF; }
-
-void Inventory_clear(entity store)
-{
-    // NOTE: you will need to perform Inventory_update after this to update the storage entity
-    // (unless store is the storage entity)
-    FOREACH(Items, true, {
-        .int fld = inv_items[it.m_id];
-        store.(fld) = 0;
-    });
-}
-
-void InventoryStorage_attach(entity e) { e.inventory_store = NEW(Inventory); e.inventory_store.drawonlytoclient = e; }
-void InventoryStorage_delete(entity e) { delete(e.inventory_store); }
-#endif
+ #pragma once
+ #include "all.qh"
+ #ifdef GAMEQC
+ CLASS(Inventory, Object)
+     ATTRIBARRAY(Inventory, inv_items, int, REGISTRY_MAX(Items));
+ ENDCLASS(Inventory)
+ .Inventory inventory;
+ .Inventory inventory_store;
+ REGISTER_NET_LINKED(ENT_CLIENT_INVENTORY)
+ const int Inventory_groups_minor = 8; // must be a multiple of 8 (one byte) to optimize bandwidth usage
+ const int Inventory_groups_major = 4; // must be >= ceil(REGISTRY_COUNT(Items) / Inventory_groups_minor)
+ #endif
+ // no need to perform these checks on both server and client
+ #ifdef CSQC
+ STATIC_INIT(Inventory)
+ {
+     if (Inventory_groups_minor / 8 != floor(Inventory_groups_minor / 8))
+         error("Inventory_groups_minor is not a multiple of 8.");
+     int min_major_value = ceil(REGISTRY_COUNT(Items) / Inventory_groups_minor);
+     if (Inventory_groups_major < min_major_value)
+         error(sprintf("Inventory_groups_major can not be < %d.", min_major_value));
+ }
+ #endif
+ #ifdef SVQC
+ #define G_MAJOR(id) (floor((id) / Inventory_groups_minor))
+ #define G_MINOR(id) ((id) % Inventory_groups_minor)
+ #endif
+ #ifdef CSQC
+ Inventory g_inventory;
+ void Inventory_remove(entity this)
+ {
+     if(g_inventory == this)
+         g_inventory = NULL;
+ }
+ NET_HANDLE(ENT_CLIENT_INVENTORY, bool isnew)
+ {
+     make_pure(this);
+     g_inventory = this;
+     this.entremove = Inventory_remove;
+     const int majorBits = Readbits(Inventory_groups_major);
+     for (int i = 0; i < Inventory_groups_major; ++i) {
+         if (!(majorBits & BIT(i))) {
+             continue;
+         }
+         const int minorBits = Readbits(Inventory_groups_minor);
+         for (int j = 0; j < Inventory_groups_minor; ++j) {
+             if (!(minorBits & BIT(j))) {
+                 continue;
+             }
+             const GameItem it = REGISTRY_GET(Items, Inventory_groups_minor * i + j);
+             .int fld = inv_items[it.m_id];
+             int prev = this.(fld);
+             int next = this.(fld) = ReadByte();
+             LOG_DEBUGF("%s: %.0f -> %.0f", it.m_name, prev, next);
+         }
+     }
+     return true;
+ }
+ #endif
+ #ifdef SVQC
+ int minorBitsArr[Inventory_groups_major];
+ void Inventory_Write(Inventory data, Inventory store)
+ {
+     if (!data) {
+         WriteShort(MSG_ENTITY, 0);
+         return;
+     }
+     TC(Inventory, data);
+     for (int i = 0; i < Inventory_groups_major; ++i)
+         minorBitsArr[i] = 0;
+     int majorBits = 0;
+     FOREACH(Items, true, {
+         .int fld = inv_items[it.m_id];
+         const bool changed = store.(fld) != data.(fld);
+         store.(fld) = data.(fld);
+         if (changed) {
+             int maj = G_MAJOR(it.m_id);
+             majorBits = BITSET(majorBits, BIT(maj), true);
+             minorBitsArr[maj] = BITSET(minorBitsArr[maj], BIT(G_MINOR(it.m_id)), true);
+         }
+     });
+     Writebits(MSG_ENTITY, majorBits, Inventory_groups_major);
+     for (int i = 0; i < Inventory_groups_major; ++i)
+     {
+         if (!(majorBits & BIT(i)))
+             continue;
+         const int minorBits = minorBitsArr[i];
+         Writebits(MSG_ENTITY, minorBits, Inventory_groups_minor);
+         for (int j = 0; j < Inventory_groups_minor; ++j)
+         {
+             if (!(minorBits & BIT(j)))
+                 continue;
+             const entity it = REGISTRY_GET(Items, Inventory_groups_minor * i + j);
+             WriteByte(MSG_ENTITY, data.inv_items[it.m_id]);
+         }
+     }
+ }
+ #endif
+ #undef G_MAJOR
+ #undef G_MINOR
+ #ifdef SVQC
+ bool Inventory_Send(Inventory this, Client to, int sf)
+ {
+     TC(Inventory, this);
+     WriteHeader(MSG_ENTITY, ENT_CLIENT_INVENTORY);
+     TC(PlayerState, this.owner);
+     Inventory_Write(this, to.inventory_store);
+     return true;
+ }
+ bool Inventory_customize(entity this, entity client)
+ {
+     // sends to spectators too!
+     return (PS(client) && PS(client).inventory == this);
+ }
+ void Inventory_new(PlayerState this)
+ {
+     Inventory inv = NEW(Inventory);
+     setcefc(inv, Inventory_customize);
+     this.inventory = inv;
+     inv.owner = this;
+     Net_LinkEntity(inv, false, 0, Inventory_Send);
+ }
+ void Inventory_delete(entity e) { delete(e.inventory); }
+ void Inventory_update(entity e) { e.inventory.SendFlags = 0xFFFFFF; }
+ void Inventory_clear(entity store)
+ {
+     // NOTE: you will need to perform Inventory_update after this to update the storage entity
+     // (unless store is the storage entity)
+     FOREACH(Items, true, {
+         .int fld = inv_items[it.m_id];
+         store.(fld) = 0;
+     });
+ }
+ void InventoryStorage_attach(entity e) { e.inventory_store = NEW(Inventory); e.inventory_store.drawonlytoclient = e; }
+ void InventoryStorage_delete(entity e) { delete(e.inventory_store); }
+ #endif
\ No newline at end of file
index 0ac0c6230548692303cf5c685cdd10dddbb6f882..ab02af59bc55e768fd20a8e172415c8247641016 100644 (file)
@@ -51,9 +51,10 @@ CLASS(Gametype, Object)
     /** game type priority in random selections */
     ATTRIB(Gametype, m_priority, int, 0);
 #ifdef CSQC
-    ATTRIB(Gametype, m_modicons, void(vector pos, vector mySize));
-    ATTRIB(Gametype, m_modicons_reset, void());
-    ATTRIB(Gametype, m_modicons_export, void(int fh));
+    //ATTRIB(Gametype, m_modicons, void(vector pos, vector mySize));
+    //ATTRIB(Gametype, m_modicons_reset, void());
+    //ATTRIB(Gametype, m_modicons_export, void(int fh));
+       ATTRIB(Gametype, m_modscores, int(int team));
 #endif
 
     /** DO NOT USE, this is compatibility for legacy maps! */
index cf50a7fd12ee0ebadbe177ecdea804d84e518a40..ae728e0aae087930f30cd923f3087e0556383c21 100644 (file)
@@ -22,6 +22,7 @@ REGISTER_SP(END);
 
 REGISTER_SP(PING);
 REGISTER_SP(PL);
+REGISTER_SP(COUNTRY); //LegendGuard adds new column for country label 05-04-2021
 REGISTER_SP(NAME);
 REGISTER_SP(SEPARATOR);
 
index 62c3e7b162b2aa11e27962da6e49b218889cbc91..e99b001b255d676b55e5b6409e61da9def8ef435 100644 (file)
@@ -58,6 +58,12 @@ const string STATIC_NAME_TEAM_4 = "Pink";
 #ifdef CSQC
 bool teamplay;
 int myteam;
+
+// z411 used for custom names
+string teamname_red;
+string teamname_blue;
+string teamname_yellow;
+string teamname_pink;
 #endif
 
 string Team_ColorCode(int teamid)
@@ -86,6 +92,21 @@ vector Team_ColorRGB(int teamid)
        return '0 0 0';
 }
 
+#ifdef CSQC
+string Team_CustomName(int teamid)
+{
+       switch(teamid)
+       {
+               case NUM_TEAM_1: return ((teamname_red != "") ? teamname_red : "^1RED^7 team");
+               case NUM_TEAM_2: return ((teamname_blue != "")? teamname_blue : "^4BLUE^7 team");
+               case NUM_TEAM_3: return ((teamname_yellow != "") ? teamname_yellow : "^3YELLOW^7 team");
+               case NUM_TEAM_4: return ((teamname_pink != "") ? teamname_pink : "^6PINK^7 team");
+       }
+
+    return NAME_NEUTRAL;
+}
+#endif
+
 string Team_ColorName(int teamid)
 {
        switch(teamid)
index 31d65f948608c1ba8e394b11970f73bd3c4f1412..0de2deb02942a2b05065012145e47681de55dc17 100644 (file)
@@ -89,6 +89,7 @@ CLASS(Client, Object)
     ATTRIB(Client, colormap, int, this.colormap);
     ATTRIB(Client, team, int, this.team);
     ATTRIB(Client, clientcolors, int, this.clientcolors);
+       ATTRIB(Client, countrycode, int, this.countrycode);
     /** Client IP */
     ATTRIB(Client, netaddress, string, this.netaddress);
     ATTRIB(Client, playermodel, string, this.playermodel);
@@ -317,6 +318,7 @@ bool independent_players;
 #define MAKE_INDEPENDENT_PLAYER(e) (((e).solid = SOLID_TRIGGER), ((e).frags = FRAGS_PLAYER_OUT_OF_GAME))
 
 .int killcount;
+.int countrycode;
 
 //flood fields
 .float nickspamtime; // time of last nick change
index 6ada1045168019e8589326922f29138afd823cba..e20b42d85471e3ae9b12de237b46a6e6307a7e13 100644 (file)
@@ -972,6 +972,39 @@ void GameCommand_make_mapinfo(int request)
        }
 }
 
+void GameCommand_setflag(int request, int argc)
+{
+       switch (request)
+       {
+               case CMD_REQUEST_COMMAND:
+               {
+                       entity client;
+                       float accepted;
+                       
+                       client = GetFilteredEntity(argv(1));
+                       accepted = VerifyClientEntity(client, false, false);
+
+                       if (accepted <= 0)
+                       {
+                               LOG_INFO("^1ERROR^7: Couldn't set country flag");
+                               LOG_HELP("Usage:^3 sv_cmd setflag #client_id countrycode[0-249]");
+                               return;
+                       }
+                       
+                       client.countrycode = stof(argv(2));
+                       LOG_INFO("^2SUCCESS^7: Country flag set!");
+                       return;
+               }
+               default:
+                       LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0));
+               case CMD_REQUEST_USAGE:
+               {
+                       LOG_HELP("Usage:^3 sv_cmd setflag #client_id countrycode[0-249]");
+                       return;
+               }
+       }
+}
+
 void GameCommand_moveplayer(int request, int argc)
 {
        switch (request)
@@ -1622,6 +1655,8 @@ void GameCommand_(int request)
 // ==================================
 
 // Do not hard code aliases for these, instead create them in commands.cfg... also: keep in alphabetical order, please ;)
+SERVER_COMMAND(setflag, "Set client flag") { GameCommand_setflag(request, arguments); }
+
 SERVER_COMMAND(adminmsg, "Send an admin message to a client directly") { GameCommand_adminmsg(request, arguments); }
 SERVER_COMMAND(allready, "Restart the server and reset the players") { GameCommand_allready(request); }
 SERVER_COMMAND(allspec, "Force all players to spectate") { GameCommand_allspec(request, arguments); }