Riverdale's Tables

From Redwall MUCK Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Tables by Riverdale

This MPI code allows a room to have a set of tables that beasts can sit at and speak to only the other beasts at the table. This code -may- be bugged in that it doesn't handle departures from the room without quitting the table first.

@act tables=here

@link tables=$nothing

@succ tables=

{null:{tell:You search the room for available tables:\r\r}}

{if:{subst:{listprops:tables/,here},tables/,},{null:{foreach:table,{subst:{listprops:tables/,here},tables/,},{null:{tell:{left:{&table},20}--  {count:{subst:{listprops:{&table}/,here},{&table}/,}}/{prop:tables/{&table},here}}}}},{center:-=No Tables available here=-}}

@act tables #add;table #add=here

@link tables #add=$nothing

@lock tables #add=me

@fail tables #add=Permission Denied.

@succ tables #add=

{with:tablename,{midstr:{&arg},1,{subt:{instr:{&arg},=},1}},{with:mxcap,{midstr:{&arg},{add:{instr:{&arg},=},1},-1},{if:{&arg},{if:{&tablename},{if:{&mxcap},{if:{isnum:{&mxcap}},{if:{ne:{lmember:{subst:{listprops:tables/,here},tables/,},{&tablename}},0},That is already a table here!,You add the table {&tablename} to this room with the maximum capacity of {abs:{&mxcap}}. {null:{store:{abs:{&mxcap}},tables/{&tablename},here}}},Please provide a numeric value for the maximum capacity of {&tablename}.},Please specify the maximum capacity of your table. ({&cmd} {&tablename}=)},Please provide a name for your table.},{toupper:{midstr:{&cmd},1}}{midstr:{&cmd},2,-1} (by Riverdale) - Syntax: {&cmd} =}}}

@act tables #remove;table #remove=here

@link tables #remove=$nothing

@lock table #remove=me

@fail table #remove=Permission Denied.

@succ table #remove=

{if:

 {&arg},

 {if:

  {ne:{lmember:{subst:{listprops:tables/,here},tables/,},{&arg}},0},

  {if:

   {ge:{count:{subst:{listprops:{&arg}/,here},{&arg}/,}},1},

   There are players sitting there!,

   You remove the table {&arg} from the room.{null:{delprop:tables/{&arg},here}}

  },

  That table is not here.

 },

 {toupper:{midstr:{&cmd},1}}{midstr:{&cmd},2,-1} - Syntax: {&cmd}

}

@act sit at=here

@link sit at=$nothing

@succ sit at=

{if:{&arg},{if:{ne:{lmember:{subst:{listprops:tables/,here},tables/,},{&arg}},0},{if:{ge:{count:{subst:{listprops:{&arg}/,here},{&arg}/,}},{prop:tables/{&arg},here}},That table is already full!,{if:{prop:sit/{name:me},here},You are already sitting at {prop:sit/{name:me},here}! You cannot sit at more than one table at a time.,You sit down at the {&arg}. {null:{store:{&arg},sit/{name:me},here},{otell:{name:me} sits down at {&arg}.},{foreach:var,{subst:{listprops:{&arg}/,here},{&arg}/,},{tell:{name:me} joins this table.,{&var}}},{store:yes,{&arg}/{name:me},here}}}},That is not a table here.},Sit at (by Riverdale) - Syntax: Sit at

}

@act stand up=here

@link stand up=$nothing

@succ stand up=

{if:{prop:sit/{name:me},here},You stand up from {prop:sit/{name:me},here}. {null:{foreach:var,{subst:{listprops:{prop:sit/{name:me},here}/,here},{prop:sit/{name:me},here}/,},{if:{ne:{&var},{name:me}},{tell:{name:me} stands up from this table.,{&var}}}},{otell:{name:me} stands up from {prop:sit/{name:me},here}.},{delprop:{prop:sit/{name:me}}/{name:me},here}{delprop:sit/{name:me},here}},You are not sitting down!}

@act tsay;tsa;ts;tt=here

@link tsay=$nothing

@succ tsay=

{if:{prop:sit/{name:me},here},You say "{&arg}" across the table. {null:{foreach:person,{subst:{listprops:{prop:sit/{name:me},here}/,here},{prop:sit/{name:me},here}/,},{if:{ne:{&person},{name:me}},{tell:{name:me} says\, "{&arg}" across the table.,{ref:{&person}}}}}},You are not sitting at a table!}

@act twho=here

@link twho=$nothing

@succ twho=

{if:{&arg},{if:{ne:{lmember:{subst:{listprops:tables/,here},tables/,},{&arg}},0},{null:{tell:You check to see who's sitting at {&arg}:\r\r}}{null:{foreach:person,{subst:{listprops:{&arg}/,here},{&arg}/,},{tell:{left:{&person},20}  --  {if:{ne:{idle:{&person}},-1},AWAKE,ASLEEP}}}},That is not a table here.},{if:{prop:sit/{name:me},here},{null:{tell:You check to see who's sitting at this table with you:\r\r}}{null:{foreach:person,{subst:{listprops:{prop:sit/{name:me},here}/,here},{prop:sit/{name:me},here}/,},{tell:{left:{&person},20}  -- {if:{ne:{idle:{&person}},-1},AWAKE,ASLEEP}}}},Which table do you wish to check?}}

@act tpose;tpos;tpo;tp=here

@link tpose=$nothing

@succ tpose=

{if:{prop:sit/{name:me},here},{null:{foreach:person,{subst:{listprops:{prop:sit/{name:me},here}/,here},{prop:sit/{name:me},here}/,},{tell:{name:me} {&arg} (across the table),{ref:{&person}}}}},You are not sitting at a table!}

@act twhisper=here

@link twhisper=$nothing

@succ twhisper=

{with:person,{midstr:{&arg},1,{subt:{instr:{&arg},=},1}},{with:message,{midstr:{&arg},{add:{instr:{&arg},=},1},-1},{if:{&arg},{if:{&person},{if:{&message},{if:{prop:sit/{name:me},here},{if:{ne:{lmember:{subst:{listprops:{prop:sit/{name:me},here}/,here},{prop:sit/{name:me},here}/,},{&person}},0},{if:{ne:{idle:{&person}},-1},You whisper to {name:{&person}} across the table\, "{&message}"{null:{tell:{name:me} whispers to you across the table\, "{&message}",{&person}},{foreach:var,{subst:{listprops:{prop:sit/{name:me},here}/,here},{prop:sit/{name:me},here}/,},{if:{and:{ne:{&person},{&var}},{ne:{&var},{name:me}}},{tell:{name:me} whispers something across the table to {&person},{&var}}}}},That person is not awake!},That person is not sitting at your table!},You are not sitting at a table!},What do you want to whisper?},To whom do you wish to whisper?},Twhisper (by Riverdale) - Syntax: twhisper =}}}

- Clears seats -

Exit success setting

@set #194413=_odepart:{if:{prop:sit/{name:me},here},<> You depart where you were sitting <> {delprop:{prop:sit/{name:me},here}/{name:me},here}{delprop:sit/{name:me},here},}

@set #194413=_depart:,#194413},<> You depart and leave your table. <> {delprop:{prop:sit/{name:me},#194413}/{name:me},#194413}{delprop:sit/{name:me},#194413},<> You depart the tavern. <>}

See Also