Yea, I have a lot of good movement functions down in GS2 if you'd want to convert. Definitely makes it a lot easier. movedx (with wallcheck) movedy (with wallcheck) moveobj(tiles,dx,dy,object). tiles being an array of tiletypes to be considered walls. The trick is to add up the amount of distance you'd want to move in terms of x and y as separate variables and then putting it in the function. These functions can be integrated onto any existing movement system as well (won't make you go through walls unless your other movement is fundamentally flawed)
http://graal.net/snippet/detail.php?type=snippet&id=88
A few variables you'd want to define in your weapon NPC containing this script though (people often forget to).
this.offx (offset from natural x value of character/object to the point where you want to block)
this.offy (offset from natural y value of character/object to the point where you want to block)
this.w (width of the area being blocked)
this.h (height of the area being blocked)
you can change these if you want to do multiple movements of an object in the same script.