local ret = ... or {}; ret.RedirTable = { Up = "Down", Down = "Down", Left = "Down", Right = "Down", UpLeft = "Down", UpRight = "Down", }; local OldRedir = ret.Redir; ret.Redir = function(sButton, sElement) sButton, sElement = OldRedir(sButton, sElement); --Point the head files back to the tap note if string.find(sElement, "Head") or sElement == "Tap Fake" then sElement = "Tap Note"; end sButton = ret.RedirTable[sButton]; return sButton, sElement; end local OldFunc = ret.Load; function ret.Load() local t = OldFunc(); -- The main "Explosion" part just loads other actors; don't rotate -- it. The "Hold Explosion" part should not be rotated. if Var "Element" == "Explosion" or Var "Element" == "Roll Explosion" then t.BaseRotationZ = nil; end return t; end ret.PartsToRotate = { ["Receptor"] = true, ["Tap Note"] = true, ["Tap Lift"] = true, ["Tap Fake"] = true, ["Ready Receptor"] = true, ["Tap Explosion Bright"] = true, ["Tap Explosion Dim"] = true, ["Hold Explosion"] = true, ["Roll Explosion"] = true, ["Hold Head Active"] = true, ["Hold Head Inactive"] = true, ["Roll Head Active"] = true, ["Roll Head Inactive"] = true }; ret.Rotate = { Up = 180, Down = 0, Left = 90, Right = -90, UpLeft = 135, UpRight = 225, }; ret.Blank = { ["Hold Topcap Active"] = true, ["Hold Topcap Inactive"] = true, ["Roll Topcap Active"] = true, ["Roll Topcap Inactive"] = true, ["Hold Tail Active"] = true, ["Hold Tail Inactive"] = true, ["Roll Tail Active"] = true, ["Roll Tail Inactive"] = true, }; return ret;