Advertisement
Kijan

Play Area

Apr 28th, 2018
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.65 KB | None | 0 0
  1. EIFBag = "bf8414"
  2.  
  3. Casts = {
  4.   P1F = {2.41, 0, 0.4},
  5.   P1S = {1.94, 0, 0.4},
  6.   P1H = self.positionToLocal({-26.71, 1.88, -44.58}),
  7.   P1E = self.positionToLocal({-26.71, 1.88, -46.37}),
  8.   P2F = {1.35, 0, 0.4},
  9.   P2S = {0.88, 0, 0.4},
  10.   P2H = self.positionToLocal({-2.71, 1.88, -44.59}),
  11.   P2E = self.positionToLocal({-2.71, 1.88, -46.37}),
  12.   P3F = {-0.88, 0, 0.4},
  13.   P3S = {-1.35, 0, 0.4},
  14.   P3H = self.positionToLocal({21.29, 1.88, -44.58}),
  15.   P3E = self.positionToLocal({21.29, 1.88, -46.37}),
  16.   P4F = {-1.94, 0, 0.4},
  17.   P4S = {-2.41, 0, 0.4},
  18.   P4H = self.positionToLocal({45.29, 1.88, -44.59}),
  19.   P4E = self.positionToLocal({45.29, 1.88, -46.37}),
  20.   AMD = {0.3, 0, -0.75},
  21.   AMS = {-0.3, 0, -0.75}
  22. }
  23. playerCasts = {
  24.   P1 = {A = {{-36.85, 1.85, -34.79}, {-33.69, 1.85, -34.79}, {-30.53, 1.85, -34.79}, {-27.37, 1.85, -34.79}},
  25.         D = {-40.43, 1.85, -40.80},
  26.         L = {-27.37, 1.85, -40.80},
  27.         AMDiscard = {-40.72, 2, -33.96},
  28.         AMDeck = {-40.72, 2, -36.62}
  29.       },
  30.   P2 = {A = {{-12.85, 1.85, -34.79}, {-9.69, 1.85, -34.79}, {-6.53, 1.85, -34.79}, {-3.37, 1.85, -34.80}},
  31.         D = {-16.43, 1.85, -40.80},
  32.         L = {-3.37, 1.85, -40.81},
  33.         AMDiscard = {-16.73, 2, -33.96},
  34.         AMDeck = {-16.72, 2, -36.62}
  35.       },
  36.   P3 = {A = {{11.16, 1.85, -34.79}, {14.32, 1.85, -34.79}, {17.48, 1.85, -34.79}, {20.63, 1.85, -34.80}},
  37.         D = {7.57, 1.85, -40.80},
  38.         L = {20.63, 1.85, -40.80},
  39.         AMDiscard = {7.28, 2, -33.96},
  40.         AMDeck = {7.28, 2, -36.62}
  41.       },
  42.   P4 = {A = {{35.16, 1.85, -34.79}, {38.32, 1.85, -34.79}, {41.48, 1.85, -34.79}, {44.63, 1.85, -34.80}},
  43.         D = {31.57, 1.85, -40.80},
  44.         L = {44.63, 1.85, -40.81},
  45.         AMDiscard = {31.28, 2, -33.96},
  46.         AMDeck = {31.28, 2, -36.62}
  47.       }
  48. }
  49.  
  50. elements = {
  51.   Fire = {inert = {-3.22, 2.07, -17.18}, waning = {-0.64, 2.07, -17.18}, strong = {3.22, 2.07, -17.18}},
  52.   Ice = {inert = {-1.94, 2.07, -17.96}, waning = {0.64, 2.07, -17.96}, strong = {1.94, 2.07, -17.96}},
  53.   Air = {inert = {-3.22, 2.07, -18.96}, waning = {-0.64, 2.07, -18.96}, strong = {3.22, 2.07, -18.96}},
  54.   Earth = {inert = {-1.94, 2.07, -19.75}, waning = {0.64, 2.07, -19.75}, strong = {1.94, 2.07, -19.75}},
  55.   Light = {inert = {-3.22, 2.07, -20.46}, waning = {-0.64, 2.07, -20.46}, strong = {3.22, 2.07, -20.46}},
  56.   Dark = {inert = {-1.94, 2.07, -21.48}, waning = {0.64, 2.07, -21.48}, strong = {1.94, 2.07, -21.48}}
  57. }
  58.  
  59. colorsToTable = {
  60.   Red = {0.856, 0.1, 0.094},
  61.   White = {1, 1, 1},
  62.   Blue = {0.118, 0.53, 1},
  63.   Green = {0.192, 0.701, 0.168},
  64.   Black = {0, 0, 0}
  65. }
  66.  
  67. function onLoad(save_state)
  68.   createButt("P1FFA", -2.4, 0.718, nil, "Active Card")
  69.   createButt("P1FFD", -2.4, 0.805, nil, "Discard Card")
  70.   createButt("P1FFL", -2.4, 0.895, nil, "Lost Card")
  71.   createButt("P1SFA", -1.94, 0.718, nil, "Active Card")
  72.   createButt("P1SFD", -1.94, 0.805, nil, "Discard Card")
  73.   createButt("P1SFL", -1.94, 0.895, nil, "Lost Card")
  74.  
  75.   createButt("P2FFA", -1.349, 0.718, nil, "Active Card")
  76.   createButt("P2FFD", -1.349, 0.805, nil, "Discard Card")
  77.   createButt("P2FFL", -1.349, 0.895, nil, "Lost Card")
  78.   createButt("P2SFA", -0.895, 0.718, nil, "Active Card")
  79.   createButt("P2SFD", -0.895, 0.805, nil, "Discard Card")
  80.   createButt("P2SFL", -0.895, 0.895, nil, "Lost Card")
  81.  
  82.   createButt("P3FFA", 0.895, 0.718, nil, "Active Card")
  83.   createButt("P3FFD", 0.895, 0.805, nil, "Discard Card")
  84.   createButt("P3FFL", 0.895, 0.895, nil, "Lost Card")
  85.   createButt("P3SFA", 1.349, 0.718, nil, "Active Card")
  86.   createButt("P3SFD", 1.349, 0.805, nil, "Discard Card")
  87.   createButt("P3SFL", 1.349, 0.895, nil, "Lost Card")
  88.  
  89.   createButt("P4FFA", 1.94, 0.718, nil, "Active Card")
  90.   createButt("P4FFD", 1.94, 0.805, nil, "Discard Card")
  91.   createButt("P4FFL", 1.94, 0.895, nil, "Lost Card")
  92.   createButt("P4SFA", 2.4, 0.718, nil, "Active Card")
  93.   createButt("P4SFD", 2.4, 0.805, nil, "Discard Card")
  94.   createButt("P4SFL", 2.4, 0.895, nil, "Lost Card")
  95.  
  96.   createButt("P1HM", -2.538, -0.693, "sign", "Remove HP", " lost 1 HP")
  97.   createButt("P1HP", -2.333, -0.693, "sign", "Add HP", " gained 1 HP")
  98.   createButt("P1EM", -2.145, -0.693, "sign", "Remove XP", " lost 1 XP")
  99.   createButt("P1EP", -1.9, -0.693, "sign", "Add XP", " gained 1 XP")
  100.  
  101.   createButt("P2HM", -1.713, -0.693, "sign", "Remove HP", " lost 1 HP")
  102.   createButt("P2HP", -1.507, -0.693, "sign", "Add HP", " gained 1 HP")
  103.   createButt("P2EM", -1.32, -0.693, "sign", "Remove XP", " lost 1 XP")
  104.   createButt("P2EP", -1.075, -0.693, "sign", "Add XP", "gained 1 XP")
  105.  
  106.   createButt("P3HM", 1.072, -0.693, "sign", "Remove HP", " lost 1 HP")
  107.   createButt("P3HP", 1.277, -0.693, "sign", "Add HP", " gained 1 HP")
  108.   createButt("P3EM", 1.467, -0.693, "sign", "Remove XP", " lost 1 XP")
  109.   createButt("P3EP", 1.71, -0.693, "sign", "Add XP", " gained 1 XP")
  110.  
  111.   createButt("P4HM", 1.9, -0.693, "sign", "Remove HP", " lost 1 HP")
  112.   createButt("P4HP", 2.105, -0.693, "sign", "Add HP", "gained 1 HP")
  113.   createButt("P4EM", 2.292, -0.693, "sign", "Remove XP", "lost 1 XP")
  114.   createButt("P4EP", 2.538, -0.693, "sign", "Add XP", "gained 1 XP")
  115.  
  116.   createButt("AMD", -0.775, -0.752, "AM", "Draw a Modifier Card")
  117.   createButt("AMS", 0.775, -0.752, "AM", "Shuffle the Modifier Deck")
  118.  
  119.   createButt("EIB", 0, 0.215, "EIB", "Get an Elemental Infusion Board")
  120.  
  121.   createButt("ConFire", 0.905, -0.195, "Element", "Consume ", " consumed ")
  122.   createButt("ConIce", 1.2, -0.195, "Element", "Consume ", " consumed ")
  123.   createButt("ConAir", 1.49, -0.195, "Element", "Consume ", " consumed ")
  124.   createButt("ConEarth", 1.78, -0.195, "Element", "Consume ", " consumed ")
  125.   createButt("ConLight", 2.07, -0.195, "Element", "Consume ", " consumed ")
  126.   createButt("ConDark", 2.36, -0.195, "Element", "Consume ", " consumed ")
  127.  
  128.   createButt("CreDark", -0.902, -0.195, "Element", "Create ", " created ")
  129.   createButt("CreLight", -1.2, -0.195, "Element", "Create ", " created ")
  130.   createButt("CreEarth", -1.498, -0.195, "Element", "Create ", " created ")
  131.   createButt("CreAir", -1.793, -0.195, "Element", "Create ", " created ")
  132.   createButt("CreIce", -2.09, -0.195, "Element", "Create ", " created ")
  133.   createButt("CreFire", -2.387, -0.195, "Element", "Create ", " created ")
  134.  
  135.  
  136. end
  137.  
  138. function createButt(name, x, z, type, tooltip, broadcast)
  139.  
  140.   self.setVar(name, function (obj, player_clicker_color) buttonClicked(name, broadcast, player_clicker_color) end)
  141.   buttonParameter = {
  142.     click_function = name,
  143.     function_owner = self,
  144.     label          = "",
  145.     position       = {x, 0.1, z},
  146.     scale          = {0.1, 0.1, 0.1},
  147.     width          = 1500,
  148.     height         = 300,
  149.     color          = {1,1,1,0.1},
  150.     tooltip        = tooltip
  151.   }
  152.  
  153.   if type == "Element" then
  154.     buttonParameter.width = 750
  155.     buttonParameter.height = 750
  156.     buttonParameter.color = {1,1,1,0}
  157.     buttonParameter.tooltip = tooltip .. name:sub(4)
  158.   elseif type == "AM" then
  159.     buttonParameter.width = 1350
  160.     buttonParameter.height = 450
  161.   elseif type == "EIB" then
  162.     buttonParameter.width = 3300
  163.     buttonParameter.height = 500
  164.   elseif type == "sign" then
  165.     buttonParameter.width = 400
  166.     buttonParameter.height = 400
  167.     buttonParameter.color = {1,1,1,0}
  168.   end
  169.  
  170.   self.createButton(buttonParameter)
  171. end
  172.  
  173. function uiConsume(a, b, c)
  174.   buttonClicked(c, " consumed ", a.color)
  175. end
  176. function uiCreate(a, b, c)
  177.   buttonClicked(c, " created ", a.color)
  178. end
  179.  
  180. function buttonClicked(clicked, broadcast, player_clicker_color)
  181.   local pre = clicked:sub(1,3)
  182.   local element = clicked:sub(4)
  183.   local origin, size
  184.  
  185.   if pre == "Cre" then
  186.     origin = {0.18, 0, 0.37}
  187.     size = {4.9, 1, 7}
  188.   elseif pre == "Con" or pre == "low" then
  189.     origin = {-0.18, 0, 0.37}
  190.     size = {4.9, 1, 7}
  191.   else
  192.     origin = Casts[pre]
  193.     size = {1, 1, 1}
  194.   end
  195.  
  196.   if origin ~= nil then
  197.     hitlist = Physics.cast({
  198.       origin       = self.positionToWorld(origin),
  199.       direction    = {0, 1, 0},
  200.       type         = 3,
  201.       size         = size,
  202.       max_distance = 0,
  203.       debug        = false
  204.     }) -- returns {{Vector point, Vector normal, float distance, Object hit_object}, ...}
  205.  
  206.     for u, v in pairs(hitlist) do
  207.       if pre == "Cre" and v.hit_object.getName() == element then
  208.         v.hit_object.setPosition(elements[element].strong)
  209.         broadcastToAll(Player[player_clicker_color].steam_name .. broadcast .. element, colorsToTable[player_clicker_color])
  210.         return
  211.       elseif pre == "Con" and v.hit_object.getName() == element then
  212.         v.hit_object.setPosition(elements[element].inert)
  213.         broadcastToAll(Player[player_clicker_color].steam_name .. broadcast .. element, colorsToTable[player_clicker_color])
  214.         return
  215.       elseif pre == "low" and v.hit_object.getName() == element then
  216.         if v.hit_object.getPosition().x > 1 then
  217.           v.hit_object.setPosition(elements[element].waning)
  218.         else
  219.           v.hit_object.setPosition(elements[element].inert)
  220.         end
  221.         return
  222.       elseif v.hit_object.getStates() ~= nil then
  223.         if #v.hit_object.getStates() == 30 then
  224.           if v.hit_object.getStateId() == 31 then
  225.             if element == "P" then
  226.               v.hit_object.setState(1)
  227.             end
  228.           elseif v.hit_object.getStateId() == 1 then
  229.             if element == "M" then
  230.               v.hit_object.setState(31)
  231.             else
  232.               v.hit_object.setState(v.hit_object.getStateId() + (element == "P" and 1 or -1))
  233.             end
  234.           else
  235.             v.hit_object.setState(v.hit_object.getStateId() + (element == "P" and 1 or -1))
  236.           end
  237.           broadcastToAll(Player[player_clicker_color].steam_name .. broadcast, colorsToTable[player_clicker_color])
  238.           return
  239.         end
  240.       elseif clicked:sub(1,1) == "P" and v.hit_object.tag == "Card"  then
  241.         if clicked:sub(4) == "Reveal" then
  242.           v.hit_object.flip()
  243.  
  244.           if clicked:sub(3,3) == "F" then
  245.             hitlist = Physics.cast({
  246.               origin       = playerCasts[clicked:sub(1,2)].AMDeck,
  247.               direction    = {0, 1, 0},
  248.               type         = 3,
  249.               size         = {1, 1, 1},
  250.               max_distance = 0,
  251.               debug        = false
  252.             })
  253.             for _, c in pairs(hitlist) do
  254.               if c.hit_object.tag == "Deck" then
  255.                 c.hit_object.takeObject({position = playerCasts[clicked:sub(1,2)].AMDiscard, flip = true})
  256.                 return
  257.               end
  258.             end
  259.           end
  260.         elseif clicked:sub(5,5) == "A" then
  261.           local pos = checkEmpty(playerCasts[clicked:sub(1,2)].A)
  262.           print(pos)
  263.           if pos then
  264.             v.hit_object.setPosition(pos)
  265.           end
  266.         elseif clicked:sub(5,5) == "D" then
  267.           v.hit_object.setPosition(playerCasts[clicked:sub(1,2)].D)
  268.         elseif clicked:sub(5,5) == "L" then
  269.           v.hit_object.setPosition(playerCasts[clicked:sub(1,2)].L)
  270.         end
  271.         return
  272.       elseif pre == "AMD" and v.hit_object.tag == "Deck" then
  273.         v.hit_object.takeObject({position = self.positionToWorld({Casts.AMS[1], Casts.AMS[2]+1, Casts.AMS[3]}), flip = true})
  274.         return
  275.       elseif pre == "AMS" and (v.hit_object.tag == "Deck" or v.hit_object.tag == "Card") then
  276.         hitlist = Physics.cast({
  277.           origin       = self.positionToWorld(Casts.AMD),
  278.           direction    = {0, 1, 0},
  279.           type         = 3,
  280.           size         = {1, 1, 1},
  281.           max_distance = 0,
  282.           debug        = false
  283.         })
  284.         for _, c in pairs(hitlist) do
  285.           if c.hit_object.tag == "Deck" then
  286.             c.hit_object.putObject(v.hit_object)
  287.             c.hit_object.shuffle()
  288.             return
  289.           end
  290.         end
  291.       end
  292.     end
  293.     if pre == "Con" then
  294.       broadcastToAll("No " .. element .. " to consume!", colorsToTable[player_clicker_color])
  295.     end
  296.   end
  297.  
  298.   if pre == "EIB" then
  299.     local bag = getObjectFromGUID("bf8414").takeObject({position = {0.00, 1.52, -7.50}, smooth = false})
  300.     bag.takeObject({position = {0.00, 1.85, -18.19}, rotation = {0.00, 0.00, 0.00}, smooth = false}).lock()
  301.     bag.takeObject({position = {-3.23, 2.07, -17.19}, rotation = {0.00, 180.00, 180.00}})
  302.     bag.takeObject({position = {-1.95, 2.07, -17.97}, rotation = {0.00, 180.00, 180.00}})
  303.     bag.takeObject({position = {-3.22, 2.07, -18.95}, rotation = {0.00, 0.00, 180.00}})
  304.     bag.takeObject({position = {-1.93, 2.07, -19.75}, rotation = {0.00, 180.00, 0.00}})
  305.     bag.takeObject({position = {-3.21, 2.07, -20.46}, rotation = {0.00, 180.00, 0.00}})
  306.     bag.takeObject({position = {-1.94, 2.07, -21.48}, rotation = {0.00, 180.00, 0.00}})
  307.     bag.takeObject({position = {-3.30, 2.08, -14.38}, rotation = {0.00, 0.00, 0.00}})
  308.     bag.destruct()
  309.   end
  310.  
  311. end
  312.  
  313. function checkEmpty(posTable)
  314.   local found = false
  315.   for i, j in pairs(posTable) do
  316.     found = false
  317.     hitlist = Physics.cast({
  318.       origin       = j,
  319.       direction    = {0, 1, 0},
  320.       type         = 3,
  321.       size         = {1, 1, 1},
  322.       max_distance = 0,
  323.       debug        = false
  324.     })
  325.  
  326.     for u, v in pairs(hitlist) do
  327.       if v.hit_object.tag == "Card" then found = true end
  328.     end
  329.     if found == false then return j end
  330.   end
  331.  
  332.   return false
  333. end
  334.  
  335. function reveal(player)
  336.   buttonClicked("AMD")
  337.   for i=1, 4 do
  338.     buttonClicked("P" .. i .. "FReveal")
  339.     buttonClicked("P" .. i .. "SReveal")
  340.   end
  341.   for _, o in pairs(getAllObjects()) do
  342.     if o.getName() == "Monster Mat" then
  343.       o.call("drawCard")
  344.     end
  345.   end
  346. end
  347.  
  348. function endRound()
  349.   for i, j in pairs(elements) do
  350.     buttonClicked("low" .. i)
  351.   end
  352.   -- for i=1, 4 do
  353.   --   buttonClicked("P" .. i .. "FFD")
  354.   --   buttonClicked("P" .. i .. "SFD")
  355.   -- end
  356. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement