Fixed an issue where lighting a lantern (or other light source) inside a dark area wouldn't be recognised

This commit is contained in:
Ceikry 2022-06-29 09:12:10 +00:00 committed by Ryan
parent a753db5ed7
commit 31ecd20911

View file

@ -1,5 +1,8 @@
package core.game.world.map.zone.impl; package core.game.world.map.zone.impl;
import api.LoginListener;
import api.events.EventHook;
import api.events.UsedWithEvent;
import core.game.component.Component; import core.game.component.Component;
import core.game.content.global.LightSource; import core.game.content.global.LightSource;
import core.game.interaction.Option; import core.game.interaction.Option;
@ -13,14 +16,20 @@ import core.game.system.task.Pulse;
import core.game.world.map.zone.MapZone; import core.game.world.map.zone.MapZone;
import core.game.world.map.zone.RegionZone; import core.game.world.map.zone.RegionZone;
import core.game.world.map.zone.ZoneBorders; import core.game.world.map.zone.ZoneBorders;
import kotlin.Unit;
import org.jetbrains.annotations.NotNull;
import rs09.game.Event;
import rs09.game.node.entity.skill.skillcapeperks.SkillcapePerks; import rs09.game.node.entity.skill.skillcapeperks.SkillcapePerks;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import static api.ContentAPIKt.getItemName;
import static api.ContentAPIKt.runTask;
/** /**
* Handles a dark area. * Handles a dark area.
* @author Emperor * @author Emperor
*/ */
public final class DarkZone extends MapZone { public final class DarkZone extends MapZone implements EventHook<UsedWithEvent>{
/** /**
* The darkness overlay. * The darkness overlay.
@ -128,6 +137,7 @@ public final class DarkZone extends MapZone {
player.getInterfaceManager().openOverlay(new Component(source.getInterfaceId())); player.getInterfaceManager().openOverlay(new Component(source.getInterfaceId()));
} }
} }
e.hook(Event.getUsedWith(), this);
return true; return true;
} }
@ -136,6 +146,7 @@ public final class DarkZone extends MapZone {
if (e instanceof Player) { if (e instanceof Player) {
((Player) e).getInterfaceManager().closeOverlay(); ((Player) e).getInterfaceManager().closeOverlay();
} }
e.unhook(this);
return true; return true;
} }
@ -187,4 +198,14 @@ public final class DarkZone extends MapZone {
} }
return false; return false;
} }
@Override
public void process(@NotNull Entity entity, @NotNull UsedWithEvent event) {
boolean isTinderbox = getItemName(event.getUsed()).equals("Tinderbox") || getItemName(event.getWith()).equals("Tinderbox");
if (isTinderbox && entity instanceof Player) runTask(entity, 2, () -> {
checkDarkArea(entity.asPlayer());
return Unit.INSTANCE;
});
}
} }