diff --git a/backend/src/main/java/cz/jzitnik/chronos/controllers/GameController.java b/backend/src/main/java/cz/jzitnik/chronos/controllers/GameController.java index bfee75e..bcb1e44 100644 --- a/backend/src/main/java/cz/jzitnik/chronos/controllers/GameController.java +++ b/backend/src/main/java/cz/jzitnik/chronos/controllers/GameController.java @@ -122,7 +122,7 @@ public class GameController { playerRepository.save(player); - if (game.getKeyFragmentsAmount() >= 4) { + if (game.getKeyFragmentsAmount() >= 5) { // All key fragments were found game.setWon(true); } diff --git a/backend/src/main/java/cz/jzitnik/chronos/entities/Character.java b/backend/src/main/java/cz/jzitnik/chronos/entities/Character.java index d0d729f..0e15114 100644 --- a/backend/src/main/java/cz/jzitnik/chronos/entities/Character.java +++ b/backend/src/main/java/cz/jzitnik/chronos/entities/Character.java @@ -46,6 +46,7 @@ public class Character { @JoinColumn(name = "interaction_data_id", referencedColumnName = "id") private cz.jzitnik.chronos.entities.Interaction interactionData; + @Lob private String dialog; public Character(String name, Room room, String dialog) { diff --git a/backend/src/main/java/cz/jzitnik/chronos/entities/Game.java b/backend/src/main/java/cz/jzitnik/chronos/entities/Game.java index 1211304..f58e8bf 100644 --- a/backend/src/main/java/cz/jzitnik/chronos/entities/Game.java +++ b/backend/src/main/java/cz/jzitnik/chronos/entities/Game.java @@ -80,6 +80,6 @@ public class Game { var unplayedCharacters = characters.stream().filter(character -> !character.isInteractedWith()).toList().size(); - return (roomItems + unplayedCharacters + ownedFragments) >= (4 - keyFragmentsAmount); + return (roomItems + unplayedCharacters + ownedFragments) >= (5 - keyFragmentsAmount); } } diff --git a/backend/src/main/java/cz/jzitnik/chronos/interactions/list/RockPaperScissors.java b/backend/src/main/java/cz/jzitnik/chronos/interactions/list/RockPaperScissors.java index 5905d4c..a30c31b 100644 --- a/backend/src/main/java/cz/jzitnik/chronos/interactions/list/RockPaperScissors.java +++ b/backend/src/main/java/cz/jzitnik/chronos/interactions/list/RockPaperScissors.java @@ -61,7 +61,7 @@ public class RockPaperScissors implements InteractionPlayer { } else { character.setInteractedWith(true); characterRepository.save(character); - return new InteractionResponse(false, "Prohrál jsi. Žádný fragment klíče ode mě už nedostaneš. Zkus to u někoho jiného.", new ArrayList<>()); + return new InteractionResponse(false, "Prohrál jsi. Žádný fragment klíče ode mě nedostaneš. Zkus to u někoho jiného.", new ArrayList<>()); } } else { // Standard rock-paper-scissors game logic diff --git a/backend/src/main/java/cz/jzitnik/chronos/interactions/list/TicTacToe.java b/backend/src/main/java/cz/jzitnik/chronos/interactions/list/TicTacToe.java index 1ef280e..020106f 100644 --- a/backend/src/main/java/cz/jzitnik/chronos/interactions/list/TicTacToe.java +++ b/backend/src/main/java/cz/jzitnik/chronos/interactions/list/TicTacToe.java @@ -201,13 +201,16 @@ public class TicTacToe implements InteractionPlayer { characterRepository.save(character); } + var items = new ArrayList(); + if (type == TicTacToeResponse.Type.GAME_WON) { var item = new Item(ItemType.KEY_FRAGMENT, character.getInteractionData().getPlayer()); + items.add(item); itemService.addItem(character.getInteractionData().getPlayer(), item); } var response = new TicTacToeResponse(type, board, false); ObjectMapper objectMapper = new ObjectMapper(); - return new InteractionResponse(true, objectMapper.writeValueAsString(response), new ArrayList<>()); + return new InteractionResponse(true, objectMapper.writeValueAsString(response), items); } } diff --git a/backend/src/main/java/cz/jzitnik/chronos/services/InitGameService.java b/backend/src/main/java/cz/jzitnik/chronos/services/InitGameService.java index 74a5f92..f9945a4 100644 --- a/backend/src/main/java/cz/jzitnik/chronos/services/InitGameService.java +++ b/backend/src/main/java/cz/jzitnik/chronos/services/InitGameService.java @@ -22,7 +22,13 @@ public class InitGameService { var elf = new Character( "Skřítek", outside, - "Ahoj já jsem skřítek... Můj dialog doplnit" + "Ahoj, vím že se teď asi ptáš co tu děláš a tak dále a tak dále, ale teď na to není prostor. " + + "Zastavil se tu totiž čas a já potřebuji abys mi pomohl ho dát zpět do pochodu. " + + "Musíš najít 5 fragmentů klíče a přinést je zpět na náměstí, kde je vhodíš do brány času, a vše znovu obživne. " + + "Čeká tě spousta úkolů které musíš splnit na to aby jsi dostal/a fragmenty klíče. " + + "Taky ode mě dostaneš lektvar štěstí který ti pomůže u farmáře. " + + "Ale nezapomeň, v batohu můžeš nést maximálně jen tři věci. " + + "No nic, jdi udělat to co máš. Hodně štěstí!" ); elf_items.add(new Item(ItemType.LUCK_POTION, elf)); elf.setInventory(elf_items); @@ -38,12 +44,15 @@ public class InitGameService { var farmar = new Character( "Farmář", stodola, - "Ahoj já jsem farmář a budeš se mnou hrát kámen nůžky papír. Dialog doplnit." + "Ahoj! Určitě už víš co se stalo, zastavil se čas a skřítek ho potřebuje znovu obnovit. " + + "Ale mně se to takhle líbí, proto ti fragment klíče nedám jen tak zadarmo. " + + "Musíš si semnou zahrát kámen, nůžky papír. Pokud vyhraješ, dám ti fragment klíče. " + + "Pokud ne, tak ti fragment klíče už nikdy nedám. Hodně štěstí, budeš ho potřebovat." ); farmar.setInteraction(Interaction.Farmer); farmar.setInteractionData(new cz.jzitnik.chronos.entities.Interaction( - "Tak si zahrajeme kámen nůžky papír", - "Se mnou někdo již hrál kámen nůžky papír. Další fragment klíče nemám.", + "", + "Už si semnou zahrát nemůžeš, někdo tu byl před tebou a dostal ode mě fragment klíče.", farmar )); stodola_characters.add(farmar); @@ -58,12 +67,14 @@ public class InitGameService { var cashier = new Character( "Prodavač", shop, - "Ahoj já jsem prodavač a budeš se mnou hrát šibenici." + "Dobrý den přejete si něco? Ne? Co teda chcete? Joo fragment klíče. To ale nepůjde jen tak snadno. " + + "Nejdřív si se mnou musíš zahrát šibenici, jestli vyhraješ tak ti samozřejmě dám fragment klíče ale pokud ne... " + + "tak tě na tu šibenici pověsím! Ne dělám si srandu. Pojď si zahrát." ); cashier.setInteraction(Interaction.Cashier); cashier.setInteractionData(new cz.jzitnik.chronos.entities.Interaction( - "Tak si zahrajeme šibenici", - "Se mnou někdo již hrál šibenici. Další fragment klíče nemám.", + "", + "Už si semnou zahrát nemůžeš, někdo tu byl před tebou a dostal ode mě fragment klíče.", cashier )); shop_characters.add(cashier); diff --git a/frontend/src/main/java/cz/jzitnik/game/interactions/list/TicTacToe.java b/frontend/src/main/java/cz/jzitnik/game/interactions/list/TicTacToe.java index 4e69192..ecff607 100644 --- a/frontend/src/main/java/cz/jzitnik/game/interactions/list/TicTacToe.java +++ b/frontend/src/main/java/cz/jzitnik/game/interactions/list/TicTacToe.java @@ -111,7 +111,7 @@ public class TicTacToe { return askForMove(board); } - if (!board[move].equals("_")) { + if (!board[move - 1].equals("_")) { Cli.error("Toto pole již bylo obsazeno!"); return askForMove(board); }