From cdc061dc54d3a2e2fdf47f3f242407ff6896d14f Mon Sep 17 00:00:00 2001 From: WarrentyExpired Date: Mon, 28 Sep 2026 20:35:50 -0400 Subject: [PATCH] #W# Added: Added folder with things I would like to eventually add to the game. --- ToAdd/CorpseRetrievalSystem.zip | Bin 0 -> 6816 bytes ToAdd/MyStats.cs | 256 ++++++++++++++++++++++++++++++++ ToAdd/PET TRAINING.zip | Bin 0 -> 30942 bytes 3 files changed, 256 insertions(+) create mode 100644 ToAdd/CorpseRetrievalSystem.zip create mode 100644 ToAdd/MyStats.cs create mode 100644 ToAdd/PET TRAINING.zip diff --git a/ToAdd/CorpseRetrievalSystem.zip b/ToAdd/CorpseRetrievalSystem.zip new file mode 100644 index 0000000000000000000000000000000000000000..75a6f6e2905115866a52d7ba64c5fd563859c850 GIT binary patch literal 6816 zcma)>1yEeg*XD6|26qhsf)ZF; zt^d~EuG`hOs_Uulu5+Hc{X2@X@CX1Hls_#vSKtfGKOO)KHHU-?)Yz80yw+irXSyml#f{m7`SM=JpI zE-WZ45fmxLGEwL1RH&E5$xs^1gwri`=cnDDJZ9Qam8x6P7zv&}b+EKdq!68v=(U~o zOHgY9%uB}V<7hCvpvDR9KA)hw#NC<;o~n-dRWiY%SM{hrwED*IoO<){30tFEsI&Fg zC6K&EEd;fH_v&LtF~%;iHT!e)B@zfaZ9+JwD)pLmZbXqwxVzD`X1oU zdFX$+Y^nc?(HL=yjomao0m+h~wCZu-=#n++dL4{B_Nnyt_*$6^W8cjkw+6>~)Jq6p z=Z;(a{Vu>l9)^>fBEMUc+1O%@@M!a5Lr_bCB_$AcC?FM;C&cg9S#ABG)+>Gp`4xgr zJ}I&3?E4`5@|qY)`%G?54z5p+%o%9WZ<(Wl?zyIr+)Q$Bjwd|YR=fi}nE)5is@?tH z=@o`6@$OL2#zbWjI%O)P;XD&I7mP;+hXttZp5j7DJ1+*brP@2s_BDy$2qy}imb=Su zB|u~{&-nT)hRQ`q!Wp(_!niOxgNGbtQ;>F;=*J^O7$y{hB;^Vc*ge@M^%=MIpd*z@ z23(t>fnR2*_i9iD^h{6FaoRgOLx>`S#)@z+SKok?`2zXsKg;g1miM(4Z`l7hiA}na zopjWIX*tvBk;RxdvNO!M^PbnEl)T&(AZ>ebR$CF|8~b@men%kj`M_&j4qp4NRjN8$|%jtawV z3J%b$CYe8IpB^XhHVsE6@G5EAL!4$-)OsX$(b9GoMn+Ze9yAmjF>?tOtk_jTlI6II zX$giVk~x42w&?pM$W#MdHl>5v2Ge5l8ZF_k6>Ip>I4r27@k#keFl9imFRy3%f*-i) z$M^Z!xzaKehTnw0Z~6PaNlQkz11=6xOxp?TQ2-u%<}^rwII@OB-7xc zNMz0TX?@Fj`trU0vNN*tda0ydgFw}FS;3K(1sk9pKfUAidyAq-Udtk6W=X^HAqSa4 zajIK6QHLW%$j@fFSV>Ye9|%98KoWp!P1;JhC^B_rAz>^NS|el=;)U_eJ3$`PM!2Wg zbI`02VfFS0NGuIvK9G>pwpOlfc@u0!KKvdcz9!!6mtAx0 z@3``CFik`Oz593D1bSSrp10S>)bV*MiVppthmv1HoMnbtVN>ckI9r4z^(?pGMln9;(}8gho4z3{Xpac$9fGYDyMSjwRcWFvD%)?yw!vg@K$ z#_j0lX4RTKJ8;>(+7XJQKbWGe08IpkW2nfkq%lcLFSE)@sX4eFm9c`dqsEnjj?%d$ zk|cxW=&HN=zlYN@5|Ig^#nZapY}W7zZa*fHKG%qaZoJ=Zc(wT|vopUl=2DEccgwCQ zi;QAxk82n9$EFt1U|tN>yRt7scSb$v&tyG+BZNUG*?Br&f zzFz)$|C-$~g{AG%hl@wJXKcBX>O(6E=y;j6p2S8o#Gf83-pR8AnxD%cKu8-Y5)L|8 zIri-$iI2a|HQ|@P_0vH&#~azQGyQNHHy@p&|0L?eNcFH)aL7-2ofYepuXx7UQUmWw zyERwLYDbj{41xV^)&n1Pdgg~qjO`mW5O*5!7Iix+mgm9WbN6AIZXk~M+)r1km!g{8 z5|214rS?u`yJ}9 z1~Z_a5n*8{pz8whk(Mo$il9?4vOl4BjIvy-*}Vt3JGJ*%mXXrk4!cSJY3&y$`kQIf zhY_NWPq2MGyh>N00cdw%PacdRUi1QLn8a0X+W=$xTuS}S%?BgC&GZM?DDwDsEv4?g z@U9e7fmyDQ-IsAv%Q}CE#MyxehyHT&i!j$P@>z8>JGRW~XOWW$Mz67QlmIEj5!STy zSw&X5&5MQ=8jGl*b((X!2|C{wnf}?gm&EzhAIUwb7cCd~`ElG3<;4BFa-L}enf0ip zD6vUw?t9)A7&)QK%DYjYjVl>jfBg6qa*yRRceX(HcGNs-ZWhF^vK(o0i`U45ibiU` zK0uBo%ua=~H9UWCul$X)S;Rc)ZV-Ngf0s{!;cGds<3%H%uRD|z!Jl?lx0<7{x?7>F zp`)X%@iQOa;Bgq*Mu@nbLI@A_Rh&WvT<3nwD12mIvz^!*6N!=Gn2&hwKMoXMvsl)a zh_4wfPWfOzjQ;BSnkSMF9b{9dJIW+)LdRXesZgVE+3hh=G7!)p#0p>WdG}&xHp68U zOo^NE(6<|aK|B~NiF}1-<=Cwb`dNZw{I=p$ceMp~xvG{4cqTGU8P^YgRLufjexux; zXwl%4r`Oke-xjb`xf8lK#Yod;N^7?Oe@%}?rNuOF!%wnkZ#9+lGgk6F5e&xbn=Rt&*jd=+4dOOkaXY%67BM~yR4q{?+ zL_LW|ajHkOwn=D#NC}9On(#RAq_zDvk7Eiw`5Iic)f66xSpM>B0<8A8c9$YI7Q}%8 zI)PBmEdWomaej7sSxxgy_*Ox*zF3&#tp*%=Ra%+aoiwkuQ|MJy)%R|Na0QWe6&=m5 z#W(a|=!eh9N?6EDQC@_)il=mrr;DQ5#f(^1os_l*J3lmA8tWhpWJ zt#z;b9VMnp`V6X#{7{~|n5jAqP3*`5MoO^OHO73bF02aid`(_*aCs6xE#-3MjnHPg^-HCaFn_Ky1qE;ZcMmJDR3Q2D+d@KHuRCx?}CGU_6OHf}yc5HwY6! znS;+r79XoK=caH^jyL6McFPNALC)%RWjnghP(*{Fn{6)?_CJpW{&r{G#AeP<39g3J zJwbSK9oz?J4oq@Z@q_D!)x?KOfOVrkOn#WkNGr*WFi64qNG|lubk|FFz3DiBvrp(_ zNMKL;33+aC&>idJE(*%v5h`x#Gy?C>+=@|6#?SejkX)H`*lU_>k0&09f0#nyiKq;lHx*7ep zjp3t!qpv_t4!i$QqIh}3;dJEtml^t;LD?yrcwgT#i#I*crXr8$Sy+Mw0$0SA*J=XDx^7{oBFw39|#c+^rRmqed z9w^m-bWkgSDu-gGIbAM33c|3*KsnKQ247Qg@(25gC9nUiXk&198$v@HAW`GeRqj6A zW@{O%$KNT;BkWbYWZcq_Gh^Ur1vf;!FzHPnbjJsf$Ia#swHmQlDPWX}Ty`I2iKiYK z-x}goBNLhTb|(bUz3kB`KJ8#VMIj<_{r;hBP>GU;EN+O2$q1?^zwL3RRdgF_;su0B z@ia^m+RbGo!v!w$(HnpBCgteD1I8$b8Ffc3EK{}iXto{1;@{*9X33?h_>-QH-nb%7 zcZT*|Wy`tk4WA(UPZFT}z}+2CNAK-)c*Qv*l{?|GI#K(tcZi1=ti&q%<#41t!f4bg z|I|kt7LyQ-6wZf1vkU5AiiGW!6LaE%1r0ZalvNyEvD%ipys)osjQl2hboZR zBg?johX4(F9ykmbbD~me3?KwcCe#~c;&|tv2n|TUHK&GVMJ z<2SFGr|raG#DGeg1h@dWdrK^_{d+##lNcD=d z(n{SS>o~`uJcztr8I%&;4En~wOPddccSA={UmgReJVjYy$iDh_|Xl;iL@NEn!=RLdaYUX%n=~CHcenN?J@5>^-3V zQ&82|g4Iwvi9}NPeJdyDoVZA^sd4VtM60((3YTsaL!4g3eg=W|c){Y0-g`Mw?(Um)?q=i$==I z4A}MBB1-?ihEEkigJ9Q&u-)3Whw>G*8SUr#qe{Y*|2eNq%=H@7@H|^{Tx_J^7{jq8 zQ_ujIO-1wUbGqf(-xO}e!Rqf&9b8m(#APb^sg1x&&WCWV_HLH+7z*ZA#C{dzg;$$x zJwkdpZu3WLYkSJmhGR}2bdzynUgT$qeTyEr^T?sn&syLl3N)w#TX#in;vy| zf3AuZrr%-W@HvNQ^U?Ug;5Z?(t(3Z9P#nI4sDKU+H!M3DSvuaO)SQ3pZLC$3_9NI> z(*77c66^Je(mR-8O zk-X$p`pP;kwWC3z!>0G`UA<>V@mC?uuC73XJpM-}s(fTwaQ;&Vv8VLqPSoC5mg&#d za>`8dRj1W!c3YWZ-``y#PXlePSqf#&PLun8?jKb#0?&tK8Eh>lzx8fgyU24AGL~Mz zw+298?`qtMkJ`L`6Pc7ocwvAt+?gyuMkB8Ga>2^6gMZ5aGmc2NEwT^>a&9(F4N2?J zC=E!hJf4YXv297dHuA8;CaKD`H|uTBmPw4zH__vC@pQR)f}G7E#pO$+dLyYuMSuYv z9N0C%Q$Z2v0Kt5PPn=xqc~C=E0WCHSw@pTqtFQ z)=AE%y#c$I<6>)5^_bII?5y~q^T=re)?ZI9MCcBUv!_Y-6E0>b3rksAC8eF$wY&Jo z|NWNRPFFE+{^J7V01Mc{$Ui+DiHjqLFAr z!{1Aosqkp*I(4^8>Xa^@Sn`nRw2dwBRggMsuy;X54Q%dbH%4qvwo+1b>IIs*5(FvH zR_B#En|aL?TvAyWM$M(0WJCk{&n3-{O)_l9z%!2h#h7c5o`Ts z&rzZW;eLw?<+y5et!{=u8Atvos|-$LH%YcfD*u8t$~)CX+%Y8rvF6TW39QsFbUZC& zYf?(RUp^*Yb9)f=vqxH3&^O&7hyhC3;ykFvP%5_w8geQMY1)uF6UX$J>B&V2=p}&g zRhBV>sY=uuviW0l6X(8odnaN(!Fd$dRx51+riSN@gnbje*K{fbMC_Z5M1v86R`;7} zQImKUjdMZOLzfrg8Nd2 zgx9rUVd1Wdq^4ane@jZUzEpNdxf>wL2>aNVNb1H`N*;E#LP3883WD@cqey)evNUE; zV%taJnwl)Egnyg+aClKPgR}I)@Bj$4jOPUKLDvP4W^Kzt>YB7RdnBbvgYSrcZH;O0 z;N(6}(|AdfPY!a)!ulI=sKpS%`W7l!v?JuKZDB0Ek~YY>hID;l-}Wk>T6MVZ3#~nb zNX<^~q65L=8!5gnXGw**Er`RzDH)#l86>SN+Ao`%|)Z+7odm4%#vs( zqNAk)h^c^DKV!Fk@mJe`9L~A3X~`swV};hVfT9Rvp_unVz=T9eg6|I|QB^k1+kB0H zs`P;|28qHz;IffoF#Cmj2{e(&6%oC)l9(UX+sZr*5|zy?I$j{?T@;jWwDmN=dDd%2 z`dIudEOeQM_!25Y?EO7k+)$ss}F_K z9Iz_joyQZZ>0ym|O{Z8jwB zW1Lc^;h!Jtckw+MI9w|wq{k^0^4kzAEE;L8d6tw?TQ8#b6vJ6l`|mzu;8xejsC(ih zOQcfxfBJmJu~vhjbc{>c8V(l`3M~s8q}>umt0J4TXPj2U=0nC=A37S={?dKEnMA%$ zZhPh!J8N@V@7knST==tf`+aStrq@srQouyWR7S8;DX5r*r)Q13$O+6qZSO>Fo>8G5 z+0GzXq5deJaRm9um*IA{J+$MPDgXRhD4(8&a|jjNXGY3D&ps$TyEpBIvc{L8|suU(Me{92m^+p|20EW{!~jQAV+nQ2jc7hZZ*JJ!YmJIW|$D z?k;mSnG*WbZf}vRm{RgC$7nPqsF#$q$m=f0!s(UhFE4Uvghd&_g@M5^`6n+bGX1}K z(Z9$z(AL`8(8lCH@S>*AO<%|U7aaFiIkjBkz3aHB1>NIa->+{L~sOHWl)e z8>Jj#)J1PpYeK)kK=HilTARhIRZD?H;d;7~^?Rse#3q!@!d>cC84TJR{aNkwdyD6D z1*=z9r+*Rwm-Z4)Xa(^{9>P91my7o4snfw33=NeJ+S1U>CLYc-U0D~6wwS9k0uNxv z<~Q`Pr<(84V6P+d$EDXPdBTBJ{JR>B3oeR2bDCW)`Cn`9E zaxhrog`mHC@P$f&^)eA`*K?wtht_SRBFQUp-j1stxI~zKQ$^j?q*!l4X9Dy;5Y8Sy zZP?Fi7hd*WDv_l9d`~Eg#*l*x#Vmm$S>9h}T@EIY@WoS*eHlITvX=ZcF z-70i{6H;$@EL~|~2Euzn;R<8DSGgSx{`@9t@lqD?7};eLrC3?Dmyi7fpC&Dp;A8R2 zi)4>m(4IUDJv?-R+h>d%fU0gBGW;Q^L7(cFMO;M66Z(zVagVi-F8YlCjRY+IYr=0Z!fx-I2BNb&~;Q;XeyYBK&P6>b^{_iSGqyOLGzhdn_Rbdce zVE PlayerStatsGump.DisplayTo(e.Mobile); +} + +public class PlayerStatsGump(Mobile from) : DynamicGump(50, 50) +{ + // Color Constants + private const int C_YELLOW = 2213; + private const int C_WHITE = 2036; + private const int C_RED = 1258; + private const int C_BLUE = 1264; + private const int C_GREEN = 1270; + private const int C_PURPLE = 1276; + private const int C_GREY = 2401; + + private const int RightCol = 340; // right-hand column X: Magic Ratings / Miscellaneous / Skills + + public override bool Singleton => true; + + public static void DisplayTo(Mobile from) + { + if (from is not { Deleted: false, NetState: not null }) + { + return; + } + + from.SendGump(new PlayerStatsGump(from)); + } + + // One "label: value" line anywhere in the gump. ValueOffset/ValueHue cover the + // resistance boxes, whose colored value sits 55px from the name instead of 130px. + private readonly struct StatRow(int x, int y, string name, string value, int valueHue = C_WHITE, int valueOffset = 130) + { + public readonly int X = x; + public readonly int Y = y; + public readonly string Name = name; + public readonly string Value = value; + public readonly int ValueHue = valueHue; + public readonly int ValueOffset = valueOffset; + } + + protected override void BuildLayout(ref DynamicGumpBuilder builder) + { + const int width = 640; + const int height = 850; + const int attrY = 55; + const int resY = 175; + const int colY = 220; + + // Short alias: every AOS property fetch below reads from the same mobile. + int Aos(AosAttribute attribute) => AosAttributes.GetValue(from, attribute); + + builder.AddPage(); + builder.AddBackground(0, 0, width, height, 9200); + builder.AddImageTiled(10, 10, width - 20, height - 20, 2624); + builder.AddAlphaRegion(10, 10, width - 20, height - 20); + + // --- HEADER --- + builder.AddHtml(0, 25, width, 25, ColorAndCenter("#FFCC00", from.Name)); + + builder.AddButton(width - 55, 21, 0xFBE, 0xFBF, 1, GumpButtonType.Reply, 0); // Refresh + + // --- ATTRIBUTES --- + builder.AddLabel(30, attrY, C_YELLOW, "Attributes"); + + StatRow[] stats = + [ + new(30, attrY + 25, "Strength", from.Str.ToString()), + new(RightCol, attrY + 25, "Hit Points", $"{from.Hits} / {from.HitsMax}"), + new(30, attrY + 50, "Dexterity", from.Dex.ToString()), + new(RightCol, attrY + 50, "Stamina", $"{from.Stam} / {from.StamMax}"), + new(30, attrY + 75, "Intelligence", from.Int.ToString()), + new(RightCol, attrY + 75, "Mana", $"{from.Mana} / {from.ManaMax}"), + ]; + + AddRows(ref builder, stats); + + // --- RESISTANCES --- + DrawDivider(ref builder, 20, resY - 5, width - 40); + builder.AddLabel(30, resY + 5, C_YELLOW, "Resistances"); + + StatRow[] resists = + [ + new(130, resY + 5, "Phys", $"{from.PhysicalResistance}%", C_GREY, 55), + new(230, resY + 5, "Fire", $"{from.FireResistance}%", C_RED, 55), + new(330, resY + 5, "Cold", $"{from.ColdResistance}%", C_BLUE, 55), + new(430, resY + 5, "Poison", $"{from.PoisonResistance}%", C_GREEN, 55), + new(530, resY + 5, "Energy", $"{from.EnergyResistance}%", C_PURPLE, 55), + ]; + + AddRows(ref builder, resists); + + // --- RATINGS (Combat & Magic) --- + DrawDivider(ref builder, 20, colY - 5, width - 40); + builder.AddLabel(30, colY + 5, C_YELLOW, "Combat Ratings"); + builder.AddLabel(RightCol, colY + 5, C_YELLOW, "Magic Ratings"); + + double swingSpeed = from.Weapon is BaseWeapon weapon ? weapon.GetDelay(from).TotalSeconds : 0.0; + + // Standard AOS bandage math, clamped to [2.0, 8.0] + double bandageSeconds = Math.Clamp(Math.Ceiling(11.0 - from.Dex / 10.0), 2.0, 8.0); + + // ModernUO: ammo-cost reduction lives on the equipped quiver (Layer.Cloak), + // not as a global AOS attribute. + int lAmmo = from.FindItemOnLayer(Layer.Cloak) is BaseQuiver quiver ? quiver.LowerAmmoCost : 0; + + // TODO: AbsorptionAttributes / SAAbsorptionAttribute is a custom shard system + // not present in ModernUO. Stubbed at 0 until it's wired back in. + int dmgEater = 0; + + // TODO: PointsSystem / CleanUpBritannia is a custom shard system + // not present in ModernUO. Stubbed at 0 until it's wired back in. + const double cubPoints = 0; + + StatRow[] ratings = + [ + // Left side: Combat + new(30, colY + 30, "HCI", $"{Aos(AosAttribute.AttackChance)} / 45"), + new(30, colY + 50, "DCI", $"{Aos(AosAttribute.DefendChance)} / 45"), + new(30, colY + 70, "DI", $"{Aos(AosAttribute.WeaponDamage)} / 100"), + new(30, colY + 90, "SSI", $"{Aos(AosAttribute.WeaponSpeed)} / 60"), + new(30, colY + 130, "Swing Speed", swingSpeed > 0 ? $"{swingSpeed:F2}s" : "---"), + new(30, colY + 150, "Bandage Speed", $"{bandageSeconds:F1}s"), + new(30, colY + 185, "HP Regen", $"{Aos(AosAttribute.RegenHits)}"), + new(30, colY + 205, "Stam Regen", $"{Aos(AosAttribute.RegenStam)}"), + new(30, colY + 225, "Mana Regen", $"{Aos(AosAttribute.RegenMana)}"), + new(30, colY + 265, "HP Increase", $"{Aos(AosAttribute.BonusHits)} / 25"), + new(30, colY + 285, "Stam Increase", $"{Aos(AosAttribute.BonusStam)} / 25"), + new(30, colY + 305, "Mana Increase", $"{Aos(AosAttribute.BonusMana)} / 25"), + new(30, colY + 345, "Str Bonus", $"{Aos(AosAttribute.BonusStr)}"), + new(30, colY + 365, "Dex Bonus", $"{Aos(AosAttribute.BonusDex)}"), + new(30, colY + 385, "Int Bonus", $"{Aos(AosAttribute.BonusInt)}"), + new(30, colY + 425, "Damage Eater", $"{dmgEater} / 30"), + new(30, colY + 445, "Enhance Pots", $"{Aos(AosAttribute.EnhancePotions)} / 50"), + new(30, colY + 465, "Lower Ammo", $"{lAmmo}"), + new(30, colY + 505, "Followers", $"{from.Followers} / {from.FollowersMax}"), + new(30, colY + 525, "Weight", $"{from.TotalWeight} / {from.MaxWeight}"), + + // Right side: Magic + new(RightCol, colY + 30, "SDI", $"{Aos(AosAttribute.SpellDamage)}%"), + new(RightCol, colY + 50, "LRC", $"{Aos(AosAttribute.LowerRegCost)}%"), + new(RightCol, colY + 70, "LMC", $"{Aos(AosAttribute.LowerManaCost)}%"), + new(RightCol, colY + 90, "FC", $"{Aos(AosAttribute.CastSpeed)} / 4"), + new(RightCol, colY + 110, "FCR", $"{Aos(AosAttribute.CastRecovery)} / 6"), + + // Miscellaneous + new(RightCol, colY + 165, "Luck", $"{Aos(AosAttribute.Luck)}"), + new(RightCol, colY + 185, "Fame", $"{from.Fame}"), + new(RightCol, colY + 205, "Karma", $"{from.Karma}"), + new(RightCol, colY + 225, "Tithing", $"{(from as PlayerMobile)?.TithingPoints ?? 0}"), + new(RightCol, colY + 265, "Acct Gold", $"{(from.Account is Account acct ? acct.GetTotalGold() : 0):N0}"), + new(RightCol, colY + 285, "CUB Points", $"{cubPoints:N0}"), + ]; + + AddRows(ref builder, ratings); + + builder.AddLabel(RightCol, colY + 140, C_YELLOW, "Miscellaneous"); + + // --- SKILL LIST (native client scrollbar, area Y 595..840) --- + builder.AddLabel(RightCol, colY + 345, C_YELLOW, "Skills"); + + var skills = from.Skills; + + // Filters out Human Jack of All Trades (20.0) unless base is invested or gear pushes it higher + double humanMinimum = from.Race == Race.Human ? 20.0 : 0.0; + + // Collect visible skills and sort alphabetically (gump rebuild only, not a hot path). + var visibleSkills = new List(skills.Length); + + for (int i = 0; i < skills.Length; i++) + { + Skill sk = skills[i]; + + if (sk.Base > 0 || (sk.Value > sk.Base && sk.Value > humanMinimum)) + { + visibleSkills.Add(sk); + } + } + + visibleSkills.Sort(static (a, b) => string.CompareOrdinal(a.Name, b.Name)); + + // One left-aligned block with
separators: names form a straight left edge, + // values follow the names. (A
per line would add paragraph spacing from the renderer.) + var skillHtml = new StringBuilder(2048); + + for (int i = 0; i < visibleSkills.Count; i++) + { + Skill sk = visibleSkills[i]; + + if (i > 0) + { + skillHtml.Append("
"); + } + + skillHtml.Append($"{sk.Name} {sk.Value:F1} / {sk.Cap:F1}"); + } + + // scrollbar is named arg #11 in current ModernUO: AddHtml(x,y,w,h,text,color,size,fontStyle,align,background,scrollbar) + // Height 225 ends the area at Y=820 so the scrollbar's down-arrow clears the window frame. + builder.AddHtml( + RightCol, colY + 375, 280, 225, + $"{skillHtml}", scrollbar: true + ); + } + + public override void OnResponse(NetState sender, in RelayInfo info) + { + if (info.ButtonID == 1) // Refresh + { + DisplayTo(from); + } + } + + // Renders any batch of StatRows — attributes, resistances and ratings all share this loop. + private static void AddRows(ref DynamicGumpBuilder builder, ReadOnlySpan rows) + { + for (int i = 0; i < rows.Length; i++) + { + var r = rows[i]; + builder.AddLabel(r.X, r.Y, C_WHITE, r.Name); + builder.AddLabel(r.X + r.ValueOffset, r.Y, r.ValueHue, r.Value); + } + } + + private static string ColorAndCenter(string color, string text) => + $"
{text}
"; + + private static void DrawDivider(ref DynamicGumpBuilder builder, int x, int y, int width) => + builder.AddImageTiled(x, y, width, 2, 9264); +} diff --git a/ToAdd/PET TRAINING.zip b/ToAdd/PET TRAINING.zip new file mode 100644 index 0000000000000000000000000000000000000000..68a83950e70ef2baedc47c7d05cccee0eaedf3a4 GIT binary patch literal 30942 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 T_IJtu9S0^b06?wt-(UX=OMet? literal 0 HcmV?d00001