I can't give you much detail since I haven't worked much with achievements myself, but I can tell you where the hooks involving preamble.at exist.
In defaults.config we have:
/defaults.config:175: $achievementPreambleFile = "preamble.at";
which specifies the name of the preamble file. That file is concatenated
ahead of the source file for every achievement.
in lib/WeBWorK/AchievementEvaluator.pm:
/Volumes/WW_test/opt/webwork/webwork2_2014/lib/WeBWorK/AchievementEvaluator.pm:205: open(PREAMB, '<', "$ce->{courseDirs}->{achievements}/$ce->{achievementPreambleFile}");
Then the contents of the achievementPreambleFile is read into the string $preamble.
then
my $earned = $compartment->reval($preamble."\n".$source);
warn "There were errors in achievement $achievement_id\n".$@ if $@;
So I believe that creating a file preamble.at in the achievements directory and placing some code in the file that checks to see if the current set is the orientation set and then deciding whether or not to execute the rest of the achievement code would do what you want.
https://github.com/openwebwork/webwork2/blob/master/lib/WeBWorK/AchievementEvaluator.pm#L240
Let us know how this works out.