TalentCommand.java 8.62 KB
Newer Older
alt3ri's avatar
alt3ri committed
1
2
package emu.grasscutter.command.commands;

方块君's avatar
方块君 committed
3
import emu.grasscutter.Grasscutter;
alt3ri's avatar
alt3ri committed
4
5
import emu.grasscutter.command.Command;
import emu.grasscutter.command.CommandHandler;
xtaodada's avatar
xtaodada committed
6
import emu.grasscutter.data.def.AvatarSkillDepotData;
7
import emu.grasscutter.game.avatar.Avatar;
alt3ri's avatar
alt3ri committed
8
import emu.grasscutter.game.entity.EntityAvatar;
Melledy's avatar
Melledy committed
9
import emu.grasscutter.game.player.Player;
alt3ri's avatar
alt3ri committed
10
11
12
13
14
15
16
import emu.grasscutter.server.packet.send.PacketAvatarSkillChangeNotify;
import emu.grasscutter.server.packet.send.PacketAvatarSkillUpgradeRsp;

import java.util.List;

@Command(label = "talent", usage = "talent <talentID> <value>",
        description = "Set talent level for your current active character", permission = "player.settalent")
KingRainbow44's avatar
KingRainbow44 committed
17
public final class TalentCommand implements CommandHandler {
alt3ri's avatar
alt3ri committed
18
19

    @Override
20
    public void execute(Player sender, List<String> args) {
alt3ri's avatar
alt3ri committed
21
        if (sender == null) {
方块君's avatar
方块君 committed
22
            CommandHandler.sendMessage(null, Grasscutter.getLanguage().Run_this_command_in_game);
alt3ri's avatar
alt3ri committed
23
24
25
            return;
        }

xtaodada's avatar
xtaodada committed
26
        if (args.size() < 1){
方块君's avatar
方块君 committed
27
28
29
            CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_usage_1);
            CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_usage_2);
            CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_usage_3);
alt3ri's avatar
alt3ri committed
30
31
32
33
34
35
            return;
        }

        String cmdSwitch = args.get(0);
        switch (cmdSwitch) {
            default:
方块君's avatar
方块君 committed
36
37
38
                CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_usage_1);
                CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_usage_2);
                CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_usage_3);
alt3ri's avatar
alt3ri committed
39
40
41
42
43
44
            return;
            case "set":
                    try {
                        int skillId = Integer.parseInt(args.get(1));
                        int nextLevel = Integer.parseInt(args.get(2));
                        EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
45
                        Avatar avatar = entity.getAvatar(); 
alt3ri's avatar
alt3ri committed
46
47
48
49
50
51
52
                        int skillIdNorAtk = avatar.getData().getSkillDepot().getSkills().get(0);
                        int skillIdE = avatar.getData().getSkillDepot().getSkills().get(1);
                        int skillIdQ = avatar.getData().getSkillDepot().getEnergySkill();
                        int currentLevelNorAtk = avatar.getSkillLevelMap().get(skillIdNorAtk);
                        int currentLevelE = avatar.getSkillLevelMap().get(skillIdE);
                        int currentLevelQ = avatar.getSkillLevelMap().get(skillIdQ);
                        if (args.size() < 2){
方块君's avatar
方块君 committed
53
54
                            CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_usage_1);
                            CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_usage_3);
alt3ri's avatar
alt3ri committed
55
56
                            return;
                        }
57
                        if (nextLevel >= 16){ 
方块君's avatar
方块君 committed
58
                            CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_lower_16);
alt3ri's avatar
alt3ri committed
59
60
61
62
63
64
65
66
67
68
                            return;
                        }
                            if (skillId == skillIdNorAtk){ 
                            // Upgrade skill
                            avatar.getSkillLevelMap().put(skillIdNorAtk, nextLevel);
                            avatar.save();
                
                            // Packet
                            sender.sendPacket(new PacketAvatarSkillChangeNotify(avatar, skillIdNorAtk, currentLevelNorAtk, nextLevel));
                            sender.sendPacket(new PacketAvatarSkillUpgradeRsp(avatar, skillIdNorAtk, currentLevelNorAtk, nextLevel));
69
                            CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_set_atk.replace("{level}", Integer.toString(nextLevel)));
alt3ri's avatar
alt3ri committed
70
71
72
73
74
75
76
77
78
                        }    
                        if (skillId == skillIdE){ 
                            // Upgrade skill
                            avatar.getSkillLevelMap().put(skillIdE, nextLevel);
                            avatar.save();
                
                            // Packet
                            sender.sendPacket(new PacketAvatarSkillChangeNotify(avatar, skillIdE, currentLevelE, nextLevel));
                            sender.sendPacket(new PacketAvatarSkillUpgradeRsp(avatar, skillIdE, currentLevelE, nextLevel));
79
                            CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_set_e.replace("{level}", Integer.toString(nextLevel)));
alt3ri's avatar
alt3ri committed
80
81
82
83
84
85
86
87
88
                        }
                        if (skillId == skillIdQ){ 
                            // Upgrade skill
                            avatar.getSkillLevelMap().put(skillIdQ, nextLevel);
                            avatar.save();
                
                            // Packet
                            sender.sendPacket(new PacketAvatarSkillChangeNotify(avatar, skillIdQ, currentLevelQ, nextLevel));
                            sender.sendPacket(new PacketAvatarSkillUpgradeRsp(avatar, skillIdQ, currentLevelQ, nextLevel));
89
                            CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_set_q.replace("{level}", Integer.toString(nextLevel)));
alt3ri's avatar
alt3ri committed
90
91
92
                        }       
                                
                    } catch (NumberFormatException ignored) {
方块君's avatar
方块君 committed
93
                        CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_invalid_skill_id);
alt3ri's avatar
alt3ri committed
94
95
96
                        return;
                    }
                
xtaodada's avatar
xtaodada committed
97
98
99
100
                break;
            case "n": case "e": case "q":
                try {
                    EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
101
                    Avatar avatar = entity.getAvatar();
xtaodada's avatar
xtaodada committed
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
                    AvatarSkillDepotData SkillDepot = avatar.getData().getSkillDepot();
                    int skillId;
                    switch (cmdSwitch) {
                        default:
                            skillId = SkillDepot.getSkills().get(0);
                            break;
                        case "e":
                            skillId = SkillDepot.getSkills().get(1);
                            break;
                        case "q":
                            skillId = SkillDepot.getEnergySkill();
                            break;
                    }
                    int nextLevel = Integer.parseInt(args.get(1));
                    int currentLevel = avatar.getSkillLevelMap().get(skillId);
                    if (args.size() < 1){
方块君's avatar
方块君 committed
118
                        CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_usage_2);
xtaodada's avatar
xtaodada committed
119
120
                        return;
                    }
121
                    if (nextLevel >= 16){
方块君's avatar
方块君 committed
122
                        CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_lower_16);
xtaodada's avatar
xtaodada committed
123
124
125
126
127
128
129
130
                        return;
                    }
                    // Upgrade skill
                    avatar.getSkillLevelMap().put(skillId, nextLevel);
                    avatar.save();
                    // Packet
                    sender.sendPacket(new PacketAvatarSkillChangeNotify(avatar, skillId, currentLevel, nextLevel));
                    sender.sendPacket(new PacketAvatarSkillUpgradeRsp(avatar, skillId, currentLevel, nextLevel));
131
                    CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_set_this.replace("{level}", Integer.toString(nextLevel)));
xtaodada's avatar
xtaodada committed
132
                } catch (NumberFormatException ignored) {
方块君's avatar
方块君 committed
133
                    CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_invalid_talent_level);
xtaodada's avatar
xtaodada committed
134
135
                    return;
                }
alt3ri's avatar
alt3ri committed
136
137
138
                break;
            case "getid":           
                    EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
139
                    Avatar avatar = entity.getAvatar(); 
alt3ri's avatar
alt3ri committed
140
141
142
                    int skillIdNorAtk = avatar.getData().getSkillDepot().getSkills().get(0);
                    int skillIdE = avatar.getData().getSkillDepot().getSkills().get(1);
                    int skillIdQ = avatar.getData().getSkillDepot().getEnergySkill();
143
144
145
146

                    CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_normal_attack_id.replace("{id}", Integer.toString(skillIdNorAtk)));
                    CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_e_skill_id.replace("{id}", Integer.toString(skillIdE)));
                    CommandHandler.sendMessage(sender, Grasscutter.getLanguage().Talent_q_skill_id.replace("{id}", Integer.toString(skillIdQ)));
alt3ri's avatar
alt3ri committed
147
148
149
150
                break;
        }
    }
}