mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-01-23 23:53:21 +08:00
Add PlayerLevelStatueEvent
& PlayerUseSkillEvent
This commit is contained in:
parent
48439e7e5d
commit
e3f15bca47
@ -18,12 +18,14 @@ import emu.grasscutter.net.proto.AbilityMetaSetKilledStateOuterClass.AbilityMeta
|
|||||||
import emu.grasscutter.net.proto.AbilityScalarTypeOuterClass.AbilityScalarType;
|
import emu.grasscutter.net.proto.AbilityScalarTypeOuterClass.AbilityScalarType;
|
||||||
import emu.grasscutter.net.proto.AbilityScalarValueEntryOuterClass.AbilityScalarValueEntry;
|
import emu.grasscutter.net.proto.AbilityScalarValueEntryOuterClass.AbilityScalarValueEntry;
|
||||||
import emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction;
|
import emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction;
|
||||||
|
import emu.grasscutter.server.event.player.PlayerUseSkillEvent;
|
||||||
import io.netty.util.concurrent.FastThreadLocalThread;
|
import io.netty.util.concurrent.FastThreadLocalThread;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.concurrent.*;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.reflections.Reflections;
|
import org.reflections.Reflections;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
public final class AbilityManager extends BasePlayerManager {
|
public final class AbilityManager extends BasePlayerManager {
|
||||||
private static final HashMap<AbilityModifierAction.Type, AbilityActionHandler> actionHandlers =
|
private static final HashMap<AbilityModifierAction.Type, AbilityActionHandler> actionHandlers =
|
||||||
new HashMap<>();
|
new HashMap<>();
|
||||||
@ -263,7 +265,8 @@ public final class AbilityManager extends BasePlayerManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if the caster matches the player.
|
// Check if the caster matches the player.
|
||||||
if (player.getTeamManager().getCurrentAvatarEntity().getId() != casterId) {
|
var currentAvatar = player.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
if (currentAvatar == null || currentAvatar.getId() != casterId) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -272,6 +275,11 @@ public final class AbilityManager extends BasePlayerManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Invoke PlayerUseSkillEvent.
|
||||||
|
var event = new PlayerUseSkillEvent(player,
|
||||||
|
skillData, currentAvatar.getAvatar());
|
||||||
|
if (!event.call()) return;
|
||||||
|
|
||||||
// Check if the skill is an elemental burst.
|
// Check if the skill is an elemental burst.
|
||||||
if (skillData.getCostElemVal() <= 0) {
|
if (skillData.getCostElemVal() <= 0) {
|
||||||
return;
|
return;
|
||||||
|
@ -15,6 +15,7 @@ import emu.grasscutter.game.props.PlayerProperty;
|
|||||||
import emu.grasscutter.game.quest.enums.QuestContent;
|
import emu.grasscutter.game.quest.enums.QuestContent;
|
||||||
import emu.grasscutter.net.proto.ChangeHpReasonOuterClass.ChangeHpReason;
|
import emu.grasscutter.net.proto.ChangeHpReasonOuterClass.ChangeHpReason;
|
||||||
import emu.grasscutter.net.proto.PropChangeReasonOuterClass.PropChangeReason;
|
import emu.grasscutter.net.proto.PropChangeReasonOuterClass.PropChangeReason;
|
||||||
|
import emu.grasscutter.server.event.player.PlayerLevelStatueEvent;
|
||||||
import emu.grasscutter.server.packet.send.PacketEntityFightPropChangeReasonNotify;
|
import emu.grasscutter.server.packet.send.PacketEntityFightPropChangeReasonNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify;
|
import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketLevelupCityRsp;
|
import emu.grasscutter.server.packet.send.PacketLevelupCityRsp;
|
||||||
@ -303,5 +304,8 @@ public class SotSManager extends BasePlayerManager {
|
|||||||
player.sendPacket(
|
player.sendPacket(
|
||||||
new PacketLevelupCityRsp(
|
new PacketLevelupCityRsp(
|
||||||
sceneId, cityInfo.getLevel(), cityId, cityInfo.getNumCrystal(), areaId, 0));
|
sceneId, cityInfo.getLevel(), cityId, cityInfo.getNumCrystal(), areaId, 0));
|
||||||
|
|
||||||
|
// Call PlayerLevelStatueEvent.
|
||||||
|
new PlayerLevelStatueEvent(this.getPlayer(), cityInfo, sceneId, areaId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
package emu.grasscutter.server.event.player;
|
||||||
|
|
||||||
|
import emu.grasscutter.game.city.CityInfoData;
|
||||||
|
import emu.grasscutter.game.player.Player;
|
||||||
|
import emu.grasscutter.server.event.types.PlayerEvent;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public final class PlayerLevelStatueEvent extends PlayerEvent {
|
||||||
|
private final CityInfoData city;
|
||||||
|
private final int sceneId, areaId;
|
||||||
|
|
||||||
|
public PlayerLevelStatueEvent(Player player, CityInfoData city, int sceneId, int areaId) {
|
||||||
|
super(player);
|
||||||
|
|
||||||
|
this.city = city;
|
||||||
|
this.sceneId = sceneId;
|
||||||
|
this.areaId = areaId;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package emu.grasscutter.server.event.player;
|
||||||
|
|
||||||
|
import emu.grasscutter.data.excels.avatar.AvatarSkillData;
|
||||||
|
import emu.grasscutter.game.avatar.Avatar;
|
||||||
|
import emu.grasscutter.game.player.Player;
|
||||||
|
import emu.grasscutter.server.event.Cancellable;
|
||||||
|
import emu.grasscutter.server.event.types.PlayerEvent;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public final class PlayerUseSkillEvent extends PlayerEvent implements Cancellable {
|
||||||
|
private final AvatarSkillData skillData;
|
||||||
|
private final Avatar avatar;
|
||||||
|
|
||||||
|
public PlayerUseSkillEvent(Player player, AvatarSkillData skillData, Avatar avatar) {
|
||||||
|
super(player);
|
||||||
|
|
||||||
|
this.skillData = skillData;
|
||||||
|
this.avatar = avatar;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return {@code true} if the skill is an elemental burst.
|
||||||
|
*/
|
||||||
|
public boolean isElementalBurst() {
|
||||||
|
return this.getSkillData().getCostElemVal() <= 0;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user