From 1bb8e193b21d402b839ee0db206c20726b3d8487 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Sat, 26 Feb 2011 16:09:21 +0000
Subject: [PATCH] moar

git-svn-id: http://svn.net-core.org/repos/t-engine4@2849 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/engines/default/data/gfx/ui/button1.png  | Bin 236 -> 225 bytes
 game/engines/default/data/gfx/ui/button2.png  | Bin 185 -> 169 bytes
 game/engines/default/data/gfx/ui/button3.png  | Bin 233 -> 222 bytes
 game/engines/default/data/gfx/ui/button4.png  | Bin 201 -> 189 bytes
 game/engines/default/data/gfx/ui/button5.png  | Bin 167 -> 150 bytes
 game/engines/default/data/gfx/ui/button6.png  | Bin 184 -> 167 bytes
 game/engines/default/data/gfx/ui/button7.png  | Bin 290 -> 271 bytes
 game/engines/default/data/gfx/ui/button8.png  | Bin 212 -> 200 bytes
 game/engines/default/data/gfx/ui/button9.png  | Bin 224 -> 214 bytes
 .../default/data/gfx/ui/heading-sel1.png      | Bin 0 -> 226 bytes
 .../default/data/gfx/ui/heading-sel2.png      | Bin 0 -> 178 bytes
 .../default/data/gfx/ui/heading-sel3.png      | Bin 0 -> 218 bytes
 .../default/data/gfx/ui/heading-sel4.png      | Bin 0 -> 177 bytes
 .../default/data/gfx/ui/heading-sel5.png      | Bin 0 -> 167 bytes
 .../default/data/gfx/ui/heading-sel6.png      | Bin 0 -> 179 bytes
 .../default/data/gfx/ui/heading-sel7.png      | Bin 0 -> 229 bytes
 .../default/data/gfx/ui/heading-sel8.png      | Bin 0 -> 182 bytes
 .../default/data/gfx/ui/heading-sel9.png      | Bin 0 -> 227 bytes
 game/engines/default/data/gfx/ui/heading1.png | Bin 0 -> 223 bytes
 game/engines/default/data/gfx/ui/heading2.png | Bin 0 -> 178 bytes
 game/engines/default/data/gfx/ui/heading3.png | Bin 0 -> 219 bytes
 game/engines/default/data/gfx/ui/heading4.png | Bin 0 -> 177 bytes
 game/engines/default/data/gfx/ui/heading5.png | Bin 0 -> 167 bytes
 game/engines/default/data/gfx/ui/heading6.png | Bin 0 -> 179 bytes
 game/engines/default/data/gfx/ui/heading7.png | Bin 0 -> 228 bytes
 game/engines/default/data/gfx/ui/heading8.png | Bin 0 -> 182 bytes
 game/engines/default/data/gfx/ui/heading9.png | Bin 0 -> 226 bytes
 .../default/data/gfx/ui/textbox-cursor.png    | Bin 172 -> 199 bytes
 game/engines/default/data/gfx/ui/textbox1.png | Bin 0 -> 300 bytes
 game/engines/default/data/gfx/ui/textbox2.png | Bin 0 -> 213 bytes
 game/engines/default/data/gfx/ui/textbox3.png | Bin 0 -> 276 bytes
 game/engines/default/data/gfx/ui/textbox4.png | Bin 0 -> 232 bytes
 game/engines/default/data/gfx/ui/textbox5.png | Bin 0 -> 166 bytes
 game/engines/default/data/gfx/ui/textbox6.png | Bin 0 -> 203 bytes
 game/engines/default/data/gfx/ui/textbox7.png | Bin 0 -> 313 bytes
 game/engines/default/data/gfx/ui/textbox8.png | Bin 0 -> 230 bytes
 game/engines/default/data/gfx/ui/textbox9.png | Bin 0 -> 326 bytes
 .../engines/default/engine/ui/ListColumns.lua |   6 +-
 game/engines/default/engine/ui/Numberbox.lua  |  60 +++++++-----------
 game/engines/default/engine/ui/Textbox.lua    |  60 +++++++-----------
 .../default/modules/boot/dialogs/LoadGame.lua |   2 +-
 .../default/modules/boot/dialogs/NewGame.lua  |   2 +-
 .../data/gfx/shockbolt/object/spellbook.png   | Bin 0 -> 5808 bytes
 .../tome/data/zones/vor-pride/objects.lua     |   2 +
 44 files changed, 51 insertions(+), 81 deletions(-)
 create mode 100644 game/engines/default/data/gfx/ui/heading-sel1.png
 create mode 100644 game/engines/default/data/gfx/ui/heading-sel2.png
 create mode 100644 game/engines/default/data/gfx/ui/heading-sel3.png
 create mode 100644 game/engines/default/data/gfx/ui/heading-sel4.png
 create mode 100644 game/engines/default/data/gfx/ui/heading-sel5.png
 create mode 100644 game/engines/default/data/gfx/ui/heading-sel6.png
 create mode 100644 game/engines/default/data/gfx/ui/heading-sel7.png
 create mode 100644 game/engines/default/data/gfx/ui/heading-sel8.png
 create mode 100644 game/engines/default/data/gfx/ui/heading-sel9.png
 create mode 100644 game/engines/default/data/gfx/ui/heading1.png
 create mode 100644 game/engines/default/data/gfx/ui/heading2.png
 create mode 100644 game/engines/default/data/gfx/ui/heading3.png
 create mode 100644 game/engines/default/data/gfx/ui/heading4.png
 create mode 100644 game/engines/default/data/gfx/ui/heading5.png
 create mode 100644 game/engines/default/data/gfx/ui/heading6.png
 create mode 100644 game/engines/default/data/gfx/ui/heading7.png
 create mode 100644 game/engines/default/data/gfx/ui/heading8.png
 create mode 100644 game/engines/default/data/gfx/ui/heading9.png
 create mode 100644 game/engines/default/data/gfx/ui/textbox1.png
 create mode 100644 game/engines/default/data/gfx/ui/textbox2.png
 create mode 100644 game/engines/default/data/gfx/ui/textbox3.png
 create mode 100644 game/engines/default/data/gfx/ui/textbox4.png
 create mode 100644 game/engines/default/data/gfx/ui/textbox5.png
 create mode 100644 game/engines/default/data/gfx/ui/textbox6.png
 create mode 100644 game/engines/default/data/gfx/ui/textbox7.png
 create mode 100644 game/engines/default/data/gfx/ui/textbox8.png
 create mode 100644 game/engines/default/data/gfx/ui/textbox9.png
 create mode 100644 game/modules/tome/data/gfx/shockbolt/object/spellbook.png

diff --git a/game/engines/default/data/gfx/ui/button1.png b/game/engines/default/data/gfx/ui/button1.png
index 00976452efe42bbe87f28e0607393b312c0a5479..873e854b6b8872a33f0e88e90072c464209da27d 100644
GIT binary patch
delta 177
zcmV;i08anx0pS6VBpd;AQb$4nuFf3k00006VoOIv0RI600RN!9r<0K(7=H(JNliru
z+X5O7I5oRDoiYFb0AWc)K~xyim5(tBz#tSupSAbDg=Z0u;3zo$LEJtlzf+5)?a)jK
z2|VIL2<Du_dykpXduP>tnmH$L+SXuZ{|6UBRS^+tt<Qm~Qc5A`jELM3V~o!dV2?49
fQlho?`r-ftT{m<KnBuGe015yANkvXXu0mjf^a)4J

delta 190
zcmV;v073uZ0qg;gB#}cEe*|YiO+f$vv7TW}LH7Uv03c&XQcVB=e+&Qsg=+u-14#e?
zfQtYCP_+O72LAv6JKX>P90+o6EI<GN0Afi*K~#9!l#ekAz#tSupSAZtkE?hEXTkLk
zg4+j?->JpYc4(%A1RilA1ar>ey~oVxy|ZdR&76}rZEG;I|APymG^&UQwbtiARVk&A
sb4En&h%v@z39!c)Nh#4<dwp>X033=pEb(=y+5i9m07*qoM6N<$f<f9xmjD0&

diff --git a/game/engines/default/data/gfx/ui/button2.png b/game/engines/default/data/gfx/ui/button2.png
index 9cc7816a8b88d7ac1706b2f0286d8566ad75e135..2244365ea57517797b4a2e656046c9a9e359f5ba 100644
GIT binary patch
delta 120
zcmdnVxRP;#iVS0Mkh>GZx^prw85kJYlDyqr82*Fcg1yTpPgIl$WH0gbb!ETJB*kxO
zxYR!*3#dxd)5S4F;&SpF)9h>YY&H#@jSLH77*Aha9sW^!N7-Ac)Gz}rEv-ji)fn72
Wa5^VuX~Y6GF?hQAxvX<aXaWGS+9_55

delta 139
zcmZ3<xRY^$%0y?;dX{uYUq=Rpjq?(H9KSO#FeoH@1o<*B)blVfv}Q9fGJ7&GG;}jC
z1Z-tsWc$y+V11W?L58C!U&jHcR^QXbF{I*FQq1PGv-NB?4V{e)3t|{gw{nYr(B4t;
qQ7JXdVAZNskG`q_)&Bp_%up=NnLcyDT~{EN!PC{xWt~$3V-o=QCM!|^

diff --git a/game/engines/default/data/gfx/ui/button3.png b/game/engines/default/data/gfx/ui/button3.png
index 58c2f02f1337da0466a99fe396bf563dd8a590ec..ea1a67dd626eead1ceedf714df4fdc4f97484e67 100644
GIT binary patch
delta 174
zcmV;f08#(x0p0<SBpd;AQb$4nuFf3k00006VoOIv0RI600RN!9r<0K(7=H(JNliru
z+X5O7IVVw@-8%pP0A5K%K~xyirH#u8z#tR^#}9~hVcYhl4T$#O;qh`1LJ|TwWKPR6
z?3z-Fa$$@??;U_SCzcQX3%=HRD^wK`!8x~u*4j-7A&^oc#<+#&<XY>@B7(^|>+84o
cSZg@|gpVDLm)-md00000Ne4wvM6N<$f*X5BLI3~&

delta 187
zcmV;s07U=Z0qFsdB#}cEe*|YiO+f$vv7TW}LH7Uv03c&XQcVB=e+&Qsg=+u-14#e?
zfQtYCP_+O72LAv6JKX>P90+o6EI<GN0AEQ&K~#9!q>al7z#tR^$In5u4!gG)tw7Kw
zygXhGLP$a&hs<eNhFw!iQ7()z=)D6l=fv{Cf5F#UZ-uHNA~@%^G0<AO2_XbhO2inq
p@SI$0omoUMIcI(S_8x03#{iY*9hzDI<AneK002ovPDHLkV1il<LmmJC

diff --git a/game/engines/default/data/gfx/ui/button4.png b/game/engines/default/data/gfx/ui/button4.png
index 877a852cb1854e0ba60cdaa97fc3e53102a16de2..55a19c396e593fae8f6c5e715663449539a6bb04 100644
GIT binary patch
delta 140
zcmX@fxR-H)iVS0Mkh>GZx^prw85kJYlDyqr82*Fcg1yTpPgImhWiRpcb!ETJB*ky3
zr1(*D3s9A<r;B5V#O1YT4{{zb;BgMreDHVqhq|}}f97#5RcUd!=h@C*l$I1NsOS*7
sbp1y@hr4U{FYMiX;F}eLUd$Pr+babxt_#@v8)y)Nr>mdKI;Vst0A{N<#Q*>R

delta 155
zcmV;M0A&BY0m%W7B#}cEe*|YiO+f$vv7TW}LH7Uv03c&XQcVB=e+&Qsg=+u-14#e?
zfQtYCP_+O72LAv6JKX>P90+o6EI<GN06$4YK~#9!tj)m*03ZxQ(ZoadAE#S&f~KAX
z5k&;wDTfcCyBA5A86+VhFl%E-LS|ysaPbz9JO@?v;bNx`01%-P5d>t}{ulrN002ov
JPDHLkV1mRwFcSa(

diff --git a/game/engines/default/data/gfx/ui/button5.png b/game/engines/default/data/gfx/ui/button5.png
index 1f9caf1b4c781dfad789deff090344bae8b29076..9af48ac08bc24bd4c242fbe9115467a00c64104e 100644
GIT binary patch
delta 101
zcmZ3^IE`_FiVS0Mkh>GZx^prw85kJYlDyqr82*Fcg1yTpPgIn!V=wXab!ETJB*kwj
zIpNoV2|!h1o-U3d5|@+bm}XzAXR~SOY-Es-<6?Mf#&q}a`U6Tp6%3xPelF{r5}E+A
CRUxbZ

delta 120
zcmbQnxSVl<%0y?;JeG7vUq=Rpjq?(H9KSO#FeoH@1o<*B)blVfv}Q9fGJ7&GG;}jC
z1Z-tsWc$y+V11W?L58C!U&jHcR@T$SF{I*FQq1PGv-NB?4V{e)5^`KX35NgwnHgj{
UnT1OX#E*dZp00i_>zopr0AAN0cK`qY

diff --git a/game/engines/default/data/gfx/ui/button6.png b/game/engines/default/data/gfx/ui/button6.png
index 55e30a5b40567f8cfbf3873aaeefc996d5f9c33e..4d27dcb2dbbe93025acad329a940a1bf42e1a346 100644
GIT binary patch
delta 118
zcmdnNxSVl<iVS0Mkh>GZx^prw85kJYlDyqr82*Fcg1yTpPgIofXD{*eb!ETJB*kwj
z^3HpYE>M-ar;B5V#O35UrrFo(*;GD!c^TYxykFkf00?ZVzx6bBHZn-aaWRzmaXp{Y
Syvzcqg~8L+&t;ucLK6UMOen<w

delta 137
zcmZ3^xPx(m%0y?;dX{uYUq=Rpjq?(H9KSO#FeoH@1o<*B)blVfv}Q9fGJ7&GG;}jC
z1Z-tsWc$y+V11W?L58C!U&jHcR?pMLF{I*FQq1PGv-NB$A6{HkZu|ZHy|Doh*wp=*
l(b(C@AR)&ERLSuFKQlvr6xaV`!w=dZzNf37%Q~loCIGq;Dt`a~

diff --git a/game/engines/default/data/gfx/ui/button7.png b/game/engines/default/data/gfx/ui/button7.png
index 99f9414b1a423a7d37be1348335a25b11e6b104c..36a2b4eded577bb8f4eea79cc4e5c0e0c0958e59 100644
GIT binary patch
delta 223
zcmV<503iRO0*?ZaBpd;AQb$4nuFf3k00006VoOIv0RI600RN!9r<0K(7=H(JNliru
z+X5O7ISvykMOOd-0FOyTK~xyiZH_UHgg^`g%h-ZsGXDP+zCuVuKmwKr><d;WEz(xh
zL8;WTEK6l3s>(Qy^xlaG{u%atXPPEjYXGP!W`?SMwuo?D7p*nsc_t!ocif%lc`!4>
z-RZrvuInc|3}hymiK!}8ML1P)o+sP3@y!qsR230HW+Eal!S4GeGdYgq_5LM@2&&32
Z{s2acQv;5Hh4=sf002ovPDHLkV1if9S|$Jh

delta 244
zcmV<Q01N+*0-^$tB#}cEe*|YiO+f$vv7TW}LH7Uv03c&XQcVB=e+&Qsg=+u-14#e?
zfQtYCP_+O72LAv6JKX>P90+o6EI<GN0GLTcK~#9!Y>qK*g)k5W$KFNIK*#+rMM+CT
zMS-xqc)cm2MEO#teWTG!+qQ+fqpFPKh?!Aq<%fKpC(|@B&odE$YKSll10sTmpgCur
z=V4hE)^)|qD5X$Jp|yspDy0<6jD6p~vpLgy$K6p8AtHzf?)&CA4*rtOjEJDtO7ESN
u(ubh$`{M3g*Y)xKS7@z~Qu=oU_!<B}#8~&@(<Yk$0000<MNUMnLSTYk^JsJc

diff --git a/game/engines/default/data/gfx/ui/button8.png b/game/engines/default/data/gfx/ui/button8.png
index 98eae90eee50109e3185550e75ba2ed62d7de4b6..ec8f36e55447d7220f53aff5e992a3ed7b9f1271 100644
GIT binary patch
delta 151
zcmcb@c!F_)iVS0Mkh>GZx^prw85kJYlDyqr82*Fcg1yTpPgImBU@!6Xb!ETJB*kyZ
z+3S1Z3s9AZr;B5V#O0-DH}W1Z;9)+vT;cux{_7tlgwBXC2HkSqXE$M1@hs<?cV!qI
zTnvse954%Q{ma*`lC$|cn}g8IpATcQW%Zl9{~u&NWFqyf*md3+pqUJwu6{1-oD!M<
D-3&VN

delta 166
zcmV;X09pUY0n`DIB#}cEe*|YiO+f$vv7TW}LH7Uv03c&XQcVB=e+&Qsg=+u-14#e?
zfQtYCP_+O72LAv6JKX>P90+o6EI<GN07^+jK~#9!q|LDnz%UF0!IvOt|INID_mC~7
z2-4a`zCMsP#t?^Mt;G=lxI38%KzCDBNbj(l8Ist0^Wlg9KoT+M96Vk)m;Qri0R9{s
U94|$RO#lD@07*qoM6N<$f=rJ&TmS$7

diff --git a/game/engines/default/data/gfx/ui/button9.png b/game/engines/default/data/gfx/ui/button9.png
index 9a94b8dd11d27a043f83884da189adc940fb441d..3f0f18539a987af57fea3d24284323f13c39c2d2 100644
GIT binary patch
delta 165
zcmaFBc#Uy_iVS0Mkh>GZx^prw85kJYlDyqr82*Fcg1yTpPgInsV=wXab!ETJB*kyZ
zBsHJ22B<2`)5S4F;_}j7L#_h~0xaqe|NU23UERiSVSO>m;-Zp*idyKhxv9@N6nWwb
z%Fpl=e)rvWZN=6_tLDTT9rMs+Wt4cl>dU?9XDpc&(#onmG<7-ObgKVn7k;+YlyyN6
RgAdRK22WQ%mvv4FO#m+aJe~jm

delta 178
zcmV;j08Rha0pJ0UB#}cEe*|YiO+f$vv7TW}LH7Uv03c&XQcVB=e+&Qsg=+u-14#e?
zfQtYCP_+O72LAv6JKX>P90+o6EI<GN09HvvK~#9!q>Zr+z#t3+FOm13hb?GW!0wQs
zr?6zIASEPKuD#d&k#i1SaCcM{araG*G3dRMQsVrQr4(9g2tY)vDC{L`tpJFs-U?>6
gB(PsR`9GKg0M%eL#!edeN&o-=07*qoM6N<$f^$_sKL7v#

diff --git a/game/engines/default/data/gfx/ui/heading-sel1.png b/game/engines/default/data/gfx/ui/heading-sel1.png
new file mode 100644
index 0000000000000000000000000000000000000000..1ebbff53bbb77eca3123682d7b543f9251caa2ae
GIT binary patch
literal 226
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP;G>#i(^Q|tu?3C3OP84G+cat@1sxLA>*5ZDZXC~r2m@4E|PG)k#y|p+JzQBJ)W)=
zXe>CeNjT8%kMOze6BwR~ooJW*7%X$-j7RpC_ff~K?ARI3O0nLtjbUckxkPHiJNNxr
QKsy*bUHx3vIVCg!0MA@TaR2}S

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading-sel2.png b/game/engines/default/data/gfx/ui/heading-sel2.png
new file mode 100644
index 0000000000000000000000000000000000000000..62367cc08e41624f8fe3cc073a3a0586c3a8af01
GIT binary patch
literal 178
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_2fii(^Q|t)w&eKJ0H~<WERaV0f{hA@yJ+6W6}EbKPf(0@X15|If^D&4;aKn~B^~
O5Z}|)&t;ucLK6UuIxEQl

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading-sel3.png b/game/engines/default/data/gfx/ui/heading-sel3.png
new file mode 100644
index 0000000000000000000000000000000000000000..b840b751a78a0500146f86de49e76e2010853dbb
GIT binary patch
literal 218
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP;G#xi(^Q|t)w&eKJ0H~<dvyCaiHMiyKJ_$_G-x)5*!Rx8VQjFV!<E2+q1E?#m7qk
zK~?0wxpUiNwddEI-p?yoA5k#l&Y%39pX1qp-~fYRp!lnhzcPz}W;1xY`njxgN@xNA
DS-m}X

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading-sel4.png b/game/engines/default/data/gfx/ui/heading-sel4.png
new file mode 100644
index 0000000000000000000000000000000000000000..947beb5bf9964d3cab0c2ec2c2351f89018a98d9
GIT binary patch
literal 177
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_4SBi(^Q|t)w^BU-manoY?sAc0OBM`g{ok24QAK0~-;b5{Cc(nHiS;Vq0bR+aJVb
N@O1TaS?83{1OQFHDx3fS

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading-sel5.png b/game/engines/default/data/gfx/ui/heading-sel5.png
new file mode 100644
index 0000000000000000000000000000000000000000..04f4c21230f708e3f6c37c90176e2fad65379526
GIT binary patch
literal 167
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_3+|i(^Q|t)w&eKJ0H~<WERaU}$S+0!lFa|If^@F^_50_1o`4KzvVEKbLh*2~7Z%
COeebl

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading-sel6.png b/game/engines/default/data/gfx/ui/heading-sel6.png
new file mode 100644
index 0000000000000000000000000000000000000000..622bbb64da2f2c672f4a5ac7bb49ba29ae0e8dc3
GIT binary patch
literal 179
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_3q?i(^Q|t)w&eKJ0H~<dvyCaiHMiyKJ_$_G-x)5*!T=7XlSA{Qu9)pz6cXo~N{b
P1BmbG>gTe~DWM4f?mI0|

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading-sel7.png b/game/engines/default/data/gfx/ui/heading-sel7.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f0837d0488413e270ae63dcf8628795b5511e3b
GIT binary patch
literal 229
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP;IoQi(^Q|t)xHy|JySI!QqSSJU%=;JXeAE439?x>#-mI+7JHxUmxPRqv>b5#HYxa
zk}UQAQx7oc{B4)4k(88V+5a~!q2e27FrzRtbF(3{+<_ww3<2vH3>b8xg*nQTKNbS5
OVeoYIb6Mw<&;$V74nJi8

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading-sel8.png b/game/engines/default/data/gfx/ui/heading-sel8.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4c6b326096f973b52f751e0a2a1536462c00e74
GIT binary patch
literal 182
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_2%qi(^Q|tt6YG|MkqwatA)WHD``H@ac&%BWwEnN8tyK958qQauLJ-|I7?EJscbO
RE4i<M_@1tQF6*2UngCrtE<6AL

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading-sel9.png b/game/engines/default/data/gfx/ui/heading-sel9.png
new file mode 100644
index 0000000000000000000000000000000000000000..65f516593e580b6ad5445aeaf4bb8f997f9ca024
GIT binary patch
literal 227
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP;I2Ai(^Q|tt6YG|MkqwYBSQ-9{AAJ2m~*0=d-bu{CT46Ty?aJ&5aERmZ{52N?iDO
zb2-l$ZGFQl#;j`+k}Q9VT>i6|Us6KOuKMhO0|x?*A8}x~;K-Q3aQL2D&*tZr#z0FL
NJYD@<);T3K0RY%kLaqP+

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading1.png b/game/engines/default/data/gfx/ui/heading1.png
new file mode 100644
index 0000000000000000000000000000000000000000..b40dc3a37ee947ea49c340655f6424eb4bfe8fb5
GIT binary patch
literal 223
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP;IEEi(^Q|tu?0<#T*<&94>xOXVKooS$#RAduB)GE|)@)M5f0zcP&KB<5$jE#nHn2
ztheRiVf%+Q+>#U4H{SK{kiM+2$}2GW_qtx4!^I2+smYBM{MQ+xZ_DW3y};=Ow1C0W
L)z4*}Q$iB}&|N`1

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading2.png b/game/engines/default/data/gfx/ui/heading2.png
new file mode 100644
index 0000000000000000000000000000000000000000..290697b3a72d3559b6ca519b187aea0c31473e1e
GIT binary patch
literal 178
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_2fii(^Q|t)w&eKK!?5mOF67f#HH9<LRc&EFv}5*8N7>Ks5~i|1&d$hqL|mS|k_?
O;(NOKxvX<aXaWF!GAjB2

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading3.png b/game/engines/default/data/gfx/ui/heading3.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b749e1ca37a23045d6116a386f2b683bb6a0875
GIT binary patch
literal 219
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP;H>6i(^Q|t)w&eKK!?5ma_OYq4D9PyVrSm_`e$&7z!|y1RU7(Kxf&5_w_tHJp1<<
z0D;HG8f$C*-C=f>ef82xb(<a-%=~-5=y^O)0Z#)XL(OloA1w>DK#pecboFyt=akR{
E04PpBUjP6A

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading4.png b/game/engines/default/data/gfx/ui/heading4.png
new file mode 100644
index 0000000000000000000000000000000000000000..216b7ddd5c367177b55d423fe718d42b4c412822
GIT binary patch
literal 177
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_4SBi(^Q|t)w^BU;f)GD>EP7exHZuyq#eJgBlxCLWKrU3B&*Y%na(R?3xODlOjNT
MPgg&ebxsLQ0R8kQ{Qv*}

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading5.png b/game/engines/default/data/gfx/ui/heading5.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3e4fdc67128190b484d7048bfce85f938d16276
GIT binary patch
literal 167
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_3+|i(^Q|t)w&eKK!?5mOF67fq{pg6)3^*|35Q>Q6;mc_nfuDAik%opUXO@geCxV
Cg(Z9d

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading6.png b/game/engines/default/data/gfx/ui/heading6.png
new file mode 100644
index 0000000000000000000000000000000000000000..9bdba55f06b45b7920de15c29b2488c010cef2ad
GIT binary patch
literal 179
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_3q?i(^Q|t)w&eKK!?5ma_OYq4D9PyVrSm_`e$&7z!{Pc4h>s`v0GqVVMUfo6o-u
QML;ftr>mdKI;Vst0O`an4FCWD

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading7.png b/game/engines/default/data/gfx/ui/heading7.png
new file mode 100644
index 0000000000000000000000000000000000000000..306bc50a9d3fa6234895c71cc55fff2e7b0bce75
GIT binary patch
literal 228
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP;Hc_i(^Q|ttF=n`5YWXTrd7UKEL(MBOTYZ*CTpftZ@txTOe_C!g{3?A+F_BCwC{M
zF?<o`ayd}E_<4l6*5>DxtZxsz;C8xoGUM*W4uPbm%9G6OQ}z_p{E(MnW|(wU<Ytg{
RU@g!V22WQ%mvv4FO#lVdMlb*X

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading8.png b/game/engines/default/data/gfx/ui/heading8.png
new file mode 100644
index 0000000000000000000000000000000000000000..5ea9669eba93ba751d9052a363c4918321ad45bc
GIT binary patch
literal 182
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_2%qi(^Q|tt6YG|NraRY#N^4&S%@x@bsiR6W2Mrqw5<w8xs$R0@X46|If_uw}VrE
S-`(;~5Z}|)&t;ucLK6U=PB13`

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/heading9.png b/game/engines/default/data/gfx/ui/heading9.png
new file mode 100644
index 0000000000000000000000000000000000000000..efe939e55a3b48664a142a033c32d0e34ed63f6f
GIT binary patch
literal 226
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP;G>#i(^Q|tt6YG|NraRd=@0HJy0;U5eQ!1&SzsQ`SV2i@XxNdJUu)>(DT_Zc~-$+
zQRc(1PV?~a_peV#wfrq|`Ojj0NeMZ->azz99QZK1vyovzGt&Wvt4T`J>u1_51lqyi
M>FVdQ&MBb@0H$(AFaQ7m

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/textbox-cursor.png b/game/engines/default/data/gfx/ui/textbox-cursor.png
index ec01ddb954443f2762c76fbb92d568fccf89f762..3243e1695fbe6f8756cc612890cba6098cdb38bd 100644
GIT binary patch
literal 199
zcmeAS@N?(olHy`uVBq!ia0vp^96&6<!3HF?yX<O#6lZ})WHC_Q3WOP%mE>B1f-LEd
zzK#qG8|NkZIDQB66_P!Id>I((c^DX4vl$qfJsB7px)~S(wlXlX{byjXzRSQM!%>v4
z;{a4^>*?YcQgJKk&;S4S%ytKkI4~^G`0?Z8&HwKGe*cfJd~kbvInQ$c*aZi=0$BwL
p{@yZei{Acjp+>?I3o}M$hUd-VhhALxFdt|TgQu&X%Q~loCIHZ9JW&7u

literal 172
zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y@!3HFyABb!Laf*Z7ofy`glX(f`a29w(7Bet#
zcY-jZ`N`93fr9KMp1!W^x40O^^*EoMe-{80lFbZ>C~?lu%}vcK0dg4_oQqNuOHxx5
z$}>wc6x=<115)%-*@5Dso-U3d9M_Xg>Z?P$CpIp8XwU4-%pkj#MRoCtCt4t#p00i_
I>zopr048xPZ2$lO

diff --git a/game/engines/default/data/gfx/ui/textbox1.png b/game/engines/default/data/gfx/ui/textbox1.png
new file mode 100644
index 0000000000000000000000000000000000000000..4498ce2db1f44bde38877b70f5aea8407edb156e
GIT binary patch
literal 300
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zQ0*d57srr_TP3FrxehsqxL&kA_n*a3plO=s710|hyOS2rJ$8yUBXy!F3)9VmCKo;T
zO<k~H`L3hYdF88g=Id*8HSJorbB^}8cH4Ym24m+?&q*xrZRe}K4+y<vk{UcMp4rg2
zE%Csa6QAci%{u!n!f>`<AzzA2@4ok(iW5>L=d&9-w@Gj+UMQ7a)m6+V=;-p{p7ME#
p&VKgX+n>5kd=LLEdpiF*Lw1nMmY6U5Rsmhh;OXk;vd$@?2>^%rX3zit

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/textbox2.png b/game/engines/default/data/gfx/ui/textbox2.png
new file mode 100644
index 0000000000000000000000000000000000000000..3babbb349bf58d2a967f37f80a795126823c2bd5
GIT binary patch
literal 213
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_4J8i(^Q|t(N|cybTUK%;y7VnRsmASLHd)WZ-6Yioe0Gey#3nodp>NVmjRa_Q+3C
z+xQ{Ze#NhBk3(lZbj;8T5uG=4ZS%R;dHH>e49lPL?l~NI_$<&^22WQ%mvv4FO#thd
BJ){5t

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/textbox3.png b/game/engines/default/data/gfx/ui/textbox3.png
new file mode 100644
index 0000000000000000000000000000000000000000..afc57c3d199e5ec1111c22d49bcbf0ddc6619539
GIT binary patch
literal 276
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP;Hl|i(^Q|t(snIu0swYuIHb`cJ#DPaM~p49lLUEZ%6A3DW=HNhdn2ryy3B^b>62s
z=75S~oA?{sbPe5ht$SR!H|S%dii)A{<u$deVWqt)#|mS-mfxPcYL$Vc;kt=O40yZ~
zE}P7dRAf;J^g4L=x%5m)%k-jiJFGQTgS<{V-T(ea`OUZXPp4~keU@Sn_+b=x{)5gY
QpsN@>UHx3vIVCg!0MlMx9{>OV

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/textbox4.png b/game/engines/default/data/gfx/ui/textbox4.png
new file mode 100644
index 0000000000000000000000000000000000000000..b6b4fcb2f6f611f4698da7ab74d357074c15f05d
GIT binary patch
literal 232
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP;H#2i(^Q|t(qP~AqN8yR`d7IncBKeXZP@hTA8*_3YZ|-dgImEH|L7~n#>Qqd!bDB
z_qL5~2aNbqSRTw-+;YaIe&UkoiqG>WrhMzz{6#?{E5M7hp+e@qqnx4Jr`xl$8A?<{
Vbq(?tngMNM@O1TaS?83{1ONuwN38$=

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/textbox5.png b/game/engines/default/data/gfx/ui/textbox5.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e25479fa6a4c9a49b8a1100324a3d1014507813
GIT binary patch
literal 166
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_2xoi(^Q|t)!HMgdgV{*bNK?7!Er#0ww<cXJ+6DX5?SL`%egv%i!ti=d#Wzp$Pyr
C5hXJK

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/textbox6.png b/game/engines/default/data/gfx/ui/textbox6.png
new file mode 100644
index 0000000000000000000000000000000000000000..703388507cb8a3cd9dbd0a7e70e996954ce3dcf7
GIT binary patch
literal 203
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP_3h<i(^Q|t)!HMgdgV_SU+E1mn<MAnk*nBlw?u=&*t#G+}jc}BqlH@D=TxIJ#e65
q6@#<{2kQyGBLN3aoM>6dV8F1-hC_MHBdJE9VGN$GelF{r5}E*HS2bt=

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/textbox7.png b/game/engines/default/data/gfx/ui/textbox7.png
new file mode 100644
index 0000000000000000000000000000000000000000..d69057100f2dadef564d73521a6386401e869fd8
GIT binary patch
literal 313
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zQ0;n87srr_TQU6yy_gL}7@oIYINJM{#s1*GJ(s)%_jsSLj$YBBchhO*O}Sm3_g*iI
zxMF!e(Jk)&wlbglA*NX;{~WJB+7Yjl;mlxshKJ#~j8ap+v%}enn6(ug<#QVDK6miy
zoMU{?hw)*B#RhrzU;EN~CI)e>>Y5+4Xm7mHdE?mY8za~MthjGD|NQl~ImSv&tBibw
z3neNl>vp+X2|Bv0*c#-uFmsl@INuIVd-nZ1c^FcT$Md}O*-{I1I)kUHpUXO@geCwx
CI&O*p

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/textbox8.png b/game/engines/default/data/gfx/ui/textbox8.png
new file mode 100644
index 0000000000000000000000000000000000000000..c27a3f4b8abe8b73c9e37619017c41cf855cf72d
GIT binary patch
literal 230
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zP;HE-i(^Q|t(LxxybTH>tnZawxP(&`ykoD;aw#ulN!Ha!%4NR3Z}*dvoAPEd?RwpQ
zsqfA4naO(sdzIoEr}q@|<?{G@WxW5pUtr-@u?7hyBfsL0%?z%NfeW>2m>F!(N%5SS
S^*jw|4}+(xpUXO@geCxPu0tsR

literal 0
HcmV?d00001

diff --git a/game/engines/default/data/gfx/ui/textbox9.png b/game/engines/default/data/gfx/ui/textbox9.png
new file mode 100644
index 0000000000000000000000000000000000000000..d4277ef0360fb1461229de5d955370dd7253067b
GIT binary patch
literal 326
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#Xxy05N2dnl4}JDvZOou
zIx;Y9oR{e1_#MbsNcITwWnif1VPI&@W?*FYWMF6jY7W@Sz{vKWfx-GN1A`1lQNE4?
zQ0*R17srr_TRD9jvknDFwC=wXBUPmQV!|G;uOEN$>}y;RTf?}zx%t9c*%;*=B?2Z2
ziV{_x|Moj8Tm9(0Zz<!qA)-!0c2$?wmR#q{CNlo%IqU6TFuA&Xxc7Ly?)CWd&(oS^
z`{F8Jis^g^j=Ax^_|&F9<)3d_2Z}tLqkP)vlF3nt<_-pdu+XpDe*asvF55?9k_sn-
zYhb~N;x}b`nG$x#8P4<hcu)BF$G7Hf>_X241lMdm&+RC%V3kDi^?GK8i++JhZcLj@
Qf&O6dboFyt=akR{0MsyazyJUM

literal 0
HcmV?d00001

diff --git a/game/engines/default/engine/ui/ListColumns.lua b/game/engines/default/engine/ui/ListColumns.lua
index 60df37ca15..0c1f642a41 100644
--- a/game/engines/default/engine/ui/ListColumns.lua
+++ b/game/engines/default/engine/ui/ListColumns.lua
@@ -65,8 +65,8 @@ function _M:init(t)
 		col.frame = self:makeFrame(nil, col.width, self.fh)
 		col.frame_sel = self:makeFrame("ui/selector-sel", col.width, self.fh)
 		col.frame_usel = self:makeFrame("ui/selector", col.width, self.fh)
-		col.frame_col = self:makeFrame("ui/selector", col.width, self.fh)
-		col.frame_col_sel = self:makeFrame("ui/selector-sel", col.width, self.fh)
+		col.frame_col = self:makeFrame("ui/heading", col.width, self.fh)
+		col.frame_col_sel = self:makeFrame("ui/heading-sel", col.width, self.fh)
 	end
 
 	Base.init(self, t)
@@ -245,7 +245,7 @@ function _M:display(x, y, nb_keyframes, screen_x, screen_y)
 		local col = self.columns[j]
 		local y = y
 		if not self.hide_columns then
-			if self.cur_col == j then self:drawFrame(col.frame_col_sel, x, y)
+			if self.cur_col == j then self:drawFrame(col.frame_col, x, y)
 			else self:drawFrame(col.frame_col_sel, x, y) end
 			col._tex:toScreenFull(x, y, col.fw, self.fh, col._tex_w, col._tex_h)
 			y = y + self.fh
diff --git a/game/engines/default/engine/ui/Numberbox.lua b/game/engines/default/engine/ui/Numberbox.lua
index 24bd47d7bc..95a5805434 100644
--- a/game/engines/default/engine/ui/Numberbox.lua
+++ b/game/engines/default/engine/ui/Numberbox.lua
@@ -46,48 +46,34 @@ function _M:generate()
 	self.mouse:reset()
 	self.key:reset()
 
-	local ls, ls_w, ls_h = self:getImage("ui/textbox-left-sel.png")
-	local ms, ms_w, ms_h = self:getImage("ui/textbox-middle-sel.png")
-	local rs, rs_w, rs_h = self:getImage("ui/textbox-right-sel.png")
-	local l, l_w, l_h = self:getImage("ui/textbox-left.png")
-	local m, m_w, m_h = self:getImage("ui/textbox-middle.png")
-	local r, r_w, r_h = self:getImage("ui/textbox-right.png")
-	local c, c_w, c_h = self:getImage("ui/textbox-cursor.png")
-
-	self.h = r_h
-
 	-- Draw UI
 	local title_w = self.font:size(self.title)
-	self.w = title_w + self.chars * self.font_mono_w + ls_w + rs_w
-	local w, h = self.w, r_h
-	local fw, fh = w - title_w - ls_w - rs_w, self.font_h
+	self.title_w = title_w
+	local frame_w = self.chars * self.font_mono_w + 12
+	self.w = title_w + frame_w
+	self.h = self.font_h + 6
+
+	self.texcursor = self:getTexture("ui/textbox-cursor.png")
+	self.frame = self:makeFrame("ui/textbox", frame_w, self.h)
+
+	local w, h = self.w, self.h
+	local fw, fh = frame_w - 12, self.font_h
 	self.fw, self.fh = fw, fh
-	self.text_x = ls_w + title_w
+	self.text_x = 6 + title_w
 	self.text_y = (h - fh) / 2
+	self.cursor_y = (h - self.texcursor.h) / 2
 	self.max_display = math.floor(fw / self.font_mono_w)
-	local ss = core.display.newSurface(w, h)
-	local s = core.display.newSurface(w, h)
+	local s = core.display.newSurface(title_w, h)
 	self.text_surf = core.display.newSurface(fw, fh)
-	self.text_tex, self.text_tex_w, self.text_tex_h = s:glTexture()
+	self.text_tex, self.text_tex_w, self.text_tex_h = self.text_surf:glTexture()
 	self:updateText()
 
-	ss:merge(ls, title_w, 0)
-	for i = title_w + ls_w, w - rs_w do ss:merge(ms, i, 0) end
-	ss:merge(rs, w - rs_w, 0)
-	ss:drawColorStringBlended(self.font, self.title, 0, (h - fh) / 2, 255, 255, 255, true)
-
-	s:merge(l, title_w, 0)
-	for i = title_w + l_w, w - r_w do s:merge(m, i, 0) end
-	s:merge(r, w - r_w, 0)
+	s:erase(0, 0, 0, 0)
 	s:drawColorStringBlended(self.font, self.title, 0, (h - fh) / 2, 255, 255, 255, true)
-
-	local cursor = core.display.newSurface(c_w, fh)
-	for i = 0, fh - 1 do cursor:merge(c, 0, i) end
-	self.cursor_tex, self.cursor_tex_w, self.cursor_tex_h = cursor:glTexture()
-	self.cursor_w, self.cursor_h = c_w, fh
+	self.tex, self.tex_w, self.tex_h = s:glTexture()
 
 	-- Add UI controls
-	self.mouse:registerZone(title_w + ls_w, 0, fw, h, function(button, x, y, xrel, yrel, bx, by, event)
+	self.mouse:registerZone(title_w + 6, 0, fw, h, function(button, x, y, xrel, yrel, bx, by, event)
 		if event == "button" then
 			self.cursor = util.bound(math.floor(bx / self.font_mono_w) + self.scroll, 1, #self.tmp+1)
 			self:updateText()
@@ -137,9 +123,6 @@ function _M:generate()
 			end
 		end,
 	}
-
-	self.tex, self.tex_w, self.tex_h = s:glTexture()
-	self.stex = ss:glTexture()
 end
 
 function _M:updateText(v)
@@ -166,16 +149,17 @@ function _M:updateText(v)
 end
 
 function _M:display(x, y, nb_keyframes)
+	self.tex:toScreenFull(x, y, self.title_w, self.h, self.tex_w, self.tex_h)
+	self:drawFrame(self.frame, x + self.title_w, y)
 	if self.focused then
-		self.stex:toScreenFull(x, y, self.w, self.h, self.tex_w, self.tex_h)
+--		self:drawFrame(self.frame, x + self.title_w, y, 1, 1, 1, self.focus_decay / self.focus_decay_max_d)
+		self.texcursor.t:toScreenFull(x + self.text_x + (self.cursor-self.scroll) * self.font_mono_w, y + self.cursor_y, self.texcursor.w, self.texcursor.h, self.texcursor.tw, self.texcursor.th)
 	else
-		self.tex:toScreenFull(x, y, self.w, self.h, self.tex_w, self.tex_h)
 		if self.focus_decay then
-			self.stex:toScreenFull(x, y, self.w, self.h, self.tex_w, self.tex_h, 1, 1, 1, self.focus_decay / self.focus_decay_max_d)
+--			self:drawFrame(self.frame, x + self.title_w, y, 1, 1, 1, self.focus_decay / self.focus_decay_max_d)
 			self.focus_decay = self.focus_decay - nb_keyframes
 			if self.focus_decay <= 0 then self.focus_decay = nil end
 		end
 	end
 	self.text_tex:toScreenFull(x + self.text_x, y + self.text_y, self.fw, self.fh, self.text_tex_w, self.text_tex_h)
-	self.cursor_tex:toScreenFull(x + self.text_x + (self.cursor-self.scroll) * self.font_mono_w, y + self.text_y, self.cursor_w, self.cursor_h, self.cursor_tex_w, self.cursor_tex_h)
 end
diff --git a/game/engines/default/engine/ui/Textbox.lua b/game/engines/default/engine/ui/Textbox.lua
index 82433985db..247aa59ca8 100644
--- a/game/engines/default/engine/ui/Textbox.lua
+++ b/game/engines/default/engine/ui/Textbox.lua
@@ -45,48 +45,34 @@ function _M:generate()
 	self.mouse:reset()
 	self.key:reset()
 
-	local ls, ls_w, ls_h = self:getImage("ui/textbox-left-sel.png")
-	local ms, ms_w, ms_h = self:getImage("ui/textbox-middle-sel.png")
-	local rs, rs_w, rs_h = self:getImage("ui/textbox-right-sel.png")
-	local l, l_w, l_h = self:getImage("ui/textbox-left.png")
-	local m, m_w, m_h = self:getImage("ui/textbox-middle.png")
-	local r, r_w, r_h = self:getImage("ui/textbox-right.png")
-	local c, c_w, c_h = self:getImage("ui/textbox-cursor.png")
-
-	self.h = r_h
-
 	-- Draw UI
 	local title_w = self.font:size(self.title)
-	self.w = title_w + self.chars * self.font_mono_w + ls_w + rs_w
-	local w, h = self.w, r_h
-	local fw, fh = w - title_w - ls_w - rs_w, self.font_h
+	self.title_w = title_w
+	local frame_w = self.chars * self.font_mono_w + 12
+	self.w = title_w + frame_w
+	self.h = self.font_h + 6
+
+	self.texcursor = self:getTexture("ui/textbox-cursor.png")
+	self.frame = self:makeFrame("ui/textbox", frame_w, self.h)
+
+	local w, h = self.w, self.h
+	local fw, fh = frame_w - 12, self.font_h
 	self.fw, self.fh = fw, fh
-	self.text_x = ls_w + title_w
+	self.text_x = 6 + title_w
 	self.text_y = (h - fh) / 2
+	self.cursor_y = (h - self.texcursor.h) / 2
 	self.max_display = math.floor(fw / self.font_mono_w)
-	local ss = core.display.newSurface(w, h)
-	local s = core.display.newSurface(w, h)
+	local s = core.display.newSurface(title_w, h)
 	self.text_surf = core.display.newSurface(fw, fh)
-	self.text_tex, self.text_tex_w, self.text_tex_h = s:glTexture()
+	self.text_tex, self.text_tex_w, self.text_tex_h = self.text_surf:glTexture()
 	self:updateText()
 
-	ss:merge(ls, title_w, 0)
-	for i = title_w + ls_w, w - rs_w do ss:merge(ms, i, 0) end
-	ss:merge(rs, w - rs_w, 0)
-	ss:drawColorStringBlended(self.font, self.title, 0, (h - fh) / 2, 255, 255, 255, true)
-
-	s:merge(l, title_w, 0)
-	for i = title_w + l_w, w - r_w do s:merge(m, i, 0) end
-	s:merge(r, w - r_w, 0)
+	s:erase(0, 0, 0, 0)
 	s:drawColorStringBlended(self.font, self.title, 0, (h - fh) / 2, 255, 255, 255, true)
-
-	local cursor = core.display.newSurface(c_w, fh)
-	for i = 0, fh - 1 do cursor:merge(c, 0, i) end
-	self.cursor_tex, self.cursor_tex_w, self.cursor_tex_h = cursor:glTexture()
-	self.cursor_w, self.cursor_h = c_w, fh
+	self.tex, self.tex_w, self.tex_h = s:glTexture()
 
 	-- Add UI controls
-	self.mouse:registerZone(title_w + ls_w, 0, fw, h, function(button, x, y, xrel, yrel, bx, by, event)
+	self.mouse:registerZone(title_w + 6, 0, fw, h, function(button, x, y, xrel, yrel, bx, by, event)
 		if event == "button" then
 			self.cursor = util.bound(math.floor(bx / self.font_mono_w) + self.scroll, 1, #self.tmp+1)
 			self:updateText()
@@ -131,9 +117,6 @@ function _M:generate()
 			end
 		end,
 	}
-
-	self.tex, self.tex_w, self.tex_h = s:glTexture()
-	self.stex = ss:glTexture()
 end
 
 function _M:updateText()
@@ -151,13 +134,14 @@ function _M:updateText()
 end
 
 function _M:display(x, y, nb_keyframes)
+	self.tex:toScreenFull(x, y, self.title_w, self.h, self.tex_w, self.tex_h)
+	self:drawFrame(self.frame, x + self.title_w, y)
 	if self.focused then
-		self.stex:toScreenFull(x, y, self.w, self.h, self.tex_w, self.tex_h)
-		self.cursor_tex:toScreenFull(x + self.text_x + (self.cursor-self.scroll) * self.font_mono_w, y + self.text_y, self.cursor_w, self.cursor_h, self.cursor_tex_w, self.cursor_tex_h)
+--		self:drawFrame(self.frame, x + self.title_w, y, 1, 1, 1, self.focus_decay / self.focus_decay_max_d)
+		self.texcursor.t:toScreenFull(x + self.text_x + (self.cursor-self.scroll) * self.font_mono_w, y + self.cursor_y, self.texcursor.w, self.texcursor.h, self.texcursor.tw, self.texcursor.th)
 	else
-		self.tex:toScreenFull(x, y, self.w, self.h, self.tex_w, self.tex_h)
 		if self.focus_decay then
-			self.stex:toScreenFull(x, y, self.w, self.h, self.tex_w, self.tex_h, 1, 1, 1, self.focus_decay / self.focus_decay_max_d)
+--			self:drawFrame(self.frame, x + self.title_w, y, 1, 1, 1, self.focus_decay / self.focus_decay_max_d)
 			self.focus_decay = self.focus_decay - nb_keyframes
 			if self.focus_decay <= 0 then self.focus_decay = nil end
 		end
diff --git a/game/engines/default/modules/boot/dialogs/LoadGame.lua b/game/engines/default/modules/boot/dialogs/LoadGame.lua
index e46dedf866..125529e306 100644
--- a/game/engines/default/modules/boot/dialogs/LoadGame.lua
+++ b/game/engines/default/modules/boot/dialogs/LoadGame.lua
@@ -29,7 +29,7 @@ local Savefile = require "engine.Savefile"
 module(..., package.seeall, class.inherit(Dialog))
 
 function _M:init()
-	Dialog.init(self, "Load Game", game.w, game.h)
+	Dialog.init(self, "Load Game", game.w * 0.8, game.h * 0.8)
 
 	local list = Module:listSavefiles()
 
diff --git a/game/engines/default/modules/boot/dialogs/NewGame.lua b/game/engines/default/modules/boot/dialogs/NewGame.lua
index 33e0714e4a..7a20411998 100644
--- a/game/engines/default/modules/boot/dialogs/NewGame.lua
+++ b/game/engines/default/modules/boot/dialogs/NewGame.lua
@@ -28,7 +28,7 @@ local Button = require "engine.ui.Button"
 module(..., package.seeall, class.inherit(Dialog))
 
 function _M:init()
-	Dialog.init(self, "New Game", game.w, game.h)
+	Dialog.init(self, "New Game", game.w * 0.8, game.h * 0.8)
 
 	self.c_desc = Textzone.new{width=math.floor(self.iw / 3 * 2 - 10), height=self.ih, text=""}
 
diff --git a/game/modules/tome/data/gfx/shockbolt/object/spellbook.png b/game/modules/tome/data/gfx/shockbolt/object/spellbook.png
new file mode 100644
index 0000000000000000000000000000000000000000..0952446486ada3baa50f3ce6fd8e9ce1428e652f
GIT binary patch
literal 5808
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

literal 0
HcmV?d00001

diff --git a/game/modules/tome/data/zones/vor-pride/objects.lua b/game/modules/tome/data/zones/vor-pride/objects.lua
index ea3e9273b3..b662fe756a 100644
--- a/game/modules/tome/data/zones/vor-pride/objects.lua
+++ b/game/modules/tome/data/zones/vor-pride/objects.lua
@@ -27,6 +27,7 @@ local Stats = require"engine.interface.ActorStats"
 newEntity{ base = "BASE_SCROLL", subtype="tome",
 	power_source = {arcane=true},
 	name = "Tome of Wildfire", unided_name = "burning book", unique=true, no_unique_lore=true,
+	image = "object/spellbook.png",
 	color = colors.VIOLET,
 	level_range = {35, 45},
 	rarity = 200,
@@ -50,6 +51,7 @@ newEntity{ base = "BASE_SCROLL", subtype="tome",
 newEntity{ base = "BASE_SCROLL", subtype="tome",
 	power_source = {arcane=true},
 	name = "Tome of Uttercold", unided_name = "frozen book", unique=true, no_unique_lore=true,
+	image = "object/spellbook.png",
 	color = colors.VIOLET,
 	level_range = {35, 45},
 	rarity = 200,
-- 
GitLab