Files
siliconsGitHubVM_USER <VM_USER>
255a99617b smooth movement (#4880)
Co-authored-by: VM_USER <VM_USER>
2022-12-27 15:22:10 -06:00

25 lines
959 B
Plaintext

// You might be wondering why this isn't client level. If focus is null, we don't want you to move.
// Only way to do that is to tie the behavior into the focus's keyLoop().
/atom/movable/keyLoop(client/user)
if(user.keys_held["Ctrl"])
return
var/movement_dir = NONE
for(var/_key in user.keys_held)
movement_dir = movement_dir | user.movement_keys[_key]
if(user.next_move_dir_add)
movement_dir |= user.next_move_dir_add
if(user.next_move_dir_sub)
movement_dir &= ~user.next_move_dir_sub
// Sanity checks in case you hold left and right and up to make sure you only go up
if((movement_dir & NORTH) && (movement_dir & SOUTH))
movement_dir &= ~(NORTH|SOUTH)
if((movement_dir & EAST) && (movement_dir & WEST))
movement_dir &= ~(EAST|WEST)
if(!movement_dir)
// ok but also reset this lol
user.next_move_dir_add = NONE
user.next_move_dir_sub = NONE
return // WHY are you running?
user.Move(get_step(src, movement_dir), movement_dir)