Add PlayerFinishDungeonEvent

This commit is contained in:
KingRainbow44 2023-08-27 23:22:02 -04:00
parent 4f34970005
commit bdd3cbbcd9
No known key found for this signature in database
GPG Key ID: FC2CB64B00D257BE
2 changed files with 34 additions and 19 deletions

View File

@ -3,34 +3,26 @@ package emu.grasscutter.game.dungeons;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.data.GameData; import emu.grasscutter.data.GameData;
import emu.grasscutter.data.common.ItemParamData; import emu.grasscutter.data.common.ItemParamData;
import emu.grasscutter.data.excels.dungeon.DungeonData; import emu.grasscutter.data.excels.dungeon.*;
import emu.grasscutter.data.excels.dungeon.DungeonPassConfigData;
import emu.grasscutter.game.activity.trialavatar.TrialAvatarActivityHandler; import emu.grasscutter.game.activity.trialavatar.TrialAvatarActivityHandler;
import emu.grasscutter.game.dungeons.dungeon_results.BaseDungeonResult; import emu.grasscutter.game.dungeons.dungeon_results.BaseDungeonResult;
import emu.grasscutter.game.dungeons.enums.DungeonPassConditionType; import emu.grasscutter.game.dungeons.enums.DungeonPassConditionType;
import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.game.inventory.GameItem;
import emu.grasscutter.game.player.Player; import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.props.*;
import emu.grasscutter.game.props.ActivityType; import emu.grasscutter.game.quest.enums.*;
import emu.grasscutter.game.props.WatcherTriggerType; import emu.grasscutter.game.world.*;
import emu.grasscutter.game.quest.enums.LogicType;
import emu.grasscutter.game.quest.enums.QuestContent;
import emu.grasscutter.game.world.Position;
import emu.grasscutter.game.world.Scene;
import emu.grasscutter.scripts.constants.EventType; import emu.grasscutter.scripts.constants.EventType;
import emu.grasscutter.scripts.data.ScriptArgs; import emu.grasscutter.scripts.data.ScriptArgs;
import emu.grasscutter.server.packet.send.PacketDungeonWayPointNotify; import emu.grasscutter.server.event.player.PlayerFinishDungeonEvent;
import emu.grasscutter.server.packet.send.PacketGadgetAutoPickDropInfoNotify; import emu.grasscutter.server.packet.send.*;
import emu.grasscutter.utils.Utils; import emu.grasscutter.utils.Utils;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.*;
import it.unimi.dsi.fastutil.ints.IntSet; import lombok.*;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import lombok.Getter; import java.util.*;
import lombok.NonNull; import java.util.stream.*;
import lombok.val;
/** /**
* TODO handle time limits TODO handle respawn points TODO handle team wipes and respawns TODO check * TODO handle time limits TODO handle respawn points TODO handle team wipes and respawns TODO check
@ -288,6 +280,12 @@ public final class DungeonManager {
public void finishDungeon() { public void finishDungeon() {
this.notifyEndDungeon(true); this.notifyEndDungeon(true);
this.endDungeon(BaseDungeonResult.DungeonEndReason.COMPLETED); this.endDungeon(BaseDungeonResult.DungeonEndReason.COMPLETED);
// Call PlayerFinishDungeonEvent.
new PlayerFinishDungeonEvent(
this.getScene().getPlayers(),
this.getScene(), this
).call();
} }
public void quitDungeon() { public void quitDungeon() {

View File

@ -0,0 +1,17 @@
package emu.grasscutter.server.event.player;
import emu.grasscutter.game.dungeons.DungeonManager;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.world.Scene;
import emu.grasscutter.server.event.Event;
import lombok.*;
import java.util.List;
@Getter
@RequiredArgsConstructor
public final class PlayerFinishDungeonEvent extends Event {
private final List<Player> players;
private final Scene dungeon;
private final DungeonManager manager;
}