From 54203ff0369cd491a2a9b2d5ffa244cbe93cf28f Mon Sep 17 00:00:00 2001 From: mgleed Date: Wed, 9 Mar 2022 15:39:44 -0500 Subject: [PATCH] Bugfix: Chicken if stats/skill icons pop up to avoid accidental allocations (#618) * init * simplify * undo --- assets/templates/ui/view/quest_skill_btn.png | Bin 0 -> 4971 bytes config/game.ini | 1 + src/health_manager.py | 10 +++++----- src/ui_manager.py | 6 ++++++ 4 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 assets/templates/ui/view/quest_skill_btn.png diff --git a/assets/templates/ui/view/quest_skill_btn.png b/assets/templates/ui/view/quest_skill_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..4224fe2da9ed111b22dd1d8cfa3524dbdfd27c6d GIT binary patch literal 4971 zcmcIoc{r5o-yahiMb^qvjFBS7%rn**J7dkh4hpl`nK3gAD$!ysazZ4LB}}$cDP>8T zd!65T&p+>6*E7%k-1EIZ-_QN|exC1rU6W{MV?1T^Q7#qziLZw?cR{+5<+p-c2Hvq zjSSUP0pLU=5((8rs}PVrS_Cp$8Hz%p00e+SAhqBC8Up|r6bky|1LLHlk$f-?SkoWL zI8VATKL&$}K_Hk+rV3M4g+lX10BAHCfkYutC^#nqPLB*>;3ME6bh)1hSTdbR^QSWW zDIw4eL_C2K#?XavsD9r=F!dK~2>pjn9K{e3cq#%=L2m5nXP~w9KZgbf|B9wFOu{)? ze(?QUV7gNzm5gv8(fr**U$fhA&K}aAvKH^^i3WT z5kU?j2XnCLoLJx+KPtwUM#eKJG$#rr=x3$uerANCR8>$=1y}zN5`{@u++g%$0U3*D zkac04s-fUWRX7su1gK$9Y8a$C9I1{$BEN@PbBsX3Gw}Z|m_qXRiTpRA*47w{5IO@N zLL^&YbzvM*D*pZ?jE_2i2DAv8a32B^4Od61k>FYY5`Y650GUA0AQ4b%z&Bo;^;ilq zY(t5S_1}FD70Wa$3OnTcwaJt8sfX*W)3=M7v}zSPU#|lydRF_&>y29f9N;U zVerHauj|5y8$~9QU_Yk)|3gsS!G}#AEROeWffFf$Z)$jm;geL%KJQ4YwMUelWSU-)a0T9Rl zS(6A?Bl+MtO;?Qw$D_zZj@32r8ma(**V0h`%j$2t`A!P)&+NZN{-xFal!DX0H-^7X z4$i}`vxgkQk&VVVS(J{NaSkm0APcOa6YiABdAHM(uAvWXdmEP5gBuWUUz4+ZG*W$M z=TF~DYD!7tM{Q}zgi}TC9Y|NO1ly;d^uBEFCJif4u7|dxjJRawh0xoeMon5v0|Nt> z=Hn!~8kx4s3m+CgRIJYpdt_`LD!62``>T`SBDKi)QO(ZZVh>&2*Qgu4uts<-5N!2n zuD9j+To9U3d4XgX^~NY;xR}XHxm}35nNyQPVRm%a8a~{!sd2=*s`Acb`$P%BRN9~h z@vsp+a?TZDJsi#?2b^y?NRaHS^p_94AD`6T)m@nPY_*uO-t$SccV4jU2BaAAQc~4U zP>ZK|B5!b|kTeA{`e1w(0J(j)y$mE)E0zo$W&47}FZbg3QKJ7ZGPCk@G&UUAkO%bxGfjtWG%gxiBwJ zX*^RfCHK(ufQ~o4E|C9{=ZpHXK^>j+i*K>9dlMz(-zM=(F2%5X0PbSH>sBcJ+i_m9kSOXOV`IZPey z3w+xIzfyB(;ZBS13aveE=w_I&4&S?QZ9O zL6y(Q-x64-`T3jf#f<;^T4mQ@cA_Dy_p)0m3s~*#EF~4mR9J@ zKG$s+XqPk&OC1mxj5wiG9w0j&+zbZ@!D`QB=-@stg+3A=Var{awHZT5rma;cmx?rtE1lP7VpWr>#3-iAkJ z_fhtBawn#|CeVF(O))1KB!1wV)%_$p=^Z~Bq#`Bn~z+MHEVcFQ$!PWWI{!3pj4615}`}Mz9+F2L> zCR{f4@Jx8c`!}BZMA|L;v=yt!4nYUuv0uA~+ew(809XaJW?%^PFIP`I_% zYc{W}Xhn=^qV!7J?<1=Zz1(51+V@?eM9<53?y7P(bJBEys88Y_N@LtY4a3f=wcvb( z*zsE0+Ltl{R`u#b#{vinn`sX+b~(2fDucp!xRbiAZiFZ*EcN*%%x1$vG&QBRYp^$q zsE#Y_gtyTYEN&j4=$HyriE$Yy`8^Wn&9FanZ{G2$8M9Y{WmNQ%_i4U5^NjO5>5AYj zJ6Xj|h8IhD3JMaYxh<4c?@^W8nhgW3OnMxeIv#a+oE3bgTzvXTN^LMh>&#<-)gmCGy{s)WnKQg)SYxZx5YXo(?Ke4Yq<0gsBaJ0ugCD@tv2l?;Kt(bcoNjXMAT%GZPCwmj-TCYH%@&k>nBvkK5~qFWbjI@K~~uXfi7u%XJA5 zzir@De);;=x!9!NU%=Mh*CB9|Is5Ae7VCH=r!b0QD~zwhg70251RgnDUH!+vZnM;D zzkB55$PtORyzbD(hf~YFyuP%_48IZ4Mge7)JFbmQ<}h=Qe*E(2uy0#@>aN3!$1AUd z@$t2$VJ5?c*T=h}-%##;mXpF}-jow#Um>uCB~M;?`F{A1ipdXSi*MqWY=T0{YtKkM zrHgj%P;y12rn){GlCm^RJ~bJICl}p*HZw8$;k9N+UD(nC(s`TUl)jZ`rj){+Ei=3YUG>y!4oS8XgIoKVsO1dQV|GkapSfq7`J(}P;L6eX z7N;~EAzz|E$n7^v*{)oxiE7>J8L2=gJhQVqqqu5juq0)RO#eGs+G;GVa&<NZEH#Rz4r^Kal01h6hy#W!_ABeuC36Y9_LA!VO7) z6C@6>Olc7NQN*^CxZ_xSo@OnYb5B`-VYO@z`Drgpi1Tm}2_t}GwW3^>VU zcHycYw_U_Q^o|+6DZ@bn5ZF1!ya=?(^N+O3r~sZ9qkd1Ho~ydGX(3Jf;gWS<?0&cE1Iau3?p5i9Utx19ds$48*qbqhiqGHoY zlWBW%CDfvT)RgX-14cLM0z{9WxMCD$42T%hi;aY1xDNE)H{{17Y-YNxQbCb7Y zdm#cz`IcDLbfRg&7NL8MVq7fVSDjy`0*9=!7(L$UEK;py0xQmLzxLd3L)5no(yr!Gv)ps8o?qqnU9aNKm$^Hf z)bb9#B8v~ae5#a~#Da!*L-%*ca`zUwu?J%Vl$6RRU~Nug{1flK+E-J2{6Y&UXGT5u zf@b<4W6Lgggm*cEz}_)2mzr?~AY%xNm%B8EU+6LjFcjO-#>Okj37rF%n=kk7QUt-k z+B@)d#BS+}GGFo>=cL@G%_OcXvw4;Gg9@6dV=?*7?99txpE~t8r`%$D?z!JV@1oPX1?4uRR9axnmSW@>y8c7Fg+VbLZ^~ zdS>>{T;frhCnX>thFY&6IYwhfd3XGa!GuKuZ-mTAn%{@?3=f5jQVry=6+QY%4*ZaFX zrE+shZBuBYRTu9JynApDudSzlNM>lAO|%UOe_AdUHLkgw=cV+_A8HKj7d3GXgn$VN z-nBj`ggrjtM3U?_kz84b7)Z$3@N6k(rhu?q>M_F|%c^&6E^IuTpgaEn literal 0 HcmV?d00001 diff --git a/config/game.ini b/config/game.ini index b925c51..33c30c4 100644 --- a/config/game.ini +++ b/config/game.ini @@ -129,6 +129,7 @@ left_panel_header=0,0,450,54 right_panel_header=830,0,450,54 npc_dialogue=458,4,21,140 bind_skill=516,619,251,29 +quest_skill_btn=284,455,710,121 [path] ; static pathes in format: x0,y0, x1,y1, x2,y2, ... diff --git a/src/health_manager.py b/src/health_manager.py index c7b63ba..8bfc27b 100644 --- a/src/health_manager.py +++ b/src/health_manager.py @@ -76,9 +76,7 @@ class HealthManager: # Wait until the flag is reset by main.py if self._did_chicken or self._pausing: continue img = grab() - # TODO: Check if in town or not! Otherwise risk endless chicken loop - match = detect_screen_object(ScreenObjects.InGame, img) - if match.valid: + if detect_screen_object(ScreenObjects.InGame, img).valid: health_percentage = meters.get_health(img) mana_percentage = meters.get_mana(img) # check rejuv @@ -105,8 +103,7 @@ class HealthManager: belt.drink_potion("mana", stats=[health_percentage, mana_percentage]) self._last_mana = time.time() # check merc - match = detect_screen_object(ScreenObjects.MercIcon) - if match.valid: + if detect_screen_object(ScreenObjects.MercIcon, img).valid: merc_health_percentage = meters.get_merc_health(img) last_drink = time.time() - self._last_merc_heal if merc_health_percentage < Config().char["merc_chicken"]: @@ -118,6 +115,9 @@ class HealthManager: elif merc_health_percentage < Config().char["heal_merc"] and last_drink > 7.0: belt.drink_potion("health", merc=True, stats=[merc_health_percentage]) self._last_merc_heal = time.time() + if detect_screen_object(ScreenObjects.QuestSkillBtn, img).valid: + Logger.warning(f"Skill, stats, or quest button appeared--quit to avoid accidental allocations.") + self._do_chicken(img) Logger.debug("Stop health monitoring") diff --git a/src/ui_manager.py b/src/ui_manager.py index aac37ce..c19e46a 100644 --- a/src/ui_manager.py +++ b/src/ui_manager.py @@ -262,6 +262,12 @@ class ScreenObjects: color_match=Config().colors["red"], use_grayscale=True ) + QuestSkillBtn=ScreenObject( + ref="QUEST_SKILL_BTN", + threshold=0.9, + use_grayscale=True, + roi="quest_skill_btn" + ) def detect_screen_object(screen_object: ScreenObject, img: np.ndarray = None) -> TemplateMatch: roi = Config().ui_roi[screen_object.roi] if screen_object.roi else None