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