From 693246f711230cbe52962edac273e47900b69c9b Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 24 Jun 2020 01:45:49 -0400 Subject: [PATCH] Added Unown OW forms. --- extract_sprites.py | 40 +--- .../object_events/pics/pokemon/unown_a.png | Bin 0 -> 280 bytes .../object_events/pics/pokemon/unown_b.png | Bin 0 -> 299 bytes .../object_events/pics/pokemon/unown_c.png | Bin 0 -> 348 bytes .../object_events/pics/pokemon/unown_d.png | Bin 0 -> 330 bytes .../object_events/pics/pokemon/unown_e.png | Bin 0 -> 305 bytes .../pics/pokemon/unown_exclamation.png | Bin 0 -> 2556 bytes .../object_events/pics/pokemon/unown_f.png | Bin 0 -> 301 bytes .../object_events/pics/pokemon/unown_g.png | Bin 0 -> 316 bytes .../object_events/pics/pokemon/unown_h.png | Bin 0 -> 321 bytes .../object_events/pics/pokemon/unown_i.png | Bin 0 -> 263 bytes .../object_events/pics/pokemon/unown_j.png | Bin 0 -> 286 bytes .../object_events/pics/pokemon/unown_k.png | Bin 0 -> 289 bytes .../object_events/pics/pokemon/unown_l.png | Bin 0 -> 294 bytes .../object_events/pics/pokemon/unown_m.png | Bin 0 -> 319 bytes .../object_events/pics/pokemon/unown_n.png | Bin 0 -> 323 bytes .../object_events/pics/pokemon/unown_o.png | Bin 0 -> 317 bytes .../object_events/pics/pokemon/unown_p.png | Bin 0 -> 278 bytes .../object_events/pics/pokemon/unown_q.png | Bin 0 -> 313 bytes .../pics/pokemon/unown_question.png | Bin 0 -> 2741 bytes .../object_events/pics/pokemon/unown_r.png | Bin 0 -> 276 bytes .../object_events/pics/pokemon/unown_s.png | Bin 0 -> 322 bytes .../object_events/pics/pokemon/unown_t.png | Bin 0 -> 260 bytes .../object_events/pics/pokemon/unown_u.png | Bin 0 -> 299 bytes .../object_events/pics/pokemon/unown_v.png | Bin 0 -> 272 bytes .../object_events/pics/pokemon/unown_w.png | Bin 0 -> 271 bytes .../object_events/pics/pokemon/unown_x.png | Bin 0 -> 281 bytes .../object_events/pics/pokemon/unown_y.png | Bin 0 -> 287 bytes .../object_events/pics/pokemon/unown_z.png | Bin 0 -> 313 bytes spritesheet_rules.mk | 84 +++++++ .../object_events/object_event_graphics.h | 28 +++ .../object_event_graphics_info.h | 28 +++ .../object_events/object_event_pic_tables.h | 224 ++++++++++++++++++ 33 files changed, 369 insertions(+), 35 deletions(-) create mode 100644 graphics/object_events/pics/pokemon/unown_a.png create mode 100644 graphics/object_events/pics/pokemon/unown_b.png create mode 100644 graphics/object_events/pics/pokemon/unown_c.png create mode 100644 graphics/object_events/pics/pokemon/unown_d.png create mode 100644 graphics/object_events/pics/pokemon/unown_e.png create mode 100644 graphics/object_events/pics/pokemon/unown_exclamation.png create mode 100644 graphics/object_events/pics/pokemon/unown_f.png create mode 100644 graphics/object_events/pics/pokemon/unown_g.png create mode 100644 graphics/object_events/pics/pokemon/unown_h.png create mode 100644 graphics/object_events/pics/pokemon/unown_i.png create mode 100644 graphics/object_events/pics/pokemon/unown_j.png create mode 100644 graphics/object_events/pics/pokemon/unown_k.png create mode 100644 graphics/object_events/pics/pokemon/unown_l.png create mode 100644 graphics/object_events/pics/pokemon/unown_m.png create mode 100644 graphics/object_events/pics/pokemon/unown_n.png create mode 100644 graphics/object_events/pics/pokemon/unown_o.png create mode 100644 graphics/object_events/pics/pokemon/unown_p.png create mode 100644 graphics/object_events/pics/pokemon/unown_q.png create mode 100644 graphics/object_events/pics/pokemon/unown_question.png create mode 100644 graphics/object_events/pics/pokemon/unown_r.png create mode 100644 graphics/object_events/pics/pokemon/unown_s.png create mode 100644 graphics/object_events/pics/pokemon/unown_t.png create mode 100644 graphics/object_events/pics/pokemon/unown_u.png create mode 100644 graphics/object_events/pics/pokemon/unown_v.png create mode 100644 graphics/object_events/pics/pokemon/unown_w.png create mode 100644 graphics/object_events/pics/pokemon/unown_x.png create mode 100644 graphics/object_events/pics/pokemon/unown_y.png create mode 100644 graphics/object_events/pics/pokemon/unown_z.png diff --git a/extract_sprites.py b/extract_sprites.py index 74ecdb1882..86a2d7c3ea 100644 --- a/extract_sprites.py +++ b/extract_sprites.py @@ -31,13 +31,12 @@ def extract_sprites(spritesheet): offset += 1 -def stack_sprite(index, path): +def stack_sprite(name, path): joinp = os.path.join - name = f'{index:03d}.png' frames = [joinp(path, 'down', name), joinp(path, 'down', 'frame2', name), joinp(path, 'up', name), joinp(path, 'up', 'frame2', name), joinp(path, 'left', name), joinp(path, 'left', 'frame2', name)] - output = joinp(path, f'{index_to_name[index]}.png') + output = joinp(path, name) subprocess.run(['convert'] + frames + ['+append', output], check=True) print(f'Stacked {output}') @@ -85,14 +84,14 @@ def paletteify(path, output_path=None): joinp = os.path.join _, tail = os.path.split(path) species, _ = os.path.splitext(tail) - front = png.Reader(joinp(PKMN_GRAPHICS, species, 'anim_front.png')) + front = png.Reader(joinp(PKMN_GRAPHICS, species.split('_')[0], species.split('_')[1], 'anim_front.png')) front.read() target_palette = tuple(c[:3] for c in front.palette()) r, g, b = target_palette[0] color = f'rgb({r},{g},{b})' # Strip alpha color subprocess.run(['convert', path, '-background', color, '-alpha', 'remove', output_path], check=True) - apply_palette(joinp(PKMN_GRAPHICS, species, 'anim_front.png'), output_path, output_path) + apply_palette(joinp(PKMN_GRAPHICS, species.split('_')[0], species.split('_')[1], 'anim_front.png'), output_path, output_path) # Sprites from https://veekun.com/dex/downloads @@ -101,33 +100,4 @@ if __name__ == '__main__': if args: paletteify(args[0]) else: - f0 = open('graphics_info.h', 'w', buffering=1) - f1 = open('pic_tables.h', 'w', buffering=1) - f2 = open('event_graphics.h', 'w', buffering=1) - f3 = open('spritesheet_extra.mk', 'w', buffering=1) - for index in range(1, 386+1): - stack_sprite(index, 'overworld') - try: - species = index_to_name[index] - path = os.path.join('overworld', f'{species}.png') - output_path = os.path.join('graphics', 'object_events', 'pics', 'pokemon', f'{species}.png') - paletteify(path, output_path) - except Exception as e: - print(e.__class__.__name__, e, file=sys.stderr) - continue - d = 32 if species not in {'steelix', 'wailord', 'kyogre', 'groudon', 'rayquaza', 'lugia', 'ho_oh'} else 64 - line = f'[SPECIES_{species.upper()}] = {{0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, {d*16}, {d}, {d}, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_{d}x{d}, gObjectEventSpriteOamTables_{d}x{d}, gObjectEventImageAnimTable_Following, gObjectEventPicTable_{species.capitalize()}, gDummySpriteAffineAnimTable}},' - f0.write(line + '\n') - lines = [f'const struct SpriteFrameImage gObjectEventPicTable_{species.capitalize()}[] = {{'] - lines += [f' overworld_frame(gObjectEventPic_{species.capitalize()}, 4, 4, {frame}),' for frame in range(6)] - lines.append('};') - f1.write('\n'.join(lines) + '\n') - line = f'const u32 gObjectEventPic_{species.capitalize()}[] = INCBIN_U32("graphics/object_events/pics/pokemon/{species}.4bpp");' - f2.write(line + '\n') - lines = [f'$(OBJEVENTGFXDIR)/pokemon/{species}.4bpp: %.4bpp: %.png\n', - f'\t$(GFX) $< $@ -mwidth {int(d/8)} -mheight {int(d/8)}\n\n'] - f3.write(''.join(lines)) - f0.close() - f1.close() - f2.close() - f3.close() + stack_sprite('201-question.png', 'overworld') diff --git a/graphics/object_events/pics/pokemon/unown_a.png b/graphics/object_events/pics/pokemon/unown_a.png new file mode 100644 index 0000000000000000000000000000000000000000..7646b5fe82c31e0b3a5921f3ba49bf8b91050309 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-5(*we)^q+-t7DI2*C8}PW8{ygpUBE5p6efRV_ zAmjQ?CC-vk-?oN6o#ox{6Qy+~c`XfEDZMggj`!-1O*doaJ!9Y9@bt{?ra*qC1L@a= zgAWw37aVxHP;J|Wg{_v%Q{Mh{V$gZf)gaTrdn$VYtHpyCd@==M3K7>nACZlGAN;ra5L zYZ4MKo1MAYx#Zn!NyY_nQjD?;dqUQJXJg=El9|B#hEsr}mCu9Gb@}<)qp^|inWb58 zFtPlSv0?sFxLa9cf_D78Vzw9MxArpzd@=vb!!z#y<3@qThvppdk$)yO&tv+**KvHl e^xxh4+||GM=Cn7xm?;DF0fVQjpUXO@geCw2sD2ax literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_c.png b/graphics/object_events/pics/pokemon/unown_c.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f631f31e0ee3a0e8a55a1d8370d114d9fa8881 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-6k+|$J|q+-t7DS>>440xP>Po3=Bk^CijQx(Gz zL4o6HIYKJuuC2QzzG&Kyf}r2ItP?L?0D}J>4Z**e|L${aTKjIcQ=ENu>)O43tNu2X z-%(i+P%<;Me!bQ?!vOggKTjCkV^)1FcTL!UX;1rq+-t7D~5cB6?j+!{O9O&Rq?dF=w=SF zb-J1?ZubAZn1{9Nq1nzKnptwTB^~V&)z%YnD7R4j{(QM1!^xfd7#MXXu?rjvmT>Vi zkvhPTaqraSS)6OGwu)cKVR`iR3{Qo@Q?oohepdI&n|WI_*b-UmJh}QBOKjeKU}#=( z|IUA5)^r9LIROKPN%QYFHvDI9%RN6=c1!T;!uZx3T>XwLRn*#|8^4>EYV L`njxgN@xNADrbuh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_e.png b/graphics/object_events/pics/pokemon/unown_e.png new file mode 100644 index 0000000000000000000000000000000000000000..741a5ef42e1427da054fe295f6bf44ff6257375a GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-5($J50zq+-t7DUMu+4R}~;Kb>}ZX>n!0P^s++0bV-_;Bameose=Tt%ES_Ba+HURpA!PC{xWt~$(69DW2e}Di0 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_exclamation.png b/graphics/object_events/pics/pokemon/unown_exclamation.png new file mode 100644 index 0000000000000000000000000000000000000000..4271c7ab99a223d67cfe3431f957ca0a2ffc1213 GIT binary patch literal 2556 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 A;s5{u literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_i.png b/graphics/object_events/pics/pokemon/unown_i.png new file mode 100644 index 0000000000000000000000000000000000000000..39aa3b8572199448f2de292cce8c0766a7b9300b GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-4O$$#$Ar5WnvEgPA% z!x>n6cF#yid=_(7*TLiaQPG44i=-~F6(l`W6=3ALQN_&qhE?GBTl+x&uwO3s_$IJ& uT(PVWZeU)$K-%EWdG-g-O>XJ0;Xk=N@U+L_x#>XHF?hQAxvX(@qeEzV?bZ+Zeg1ZjqVB3 zYLgujf-g5X@H6Ot-Zev%F<^@}LtMTOgVpS*3<8XNFBl%gDl*+?>f(F+_sH5c-)H_T zZqRjDFu!>@gG~bKc}6FuAJUhmE?{SvVz&tTAG!`#cr_2zyf)7FJd zf2|J`EHX}busS~W;@;*U$MqeJ=e=EvlkOa3e$l{W8UBF3;q2dk41ecr`^J8aNjED- UdaHnQ3((yRp00i_>zopr05D8_e*gdg literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_l.png b/graphics/object_events/pics/pokemon/unown_l.png new file mode 100644 index 0000000000000000000000000000000000000000..b11096a1ab728da126eb4716749078ff2a215c94 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-5((bL5-q+-t7D+f6b8}P6O%(aQskUiY~;Uj~p za*NM|%Gb$X>`xSOw>JIr-L^PgMm=q&kJ{vue{_~EI;I^UST4cvd}BN-W8s^04zpVd z&AF9U4G!5KWLZ)gUTw%GdQMmD#yADIxj$6$<92yK)FHJa@&v^LLj=mEUzt-i| z$$j9JxKjDSRGPuYAnOC8K=a?z9nYULu9BR=>Ki9@U+O!emZa9pT%$aE?}L{Xd+1&PNZ02V1?tO7M}3L(p`+{$t9Hq`$Bl{d=M>QUtn@2e_jaC`sU|3CgtjWb=^GFemo`ct5<7(8A5T-G@yGywqji;t)P literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_n.png b/graphics/object_events/pics/pokemon/unown_n.png new file mode 100644 index 0000000000000000000000000000000000000000..8b39392831594ab8b339d753942688f6a021164c GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-53&eO#)q+-t7D}h{x40zZc*nCZKwsDhp%ea43 zxkFuG&)S(?-v9KLIt#S?;cqTcjkmrg)zC420)AA0q2>kFo@X^brM*IvGR zO-yHl6?fRVIib!hOQ)V$p|^wa#w_7@{YXXzqm$L&4yLZ)5184<DP!>VI`4~|8O$bJjXv|gM<-6J zZusU=`@`UnNSbBDbH+b40{n5}X+IecJXok3e(3FN-6?aTCp>3}d2fD?TW7-k>UBk| za~MBZiA5}6mH7XgOXhbP0l+XkKtCouE literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_p.png b/graphics/object_events/pics/pokemon/unown_p.png new file mode 100644 index 0000000000000000000000000000000000000000..f3699ebdcdbaf109114d2873dd3c3bce8692e251 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-5((9^{+q+-t7D+f6n40u>C%(0r;k^DtrKA%FL zg5QHZRf1>!Pf(iI@+bP%q;Rk3%|2?APo}(^(j~Rt!S&8UW|`mLL|BgOlU2Nt(af_g zv52AZ+5>Bj6AV{VojIPN6{!+JsLH=d%boFyt I=akR{0Oh`QQ~&?~ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_q.png b/graphics/object_events/pics/pokemon/unown_q.png new file mode 100644 index 0000000000000000000000000000000000000000..1e2bc7f46f774d5d50ec9383ffc3a3cd5f1b8ea1 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-53#M8wwq+-t7DF^uuDG0cH-xBY(YW_uM<3o3U zu(o~K?5clPHYszfoX?EgB?nMv7Lz}u^|2h zi&LvSL)Vo)8`j4Q_kDOO-TLG-y9&1kZ@0hdR%xMc%s;ZUd!9$XKXkTXs;P8YKI4lY r=fWSqoB2-Rugrmb|JNUXE88;UC;L@9PFWBI^bdoltDnm{r-UW|^+Au# literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_question.png b/graphics/object_events/pics/pokemon/unown_question.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d210288364040bd08298e5864d79e4640eac28 GIT binary patch literal 2741 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 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_r.png b/graphics/object_events/pics/pokemon/unown_r.png new file mode 100644 index 0000000000000000000000000000000000000000..70194b27cd4be0cca5fab171251e248211bc05a3 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-4O-_yl0q+-t7D~4Q$4R}}se61oiY}?qCOByCA zx5(|j*R;=}>ve#}i+rbN_SJ@gOM_O1Xr(V%`_}Sxz5F&tuFbZZXEIM{Jwo873F=^?0+g zCZAl*5P6_!@m&VKJxnbMj2H446asz}GyI?T=JW5xH4HwULDwJLpBxKxDubu1pUXO@ GgeCygLvnWj literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_s.png b/graphics/object_events/pics/pokemon/unown_s.png new file mode 100644 index 0000000000000000000000000000000000000000..2dacced84728e9d77dcc101e3cc21aa475efd128 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-53*3-o?q+-t7D~5cB6?hy1{paYcs^V!op;UcU z*~QZFT(sLC*@u_>LO-TS|6vjmoN1VRtjC^<_m?L7-@pb-#%HayOQe`01Q}0Q-f!MI zrCK}ZI%D)U?msnWXWwO-!0@R=t~y##qv}n%I1hv7>AhsE?7P5P7{laMHLf!9e0P`_HB>WtvP4>w~#@agGoVxd250f!^N)&JU`kmKdY%= zxzBLt{K1BI#|u7QQf6Q^-}K*7p5e}c#yj#)>}B*HnkVNU)!v;4^caJutDnm{r-UW| DD5Z*s literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_t.png b/graphics/object_events/pics/pokemon/unown_t.png new file mode 100644 index 0000000000000000000000000000000000000000..cb476bf5ee9217da3d6fe97088d88cdfb6b45da4 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-6E@9E+gQZeW4l!KfN1_CVaQ&Syvl=&?m#p^h( zao7<3ak=!4P-m8h-^}N{QJLg&gTe~DWM4fP~dSU literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_u.png b/graphics/object_events/pics/pokemon/unown_u.png new file mode 100644 index 0000000000000000000000000000000000000000..2bde3485416f3bfe5c014a55a657b72eef7ce422 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R%R|)5S5QV$Rzsj$DTgcvwm=opyR@T*J{_tzYZ( za`WmZLD_dB+8h=xIO{35Iays`qL13-lPPr)Q;K7h5B75HFnBaIP3+OvFV-sz9?d;) ze!{MpZnNxt7c5>ic$X-@__gD4@Bt?coxaH%gn!&*iMY)qwyEKnB%|o24{IDY#GHD- zmQ>puF2?ok?}3FMxXTZ5HtK53x+(5vBXVPhZF{RCKdTq}E&hmSl^QpsY}~(3ZQJwP fwB`S@|0kt2UgjOoYCg*d^Z|pXtDnm{r-UW|v+Rdd literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_v.png b/graphics/object_events/pics/pokemon/unown_v.png new file mode 100644 index 0000000000000000000000000000000000000000..0bb8dba96c8ee604ff3aa40de9017de606116df2 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-4O+tbA{q+-t7DTZ7}6hvIs+C)Ya@pK!^uzMqT zNUqxV`8oCa6JA{hy8L=lbkFg;m~F#Umc0eJweiu3Pj9y5HqQ4{ zc`~mx%%SGZw)h6|klO54hT}ixuRUNO`%}x?@!uO~9oEuW-KSURX*eZJ03g}R`FT?=+g`BU4Li3lI3`I-mkWf|CD&>swn%P;v&XCXEJ!Y`njxgN@xNA DHgk8n literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_w.png b/graphics/object_events/pics/pokemon/unown_w.png new file mode 100644 index 0000000000000000000000000000000000000000..d49a4cf96cb94452d43965c5f6cc87e14eefb037 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-4O%hSa%q+-t7DTZ7P20X6DPg9iSl%0RR(35kt z*>+XaEk~zI;fdwmWq;(YJVaO=1z6+{>HqGGyZ1F&k(<})f_rnwnY&KX0k0)%Vhc*x z^o?IPys^44^S;K5*?bz6|JL2rRalZ4;=X4$*MYWq??XfioGyLexO3MbweuqPG*3uR zzatV+&duSg?Yf=&u-&Hc2P`&vAIuB({JQ@|K1|;>Hu%4H{~w?$89ZJ6T-G@yGywoj CD|8+J literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_x.png b/graphics/object_events/pics/pokemon/unown_x.png new file mode 100644 index 0000000000000000000000000000000000000000..e1621d278bd6be49e0b8f4b04d1f21761dbceecb GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-5(#M8wwq+-t7$%b5q4R~Blf2OE?k&ruc{HAxm zKvmNm^H*t}3R^v=HN~A!_`g7%-DQf3=OmSr*BkC%I`@3eucoaF*9J4+H8|DTc1b(& z=Kb66I2PaG@`;uI+?nUWeE2Nqz6D>d3(phiQQpE7I=zoC(0ienM50ar@752i8Um*O zJo3lro%*Nw`3Y)kPOmk0_-&JvU|2NeIMbwV=6?>?>hjDjZ@j60#30BUy#D&3mMuW{ OGI+ZBxvXlh2G5yhHYX9TR;Pv6JzhQjQXLm8y+O@0JGh}W&M$<4-@$I* z??i^ZG0aouPb+I`4Oue7vXl40pPNURyrwctkcFtX) zzq&Toj_(Dxz>4AzdJODw2XhZR{`a1tZEo)`Zik3R3%)ZJ>~`C`YuUNd+R1+FtCFQ- TCeB<9bTxygtDnm{r-UW|OrU*A literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/unown_z.png b/graphics/object_events/pics/pokemon/unown_z.png new file mode 100644 index 0000000000000000000000000000000000000000..e2097128e7d62e1d276f67ebf23ff60753af5c88 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt(qPyXHT`e+asF@819a z{{;jDmMmFPTwEL!6a<%oGbZzX{R-53#M8wwq+-t7Db{>UhCD9YKb;KgNDf%zw$NRM zv9QTj|H4Ca4Yp})nwNi0t}GNvoz(^cbxSWS%$oR%Pc%WdVIvbm!eJ(6xnSnTHP#at zj(um1b)Lq1Vj{0X$$^a;)(0NFR!x6!!m3eq!P(y>%M5y!*=){V!Qb(;#*2Z$*=zl= z22%%bBZdnM9rp7MG(A}h?3v~JG{xozvT_)1bJ-uq_)5_H*tVq) rmX__l&v2uh$KhT5$J=5b