Fix issues with regions (#2177)

Luckily, SceneRegion and TriggerExcelConfigData both have group numbers, so we can use those to differentiate regions!
This commit is contained in:
Nazrin 2023-05-31 22:54:21 -07:00 committed by GitHub
parent 19fa9deae7
commit 50db3a20f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -709,7 +709,8 @@ public class Player implements PlayerHook, FieldFetch {
public void onEnterRegion(SceneRegion region) { public void onEnterRegion(SceneRegion region) {
this.getQuestManager().forEachActiveQuest(quest -> { this.getQuestManager().forEachActiveQuest(quest -> {
if (quest.getTriggerData() != null && if (quest.getTriggerData() != null &&
quest.getTriggers().containsKey("ENTER_REGION_"+ region.config_id)) { quest.getTriggers().containsKey("ENTER_REGION_"+ region.config_id) &&
region.getGroupId() == quest.getTriggerData().get("ENTER_REGION_" + region.config_id).getGroupId()) {
// If trigger hasn't been fired yet // If trigger hasn't been fired yet
if (!Boolean.TRUE.equals(quest.getTriggers().put("ENTER_REGION_" + region.config_id, true))) { if (!Boolean.TRUE.equals(quest.getTriggers().put("ENTER_REGION_" + region.config_id, true))) {
this.getSession().send(new PacketServerCondMeetQuestListUpdateNotify()); this.getSession().send(new PacketServerCondMeetQuestListUpdateNotify());
@ -723,7 +724,8 @@ public class Player implements PlayerHook, FieldFetch {
public void onLeaveRegion(SceneRegion region) { public void onLeaveRegion(SceneRegion region) {
this.getQuestManager().forEachActiveQuest(quest -> { this.getQuestManager().forEachActiveQuest(quest -> {
if (quest.getTriggers().containsKey("LEAVE_REGION_" + region.config_id)) { if (quest.getTriggers().containsKey("LEAVE_REGION_" + region.config_id) &&
region.getGroupId() == quest.getTriggerData().get("ENTER_REGION_" + region.config_id).getGroupId()) {
// If trigger hasn't been fired yet // If trigger hasn't been fired yet
if (!Boolean.TRUE.equals(quest.getTriggers().put("LEAVE_REGION_" + region.config_id, true))) { if (!Boolean.TRUE.equals(quest.getTriggers().put("LEAVE_REGION_" + region.config_id, true))) {
this.getSession().send(new PacketServerCondMeetQuestListUpdateNotify()); this.getSession().send(new PacketServerCondMeetQuestListUpdateNotify());