mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Construction can now be used to fix the ladder to the wilderness beacon
This commit is contained in:
parent
e216a6366f
commit
7d79c9a82a
2 changed files with 61 additions and 17 deletions
|
|
@ -26,27 +26,74 @@ class AFURepairClimbHandler : InteractionListener {
|
||||||
override fun defineListeners() {
|
override fun defineListeners() {
|
||||||
|
|
||||||
on(repairIDs, IntType.SCENERY, "repair"){ player, _ ->
|
on(repairIDs, IntType.SCENERY, "repair"){ player, _ ->
|
||||||
var rco: RepairClimbObject = RepairClimbObject.GWD
|
if (hasRequirement(player, "All Fired Up")){
|
||||||
for(ent in RepairClimbObject.values()) if(ent.destinationDown?.withinDistance(player.location,2) == true || ent.destinationUp?.withinDistance(player.location,2) == true) rco = ent
|
val rco: RepairClimbObject? = getClimbingObject(player)
|
||||||
repair(player,rco)
|
repair(player,rco!!)
|
||||||
return@on true
|
return@on true
|
||||||
}
|
}
|
||||||
|
return@on false
|
||||||
|
}
|
||||||
|
|
||||||
on(climbIDs, IntType.SCENERY, "climb"){ player, node ->
|
on(climbIDs, IntType.SCENERY, "climb"){ player, node ->
|
||||||
var rco: RepairClimbObject = RepairClimbObject.GWD
|
val rco: RepairClimbObject? = getClimbingObject(player)
|
||||||
for(ent in RepairClimbObject.values()) if(ent.destinationDown?.withinDistance(player.location,2) == true || ent.destinationUp?.withinDistance(player.location,2) == true) rco = ent
|
climb(player,rco!!,node.location)
|
||||||
climb(player,rco,node.location)
|
|
||||||
return@on true
|
return@on true
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getClimbingObject(player: Player): RepairClimbObject?{
|
||||||
|
for(ent in RepairClimbObject.values())
|
||||||
|
if(ent.destinationDown?.withinDistance(player.location,2) == true ||
|
||||||
|
ent.destinationUp?.withinDistance(player.location,2) == true){
|
||||||
|
return ent
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
private fun repair(player: Player,rco: RepairClimbObject){
|
private fun repair(player: Player,rco: RepairClimbObject){
|
||||||
|
if (rco == RepairClimbObject.TEMPLE){
|
||||||
|
// You can do this 2 different ways
|
||||||
|
val hasSmithingLevel = getDynLevel(player, Skills.SMITHING) >= 70
|
||||||
|
val hasConstructionLevel = getDynLevel(player, Skills.CONSTRUCTION) >= 59
|
||||||
|
|
||||||
|
if (!hasConstructionLevel && !hasSmithingLevel){
|
||||||
|
sendDialogue(player, "You need level 70 smithing or 59 construction for this.")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val hasHammer = inInventory(player, Items.HAMMER_2347)
|
||||||
|
val hasSmithingItems = hasHammer && inInventory(player, Items.IRON_BAR_2351, 2)
|
||||||
|
val hasConstructionItems = hasHammer && inInventory(player, Items.PLANK_960, 2)
|
||||||
|
|
||||||
|
if (hasSmithingLevel && hasSmithingItems){
|
||||||
|
if (removeItem(player,Item(Items.IRON_BAR_2351, 2))) {
|
||||||
|
setVarbit(player, rco.varbit, 1, true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Only check this if the smithing repair didn't work
|
||||||
|
if (hasConstructionLevel && hasConstructionItems){
|
||||||
|
val nails = NailType.get(player, 4)
|
||||||
|
if (nails != null){
|
||||||
|
if (removeItem(player, Item(Items.PLANK_960, 2)) && removeItem(player, Item(nails.itemId, 4))) {
|
||||||
|
setVarbit(player, rco.varbit, 1, true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var msg = "You need "
|
||||||
|
msg += if (hasSmithingLevel) "a hammer and 2 iron bars" else ""
|
||||||
|
msg += if (hasSmithingLevel && hasConstructionLevel) " or " else ""
|
||||||
|
msg += if (hasConstructionLevel) "a hammer, 2 planks and 4 nails for this." else " for this."
|
||||||
|
sendDialogue(player, msg)
|
||||||
|
return
|
||||||
|
}
|
||||||
val skill = rco.levelRequirement?.first ?: 0
|
val skill = rco.levelRequirement?.first ?: 0
|
||||||
val level = rco.levelRequirement?.second ?: 0
|
val level = rco.levelRequirement?.second ?: 0
|
||||||
if(player.skills.getLevel(skill) < level){
|
if(player.skills.getLevel(skill) < level){
|
||||||
player.dialogueInterpreter.sendDialogue("You need level $level ${Skills.SKILL_NAME[skill]} for this.")
|
player.dialogueInterpreter.sendDialogue("You need level $level ${Skills.SKILL_NAME[skill]} for this.")
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var requiresNeedle = false
|
var requiresNeedle = false
|
||||||
|
|
@ -64,10 +111,7 @@ class AFURepairClimbHandler : InteractionListener {
|
||||||
requiresNeedle = true
|
requiresNeedle = true
|
||||||
arrayOf(Item(Items.JUTE_FIBRE_5931,3))
|
arrayOf(Item(Items.JUTE_FIBRE_5931,3))
|
||||||
}
|
}
|
||||||
|
else -> return
|
||||||
RepairClimbObject.TEMPLE -> {
|
|
||||||
arrayOf(Item(Items.IRON_BAR_2351,2))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(requiresNeedle){
|
if(requiresNeedle){
|
||||||
|
|
@ -75,7 +119,7 @@ class AFURepairClimbHandler : InteractionListener {
|
||||||
player.inventory.remove(*requiredItems)
|
player.inventory.remove(*requiredItems)
|
||||||
if (Random().nextBoolean()) player.inventory.remove(Item(Items.NEEDLE_1733))
|
if (Random().nextBoolean()) player.inventory.remove(Item(Items.NEEDLE_1733))
|
||||||
} else {
|
} else {
|
||||||
player.dialogueInterpreter.sendDialogue("You need a needle and ${requiredItems.map { "${it.amount} ${it.name.toLowerCase()}s" }.toString().replace("[","").replace("]","")} for this.")
|
player.dialogueInterpreter.sendDialogue("You need a needle and ${requiredItems.map { "${it.amount} ${it.name.lowercase()}s" }.toString().replace("[","").replace("]","")} for this.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -89,11 +133,10 @@ class AFURepairClimbHandler : InteractionListener {
|
||||||
}
|
}
|
||||||
player.inventory.remove(*requiredItems)
|
player.inventory.remove(*requiredItems)
|
||||||
} else {
|
} else {
|
||||||
player.dialogueInterpreter.sendDialogue("You need a hammer and ${requiredItems.map { "${it.amount} ${it.name.toLowerCase()}s" }.toString().replace("[","").replace("]","")} for this.")
|
player.dialogueInterpreter.sendDialogue("You need a hammer and ${requiredItems.map { "${it.amount} ${it.name.lowercase()}s" }.toString().replace("[","").replace("]","")} for this.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setVarbit(player, rco.varbit, 1, true)
|
setVarbit(player, rco.varbit, 1, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -105,7 +148,7 @@ class AFURepairClimbHandler : InteractionListener {
|
||||||
DEATH_PLATEAU(5161,Location.create(2949, 3623, 0),Location.create(2954, 3623, 0), Pair(Skills.CONSTRUCTION,42)),
|
DEATH_PLATEAU(5161,Location.create(2949, 3623, 0),Location.create(2954, 3623, 0), Pair(Skills.CONSTRUCTION,42)),
|
||||||
BURTHORPE(5160,Location.create(2941, 3563, 0),Location.create(2934, 3563, 0),Pair(Skills.SMITHING,56)),
|
BURTHORPE(5160,Location.create(2941, 3563, 0),Location.create(2934, 3563, 0),Pair(Skills.SMITHING,56)),
|
||||||
GWD(5163,null,null,Pair(Skills.CRAFTING,60)),
|
GWD(5163,null,null,Pair(Skills.CRAFTING,60)),
|
||||||
TEMPLE(5164,Location.create(2949, 3835, 0),Location.create(2956, 3835, 0),Pair(Skills.SMITHING,64));
|
TEMPLE(5164,Location.create(2949, 3835, 0),Location.create(2956, 3835, 0),Pair(0,0)); // This needs to be handled specially so don't have levels here
|
||||||
|
|
||||||
fun getOtherLocation(player: Player): Location?{
|
fun getOtherLocation(player: Player): Location?{
|
||||||
if(player.location == destinationDown) return destinationUp
|
if(player.location == destinationDown) return destinationUp
|
||||||
|
|
|
||||||
|
|
@ -195,5 +195,6 @@ enum class QuestRequirements (val questName: String, vararg val requirements: Re
|
||||||
SUMMERS_END ("Summer's End", QuestReq(SPIRIT_OF_SUMMER), SkillReq(Skills.FIREMAKING, 47), SkillReq(Skills.HUNTER, 35), SkillReq(Skills.MINING, 45), SkillReq(Skills.PRAYER, 55), SkillReq(Skills.SUMMONING, 23), SkillReq(Skills.WOODCUTTING, 37)),
|
SUMMERS_END ("Summer's End", QuestReq(SPIRIT_OF_SUMMER), SkillReq(Skills.FIREMAKING, 47), SkillReq(Skills.HUNTER, 35), SkillReq(Skills.MINING, 45), SkillReq(Skills.PRAYER, 55), SkillReq(Skills.SUMMONING, 23), SkillReq(Skills.WOODCUTTING, 37)),
|
||||||
SEERGAZE ("Legacy of Seergaze", QuestReq(HALLOWVALE), SkillReq(Skills.AGILITY, 29), SkillReq(Skills.CONSTRUCTION, 20), SkillReq(Skills.CRAFTING, 47), SkillReq(Skills.FIREMAKING, 40), SkillReq(Skills.MAGIC, 49), SkillReq(Skills.MINING, 35), SkillReq(Skills.SLAYER, 31)),
|
SEERGAZE ("Legacy of Seergaze", QuestReq(HALLOWVALE), SkillReq(Skills.AGILITY, 29), SkillReq(Skills.CONSTRUCTION, 20), SkillReq(Skills.CRAFTING, 47), SkillReq(Skills.FIREMAKING, 40), SkillReq(Skills.MAGIC, 49), SkillReq(Skills.MINING, 35), SkillReq(Skills.SLAYER, 31)),
|
||||||
SMOKING_KILLS ("Smoking Kills", QuestReq(RESTLESS_GHOST), QuestReq(ICTHLARIN), SkillReq(Skills.CRAFTING, 25), SkillReq(Skills.SLAYER, 35)),
|
SMOKING_KILLS ("Smoking Kills", QuestReq(RESTLESS_GHOST), QuestReq(ICTHLARIN), SkillReq(Skills.CRAFTING, 25), SkillReq(Skills.SLAYER, 35)),
|
||||||
WHILE_GUTHIX_SLEEPS ("While Guthix Sleeps", SkillReq(Skills.SUMMONING, 23), SkillReq(Skills.HUNTER, 55), SkillReq(Skills.THIEVING, 60), SkillReq(Skills.DEFENCE, 65), SkillReq(Skills.FARMING, 65), SkillReq(Skills.HERBLORE, 65), SkillReq(Skills.MAGIC, 75), QuestReq(DEFENDER_VARROCK), QuestReq(DREAM_MENTOR), QuestReq(SAND), QuestReq(KINGS_RANSOM), QuestReq(LEGEND), QuestReq(MEP_2), QuestReq(PATH_GLOUPHRIE), QuestReq(RFD), QuestReq(SUMMERS_END), QuestReq(SWAN), QuestReq(TEARS_OF_GUTHIX), QuestReq(ZOGRE))
|
WHILE_GUTHIX_SLEEPS ("While Guthix Sleeps", SkillReq(Skills.SUMMONING, 23), SkillReq(Skills.HUNTER, 55), SkillReq(Skills.THIEVING, 60), SkillReq(Skills.DEFENCE, 65), SkillReq(Skills.FARMING, 65), SkillReq(Skills.HERBLORE, 65), SkillReq(Skills.MAGIC, 75), QuestReq(DEFENDER_VARROCK), QuestReq(DREAM_MENTOR), QuestReq(SAND), QuestReq(KINGS_RANSOM), QuestReq(LEGEND), QuestReq(MEP_2), QuestReq(PATH_GLOUPHRIE), QuestReq(RFD), QuestReq(SUMMERS_END), QuestReq(SWAN), QuestReq(TEARS_OF_GUTHIX), QuestReq(ZOGRE)),
|
||||||
|
ALL_FIRED_UP ("All Fired Up", QuestReq(PRIEST), SkillReq(Skills.FIREMAKING, 43))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue