初始化提交
This commit is contained in:
		
							
								
								
									
										94
									
								
								Content/Lua/GamePlay/Ability/Common/Pick.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								Content/Lua/GamePlay/Ability/Common/Pick.lua
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,94 @@ | ||||
| local Ability = {} | ||||
| local EBusyRoleState = import("EBusyRoleState") | ||||
| local ERoleMoveDirection = import("ERoleMoveDirection") | ||||
| local EBusyAnimationPhase = import("EBusyAnimationPhase") | ||||
| local KismetSystemLibrary = import("KismetSystemLibrary") | ||||
| local AbilitySystemBlueprintLibrary = import("AbilitySystemBlueprintLibrary") | ||||
| local GetGameplayTag = require("GamePlay.Utils").GetGameplayTag | ||||
|  | ||||
| local item_pick_tag = "Change.LevelItem.Health" | ||||
| local role_pick_cost_health_tag = "Change.Role.Health" | ||||
| local role_pick_cost_hunger_tag = "Change.Role.Hunger" | ||||
|  | ||||
|  | ||||
| local function GetSelfPickConsume(item_id) | ||||
|  | ||||
|  | ||||
| end | ||||
|  | ||||
|  | ||||
| function Ability:ctor() | ||||
|     self.target = nil | ||||
|     self.pick_phase = nil | ||||
|     self.delay_timer = nil | ||||
|     self.event_data = nil | ||||
| end | ||||
|  | ||||
| function Ability:K2_ActivateAbilityFromEvent(EventData) | ||||
|     print("Pick  Ability:K2_ActivateAbility") | ||||
|     self.pick_phase = EBusyAnimationPhase.PrepareCast | ||||
|  | ||||
|     self:ProcessAbilityPhase() | ||||
|     self.event_data = EventData | ||||
|     self.target = EventData.Target | ||||
| end | ||||
|  | ||||
| function Ability:K2_OnEndAbility() | ||||
|     local owner = self:GetOwningActorFromActorInfo() | ||||
|     if self.target:IsAlive() then | ||||
|         owner:TryActiveAbility("Ability.Role.Pick", self.event_data) | ||||
|     else | ||||
|         owner.proxy.state = EBusyRoleState.PickFinished | ||||
|         owner:UpdateRoleState() | ||||
|     end | ||||
| end | ||||
|  | ||||
| function Ability:ProcessAbilityPhase() | ||||
|     local owner = self:GetOwningActorFromActorInfo() | ||||
|     local Animation = owner["RoleAnimation"] | ||||
|  | ||||
|     Animation:PlayPickAnimation("Tree", Animation:GetMoveDirection(), self.pick_phase, 1.0) | ||||
|     if self.delay_timer ~= nil then | ||||
|         KismetSystemLibrary.K2_ClearTimerHandle(self, self.delay_timer) | ||||
|     end | ||||
|  | ||||
|     if self.pick_phase == EBusyAnimationPhase.PrepareCast then | ||||
|         local delegate = slua.createDelegate(function() | ||||
|             self.pick_phase = EBusyAnimationPhase.Casting | ||||
|             self:ProcessAbilityPhase() | ||||
|         end) | ||||
|         self.delay_timer = KismetSystemLibrary.K2_SetTimerDelegate(delegate, 0.5, false, true, 0, 0) | ||||
|     elseif self.pick_phase == EBusyAnimationPhase.Casting then | ||||
|         self.pick_phase = EBusyAnimationPhase.PostCast | ||||
|         self:ProcessAbilityPhase() | ||||
|         self:ApplayEffect(owner.RoleAbility) | ||||
|     else | ||||
|         local delegate = slua.createDelegate(function() | ||||
|             self:K2_EndAbility() | ||||
|         end) | ||||
|         self.delay_timer = KismetSystemLibrary.K2_SetTimerDelegate(delegate, 0.2, false, true, 0, 0) | ||||
|     end | ||||
| end | ||||
|  | ||||
| function Ability:ApplayEffect(asc) | ||||
|     local RoleUtils = require("GamePlay.Utils.RoleUtils") | ||||
|     local owner = self:GetOwningActorFromActorInfo() | ||||
|  | ||||
|     -- 物品的采集效果 | ||||
|     local item_asc = AbilitySystemBlueprintLibrary.GetAbilitySystemComponent(self.target) | ||||
|     local pick_handle = asc:MakeOutgoingSpec( | ||||
|         self.AbilityEffectConfigs:Get("LevelItem"), 1, asc:MakeEffectContext() | ||||
|     ) | ||||
|     AbilitySystemBlueprintLibrary.AssignTagSetByCallerMagnitude( | ||||
|         pick_handle, GetGameplayTag(item_pick_tag), -owner.RoleConfig.PickEffect | ||||
|     ) | ||||
|  | ||||
|     -- 自己的消耗 | ||||
|     RoleUtils.ChangeHunger(owner,-self.target.LevelItemConfig.PickHungerCost) | ||||
|  | ||||
|     asc:BP_ApplyGameplayEffectSpecToTarget(pick_handle, item_asc) | ||||
| end | ||||
|  | ||||
|  | ||||
|  | ||||
| return Class(nil, nil, Ability) | ||||
		Reference in New Issue
	
	Block a user