From 3d0972aa83a43cabf2b19cf46be087c28fecbcc8 Mon Sep 17 00:00:00 2001 From: flowtron Date: Fri, 30 Apr 2021 11:50:25 +0200 Subject: [PATCH 1/6] clarify SC_PUBLIC, SC_FFA & SC_FLAGONLY --- source/src/audiomanager.cpp | 11 +++++++---- source/src/protocol.h | 2 +- source/src/server.h | 18 +++++++++--------- source/src/sound.h | 3 +++ 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/source/src/audiomanager.cpp b/source/src/audiomanager.cpp index 551de102..44b269f8 100644 --- a/source/src/audiomanager.cpp +++ b/source/src/audiomanager.cpp @@ -431,16 +431,19 @@ void voicecom(char *sound, char *text) int s = audiomgr.findsound(soundpath, 0, gamesounds); if(!gamesound_isvoicecom(s)) return; if(voicecomsounds>0) audiomgr.playsound(s, SP_HIGH); - if(gamesound_ispublicvoicecom(s)) // public + if(gamesound_ispublicvoicecom(s)||(!m_teammode&&gamesound_ispublicwhenffa(s))) // public { addmsg(SV_VOICECOM, "ri", s); toserver(text); } else // team { - addmsg(SV_VOICECOMTEAM, "ri", s); - defformatstring(teamtext)("%c%s", '%', text); - toserver(teamtext); + if(gamesound_isflagvoicecom(s)?!m_flags_:true) + { + addmsg(SV_VOICECOMTEAM, "ri", s); + defformatstring(teamtext)("%c%s", '%', text); + toserver(teamtext); + } } last = lastmillis; } diff --git a/source/src/protocol.h b/source/src/protocol.h index 5dd27b61..c30d6670 100644 --- a/source/src/protocol.h +++ b/source/src/protocol.h @@ -192,7 +192,7 @@ enum #define m_mp(mode) (m_valid(mode) && (mode)>=0 && (mode)!=7 && (mode)!=8 && (mode)!=12 && ((mode)<18 || (mode)>21)) #define m_demo (gamemode==-1) #define m_coop (gamemode==1) -#define m_flags_ (m_ctf || m_htf || m_ktf) // trailing underscore is required to prevent name clash on FreeBSD systems +#define m_flags_ (m_ctf || m_htf || m_ktf) // trailing underscore is required to prevent name clash on FreeBSD systems #define m_isdemo(x) ((x) == -1) // single filter modes diff --git a/source/src/server.h b/source/src/server.h index 9cb9fcb1..4f808a4d 100644 --- a/source/src/server.h +++ b/source/src/server.h @@ -619,14 +619,14 @@ soundcfgitem soundcfg[S_NULL] = { "misc/tinnitus", "Tinnitus", 2, 0, 0, S_TINNITUS, C(OWNPAIN) }, // 62 { "voicecom/affirmative", "Affirmative", 0, 0, 0, S_AFFIRMATIVE, C(VOICECOM)|C(TEAM) }, // 63 { "voicecom/allrightsir", "All-right sir", 0, 0, 0, S_ALLRIGHTSIR, C(VOICECOM)|C(TEAM) }, // 64 - { "voicecom/comeonmove", "Come on, move", 0, 0, 0, S_COMEONMOVE, C(VOICECOM)|C(TEAM)|C(PUBLIC)|C(FFA) }, // 65 + { "voicecom/comeonmove", "Come on, move", 0, 0, 0, S_COMEONMOVE, C(VOICECOM)|C(TEAM) |C(FFA) }, // 65 { "voicecom/cominginwiththeflag", "Coming in with the flag", 0,0,0, S_COMINGINWITHTHEFLAG, C(VOICECOM)|C(TEAM) |C(FLAGONLY) }, // 66 { "voicecom/coverme", "Cover me", 0, 0, 0, S_COVERME, C(VOICECOM)|C(TEAM) }, // 67 { "voicecom/defendtheflag", "Defend the flag", 0, 0, 0, S_DEFENDTHEFLAG, C(VOICECOM)|C(TEAM) |C(FLAGONLY) }, // 68 - { "voicecom/enemydown", "Enemy down", 0, 0, 0, S_ENEMYDOWN, C(VOICECOM)|C(TEAM)|C(PUBLIC) }, // 69 + { "voicecom/enemydown", "Enemy down", 0, 0, 0, S_ENEMYDOWN, C(VOICECOM)|C(TEAM) |C(FFA) }, // 69 { "voicecom/gogetemboys", "Go get 'em boys!", 0, 0, 0, S_GOGETEMBOYS, C(VOICECOM)|C(TEAM) }, // 70 { "voicecom/goodjobteam", "Good job team", 0, 0, 0, S_GOODJOBTEAM, C(VOICECOM)|C(TEAM) }, // 71 - { "voicecom/igotone", "I got one!", 0, 0, 0, S_IGOTONE, C(VOICECOM)|C(TEAM)|C(PUBLIC) }, // 72 + { "voicecom/igotone", "I got one!", 0, 0, 0, S_IGOTONE, C(VOICECOM)|C(TEAM) |C(FFA) }, // 72 { "voicecom/imadecontact", "I made contact", 0, 0, 0, S_IMADECONTACT, C(VOICECOM)|C(TEAM) }, // 73 { "voicecom/imattacking", "I'm attacking", 0, 0, 0, S_IMATTACKING, C(VOICECOM)|C(TEAM) }, // 74 { "voicecom/imondefense", "I'm on defense", 0, 0, 0, S_IMONDEFENSE, C(VOICECOM)|C(TEAM) }, // 75 @@ -634,7 +634,7 @@ soundcfgitem soundcfg[S_NULL] = { "voicecom/negative", "Negative", 0, 0, 0, S_NEGATIVE, C(VOICECOM)|C(TEAM) }, // 77 { "voicecom/nocando", "No can do", 0, 0, 0, S_NOCANDO, C(VOICECOM)|C(TEAM) }, // 78 { "voicecom/recovertheflag", "Recover the flag", 0, 0, 0, S_RECOVERTHEFLAG, C(VOICECOM)|C(TEAM) |C(FLAGONLY) }, // 79 - { "voicecom/sorry", "Sorry", 0, 0, 0, S_SORRY, C(VOICECOM)|C(TEAM)|C(PUBLIC)|C(FFA) }, // 80 + { "voicecom/sorry", "Sorry", 0, 0, 0, S_SORRY, C(VOICECOM)|C(TEAM) |C(FFA) }, // 80 { "voicecom/spreadout", "Spread out", 0, 0, 0, S_SPREADOUT, C(VOICECOM)|C(TEAM) }, // 81 { "voicecom/stayhere", "Stay here", 0, 0, 0, S_STAYHERE, C(VOICECOM)|C(TEAM) }, // 82 { "voicecom/staytogether", "Stay together", 0, 0, 0, S_STAYTOGETHER, C(VOICECOM)|C(TEAM) }, // 83 @@ -648,11 +648,11 @@ soundcfgitem soundcfg[S_NULL] = { "voicecom/inposition_1", "In position", 0, 0, 0, S_INPOSITION1, C(VOICECOM)|C(TEAM) }, // 91 { "voicecom/inposition_2", "In position now", 0, 0, 0, S_INPOSITION2, C(VOICECOM)|C(TEAM) }, // 92 { "voicecom/reportin", "Report in!", 0, 0, 0, S_REPORTIN, C(VOICECOM)|C(TEAM) }, // 93 - { "voicecom/niceshot", "Nice shot", 0, 0, 0, S_NICESHOT, C(VOICECOM)|C(TEAM)|C(PUBLIC)|C(FFA) }, // 94 - { "voicecom/thanks_1", "Thanks", 0, 0, 0, S_THANKS1, C(VOICECOM)|C(TEAM)|C(PUBLIC)|C(FFA) }, // 95 - { "voicecom/thanks_2", "Thanks, man", 0, 0, 0, S_THANKS2, C(VOICECOM)|C(TEAM)|C(PUBLIC)|C(FFA) }, // 96 - { "voicecom/awesome_1", "Awesome (1)", 0, 0, 0, S_AWESOME1, C(VOICECOM)|C(TEAM)|C(PUBLIC)|C(FFA) }, // 97 - { "voicecom/awesome_2", "Awesome (2)", 0, 0, 0, S_AWESOME2, C(VOICECOM)|C(TEAM)|C(PUBLIC)|C(FFA) }, // 98 + { "voicecom/niceshot", "Nice shot", 0, 0, 0, S_NICESHOT, C(VOICECOM)|C(TEAM)|C(PUBLIC) }, // 94 + { "voicecom/thanks_1", "Thanks", 0, 0, 0, S_THANKS1, C(VOICECOM)|C(TEAM)|C(PUBLIC) }, // 95 + { "voicecom/thanks_2", "Thanks, man", 0, 0, 0, S_THANKS2, C(VOICECOM)|C(TEAM)|C(PUBLIC) }, // 96 + { "voicecom/awesome_1", "Awesome (1)", 0, 0, 0, S_AWESOME1, C(VOICECOM)|C(TEAM)|C(PUBLIC) }, // 97 + { "voicecom/awesome_2", "Awesome (2)", 0, 0, 0, S_AWESOME2, C(VOICECOM)|C(TEAM)|C(PUBLIC) }, // 98 { "misc/pickup_helmet", "Helmet pickup", 0, 0, 0, S_ITEMHELMET, C(PICKUP) }, // 99 { "player/heartbeat", "Heartbeat", 0, 0, 0, S_HEARTBEAT, C(OWNPAIN) }, // 100 { "ktf/flagscore", "KTF score", 0, 0, 0, S_KTFSCORE, C(OTHER) }, // 101 diff --git a/source/src/sound.h b/source/src/sound.h index 3f5f7ab1..4de1be97 100644 --- a/source/src/sound.h +++ b/source/src/sound.h @@ -81,6 +81,9 @@ enum { SC_PAIN = 0, SC_OWNPAIN, SC_WEAPON, SC_PICKUP, SC_MOVEMENT, SC_BULLET, SC #define gamesound_hasflag(x, mask) (gamesound_isvalid(x) && (soundcfg[x].flags & mask) != 0) #define gamesound_isvoicecom(x) gamesound_hasflag(x, 1 << SC_VOICECOM) // all voicecoms #define gamesound_ispublicvoicecom(x) gamesound_hasflag(x, 1 << SC_PUBLIC) // voicecoms always sent to all players +#define gamesound_ispublicwhenffa(x) gamesound_hasflag(x, 1 << SC_FFA) // voicecoms sent to all only in FFA modes +#define gamesound_isflagvoicecom(x) gamesound_hasflag(x, 1 << SC_FLAGONLY) // voicecoms pertaining to flag tactics + struct soundcfgitem { const char *name, *desc; From a65f16e963d967f6d60079744cac59e5e46ff8d3 Mon Sep 17 00:00:00 2001 From: BrutalSystem Date: Fri, 30 Apr 2021 17:03:59 -0300 Subject: [PATCH 2/6] Update scoreboard.cpp fix --- source/src/scoreboard.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/src/scoreboard.cpp b/source/src/scoreboard.cpp index 21e9c142..44eeb403 100644 --- a/source/src/scoreboard.cpp +++ b/source/src/scoreboard.cpp @@ -220,7 +220,7 @@ void renderscore(playerent *d) if(m_flags_) line.addcol(sc_flags, "%d", d->flagscore); line.addcol(sc_frags, "%d", d->frags); - line.addcol(sc_deaths, "%d", 99); + line.addcol(sc_deaths, "%d", d->deaths); line.addcol(sc_ratio, "%.2f", SCORERATIO(d->frags, d->deaths)); if(multiplayer(NULL) || watchingdemo) line.addcol(sc_lag, "%s", lagping); From 7796c5f946aec60f98ca9543d37f3a9fcb4d0392 Mon Sep 17 00:00:00 2001 From: BrutalSystem Date: Fri, 30 Apr 2021 21:59:55 -0300 Subject: [PATCH 3/6] Update menus_edit.cfg fixed, I don't get any more errors generated in clientlog, my commit has also been fixed --- config/menus_edit.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/menus_edit.cfg b/config/menus_edit.cfg index ce5568af..07afd3a2 100644 --- a/config/menus_edit.cfg +++ b/config/menus_edit.cfg @@ -849,8 +849,8 @@ menuinit [ menuitem "\f3[ Delete vantage point ]" clearvantagepoint menuitem "" -1 ] - ]] - if(! $connected) [ + ] + if (! $connected) [ menuitem "\f0[ Set current position and viewing angle as map vantage point ]" setvantagepoint ] ] From 322775a83179944b8df93bb6415c79decc8f70c3 Mon Sep 17 00:00:00 2001 From: drian0 <78469463+drian0@users.noreply.github.com> Date: Sat, 1 May 2021 05:51:36 +0200 Subject: [PATCH 4/6] Create GOVERNANCE.md --- GOVERNANCE.md | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 GOVERNANCE.md diff --git a/GOVERNANCE.md b/GOVERNANCE.md new file mode 100644 index 00000000..5de6e8f2 --- /dev/null +++ b/GOVERNANCE.md @@ -0,0 +1,74 @@ +# AssaultCube Pragmatic Governance Model (ACPGM) + +Status: Draft + +## Purpose + +AssaultCube is an open-source project maintained by various people around the globe. These people invest their free time and consider their involvement as a hobby. +Because people come and go, there is an inherent risk that ownership of the project will be lost and a power vacuum will bog the project down. + +ACPGM is a lightweight governance model that supports the continuity and longevity of the project. It is designed to support the people involved in moving the project forward. +It is simple enough to be practically useful and complex enough to prevent ambiguity. After all, it should be fun to engage in the project - nobody wants bureaucracy. +ACPGM is not legally binding and does not constitute a legal entity. + +## Community + +- The number of community members must be at lest twenty. The community decides with relative majority vote. +- Rights + - The community own AssaultCube. + - The community elect the members of the committee. This election is held once a year in February in the AC forum. + - If the committee excludes a community member, the community members can reject this decision. + - The community decides on proposed changes to this governance model. +- Community members shall donate USD $25 per year through the existing donation mechanism to pay the bills for hosting (includes masterserver, forum, website, wiki). Surplus amounts can be used for AC tournaments. +- Applications for joining shall be addressed to the committee which shall decide upon acceptance or non-acceptance. + +## Committee + +- The number of committee members must be at least three. The committee decides with relative majority vote. +- The goal of the committee is to + - Ensure the longevity of the project + - Balance tradition with innovation + - Promotion of youg talents +- Rights + - The committee may invite or exclude community members any time. + - The committee may invite or exclude platform team members any time. + - The committee may invite or exclude dev team members any time. + - The committee dedices which of the committee member has the role of the _Chairman_. The Chairman represents the committee towards others to simplify communication. + - The committee has full authority of the project if not stated otherwise in this governance model. + +## Platform Team + +- The number of platform team members is at least three. The platform team is self-oranizing. +- The goal of the platform team is to + - Keep up the game infrastructure and protect the game from attacks and abuse + - Provide the service of fair and transparent moderation and game jurisidication (e.g. bans) + - Establish welcoming culture and support civil/non-violent discussions +- Rights + - The platform team operates the infrastructure of AssaultCube and governs all administrative rights/permissions. + - The platform team represents the highest decision authority in terms of community moderation and game jurisdication. + - The platform team dedices which of the platform team member has the role of the team lead. The team lead represents the platform team towards others to simplify communication. +- The platform team publishes its own policies regarding community moderation and game jurisication. + +## Dev Team + +- The number of dev team members is at least three. The dev team is self-organizing. +- The goal of the dev team is to + - Conceptualize and execute a Strategy for AC [1] + - Publish an AC release at least once a year [2] + - Actively acquire new talents for the project and provide mentorship +- Rights + - The dev team dedices on development priorites, inclusion of features and bugfixes + - The dev team may change minor gameplay-relevant aspects of the game, major aspects require approval by the committee [3] + - The dev team dedices which of the dev team member has the role of the team lead. The team lead represents the dev team towards others to simplify communication. + +## More + +- Experience shows that people find it difficult to have multiple roles (different "hats") and to apply the right role depending on the context. Therefore, a person can *formally* belong to only one of these three groups: committee, dev team, platform team. In practice however, people can support the project in different areas. + +## Remarks + +[1] The people that want to put their time into improving and advancing AC to the next level should be provided a lot of freedom. This makes the project attractive for talents. The people that have the ideas should be the same people that build the stuff. Therefore it is better to give the dev team authority over vision/strategy instead of giving this authrity to the committee. The committee can still influence the broad direction of the project by setting up the dev team accordingly. + +[2] This ensure the knowledge of publishing a release remains active. A release could potentially only contain new maps/media worst-case. + +[3] Example: Minor gameplay change would be making the physics of nades more realistic; major gameplay change would be tweaking gun damage. From 0cbcb959f020e923b105748c3a91377911d07565 Mon Sep 17 00:00:00 2001 From: drian0 <78469463+drian0@users.noreply.github.com> Date: Sat, 1 May 2021 05:57:03 +0200 Subject: [PATCH 5/6] Typos --- GOVERNANCE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 5de6e8f2..314ca168 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -15,7 +15,7 @@ ACPGM is not legally binding and does not constitute a legal entity. - The number of community members must be at lest twenty. The community decides with relative majority vote. - Rights - - The community own AssaultCube. + - The community owns AssaultCube. - The community elect the members of the committee. This election is held once a year in February in the AC forum. - If the committee excludes a community member, the community members can reject this decision. - The community decides on proposed changes to this governance model. @@ -45,9 +45,9 @@ ACPGM is not legally binding and does not constitute a legal entity. - Establish welcoming culture and support civil/non-violent discussions - Rights - The platform team operates the infrastructure of AssaultCube and governs all administrative rights/permissions. - - The platform team represents the highest decision authority in terms of community moderation and game jurisdication. + - The platform team represents the highest decision authority in terms of community moderation and game jurisidication. - The platform team dedices which of the platform team member has the role of the team lead. The team lead represents the platform team towards others to simplify communication. -- The platform team publishes its own policies regarding community moderation and game jurisication. +- The platform team publishes its own policies regarding community moderation and game jurisidication. ## Dev Team From a2b50f5e079862b2e720cc636462788c47cff9da Mon Sep 17 00:00:00 2001 From: WetDesertRock Date: Sat, 1 May 2021 17:12:39 -0600 Subject: [PATCH 6/6] Fix some typos in GOVERNANCE.md --- GOVERNANCE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 314ca168..56639747 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -28,17 +28,17 @@ ACPGM is not legally binding and does not constitute a legal entity. - The goal of the committee is to - Ensure the longevity of the project - Balance tradition with innovation - - Promotion of youg talents + - Promotion of young talents - Rights - The committee may invite or exclude community members any time. - The committee may invite or exclude platform team members any time. - The committee may invite or exclude dev team members any time. - - The committee dedices which of the committee member has the role of the _Chairman_. The Chairman represents the committee towards others to simplify communication. + - The committee decides which of the committee member has the role of the _Chairman_. The Chairman represents the committee towards others to simplify communication. - The committee has full authority of the project if not stated otherwise in this governance model. ## Platform Team -- The number of platform team members is at least three. The platform team is self-oranizing. +- The number of platform team members is at least three. The platform team is self-organizing. - The goal of the platform team is to - Keep up the game infrastructure and protect the game from attacks and abuse - Provide the service of fair and transparent moderation and game jurisidication (e.g. bans)