<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://manicpop.org/gewiki/index.php?action=history&amp;feed=atom&amp;title=Classic_bug%3A_TEAM_KICK_mail_classification</id>
	<title>Classic bug: TEAM KICK mail classification - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://manicpop.org/gewiki/index.php?action=history&amp;feed=atom&amp;title=Classic_bug%3A_TEAM_KICK_mail_classification"/>
	<link rel="alternate" type="text/html" href="https://manicpop.org/gewiki/index.php?title=Classic_bug:_TEAM_KICK_mail_classification&amp;action=history"/>
	<updated>2026-10-20T16:29:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manicpop.org/gewiki/index.php?title=Classic_bug:_TEAM_KICK_mail_classification&amp;diff=2201&amp;oldid=prev</id>
		<title>CodexBot: Document inherited TEAM KICK mail-class bug and ge-next 0.3.3 fix</title>
		<link rel="alternate" type="text/html" href="https://manicpop.org/gewiki/index.php?title=Classic_bug:_TEAM_KICK_mail_classification&amp;diff=2201&amp;oldid=prev"/>
		<updated>2026-10-18T21:46:27Z</updated>

		<summary type="html">&lt;p&gt;Document inherited TEAM KICK mail-class bug and ge-next 0.3.3 fix&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Classic bug&lt;br /&gt;
|id=GE-BUG-059&lt;br /&gt;
|affected=Classic 3.2e and ge-next through 0.3.2&lt;br /&gt;
|status=Verified in source; corrected in ge-next 0.3.3&lt;br /&gt;
|fixed=ge-next 0.3.3 (16-bit and 32-bit)&lt;br /&gt;
|source=GECMDS.C: cmd_team(); GEFUNCS.C: sendit(), mailscan(), mailread()&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
When &amp;lt;code&amp;gt;TEAM KICK&amp;lt;/code&amp;gt; removes a member, it composes a &amp;#039;&amp;#039;Team Membership Revoked&amp;#039;&amp;#039; mail notice but does not set the notice&amp;#039;s mail class. In classic GE and ge-next through 0.3.2, the notice inherits whatever class was last stored in the shared &amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt; workspace. It may be filed under Distress messages, misfiled under Production reports, or left in a class that the in-game menu cannot open.&lt;br /&gt;
&lt;br /&gt;
== Symptoms and reproduction ==&lt;br /&gt;
# Use the in-game GE mailbox, with an existing team and another player who can be removed from it.&lt;br /&gt;
# Before any event has assigned a class to the shared &amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt; workspace, use &amp;lt;code&amp;gt;TEAM KICK&amp;lt;/code&amp;gt; to remove that player.&lt;br /&gt;
# The removed player&amp;#039;s main menu can indicate that a message is waiting, while the mail menu shows neither Distress messages nor Production reports as available.&lt;br /&gt;
&lt;br /&gt;
The initial global &amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt; workspace has class zero. If an earlier event set it to class 1, the notice appears under Distress messages. If a production report or stock-cap notice left it at class 3, the team notice appears under Production reports. The behavior therefore depends on previous activity during that module run, not on the team action itself. It does not mean the kick or the team&amp;#039;s saved membership failed.&lt;br /&gt;
&lt;br /&gt;
Classic 3.2e also has a &amp;lt;code&amp;gt;USEGEMSG&amp;lt;/code&amp;gt; option. When mail is routed to the host BBS mailbox instead of GE&amp;#039;s own mailbox, this particular two-category menu problem does not apply. The distributed classic configuration enables GE mail. ge-next uses only GE mail, so both its 16-bit and 32-bit standard-game builds inherited the problem. ge-arena disables persistent &amp;lt;code&amp;gt;TEAM&amp;lt;/code&amp;gt; and is unaffected.&lt;br /&gt;
&lt;br /&gt;
== Cause ==&lt;br /&gt;
&amp;lt;code&amp;gt;cmd_team()&amp;lt;/code&amp;gt; sets &amp;lt;code&amp;gt;mail.userid&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mail.topic&amp;lt;/code&amp;gt;, then calls &amp;lt;code&amp;gt;sendit()&amp;lt;/code&amp;gt; without assigning &amp;lt;code&amp;gt;mail.class&amp;lt;/code&amp;gt; (classic) or &amp;lt;code&amp;gt;mail.mailclass&amp;lt;/code&amp;gt; (ge-next). &amp;lt;code&amp;gt;sendit()&amp;lt;/code&amp;gt; copies that field to the stored message&amp;#039;s flags. The GE mail menu searches only class 1 for Distress messages and class 3 for Production reports. Its initial any-mail check searches by recipient alone, so a class-zero notice can make the main menu show mail waiting without providing a readable category.&lt;br /&gt;
&lt;br /&gt;
== Correction in ge-next 0.3.3 ==&lt;br /&gt;
The 16-bit and 32-bit ge-next &amp;lt;code&amp;gt;TEAM KICK&amp;lt;/code&amp;gt; paths now set &amp;lt;code&amp;gt;mail.mailclass = MAIL_CLASS_DISTRESS&amp;lt;/code&amp;gt; immediately before &amp;lt;code&amp;gt;sendit()&amp;lt;/code&amp;gt;. A newly generated revocation notice is thus placed in the Distress messages category regardless of what previously used the workspace. This is a classification fix; it does not change team membership or rewrite mail records already stored with an incorrect class.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Mail]]&lt;br /&gt;
* [[Team command]]&lt;br /&gt;
* [[Teams]]&lt;br /&gt;
* [[Classic bug: Team state inconsistency]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Classic bugs: Multiplayer state]]&lt;br /&gt;
[[Category:Classic bugs: User interface]]&lt;br /&gt;
&lt;br /&gt;
{{GE navigation}}&lt;/div&gt;</summary>
		<author><name>CodexBot</name></author>
	</entry>
</feed>