Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Config/Tags/Enemy.ini
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ GameplayTagList=(Tag="Enemy.Name.BrownWolf",DevComment="")
GameplayTagList=(Tag="Enemy.Name.DarkWolf",DevComment="")
GameplayTagList=(Tag="Enemy.Name.EarthGolem",DevComment="")
GameplayTagList=(Tag="Enemy.Name.FireElemental",DevComment="")
GameplayTagList=(Tag="Enemy.Name.ForestCreature",DevComment="")
GameplayTagList=(Tag="Enemy.Name.FireGolem",DevComment="")
GameplayTagList=(Tag="Enemy.Name.ForestCreature",DevComment="")
GameplayTagList=(Tag="Enemy.Name.GreenPlant",DevComment="")
GameplayTagList=(Tag="Enemy.Name.GreenSpider",DevComment="")
GameplayTagList=(Tag="Enemy.Name.GreyWolf",DevComment="")
Expand All @@ -19,15 +19,16 @@ GameplayTagList=(Tag="Enemy.Name.MiniPinkPlant",DevComment="")
GameplayTagList=(Tag="Enemy.Name.PinkPlant",DevComment="")
GameplayTagList=(Tag="Enemy.Name.PoisonElemental",DevComment="")
GameplayTagList=(Tag="Enemy.Name.RedSpider",DevComment="")
GameplayTagList=(Tag="Enemy.Name.SpiderQueen",DevComment="")
GameplayTagList=(Tag="Enemy.Name.StoneElement",DevComment="")
GameplayTagList=(Tag="Enemy.Name.WaterElemental",DevComment="")
GameplayTagList=(Tag="Enemy.Species",DevComment="")
GameplayTagList=(Tag="Enemy.Species.CarnivorousPlant",DevComment="")
GameplayTagList=(Tag="Enemy.Species.Golem",DevComment="")
GameplayTagList=(Tag="Enemy.Species.Spider",DevComment="")
GameplayTagList=(Tag="Enemy.Species.Spirit",DevComment="")
GameplayTagList=(Tag="Enemy.Type.Boss",DevComment="")
GameplayTagList=(Tag="Enemy.Species.Wolf",DevComment="")
GameplayTagList=(Tag="Enemy.Type.Boss",DevComment="")
GameplayTagList=(Tag="Enemy.Type.Nomal",DevComment="")
GameplayTagList=(Tag="ForestCreature",DevComment="")

3 changes: 3 additions & 0 deletions Config/Tags/Skill.ini
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ GameplayTagList=(Tag="Event.Character.Action.Normal.FireGolem",DevComment="")
GameplayTagList=(Tag="Event.Character.Action.Normal.ForestCreature",DevComment="")
GameplayTagList=(Tag="Event.Character.Action.Normal.IceGolem",DevComment="")
GameplayTagList=(Tag="Event.Character.Action.Normal.Spider",DevComment="")
GameplayTagList=(Tag="Event.Character.Action.Normal.SpiderQueen",DevComment="")
GameplayTagList=(Tag="Event.Character.Action.Normal.Stone",DevComment="")
GameplayTagList=(Tag="Event.Character.Action.NormalMeleeAttack",DevComment="")
GameplayTagList=(Tag="Event.Character.Action.PoisonSlash",DevComment="")
Expand All @@ -39,6 +40,7 @@ GameplayTagList=(Tag="Skill.Instant.ForestCreatureMeleeAttack",DevComment="")
GameplayTagList=(Tag="Skill.Instant.IceGolemIdentity",DevComment="")
GameplayTagList=(Tag="Skill.Instant.MysticShot",DevComment="")
GameplayTagList=(Tag="Skill.Instant.PoisonSlash",DevComment="")
GameplayTagList=(Tag="Skill.Instant.SpiderQueenIdentity",DevComment="")
GameplayTagList=(Tag="Skill.Instant.StoneElementalMeleeAttack",DevComment="")
GameplayTagList=(Tag="Skill.Normal.Cooldown",DevComment="")
GameplayTagList=(Tag="Skill.Normal.EarthGolem",DevComment="")
Expand All @@ -48,6 +50,7 @@ GameplayTagList=(Tag="Skill.Normal.ForestCreature",DevComment="")
GameplayTagList=(Tag="Skill.Normal.IceGolem",DevComment="")
GameplayTagList=(Tag="Skill.Normal.MeleeAttack",DevComment="")
GameplayTagList=(Tag="Skill.Normal.Spider",DevComment="")
GameplayTagList=(Tag="Skill.Normal.SpiderQueen",DevComment="")
GameplayTagList=(Tag="Skill.Normal.Stone",DevComment="")
GameplayTagList=(Tag="Skill.Passive",DevComment="")
GameplayTagList=(Tag="Skill.Passive.DamageUp",DevComment="")
Expand Down
Binary file modified Content/AI/SpiderMinion/BP_SpiderEgg.uasset
Binary file not shown.
Binary file not shown.
Binary file modified Content/AI/SpiderMinion/Montage/AM_Dead_SpiderMinion.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added Content/AI/SpiderQueen/ABP_SpiderQueen.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added Content/AI/SpiderQueen/BP_SpiderQueen.uasset
Binary file not shown.
Binary file added Content/AI/SpiderQueen/BS_SpiderQueen.uasset
Binary file not shown.
Binary file added Content/AI/SpiderQueen/BT/BB_SpiderQueen.uasset
Binary file not shown.
Binary file added Content/AI/SpiderQueen/BT/BT_SpiderQueen.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/Characters/Player/BP_MJNewPlayerCharacter.uasset
Binary file not shown.
Binary file modified Content/DataTable/Enemy/DT_EnemyDataTable.uasset
Binary file not shown.
Binary file modified Content/DataTable/Skill/DT_EnemySkillDataTable.uasset
Binary file not shown.
Binary file modified Content/Maps/JH_Test.umap
Binary file not shown.
Binary file modified Content/PlayerSkill/Normal/BPGE_NormalCooldown.uasset
Binary file not shown.
Binary file modified Content/PlayerSkill/Passive/DamageUp/BPGA_DamageUp.uasset
Binary file not shown.
Binary file modified Content/TG/GameData/AISpawn_Static_Data.uasset
Binary file not shown.
92 changes: 92 additions & 0 deletions Source/ProjectMJ/AnimInstance/Notify/MJAnim_SpawnMonster.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
// ThenOneDayStudio


#include "AnimInstance/Notify/MJAnim_SpawnMonster.h"

#include "ProjectMJ.h"
#include "MJ/Character/MJBossMonsterCharacter.h"
#include "TG/MJGameInstance.h"
#include "Character/Component/MJEnemySkillComponent.h"
#include "Components/CapsuleComponent.h"
#include "Kismet/GameplayStatics.h"


void UMJAnim_SpawnMonster::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation)
{
if (!SpawnMonster)
{
return;
}

if (SpawnCount <= 0)
{
return;
}

AMJBossMonsterCharacter* Owner = Cast<AMJBossMonsterCharacter>(MeshComp->GetOwner());
if (!Owner)
{
return;
}
if (!SpawnLocation.IsEmpty())
{
SpawnLocation.Empty();
}

int32 LimitSearch = SpawnCount * 10;

float InnerRadius = Owner->GetCapsuleComponent()->GetScaledCapsuleRadius();
float ExcludeHalfAngle = FMath::DegreesToRadians(60.f);

for (int32 i = 0; i < SpawnCount; i++)
{
bool SpawnCheck = false;
FVector NewDistance;

/*for (int Attempt = 0; Attempt < LimitSearch; Attempt++)
{*/
while (SpawnLocation.Num() <SpawnCount)
{
float Angle = FMath::FRandRange(0.f, 2 * PI);
float Distance = FMath::Sqrt(FMath::FRandRange(InnerRadius * InnerRadius, OuterRadius * OuterRadius));

float OffsetX = FMath::Cos(Angle) * Distance;
float OffsetY = FMath::Sin(Angle) * Distance;

NewDistance = FVector(Owner->GetActorLocation().X + OffsetX, Owner->GetActorLocation().Y + OffsetY, 0.f);

FVector DirToCandidate = (NewDistance - Owner->GetActorLocation()).GetSafeNormal();
float Dot = FVector::DotProduct(Owner->GetActorForwardVector(), DirToCandidate);
if (FMath::Acos(Dot) < ExcludeHalfAngle)
{
continue;
}

bool bTooClose = false;
for (const FVector& OldLocation : SpawnLocation)
{
if (FVector::Dist(OldLocation, NewDistance) < MinDistance)
{
bTooClose = true;
break;
}
}
if (!bTooClose)
{

SpawnCheck = true;
break;
}
//}
}
if (SpawnCheck)
{
SpawnLocation.Add(NewDistance);
GetWorld()->SpawnActor<APawn>(SpawnMonster, NewDistance, FRotator::ZeroRotator);
}
}

DrawDebugCircle(GetWorld(), Owner->GetActorLocation(), InnerRadius, 16, FColor::White, false, 0.2f, 0, 0, FVector::RightVector, FVector::ForwardVector, false);
DrawDebugCircle(GetWorld(), Owner->GetActorLocation(), OuterRadius, 16, FColor::Black,false, 0.2f, 0, 0, FVector::RightVector, FVector::ForwardVector, false);

}
38 changes: 38 additions & 0 deletions Source/ProjectMJ/AnimInstance/Notify/MJAnim_SpawnMonster.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// ThenOneDayStudio

#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotify.h"
#include "MJAnim_SpawnMonster.generated.h"

/**
*
*/
UCLASS()
class PROJECTMJ_API UMJAnim_SpawnMonster : public UAnimNotify
{
GENERATED_BODY()


public:
UPROPERTY(EditAnywhere,BlueprintReadOnly,Category="Pawn")
TSubclassOf<APawn> SpawnMonster;

UPROPERTY(EditAnywhere,Category="Pawn")
int32 SpawnCount;
UPROPERTY(EditAnywhere,Category="Pawn")
float OuterRadius;

UPROPERTY(EditAnywhere,Category="Pawn")
bool ForwordSpawn;

UFUNCTION()
virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation) override;

private:

TArray<FVector> SpawnLocation;

float MinDistance = 30.f;
};
4 changes: 2 additions & 2 deletions Source/ProjectMJ/Character/Component/MJSkillComponentBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#include "DataTable/MJSkillDataRow.h"
#include "DataTable/MJSkillLevelAbilityRow.h"

// Sets default values for this component's properties
// Sets default values for this component's propertiesk
UMJSkillComponentBase::UMJSkillComponentBase()
{
PrimaryComponentTick.bCanEverTick = false;
Expand Down Expand Up @@ -326,7 +326,7 @@ void UMJSkillComponentBase::RemoveAbility(const FGameplayTag& SkillTag)

if (GivenPassiveAbilityHandles.Contains(SkillTag))
{
ASC->ClearAbility(GivenSkillAbilityHandles[SkillTag]);
ASC->ClearAbility(GivenPassiveAbilityHandles[SkillTag]);
GivenPassiveAbilityHandles.Remove(SkillTag);
}

Expand Down
4 changes: 2 additions & 2 deletions Source/ProjectMJ/Character/Component/MJSkillComponentBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
* - *더 구체적으로 분류한다면, AI가 스킬을 여러개 사용 + 장착을 안 하는 개념으로 더 추상화 가능*
* Author: 신동민
* Created Date: 2025.07.08
* Last Modified By:
* Last Modified Date:
* Last Modified By: LEE JUHyeon
* Last Modified Date:2025.08.22
*/

DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnLearnSkillEvent,FGameplayTag,SkillTag,int32,Level);
Expand Down
11 changes: 7 additions & 4 deletions Source/ProjectMJ/Character/MJForestCreatureCharacter.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,18 @@
#pragma once

#include "CoreMinimal.h"
#include "MJ/Character/MJMonsterCharacter.h"
#include "MJ/Character/MJBossMonsterCharacter.h"
#include "MJForestCreatureCharacter.generated.h"

/**
*
* Class Description: ForestMonster
* Author: Lee JuHyeon
* Created Date: 2025.07.20.

*/
class UMJCharacterAttributeSet;
UCLASS()
class PROJECTMJ_API AMJForestCreatureCharacter : public AMJMonsterCharacter
class PROJECTMJ_API AMJForestCreatureCharacter : public AMJBossMonsterCharacter
{
GENERATED_BODY()

Expand All @@ -21,7 +24,7 @@ class PROJECTMJ_API AMJForestCreatureCharacter : public AMJMonsterCharacter
virtual void BeginPlay() override;

virtual void PossessedBy(AController* NewController) override;
FORCEINLINE UMJCharacterAttributeSet* GetAttributeSet() { return CharacterAttributeSet; }


private:

Expand Down
3 changes: 2 additions & 1 deletion Source/ProjectMJ/Character/MJPlayerCharacter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ AMJPlayerCharacter::AMJPlayerCharacter()
PlayerCombatComponent = CreateDefaultSubobject<UMJPlayerCombatComponent>(TEXT("PlayerCombatComponent"));

//Add FadeComponent
//FadeComponent = CreateDefaultSubobject<UMJFadeObjectComponent>(TEXT("FadeComponent"));
FadeComponent = CreateDefaultSubobject<UMJFadeObjectComponent>(TEXT("FadeComponent"));

// Minjin: AI Perception-캐릭터를 StimuliSource로 등록(AI가 감지)
PerceptionStimuliSourceComponent = CreateDefaultSubobject<UAIPerceptionStimuliSourceComponent>(TEXT("AIPerceptionStimuliSourceComponent"));
if (nullptr!= PerceptionStimuliSourceComponent)
Expand Down
4 changes: 2 additions & 2 deletions Source/ProjectMJ/Character/MJPlayerCharacter.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ class PROJECTMJ_API AMJPlayerCharacter : public AMJCharacterBase, public IMJInve
TObjectPtr<UMJPlayerCombatComponent>PlayerCombatComponent;

//FadeActor System Part
/*UPROPERTY(EditDefaultsOnly,BlueprintReadWrite,Category="Fade", meta = (AllowPrivateAccess = true))
TObjectPtr<UMJFadeObjectComponent>FadeComponent;*/
UPROPERTY(EditDefaultsOnly,BlueprintReadWrite,Category="Fade", meta = (AllowPrivateAccess = true))
TObjectPtr<UMJFadeObjectComponent>FadeComponent;
#pragma endregion

public:
Expand Down
Loading