Fixed softlock in Priest in Peril and The Fremennik Trials
This commit is contained in:
+4
-4
@@ -43,22 +43,22 @@ class ChieftanBrundt(player: Player? = null) : DialoguePlugin(player){
|
||||
stage = 500
|
||||
return true
|
||||
}
|
||||
else if(player.getAttribute("fremtrials:votes",0) >= 7){
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0 && player.getAttribute("fremtrials:votes",0) >= 7) {
|
||||
npcl(FacialExpression.HAPPY," Greetings again outerlander! How goes your attempts to gain votes with the council of elders?")
|
||||
stage = 545
|
||||
return true
|
||||
}
|
||||
else if(player.getAttribute("fremtrials:votes",0) in 3..6){
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0 && player.getAttribute("fremtrials:votes",0) in 3..6) {
|
||||
npcl(FacialExpression.HAPPY," Greetings again outerlander! How goes your attempts to gain votes with the council of elders?")
|
||||
stage = 540
|
||||
return true
|
||||
}
|
||||
else if(player.getAttribute("fremtrials:votes",0) == 1){
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0 && player.getAttribute("fremtrials:votes",0) == 1) {
|
||||
npcl(FacialExpression.HAPPY," Greetings again outerlander! How goes your attempts to gain votes with the council of elders?")
|
||||
stage = 535
|
||||
return true
|
||||
}
|
||||
else if(player.getAttribute("fremtrials:votes",-1) == 0){
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0 && player.getAttribute("fremtrials:votes",-1) == 0) {
|
||||
npcl(FacialExpression.HAPPY," Greetings again outerlander! How goes your attempts to gain votes with the council of elders?")
|
||||
stage = 530
|
||||
return true
|
||||
|
||||
+3
-2
@@ -1,6 +1,7 @@
|
||||
package content.region.fremennik.rellekka.quest.thefremenniktrials
|
||||
|
||||
import core.api.addItem
|
||||
import core.api.getQuestStage
|
||||
import core.api.removeItem
|
||||
import core.game.node.entity.impl.Animator
|
||||
import core.game.node.entity.npc.NPC
|
||||
@@ -56,8 +57,8 @@ class ManniDialogue(player: Player? = null) : core.game.dialogue.DialoguePlugin(
|
||||
return true
|
||||
}
|
||||
}
|
||||
else if(player?.getAttribute("fremtrials:manni-vote",false) == true){
|
||||
npc("e have my vote!")
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0 && player?.getAttribute("fremtrials:manni-vote",false) == true) {
|
||||
npc("Ye have my vote!")
|
||||
stage = 1000
|
||||
return true
|
||||
}
|
||||
|
||||
+1
-1
@@ -49,7 +49,7 @@ class OlafTheBard(player: Player? = null) : DialoguePlugin(player){
|
||||
stage = 98
|
||||
return true
|
||||
}
|
||||
else if(player.questRepository.hasStarted(Quests.THE_FREMENNIK_TRIALS)){
|
||||
else if(getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0){
|
||||
npc("Hello? Yes? You want something outerlander?")
|
||||
stage = 0
|
||||
return true
|
||||
|
||||
+2
-2
@@ -65,7 +65,7 @@ class PeerTheSeerDialogue(player: Player? = null) : core.game.dialogue.DialogueP
|
||||
stage = 110
|
||||
return true
|
||||
}
|
||||
else if(player.getAttribute("fremtrials:peer-vote",false)){
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0 && player.getAttribute("fremtrials:peer-vote",false)) {
|
||||
npcl(core.game.dialogue.FacialExpression.SAD,"Uuuh... What was that dark presence I felt?")
|
||||
stage = 120
|
||||
return true
|
||||
@@ -75,7 +75,7 @@ class PeerTheSeerDialogue(player: Player? = null) : core.game.dialogue.DialogueP
|
||||
stage = 150
|
||||
return true
|
||||
}
|
||||
else if(player.questRepository.hasStarted(Quests.THE_FREMENNIK_TRIALS)){
|
||||
else if(getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0){
|
||||
npcl(core.game.dialogue.FacialExpression.SAD,"Uuuh... What was that dark presence I felt?")
|
||||
stage = 50
|
||||
return true
|
||||
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
package content.region.fremennik.rellekka.quest.thefremenniktrials
|
||||
|
||||
import content.data.Quests
|
||||
import core.api.*
|
||||
import core.game.node.entity.impl.Animator
|
||||
import core.game.node.entity.player.Player
|
||||
@@ -102,7 +103,7 @@ class SeersHouseListeners : InteractionListener {
|
||||
if(!player.getAttribute("PeerStarted",false)){
|
||||
sendDialogue(player,"You should probably talk to the owner of this home.")
|
||||
}
|
||||
if(getAttribute(player, "fremtrials:peer-vote", false))
|
||||
if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0 && getAttribute(player, "fremtrials:peer-vote", false))
|
||||
{
|
||||
sendDialogue(player, "I don't need to go through that again.")
|
||||
return@on true
|
||||
|
||||
+3
-2
@@ -1,6 +1,7 @@
|
||||
package content.region.fremennik.rellekka.quest.thefremenniktrials
|
||||
|
||||
import core.api.addItem
|
||||
import core.api.getQuestStage
|
||||
import core.api.removeItem
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.item.Item
|
||||
@@ -37,7 +38,7 @@ class SigliTheHuntsman(player: Player? = null) : DialoguePlugin(player){
|
||||
stage = 150
|
||||
return true
|
||||
}
|
||||
else if(player?.getAttribute("fremtrials:sigli-vote",false)!!){
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0 && player?.getAttribute("fremtrials:sigli-vote",false)!!) {
|
||||
npc("You have my vote!")
|
||||
stage = 1000
|
||||
return true
|
||||
@@ -52,7 +53,7 @@ class SigliTheHuntsman(player: Player? = null) : DialoguePlugin(player){
|
||||
stage = 180
|
||||
return true
|
||||
}
|
||||
else if(player.questRepository.hasStarted(Quests.THE_FREMENNIK_TRIALS)){
|
||||
else if(getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0){
|
||||
npc("What do you want outerlander?")
|
||||
stage = 0
|
||||
return true
|
||||
|
||||
+3
-2
@@ -1,6 +1,7 @@
|
||||
package content.region.fremennik.rellekka.quest.thefremenniktrials
|
||||
|
||||
import core.api.addItem
|
||||
import core.api.getQuestStage
|
||||
import core.api.removeItem
|
||||
import core.game.dialogue.DialoguePlugin
|
||||
import core.game.dialogue.FacialExpression
|
||||
@@ -28,7 +29,7 @@ class SigmundDialogue (player: Player? = null) : DialoguePlugin(player) {
|
||||
stage = 50
|
||||
return true
|
||||
}
|
||||
else if(!player.questRepository.hasStarted(Quests.THE_FREMENNIK_TRIALS)){
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) <= 0) {
|
||||
playerl(FacialExpression.HAPPY,"Hello there!")
|
||||
stage = 60
|
||||
return true
|
||||
@@ -48,7 +49,7 @@ class SigmundDialogue (player: Player? = null) : DialoguePlugin(player) {
|
||||
stage = 25
|
||||
return true
|
||||
}
|
||||
else if(!player?.getAttribute("fremtrials:sigmund-vote",false)!!){
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0 && !player?.getAttribute("fremtrials:sigmund-vote",false)!!) {
|
||||
playerl(FacialExpression.HAPPY,"Hello there!")
|
||||
stage = 1
|
||||
return true
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
package content.region.fremennik.rellekka.quest.thefremenniktrials
|
||||
|
||||
import core.api.addItem
|
||||
import core.api.getQuestStage
|
||||
import core.api.removeItem
|
||||
import core.game.node.entity.player.Player
|
||||
import core.plugin.Initializable
|
||||
@@ -52,7 +53,7 @@ class SwensenTheNavigator(player: Player? = null) : DialoguePlugin(player){
|
||||
stage = 140
|
||||
return true
|
||||
}
|
||||
else if(player.questRepository.hasStarted(Quests.THE_FREMENNIK_TRIALS)){
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0) {
|
||||
player("Hello!")
|
||||
stage = 0
|
||||
return true
|
||||
|
||||
+2
-2
@@ -210,8 +210,8 @@ class TFTInteractionListeners : InteractionListener {
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(SWENSEN_LADDER, IntType.SCENERY, "climb"){ player, _ ->
|
||||
if(!getAttribute(player,"fremtrials:swensen-accepted",false)){
|
||||
on(SWENSEN_LADDER, IntType.SCENERY, "climb-down") { player, _ ->
|
||||
if (!getAttribute(player,"fremtrials:swensen-accepted",false)) {
|
||||
sendNPCDialogue(player,1283,"Where do you think you're going?", core.game.dialogue.FacialExpression.ANGRY)
|
||||
}
|
||||
return@on true
|
||||
|
||||
+4
-3
@@ -1,6 +1,7 @@
|
||||
package content.region.fremennik.rellekka.quest.thefremenniktrials
|
||||
|
||||
import core.api.addItem
|
||||
import core.api.getQuestStage
|
||||
import core.api.removeItem
|
||||
import core.game.node.entity.player.Player
|
||||
import core.plugin.Initializable
|
||||
@@ -45,7 +46,7 @@ class ThorvaldDialogue(player: Player? = null) : core.game.dialogue.DialoguePlug
|
||||
stage = 0
|
||||
return true
|
||||
}
|
||||
else if(player!!.getAttribute("fremtrials:thorvald-vote", false)!!){
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0 && player!!.getAttribute("fremtrials:thorvald-vote", false)!!) {
|
||||
playerl(core.game.dialogue.FacialExpression.FRIENDLY, "So can I count on your vote at the council of elders now Thorvald?")
|
||||
stage = 160
|
||||
return true
|
||||
@@ -55,12 +56,12 @@ class ThorvaldDialogue(player: Player? = null) : core.game.dialogue.DialoguePlug
|
||||
stage = 250
|
||||
return true
|
||||
}
|
||||
else if(!player.questRepository.hasStarted(Quests.THE_FREMENNIK_TRIALS)){
|
||||
else if(getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) == 0){
|
||||
npcl(core.game.dialogue.FacialExpression.ANNOYED, "Leave me be, outerlander. I have nothing to say to the likes of you.")
|
||||
stage = 1000
|
||||
return true
|
||||
}
|
||||
else if (!player!!.getAttribute("fremtrials:thorvald-vote", false)!!) {
|
||||
else if (getQuestStage(player, Quests.THE_FREMENNIK_TRIALS) > 0 && !player!!.getAttribute("fremtrials:thorvald-vote", false)!!) {
|
||||
if (player!!.getAttribute("fremtrials:warrior-accepted", false)!!) {
|
||||
options("What do I have to do again?", "Who is my opponent?", "Can't I do something else?")
|
||||
stage = 100
|
||||
|
||||
+6
-1
@@ -77,7 +77,12 @@ class PriestInPerilUseListener : InteractionListener {
|
||||
}
|
||||
|
||||
onUseWith(IntType.SCENERY, Items.GOLDEN_KEY_2944, Scenery.MONUMENT_3499) { player, used, _ ->
|
||||
if (!getAttribute(player, "priest_in_peril:key", false) && removeItem(player, used)) {
|
||||
// See GL #2112 and sources therein for why we do it this way
|
||||
val hasNeverGrabbedKey = !getAttribute(player, "priest_in_peril:key", false)
|
||||
val needsKeyForQuestStage = getQuestStage(player, Quests.PRIEST_IN_PERIL) <= 15
|
||||
val hasTotallyLostKey = !hasAnItem(player, Items.IRON_KEY_2945, true).exists()
|
||||
val giveNewKey = hasNeverGrabbedKey || (needsKeyForQuestStage && hasTotallyLostKey)
|
||||
if (giveNewKey && removeItem(player, used)) {
|
||||
addItem(player, Items.IRON_KEY_2945)
|
||||
sendMessage(player, "You swap the golden key for the iron key.")
|
||||
setAttribute(player, "/save:priest_in_peril:key", true)
|
||||
|
||||
Reference in New Issue
Block a user