Changed action cards logic. x13

This commit is contained in:
Michael Wain 2025-04-12 23:06:16 +03:00
parent cd0cb39c6b
commit d8e47ee70b
8 changed files with 190 additions and 2 deletions

View File

@ -64,4 +64,21 @@ public interface Constants {
String SCANNER_TRIGGERED = "Сканнер нашел скрытую стату игрока %s, %s"; String SCANNER_TRIGGERED = "Сканнер нашел скрытую стату игрока %s, %s";
String SABOTAGE_CARD = "Саботаж"; String SABOTAGE_CARD = "Саботаж";
String GODS_WILL_CARD = "Божья воля";
String CHANGE_HOBBY_CARD = "Обменяться хобби";
String CHANGE_HOBBY_TRIGGERED = "Вы обменялись хобби с игроком %s";
String CHANGE_LUGGAGE_CARD = "Обменяться багажом";
String CHANGE_LUGGAGE_TRIGGERED = "Вы обменялись багажом с игроком %s";
String STEAL_LUGGAGE_CARD = "Украсть багаж";
String STEAL_LUGGAGE_TRIGGERED = "Вы украли багаж у игрока %s";
String RESURRECTION_CARD = "Воскресить игрока";
String RESURRECTION_CARD_TRIGGERED = "Вы воскресили игрока %s";
} }

View File

@ -50,6 +50,10 @@ public class LiveFormula {
this.p -= p; this.p -= p;
} }
public void add(double p) {
this.p += p;
}
private static Boolean entity(List<Player> players, SectionType ct, Long eid) { private static Boolean entity(List<Player> players, SectionType ct, Long eid) {
return switch (ct) { return switch (ct) {
case GENDER -> LiveFormula.searchForBio(players, eid); case GENDER -> LiveFormula.searchForBio(players, eid);

View File

@ -0,0 +1,32 @@
package com.alterdekim.javabot.bot.cards;
import com.alterdekim.javabot.Constants;
import com.alterdekim.javabot.bot.Player;
import com.alterdekim.javabot.components.BunkerBot;
import com.alterdekim.javabot.entities.Hobby;
import com.alterdekim.javabot.entities.Work;
import com.alterdekim.javabot.util.BotUtils;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
public class ChangeHobbyCard extends ActionCard {
public ChangeHobbyCard(BunkerBot bot, Player activator) {
super(bot, activator);
}
public ChangeHobbyCard() {
}
@Override
public void execute() {
Player p = (Player) BotUtils.getRandomFromList(this.bot.players, this.bot.random);
Hobby w = this.activator.getHobby();
this.activator.setHobby(p.getHobby());
p.setHobby(w);
this.bot.sendApi(new SendMessage(this.activator.getTelegramId()+"", String.format(Constants.CHANGE_HOBBY_TRIGGERED, p.getFirstName())));
}
@Override
public String getName() {
return Constants.CHANGE_HOBBY_CARD;
}
}

View File

@ -0,0 +1,33 @@
package com.alterdekim.javabot.bot.cards;
import com.alterdekim.javabot.Constants;
import com.alterdekim.javabot.bot.Player;
import com.alterdekim.javabot.components.BunkerBot;
import com.alterdekim.javabot.entities.Hobby;
import com.alterdekim.javabot.entities.Luggage;
import com.alterdekim.javabot.util.BotUtils;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
public class ChangeLuggageCard extends ActionCard {
public ChangeLuggageCard(BunkerBot bot, Player activator) {
super(bot, activator);
}
public ChangeLuggageCard() {
}
@Override
public void execute() {
Player p = (Player) BotUtils.getRandomFromList(this.bot.players, this.bot.random);
Luggage w = this.activator.getLuggage();
this.activator.setLuggage(p.getLuggage());
p.setLuggage(w);
this.bot.sendApi(new SendMessage(this.activator.getTelegramId()+"", String.format(Constants.CHANGE_LUGGAGE_TRIGGERED, p.getFirstName())));
}
@Override
public String getName() {
return Constants.CHANGE_LUGGAGE_CARD;
}
}

View File

@ -0,0 +1,25 @@
package com.alterdekim.javabot.bot.cards;
import com.alterdekim.javabot.Constants;
import com.alterdekim.javabot.bot.Player;
import com.alterdekim.javabot.components.BunkerBot;
public class GodsWillCard extends ActionCard {
public GodsWillCard(BunkerBot bot, Player activator) {
super(bot, activator);
}
public GodsWillCard() {
}
@Override
public void execute() {
this.bot.liveFormula.add(5.0d / 100.0d);
}
@Override
public String getName() {
return Constants.GODS_WILL_CARD;
}
}

View File

@ -0,0 +1,30 @@
package com.alterdekim.javabot.bot.cards;
import com.alterdekim.javabot.Constants;
import com.alterdekim.javabot.bot.Player;
import com.alterdekim.javabot.components.BunkerBot;
import com.alterdekim.javabot.util.BotUtils;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
public class ResurrectionCard extends ActionCard {
public ResurrectionCard(BunkerBot bot, Player activator) {
super(bot, activator);
}
public ResurrectionCard() {
}
@Override
public void execute() {
Player p = (Player) BotUtils.getRandomFromList(this.bot.dead_players, this.bot.random);
p.setIsAnswered(true);
this.bot.players.add(p);
this.bot.sendApi(new SendMessage(this.activator.getTelegramId()+"", String.format(Constants.RESURRECTION_CARD_TRIGGERED, p.getFirstName())));
}
@Override
public String getName() {
return Constants.RESURRECTION_CARD;
}
}

View File

@ -0,0 +1,34 @@
package com.alterdekim.javabot.bot.cards;
import com.alterdekim.javabot.Constants;
import com.alterdekim.javabot.bot.Player;
import com.alterdekim.javabot.components.BunkerBot;
import com.alterdekim.javabot.entities.Luggage;
import com.alterdekim.javabot.util.BotUtils;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
public class StealActionCard extends ActionCard {
private static final long NOTHING_ID = 7;
public StealActionCard(BunkerBot bot, Player activator) {
super(bot, activator);
}
public StealActionCard() {
}
@Override
public void execute() {
Player p = (Player) BotUtils.getRandomFromList(this.bot.players, this.bot.random);
Luggage l = p.getLuggage();
p.setLuggage(this.bot.luggageService.getLuggageById(NOTHING_ID));
this.activator.setLuggage(l);
this.bot.sendApi(new SendMessage(this.activator.getTelegramId()+"", String.format(Constants.STEAL_LUGGAGE_TRIGGERED, p.getFirstName())));
}
@Override
public String getName() {
return Constants.STEAL_LUGGAGE_CARD;
}
}

View File

@ -43,11 +43,12 @@ public class BunkerBot extends TelegramLongPollingBot {
private double last_p = -1; private double last_p = -1;
public List<Player> players; public List<Player> players;
public List<Player> dead_players;
private final BioService bioService; private final BioService bioService;
public final HealthService healthService; public final HealthService healthService;
private final HobbyService hobbyService; private final HobbyService hobbyService;
private final LuggageService luggageService; public final LuggageService luggageService;
private final WorkService workService; private final WorkService workService;
public final TextDataValService textDataValService; public final TextDataValService textDataValService;
private final DisasterService disasterService; private final DisasterService disasterService;
@ -75,6 +76,7 @@ public class BunkerBot extends TelegramLongPollingBot {
RandomComponent randomComponent) { RandomComponent randomComponent) {
this.telegramConfig = telegramConfig; this.telegramConfig = telegramConfig;
this.players = new ArrayList<>(); this.players = new ArrayList<>();
this.dead_players = new ArrayList<>();
this.gameState = GameState.NONE; this.gameState = GameState.NONE;
this.bioService = bioService; this.bioService = bioService;
this.healthService = healthService; this.healthService = healthService;
@ -84,7 +86,16 @@ public class BunkerBot extends TelegramLongPollingBot {
this.textDataValService = textDataValService; this.textDataValService = textDataValService;
this.disasterService = disasterService; this.disasterService = disasterService;
this.synergyService = synergyService; this.synergyService = synergyService;
this.actionCards = new ArrayList<>(List.of(Sabotage.class)); // ScannerCard.class, RandomHIVCard.class, ChangeWorksCard.class, this.actionCards = new ArrayList<>(List.of(
ScannerCard.class,
RandomHIVCard.class,
ChangeWorksCard.class,
ChangeHobbyCard.class,
ChangeLuggageCard.class,
Sabotage.class,
GodsWillCard.class,
StealActionCard.class,
ResurrectionCard.class));
this.random = randomComponent; this.random = randomComponent;
this.dayNightFields = new DayNightFields(); this.dayNightFields = new DayNightFields();
this.linkedQueue = new ConcurrentLinkedQueue<>(); this.linkedQueue = new ConcurrentLinkedQueue<>();
@ -184,6 +195,7 @@ public class BunkerBot extends TelegramLongPollingBot {
return; return;
} }
Collections.shuffle(players); Collections.shuffle(players);
this.dead_players = new ArrayList<>();
this.gameState = GameState.STARTED; this.gameState = GameState.STARTED;
this.liveFormula = new LiveFormula(); this.liveFormula = new LiveFormula();
this.liveFormula.setPlayerList(players); this.liveFormula.setPlayerList(players);
@ -470,6 +482,7 @@ public class BunkerBot extends TelegramLongPollingBot {
.filter(e -> e.getValue().equals(max)) .filter(e -> e.getValue().equals(max))
.forEach(i -> { .forEach(i -> {
sendApi(new SendMessage(groupId, String.format(Constants.REMOVE_PLAYER, players.get(i.getKey()).getFirstName()))); sendApi(new SendMessage(groupId, String.format(Constants.REMOVE_PLAYER, players.get(i.getKey()).getFirstName())));
dead_players.add(players.get(i.getKey().intValue()));
players.remove(i.getKey().intValue()); players.remove(i.getKey().intValue());
}); });
} }