# HG changeset patch # User Matti Hamalainen # Date 1711386908 -7200 # Node ID fddc49a03f9ed9936d360dcfaf439555bd5ba508 # Parent 54a9a23d8df0f484519d1c66a858a50efa9cfed5 Refactor the target shape mangling. Unfortunately this breaks backwards compatibility with previous "fmt_shape" setting. You will need to update yours with the new tokens or remove it from configuration file to use the new default. diff -r 54a9a23d8df0 -r fddc49a03f9e ggrtf.tf --- a/ggrtf.tf Mon Mar 25 19:12:17 2024 +0200 +++ b/ggrtf.tf Mon Mar 25 19:15:08 2024 +0200 @@ -2068,7 +2068,7 @@ ;; Report shape ;@command /shape ;@desc Reports the last catched shape of a opponent (monster) in battle. -;@desc This does not work too well if you were fighting more than one opponents. +;@desc This does not work too well if you are fighting more than one opponents. /def -i shape =\ /if (battle_target!~"")\ /msr %{battle_shape} (%{battle_target})%;\ @@ -2078,16 +2078,8 @@ ;; Define shape formatting string /prdefvar -n"fmt_shape" \ - -v"@{Cgreen}%%{4} %%{5}@{n} [@{%%{1}}%%{2}@{n}] (@{%%{1}}%%{3}%%%@{n})" \ - -c"Format string for shape reporting. %{1}=shape colour, %{2}=shape short name, %{3}=percentage, %{4}=target name, %{5}=shape long name" - -;; Update/set new shape -/eval /def -i gbattle_ss =\ - /substitute -p %{fmt_shape}%%;\ - /if (battle_st)\ - /set battle_pshape=%%{battle_shape}%%;\ - /set battle_shape=%%{2}%%;\ - /endif + -v"@{Cgreen}$$[pad({bs_name},-40)}@{n} [@{%%{bc_color}}%%{bs_short}@{n}] (@{%%{bs_color}}%%{bs_range}%%%@{n})@{BCred}%%{bs_extra}@{n}" \ + -c"Format string for shape reporting. %{bs_name}=target name, %{bs_color}=shape color, %{bs_short}=shape short name, %{bs_long}=shape long name, %{bs_range}=percentage/range, %{bs_extra}=stunned etc" ;; (Re)initialize battle /def -i gbattle_init =\ @@ -2126,29 +2118,33 @@ /msk @{BCyellow}Targetting@{n} -> @{BCred}%{P1}@{n}%;\ /set battle_target=%{1} -;; Get shape -/def -i -F -p9999 -mregexp -t"^([A-Za-z ,.'-]+) is (in (a )?)?(excellent shape|good shape|slightly hurt|noticeably hurt|not in a good shape|bad shape|very bad shape|near death)\.$" gbattle_shape1 =\ - /if ({P4}=~"excellent shape") /test gbattle_ss("BCgreen","es","90-100",{P1},{P4})%;\ - /elseif ({P4}=~"good shape") /test gbattle_ss("Cgreen","gs","80-90",{P1},{P4})%;\ - /elseif ({P4}=~"slightly hurt") /test gbattle_ss("BCcyan","sh","65-80",{P1},{P4})%;\ - /elseif ({P4}=~"noticeably hurt") /test gbattle_ss("Ccyan","nh","50-65",{P1},{P4})%;\ - /elseif ({P4}=~"not in a good shape") /test gbattle_ss("BCyellow","nigs","35-50",{P1},{P4})%;\ - /elseif ({P4}=~"bad shape") /test gbattle_ss("Cyellow","bs","20-35",{P1},{P4})%;\ - /elseif ({P4}=~"very bad shape") /test gbattle_ss("BCred","vbs","10-20",{P1},{P4})%;\ - /elseif ({P4}=~"near death") /test gbattle_ss("Cred","nd","0-10",{P1},{P4})%;/endif - -/def -i -F -p9999 -mregexp -t"^([A-Za-z ,.'-]+) is (in (a )?)?(excellent shape|good shape|slightly hurt|noticeably hurt|not in a good shape|bad shape|very bad shape|near death) \(([0-9]+).\)\.$" gbattle_shape2 =\ - /if ({P4}=~"excellent shape") /test gbattle_ss("BCgreen","es",{P5},{P1},{P4})%;\ - /elseif ({P4}=~"good shape") /test gbattle_ss("Cgreen","gs",{P5},{P1},{P4})%;\ - /elseif ({P4}=~"slightly hurt") /test gbattle_ss("BCcyan","sh",{P5},{P1},{P4})%;\ - /elseif ({P4}=~"noticeably hurt") /test gbattle_ss("Ccyan","nh",{P5},{P1},{P4})%;\ - /elseif ({P4}=~"not in a good shape") /test gbattle_ss("BCyellow","nigs",{P5},{P1},{P4})%;\ - /elseif ({P4}=~"bad shape") /test gbattle_ss("Cyellow","bs",{P5},{P1},{P4})%;\ - /elseif ({P4}=~"very bad shape") /test gbattle_ss("BCred","vbs",{P5},{P1},{P4})%;\ - /elseif ({P4}=~"near death") /test gbattle_ss("Cred","nd",{P5},{P1},{P4})%;/endif - -;; Monster RIP does not necessarily end battle, but let's reset -;; the target at least. + +;; Get and mangle target(s) shape +/def -i gbattle_shape_mangle =\ + /let bs_name=%{1}%;\ + /let bs_long=%{2}%;\ + /let bs_perc=%{3}%;\ + /let bs_extra=%{4}%;\ + /if (battle_st)\ + /set battle_pshape=%{battle_shape}%;\ + /set battle_shape=%{bs_long}%;\ + /endif%;\ + /if (bs_long=~"excellent shape") /let bs_color=BCgreen%; /let bs_short=es%; /let bs_range=90-100%;\ + /elseif (bs_long=~"good shape") /let bs_color=Cgreen%; /let bs_short=gs%; /let bs_range=80-90%;\ + /elseif (bs_long=~"slightly hurt") /let bs_color=BCcyan%; /let bs_short=sh%; /let bs_range=65-80%;\ + /elseif (bs_long=~"noticeably hurt") /let bs_color=Ccyan%; /let bs_short=nh%; /let bs_range=50-65%;\ + /elseif (bs_long=~"not in a good shape") /let bs_color=BCyellow%;/let bs_short=nigs%;/let bs_range=35-50%;\ + /elseif (bs_long=~"bad shape") /let bs_color=Cyellow%; /let bs_short=bs%; /let bs_range=20-35%;\ + /elseif (bs_long=~"very bad shape") /let bs_color=BCred%; /let bs_short=vbs%; /let bs_range=10-20%;\ + /elseif (bs_long=~"near death") /let bs_color=Cred%; /let bs_short=nd%; /let bs_range=0-10%;/endif%;\ + /if (bs_perc!~"") /let bs_range=%{bs_perc}%;/endif%;\ + /eval /substitute -p %{fmt_shape} + +/def -i -F -p9999 -mregexp -t"^([A-Za-z ,.'-]+) is (in (a )?)?(excellent shape|good shape|slightly hurt|noticeably hurt|not in a good shape|bad shape|very bad shape|near death)( \(([0-9]+)%\))?(.*?)?\.$" gbattle_shape_match =\ + /test gbattle_shape_mangle({P1},{P4},{P6},{P7}) + + +;; Monster RIP does not necessarily end battle, but let's reset the target at least. /gdef -i -p9999 -aCgreen -mregexp -t"^[A-Za-z ,.'-]+ is DEAD, R.I.P.$" gbattle_rip =\ /set battle_target=%;\ /prexecfuncs %{event_battle_rip}