I am a totally newbie on Shot Objects...
t3h codezWhy when I run this script, after the boss show up, it freezes?
I got a chance to look over your code, and I've found a few issues.
1) As Iryan pointed out,
Obj_SetSpeed = 1 isn't the way to set object speed. Instead, use
Obj_SetSpeed(i, 1)2) More importantly, when you use
Obj_Create(OBJ_SHOT) you need to store the value that it returns, and use that as the object ID to pass the other
Obj_ functions. Have you seen the object shot tutorial I made (linked in my previous post)? It might help you get a better grip on using these.
Overall, it looks like you're trying to assume that the object shots you create are given the IDs 0 through 64 ... this is a bad assumption and is very likely what is causing the crash. You need to use and store the IDs returned from
Obj_Create(OBJ_SHOT) in order to properly refer to the object shots. Again, you can reference my object shot tutorial (linked in my previous post) for some basis on this.
Another hint - you don't need to store the angle of each shot. You can get is using the shot's ID with the function
Obj_GetAngle().
Unfortunately, I don't really have the time to get into a more in-dept debugging of it. I need to at least try and get some sleep for work

If you're still having trouble, I might be able to help out at a more detailed level sometime later in the week, assuming work leaves me with a decent amount of thought capacity

Hope this helps!
I recommend using an array
Now that you mention this, is it posible to use Linked Lists?
(A list made of Nodes, that works like an array but without a limit of objects)
Linked lists, by the standard definition, are not possible in Danmakufu. You'd need a reference type (pointers) to achieve this.
However, this is a moot point, since arrays in Danmakufu are dynamically resizable* (in that regard, they kind of are like linked lists).
The linked tutorial above gives a quick rundown of it, but here's the basics:
Declare your initial array:
let zomg_array = [999, 1234, 55555];You probably know this by now.
Add an element to the end of the array:
zomg_array = zomg_array ~ [7];Effectively, the
~ combines the two lists into one, larger list.
Remove an element from an array:
zomg_array = erase(zomg_array, 2);erase gives the list, with the indexed element removed.
You can do lots of complex stuff with arrays like this. However, one limitation, if I remember correctly, is that arrays must be homogenous - that is, all elements of the array must be the same type. So having an array such as:
let bad_array = [123, 'lol', 456, ':V', 789];wouldn't work.
*Technicality: okay, so really they're not, but you can easily create 'derivatives', so it works practically the same :V