Affects.tf

From AvatarWiki
Revision as of 06:30, 8 November 2008 by Sulfar (talk | contribs) (one regexp triggers wasnt really a regexp, anchored some others, and fixes 2 harmless bugs)
Jump to navigation Jump to search

Provides

  • custom colors of affects list
  • /aff <spell> shows affects list just for <spell>
  • /sick shows how sick you are
  • /chkaff shows which spells you are *not* affected by
  • Sanctuary ticker on the satus line
  • Spellup ticker on the status line

The tickers grab the duration of sanctuary and holy aura from the affects list, colors them and puts them in a status variable. It then uses tick.tf to make the tickers count down on the tick.

This script uses prompt.tf and tick.tf so you'll need those too. Also, you should have TINYPREFIX set in your config file, pointing at the directory with tf scripts like

/set TINYPREFIX=~/tinyfugue/
;Bug reports, suggestions and/or diffs are appreciated, '''sulfar''' _AT_ ''inbox'' +DOT+ ''com''

/require -q lisp.tf

/eval /require -q %{TINYPREFIX}prompt.tf
/eval /require -q %{TINYPREFIX}tick.tf

/echo -aCyellow %% /aff <spell>          Shows affects list for <spell>
/echo -aCyellow %% /sick                 Shows how sick you are
/echo -aCyellow %% /chkaff               Shows which spells you are *not* affected by

;I set my status line in a single command in my config file, this is what it
;  looks like with the right variables for this script:
;/status_add -c @more:8:Br @world:9 :1 status_sanctuary:3 :1 status_spellup:3 :1 status_position insert:2 :1 @clock:16


;Custom color the affects list..
;Paint all of the affects list green
/def -i -p999 -F -PCgreen -mregexp -t"^Spell: '.*" affects_green

;yellow for some spells i might want to check more than others
/def -i -p998 -F -PCyellow -mregexp -t"^Spell: '(steel|iron|bark|pass|fly|water|heigh|conc).*" affects_yellow

;white for spells i most probably want to find quickly
/def -i -p998 -F -PCwhite -mregexp -t"^Spell: '(sanc|regen|scramble|hand).*" affects_white

;You can "/aff sanc" and it'll only show the sanctuary line
;or use a regexp, "/aff sanc|fren"
/def -i aff = \
        /def -t"You are affected by:" _aff_affected = \
                /def -p900 -mregexp -t"^Spell: '%{1}.*" _aff_spell%%;\
                /def -p899 -ag -mregexp -t"^Spell: '" _aff_gag_other_affects%%;\
                /repeat -0.3 1 /undef _aff_affected _aff_spell _aff_gag_other_affects%;\
        affects

;Just a /sick macro.
/def -i sick = \
        /set sick_poison 0%;\
        /set sick_disease 0%;\
        /def -t"You are affected by:" _sick_affected = \
                /def -p900 -mregexp -t"^Spell: '(poison|toxin|biotoxin|venom)'.*" _sick_poison = /test $$$[++sick_poison] %%;\
                /def -p900 -mregexp -t"^Spell: '(virus|plague)'.*" _sick_disease = /test $$$[++sick_disease]%%;\
                /def -p899 -ag -mregexp -t"^Spell: '" _sick_gag_other_affects%%;\
                /repeat -0.3 1 \
                        /undef _sick_affected _sick_poison _sick_disease _sick_gag_other_affects%%%;\
                gtell %%%%% I am affected by: %%%sick_poison poisons and %%%sick_disease diseases%;\
        affects

;/chkaff will show you the spells from the chkaff_list by which
;you're *not* affected.
/def -i chkaff = \
        /set chkaff_list= |BR| sanctuary |R| awen foci fortitudes \
                invincibility barkskin steel_skeleton iron_skin |W| protection_evil bless holy_aura \
                holy_armor armor water_breathing energy_shield displacement body_brace \
                mental_barrier calcify_flesh biofeedback anticipate adrenaline_pump concentrate \
                pass_door fly shield stone_skin giant_strength |G| frenzy |B| heighten_senses%;\
        /set chkaff 1%;\
        affects

/def -i -E(chkaff) -p100 -F -t"You are affected by:" chkaff_affected = \
        /set prompt_exe chkaff

/def -i -E(chkaff) -p100 -F -mregexp -t"^Spell: '(.+)' .+" chkaff_spell = \
        /let affect=$[replace(" ", "_", {P1})]%;\
        /set chkaff_list=$(/remove %affect %chkaff_list)

/def -i -E(chkaff) -p991 -mglob -h'send PROMPT_EXE chkaff' chkaff_PROMPT_EXE = \
        /set prompt_exe=%;\
        /set chkaff 0%;\
        gtell %%% I am *not* affected by %chkaff_list

;Sanctuary ticker on the status line
/def -i -p999 -F -t"You are affected by:" = \
        /set sanctuary_duration=%;\
        /set spellup_duration=%;\
        /sanctuary_status%;\
        /spellup_status

/def -i -p999 -F -mregexp -t"^Spell: 'sanctuary'  for ([0-9]+) hours.$" aff_sanc = \
        /test sanctuary_duration:=strip_attr({P1})%;\
        /sanctuary_status

/def -i -p999 -F -t"The protective aura fades from around your body." sanctuary_fades = \
        /set sanctuary_duration=

/def -i -p991 -F -mglob -h'send TICK_EXE' sanctuary_tick = \
        /if (sanctuary_duration > 0) /test --sanctuary_duration%;\
        /else /set sanctuary_duration=%;\
        /endif%;\
        /sanctuary_status

/def -i sanctuary_status = \
        /set status_sanctuary \$%{sanctuary_duration}%;\
        /if (sanctuary_duration =~ "") \
                /set status_attr_var_status_sanctuary=%;\
        /elseif (sanctuary_duration == 0) \
                /set status_attr_var_status_sanctuary BCred%;\
        /elseif (sanctuary_duration <= 2) \
                /set status_attr_var_status_sanctuary Cred%;\
        /elseif (sanctuary_duration <= 5) \
                /set status_attr_var_status_sanctuary Cyellow%;\
        /else \ 
                /set status_attr_var_status_sanctuary=%;\
        /endif

/def -i -t"You are surrounded by a white aura." got_sanc = affects

;Do the same for holy aura to have a spellup ticker
/def -i -p999 -F -mregexp -t"^Spell: 'holy aura'  modifies armor class by -[0-9]+ for ([0-9]+) hours.$" aff_spellup = \
        /test spellup_duration:=strip_attr({P1})%;\
        /spellup_status

/def -i -p999 -F -t"Your Aura of Holiness fades..." spellup_fades = \
        /set spellup_duration=

/def -i -p991 -F -mglob -h'send TICK_EXE' spellup_tick = \
        /if (spellup_duration > 0) /test --spellup_duration%;\
        /else /set spellup_duration=%;\
        /endif%;\
        /spellup_status

/def spellup_status = \
        /set status_spellup s%{spellup_duration}%;\
        /if (spellup_duration =~ "") \
                /set status_attr_var_status_spellup=%;\
        /elseif (spellup_duration == 0) \
                /set status_attr_var_status_spellup BCred%;\
        /elseif (spellup_duration <= 1) \
                /set status_attr_var_status_spellup Cred%;\
        /elseif (spellup_duration <= 3) \
                /set status_attr_var_status_spellup Cyellow%;\
        /else \ 
                /set status_attr_var_status_spellup=%;\
        /endif