Skip to content

Commit

Permalink
calculate ascension based on level provided to givechar command
Browse files Browse the repository at this point in the history
  • Loading branch information
SpikeHD committed Apr 19, 2022
1 parent a5caf3d commit cc9beed
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion src/main/java/emu/grasscutter/commands/PlayerCommands.java
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ public void execute(GenshinPlayer player, List<String> args) {
@Command(label = "givechar", aliases = { "givec" }, usage = "Usage: givechar <playerId> <avatarId> [level]")
public static class GiveCharCommand implements CommandHandler {
@Override public void execute(GenshinPlayer player, List<String> args) {
int target, avatarID, level = 1;
int target, avatarID, level = 1, ascension = 1;

if(args.size() < 2) {
CommandHandler.sendMessage(null, "Usage: givechar <player> <avatarId> [level]");
Expand Down Expand Up @@ -244,8 +244,16 @@ public static class GiveCharCommand implements CommandHandler {
CommandHandler.sendMessage(null, "Invalid avatar id."); return;
}

// Calculate ascension level.
if (level <= 40) {
ascension = (int)Math.ceil(level / 20);
} else if (level > 20) {
ascension = (int)Math.ceil(level / 10) - 3;
}

GenshinAvatar avatar = new GenshinAvatar(avatarID);
avatar.setLevel(level);
avatar.setPromoteLevel(ascension);

targetPlayer.addAvatar(avatar);
}
Expand All @@ -261,6 +269,7 @@ public void execute(List<String> args) {
int target = Integer.parseInt(args.get(0));
int avatarID = Integer.parseInt(args.get(1));
int level = 1; if(args.size() > 2) level = Integer.parseInt(args.get(2));
int ascension = 1;

GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerById(target);
if(targetPlayer == null) {
Expand All @@ -272,8 +281,16 @@ public void execute(List<String> args) {
CommandHandler.sendMessage(null, "Invalid avatar id."); return;
}

// Calculate ascension level.
if (level <= 40) {
ascension = (int)Math.ceil(level / 20);
} else if (level > 20) {
ascension = (int)Math.ceil(level / 10) - 3;
}

GenshinAvatar avatar = new GenshinAvatar(avatarID);
avatar.setLevel(level);
avatar.setPromoteLevel(ascension);

targetPlayer.addAvatar(avatar);
} catch (NumberFormatException ignored) {
Expand Down

0 comments on commit cc9beed

Please sign in to comment.