Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Cards = {}
- Cards["Zero Initiative Token"]={x="0",y="5",z="0", GUID=nil,player="Black",init=0,hexcolor="b1d629"}
- Cards["Leadership"]={x="-9",y="2.2",z="-16",GUID=nil,player="Black",init=1,hexcolor="b81d02"}
- Cards["Diplomacy"]={x="-9",y="2.2",z="-12", GUID=nil,player="Black",init=2,hexcolor="db7807"}
- Cards["Politics"]={x="-9",y="2.2",z="-8", GUID=nil,player="Black",init=3,hexcolor="faf200"}
- Cards["Construction"]={x="-9",y="2.2",z="-4", GUID=nil,player="Black",init=4,hexcolor="00bf30"}
- Cards["Trade"]={x="-9",y="2.2",z="0", GUID=nil,player="Black",init=5,hexcolor="12c9c9"}
- Cards["Warfare"]={x="-9",y="2.2",z="4", GUID=nil,player="Black",init=6,hexcolor="0041cf"}
- Cards["Technology"]={x="-9",y="2.2",z="8", GUID=nil,player="Black",init=7,hexcolor="060080"}
- Cards["Imperial"]={x="-9",y="2.2",z="12", GUID=nil,player="Black",init=8,hexcolor="3f0066"}
- function onLoad()
- --Wait.time(function() Turns.enable = true end, 1)
- self.createButton(button_parameters)
- button_parameters.click_function = 'RecalculateInitiative'
- button_parameters.position = {0,0.11,2.15}
- button_parameters.label = 'Update'
- self.createButton(button_parameters)
- local allObjects = getAllObjects()
- for i,v in pairs(allObjects) do
- for i2,v2 in pairs(Cards) do
- --print("comparing "..i2.." with "..v.getName())
- if tostring(i2) == tostring(v.getName()) then
- Cards[i2].GUID = v.getGUID()
- end
- end
- end
- PassedPlayers = {}
- end
- function Nada()
- end
- function HexColor(colorString)
- local colorTable = stringColorToRGB(colorString)
- colorTable = {colorTable[1]*255,colorTable[2]*255,colorTable[3]*255}
- local colorHex = string.format('%02x%02x%02x', unpack(colorTable))
- return colorHex
- end
- function RecalculateInitiative()
- Turns.enable = false
- ClearTable(PassedPlayers)
- local Printed = {}
- RecalculatedOrder = {}
- for i,v in pairs(Cards) do
- if Cards[i].player ~= "Black"
- and TableContains(RecalculatedOrder, Cards[i].player) == false
- then
- table.insert(RecalculatedOrder, Cards[i].player)
- end
- end
- printToAll("[bd0055]------ [bd0055]ORDER [bd0055]-------")
- for i,v in pairs(Cards) do
- if Cards[i].player ~= "Black"
- and TableContains(Printed, Cards[i].player) == false
- and IsPlayerSeated(Cards[i].player) == true
- then
- if Player[Cards[i].player].steam_name ~= nil then
- PrintingPlayer = Player[Cards[i].player].steam_name
- else
- PrintingPlayer = Cards[i].player
- end
- printToAll("["..HexColor(Cards[i].player).."]"..PrintingPlayer.."[ffffff] goes at initiative "..PlayerInitiative(Cards[i].player).." with ".."["..Cards[i].hexcolor.."]"..i..".")
- table.insert(Printed, Cards[i].player)
- end
- end
- printToAll("[bd0055]---------------------")
- for i,v in pairs(getSeatedPlayers()) do
- --print(v.."[c2f536] test is "..v.."in RecalculatedOrder... "..tostring(IsPlayerInOrder(v)))
- if TableContains(RecalculatedOrder, v) == false then
- table.insert(RecalculatedOrder, v)
- print(v.."[c2f536] didn't have a strategy card so inserted at cleanup. This shouldn't happen.")
- end
- end
- --Turns.enable = true
- Turns.type = 2
- Turns.skip_empty_hands = false
- Turns.order = RecalculatedOrder
- Wait.time(function() print("Setting turn to "..RecalculatedOrder[1]) end, 0.2)
- Wait.time(function() Turns.turn_color = RecalculatedOrder[1] end, 0.2)
- Wait.time(function() Turns.enable = true end, 0.3)
- for i,v in pairs(Cards) do
- if i ~= "Zero Initiative Token" then
- --getObjectFromGUID(Cards[i].GUID).highlightOff()
- end
- end
- end
- function IsPlayerSeated(p)
- for i,v in pairs(getSeatedPlayers()) do
- if v == p then
- return true
- end
- end
- return false
- end
- function IsPlayerInOrder(p)
- for i,v in pairs(RecalculatedOrder) do
- if v == p then
- return true
- end
- end
- return false
- end
- function LowestInitiativePlayer()
- for i,v in pairs(Cards) do
- if Cards[i].player ~= "Black" then
- return Cards[i].player
- end
- end
- print("LowestInitiativePlayer loop ended without returning. This is the one thing we didn't want to happen.")
- end
- function PlayerInitiative(c)
- local LowerInit = 99
- for i,v in pairs(Cards) do
- if Cards[i].player == c then
- if Cards[i].init < LowerInit then
- LowerInit = Cards[i].init
- end
- end
- end
- return LowerInit
- end
- function TableContains(table, element)
- for _, value in pairs(table) do
- if value == element then
- return true
- end
- end
- return false
- end
- function ResetStrategyCards()
- self.editButton({index=0, click_function = 'Nada', label="Sure?", color = {0.4,0.1,0.1}})
- Timer.create({identifier = 't2'..self.getGUID(), function_name = 'Unlock', delay = 0.5})
- Timer.create({identifier = 't3'..self.getGUID(), function_name = 'ResetResetStrategyCardsButton', delay = 3})
- end
- function Unlock()
- self.editButton({index=0, click_function = 'ActuallyResetStrategyCards', label="Confirm", color = {0.1,0.4,0.1}})
- end
- function ResetResetStrategyCardsButton()
- self.editButton({index=0, click_function = 'ResetStrategyCards', label="Return", color = {0,0,0}})
- end
- function ActuallyResetStrategyCards()
- for i,v in pairs(Cards) do
- if i ~= "Zero Initiative Token" then
- getObjectFromGUID(Cards[i].GUID).highlightOff()
- getObjectFromGUID(Cards[i].GUID).highlightOn({0.4,0.5,0.4})
- end
- end
- for i,v in pairs(Cards) do
- if i ~= "Zero Initiative Token" then
- Cards[i].player = "Black"
- end
- end
- for i,v in pairs(Cards) do
- if i ~= "Zero Initiative Token" then
- getObjectFromGUID(Cards[i].GUID).flip()
- getObjectFromGUID(Cards[i].GUID).setPosition{Cards[i].x,Cards[i].y,Cards[i].z}
- getObjectFromGUID(Cards[i].GUID).translate{0,1,0}
- getObjectFromGUID(Cards[i].GUID).setRotation{0,90,180}
- end
- end
- ClearTable(PassedPlayers)
- ResetResetStrategyCardsButton()
- Turns.enable = false
- end
- function ClearTable(t)
- for k in pairs (t) do
- t [k] = nil
- end
- end
- function ClearValueFromTable(t, v)
- for k in pairs (t) do
- if v == t[k] then
- t[k] = nil
- end
- end
- end
- button_parameters = {}
- button_parameters.click_function = 'ResetStrategyCards'
- button_parameters.function_owner = self
- button_parameters.label = 'Return'
- button_parameters.position = {0,0.11,1.15}
- button_parameters.rotation = {0,0,0}
- button_parameters.width = 1000
- button_parameters.height = 400
- button_parameters.color = {0,0,0}
- button_parameters.font_size= 250
- button_parameters.font_color= {1,1,1}
- function onObjectRandomize(o, c)
- if string.find(o.getDescription(), "Initiative", 1, 0) ~= nil then
- AssignCardToPlayer(o.getName(),c,o)
- end
- end
- function AssignCardToPlayer(Cardname,Assignee,CardObject)
- if Cards[Cardname].player ~= Assignee then
- Cards[Cardname].player = Assignee
- PC = stringColorToRGB(Assignee)
- CardObject.highlightOn(PC)
- if Player[Cards[Cardname].player].steam_name ~= nil then
- PrintingPlayerAssignee = Player[Cards[Cardname].player].steam_name
- else
- PrintingPlayerAssignee = Cards[Cardname].player
- end
- local PickMessage = "["..HexColor(Cards[Cardname].player).."]"..PrintingPlayerAssignee.."[ffffff] picked ["..Cards[Cardname].hexcolor.."]"..Cardname.."."
- broadcastToAll(PickMessage)
- else
- Cards[Cardname].player = "Black"
- CardObject.highlightOn({0.4,0.4,0.4})
- end
- end
- function ReturnPlayerCards(p)
- --print("calling ReturnPlayerCards")
- local MyCards = {}
- for i,v in pairs(Cards) do
- --print("comparing "..Cards[i].player)
- --print(" with "..p)
- if Cards[i].player == p then
- table.insert(MyCards, Cards[i])
- end
- end
- --print(TableLength(MyCards).." is the length of MyCards.")
- return MyCards
- end
- function onChat(message, p)
- if message == "Pass" or message == "pass" or message == "P" or message == "p" then
- if IsPlayerPassed(p.color) == false then
- table.insert(PassedPlayers, p.color)
- for i,v in pairs (ReturnPlayerCards(p.color)) do
- --print(v.player.." AAAGH "..p.color)
- getObjectFromGUID(v.GUID).highlightOn{0.4,0.5,0.4}
- end
- if p.steam_name ~= nil then
- PrintingPlayerPass = p.steam_name
- else
- PrintingPlayerPass = p.color
- end
- PassMessage = "["..HexColor(p.color).."]"..PrintingPlayerPass.." passed."
- local x = TableLength(PassedPlayers)
- local y = TableLength(getSeatedPlayers())
- broadcastToAll(PassMessage.." ("..x.."/"..y.." players passed)")
- end
- end
- --
- if message == "unpass" or message == "Unpass" then
- if IsPlayerPassed(p.color) == true then
- ClearValueFromTable(PassedPlayers, p.color)
- for i,v in pairs (ReturnPlayerCards(p.color)) do
- --print(v.player.." AAAGH "..p.color)
- getObjectFromGUID(v.GUID).highlightOn(stringColorToRGB(p.color))
- end
- if p.steam_name ~= nil then
- PrintingPlayerPass = p.steam_name
- else
- PrintingPlayerPass = p.color
- end
- PassMessage = "["..HexColor(p.color).."]"..PrintingPlayerPass.." undid passing."
- local x = TableLength(PassedPlayers)
- local y = TableLength(getSeatedPlayers())
- broadcastToAll(PassMessage.." ("..x.."/"..y.." players passed)")
- end
- end
- if message == "Reset" or message == "reset" then
- ClearTable(PassedPlayers)
- local x = TableLength(PassedPlayers)
- local y = TableLength(getSeatedPlayers())
- broadcastToAll("Passed players reset, "..x.."/"..y.." players passed.")
- end
- if message == "rundown" or message == "Rundown" then
- QuickRundown()
- end
- end
- function IsPlayerPassed(p)
- --QuickRundown()
- result = false
- for i,v in pairs (PassedPlayers) do
- --print("Comparing "..v.." with "..p)
- if v == p then
- result = true
- end
- end
- return result
- end
- function TableLength(T)
- local count = 0
- for _ in pairs(T) do
- count = count + 1
- end
- return count
- end
- function onPlayerTurn(c)
- --print("The next turn belongs to "..tostring(Turns.getNextTurnColor()))
- --msg = "'s turn begins. IsPlayerPassed = "..tostring(IsPlayerPassed(c.color))
- if IsPlayerPassed(c.color) == true then
- --print("IsPlayerPassed came back true.")
- msg = "["..HexColor(c.color).."]"..c.color.."[ffffff] already passed, moving turn to ".."["..HexColor(Turns.getNextTurnColor()).."]"..Turns.getNextTurnColor()
- Wait.time(function() print(msg) end, 0.5)
- Wait.time(function() Turns.turn_color = Turns.getNextTurnColor() end, 0.5)
- end
- end
- function QuickRundown()
- for i,v in pairs(RecalculatedOrder) do
- msg2 = "[a7c7a1] has not "
- if IsPlayerPassed(v) == true then
- msg2 = "[968181] has "
- end
- if v.steam_name ~= nil then
- PrintingPlayerPass2 = Player[v].steam_name
- else
- PrintingPlayerPass2 = Player[v].color
- end
- printToAll("["..HexColor(Player[v].color).."]"..PrintingPlayerPass2..msg2.."passed. They had initiative "..PlayerInitiative(v))
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement