SnowSoftServe
(Snownymous (XA / UEFN Alpha Account))
2
using { /Fortnite.com/Devices }
using { /Verse.org/Native }
using { /EpicGames.com/Temporary/Diagnostics }
using { /Verse.org/Random }
using { /Verse.org/Simulation}
log_Rock_Paper_Scissors:=class(log_channel){}
Rock_Paper_Scissors := class<concrete>(creative_device):
Logger:log = log{Channel:=log_Rock_Paper_Scissors}
# Main Guess Buttons ====================================================================================================
@editable
RockButton: button_device = button_device{}
@editable
PaperButton: button_device = button_device{}
@editable
ScissorsButton: button_device = button_device{}
# Main Guess Buttons Link to HUD Devices ====================================================================================================
@editable
HUDRockButtonInteract: hud_message_device = hud_message_device{}
@editable
HUDPaperButtonInteract: hud_message_device = hud_message_device{}
@editable
HUDScissorsButtonInteract: hud_message_device = hud_message_device{}
# Main Guess Buttons Link to HUD Devices ====================================================================================================
@editable
StartTimer_Button: button_device = button_device{}
@editable
SelectTimer: timer_device = timer_device{}
@editable
TimerCompleteDelay: timer_device = timer_device{}
@editable
TimerDelay_ShowFailAfterPick: timer_device = timer_device{}
@editable
TimerDelay_WinAterPick: timer_device = timer_device{}
@editable
TimerDelay_TieAterPick: timer_device = timer_device{}
@editable
HUDFailAfterPick: hud_message_device = hud_message_device{}
@editable
HUDWinAfterPick: hud_message_device = hud_message_device{}
@editable
HUDTieAfterPick: hud_message_device = hud_message_device{}
@editable
TriggersHUD_RockAIGuess: hud_message_device = hud_message_device{}
@editable
TriggersHUD_PaperAIGuess: hud_message_device = hud_message_device{}
@editable
TriggersHUD_ScissorsAIGuess: hud_message_device = hud_message_device{}
@editable
TriggersHUD_Fail: hud_message_device = hud_message_device{}
# Audio Effects After Result ====================================================================================================
@editable
WinAudio: speaker_device = speaker_device{}
@editable
LoseAudio: speaker_device = speaker_device{}
@editable
TieAudio: speaker_device = speaker_device{}
# Variables ====================================================================================================
var ChoiceVar: int = 0
var AIChoiceVar: int = 0
OnBegin<override>()<suspends>:void=
Logger.Print("Verse device started!")
# Links functions to Devices =================================================================================
StartTimer_Button.InteractedWithEvent.Subscribe(StartTimer_Button_Interact)
SelectTimer.SuccessEvent.Subscribe(CompleteTimer)
TimerCompleteDelay.SuccessEvent.Subscribe(CompleteTimerCompleteDelay)
RockButton.InteractedWithEvent.Subscribe(RockButtonInteract)
PaperButton.InteractedWithEvent.Subscribe(PaperButtonInteract)
ScissorsButton.InteractedWithEvent.Subscribe(ScissorsButtonInteract)
TimerDelay_WinAterPick.SuccessEvent.Subscribe(Win_HUD)
TimerDelay_ShowFailAfterPick.SuccessEvent.Subscribe(Fail_HUD)
TimerDelay_TieAterPick.SuccessEvent.Subscribe(Tie_HUD)
# Start Timer Intarct =================================================================================
StartTimer_Button_Interact(Player:player):void=
SelectTimer.Start(Player)
Logger.Print("Starting Button Interacted")
StartTimer_Button.Disable()
# Enables Buttons for 1s After Timer Completes =================================================================================
CompleteTimer(Player:player):void=
RockButton.Enable()
PaperButton.Enable()
ScissorsButton.Enable()
Logger.Print("Buttons Enabled")
TimerCompleteDelay.Start(Player)
Logger.Print("Timer Delay Complete START")
# Delay Timer Functions =================================================================================
CompleteTimerCompleteDelay(Player:player):void=
Logger.Print("Buttons Disabled")
RandomNum:int = GetRandomInt(1, 3)
set AIChoiceVar = RandomNum
# If no option was picked
if (ChoiceVar = 0):
TriggersHUD_Fail.Show(option {Player})
Logger.Print("FAIL - Didn't pick in time")
StartTimer_Button.Enable()
RockButton.Disable()
PaperButton.Disable()
ScissorsButton.Disable()
# If Rock was Picked Logic
# R > S
if (ChoiceVar = 1):
if (AIChoiceVar = 3):
TriggersHUD_ScissorsAIGuess.Show(option {Player})
TimerDelay_WinAterPick.Start(Player)
Logger.Print("{ChoiceVar} & {AIChoiceVar}")
# R < P
if (ChoiceVar = 1):
if (AIChoiceVar = 2):
TriggersHUD_PaperAIGuess.Show(option {Player})
TimerDelay_ShowFailAfterPick.Start(Player)
Logger.Print("{ChoiceVar} & {AIChoiceVar}")
# If Paper was Picked Logic
# P > R
if (ChoiceVar = 2):
if (AIChoiceVar = 1):
TriggersHUD_RockAIGuess.Show(option {Player})
TimerDelay_WinAterPick.Start(Player)
Logger.Print("{ChoiceVar} & {AIChoiceVar}")
# P < S
if (ChoiceVar = 2):
if (AIChoiceVar = 3):
TriggersHUD_ScissorsAIGuess.Show(option {Player})
TimerDelay_ShowFailAfterPick.Start(Player)
Logger.Print("{ChoiceVar} & {AIChoiceVar}")
# If Scissors was Picked Logic
# S > R
if (ChoiceVar = 3):
if (AIChoiceVar = 1):
TriggersHUD_RockAIGuess.Show(option {Player})
TimerDelay_ShowFailAfterPick.Start(Player)
Logger.Print("{ChoiceVar} & {AIChoiceVar}")
# S < P
if (ChoiceVar = 3):
if (AIChoiceVar = 2):
TriggersHUD_PaperAIGuess.Show(option {Player})
TimerDelay_WinAterPick.Start(Player)
Logger.Print("{ChoiceVar} & {AIChoiceVar}")
# Tie System
if (ChoiceVar = AIChoiceVar):
if (AIChoiceVar = 1):
TriggersHUD_RockAIGuess.Show(option {Player})
if (AIChoiceVar = 2):
TriggersHUD_PaperAIGuess.Show(option {Player})
if (AIChoiceVar = 3):
TriggersHUD_ScissorsAIGuess.Show(option {Player})
TimerDelay_TieAterPick.Start(Player)
Logger.Print("{ChoiceVar} & {AIChoiceVar}")
# When Player Wins =================================================================================
Win_HUD(Player:player):void=
HUDWinAfterPick.Show(option {Player})
set ChoiceVar = 0
StartTimer_Button.Enable()
WinAudio.Activate()
Logger.Print("WIN HUD Triggered")
# When Player Fails =================================================================================
Fail_HUD(Player:player):void=
HUDFailAfterPick.Show(option {Player})
set ChoiceVar = 0
StartTimer_Button.Enable()
LoseAudio.Activate()
Logger.Print("FAIL HUD Triggered")
# When Player Ties =================================================================================
Tie_HUD(Player:player):void=
HUDTieAfterPick.Show(option {Player})
set ChoiceVar = 0
StartTimer_Button.Enable()
TieAudio.Activate()
Logger.Print("TIE HUD Triggered")
# Action when Player Rock Button =================================================================================
RockButtonInteract(Player:player):void=
set ChoiceVar = 1
RockButton.Disable()
PaperButton.Disable()
ScissorsButton.Disable()
HUDRockButtonInteract.Show(option {Player})
# Action when Player Paper Button =================================================================================
PaperButtonInteract(Player:player):void=
set ChoiceVar = 2
RockButton.Disable()
PaperButton.Disable()
ScissorsButton.Disable()
HUDPaperButtonInteract.Show(option {Player})
# Action when Player Scissors Button =================================================================================
ScissorsButtonInteract(Player:player):void=
set ChoiceVar = 3
RockButton.Disable()
PaperButton.Disable()
ScissorsButton.Disable()
HUDScissorsButtonInteract.Show(option {Player})