58 lines
2.0 KiB
Lua
58 lines
2.0 KiB
Lua
local _M = {}
|
|
local GameplayEventData = import("GameplayEventData")
|
|
local GetGameplayTag = require("GamePlay.Utils").GetGameplayTag
|
|
local BusyGamePlayLibrary = import("BusyGamePlayLibrary")
|
|
local BusyActorManagerSubSystem = import("BusyActorManagerSubSystem")
|
|
local AbilitySystemBlueprintLibrary = import("AbilitySystemBlueprintLibrary")
|
|
|
|
|
|
|
|
function _M.ChangeHealth(role, value)
|
|
local asc = AbilitySystemBlueprintLibrary.GetAbilitySystemComponent(role)
|
|
local ge = asc.AbilityEffectConfigs:Get("ChangeHealth")
|
|
local cost_handle = asc:MakeOutgoingSpec(ge, 1, asc:MakeEffectContext())
|
|
AbilitySystemBlueprintLibrary.AssignTagSetByCallerMagnitude(
|
|
cost_handle, GetGameplayTag("Change.Role.Health"),
|
|
role:CalcRealChangeByHealth(value)
|
|
)
|
|
asc:BP_ApplyGameplayEffectSpecToSelf(cost_handle)
|
|
end
|
|
|
|
function _M.ChangeHunger(role, value)
|
|
local asc = AbilitySystemBlueprintLibrary.GetAbilitySystemComponent(role)
|
|
local ge = asc.AbilityEffectConfigs:Get("ChangeHunger")
|
|
|
|
local hunger_cost, health_cost = role:CalcRealChangeByHunger(value)
|
|
local cost_handle = asc:MakeOutgoingSpec(ge, 1, asc:MakeEffectContext())
|
|
|
|
AbilitySystemBlueprintLibrary.AssignTagSetByCallerMagnitude(
|
|
cost_handle, GetGameplayTag("Change.Role.Health"), health_cost
|
|
)
|
|
AbilitySystemBlueprintLibrary.AssignTagSetByCallerMagnitude(
|
|
cost_handle, GetGameplayTag("Change.Role.Hunger"), hunger_cost
|
|
)
|
|
asc:BP_ApplyGameplayEffectSpecToSelf(cost_handle)
|
|
end
|
|
|
|
function _M.GetRole(wco)
|
|
local mgr = BusyActorManagerSubSystem.Get(wco)
|
|
return mgr.current_role
|
|
end
|
|
|
|
function _M.EatFood(wco, item_id)
|
|
local role = _M.GetRole(wco)
|
|
local EventData = GameplayEventData()
|
|
EventData.EventMagnitude = item_id
|
|
role:TryActiveAbility("Ability.Role.EatFood", EventData)
|
|
end
|
|
|
|
function _M.GetRoleConfig(role_id)
|
|
local data_table = BusyGamePlayLibrary.GetGameDataTable("RoleConfig")
|
|
|
|
local row_data = data_table:FindRow(role_id, "error in here")
|
|
|
|
print(row_data)
|
|
end
|
|
|
|
|
|
return _M |