fuzzball-muck / fuzzball

Ongoing development of the Fuzzball MUCK server software and associated functionality.
Other
46 stars 26 forks source link

Forcing a wiz to @toadplayer (SF Issue) #639

Open tanabi opened 3 years ago

tanabi commented 3 years ago

Attempting to go around the lack of toad player prim via wizz "@toad whomever" force crashes the muck.

This code crashes it:

: cleanupguest
5 sleep
me @ "@/guest" getpropstr strlen 0 = if "You're not a guest,
you almost got recycled, fun, fun, keep up the good work"
abort then
me @ awake? 0 > if "You are misusing this program." abort then
prog "_usercount" getpropval 1 - prog swap "_usercount" swap
setprop
forcewizz "@toad " me @ name strcat force
forcewizz "@recycle #" me @ intostr strcat force
;

Figured out it is actually a bug in recycling the leftover slimy toad left behind.

...

When the command to @toad the player runs, all of that player's programs should be removed from the timequeue, including the one that's currently running. Thus, it should not proceed past the initial @toading.

And if you want the TOADPLAYER primitive, recompile the server with SCARY_MUF_PRIMS set in config.h.

The best thing to do would be to @force the wizard to run a program that would @force him to do the toad, and then the @rec. This would prevent the current program from having issues.

I'm thinking about how this code is structured, and what it's supposed to do... not easy, since I don't know the interpreter that well yet.

rec commented 3 years ago

Just a note that every time you use a symbol like @rec (that's me) in an issue, you generate an email to that github account, so you sent four people email with that last one! :-D

(I'm used to this, and I consider it a bug in github, so don't lose any sleep over it.)

On Wed, Jul 7, 2021 at 3:36 AM tanabi @.***> wrote:

Attempting to go around the lack of toad player prim via wizz @.** https://github.com/toad whomever*" force crashes the muck.

This code crashes it:

: cleanupguest 5 sleep me @ "@/guest" getpropstr strlen 0 = if "You're not a guest, you almost got recycled, fun, fun, keep up the good work" abort then me @ awake? 0 > if "You are misusing this program." abort then prog "_usercount" getpropval 1 - prog swap "_usercount" swap setprop forcewizz @. " me @ name strcat force forcewizz @. #" me @ intostr strcat force ;

Figured out it is actually a bug in recycling the leftover slimy toad left behind.

...

When the command to @toad https://github.com/toad the player runs, all of that player's programs should be removed from the timequeue, including the one that's currently running. Thus, it should not proceed past the initial @toading https://github.com/toading.

And if you want the TOADPLAYER primitive, recompile the server with SCARY_MUF_PRIMS set in config.h.

The best thing to do would be to @force https://github.com/force the wizard to run a program that would @force https://github.com/force him to do the toad, and then the @rec https://github.com/rec. This would prevent the current program from having issues.

I'm thinking about how this code is structured, and what it's supposed to do... not easy, since I don't know the interpreter that well yet.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/fuzzball-muck/fuzzball/issues/639, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAB53MSVIXFI4KGAXMLN4C3TWOVRFANCNFSM475UVTGA .

-- /t

PGP Key: @.** https://tom.ritchford.com https://tom.ritchford.com https://tom.swirly.com https://tom.swirly.com*

wyld-sw commented 3 years ago

Once I found this out, I started trying to enclose those commands in backticks, like @who. I think this suppresses the notification... I don't always remember though!

tanabi commented 3 years ago

Sorry about that! I was copying a ton of issues over from an old SF project and unfortunately our system's commands feature the @ symbol all over the place. I probably should have escaped the whole thing in backticks.