NotNormann
(NotNormann)
December 10, 2025, 5:56am
1
I got this code from Zmackattack I believe, long time ago for replacing fiends with different animations, used to work. Just needs some reformatting as I get this error here:
I am not a verse coder. Can someone who knows verse reformat this code here so it works with the current version of verse while keeping it mostly the same? Thank you.
Here is the code:
https://codeshare.io/5zqXNW
I had to use codeshare as it wouldn’t paste properly here
Abrizzer
(Abrizzer)
December 10, 2025, 12:36pm
2
Here is the code, without errors. You would need to check if it does what you expect
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Fortnite.com/AI }
using { /Verse.org/Random }
# See https://dev.epicgames.com/documentation/en-us/uefn/create-your-own-device-in-verse for how to create a verse device.
MovementState := enum{Idle, Walking, Attacking}
enemy_info_class := class<concrete>:
@editable IdleAsset : creative_prop_asset = DefaultCreativePropAsset
@editable WalkAsset : creative_prop_asset = DefaultCreativePropAsset
@editable AttackAsset : creative_prop_asset = DefaultCreativePropAsset
@editable Health : float = 1.0
@editable Damage : float = 0.0
@editable AttackWindupTime : float = 0.5
@editable AttackCooldownTime : float = 0.5
# A Verse-authored creative device that can be placed in a level
custom_enemies_device := class(creative_device):
@editable Spawners : []creature_spawner_device = array{}
@editable EnableTrigger : trigger_device = trigger_device{}
@editable DisableTrigger : trigger_device = trigger_device{}
@editable var Enabled : logic = true
@editable var EnemyArray : []enemy_info_class = array{}
@editable DiedAsset : creative_prop_asset = DefaultCreativePropAsset
@editable TimeToDespawnDied : float = 5.0
# Runs when the device is started in a running game
OnBegin<override>()<suspends>:void=
EnableTrigger.TriggeredEvent.Subscribe(Enable)
DisableTrigger.TriggeredEvent.Subscribe(Disable)
for (Spawner : Spawners):
Spawner.SpawnedEvent.Subscribe(CreatureSpawned)
CreatureSpawned(Agent : agent): void =
if (Enabled = true):
if (FortChar := Agent.GetFortCharacter[],Enemy := EnemyArray[GetRandomInt(0,EnemyArray.Length-1)]):
FortChar.Hide()
spawn{EnemyLoop(FortChar,Enemy)}
EnemyLoop(FortChar : fort_character,EnemyInfo : enemy_info_class)<suspends>: void =
var LastTransform : transform = FortChar.GetTransform()
MaybeProp := SpawnProp(EnemyInfo.IdleAsset,LastTransform.Translation,LastTransform.Rotation)(0)
var CurrentProp : creative_prop = creative_prop{}
var CurrentState : MovementState = MovementState.Idle
var LastState : MovementState = MovementState.Idle
var WalkSpeed : float = 10.0
if ( PropExists := MaybeProp?):
set CurrentProp = PropExists
loop:
if (not FortChar.IsActive[]):
CurrentProp.Dispose()
PropSpawned :=SpawnProp(DiedAsset, LastTransform)
Sleep(TimeToDespawnDied)
if(PropThatNeedToDelete := PropSpawned(0)?){
PropThatNeedToDelete.Dispose()
}
break
if (Distance(FortChar.GetTransform().Translation, LastTransform.Translation) = 0.0):
PlaySpace := GetPlayspace()
var PlayerNearby : logic = false
for (Player : PlaySpace.GetPlayers()):
if (LoopFortChar := Player.GetFortCharacter[]):
if (Distance(FortChar.GetTransform().Translation, LoopFortChar.GetTransform().Translation) < 120.0):
if (LoopFortChar.IsActive[]):
set PlayerNearby = true
if (PlayerNearby = true):
set CurrentState = MovementState.Attacking
CurrentProp.Dispose()
MaybeAttackProp := SpawnProp(EnemyInfo.AttackAsset,FortChar.GetTransform().Translation,FortChar.GetTransform().Rotation)(0)
if ( AttackProp := MaybeAttackProp?):
set CurrentProp = AttackProp
Sleep(EnemyInfo.AttackWindupTime)
for (Player : PlaySpace.GetPlayers()):
if (LoopFortChar := Player.GetFortCharacter[]):
if (Distance(FortChar.GetTransform().Translation, LoopFortChar.GetTransform().Translation) < 120.0):
else:
if (not CurrentState = MovementState.Idle):
set CurrentState = MovementState.Idle
CurrentProp.Dispose()
MaybeIdleProp := SpawnProp(EnemyInfo.IdleAsset,FortChar.GetTransform().Translation,FortChar.GetTransform().Rotation)(0)
if ( IdleProp := MaybeIdleProp?):
set CurrentProp = IdleProp
else:
if (not CurrentState = MovementState.Walking):
set CurrentState = MovementState.Walking
CurrentProp.Dispose()
MaybeWalkProp := SpawnProp(EnemyInfo.WalkAsset,FortChar.GetTransform().Translation,FortChar.GetTransform().Rotation)(0)
if (WalkProp := MaybeWalkProp?):
set CurrentProp = WalkProp
set LastTransform = FortChar.GetTransform()
CurrentProp.MoveTo(FortChar.GetTransform().Translation,FortChar.GetTransform().Rotation,0.1)
(InProp : creative_prop).SwapProp(OutProp : creative_prop)<suspends>: void =
TempTransform := OutProp.GetTransform()
if (OutProp.TeleportTo[InProp.GetTransform().Translation,InProp.GetTransform().Rotation]):
Sleep(0.0)
if (InProp.TeleportTo[TempTransform.Translation,TempTransform.Rotation]){}
Enable(MaybeAgent : ?agent): void =
set Enabled = true
Disable(MaybeAgent : ?agent): void =
set Enabled = false