Sounds good. Suggestion of a change though; instead of using tmp2 to repel it could use a strength system similar to how gpmp reacts based on it's temperature, Negative would repel and positive would pull.
Edit: This could be basically a modifed gpmp, where you set gpmp's ctype to what you want attracted/repelled and instead of tmp it could use temp just as gpmp does.
Neutron....Cannon....Destroyed....Wall....