From ddde270ad5488e4bf258c401cf975fd428ec54cc Mon Sep 17 00:00:00 2001 From: wyatt Date: Sat, 18 Oct 2025 17:30:58 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BA=86=E7=8B=90=E7=8B=B8?= =?UTF-8?q?=E5=A4=A7=E6=8B=9B=E5=86=B7=E5=8D=B4=E5=92=8C=E6=B6=88=E8=80=97?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Config/DefaultGameplayTags.ini | 1 + .../Blueprint/Level/Actor/Role/BP_Fox.uasset | Bin 27682 -> 30794 bytes .../Ability/Role/Fox/GA_FoxUltimate.uasset | Bin 21842 -> 22296 bytes .../Role/Fox/GE_FoxUltimateCost.uasset | Bin 0 -> 13105 bytes .../Role/Fox/GE_UltimateCooldown.uasset | Bin 0 -> 7650 bytes Content/Level/FalconPlain.umap | Bin 25626 -> 25682 bytes .../Lua/Gas/Ability/Role/Fox/FoxUltimate.lua | 31 ++++++++++++++++-- .../AbilitySystemComponentBinding.cpp | 22 ++----------- .../Private/Level/Actor/BusyPawnBase.cpp | 15 +++++++++ .../Private/Level/Actor/BusyPlayerRole.cpp | 14 ++++---- .../Public/Level/Actor/BusyPawnBase.h | 13 ++++++-- 11 files changed, 65 insertions(+), 31 deletions(-) create mode 100644 Content/Gas/Effects/Role/Fox/GE_FoxUltimateCost.uasset create mode 100644 Content/Gas/Effects/Role/Fox/GE_UltimateCooldown.uasset diff --git a/Config/DefaultGameplayTags.ini b/Config/DefaultGameplayTags.ini index 017d2ed..30b2d63 100644 --- a/Config/DefaultGameplayTags.ini +++ b/Config/DefaultGameplayTags.ini @@ -9,6 +9,7 @@ InvalidTagCharacters="\"\'," NumBitsForContainerSize=6 NetIndexFirstBitSegment=16 +GameplayTagList=(Tag="Ability.Block.UltimatePlaying",DevComment="大招正在释放中") ++GameplayTagList=(Tag="Ability.Flags.Cooldown",DevComment="技能冷却") +GameplayTagList=(Tag="Ability.Flags.Recast",DevComment="可以再次释放技能的标记") +GameplayTagList=(Tag="Ability.Role.AttributeConsume",DevComment="角色属性损耗debuff") +GameplayTagList=(Tag="Ability.Role.EatFood",DevComment="干饭") diff --git a/Content/Blueprint/Level/Actor/Role/BP_Fox.uasset b/Content/Blueprint/Level/Actor/Role/BP_Fox.uasset index 325b22f73e0e0abe57bf21d458cc9e9cc7ddc187..ffd54c35564e679d11221587436b56eac52eee84 100644 GIT binary patch delta 8096 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 diff --git a/Content/Gas/Ability/Role/Fox/GA_FoxUltimate.uasset b/Content/Gas/Ability/Role/Fox/GA_FoxUltimate.uasset index 7459cdfa6eefcb898312d5fd084347077fe5c7fe..a257f5d9d29f03234b738afe45f74a8f39c4a5d0 100644 GIT binary patch delta 4244 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 T&#rdM&_)^VkTDT1&CU4_u@nA- diff --git a/Content/Gas/Effects/Role/Fox/GE_FoxUltimateCost.uasset b/Content/Gas/Effects/Role/Fox/GE_FoxUltimateCost.uasset new file mode 100644 index 0000000000000000000000000000000000000000..bb91c84b6b571e33dda1e0f8df3f4a915bbcbe1b GIT binary patch literal 13105 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 L&2e&1A^v{>?|oS1+ml?5%5tB z{;1I?;b=_MnBoHrs3GB(k3@-yqA^B%B`PM3iVyUMQ3FO)Jm>Dr?!DZ55rM=%PO^Ju z&iUq?nRCvZncc?@OCKDT4g@7>97?2c!Cj28wk*aZq+dc@io{P8Fy_TkmyysA;FMjRzPbc4*zfrmP#KVh{G$whRmnj3hP>bZi+I*_aq!x@BN!^C)}l z=O_9O?weAQ3%?ZjY~SMKO>ijSlF1OY^(n%>N6Ae(Ngg+hRq0h4aU|@V%u9(TYIJrwJyAs*d9t&YD|ocQ03&U} zxdOI0ri0aZqoziW>0wVJYzx;$_Il|H+tC#|ZLY$ovK-mM=zN|Zb!|G>jx%5mRTpD} zaZ{LZh|so84@(xA8{M}`r|m<8QR0iW)sb3kpLgqEO*5m)NJ_#e04JxV2F^YXn+p49 z)+_xSLJ`O&mDqBUI!$3;RJjw`!l1|-$2uJhd>`0)uu^Y@4gOx+g6hiZD7@pJ$ib^a zZ6$CdJZG$kk3{5K`Iw06f_Mxgt z=`sRK3n9Pk8F>LWq&4VO4IVAa1$!tW_n07hARh9`aT7_KI(O6TS+Yo7t!A?Cf!AmI zk29f%pK^oi?PY|*R+1uW9#z85 z9^aK!oFh~SN;yEyu!z|yzD`v&G?eD%kS>l%i z)1JgkQRy!Cj;-cuh^XgeI(C+f+&Vf~ojyNlh~<{)Sj^-wL-nIuKvd>4y{NEuK25ts zQ4Vt9l6mUOY)l1NnkVfd*jycBmS`#@mW!Q&LMPXeSrT%c6o!UbB#Lo)EvH0OPoF;B zzf`Q_?E5NofK?^Kda7_K_RqxA|mO*_@1wL>R4dw7=(0OoA%{_UJFFqe{ z`hDm0NV{Xv$wRNnlM+acMG)vJ$imr)hCPUP#OmQdC0&>kN~rLV;o;rFTdXu7}u>P)}4Gt@GF1wk=^Q$g(i@{v!MgXQHt9fg*U{2UZo-t3x3 zenqdW>*y}RyHlCk3t%fIeB zwlTxslV(a424*SoAE!eYKFFDN4Z^UZ~`S+<``F8p_vZE#h>d%pX2ov5|+_&M#{ z21RTC!FrwL37kAKa2D%SJ6gq+r)JmERE`;cG*IE0XC?d#|IBnzfstCFB-yO{eE3gg delta 6241 zcmeHKeQXp(6yJrm^jcc3cfGr%y?$MdesG1-0!N|cT4*VULj3@R3QAE> z3;{8sdH9DI2n38KwnS1R8U!Vv0b@{%(Lf@QASgwQXd)ycb>8gE-ClPWutNNYN$%#& zyx;qn_vXFb{pOgs?U?vpswj3snwTE*tRM&t!vsMj^AYfhdEW111VJLJQj;Lq$&Bm$ zgg``L64@ueTJqbq{nV!4manYZfAh@&XWgoeNrs3?*U$YjWAnu0doSM@wFU90=UF%* zHaa?q#6>?@D#idAoymfL+x`B&>S2q;zT?BwqS7WSK&S@CVtEpNB0@{yd`$Yi<=7J zptJm_9u=okSB4)}EyIte<}BCM=GNuZ>2jXY<*e4_v}h+n?(thD^3uK;obPw5H7NI?Nuo`HyNLIWucxXKRvTzwYHBa+6 zCm5W^mNY*)J}lORC)*;yV>MczW-zqS!P4=Ww#Z(qGqEOBZ2^a_FVc7Xo8Eu)3@3SGFHKzITmw9n(*fc{7D%hU_!4&$cxjh0r(AHu!?^raNaI4tC1|CCl?0b!J-eR zO~7wATd^l{hxlDS<<}4igA?`-!pq2G+6SAGTEmN61w|9!QqoQf*`gzr&8RMqUevQK z;fB#{R|0RgIf|xhB-yeDmsoI#xJ;*9be?-+X2OAK2I9bz5*O3V_Rv}h>~h$kJ0(eM zf;UpqGnEfr3S*%YltK?s7r%0bi({ZN%`7%Uk24)cW*EeIxDGMUN)0q*#6n7b6l_V| zCzeu~36Pt)$5PB(QEInQiN7+VpwN+L@o6A@h)B4MoS7QzdcvM$Y0==cLR^*u`p1|o zvvj!Q;&=q6GsJkPtToRUV%bs^*Gk6V%?6j4h`@^uYbnBDNn-}0$Vi2cTe8x43+DFu zj48)qhBNU}Oe&@2i&qG3PP-wC?Ra3lGb<$YLrK%|J5Eo@{nXrfYJAzL2}YJE)jd$u zH&!pL?^0UOSbVw#J%{NV%Vz9}F09OiRJMZ?y^7=52JHdK0o9ZsEM@h{4PiwNHiXx5 z5>5OXG7aRzBiMfM{0X>}RiXn845w6yRhI^yT(gd{MCu2gQ`;Ey;qW^V!%7scmHWGmesG&KMx%`7Sq=b*-TI9Fi2 z2U^z@-V3c#(cRX%v*_-}RI*@2VCL}Z{g;fH0vVgc5?KZAY$-A1j)pAU!Lr0BS2+_? zmWy2JwPP(}d$6Q!1n7a)V=s_TFtN%kPJu30KA|h!IelNcAlfLFZG8RUjb7GOeMfXCs_icu$&sn)H+W7m1Pd|z6zkV|LLizinmVAB?<=}_< z$V^o`tk&>#Ha_uf7{-uCD@A%>Vgnk^YAPfDR~uFY=v~u;w0B037H01s_q2z$QMjEKlMn8=-7rVjAIA$npkzA@= z#B(;A`D8ROYCLqb*hT!0FX84=^o0J!>n`p2iZ|U6M5p3S7tQNF7!^-B6r+8g%<8-U zRx3W`ji1+1 Im={(213guA!2kdN diff --git a/Content/Lua/Gas/Ability/Role/Fox/FoxUltimate.lua b/Content/Lua/Gas/Ability/Role/Fox/FoxUltimate.lua index 0d4d74b..6cadc13 100644 --- a/Content/Lua/Gas/Ability/Role/Fox/FoxUltimate.lua +++ b/Content/Lua/Gas/Ability/Role/Fox/FoxUltimate.lua @@ -11,12 +11,18 @@ function FoxUltimate:ctor() self.ultimate_phase = 1 -- 大招阶段 self.active_recast_handle = nil self.active_accelerate_handle = nil + + self.tag_add_or_remove_delegate = nil end function FoxUltimate:K2_ActivateAbilityFromEvent(EventData) print("FoxUltimate:K2_ActivateAbilityFromEvent", self.ultimate_phase) + if not self:K2_CommitAbilityCost(false) then + return self:K2_EndAbility() + end + local owner = self:GetOwningActorFromActorInfo() self.movement = owner.MovementComponent self.animation = owner.SpineAnimationComponent @@ -25,8 +31,17 @@ function FoxUltimate:K2_ActivateAbilityFromEvent(EventData) local asc = self.asc + if self.tag_add_or_remove_delegate == nil then + self.tag_add_or_remove_delegate = slua.createDelegate(function(tag, is_add) + if is_add == 0 and not self.bIsActive then + self.ultimate_phase = 1 + self:K2_CommitAbilityCooldown(false, false) + end + end) + owner:BindGameplayTagAddOrRemove(self.recast_tag, self.tag_add_or_remove_delegate) + end + if self.ultimate_phase == 1 or asc:HasMatchingGameplayTag(self.recast_tag) then - print("triggered") self:TriggerUltimate(asc) else self:K2_EndAbility() @@ -134,7 +149,19 @@ end function FoxUltimate:OnAnimationComplete(entry) - self.ultimate_phase = self.ultimate_phase + 1 + local new_phase = self.ultimate_phase + 1 + if new_phase > 3 then + self.ultimate_phase = 1 + else + self.ultimate_phase = new_phase + end + print("FoxUltimate:OnAnimationComplete", self.ultimate_phase) + + if not self.asc:HasMatchingGameplayTag(self.recast_tag) then + self.ultimate_phase = 1 + self:K2_CommitAbilityCooldown(false, false) + end + entry.AnimationComplete:Clear() entry.AnimationEvent:Clear() self:K2_EndAbility() diff --git a/Source/BusyRabbit/Private/CppBindings/AbilitySystemComponentBinding.cpp b/Source/BusyRabbit/Private/CppBindings/AbilitySystemComponentBinding.cpp index 2601650..0267533 100644 --- a/Source/BusyRabbit/Private/CppBindings/AbilitySystemComponentBinding.cpp +++ b/Source/BusyRabbit/Private/CppBindings/AbilitySystemComponentBinding.cpp @@ -1,27 +1,9 @@ #include "LuaCppBinding.h" -#include "AbilitySystemComponent.h" -#include "GameplayTagContainer.h" + using slua::lua_State, slua::LuaObject, slua::LuaStruct; -using namespace slua; - - -#pragma optimize( "", off ) - - -bool HasMatchingGameplayTag(const UAbilitySystemComponent& Asc, const FName& TagName) -{ - // return Asc.HasMatchingGameplayTag(FGameplayTag::RequestGameplayTag(TagName)); - return true; -} extern void RegisterAbilitySystemComponentExtension() { - REG_EXTENSION_METHOD_LAMBDA(UAbilitySystemComponent, "AHasMatchingGameplayTag", false, - [](UAbilitySystemComponent* ASC, const FName& Tag) -> bool { - return true; - } - ); + } -#pragma optimize( "", on) - diff --git a/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp b/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp index a871dad..65198c9 100644 --- a/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp +++ b/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp @@ -77,3 +77,18 @@ void ABusyPawnBase::InitPawnAbilities(const FBusyPawnBaseConfig& Config)const } } +void ABusyPawnBase::BindGameplayTagAddOrRemove(const FGameplayTag& Tag, FGameplayTagAddOrRemoveDelegate Delegate)const +{ + AbilitySystemComponent->RegisterGameplayTagEvent(Tag, EGameplayTagEventType::NewOrRemoved).AddLambda( + [Delegate](const FGameplayTag GameplayTag, const int32 Value) + { + Delegate.ExecuteIfBound(GameplayTag, Value); + } + ); +} + +void ABusyPawnBase::InitCollision() +{ +} + + diff --git a/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp b/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp index dfad955..fca496e 100644 --- a/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp +++ b/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp @@ -32,18 +32,18 @@ void ABusyPlayerRole::InitPawnAttributes(const struct FBusyPawnBaseConfig& Confi Super::InitPawnAttributes(Config); UBusyPlayerRoleAttributeSet* RoleAttributes = Cast(Attributes); - if (RoleAttributes && Config.StaticStruct() == FBusyRoleBaseConfig::StaticStruct()) + // if (RoleAttributes && Config.StaticStruct() == FBusyRoleBaseConfig::StaticStruct()) { const FBusyRoleBaseConfig* RoleConfig = static_cast(&Config); RoleAttributes->InitHunger(RoleConfig->Hunger); RoleAttributes->InitMaxHunger(RoleConfig->Hunger); RoleAttributes->InitHungerConsume(RoleConfig->HungerConsume); } - else - { - UE_LOG(LogBusyPawn, Warning, TEXT("ABusyPlayerRole::InitPawnAttributes Failed, RoleAttribute: %p, ConfigName: %s"), - RoleAttributes, *Config.StaticStruct()->GetFName().ToString() - ); - } + // else + // { + // UE_LOG(LogBusyPawn, Warning, TEXT("ABusyPlayerRole::InitPawnAttributes Failed, RoleAttribute: %p, ConfigName: %s"), + // RoleAttributes, *Config.StaticStruct()->GetFName().ToString() + // ); + // } } diff --git a/Source/BusyRabbit/Public/Level/Actor/BusyPawnBase.h b/Source/BusyRabbit/Public/Level/Actor/BusyPawnBase.h index 32041dc..1b439a2 100644 --- a/Source/BusyRabbit/Public/Level/Actor/BusyPawnBase.h +++ b/Source/BusyRabbit/Public/Level/Actor/BusyPawnBase.h @@ -4,15 +4,17 @@ #include "Level/Actor/Components/BusyAbilitySystemComponent.h" #include "BusyPawnBase.generated.h" - -class USphereComponent; struct FBusyPawnBaseConfig; +class USphereComponent; class USpineBoneFollowerComponent; class USpineSkeletonRendererComponent; class USpineSkeletonAnimationComponent; class UBusyPawnMovementComponent; +DECLARE_DYNAMIC_DELEGATE_TwoParams(FGameplayTagAddOrRemoveDelegate, const FGameplayTag&, Tag, const int32, Value); + + #define MY_ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \ @@ -67,6 +69,13 @@ public: virtual void InitPawnAttributes(const FBusyPawnBaseConfig& Config); virtual void InitPawnAbilities(const FBusyPawnBaseConfig& Config) const; +public: + UFUNCTION(BlueprintCallable) + void BindGameplayTagAddOrRemove(const FGameplayTag& Tag, FGameplayTagAddOrRemoveDelegate Delegate)const; + + +protected: + void InitCollision(); protected: UPROPERTY(EditDefaultsOnly)