anchor.diff:  
   -module(psu_game).
   -export([start_link/1, cleanup/1]). %% External.
  --export([listen/2, accept/2, process_init/2, process/0, char_select/0, area_load/4, loop/1]). %% Internal.
  +-export([listen/2, accept/2, process_init/2, process/0, char_select/0, loop/1]). %% Internal.
   
   -include("include/records.hrl").
   -include("include/maps.hrl").
  
positive.code: %% @doc Movement (non-broadcast) handler. Do nothing.
  handle(16#0102, _) ->
  	ignore;
  
  %% @doc Shortcut changes handler. Do nothing.
  %% @todo Save it.
  handle(16#0302, _) ->
  	log("dismissed shortcut changes");
  
  %% @doc Chat broadcast handler. Dispatch the message to everyone (for now).
  %%      We must take extra precautions to handle different versions of the game correctly.
  
negative.code: 	end,
  	send(<< Packet/binary, 0:PaddingSize, Footer/binary >>).
  
  %% @todo No idea. Also the 2 PartyPos in the built packet more often than not match, but sometimes don't? That's probably because one is PartyPos and the other is LID or something.
  send_100f(NPCid, PartyPos) ->
  	send(<< (header(16#100f))/binary, NPCid:16/little-unsigned-integer, 1, PartyPos:8, PartyPos:32/little-unsigned-integer >>).
  
  