Merge pull request #210 from argonui/family-inheritance-functions
Family Inheritance: Context menu functions
This commit is contained in:
commit
f27296c06d
@ -33,8 +33,8 @@
|
|||||||
"IgnoreFoW": false,
|
"IgnoreFoW": false,
|
||||||
"LayoutGroupSortIndex": 0,
|
"LayoutGroupSortIndex": 0,
|
||||||
"Locked": false,
|
"Locked": false,
|
||||||
"LuaScript": "",
|
|
||||||
"LuaScriptState": "",
|
"LuaScriptState": "",
|
||||||
|
"LuaScript_path": "AllPlayerCards.15bb07/FamilyInheritance.394603.ttslua",
|
||||||
"MeasureMovement": false,
|
"MeasureMovement": false,
|
||||||
"Name": "Card",
|
"Name": "Card",
|
||||||
"Nickname": "Family Inheritance",
|
"Nickname": "Family Inheritance",
|
||||||
|
@ -0,0 +1,76 @@
|
|||||||
|
local tokenManager = require("core/token/TokenManager")
|
||||||
|
local playmatApi = require("playermat/PlaymatApi")
|
||||||
|
|
||||||
|
local clickableResourceCounter = nil
|
||||||
|
local foundTokens = 0
|
||||||
|
|
||||||
|
function onLoad()
|
||||||
|
self.addContextMenuItem("Add 4 resources", function(playerColor) add4(playerColor) end)
|
||||||
|
self.addContextMenuItem("Take all resources", function(playerColor) takeAll(playerColor) end)
|
||||||
|
self.addContextMenuItem("Discard all resources", function(playerColor) loseAll(playerColor) end)
|
||||||
|
end
|
||||||
|
|
||||||
|
function searchSelf()
|
||||||
|
clickableResourceCounter = nil
|
||||||
|
foundTokens = 0
|
||||||
|
|
||||||
|
for _, obj in ipairs(searchArea(self.getPosition(), { 2.5, 0.5, 3.5 })) do
|
||||||
|
local obj = obj.hit_object
|
||||||
|
if obj.getCustomObject().image ==
|
||||||
|
"http://cloud-3.steamusercontent.com/ugc/1758068501357192910/11DDDC7EF621320962FDCF3AE3211D5EDC3D1573/" then
|
||||||
|
foundTokens = foundTokens + math.abs(obj.getQuantity())
|
||||||
|
obj.destruct()
|
||||||
|
elseif obj.getMemo() == "resourceCounter" then
|
||||||
|
foundTokens = obj.getVar("val")
|
||||||
|
clickableResourceCounter = obj
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function add4(playerColor)
|
||||||
|
searchSelf()
|
||||||
|
|
||||||
|
local newCount = foundTokens + 4
|
||||||
|
if clickableResourceCounter then
|
||||||
|
clickableResourceCounter.call("updateVal", newCount)
|
||||||
|
else
|
||||||
|
if newCount > 12 then
|
||||||
|
printToColor("Count increased to " .. newCount .. " resources. Spawning clickable counter instead.", playerColor)
|
||||||
|
tokenManager.spawnResourceCounterToken(self, newCount)
|
||||||
|
else
|
||||||
|
tokenManager.spawnTokenGroup(self, "resource", newCount)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function takeAll(playerColor)
|
||||||
|
searchSelf()
|
||||||
|
local matColor = playmatApi.getMatColorByPosition(self.getPosition())
|
||||||
|
playmatApi.gainResources(foundTokens, matColor)
|
||||||
|
|
||||||
|
if clickableResourceCounter then
|
||||||
|
clickableResourceCounter.call("updateVal", 0)
|
||||||
|
end
|
||||||
|
printToColor("Moved " .. foundTokens .. " resource(s) to " .. matColor .. "'s resource pool.", playerColor)
|
||||||
|
end
|
||||||
|
|
||||||
|
function loseAll(playerColor)
|
||||||
|
searchSelf()
|
||||||
|
|
||||||
|
if clickableResourceCounter then
|
||||||
|
clickableResourceCounter.call("updateVal", 0)
|
||||||
|
end
|
||||||
|
printToColor("Discarded " .. foundTokens .. " resource(s).", playerColor)
|
||||||
|
end
|
||||||
|
|
||||||
|
function searchArea(origin, size)
|
||||||
|
return Physics.cast({
|
||||||
|
origin = origin,
|
||||||
|
direction = { 0, 1, 0 },
|
||||||
|
orientation = PLAY_ZONE_ROTATION,
|
||||||
|
type = 3,
|
||||||
|
size = size,
|
||||||
|
max_distance = 1
|
||||||
|
})
|
||||||
|
end
|
@ -287,13 +287,12 @@ function doUpkeep(_, color, alt_click)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- gain a resource
|
-- gain a resource (or two if playing Jenny Barnes)
|
||||||
RESOURCE_COUNTER.call("addOrSubtract")
|
|
||||||
|
|
||||||
-- gain an additional resource for Jenny Barnes
|
|
||||||
if string.match(activeInvestigatorId, "%d%d%d%d%d") == "02003" then
|
if string.match(activeInvestigatorId, "%d%d%d%d%d") == "02003" then
|
||||||
RESOURCE_COUNTER.call("addOrSubtract")
|
gainResources(2)
|
||||||
printToColor("Gaining 2 resources (Jenny)", messageColor)
|
printToColor("Gaining 2 resources (Jenny)", messageColor)
|
||||||
|
else
|
||||||
|
gainResources(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- draw a card (with handling for Patrice and Forced Learning)
|
-- draw a card (with handling for Patrice and Forced Learning)
|
||||||
@ -316,6 +315,13 @@ function doUpkeep(_, color, alt_click)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- adds the specified amount of resources to the resource counter
|
||||||
|
function gainResources(amount)
|
||||||
|
local count = RESOURCE_COUNTER.getVar("val")
|
||||||
|
local add = tonumber(amount) or 0
|
||||||
|
RESOURCE_COUNTER.call("updateVal", count + add)
|
||||||
|
end
|
||||||
|
|
||||||
-- function for "draw 1 button" (that can be added via option panel)
|
-- function for "draw 1 button" (that can be added via option panel)
|
||||||
function doDrawOne(_, color)
|
function doDrawOne(_, color)
|
||||||
setMessageColor(color)
|
setMessageColor(color)
|
||||||
|
@ -109,6 +109,13 @@ do
|
|||||||
return count
|
return count
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Adds the specified amount of resources to the requested playermat's resource counter
|
||||||
|
PlaymatApi.gainResources = function(amount, matColor)
|
||||||
|
for _, mat in ipairs(internal.getMatForColor(matColor)) do
|
||||||
|
mat.call("gainResources", amount)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Convenience function to look up a mat's object by color, or get all mats.
|
-- Convenience function to look up a mat's object by color, or get all mats.
|
||||||
---@param matColor String for one of the active player colors - White, Orange, Green, Red. Also
|
---@param matColor String for one of the active player colors - White, Orange, Green, Red. Also
|
||||||
-- accepts "All" as a special value which will return all four mats.
|
-- accepts "All" as a special value which will return all four mats.
|
||||||
|
Loading…
Reference in New Issue
Block a user