diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index 88ee4cc393d..545235423ba 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -172,6 +172,18 @@
log_name = "IG"
category = "Offensive"
+/datum/spellbook_entry/sacred_flame
+ name = "Sacred Flame"
+ spell_type = /obj/effect/proc_holder/spell/targeted/sacred_flame
+ cost = 1
+ log_name = "SF"
+ refundable = 0 //You get fire immunity out of it, no.
+
+/datum/spellbook_entry/sacred_flame/LearnSpell(mob/living/carbon/human/user, obj/item/spellbook/book, obj/effect/proc_holder/spell/newspell)
+ ..()
+ user.dna.SetSEState(GLOB.coldblock, 1)
+ genemutcheck(user, GLOB.coldblock, null, MUTCHK_FORCED)
+
//Defensive
/datum/spellbook_entry/disabletech
name = "Disable Tech"
@@ -357,10 +369,14 @@
name = "Buy Item"
refundable = 0
buy_word = "Summon"
+ var/spawn_on_floor = FALSE
var/item_path = null
/datum/spellbook_entry/item/Buy(mob/living/carbon/human/user, obj/item/spellbook/book)
- user.put_in_hands(new item_path)
+ if(spawn_on_floor == FALSE)
+ user.put_in_hands(new item_path)
+ else
+ new item_path(user.loc)
SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, log_name)
return 1
@@ -406,6 +422,30 @@
log_name = "WA"
category = "Artefacts"
+/datum/spellbook_entry/item/cursed_heart
+ name = "Cursed Heart"
+ desc = "A heart that has been empowered with magic to heal the user. The user must ensure the heart is manually beaten or their blood circulation will suffer, but every beat heals their injuries. It must beat every 6 seconds. Not reccomended for first time wizards."
+ item_path = /obj/item/organ/internal/heart/cursed/wizard
+ log_name = "CH"
+ cost = 1
+ category = "Artefacts"
+
+/datum/spellbook_entry/item/voice_of_god
+ name = "Voice of god"
+ desc = "A magical vocal cord that can be used to yell out with the voice of a god, be it to harm, help, or confuse the target."
+ item_path = /obj/item/organ/internal/vocal_cords/colossus/wizard
+ log_name = "VG"
+ category = "Artefacts"
+
+/datum/spellbook_entry/item/warp_cubes
+ name = "Warp Cubes"
+ desc = "Two magic cubes, that when they are twisted in hand, teleports the user to the location of the other cube instantly. Great for silently teleporting to a fixed location, or teleporting you to an appretnance, or vice versa. Do not leave on the wizard den, it will not work."
+ item_path = /obj/item/warp_cube/red
+ log_name = "WC"
+ cost = 1
+ spawn_on_floor = TRUE // breaks if spawned in hand
+ category = "Artefacts"
+
//Weapons and Armors
/datum/spellbook_entry/item/battlemage
name = "Battlemage Armour"
@@ -437,6 +477,21 @@
log_name = "SI"
category = "Weapons and Armors"
+/datum/spellbook_entry/item/spell_blade //Yes spellblade is technicaly a staff, but you can melee with it and it is not called a staff so I am putting it here
+ name = "Spellblade"
+ desc = "A magical sword that is quite good at slashing people, but is even better at shooting magical projectiles that can potentialy delimb at range."
+ item_path = /obj/item/gun/magic/staff/spellblade
+ log_name = "SB"
+ category = "Weapons and Armors"
+
+/datum/spellbook_entry/item/meat_hook
+ name = "Meat hook"
+ desc = "An enchanted hook, that can be used to hook people, hurt them, and bring them right to you. Quite bulky, works well as a belt though."
+ item_path = /obj/item/gun/magic/hook
+ cost = 1
+ log_name = "MH"
+ category = "Weapons and Armors"
+
//Staves
/datum/spellbook_entry/item/staffdoor
name = "Staff of Door Creation"
diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm
index dca8bcb0c88..651e9b57edf 100644
--- a/code/modules/mining/lavaland/loot/tendril_loot.dm
+++ b/code/modules/mining/lavaland/loot/tendril_loot.dm
@@ -300,6 +300,7 @@
icon = 'icons/obj/lavaland/artefacts.dmi'
icon_state = "blue_cube"
var/obj/item/warp_cube/linked
+ var/cooldown = FALSE
/obj/item/warp_cube/Destroy()
if(linked)
@@ -315,6 +316,9 @@
if(is_in_teleport_proof_area(user) || is_in_teleport_proof_area(linked))
to_chat(user, "[src] sparks and fizzles.")
return
+ if(cooldown)
+ to_chat(user, "[src] sparks and fizzles.")
+ return
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(1, 0, user.loc)
@@ -326,6 +330,13 @@
var/datum/effect_system/smoke_spread/smoke2 = new
smoke2.set_up(1, 0, user.loc)
smoke2.start()
+ cooldown = TRUE
+ linked.cooldown = TRUE
+ addtimer(CALLBACK(src, .proc/reset), 20 SECONDS)
+
+/obj/item/warp_cube/proc/reset()
+ cooldown = FALSE
+ linked.cooldown = FALSE
/obj/item/warp_cube/red
name = "red cube"
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 5442710cdd4..6e118068127 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -182,6 +182,10 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby"))
if(iscultist(owner))
power_multiplier *= 2
+ //It's magic, they are a wizard.
+ if(iswizard(owner))
+ power_multiplier *= 2.5
+
//Try to check if the speaker specified a name or a job to focus on
var/list/specific_listeners = list()
var/found_string = null
@@ -477,3 +481,10 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby"))
message_admins("[key_name_admin(owner)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
log_game("[key_name(owner)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
+
+/obj/item/organ/internal/vocal_cords/colossus/wizard
+ desc = "They carry the voice of an ancient god. This one is enchanted to implant it into yourself when used in hand"
+
+/obj/item/organ/internal/vocal_cords/colossus/wizard/attack_self(mob/living/user)
+ user.drop_item()
+ insert(user)