Regarding CoP progression
Posted: Sat Jan 26, 2013 4:42 pm
tl;dr: Read it, or don't whine about the consequences when they come ^^;
So I've discovered a small issue today, and I wanted to explain it here so that users and server admins aren't taken by surprise. It's going to be the source of at least one complaint.
At some point, SE made some changes to how the mission log for CoP was accessed. I'm not sure when that happened, and the date isn't too terribly important for our purposes.
Someone did come along and fix things eventually so that we could access CoP mission status again, and pretty much everyone assumed it was fixed, and there'd be no issues. As you've probably guessed by now, there are going to be some issues.
The way we handle mission and quest progression is with two numbers. The first number was the category/region, and the second number was the mission. For example, Rise of the Zilart is 3, and Ark Angels is 26. So player:completeMission(3,26) would complete the Zilart mission "Ark Angels." The numbers that we use are the ones that the client expects to receive, so it made it really easy to give the client the answer it expected.
To save time, we have a file that stores some names, instead. That way, we can use completeMission(ZILART,ARK_ANGELS) and don't have to remember the numbers. Even better, if the numbers change, we just have to update the list, and not every reference to that mission.
Well, when SE changed how CoP was handled, nobody bothered to check if those numbers were still right. And then when people started scripting those missions, there was still nobody checking those numbers. We assumed it had already been done, and the numbers were good. You've probably guessed by now that those numbers are wrong. That's why some of you have progressed in CoP, and you're still seeing "An Invitation West" as your current mission.
Not fixing this isn't an option. Our goal is an accurate server, and if we don't fix it, your CoP mission log will eventually list "For Whom the Verse is Sung" as your current mission when you've finished the entire story. That's not accurate, and that's not happening.
So why is this a problem? Well, the missions were stored as being completed in the wrong values. As things are now, when you finish "The Enduring Tumult of War" (leading up to Promyvion - Vahzl), it stores mission 30 as being complete. However, the client thinks that mission 30 is "Comedy of Errors Act I" (First part of the Windurst leg of The Road Forks.) And once the mission list is fixed, then the server is going to think the same thing. In plain English, that means you're going to lose mission progression when this is fixed.
The problem can possibly be fixed by an enterprising admin, if they check progression when a player logs in, change it to the right value, and then set a char_var to indicate that person has been fixed, and shouldn't be re-fixed. I imagine it could also be fixed with extremely imaginative SQL queries. If any server admins want to do that, they're more than welcome to. Our current plans do not include implementing such a fix. It would be messy, and it would take away time from the projects that the team is currently working on.
Below is the corrected mission list, for any server admins that would like to implement this early, or that want a head start on setting up a fix. We'll very clearly mark the commit message when the update is sent to the trunk. Commented missions do not seem to have a value right now, and the server will not contemplate any value higher than 63 in its current state. I haven't really had time to research the missions and determine if the missing values will be a problem or not. Please also be aware that using the list in its current form could cause crashes. I've contacted the person that has been scripting the missions so that we can make the transition as crash-free as possible.
So I've discovered a small issue today, and I wanted to explain it here so that users and server admins aren't taken by surprise. It's going to be the source of at least one complaint.
At some point, SE made some changes to how the mission log for CoP was accessed. I'm not sure when that happened, and the date isn't too terribly important for our purposes.
Someone did come along and fix things eventually so that we could access CoP mission status again, and pretty much everyone assumed it was fixed, and there'd be no issues. As you've probably guessed by now, there are going to be some issues.
The way we handle mission and quest progression is with two numbers. The first number was the category/region, and the second number was the mission. For example, Rise of the Zilart is 3, and Ark Angels is 26. So player:completeMission(3,26) would complete the Zilart mission "Ark Angels." The numbers that we use are the ones that the client expects to receive, so it made it really easy to give the client the answer it expected.
To save time, we have a file that stores some names, instead. That way, we can use completeMission(ZILART,ARK_ANGELS) and don't have to remember the numbers. Even better, if the numbers change, we just have to update the list, and not every reference to that mission.
Well, when SE changed how CoP was handled, nobody bothered to check if those numbers were still right. And then when people started scripting those missions, there was still nobody checking those numbers. We assumed it had already been done, and the numbers were good. You've probably guessed by now that those numbers are wrong. That's why some of you have progressed in CoP, and you're still seeing "An Invitation West" as your current mission.
Not fixing this isn't an option. Our goal is an accurate server, and if we don't fix it, your CoP mission log will eventually list "For Whom the Verse is Sung" as your current mission when you've finished the entire story. That's not accurate, and that's not happening.
So why is this a problem? Well, the missions were stored as being completed in the wrong values. As things are now, when you finish "The Enduring Tumult of War" (leading up to Promyvion - Vahzl), it stores mission 30 as being complete. However, the client thinks that mission 30 is "Comedy of Errors Act I" (First part of the Windurst leg of The Road Forks.) And once the mission list is fixed, then the server is going to think the same thing. In plain English, that means you're going to lose mission progression when this is fixed.
The problem can possibly be fixed by an enterprising admin, if they check progression when a player logs in, change it to the right value, and then set a char_var to indicate that person has been fixed, and shouldn't be re-fixed. I imagine it could also be fixed with extremely imaginative SQL queries. If any server admins want to do that, they're more than welcome to. Our current plans do not include implementing such a fix. It would be messy, and it would take away time from the projects that the team is currently working on.
Below is the corrected mission list, for any server admins that would like to implement this early, or that want a head start on setting up a fix. We'll very clearly mark the commit message when the update is sent to the trunk. Commented missions do not seem to have a value right now, and the server will not contemplate any value higher than 63 in its current state. I haven't really had time to research the missions and determine if the missing values will be a problem or not. Please also be aware that using the list in its current form could cause crashes. I've contacted the person that has been scripting the missions so that we can make the transition as crash-free as possible.
Code: Select all
-----------------------------------
-- Promathia Missions (6)
-----------------------------------
ANCIENT_FLAMES_BECKON = 0 -- ± --
THE_RITES_OF_LIFE = 1 -- ± --
BELOW_THE_ARKS = 2 -- ± --
THE_MOTHERCRYSTALS = 3 -- ± --
-- THE_ISLE_OF_FORGOTTEN_SAINTS = -- ± --
AN_INVITATION_WEST = 5 -- ± --
THE_LOST_CITY = 15 -- ± --
DISTANT_BELIEFS = 16 -- ± --
AN_ETERNAL_MELODY = 17 -- ± --
ANCIENT_VOWS = 18 -- ± --
A_TRANSIENT_DREAM = 19 -- ± --
THE_CALL_OF_THE_WYRMKING = 20 -- ± --
A_VESSEL_WITHOUT_A_CAPTAIN = 27 -- ± --
THE_ROAD_FORKS = 28 -- ± --
-- EMERALD_WATERS = -- ± --
-- VICISSITUDES = -- ± --
DESCENDANTS_OF_A_LINE_LOST = 29 -- ± --
-- LOUVERANCE = -- ± --
-- MEMORIES_OF_A_MAIDEN = -- ± --
COMEDY_OF_ERRORS_ACT_I = 30 -- ± --
-- COMEDY_OF_ERRORS_ACT_II = -- ± --
-- EXIT_STAGE_LEFT = -- ± --
TENDING_AGED_WOUNDS = 31 -- ± --
DARKNESS_NAMED = 32 -- ± --
-- THE_CRADLES_OF_CHILDREN_LOST = -- ± --
SHELTERING_DOUBT = 33 -- ± --
THE_SAVAGE = 40 -- ± --
THE_SECRETS_OF_WORSHIP = 41 -- ± --
SLANDEROUS_UTTERINGS = 42 -- ± --
-- THE_RETURN_HOME = -- ± --
THE_ENDURING_TUMULT_OF_WAR = 43 -- ± --
DESIRES_OF_EMPTINESS = 52
THREE_PATHS = 54
-- PAST_SINS =
-- SOUTHERN_LEGEND =
PARTNERS_WITHOUT_FAME = 55
-- A_CENTURY_OF_HARDSHIP =
-- DEPARTURES =
-- THE_PURSUIT_OF_PARADISE =
SPIRAL = 56
-- BRANDED =
-- PRIDE_AND_HONOR =
-- AND_THE_COMPASS_GUIDES =
WHERE_MESSENGERS_GATHER = 57
-- ENTANGLEMENT =
-- HEAD_WIND =
FLAMES_FOR_THE_DEAD = 58
-- ECHOES_OF_TIME =
FOR_WHOM_THE_VERSE_IS_SUNG = 60
-- A_PLACE_TO_RETURN =
-- MORE_QUESTIONS_THAN_ANSWERS =
-- ONE_TO_BE_FEARED =
-- IN_THE_LIGHT_OF_THE_CRYSTAL =
-- CHAINS_AND_BONDS =
-- FLAMES_IN_THE_DARKNESS =
-- FIRE_IN_THE_EYES_OF_MEN =
-- CALM_BEFORE_THE_STORM =
-- THE_WARRIOR_S_PATH =
-- EMPTINESS_BLEEDS =
-- GARDEN_OF_ANTIQUITY =
-- A_FATE_DECIDED =
-- WHEN_ANGELS_FALL =
-- DAWN =
-- THE_LAST_VERSE =