diff --git a/GainStation13/code/mobs/races/caloritegolem.dm b/GainStation13/code/mobs/races/caloritegolem.dm new file mode 100644 index 00000000..a10240b9 --- /dev/null +++ b/GainStation13/code/mobs/races/caloritegolem.dm @@ -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 Calorite Golem, 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, "You recharge yourself with magical energy!") + + + +/datum/action/innate/bless/Activate() + if(charges != 0) + charges -= 1 + if(ishuman(owner)) + to_chat(owner, "You bless the food around you!") + + 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, "You need to recharge...") + + + +/datum/action/innate/unburden/Activate() + if(charges != 0) + charges -= 1 + if(ishuman(owner)) + to_chat(owner, "You lift the burdens of those around you!") + + 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, "You need to recharge...") + + + + +/datum/action/innate/aura/Activate() + if(charges != 0) + charges -= 1 + if(ishuman(owner)) + to_chat(owner, "You heal those around you!") + + 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) + + + + diff --git a/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm b/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm index b931888a..328b43c9 100644 --- a/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm +++ b/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm @@ -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) + ..() diff --git a/GainStation13/icons/mob/action_icons.dmi b/GainStation13/icons/mob/action_icons.dmi new file mode 100644 index 00000000..1c761599 Binary files /dev/null and b/GainStation13/icons/mob/action_icons.dmi differ diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm index c04e9406..834e23dc 100644 --- a/code/__DEFINES/food.dm +++ b/code/__DEFINES/food.dm @@ -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 diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index f75f8067..5b5c6d4b 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -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 diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi index 452192f2..4d0bbd8e 100644 Binary files a/icons/mob/human_parts_greyscale.dmi and b/icons/mob/human_parts_greyscale.dmi differ diff --git a/tgstation.dme b/tgstation.dme index aba0aa0d..c0e92a6e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -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"