Update SR
This commit is contained in:
@ -1,10 +1,15 @@
|
||||
package Shadowrun;
|
||||
|
||||
import net.dv8tion.jda.core.EmbedBuilder;
|
||||
import net.dv8tion.jda.core.entities.ChannelType;
|
||||
import net.dv8tion.jda.core.entities.User;
|
||||
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.core.hooks.ListenerAdapter;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import net.dv8tion.jda.api.requests.restaction.MessageAction;
|
||||
|
||||
|
||||
import java.awt.*;
|
||||
@ -45,6 +50,7 @@ public class dice extends ListenerAdapter {
|
||||
this.prefixZitat = "/zitat";
|
||||
this.prefixCId = "/cid";
|
||||
|
||||
|
||||
helpDe.add("Alle Befehle können in einen Channel geschrieben werden oder per Direkt Nachricht gesender werden");
|
||||
helpDe.add(this.prefixSr + "Zahl", "Würfelt Zahl x W6. Gewürfelte 5. und 6. Werden als Erfolge gezählt, 1. als Misserfolge.\n" +
|
||||
"Erreicht oder übersteigt die Anzhal der 1. die hälfte der gewürfelten Würfel, zählt dies als ein Patzer. Gibt es mind. 1 Erfolg wird die Markierung der Ausgabe Gelb." +
|
||||
@ -89,9 +95,9 @@ public class dice extends ListenerAdapter {
|
||||
|
||||
}
|
||||
User author = event.getAuthor();
|
||||
if (!author.isBot()) {
|
||||
|
||||
if (event.getMessage().getContentRaw().startsWith(this.prefixSr))
|
||||
this.roll(event);
|
||||
this.srroll(event);
|
||||
else if (event.getMessage().getContentRaw().startsWith(this.prefixIni))
|
||||
this.ini(event);
|
||||
else if (event.getMessage().getContentRaw().startsWith(this.prefixTest))
|
||||
@ -100,9 +106,36 @@ public class dice extends ListenerAdapter {
|
||||
this.zitat(event);
|
||||
else if (event.getMessage().getContentRaw().startsWith(this.prefixCId))
|
||||
this.cid(event);
|
||||
}
|
||||
}
|
||||
|
||||
/*@Override
|
||||
public void onMessageReactionAdd(MessageReactionAddEvent event) {
|
||||
User user = event.getUser();
|
||||
if(!channelList.containsKey(event.getChannel().getId())) {
|
||||
Map<String, String> Einstellungen = db.getChannelSettings(event.getChannel().getId());
|
||||
channelList.put(event.getChannel().getId(), Einstellungen.get("lang").toString());
|
||||
}
|
||||
switch (channelList.get(event.getChannel().getId())) {
|
||||
case "de":
|
||||
activLang = langDe;
|
||||
break;
|
||||
case "en":
|
||||
activLang = langEn;
|
||||
break;
|
||||
default:
|
||||
activLang = langDe;
|
||||
|
||||
}
|
||||
if (!user.isBot()) {
|
||||
if(event.getReactionEmote().getId().equals("517528156014510111")) { // SR Reaktion - reroll
|
||||
reaktionRerollEdge(event);
|
||||
}
|
||||
else if(event.getReactionEmote().getId().equals("517545127376322596")) { // ausgedehnte probe
|
||||
extensionroll(event);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* rolltest
|
||||
*
|
||||
@ -164,23 +197,17 @@ public class dice extends ListenerAdapter {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* rolltest
|
||||
*
|
||||
* @param event JDA Event
|
||||
*/
|
||||
private void roll(MessageReceivedEvent event) {
|
||||
private void srroll(MessageReceivedEvent event) {
|
||||
|
||||
EmbedBuilder outputBox = new EmbedBuilder();
|
||||
|
||||
int[] verteilung = new int[6];
|
||||
int dice1;
|
||||
int numberOfDice = 1;
|
||||
int diceart = 6;
|
||||
StringBuilder result = new StringBuilder("");
|
||||
|
||||
int hits = 0;
|
||||
boolean glitches = false;
|
||||
|
||||
boolean edge = false;
|
||||
|
||||
@ -232,7 +259,6 @@ public class dice extends ListenerAdapter {
|
||||
try {
|
||||
diceart = Integer.parseInt(diceInterpreter[1]);
|
||||
numberOfDice = Integer.parseInt(diceInterpreter[0]);
|
||||
verteilung = new int[diceart];
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
String message = activLang.error;
|
||||
@ -260,14 +286,53 @@ public class dice extends ListenerAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
srrollOut(numberOfDice, diceart, edge, event.getChannel(), event.getAuthor(), getEffectiveName(event), event.getMessage().getContentRaw(), -1, 0, event.getJDA());
|
||||
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
event.getChannel().sendMessage("Nope").queue();
|
||||
}
|
||||
catch (Exception e) {
|
||||
System.out.println("problem: " + e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* srrollOut
|
||||
*
|
||||
* @param numberOfDice
|
||||
* @param diceart
|
||||
* @param edge
|
||||
* @param channel
|
||||
* @param user
|
||||
* @param effectiveName
|
||||
* @param inputMessage
|
||||
* @param hitBasis
|
||||
* @param type
|
||||
*/
|
||||
private void srrollOut(int numberOfDice, int diceart, boolean edge, MessageChannel channel, User user, String effectiveName, String inputMessage, int hitBasis, int type, JDA jda) {
|
||||
|
||||
EmbedBuilder outputBox = new EmbedBuilder();
|
||||
|
||||
int[] verteilung = new int[diceart];
|
||||
int dice1;
|
||||
StringBuilder result = new StringBuilder("");
|
||||
StringBuilder rollString = new StringBuilder("");
|
||||
|
||||
int hits = 0;
|
||||
boolean glitches = false;
|
||||
|
||||
try {
|
||||
|
||||
if(numberOfDice <= 0) {
|
||||
String message = activLang.noNegativ;
|
||||
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||
channel.sendMessage(user.getAsMention() + message).queue();
|
||||
return;
|
||||
}
|
||||
|
||||
int bonusEdegeDice = 0;
|
||||
int dicecorrection = hitBasis < 0 ? 0 : hitBasis;
|
||||
for(int i = 0; i < numberOfDice+bonusEdegeDice; i++) {
|
||||
dice1 = new Random().nextInt(diceart);
|
||||
if(edge && dice1 == 5)
|
||||
@ -282,15 +347,15 @@ public class dice extends ListenerAdapter {
|
||||
result.append(dice1+1);
|
||||
result.append(" ");
|
||||
}
|
||||
if (verteilung[0] > (numberOfDice+bonusEdegeDice)/2f) { // Patzer nur bei über er Hälfte an 1er
|
||||
if (verteilung[0] > (numberOfDice+bonusEdegeDice+dicecorrection)/2f) { // Patzer nur bei über er Hälfte an 1er
|
||||
glitches = true;
|
||||
}
|
||||
|
||||
|
||||
if(hits == 0 && !glitches) { // kein Erfolg, kein Patzer
|
||||
if(hits+dicecorrection == 0 && !glitches) { // kein Erfolg, kein Patzer
|
||||
outputBox.setColor(Color.gray);
|
||||
}
|
||||
else if(hits == 0 && glitches) { // kritischer Patzer
|
||||
else if(hits+dicecorrection == 0 && glitches) { // kritischer Patzer
|
||||
outputBox.setColor(Color.red);
|
||||
}
|
||||
else if(glitches) { // Patzer
|
||||
@ -304,30 +369,64 @@ public class dice extends ListenerAdapter {
|
||||
if(bonusEdegeDice > 0) {
|
||||
addition = " + " + bonusEdegeDice + activLang.dice + diceart;
|
||||
}
|
||||
String message = "";
|
||||
if(type == 1) {
|
||||
message = activLang.resultText;
|
||||
//%numberOfDice%%dice%%diceart% %EdgeDice%:\tErfolge: %hits%\tMisserfolge: %oneHits%";
|
||||
message = message.replace("%numberOfDice%", String.valueOf(numberOfDice)).replace("%diceart%", String.valueOf(diceart)).replace("%EdgeDice%", addition).replace("%hits%", String.valueOf(hits) + "\t Gesamt: " + (hits + hitBasis)).replace("%oneHits%", String.valueOf(verteilung[0]));
|
||||
outputBox.setTitle(effectiveName + " Edgereroll " + message);
|
||||
}
|
||||
if(type == 2) {
|
||||
message = activLang.resultTextExtent;
|
||||
//%numberOfDice%%dice%%diceart% %EdgeDice%:\tErfolge: %hits%\tMisserfolge: %oneHits%";
|
||||
message = message.replace("%numberOfDice%", String.valueOf(numberOfDice)).replace("%diceart%", String.valueOf(diceart)).replace("%EdgeDice%", addition).replace("%hits%", String.valueOf(hits) + "\t Gesamt: " + (hits + hitBasis)).replace("%oneHits%", String.valueOf(verteilung[0]));
|
||||
outputBox.setTitle(effectiveName + " Ausgedehnt " + message);
|
||||
}
|
||||
else {
|
||||
message = activLang.resultText;
|
||||
//%numberOfDice%%dice%%diceart% %EdgeDice%:\tErfolge: %hits%\tMisserfolge: %oneHits%";
|
||||
message = message.replace("%numberOfDice%", String.valueOf(numberOfDice)).replace("%diceart%", String.valueOf(diceart)).replace("%EdgeDice%", addition).replace("%hits%", String.valueOf(hits)).replace("%oneHits%", String.valueOf(verteilung[0]));
|
||||
outputBox.setTitle(effectiveName + message);
|
||||
}
|
||||
|
||||
String message = activLang.resultText;
|
||||
//%numberOfDice%%dice%%diceart% %EdgeDice%:\tErfolge: %hits%\tMisserfolge: %oneHits%";
|
||||
message = message.replace("%numberOfDice%", String.valueOf(numberOfDice)).replace("%diceart%", String.valueOf(diceart)).replace("%EdgeDice%", addition).replace("%hits%", String.valueOf(hits)).replace("%oneHits%", String.valueOf(verteilung[0]));
|
||||
outputBox.setTitle(getEffectiveName(event) + message);
|
||||
|
||||
|
||||
outputBox.setDescription("(" + result.toString().trim() + ")");
|
||||
//outputBox.appendDescription("\r" + jda.getEmoteById("517528156014510111").getAsMention() + " Edge reroll");
|
||||
//outputBox.appendDescription("\r" + jda.getEmoteById("517545127376322596").getAsMention() + " Ausgedehnte Probe");
|
||||
//JDA::getEmoteById();
|
||||
|
||||
for(int i = 0; i < diceart; i++) {
|
||||
float pro = verteilung[i]*100f/numberOfDice;
|
||||
//outputBox.addField(Integer.toString(i+1), Integer.toString(verteilung[i]) + " - " + String.format("%.2f", pro) + "%", true);
|
||||
}
|
||||
|
||||
event.getChannel().sendMessage(outputBox.build()).queue();
|
||||
if(event.getChannelType() == ChannelType.PRIVATE) {
|
||||
db.insertDice(event.getAuthor().getName(), event.getAuthor().getId(), event.getMessage().getContentRaw(), result.toString().trim(), event.getChannel().getId());
|
||||
}
|
||||
else {
|
||||
db.insertDice(event.getMember().getEffectiveName(), event.getMember().getUser().getId(), event.getMessage().getContentRaw(), result.toString().trim(), event.getChannel().getId());
|
||||
}
|
||||
rollString.append(numberOfDice).append("|").append(hits+dicecorrection).append("|").append(verteilung[0]);
|
||||
|
||||
//event.getChannel().sendMessage(outputBox.build()).queue();
|
||||
long[] messageId = new long[1];
|
||||
boolean finalEdge = edge;
|
||||
String finalRollData = rollString.toString();
|
||||
channel.sendMessage(outputBox.build()).queue(message1 -> {
|
||||
if(!finalEdge && type == 0) {
|
||||
//message1.addReaction("sr:517528156014510111").queue();
|
||||
}
|
||||
if(!finalEdge && (type == 0 || type == 2)) {
|
||||
//message1.addReaction("test:517545127376322596").queue();
|
||||
}
|
||||
messageId[0] = message1.getIdLong();
|
||||
if(channel.getType() == ChannelType.PRIVATE) {
|
||||
db.insertDice(user.getName(), user.getId(), inputMessage, result.toString().trim(), channel.getId(), messageId[0], finalRollData);
|
||||
}
|
||||
else {
|
||||
db.insertDice(user.getName(), user.getId(), inputMessage, result.toString().trim(), channel.getId(), messageId[0], finalRollData);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
event.getChannel().sendMessage("Nope").queue();
|
||||
channel.sendMessage("Nope").queue();
|
||||
}
|
||||
catch (Exception e) {
|
||||
System.out.println("problem: " + e.getMessage());
|
||||
@ -489,4 +588,49 @@ public class dice extends ListenerAdapter {
|
||||
}
|
||||
return event.getMember().getAsMention() + " ";
|
||||
}
|
||||
|
||||
private void reaktionRerollEdge(MessageReactionAddEvent event) {
|
||||
Map<String, String> wurf = db.getMesssage(event.getMessageIdLong());
|
||||
if(!wurf.containsKey("benutzerId")) {
|
||||
return;
|
||||
}
|
||||
else if(!wurf.get("benutzerId").equals(event.getUserId())) {
|
||||
return;
|
||||
}
|
||||
String[] wurfParts = wurf.get("wurfdaten").split("\\|");
|
||||
int dice = Integer.parseInt(wurfParts[0]);
|
||||
int hits = Integer.parseInt(wurfParts[1]);
|
||||
int miss = Integer.parseInt(wurfParts[2]);
|
||||
String effectName = "";
|
||||
if(event.getMember().getEffectiveName() != "") {
|
||||
effectName = event.getMember().getEffectiveName();
|
||||
}
|
||||
srrollOut(dice-hits, 6, false, event.getChannel(), event.getUser(), effectName, "Edege Reroll", hits, 1, event.getJDA());
|
||||
|
||||
}
|
||||
|
||||
private void extensionroll(MessageReactionAddEvent event) {
|
||||
Map<String, String> wurf = db.getMesssage(event.getMessageIdLong());
|
||||
if(!wurf.containsKey("benutzerId")) {
|
||||
return;
|
||||
}
|
||||
else if(!wurf.get("benutzerId").equals(event.getUserId())) {
|
||||
return;
|
||||
}
|
||||
String[] wurfParts = wurf.get("wurfdaten").split("\\|");
|
||||
int dice = Integer.parseInt(wurfParts[0]);
|
||||
int hits = Integer.parseInt(wurfParts[1]);
|
||||
int miss = Integer.parseInt(wurfParts[2]);
|
||||
String effectName = "";
|
||||
if(event.getMember().getEffectiveName() != "") {
|
||||
effectName = event.getMember().getEffectiveName();
|
||||
}
|
||||
if(dice == 1) {
|
||||
event.getChannel().sendMessage(event.getUser().getAsMention() + " mehr geht nicht, du hast **" + hits + "** Erfolge").queue();
|
||||
}
|
||||
else {
|
||||
srrollOut(dice - 1, 6, false, event.getChannel(), event.getUser(), effectName, "Extent Roll", hits, 2, event.getJDA());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user