Dirrev.tf

From AvatarWiki
Revision as of 14:13, 17 September 2008 by Sulfar (talk | contribs) (New page: Bug reports, suggestions and/or diffs are appreciated, '''sulfar''' _AT_ ''inbox'' +DOT+ ''com'' Non issue: The script won't revert 3w200s, max supported is 99. <pre> /echo -aCyellow %% ...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Bug reports, suggestions and/or diffs are appreciated, sulfar _AT_ inbox +DOT+ com

Non issue: The script won't revert 3w200s, max supported is 99.

/echo -aCyellow %% /dirrev <path>     Revert speedwalk path

/def -i dirrev = \
    /set dir_str %1 %;\
    /set dir_length $[strlen(dir_str)] %;\
    /set double_digit=0%;\
    /set dir_rev=%;\
    /for c 0 $[dir_length-1] \
        /set position $$[dir_length-c] %%;\
        /set cur_char $$[substr(dir_str, position-1, 1)] %%;\
        /set new_char %%{cur_char} %%;\
        /if (cur_char =~ "e") /set new_char w %%;/endif %%;\
        /if (cur_char =~ "s") /set new_char n %%;/endif %%;\
        /if (cur_char =~ "w") /set new_char e %%;/endif %%;\
        /if (cur_char =~ "n") /set new_char s %%;/endif %%;\
        /if (cur_char =~ "u") /set new_char d %%;/endif %%;\
        /if (cur_char =~ "d") /set new_char u %%;/endif %%;\
        /if ((new_char =/ "[0-9]") & (!double_digit)) \
            /set dir_rev $$[strcat(substr(dir_rev, 0, c-1), new_char, substr(dir_rev, c-1, 1))] %%;\
            /if (substr(dir_str, position-2, 1) =/ "[0-9]") \
                /set dir_rev $$[strcat(substr(dir_rev, 0, c-1), substr(dir_str, position-2, 1), substr(dir_rev, c-1, 2))] %%;\
                /set double_digit 1 %%;\
            /endif %%;\
        /elseif ( regmatch("[nsewud]", new_char) ) \
            /set dir_rev $$[strcat(dir_rev, new_char)] %%;\
            /set double_digit 0 %%;\
        /endif %;\
    /echo %%% the reverse of %dir_str is %dir_rev