diff --git a/ModularTegustation/danteh_head.dm b/ModularTegustation/danteh_head.dm new file mode 100644 index 000000000000..fb612b7981be --- /dev/null +++ b/ModularTegustation/danteh_head.dm @@ -0,0 +1,127 @@ +GLOBAL_LIST_EMPTY(attunedsinners) +GLOBAL_VAR_INIT(hatspawned, FALSE)//So two of these cannot be created + +/obj/item/clothing/head/helmet/danteh + name = "Burning Clock" + desc = "A helmet of some sort resembling a burning clock." + icon_state = "dantehead" + inhand_icon_state = "dantehead" + flags_inv = HIDEHAIR|HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT + +/obj/item/clothing/head/helmet/danteh/Initialize() + . = ..() + + if(GLOB.hatspawned) + qdel(src) + + //Causes bugs if a second one is created + GLOB.hatspawned = TRUE + +/obj/item/clothing/head/helmet/danteh/equipped(mob/living/carbon/human/user, slot) + ..() + if(slot != ITEM_SLOT_HEAD) + return + + ADD_TRAIT(src, TRAIT_NODROP, GENERIC_ITEM_TRAIT) + user.grant_language(/datum/language/clockhead, TRUE, TRUE, LANGUAGE_CLOCKHEAD) + user.remove_language(/datum/language/common) + user.grant_language(/datum/language/common, TRUE, FALSE, LANGUAGE_MIND) + + var/datum/action/G = new /datum/action/cooldown/dantehadd + G.Grant(user) + + if(SSmaptype.maptype in SSmaptype.citymaps) + G = new /datum/action/cooldown/dantehrevive + G.Grant(user) + + +/obj/item/clothing/head/helmet/danteh/dropped(mob/living/carbon/human/user) + ..() + if(!length(GLOB.attunedsinners)) + return + +//No idea how you dropped this off your head but dust you if you try + user.dust() + + + +/datum/language/clockhead + name = "Clockhead" + desc = "A language that is only spoken by clockheads and the people they're attuned to." + key = "p" + syllables = list("tick","tock") + space_chance = 30 + flags = LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD + flags = TONGUELESS_SPEECH + default_priority = 120 + icon_state = "clockhead" + + +/datum/action/cooldown/dantehadd + name = "Attune Sinner" + desc = "An ability that allows its user to attune to a sinner for later revives." + icon_icon = 'icons/hud/screen_skills.dmi' + button_icon_state = "dantehadd" + cooldown_time = 5 SECONDS + +/datum/action/cooldown/dantehadd/Trigger() + if(length(GLOB.attunedsinners)>=12) + to_chat(owner, span_warning("You are already attuned to 12 sinners!")) + return + + var/list/livingplayers = list() + for(var/mob/living/carbon/human/H in GLOB.mob_list) + if(H in GLOB.attunedsinners) + continue + livingplayers+=H + + if(!length(livingplayers)) + return + + var/choice = input(owner, "Which Sinner would you like to attune to?", "Select a sinner") as null|anything in livingplayers + if(!choice) + to_chat(owner, span_notice("You decide not to attune to anyone at the moment.")) + return + + if(choice == owner) + to_chat(owner, span_warning("You cannot attune to yourself!")) + return + + GLOB.attunedsinners += choice + var/mob/living/carbon/human/chosen_human = choice + chosen_human.grant_language(/datum/language/clockhead, TRUE, FALSE, LANGUAGE_MIND) + to_chat(owner, span_notice("You attune [choice] to yourself.")) + to_chat(choice, span_warning("You feel [owner]'s warmth on you!")) + + return ..() + + +/datum/action/cooldown/dantehrevive + name = "Revive Sinners" + desc = "An ability that allows its user to revive nearby sinners" + icon_icon = 'icons/hud/screen_skills.dmi' + button_icon_state = "dantehrevive" + cooldown_time = 2 MINUTES + +/datum/action/cooldown/dantehrevive/Trigger() + if(isdead(owner)) + return + if(SSmaptype.maptype in SSmaptype.citymaps) + for(var/mob/living/carbon/human/H in range(7, get_turf(src))) + if(H in GLOB.attunedsinners) + H.revive(full_heal = TRUE, admin_revive = TRUE) + H.grab_ghost(force = TRUE) // even suicides + to_chat(H, span_notice("You rise with a start, you're alive!!!")) + else + for(var/mob/living/carbon/human/H in range(7, get_turf(src))) + if(H in GLOB.attunedsinners) + H.adjustSanityLoss(-40) //Healing for those around. + H.adjustBruteLoss(-40) + new /obj/effect/temp_visual/heal(get_turf(H), "#E2ED4A") + + var/mob/living/carbon/human/M = owner + + M.Knockdown(10 SECONDS) + M.Stun(10 SECONDS) + return ..() + diff --git a/code/__DEFINES/language.dm b/code/__DEFINES/language.dm index e1cb5cd3fc4d..01067c3a3a33 100644 --- a/code/__DEFINES/language.dm +++ b/code/__DEFINES/language.dm @@ -13,6 +13,7 @@ #define LANGUAGE_CTF "ctf" #define LANGUAGE_CULTIST "cultist" #define LANGUAGE_CURATOR "curator" +#define LANGUAGE_CLOCKHEAD "absorb" #define LANGUAGE_GLAND "gland" #define LANGUAGE_HAT "hat" #define LANGUAGE_HIGH "high" diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index e11709dc1ddc..5ee2a1876f9a 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -29,7 +29,8 @@ /datum/language/shadowtongue, /datum/language/terrum, /datum/language/nekomimetic, - /datum/language/bong + /datum/language/bong, + /datum/language/clockhead, )) /obj/item/organ/tongue/Initialize(mapload) diff --git a/icons/hud/screen_skills.dmi b/icons/hud/screen_skills.dmi index 35b3e03251f0..2506dabd4352 100644 Binary files a/icons/hud/screen_skills.dmi and b/icons/hud/screen_skills.dmi differ diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index 721429b0cb59..5d4dfeb22ee4 100644 Binary files a/icons/misc/language.dmi and b/icons/misc/language.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 2875602c375e..ed71d4b6530e 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 0a45abb396cc..9a5ceac3ae54 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/lobotomy-corp13.dme b/lobotomy-corp13.dme index a7eb33437f05..0b202c0f7cdd 100644 --- a/lobotomy-corp13.dme +++ b/lobotomy-corp13.dme @@ -3915,6 +3915,7 @@ #include "interface\stylesheet.dm" #include "interface\skin.dmf" #include "ModularTegustation\chair_override.dm" +#include "ModularTegustation\danteh_head.dm" #include "ModularTegustation\engineering_bounties.dm" #include "ModularTegustation\harvestable_gardens.dm" #include "ModularTegustation\languagebooks.dm"