· 6 years ago · Aug 01, 2019, 01:58 AM
1BASICSPEAK [#3`]: u(BASICSPEAK`%va,%0,%1)
2BASICSPEAK`PENNMUSH [#3]: speak(%0,%1)
3BASICSPEAK`RHOSTMUSH [#3]: parsestr(%1,%0,",",,owner(%#))
4CMD [#3`]:
5CMD`+SCENE [#3`]:
6CMD`+SCENE`MAIN [#3]: th u(setq,mode,switch(%1,scene,scene,scenes,scenes,schedule,scenes,events,scenes,event,scenes,sched,scenes,plot,plot,pot,pot,summary,summary,observer,observer,partners,partners));@select/inline t(match(scene scenes plot,%q<mode>))=1,{@check not(strmatch(sql(SELECT DATABASE()),#-*))=@attach %!/INC`MSG=ERROR: SQL is not ready.};@attach %!/INC`GETSWITCH=%2;@include %!/INC`%q<mode>`[u(strfirstof,%q<switch>,MAIN)]=trim(%3),trim(%4),%3[if(strlen(%4),=%4)]
7CMD`+SCENE`PENNMUSH [#3R]: $^(?s)(?\:\+)?(scene|scenes|events|event|plot|schedule|pot|sched|summary|observer|partners)(?\:/(\S+)?)?(?\: +(.+?))?(?\:=(.*))?$:@attach %!/CMD`+SCENE`MAIN
8CMD`+SCENE`RHOSTMUSH [#3$R]: $^(?s)(?\:\+)?(scene|scenes|events|event|plot|schedule|sched|pot|summary|observer|partners)(?\:/(\\S+)?)?(?\: +(.+?))?(?\:=(.*))?$:@attach %!/CMD`+SCENE`MAIN
9CMD`CHARID [#3R]: $^\+charid(?\: +(.*))?$:@force %#=+scene/charid %1
10DEBUGFORWARDLIST [#672$i]: #672
11FIL [#3`]:
12FIL`NOTHERE [#3]: not(strmatch(loc(%0),%1))
13FIL`POSEBY [#3]: strmatch(get(%1/%0`BY),%2)
14FIL`POSEHEADER [#3]: cor(words(%2),t(u(player_config,owner(%0),IC,BORDERS)))
15FIL`POSELOC [#3]: strmatch(get(%1/%0`CUSTLOC),%2)
16FIL`SCENESMINE [#3]: cor(t(words(setinter(u(mysql,get`SCHEDOWNEROBJ,%0),%1))),t(words(setinter(u(mysql,get`tagobjids,%0),%1))))
17FIL`TIMEDOUT [#3]: gte(sub(secs(),get(%2/%0`WHEN)),%1)
18FUN [#3`]:
19FUN`FORMATPLOT [#3]: pemit(%q<target>,align(4 25 20 20 6,u(pueblize,%1,+plot %1),%2,%3,elements(u(fancytime,%4,%q<target>),1 2) - [elements(u(fancytime,%5,%q<target>),1 2)],%6))
20FUN`FORMATPOSE [#3]: u(speech`%va,%1,u(colormarkup,%0,%2%3,%1),%0,,IC,%4)
21FUN`FORMATPOST [#3]: ansi(h,Title:) %0%R[ansi(h,Posted by:)] %1%R[ansi(h,Scheduled Time:)] %2%R[repeat(-,78)]%R%3
22FUN`FORMATSCHEDULE [#3]: if(not(strmatch(%q<last>,u(setr,last,u(choosegame,timefmt($a $b $d $Y $Z,%4,u(gettz,%q<target>)),ptimefmt($a $b $d $Y $Z,%4,u(gettz,%q<target>)))))),pemit(%q<target>,u(HEADER,%q<last>)))[pemit(%q<target>,align(4 43 20 7,u(pueblize,%1,+schedule %1),%2,%3,elements(u(fancytime,%4,%q<target>),3)))]
23FUN`FORMATSCHEDULE2 [#3]: align(3 4 40 20 7,ljust(switch(1,eq(%0,%5),ansi(hg,*),t(words(setinter(u(mysql,get`playerobjid,%5),u(alts,%:)))),ansi(hg,*),t(u(mysql,get`tagcheck,%1,%0)),ansi(hr,*),t(words(setinter(u(mysql,get`tagobjids,%1),u(alts,%:)))),ansi(c,*)),1)[u(mysql,get`tagcount,%1)],u(pueblize,%1,+schedule %1),%2,%3,elements(u(fancytime,%4,%#),3))
24FUN`INTERESTPLAY [#3]: nspemit(%#,if(isobjid(%2),%1,%1 (deleted)))
25FUN`ISLOGGED [#3]: if(cand(not(%3),words(%4)),#-1 SCENE NOT JOINED,if(not(match(%4,%3)),#-2 JOINED SCENE (%3) NOT PRESENT,if(u(mysql,get`scenestate,%3),#-3 SCENE (%3) IS NOT ACTIVE,if(lt(words(%2),10),#-4 INSUFFICIENT WORD COUNT,%3))))
26FUN`POT [#3`]:
27FUN`POT`LASTPOSE [#3]: localize(last(u(filter,poseby,u(FUN`POT`POSES,%0,%1),%b,%b,%0,%2)))
28FUN`POT`POSERS [#3]: setunion(iter(u(FUN`POT`POSES,%0,%1,%2),get(%l/%i0`BY)),)
29FUN`POT`POSES [#3]: u(filter,POSELOC,u(sortpot,u(lattr,%0/D`POSES`*)),%b,%b,%0,%2)
30FUN`RECALL [#3]: pemit(%q<target>,u(SEPARATOR,u(moniker,%1) Posed on [u(fancytime,%4,%q<target>)])%R[u(colormarkup,%#,u(markup,regeditalli(%3,v(REG`SPEECH),%q<quote>[ansi(%q<speechcol>,$1)]%q<quote>),%q<dbs>),%1)])
31FUN`SCENEMINE [#3]: pemit(%#,align(4 41 20 10,u(pueblize,%1,+scene %1),%2,%3,switch(%4,0,Active,1,Paused,2,Unfinished,3,Finished,???)))
32FUN`SCENEMINE4 [#3]: pemit(%#,align(4 41 20 10,u(pueblize,%1,+scene %1),%2,%3,u(choosegame,timefmt($m/$d/$y,%4,u(gettz,%#)),ptimefmt($m/$d/$y,%4,u(gettz,%#)))))
33HLP [#3`]:
34HLP`+DONE [#3]: Usage: +done%R%RDisplays a highlighted message that you are 'done'. This is usually used to keep track of who's posed in large scenes, for the convenience of the game master (if applicable) as well as other players. This is especially useful when pose rounds are being used.
35HLP`+PARTNERS [#3]: The Partners system helps keep track of matchups within scenes. Examples include a task force, a dogfight, a duel. The idea is that this will help participants of large scenes and scenerunners easily keep track of who is grouped together, who is fighting who, etc.%R%R[ansi(hc,Commands)]%RThese commands use the currently joined scene contextually. In other words, each list of matchups is unique-per-+scene.%R[align(5 [sub(u(width,%#),6)],,[ansi(h,+partners)] - List all matchups in the scene.%R[ansi(h,+partners/join <slot>)] - Join a particular matchup. <slot> must be a number 1-15.%R[ansi(h,+partners/leave <slot>)] - Same as /join except leaves a matchup.)]
36HLP`+PLOT [#3]: SceneSys is a scene scheduling, tracking, and logging tool that works alongside [mudname()]'s Wiki. The original version was designed by Mercutio @ M*U*S*H and some of his code remains - credits are due.%R[ansi(hc,See Also:)] [u(pueblize,+help +scene,+help +scene)]%R%R[ansi(hc,Commands)]%R[align(5 [sub(u(width,%#),6)],,{[ansi(h,+plot)] - Show all current plots.%R[ansi(h,+plot/all)] - Show all plots in the system.%R[ansi(h,+plot <id>)] - Show a plot's details.})]
37HLP`+POT [#3]: +pot, or [ansi(h,Po)]se [ansi(h,T)]racker, is a system that stores poses within the room for easy retrieval for review. Sometimes, poses are lost in spam or scroll, or a player enters late and needs to see what's going on, or was disconnected when someone else posed, and that's what this system's here to aid with.%R%R[ansi(hc,Commands)]%R[align(5 [sub(u(width,%#),6)],,[ansi(h,+pot)] - Show either +pot/list or +pot/brief\, depending on /mode. \(See below.\)%R[ansi(h,+pot/list)] - show the last 15 \(or set max\) poses.%R[ansi(h,+pot/list <number>)] - Show a specified amount of poses.%R[ansi(h,+pot/max <number>)] - Set a new default number of poses to show.%R[ansi(h,+pot/brief)] - Show when people last posed and their last +summary made after that pose if they have one.%R[ansi(h,+pot/mode)] - Change the behavior of +pot. By default\, +pot uses +pot/list display style. Change mode and it will use +pot/brief instead.%R%R[ansi(h,+pot/toggle)] - THINGS used as rooms WILL support +pot if they are within an IC room. Object owners can use +pot/toggle to switch off recording. It can also enable recording in areas that are normally OOC.)]
38HLP`+SCENE [#3]: SceneSys is a scene scheduling, tracking, and logging tool that works alongside [mudname()]'s Wiki. The original version was designed by Mercutio @ M*U*S*H and some of his code remains - credits are due.%R%R[ansi(hc,Setting up)]%R[align(5 [sub(u(width,%#),6)],,[ansi(h,+scene/setup)] - Get your own unique Char_id.%R[ansi(h,+scene/charid)] - Show your own unique Char_id.%RChar_id is used by the wiki log viewer and must be on your character's wiki page.)]%R%R[ansi(hc,Running/Logging Commands)]%RThese commands are for anyone who wants to start and manage a scene.%R[align(5 [sub(u(width,%#),6)],,[ansi(h,+scene/create <title text>)] - Begins a new scene.%R[ansi(h,+scene/loudcreate <title text>)] - Like /create but announces it on the RP channel.%R[ansi(h,+scene/title <id>=<text>)] - Changes a scene's title.%R[ansi(h,+scene/desc <id>=<text>)] - Gives a scene a description/short summary.%R[ansi(h,+scene/plot <id>=<plot id>)] - Links a scene to a plot\, if you own the scene or run the plot. Set plot to 0 to remove it from any plots.%R[ansi(h,+scene/finish \[<id>\])] - Finishes a scene. ID will be current scene if not specified.%R[ansi(h,+scene/pause \[<id>\])] - Pauses a scene. ID will be current scene if not specified.%R[ansi(h,+scene/continue \[<id>\])] - Resumes a scene that was paused or finished. ID will be current scene if not specified.%R[ansi(h,+scene/move <id>)] - Relocate a scene to your current location\, including virtual room locations.)]%R%R[ansi(hc,Participant Commands)]%R[align(5 [sub(u(width,%#),6)],,[ansi(h,+scene/join \[<id>\])] - Joins a scene. Your poses will then be recorded. ID is unneeded if the scene just began in your current location.%R[ansi(h,+scene/leave)] - Stops your poses from being logged.%R[ansi(h,+scene/undo)] - Marks your last post to be ignored by the logger so it won't make it to the wiki. Used to fix poses made in error\, typos\, etc.%R[ansi(h,+scene/recall <id>=<# of lines>)] - Displays previous recorded poses from a scene.%R[ansi(h,+scene/spoof <altname>)] - Record poses as one of your alts. The character must be on your same account and must be setup for scenesys. This will NOT respect hidden alts settings and will NOT be mirrored properly in +pot which will still see you as you. All recorded poses will be as the given alt. use this command with no arguments to clear spoof settings.%R[ansi(h,+observer)] - Marks you as 'just watching' whatever scene's in the room to avoid confusion. Use it again to toggle off. It also clears when you +scene/join.%R%RTo be recorded\, you must be joined to a scene and A\) Your pose must be in the location the scene is set to\, B\) Your pose must be at least ten words long. C\) The scene must be not be paused or finished.)]%R%R[ansi(hc,Listing Commands)]%R[align(5 [sub(u(width,%#),6)],,[ansi(h,+scene)] - Displays all scenes you are currently participating in or running that aren't finished.%R[ansi(h,+scene/old)] - Show all of the finished scenes you've been in or run.%R[ansi(h,+scene <id>)] - Show details of a particular scene.%R[ansi(h,+scene/who \[<id>\])] - Quick listing of who has this scene as their active scene.)]
39HLP`+SCHEDULE [#3]: SceneSys is a scene scheduling, tracking, and logging tool that works alongside [mudname()]'s Wiki. The original version was designed by Mercutio @ M*U*S*H and some of his code remains - credits are due.%R[ansi(hc,See Also:)] [u(pueblize,+help +scene)], [u(pueblize,help convtime())]%R[ansi(hc,Aliases:)] +schedule%R[ansi(hc,NOTE:)] For scheduling to work you must set your Timezone via the +config command! +help +config%R%R[ansi(hc,Scheduling Commands)]%RThese commands are for anyone who wants to schedule and manage a scene.%R[align(5 [sub(u(width,%#),6)],,[ansi(h,+schedule/add <time>/<title>=<description>)] - Schedules a scene. <time> must be in a format accepted by the convtime() function\, and is from the perspective of your +tz setting. As an example\, now would be: [u(choosegame,timefmt($b $d $H:$M,,u(gettz,%#)),ptimefmt($b $d $H:$M,,u(gettz,%#)))]. It will default to the current year if none is provided.%R[ansi(h,+schedule/reschedule <id>=<time>)] - Changes a scene's scheduled time. <time> is same as adding.%R[ansi(h,+schedule/delete <id>)] - Remove a scheduled scene.%R[ansi(h,+schedule/title <id>=<text>)] - Changes a Scheduled scene's title.%R[ansi(h,+schedule/desc <id>=<text>)] - Changes a scheduled scene's description/short summary.%R[ansi(h,+schedule/plot <id>=<plot id>)] - Links a scene to a plot. Set plot to 0 to remove it from any plots.%R[ansi(h,+schedule/mail <id>=<message>)] - @mails all who have tagged a scene.%R[ansi(h,+schedule/invite <id>)] - Automatically sends out summon requests to taggers.%R%RAll changes made to the +schedule data will be reflected in the announcement post automatically. Deleting the scene will also delete the respective post.)]%R%R[ansi(hc,General Commands)]%R[align(5 [sub(u(width,%#),6)],,[ansi(h,+schedule)] - Views a list of scheduled scenes. This uses your +tz settings to show them in your own Timezone. A red * means you tagged the scene. If you own the scene\, the displayed number shows number of taggers.%R[ansi(h,+schedule <id>)] - View details about a scheduled Scene. If you're the owner\, it also shows players who've tagged your scene.%R[ansi(h,+schedule/tag <id>)] - 'Tag' a scene to show your interest.%R[ansi(h,+schedule/untag <id>)] - Remove your tag from a scene.)]
40HLP`+SUMMARY [#3]: Usage: +summary <message>%R%RDisplays <message> in highlights along with your name and a note that it's a summary. This is to summarize long poses for use by both your fellow players as well as your game master (if the scene has a game master), in order to better help have an idea of what's going on. It's use in large scenes is STRONGLY encouraged. It's also used to keep track of who's posed in a given pose round, if a scene is using pose rounds.%R%RNote that <message> is meant to be short and very to the point. It shouldn't be more than two or three lines. The command will refuse to display messages that are over a certain limit.
41INC [#3`]:
42INC`CHECKTIME [#3]: @check strlen(%0)=@attach %!/INC`MSG=You didn't enter a date!;@check gt(u(setr,time,convtime(%0,u(gettz,%#))),0)=@attach %!/INC`MSG=The entered date was not recognized. Did you typo? Dates should be in abbreviated 24-hour <month> <day> <hour>:<minute> format using YOUR timezone (@tz)\, such as Jun 26 7:00 or Oct 31 13:00.;@select/inline t(%1)=0,{@check gt(%q<time>,secs())=@attach %!/INC`MSG=That would be in the past!}
43INC`CLEANUPSCENE [#3]: @dolist/inline u(choosegame,lsearch(all,type,player,elock,D`SCENE`ACTIVE:%0),search(TYPE=PLAYERS,EVAL=\[eq(get(##/D`SCENE`ACTIVE),%0)\]))=@attach %!/WIPE=##,D`SCENE`ACTIVE
44INC`FOOTER [#3]: @check u(isic,objid(owner(%#)));th u(setq,poser,End of [ansi(hw,u(moniker,objid(owner(%#))))]'s pose[if(u(setr,spoof,get(%#/D`SCENE`SPOOF)),%B\(as [u(moniker,%q<spoof>)]\))]%b);@dolist/inline %q<footrecp>={@select/inline t(u(player_config,##,IC,BORDERS))=1,{@pemit ##=u(subheader,%q<logheader>%q<poser>,##)}}
45INC`HEADER [#3]: @check u(isic,objid(owner(%#)));th u(setq,poser,ansi(hw,u(moniker,%:)) has posed[if(u(setr,spoof,get(%#/D`SCENE`SPOOF)),%B\(as [u(moniker,%q<spoof>)]\))]%b);th u(setq,logheader,switch(1,not(words(%q<sceneactive>)),,cand(words(%q<sceneactive>),not(%q<logged>)),%[[ansi(hr,NO LOG: [u(itemize,%q<sceneactive>,%b,and,\,)])]%]%B,t(match(%q<sceneactive>,%q<logged>)),%[[ansi(hg,LOG: %0)]%]%B,));@dolist/inline u(setr,footrecp,u(filter,poseheader,%q<custrecp>,%b,%b,%0,%1))={@select/inline t(u(player_config,##,IC,BORDERS))=1,{@pemit ##=u(header,%q<logheader>%q<poser>,##)},{@pemit ##=u(center,%q<logheader>%q<poser>,u(width,##),%B)}}
46INC`MESSAGE [#3]: @attach %!/INC`MSG`ROOM=%1,setunion(setunion(lockfilter(D`SCENE`ACTIVE:%0,u(mysql,get`objidsinscene,%0)),%:),iter(uldefault(%l/D`CUSTRECP,lcon(%l),%#),objid(%i0)))
47INC`MSGSCENE [#3]: @attach %!/INC`MSG`ROOM=%1,setunion(setunion(lockfilter(D`SCENE`ACTIVE:%0,setunion(%:,u(mysql,get`objidsinscene,%0))),%:),iter(uldefault(%l/D`CUSTRECP,lcon(%l),%#),objid(%i0)))
48INC`OBSERVER [#3`]:
49INC`OBSERVER`MAIN [#3]: th u(setq,new,not(get(%#/D`OBSERVER)));@attach %!/INC`MSG`ROOM=%n is [if(%q<new>,now,no longer)] an observer to the event.;&D`OBSERVER %#=%q<new>
50INC`OWNCHECK [#3]: @check cor(u(isadmin,%#),eq(u(setr,ownid,u(mysql,get`ownerid,%0)),%1),if(%2,eq(u(mysql,get`plotownerid,%2),%1)))=@attach %!/INC`MSG=Permission denied.
51INC`OWNSCHED [#3]: @check cor(u(isadmin,%#),eq(u(mysql,get`schedownerid,%0),%1),if(%2,eq(u(mysql,get`plotrunner,%2),%0)))=@attach %!/INC`MSG=Permission denied.
52INC`PARTNERS [#3`]:
53INC`PARTNERS`GETSLOT [#3]: @attach %!/INC`VALID`POSINT=%0,Slot ID;@stop gt(%q<value>,15)=@attach %!/INC`MSG=ERROR: Nothing greater than 15 please.;@select/inline u(setr,pair_id,u(mysql,GET`PAIRID,%q<scene>,%q<value>))=>0,{@@ Woo! We're good.},{@attach %!/INC`DOSQL=INSERT`PAIRID,%q<scene>,%q<value>;th u(setq,pair_id,u(mysql,GET`PAIRID,%q<scene>,%q<value>))}
54INC`PARTNERS`JOIN [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=get(%#/D`SCENE`ACTIVE);@check eq(u(mysql,get`scenestate,%q<scene>),0)=@attach %!/INC`MSG=That scene is not Active!;@attach %!/INC`PARTNERS`GETSLOT=%0;@stop u(mysql,CHECK`PAIRING,%q<pair_id>,%q<pid>)=@attach %!/INC`MSG=[ansi(hr,ERROR:)] You are already joined to that pairing!;@attach %!/INC`DOSQL=ADD`PAIRING,%q<pair_id>,%q<pid>;@attach %!/INC`MSGSCENE=%q<scene>,{%n has joined Scene %q<scene>'s [u(numth,%q<value>)] pairing.}
55INC`PARTNERS`LEAVE [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=get(%#/D`SCENE`ACTIVE);@check eq(u(mysql,get`scenestate,%q<scene>),0)=@attach %!/INC`MSG=That scene is not Active!;@attach %!/INC`PARTNERS`GETSLOT=%0;@check u(setr,partner_id,u(mysql,CHECK`PAIRING,%q<pair_id>,%q<pid>))=@attach %!/INC`MSG=[ansi(hr,ERROR:)] You are not joined to that pairing!;@attach %!/INC`DOSQL=DEL`PAIRING,%q<partner_id>;@attach %!/INC`MSGSCENE=%q<scene>,{%n has left Scene %q<scene>'s [u(numth,%q<value>)] pairing.}
56INC`PARTNERS`MAIN [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=get(%#/D`SCENE`ACTIVE);@pemit %#=u(header,Matchups for Scene: %q<scene>);@pemit %#=ansi(u(color,%#,SCENE,COLUMN_NAMES),align(4 [sub(u(width,%#),6)],Pair,Participants));@pemit %#=u(separator);@dolist/inline/nobreak/delimit | [u(mysql2,GET`PAIRINGS,%q<scene>)]={@check words(u(setr,partic,u(mysql,GET`PARTICIPANTS,elements(##,1,^))));@pemit %#=align(4 [sub(u(width,%#),6)],elements(##,2,^),u(itemize,iter(u(sortname,%q<partic>),u(moniker,%i0),%b,|),|,and,\,))};@pemit %#=u(subheader)
57INC`PLOT [#3`]:
58INC`PLOT`ADD [#3]: @attach %!/INC`CHECKPC=before(%0,/),1;@check gt(u(setr,pid,u(mysql,get`playerid,%q<t1objid>)),0)=@attach %!/INC`MSG=%q<t1name> is not setup for SceneSys!;@check strlen(after(%0,/))=@attach %!/INC`MSG=The Plot needs a title!;@check strlen(%1)=@attach %!/INC`MSG=The Plot needs a description!;@attach %!/INC`DOSQL=NEW`PLOT,%q<pid>,after(%0,/),%1;th u(setq,plot,u(mysql,get`newplot,%q<pid>));@attach %!/INC`MSG=Plot added!
59INC`PLOT`ALL [#3]: @attach %!/INC`PLOT`LIST=%0,1
60INC`PLOT`DELETE [#3]: @attach %!/INC`VALPLOT=%0;@attach %!/INC`VERIFY={ansi(hr,WARNING:) This will DELETE Plot %q<plot>. Are you SURE? enter the same command again within ten seconds to verify!},DELETE PLOT %q<plot>;@attach %!/INC`DOSQL=DELETE`PLOT,%q<plot>;@attach %!/INC`MSG=Plot deleted!
61INC`PLOT`DESC [#3]: @attach %!/INC`VALPLOT=%0;@check strlen(%1)=@attach %!/INC`MSG=The new description field is empty!;@attach %!/INC`DOSQL=SET`PLOTDESC,%1,%q<plot>;@attach %!/INC`MSG=The Plot description was changed.
62INC`PLOT`DETAILS [#3]: @attach %!/INC`VALPLOT=%0;@pemit %#=u(HEADER,Plot ID %q<plot>: [u(mysql,get`plottitle,%q<plot>)]);@pemit %#=ansi(h,Runner:) [u(mysql,get`plotrunnername,%q<plot>)]%R[ansi(h,Schedule:)] [u(fancytime,u(mysql,get`plotstart,%q<plot>),%#)] to [u(fancytime,u(mysql,get`plotend,%q<plot>),%#)]%R[ansi(h,Type:)] [u(mysql,get`plottype,%q<plot>)]%R[ansi(h,Status:)] [u(mysql,get`plotstatus,%q<plot>)]%R[u(mysql,get`plotdesc,%q<plot>)];@pemit %#=u(HEADER)
63INC`PLOT`END [#3]: @attach %!/INC`VALPLOT=%0;@attach %!/INC`CHECKTIME=%1,1;@attach %!/INC`DOSQL=SET`PLOTEND,%q<time>,%q<plot>;@attach %!/INC`MSG=The plot's End date was set to [u(fancytime,%q<time>,%#)]
64INC`PLOT`LIST [#3]: @pemit %#=u(HEADER,if(%1,All,Current) Plots);@pemit %#=align(4 25 20 20 6,ID,Title,Runner,Schedule,Type);th u(setq,target,%#);@select/inline %va=PennMUSH,{th mapsql(FUN`FORMATPLOT,u(SQL`FORMAT,if(%1,get`allplots,get`runningplots)))},RhostMUSH,{@dolist/inline/delimit | [u(mysql2,if(%1,get`allplots,get`runningplots))]={th u(FUN`FORMATPLOT,,elements(%d0,1,^),elements(%d0,2,^),elements(%d0,3,^),elements(%d0,4,^),elements(%d0,5,^),elements(%d0,6,^))}};@pemit %#=u(SUBHEADER)
65INC`PLOT`MAIN [#3]: @select/inline gt(strlen(%0),0)=1,{@attach %!/INC`PLOT`DETAILS},0,{@attach %!/INC`PLOT`LIST}
66INC`PLOT`RUNNER [#3]: @attach %!/INC`VALPLOT=%0;@attach %!/INC`CHECKPC=%1,1;@check gt(u(setr,pid,u(mysql,get`playerid,%q<t1objid>)),0)=@attach %!/INC`MSG=%q<t1name> is not setup for SceneSys!;@attach %!/INC`DOSQL=SET`PLOTRUNNER,%q<pid>,%q<plot>
67INC`PLOT`START [#3]: @attach %!/INC`VALPLOT=%0;@attach %!/INC`CHECKTIME=%1,1;@attach %!/INC`DOSQL=SET`PLOTSTART,%q<time>,%q<plot>;@attach %!/INC`MSG=The plot's Start date was set to [u(fancytime,%q<time>,%#)]
68INC`PLOT`STATUS [#3]: @attach %!/INC`VALPLOT=%0;@check strlen(%1)=@attach %!/INC`MSG=You must include a status! Your choices are Approved, Running, Paused, Finished, and Canceled.;@attach %!/INC`PARTIAL=%1,APPROVED|RUNNING|PAUSED|FINISHED|CANCELED,|,Status,Status;@attach %!/INC`DOSQL=SET`PLOTSTATUS,u(capnames,%q<status>),%q<plot>;@attach %!/INC`MSG=The Status was changed to [u(capnames,%q<status>)].
69INC`PLOT`TITLE [#3]: @attach %!/INC`VALPLOT=%0;@check strlen(%1)=@attach %!/INC`MSG=The new title field is empty!;@attach %!/INC`DOSQL=SET`PLOTTITLE,%1,%q<plot>;@attach %!/INC`MSG=The Plot title was changed.
70INC`PLOT`TYPE [#3]: @attach %!/INC`VALPLOT=%0;@check strlen(%1)=@attach %!/INC`MSG=You must include a status! Your choices are Minor, Major, and Global.;@attach %!/INC`PARTIAL=%1,MINOR|MAJOR|GLOBAL,|,Status,Status;@attach %!/INC`DOSQL=SET`PLOTTYPE,u(capnames,%q<status>),%q<plot>;@attach %!/INC`MSG=The Status was changed to [u(capnames,%q<status>)].
71INC`POSEERROR [#3]: @check words(%q<sceneactive>);@select/inline strmatch(%0,#-*)=1,{@attach %!/INC`MSG=ERROR: [rest(%0)]}
72INC`POT [#3`]:
73INC`POT`BRIEF [#3]: @check cand(u(isic,%#),not(get(%l/D`NOPOT)))=@attach %!/INC`MSG=ERROR: +pot is disabled in this location.;@select/inline u(strfirstof,%0,get(%#/D`POT`MAX))=0,{th u(setq,max,0)},>0,{th u(setq,max,%0)},{th u(setq,max,15)};@check words(u(setr,poses,if(%q<max>,revwords(elements(revwords(u(FUN`POT`POSES,%l,u(%l/D`CUSTLOC,%#))),lnum(1,%q<max>))),u(FUN`POT`POSES,%l,u(%l/D`CUSTLOC,%#)))))=@attach %!/INC`MSG=No active RP in the room!;@pemit %#=u(HEADER,RP Activity for [u(moniker,%l)]);@pemit %#=ansi(u(color,%#,POT,COLUMN_NAMES),align(20 4 4 [sub(u(width,%#),31)],Name,Pose,Idle,Summary));@pemit %#=u(separator);@dolist/inline %q<poses>=@pemit %#=align(20 4 4 [sub(u(width,%#),31)],u(pueblize,u(moniker,get(%l/##`BY)),+pot/last [name(get(%l/##`BY))]),ansi(u(ryg,round(mul(fdiv(bound(sub(secs(),get(%l/##`WHEN)),0,3600),3600),100),0)),u(smalltime,sub(secs(),get(%l/##`WHEN)))),switch(idle(get(%l/##`BY)),-1,ansi(hx,Off),ansi(u(ryg,round(mul(fdiv(bound(idle(get(%l/##`BY)),0,3600),3600),100),0)),u(smalltime,idle(get(%l/##`BY))))),get(%l/##`SUMMARY));@pemit %#=u(SUBHEADER)
74INC`POT`LAST [#3]: @check cand(u(isic,%#),not(get(%l/D`NOPOT)))=@attach %!/INC`MSG=ERROR: +pot is disabled in this location.;@attach %!/INC`CHECKPC=%0,1;@check strmatch(loc(%q<t1>),%l)=@attach %!/INC`MSG=%q<t1name> is not in the room!;@check strlen(u(setr,pose,u(FUN`POT`LASTPOSE,%l,u(%l/D`CUSTLOC,%#),%q<t1>)))=@attach %!/INC`MSG=%q<t1name> hasn't posed in this room.;@pemit %#=u(header,%q<t1name>'s Last Pose [u(smalltime,u(setr,ago,sub(secs(),get(%l/%q<pose>`WHEN))))] Ago);@pemit %#=u(FUN`FORMATPOSE,%#,%q<t1>,get(%l/%q<pose>`TYPE),u(trimlines,get(%l/%q<pose>)),IC,u(FUN`POT`POSERS,%l,u(%l/D`CUSTLOC,%#)));@pemit %#=u(subheader)
75INC`POT`LIST [#3]: @check cand(u(isic,%#),not(get(%l/D`NOPOT)))=@attach %!/INC`MSG=ERROR: +pot is disabled in this location.;@select/inline u(strfirstof,%0,get(%#/D`POT`MAX))=0,{th u(setq,max,0)},>0,{th u(setq,max,%0)},{th u(setq,max,15)};@check words(u(setr,poses,if(%q<max>,revwords(elements(revwords(u(FUN`POT`POSES,%l,u(%l/D`CUSTLOC,%#))),lnum(1,%q<max>))),u(FUN`POT`POSES,%l,u(%l/D`CUSTLOC,%#)))))=@attach %!/INC`MSG=No active RP in the room!;th u(setq,players,u(lplayers,%l));@pemit %#=u(header,Recent Poses);@dolist %q<poses>={@pemit %#=u(separator,u(moniker,get(%l/##`BY)) posed [ansi(c,trim(u(smalltime,sub(secs(),get(%l/##`WHEN)))))] Ago);@pemit %#=u(FUN`FORMATPOSE,%#,get(%l/##`BY),get(%l/##`TYPE),get(%l/##),u(lplayers,%l));@switch/inline #@=words(%q<poses>),{@pemit %#=u(subheader,End of Poses)}}
76INC`POT`MAIN [#3]: @check cand(u(isic,%#),not(get(%l/D`NOPOT)))=@attach %!/INC`MSG=ERROR: +pot is disabled in this location.;@switch/inline default(%#/D`POT`MODE,0)=0,{@attach %!/INC`POT`LIST},1,{@attach %!/INC`POT`BRIEF}
77INC`POT`MAX [#3]: @check u(valnum,%0)=@attach %!/INC`MSG=ERROR: You must enter a whole number greater than 0 for your maximum poses!;&D`POT`MAX %#=%0;@attach %!/INC`MSG=You will now see only the last %0 poses in +pot.
78INC`POT`MODE [#3]: &D`POT`MODE %#=u(setr,mode,not(get(%#/D`POT`MODE)));@attach %!/INC`MSG=+pot will now default to +pot/[if(%q<mode>,summary,list)]
79INC`POT`TOGGLE [#3]: @check cor(controls(%#,%l),u(isadmin,%#))=@attach %!/INC`MSG=ERROR: Permission denied.;@attach %!/INC`MSG`ROOM=Pot will [if(u(setr,mode,not(get(%l/D`NOPOT))),no longer,now)]%bfunction in this location.,lcon(%l);&D`NOPOT %l=%q<mode>
80INC`POTRECORD [#3]: @check cand(u(isic,%#),not(get(%l/D`NOPOT)));th u(attrib_set,%l,u(setr,potattr,D`POSES`[u(nextslot,%l,D`POSES)]),%1);&%q<potattr>`CUSTLOC %l=%2;&%q<potattr>`TYPE %l=switch(%0,@EMIT,|,SAY,",SEMIPOSE,;,POSE,:);&%q<potattr>`BY %l=owner(%#);&%q<potattr>`WHEN %l=secs();@switch/inline gt(u(setr,count,u(nattr,%l/D`POSES`*)),80)=1,{@dolist/inline elements(u(sortattr,u(lattr,%l/D`POSES`*)),lnum(1,sub(%q<count>,80)))=@attach %!/WIPE=%l,##}
81INC`RECPOSE [#3]: @select/inline isint(%1)=1,{@check u(setr,pid,u(mysql,get`playerid,objid(u(firstof,get(%0/D`SCENE`SPOOF),%0))));@attach %!/INC`DOSQL=SET`NEWPOSE,%q<pid>,%1,switch(%va,PennMUSH,%2,RhostMUSH,stripansi(%2))}
82INC`SCENE [#3`]:
83INC`SCENE`CHARID [#3]: @select/inline isint(%0)=1,{th u(setr`%va,found,u(mysql,GET`PLAYEROBJID,%0));@check isobjid(%q<found>)=@attach %!/INC`MSG=ERROR: No user for ID '%0'.;@attach %!/INC`MSG=The Character for Char_id %0 is: [u(moniker`%va,%q<found>)].},0,{@select/inline t(strlen(%0))=1,{@attach %!/INC`CHECKPC=%0,1},0,{@attach %!/INC`CHECKPC=%#,1};@check gt(u(setr,id,u(mysql,get`playerid,%q<t1objid>)),0)=@attach %!/INC`MSG=%q<t1name> does not have a Char_id.;@attach %!/INC`MSG=The Unique Char_id for %q<t1name> is: [ansi(h,%q<id>)]}
84INC`SCENE`CONTINUE [#3]: @attach %!/INC`SCENE`MOVE;@attach %!/INC`DOSQL=SET`SCENESTATE,0,%q<scene>;@attach %!/INC`MESSAGE=%q<scene>,[u(moniker,%#)] has continued Scene %q<scene>! It will now record new poses.;@attach %!/INC`SCENE`JOIN=%q<scene>
85INC`SCENE`CREATE [#3]: @check u(isapproved,%#)=@attach %!/INC`MSG=You are not approved!;@check u(isic,%#)=@attach %!/INC`MSG=ERROR: This location is not IC!;th u(setq,title,%0[if(strlen(%1),=%1)]);@attach %!/INC`USERCHECK=%:;@attach %!/INC`DOSQL=INIT`SCENE,%q<pid>,%q<title>,objid(%l),name(%l),uldefault(%l/D`CUSTLOC,%l,%#);@check gt(u(setr,scene,u(mysql,get`newsceneid,%q<pid>)),0)=@attach %!/INC`MSG=ERROR: Scene could not be created.;@attach %!/INC`MSG`ROOM=created a new scene here: Scene %q<scene>[if(strlen(%q<title>),%b-%b%q<title>)]. Use [u(pueblize,+scene/join %q<scene>,+scene/join %q<scene>)] to join it!,uldefault(%l/D`CUSTRECP,lcon(%l),%#);@select/inline t(%3)=1,{@attach %!/INC`MSG`CHAN=[ansi(h,u(moniker,%#))] created a Scene at [if(match(u(u(cobj,grid)/FUN`LISTIC),%l),u(pueblize,%l - [name(%l)],+port %l),name(%l))]: Scene %q<scene>[if(strlen(%q<title>),%b-%b%q<title>)],u(game_config,channels,roleplay),,1,,1};@attach %!/INC`SCENE`JOIN=%q<scene>
86INC`SCENE`DELETE [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=%0;@check u(isadmin,%#)=@attach %!/INC`MSG=Permission denied.;@attach %!/INC`VERIFY={ansi(hr,WARNING:) This will delete Scene %q<scene>. All poses will be lost. This will not affect the Wiki's copy. Are you sure? Enter the same command to verify.},DELETE SCENE %q<scene>;@attach %!/INC`MESSAGE=%q<scene>,{[u(moniker,%#)] has deleted Scene %q<scene>.};@attach %!/INC`DOSQL=DELETE`SCENE,%q<scene>;
87INC`SCENE`DESC [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=%0;@attach %!/INC`OWNCHECK=%q<scene>,%q<pid>;@check strlen(%1)=@attach %!/INC`MSG=ERROR: Description field empty!;@attach %!/INC`DOSQL=SET`SCENEDESC,%1,%q<scene>;@attach %!/INC`MSGSCENE=%q<scene>,[u(moniker,%#)] changed Scene %q<scene>'s Description to: %1
88INC`SCENE`DETAILS [#3]: @attach %!/INC`VALSCENE=%0;th u(setq,ownerid,u(mysql,get`ownerid,%q<scene>));@pemit %#=u(HEADER,Scene %q<scene>[if(strlen(u(setr,title,u(mysql,get`scenetitle,%q<scene>))),:%B%q<title>)]);@pemit %#=ansi(h,Started:) [u(fancytime,u(mysql,get`scenedate,%q<scene>),%#)]%R[ansi(h,Description:)] [u(mysql,get`scenedesc,%q<scene>)]%R[ansi(h,Owner:)]%B[u(mysql,get`playername,%q<ownerid>)]%R[if(strlen(u(setr,tp,u(mysql,get`tinyplot,%q<scene>))),ansi(h,Tinyplot:) %q<tp>%R)][ansi(h,Status:)] [switch(u(mysql,get`scenestate,%q<scene>),0,Active,1,Paused,2,Unfinished,3,Finished)];@select/inline isobjid(u(setr,loc,u(mysql,get`location,%q<scene>)))=1,{@pemit %#=[ansi(h,Location:)]%B[num(%q<loc>)] - [u(moniker,%q<loc>)]};@pemit %#=u(SEPARATOR,Players);@pemit %#=ansi(u(color,%#,SCENE,COLUMN_NAMES),align(30 30 15,ansi(h,Name),ansi(h,Status),ansi(h,Poses)));@pemit %#=u(SEPARATOR);@dolist/inline/delimit | [u(mysql2,GET`PLAYERCOUNT,%q<scene>)]={@pemit %#=align(30 30 15,elements(##,2,^),if(eq(%q<scene>,get(elements(##,1,^)/D`SCENE`ACTIVE)),Active,Inactive),u(mysql,get`playerposecount,%q<scene>,elements(##,3,^)))};@select/inline gt(u(setr,total,u(mysql,get`sceneposecount,%q<scene>)),0)=1,{@pemit %#=align(30 >30 15,,Total:,%q<total>)};@pemit %#=u(SEPARATOR);@pemit %#=ansi(h,URL:) [u(weblink,http://[u(game_config,SCENESYS,URL)][u(game_config,SCENESYS,PATH)]%q<scene>)];@pemit %#=u(SUBHEADER)
89INC`SCENE`FINISH [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=u(strfirstof,%0,get(%#/D`SCENE`ACTIVE));@attach %!/INC`OWNCHECK=%q<scene>,%q<pid>;@attach %!/INC`DOSQL=SET`SCENESTATE,3,%q<scene>;@attach %!/INC`DOSQL=SET`SCENEFINISH,%q<scene>;@attach %!/INC`MESSAGE=%q<scene>,[u(moniker,%#)] has marked Scene %q<scene> Finished!;@attach %!/INC`MSG=Your scene is available at: [u(weblink,http://[u(game_config,SCENESYS,URL)][u(game_config,SCENESYS,PATH)]%q<scene>)];@attach %!/INC`CLEANUPSCENE=%q<scene>
90INC`SCENE`JOIN [#3]: @check approved(%#)=@attach %!/INC`MSG=You are not approved!;@attach %!/INC`USERCHECK=%:;@select/inline gt(strlen(u(setr,scene,%0)),0)=1,{@select/inline u(valnum,%q<scene>)=0,{@attach %!/INC`CHECKPC=%q<scene>,2;@check u(valnum,u(setr,scene,get(%q<t2>/D`SCENE`ACTIVE)))=@attach %!/INC`MSG=%q<t2name> is not joined to a scene.},1,{@check u(setr,scene,u(mysql,get`scenewhereidandstate,%q<scene>,0))=@attach %!/INC`MSG=Scene '%0' does not exist or is not Active.}},0,{@check gt(u(setr,scene,u(mysql,GET`SCENEHERE,objid(%l),uldefault(%l/D`CUSTLOC,%l,%#))),0)=@attach %!/INC`MSG=There are no recent scenes here to join!};&D`SCENE`ACTIVE %#=%q<scene>;@attach %!/INC`MESSAGE=%q<scene>,u(moniker,%#) joined Scene %q<scene>!;@select/inline t(get(%#/D`SCENE`SPOOF))=1,{@attach %!/INC`MSG=ALERT: You are currently set to Spoof as: [u(moniker,get(%#/D`SCENE`SPOOF))].};@wipe %#/D`OBSERVER
91INC`SCENE`LEAVE [#3]: @check u(setr,scene,get(%#/D`SCENE`ACTIVE))=@attach %!/INC`MSG=You are not in any scenes!;@attach %!/INC`MESSAGE=%q<scene>,u(moniker,%#) has left Scene %q<scene>;&D`SCENE`ACTIVE %#
92INC`SCENE`LOUDCREATE [#3]: @attach %!/INC`SCENE`CREATE=%0,%1,%2,1
93INC`SCENE`MAIN [#3]: @select/inline t(strlen(%0))[isint(%0)]=0*,{@attach %!/INC`SCENE`PLAYERLIST=%:,%1,%2,%3},11,{@attach %!/INC`SCENE`DETAILS=%0,%1,%2,%3},10,{@attach %!/INC`SCENE`PLAYERLIST=%0,%1,%2,%3}
94INC`SCENE`MERGE [#3]: @check u(iswizard,%#)=@attach %!/INC`MSG=Sorry, wizard only.;@attach %!/INC`CHECKPC=%0,1;@check strlen(%1)=@attach %!/INC`MSG=No ID entered to merge to.;@check strlen(u(setr,oldobj,u(mysql,get`playerobjid,%1)))=@attach %!/INC`MSG=That ID does not exist.;@stop isobjid(%q<oldobj>)=@attach %!/INC`MSG=ID '%1' is currently assigned to %q<oldobj> - [name(%q<oldobj>)]. It cannot be merged with another.;@attach %!/INC`VERIFY={[ansi(h,WARNING:)] This will assign Char_Id %1 to %q<t1name>. All poses, scenes, plots, and other SceneSys data attached to their Current ID, if they have one, shall be converted to the old ID. This cannot be undone. Continue? Enter the same command again to verify.},MERGE %q<oldobj> %1;@select/inline gt(u(setr,pid,u(mysql,get`playerid,%q<t1objid>)),0)=1,{@attach %!/INC`DOSQL=SET`ALLPOSES,%1,%q<pid>;@attach %!/INC`DOSQL=SET`ALLSCENES,%1,%q<pid>;@attach %!/INC`DOSQL=SET`ALLSCHEDULE,%1,%q<pid>;@attach %!/INC`DOSQL=SET`ALLPLOTS,%1,%q<pid>;@attach %!/INC`DOSQL=DELETE`PLAYERID,%q<pid>};@attach %!/INC`DOSQL=SET`PLAYERID,%q<t1objid>,%q<t1name>,%1;@attach %!/INC`MSG=The merge was completed.
95INC`SCENE`MOVE [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=%0;@attach %!/INC`OWNCHECK=%q<scene>,%q<pid>;@check u(isic,%l)=@attach %!/INC`MSG=ERROR: This location is not IC!;@attach %!/INC`DOSQL=SET`RELOCATE,objid(%l),name(%l),uldefault(%l/D`CUSTLOC,%l,%#),%q<scene>;@attach %!/INC`MESSAGE=%q<scene>,{[u(moniker,%#)] has changed the scene's location to: %l - [name(%l)]}
96INC`SCENE`NOTINYPLOT [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=%0;@attach %!/INC`OWNCHECK=%q<scene>,%q<pid>;@check u(setr,plot,u(mysql,get`sceneplot,%q<scene>))=@attach %!/INC`MSG=That scene is not linked to any Tinyplots!;@attach %!/INC`DOSQL=SET`NOSCENEPLOT,%q<scene>;
97INC`SCENE`OLD [#3]: @attach %!/INC`SCENE`MAIN=%0,%1,%2,4
98INC`SCENE`PAUSE [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=u(strfirstof,%0,get(%#/D`SCENE`ACTIVE));@attach %!/INC`OWNCHECK=%q<scene>,%q<pid>;@attach %!/INC`DOSQL=SET`SCENESTATE,1,%q<scene>;@attach %!/INC`MESSAGE=%q<scene>,[u(moniker,%#)] has marked Scene %q<scene> Paused!;@attach %!/INC`CLEANUPSCENE=%q<scene>
99INC`SCENE`PLAYERLIST [#3]: @attach %!/INC`CHECKPC=u(strfirstof,%0,%#),1;@attach %!/INC`USERCHECK=%q<t1objid>;@pemit %#=u(HEADER,if(strmatch(%q<t1objid>,%:),Your,%q<t1name>'s) [if(%3,Finished,Incomplete)] Scenes);th u(setq,target,%#);@pemit %#=ansi(u(color,%#,SCENESYS,COLUMN_NAMES),align(4 41 20 10,ID,Title,Owner,if(%3,Date,Status)));@select/inline %va=PennMUSH,{@dolist/inline u(mysql,GET`SCENEMINE%3,%q<pid>,%q<pid>)={th mapsql(FUN`SCENEMINE%3,u(SQL`FORMAT,GET`SCENEMINE3%3,##))};@pemit %#=u(SUBHEADER)},RhostMUSH,{@dolist/inline u(mysql,GET`SCENEMINE%3,%q<pid>,%q<pid>)={th u(setq,det,u(mysql2,GET`SCENEMINE3%3,##));@pemit %#=u(FUN`SCENEMINE%3,,elements(%q<det>,1,^),elements(%q<det>,2,^),elements(%q<det>,3,^),elements(%q<det>,4,^))}};@pemit %#=u(SUBHEADER)
100INC`SCENE`PLOT [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=%0;@check strlen(%1)=@attach %!/INC`MSG=No plot entered to link!;@check cand(isint(%1),gte(%1,0))=@attach %!/INC`MSG=Plots must be addressed by IDs. Use 0 to set No Plot.;@select/inline gte(%1,0)=1,{@attach %!/INC`VALPLOT=%1};@attach %!/INC`OWNCHECK=%q<scene>,%q<pid>,%1;@attach %!/INC`DOSQL=SET`SCENEPLOT,%1,%q<scene>;@attach %!/INC`MSGSCENE=%q<scene>,[u(moniker,%#)] changed Scene %q<scene>'s Plot to: %1 - [u(mysql,get`plottitle,%1)]
101INC`SCENE`RECALL [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=u(strfirstof,%0,get(%#/D`SCENE`ACTIVE));@select/inline gt(strlen(%1),0)=1,{@check u(valnum,%1)=@attach %!/INC`MSG=The number of poses must be a whole, positive number.;th u(setq,poses,%1)},0,{th u(setq,poses,15)};th u(setq,dbs,u(lwhoid));th [u(setq`%va,quote,ansi(u(player_config`%va,%#,IC,QUOTES),"))][u(setq`%va,speechcol,u(player_config`%va,%#,IC,SPEECH))];@pemit %#=u(HEADER,Scene %q<scene>[if(strlen(u(setr,title,u(mysql,get`scenetitle,%q<scene>))),:%B%q<title>)]);th u(setq,target,%#);@select/inline %va=PennMUSH,{th mapsql(FUN`RECALL,u(SQL`FORMAT,GET`SCENERECALL,%q<scene>,%q<poses>));@pemit %#=u(SUBHEADER)},RhostMUSH,{@dolist/inline u(mysql,GET`RECALLIDS,%q<scene>,%q<poses>)={th u(setq,det,u(mysql2,GET`RECALLDET,%d0));th u(FUN`RECALL,,elements(%q<det>,1,^),,u(mysql,GET`RECALLPOSE,%d0),elements(%q<det>,2,^))};@pemit %#=u(SUBHEADER)}
102INC`SCENE`REDO [#3]: @attach %!/INC`USERCHECK=u(firstof,get(%#/D`SCENE`SPOOF),%:);@attach %!/INC`VALSCENE=get(%#/D`SCENE`ACTIVE);@check eq(u(mysql,get`scenestate,%q<scene>),0)=@attach %!/INC`MSG=That scene is not Active!;@check gt(u(setr,undo,u(mysql,get`lastpose,%q<scene>,%q<pid>,1)),0)=@attach %!/INC`MSG=You have no recent poses that can be restored.;@attach %!/INC`DOSQL=SET`IGNORE,0,%q<undo>;@attach %!/INC`MSGSCENE=%q<scene>,[u(moniker,%#)] restored an earlier Ignored pose: %q<undo>
103INC`SCENE`SETUP [#3]: @select/inline cand(u(isadmin,%#),strlen(%0))=1,{@attach %!/INC`CHECKPC=%0,1},0,{@attach %!/INC`CHECKPC=%#,1};@select/inline gt(u(setr,id,u(mysql,get`playerid,%q<t1objid>)),0)=1,{@attach %!/INC`DOSQL=RENAME`PLAYER,%q<t1name>,%q<t1objid>},0,{@attach %!/INC`DOSQL=INIT`PLAYER,%q<t1objid>,%q<t1name>};@attach %!/INC`MSG=[if(strmatch(%:,%q<t1objid>),You set yourself up for SceneSys.,You have set %q<t1name> up for SceneSys.)] The unique Char_id is: [ansi(h,u(mysql,get`playerid,%q<t1objid>))]
104INC`SCENE`SPOOF [#3]: @select/inline strlen(%0)=>0,{@check u(setr,accid,u(accid,objid(owner(%#))))=@attach %!/INC`MSG=You don't have an account!;@check isdbref(u(setr,spoof,u(namegrab,u(alts,owner(%#)),%0)))=@attach %!/INC`MSG=ERROR: '%0' is not one of your alts.;&D`SCENE`SPOOF %#=%q<spoof>;@attach %!/INC`MSG=Your poses will now appear to be from [name(%q<spoof>)].},{&D`SCENE`SPOOF %#;@attach %!/INC`MSG=Your poses will appear to be from yourself.}
105INC`SCENE`TINYPLOT [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=%0;@attach %!/INC`OWNCHECK=%q<scene>,%q<pid>;@attach %!/INC`VALPLOT=%1;@attach %!/INC`DOSQL=SET`SCENEPLOT,%q<plot>,%q<scene>;@attach %!/INC`MSGSCENE=%q<scene>,{[u(moniker,%#)] linked Scene %q<scene> to Tinyplot %q<plot>}
106INC`SCENE`TITLE [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCENE=%0;@attach %!/INC`OWNCHECK=%q<scene>,%q<pid>;@check strlen(%1)=@attach %!/INC`MSG=ERROR: Title field empty!;@attach %!/INC`DOSQL=SET`SCENETITLE,%1,%q<scene>;@attach %!/INC`MSGSCENE=%q<scene>,[u(moniker,%#)] changed Scene %q<scene>'s Title to: %1
107INC`SCENE`UNDO [#3]: @attach %!/INC`USERCHECK=u(firstof,get(%#/D`SCENE`SPOOF),%:);@attach %!/INC`VALSCENE=get(%#/D`SCENE`ACTIVE);@check eq(u(mysql,get`scenestate,%q<scene>),0)=@attach %!/INC`MSG=That scene is not Active!;@check gt(u(setr,undo,u(mysql,get`lastpose,%q<scene>,%q<pid>,0)),0)=@attach %!/INC`MSG=You have no recent poses that can be undone.;@attach %!/INC`DOSQL=SET`IGNORE,1,%q<undo>;@attach %!/INC`MSGSCENE=%q<scene>,[u(moniker,%#)] undid %p last pose: %q<undo>
108INC`SCENE`WHO [#3]: @attach %!/INC`VALSCENE=u(strfirstof,%0,get(%#/D`SCENE`ACTIVE));@attach %!/INC`MSG=Joined participants for Scene %q<scene>: [u(strfirstof,u(itemize,iter(lsearch(all,type,player,elock,D`SCENE`ACTIVE:%q<scene>),name(%i0)[if(strmatch(%l,loc(%i0)),,%b\(not present\))],%b,|),|,and,\,),Nobody!)]
109INC`SCENES [#3`]:
110INC`SCENES`ADD [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`CHECKTIME=trim(before(%0,/));@check strlen(u(setr,title,trim(after(%0,/))))=@attach %!/INC`MSG=You need to give the scene a title!;@stop u(charsearch,%q<title>,/ %r %t)=@attach %!/INC`MSG=The following characters are not permitted in titles: /, \%r, \%t.;@check strlen(u(setr,desc,%1))=@attach %!/INC`MSG=Your scene needs a description!;@attach %!/INC`DOSQL=INSERT`NEWSCHEDULE,%q<pid>,u(trimtabs,u(trimlines,%q<title>)),u(trimtabs,u(trimlines,%q<desc>)),%q<time>;th u(setq,schedid,u(mysql,get`newschedule,%q<pid>));@trigger u(cobj,bbs)/INC`POST=BB,u(game_config,SCENESYS,BOARD),#%q<schedid>: %q<title>,u(FUN`FORMATPOST,%q<title>,[u(moniker,%#)],u(fancytime,%q<time>,,UTC),%q<desc>),%#;@attach %!/INC`MSG=You schedule a new scene- Scenes %q<schedid>: %q<title> on [u(fancytime,%q<time>,%#)];@wait 1={@attach %!/INC`DOSQL=SET`SCHEDULEBB,u(setr,postid,elements(first(u(wildgrepi,u(game_config,SCENESYS,BOARD),~`*`HDR,#%q<schedid>:*)),2,`)),%q<schedid>}
111INC`SCENES`DELETE [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCHED=%0;@attach %!/INC`OWNSCHED=%q<schedule>,%q<pid>;@attach %!/INC`VERIFY={[ansi(hr,WARNING:)] This will remove Schedule Scene %q<schedule>. Are you sure? Enter the same command in ten seconds to verify!},DELETE %q<schedule>;@attach %!/INC`DOSQL=DEL`SCHEDULE,%q<schedule>;@attach %!/INC`MSG=The scheduled scene was deleted!;@select/inline strlen(%q<post>)=>0,{@attach %!/WIPE=%q<bb>,~`%q<post>}
112INC`SCENES`DESC [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCHED=%0;@attach %!/INC`OWNSCHED=%q<schedule>,%q<pid>;@check strlen(%1)=@attach %!/INC`MSG=What will you replace the text with?;@attach %!/INC`DOSQL=SET`SCHEDULEDESC,trim(trim(%1,%r),%t),%q<schedule>;th u(setr,desc,u(mysql,get`scheduledata,%q<schedule>));&%q<post> %q<bb>=u(FUN`FORMATPOST,u(mysql,get`scheduletitle,%q<schedule>),[u(moniker,%#)],u(fancytime,u(mysql,get`scheduletime,%q<schedule>),u(scene)),%1);@attach %!/INC`MSG=The schedule description was modified!
113INC`SCENES`DETAILS [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCHED=%0;@pemit %#=u(HEADER,Scheduled ID %q<schedule>: [u(mysql,get`scheduletitle,%q<schedule>)]);@pemit %#=ansi(h,Owner:) [u(mysql,get`scheduleplayername,%q<schedule>)]%R[u(mysql,get`scheduledesc,%q<schedule>)];@pemit %#=u(SEPARATOR,Scheduled Time);@pemit %#=align(-38 -38,u(choosegame,timefmt(u(setr,fmt,$a $b $d $I:$M$p $Z),u(setr,time,u(mysql,get`scheduletime,%q<schedule>)),UTC),ptimefmt(u(setr,fmt,$a $b $d $I:$M$p $Z),u(setr,time,u(mysql,get`scheduletime,%q<schedule>)),UTC)),u(choosegame,timefmt(%q<fmt>,%q<time>,u(gettz,%#)),ptimefmt(%q<fmt>,%q<time>,u(gettz,%#))));@select/inline cand(words(u(setr,interest,u(mysql,get`interest,%q<schedule>))),cor(u(isadmin,%#),match(u(alts,%:),u(mysql,get`SCHEDOWNEROBJID,%q<schedule>))))=1,{@pemit %#=u(SEPARATOR,Interested Players);@pemit %#=u(table,iter(%q<interest>,u(moniker,%i0),%b,|),30,u(width,%#),|)};@pemit %#=u(SUBHEADER)
114INC`SCENES`INVITE [#3]: @attach %!/INC`USERCHECK=%:;@attach u(cobj,scene)/INC`VALSCHED=%0;@attach u(cobj,scene)/INC`OWNSCHED=%q<schedule>,%q<pid>;@check words(setr(invites,setr(tagged,u(filter,ISOBJID,u(mysql,get`taggedobj,%q<schedule>)))))=@attach %!/INC`MSG=ERROR: No valid recipients to invite.;@dolist/inline %q<invites>={@force %#=+summon ##}
115INC`SCENES`LIST [#3]: @attach %!/INC`USERCHECK=%:;@pemit %#=u(HEADER,if(%0,Your%b)Current Schedule - [u(choosegame,timefmt($Z,,u(gettz,%#)),ptimefmt($Z,,u(gettz,%#)))]);@dolist/inline if(%0,u(filter,SCENESMINE,u(mysql,GET`UPCOMING),%b,%b,u(alts,%:)),u(mysql,GET`UPCOMING))={th u(setq,time,u(mysql,get`scheduletime,##));@select/inline not(strmatch(%q<last>,u(setr,last,u(choosegame,timefmt($a $b $d $Y $Z,%q<time>,u(gettz,%#)),ptimefmt($a $b $d $Y $Z,%q<time>,u(gettz,%#))))))=1,{@pemit %#=u(HEADER,%q<last>)};@pemit %#=u(FUN`FORMATSCHEDULE2,%q<pid>,##,u(mysql,get`scheduletitle,##),u(mysql,get`scheduleplayername,##),%q<time>,u(mysql,get`schedownerid,##))};@pemit %#=u(SUBHEADER)
116INC`SCENES`MAIL [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCHED=%0;@attach %!/INC`OWNSCHED=%q<schedule>,%q<pid>;@check words(u(setr,mailto,u(filter,ISOBJID,setunion(u(mysql,get`taggedobj,%q<schedule>),setunion(u(mysql,get`schedownerobj,%q<schedule>),%:)))))=@attach %!/INC`MSG=No valid recipients to mail to.;@check strlen(%1)=@attach %!/INC`MSG=ERROR: No message text.;@force/inplace %#={@mail %q<mailto>=SCHEDULE: %q<schedule>/%1}
117INC`SCENES`MAIN [#3]: @select/inline gt(strlen(%0),0)=1,{@attach %!/INC`SCENES`DETAILS},0,{@attach %!/INC`SCENES`LIST}
118INC`SCENES`MINE [#3]: @attach %!/INC`SCENES`LIST=1
119INC`SCENES`PLOT [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCHED=%0;@check strlen(%1)=@attach %!/INC`MSG=No plot entered to link!;@check cand(isint(%1),gte(%1,0))=@attach %!/INC`MSG=Plots must be addressed by IDs. Use 0 to set No Plot.;@select/inline gte(%1,0)=1,{@attach %!/INC`VALPLOT=%1};@attach %!/INC`OWNSCHED=%q<schedule>,%q<pid>,%1;@attach %!/INC`DOSQL=SET`SCHEDULEPLOT,%1,%q<schedule>;@attach %!/INC`MSGSCENE=%q<scene>,[u(moniker,%#)] changed Schedule'd Scene %q<schedule>'s Plot to: %1 - [u(mysql,get`plottitle,%1)]
120INC`SCENES`RESCHEDULE [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCHED=%0;@attach %!/INC`OWNSCHED=%q<schedule>,%q<pid>;@attach %!/INC`CHECKTIME=%1;@attach %!/INC`DOSQL=SET`SCHEDULEDATE,%q<time>,%q<schedule>;&%q<post> %q<bb>=u(FUN`FORMATPOST,u(mysql,get`scheduletitle,%q<schedule>),[u(moniker,%#)],u(fancytime,u(mysql,get`scheduletime,%q<schedule>),u(scene)),u(mysql,get`scheduledesc,%q<schedule>));@attach %!/INC`MSG=The schedule date was modified!
121INC`SCENES`SUMMON [#3]: @check isdbref(u(cobj,grid))=@attach %!/INC`MSG=ERROR: Grid and Navigation System not installed. Cannot +summon.;@attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCHED=%0;@attach %!/INC`OWNSCHED=%q<schedule>,%q<pid>;@check words(u(setr,invites,u(filter,u(setr,tagged,u(filter,ISOBJID,u(mysql,get`taggedobj,%q<schedule>))),%b,%b,%l)))=@attach %!/INC`MSG=No valid recipients to invite or they are already here.;@dolist/inline %q<invites>={@force %#=+summon ##}
122INC`SCENES`TAG [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCHED=%0;@stop u(mysql,get`tagcheck,%q<schedule>,%q<pid>)=@attach %!/INC`MSG=You are already signed up for that scene.;@attach %!/INC`DOSQL=INSERT`NEWTAG,%q<pid>,%q<schedule>;@attach %!/INC`MSG=You have tagged Scheduled Scene %0!
123INC`SCENES`TITLE [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCHED=%0;@attach %!/INC`OWNSCHED=%q<schedule>,%q<pid>;@check strlen(%1)=@attach %!/INC`MSG=What will you replace the text with?;@stop u(charsearch,%1,%r %t)=@attach %!/INC`MSG=The following characters are not permitted in titles: \%r, \%t.;@attach %!/INC`DOSQL=SET`SCHEDULETITLE,u(setr,title,trim(trim(%1,%r),%t)),%q<schedule>;&%q<post> %q<bb>=u(FUN`FORMATPOST,%1,[u(moniker,%#)],u(fancytime,u(mysql,get`scheduletime,%q<schedule>),u(scene)),u(mysql,get`scheduledesc,%q<schedule>));&%q<post>`HDR %q<bb>=#%q<schedule>: %q<title>;@attach %!/INC`MSG=The schedule title was modified!
124INC`SCENES`UNTAG [#3]: @attach %!/INC`USERCHECK=%:;@attach %!/INC`VALSCHED=%0;@check u(mysql,get`tagcheck,%q<schedule>,%q<pid>)=@attach %!/INC`MSG=You are not signed up for that scene.;@attach %!/INC`DOSQL=DELETE`TAG,%q<pid>,%q<schedule>;@attach %!/INC`MSG=You have untagged Scheduled Scene %0!
125INC`SUMMARY [#3`]:
126INC`SUMMARY`MAIN [#3]: @stop gt(strlen(%2),1024)=@attach %!/INC`MSG=That summary is too long.;@select/inline %3=1,{@pemit %#=ansi(hx,>>> SILENT SUMMARY: [u(moniker,%#)] - %2)},{@pemit/list uldefault(%l/D`CUSTRECP,lcon(%l),%#)=ansi(h,>>> SUMMARY - [u(moniker,%#)] <<< - %2)};@select/inline strlen(u(setr,pose,u(FUN`POT`LASTPOSE,%l,u(%l/D`CUSTLOC,%#),owner(%#))))=>0,{&%q<pose>`SUMMARY %l=%2}
127INC`SUMMARY`SILENT [#3]: @attach %!/INC`SUMMARY`MAIN=%0,%1,%2,1
128INC`USERCHECK [#3]: @select/inline t(u(setr,pid,u(mysql,get`playerid,objid(owner(%0)))))=0,{@attach %!/INC`DOSQL=INIT`PLAYER,objid(owner(%0)),name(%0);@attach %!/INC`USERCHECK}
129INC`VALPLOT [#3]: @check strlen(%0)=@attach %!/INC`MSG=Plot ID field empty.;@check u(valnum,%0)=@attach %!/INC`MSG=Plots must be addressed by their IDs.;@check gt(u(setr,plot,u(mysql,get`plotcheck,%0)),0)=@attach %!/INC`MSG=Plot '%0' could not be found.
130INC`VALSCENE [#3]: @check strlen(%0)=@attach %!/INC`MSG=Scene ID field empty.;@check u(valnum,%0)=@attach %!/INC`MSG=Scenes must be addressed by their IDs.;@check gt(u(setr,scene,u(mysql,get`scenecheck,%0)),0)=@attach %!/INC`MSG=Scene '%0' could not be found.
131INC`VALSCHED [#3]: @check strlen(%0)=@attach %!/INC`MSG=Schedule ID field empty.;@check u(valnum,%0)=@attach %!/INC`MSG=Schedule scenes must be addressed by their IDs.;@check gt(u(setr,schedule,u(mysql,get`schedulecheck,%0)),0)=@attach %!/INC`MSG=Scheduled scene '%0' could not be found.;th u(setq,bb,u(game_config,SCENESYS,BOARD));th u(setq,post,u(mysql,get`postid,%q<schedule>))
132LOOP [#3`]:
133LOOP`CLEANPOT [#3`]: @dolist u(choosegame,lsearch(all,eval,\[nattr(##/D`POSES`*)\]),search(EVAL=\[u(nattr,##/D`POSES`*)\]))={@wait #@=@trigger %!/LOOP`CLEANPOT`DOCLEAN=##};@wait u(game_config,pot,interval)=@trigger %!/LOOP`CLEANPOT
134LOOP`CLEANPOT`DOCLEAN [#3]: @dolist/inline u(filter,TIMEDOUT,u(lattr,%0/D`POSES`*),%b,%b,u(game_config,POT,TIMEOUT),%0)={@attach %!/WIPE=%0,##}
135LOOP`IDLECHECK [#3]: @dolist u(MYSQL,SCENE`GETACTIVE)={@wait #@={@check u(mysql,scene`hasposes,##);@check lte(u(mysql,get`idlecheck,##),sub(secs(),mul(60,60,3)));@attach %!/INC`MSGSCENE=##,{Scene ## - '[u(mysql,get`scenetitle,##)]' has been automatically marked Unfinished for idleness. Use [u(pueblize,+scene/continue ##)] to resume it.;@attach %!/INC`CLEANUPSCENE=##};@attach %!/INC`DOSQL=SET`SCENESTATE,2,##}};@wait u(game_config,scenesys,idle)=@trigger %!/LOOP`IDLECHECK
136OBJECT [#3`]:
137OBJECT`DESTROY [#3`]: @dolist/inline u(lattr,%!/OBJECT`DESTROY`*)={@trigger %!/##=%0,%1,%2,%3,%4,%5,%6,%7,%8,%9}
138OBJECT`DESTROY`PURGESPOOF [#3]: @select/inline %2=PLAYER,{@dolist/inline u(choosegame,lsearch(all,elock,D`SCENE`SPOOF:%0),search(EVAL=\[strmatch(get(##/D`SCENE`SPOOF),%0)\]))=&D`SCENE`SPOOF %i0}
139OBJECT`RENAME [#3`]: @dolist/inline u(lattr,%!/OBJECT`RENAME`*)={@trigger %!/##=%0,%1,%2,%3,%4,%5,%6,%7,%8,%9}
140OBJECT`RENAME`CHARID [#3]: @select/inline type(%0)=PLAYER,{@check u(setr,pid,u(mysql,get`playerid,%0));th u(mysql,rename`player,%1,%0)}
141OVERRIDE [#3`]:
142OVERRIDE`IC [#3R]: $^(?s)(pose|semipose|say|@emit)(?\:/noeval)?(?\: +(.*))?$:@check strlen(%2)=@pemit %#=Huh? (Type "help" for help.);@check elock(%l/speech,%#)=@attach %!/INC`MSG=ERROR: Permission denied by local speech lock.;th u(setq,cansql,not(strmatch(sql(SELECT DATABASE()),#-*)));@select/inline %q<cansql>=1,{@attach %!/INC`USERCHECK=objid(owner(%#))};th u(setq,locid,objid(%l));th u(setq,custloc,uldefault(%l/D`CUSTLOC,%l,%#));@select/inline %q<cansql>=1,{th u(setq,sceneactive,u(mysql,get`activehere,%q<locid>,%q<custloc>))};th u(setq,custrecp,u(canhear,uldefault(%l/D`CUSTRECP,lcon(%l),%#)));@select/inline %q<cansql>=1,{th u(setq,logged,u(FUN`ISLOGGED,objid(owner(%#)),%q<pid>,%2,get(%#/D`SCENE`ACTIVE),%q<sceneactive>))},0,{th u(setq,logged,0)};th u(setq,basic,u(basicspeak`%va,if(%q<logged>,u(firstof,get(%#/D`SCENE`SPOOF),owner(%#)),%#),switch(%1,pose,:,semipose,;,say,",@emit,|)%2));th u(setq,markup,u(markup,%2,%q<custrecp>));@attach/nobreak %!/INC`HEADER=%q<logged>,%q<sceneactive>;@attach/nobreak %!/INC`POTRECORD=%1,%q<markup>;@select/inline %va=PennMUSH,{@message %q<custrecp>=%q<basic>,%!/FUN`FORMATPOSE,##,if(%q<logged>,u(firstof,get(%#/D`SCENE`SPOOF),owner(%#)),%#),switch(%1,pose,:,semipose,;,say,",@emit,|),%q<markup>,%q<custrecp>},RhostMUSH,{@pemit/list %q<custrecp>=udefault(%!/FUN`FORMATPOSE,%q<basic>,##,if(%q<logged>,u(firstof,get(%#/D`SCENE`SPOOF),owner(%#)),%#),switch(%1,pose,:,semipose,;,say,",@emit,|),%q<markup>,%q<custrecp>)};@attach %!/INC`FOOTER=%q<logged>,%q<sceneactive>;@select/inline %q<cansql>=1,{@attach/nobreak %!/INC`POSEERROR=%q<logged>;@attach/nobreak %!/INC`RECPOSE=objid(owner(%#)),%q<logged>,u(trimlines,%q<basic>)};@dolist/inline/nobreak u(lattr,%!/OVERRIDE`EXTRA`*)={@attach %!/%i0}
143OVERRIDE`IC2 [#3$]: $"*:@attach/command %!/OVERRIDE`IC=,say,%0
144OVERRIDE`IC3 [#3$]: $\:*:@attach/command %!/OVERRIDE`IC=,pose,%0
145OVERRIDE`IC4 [#3$]: $\;*:@attach/command %!/OVERRIDE`IC=,semipose,%0
146PLAYER [#3`]:
147PLAYER`CONNECT [#3`]: @dolist/inline u(lattr,%!/PLAYER`CONNECT`*)={@trigger %!/##=%0,%1,%2,%3,%4,%5,%6,%7,%8,%9}
148PLAYER`CONNECT`UPCOMING [#3]: @assert u(player_config,%0,ALERTS,SCENES);@wait 4={th setq(scenes,u(mysql,GET`UPCOMING`SCENES));@select/inline t(%q<scenes>)=1,{@attach %!/INC`MSG=Scenes happening within 24 hours: [u(itemize,iter(%q<scenes>,u(pueblize,%i0: [u(mysql,GET`SCHEDULETITLE,%i0)],+scenes %i0),%b,^),^,and,\,)],%0},0,{@attach %!/INC`MSG=No scenes are happening in the next 24 hours. Bummer!,%0}}
149Q [#3`]:
150Q`ADD [#3`]:
151Q`ADD`PAIRING [#3]: INSERT INTO $MATCH$ (pair_id, player_id) VALUES (?,?)
152Q`CHECK [#3`]:
153Q`CHECK`PAIRING [#3]: SELECT match_id FROM $MATCH$ WHERE pair_id=? AND player_id=? LIMIT 1
154Q`DEL [#3`]:
155Q`DEL`PAIRING [#3]: DELETE FROM $MATCH$ WHERE match_id=?
156Q`DEL`SCHEDULE [#3]: DELETE FROM $SCHEDULE$ WHERE schedule_id=?
157Q`DELETE [#3`]:
158Q`DELETE`PLAYERID [#3]: DELETE FROM $PLAYERS$ WHERE player_id=?
159Q`DELETE`PLOT [#3]: DELETE FROM $PLOTS$ WHERE plot_id=?
160Q`DELETE`SCENE [#3]: DELETE FROM $SCENES$ WHERE scene_id=?
161Q`DELETE`TAG [#3]: DELETE FROM $TAGS$ WHERE player_id=? AND schedule_id=?
162Q`GET [#3`]:
163Q`GET`ACTIVEHERE [#3]: SELECT scene_id from $SCENES$ WHERE room_objid=? AND room_custloc=? AND scene_state='0'
164Q`GET`ALLPLOTS [#3]: SELECT plot_id,plot_title,player_name,UNIX_TIMESTAMP(start_date),UNIX_TIMESTAMP(end_date),plot_type FROM $PLOTS$ NATURAL LEFT JOIN $PLAYERS$
165Q`GET`FULLSCHEDULE [#3]: SELECT schedule_id,schedule_title,player_name,UNIX_TIMESTAMP(schedule_date) FROM $SCHEDULE$ NATURAL LEFT JOIN $PLAYERS$ WHERE schedule_date >= UTC_TIMESTAMP() - INTERVAL 10 HOUR ORDER BY schedule_date
166Q`GET`IDLECHECK [#3]: SELECT max(pose_time) from $POSES$ WHERE scene_id=? AND pose_ignore=0
167Q`GET`INTEREST [#3]: SELECT objid from $TAGS$ NATURAL LEFT JOIN $PLAYERS$ WHERE schedule_id=?
168Q`GET`LASTPOSE [#3]: SELECT max(pose_id) FROM $POSES$ WHERE scene_id=? and player_id=? AND pose_ignore=? AND pose_time >= date_sub(UTC_TIMESTAMP(),INTERVAL 1 HOUR)
169Q`GET`LOCATION [#3]: SELECT room_objid FROM $SCENES$ WHERE scene_id=?
170Q`GET`NEWPLOT [#3]: SELECT plot_id FROM $PLOTS$ WHERE player_id=? ORDER BY plot_id LIMIT 1
171Q`GET`NEWSCENEID [#3]: SELECT max(scene_id) from $SCENES$ WHERE player_id=?
172Q`GET`NEWSCHEDULE [#3]: SELECT max(schedule_id) FROM $SCHEDULE$ WHERE player_id=?
173Q`GET`OBJIDSINSCENE [#3]: SELECT DISTINCT objid FROM $PLAYERS$ NATURAL LEFT JOIN $POSES$ WHERE $POSES$.scene_id=?
174Q`GET`OWNERID [#3]: SELECT player_id from $SCENES$ WHERE scene_id=?
175Q`GET`PAIRID [#3]: SELECT pair_id FROM $PAIRS$ WHERE scene_id=? AND pair_num=?
176Q`GET`PAIRINGS [#3]: SELECT pair_id,pair_num FROM $PAIRS$ WHERE scene_id=? ORDER BY pair_num
177Q`GET`PARTICIPANTS [#3]: SELECT DISTINCT players.objid FROM $MATCH$ AS pairs LEFT JOIN $PLAYERS$ AS players ON players.player_id=pairs.player_id WHERE pairs.pair_id=?
178Q`GET`PLAYERCOUNT [#3]: SELECT DISTINCT Objid,player_name,$PLAYERS$.player_id FROM $PLAYERS$ NATURAL LEFT JOIN $POSES$ WHERE scene_id=? ORDER BY player_name
179Q`GET`PLAYERID [#3]: SELECT player_id FROM $PLAYERS$ WHERE objid=?
180Q`GET`PLAYERNAME [#3]: SELECT player_name from $PLAYERS$ WHERE player_id=?
181Q`GET`PLAYEROBJID [#3]: SELECT objid FROM $PLAYERS$ WHERE player_id=?
182Q`GET`PLAYERPOSECOUNT [#3]: SELECT count(pose_id) FROM $POSES$ WHERE scene_id=? and player_id=?
183Q`GET`PLOTCHECK [#3]: SELECT plot_id FROM $PLOTS$ WHERE plot_id=?
184Q`GET`PLOTDESC [#3]: SELECT plot_desc FROM $PLOTS$ WHERE plot_id=?
185Q`GET`PLOTEND [#3]: SELECT UNIX_TIMESTAMP(end_date) FROM $PLOTS$ WHERE plot_id=?
186Q`GET`PLOTOWNERID [#3]: SELECT player_id from $PLOTS$ WHERE plot_id=?
187Q`GET`PLOTRUNNER [#3]: SELECT player_id FROM $PLOTS$ WHERE plot_id=?
188Q`GET`PLOTRUNNERNAME [#3]: SELECT player_name FROM $PLOTS$ NATURAL LEFT JOIN $PLAYERS$ WHERE plot_id=?
189Q`GET`PLOTSTART [#3]: SELECT UNIX_TIMESTAMP(start_date) FROM $PLOTS$ WHERE plot_id=?
190Q`GET`PLOTSTATUS [#3]: SELECT plot_status FROM $PLOTS$ WHERE plot_id=?
191Q`GET`PLOTTITLE [#3]: SELECT plot_title FROM $PLOTS$ WHERE plot_id=?
192Q`GET`PLOTTYPE [#3]: SELECT plot_type FROM $PLOTS$ WHERE plot_id=?
193Q`GET`POSTID [#3]: SELECT post_id FROM $SCHEDULE$ WHERE schedule_id=?
194Q`GET`RECALLDET [#3]: SELECT objid,UNIX_TIMESTAMP(pose_time) FROM $POSES$ NATURAL LEFT JOIN $PLAYERS$ WHERE pose_id=?
195Q`GET`RECALLIDS [#3]: SELECT * FROM (SELECT pose_id from $POSES$ NATURAL LEFT JOIN $PLAYERS$ WHERE $POSES$.scene_id=? AND $POSES$.pose_ignore=0 ORDER BY $POSES$.pose_id desc limit ?) sub ORDER BY pose_id ASC
196Q`GET`RECALLPOSE [#3]: SELECT pose FROM $POSES$ WHERE pose_id=?
197Q`GET`RUNNINGPLOTS [#3]: SELECT plot_id,plot_title,player_name,UNIX_TIMESTAMP(start_date),UNIX_TIMESTAMP(end_date),plot_type FROM $PLOTS$ NATURAL LEFT JOIN $PLAYERS$ WHERE end_date > NOW()
198Q`GET`SCENECHECK [#3]: SELECT scene_id FROM $SCENES$ WHERE scene_id=?
199Q`GET`SCENECUSTLOC [#3]: SELECT room_custloc FROM $SCENES$ WHERE scene_id=?
200Q`GET`SCENEDATE [#3]: SELECT UNIX_TIMESTAMP(creation_date) FROM $SCENES$ WHERE scene_id=?
201Q`GET`SCENEDESC [#3]: SELECT scene_desc FROM $SCENES$ WHERE scene_id=?
202Q`GET`SCENEHERE [#3]: SELECT max(scene_id) from $SCENES$ WHERE room_objid=? AND room_custloc=? AND scene_state='0' AND creation_date >= date_sub(UTC_TIMESTAMP(),INTERVAL 1 HOUR)
203Q`GET`SCENELOC [#3]: SELECT room_objid FROM $SCENES$ WHERE scene_id=?
204Q`GET`SCENEMINE [#3]: SELECT DISTINCT scenes.scene_id FROM $SCENES$ AS scenes LEFT JOIN $POSES$ AS poses ON scenes.scene_id=poses.scene_id WHERE (scenes.player_id=? OR poses.player_id=?) AND scene_state in ('0','1','2') ORDER BY scenes.scene_id
205Q`GET`SCENEMINE3 [#3]: SELECT scene_id,scene_title,player_name,scene_state FROM $SCENES$ NATURAL LEFT JOIN $PLAYERS$ WHERE scene_id=?
206Q`GET`SCENEMINE34 [#3]: SELECT scene_id,scene_title,player_name,UNIX_TIMESTAMP(creation_date) FROM $SCENES$ NATURAL LEFT JOIN $PLAYERS$ WHERE scene_id=?
207Q`GET`SCENEMINE4 [#3]: SELECT DISTINCT scenes.scene_id FROM $SCENES$ AS scenes LEFT JOIN $POSES$ AS poses ON scenes.scene_id=poses.scene_id WHERE (scenes.player_id=? OR poses.player_id=?) AND scene_state='3' ORDER BY scenes.scene_id
208Q`GET`SCENEPOSECOUNT [#3]: SELECT count(pose_id) FROM $POSES$ WHERE scene_id=?
209Q`GET`SCENERECALL [#3]: SELECT * FROM (SELECT objid,pose_id,pose,UNIX_TIMESTAMP(pose_time) from $POSES$ NATURAL LEFT JOIN $PLAYERS$ WHERE $POSES$.scene_id=? AND $POSES$.pose_ignore=0 ORDER BY $POSES$.pose_id desc limit ?) sub ORDER BY pose_id ASC
210Q`GET`SCENESTATE [#3]: SELECT scene_state FROM $SCENES$ WHERE scene_id=?
211Q`GET`SCENETITLE [#3]: SELECT scene_title FROM $SCENES$ WHERE scene_id=?
212Q`GET`SCENEWHEREIDANDSTATE [#3]: SELECT scene_id from $SCENES$ WHERE scene_id=? AND scene_state='?'
213Q`GET`SCHEDOWNERID [#3]: SELECT player_id from $SCHEDULE$ WHERE schedule_id=?
214Q`GET`SCHEDOWNEROBJ [#3]: SELECT objid from $SCHEDULE$ NATURAL LEFT JOIN $PLAYERS$ WHERE schedule_id=?
215Q`GET`SCHEDOWNEROBJID [#3]: SELECT objid from $SCHEDULE$ NATURAL LEFT JOIN $PLAYERS$ WHERE schedule_id=?
216Q`GET`SCHEDULECHECK [#3]: SELECT schedule_id FROM $SCHEDULE$ WHERE schedule_id=?
217Q`GET`SCHEDULEDESC [#3]: SELECT schedule_desc FROM $SCHEDULE$ WHERE schedule_id=?
218Q`GET`SCHEDULEPLAYERNAME [#3]: SELECT player_name FROM $SCHEDULE$ NATURAL LEFT JOIN $PLAYERS$ WHERE schedule_id=?
219Q`GET`SCHEDULETIME [#3]: SELECT UNIX_TIMESTAMP(schedule_date) FROM $SCHEDULE$ WHERE schedule_id=?
220Q`GET`SCHEDULETITLE [#3]: SELECT schedule_title FROM $SCHEDULE$ WHERE schedule_id=?
221Q`GET`TAGCHECK [#3]: SELECT tag_id from $TAGS$ WHERE schedule_id=? AND player_id=?
222Q`GET`TAGCOUNT [#3]: SELECT count(tag_id) FROM $TAGS$ WHERE schedule_id=?
223Q`GET`TAGGEDOBJ [#3]: SELECT DISTINCT players.objid FROM $TAGS$ AS tags LEFT JOIN $PLAYERS$ as players ON tags.player_id=players.player_id WHERE schedule_id=?
224Q`GET`TAGOBJIDS [#3]: SELECT DISTINCT objid from $TAGS$ NATURAL LEFT JOIN $PLAYERS$ WHERE schedule_id=?
225Q`GET`TINYPLOT [#3]: SELECT plot_title FROM $SCENES$ NATURAL LEFT JOIN $PLOTS$ WHERE scene_id=?
226Q`GET`UPCOMING [#3`]: SELECT schedule_id FROM $SCHEDULE$ WHERE schedule_date >= UTC_TIMESTAMP() - INTERVAL 10 HOUR ORDER by schedule_date
227Q`GET`UPCOMING`SCENES [#3]: SELECT schedule_id FROM $DATABASE$.$SCHEDULE$ WHERE schedule_date >= NOW() AND schedule_date <= NOW() + INTERVAL 24 HOUR
228Q`INIT [#3`]:
229Q`INIT`PLAYER [#3]: INSERT INTO $PLAYERS$ (objid,player_name) VALUES (?,?)
230Q`INIT`SCENE [#3]: INSERT INTO $SCENES$ (player_id,scene_title,room_objid,room_name,room_custloc,creation_date) VALUES (?,?,?,?,?,UTC_TIMESTAMP())
231Q`INSERT [#3`]:
232Q`INSERT`NEWSCHEDULE [#3]: INSERT INTO $SCHEDULE$ (player_id,schedule_title,schedule_desc,schedule_date) VALUES (?,?,?,FROM_UNIXTIME('?'))
233Q`INSERT`NEWTAG [#3]: INSERT INTO $TAGS$ (player_id,schedule_id) VALUES (?,?)
234Q`INSERT`PAIRID [#3]: INSERT INTO $PAIRS$ (scene_id,pair_num) VALUES (?,?)
235Q`INSTALL [#3`]:
236Q`INSTALL`MATCH [#3]: CREATE TABLE IF NOT EXISTS $MATCH$ (match_id BIGINT(31) UNSIGNED NOT NULL AUTO_INCREMENT,player_id BIGINT(31) UNSIGNED NOT NULL,pair_id BIGINT(31) UNSIGNED NOT NULL,PRIMARY KEY(match_id),FOREIGN KEY(player_id) REFERENCES $PLAYERS$(player_id) ON UPDATE CASCADE ON DELETE CASCADE,FOREIGN KEY(pair_id) REFERENCES $PAIRS$(pair_id) ON UPDATE CASCADE ON DELETE CASCADE, UNIQUE KEY pairing (pair_id, player_id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
237Q`INSTALL`PAIRS [#3]: CREATE TABLE IF NOT EXISTS $PAIRS$ (pair_id BIGINT(31) UNSIGNED NOT NULL AUTO_INCREMENT,scene_id BIGINT(31) UNSIGNED NOT NULL,pair_num BIGINT(31) UNSIGNED NOT NULL,PRIMARY KEY(pair_id),FOREIGN KEY(scene_id) REFERENCES $SCENES$(scene_id) ON UPDATE CASCADE ON DELETE CASCADE, UNIQUE KEY scene_pair (scene_id, pair_num)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
238Q`INSTALL`PLAYERS [#3]: CREATE TABLE IF NOT EXISTS $PLAYERS$ (player_id BIGINT(31) UNSIGNED NOT NULL AUTO_INCREMENT,objid VARCHAR(30) NOT NULL,player_name VARCHAR(60) NOT NULL DEFAULT 'Unset',PRIMARY KEY(player_id),UNIQUE KEY player_objid (objid)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
239Q`INSTALL`PLOTS [#3]: CREATE TABLE IF NOT EXISTS $PLOTS$ (plot_id BIGINT(31) UNSIGNED NOT NULL AUTO_INCREMENT,player_id BIGINT(31) UNSIGNED NOT NULL,plot_title VARCHAR(40),plot_desc text,start_date DATETIME,end_date DATETIME,plot_type VARCHAR(20),plot_status VARCHAR(20),PRIMARY KEY(plot_id),FOREIGN KEY(player_id) REFERENCES $PLAYERS$(player_id) ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
240Q`INSTALL`POSES [#3]: CREATE TABLE IF NOT EXISTS $POSES$ (pose_id BIGINT(31) UNSIGNED NOT NULL AUTO_INCREMENT,player_id BIGINT(31) UNSIGNED NOT NULL,pose text,scene_id BIGINT(31) UNSIGNED,pose_time DATETIME,pose_ignore BOOL NOT NULL DEFAULT FALSE,PRIMARY KEY(pose_id),FOREIGN KEY(scene_id) REFERENCES $SCENES$(scene_id) ON UPDATE CASCADE ON DELETE CASCADE,FOREIGN KEY(player_id) REFERENCES $PLAYERS$(player_id) ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
241Q`INSTALL`SCENES [#3]: CREATE TABLE IF NOT EXISTS $SCENES$ (scene_id BIGINT(31) UNSIGNED NOT NULL AUTO_INCREMENT,player_id BIGINT(31) UNSIGNED,scene_title VARCHAR(255),plot_id BIGINT(31),scene_desc text,scene_state enum('0','1','2','3') NOT NULL DEFAULT '0',room_objid VARCHAR(80),room_name VARCHAR(80),room_custloc VARCHAR(80),creation_date DATETIME,finish_date DATETIME,PRIMARY KEY(scene_id),FOREIGN KEY(player_id) REFERENCES $PLAYERS$(player_id) ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
242Q`INSTALL`SCHEDULE [#3]: CREATE TABLE IF NOT EXISTS $SCHEDULE$ (schedule_id BIGINT(31) UNSIGNED NOT NULL AUTO_INCREMENT,player_id BIGINT(31) UNSIGNED NOT NULL,schedule_title VARCHAR(255),schedule_desc text,schedule_date DATETIME,post_id varchar(10),plot_id BIGINT(31),PRIMARY KEY(schedule_id),FOREIGN KEY(player_id) REFERENCES $PLAYERS$(player_id) ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
243Q`INSTALL`TAGS [#3]: CREATE TABLE IF NOT EXISTS $TAGS$ (tag_id BIGINT(31) UNSIGNED NOT NULL AUTO_INCREMENT,schedule_id BIGINT(31) UNSIGNED NOT NULL,player_id BIGINT(31) UNSIGNED NOT NULL,PRIMARY KEY(tag_id),FOREIGN KEY(player_id) REFERENCES $PLAYERS$(player_id) ON UPDATE CASCADE ON DELETE CASCADE,FOREIGN KEY(schedule_id) REFERENCES $SCHEDULE$(schedule_id) ON UPDATE CASCADE ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
244Q`NEW [#3`]:
245Q`NEW`PLOT [#3]: INSERT INTO $PLOTS$ (player_id,plot_title,plot_desc,start_date,end_date,plot_status) VALUES (?,?,?,UTC_TIMESTAMP(),UTC_TIMESTAMP() + INTERVAL 1 MONTH,'Approved')
246Q`RENAME [#3`]:
247Q`RENAME`PLAYER [#3]: UPDATE $PLAYERS$ SET player_name=? WHERE objid=?
248Q`SCENE [#3`]:
249Q`SCENE`GETACTIVE [#3]: SELECT scene_id from $SCENES$ where scene_state='0'
250Q`SCENE`HASPOSES [#3]: SELECT count(pose_id) FROM $POSES$ where scene_id=?
251Q`SCENE`IDLECHECK [#3]: select scene.scene_id from $SCENES$ as scene natural join $POSES$ as final_pose where scene.scene_state='0' and final_pose.pose_id = (select pose.pose_id from $POSES$ as pose where pose.scene_id = scene.scene_id order by pose.pose_id DESC limit 1) and final_pose.pose_time < UTC_TIMESTAMP() - INTERVAL 3 HOUR
252Q`SET [#3`]:
253Q`SET`ALLPLOTS [#3]: UPDATE $PLOTS$ SET player_id=? WHERE player_id=?
254Q`SET`ALLPOSES [#3]: UPDATE $POSES$ SET player_id=? WHERE player_id=?
255Q`SET`ALLSCENES [#3]: UPDATE $SCENES$ SET player_id=? WHERE player_id=?
256Q`SET`ALLSCHEDULE [#3]: UPDATE $SCHEDULE$ SET player_id=? WHERE player_id=?
257Q`SET`IGNORE [#3]: UPDATE $POSES$ SET pose_ignore=? WHERE pose_id=?
258Q`SET`NEWPOSE [#3]: INSERT INTO $POSES$ (player_id,scene_id,pose,pose_time) VALUES (?,?,?,UTC_TIMESTAMP())
259Q`SET`NOSCENEPLOT [#3]: UPDATE $SCENES$ SET plot_id=NULL WHERE scene_id=?
260Q`SET`PLAYERID [#3]: UPDATE $PLAYERS$ SET objid=?, player_name=? WHERE player_id=?
261Q`SET`PLOTDESC [#3]: UPDATE $PLOTS$ SET plot_desc=? WHERE plot_id=?
262Q`SET`PLOTEND [#3]: UPDATE $PLOTS$ SET end_date=FROM_UNIXTIME(?) WHERE plot_id=?
263Q`SET`PLOTRUNNER [#3]: UPDATE $PLOTS$ SET player_id=? WHERE plot_id=?
264Q`SET`PLOTSTART [#3]: UPDATE $PLOTS$ SET start_date=FROM_UNIXTIME(?) WHERE plot_id=?
265Q`SET`PLOTSTATUS [#3]: UPDATE $PLOTS$ SET plot_status=? WHERE plot_id=?
266Q`SET`PLOTTITLE [#3]: UPDATE $PLOTS$ SET plot_title=? WHERE plot_id=?
267Q`SET`PLOTTYPE [#3]: UPDATE $PLOTS$ SET plot_type=? WHERE plot_id=?
268Q`SET`RELOCATE [#3]: UPDATE $SCENES$ SET room_objid=?,room_name=?,room_custloc=? WHERE scene_id=?
269Q`SET`SCENEDESC [#3]: UPDATE $SCENES$ SET scene_desc=? WHERE scene_id=?
270Q`SET`SCENEFINISH [#3]: UPDATE $SCENES$ set finish_date=NOW() WHERE scene_id=?
271Q`SET`SCENEPLOT [#3]: UPDATE $SCENES$ SET plot_id=? WHERE scene_id=?
272Q`SET`SCENESTATE [#3]: UPDATE $SCENES$ SET scene_state='?' WHERE scene_id=?
273Q`SET`SCENETITLE [#3]: UPDATE $SCENES$ SET scene_title=? WHERE scene_id=?
274Q`SET`SCHEDULEBB [#3]: UPDATE $SCHEDULE$ SET post_id=? WHERE schedule_id=?
275Q`SET`SCHEDULEDATE [#3]: UPDATE $SCHEDULE$ SET schedule_date=FROM_UNIXTIME(?) WHERE schedule_id=?
276Q`SET`SCHEDULEDESC [#3]: UPDATE $SCHEDULE$ SET schedule_desc=? WHERE schedule_id=?
277Q`SET`SCHEDULEPLOT [#3]: UPDATE $SCHEDULE$ SET plot_id=? WHERE schedule_id=?
278Q`SET`SCHEDULETITLE [#3]: UPDATE $SCHEDULE$ SET schedule_title=? WHERE schedule_id=?
279Q`VOTE [#672`]:
280Q`VOTE`IS-SCENE [#672]: SELECT `scene_id` FROM $SCENES$ WHERE `scene_id`=? LIMIT 1
281Q`VOTE`ISSCENE [#672]: SELECT COUNT(*) FROM $SCENES$ WHERE scene_id=?
282Q`VOTE`PLAYER-SCENES-IN-TIMEFRAME [#672]: SELECT DISTINCT scenes.scene_id FROM $SCENES$ AS scenes LEFT JOIN $POSES$ AS poses ON scenes.scene_id=poses.scene_id WHERE (scenes.player_id=? OR poses.player_id=?) AND scenes.creation_date > DATE_SUB(NOW(), INTERVAL !) ORDER BY scenes.scene_id
283Q`VOTE`PLAYERS-IN-SCENE [#672]: SELECT DISTINCT `objid`, (SELECT COUNT(*) FROM $POSES$ AS `p2`WHERE `scene_id`=? AND `p2`.`pose_ignore`=0 AND `p2`.`player_id`=`pl`.`player_id`) AS `posecount`, (SELECT COUNT(*) FROM `votes` AS `v` WHERE `v`.`voter`=? AND `v`.`votee`=`pl`.`objid` AND `v`.`scene_id`=?), IFNULL((SELECT UNIX_TIMESTAMP(`vote_date`) FROM `votes` WHERE `voter`=? AND `votee`=`pl`.`objid` ORDER BY `vote_date` DESC LIMIT 1),0) FROM $PLAYERS$ AS `pl` LEFT JOIN $POSES$ AS `p` ON `p`.`player_id`=`pl`.`player_id` WHERE `p`.`scene_id`=? AND `p`.`pose_ignore`=0 AND NOT (`pl`.`objid`=?)
284Q`VOTE`POSES-BY [#672]: SELECT COUNT(*) FROM $POSES$ AS `p` LEFT JOIN $PLAYERS$ AS `pl` ON `p`.`player_id`=`pl`.`player_id` WHERE `p`.`scene_id`=? AND `pl`.`objid`=? AND `p`.`pose_ignore`=0
285Q`VOTE`POSES-IN-SCENE [#672]: SELECT COUNT(*) FROM $POSES$ WHERE `scene_id`=?
286Q`VOTE`SCENEDATE [#672]: SELECT creation_date FROM $SCENES$ WHERE scene_id=?
287Q`VOTE`SECS-SINCE-START [#672]: SELECT UNIX_TIMESTAMP() - UNIX_TIMESTAMP(`creation_date`) FROM $SCENES$ WHERE `scene_id`=?
288Q`VOTE`VOTED-SCENES-IN-TIMEFRAME [#672]: SELECT COUNT(*) FROM `votes` WHERE `scene_id` IN (SELECT DISTINCT scenes.scene_id FROM $SCENES$ AS scenes LEFT JOIN $POSES$ AS poses ON scenes.scene_id=poses.scene_id WHERE (scenes.player_id=? OR poses.player_id=?) AND scenes.creation_date > DATE_SUB(NOW(), INTERVAL !) ORDER BY scenes.scene_id) AND `votee`=?
289SHLP [#3`]:
290SHLP`+PLOT [#3]: [ansi(hc,Administrator Commands)]%R[align(5 [sub(u(width,%#),6)],,[ansi(h,+plot/add <runner>/<title>=<description>)] - Creates a new plot.%R[ansi(h,+plot/desc <id>=<description>)] - Change a plot's description.%R[ansi(h,+plot/type <id>=<type>)] - Change a plot's type.%R[ansi(h,+plot/title <id>=<title>)] - Change a plot's title.%R[ansi(h,+plot/runner <id>=<player>)] - Change a plot's runner.%R[ansi(h,+plot/start <id>=<time>)] - Change a plot's start date. Uses the same format as +schedule scheduling.%R[ansi(h,+plot/end <id>=<time>)] - Change a plot's end date.%R[ansi(h,+plot/status <id>=<status>)] - Change a plot's status. This can be anything.%R[ansi(h,+plot/delete <id>)] - Deletes a plot. Do not use except for newly created mistakes! This is not how to finish a plot!%R%RPlots are 'finished' when their end date have passed.)]
291SHLP`+SCENE [#3]: [ansi(hc,Wizard Commands)]%R[align(5 [sub(u(width,%#),6)],,[ansi(h,+scene/delete <id>)] - Deletes a scene and all recorded poses.%R[ansi(h,+scene/merge <player>=<char id>)] - This command exists for when a character is deleted and a new one is created and the new character needs to 'take the place' of the old one. This will re-assign the given <char id> to player and change any of the player's existing scenesys information to use that ID.)]
292SORTPOT [#3`]: u(SORTPOT`%va,%0,if(strlen(%1),%1,%B),if(strlen(%2),%2,%B))
293SORTPOT`PENNMUSH [#3]: sortkey(#lambda/get(%l/\%0`WHEN),%0,n,%1,%2)
294SORTPOT`RHOSTMUSH [#3]: sortby(#lambda/[lit([ncomp(get(%l/%0`WHEN),get(%l/%1`WHEN))])],%0,%1,%2)
295SQL [#3`]:
296SQL`TABLE [#3`]:
297SQL`TABLE`MATCH [#3]: scene_match
298SQL`TABLE`PAIRS [#3]: scene_pairs
299SQL`TABLE`PLAYERS [#3]: scene_players
300SQL`TABLE`PLOTS [#3]: scene_plots
301SQL`TABLE`POSES [#3]: scene_poses
302SQL`TABLE`SCENES [#3]: scene_scenes
303SQL`TABLE`SCHEDULE [#3]: scene_schedule
304SQL`TABLE`TAGS [#3]: scene_tags
305SQL`TABLES [#3]: PLAYERS|PLOTS|SCENES|POSES|SCHEDULE|TAGS|PAIRS|MATCH
306STARTUP [#3$`]: @attach/nobreak %!/STARTUP`OVERRIDE;@trigger %!/LOOP`IDLECHECK;@trigger %!/LOOP`CLEANPOT
307STARTUP`OVERRIDE [#3]: @select/inline %va=PennMUSH,{@dolist/inline @emit pose say semipose=@hook/override/inline %i0=%!,override`ic},RhostMUSH,{@dolist/inline @emit pose say semipose P S=@hook/ignore %d0}
308SWITCHES [#3`]:
309SWITCHES`OBSERVER [#3`]:
310SWITCHES`OBSERVER`PLAYER [#3]:
311SWITCHES`PARTNERS [#3`]:
312SWITCHES`PARTNERS`PLAYER [#3]: JOIN|LEAVE
313SWITCHES`PLOT [#3`]:
314SWITCHES`PLOT`ADMIN [#3]: ADD|DESC|TITLE|START|END|TYPE|RUNNER|STATUS|DELETE
315SWITCHES`PLOT`PLAYER [#3]: ALL
316SWITCHES`POT [#3`]:
317SWITCHES`POT`PLAYER [#3]: LAST|MAX|LIST|BRIEF|MODE|SUMMARY|TOGGLE
318SWITCHES`SCENE [#3`]:
319SWITCHES`SCENE`ADMIN [#3]: DELETE|MERGE
320SWITCHES`SCENE`PLAYER [#3]: SETUP|CHARID|JOIN|LEAVE|TITLE|DESC|CREATE|LOUDCREATE|RECALL|FINISH|PAUSE|CONTINUE|UNDO|REDO|SPOOF|MOVE|PLOT|OLD|WHO
321SWITCHES`SCENES [#3`]:
322SWITCHES`SCENES`ADMIN [#3]:
323SWITCHES`SCENES`PLAYER [#3]: ADD|DELETE|RESCHEDULE|DESC|TITLE|PLOT|TAG|UNTAG|MAIL|MINE|INVITE
324SWITCHES`SUMMARY [#3`]:
325SWITCHES`SUMMARY`PLAYER [#3]: SILENT
326SYSTEM [#3`]:
327SYSTEM`NAME [#3]: SCENESYS
328SYSTEM`SWITCHES [#3]: setunion(v(SWITCHES`%q<mode>`PLAYER),if(u(isadmin,%#),v(SWITCHES`%q<mode>`ADMIN)),|,|)