# Cool custom blocks! (Part 1)

I made some super cool custom blocks: project!
wait–is there 187 "showcased" custom blocks????

Some clever ideas here, but some debugging needed. The first block reports a list of numbers, not a string. The orange FOR block has the default values 1 and 10 built into the code instead of using the actual inputs. I don't understand the CATCH and THROW variants -- it seems to me that the THROW does nothing the first time and goes to the CATCH the second time, but I don't see why that would make sense.

Not a bug exactly, but that getter/setter block is hideously long; it takes all day to edit it. I would suggest at least splitting the huge list into categories, and find the category of the input block to see which subprocedure to call. Also, if instead of a list of getters per setter or vice versa you had multiple entries, each with one block, then you could use a backwards assoc (checking item 2 of the kv-pair) on one list per category instead of two. That would be especially good because I think you missed a few. :~)

Whoa! Really cool!

i'm kind of confused by that, can you just show me the edited script?

Nah, I don't care enough. But take the long scripts that make the huge lists, and change them to

set huge-list (append (motion setters) (looks setters) (sounds setters) ...)


and then make blocks motion setters etc. that just handle the blocks in that category. So you have eight manageable procedures instead of one enormous one.

(list (x position) (list (set x to) (change x by) (go to xy) ...))


you use individual entries

(list (x position) (set x to))    (list (x position) (change x by))    ...


and then you don't need two separate huge lists, because to get all the setters for a given getter you do

(keep (item 1 of ( )) = getter) long-list)


and to get all the getters for a given setter you do the same but with item 2 of.

After running catch and throw, running catch again resumes from the throw instead of starting over.

Sorry, I'm feeling stupid today; why is that desirable?

I don't know; I just thought it was something interesting to make. A purpose for it could theoretically exist.

Thanks! just added dictionary and permanent clones/sprite blocks!

You could have just edited your thingymajig... comment.

ah, sorry.

how did you get the obsolete/unidentified blocks?

just make a custom block, put another custom block inside it, export the first block but not the second one, import the first into a project and the block inside it should be obsolete

thanks

fire Alonzo can't hurt you, he's not real
fire Alonzo:

water alonzo

the blue value is above 255

oh, but it still looks like alonzo but water

should be called

ill change it! wait–where is that block