Coyote Clock

A clock with four different faces, and the ability to offset the time by any number of minutes (can be used to display time in a certain timezone).

Author: Coyote@TinyTIM
Category: Time
Commands: @create, @describe, @pemit, @set.

Instructions

Copy and paste the below code into a compatible MUSH or MUX.

MUSHCode for Coyote Clock

@create Coyote Clock
@lock/Basic Coyote Clock==me
&BLANK Coyote Clock=[setq(4,switch(%1,,%R,%R%1))]%q4[edit(edit(edit(fold(clock_fold,[v(L[u(hour,%0)]_hr)] [v(L[u(minute,%0)]_mn)],v(clockface_null)),!,%q4),+,%B),&,\\)]
&CLOCK Coyote Clock=[setq(4,switch(%1,,%R,%R%1))]%q4[edit(edit(edit(fold(clock_fold,[v(L[u(hour,%0)]_hr)] [v(L[u(minute,%0)]_mn)],v(clockface)),!,%q4),+,%B),&,\\)]
&CLOCK2 Coyote Clock=[setq(4,switch(%0,,%R,%R%0))]%q4[edit(edit(edit(fold(clock_fold,[v(l5_hr)] [v(l55_mn)],v(clockface)),!,%q4),+,%B),&,\\)]
&CLOCKFACE Coyote Clock=+++++++++++++,,:::::::::::::..!++++++++++,::'++++++1+2++++++`::.!+++++++,:''++1+1+++++++++++++1++``:.!++++,:''+++++++++++++++++++++++++++``:.!++,:'+++++++++++++++++++++++++++++++++`:.!+,:'++1+0+++++++++++++++++++++++++++2++`:.!,:'+++++++++++++++++++++++++++++++++++++`:.!::+++++++++++++++++++++++++++++++++++++++::!::+++++++++++++++++++++++++++++++++++++++::!::+9+++++++++++++++++o+++++++++++++++++3+::!::+++++++++++++++++++++++++++++++++++++++::!::+++++++++++++++++++++++++++++++++++++++::!`:.+++++++++++++++++++++++++++++++++++++,:'!+`:.++8+++++++++++++++++++++++++++++4++,:'!++`:.+++++++++++++++++++++++++++++++++,:'!++++`:..+++++++++++++++++++++++++++,,:'!+++++++`:..++7+++++++++++++++5++,,:'!++++++++++`::.+++++++6+++++++,::'!+++++++++++++``:::::::::::::''!
&CLOCKFACE_NULL Coyote Clock=+++++++++++++,,:::::::::::::..!++++++++++,::'+++++++++++++++`::.!+++++++,:''+++++++++++++++++++++``:.!++++,:''+++++++++++++++++++++++++++``:.!++,:'+++++++++++++++++++++++++++++++++`:.!+,:'+++++++++++++++++++++++++++++++++++`:.!,:'+++++++++++++++++++++++++++++++++++++`:.!::+++++++++++++++++++++++++++++++++++++++::!::+++++++++++++++++++++++++++++++++++++++::!::+++++++++++++++++++o+++++++++++++++++++::!::+++++++++++++++++++++++++++++++++++++++::!::+++++++++++++++++++++++++++++++++++++++::!`:.+++++++++++++++++++++++++++++++++++++,:'!+`:.+++++++++++++++++++++++++++++++++++,:'!++`:.+++++++++++++++++++++++++++++++++,:'!++++`:..+++++++++++++++++++++++++++,,:'!+++++++`:..+++++++++++++++++++++,,:'!++++++++++`::.+++++++++++++++,::'!+++++++++++++``:::::::::::::''!
&CLOCKFACE_ROMAN Coyote Clock=+++++++++++++,,:::::::::::::..!++++++++++,::'++++++XII++++++`::.!+++++++,:''++XI++++++++++++++I++``:.!++++,:''+++++++++++++++++++++++++++``:.!++,:'+++++++++++++++++++++++++++++++++`:.!+,:'++X++++++++++++++++++++++++++++II++`:.!,:'+++++++++++++++++++++++++++++++++++++`:.!::+++++++++++++++++++++++++++++++++++++++::!::+++++++++++++++++++++++++++++++++++++++::!::+IX++++++++++++++++o+++++++++++++++III+::!::+++++++++++++++++++++++++++++++++++++++::!::+++++++++++++++++++++++++++++++++++++++::!`:.+++++++++++++++++++++++++++++++++++++,:'!+`:.+VIII++++++++++++++++++++++++++IV++,:'!++`:.+++++++++++++++++++++++++++++++++,:'!++++`:..+++++++++++++++++++++++++++,,:'!+++++++`:..+VII++++++++++++++V++,,:'!++++++++++`::.+++++++VI++++++,::'!+++++++++++++``:::::::::::::''!
&CLOCK_FOLD Coyote Clock=[u(delim_replace,%0,mid(%1,0,2),mid(%1,2,2),mid(%1,4,1),!)]
&CREDITS Coyote Clock=Copyright 1995 CaerCoyote Ltd. < made by Coyote of TinyTIM >
&DELIM_REPLACE Coyote Clock=[replace(%0,%1,[mid(extract(%0,%1,1,%4),0,sub(%2,1))]%3[mid(extract(%0,%1,1,%4),%2,sub(strlen(extract(%0,%1,1,%4)),%2))],%4)]
@DESCRIBE Coyote Clock=[u(mantle)]%rType 'clockusage' for instructions.
@set Coyote Clock/DESCRIBE=no_command visual
&HOUR Coyote Clock=[setq(9,add(switch(lte(u(minute,%0),15),1,0,switch(gte(u(minute,%0),45),1,1,.5)),mid(convsecs(add(secs(),mul(%0,60))),11,2)))][switch(gt(%q9,12),1,sub(%q9,12),switch(lt(%q9,0.5),1,add(12,%q9),%q9))]
&L0.5_HR Coyote Clock=1023' 0923: 0823, 0824' 0724: 0624,
&L0_MN Coyote Clock=0922| 0822| 0722| 0622| 0522| 0422|
&L10.5_HR Coyote Clock=1021` 0920. 0919` 0818. 0817` 0716. 0715`
&L10_HR Coyote Clock=1021- 1020` 0919_ 0918. 0917- 0916` 0815_ 0814. 0813- 0812`
&L10_MN Coyote Clock=1023- 1024' 0925_ 0926, 0927- 0928' 0829_ 0830, 0831- 0832' 0733_ 0734, 0735- 0736'
&L11.5_HR Coyote Clock=1021` 0921: 0821. 0820` 0720: 0620.
&L11_HR Coyote Clock=0921& 0820& 0719& 0618&
&L12.5_MN Coyote Clock=1023- 1024- 1025' 0926_ 0927_ 0928_ 0929, 0930- 0931- 0932' 0833_ 0834_ 0835_ 0836, 0837- 0838-
&L12_HR Coyote Clock=0922| 0822| 0722| 0622|
&L1.5_HR Coyote Clock=1023' 0924, 0925' 0826, 0827' 0728, 0729'
&L15_MN Coyote Clock=1023- 1024- 1025- 1026- 1027- 1028- 1029- 1030- 1031- 1032- 1033- 1034- 1035- 1036- 1037- 1038-
&L17.5_MN Coyote Clock=1023- 1024- 1025. 1026_ 1027_ 1028_ 1129` 1130- 1131- 1132. 1133_ 1134_ 1135_ 1236` 1237- 1238-
&L1_HR Coyote Clock=0923/ 0824/ 0725/ 0626/
&L20_MN Coyote Clock=1023- 1024. 1125` 1126- 1127. 1128_ 1229` 1230- 1231. 1232_ 1333` 1334- 1335.
&L22.5_MN Coyote Clock=1023. 1124` 1125. 1226` 1227. 1328` 1329. 1430` 1431. 1532` 1533.
&L2.5_HR Coyote Clock=1023- 1024- 1025' 0926_ 0927_ 0928_ 0929, 0930- 0931- 0932'
&L2.5_MN Coyote Clock=1023' 0923: 0823, 0824' 0724: 0624, 0625' 0525: 0425, 0426' 0326:
&L25_MN Coyote Clock=1123& 1224& 1325& 1426& 1527& 1628&
&L27.5_MN Coyote Clock=1023. 1123: 1223` 1224. 1324: 1424` 1425. 1525: 1625` 1626. 1726:
&L2_HR Coyote Clock=1023- 1024' 0925_ 0926, 0927- 0928' 0829_ 0830, 0831- 0832'
&L30_MN Coyote Clock=1122| 1222| 1322| 1422| 1522| 1622|
&L32.5_MN Coyote Clock=1021, 1121: 1221' 1220, 1320: 1420' 1419, 1519: 1619' 1618, 1718:
&L3.5_HR Coyote Clock=1023- 1024- 1025. 1026_ 1027_ 1028_ 1129` 1130- 1131- 1132.
&L35_MN Coyote Clock=1121/ 1220/ 1319/ 1418/ 1517/ 1616/
&L37.5_MN Coyote Clock=1021, 1120' 1119, 1218' 1217, 1316' 1315, 1414' 1413, 1512' 1511,
&L3_HR Coyote Clock=1023- 1024- 1025- 1026- 1027- 1028- 1029- 1030- 1031- 1032- 1033-
&L40_MN Coyote Clock=1021- 1020, 1019_ 1118' 1117- 1116, 1115_ 1214' 1213- 1212, 1211_ 1310' 1309,
&L42.5_MN Coyote Clock=1021- 1020- 1019, 1018_ 1017_ 1016_ 1115' 1114- 1113- 1112, 1111_ 1110_ 1109_ 1208' 1207- 1206-
&L4.5_HR Coyote Clock=1023. 1124` 1125. 1226` 1227. 1328` 1329.
&L45_MN Coyote Clock=1021- 1020- 1019- 1018- 1017- 1016- 1015- 1014- 1013- 1012- 1011- 1010- 1009- 1008- 1007- 1006-
&L47.5_MN Coyote Clock=1021- 1020- 1019` 0918_ 0917_ 0916_ 0915. 0914- 0913- 0912` 0811_ 0810_ 0809_ 0808. 0807- 0806-
&L4_HR Coyote Clock=1023- 1024. 1125` 1126- 1127. 1128_ 1229` 1230- 1231. 1332`
&L50_MN Coyote Clock=1021- 1020` 0919_ 0918. 0917- 0916` 0815_ 0814. 0813- 0812` 0711_ 0710. 0709- 0708`
&L52.5_MN Coyote Clock=1021` 0920. 0919` 0818. 0817` 0716. 0715` 0614. 0613` 0512. 0511`
&L5.5_HR Coyote Clock=1023. 1123: 1223` 1224. 1324: 1424`
&L55_MN Coyote Clock=0921& 0820& 0719& 0618& 0517& 0416&
&L57.5_MN Coyote Clock=1021` 0921: 0821. 0820` 0720: 0620. 0619` 0519: 0419. 0418` 0318:
&L5_HR Coyote Clock=1123& 1224& 1325& 1426&
&L5_MN Coyote Clock=0923/ 0824/ 0725/ 0626/ 0527/ 0428/
&L6.5_HR Coyote Clock=1021, 1121: 1221' 1220, 1320: 1420'
&L6_HR Coyote Clock=1122| 1222| 1322| 1422|
&L7.5_HR Coyote Clock=1021, 1120' 1119, 1218' 1217, 1316' 1315,
&L7.5_MN Coyote Clock=1023' 0924, 0925' 0826, 0827' 0728, 0729' 0630, 0631' 0532, 0533'
&L7_HR Coyote Clock=1121/ 1220/ 1319/ 1418/
&L8.5_HR Coyote Clock=1021- 1020- 1019, 1018_ 1017_ 1016_ 1115' 1114- 1113- 1112,
&L8_HR Coyote Clock=1021- 1020, 1019_ 1118' 1117- 1116, 1115_ 1214' 1213- 1212,
&L9.5_HR Coyote Clock=1021- 1020- 1019` 0918_ 0917_ 0916_ 0915. 0914- 0913- 0912`
&L9_HR Coyote Clock=1021- 1020- 1019- 1018- 1017- 1016- 1015- 1014- 1013- 1012- 1011-
&MANTLE Coyote Clock=[setq(4,switch(%0,,%R,%R%0))]%q4[edit(edit(edit(fold(mantle_fold,[v(L[u(hour,%0)]_hr)] [v(L[u(minute,%0)]_mn)],v(mantleface)),!,%q4),+,%B),&,\\)]
&MANTLEFACE Coyote Clock=+++++++++++++++++++++++.:::::::::::::::::::::::::::.!++++++++++++++++++++..:::::::'++++++1+2++++++`:::::::..!++++++++++++++++++.::::::''++1+1+++++++++++++1++``::::::.!++++++++++++++++.:::::''++++++++++++++++++++++++++``::::::!+++++++++++++.::::::'+++++++++++++++++++++++++++++++`::::::.!++++++++++++.:::::'++1+0+++++++++++++++++++++++++++2++`:::::.!+++++++++++::::::'+++++++++++++++++++++++++++++++++++++`::::::!++++++++++:::::::+++++++++++++++++++++++++++++++++++++++:::::::!++++++++++:::::::+++++++++++++++++++++++++++++++++++++++:::::::!++++++++++:::::::+9+++++++++++++++++o+++++++++++++++++3+:::::::!++++++++++:::::::+++++++++++++++++++++++++++++++++++++++:::::::!++++++++++:::::::+++++++++++++++++++++++++++++++++++++++:::::::!++++++++++:::::::.+++++++++++++++++++++++++++++++++++++,:::::::!++++++....::::::::.++8+++++++++++++++++++++++++++++4++,::::::::....!+++.:::::::::::::::.+++++++++++++++++++++++++++++++++,:::::::::::::::.!+.:::::::::::::::::::..+++++++++++++++++++++++++++,,:::::::::::::::::::.!.:::::::::::::::::::::::..++7+++++++++++++++5++,,:::::::::::::::::::::::.!::::::::::::::::::::::::::::.+++++++6+++++++,::::::::::::::::::::::::::::!:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::!
&MANTLE_FOLD Coyote Clock=[u(delim_replace,%0,mid(%1,0,2),add(mid(%1,2,2),15),mid(%1,4,1),!)]
&MINUTE Coyote Clock=[u(round_2.5,mid(convsecs(add(secs(),mul(%0,60))),14,2))]
&NULL Coyote Clock=\
&ROMAN Coyote Clock=[setq(4,switch(%1,,%R,%R%1))]%q4[edit(edit(edit(fold(clock_fold,[v(L[u(hour,%0)]_hr)] [v(L[u(minute,%0)]_mn)],v(clockface_roman)),!,%q4),+,%B),&,\\)]
&ROUND_2.5 Coyote Clock=[setq(3,mul(2.5,round(fdiv(%0,2.5),0)))][switch(%q3,60,0,%q3)]
&USAGE Coyote Clock=$clockusage:@pemit %#=Four functions:%r\[u(clock/clock)\] shows a round analog clock.%R\[u(clock/mantle)\] shows a mantlepiece clock.%R\[u(clock/roman)\] shows a clock with Roman numerals.%r\[u(clock/blank)\] shows a blank round clock.%rAll four functions take up to two arguments:%R\First argument: the number of minutes the clock is off. So '5' means it's 5 minutes fast-- '-30' means it's half an hour slow.%rSecond argument: a string displayed before each line of the clock.%rExamples:%R\[u(clock/clock,-3)\] shows a normal clock that is 3 minutes slow.%r\[u(clock/blank,,\%B\%B\%B\%B)\] shows a blank clock, on-time, indented 4 spaces.