mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2026-08-22 19:05:11 -06:00
sessionDestination As work around for session Node travel. some egg cannon work
This commit is contained in:
parent
8a2b160df1
commit
5c93a3fa0e
2 changed files with 74 additions and 11 deletions
|
|
@ -25,6 +25,7 @@ import core.game.system.task.Pulse
|
|||
import core.game.world.GameWorld
|
||||
import core.game.world.map.Direction
|
||||
import core.game.world.map.Location
|
||||
import core.game.world.map.RegionManager
|
||||
import core.game.world.map.zone.ZoneBorders
|
||||
import core.game.world.update.flag.context.Animation
|
||||
import core.tools.Log
|
||||
|
|
@ -105,11 +106,9 @@ class BarbassaultGameArea : InteractionListener, MapArea {
|
|||
EggCannon.openTurretIface(player)
|
||||
return@on true
|
||||
}
|
||||
setDest(IntType.SCENERY,Scenery.EGG_HOPPER_20264){ player,node ->
|
||||
return@setDest Location.create(player.location.x, player.location.y-1, 0)
|
||||
}
|
||||
|
||||
on(Scenery.EGG_HOPPER_20264, IntType.SCENERY, "Load","Look-in") { player, node ->
|
||||
val loc = player.location
|
||||
player.faceLocation(location(loc.x,loc.y+1,0))
|
||||
val optionClicked = player.getAttribute<String>("interact:option")?.lowercase() ?: return@on false
|
||||
when(optionClicked){
|
||||
"Load" -> loadEggHopper(player)
|
||||
|
|
@ -118,6 +117,14 @@ class BarbassaultGameArea : InteractionListener, MapArea {
|
|||
|
||||
return@on true
|
||||
}
|
||||
//wrapperID for hopper
|
||||
on(20267, IntType.SCENERY, "Load","Look-in") { player, node ->
|
||||
sendMessage(player,"hopper")
|
||||
return@on true
|
||||
}
|
||||
setDest(IntType.SCENERY, Scenery.EGG_HOPPER_20264) { player, node ->
|
||||
return@setDest sessionDestination(player as Player,node,Direction.SOUTH)
|
||||
}
|
||||
|
||||
on(Fix_trap_IDs, IntType.SCENERY, "Fix") { player, node ->
|
||||
if (hasTools(player)) { return@on true }
|
||||
|
|
@ -287,6 +294,16 @@ class BarbassaultGameArea : InteractionListener, MapArea {
|
|||
}
|
||||
})
|
||||
}
|
||||
fun sessionDestination(player: Player, node: Node, direction: Direction? = null): Location {
|
||||
val session = player.baSession ?: return node.location
|
||||
val borders = getRegionBorders(session.region.regionId)
|
||||
val base = session.base
|
||||
return Location.create(
|
||||
base.x + node.location.x - borders.southWestX + (direction?.stepX ?: 0),
|
||||
base.y + node.location.y - borders.southWestY + (direction?.stepY ?: 0),
|
||||
base.z
|
||||
)
|
||||
}
|
||||
private fun hasTools(player: Player): Boolean{
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id != DEFENDER_ICON) {return true}
|
||||
val requiredItems = listOf(Items.HAMMER_2347, Items.LOGS_11760)
|
||||
|
|
@ -299,6 +316,7 @@ class BarbassaultGameArea : InteractionListener, MapArea {
|
|||
return false
|
||||
}
|
||||
}
|
||||
|
||||
fun exitMiniGame(player: Player) {
|
||||
// openOverlay(player,493) // work around to actually close interfaces.
|
||||
//player.interfaceManager.closeOverlay()//maybe im doing this wrong.
|
||||
|
|
|
|||
|
|
@ -32,14 +32,21 @@ class EggCannon : ComponentPlugin() {
|
|||
private val easterEggSequence = listOf(56, 38, 26, 26, 56, 56)
|
||||
fun checkEasterEgg(player: Player,button: Int) {
|
||||
currentSequence.add(button)
|
||||
println("Current sequence: $currentSequence + $button")
|
||||
// println("Current sequence: $currentSequence + $button")
|
||||
while(currentSequence.size > easterEggSequence.size) {
|
||||
currentSequence.removeAt(0)
|
||||
}
|
||||
if(currentSequence.takeLast(easterEggSequence.size) == easterEggSequence) {
|
||||
sendMessage(player, "[BlickySwitch] Activated!")
|
||||
//does nothing, just a silly message
|
||||
currentSequence.clear()
|
||||
if (player.isAdmin) { //ADMIN ONLY!
|
||||
val eggHopper = player.baSession?.eggHopper
|
||||
eggHopper?.green = 99
|
||||
eggHopper?.red = 99
|
||||
eggHopper?.blue = 99
|
||||
updateCannonUI(player)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
//END BINKY//
|
||||
|
|
@ -47,7 +54,6 @@ class EggCannon : ComponentPlugin() {
|
|||
data class EggHopperCount(var red: Int = 0,var blue: Int = 0, var green: Int = 0, var yellow: Int = 0 ){
|
||||
fun addEggs(redToAdd: Int = 0, blueToAdd: Int = 0, greenToAdd: Int = 0, yellowToAdd: Int = 0): Map<String, Int> {
|
||||
val added = mutableMapOf<String, Int>()
|
||||
|
||||
val newRed = (red + redToAdd).coerceAtMost(5)
|
||||
added["red"] = newRed - red
|
||||
red = newRed
|
||||
|
|
@ -66,6 +72,21 @@ class EggCannon : ComponentPlugin() {
|
|||
|
||||
return added
|
||||
}
|
||||
fun consumeGreen(): Boolean {
|
||||
if (green <= 0) return false
|
||||
green--
|
||||
return true
|
||||
}
|
||||
fun consumeRed(): Boolean {
|
||||
if (red <= 0) return false
|
||||
red--
|
||||
return true
|
||||
}
|
||||
fun consumeBlue(): Boolean {
|
||||
if (blue <= 0) return false
|
||||
blue--
|
||||
return true
|
||||
}
|
||||
}
|
||||
override fun newInstance(arg: Any?): Plugin<Any> {
|
||||
ComponentDefinition.forId(EggTurret.ID).plugin = this
|
||||
|
|
@ -102,6 +123,7 @@ class EggCannon : ComponentPlugin() {
|
|||
}
|
||||
fun shootNormalEggs(button: Int,player: Player?) {
|
||||
player ?: return
|
||||
val eggHopper = player.baSession?.eggHopper
|
||||
val penanceSets = listOf(
|
||||
"Penance Healer" to EggTurret.pHealerBtns,
|
||||
"Penance Runner" to EggTurret.pRunnerBtns,
|
||||
|
|
@ -110,11 +132,33 @@ class EggCannon : ComponentPlugin() {
|
|||
)
|
||||
for ((name, colors) in penanceSets) {
|
||||
when(button) {
|
||||
colors.green -> { sendMessage(player, "Shoot poison at $name.");return }
|
||||
colors.red -> { sendMessage(player, "Shoot Explosive at $name.");return }
|
||||
colors.blue -> { sendMessage(player, "Shoot Stun at $name.");return }
|
||||
colors.green -> {
|
||||
if (!eggHopper?.consumeGreen()!!) {
|
||||
sendMessage(player, "There are no green eggs in the hopper.")
|
||||
return
|
||||
}
|
||||
sendMessage(player, "Shoot poison at $name.");
|
||||
return
|
||||
}
|
||||
colors.red -> {
|
||||
if (!eggHopper?.consumeRed()!!) {
|
||||
sendMessage(player, "There are no red eggs in the hopper.")
|
||||
return
|
||||
}
|
||||
sendMessage(player, "Shoot Explosive at $name.")
|
||||
return
|
||||
}
|
||||
colors.blue -> {
|
||||
if (!eggHopper?.consumeBlue()!!) {
|
||||
sendMessage(player, "There are no blue eggs in the hopper.")
|
||||
return
|
||||
}
|
||||
sendMessage(player, "Shoot Stun at $name.")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
updateCannonUI(player)
|
||||
}
|
||||
|
||||
fun updateCannonUI(player: Player?){
|
||||
|
|
@ -123,7 +167,7 @@ class EggCannon : ComponentPlugin() {
|
|||
val penances = listOf( EggTurret.pHealer, EggTurret.pRunner, EggTurret.pRanger, EggTurret.pFighter )
|
||||
|
||||
penances.forEach { penance ->
|
||||
val colors = listOf( "green" to penance.green," red" to penance.red, "blue" to penance.blue)
|
||||
val colors = listOf( "green" to penance.green,"red" to penance.red, "blue" to penance.blue)
|
||||
colors.forEach { (colorName, componentId) ->
|
||||
val value = when(colorName) {
|
||||
"green" -> eggHopper.green
|
||||
|
|
@ -165,6 +209,7 @@ class EggCannon : ComponentPlugin() {
|
|||
player ?: return
|
||||
val eggsCount = player.baSession?.eggHopper
|
||||
sendDialogueLines(player,"$eggsCount")
|
||||
sendMessage(player,"$eggsCount")
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue