I've stumbled onto yet another fatal Flash bug, which I barely nauseous enough to describe.
Storing things in array such as below is common. level_Data_Edible is an array containing strings. You access it to find out a string based on the current level. This has worked until suddenly, without reason.
static public var comboType_14:Array = ["Bomb", Constants.level_Data_Edible[Constants.currentLevel], "Gem", Constants.level_Data_Edible[Constants.currentLevel], "Gem", Constants.level_Data_Edible[Constants.currentLevel], "Frog" ]; static public var level_Data_Edible:Array = [ null, "Fish", "Golfball", "Gloves", "Logger", "Burger", "Beer", "Snowshoes", "Smore", "Pontoon", "Binocular"];
You have to dynamically create the variable. Access it by [classname][match]. In this case ScoreKeep[match]
var match:String = "comboType_" + String(Constants.currentLevel);
Then, what's new and changed, is that now the result is always for currentLevel = 1. Even if currentLevel = 5 or 7.
Flash does not evaluate variables inside of arrays based on their current state. I don't know what it does, but this works fine in dozens of other areas of the game. For some malicious reason, not here.
Amazingly, I can't even engineer a workaround. I've tried putting a function in the array that returns the string for the currentLevel, and instead of the string it returns "Function() function" or some nonsense.
I even tried converting the array into a vector, duplicating the array, copying the string values to another array, no matter WHAT I do, Flash figures out a way to stop me. It's really, truly something else. Inhuman, malicious.