Calorite golems!

Calorite golems are a new type of golem that can be made using 10 sheets of calorite that, thanks to the combined magical forces of both adamantine and calorite, can use magic to heal the wounded, make food more nourishing, and make people around them faster for a moment. Unfortunately, calorite golems lack the armor that other golems have, and their fists cannot stun or do much damage on their own.
This commit is contained in:
eyespy
2023-05-01 21:38:52 +10:00
parent a0e2076ca9
commit 87872dbcdb
7 changed files with 166 additions and 2 deletions
@@ -0,0 +1,143 @@
var/charges = 3
/datum/species/golem/calorite //golems that heal people around them, and cook groovy food. essentially the support class of golems
name = "Calorite Golem"
id = "calorite golem"
prefix = "Calorite"
special_names = list("Callie Wright")
info_text = "As a <span class='danger'>Calorite Golem</span>, you have all kinds of cool magical abilities that allow you to heal the wounded, make food more nourishing and boost people's speed! Unfortunately, you are also very flimsy, and can't dish out much damage with your hands."
fixed_mut_color = "ffffff"
limbs_id = "cal_golem" //special sprites
attack_verb = "bop" //they don't hit too hard, so their attack verb is fittingly pretty soft
armor = 25
punchdamagelow = 5
punchstunthreshold = 0 //no chance to stun
punchdamagehigh = 5
var/datum/action/innate/aura/heal
var/datum/action/innate/bless/boost
var/datum/action/innate/unburden/speed
var/datum/action/innate/recharge/power
/datum/species/golem/calorite/on_species_gain(mob/living/carbon/C, datum/species/old_species)
..()
if(ishuman(C))
heal = new
heal.Grant(C)
boost = new
boost.Grant(C)
speed = new
speed.Grant(C)
power = new
power.Grant(C)
/datum/species/golem/calorite/on_species_loss(mob/living/carbon/C)
if(heal)
heal.Remove(C)
if(boost)
boost.Remove(C)
if(speed)
speed.Remove(C)
if(power)
power.Remove(C)
..()
/datum/action/innate/aura
name = "Healing Pulse"
desc = "Emit a healing pulse around yourself, curing the wounds of all around you."
check_flags = AB_CHECK_CONSCIOUS
icon_icon = 'GainStation13/icons/mob/action_icons.dmi'
button_icon_state = "healing"
/datum/action/innate/unburden
name = "Lift Burdens"
desc = "Vitalise all those around you, giving them a boost of speed for a moment. The effects of this charm are more effective on those whom are heavily burdened"
check_flags = AB_CHECK_CONSCIOUS
icon_icon = 'GainStation13/icons/mob/action_icons.dmi'
button_icon_state = "boost"
/datum/action/innate/bless
name = "Bless Food"
desc = "infuse food near you with a fraction of your power to make it more nourishing"
check_flags = AB_CHECK_CONSCIOUS
icon_icon = 'GainStation13/icons/mob/action_icons.dmi'
button_icon_state = "cal_bless"
/datum/action/innate/recharge
name = "Recharge"
desc = "refresh and recharge your magical abilities"
check_flags = AB_CHECK_CONSCIOUS
icon_icon = 'GainStation13/icons/mob/action_icons.dmi'
button_icon_state = "cal_golem_sleepies"
/datum/action/innate/recharge/Activate()
charges = 3
if(ishuman(owner))
to_chat(owner, "<span class='notice'>You recharge yourself with magical energy!</span>")
/datum/action/innate/bless/Activate()
if(charges != 0)
charges -= 1
if(ishuman(owner))
to_chat(owner, "<span class='notice'>You bless the food around you!</span>")
for(var/obj/item/reagent_containers/food/O in view(1, owner))
if(O.foodtype != BLESSED)
O.reagents.add_reagent(/datum/reagent/consumable/nutriment, 10)
O.desc += " It faintly glows with warm, orange energy..."
O.foodtype = BLESSED
else
to_chat(owner, "<span class='notice'>You need to recharge...</span>")
/datum/action/innate/unburden/Activate()
if(charges != 0)
charges -= 1
if(ishuman(owner))
to_chat(owner, "<span class='notice'>You lift the burdens of those around you!</span>")
for(var/mob/living/L in view(3, owner))
if(iscarbon(L))
if(!HAS_TRAIT(L, TRAIT_GOTTAGOFAST))
L.reagents.add_reagent(/datum/reagent/consumable/caloriteblessing, 5)
else
to_chat(owner, "<span class='notice'>You need to recharge...</span>")
/datum/action/innate/aura/Activate()
if(charges != 0)
charges -= 1
if(ishuman(owner))
to_chat(owner, "<span class='notice'>You heal those around you!</span>")
for(var/mob/living/L in view(3, owner))
if(L.health < L.maxHealth)
new /obj/effect/temp_visual/heal(get_turf(L), "#375637")
if(iscarbon(L))
L.adjustBruteLoss(-3.5)
L.adjustFireLoss(-3.5)
L.adjustToxLoss(-3.5, forced = TRUE) //Because Slime People are people too
L.adjustOxyLoss(-3.5)
L.adjustStaminaLoss(-3.5)
L.adjustOrganLoss(ORGAN_SLOT_BRAIN, -3.5)
L.adjustCloneLoss(-1) //Becasue apparently clone damage is the bastion of all health
else if(issilicon(L))
L.adjustBruteLoss(-3.5)
L.adjustFireLoss(-3.5)
else if(isanimal(L))
var/mob/living/simple_animal/SM = L
SM.adjustHealth(-3.5, forced = TRUE)
@@ -37,7 +37,7 @@
/datum/reagent/consumable/extilphite
name = "Extilphite"
description = "A very useful chemical that helps soothe bloated stomachs."
color = "#2aed96"
color = "#2aed96"
reagent_state = LIQUID
taste_description = "smoothness"
metabolization_rate = 0.8 * REAGENTS_METABOLISM
@@ -75,3 +75,19 @@
else
return ..()
/datum/reagent/consumable/caloriteblessing
name = "Calorite blessing"
description = "A strange, viscous liquid derived from calorite. It is said to have physically enhancing properties surprisingly unrelated to weight gain when consumed"
color = "#eb6e00"
reagent_state = LIQUID
taste_description = "sweet salvation"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
/datum/reagent/consumable/caloriteblessing/on_mob_metabolize(mob/living/L)
..()
ADD_TRAIT(L, TRAIT_GOTTAGOFAST, type)
/datum/reagent/consumable/caloriteblessing/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, type)
..()
Binary file not shown.

After

Width:  |  Height:  |  Size: 729 B

+1
View File
@@ -14,6 +14,7 @@
#define BREAKFAST (1<<13)
#define CLOTH (1<<14)
#define ANTITOXIC (1<<15)
#define BLESSED (1<<16)
#define DRINK_NICE 1
#define DRINK_GOOD 2
+2 -1
View File
@@ -86,7 +86,8 @@
/obj/item/stack/sheet/cardboard = /datum/species/golem/cardboard,
/obj/item/stack/sheet/leather = /datum/species/golem/leather,
/obj/item/stack/sheet/bone = /datum/species/golem/bone,
/obj/item/stack/sheet/cotton/durathread = /datum/species/golem/durathread)
/obj/item/stack/sheet/cotton/durathread = /datum/species/golem/durathread,
/obj/item/stack/sheet/mineral/calorite = /datum/species/golem/calorite)
if(istype(I, /obj/item/stack))
var/obj/item/stack/O = I
Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 59 KiB

+3
View File
@@ -3081,8 +3081,11 @@
#include "GainStation13\code\mechanics\wand.dm"
#include "GainStation13\code\mechanics\web_weaving.dm"
#include "GainStation13\code\mobs\cakegolem.dm"
#include "GainStation13\code\mobs\races\caloritegolem.dm"
#include "GainStation13\code\modules\client\preferences\preferences.dm"
#include "GainStation13\code\modules\food_and_drinks\drinks\drinks.dm"
#include "GainStation13\code\modules\food_and_drinks\food\megafoods.dm"
#include "GainStation13\code\modules\food_and_drinks\food\recipes.dm"
#include "GainStation13\code\modules\mob\living\emote.dm"
#include "GainStation13\code\modules\reagents\chemistry\reagents\consumable_reagents.dm"
#include "GainStation13\code\modules\reagents\chemistry\reagents\dwarverndrinks.dm"