From add61e75aa7dadf3a2d30fca32d5f6e80b6f805b Mon Sep 17 00:00:00 2001 From: HadiSharifi Date: Thu, 7 May 2026 22:00:42 +0330 Subject: [PATCH] implement game loop --- .../src/main/java/org/project/Main.java | 160 +++++++++++++++--- .../org/project/entity/enemies/Enemy.java | 22 ++- .../org/project/entity/enemies/Skeleton.java | 5 +- .../org/project/entity/players/Assassin.java | 2 + .../org/project/entity/players/Knight.java | 2 + .../org/project/entity/players/Player.java | 27 ++- .../org/project/entity/players/Wizard.java | 2 + .../target/classes/org/project/Main.class | Bin 3328 -> 7034 bytes .../org/project/entity/enemies/Enemy.class | Bin 3572 -> 4613 bytes .../org/project/entity/enemies/Skeleton.class | Bin 1380 -> 1441 bytes .../org/project/entity/players/Assassin.class | Bin 2145 -> 2183 bytes .../org/project/entity/players/Knight.class | Bin 1842 -> 1880 bytes .../org/project/entity/players/Player.class | Bin 3750 -> 5260 bytes .../org/project/entity/players/Wizard.class | Bin 1842 -> 1880 bytes 14 files changed, 188 insertions(+), 32 deletions(-) diff --git a/Java-Knight/src/main/java/org/project/Main.java b/Java-Knight/src/main/java/org/project/Main.java index 682b1e4..16bd9f8 100644 --- a/Java-Knight/src/main/java/org/project/Main.java +++ b/Java-Knight/src/main/java/org/project/Main.java @@ -15,50 +15,168 @@ import org.project.location.Location; import java.util.ArrayList; import java.util.List; +import java.util.Random; import java.util.Scanner; public class Main { public static void main(String[] args) { Weapon wp = new Sword(12, 5); + ArrayList players = new ArrayList<>(); + players.add(new Assassin("Pia", 100, 100, wp, new KnightArmor(0, 1))); + players.add(new Knight("Khan", 100, 100, wp, new KnightArmor(50, 1))); + players.add(new Wizard("Daalou", 100, 100, wp, new KnightArmor(50, 1))); ArrayList enemies = new ArrayList<>(); enemies.add(new Goblin(100, 100, wp)); enemies.add(new Skeleton(50, 100, wp)); enemies.add(new Vampire(90, 110, wp)); - List locations = new ArrayList<>(); + ArrayList locations = new ArrayList<>(); locations.add(new Location("Jungle", enemies)); - Player player; - Enemy enemy; + locations.add(new Location("China", new ArrayList<>(enemies.subList(0, 2)))); + locations.add(new Location("Iran", new ArrayList<>(enemies.subList(1, 3)))); + Player player = null; + Enemy enemy = null; + Location location = null; int isTurn = 0; Scanner sc = new Scanner(System.in); while (true) { - System.out.print("1.Assassin\n2.Knight\n3.Wizard\nChoose your Character: "); - int choice = sc.nextInt(); - switch (choice) { - case 1: - player = new Assassin("Pia", 100, 100, wp, new KnightArmor(50, 1)); - System.out.println("You chose " + player.getName() + "(Assassin)"); + player = choosePlayer(players); + while (true) { + location = chooseLocation(locations); + enemy = chooseEnemy(location); + System.out.println("wanna fight?\n1.Yes\n2.No"); + int choice = sc.nextInt(); + if (choice == 1) { + combat(player,enemy); + System.out.println("player AHP: " + player.getHP()); break; - case 2: - player = new Knight("Khan", 200, 100, wp, new KnightArmor(80, 1)); - System.out.println("You chose " + player.getName() + "(Knight)"); - break; - default: - player = new Wizard("Daalou", 90, 100, wp, new KnightArmor(100, 1)); - System.out.println("You chose " + player.getName() + "(Wizard)"); - System.out.println(); + } + else { + continue; + } } - break; } } - - public void displayLocations(List locations) { +///////////////////////////////////////////////////////////////////////////////////////// + public static void displayLocations(List locations) { for (Location location : locations) { System.out.println(location); } } -} \ No newline at end of file + + public static Player choosePlayer(ArrayList players) { + System.out.print("1.Assassin\n2.Knight\n3.Wizard\nChoose your Character: "); + Scanner sc = new Scanner(System.in); + int choice = sc.nextInt(); + Player player = null; + switch (choice) { + case 1: + player = players.get(0); + break; + case 2: + player = players.get(1); + break; + default: + player = players.get(2); + break; + } + System.out.println("You chose " + player.getName() + "(" + player.getClass().getSimpleName() + ")"); + return player; + } + + public static Location chooseLocation(ArrayList locations) { + + displayLocations(locations); + System.out.print("1.Jungle\n2.Iran\n3.China\nChoose Location: "); + Scanner sc = new Scanner(System.in); + int choice = sc.nextInt(); + Location location = null; + + switch (choice) { + case 1: + location = locations.get(0); + break; + case 2: + location = locations.get(1); + break; + case 3: + location = locations.get(2); + break; + } + System.out.println("You chose " + location.getName() ); + return location; + } + + public static Enemy chooseEnemy(Location location) { + int random = new Random().nextInt(location.getEnemies().size()); + Enemy enemy = location.getEnemies().get(random); + System.out.println("The Enemey is: " + enemy.getClass().getSimpleName()); + return enemy; + } + + public static void combat(Player player, Enemy enemy) { + Scanner sc = new Scanner(System.in); + int turn = 0; + int choice; + while (player.isAlive() && enemy.isAlive()) { + if (turn == 0) { + turn = 1; + System.out.println("choose your action:\n1.light attack 2.heavy attack 3.defend 4.heal 5.special ability"); + choice = sc.nextInt(); + switch (choice) { + case 1: player.lightAttack(enemy); + break; + case 2: player.heavyAttack(enemy); + break; + case 3: player.defend(); + break; + case 4: player.heal(10); + break; + case 5: player.specialAbility(enemy); + break; + default: + System.out.println("invalid choice"); + } + System.out.println("[" + player.getClass().getSimpleName() + " - " + player.getHP() + "/" + player.getMaxHP() + + " HP | " + player.getMP() + "/" + player.getMaxMP() + " Mana" + "]"); + System.out.println("[" + enemy.getClass().getSimpleName() + " - " + enemy.getHP() + "/" + enemy.getMaxHP() + + " HP | " + enemy.getMP() + "/" + enemy.getMaxMP() + " Mana" + "]"); + + } + if (turn == 1) { + System.out.println("-".repeat(30)); + System.out.println(enemy.getClass().getSimpleName() + "'s turn: "); + turn = 0; + choice = new Random().nextInt(3); + switch (choice) { + case 0: enemy.attack(player); + break; + case 1: enemy.defend(); + break; + case 2: enemy.heal(10); + } + } + System.out.println("[" + player.getClass().getSimpleName() + " - " + player.getHP() + "/" + player.getMaxHP() + + " HP | " + player.getMP() + "/" + player.getMaxMP() +" Mana" + "]"); + System.out.println("[" + enemy.getClass().getSimpleName() + " - " + enemy.getHP() + "/" + enemy.getMaxHP() + + " HP | " + enemy.getMP() + "/" + enemy.getMaxMP() + " Mana" + "]"); + + } + if (!player.isAlive()) { + System.out.println("You lost!"); + } + else { + System.out.println("You Won!"); + if (enemy.dropKey()) { + System.out.println(enemy.getClass().getSimpleName() + "'s key dropped!"); + player.achiveKey(enemy); + } + } + } + } + + diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java b/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java index 7a26330..2af6bd8 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java @@ -27,9 +27,9 @@ public abstract class Enemy implements Entity { if (!keyFound) { hasKey = Math.random() < .2; } - if (hasKey) { - keyFound = true; - } +// if (hasKey) { +// keyFound = true; +// } } //implement this in Main private boolean checkTargetAbility(Player target) { @@ -43,6 +43,7 @@ public abstract class Enemy implements Entity { @Override public void attack(Entity target) { if (getMP() >= weapon.getManaCost()) { + System.out.println(this.getClass().getSimpleName() + ": attacking " + target.getClass().getSimpleName()); if (checkTargetAbility((Player) target)) { System.out.println("target is using special ability"); return; @@ -61,6 +62,7 @@ public abstract class Enemy implements Entity { @Override public void defend(){ + System.out.println(this.getClass().getSimpleName() + " is defending"); setDefending(true); }; @@ -71,7 +73,13 @@ public abstract class Enemy implements Entity { @Override public void takeDamage(int damage) { + if (isDefending()) { + setHP(getHP() - (int) ((1 - getDefendRate())) * damage); + } setHP(getHP() - damage); + if (getHP() <= 0) { + setHP(0); + } } @Override @@ -154,8 +162,12 @@ public abstract class Enemy implements Entity { return getClass().getSimpleName(); } - public boolean getHasKey() { - return hasKey; + public boolean dropKey() { + if (hp <= 0 && hasKey) { + keyFound = true; + return true; + } + return false; } } diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java b/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java index 0aa3919..42082fe 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java @@ -6,9 +6,11 @@ import org.project.item.weapons.Weapon; public class Skeleton extends Enemy{ + private boolean incarnation = false; public Skeleton(int hp, int mp, Weapon weapon) { super(hp,mp,weapon); setDefendRate(.3); + } @Override @@ -41,8 +43,9 @@ public class Skeleton extends Enemy{ @Override public void takeDamage(int damage) { super.takeDamage(damage); - if (getHP() <= 0) { + if (getHP() <= 0 && !incarnation) { setHP(getMaxHP() / 2); + incarnation = true; } } diff --git a/Java-Knight/src/main/java/org/project/entity/players/Assassin.java b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java index ffccbd9..616d290 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Assassin.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java @@ -14,11 +14,13 @@ public class Assassin extends Player { @Override public void lightAttack(Entity target) { + super.lightAttack(target); attack(target); } @Override public void heavyAttack(Entity target) { + super.heavyAttack(target); if (getUsingSpecialAbility()) { setAttackMultiplier(3); attack(target); diff --git a/Java-Knight/src/main/java/org/project/entity/players/Knight.java b/Java-Knight/src/main/java/org/project/entity/players/Knight.java index 8ace541..895ebbf 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Knight.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Knight.java @@ -14,11 +14,13 @@ public class Knight extends Player { @Override public void lightAttack(Entity target) { + super.lightAttack(target); attack(target); } @Override public void heavyAttack(Entity target) { + super.heavyAttack(target); if (getMP() >= weapon.getManaCost()) { setAttackMultiplier(1.8); attack(target); diff --git a/Java-Knight/src/main/java/org/project/entity/players/Player.java b/Java-Knight/src/main/java/org/project/entity/players/Player.java index 952b718..37b4ff7 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Player.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Player.java @@ -1,6 +1,8 @@ package org.project.entity.players; import org.project.entity.Entity; +import org.project.entity.enemies.Goblin; +import org.project.entity.enemies.Skeleton; import org.project.item.armors.Armor; import org.project.item.weapons.Weapon; @@ -17,9 +19,9 @@ public abstract class Player implements Entity, combatOptions { private double defendRate; private boolean isUsingSpecialAbility = false; private double attackMultiplier = 1; - protected boolean hasGoblinKey = false; - protected boolean hasSkeletonKey = false; - protected boolean hasVampireKey = false; + private boolean hasGoblinKey = false; + private boolean hasSkeletonKey = false; + private boolean hasVampireKey = false; public Player(String name, int hp, int mp, Weapon weapon, Armor armor) { this.name = name; @@ -44,13 +46,18 @@ public abstract class Player implements Entity, combatOptions { }; @Override - public abstract void lightAttack(Entity target); + public void lightAttack(Entity target) { + System.out.println(this.getClass().getSimpleName() + " light attacking"); + } @Override - public abstract void heavyAttack(Entity target); + public void heavyAttack(Entity target) { + System.out.println(this.getClass().getSimpleName() + " heavy attacking"); + } @Override public void defend(){ + System.out.println(this.getClass().getSimpleName() + " is defending"); setDefending(true); }; @@ -168,4 +175,14 @@ public abstract class Player implements Entity, combatOptions { attackMultiplier = multiplier; } + public boolean HasGoblinKey() { return hasGoblinKey; } + public boolean HasSkeletonKey() { return hasSkeletonKey; } + public boolean HasVampireKey() { return hasVampireKey; } + + public void achiveKey(Entity target) { + if ( target instanceof Goblin) { hasGoblinKey = true; } + else if (target instanceof Skeleton) { hasSkeletonKey = true; } + else { hasVampireKey = true; } + } + } diff --git a/Java-Knight/src/main/java/org/project/entity/players/Wizard.java b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java index 148d7ff..4cc6469 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Wizard.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java @@ -13,11 +13,13 @@ public class Wizard extends Player{ @Override public void lightAttack(Entity target) { + super.lightAttack(target); attack(target); } @Override public void heavyAttack(Entity target) { + super.heavyAttack(target); if (getMP() >= weapon.getManaCost()) { setAttackMultiplier(1.6); attack(target); diff --git a/Java-Knight/target/classes/org/project/Main.class b/Java-Knight/target/classes/org/project/Main.class index c0da07ebfb8d00fb99297b50ab162ab90a195c08..807cb2786fce5fbea6d1a0ed8f1542a498e212b4 100644 GIT binary patch literal 7034 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 W+x2~?z9-dnoDt#ZE>_j+QU5Dd_c)#a delta 1644 zcmZ8hYj6`)6#j0~?A;`rHceXkf)Xih6KMz(D3J2BKrMYxEVhP+u(WHtCE1i@i-=_nhyX^PO|< z-Wx4Ps$F0Gb>%Yv>v3_?byRqzvJ*D1QUad>2mA~TLE&L_N~qrj1?386p+f9n0ai6R zG3$g)_V?}6;+mN>T&RSPV>ZJ)Q7ZY#BqnT5sm4;y6=!Vo%I;v0Hjf*_am|HV)LHT8 zi*Ie=)owJPoTHJUcvL;0M#fD&9_iB4CP#>&^j}@yplTRe%83PN;s`5Ph=@3DZw?2s z*b3LoP#Nqh;Pqsr!x$Sk`^=Q4CR#)NmeW!N%g`d6jsROBmh+YFC|WsIDOim)VymN4 za*U;P!xZ}+)ipt^Q>ZC-F>pgWXm%JTgFP7P;Mg!Z5%g@LU9YZk+|5uY7PHF9?>(M& zxLjyMr^Tgf@{gVF9&F+0Rj?KJh+?UsoeyhfkDAaJ%7US3qH)z2ju1=T7;g2^9JVRA z7yS$s33Z>=mNW)cb3ivoNJ^WkVWtZc>6RPIqqt8&3~PvBfpy&A*g;up=X4tS@Q5j6 z7ei6!h)Sc`j!qvKwsEKyLVV5S;2@1-gQ~`p<1Xy6>^5w3A&Oxus$|VXS1^iw;-u8z zPJp5(6^voOxGFWu38WR67#F`w0Xd2XEuVuzWfc|u9ETXZ$<%OUER`J92F*yfsvF`b zcS8K2EObkQBT0RbI>0)_3Qt7rQQ9TV&=R^PE+{p#o$(}9tW&iVWV%DQj)NHTtP?+a zR*AF4OGSTiiHu_$rx_hDFPkf_mxOoWO@{JVay&pu(prE8*Qe8JI;|Ta8E-N8Z#PYM zi41T5&oH1LQd2{r5()3R@E+dhn6hT_f%wGxjRWTy>cw~7dOODjaj`V)e~21qJvM5v z0}`zdi(g91GkAoQ))pwkVOo`f?7*YQ(9Ve?c+3Km=Q+6O2iBVhk9ie22WM9vN-T%s z?xs9SV%{O|(1ILFvnU%NMPaci@@S{@ zMLBfjusK>pF{+BP=)QtJAd7)14CS#s=F99X#g{~~0PmfK-+w!N_YAxxk3BKpUMgS) zJTwg+x*e<)z?3VC2c}>TU&aVSRIZXQBhGLd)s~cE_#CxSr$xz`$>PA&&Fi011x1BX zjG~(4S#YBQe!8sYQ+3Now+S`q!EEftTv2I_EttcOvLQ)t8`1n~tzxJnnuH8kN@ zgz+09%!5U24i>XIEMX03VH>cVbzueDf>vwX8TwY-blEnAZ=(6XW=_rd2f#TJ pH>gE+yh_1rcnz=9e;MuHA--=E)-#3mEK1Ii$wlf9@ew{o)!z!)U#0*6 diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class b/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class index 1329b1ac7530971ea9100e86dead16c06015c901..c6897519b6a5d7f981865cac101831ea4e1c1ecb 100644 GIT binary patch literal 4613 zcmaJ^{d*Kw6@F)Tv$NSu5(r5Mgwlip-E4&Aqg5o(N)u>O5=aRIrLA_@47R;mD;NxR`&z;F;vrM`_%)N8woO9pv-gD1A z`>+4q{TqM-_-h;?gmpv=G$E>C)mihLnaZ2ROzPJDb(Y4)K4pzaoDyf4UXEij>SZA!_j9tuV&`ybcn}K$$;##Kb zn(5p`HSgM`yls`KFd_;a2G)r8Xx6M8wq`}tWuO~tHH5MyYK@6#oq_ctYATq|k4}nY zgMs^$QlTWT_Z#S2RG3f-n+!aF&2)U;GD}WTL;rYv0JdutQr@RZ>ZDQ`5=UDNJScc# zIcxTiQ!UQKF@U6wK?7gFHVth{q)nJ^mj26TamFbq%0{A({&P-#*LCdViuDWnjFs}{ ztW~b04j1iA){SE~9@6o!fiL1qpKma!3^jCTEcZl(6i=0`v~A`OoVN4a3bp>JI3xJ7 zfxQ?aS5%ysRPwPn_Tv#9j~e)je7e6LSO60mTEy5an!`@TZN_65)-ht>APy}{o2l6f zY2*@4mC4gJuDG$C)MVK%x>Ii1G7CeJbfX5w@B~Sv*WtWbsc2Y}81U3p{wX0<$1$Pf zh=HRZ@b)FDeWO;|PuYc1-a29yEDfE@oNz(XGSq@&7}YVQVO@QgKK}<*;&$*roG>tr zlN#0*%$zms6w{`A(sr|)Ra~>^662mk9Yo*zy^{Jke5E+PhEqD8GVnB>VXOhXXwXZ- zQl6RF6|m00wCv?K3_J@{Lq|GmrE|y4G6|?{_}0X-jBZFUFJFcRPQ{Ssj=RdX&#v@U zC3*TPUiS2vUi!#lmVq;p;%j7)hT|#;lr>;W_B8YRh*>Z*mQbBDkeA$Tu`45sr(fhn z1CDr;J@Y;sGhJozoPjb(Z`>vEo+AyB#Mr>J*i{Xj!+8xxWzkNRlStx}N6D;#7sR@W z-zO$x_$Cvj=(v4W(Wz##eFY|M2Q++JcK3n?lC+dY{`Lg!SPWGm;bjBgT|7OblOlP= z!1opx^dvbE7o}RfYTyS_-r`>2lL%$Wv9V=46L7+Y2BsPFurovb_Hnyt9jO*hTjk^C z={zMJ<4)SlPn%_1-hE-j&DxB6(=ylorZ20*+@jVgRc+0ZZ`-8uhsDZE0}T%Zd0DJY ze(F%&tJ)ei2Bw;KmQ*Ow8I=$kdV?JMigf7l#L%;rndiFld-zM{AIDDSAe zRoOi5IJs(R=-wkyCs}5Ae70l-s6SPw@AVEt^@qxLF>L1ZQ>2~=X^a(%R#}yCtD@tM zhAsER6a-brpP7B1ugWy?;)?Y1NQQX$k0H(i&+DJhkTer&WCx)}_6=%e!=OfXH)`Zb zRwEl0HL@?^7?*y4V-Ni{;fH+wh;RSqJi_r%@)Kyu@I3Tn`#f4@wmR86k4|~?Bsa{X zR~{Ra+vd@K8(XfUJNYRRo!EZu4d{`Zh=|24dJ5wTpS#prUG&|KW~@dVI@lj|bM>|C zcY3f1>xgGPdy!u1Zs3jFkJo6I^w8kP_zB;LOGT}znZz4XGhrl**Evrh{25!qh>n=1 z=`8Mi#6IJPB}quWg=one$d5YBF-)aZga5#eIm8DSuxtN@_rvc~=Hc&9I5tDa7Dlp_ z_!A0WAHN&)byYp-p@wu7eu|&bub>J;Yvc6i_=UHiww8{B=BvpC>`8u%{sruN3m0zV z00oaP;PBubJgI?`yEqPxUri4F9lICs^*I>S>Nri&E$YsA#+ggGF`As!Fo%tUiFVG} zzGQM&?w}OHVE7K)5N@JnFyTp(b?eS7;CX%$uP=(%TFiSHC9sXp?d%m(cnCYN4?9Wf zZXD*@aXbu*4W5HNIM3ef5{B?9HD0HN?459PnD5ufitN+X8aG$T&798-oA&+x#m=z) zA9U!HT}RX-2~W^UcDiSYmb>_t$3|oUFA36+%C0u9B>x0D*wL-Uuv*>lZ2dJg{1O%4 z?=ZCmPm8edo!(~`aB<0%v~|GaJRYOUO}D37gWiHSxCHxmx$Aw0FB7s@?V!I)bLdij z+xhbS%$43O`Mv0^q-I?524cyuzp9sB>*)dP5_L@QAROfppJeJkNz$k4Q0%Co*g;YS zg(O!5p>%%j3 zkfJq6QU7FWxDg1XrxA!52;|LRAU%yh&Jaju1t3xog#rFu@Pn#nq_+`BE)WQtu^>iz z8-bJvuJT5l^ zxk4bXtpG$WMFH{~{I&)}-n~=P|6v1=tARlHx1wge6h&)e6xRZce-|7@Yhx5Q7{!|_ zMDdOv#ZA@=Z(nzDlqg~>KXQ>Y2J&_tmRRlhzgx?T6TW@7)Q%fi#bNavnj;@!OXS`Q z@f}_cH(7SyMJL{?^W5!w_AkFq_AkG$)%E)nKoT9MQ;AknMcgY-Yq+29Df0gSNy|1C Xqg&MYqk4XTPbiD?{ZrhfkYls!gnN+D< zl$|NFU|aSaJ2P*YmDCaTa~fKv%`0YM+A3r;Xcy%C3LWiONneI-8|j(RYR=BX?-Z%26yO>V+urCw07tZ6wHzqho4*IEoZ@gt1e{E?L^x z2+Rk*hE_Rj6pX=Qg&-r?qvIv))zFd7n(3Jdqs;ZX=ic}dJv>Yu-~;`P*elo<#;ZC8 zuzyK{jL%i5A)ywlOq0$Ll{!{2HCDC?_PAX(jr>3aOq`9j@*J}&v8regt2iRW3`d11 zUdN#@4(k}ikcQPhhBSmrVm8M(cE%l7Dog2y76T*OSHzl?zLkkHl$Ij>&7nf~fOf8%-Y-RAQ zj!B%;5VegN)A6IBDL&jkDd*1XxPXfq^vc3Hbwirs7aS^Y>3CaCH*OZ`y2FClLJwd@NO7o9ThOv?Tb~yJtXwUt$ZnGo;32NhBZr!xIxm;8y_BCl65|5 z%ve&V!QwQ{w2xQ?^JFzYWtJz5sT^lIMv7@8H))hD`F1Cp?5suPo0ph&1Gl6c4Ny>Z z7g!dYq|~s*@6^JDcdr5CJFaS#QF2{|oZ_XS$M+gJ>7uBFrd5t<==O8uZX_NjFr=O} zjU2zFv$IZUMy2X;D9PXsDL98xD%@Eaw$-yq0xan^Bx*{gJ0*^E8JWiX_KN_MfQFvE zLD76et&Z45C$3DY@nW@{Hji2op{OeS+a*PsHZd0i(3tNLJ~u4KYy(o4!M=-jno(tYjb9HCL=*dX;umO%;5@>K_Ib1=y63Suh_`!ge)Jw{x@#E9iAKIHt?0%%uyfKVV1iRjt|V?J$})f!mg>2 zpbn^!@CtIwTI-@qvk!7@W%3VfeuQYUh8GU3e;js!hUVFkFN1PqQcV>o@Pcfq55qgsGc8*VL$jsb-iirS{!KZjLfbY?oj5{-l2IJE; zT;h^geMhX;iS0!j$6HCLmm>C2nm8p*ULaqvXcuIm3N;K7AEQVYv9r%tl6M=+P zcXqkfHGG0|u7yDrNT5}?PIX_d!StFrfG7?sGhNDTYaL`OK4nhumqiM{zd_3OjKRY+ zIJk_#TdqOYch_J_IRKg&!&Q<`0hLc80r>hY(rd2M<5S=sKFHl7MM&KfFS8K}G}-_p zRA&})^IpSezCb#?Ku-Gtx#JI{(+gyhK+Y`#M2dz;%)cd|1NB$I5sL0_5vyT0^!ey zdw5BXguOs)0;w(oMC!Hx;SW(Ah;tz&S+hTQl6B4($QSss4kW0GXeiM)kE|ES4Fb8j z3=nxZ1jtvoR|g{B&aLVB(F5eRFA)Ao)(wEaVKZ`ami+f~oe;F2EyDT2S ec7g0-FDxP~PBS$Wy+j^1V2RYP|2K;6!~X#Ff`<11 diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class b/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class index 6aef9a75cae72c0564383a1820ee6174c4064191..0c217f3aad7d4372cf444c2440014fae024967a9 100644 GIT binary patch literal 1441 zcmah|TW=dh7(L_5+Hp2CIF}L$$oM`0!E zxBOl|dSRN@H=zye316lgn1R2|_lbgYF9-v>sc@rGtJTl%53K3>-y7YF!h!!Jes5F{ zCXmNO4h0vJa1~1DPrSm=I5Hh$qflWo2%EYeY8%K*J$3H?b2t7Kh&Juwbrcn*2F7lg z=O#S-Mq8thsccmb#L%pZIm}b4wpKTf6qYL&geJ7xu|G-_&^KHx;7x^W%h=t0g>lsB>nP`N!^KTh6sBM3@3i01Vasov3>XiO zN5@uSt{$%hk-y&$Lff!?qq`e`6p^be!rri=Sy_dDYLL3GF~xKa;7vv=HmX8PaiXB}3G^{A;k2f81~JSk>uI~XXG zFT0g-yN#P+Lm}1fu?cD%bUAQFEv9ho!tu+xkDIOTQ@6t6h0PZ`fT1^}QFe7N5$H%t zwk_8lC&QQ;(Q&_N9tL7+YAkMD?t^`hXP^KDN|SSx<(MB7|3BlbjSL@P)>~X!JB9Mn ze<0`0Vrqyhzp|dMO*jX{ z5v66JnI`GHw|I(oW7cWse`r@3Vu=A>C+SW8SI=23pII$qH;yt9up|QbQ6vI-iGY&u zzDE@w{)7eZcjSIVQB-`A?F{j$m*Hi;>Uxdd*O{-+3~v+g&N=$h8GQ+RXY{-~;eABI HDeS)l?+6j9 literal 1380 zcmah|OH&g;5dJ2F4TJ^4D-ns90D)wAtcvd-s5~SZD9TuP)B%QMA=ynOgUXNb;K{Qd zLX`)9fLH&IWzS>-!J^8fYImk*`+Icv{QC3bCxB3zyzEIFwhxm>>edq;|j{Za6$=hp4F`kl?}8Y{mS^)HMt zdO|Qw^rDYpvOV=5s=~1-3+cHGy>%hi#G!BxUUMlJg6Xx)t`Z$FF@Qmm!=>c=#|-1? zOJaP)b?t#U0AxxN<#1up1h=1UAnY%^1a9XDlP`Y;_8AkH@#PRH%n&ZlXtO;Jpc43-aZF@2y zT<@e2G$V+d6hNSR79l5PSwDJ6xA+Ft+*CTt})SQ5OfjNLYI zM+L%?AB#0!;YFe9aM#4WRvk8pK8yz@9;!%}sto_s3_doIZMol6?pM77YC(VAamDsY zWlz-J@Vzoc2J_xNFYof2qxOC` zgwe;6*GMdT4E8nRZq)1uJ+; zJ4&Xj_?!UMYL!-ss2^)sr(CAy+$US66Ln@-vuEhP;Al#VkgNfXA8mehj&EQCF9?IF zIrp&+H8wC|H85m+!LW6Pn58!d4UBz7&v)D$Of@j0csjI~C^3NUP#2=)B&N}lh-*%h za0$)l+@y67fzc2}X(oNnI^ih&DMb?@(x^3dhI!2zG5$lFKsR-vk0|0uVG1*CR#WFz zQ^@I3`U2ug0Nnv!zYiW1K&G8jPqFQ4WHApigX diff --git a/Java-Knight/target/classes/org/project/entity/players/Assassin.class b/Java-Knight/target/classes/org/project/entity/players/Assassin.class index 8be3c9674587eaa9f194ba3349eb53fbb349f805..f72bf9218d58fa27d79e74ec6864ef172c4c2f6c 100644 GIT binary patch literal 2183 zcmZ`(*-{%<6zoAl5@J{^0cJG>=r9@R8@&S3tU*t1V=`%BtB?m@TvuN(^?$f8w{Q1xCe*jp88Acm?LHKpFBcNfT zRLP~vmC_sI$W9qW+qBP8WlNnIm1=6oxoQYJG>fMFSi^o|^No6^QkE*_QhRpAEasLr zHa43fOxq}=P7PHq6|1Rz=eqR&1*%dgkziFWOEa0k^4}-U5k?rDLFhWV(5)ffjQoMP z)oN8$t7cI{SJkl7#)(lp-c`1t!JkOaWTebq9XAls&}o^uyuE7M>gcV8TZtAu9_+eP zI<<&|J{|qCF`%41f^}2Jpo5h+)VnhmOO_7n7{RE9ft+E#rkvbf**G$lwVE|8da1#e zm^lcnglIkw*%8w*A;m>0+r`!G649SHaAn@sk-&_Gc5-j+ zI8+-QM3~ia2XmC~_JK`qsrafEg^|L?K`iL_L=eZDjlW_&Jrzz>RBNTG9a!cl%lgL6GQE#nysPV&6in9?J!(6BW9?=QV1*T z@^;CN8O2g9myd1jgz-7nf=KIF#}j(#0Jd(^5G)Ib#fbD@5nMMT&vb0yIlVe|66Bbe z31L&i)LE%ki4~0>?U>W^IX4WkQ`53yStE8*F^ma`#~=l~*cj@t??M=}1`_RWaq+ z`_pgd&8mj!meyV~BTED?s)7U6WW77U8rt$@4cZ283cP7|hLag+L3TpWGPd;0Ru#rT z!$`~0)`?>0_GIw3RM}JB?HSS-k$@Oy=cNgr72!R4e`Gu{rTnh{Mtxqib9lr-If9^C z1bBYUr&Hbqc#S4!N5_WzL+zK)l6?r)(eVraZbOFWZuofaxh0xeuG;g ztRd=<54g)4BzmNr($xI>Zbkvm@oD&|Fosb~V;qZ! zaiS-%j7g*sXC>1#BhggRVWXl$uc9L&w!=5QAZ_E!dBvTOQoNoNUBPqoB`@(b={#I3 zZ-78xA42Sej(G}PpqNF6UU$(vdLi|rZAdte8;1Vm89FC4y?y7nmGsj*@!<>l;IQ}h zT}wag1m+$(aG!yCfB||j#V^|(`XPaGdpg%}V6MplikT8I{9^Ddx&6Tt6BjX|bMz-i zF0tik2wf||bzqGSq}i%6xo;F=2-$ qTp%PucHf60;-r3?WA}nizGOUhoA?GBe1kY?=8O2rlw+Z7$o~sw=)v0n literal 2145 zcmZ`)OH&(180?XRB*gNt1em8;ENly5tl$LOvCKmT6O#Z|z=j0!8i_@$y?R7inQ+SQ z$dME0q*9_Pha7Xr56RC+rDt~|qy$9O?#%8?cYi(oEr0&~+wTA}Fe325A3{Jw2Z92V zONI3M z`bH~+X&c4Vi6JZHQZ2RT+|&PGAgjeP2{P)Ip56^E{dMI0B8Z?X1WiLXdIaLF$o~HXkxm}c^)c8q8kRbpe5k#UGN>y~X+EYql} z_v0FFVSg(d;AqW8!WYYXVcJ<$6^w89&(iu_51|&bq14PfW|w zbB2CYHH=9G@lwOOsyM)9Rv4cNjJX}5*Hs|&nwtn+x{**@HZ^RiEfHJ3Ggf6$7E}&b z%7?u5ZkQ!wt6t0*)z>m-@kw-}oR`+FteR@>Jq*~#W=-Hu+tFT=`82^xvgkmySnoEZ zfbX~>Al5l3a?s&48#B;`?1Z4L4VeMUEF60orh~SuG86)%Z5!L0hMOES-Qe?7cT}fs z%8FN2k7ri1eS*qV`&b>2XH#T{=aM(pOl3{?zis_M)rCo>-{)j81Xh9|udg^i;V8&^ zEIBhaJ{%bCxPVCZBh*0W&wT7dme(HmdF|q#hA2NMpL4e8Zo@WqI3oaF;|)R8Xcv19 zSqxurr1r*C-$6A)3}0fO0t60-<%(G3Y9%h1oN1u6Ej#m8Q@c`jZ#PB%R5%(gq0xBoW38Mc${d6h+KA^qPz2 z(JRsbe8Y#g#JtYrhl}J>SwlnWkXNehs&G%^>)}8J$wZGXu}PzR^VU^U<=!P%WMa` zP|WNmZV`jryUk3V4ah%)-OTRbE?QVgh>RQDTW7Vb_h|7NI<&Zfz!xr6Y@+;6-N!S2 z!U~w`UG@5gx(9o>$8L%wZ*~1ZW!W_&yLM>?dbO{(WMHU@Q7woO17oI?)*-W|?*|6r zpWr#cq<^k#U|xE$(F+iPi?N$ldT68Jfn}(bR)NgpXV5N&Dz&UYYgtszEGaALmO?gpoXUSWly;Agk zgU)-4PD+Y;gOZ8eK$c)~&0xxPGTvY_lnX}cOs3F^BnM?0ogBsxW=Ug?BfG%3*u*5& zV3NAXBq8l_1R3Q>yt3?-qSBwMicYPshINyQ>%U&=P*w;f%`wf;$13kE*Q6h9=tuE@ Q!>Pc+6O#H5sjTABU#EYGmH+?% delta 996 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 a1U8EJKs`TH&qe%=D@o3Nf`8zj*z|uNfE4`z literal 3750 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 literal 1842 zcmah~TXWk)7(MGaR^q6Mn_KH9P1Cw1wnL*{fI^k#(xjyZJD8?8Twd5Ds;weRMwZ(N z|AH50;4M!)!!XVa5BvcB2ET$AhO?4tY#OLMv%6aDo^!tQeY^hsuU~%yu!%3yNMJ}q zQpYe-0+&6%ZnS*wnRO5tmK)f?k$6IYS;^;R&Cb~)&%zQ&-}FeZsXDVzORfKLJABeeV@!jt;|#|CU)-Mk zjr0!%&a|yy+j?rbhmU1o2_*B|g_^?2=s1f>s+U0^555vu$PWmKgMARjOc83&w2m3f z3Jlk+pi&hW$`?wboIkH4iwnexBBQbasMCT@V;&bZEaqKw*}QDr&KTCUfrHx?_^G;ZOxhPQOQjdv&} z1RUHZptTf;;}Z9jQc)f!@UD*caF<>lhFJ?uuBA3uo$65mt?5{QnT1CrPGeKY{g)xC znFO|VJWw;qh9w<#Tizj)KT)<_Yp2uPxBMq^-{H(;**lOI90LWUtclwvOsq)68docEsp4`M6aVl= zk~3U=HsqX*R`obj*u@iK2z=7R`j&hO%Pe*o)Gs*K#oRHL7}H`GS3-i~gc|jIKkVY# zj~M$Ig-N4}n@Ye?82AD-j%R4VEZcJo;XKcHmgi$0cd^hX%It|UV^KBkOd@ehqdcC1 zIMk;^Rwi9h^x83|izm1fYSI2v#Vifr4vZj2^RJSBiTNyq?0SS2v&WoS#ktqB>hSAWV@_!tImS$J?gU$*F(a=r#-yNC{)^nBj1Ag!zmGoGqtD?} R)}lac(FH~S8Hp44{BNwlb=&{|