Intermediate Skill Level Script Tutorial

GUIDE TITLE: Continue to Code with PiousLachance
ESTIMATED COMPLETION TIME: 30-40 Minutes recommended
CORE VERSION: * 1.0.224-prod-s*

SUGGESTED PREREQUISITES: Reccomended How to Start Coding in Core (How to Start Coding in Core - YouTube), Need to know what Types, Namespaces and basic programming practices are

TUTORIAL SUMMARY:
This Tutorial will explain how to create scripted Abilities, a UI that will help the Player navigate his resources and his Abilities and some fancy Magic Circles.
Everything using Balls of Plasma.

Use the final Assets and Scripts to learn even more !

EXPECT TO LEARN:
How to Create unique Abilities, supported with UIs and Effects.

TUTORIAL:

Chapters:
0:00 Intro and Ability Scripting Section
5:50 Opening Core
17:50 UI Section
20:28 Useful Practices
26:04 Magic Circles
29:00 Add more Features ! + Last Tips

NOTES:
Inside the CC the Scripts are already correct, but I made a slight mistake due to me being tired:
as it is the mana insufficient template cannot spawn, from the script you see in the video you need to change the Ability Execute of the Intermediate Ability Tutorial Script script like this

function AbilityExecute()
	local mana = localPlayer:GetResource("Mana")

	if mana < 50 then
		Events.BroadcastToServer("Mana Damage", 50)
	else 
		Events.BroadcastToServer("Mana Damage", 50)
		isUsed = true
		Events.Broadcast("Comply", plasmaList[1].plasma, plasmaList[1].use)
	end
end

and in the Server Ui Tutorial Script the manaListener need to change its if statement to this one

manaListener = Events.ConnectForPlayer("Mana Damage", function (player, manaDamage)
        if player:GetResource("Mana") < 50 then
            World.SpawnAsset(manaInsufficient, {position = player:GetWorldPosition() + Vector3.New(0,0,100)})
        else player:SetResource("Mana", player:GetResource("Mana") - manaDamage) end
    end)