-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathTheme Manager - THEME.txt
147 lines (85 loc) · 16.3 KB
/
Theme Manager - THEME.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
@@ DEPENDENCIES - CORE
th u(NEWCOBJ,Theme Manager <THEME>,theme,,,,WIZARD SAFE !NO_COMMAND,INHERIT SIDEFX SAFE)
th u(NEWCOBJ,Theme Database <THEMEDB>,themedb,u(cobj,theme),,1,SAFE,SAFE)
&CMD`+FCLIST`PENNMUSH [u(cobj,theme)]=$^(?s)(?\:\+)?(fclist|themes|theme|series|cast)(?\:/(\S+)?)?(?\: +(.+?))?(?\:=(.*))?$:@attach %!/CMD`+FCLIST`MAIN
@set [u(cobj,theme)]/CMD`+FCLIST`PENNMUSH=regexp
&CMD`+FCLIST`RHOSTMUSH [u(cobj,theme)]=$^(?s)(?\:\+)?(fclist|themes|theme|series|cast)(?\:/(\\S+)?)?(?\: +(.+?))?(?\:=(.*))?$:@attach %!/CMD`+FCLIST`MAIN
@set [u(cobj,theme)]/CMD`+FCLIST`RHOSTMUSH=regexp
&CMD`+FCLIST`MAIN [u(cobj,theme)]=th u(setq,com,lcstr(+%1));@attach %!/INC`GETSWITCH=%2;@attach %!/INC`[u(strfirstof,%q<switch>,MAIN)]=%3,%4
@set [u(cobj,theme)]/CMD`+FCLIST`[u(choosegame,RHOSTMUSH,PENNMUSH)]=no_command
&SWITCHES`PLAYER [u(cobj,theme)]=INFO|SEARCH
&SWITCHES`ADMIN [u(cobj,theme)]=CREATE|RENAME|DELETE|ASSIGN|REMOVE|DESCRIBE|STATUS|SETINFO|CLEARINFO|UNASSIGNED
&SWITCHES`WIZARD [u(cobj,theme)]=CONFIG
&SYSTEM`NAME [u(cobj,theme)]=THEME
&INC`MAIN [u(cobj,theme)]=@select/inline strlen(%0)=>0,{@attach %!/INC`DISPLAY},0,{@attach %!/INC`LISTALL}
&INC`LISTALL [u(cobj,theme)]=@check u(setr,count,u(mysql,SELECT`THEMECOUNT))=@attach %!/INC`MSG=No inhabited themes to display.;@pemit %#=u(HEADER,mudname() - All Themes);@dolist/inline lnum(1,u(setr,pages,add(1,div(%q<count>,30))))={@pemit %#=u(table,iter(u(mysql3,SELECT`THEME_NAMES,mul(30,sub(u(choosegame,%i0,%d0),1))),u(pueblize,%i0,+fclist %i0),u(rsep),u(rsep)),37,u(width,%#),u(rsep))};@pemit %#=u(footer)
&Q`SELECT`THEME_NAMES [u(cobj,theme)]=SELECT theme_name FROM volv_theme ORDER BY theme_name LIMIT 30 OFFSET ?
&Q`SELECT`THEMECOUNT [u(cobj,theme)]=SELECT count(theme_id) FROM vol_theme
&INC`FINDTHEME [u(cobj,theme)]=@check strlen(%0)=@attach %!/INC`MSG=ERROR: Name field empty.;@select/inline words(u(setr,theme,u(mysql3,FIND`THEME[if(%2,`EXACT)],if(not(%2),sqlescape(%0),%0),%0)))=0,{@stop 1=@attach %!/INC`MSG=ERROR: Theme '%0' not found!},1,{},>1,{@select/inline t(%2)=1,{},0,{th u(setq,theme,first(%q<theme>,u(rsep)))}};th u(setq,themename,u(elements,%q<theme>,2,u(fsep)));th u(setq,theme,u(elements,%q<theme>,1,u(fsep)))
&Q`FIND`THEME [u(cobj,theme)]=SELECT theme_id,theme_name FROM volv_theme WHERE theme_name LIKE '!%' OR theme_id=? ORDER BY theme_name LIMIT 1
&Q`FIND`THEME`EXACT [u(cobj,theme)]=SELECT theme_id,theme_name FROM volv_theme WHERE theme_name=? OR theme_id=?
&INC`DISPLAY [u(cobj,theme)]=@attach %!/INC`FINDTHEME=%0,1;@pemit %#=u(HEADER,Theme: %q<themename>);@pemit %#=u(mysql,SELECT`DESCRIPTION,%q<theme>);@pemit %#=u(separator,Cast);@attach %!/INC`CASTLIST=%q<theme>;@attach %!/INC`INFOLIST=%q<theme>;@pemit %#=u(footer,if(u(isadmin,%#),Theme ID: %q<theme>))
&Q`SELECT`DESCRIPTION [u(cobj,theme)]=SELECT theme_description FROM vol_theme WHERE theme_id=?
&INC`CASTLIST [u(cobj,theme)]=@select/inline t(%1)=0,{@pemit %#=u(FUN`CASTCOLUMN);@pemit %#=u(separator)};@dolist/inline/delimit [u(rsep)] [u(mysql3,SELECT`CAST,%0)]={@pemit %#=u(FUN`CASTROW,u(choosegame,%i0,%d0))}
&Q`SELECT`CAST [u(cobj,theme)]=SELECT character_objid,tmember_type,character_status FROM volv_theme_member WHERE theme_id=? ORDER BY character_name
&FUN`CASTCOLUMN [u(cobj,theme)]=ansi(u(color,%#,COLUMN_NAMES),align(26 24 8 8 10,Name,Faction,Last On,Type,if(u(conf,AVAILABLE),Available,%b)))
&FUN`CASTROW [u(cobj,theme)]=localize(align(26 24 8 8 10,u(namelink,u(setr,obj,u(elements,%0,1,u(fsep)))),u(strfirstof,u(getproperty,%q<obj>,FACTION),Unaffiliated),u(lastidle,%q<obj>),u(strfirstof,u(elements,%0,2,u(fsep))),if(u(conf,AVAILABLE),u(strfirstof,u(elements,%0,3,u(fsep)),Open),)))
&INC`SEARCH [u(cobj,theme)]=@check strlen(%0)=@attach %!/INC`MSG=ERROR: Nothing entered to search by!;@check strlen(u(setr,results,u(mysql3,SEARCH`CAST,%0)))=@attach %!/INC`MSG=Nothing found. Sorry!;@pemit %#=u(header,Cast for: %0);@pemit %#=u(FUN`CASTCOLUMN);@dolist/inline/delimit [u(rsep)] %q<results>={@select/inline strmatch(%q<themename>,u(setr,themename,u(elements,u(choosegame,%i0,%d0),4,u(fsep))))=0,{@pemit %#=u(separator,%q<themename>)};@pemit %#=u(FUN`CASTROW,u(choosegame,%i0,%d0))};@pemit %#=u(footer)
&Q`SEARCH`CAST [u(cobj,theme)]=SELECT character_objid,tmember_type,character_status,theme_name FROm volv_theme_member WHERE theme_name LIKE '%!%' ORDER BY theme_name,character_name
&INC`INFO [u(cobj,theme)]=@attach %!/INC`FINDTHEME=%0,1;@pemit %#=u(HEADER,Theme Info: %q<themename1>);@pemit %#=get(%q<theme1>/INFO);@pemit %#=u(FOOTER)
&INC`VALID`INFONAME [u(cobj,theme)]=@check strlen(u(setr,infoname,trim(stripansi(%0))))=@attach %!/INC`MSG=ERROR: Info name field empty.;@check gt(strlen(%q<infoname>),18)=@attach %!/INC`MSG=ERROR: Infonames should be 18 characters or less.;@stop u(charsearch,u(badchars) /)=@attach %!/INC`MSG=Characters not allowed in an infoname: [v(badchars)] /;@stop cand(u(setr,found,u(mysql,EXACT`FILE,%q<theme>,%q<infoname>)),not(eq(%q<found>,%1)))=@attach %!/INC`MSG=ERROR: Infoname is already in use!
&Q`EXACT`FILE [u(cobj,theme)]=SELECT field_id FROM vol_field WHERE entity_id=? AND field_type=3 AND field_name=? LIMIT 1
&INC`SETINFO [u(cobj,theme)]=@attach %!/INC`FINDTHEME=%0,1;@attach %!/INC`VALID`INFONAME=before(%1,/);@attach %!/INC`VALID`INFOTEXT=after(%1,/);@check u(setr,results,u(call`5,volp_field,0,%q<theme>,3,'[sqlescape(%q<infoname>)]','[sqlescape(%q<infotext>)]',get(%#/D`ID)))=@attach %!/INC`MSG=ERROR: Could not set Info file. Reason: %q<results>;@attach %!/INC`DOSQl=SET`RENDER,u(render,%q<infotext>),%q<results>;@attach %!/INC`MSG=You have changed theme %q<themename>'s %q<infoname> info.;@attach %!/INC`MSG`CHAN=Set %q<themename>'s %q<infoname> file.
&Q`SET`RENDER [u(cobj,theme)]=UPDATE vol_field SET field_text_render=? WHERE field_id=?
&INC`CLEARINFO [u(cobj,theme)]=@attach %!/INC`FINDTHEME=%0,1;@check u(setr,found,u(mysql,EXACT`FILE,%q<theme>,u(setr,infoname,trim(stripansi(before(%1,/))))))=@attach %!/INC`MSG=ERROR: Infoname not found!;@attach %!/INC`DOSQL=DELETE`FILE,%q<found>;@attach %!/INC`MSG=Deleted %q<themename>'s %q<infoname> file.;@attach %!/INC`MSG`CHAN=Deleted %q<themename>'s %q<infoname> info.
&Q`DELETE`FILE [u(cobj,theme)]=DELETE FROM vol_field WHERE field_id=?
&INC`CLEARINFO [u(cobj,theme)]=@attach %!/INC`FINDTHEME=%0,1;@check u(setr,found,u(mysql,EXACT`FILE,%q<theme>,u(setr,infoname,trim(stripansi(before(%1,/))))))=@attach %!/INC`MSG=ERROR: Infoname not found!;@attach %!/INC`DOSQL=DELETE`FILE,%q<found>;@attach %!/INC`MSG=Deleted %q<themename>'s %q<infoname> file.;@attach %!/INC`MSG`CHAN=Deleted %q<themename>'s %q<infoname> info.
&INC`DESCRIBE [u(cobj,theme)]=@attach %!/INC`FINDTHEME=%0;@check strlen(%1)=@attach %!/INC`MSG=ERROR: No description entered!;@attach %!/INC`DOSQl=UPDATE`THEMEDESC,%1,%q<theme>;@attach %!/INC`DOSQl=UPDATE`THEMERENDER,u(render,%1),%q<theme>;@attach %!/INC`MSG=You have changed Theme %q<themename1>'s description.;@attach %!/INC`MSG`CHAN=Changed Description of '[u(pueblize,%q<themename>,+fclist %q<themename>)]'
&Q`UPDATE`THEMEDESC [u(cobj,theme)]=UPDATE vol_theme SET theme_description=? WHERE theme_id=?
&Q`UPDATE`THEMERENDER [u(cobj,theme)]=UPDATE vol_theme SET theme_description_render=? WHERE theme_id=?
&INC`VALID`THEMENAME [u(cobj,theme)]=@check strlen(u(setr,value,trim(stripansi(%0))))=@attach %!/INC`MSG=ERROR: Name field empty.;@stop u(mysql,FIND`THEME`EXACT,%0)=@attach %!/INC`MSG=ERROR: Theme '%0' already exists! Use /rename and /describe to modify it.;@stop cand(u(setr,found,u(mysql,FIND`THEME`EXACT,%0)),not(eq(%1,%q<found>)))=@attach %!/INC`MSG=ERROR: Theme '%0' already exists!
&INC`CREATE [u(cobj,theme)]=@attach %!/INC`VALID`THEMENAME=%0;@check strlen(%1)=@attach %!/INC`MSG=ERROR: Description field empty!;@check u(setr,theme,u(call`2,volp_theme,0,'[sqlescape(%0)]','[sqlescape(%1)]'))=@attach %!/INC`MSG=ERROR: Theme could not be created. ERROR: %q<theme>;@attach %!/INC`REBUILDCACHE;@attach %!/INC`MSG=You have created the '%q<value>' Theme.;@attach %!/INC`MSG`CHAN=Created theme: '[u(pueblize,%q<value>,+fclist %q<value>)]'
&INC`RENAME [u(cobj,theme)]=@attach %!/INC`FINDTHEME=%0,,1;@attach %!/INC`VALID`THEMENAME=%1,%q<theme>;@attach %!/INC`DOSQL=RENAME`THEME,%1,%q<theme>;@attach %!/INC`MSG=Theme '%q<themename>' Renamed to '%q<value>'!;@attach %!/INC`MSG`CHAN=Theme '%q<themename>' Renamed to '%q<value>';@attach %!/INC`REBUILDMEMBERS=%q<theme>
&Q`RENAME`THEME [u(cobj,theme)]=UPDATE vol_entity SET entity_name=? WHERE entity_id=?
&INC`DELETE [u(cobj,theme)]=@attach %!/INC`FINDTHEME=%0,,1;@attach %!/INC`VERIFY={WARNING: This will delete Theme '%q<themename>' and all data associated with it. Are you SURE you want to do this? Enter the same command again within ten seconds to verify.},FCLIST DELETE %q<theme>;@attach %!/INC`MSG=Theme '%q<themename>' deleted!;@attach %!/INC`MSG`CHAN=Theme '%q<themename>' Deleted!;th u(setq,members,u(mysql,REBUILD`CHARACTERS,%q<theme>));@attach %!/INC`DOSQL=DELETE`THEME,%q<theme>;@dolist/inline %q<members>=@attach %!/INC`REBUILDCHARACTER=##
&Q`DELETE`THEME [u(cobj,theme)]=DELETE FROM vol_entity WHERE entity_id=?
&INC`VALID`CHARTYPE [u(cobj,theme)]=@check strlen(u(conf,CHARACTER_TYPES))=@attach %!/INC`MSG=ERROR: Character_types is empty! Fix with +theme/config!;@check strlen(u(setr,value,trim(stripansi(%0))))=@attach %!/INC`MSG=ERROR: Chartype cannot be empty.;@attach %!/INC`PARTIAL=%0,u(conf,CHARACTER_TYPES),|,value;
&INC`ASSIGN [u(cobj,theme)]=@attach %!/INC`CHECKPC=before(%0,/),1;@stop gte(words(get(%q<t1>/V`THEME),u(rsep)),u(conf,MAX_THEMES))=@attach %!/INC`MSG=ERROR: Cannot be a member of more than [u(conf,MAX_THEMES)] at once!;@attach %!/INC`VALID`CHARTYPE=after(%0,/);@attach %!/INC`FINDTHEME=%1;@attach %!/INC`DOSQL=ASSIGN`MEMBER,%q<t1id>,%q<theme>,%q<value>;@attach %!/INC`MSG=You assign %q<t1name> to Theme '%q<themename>';@attach %!/INC`MSG`CHAN=Assigned %q<t1name> to Theme '[u(pueblize,%q<themename>,+fclist %q<themename>)]';@attach %!/INC`REBUILDCHARACTER=%q<t1>
&Q`ASSIGN`MEMBER [u(cobj,theme)]=INSERT INTO vol_tmember (character_id,theme_id,tmember_type) VALUES (?,?,?) ON DUPLICATE KEY UPDATE tmember_type=VALUES(tmember_type)
&INC`REMOVE [u(cobj,theme)]=@attach %!/INC`CHECKPC=%0,1;@attach %!/INC`FINDTHEME=%1;@check u(mysql,EXIST`MEMBER,%q<theme>,%q<t1id>)=@attach %!/INC`MSG=ERROR: %q<t1name> is not a member of %q<themename>.;@attach %!/INC`DOSQL=REMOVE`MEMBER,%q<t1id>,%q<theme>;@attach %!/INC`MSG=You remove %q<t1name> from Theme '%q<themename>';@attach %!/INC`MSG`CHAN=Removed %q<t1name> from Theme '[u(pueblize,%q<themename>,+fclist %q<themename>)]';@attach %!/INC`REBUILDCHARACTER=%q<t1>
&Q`EXIST`MEMBER [u(cobj,theme)]=SELECT character_id FROM vol_tmember WHERE theme_id=? AND character_id=?
&Q`REMOVE`MEMBER [u(cobj,theme)]=DELETE FROM vol_tmember WHERE character_id=? AND theme_id=?
&INC`UNASSIGNED [u(cobj,theme)]=@check words(u(setr,unassigned,u(filter,UNASSIGNED,u(mysql,SELECT`UNASSIGNED))))=@attach %!/INC`MSG=No players lack theme assignments.;@pemit %#=u(HEADER,Unassigned Players);@pemit %#=ansi(u(color,%#,COLUMN_NAMES),align(20 30,Name,Creation Time));@dolist/inline %q<unassigned>={@pemit %#=align(20 30,u(pueblize,u(getmoniker,##),+finger [name(##)]),ctime(##));@switch/inline eq(inum(0),words(%q<unassigned>))=1,{@pemit %#=u(FOOTER)}}
&FIl`UNASSIGNED [u(cobj,theme)]=cand(not(cor(u(isadmin,%0),u(isguest,%0))),u(isobjid,%0))
&Q`SELECT`UNASSIGNED [u(cobj,theme)]=SELECT character_objid FROM volv_character WHERE character_is_deleted=0 AND character_id NOT IN (SELECT character_id FROM vol_tmember) ORDER BY character_name
&INC`EMPTY [u(cobj,theme)]=@check words(u(setr,empty,u(mysql3,SELECT`EMPTY_NAMES)))=@attach %!/INC`MSG=There are no empty themes.;@attach %!/INC`MSG=The following themes have no cast: [iter(%q<empty>,u(pueblize,%i0,+fclist %i0),u(rsep),\,%b)]
&Q`SELECT`EMPTY_NAMES [u(cobj,theme)]=SELECT theme_name FROM volv_theme WHERE theme_id NOT IN (SELECT theme_id FROM vol_tmember) ORDER BY theme_name
&INC`VALID`STATUS [u(cobj,theme)]=@check strlen(%0)=@attach %!/INC`MSG=ERROR: No status entered.;@attach %!/INC`PARTIAL=%0,u(conf,CHARACTER_STATUS),|,value;
&INC`STATUS [u(cobj,theme)]=@attach %!/INC`CHECKPC=%0,1;@attach %!/INC`VALID`STATUS=%1;@attach %!/INC`MSG=%q<t1name>'s FCList status is now: %q<value>;@attach %!/INC`MSG`CHAN=%q<t1name> is now listed as %q<value>.;@attach %!/INC`DOSQL=CHARACTER`STATUS,%q<value>,%q<t1id>;th u(vattrib_set,%q<t1>,V`THEME`STATUS,%q<value>)
&Q`CHARACTER`STATUS [u(cobj,theme)]=UPDATE vol_character SET character_status=? WHERE character_id=?
&STARTUP [u(cobj,theme)]=@trigger %!/LOOP`REPORTEMPTY
&LOOP`REPORTEMPTY [u(cobj,theme)]=@select/inline cand(words(u(setr,empty,u(mysql3,SELECT`EMPTY_NAMES))),u(conf,REPORT_EMPTY))=>0,{@attach %!/INC`MSG`CHAN=EMPTY THEMES: The following themes have no Cast: [iter(%q<empty>,u(pueblize,%i0,+fclist %i0),u(rsep),\,%b)]};@wait mul(60,60,6)=@trigger %!/LOOP`REPORTEMPTY
&CONFIG`OPTIONS [u(cobj,theme)]=MAX_THEMES|REPORT_EMPTY|CHARACTER_TYPES|CHARACTER_STATUS|CONTENTION
&CONFIG`MAX_THEMES [u(cobj,theme)]=How many themes can a Character be in?
&CONFIG`MAX_THEMES`VALID [u(cobj,theme)]=POSINT
&CONFIG`MAX_THEMES`DEFAULT [u(cobj,theme)]=1
&CONFIG`REPORT_EMPTY [u(cobj,theme)]=Report empty themes on alerts channel?
&CONFIG`REPORT_EMPTY`VALID [u(cobj,theme)]=BOOL
&CONFIG`REPORT_EMPTY`DEFAULT [u(cobj,theme)]=1
&CONFIG`CONTENTION [u(cobj,theme)]=Show the Available column in theme displays?
&CONFIG`CONTENTION`VALID [u(cobj,theme)]=BOOL
&CONFIG`CONTENTION`DEFAULT [u(cobj,theme)]=1
&CONFIG`CHARACTER_TYPES [u(cobj,theme)]=|-delimited list of types of characters. FC, EFC, OC, OFC, EFC, etc.
&CONFIG`CHARACTER_TYPES`VALID [u(cobj,theme)]=LIST
&CONFIG`CHARACTER_TYPES`DEFAULT [u(cobj,theme)]=FC|EFC|OC|OFC|EFC|SFC|TEMP|TP|PLOT|NPC
&CONFIG`CHARACTER_STATUS [u(cobj,theme)]=|-delimited list of character statuses. Used for games that re-use published characters and have applications.
&CONFIG`CHARACTER_STATUS`VALID [u(cobj,theme)]=LIST
&CONFIG`CHARACTER_STATUS`DEFAULT [u(cobj,theme)]=OPEN|CLOSED|CLOSING|TEMP|DEAD|UNAVAILABLE
&INC`REBUILDMEMBERS [u(cobj,theme)]=@dolist/inline u(mysql,REBUILD`CHARACTERS,%0)={@attach %!/INC`REBUILDCHARACTER=##}
&Q`REBUILD`CHARACTERS [u(cobj,theme)]=SELECT character_objid FROM volv_theme_member WHERE theme_id=?
&INC`REBUILDCHARACTER [u(cobj,theme)]=th u(vattrib_set,%0,V`THEME,u(mysql3,REBUILD`CHARACTER_CACHE,get(%0/D`ID)))
&Q`REBUILD`CHARACTER_CACHE [u(cobj,theme)]=SELECT theme_id,tmember_type,theme_name FROM volv_theme_member WHERE character_id=? ORDER BY theme_name
&HLP`THEME [u(cobj,theme)]=The Theme system tracks played characters belonging to themes used in [mudname()].%R%R[ansi(hc,Commands)]%R[align(5 [sub(u(width,%#),6)],,[ansi(hw,+theme)] - Lists all Themes in use.%R[ansi(hw,+theme <theme>)] - List the roster of characters in a theme.%R[ansi(hw,+theme/search <name>)] - Display all themes/their characters where the theme's name starts with <name>.%R%RSTATUS:%ROpen - The character is available to play.%RClosing - The character is closing but staff is still accepting applications.%RPlayed - The character is played.%RDead - The character is dead and cannot be applied for.%RTemp - The character is being played temporarily for a plot or similar purpose.%R%RTYPE:%RFC - Feature Character. Created by official canon.%ROFC - Original Feature Character. Created for the game.%ROC - Original Character. Generally not listed.%REFC - Essential Feature Character. Crucial to the game's storytelling\, such as faction leaders.%RSFC - Special Feature Character.%R%RThis list is general and doesn't cover every game.)]
+help/add Community/+theme=[u(cobj,theme)]/HLP`THEME
&SHLP`THEME [u(cobj,theme)]=The Theme system allows characters to be added to one or more groups for listing purposes.%R%R[ansi(hc,Staff Commands)]%R[align(5 [sub(u(width,%#),6)],,[ansi(hw,+theme/create <themename>=<description>)] - Creates a list to group characters under.%R[ansi(h,+theme/rename <theme>=<newname>)] - Rename a list. <theme> must be the full exact name.%R[ansi(h,+theme/delete <theme>)] - Deletes a list.%R[ansi(h,+theme/assign <character>/<type>=<theme>)] - Assigns a character to a list.%R[ansi(h,+theme/remove <character>=<theme>)] - Removes a character from a list.%R[ansi(h,+theme/describe <theme>=<description>)] - Explain a Theme.%R[ansi(h,+theme/setinfo <theme>=<info>)] - Extra room to hash out an FClist.%R[ansi(h,+theme/clearinfo <theme>)] - Clears an /info entry.%R[ansi(h,+theme/status <character>=<status>)] - Change a character's status. Choices are listed in and can be changed in +theme/config.%R%RCheck +theme/config for the list of STATUSes and TYPEs. Or Change them.)]
+shelp/add Character/+theme=[u(cobj,theme)]/SHLP`THEME