Skip to content

Instantly share code, notes, and snippets.

@WahlbeckUEFN
Created April 25, 2023 20:28
Show Gist options
  • Save WahlbeckUEFN/12cff2adb55831c1eede98ec165442e2 to your computer and use it in GitHub Desktop.
Save WahlbeckUEFN/12cff2adb55831c1eede98ec165442e2 to your computer and use it in GitHub Desktop.
Code to cast spells in UEFN, Fortnite Creative 2.0 and Verse programming language
using { /Fortnite.com/Devices }
using { /Fortnite.com/Game }
using { /Fortnite.com/Characters }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
rpg_player := class<concrete>():
@editable var VFXSpawner : vfx_spawner_device = vfx_spawner_device{}
@editable var DamageDevice : damage_volume_device = damage_volume_device{}
@editable var DeviceMover : creative_prop = creative_prop{}
@editable var SuperButton : button_device = button_device{}
@editable var SFXPlayer : audio_player_device = audio_player_device{}
var KillStreak : int = 0
var TotalKills : int = 0
var Player : ?player = false
Init(IPlayer : player):void=
VFXSpawner.Disable()
DamageDevice.Disable()
SuperButton.Disable()
SuperButton.InteractedWithEvent.Subscribe(OnSuperButtonActivated)
if (Agent := agent[IPlayer], FortChar := Agent.GetFortCharacter[]):
set Player = option{IPlayer}
FortChar.EliminatedEvent().Subscribe(OnPlayerEliminated)
spawn:
MoveDevices(FortChar)
# Keep the devices at player location at all times
MoveDevices(FortChar : fort_character)<suspends>:void=
loop:
Sleep(0.0)
if (DeviceMover.TeleportTo[FortChar.GetTransform().Translation, FortChar.GetTransform().Rotation]) {}
# Listen for each elimanation and update killstreaks
OnPlayerEliminated(Result : elimination_result):void=
# We got the elimination
if (FortChar := Result.EliminatingCharacter?):
if (IsFortCharSameAsPlayer(FortChar)?):
set TotalKills += 1
set KillStreak += 1
CheckKillStreak(FortChar)
# We died
else if (IsFortCharSameAsPlayer(Result.EliminatedCharacter)?):
set KillStreak = 0
CheckKillStreak(FortChar : fort_character):void=
if (KillStreak = 3):
SuperButton.Enable()
OnSuperButtonActivated(Agent : agent):void=
if (IsAgentSameAsPlayer(Agent)?):
SuperButton.Disable()
spawn:
UseSuper()
UseSuper()<suspends>:void=
VFXSpawner.Enable()
if (Agent := agent[Player?]) {SFXPlayer.Play(Agent)}
DamageDevice.Enable()
Sleep(3.0)
DamageDevice.Disable()
VFXSpawner.Disable()
IsFortCharSameAsPlayer(Incoming : fort_character)<transacts>:logic=
if (Agent := Incoming.GetAgent[], IPlayer := player[Agent]):
if (Player? = IPlayer) { return true }
else { return false }
return false
IsAgentSameAsPlayer(Incoming : agent)<transacts>:logic=
if (IPlayer := player[Incoming]):
if (Player? = IPlayer) { return true }
else { return false }
return false
magic_killstreak := class(creative_device):
@editable var RPGPlayers : []rpg_player = array{}
OnBegin<override>()<suspends>:void=
AllPlayers := GetPlayspace().GetPlayers()
for (IDX := 0..AllPlayers.Length - 1):
if (RPGPlayer := RPGPlayers[IDX], Player := AllPlayers[IDX]):
RPGPlayer.Init(Player)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment