Glad 1 and 3 are sorted!
For 2, if it stops reacting to everything and not just the Attack collision, I think the loop itself has stopped running rather than something in the type 3 branch misfiring. The all enemy attack doesn’t check the Attack collision at all, so if that’s one of the things you tried, it should still land as long as the loop is going. My guess is it’s sitting on a wait somewhere that never finishes.
The part I haven’t seen is the attack logic at the top of the loop. Is there a Set Movement Route: This Event in there with Wait ticked, especially one with a step and Skip If Cannot Move off? A type 3 hit always pins the enemy right in front of the player, so I’m wondering if its own attack fires while it’s stuck there, tries to step onto the player’s tile, and retries that step forever. That could explain why only type 3 does this, since it’s the one hit that holds the enemy next to the player.
If nothing like that shows up, here’s a way to find where it stops. With just one enemy on the map, drop a few of these through the loop, numbered in order, one near the top, one after the attack logic, one after the hit section, one before Repeat Above:
◆Control Variables: #0XXX Loop Test = 1
Playtest, land a type 3, wait for it to go inert, then press F9 and check Loop Test. The number you see is the last checkpoint it got past, so the command it’s stuck on is somewhere between that one and the next.
Here’s the whole loop with the checkpoints and your D switch in. Parts in parentheses are your existing contents, unchanged:
◆Loop
◆Control Variables: #0XXX Loop Test = 1
(your attack logic, unchanged)
◆Control Variables: #0XXX Loop Test = 2
◆If: ATTACKING is ON
◆If: Self Switch B is OFF
◆Control Variables: #0192 SV: AtkCol X = Map X of Attack collision
◆Control Variables: #0193 SV: AtkCol Y = Map Y of Attack collision
◆If: ATTACK TYPE = 2
◆Control Variables: #0192 SV: AtkCol X = Map X of Player
◆Control Variables: #0193 SV: AtkCol Y = Map Y of Player
◆Control Variables: #0221 Hit Dir = Direction of Player
◆If: Hit Dir = 2
◆Control Variables: #0193 SV: AtkCol Y += 1
◆End
◆If: Hit Dir = 4
◆Control Variables: #0192 SV: AtkCol X -= 1
◆End
◆If: Hit Dir = 6
◆Control Variables: #0192 SV: AtkCol X += 1
◆End
◆If: Hit Dir = 8
◆Control Variables: #0193 SV: AtkCol Y -= 1
◆End
◆End
◆Control Variables: #0194 SV: My X = Map X of This Event
◆Control Variables: #0195 SV: My Y = Map Y of This Event
◆If: ATTACK TYPE = 4
◆Control Variables: #0189 SV: This event HP -= 25
◆Play SE: Blow1 (90, 150, 0)
◆Set Movement Route: This Event
: Blend Mode: Additive
: Wait: 30 frames
: Blend Mode: Normal
◆Control Self Switch: B = ON
◆End
◆If: SV: AtkCol X = SV: My X
◆If: SV: AtkCol Y = SV: My Y
◆If: ATTACK TYPE = 0
(your punch hit, unchanged)
◆End
◆If: ATTACK TYPE = 1
(your shield bounce, no Else)
◆End
◆If: ATTACK TYPE = 2
◆Control Variables: #0189 SV: This event HP -= 25
◆Control Variables: #0194 SV: My X = Math.round(this.character(0)._realX)
◆Control Variables: #0195 SV: My Y = Math.round(this.character(0)._realY)
◆Set Event Location: This Event, ({SV: My X},{SV: My Y})
◆Set Movement Route: This Event (Skip, Wait)
(your knockback route, unchanged)
◆End
◆If: ATTACK TYPE = 3
◆Common Event: DAMAGE SFX
◆Control Variables: #0189 SV: This event HP -= 25
◆Set Movement Route: This Event (Wait)
: Blend Mode: Additive
: Wait: 30 frames
: Blend Mode: Normal
◆Set Movement Route: This Event (Repeat)
: Wait: 1 frame
◆Control Self Switch: D = ON
◆End
◆If: ATTACK TYPE ≠ 1
◆If: ATTACK TYPE ≠ 3
◆Control Self Switch: B = ON
◆End
◆End
◆End
◆End
◆End
: Else
◆Control Self Switch: B = OFF
◆If: Self Switch D is ON
◆Set Movement Route: This Event
: Wait: 1 frame
◆Control Self Switch: D = OFF
◆End
◆End
◆Control Variables: #0XXX Loop Test = 3
(your HP 0 check and Break Loop, unchanged)
◆Control Variables: #0XXX Loop Test = 4
◆Repeat Above
Once you’ve found it, the four Loop Test lines can come back out.