From 2f792c88a2bd5c4ec4acd0b4a4a3d9b294e565b3 Mon Sep 17 00:00:00 2001 From: Tooze Date: Wed, 10 Jun 2026 03:11:30 -0400 Subject: [PATCH] ..... lets not talk about it --- .../arena/npcs/PenanceFighterNPC.kt | 43 ++++++++++++---- .../arena/npcs/PenanceHealerNPC.kt | 46 ++++++++++++----- .../arena/npcs/PenanceRangerNPC.kt | 51 +++++++++++++++---- .../arena/npcs/PenanceRunnerNPC.kt | 4 ++ 4 files changed, 111 insertions(+), 33 deletions(-) diff --git a/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceFighterNPC.kt b/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceFighterNPC.kt index 6631d3cf7..8721fd92f 100644 --- a/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceFighterNPC.kt +++ b/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceFighterNPC.kt @@ -14,19 +14,30 @@ import core.game.node.entity.combat.CombatStyle import core.game.node.entity.npc.NPC import core.game.node.entity.npc.NPCBehavior import core.game.node.entity.player.Player +import core.game.node.entity.skill.Skills +import core.game.world.update.flag.context.Animation import org.rs09.consts.NPCs val PENANCE_FIGHTER_IDS = listOf( //NPCs.PENANCE_FIGHTER_5040, //tutorial - NPCs.PENANCE_FIGHTER_5044, - NPCs.PENANCE_FIGHTER_5045, - NPCs.PENANCE_FIGHTER_5213, - NPCs.PENANCE_FIGHTER_5214, - NPCs.PENANCE_FIGHTER_5215, - NPCs.PENANCE_FIGHTER_5216, - NPCs.PENANCE_FIGHTER_5217, - NPCs.PENANCE_FIGHTER_5218, - NPCs.PENANCE_FIGHTER_5219) + NPCs.PENANCE_FIGHTER_5044,NPCs.PENANCE_FIGHTER_5045,NPCs.PENANCE_FIGHTER_5213, + NPCs.PENANCE_FIGHTER_5214,NPCs.PENANCE_FIGHTER_5215,NPCs.PENANCE_FIGHTER_5216, + NPCs.PENANCE_FIGHTER_5217,NPCs.PENANCE_FIGHTER_5218,NPCs.PENANCE_FIGHTER_5219) + +data class PenanceFighterDefinition(val id: Int,val hp: Int,val attack: Int,val strength: Int, val defence: Int, val range: Int, val magic: Int){ + companion object { val BY_ID = PENANCE_FIGHTER_DEFINITIONS.associateBy { it.id } } +} +val PENANCE_FIGHTER_DEFINITIONS = listOf( + PenanceFighterDefinition(NPCs.PENANCE_FIGHTER_5044, 28, 26, 26, 25, 1, 1), + PenanceFighterDefinition(NPCs.PENANCE_FIGHTER_5045, 29, 28, 29, 27, 1, 1), + PenanceFighterDefinition(NPCs.PENANCE_FIGHTER_5213, 32, 33, 32, 34, 1, 1), + PenanceFighterDefinition(NPCs.PENANCE_FIGHTER_5214, 37, 36, 38, 37, 1, 1), + PenanceFighterDefinition(NPCs.PENANCE_FIGHTER_5215, 38, 41, 43, 44, 1, 1), + PenanceFighterDefinition(NPCs.PENANCE_FIGHTER_5216, 49, 50, 48, 48, 1, 1), + PenanceFighterDefinition(NPCs.PENANCE_FIGHTER_5217, 50, 56, 55, 52, 1, 1), + PenanceFighterDefinition(NPCs.PENANCE_FIGHTER_5218, 55, 60, 61, 62, 1, 1), + PenanceFighterDefinition(NPCs.PENANCE_FIGHTER_5219, 56, 71, 73, 66, 1, 1), +) class PenanceFighterNPC : NPCBehavior(*PENANCE_FIGHTER_IDS.toIntArray()) { override fun canBeAttackedBy(self: NPC, attacker: Entity, style: CombatStyle, shouldSendMessage: Boolean): Boolean { @@ -66,6 +77,20 @@ class PenanceFighterNPC : NPCBehavior(*PENANCE_FIGHTER_IDS.toIntArray()) { self.properties.combatPulse.style = CombatStyle.MELEE self.isAggressive = true + self.properties.defenceAnimation = Animation(5096) + self.properties.attackAnimation = Animation(5097) + self.properties.deathAnimation = Animation(5098) + self.properties.attackSpeed = 4 + + val definition = PenanceFighterDefinition.BY_ID[self.id] ?: return + + self.getSkills().setStaticLevel(Skills.ATTACK, definition.attack) + self.getSkills().setStaticLevel(Skills.STRENGTH, definition.strength) + self.getSkills().setStaticLevel(Skills.DEFENCE, definition.defence) + self.getSkills().setStaticLevel(Skills.RANGE, definition.range) + self.getSkills().setStaticLevel(Skills.MAGIC, definition.magic) + self.getSkills().setStaticLevel(Skills.HITPOINTS, definition.hp) + } override fun onDeathFinished(self: NPC, killer: Entity) { diff --git a/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceHealerNPC.kt b/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceHealerNPC.kt index 71f033e46..18961ca42 100644 --- a/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceHealerNPC.kt +++ b/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceHealerNPC.kt @@ -1,30 +1,37 @@ package content.minigame.barbassault.arena.npcs -import content.minigame.barbassault.BarbRole import content.minigame.barbassault.arena.BarbAssEvent import content.minigame.barbassault.arena.PenanceType import content.minigame.barbassault.getBASession import core.game.node.entity.Entity -import core.game.node.entity.combat.CombatStyle import core.game.node.entity.npc.NPC import core.game.node.entity.npc.NPCBehavior import core.game.node.entity.player.Player import core.game.node.entity.skill.Skills -import core.game.system.config.NPCConfigParser +import core.game.world.update.flag.context.Animation import org.rs09.consts.NPCs val PENANCE_HEALER_IDS = intArrayOf( //NPCs.PENANCE_HEALER_5043,//tut - NPCs.PENANCE_HEALER_5238, - NPCs.PENANCE_HEALER_5239, - NPCs.PENANCE_HEALER_5240, - NPCs.PENANCE_HEALER_5241, - NPCs.PENANCE_HEALER_5242, - NPCs.PENANCE_HEALER_5243, - NPCs.PENANCE_HEALER_5244, - NPCs.PENANCE_HEALER_5245, - NPCs.PENANCE_HEALER_5246 + NPCs.PENANCE_HEALER_5238,NPCs.PENANCE_HEALER_5239,NPCs.PENANCE_HEALER_5240, + NPCs.PENANCE_HEALER_5241,NPCs.PENANCE_HEALER_5242,NPCs.PENANCE_HEALER_5243, + NPCs.PENANCE_HEALER_5244,NPCs.PENANCE_HEALER_5245,NPCs.PENANCE_HEALER_5246 ) +data class PenanceHealerDefinition(val id: Int,val hp: Int,val attack: Int,val strength: Int, val defence: Int, val range: Int, val magic: Int){ + companion object { val BY_ID = PENANCE_HEALER_DEFINITIONS.associateBy { it.id } } +} +val PENANCE_HEALER_DEFINITIONS = listOf( + PenanceHealerDefinition(NPCs.PENANCE_HEALER_5238, 27, 9, 8, 9, 1, 1 ), + PenanceHealerDefinition(NPCs.PENANCE_HEALER_5239, 32, 13, 15, 14, 1, 1 ), + PenanceHealerDefinition(NPCs.PENANCE_HEALER_5240, 37, 20, 18, 19, 1, 1 ), + PenanceHealerDefinition(NPCs.PENANCE_HEALER_5241, 43, 22, 23, 21, 1, 1 ), + PenanceHealerDefinition(NPCs.PENANCE_HEALER_5242, 49, 26, 27, 25, 1, 1 ), + PenanceHealerDefinition(NPCs.PENANCE_HEALER_5243, 55, 30, 32, 28, 1, 1 ), + PenanceHealerDefinition(NPCs.PENANCE_HEALER_5244, 60, 33, 36, 34, 1, 1 ), + PenanceHealerDefinition(NPCs.PENANCE_HEALER_5245, 67, 40, 38, 36, 1, 1 ), + PenanceHealerDefinition(NPCs.PENANCE_HEALER_5246, 76, 40, 44, 38, 1, 1 ), +) + class PenanceHealerNPC : NPCBehavior(*PENANCE_HEALER_IDS) { override fun getXpMultiplier(self: NPC, attacker: Entity): Double { return 0.0 @@ -35,8 +42,19 @@ class PenanceHealerNPC : NPCBehavior(*PENANCE_HEALER_IDS) { self.isWalks = true self.walkRadius = 24 self.isRespawn = false - // self.isIgnoreAttackRestrictions(self) - //self.getSkills().setStaticLevel(Skills.HITPOINTS,15) + + self.properties.defenceAnimation = Animation(5105) + self.properties.deathAnimation = Animation(5106) + self.properties.attackAnimation = Animation(5107) + + val definition = PenanceHealerDefinition.BY_ID[self.id] ?: return + + self.getSkills().setStaticLevel(Skills.ATTACK, definition.attack) + self.getSkills().setStaticLevel(Skills.STRENGTH, definition.strength) + self.getSkills().setStaticLevel(Skills.DEFENCE, definition.defence) + self.getSkills().setStaticLevel(Skills.RANGE, definition.range) + self.getSkills().setStaticLevel(Skills.MAGIC, definition.magic) + self.getSkills().setStaticLevel(Skills.HITPOINTS, definition.hp) } //sendMessage(player,"that's the wrong type of poisoned food to use! Penalty!") diff --git a/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceRangerNPC.kt b/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceRangerNPC.kt index 777f9b1ba..fca873663 100644 --- a/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceRangerNPC.kt +++ b/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceRangerNPC.kt @@ -4,6 +4,8 @@ import content.minigame.barbassault.BarbRole import content.minigame.barbassault.arena.BarbAssEvent import content.minigame.barbassault.arena.BACombatValidation import content.minigame.barbassault.arena.PenanceType +import content.minigame.barbassault.arenas.monsters.PENANCE_FIGHTER_DEFINITIONS +import content.minigame.barbassault.arenas.monsters.PenanceFighterDefinition import content.minigame.barbassault.getBASession import core.api.* import core.api.getItemFromEquipment @@ -13,21 +15,33 @@ import core.game.node.entity.combat.CombatStyle import core.game.node.entity.npc.NPC import core.game.node.entity.npc.NPCBehavior import core.game.node.entity.player.Player +import core.game.node.entity.skill.Skills +import core.game.world.update.flag.context.Animation import core.game.world.update.flag.context.Graphics import org.rs09.consts.NPCs //20730 = rangers cast val PENANCE_RANGER_IDS = listOf( - NPCs.PENANCE_RANGER_5041, // tut - NPCs.PENANCE_RANGER_5229, - NPCs.PENANCE_RANGER_5230, - NPCs.PENANCE_RANGER_5231, - NPCs.PENANCE_RANGER_5232, - NPCs.PENANCE_RANGER_5233, - NPCs.PENANCE_RANGER_5234, - NPCs.PENANCE_RANGER_5235, - NPCs.PENANCE_RANGER_5236, - NPCs.PENANCE_RANGER_5237 + // NPCs.PENANCE_RANGER_5041, // tut + NPCs.PENANCE_RANGER_5229,NPCs.PENANCE_RANGER_5230,NPCs.PENANCE_RANGER_5231, + NPCs.PENANCE_RANGER_5232,NPCs.PENANCE_RANGER_5233,NPCs.PENANCE_RANGER_5234, + NPCs.PENANCE_RANGER_5235,NPCs.PENANCE_RANGER_5236,NPCs.PENANCE_RANGER_5237 ) + +data class PenanceRangerDefinition(val id: Int,val hp: Int,val attack: Int,val strength: Int, val defence: Int, val range: Int, val magic: Int){ + companion object { val BY_ID = PENANCE_RANGER_DEFINITIONS.associateBy { it.id } } +} +val PENANCE_RANGER_DEFINITIONS = listOf( + PenanceRangerDefinition(NPCs.PENANCE_RANGER_5229, 20, 22, 1, 21, 23, 1), + PenanceRangerDefinition(NPCs.PENANCE_RANGER_5230, 28, 27, 1, 29, 24, 1), + PenanceRangerDefinition(NPCs.PENANCE_RANGER_5231, 29, 32, 1, 33, 34, 1), + PenanceRangerDefinition(NPCs.PENANCE_RANGER_5232, 34, 41, 1, 42, 40, 1), + PenanceRangerDefinition(NPCs.PENANCE_RANGER_5233, 41, 44, 1, 46, 45, 1), + PenanceRangerDefinition(NPCs.PENANCE_RANGER_5234, 50, 51, 1, 54, 52, 1), + PenanceRangerDefinition(NPCs.PENANCE_RANGER_5235, 50, 63, 1, 61, 62, 1), + PenanceRangerDefinition(NPCs.PENANCE_RANGER_5236, 54, 69, 1, 68, 70, 1), + PenanceRangerDefinition(NPCs.PENANCE_RANGER_5237, 58, 79, 1, 80, 78, 1), +) + class PenanceRangerNPC : NPCBehavior(*PENANCE_RANGER_IDS.toIntArray()) { override fun canBeAttackedBy(self: NPC, attacker: Entity, style: CombatStyle, shouldSendMessage: Boolean): Boolean { if (attacker is Player && getItemFromEquipment(attacker, EquipmentSlot.CAPE)?.id != 10556) { @@ -60,6 +74,23 @@ class PenanceRangerNPC : NPCBehavior(*PENANCE_RANGER_IDS.toIntArray()) { self.definition.combatDistance = 8 self.properties.combatPulse.style = CombatStyle.RANGE self.isAggressive = true + + self.properties.defenceAnimation = Animation(5396) + self.properties.attackAnimation = Animation(5395) + self.properties.rangeAnimation = Animation(5395) + self.properties.deathAnimation = Animation(5397) + self.properties.attackSpeed = 4 + + val definition = PenanceRangerDefinition.BY_ID[self.id] ?: return + + self.getSkills().setStaticLevel(Skills.ATTACK, definition.attack) + self.getSkills().setStaticLevel(Skills.STRENGTH, definition.strength) + self.getSkills().setStaticLevel(Skills.DEFENCE, definition.defence) + self.getSkills().setStaticLevel(Skills.RANGE, definition.range) + self.getSkills().setStaticLevel(Skills.MAGIC, definition.magic) + self.getSkills().setStaticLevel(Skills.HITPOINTS, definition.hp) + + } override fun onDeathFinished(self: NPC, killer: Entity) { diff --git a/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceRunnerNPC.kt b/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceRunnerNPC.kt index 26b370be5..00bb665cc 100644 --- a/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceRunnerNPC.kt +++ b/Server/src/main/content/minigame/barbassault/arena/npcs/PenanceRunnerNPC.kt @@ -19,6 +19,7 @@ import core.game.node.item.GroundItemManager import core.game.node.entity.player.Player import core.game.world.map.Location import core.game.world.map.RegionManager +import core.game.world.update.flag.context.Animation import kotlin.math.abs import kotlin.math.max @@ -73,6 +74,9 @@ class PenanceRunnerNPC : NPCBehavior(*PENANCE_RUNNER_IDS.toIntArray()) { self.setAttribute(MODE, RunnerMode.RANDOM_WALKING) self.setAttribute(MODE_TICKS, (0..4).random()) self.setAttribute(HUNT_TICKS, (0..2).random()) + + self.properties.defenceAnimation = Animation(5101) + self.properties.deathAnimation = Animation(5106) } override fun tick(self: NPC): Boolean {