..... lets not talk about it

This commit is contained in:
Tooze 2026-06-10 03:11:30 -04:00
parent 0096a3fdab
commit 2f792c88a2
4 changed files with 111 additions and 33 deletions

View file

@ -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) {

View file

@ -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!")

View file

@ -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) {

View file

@ -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 {