echo [> ] Start Upload: Macros @set me=/_msgmacs/b-choices:{nl}<-> Blockable choices: {commas:{filter:blkd,{listprops:desc/clothing,{o}},{and:{prop:{&blkd}/whereworn#,{o}},{not:{prop:{&blkd}/blocked,{o}}},{not:{prop:{&blkd}/padlocked,{o}}}}}, or ,path,{subst:{&path},desc/clothing/,}} @set me=/_msgmacs/block:{if:{prop:/desc/clothing/{:1}/whereworn#,{o}},{if:{not:{prop:/desc/clothing/{:1}/padlocked,{o}}},{if:{not:{prop:/desc/clothing/{:1}/blocked,{o}}},-=> '{:1}' blocked.{null:{if:{ne:{name:me},{name:{o}}},{tell:-=> {name:me} has blocked your {prop:/desc/clothing/{:1}/name,{o}}.,{o}}}{stripclothing:{:1}}{store:yes,/desc/clothing/{:1}/blocked,{o}}},[*] '{:1}' already blocked.},[*] '{:1}' is padlocked and cannot be blocked.},[*] '{:1}' is not a valid article of clothing.} @set me=/_msgmacs/bodypart:{if:{prop:desc/wearing/{:1},this},{clothing-check:{:1},{:2}},{exec:desc/morph/{morph}/{:2}/{:1},this}} @set me=/_msgmacs/c-choices:{nl}<-> Clothing choices: {commas:{filter:nonblank,{lremove:{parse:path,{listprops:desc/clothing,{o}},{if:{prop:{&path}/whereworn#,{o}},{subst:{&path},desc/clothing/,}}},{parse:stuff,{listprops:/desc/wearing,{o}},{prop:{&stuff},{o}}}\r{parse:morestuff,{filter:blkd,{listprops:desc/clothing,{o}},{and:{prop:{&blkd}/whereworn#,{o}},{prop:{&blkd}/blocked,{o}}}},{subst:{&morestuff},desc/clothing/,}}},{&nonblank}}, or } @set me=/_msgmacs/clothing-check:{exec:desc/clothing/{prop:desc/wearing/{:1},this}/desc/{:2}/{:1}} @set me=/_msgmacs/m-choices:{nl}<-> Morph choices: {commas:{lremove:{parse:path,{listprops:/desc/morph,{o}},{morphname:{subst:{&path},/desc/morph/,}}},{morphname}}, or } @set me=/_msgmacs/morph:{prop:desc/currentmorph,{o}} @set me=/_msgmacs/morphname:{if:{prop:/desc/morph/{:1}/name,{o}},{prop:/desc/morph/{:1}/name,{o}},{if:{:1},{:1},{if:{prop:/desc/morph/{prop:desc/currentmorph,{o}}/name,{o}},{prop:/desc/morph/{prop:desc/currentmorph,{o}}/name,{o}},{prop:desc/currentmorph,{o}}}}} @set me=/_msgmacs/morphprop:{store:{default:{prop:desc/morph/{:1}/{:2},{o}},{prop:{:2},{o}}},{:2},{o}} @set me=/_msgmacs/o-choices:{nl}<-> Outfit choices: {commas:{lremove:{parse:opath,{listprops:/desc/outfit,{o}},{subst:{&opath},/desc/outfit/,}},{prop:/desc/currentoutfit,{o}}}, or } @set me=/_msgmacs/o:{owner:this} @set me=/_msgmacs/p-choices:{nl}<-> Padlockable choices: {commas:{filter:able,{listprops:desc/clothing,{o}},{and:{prop:{&able}/whereworn#,{o}},{prop:{&able}/lockable,{o}},{not:{prop:{&able}/padlocked,{o}}},{not:{prop:{&able}/blocked,{o}}}}}, or ,trim,{subst:{&trim},desc/clothing/,}} @set me=/_msgmacs/padblock:cannot be {default:{:2},worn} due to padlocked item(s) {commas:{parse:a,{list:/desc/clothing/{:1}/whereworn,{o}},{prop:/desc/wearing/{&a},{o}}}} @set me=/_msgmacs/padlock:{if:{prop:/desc/clothing/{:1}/whereworn#,{o}},{if:{not:{prop:/desc/clothing/{:1}/blocked,{o}}},{if:{prop:/desc/clothing/{:1}/lockable,{o}},{if:{not:{prop:/desc/clothing/{:1}/padlocked,{o}}},{if:{not:{parse:a,{list:/desc/clothing/{:1}/whereworn,{o}},{prop:/desc/clothing/{prop:/desc/wearing/{&a},{o}}/padlocked,{o}}}},-=> '{:1}' padlocked by {store:{name:me},/desc/clothing/{:1}/padlocked,{o}}.{null:{wearclothing:{:1}}{if:{ne:{name:me},{name:{o}}},{tell:-=> {name:me} has padlocked your {prop:/desc/clothing/{:1}/name,{o}}.,{o}}}},[*] '{:1}' {padblock:{:1},padlocked}.},[*] '{:1}' already padlocked by {prop:/desc/clothing/{:1}/padlocked,{o}}.},[*] '{:1}' is not lockable.},[*] '{:1}' has been blocked from use.},[*] '{:1}' is not a valid article of clothing.} @set me=/_msgmacs/padwho:{with:d,{prop:/desc/clothing/{:1}/padlocked,{o}},{if:{and:{&d},{ne:{&d},{name:{owner:this}}}}, [{&d}]}} @set me=/_msgmacs/setmorph:{if:{:1},{if:{ne:{:1},{morph}},{if:{filter:realmorph,{listprops:/desc/morph,{o}},{eq:{:1},{subst:{&realmorph},/desc/morph/,}}},-=> {if:{eq:{name:{o}},{name:me}},You change into your,{null:{tell:-=> {name:me} just changed your morph to {:1}.,{o}}}{name:{o}} changes into {pronouns:%p,{o}}} {store:{:1},desc/currentmorph,{o}} morph of sex {morphprop:{:1},sex} and species {morphprop:{:1},species}.{null:{morphprop:{:1},_scent}},[*] '{:1}' is not a valid morph.{m-choices}},[*] {if:{eq:{name:{o}},{name:me}},You are already in your,{name:{o}} is already in {pronouns:%p,{o}}} {morphname} morph.{m-choices}},<=> {if:{eq:{name:{o}},{name:me}},You are in your,{name:{o}} is in {pronouns:%p,{o}}} {morphname} morph.{m-choices}} @set me=/_msgmacs/stripall:{if:{listprops:/desc/wearing,{o}},{null:{parse:tease,{lunique:{parse:items,{listprops:/desc/wearing,{o}},{prop:{&items},{o}}}},{stripclothing:{&tease}}}}{if:{listprops:/desc/wearing,{o}},[*] Padlocked item(s) {commas:{lunique:{parse:a,{listprops:/desc/wearing,{o}},{prop:/desc/clothing/{prop:{&a},{o}}/name,{o}}}}} were not stripped.},[*] {if:{eq:{name:{o}},{name:me}},You're,{name:{o}} is} already naked.}{store:,/desc/currentoutfit,{o}} @set me=/_msgmacs/stripclothing:{if:{filter:check,{listprops:desc/wearing,{o}},{eq:{:1},{prop:{&check},{o}}}},{if:{not:{prop:/desc/clothing/{:1}/padlocked,{o}}},{null:{tell:<=- {if:{eq:{name:{o}},{name:me}},You take off your,{null:{tell:<=- {name:me} has you take off your {prop:desc/clothing/{:1}/name,{o}}.,{o}}}{name:{o}} takes off {pronouns:%p,{o}}} {prop:desc/clothing/{:1}/name,{o}}.}{parse:sbodypart,{filter:true,{listprops:desc/wearing,{o}},{eq:{:1},{prop:{&true},{o}}}},{store:,{&sbodypart},{o}}}},[*] '{:1}' is padlocked.},{if:{prop:/desc/clothing/{:1}/whereworn#,{o}},[*] {if:{eq:{name:{o}},{name:me}},You're,{name:{o}} is} not wearing '{:1}'.,[*] '{:1}' is not a valid article of clothing.}} @set me=/_msgmacs/stripoutfit:{if:{prop:desc/currentoutfit,{o}},{null:{tell:<=- {if:{eq:{name:{o}},{name:me}},You take off your,{null:{tell:<=- {name:me} has you take off your {prop:desc/currentoutfit,{o}} outfit.,{o}}}{name:{o}} takes off {pronouns:%p,{o}}} {prop:desc/currentoutfit,{o}} outfit.}{parse:soutfit,{sublist:{list:/desc/outfit/{prop:desc/currentoutfit,{o}}/clothing,{o}},-1,1},{stripclothing:{&soutfit}}}}{store:,desc/currentoutfit,{o}},[*] {if:{eq:{name:{o}},{name:me}},You're,{name:{o}} is} not wearing an outfit.} @set me=/_msgmacs/ub-choices:{nl}<-> Blocked choices: {with:list,{commas:{filter:blkd,{listprops:desc/clothing,{o}},{and:{prop:{&blkd}/whereworn#,{o}},{prop:{&blkd}/blocked,{o}}}}, or ,trim,{subst:{&trim},desc/clothing/,}},{if:{&list},{&list},nothing blocked}} @set me=/_msgmacs/unblock:{if:{prop:/desc/clothing/{:1}/whereworn#,{o}},{if:{prop:/desc/clothing/{:1}/blocked,{o}},<=- '{:1}' unblocked.{null:{store:,/desc/clothing/{:1}/blocked,{o}}{if:{ne:{name:me},{name:{o}}},{tell:<=- {name:me} has unblocked your {prop:/desc/clothing/{:1}/name,{o}}.,{o}}}},[*] '{:1}' wasn't blocked.},[*] '{:1}' is not a valid article of clothing.} @set me=/_msgmacs/unpadlock:{if:{prop:/desc/clothing/{:1}/whereworn#,{o}},{if:{prop:/desc/clothing/{:1}/padlocked,{o}},{if:{eq:{prop:/desc/clothing/{:1}/padlocked,{o}},{name:me}},<=- '{:1}' unpadlocked.{null:{store:,/desc/clothing/{:1}/padlocked,{o}}{if:{ne:{name:me},{name:{o}}},{tell:<=- {name:me} has unpadlocked your {prop:/desc/clothing/{:1}/name,{o}}.,{o}}}},{if:{:2},<=- '{:1}' [{prop:/desc/clothing/{:1}/padlocked,{o}}] forcibly unpadlocked.{null:{if:{ne:{name:me},{name:{o}}},{tell:<=- {name:me} has forcibly unpadlocked your {prop:/desc/clothing/{:1}/name,{o}} [{prop:/desc/clothing/{:1}/padlocked,{o}}].,{o}}}{store:,/desc/clothing/{:1}/padlocked,{o}}},[*] '{:1}' padlocked by [{prop:/desc/clothing/{:1}/padlocked,{o}}].}},{if:{eq:{prop:/desc/clothing/{:1}/lockable,{o}},yes},[*] '{:1}' wasn't padlocked.,[*] '{:1}' is not lockable.}},[*] '{:1}' is not a valid article of clothing.} @set me=/_msgmacs/up-choices:{nl}<-> Padlocked choices: {with:list,{commas:{filter:plkd,{lunique:{parse:stuff,{listprops:/desc/wearing,{o}},{prop:{&stuff},{o}}}},{prop:/desc/clothing/{&plkd}/padlocked,{o}}}, or ,trim,{&trim} [{prop:/desc/clothing/{&trim}/padlocked,{o}}]},{if:{&list},{&list},nothing padlocked}} @set me=/_msgmacs/wearclothing:{if:{prop:desc/clothing/{:1}/whereworn#,{o}},{if:{not:{prop:/desc/clothing/{:1}/blocked,{o}}},{if:{ne:{prop:/desc/wearing/{prop:/desc/clothing/{:1}/whereworn#/1,{o}},{o}},{:1}},{if:{not:{parse:a,{list:/desc/clothing/{:1}/whereworn,{o}},{prop:/desc/clothing/{prop:/desc/wearing/{&a},{o}}/padlocked,{o}}}},{null:{parse:w,{list:/desc/clothing/{:1}/whereworn,{o}},{if:{prop:desc/wearing/{&w},{o}},{stripclothing:{prop:desc/wearing/{&w},{o}}}}{store:{:1},desc/wearing/{&w},{o}}}{tell:-=> {if:{eq:{name:{o}},{name:me}},You put on your,{null:{tell:-=> {name:me} has you put on your {prop:desc/clothing/{:1}/name,{o}}.,{o}}}{name:{o}} puts on {pronouns:%p,{o}}} {prop:desc/clothing/{:1}/name,{o}}.}},[*] '{:1}' {padblock:{:1}}.},[*] {if:{eq:{name:{o}},{name:me}},You are already wearing your,{name:{o}} is already wearing {pronouns:%p,{o}}} {prop:desc/clothing/{:1}/name,{o}}.},[*] '{:1}' has been blocked.},[*] '{:1}' is not a valid article of clothing.} @set me=/_msgmacs/wearing-readout:{if:{propdir:desc/wearing,{o}},{commas:{with:worn,{lunique:{parse:stuff,{listprops:desc/wearing,{o}},{prop:/desc/clothing/{prop:{&stuff},{o}}/name,{o}}}},{if:{prop:desc/currentoutfit,{o}},{lremove:{&worn}\r{if:{eq:{name:{o}},{name:me}},your,{pronouns:%p,{o}}} {prop:desc/currentoutfit,{o}} outfit,{parse:nostuff,{list:/desc/outfit/{prop:desc/currentoutfit,{o}}/clothing,{o}},{prop:/desc/clothing/{&nostuff}/name,{o}}}},{&worn}}}},nothing worn} @set me=/_msgmacs/wearing-strip:{nl}{if:{propdir:desc/wearing,{o}},<=> {if:{eq:{name:{o}},{name:me}},You,{name:{o}}} {with:list,{commas:{filter:nonblank,{lunique:{parse:stuff,{listprops:desc/wearing,{o}},{if:{not:{prop:/desc/clothing/{prop:{&stuff},{o}}/padlocked,{o}}},{prop:{&stuff},{o}}}}},{&nonblank}}, or },{if:{&list},can strip {&list},cannot strip the remaining padlocked item(s) {commas:{filter:plkd,{lunique:{parse:stuff,{listprops:/desc/wearing,{o}},{prop:{&stuff},{o}}}},{prop:/desc/clothing/{&plkd}/padlocked,{o}}}, or ,trim,{&trim} [{prop:/desc/clothing/{&trim}/padlocked,{o}}]}}}.,[*] {if:{eq:{name:{o}},{name:me}},You're,{name:{o}} is} not wearing anything.} @set me=/_msgmacs/wearing:{nl}{if:{propdir:desc/wearing,{o}},<=> {if:{eq:{name:{o}},{name:me}},You are,{name:{o}} is} wearing {commas:{with:worn,{lunique:{parse:stuff,{listprops:desc/wearing,{o}},{prop:/desc/clothing/{prop:{&stuff},{o}}/name,{o}}{padwho:{prop:{&stuff},{o}}}}},{if:{prop:desc/currentoutfit,{o}},{lremove:{&worn}\r{if:{eq:{name:{o}},{name:me}},your,{pronouns:%p,{o}}} {prop:desc/currentoutfit,{o}} outfit{with:minus,{lremove:{list:/desc/outfit/{prop:desc/currentoutfit,{o}}/clothing,{o}},{parse:stuff,{listprops:desc/wearing,{o}},{prop:{&stuff},{o}}}},{if:{&minus}, (minus {commas:{parse:p,{&minus},{prop:/desc/clothing/{&p}/name,{o}}}})}},{parse:nostuff,{list:/desc/outfit/{prop:desc/currentoutfit,{o}}/clothing,{o}},{prop:/desc/clothing/{&nostuff}/name,{o}}{padwho:{&nostuff}}}},{&worn}}}}.,[*] {if:{eq:{name:{o}},{name:me}},You're,{name:{o}} is} not wearing anything.} @set me=/_msgmacs/wearoutfit:{if:{prop:desc/outfit/{:1}/clothing#,{o}},{if:{ne:{prop:desc/currentoutfit,{o}},{:1}},{null:{stripoutfit}{tell:-=> {if:{eq:{name:{o}},{name:me}},You put on your,{null:{tell:-=> {name:me} has you put on your {:1} outfit.,{o}}}{name:{o}} puts on {pronouns:%p,{o}}} {store:{:1},desc/currentoutfit,{o}} outfit.}},[*] {if:{eq:{name:{o}},{name:me}},You are already wearing your,{name:{o}} is already wearing {pronouns:%p,{o}}} {prop:desc/currentoutfit,{o}} outfit.}{null:{parse:woutfit,{list:/desc/outfit/{:1}/clothing,{o}},{wearclothing:{&woutfit}}}},[*] '{:1}' is not a valid outfit.} echo [---->] End Upload (30 lines)