SupremeBosses.sk

Created by JAYJAYTEE

Just so you know, we don't know the file format for every file. If it's just a bunch of random characters, it's probably a .zip or .jar.

options:
#
#░██████╗██╗░░░██╗██████╗░██████╗░███████╗███╗░░░███╗███████╗██████╗░░█████╗░░██████╗░██████╗███████╗░██████╗
#██╔════╝██║░░░██║██╔══██╗██╔══██╗██╔════╝████╗░████║██╔════╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝██╔════╝
#╚█████╗░██║░░░██║██████╔╝██████╔╝█████╗░░██╔████╔██║█████╗░░██████╦╝██║░░██║╚█████╗░╚█████╗░█████╗░░╚█████╗░
#░╚═══██╗██║░░░██║██╔═══╝░██╔══██╗██╔══╝░░██║╚██╔╝██║██╔══╝░░██╔══██╗██║░░██║░╚═══██╗░╚═══██╗██╔══╝░░░╚═══██╗
#██████╔╝╚██████╔╝██║░░░░░██║░░██║███████╗██║░╚═╝░██║███████╗██████╦╝╚█████╔╝██████╔╝██████╔╝███████╗██████╔╝
#╚═════╝░░╚═════╝░╚═╝░░░░░╚═╝░░╚═╝╚══════╝╚═╝░░░░░╚═╝╚══════╝╚═════╝░░╚════╝░╚═════╝░╚═════╝░╚══════╝╚═════╝░
#
#								Fun, Customizable and Easy to use bosses.
#
#
#	Script: SupremeBosses
#	Developer: JAYJAYTEE
#	Version: 1.0
#
#
#	Dependencies:
#	  - Skript 2.5-alpha3 (Bensku's Fork)		# Download: https://github.com/SkriptLang/Skript/releases
#	  - skript-mirror 2.0.0						# Download: https://skripttools.net/dl/skript-mirror+2.0.0-SNAPSHOT.jar
#	
#	Settings:
#
#	  - Messages
	general_prefix: &6&lBosses&7&o				# Default: &6&lBosses &7&o
	general_permission_denied: &cNo Permission. # Default: &cNo Permission.
#
#	  - Values
	base_boss_damage: 20						# Default: 20
#
#	  - Permissions
	boss_permission: supremebosses.use			# Default: supremebosses.use	# Usage: Command /boss
#
#  -> You should not change the code below unless you know what you are doing.
#  -> You should not change the code below unless you know what you are doing.
#  -> You should not change the code below unless you know what you are doing.
#


	version: 1.0
	skunity: &c&lERROR!
expression %item% enchanted with %enchantmenttypes%:
	return type: item
	get:
		set {_i} to expr-1.clone()
		loop exprs-2:
			set {_e} to loop-value
			enchant {_i} with {_e}
		return {_i}
expression glowing %items%:
	return type: items
	get:
		loop exprs-1:
			add 1 to {_n}
			set {_i} to loop-value
			set {_r::%{_n}%} to {_i} enchanted with lure 1
		return {_r::*}
on script load:
	set {_letters} to "Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz"
	set {_letter-pairs::*} to {_letters} split at " "
	loop {_letter-pairs::*}:
		set {_pair::*} to loop-value split at ""
		set {_uppercase} to {_pair::1}
		set {_lowercase} to {_pair::2}
		set {letters::uppercase::%{_lowercase}%} to {_uppercase}
		set {letters::lowercase::%{_uppercase}%} to {_lowercase}
on script unload:
	delete {letters::*}
function switchCaseFor(text: text, to-uppercase: boolean) :: text:
	set {_characters::*} to {_text} split at ""
	set {_new} to ""
	loop {_characters::*}:
		set {_char} to loop-value
		if {_to-uppercase} is true:
			set {_char} to {letters::uppercase::%loop-value%}
		else:
			set {_char} to {letters::lowercase::%loop-value%}
		set {_new} to "%{_new}%%{_char}%"
	return {_new}
function uppercase(text: text) :: text:
	return switchCaseFor({_text}, true)
function lowercase(text: text) :: text:
	return switchCaseFor({_text}, false)
function capitalize(text: text) :: text:
	set {_char} to the first character of {_text}
	set {_char} to {letters::uppercase::%{_char}%}
	set {_remaining} to ""
	set {_remaining} to the last (length of {_text} - 1) characters of {_text}
	return "%{_char}%%{_remaining}%"
command /boss:
	permission: {@boss_permission}
	permission message: {@general_permission_denied}
	trigger:
		if sender is not console:
			openBossGUI(sender, "main")
		else if sender is console:
			send "&cYou must be a player to execute this command!" to sender
on inventory click:
	if event.getView().getTitle() = "&6&lSupreme&6Bosses":
		cancel event
		if clicked slot = 2:
			openBossGUI(player, "create")
		if clicked slot = 6:
			openBossGUI(player, "view")
	else if event.getView().getTitle() = "&6&lSupreme&6Bosses &7&oCreation":
		cancel event
		if clicked slot = 0:
			delete {TEMP_MOBTYPE.%player%}
			delete {TEMP_MOBHEALTH.%player%}
			delete {TEMP_MOBATTACK.%player%}
			openBossGUI(player, "main")
		else if clicked slot = 8:
			if {SupremeBosses_Bosses_Count::%player's uuid%} is not set:
				set {SupremeBosses_Bosses_Count::%player's uuid%} to 0
			wait 1 tick
			add 1 to {SupremeBosses_Bosses_Count::%player's uuid%}
			set {_count} to {SupremeBosses_Bosses_Count::%player's uuid%}
			set {_mobtype} to {TEMP_MOBTYPE.%player%}.toString()
			set {_counttype} to "%{_count}%, %{_mobtype}%"
			set {_mobhealth} to {TEMP_MOBHEALTH.%player%}.toString()
			set {_mobattack} to {TEMP_MOBATTACK.%player%}.toString()
			set {_healthattack} to "%{_mobhealth}%, %{_mobattack}%"
			set {_final} to "%{_counttype}%, %{_healthattack}%"
			add {_final} to {SupremeBosses_Bosses_Saved::%player's uuid%::*} 
			send "&a&lSuccessfully &6Saved Your Boss!" to player
			openBossGUI(player, "main")
		else if clicked slot = 3:
			if {TEMP_MOBTYPE.%player%} is "Zombie":
				set {TEMP_MOBTYPE.%player%} to "Skeleton"
			else if {TEMP_MOBTYPE.%player%} is "Skeleton":
				set {TEMP_MOBTYPE.%player%} to "WitherSkeleton"
			else if {TEMP_MOBTYPE.%player%} is "WitherSkeleton":
				set {TEMP_MOBTYPE.%player%} to "Spider"
			else if {TEMP_MOBTYPE.%player%} is "Spider":
				set {TEMP_MOBTYPE.%player%} to "Creeper"
			else if {TEMP_MOBTYPE.%player%} is "Creeper":
				set {TEMP_MOBTYPE.%player%} to "Zombie"
			openBossGUI(player, "create")
		else if clicked slot = 4:
			if "%click type%" contains "LEFT":
				if {TEMP_MOBHEALTH.%player%} < 1000:
					add 10 to {TEMP_MOBHEALTH.%player%}
			else if "%click type%" contains "RIGHT":
				if {TEMP_MOBHEALTH.%player%} > 10:
					remove 10 from {TEMP_MOBHEALTH.%player%}
			openBossGUI(player, "create")
		else if clicked slot = 5:
			if {TEMP_MOBATTACK.%player%} is "Lightning":
				set {TEMP_MOBATTACK.%player%} to "Fire"
			else if {TEMP_MOBATTACK.%player%} is "Fire":
				set {TEMP_MOBATTACK.%player%} to "Water"
			else if {TEMP_MOBATTACK.%player%} is "Water":
				set {TEMP_MOBATTACK.%player%} to "Earth"
			else if {TEMP_MOBATTACK.%player%} is "Earth":
				set {TEMP_MOBATTACK.%player%} to "Lightning"
			openBossGUI(player, "create")
	else if event.getView().getTitle() contains "&6&lSupreme&6Bosses &7&oView":
		cancel event
		if clicked slot = 53:
			# Next
			set {_next} to {TEMP_PAGE.%player%} + 1
			openView(player, {_next})
		else if clicked slot = 45:
			if clicked item = arrow:
				# Previous
				set {_prev} to {TEMP_PAGE.%player%} - 1
				openView(player, {_prev})
		else if clicked slot = 49:
			openBossGUI(player, "main")
		else if index of event-slot is between 9 and 45:
			if "%click type%" contains "RIGHT":
				if event-slot != air:
					set {_y} to player's uuid
					set {_index::*} to uncolored name of event-slot parsed as "\(%int%\)%string%"
					delete {SupremeBosses_Bosses_Saved::%{_y}%::*} if (size of {SupremeBosses_Bosses_Saved::%{_y}%::*}) = 1
					remove {SupremeBosses_Bosses_Saved::%{_y}%::%{_index::1}%} from {SupremeBosses_Bosses_Saved::%{_y}%::*}
					wait 1 tick
					set {SupremeBosses_Bosses_Saved::%{_y}%::*} to sorted {SupremeBosses_Bosses_Saved::%{_y}%::*}
					remove 1 from {SupremeBosses_Bosses_Count::%player's uuid%}
					openView(player, {TEMP_PAGE.%player%})
					send "&c&lSuccessfully&6 Deleted Your Boss!" to sender
			else if "%click type%" contains "LEFT":
				if event-slot != air:
					set {_lore_1} to line 1 of lore of event-slot
					set {_lore_2} to line 2 of lore of event-slot
					set {_lore_3} to line 3 of lore of event-slot
					set {_loreall} to uncolored ("%{_lore_1}%, %{_lore_2}%, %{_lore_3}%")
					set {_lores::*} to {_loreall} parsed as "Mob Type: %string%, Health: %int%, Mob Attack: %string%"
					give 1 of glowing ("%({_lores::1} parsed as entity type)% spawn egg" parsed as item) named "&6&l%{_lores::3}% &6%{_lores::1}%" with lore " ", "&7Mob Type: &f%{_lores::1}%", "&7Health: &f%{_lores::2}%" and "&7Mob Attack: &f%{_lores::3}%" to player
on rightclick:
	if player's held item is spawn egg:
		if targeted block is set:
			if distance between player and targeted block <= 6:
				set {_lore1} to uncolored line 2 of lore of player's tool
				set {_lore2} to uncolored line 3 of lore of player's tool
				set {_lore3} to uncolored line 4 of lore of player's tool
				if {_lore1} contains "Mob Type":
					cancel event
					set {_lores1::*} to {_lore1} parsed as "Mob Type: %string%"
					set {_lores2::*} to {_lore2} parsed as "Health: %int%"
					set {_lores3::*} to {_lore3} parsed as "Mob Attack: %string%"
					if gamemode of player is survival:
						remove 1 of player's tool from player's tool
					set {_loc} to location of targeted block
					add 1 to the y-coordinate of {_loc}
					spawn 1 of (lowercase({_lores1::1}) parsed as entity type) at {_loc}
					set {_mob} to last spawned entity
					set the maximum health of {_mob} to {_lores2::1}
					heal {_mob}
					{_mob}.setCustomName("&e-&6=&e- &6&l%{_lores3::1}% &6%{_lores1::1}% &e-&6=&e-")
					set helmet of {_mob} to gold helmet
					loop players in radius 50 around {_mob}:
						play sound "ENTITY_WITHER_SPAWN" with volume 100 to loop-player
					if {_lores3::1} contains "Lightning":
						apply speed 2 to {_mob} for 9999 minutes
						strike lightning at {_loc}
						wait 0.25 seconds
						strike lightning at {_loc}
						wait 0.1 seconds
						strike lightning at {_loc}
on damage:
	if attacker is not a player:
		if victim is a player:
			if uncolored display name of attacker contains "-=-":
				set {_display::*} to uncolored display name of attacker parsed as "-=- %string% %string% -=-"
				set damage to {@base_boss_damage}
				if {_display::1} is "Lightning":
					chance of 60%:
						set {_ploc} to victim's location
						strike lightning at {_ploc}
						make attacker damage victim by {@base_boss_damage} * 2
function openBossGUI(p: player, t: text):
	#close {_p}'s inventory
	if {_t} = "main":
		set {_inv} to chest inventory with 1 rows named "&6&lSupreme&6Bosses"
		set slot (integers from 0 to 8) of {_inv} to black stained glass pane named "&7"
		set slot 2 of {_inv} to glowing oak sign named "&aCreate a boss" with lore " ", "&7Click me to create a new" and "&7boss."
		set slot 6 of {_inv} to glowing paper named "&aView created bosses" with lore " ", "&7Click me to view all" and "&7the bosses."
		open {_inv} to {_p}
	else if {_t} = "create":
		if {TEMP_MOBTYPE.%{_p}%} is not set:
			set {TEMP_MOBTYPE.%{_p}%} to "Zombie"
		if {TEMP_MOBHEALTH.%{_p}%} is not set:
			set {TEMP_MOBHEALTH.%{_p}%} to 20
		if {TEMP_MOBATTACK.%{_p}%} is not set:
			set {TEMP_MOBATTACK.%{_p}%} to "Lightning"
		set {_inv} to chest inventory with 1 rows named "&6&lSupreme&6Bosses &7&oCreation"
		set slot (integers from 0 to 8) of {_inv} to black stained glass pane named "&7"
		if {TEMP_MOBTYPE.%{_p}%} is "Zombie":
			set slot 3 of {_inv} to zombie spawn egg named "&aMob Type" with lore " ", "&7Zombie", "&8Skeleton", "&8Wither Skeleton", "&8Spider", "&8Creeper" and " "
		else if {TEMP_MOBTYPE.%{_p}%} is "Skeleton":
			set slot 3 of {_inv} to skeleton spawn egg named "&aMob Type" with lore " ", "&8Zombie", "&7Skeleton", "&8Wither Skeleton", "&8Spider", "&8Creeper" and " "
		else if {TEMP_MOBTYPE.%{_p}%} is "WitherSkeleton":
			set slot 3 of {_inv} to wither skeleton spawn egg named "&aMob Type" with lore " ", "&8Zombie", "&8Skeleton", "&7Wither Skeleton", "&8Spider", "&8Creeper" and " "
		else if {TEMP_MOBTYPE.%{_p}%} is "Spider":
			set slot 3 of {_inv} to spider spawn egg named "&aMob Type" with lore " ", "&8Zombie", "&8Skeleton", "&8Wither Skeleton", "&7Spider", "&8Creeper" and " "
		else if {TEMP_MOBTYPE.%{_p}%} is "Creeper":
			set slot 3 of {_inv} to creeper spawn egg named "&aMob Type" with lore " ", "&8Zombie", "&8Skeleton", "&8Wither Skeleton", "&8Spider", "&7Creeper" and " "
		set {_health} to {TEMP_MOBHEALTH.%{_p}%}
		set slot 4 of {_inv} to diamond chestplate with all flags hidden named "&aMob Health" with lore " ", "&cHealth &f%{_health}%", " ", "&7Right-click to &c- 10" and "&7Left-click to &a+ 10"
		if {TEMP_MOBATTACK.%{_p}%} is "Lightning":
			set slot 5 of {_inv} to iron sword with all flags hidden named "&aMob Attack" with lore " ", "&7Lightning", "&8Fire &cComing Soon", "&8Water &cComing Soon", "&8Earth &cComing Soon" and " "
		else if {TEMP_MOBATTACK.%{_p}%} is "Fire":
			set slot 5 of {_inv} to fire charge named "&aMob Attack" with lore " ", "&8Lightning", "&7Fire &cComing Soon", "&8Water &cComing Soon", "&8Earth &cComing Soon" and " "
		else if {TEMP_MOBATTACK.%{_p}%} is "Water":
			set slot 5 of {_inv} to water bucket named "&aMob Attack" with lore " ", "&8Lightning", "&8Fire &cComing Soon", "&7Water &cComing Soon", "&8Earth &cComing Soon" and " "
		else if {TEMP_MOBATTACK.%{_p}%} is "Earth":
			set slot 5 of {_inv} to dirt named "&aMob Attack" with lore " ", "&8Lightning", "&8Fire &cComing Soon", "&8Water &cComing Soon", "&7Earth &cComing Soon" and " "
		set slot 0 of {_inv} to barrier named "&cExit"
		set slot 8 of {_inv} to glowing emerald block named "&aSave"
		open {_inv} to {_p}
	else if {_t} = "view":
		openView({_p}, 1)
function openView(p: player, page: number):
	set {_inv} to chest inventory with 6 rows named "&f&o%{_page}% &6&lSupreme&6Bosses &7&oView"
	set slot (integers from 0 to 8) of {_inv} to black stained glass pane named "&7"
	set slot (integers from 45 to 53) of {_inv} to black stained glass pane named "&7"
	set slot 49 of {_inv} to barrier named "&cExit"
	set {TEMP_PAGE.%{_p}%} to {_page}
	set slot 53 of {_inv} to arrow named "&fNext Page"
	if {_page} > 1:
		set slot 45 of {_inv} to arrow named "&fPrevious Page"
	set {_n} to 10
	set {_y} to {_p}'s uuid
	loop 36 times:
		set {_no} to {_n} - 9
		if {_no} <= (size of {SupremeBosses_Bosses_Saved::%{_y}%::*}):
			set {_nop} to ({_no} + (36*({_page}-1)))
			{SupremeBosses_Bosses_Saved::%{_y}%::%{_nop}%} exists
			set {_split::*} to {SupremeBosses_Bosses_Saved::%{_y}%::%{_nop}%} parsed as "%int%, %string%, %int%, %string%"
			set {_split::1} to {_nop}
			if {_split::2} is "WitherSkeleton":
				set {_split::2} to "Wither Skeleton"
			set {_type} to lowercase({_split::2})
			set slot {_n} - 1 of {_inv} to glowing ("%({_type} parsed as entity type)% spawn egg" parsed as item) named "&b(%{_split::1}%&b) Debug Name" with lore "&7Mob Type:&f %{_split::2}%", "&7Health:&f %{_split::3}%", "&7Mob Attack:&f %{_split::4}%", " ", "&7Right-click to &cdelete &7your boss." and "&7Left-click to &agive &7your boss."
		add 1 to {_n}
	open {_inv} to {_p}