From ed6c91fa8fd974df250bf6113f920be00e780f06 Mon Sep 17 00:00:00 2001 From: SpagettiFisch <63868515+SpagettiFisch@users.noreply.github.com> Date: Thu, 22 Feb 2024 10:59:02 +0100 Subject: [PATCH 1/6] test for gameobjects (level, rooms and scenes) created Signed-off-by: SpagettiFisch <63868515+SpagettiFisch@users.noreply.github.com> --- art/images/blau1.kra | Bin 0 -> 1264586 bytes art/images/blau1.png | Bin 0 -> 10980 bytes art/images/blau2.png | Bin 0 -> 10980 bytes art/images/blau3.png | Bin 0 -> 10977 bytes art/images/rot1.png | Bin 0 -> 10981 bytes art/images/rot2.png | Bin 0 -> 10977 bytes art/images/rot3.png | Bin 0 -> 10981 bytes classes.py | 60 ++++++++++++++++++++++++++++++++++++++----- main.py | 40 ++++++++++++++++++++++++++--- 9 files changed, 91 insertions(+), 9 deletions(-) create mode 100644 art/images/blau1.kra create mode 100644 art/images/blau1.png create mode 100644 art/images/blau2.png create mode 100644 art/images/blau3.png create mode 100644 art/images/rot1.png create mode 100644 art/images/rot2.png create mode 100644 art/images/rot3.png diff --git a/art/images/blau1.kra b/art/images/blau1.kra new file mode 100644 index 0000000000000000000000000000000000000000..ea14ba222dbea9a594faab59849d58e28502ddb0 GIT binary patch literal 1264586 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

w{5;vxqorlvjZRM^PatGdBt(-@jixj6|XyE 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 Hl+XkKY5Cw< literal 0 HcmV?d00001 diff --git a/art/images/blau3.png b/art/images/blau3.png new file mode 100644 index 0000000000000000000000000000000000000000..6432f791a6bfaa49186c68ff784d5c327f7cb123 GIT binary patch literal 10977 zcmeAS@N?(olHy`uVBq!ia0y~yU~gbxV6os}1B$%3e9)PJfiW-B**PFHIhlb$V`AyV zz1~iN636PZ0;fDo2ykh3c5QYNaY>eVlEj;K;rgQMtJ%VL-&x(Vg-w^&$@$8q>lf++ zvM)plu(%3bym9BcP*HV1m)DJ*bAJD;I9C~W?{`drJFjl~c3)?`_zg)D3lcIbRWE#O zleUlTxjg+sPH|qM*}46%e=|;B^;Kid;pJZ2O$$o7{IiyY3QWuF$P@E9y8F=H zD6@$|c4B-{MhialUYcxL7dmI<$K^@dazb*;a-wplBwg3q_5TuD zKQBIJf|WwGz-$S@Lo6OaDYDH>iYqHmuGyNu=GE+UXPa4je7zzbotPk+A8=(+$c_J0?oG_7FPzh#_~J&h*UiE@Kbhr4T=UX*oHG9-J?Zk5=`WtP znU%2Y%iXafFXLqGjysM2)QuBWS50!?W<9s zVKgs*)4*uG011ZCHWD}-M*9np9gGf3j5e=;$zXK!h1$(4rMSJ^o_W(xt_S5ZPgg&e IbxsLQ04`75BLDyZ literal 0 HcmV?d00001 diff --git a/art/images/rot1.png b/art/images/rot1.png new file mode 100644 index 0000000000000000000000000000000000000000..209753cb31c19bb4e3c6b79ad0ec0341f7734332 GIT binary patch literal 10981 zcmeAS@N?(olHy`uVBq!ia0y~yU~gbxV6os}1B$%3e9)PJfiW-B**PFHIhlb$V`AyV zz1~iN636PZ0;fDo2ykh3c5QYNaY>eVlEj;K;rgQMtJ%VL-&x(Vg-w^&$@$8q>lf++ zvM)plu(%3bym9BcP*HV1m)DJ*bAJD;I9C~W?{`drJFjl~c3)?`_zg)D3lcIbRWE#O zleUlTxjg+sPH|qM*}46%e=|;B^;Kid;pJZ2O$$o7{IiyY3QWuF$P@E9y8F=H zD6@$|c4B-{MhialUYcxL7dmI<$K^@dazb*;a-wplBwg3q_5TuD zKQBIJf|WwGz-$S@Lo6OaDYDH>iYqHmuGyNu=GE+UXPa4je7zzbotPk+A8=(+$c_J0?oG_7FPzh#_~J&h*UiE@Kbhr4T=UX*oHG9-J?Zk5=`WtP znU%2Y%iXafFXLqGjysM2)QuBWS50!?W<9sVRRgc;*rMXw$>9EfhkGiNq%krdK0D@0tX=Jib0r3 z0>Vmgf(>K(a3ny48aQENoCb;wAnib)#sVDxJeVlEj;K;rgQMtJ%VL-&x(Vg-w^&$@$8q>lf++ zvM)plu(%3bym9BcP*HV1m)DJ*bAJD;I9C~W?{`drJFjl~c3)?`_zg)D3lcIbRWE#O zleUlTxjg+sPH|qM*}46%e=|;B^;Kid;pJZ2O$$o7{IiyY3QWuF$P@E9y8F=H zD6@$|c4B-{MhialUYcxL7dmI<$K^@dazb*;a-wplBwg3q_5TuD zKQBIJf|WwGz-$S@Lo6OaDYDH>iYqHmuGyNu=GE+UXPa4je7zzbotPk+A8=(+$c_J0?oG_7FPzh#_~J&h*UiE@Kbhr4T=UX*oHG9-J?Zk5=`WtP znU%2Y%iXafFXLqGjysM2)QuBWS50!?W<9sB4aUDkjKe0AV?_Fz`TF0*a%` zfFUs&AduuRnnJ+gFq&n+!7y4lfP-PQa2PEd7)JBLXkK6#trte?1%}Z!5;zfz=7rI` zFq#*@X<)QofCR&68wnf^qx}U)au}^B!Qn7kQG$bkxWeH;=6Svpkb1VC(f1!~_cm}c zLPshM6dM@91~I6yK!-68v@n21tbt&LzyUDLz#z;d0bwOL!A3THI1(U2qlPgsjD{Hl z!)VfAU>MC#qooF@R2(fF8AdAeVlEj;K;rgQMtJ%VL-&x(Vg-w^&$@$8q>lf++ zvM)plu(%3bym9BcP*HV1m)DJ*bAJD;I9C~W?{`drJFjl~c3)?`_zg)D3lcIbRWE#O zleUlTxjg+sPH|qM*}46%e=|;B^;Kid;pJZ2O$$o7{IiyY3QWuF$P@E9y8F=H zD6@$|c4B-{MhialUYcxL7dmI<$K^@dazb*;a-wplBwg3q_5TuD zKQBIJf|WwGz-$S@Lo6OaDYDH>iYqHmuGyNu=GE+UXPa4je7zzbotPk+A8=(+$c_J0?oG_7FPzh#_~J&h*UiE@Kbhr4T=UX*oHG9-J?Zk5=`WtP znU%2Y%iXafFXLqGjysM2)QuBWS50!?W<9sPf*-}!1d^QMhJ_c+@JxG%%VM zAi*$NFO1d;qj_O8FEEVO3#0YI=r|H24UnG~EZ*L1 None: + def __init__(self, name:str, _type:str, bg, objects:list, WIDTH, HEIGHT) -> None: self.name = name self.type = _type - self.background = bg + if bg != None: + with open(bg, 'r') as bg: + self.background = pygame.transform.scale(pygame.image.load(bg), [WIDTH, HEIGHT]) self.objects = objects class Scene(GameObjects): - def __init__(self, name:str, _type:str, bg, objects:list) -> None: - super().__init__(name, _type, bg, objects) + def __init__(self, name:str, _type:str, bg, objects:list | None, WIDTH, HEIGHT, level:list) -> None: + super().__init__(name, _type, bg, objects, WIDTH, HEIGHT) + self.level = level + self.current_level = 0 + def update(self, change:bool): + if change: + self.current_level += 1 + self.level[self.current_level].update() + for obj in self.objects: + obj.update() + + + def draw(self, screen): + for obj in self.objects: + obj.draw(screen) + self.level[self.current_level].draw(screen) + + +class Level(GameObjects): + def __init__(self, name: str, _type: str, bg, objects: list, WIDTH, HEIGHT, stage:str, rooms:list) -> None: + super().__init__(name, _type, bg, objects, WIDTH, HEIGHT) + self.stage = stage + self.rooms = rooms + self.current = 0 + + def update(self): + for room in self.rooms: + if room.id == self.current: + room.update() + keys = pygame.key.get_pressed() + if keys[pygame.K_RIGHT]: + self.current += 1 + if self.current >= len(self.rooms): + return 1 + + def draw(self, screen): + for room in self.rooms: + if room.id == self.current: + room.draw(screen) class Room(GameObjects): - def __init__(self, name:str, _type:str, bg, objects:list, exits:list) -> None: - super().__init__(name, _type, bg, objects) + def __init__(self, name:str, _type:str, bg, objects:list, WIDTH, HEIGHT, exits:list, id:int) -> None: + super().__init__(name, _type, bg, objects, WIDTH, HEIGHT) self.exits = exits + self.id = id if self.type == 'normal' or self.type == 'boss': self.locked = True else: self.locked = False + + def update(self): + pass + + def draw(self, screen): + screen.blit(self.background, (0, 0)) + \ No newline at end of file diff --git a/main.py b/main.py index d4c669f..1b61739 100644 --- a/main.py +++ b/main.py @@ -13,7 +13,7 @@ def setUp(config): else: screen = pygame.display.set_mode(config["res"]) clock = pygame.time.Clock() - + return screen, clock, True, True, "start.png", [] def readConfig(): @@ -27,8 +27,8 @@ def quitGame(): quit() def play(screen, clock, running, background, isblack, WIDTH, HEIGHT): - objects = [] - objects.append(MainCharacter('Herbert', 100, 'reddy.png', 125, 5, 1, 1, 50)) + objects = [[], [], []] #0 - maincharacter stuff; 1 - mobs; 2 - npcs + objects[0].append(MainCharacter('Herbert', 100, 'reddy.png', 125, 5, 1, 1, 50)) while running: screen.fill('#000000') events = pygame.event.get() @@ -103,6 +103,7 @@ def menu(screen, clock, running, background, isblack, WIDTH, HEIGHT): bg = pygame.transform.scale(bg, (WIDTH, HEIGHT)) # fill the screen with an image to clear the screen screen.blit(bg, (0, 0)) + for obj in objects: obj.process(screen, clock, running, background, isblack, WIDTH, HEIGHT) @@ -111,6 +112,38 @@ def menu(screen, clock, running, background, isblack, WIDTH, HEIGHT): clock.tick(60) # limits FPS to 60 +def test(screen, clock, running, background, isblack, WIDTH, HEIGHT): + level = [] + level.append(Level('blau', 'normal', None, [], WIDTH, HEIGHT, 'blue', [ + Room('blau1', 'normal', 'art/images/blau1.png', [], WIDTH, HEIGHT, [True, True, True, False], 0), + Room('blau2', 'normal', 'art/images/blau2.png', [], WIDTH, HEIGHT, [True, True, True, False], 1), + Room('blau3', 'normal', 'art/images/blau3.png', [], WIDTH, HEIGHT, [True, True, True, False], 2), + ])) + + level.append(Level('rot', 'normal', None, [], WIDTH, HEIGHT, 'red', [ + Room('red1', 'normal', 'art/images/rot1.png', [], WIDTH, HEIGHT, [True, True, True, False], 0), + Room('red2', 'normal', 'art/images/rot2.png', [], WIDTH, HEIGHT, [True, True, True, False], 1), + Room('red3', 'normal', 'art/images/rot3.png', [], WIDTH, HEIGHT, [True, True, True, False], 2), + ])) + + scene = Scene('test', 'normal', None, None, WIDTH, HEIGHT, level) + + # RENDER YOUR GAME HERE + while True: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + quitGame() + + scene.update() + scene.draw(screen) + # flip() the display to put your work on screen + pygame.display.flip() + + clock.tick(60) # limits FPS to 60 + + + def main(): config = readConfig() screen, clock, running, isblack, background, objects = setUp(config["screen"]) @@ -118,6 +151,7 @@ def main(): #objects.append(Button(WIDTH / 2 - 80, HEIGHT / 2 - 72, 160, 64, 'medieval', 48, "Play", play)) #objects.append(Button(WIDTH / 2 - 80, HEIGHT / 2, 160, 64, 'medieval', 48, "Options", uwu)) #objects.append(Button(WIDTH / 2 - 80, HEIGHT / 2 + 72, 160, 64, 'medieval', 48, "Exit game", quitGame)) + test(screen, clock, running, background, isblack, WIDTH, HEIGHT) menu(screen, clock, running, background, isblack, WIDTH, HEIGHT) """while running: for event in pygame.event.get(): -- 2.45.3 From 4a88bb98d5de17dc7d3fb2dc8b4dd226fa67138d Mon Sep 17 00:00:00 2001 From: SpagettiFisch <63868515+SpagettiFisch@users.noreply.github.com> Date: Fri, 23 Feb 2024 10:45:54 +0100 Subject: [PATCH 2/6] removed one empty line --- classes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/classes.py b/classes.py index d88f736..d03460e 100644 --- a/classes.py +++ b/classes.py @@ -161,7 +161,6 @@ class Scene(GameObjects): for obj in self.objects: obj.update() - def draw(self, screen): for obj in self.objects: obj.draw(screen) -- 2.45.3 From 15d39949b423bf5b7be732b865cfdcf7f0958efc Mon Sep 17 00:00:00 2001 From: SpagettiFisch <63868515+SpagettiFisch@users.noreply.github.com> Date: Mon, 26 Feb 2024 08:23:50 +0100 Subject: [PATCH 3/6] pull from main repository --- art/images/arrow.png | Bin 0 -> 255 bytes art/images/dreiviertelheart.png | Bin 0 -> 450 bytes art/images/fullheart.png | Bin 0 -> 433 bytes art/images/halfheart.png | Bin 0 -> 462 bytes art/images/label.png | Bin 0 -> 635 bytes art/images/noheart.png | Bin 0 -> 438 bytes art/images/oldman.png | Bin 0 -> 674 bytes art/images/viertelheart.png | Bin 0 -> 441 bytes art/sprite files/oldmanattack.png | Bin 0 -> 6043 bytes art/sprite files/oldmanwalk.png | Bin 0 -> 2118 bytes classes.py | 59 +------- ideas.txt | 22 +++ main.py | 61 +++----- viecher.py | 235 +++++++++++++++++++++++++++--- 14 files changed, 261 insertions(+), 116 deletions(-) create mode 100644 art/images/arrow.png create mode 100644 art/images/dreiviertelheart.png create mode 100644 art/images/fullheart.png create mode 100644 art/images/halfheart.png create mode 100644 art/images/label.png create mode 100644 art/images/noheart.png create mode 100644 art/images/oldman.png create mode 100644 art/images/viertelheart.png create mode 100644 art/sprite files/oldmanattack.png create mode 100644 art/sprite files/oldmanwalk.png create mode 100644 ideas.txt diff --git a/art/images/arrow.png b/art/images/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..ede5aaf94fb3487c541603df4f4eb684cda254cd GIT binary patch literal 255 zcmVQ?f(d z`ok)^(t@__kB~^1jMqFE)j&Rh5r7224+uuMi6H_&Dh0=R4~YT<37+Zs!yJx}>pl;& zcm%OPN4BA454LvVKk$|(t~axZ45X!4+us=cSjm4AfjdP;I}seF?*IS*002ovPDHLk FV1nK+WM2RP literal 0 HcmV?d00001 diff --git a/art/images/dreiviertelheart.png b/art/images/dreiviertelheart.png new file mode 100644 index 0000000000000000000000000000000000000000..0b455ebcc6655c26beeee0da3616b1723d339331 GIT binary patch literal 450 zcmV;z0X_bSP)Cn`~Hi&+g9u&o}3s5llE_LOuT1pp{wG@=Fs|Jsi<$UgdsaWoy6N#0TG}`LP1j z2dNW+)?z^qI}PL%#Io?>@t_7qTrrP`njRwOaA7Sf&Lt*^!H$9EDW(P~C!DVE#^Rj@ zb2PBDh+Pk`4tIYm3Y`-+lns3 zz!Nh?p%@Qw22((h>|EZWLyQn!@pc^lBw*^6h);T?nL;6m_lAfxGJ>@k;p!f@f!hme zs(t!o3pcF5!P6P?G=T`wm1g|yf%SRC$t$UxqHVNao$pEv^}#L^$;=@aguFIqNy50^ z4bu(UUQrFp4~&sUYGn#qem;jW4q1vKiY`eLCLRqCk0ls%F0rCwOg|?f6IB5$?&S6XpWhfeP26+C)#5WU=1)w6ZJmKOEDFvnis0ld?2->oM4<%U)4|LZK zU*#_VRdH4b9w`b9+zs3mZmXLeVu;f{hwGPs5rHk^MiOu#Vuw+xiZn=JW?@F-rwl#a zO(_YCA7g*aRvgepJ4rydHPS)CE$ z;WZXxINLW|y|N#4H)7toc&UUKRJ=3KtT_U_cR1gr69T$#F{{Uzz-DYpVyz9*FjKMy z?>%@$fue0*-GD$=gm$9obHsB-yxyM359wVrAhwL`f?;Z=tDu1)HF65J(|d+bI^d2Fp|y7Meg13xBX% z*pR!|vkAl`MiAoevhxGyn{)2oHCXU63+nN|fXCvFo_w@mlw6}|N@AW@EBnWvZ8*d< zn?Xb3t4Y^m2Tv5AzO_(Nz(S!8c;T!M@tc%K86YI18v@Np#*i_f=Ab32ECe|o(I-fa zMK)_Z1_J6338{Q~oHt|y83PUsv`p)PGcdvhZ^IZlYdx9hhk{*FZr*`=7vfB!82}w@ zke5&#a#Slwcw9a&ei)y-l9GZL_Z-e*Oap3gx@J?`ilrp2AzuuXb9s+Uj4E?oM}l4& zgKiqp44_lo*81Bm%B%yUBbNxQbI1a|x+1vz4B;fg1NG-J5>M42UDTXaWrT8C8AA37 z95UiBn0q-0(7}Kwe}91=fOMl%tZ4oHjx)tN;}itGJ*)sLkMEP`I+$#bLs*41h)v)_ z_CO;ZRekpQwUxVRSH8Be1>=t}ZF_Df&ZGZjZ{eTm3zs^S5p2j|j{pDw07*qoM6N<$ Ef-L{SrT_o{ literal 0 HcmV?d00001 diff --git a/art/images/label.png b/art/images/label.png new file mode 100644 index 0000000000000000000000000000000000000000..9631a74403dffe492a8f933a56261b1b6cb95b59 GIT binary patch literal 635 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfit3Iy(nsCMPp6Xq=xq(b}8Y zQKWUhi)xZkkcLLmM5QiQrbP{BHnw%5oBzO898|SvBUe^OoTRw*V;NK#e zBg*0^=%TZ>)>P=4b*F%!?wr(bb#rbO?<^LZW6ZiXW1GLz#uUkm9yj(+i1@O5UcsZI zzWNK7q`lg_@ufxmy6@65tK!;2^#5(Y^Rj1UR0i7i?6*~_XLW_iSdbWi@wd4D;4%%W+FfN zmVPzEWDUVXKRg2yTbaZZSE`~CyscI(YMPUqvzx%+vVvbkTG-u`E?;q5QQEq4z`u6(NR?I)bS=z3IC0)Nfx zf}(quf^HY=VyrE%y5wQD#O&s|9I<)*2WL0D(|!?^mG-st+(q3Z*Pn>T9y+JTbMpJX zr~b0+8R8!@e{KbaKWBkQWHAGS$_o%?Y)WR80Sa#Mba4!+h0Qif@9tDj`!pl})>G5FA7UnLP->{Gx)P}J_T?|$1kLxq zqFH?RxiIWJ*L3SH!_qyEt{6VObNuH{#yU2G{_j7oZQSzwwjRTL1`Fl}V-kt$hZ6s- qYwbR`wV?Gao51;RELS2eG}qpm z#ew{%@jNAkV6NJo-TCJKXZC8i@~d5$kN*YCqON=RngVJN#ABp*THdr>-@oi)U@T*- zs=8FLNIGut`HWjtYz3$*FoVE|L2Nv1V9+Su85?>nAtfLMT$7i909&{4L1C;wf`@04 zC2>PY!z$(hrII5+2w+v_Kw+7}4PhH&&-?+W(im(J=b54 z(IkK~fEZTvY#tNtV!?RDI19|ZVu<4;PToOk;n*>>3Jt8Qc7rYlki%zZ$H;{;AD z9A>*n+HUai%B@FCzcJ@Or{}`P!S|o<;QUFaR@^Q|$;D{0%Iq%!6c4Mvo}xuB_h+&% g0$lo&UHvot0RPpK5lt+EVgLXD07*qoM6N<$f@Yh-D*ylh literal 0 HcmV?d00001 diff --git a/art/images/oldman.png b/art/images/oldman.png new file mode 100644 index 0000000000000000000000000000000000000000..fbda3fbe0cfb2e344eeac7069adf730f6cd40aa6 GIT binary patch literal 674 zcmV;T0$u%yP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0yjxSK~zXf&67W9 zQ&AMg&r3CV4s8UB7DU9h&`B*qw`y^T6ciD~!L0;JO9aJ5P})JUs0fN0iqcHd#Z4SU zm$rjLi9`QDOVO5gGZ2Tgh!K$|-^o4Klbd$~ZvNnM&i(V9^WB>l`aj9#a#36q0uvj^ zX0uVDPzVsiFf^+~)oPWnjy%CDF+hM$h!6<6P^=gtEdVk{6#KEZW%JfRn&&PDFHiVw z=kxixq7!o!8zl!`+a{%fuJv-|2gmmG9&6hx22uczq+eOC<^8FS zJRFFms|ej+V3&#XV&tN|C%8{#jwmqxzQi8}oah4F8N!zB5@B2m7CGKt_)YzrANkOo zGY6>i%~>u!ot)z}z}}~>^z+8m^j8FWUg@B|(|w#@*#DWMuzO!fThj|vo%|9c#I6Vd zgm_g95UuTS)P$qmQ34h<^C!-kjHozYq?_+j6!f&36{26?oI7iz*OU`pZRI2*9RZv$lEW0f*$EMClG1#BNuYuA>_!ixEp@ z>C}t{F)C|o&4|6Tw$_ZM5BASwGMNa&OzUv>yq$doKy8oc54G#=clxd)hX4Qo07*qo IM6N<$g2+QXZ~y=R literal 0 HcmV?d00001 diff --git a/art/images/viertelheart.png b/art/images/viertelheart.png new file mode 100644 index 0000000000000000000000000000000000000000..de0043d1b4e8fd12835cc5894dc746acc12248f7 GIT binary patch literal 441 zcmV;q0Y?6bP)Q;;!dDmD)sPsHsD?m7l3Yz z`)t&!2%f74_ICP!U1~k0AiQ~HfC@=7fTqSLBf?l~bVOE=72sUK1|GN8qD;sqmx=OF zROKclhS35MASP=}Tu0`StN<5U+dUeTXvi2~83LW5DAG(9;-gWE(VNH|fE?h=Q+D5F zns_KXte3#CipFbx#e$M(L@pDajrmyvw2TgeMRiQ<7PO=&rLYDK1N5S~*j;z?DZJH= z!mG&uflk#h4&aK%#2XcgXY(|k29wf%FHhqdFd{n1Cj8Musp j1}E=myZ=I-{-6Cf+p~%hpIyjB00000NkvXXu0mjf57)zb literal 0 HcmV?d00001 diff --git a/art/sprite files/oldmanattack.png b/art/sprite files/oldmanattack.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1085e0bec6b1fab478d26dca2f12ac6bd64a73 GIT binary patch literal 6043 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 VQMBcP@uL6$002ovPDHLkV1n@Oi8KHJ literal 0 HcmV?d00001 diff --git a/art/sprite files/oldmanwalk.png b/art/sprite files/oldmanwalk.png new file mode 100644 index 0000000000000000000000000000000000000000..f578cc378f65d11cfdaaf550aa50ec73667f3385 GIT binary patch literal 2118 zcmV-M2)Xx(P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ942ir+RK~#8N<(Y4Y z6;&9<&+eA4g|3leYUQ7bwSOvt9}3e9+FH;O5`+3wVi*=>6v2i?g+dW+WRjWoCHjyE zSqV!UR9X?TA!;Bjq$IV`mXWK7Yh@eH*?GqIzW1CtXJ$0Kw;vp4=FWNEInR6EbMD+- z^M7Ia^5sJ~u3ELK;uu2rkJX(|6!i{5{u`2GU4sN}*|Mbp$L8kdCP-a)L^xdTCrK}vXyqfC&CkUkGc9OB_9wKAbu=m}f5b09tP+(l7cJ$MJP z+KNtu1yZDPL0LWFWH4b&A`_Z-6+W=}Thra$ZThx$m?Hxx&8!ujxE0JnQJsrg@D5_N znE{vtR2)}roDgKCRc?EnFt=oO&n!z zI@xQcf4Im_j834|kgn~!%nNr+@ai+T(E`=i}5a=-lyy4J6jdgIrkci_^+__qZF zF{%&kv4(y2_{`qZX5J59+fK6j-W##gex{*ew5Pj9nugZVUcDZ?#5ESIfIO1{jf;yW zOf}a}9dDb48oBzAZ1#sIAGPis6!mWl$R(b;aIV>Y$sAjGvihdnKigToh=E4q9q%8t ziFE0KFOjaXVEfhEXlODtA5B}BCXeGGo9~-f6$kyvj?a3{OYNtUD`Wop{mcZ`x_3~< zeXF5qwT*^=7bZg{kjXuKa_t(h)f`Gnb+uIxT}Ayd3Dz*)7d}5UIR>kM(Xe!H2j*vpEC$_BW@mVdgpDc`Xd~u zRqudBl-GZw9z1|y1dzt{brwbSzOhL3^{f@04OsbdCF(?e(fW!#61+nox$q^W8hfD?K9zA)tX* zGzqlYe|o_c0FEzxH#w_>5C3@m=!zgx3w~=~Z<;Tz-2Q-1?}IDh*4`)WYUb9OHx6Jd zCUV>J?U`Eim(N+*xij^+arFXc-heN6oD8YW!sng%irmN2=emY2pFGK)$7r=*xhqM1 z`V!6WKduA`1y|j8$Tp4CQqKxT3+a6@=~&S+fqCQPg~`G*LPhHGj>2Q{!8?5vL3?LT z&n3Ra0_cl)e}w^<=j8LK18DTaIe=Kbh6$5n0eRyTK|Uj9=g@`6@y2Lf;Q46uey$5A z3wqHDx2k~TR^=jg<-3xGK|mjRhDOGcMq=aWe*c{QJ2}fn?>>Ep<|Jo+IN`}<3O&dL z7J`MCTvp^EPaJ%GC8xQFDg3Ge;;M5c;lCs+L2_()ijlg;rVH$K9x$HC)At06D0YEm zK~HiAB$!l=A-0GHew>n=#o_Yk%X3u$Apx#|$FTU(mpSTV)p zo3OUFwjngReIt=rjiFy)z!kS_F+&euTxgoCiPD7fL;r{wTRak1@w`4XK6Iq_$M ztmOELF9Ztb(|4}R9rsYzTHAc&9Zx7nS;ZrF!@MAFk=O^eJ!M-ItlZ?Xf}-~{NVuue+JQ`m=-@U48l%2Y}yDRQz-2=Sux+e+si@gs* w&jNY+$9mAj>SDcx?t|Dd=F!CZ7{-`?0ih*tqLh6 None: + def __init__(self, name:str, _type:str, bg, objects:list) -> None: self.name = name self.type = _type - if bg != None: - with open(bg, 'r') as bg: - self.background = pygame.transform.scale(pygame.image.load(bg), [WIDTH, HEIGHT]) + self.background = bg self.objects = objects class Scene(GameObjects): - def __init__(self, name:str, _type:str, bg, objects:list | None, WIDTH, HEIGHT, level:list) -> None: - super().__init__(name, _type, bg, objects, WIDTH, HEIGHT) - self.level = level - self.current_level = 0 + def __init__(self, name:str, _type:str, bg, objects:list) -> None: + super().__init__(name, _type, bg, objects) - def update(self, change:bool): - if change: - self.current_level += 1 - self.level[self.current_level].update() - for obj in self.objects: - obj.update() - - def draw(self, screen): - for obj in self.objects: - obj.draw(screen) - self.level[self.current_level].draw(screen) - - -class Level(GameObjects): - def __init__(self, name: str, _type: str, bg, objects: list, WIDTH, HEIGHT, stage:str, rooms:list) -> None: - super().__init__(name, _type, bg, objects, WIDTH, HEIGHT) - self.stage = stage - self.rooms = rooms - self.current = 0 - - def update(self): - for room in self.rooms: - if room.id == self.current: - room.update() - keys = pygame.key.get_pressed() - if keys[pygame.K_RIGHT]: - self.current += 1 - if self.current >= len(self.rooms): - return 1 - - def draw(self, screen): - for room in self.rooms: - if room.id == self.current: - room.draw(screen) class Room(GameObjects): - def __init__(self, name:str, _type:str, bg, objects:list, WIDTH, HEIGHT, exits:list, id:int) -> None: - super().__init__(name, _type, bg, objects, WIDTH, HEIGHT) + def __init__(self, name:str, _type:str, bg, objects:list, exits:list) -> None: + super().__init__(name, _type, bg, objects) self.exits = exits - self.id = id if self.type == 'normal' or self.type == 'boss': self.locked = True else: self.locked = False - - def update(self): - pass - - def draw(self, screen): - screen.blit(self.background, (0, 0)) - \ No newline at end of file diff --git a/ideas.txt b/ideas.txt new file mode 100644 index 0000000..51bcf0f --- /dev/null +++ b/ideas.txt @@ -0,0 +1,22 @@ +Game: + Rogue-like Game mit Story + Pixel + + viele Gegner: + Skelette + Zombies + +Story: + Homeless guy in Berlin (oder so) im Winter in einer Stadtbibliothek, weil warm und Shelter. + er hasst eigentlich Bücher, aber aus Langeweile durchstöbert er die Bibo + findet cool aussehendes antikes/magisches Buch, nimmt es aus dem Regal, blättert es auf und wird ohnmächtig + -> Erwacht als magische Person in magischer Welt wieder + Buch dient als Skillbaum (verschiedene Kapitel) + Kampfmagier + Heilender Magier -> Priester? + Elementmagier(?) + maybe noch irgendwas 4. + + Ziel(e) + -> Zurückkommen + -> Happy werden (?) \ No newline at end of file diff --git a/main.py b/main.py index 1b61739..1b5aea7 100644 --- a/main.py +++ b/main.py @@ -2,6 +2,7 @@ import pygame import sys import json import time +import random from classes import * from viecher import * fps = 60 @@ -13,7 +14,7 @@ def setUp(config): else: screen = pygame.display.set_mode(config["res"]) clock = pygame.time.Clock() - + return screen, clock, True, True, "start.png", [] def readConfig(): @@ -27,8 +28,11 @@ def quitGame(): quit() def play(screen, clock, running, background, isblack, WIDTH, HEIGHT): - objects = [[], [], []] #0 - maincharacter stuff; 1 - mobs; 2 - npcs - objects[0].append(MainCharacter('Herbert', 100, 'reddy.png', 125, 5, 1, 1, 50)) + main = [MainCharacter('Herbert', 100, 'oldman.png', 500, 500, 20, 5, 1, 1, 50)] + mobs=[Skeleton(i, 50, 'reddy.png', random.randint(20,1000), random.randint(20,700), 125, 1, 1, 1, 200) for i in range(0,random.randint(2,8))] + others = [] + objects = [main, mobs, others] + while running: screen.fill('#000000') events = pygame.event.get() @@ -42,9 +46,20 @@ def play(screen, clock, running, background, isblack, WIDTH, HEIGHT): # fill the screen with an image to clear the screen screen.blit(bg, (0, 0)) """ - for obj in objects: - obj.update(pygame.key.get_pressed()) - obj.draw(screen) + for thing in objects[0]: + if thing.update(pygame.key.get_pressed()) ==False: + menu(screen, clock, running, background, isblack, WIDTH, HEIGHT) + thing.draw(screen) + + for mob in objects[1]: + mob.update(objects) + mob.draw(screen) + + for thing in objects[2]: + thing.update(objects) + thing.draw(screen) + + # flip() the display to put your work on screen pygame.display.flip() @@ -103,7 +118,6 @@ def menu(screen, clock, running, background, isblack, WIDTH, HEIGHT): bg = pygame.transform.scale(bg, (WIDTH, HEIGHT)) # fill the screen with an image to clear the screen screen.blit(bg, (0, 0)) - for obj in objects: obj.process(screen, clock, running, background, isblack, WIDTH, HEIGHT) @@ -112,38 +126,6 @@ def menu(screen, clock, running, background, isblack, WIDTH, HEIGHT): clock.tick(60) # limits FPS to 60 -def test(screen, clock, running, background, isblack, WIDTH, HEIGHT): - level = [] - level.append(Level('blau', 'normal', None, [], WIDTH, HEIGHT, 'blue', [ - Room('blau1', 'normal', 'art/images/blau1.png', [], WIDTH, HEIGHT, [True, True, True, False], 0), - Room('blau2', 'normal', 'art/images/blau2.png', [], WIDTH, HEIGHT, [True, True, True, False], 1), - Room('blau3', 'normal', 'art/images/blau3.png', [], WIDTH, HEIGHT, [True, True, True, False], 2), - ])) - - level.append(Level('rot', 'normal', None, [], WIDTH, HEIGHT, 'red', [ - Room('red1', 'normal', 'art/images/rot1.png', [], WIDTH, HEIGHT, [True, True, True, False], 0), - Room('red2', 'normal', 'art/images/rot2.png', [], WIDTH, HEIGHT, [True, True, True, False], 1), - Room('red3', 'normal', 'art/images/rot3.png', [], WIDTH, HEIGHT, [True, True, True, False], 2), - ])) - - scene = Scene('test', 'normal', None, None, WIDTH, HEIGHT, level) - - # RENDER YOUR GAME HERE - while True: - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - quitGame() - - scene.update() - scene.draw(screen) - # flip() the display to put your work on screen - pygame.display.flip() - - clock.tick(60) # limits FPS to 60 - - - def main(): config = readConfig() screen, clock, running, isblack, background, objects = setUp(config["screen"]) @@ -151,7 +133,6 @@ def main(): #objects.append(Button(WIDTH / 2 - 80, HEIGHT / 2 - 72, 160, 64, 'medieval', 48, "Play", play)) #objects.append(Button(WIDTH / 2 - 80, HEIGHT / 2, 160, 64, 'medieval', 48, "Options", uwu)) #objects.append(Button(WIDTH / 2 - 80, HEIGHT / 2 + 72, 160, 64, 'medieval', 48, "Exit game", quitGame)) - test(screen, clock, running, background, isblack, WIDTH, HEIGHT) menu(screen, clock, running, background, isblack, WIDTH, HEIGHT) """while running: for event in pygame.event.get(): diff --git a/viecher.py b/viecher.py index 1cb3211..2fb3f8e 100644 --- a/viecher.py +++ b/viecher.py @@ -1,17 +1,52 @@ -import pygame +import pygame as pg +vec = pg.math.Vector2 fps = 60 -class Character(): - def __init__(self, name, ms, sprite) -> None: + +pg.font.init() +fonts = { + 'medieval': 'medieval.ttf', + 'minecraft': 'Minecraft Evenings.otf', + '3dpixel': '3D-Pixel.ttf', + '8bit': '8bitlim.ttf', + '8bito': '8blimro.ttf', + 'arcade': 'ARCADECLASSIC.ttf', + 'modern_game': 'astron boy video.otf', + 'modern': 'astron boy.otf', + 'wonder': 'Beyond Wonderland.ttf', + 'curved': 'Digitag.ttf', + 'simple': 'DisposableDroidBB.ttf', + 'rounded': 'dpcomic.ttf', + 'playfull': 'Endalian Script.ttf', + 'blocky': 'FREAKSOFNATURE.ttf', + 'catchy': 'Future TimeSplitters.otf', + 'simple_wide': 'Halo3.ttf', + 'simple_fat': 'INVASION2000.ttf', + 'very_gamy': 'ka1.ttf', + 'simple_round': 'Karma Suture.otf', + 'mono': 'manaspc.ttf', + 'damaged': 'Merchant Copy.ttf', + 'big_natural': 'MorialCitadel.TTF', + 'spacy': 'nasalization-rg.otf', + 'sci-fi': 'neuropol.otf', + 'hollow_big_edge': 'papercut.ttf', + 'space_shuttle': 'pdark.ttf', + 'thin': 'PixelFJVerdana12pt.ttf', + 'random': 'Seattle Avenue.ttf', + 'pixel': 'yoster.ttf' +} + +class Objects(): + def __init__(self, name, ms, sprite, x, y) -> None: self.name = name self.speed = ms with open(f'art/images/{sprite}') as i: - self.sprite = pygame.image.load(i) - self.x = 524 - self.y = 524 + self.sprite = pg.image.load(i) + self.x = x + self.y = y self.hidden = False - self.rect = pygame.Rect(self.x, self.y, self.sprite.get_width(), self.sprite.get_height()) + self.rect = pg.Rect(self.x, self.y, self.sprite.get_width(), self.sprite.get_height()) def draw(self, screen): if self.hidden: @@ -20,37 +55,191 @@ class Character(): screen.blit(self.sprite, self.rect) -class NPC(Character): +class NPC(Objects): pass -class Fighter(Character): - def __init__(self, name, ms, sprite, health, damage, level, asp, atr) -> None: - super().__init__(name, ms, sprite) +class Fighter(Objects): + def __init__(self, name, ms, sprite, x, y, health, damage, level, asp, atr) -> None: + super().__init__(name, ms, sprite, x, y) self.health = health self.damage = damage self.level = level self.attack_speed = asp self.attack_range = atr + self.lastHurt = pg.time.get_ticks() + self.lastAttack = pg.time.get_ticks() + self.hurtCooldown = 1000 + + class MainCharacter(Fighter): - def __init__(self, name, ms, sprite, health, damage, level, asp, atr, weapon=None, shield=None) -> None: - super().__init__(name, ms, sprite, health, damage, level, asp, atr) + def __init__(self, name, ms, sprite, x, y, health, damage, level, asp, atr, weapon=None, shield=None) -> None: + super().__init__(name, ms, sprite, x, y, health, damage, level, asp, atr) self.attack_spell = weapon self.shield_spell = shield self.talking = False + self.level = Level(1000, 38, level, 150, 40, f'will to live: {level}%', 'simple', 20) + self.health = Hearts(health, sprite=['fullheart.png','fullheart.png','fullheart.png','fullheart.png','fullheart.png'], x=900, y= 50) + + def draw(self, screen): + if self.hidden: + return + self.rect.x, self.rect.y = self.x, self.y + screen.blit(self.sprite, self.rect) + self.health.draw(screen) + self.level.draw(screen) + + def hurt(self,damage): + self.health.hurt(damage) + + def walk(self,keys): + moveto=vec(0,0) + if keys[pg.K_w] or keys[pg.K_UP]: + moveto += vec(0,-1) + if keys[pg.K_a] or keys[pg.K_LEFT]: + moveto += vec(-1,0) + if keys[pg.K_s] or keys[pg.K_DOWN]: + moveto += vec(0,1) + if keys[pg.K_d] or keys[pg.K_RIGHT]: + moveto += vec(1,0) + if not moveto == vec(0,0): + moveto.scale_to_length(self.speed) + self.x += moveto[0] / fps + self.y += moveto[1] / fps def update(self, keys): - if keys[pygame.K_w]: - self.y -= self.speed / fps - if keys[pygame.K_a]: - self.x -= self.speed / fps - if keys[pygame.K_s]: - self.y += self.speed / fps - if keys[pygame.K_d]: - self.x += self.speed / fps + self.walk(keys) + if self.health.health <= 0: + return False + else: + return True +class Hearts(): + def __init__(self, health, sprite, x, y) -> None: + self.x = x + self.y = y + self.health = health + self.lastHurt = pg.time.get_ticks() + self.hurtCooldown = 1000 + self.hidden = False + self.sprite=[] + for parts in sprite: + with open(f'art/images/{parts}') as i: + self.sprite.append(pg.image.load(i)) + self.rect=[] + for each in self.sprite: + self.rect.append(pg.Rect(self.x, self.y, each.get_width(), each.get_height())) + + def hurt(self,damage): + if self.lastHurt + self.hurtCooldown < pg.time.get_ticks(): + self.health -= damage + self.lastHurt = pg.time.get_ticks() + self.update() + + def draw(self, screen): + if self.hidden: + return + for i in range(0,5): + self.rect[i].x, self.rect[i].y = self.x+i*20, self.y + screen.blit(self.sprite[i], self.rect[i]) + + def update(self): + sprite = [] + for i in range(0,5): + if self.health >= 4+4*i: + sprite.append('fullheart.png') + elif self.health == 3+4*i: + sprite.append('dreiviertelheart.png') + elif self.health >= 2+4*i: + sprite.append('halfheart.png') + elif self.health >= 1+4*i: + sprite.append('viertelheart.png') + elif self.health <= 4*i: + sprite.append('noheart.png') + self.sprite=[] + for parts in sprite: + with open(f'art/images/{parts}') as i: + self.sprite.append(pg.image.load(i)) + + +class Level(): + def __init__(self, x, y, level, width, height, text, font, font_size) -> None: + self.x = x + self.y = y + self.level = level + self.width = width + self.height = height + self.font = pg.font.Font(f'fonts/{fonts[font]}', font_size) + self.hidden = False + with open('art/images/label.png', 'r') as tb: + self.box = pg.image.load(tb) + self.box = pg.transform.scale(self.box, (width, height)) + self.labelRect = pg.Rect(self.x, self.y, self.width, self.height) + self.labelSurf = self.font.render(text, True, '#1E90FF') + + def draw(self, screen): + self.box.blit(self.labelSurf, [ + self.labelRect.width/2 - self.labelSurf.get_rect().width/2, + self.labelRect.height/2 - self.labelSurf.get_rect().height/2 + ]) + screen.blit(self.box, self.labelRect) + class Mobs(Fighter): - def __init__(self, name, ms, sprite, health, damage, level, asp, atr, drops) -> None: - super().__init__(name, ms, sprite, health, damage, level, asp, atr) + def __init__(self, name, ms, sprite, x, y, health, damage, level, asp, atr, drops) -> None: + super().__init__(name, ms, sprite, x, y, health, damage, level, asp, atr) self.drops = drops * (self.level / 2) + +class Skeleton(Mobs): + def __init__(self, name, ms, sprite, x, y, health, damage, level, asp, atr, drops=0) -> None: + super().__init__(name, ms, sprite, x, y, health, damage, level, asp, atr, drops) + + def chase(self,obj): + x=obj[0][0].x + y=obj[0][0].y + moveto = vec(x,y) - vec(self.x,self.y) + if not (moveto).length()<=self.attack_range: + moveto.scale_to_length(self.speed) + self.x += moveto[0]/fps + self.y += moveto[1]/fps + else: + self.attack(moveto,obj) + + def attack(self,moveto,obj): + if self.lastAttack+self.attack_speed*1000 None: + super().__init__(name, ms, sprite, x, y) + self.moveto = moveto + self.damage = damage + + +class Arrow(Weapons): + def __init__(self, name, ms, x, y, moveto, damage, sprite="arrow.png") -> None: + super().__init__(name, ms, sprite, x, y, moveto, damage) + pos = vec(1,0) + angle = pos.angle_to(moveto) + with open(f'art/images/{sprite}') as i: + self.sprite = pg.transform.rotate(pg.image.load(i), angle) + + def move(self): + self.moveto.scale_to_length(self.speed) + self.x += self.moveto[0]/fps + self.y += self.moveto[1]/fps + + def die(self,objects): + touches=pg.sprite.spritecollideany(self,objects[0]) + if touches is not None and isinstance(touches, MainCharacter): + touches.hurt(self.damage) + self.hidden=True + + def update(self,objects): + self.move() + self.die(objects) \ No newline at end of file -- 2.45.3 From a9e99da219efc431fdac38d9271275e5bbae35d6 Mon Sep 17 00:00:00 2001 From: SpagettiFisch <63868515+SpagettiFisch@users.noreply.github.com> Date: Mon, 26 Feb 2024 12:21:45 +0100 Subject: [PATCH 4/6] fixed arrow oriantation randomised skeletton move speed changed Iframes to 250 ms --- main.py | 2 +- viecher.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/main.py b/main.py index 1b5aea7..77953a9 100644 --- a/main.py +++ b/main.py @@ -29,7 +29,7 @@ def quitGame(): def play(screen, clock, running, background, isblack, WIDTH, HEIGHT): main = [MainCharacter('Herbert', 100, 'oldman.png', 500, 500, 20, 5, 1, 1, 50)] - mobs=[Skeleton(i, 50, 'reddy.png', random.randint(20,1000), random.randint(20,700), 125, 1, 1, 1, 200) for i in range(0,random.randint(2,8))] + mobs=[Skeleton(i, random.randint(40, 60), 'reddy.png', random.randint(20,1000), random.randint(20,700), 125, 1, 1, 1, 200) for i in range(0,random.randint(2, 8))] others = [] objects = [main, mobs, others] diff --git a/viecher.py b/viecher.py index 2fb3f8e..d07b933 100644 --- a/viecher.py +++ b/viecher.py @@ -69,7 +69,7 @@ class Fighter(Objects): self.attack_range = atr self.lastHurt = pg.time.get_ticks() self.lastAttack = pg.time.get_ticks() - self.hurtCooldown = 1000 + self.hurtCooldown = 250 @@ -227,7 +227,7 @@ class Arrow(Weapons): pos = vec(1,0) angle = pos.angle_to(moveto) with open(f'art/images/{sprite}') as i: - self.sprite = pg.transform.rotate(pg.image.load(i), angle) + self.sprite = pg.transform.rotate(pg.image.load(i), -angle) def move(self): self.moveto.scale_to_length(self.speed) @@ -242,4 +242,4 @@ class Arrow(Weapons): def update(self,objects): self.move() - self.die(objects) \ No newline at end of file + self.die(objects) -- 2.45.3 From 15e271520759c38a045326b99ade3c21e8479871 Mon Sep 17 00:00:00 2001 From: Spafi Date: Mon, 26 Feb 2024 11:25:15 +0000 Subject: [PATCH 5/6] =?UTF-8?q?art/sprite=20files=20/oldmanattack.png=20ge?= =?UTF-8?q?l=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deleted kinda corrupted file Signed-off-by: Spafi --- art/sprite files /oldmanattack.png | Bin 6043 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 art/sprite files /oldmanattack.png diff --git a/art/sprite files /oldmanattack.png b/art/sprite files /oldmanattack.png deleted file mode 100644 index fb1085e0bec6b1fab478d26dca2f12ac6bd64a73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6043 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 VQMBcP@uL6$002ovPDHLkV1n@Oi8KHJ -- 2.45.3 From 7725bea20c8a7897bda05283c4b86635ade6916c Mon Sep 17 00:00:00 2001 From: Spafi Date: Mon, 26 Feb 2024 11:25:28 +0000 Subject: [PATCH 6/6] =?UTF-8?q?art/sprite=20files=20/oldmanwalk.png=20gel?= =?UTF-8?q?=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deleted a kinda corrupted file Signed-off-by: Spafi --- art/sprite files /oldmanwalk.png | Bin 2118 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 art/sprite files /oldmanwalk.png diff --git a/art/sprite files /oldmanwalk.png b/art/sprite files /oldmanwalk.png deleted file mode 100644 index f578cc378f65d11cfdaaf550aa50ec73667f3385..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2118 zcmV-M2)Xx(P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ942ir+RK~#8N<(Y4Y z6;&9<&+eA4g|3leYUQ7bwSOvt9}3e9+FH;O5`+3wVi*=>6v2i?g+dW+WRjWoCHjyE zSqV!UR9X?TA!;Bjq$IV`mXWK7Yh@eH*?GqIzW1CtXJ$0Kw;vp4=FWNEInR6EbMD+- z^M7Ia^5sJ~u3ELK;uu2rkJX(|6!i{5{u`2GU4sN}*|Mbp$L8kdCP-a)L^xdTCrK}vXyqfC&CkUkGc9OB_9wKAbu=m}f5b09tP+(l7cJ$MJP z+KNtu1yZDPL0LWFWH4b&A`_Z-6+W=}Thra$ZThx$m?Hxx&8!ujxE0JnQJsrg@D5_N znE{vtR2)}roDgKCRc?EnFt=oO&n!z zI@xQcf4Im_j834|kgn~!%nNr+@ai+T(E`=i}5a=-lyy4J6jdgIrkci_^+__qZF zF{%&kv4(y2_{`qZX5J59+fK6j-W##gex{*ew5Pj9nugZVUcDZ?#5ESIfIO1{jf;yW zOf}a}9dDb48oBzAZ1#sIAGPis6!mWl$R(b;aIV>Y$sAjGvihdnKigToh=E4q9q%8t ziFE0KFOjaXVEfhEXlODtA5B}BCXeGGo9~-f6$kyvj?a3{OYNtUD`Wop{mcZ`x_3~< zeXF5qwT*^=7bZg{kjXuKa_t(h)f`Gnb+uIxT}Ayd3Dz*)7d}5UIR>kM(Xe!H2j*vpEC$_BW@mVdgpDc`Xd~u zRqudBl-GZw9z1|y1dzt{brwbSzOhL3^{f@04OsbdCF(?e(fW!#61+nox$q^W8hfD?K9zA)tX* zGzqlYe|o_c0FEzxH#w_>5C3@m=!zgx3w~=~Z<;Tz-2Q-1?}IDh*4`)WYUb9OHx6Jd zCUV>J?U`Eim(N+*xij^+arFXc-heN6oD8YW!sng%irmN2=emY2pFGK)$7r=*xhqM1 z`V!6WKduA`1y|j8$Tp4CQqKxT3+a6@=~&S+fqCQPg~`G*LPhHGj>2Q{!8?5vL3?LT z&n3Ra0_cl)e}w^<=j8LK18DTaIe=Kbh6$5n0eRyTK|Uj9=g@`6@y2Lf;Q46uey$5A z3wqHDx2k~TR^=jg<-3xGK|mjRhDOGcMq=aWe*c{QJ2}fn?>>Ep<|Jo+IN`}<3O&dL z7J`MCTvp^EPaJ%GC8xQFDg3Ge;;M5c;lCs+L2_()ijlg;rVH$K9x$HC)At06D0YEm zK~HiAB$!l=A-0GHew>n=#o_Yk%X3u$Apx#|$FTU(mpSTV)p zo3OUFwjngReIt=rjiFy)z!kS_F+&euTxgoCiPD7fL;r{wTRak1@w`4XK6Iq_$M ztmOELF9Ztb(|4}R9rsYzTHAc&9Zx7nS;ZrF!@MAFk=O^eJ!M-ItlZ?Xf}-~{NVuue+JQ`m=-@U48l%2Y}yDRQz-2=Sux+e+si@gs* w&jNY+$9mAj>SDcx?t|Dd=F!CZ7{-`?0ih*tqLh6