// Project Lab - NHTV Igad #include "UnrealProject.h" #include "IntimidatingAuraTrigger.h" #include "NetworkCharacter.h" #include "NativeModifiers.h" #include "Modifier.h" AIntimidatingAuraTrigger::AIntimidatingAuraTrigger() { } void AIntimidatingAuraTrigger::BeginPlay() { Super::BeginPlay(); } void AIntimidatingAuraTrigger::Tick(float deltaTime) { Super::Tick(deltaTime); } void AIntimidatingAuraTrigger::HitEvent(ANetworkCharacter* otherActor) { ModifierManager* manager = otherActor->GetModifierManager(); if (playerMap.Find(otherActor)== nullptr) { RERROR("2 modifiers in the intimidatin aura"); } if (manager) { AAttackSpeedModifierConstant* ASModifier = GetWorld()->SpawnActor(); ASModifier->lifeTime = 0; ASModifier->attackSpeedMultiplier = attackSpeedMultiplier; ASModifier->target = otherActor; manager->AddModifier(ASModifier); ASpeedModifier* SModifier = GetWorld()->SpawnActor(); SModifier->lifeTime = 0; SModifier->speedMultiplier = MovementSpeedMultiplier; SModifier->target = otherActor; manager->AddModifier(ASModifier); // std::pair pair = std::pair ((AModifier*)ASModifier, (AModifier*)SModifier); playerMap.Add(otherActor, FIntimidatingAuraPair(ASModifier,SModifier)); } return Super::HitEvent(otherActor); } void AIntimidatingAuraTrigger::LeaveEvent(ANetworkCharacter* otherActor) { auto it =playerMap.Find(otherActor); if (it == nullptr) return Super::LeaveEvent(otherActor); it->modifier0->ForceDestroy(); it->modifier1->ForceDestroy(); playerMap.Remove(otherActor); return Super::LeaveEvent(otherActor); }