magic update #2

This commit is contained in:
Nyx
2025-09-26 17:50:32 -06:00
parent 6da5d7f1fb
commit dc2c5af68a
34 changed files with 449 additions and 20 deletions

View File

@@ -0,0 +1,13 @@
{
"version": "1.0",
"components": [
"Microsoft.Net.Component.4.6.2.TargetingPack",
"Microsoft.VisualStudio.Component.VC.14.38.17.8.x86.x64",
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
"Microsoft.VisualStudio.Component.Windows10SDK.22621",
"Microsoft.VisualStudio.Workload.CoreEditor",
"Microsoft.VisualStudio.Workload.ManagedDesktop",
"Microsoft.VisualStudio.Workload.NativeDesktop",
"Microsoft.VisualStudio.Workload.NativeGame"
]
}

View File

@@ -1,2 +1,9 @@
[ContentBrowser]
ContentBrowserTab1.SelectedPaths=/Game/ThirdPersonBP
ContentBrowserTab1.SelectedPaths=/Game/ThirdPersonBP
[/Script/GameplayDebugger.GameplayDebuggerUserSettings]
bEnableGameplayDebuggerInEditor=True
MaxViewDistance=25000.000000
MaxViewAngle=45.000000
FontSize=10

View File

@@ -164,3 +164,6 @@ ClientSettings=(DisplayName="",AvatarColor=(R=1.000000,G=1.000000,B=1.000000,A=1
SourceControlSettings=(ValidationMode=Soft)
EndpointSettings=(bEnableLogging=False,PurgeProcessedMessageDelaySeconds=30,RemoteEndpointTimeoutSeconds=60)
[CoreRedirects]
+ClassRedirects=(OldName="/Script/Elistria_Calling.MagickPlayerState",NewName="/Script/Elistria_Calling.MagickPlayerState")

View File

@@ -0,0 +1,38 @@
[/Script/GameplayTags.GameplayTagsList]
GameplayTagList=(Tag="Spell.Chaos.Air.BuffetingWinds",DevComment="")
GameplayTagList=(Tag="Spell.Chaos.Air.GaleThrust",DevComment="")
GameplayTagList=(Tag="Spell.Chaos.Air.Suffocate",DevComment="")
GameplayTagList=(Tag="Spell.Chaos.Lightning.FieldOfLightning",DevComment="")
GameplayTagList=(Tag="Spell.Chaos.Lightning.Squall",DevComment="")
GameplayTagList=(Tag="Spell.Chaos.Lightning.ThunderStrikes",DevComment="")
GameplayTagList=(Tag="Spell.Chaos.Water.CleansingWave",DevComment="")
GameplayTagList=(Tag="Spell.Chaos.Water.CurrentBash",DevComment="")
GameplayTagList=(Tag="Spell.Chaos.Water.Tsunami",DevComment="")
GameplayTagList=(Tag="Spell.Death.Darkness.Oblivion",DevComment="")
GameplayTagList=(Tag="Spell.Death.Darkness.StolenSight",DevComment="")
GameplayTagList=(Tag="Spell.Death.Darkness.TurnToShadow",DevComment="")
GameplayTagList=(Tag="Spell.Death.Ice.FallenFrost",DevComment="")
GameplayTagList=(Tag="Spell.Death.Ice.PillarsOfIce",DevComment="")
GameplayTagList=(Tag="Spell.Death.Ice.Winter",DevComment="")
GameplayTagList=(Tag="Spell.Death.Necromancy.Apocalypse",DevComment="")
GameplayTagList=(Tag="Spell.Death.Necromancy.RaiseTheDead",DevComment="")
GameplayTagList=(Tag="Spell.Death.Necromancy.VitalityDrain",DevComment="")
GameplayTagList=(Tag="Spell.Life.Blood.Annihilate",DevComment="")
GameplayTagList=(Tag="Spell.Life.Blood.BleedingWounds",DevComment="")
GameplayTagList=(Tag="Spell.Life.Blood.BloodCage",DevComment="")
GameplayTagList=(Tag="Spell.Life.Earth.Entomb",DevComment="")
GameplayTagList=(Tag="Spell.Life.Earth.SplitTheEarth",DevComment="")
GameplayTagList=(Tag="Spell.Life.Earth.StoneShield",DevComment="")
GameplayTagList=(Tag="Spell.Life.Healing.GiveLife",DevComment="")
GameplayTagList=(Tag="Spell.Life.Healing.RestoringTouch",DevComment="")
GameplayTagList=(Tag="Spell.Life.Healing.Sanctuary",DevComment="")
GameplayTagList=(Tag="Spell.Light.Fire.FireLights",DevComment="")
GameplayTagList=(Tag="Spell.Light.Fire.Meteor",DevComment="")
GameplayTagList=(Tag="Spell.Light.Fire.PheonixFire",DevComment="")
GameplayTagList=(Tag="Spell.Light.Solar.Radiance",DevComment="")
GameplayTagList=(Tag="Spell.Light.Solar.SearingRay",DevComment="")
GameplayTagList=(Tag="Spell.Light.Solar.ShieldOfTheSun",DevComment="")
GameplayTagList=(Tag="Spell.Light.Starlight.Constellation",DevComment="")
GameplayTagList=(Tag="Spell.Light.Starlight.SongOfFallingStars",DevComment="")
GameplayTagList=(Tag="Spell.Light.Starlight.StarGuide",DevComment="")

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:64b8cb2d0256d3c6932480de5d06f2a5db803cb779fbd761955166227c217ecc
size 20676

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:81377c0fea41cf55adfa56c15334ed44fdfce9553cda02e22d17e66747780904
size 40510

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5267d1283afc8c24d984d7aa7b4fc9ba9876fdf92a86b2af774e7aea53523cef
size 628427
oid sha256:29d64571f6460819033c27ed73cb7ae0fc341533414a45bc7eca96719146263d
size 631354

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:307183ef9f7856224a958811282425954f15c24b756afaa000c6d228f39835c6
size 26295

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ef1198d12ae12a44ae330d19d6c681c07ac61c37d1d4e32ae5643cfd061f6540
size 344882
oid sha256:9b5c9bd9d2c553f59efea93210aa16b41d3ce0c29edd86751f8f25a228bccaf0
size 338962

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5249343c265ad7efaa6e7cb054dd89c25747e7eb106419ca4f9153619d15003b
size 54769

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fd55a1aca6c53f26e20287e4e9202d55be42709b151e74239c17eaf44216a4a1
size 34669
oid sha256:b9fbf1ee3289dc7711445f470ef96ef38ee070f70a4794129a5ef6846d026c7d
size 2797

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ea2a6797840f1630482ad1e9bf7b0619da5beaff02c8b610389814633efc99d9
oid sha256:c6d2d79168f442b1b8573130dc5d76681167a55a3ea1af46db55cf9d02228312
size 15406

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9c036e104dc65138ad0a395489484330c38ad21be9b7887303f936cf212bbaf7
size 1436103
oid sha256:14804ce910d3731bbc91645873e604e45005f987cd44007849e7fa0ae2e8711c
size 1463008

View File

@@ -3,6 +3,17 @@
"EngineAssociation": "5.4",
"Category": "",
"Description": "",
"Modules": [
{
"Name": "Elistria_Calling",
"Type": "Runtime",
"LoadingPhase": "Default",
"AdditionalDependencies": [
"GameplayAbilities",
"Engine"
]
}
],
"Plugins": [
{
"Name": "ModelingToolsEditorMode",
@@ -289,6 +300,28 @@
{
"Name": "PerforceSourceControl",
"Enabled": false
},
{
"Name": "Buoyancy",
"Enabled": true
},
{
"Name": "Volumetrics",
"Enabled": true
},
{
"Name": "VirtualHeightfieldMesh",
"Enabled": true
},
{
"Name": "SteamSockets",
"Enabled": true
}
],
"TargetPlatforms": [
"Linux",
"LinuxArm64",
"Windows",
"Mac"
]
}

View File

@@ -0,0 +1,15 @@
// Fill out your copyright notice in the Description page of Project Settings.
using UnrealBuildTool;
using System.Collections.Generic;
public class Elistria_CallingTarget : TargetRules
{
public Elistria_CallingTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
DefaultBuildSettings = BuildSettingsVersion.V5;
ExtraModuleNames.AddRange( new string[] { "Elistria_Calling" } );
}
}

View File

@@ -0,0 +1,23 @@
// Fill out your copyright notice in the Description page of Project Settings.
using UnrealBuildTool;
public class Elistria_Calling : ModuleRules
{
public Elistria_Calling(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore","GameplayAbilities", "GameplayTags", "GameplayTasks" });
PrivateDependencyModuleNames.AddRange(new string[] { });
// Uncomment if you are using Slate UI
PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
// Uncomment if you are using online features
PrivateDependencyModuleNames.Add("OnlineSubsystem");
// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
}
}

View File

@@ -0,0 +1,6 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "Elistria_Calling.h"
#include "Modules/ModuleManager.h"
IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, Elistria_Calling, "Elistria_Calling" );

View File

@@ -0,0 +1,6 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"

View File

@@ -0,0 +1,5 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "ElistriaAbilitySystemComponent.h"

View File

@@ -0,0 +1,5 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "HealthAttributeSet.h"

View File

@@ -0,0 +1,17 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "MagickPlayerController.h"
#include "MagickPlayerState.h"
void AMagickPlayerController::OnPossess(APawn *InPawn)
{
Super::OnPossess(InPawn);
UE_LOG(LogTemp, Display, TEXT("OnPossess"));
AMagickPlayerState* PS = GetPlayerState<AMagickPlayerState>();
if (PS)
{
PS->SetupAbilityActorInfo();
}
}

View File

@@ -0,0 +1,59 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "MagickPlayerState.h"
AMagickPlayerState::AMagickPlayerState()
{
ElistriaAbilitySystemComponent = CreateDefaultSubobject<UElistriaAbilitySystemComponent>(TEXT("AbilitySystem"));
ManaSet = CreateDefaultSubobject<UManaAttributeSet>(TEXT("ManaSet"));
}
UElistriaAbilitySystemComponent* AMagickPlayerState::GetAbilitySystemComponent() const
{
return ElistriaAbilitySystemComponent;
}
void AMagickPlayerState::BeginPlay()
{
Super::BeginPlay();
}
void AMagickPlayerState::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
DOREPLIFETIME_CONDITION_NOTIFY(AMagickPlayerState, ElistriaAbilitySystemComponent, COND_None, REPNOTIFY_Always);
DOREPLIFETIME_CONDITION_NOTIFY(AMagickPlayerState, ManaSet, COND_None, REPNOTIFY_Always);
}
void AMagickPlayerState::SetupAbilityActorInfo()
{
AMagickPlayerController* PC = Cast<AMagickPlayerController>(GetOwner());
if (!PC)
{
return;
}
APawn* Pawn = PC->GetPawn();
if (!Pawn)
{
return;
}
if (ElistriaAbilitySystemComponent)
{
ElistriaAbilitySystemComponent->InitAbilityActorInfo(this,Pawn);
if (ManaSet)
{
ElistriaAbilitySystemComponent->AddAttributeSetSubobject(ManaSet.Get());
}
}
}

View File

@@ -0,0 +1,34 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "ManaAttributeSet.h"
UManaAttributeSet::UManaAttributeSet()
{
InitMana(100.0f);
InitMaxMana(100.0f);
}
void UManaAttributeSet::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
DOREPLIFETIME_CONDITION_NOTIFY(UManaAttributeSet, Mana, COND_None, REPNOTIFY_Always);
DOREPLIFETIME_CONDITION_NOTIFY(UManaAttributeSet, MaxMana, COND_None, REPNOTIFY_Always);
}
void UManaAttributeSet::OnRep_Mana(const FGameplayAttributeData& OldValue)
{
GAMEPLAYATTRIBUTE_REPNOTIFY(UManaAttributeSet, Mana, OldValue);
const float OldMana = OldValue.GetCurrentValue();
const float NewMana = GetMana();
OnManaChanged.Broadcast(this, OldMana, NewMana);
}
void UManaAttributeSet::OnRep_MaxMana(const FGameplayAttributeData& OldValue)
{
GAMEPLAYATTRIBUTE_REPNOTIFY(UManaAttributeSet, MaxMana, OldValue);
const float OldMaxMana = OldValue.GetCurrentValue();
const float NewMaxMana = GetMaxMana();
OnMaxManaChanged.Broadcast(this, OldMaxMana, NewMaxMana);
}

View File

@@ -0,0 +1,17 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "AbilitySystemComponent.h"
#include "ElistriaAbilitySystemComponent.generated.h"
/**
*
*/
UCLASS()
class ELISTRIA_CALLING_API UElistriaAbilitySystemComponent : public UAbilitySystemComponent
{
GENERATED_BODY()
};

View File

@@ -0,0 +1,17 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "AttributeSet.h"
#include "HealthAttributeSet.generated.h"
/**
*
*/
UCLASS()
class ELISTRIA_CALLING_API UHealthAttributeSet : public UAttributeSet
{
GENERATED_BODY()
};

View File

@@ -0,0 +1,19 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "MagickPlayerController.generated.h"
/**
*
*/
UCLASS()
class ELISTRIA_CALLING_API AMagickPlayerController : public APlayerController
{
GENERATED_BODY()
virtual void OnPossess(APawn* InPawn) override;
};

View File

@@ -0,0 +1,36 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/PlayerState.h"
#include "AbilitySystemInterface.h"
#include "ElistriaAbilitySystemComponent.h"
#include "ManaAttributeSet.h"
#include "MagickPlayerController.h"
#include "MagickPlayerState.generated.h"
UCLASS(Config=game)
class ELISTRIA_CALLING_API AMagickPlayerState : public APlayerState, public IAbilitySystemInterface
{
GENERATED_BODY()
virtual void BeginPlay() override;
public:
AMagickPlayerState();
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
virtual UElistriaAbilitySystemComponent* GetAbilitySystemComponent() const override;
void SetupAbilityActorInfo();
protected:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category=Abilities, Replicated)
TObjectPtr<class UElistriaAbilitySystemComponent> ElistriaAbilitySystemComponent;
UPROPERTY(Replicated)
TObjectPtr<class UManaAttributeSet> ManaSet;
};

View File

@@ -0,0 +1,52 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "AttributeSet.h"
#include "AbilitySystemComponent.h"
#include "Net/UnrealNetwork.h"
#include "ManaAttributeSet.generated.h"
/**
*
*/
#define ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \
GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \
GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \
GAMEPLAYATTRIBUTE_VALUE_SETTER(PropertyName) \
GAMEPLAYATTRIBUTE_VALUE_INITTER(PropertyName)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FAttributeChangedEvent, UAttributeSet*, AttributeSet, float, OldValue, float, NewValue);
UCLASS()
class ELISTRIA_CALLING_API UManaAttributeSet : public UAttributeSet
{
GENERATED_BODY()
public:
UManaAttributeSet();
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, ReplicatedUsing=OnRep_Mana)
FGameplayAttributeData Mana;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, ReplicatedUsing=OnRep_MaxMana)
FGameplayAttributeData MaxMana;
ATTRIBUTE_ACCESSORS(UManaAttributeSet, Mana)
ATTRIBUTE_ACCESSORS(UManaAttributeSet, MaxMana)
UFUNCTION()
void OnRep_Mana(const FGameplayAttributeData& OldValue);
UFUNCTION()
void OnRep_MaxMana(const FGameplayAttributeData& OldValue);
UPROPERTY(BlueprintAssignable)
FAttributeChangedEvent OnManaChanged;
UPROPERTY(BlueprintAssignable)
FAttributeChangedEvent OnMaxManaChanged;
};

View File

@@ -0,0 +1,15 @@
// Fill out your copyright notice in the Description page of Project Settings.
using UnrealBuildTool;
using System.Collections.Generic;
public class Elistria_CallingEditorTarget : TargetRules
{
public Elistria_CallingEditorTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Editor;
DefaultBuildSettings = BuildSettingsVersion.V5;
ExtraModuleNames.AddRange( new string[] { "Elistria_Calling" } );
}
}