From 4fa0479c8333c5052c8aa0a4eaa2806a554c1e16 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 3 Apr 2024 23:44:23 +0200 Subject: [PATCH] [MIRROR] Cultist pets (#26983) * Cultist pets (#80595) ## About The Pull Request cultists can now convert pets on their side. when you convert a pet, it will become much more dangerous and obedient to you, it will also gain a new dangerous AI. cultist pets will look for fellow dead cultists, and revive them by dragging them to nearby revival runes and activating it. if there is no revival runes around them then they will create their own and drag u to it. u can give them commands to follow, attack, or to create revival runes. they will also go around to crit non cultists so cultists can convert them ![pughealed](https://github.com/tgstation/tgstation/assets/138636438/8cd10a4f-2a30-40d9-b4fb-c9ff70bdcddd) they will also now feed on organs and blood for healing ## Why It's Good For The Game adds a extra layer to cult, u can now command non-sentient pets to aid you ## Changelog :cl: add: cultists can now convert pets to their side /:cl: --------- Co-authored-by: san7890 * Yeah... --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: san7890 Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com> --- code/__DEFINES/ai/pets.dm | 14 + code/__DEFINES/antagonists.dm | 2 + code/__DEFINES/cult.dm | 6 + code/__DEFINES/span.dm | 8 +- code/__DEFINES/traits/declarations.dm | 2 + code/_globalvars/traits/_traits.dm | 1 + .../basic_ai_behaviors/pull_target.dm | 25 ++ code/datums/components/cult_ritual_item.dm | 6 +- code/datums/elements/basic_eating.dm | 2 + .../items/stacks/sheets/runed_metal.dm | 12 +- code/modules/antagonists/cult/blood_magic.dm | 52 ++-- code/modules/antagonists/cult/cult.dm | 8 +- .../antagonists/cult/cult_bastard_sword.dm | 2 +- code/modules/antagonists/cult/cult_comms.dm | 28 +- code/modules/antagonists/cult/cult_items.dm | 12 +- .../antagonists/cult/cult_structure_altar.dm | 2 +- .../cult/cult_structure_archives.dm | 2 +- .../antagonists/cult/cult_structure_forge.dm | 2 +- .../antagonists/cult/cult_structures.dm | 8 +- code/modules/antagonists/cult/cult_team.dm | 10 +- code/modules/antagonists/cult/runes.dm | 149 +++++------ .../antagonists/wizard/equipment/soulstone.dm | 4 +- .../job_types/chaplain/chaplain_nullrod.dm | 2 +- .../living/basic/blob_minions/blobbernaut.dm | 2 +- .../living/basic/cult/constructs/harvester.dm | 14 +- .../mob/living/basic/farm_animals/sheep.dm | 4 +- code/modules/mob/living/basic/pets/cat/cat.dm | 1 + .../mob/living/basic/pets/dog/corgi.dm | 3 +- .../mob/living/basic/pets/dog/dog_subtypes.dm | 1 + code/modules/mob/living/basic/pets/pet.dm | 17 +- .../living/basic/pets/pet_cult/pet_cult.dm | 85 ++++++ .../basic/pets/pet_cult/pet_cult_abilities.dm | 14 + .../living/basic/pets/pet_cult/pet_cult_ai.dm | 246 ++++++++++++++++++ code/modules/pai/pai.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 4 +- .../spells/spell_types/conjure/_conjure.dm | 5 + icons/mob/simple/pets.dmi | Bin 82578 -> 87024 bytes .../code/game/objects/items/holy_weapons.dm | 4 +- .../modules/mutants/code/mutant_component.dm | 4 +- tgstation.dme | 4 + .../tgui-panel/styles/tgchat/chat-dark.scss | 8 +- .../tgui-panel/styles/tgchat/chat-light.scss | 6 +- 42 files changed, 604 insertions(+), 179 deletions(-) create mode 100644 code/datums/ai/basic_mobs/basic_ai_behaviors/pull_target.dm create mode 100644 code/modules/mob/living/basic/pets/pet_cult/pet_cult.dm create mode 100644 code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm create mode 100644 code/modules/mob/living/basic/pets/pet_cult/pet_cult_ai.dm diff --git a/code/__DEFINES/ai/pets.dm b/code/__DEFINES/ai/pets.dm index c7383f56a00..48d4f2d67d0 100644 --- a/code/__DEFINES/ai/pets.dm +++ b/code/__DEFINES/ai/pets.dm @@ -51,6 +51,20 @@ /// key that holds items we arent interested in hoarding #define BB_IGNORE_ITEMS "ignore_items" +// Cultist pet keys +///our ability to summon runes +#define BB_RUNE_ABILITY "rune_ability" +///the cult team we serve +#define BB_CULT_TEAM "cult_team" +///our dead cultist we revive +#define BB_DEAD_CULTIST "dead_cultist" +///nearby runes +#define BB_NEARBY_RUNE "nearby_rune" +///occupied runes +#define BB_OCCUPIED_RUNE "occupied_rune" +///friendly cultists we befriend +#define BB_FRIENDLY_CULTIST "friendly_cultist" + //virtual pet keys ///the last PDA message we must relay #define BB_LAST_RECIEVED_MESSAGE "last_recieved_message" diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index d5533dcac54..7a510c9cdee 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -219,6 +219,8 @@ GLOBAL_LIST_INIT(ai_employers, list( /// Checks if the given mob is a blood cultist #define IS_CULTIST(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/cult)) +/// Checks if the mob is a sentient or non-sentient cultist +#define IS_CULTIST_OR_CULTIST_MOB(mob) ((IS_CULTIST(mob)) || (mob.faction.Find(FACTION_CULT))) /// Checks if the given mob is a changeling #define IS_CHANGELING(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/changeling)) diff --git a/code/__DEFINES/cult.dm b/code/__DEFINES/cult.dm index 3e0395eab4e..06393d145f8 100644 --- a/code/__DEFINES/cult.dm +++ b/code/__DEFINES/cult.dm @@ -36,6 +36,12 @@ /// The global Nar'sie that the cult's summoned GLOBAL_DATUM(cult_narsie, /obj/narsie) +///how many sacrifices we have used, cultists get 1 free revive at the start +GLOBAL_VAR_INIT(sacrifices_used, -SOULS_TO_REVIVE) + +/// list of weakrefs to mobs OR minds that have been sacrificed +GLOBAL_LIST(sacrificed) + // Used in determining which cinematic to play when cult ends #define CULT_VICTORY_MASS_CONVERSION 2 #define CULT_FAILURE_NARSIE_KILLED 1 diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm index bf918b55efc..0447e87f532 100644 --- a/code/__DEFINES/span.dm +++ b/code/__DEFINES/span.dm @@ -38,10 +38,10 @@ #define span_command_headset(str) ("" + str + "") #define span_comradio(str) ("" + str + "") #define span_cult(str) ("" + str + "") -#define span_cultbold(str) ("" + str + "") -#define span_cultboldtalic(str) ("" + str + "") -#define span_cultitalic(str) ("" + str + "") -#define span_cultlarge(str) ("" + str + "") +#define span_cult_bold(str) ("" + str + "") +#define span_cult_bold_italic(str) ("" + str + "") +#define span_cult_italic(str) ("" + str + "") +#define span_cult_large(str) ("" + str + "") #define span_danger(str) ("" + str + "") #define span_deadsay(str) ("" + str + "") #define span_deconversion_message(str) ("" + str + "") diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 9767173dfdc..348fafebdb4 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -1090,6 +1090,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait which self-identifies as an enemy of the law #define TRAIT_ALWAYS_WANTED "always_wanted" +/// Trait given to mobs that have the basic eating element +#define TRAIT_MOB_EATER "mob_eater" /// Trait which means whatever has this is dancing by a dance machine #define TRAIT_DISCO_DANCER "disco_dancer" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 5ee84733964..358a4b55599 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -295,6 +295,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_MINDSHIELD" = TRAIT_MINDSHIELD, "TRAIT_MIND_TEMPORARILY_GONE" = TRAIT_MIND_TEMPORARILY_GONE, "TRAIT_MOB_BREEDER" = TRAIT_MOB_BREEDER, + "TRAIT_MOB_EATER" = TRAIT_MOB_EATER, "TRAIT_MOB_TIPPED" = TRAIT_MOB_TIPPED, "TRAIT_MORBID" = TRAIT_MORBID, "TRAIT_MULTIZ_SUIT_SENSORS" = TRAIT_MULTIZ_SUIT_SENSORS, diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/pull_target.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/pull_target.dm new file mode 100644 index 00000000000..9bfc3f85d24 --- /dev/null +++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/pull_target.dm @@ -0,0 +1,25 @@ +/datum/ai_behavior/pull_target + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION | AI_BEHAVIOR_REQUIRE_REACH + +/datum/ai_behavior/pull_target/setup(datum/ai_controller/controller, target_key) + . = ..() + var/atom/target = controller.blackboard[target_key] + if(QDELETED(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/pull_target/perform(seconds_per_tick, datum/ai_controller/controller, target_key) + . = ..() + + var/atom/movable/target = controller.blackboard[target_key] + if(QDELETED(target) || target.anchored || target.pulledby) + finish_action(controller, FALSE, target_key) + return + var/mob/living/our_mob = controller.pawn + our_mob.start_pulling(target) + finish_action(controller, TRUE, target_key) + +/datum/ai_behavior/pull_target/finish_action(datum/ai_controller/controller, succeeded, target_key) + . = ..() + if(!succeeded) + controller.clear_blackboard_key(target_key) diff --git a/code/datums/components/cult_ritual_item.dm b/code/datums/components/cult_ritual_item.dm index c3acb0b9467..74bac463e32 100644 --- a/code/datums/components/cult_ritual_item.dm +++ b/code/datums/components/cult_ritual_item.dm @@ -283,13 +283,13 @@ return FALSE if(ispath(rune_to_scribe, /obj/effect/rune/summon) && (!is_station_level(our_turf.z) || istype(get_area(cultist), /area/space))) - to_chat(cultist, span_cultitalic("The veil is not weak enough here to summon a cultist, you must be on station!")) + to_chat(cultist, span_cult_italic("The veil is not weak enough here to summon a cultist, you must be on station!")) return if(ispath(rune_to_scribe, /obj/effect/rune/apocalypse)) if((world.time - SSticker.round_start_time) <= 6000) var/wait = 6000 - (world.time - SSticker.round_start_time) - to_chat(cultist, span_cultitalic("The veil is not yet weak enough for this rune - it will be available in [DisplayTimeText(wait)].")) + to_chat(cultist, span_cult_italic("The veil is not yet weak enough for this rune - it will be available in [DisplayTimeText(wait)].")) return if(!check_if_in_ritual_site(cultist, user_team, TRUE)) return @@ -359,7 +359,7 @@ to_chat(cultist, span_warning("The sacrifice is not complete. The portal would lack the power to open if you tried!")) return FALSE if(summon_objective.check_completion()) - to_chat(cultist, span_cultlarge("\"I am already here. There is no need to try to summon me now.\"")) + to_chat(cultist, span_cult_large("\"I am already here. There is no need to try to summon me now.\"")) return FALSE var/confirm_final = tgui_alert(cultist, "This is the FINAL step to summon Nar'Sie; it is a long, painful ritual and the crew will be alerted to your presence.", "Are you prepared for the final battle?", list("My life for Nar'Sie!", "No")) if(confirm_final == "No") diff --git a/code/datums/elements/basic_eating.dm b/code/datums/elements/basic_eating.dm index 2a7a4b46598..757fd8b3519 100644 --- a/code/datums/elements/basic_eating.dm +++ b/code/datums/elements/basic_eating.dm @@ -23,6 +23,7 @@ if(!isliving(target)) return ELEMENT_INCOMPATIBLE + ADD_TRAIT(target, TRAIT_MOB_EATER, REF(src)) src.heal_amt = heal_amt src.damage_amount = damage_amount src.damage_type = damage_type @@ -35,6 +36,7 @@ RegisterSignal(target, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(on_pre_attackingtarget)) /datum/element/basic_eating/Detach(datum/target) + REMOVE_TRAIT(target, TRAIT_MOB_EATER, REF(src)) UnregisterSignal(target, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET)) return ..() diff --git a/code/game/objects/items/stacks/sheets/runed_metal.dm b/code/game/objects/items/stacks/sheets/runed_metal.dm index a1febc091b7..b60cd67d389 100644 --- a/code/game/objects/items/stacks/sheets/runed_metal.dm +++ b/code/game/objects/items/stacks/sheets/runed_metal.dm @@ -8,7 +8,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 4 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Pylon: Heals and regenerates the blood of nearby blood cultists and constructs, and also \ + desc = span_cult_bold("Pylon: Heals and regenerates the blood of nearby blood cultists and constructs, and also \ converts nearby floor tiles into engraved flooring, which allows blood cultists to scribe runes faster."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ @@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 4 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Altar: Can make Eldritch Whetstones, Construct Shells, and Flasks of Unholy Water."), \ + desc = span_cult_bold("Altar: Can make Eldritch Whetstones, Construct Shells, and Flasks of Unholy Water."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ ), \ @@ -31,7 +31,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 4 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Archives: Can make Zealot's Blindfolds, Shuttle Curse Orbs, \ + desc = span_cult_bold("Archives: Can make Zealot's Blindfolds, Shuttle Curse Orbs, \ and Veil Walker equipment. Emits Light."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ @@ -43,7 +43,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 4 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Daemon Forge: Can make Nar'Sien Hardened Armor, Flagellant's Robes, \ + desc = span_cult_bold("Daemon Forge: Can make Nar'Sien Hardened Armor, Flagellant's Robes, \ and Eldritch Longswords. Emits Light."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ @@ -54,7 +54,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 5 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Runed Door: A weak door which stuns non-blood cultists who touch it."), \ + desc = span_cult_bold("Runed Door: A weak door which stuns non-blood cultists who touch it."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ ), \ @@ -64,7 +64,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 5 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Runed Girder: A weak girder that can be instantly destroyed by ritual daggers. Not a recommended usage of runed metal."), \ + desc = span_cult_bold("Runed Girder: A weak girder that can be instantly destroyed by ritual daggers. Not a recommended usage of runed metal."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ ), \ diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 015fed21360..3d3f2a31f58 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -46,9 +46,9 @@ limit = MAX_BLOODCHARGE if(length(spells) >= limit) if(rune) - to_chat(owner, span_cultitalic("You cannot store more than [MAX_BLOODCHARGE] spells. Pick a spell to remove.")) + to_chat(owner, span_cult_italic("You cannot store more than [MAX_BLOODCHARGE] spells. Pick a spell to remove.")) else - to_chat(owner, span_cultitalic("You cannot store more than [RUNELESS_MAX_BLOODCHARGE] spells without an empowering rune! Pick a spell to remove.")) + to_chat(owner, span_cult_bold_italic("You cannot store more than [RUNELESS_MAX_BLOODCHARGE] spells without an empowering rune! Pick a spell to remove.")) var/nullify_spell = tgui_input_list(owner, "Spell to remove", "Current Spells", spells) if(isnull(nullify_spell)) return @@ -77,7 +77,7 @@ if(!channeling) channeling = TRUE else - to_chat(owner, span_cultitalic("You are already invoking blood magic!")) + to_chat(owner, span_cult_italic("You are already invoking blood magic!")) return if(do_after(owner, 100 - rune*60, target = owner)) if(ishuman(owner)) @@ -167,7 +167,7 @@ /datum/action/innate/cult/blood_spell/emp/Activate() owner.whisper(invocation, language = /datum/language/common) owner.visible_message(span_warning("[owner]'s hand flashes a bright blue!"), \ - span_cultitalic("You speak the cursed words, emitting an EMP blast from your hand.")) + span_cult_italic("You speak the cursed words, emitting an EMP blast from your hand.")) empulse(owner, 2, 5) charges-- if(charges <= 0) @@ -205,13 +205,13 @@ var/turf/owner_turf = get_turf(owner) owner.whisper(invocation, language = /datum/language/common) owner.visible_message(span_warning("[owner]'s hand glows red for a moment."), \ - span_cultitalic("Your plea for aid is answered, and light begins to shimmer and take form within your hand!")) + span_cult_italic("Your plea for aid is answered, and light begins to shimmer and take form within your hand!")) var/obj/item/summoned_blade = new summoned_type(owner_turf) if(owner.put_in_hands(summoned_blade)) to_chat(owner, span_warning("A [summoned_blade] appears in your hand!")) else owner.visible_message(span_warning("A [summoned_blade] appears at [owner]'s feet!"), \ - span_cultitalic("A [summoned_blade] materializes at your feet.")) + span_cult_italic("A [summoned_blade] materializes at your feet.")) SEND_SOUND(owner, sound('sound/effects/magic.ogg', FALSE, 0, 25)) charges-- if(charges <= 0) @@ -249,7 +249,7 @@ clicked_on.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", sparkle_image, NONE) addtimer(CALLBACK(clicked_on, TYPE_PROC_REF(/atom/, remove_alt_appearance), "cult_apoc", TRUE), 4 MINUTES, TIMER_OVERRIDE|TIMER_UNIQUE) - to_chat(caller, span_cultbold("[clicked_on] has been cursed with living nightmares!")) + to_chat(caller, span_cult_bold("[clicked_on] has been cursed with living nightmares!")) charges-- desc = base_desc @@ -272,7 +272,7 @@ /datum/action/innate/cult/blood_spell/veiling/Activate() if(!revealing) owner.visible_message(span_warning("Thin grey dust falls from [owner]'s hand!"), \ - span_cultitalic("You invoke the veiling spell, hiding nearby runes.")) + span_cult_italic("You invoke the veiling spell, hiding nearby runes.")) charges-- SEND_SOUND(owner, sound('sound/magic/smoke.ogg',0,1,25)) owner.whisper(invocation, language = /datum/language/common) @@ -291,7 +291,7 @@ button_icon_state = "back" else owner.visible_message(span_warning("A flash of light shines from [owner]'s hand!"), \ - span_cultitalic("You invoke the counterspell, revealing nearby runes.")) + span_cult_italic("You invoke the counterspell, revealing nearby runes.")) charges-- owner.whisper(invocation, language = /datum/language/common) SEND_SOUND(owner, sound('sound/magic/enter_blood.ogg',0,1,25)) @@ -404,7 +404,7 @@ return if(IS_CULTIST(user)) user.visible_message(span_warning("[user] holds up [user.p_their()] hand, which explodes in a flash of red light!"), \ - span_cultitalic("You attempt to stun [target] with the spell!")) + span_cult_italic("You attempt to stun [target] with the spell!")) user.mob_light(range = 1.1, power = 2, color = LIGHT_COLOR_BLOOD_MAGIC, duration = 0.2 SECONDS) if(IS_HERETIC(target)) to_chat(user, span_warning("Some force greater than you intervenes! [target] is protected by the Forgotten Gods!")) @@ -425,7 +425,7 @@ else if(target.can_block_magic()) to_chat(user, span_warning("The spell had no effect!")) else - to_chat(user, span_cultitalic("In a brilliant flash of red, [target] falls to the ground!")) + to_chat(user, span_cult_italic("In a brilliant flash of red, [target] falls to the ground!")) target.Paralyze(16 SECONDS) target.flash_act(1, TRUE) if(issilicon(target)) @@ -464,7 +464,7 @@ var/turf/T = get_turf(src) if(is_away_level(T.z)) - to_chat(user, span_cultitalic("You are not in the right dimension!")) + to_chat(user, span_cult_italic("You are not in the right dimension!")) return var/input_rune_key = tgui_input_list(user, "Rune to teleport to", "Teleportation Target", potential_runes) //we know what key they picked @@ -485,7 +485,7 @@ var/mob/living/L = target if(do_teleport(L, dest, channel = TELEPORT_CHANNEL_CULT)) origin.visible_message(span_warning("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] with a sharp crack!"), \ - span_cultitalic("You speak the words of the talisman and find yourself somewhere else!"), "You hear a sharp crack.") + span_cult_italic("You speak the words of the talisman and find yourself somewhere else!"), "You hear a sharp crack.") dest.visible_message(span_warning("There is a boom of outrushing air as something appears above the rune!"), null, "You hear a boom.") ..() @@ -502,7 +502,7 @@ if(C.canBeHandcuffed()) CuffAttack(C, user) else - user.visible_message(span_cultitalic("This victim doesn't have enough arms to complete the restraint!")) + user.visible_message(span_cult_italic("This victim doesn't have enough arms to complete the restraint!")) return ..() @@ -560,7 +560,7 @@ /obj/item/melee/blood_magic/construction/afterattack(atom/target, mob/user, proximity_flag, click_parameters) if(proximity_flag && IS_CULTIST(user)) if(channeling) - to_chat(user, span_cultitalic("You are already invoking twisted construction!")) + to_chat(user, span_cult_italic("You are already invoking twisted construction!")) return . |= AFTERATTACK_PROCESSED_ITEM var/turf/T = get_turf(target) @@ -743,7 +743,7 @@ user.Beam(human_bloodbag, icon_state="drainbeam", time = 1 SECONDS) playsound(get_turf(human_bloodbag), 'sound/magic/enter_blood.ogg', 50) human_bloodbag.visible_message(span_danger("[user] drains some of [human_bloodbag]'s blood!")) - to_chat(user,span_cultitalic("Your blood rite gains 50 charges from draining [human_bloodbag]'s blood.")) + to_chat(user,span_cult_italic("Your blood rite gains 50 charges from draining [human_bloodbag]'s blood.")) new /obj/effect/temp_visual/cult/sparks(get_turf(human_bloodbag)) else to_chat(user,span_warning("[human_bloodbag.p_Theyre()] missing too much blood - you cannot drain [human_bloodbag.p_them()] further!")) @@ -787,7 +787,7 @@ user.Beam(our_turf,icon_state="drainbeam", time = 15) new /obj/effect/temp_visual/cult/sparks(get_turf(user)) playsound(our_turf, 'sound/magic/enter_blood.ogg', 50) - to_chat(user, span_cultitalic("Your blood rite has gained [round(blood_to_gain)] charge\s from blood sources around you!")) + to_chat(user, span_cult_italic("Your blood rite has gained [round(blood_to_gain)] charge\s from blood sources around you!")) uses += max(1, round(blood_to_gain)) /obj/item/melee/blood_magic/manipulator/attack_self(mob/living/user) @@ -799,12 +799,12 @@ ) var/choice = show_radial_menu(user, src, spells, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE) if(!check_menu(user)) - to_chat(user, span_cultitalic("You decide against conducting a greater blood rite.")) + to_chat(user, span_cult_italic("You decide against conducting a greater blood rite.")) return switch(choice) if("Bloody Halberd (150)") if(uses < BLOOD_HALBERD_COST) - to_chat(user, span_cultitalic("You need [BLOOD_HALBERD_COST] charges to perform this rite.")) + to_chat(user, span_cult_italic("You need [BLOOD_HALBERD_COST] charges to perform this rite.")) else uses -= BLOOD_HALBERD_COST var/turf/current_position = get_turf(user) @@ -814,13 +814,13 @@ halberd_act_granted.Grant(user, rite) rite.halberd_act = halberd_act_granted if(user.put_in_hands(rite)) - to_chat(user, span_cultitalic("A [rite.name] appears in your hand!")) + to_chat(user, span_cult_italic("A [rite.name] appears in your hand!")) else user.visible_message(span_warning("A [rite.name] appears at [user]'s feet!"), \ - span_cultitalic("A [rite.name] materializes at your feet.")) + span_cult_italic("A [rite.name] materializes at your feet.")) if("Blood Bolt Barrage (300)") if(uses < BLOOD_BARRAGE_COST) - to_chat(user, span_cultitalic("You need [BLOOD_BARRAGE_COST] charges to perform this rite.")) + to_chat(user, span_cult_italic("You need [BLOOD_BARRAGE_COST] charges to perform this rite.")) else var/obj/rite = new /obj/item/gun/magic/wand/arcane_barrage/blood() uses -= BLOOD_BARRAGE_COST @@ -828,19 +828,19 @@ if(user.put_in_hands(rite)) to_chat(user, span_cult("Your hands glow with power!")) else - to_chat(user, span_cultitalic("You need a free hand for this rite!")) + to_chat(user, span_cult_italic("You need a free hand for this rite!")) qdel(rite) if("Blood Beam (500)") if(uses < BLOOD_BEAM_COST) - to_chat(user, span_cultitalic("You need [BLOOD_BEAM_COST] charges to perform this rite.")) + to_chat(user, span_cult_italic("You need [BLOOD_BEAM_COST] charges to perform this rite.")) else var/obj/rite = new /obj/item/blood_beam() uses -= BLOOD_BEAM_COST qdel(src) if(user.put_in_hands(rite)) - to_chat(user, span_cultlarge("Your hands glow with POWER OVERWHELMING!!!")) + to_chat(user, span_cult_large("Your hands glow with POWER OVERWHELMING!!!")) else - to_chat(user, span_cultitalic("You need a free hand for this rite!")) + to_chat(user, span_cult_italic("You need a free hand for this rite!")) qdel(rite) /obj/item/melee/blood_magic/manipulator/proc/check_menu(mob/living/user) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index d9418bb1010..e6faa911ee4 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -202,10 +202,10 @@ for(var/datum/mind/cult_mind as anything in cult_team.members) var/datum/antagonist/cult/cult_datum = cult_mind.has_antag_datum(/datum/antagonist/cult) cult_datum.vote_ability.Remove(cult_mind.current) - to_chat(cult_mind.current, span_cultlarge("[owner.current] has won the cult's support and is now their master. \ + to_chat(cult_mind.current, span_cult_large("[owner.current] has won the cult's support and is now their master. \ Follow [owner.current.p_their()] orders to the best of your ability!")) - to_chat(owner.current, span_cultlarge("You are the cult's Master. \ + to_chat(owner.current, span_cult_large("You are the cult's Master. \ As the cult's Master, you have a unique title and loud voice when communicating, are capable of marking \ targets, such as a location or a noncultist, to direct the cult to them, and, finally, you are capable of \ summoning the entire living cult to your location once. Use these abilities to direct the cult \ @@ -238,7 +238,7 @@ var/datum/antagonist/cult/cult_datum = cult_mind.has_antag_datum(/datum/antagonist/cult) cult_datum.vote_ability.Grant(cult_mind.current) - to_chat(owner.current, span_cultlarge("You have been demoted from being the cult's Master, you are now an acolyte once more!")) + to_chat(owner.current, span_cult_large("You have been demoted from being the cult's Master, you are now an acolyte once more!")) return TRUE @@ -256,7 +256,7 @@ var/area/current_area = get_area(owner.current) for(var/datum/mind/cult_mind as anything in cult_team.members) SEND_SOUND(cult_mind, sound('sound/hallucinations/veryfar_noise.ogg')) - to_chat(cult_mind, span_cultlarge("The Cult's Master, [owner.current.name], has fallen in \the [current_area]!")) + to_chat(cult_mind, span_cult_large("The Cult's Master, [owner.current.name], has fallen in \the [current_area]!")) /datum/antagonist/cult/get_preview_icon() var/icon/icon = render_preview_outfit(preview_outfit) diff --git a/code/modules/antagonists/cult/cult_bastard_sword.dm b/code/modules/antagonists/cult/cult_bastard_sword.dm index 784eaedf636..0d70bd503fb 100644 --- a/code/modules/antagonists/cult/cult_bastard_sword.dm +++ b/code/modules/antagonists/cult/cult_bastard_sword.dm @@ -77,7 +77,7 @@ force = 5 return else - to_chat(user, span_cultlarge("\"You cling to the Forgotten Gods, as if you're more than their pawn.\"")) + to_chat(user, span_cult_large("\"You cling to the Forgotten Gods, as if you're more than their pawn.\"")) to_chat(user, span_userdanger("A horrible force yanks at your arm!")) user.emote("scream") user.apply_damage(30, BRUTE, pick(GLOB.arm_zones)) diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm index 17dcdc37789..ff64cc86a2b 100644 --- a/code/modules/antagonists/cult/cult_comms.dm +++ b/code/modules/antagonists/cult/cult_comms.dm @@ -81,7 +81,7 @@ var/my_message if(!message) return - my_message = span_cultboldtalic("The [user.name]: [message]") + my_message = span_cult_bold_italic("The [user.name]: [message]") for(var/mob/player_list as anything in GLOB.player_list) if(IS_CULTIST(player_list)) to_chat(player_list, my_message) @@ -123,7 +123,7 @@ if(team_member.current.incapacitated()) continue SEND_SOUND(team_member.current, 'sound/hallucinations/im_here1.ogg') - to_chat(team_member.current, span_cultlarge("Acolyte [nominee] has asserted that [nominee.p_theyre()] worthy of leading the cult. A vote will be called shortly.")) + to_chat(team_member.current, span_cult_large("Acolyte [nominee] has asserted that [nominee.p_theyre()] worthy of leading the cult. A vote will be called shortly.")) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(poll_cultists_for_leader), nominee, team), 10 SECONDS) @@ -137,7 +137,7 @@ team_member.current.update_mob_action_buttons() if(team_member.current.incapacitated()) continue - to_chat(team_member.current,span_cultlarge("[nominee] has died in the process of attempting to start a vote!")) + to_chat(team_member.current,span_cult_large("[nominee] has died in the process of attempting to start a vote!")) return FALSE var/list/mob/living/asked_cultists = list() for(var/datum/mind/team_member as anything in team.members) @@ -169,7 +169,7 @@ team_member.current.update_mob_action_buttons() if(team_member.current.incapacitated()) continue - to_chat(team_member.current,span_cultlarge("[nominee] has died in the process of attempting to win the cult's support!")) + to_chat(team_member.current,span_cult_large("[nominee] has died in the process of attempting to win the cult's support!")) return FALSE if(!nominee.mind) team.cult_vote_called = FALSE @@ -179,7 +179,7 @@ team_member.current.update_mob_action_buttons() if(team_member.current.incapacitated()) continue - to_chat(team_member.current,span_cultlarge("[nominee] has gone catatonic in the process of attempting to win the cult's support!")) + to_chat(team_member.current,span_cult_large("[nominee] has gone catatonic in the process of attempting to win the cult's support!")) return FALSE if(LAZYLEN(yes_voters) <= LAZYLEN(asked_cultists) * 0.5) team.cult_vote_called = FALSE @@ -189,7 +189,7 @@ team_member.current.update_mob_action_buttons() if(team_member.current.incapacitated()) continue - to_chat(team_member.current, span_cultlarge("[nominee] could not win the cult's support and shall continue to serve as an acolyte.")) + to_chat(team_member.current, span_cult_large("[nominee] could not win the cult's support and shall continue to serve as an acolyte.")) return FALSE team.cult_vote_called = FALSE @@ -218,7 +218,7 @@ var/place = get_area(owner) var/datum/objective/eldergod/summon_objective = locate() in antag.cult_team.objectives if(place in summon_objective.summon_spots)//cant do final reckoning in the summon area to prevent abuse, you'll need to get everyone to stand on the circle! - to_chat(owner, span_cultlarge("The veil is too weak here! Move to an area where it is strong enough to support this magic.")) + to_chat(owner, span_cult_large("The veil is too weak here! Move to an area where it is strong enough to support this magic.")) return for(var/i in 1 to 4) chant(i) @@ -353,14 +353,14 @@ if(cult_team.blood_target) if(!COOLDOWN_FINISHED(src, cult_mark_cooldown)) cult_team.unset_blood_target_and_timer() - to_chat(owner, span_cultbold("You have cleared the cult's blood target!")) + to_chat(owner, span_cult_bold("You have cleared the cult's blood target!")) return TRUE - to_chat(owner, span_cultbold("The cult has already designated a target!")) + to_chat(owner, span_cult_bold("The cult has already designated a target!")) return FALSE if(!COOLDOWN_FINISHED(src, cult_mark_cooldown)) - to_chat(owner, span_cultbold("You aren't ready to place another blood mark yet!")) + to_chat(owner, span_cult_bold("You aren't ready to place another blood mark yet!")) return FALSE var/atom/mark_target = owner.orbiting?.parent || get_turf(owner) @@ -368,7 +368,7 @@ return FALSE if(cult_team.set_blood_target(mark_target, owner, 60 SECONDS)) - to_chat(owner, span_cultbold("You have marked [mark_target] for the cult! It will last for [DisplayTimeText(cult_mark_duration)].")) + to_chat(owner, span_cult_bold("You have marked [mark_target] for the cult! It will last for [DisplayTimeText(cult_mark_duration)].")) COOLDOWN_START(src, cult_mark_cooldown, cult_mark_cooldown_duration) build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON) addtimer(CALLBACK(src, PROC_REF(reset_button)), cult_mark_cooldown_duration + 1) @@ -400,7 +400,7 @@ return SEND_SOUND(owner, 'sound/magic/enter_blood.ogg') - to_chat(owner, span_cultbold("Your previous mark is gone - you are now ready to create a new blood mark.")) + to_chat(owner, span_cult_bold("Your previous mark is gone - you are now ready to create a new blood mark.")) build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON) //////// ELDRITCH PULSE ///////// @@ -489,12 +489,12 @@ if(!IS_CULTIST(living_clicked)) return FALSE SEND_SOUND(caller, sound('sound/weapons/thudswoosh.ogg')) - to_chat(caller, span_cultbold("You reach through the veil with your mind's eye and seize [clicked_on]! Click anywhere nearby to teleport [clicked_on.p_them()]!")) + to_chat(caller, span_cult_bold("You reach through the veil with your mind's eye and seize [clicked_on]! Click anywhere nearby to teleport [clicked_on.p_them()]!")) throwee_ref = WEAKREF(clicked_on) return TRUE if(istype(clicked_on, /obj/structure/destructible/cult)) - to_chat(caller, span_cultbold("You reach through the veil with your mind's eye and lift [clicked_on]! Click anywhere nearby to teleport it!")) + to_chat(caller, span_cult_bold("You reach through the veil with your mind's eye and lift [clicked_on]! Click anywhere nearby to teleport it!")) throwee_ref = WEAKREF(clicked_on) return TRUE diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 5426b41805a..7877a3dd1cb 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -97,7 +97,7 @@ Striking a noncultist, however, will tear their flesh."} user.Paralyze(100) user.dropItemToGround(src, TRUE) user.visible_message(span_warning("A powerful force shoves [user] away from [target]!"), \ - span_cultlarge("\"You shouldn't play with sharp things. You'll poke someone's eye out.\"")) + span_cult_large("\"You shouldn't play with sharp things. You'll poke someone's eye out.\"")) if(ishuman(user)) var/mob/living/carbon/human/miscreant = user miscreant.apply_damage(rand(force/2, force), BRUTE, pick(GLOB.arm_zones)) @@ -121,7 +121,7 @@ Striking a noncultist, however, will tear their flesh."} /obj/item/melee/cultblade/pickup(mob/living/user) ..() if(!IS_CULTIST(user)) - to_chat(user, span_cultlarge("\"I wouldn't advise that.\"")) + to_chat(user, span_cult_large("\"I wouldn't advise that.\"")) /datum/action/innate/dash/cult name = "Rend the Veil" @@ -156,7 +156,7 @@ Striking a noncultist, however, will tear their flesh."} return var/mob/living/carbon/carbon_user = user if(user.num_legs < 2 || carbon_user.legcuffed) //if they can't be ensnared, stun for the same time as it takes to breakout of bola - to_chat(user, span_cultlarge("\"I wouldn't advise that.\"")) + to_chat(user, span_cult_large("\"I wouldn't advise that.\"")) user.dropItemToGround(src, TRUE) user.Paralyze(CULT_BOLA_PICKUP_STUN) else @@ -413,7 +413,7 @@ Striking a noncultist, however, will tear their flesh."} /obj/item/clothing/suit/hooded/cultrobes/cult_shield/equipped(mob/living/user, slot) ..() if(!IS_CULTIST(user)) - to_chat(user, span_cultlarge("\"I wouldn't advise that.\"")) + to_chat(user, span_cult_large("\"I wouldn't advise that.\"")) to_chat(user, span_warning("An overwhelming sense of nausea overpowers you!")) user.dropItemToGround(src, TRUE) user.set_dizzy_if_lower(1 MINUTES) @@ -450,7 +450,7 @@ Striking a noncultist, however, will tear their flesh."} /obj/item/clothing/suit/hooded/cultrobes/berserker/equipped(mob/living/user, slot) ..() if(!IS_CULTIST(user)) - to_chat(user, span_cultlarge("\"I wouldn't advise that.\"")) + to_chat(user, span_cult_large("\"I wouldn't advise that.\"")) to_chat(user, span_warning("An overwhelming sense of nausea overpowers you!")) user.dropItemToGround(src, TRUE) user.set_dizzy_if_lower(1 MINUTES) @@ -467,7 +467,7 @@ Striking a noncultist, however, will tear their flesh."} /obj/item/clothing/glasses/hud/health/night/cultblind/equipped(mob/living/user, slot) ..() if(user.stat != DEAD && !IS_CULTIST(user) && (slot & ITEM_SLOT_EYES)) - to_chat(user, span_cultlarge("\"You want to be blind, do you?\"")) + to_chat(user, span_cult_large("\"You want to be blind, do you?\"")) user.dropItemToGround(src, TRUE) user.set_dizzy_if_lower(1 MINUTES) user.Paralyze(100) diff --git a/code/modules/antagonists/cult/cult_structure_altar.dm b/code/modules/antagonists/cult/cult_structure_altar.dm index 1f1a9bd71cb..9347acb3321 100644 --- a/code/modules/antagonists/cult/cult_structure_altar.dm +++ b/code/modules/antagonists/cult/cult_structure_altar.dm @@ -30,7 +30,7 @@ options = altar_items /obj/structure/destructible/cult/item_dispenser/altar/succcess_message(mob/living/user, obj/item/spawned_item) - to_chat(user, span_cultitalic("You kneel before [src] and your faith is rewarded with [spawned_item]!")) + to_chat(user, span_cult_italic("You kneel before [src] and your faith is rewarded with [spawned_item]!")) #undef ELDRITCH_WHETSTONE #undef CONSTRUCT_SHELL diff --git a/code/modules/antagonists/cult/cult_structure_archives.dm b/code/modules/antagonists/cult/cult_structure_archives.dm index 933b90dbf4e..a9617396633 100644 --- a/code/modules/antagonists/cult/cult_structure_archives.dm +++ b/code/modules/antagonists/cult/cult_structure_archives.dm @@ -32,7 +32,7 @@ options = archive_items /obj/structure/destructible/cult/item_dispenser/archives/succcess_message(mob/living/user, obj/item/spawned_item) - to_chat(user, span_cultitalic("You summon [spawned_item] from [src]!")) + to_chat(user, span_cult_italic("You summon [spawned_item] from [src]!")) // Preset for the library that doesn't spawn runed metal on destruction. /obj/structure/destructible/cult/item_dispenser/archives/library diff --git a/code/modules/antagonists/cult/cult_structure_forge.dm b/code/modules/antagonists/cult/cult_structure_forge.dm index ceb38398a67..912db7d37e9 100644 --- a/code/modules/antagonists/cult/cult_structure_forge.dm +++ b/code/modules/antagonists/cult/cult_structure_forge.dm @@ -32,7 +32,7 @@ options = forge_items /obj/structure/destructible/cult/item_dispenser/forge/succcess_message(mob/living/user, obj/item/spawned_item) - to_chat(user, span_cultitalic("You work [src] as dark knowledge guides your hands, creating [spawned_item]!")) + to_chat(user, span_cult_italic("You work [src] as dark knowledge guides your hands, creating [spawned_item]!")) /obj/structure/destructible/cult/item_dispenser/forge/engine name = "magma engine" diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index ebf66a7ee15..932c3ac03c1 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -25,7 +25,7 @@ if(cult_examine_tip) . += span_cult(cult_examine_tip) if(!COOLDOWN_FINISHED(src, use_cooldown_duration)) - . += span_cultitalic("The magic in [src] is too weak, it will be ready to use again in [DisplayTimeText(COOLDOWN_TIMELEFT(src, use_cooldown_duration))].") + . += span_cult_italic("The magic in [src] is too weak, it will be ready to use again in [DisplayTimeText(COOLDOWN_TIMELEFT(src, use_cooldown_duration))].") /obj/structure/destructible/cult/set_anchored(anchorvalue) . = ..() @@ -78,10 +78,10 @@ to_chat(user, span_warning("You're pretty sure you know exactly what this is used for and you can't seem to touch it.")) return if(!anchored) - to_chat(user, span_cultitalic("You need to anchor [src] to the floor first.")) + to_chat(user, span_cult_italic("You need to anchor [src] to the floor first.")) return if(!COOLDOWN_FINISHED(src, use_cooldown)) - to_chat(user, span_cultitalic("The magic in [src] is too weak, it will be ready to use again in [DisplayTimeText(COOLDOWN_TIMELEFT(src, use_cooldown))].")) + to_chat(user, span_cult_italic("The magic in [src] is too weak, it will be ready to use again in [DisplayTimeText(COOLDOWN_TIMELEFT(src, use_cooldown))].")) return var/list/spawned_items = get_items_to_spawn(user) @@ -142,7 +142,7 @@ * Override for unique feedback messages on item spawn. */ /obj/structure/destructible/cult/item_dispenser/proc/succcess_message(mob/living/user, obj/item/spawned_item) - to_chat(user, span_cultitalic("[src] produces a [spawned_item.name].")) + to_chat(user, span_cult_italic("[src] produces a [spawned_item.name].")) /* * Simple proc intended for use in callbacks to determine if [user] can continue to use a radial menu. diff --git a/code/modules/antagonists/cult/cult_team.dm b/code/modules/antagonists/cult/cult_team.dm index 1d199a113f5..c47cc2145b5 100644 --- a/code/modules/antagonists/cult/cult_team.dm +++ b/code/modules/antagonists/cult/cult_team.dm @@ -49,7 +49,7 @@ for(var/datum/mind/mind as anything in members) if(mind.current) SEND_SOUND(mind.current, 'sound/ambience/antag/bloodcult/bloodcult_eyes.ogg') - to_chat(mind.current, span_cultlarge(span_warning("The veil weakens as your cult grows, your eyes begin to glow..."))) + to_chat(mind.current, span_cult_large(span_warning("The veil weakens as your cult grows, your eyes begin to glow..."))) mind.current.AddElement(/datum/element/cult_eyes) cult_risen = TRUE log_game("The blood cult has risen with [cultplayers] players.") @@ -58,7 +58,7 @@ for(var/datum/mind/mind as anything in members) if(mind.current) SEND_SOUND(mind.current, 'sound/ambience/antag/bloodcult/bloodcult_halos.ogg') - to_chat(mind.current, span_cultlarge(span_warning("Your cult is ascendent and the red harvest approaches - you cannot hide your true nature for much longer!!"))) + to_chat(mind.current, span_cult_large(span_warning("Your cult is ascendent and the red harvest approaches - you cannot hide your true nature for much longer!!"))) mind.current.AddElement(/datum/element/cult_halo) cult_ascendent = TRUE log_game("The blood cult has ascended with [cultplayers] players.") @@ -156,7 +156,7 @@ if(cultist.current.stat == DEAD || !cultist.current.client) continue - to_chat(cultist.current, span_bold(span_cultlarge("[marker] has marked [blood_target] in the [target_area.name] as the cult's top priority, get there immediately!"))) + to_chat(cultist.current, span_bold(span_cult_large("[marker] has marked [blood_target] in the [target_area.name] as the cult's top priority, get there immediately!"))) SEND_SOUND(cultist.current, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'), 0, 1, 75)) cultist.current.client.images += blood_target_image @@ -175,9 +175,9 @@ continue if(QDELETED(blood_target)) - to_chat(cultist.current, span_bold(span_cultlarge("The blood mark's target is lost!"))) + to_chat(cultist.current, span_bold(span_cult_large("The blood mark's target is lost!"))) else - to_chat(cultist.current, span_bold(span_cultlarge("The blood mark has expired!"))) + to_chat(cultist.current, span_bold(span_cult_large("The blood mark has expired!"))) cultist.current.client.images -= blood_target_image UnregisterSignal(blood_target, COMSIG_QDELETING) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 8e5e7099be4..6fe9cf47298 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -1,6 +1,4 @@ -/// list of weakrefs to mobs OR minds that have been sacrificed -GLOBAL_LIST(sacrificed) /// List of all teleport runes GLOBAL_LIST(teleport_runes) /// Assoc list of every rune that can be drawn by ritual daggers. [rune_name] = [typepath] @@ -100,7 +98,7 @@ Runes can either be invoked by one's self or with many different cultists. Each . = ..() if(.) return - if(!IS_CULTIST(user)) + if(!IS_CULTIST_OR_CULTIST_MOB(user)) to_chat(user, span_warning("You aren't able to understand the words of [src].")) return var/list/invokers = can_invoke(user) @@ -110,15 +108,16 @@ Runes can either be invoked by one's self or with many different cultists. Each to_chat(user, span_danger("You need [req_cultists - length(invokers)] more adjacent cultists to use this rune in such a manner.")) fail_invoke() -/obj/effect/rune/attack_animal(mob/living/simple_animal/user, list/modifiers) - if(isshade(user) || isconstruct(user)) - if(HAS_TRAIT(user, TRAIT_ANGELIC)) - to_chat(user, span_warning("You purge the rune!")) - qdel(src) - else if(construct_invoke || !IS_CULTIST(user)) //if you're not a cult construct we want the normal fail message - attack_hand(user) - else - to_chat(user, span_warning("You are unable to invoke the rune!")) +/obj/effect/rune/attack_animal(mob/living/user, list/modifiers) + if(!isshade(user) && !isconstruct(user)) + return + if(HAS_TRAIT(user, TRAIT_ANGELIC)) + to_chat(user, span_warning("You purge the rune!")) + qdel(src) + else if(construct_invoke || !IS_CULTIST(user)) //if you're not a cult construct we want the normal fail message + attack_hand(user) + else + to_chat(user, span_warning("You are unable to invoke the rune!")) /obj/effect/rune/proc/conceal() //for talisman of revealing/hiding visible_message(span_danger("[src] fades away.")) @@ -161,17 +160,19 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/proc/invoke(list/invokers) //This proc contains the effects of the rune as well as things that happen afterwards. If you want it to spawn an object and then delete itself, have both here. - for(var/M in invokers) - if(isliving(M)) - var/mob/living/L = M - if(invocation) - L.say(invocation, language = /datum/language/common, ignore_spam = TRUE, forced = "cult invocation") - if(invoke_damage) - L.apply_damage(invoke_damage, BRUTE) - to_chat(L, "[src] saps your strength!") - else if(istype(M, /obj/item/toy/plush/narplush)) - var/obj/item/toy/plush/narplush/P = M - P.visible_message("[P] squeaks loudly!") + for(var/atom/invoker in invokers) + if(istype(invoker, /obj/item/toy/plush/narplush)) + invoker.visible_message(span_cult_italic("[src] squeaks_loudly!")) + continue + if(!isliving(invoker)) + continue + var/mob/living/living_invoker = invoker + if(invocation) + living_invoker.say(invocation, language = /datum/language/common, ignore_spam = TRUE, forced = "cult invocation") + if(invoke_damage) + living_invoker.apply_damage(invoke_damage, BRUTE) + to_chat(living_invoker, span_cult_italic("[src] saps your strength!")) + do_invoke_glow() /obj/effect/rune/proc/do_invoke_glow() @@ -234,7 +235,6 @@ structure_check() searches for nearby cultist structures required for the invoca rune_in_use = TRUE visible_message(span_warning("[src] pulses blood red!")) - var/oldcolor = color color = RUNE_COLOR_DARKRED if(length(myriad_targets)) @@ -259,9 +259,10 @@ structure_check() searches for nearby cultist structures required for the invoca else do_invoke_glow() - animate(src, color = oldcolor, time = 0.5 SECONDS) + animate(src, color = initial(color), time = 0.5 SECONDS) addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 0.5 SECONDS) rune_in_use = FALSE + return ..() /obj/effect/rune/convert/proc/do_convert(mob/living/convertee, list/invokers, datum/team/cult/cult_team) ASSERT(convertee.mind) @@ -286,7 +287,7 @@ structure_check() searches for nearby cultist structures required for the invoca span_warning("[convertee] writhes in pain [(brutedamage || burndamage) \ ? "even as [convertee.p_their()] wounds heal and close" \ : "as the markings below [convertee.p_them()] glow a bloody red"]!"), - span_cultlarge("AAAAAAAAAAAAAA-"), + span_cult_large("AAAAAAAAAAAAAA-"), ) // We're not guaranteed to be a human but we'll cast here since we use it in a few branches @@ -305,11 +306,11 @@ structure_check() searches for nearby cultist structures required for the invoca convertee.mind.special_role = ROLE_CULTIST convertee.mind.add_antag_datum(/datum/antagonist/cult, cult_team) - to_chat(convertee, span_cultitalic("Your blood pulses. Your head throbs. The world goes red. \ + to_chat(convertee, span_cult_bold_italic("Your blood pulses. Your head throbs. The world goes red. \ All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ - and something evil takes root.")) - to_chat(convertee, span_cultitalic("Assist your new compatriots in their dark dealings. \ - Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.")) + and something evil takes root.")) + to_chat(convertee, span_cult_bold_italic("Assist your new compatriots in their dark dealings. \ + Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.")) if(istype(human_convertee)) human_convertee.uncuff() @@ -324,10 +325,10 @@ structure_check() searches for nearby cultist structures required for the invoca var/big_sac = FALSE if((((ishuman(sacrificial) || iscyborg(sacrificial)) && sacrificial.stat != DEAD) || cult_team.is_sacrifice_target(sacrificial.mind)) && length(invokers) < 3) for(var/invoker in invokers) - to_chat(invoker, span_cultitalic("[sacrificial] is too greatly linked to the world! You need three acolytes!")) + to_chat(invoker, span_cult_italic("[sacrificial] is too greatly linked to the world! You need three acolytes!")) return FALSE - var/signal_result = SEND_SIGNAL(sacrificial, COMSIG_LIVING_CULT_SACRIFICED, invokers) + var/signal_result = SEND_SIGNAL(sacrificial, COMSIG_LIVING_CULT_SACRIFICED, invokers, cult_team) if(signal_result & STOP_SACRIFICE) return FALSE @@ -347,12 +348,12 @@ structure_check() searches for nearby cultist structures required for the invoca if(!(signal_result & SILENCE_SACRIFICE_MESSAGE)) for(var/invoker in invokers) if(big_sac) - to_chat(invoker, span_cultlarge("\"Yes! This is the one I desire! You have done well.\"")) + to_chat(invoker, span_cult_large("\"Yes! This is the one I desire! You have done well.\"")) continue if(ishuman(sacrificial) || iscyborg(sacrificial)) - to_chat(invoker, span_cultlarge("\"I accept this sacrifice.\"")) + to_chat(invoker, span_cult_large("\"I accept this sacrifice.\"")) else - to_chat(invoker, span_cultlarge("\"I accept this meager sacrifice.\"")) + to_chat(invoker, span_cult_large("\"I accept this meager sacrifice.\"")) if(iscyborg(sacrificial)) var/construct_class = show_radial_menu(invokers[1], sacrificial, GLOB.construct_radial_images, require_near = TRUE, tooltips = TRUE) @@ -389,7 +390,7 @@ structure_check() searches for nearby cultist structures required for the invoca if(GET_ATOM_BLOOD_DNA_LENGTH(rod)) displayed_message += " The blood of [num_slain] fallen cultist[num_slain == 1 ? "":"s"] is absorbed into [rod]!" - rod.visible_message(span_cultitalic(displayed_message)) + rod.visible_message(span_cult_italic(displayed_message)) switch(num_slain) if(0, 1) animate_spawn_sword(rod, /obj/item/melee/cultblade/dagger) @@ -653,7 +654,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives var/area/place = get_area(src) if(!(place in summon_objective.summon_spots)) - to_chat(user, span_cultlarge("The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!")) + to_chat(user, span_cult_large("The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!")) return if(locate(/obj/narsie) in SSpoints_of_interest.narsies) for(var/invoker in invokers) @@ -689,50 +690,50 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below icon_state = "1" color = RUNE_COLOR_MEDIUMRED - var/static/sacrifices_used = -SOULS_TO_REVIVE // Cultists get one "free" revive /obj/effect/rune/raise_dead/examine(mob/user) . = ..() if(IS_CULTIST(user) || user.stat == DEAD) - . += "Sacrifices unrewarded: [LAZYLEN(GLOB.sacrificed) - sacrifices_used]" + . += "Sacrifices unrewarded: [LAZYLEN(GLOB.sacrificed) - GLOB.sacrifices_used]" /obj/effect/rune/raise_dead/invoke(list/invokers) - var/turf/T = get_turf(src) - var/mob/living/mob_to_revive - var/list/potential_revive_mobs = list() - var/mob/living/user = invokers[1] if(rune_in_use) return rune_in_use = TRUE - for(var/mob/living/M in T.contents) - if(IS_CULTIST(M) && (M.stat == DEAD || !M.client || M.client.is_afk())) - potential_revive_mobs |= M + var/mob/living/mob_to_revive + var/list/potential_revive_mobs = list() + var/mob/living/user = invokers[1] + + for(var/mob/living/target in loc) + if(IS_CULTIST(target) && (target.stat == DEAD || isnull(target.client) || target.client.is_afk())) + potential_revive_mobs += target + if(!length(potential_revive_mobs)) - to_chat(user, "There are no dead cultists on the rune!") + to_chat(user, span_cult_italic("There are no dead cultists on the rune!")) log_game("Raise Dead rune activated by [user] at [COORD(src)] failed - no cultists to revive.") fail_invoke() return - if(length(potential_revive_mobs) > 1) + + if(length(potential_revive_mobs) > 1 && user.mind) mob_to_revive = tgui_input_list(user, "Cultist to revive", "Revive Cultist", potential_revive_mobs) if(isnull(mob_to_revive)) return else mob_to_revive = potential_revive_mobs[1] + if(QDELETED(src) || !validness_checks(mob_to_revive, user)) fail_invoke() return - if(user.name == "Herbert West") - invocation = "To life, to life, I bring them!" - else - invocation = initial(invocation) - ..() + + invocation = (user.name == "Herbert West") ? "To life, to life, I bring them!" : initial(invocation) + if(mob_to_revive.stat == DEAD) - var/diff = LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - sacrifices_used + var/diff = LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - GLOB.sacrifices_used if(diff < 0) to_chat(user, span_warning("Your cult must carry out [abs(diff)] more sacrifice\s before it can revive another cultist!")) fail_invoke() return - sacrifices_used += SOULS_TO_REVIVE + GLOB.sacrifices_used += SOULS_TO_REVIVE mob_to_revive.revive(ADMIN_HEAL_ALL) //This does remove traits and such, but the rune might actually see some use because of it! //Why did you think this was a good idea if(!mob_to_revive.client || mob_to_revive.client.is_afk()) @@ -747,21 +748,21 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) fail_invoke() return SEND_SOUND(mob_to_revive, 'sound/ambience/antag/bloodcult/bloodcult_gain.ogg') - to_chat(mob_to_revive, span_cultlarge("\"PASNAR SAVRAE YAM'TOTH. Arise.\"")) + to_chat(mob_to_revive, span_cult_large("\"PASNAR SAVRAE YAM'TOTH. Arise.\"")) mob_to_revive.visible_message(span_warning("[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes."), \ - span_cultlarge("You awaken suddenly from the void. You're alive!")) + span_cult_large("You awaken suddenly from the void. You're alive!")) rune_in_use = FALSE + return ..() /obj/effect/rune/raise_dead/proc/validness_checks(mob/living/target_mob, mob/living/user) - var/turf/T = get_turf(src) if(QDELETED(user)) return FALSE if(!Adjacent(user) || user.incapacitated()) return FALSE if(QDELETED(target_mob)) return FALSE - if(!(target_mob in T.contents)) - to_chat(user, "The cultist to revive has been moved!") + if(!(target_mob in loc)) + to_chat(user, span_cult_italic("The cultist to revive has been moved!")) log_game("Raise Dead rune activated by [user] at [COORD(src)] failed - revival target moved.") return FALSE return TRUE @@ -769,9 +770,9 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) /obj/effect/rune/raise_dead/fail_invoke() ..() rune_in_use = FALSE - for(var/mob/living/M in range(1,src)) - if(IS_CULTIST(M) && M.stat == DEAD) - M.visible_message(span_warning("[M] twitches.")) + for(var/mob/living/cultist in loc) + if(IS_CULTIST(cultist) && cultist.stat == DEAD) + cultist.visible_message(span_warning("[cultist] twitches.")) //Rite of the Corporeal Shield: When invoked, becomes solid and cannot be passed. Invoke again to undo. /obj/effect/rune/wall @@ -895,7 +896,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) if(!IS_CULTIST(target) && target.blood_volume) if(target.can_block_magic(charge_cost = 0)) continue - to_chat(target, span_cultlarge("Your blood boils in your veins!")) + to_chat(target, span_cult_large("Your blood boils in your veins!")) animate(src, color = "#FCB56D", time = 4) sleep(0.4 SECONDS) if(QDELETED(src)) @@ -959,10 +960,10 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) var/choice = tgui_alert(user, "You tear open a connection to the spirit realm...", "Spirit Realm", list("Summon a Cult Ghost", "Ascend as a Dark Spirit")) if(choice == "Summon a Cult Ghost") if(!is_station_level(T.z)) - to_chat(user, span_cultitalic("The veil is not weak enough here to manifest spirits, you must be on station!")) + to_chat(user, span_cult_italic("The veil is not weak enough here to manifest spirits, you must be on station!")) return if(ghosts >= ghost_limit) - to_chat(user, span_cultitalic("You are sustaining too many ghosts to summon more!")) + to_chat(user, span_cult_italic("You are sustaining too many ghosts to summon more!")) fail_invoke() log_game("Manifest rune failed - too many summoned ghosts") return list() @@ -977,7 +978,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) if(O.client && !is_banned_from(O.ckey, ROLE_CULTIST) && !QDELETED(src) && !(isAdminObserver(O) && (O.client.prefs.toggles & ADMIN_IGNORE_CULT_GHOST)) && !QDELETED(O)) ghosts_on_rune += O if(!length(ghosts_on_rune)) - to_chat(user, span_cultitalic("There are no spirits near [src]!")) + to_chat(user, span_cult_italic("There are no spirits near [src]!")) fail_invoke() log_game("Manifest rune failed - no nearby ghosts") return list() @@ -995,7 +996,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) ghosts++ playsound(src, 'sound/magic/exit_blood.ogg', 50, TRUE) visible_message(span_warning("A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man.")) - to_chat(user, span_cultitalic("Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...")) + to_chat(user, span_cult_italic("Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...")) var/obj/structure/emergency_shield/cult/weak/N = new(T) if(ghost_to_spawn.mind && ghost_to_spawn.mind.current) new_human.AddComponent( \ @@ -1006,7 +1007,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) new_human.key = ghost_to_spawn.key var/datum/antagonist/cult/created_cultist = new_human.mind?.add_antag_datum(/datum/antagonist/cult) created_cultist?.silent = TRUE - to_chat(new_human, span_cultitalic("You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar'Sie, and you are to serve them at all costs.")) + to_chat(new_human, span_cult_italic("You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar'Sie, and you are to serve them at all costs.")) while(!QDELETED(src) && !QDELETED(user) && !QDELETED(new_human) && (user in T)) if(user.stat != CONSCIOUS || HAS_TRAIT(new_human, TRAIT_CRITICAL_CONDITION)) @@ -1018,7 +1019,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) ghosts-- if(new_human) new_human.visible_message(span_warning("[new_human] suddenly dissolves into bones and ashes."), \ - span_cultlarge("Your link to the world fades. Your form breaks apart.")) + span_cult_large("Your link to the world fades. Your form breaks apart.")) for(var/obj/I in new_human) new_human.dropItemToGround(I, TRUE) new_human.mind?.remove_antag_datum(/datum/antagonist/cult) @@ -1047,7 +1048,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) affecting.Paralyze(40) break if(affecting.health <= 10) - to_chat(G, span_cultitalic("Your body can no longer sustain the connection!")) + to_chat(G, span_cult_italic("Your body can no longer sustain the connection!")) break sleep(0.5 SECONDS) CM.Remove(G) @@ -1090,10 +1091,10 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives if(length(summon_objective.summon_spots) <= 1) - to_chat(user, span_cultlarge("Only one ritual site remains - it must be reserved for the final summoning!")) + to_chat(user, span_cult_large("Only one ritual site remains - it must be reserved for the final summoning!")) return if(!(place in summon_objective.summon_spots)) - to_chat(user, span_cultlarge("The Apocalypse rune will remove a ritual site, where Nar'Sie can be summoned, it can only be scribed in [english_list(summon_objective.summon_spots)]!")) + to_chat(user, span_cult_large("The Apocalypse rune will remove a ritual site, where Nar'Sie can be summoned, it can only be scribed in [english_list(summon_objective.summon_spots)]!")) return summon_objective.summon_spots -= place @@ -1144,7 +1145,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) addtimer(CALLBACK(M, TYPE_PROC_REF(/atom/, remove_alt_appearance),"cult_apoc",TRUE), duration) images += C else - to_chat(M, span_cultlarge("An Apocalypse Rune was invoked in the [place.name], it is no longer available as a summoning site!")) + to_chat(M, span_cult_large("An Apocalypse Rune was invoked in the [place.name], it is no longer available as a summoning site!")) SEND_SOUND(M, 'sound/effects/pope_entry.ogg') image_handler(images, duration) if(intensity >= 285) // Based on the prior formula, this means the cult makes up <15% of current players diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index 3da969c7ea7..c9bc00b1891 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -180,7 +180,7 @@ if(M == user) return if(IS_CULTIST(M) && IS_CULTIST(user)) - to_chat(user, span_cultlarge("\"Come now, do not capture your bretheren's soul.\"")) + to_chat(user, span_cult_large("\"Come now, do not capture your bretheren's soul.\"")) return if(theme == THEME_HOLY && IS_CULTIST(user)) hot_potato(user) @@ -508,7 +508,7 @@ if(newstruct.mind && !IS_CULTIST(newstruct) && ((stoner && IS_CULTIST(stoner)) || cultoverride) && SSticker.HasRoundStarted()) newstruct.mind.add_antag_datum(/datum/antagonist/cult/construct) if(IS_CULTIST(stoner) || cultoverride) - to_chat(newstruct, span_cultbold("You are still bound to serve the cult[stoner ? " and [stoner]" : ""], follow [stoner?.p_their() || "their"] orders and help [stoner?.p_them() || "them"] complete [stoner?.p_their() || "their"] goals at all costs.")) + to_chat(newstruct, span_cult_bold("You are still bound to serve the cult[stoner ? " and [stoner]" : ""], follow [stoner?.p_their() || "their"] orders and help [stoner?.p_them() || "them"] complete [stoner?.p_their() || "their"] goals at all costs.")) else if(stoner) to_chat(newstruct, span_boldwarning("You are still bound to serve your creator, [stoner], follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.")) newstruct.clear_alert("bloodsense") diff --git a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm index 97688417aac..0a037482bc1 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm @@ -86,7 +86,7 @@ return var/num_slain = LAZYLEN(cultists_slain) - . += span_cultitalic("It has the blood of [num_slain] fallen cultist[num_slain == 1 ? "" : "s"] on it. \ + . += span_cult_italic("It has the blood of [num_slain] fallen cultist[num_slain == 1 ? "" : "s"] on it. \ Offering it to Nar'sie will transform it into a [num_slain >= 3 ? "powerful" : "standard"] cult weapon.") /obj/item/nullrod/godhand diff --git a/code/modules/mob/living/basic/blob_minions/blobbernaut.dm b/code/modules/mob/living/basic/blob_minions/blobbernaut.dm index ab3442604db..8b94063ba77 100644 --- a/code/modules/mob/living/basic/blob_minions/blobbernaut.dm +++ b/code/modules/mob/living/basic/blob_minions/blobbernaut.dm @@ -86,7 +86,7 @@ health = maxHealth / 2 // Start out injured to encourage not beelining away from the blob SEND_SOUND(src, sound('sound/effects/blobattack.ogg')) SEND_SOUND(src, sound('sound/effects/attackblob.ogg')) - to_chat(src, span_infoplain("You are powerful, hard to kill, and slowly regenerate near nodes and cores, [span_cultlarge("but will slowly die if not near the blob")] or if the factory that made you is killed.")) + to_chat(src, span_infoplain("You are powerful, hard to kill, and slowly regenerate near nodes and cores, [span_cult_large("but will slowly die if not near the blob")] or if the factory that made you is killed.")) to_chat(src, span_infoplain("You can communicate with other blobbernauts and overminds telepathically by attempting to speak normally")) to_chat(src, span_infoplain("Your overmind's blob reagent is: [blobstrain.name]!")) to_chat(src, span_infoplain("The [blobstrain.name] reagent [blobstrain.shortdesc ? "[blobstrain.shortdesc]" : "[blobstrain.description]"]")) diff --git a/code/modules/mob/living/basic/cult/constructs/harvester.dm b/code/modules/mob/living/basic/cult/constructs/harvester.dm index 30b30994872..da8dad827b0 100644 --- a/code/modules/mob/living/basic/cult/constructs/harvester.dm +++ b/code/modules/mob/living/basic/cult/constructs/harvester.dm @@ -50,7 +50,7 @@ carbon_target.Paralyze(6 SECONDS) visible_message(span_danger("[src] knocks [carbon_target] down!")) - to_chat(src, span_cultlarge("\"Bring [carbon_target.p_them()] to me.\"")) + to_chat(src, span_cult_large("\"Bring [carbon_target.p_them()] to me.\"")) /datum/action/innate/seek_master name = "Seek your Master" @@ -80,18 +80,18 @@ the_construct.master = cult_status.cult_team.blood_target if(!the_construct.master) - to_chat(the_construct, span_cultitalic("You have no master to seek!")) + to_chat(the_construct, span_cult_italic("You have no master to seek!")) the_construct.seeking = FALSE return if(tracking) tracking = FALSE the_construct.seeking = FALSE - to_chat(the_construct, span_cultitalic("You are no longer tracking your master.")) + to_chat(the_construct, span_cult_italic("You are no longer tracking your master.")) return else tracking = TRUE the_construct.seeking = TRUE - to_chat(the_construct, span_cultitalic("You are now tracking your master.")) + to_chat(the_construct, span_cult_italic("You are now tracking your master.")) /datum/action/innate/seek_prey @@ -113,16 +113,16 @@ desc = "None can hide from Nar'Sie, activate to track a survivor attempting to flee the red harvest!" button_icon_state = "cult_mark" the_construct.seeking = FALSE - to_chat(the_construct, span_cultitalic("You are now tracking Nar'Sie, return to reap the harvest!")) + to_chat(the_construct, span_cult_italic("You are now tracking Nar'Sie, return to reap the harvest!")) return if(!LAZYLEN(GLOB.cult_narsie.souls_needed)) - to_chat(the_construct, span_cultitalic("Nar'Sie has completed her harvest!")) + to_chat(the_construct, span_cult_italic("Nar'Sie has completed her harvest!")) return the_construct.master = pick(GLOB.cult_narsie.souls_needed) var/mob/living/real_target = the_construct.master //We can typecast this way because Narsie only allows /mob/living into the souls list - to_chat(the_construct, span_cultitalic("You are now tracking your prey, [real_target.real_name] - harvest [real_target.p_them()]!")) + to_chat(the_construct, span_cult_italic("You are now tracking your prey, [real_target.real_name] - harvest [real_target.p_them()]!")) desc = "Activate to track Nar'Sie!" button_icon_state = "sintouch" the_construct.seeking = TRUE diff --git a/code/modules/mob/living/basic/farm_animals/sheep.dm b/code/modules/mob/living/basic/farm_animals/sheep.dm index e32da910ab9..2fdaeda657d 100644 --- a/code/modules/mob/living/basic/farm_animals/sheep.dm +++ b/code/modules/mob/living/basic/farm_animals/sheep.dm @@ -58,11 +58,11 @@ if(cult_converted) for(var/mob/living/cultist as anything in invokers) - to_chat(cultist, span_cultitalic("[src] has already been sacrificed!")) + to_chat(cultist, span_cult_italic("[src] has already been sacrificed!")) return STOP_SACRIFICE for(var/mob/living/cultist as anything in invokers) - to_chat(cultist, span_cultitalic("This feels a bit too cliché, don't you think?")) + to_chat(cultist, span_cult_italic("This feels a bit too cliché, don't you think?")) cult_converted = TRUE INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, say), "BAAAAAAAAH!") diff --git a/code/modules/mob/living/basic/pets/cat/cat.dm b/code/modules/mob/living/basic/pets/cat/cat.dm index dd8a588e915..3c2612d9a62 100644 --- a/code/modules/mob/living/basic/pets/cat/cat.dm +++ b/code/modules/mob/living/basic/pets/cat/cat.dm @@ -33,6 +33,7 @@ attack_verb_simple = "claw" attack_sound = 'sound/weapons/slash.ogg' attack_vis_effect = ATTACK_EFFECT_CLAW + cult_icon_state = "cat_cult" ///can this cat breed? var/can_breed = TRUE ///can hold items? diff --git a/code/modules/mob/living/basic/pets/dog/corgi.dm b/code/modules/mob/living/basic/pets/dog/corgi.dm index 61c18ab5354..2011992da56 100644 --- a/code/modules/mob/living/basic/pets/dog/corgi.dm +++ b/code/modules/mob/living/basic/pets/dog/corgi.dm @@ -11,6 +11,7 @@ butcher_results = list(/obj/item/food/meat/slab/corgi = 3, /obj/item/stack/sheet/animalhide/corgi = 1) gold_core_spawnable = FRIENDLY_SPAWN collar_icon_state = "corgi" + cult_icon_state = "narsian" ai_controller = /datum/ai_controller/basic_controller/dog/corgi ///Access card for the corgi. var/obj/item/card/id/access_card = null @@ -507,7 +508,7 @@ /mob/living/basic/pet/dog/corgi/narsie/narsie_act() if(stat == DEAD) //Nar'Sie loves her doggy visible_message(span_warning("[src] arises again, revived by the dark magicks!"), \ - span_cultlarge("RISE")) + span_cult_large("RISE")) revive(ADMIN_HEAL_ALL) //also means that a dead Nars-Ian can consume a pet and revive adjustBruteLoss(-maxHealth) diff --git a/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm b/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm index 31c8562ce1e..0d52075a9a3 100644 --- a/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm +++ b/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm @@ -9,6 +9,7 @@ icon_living = "pug" icon_dead = "pug_dead" butcher_results = list(/obj/item/food/meat/slab/pug = 3) + cult_icon_state = "pug_cult" gold_core_spawnable = FRIENDLY_SPAWN collar_icon_state = "pug" held_state = "pug" diff --git a/code/modules/mob/living/basic/pets/pet.dm b/code/modules/mob/living/basic/pets/pet.dm index c8507454f77..de5ad59eb1f 100644 --- a/code/modules/mob/living/basic/pets/pet.dm +++ b/code/modules/mob/living/basic/pets/pet.dm @@ -10,9 +10,12 @@ var/collar_icon_state = null /// We have a seperate _rest collar icon state when the pet is resting. var/has_collar_resting_icon_state = FALSE - /// Our collar var/obj/item/clothing/neck/petcollar/collar + ///can we become cultists? + var/can_cult_convert = TRUE + ///whether we have a custom icon state when we get culted + var/cult_icon_state /mob/living/basic/pet/Initialize(mapload) . = ..() @@ -22,6 +25,8 @@ collar = new(src) update_icon(UPDATE_OVERLAYS) + if(can_cult_convert) + RegisterSignal(src, COMSIG_LIVING_CULT_SACRIFICED, PROC_REF(become_cultist)) /mob/living/basic/pet/Destroy() . = ..() @@ -43,6 +48,10 @@ /mob/living/basic/pet/update_overlays() . = ..() + if(isnull(mind) && (FACTION_CULT in faction)) + var/image/cult_indicator = image(icon = 'icons/mob/simple/pets.dmi', icon_state = "pet_cult_indicator", layer = ABOVE_GAME_PLANE) + . += cult_indicator + if(!collar || !collar_icon_state) return @@ -54,6 +63,12 @@ . += mutable_appearance(icon, "[collar_icon_state][stat_tag]collar") . += mutable_appearance(icon, "[collar_icon_state][stat_tag]tag") +/mob/living/basic/pet/update_icon_state() + if(cult_icon_state && (FACTION_CULT in faction)) + icon_state = cult_icon_state + icon_living = cult_icon_state + return ..() + /mob/living/basic/pet/gib() remove_collar(drop_location(), update_visuals = FALSE) return ..() diff --git a/code/modules/mob/living/basic/pets/pet_cult/pet_cult.dm b/code/modules/mob/living/basic/pets/pet_cult/pet_cult.dm new file mode 100644 index 00000000000..438737a1ad2 --- /dev/null +++ b/code/modules/mob/living/basic/pets/pet_cult/pet_cult.dm @@ -0,0 +1,85 @@ +#define PET_CULT_ATTACK 10 +#define PET_CULT_HEALTH 50 + +///turn into terrifying beasts +/mob/living/basic/pet/proc/become_cultist(datum/source, list/invokers, datum/team) + SIGNAL_HANDLER + + if(stat == DEAD || !can_cult_convert) + return + + if(FACTION_CULT in faction) + return STOP_SACRIFICE + + mind?.add_antag_datum(/datum/antagonist/cult, team) + qdel(GetComponent(/datum/component/obeys_commands)) + melee_damage_lower = max(PET_CULT_ATTACK, initial(melee_damage_lower)) + melee_damage_upper = max(PET_CULT_ATTACK + 5, initial(melee_damage_upper)) + maxHealth = max(PET_CULT_HEALTH, initial(maxHealth)) + fully_heal() + + faction = list(FACTION_CULT) //we only serve the cult + + if(isnull(cult_icon_state)) + add_atom_colour(RUNE_COLOR_MEDIUMRED, FIXED_COLOUR_PRIORITY) + + var/static/list/cult_appetite = list( + /obj/item/organ, + /obj/effect/decal/cleanable/blood, + ) + + var/static/list/death_loot = list( + /obj/effect/gibspawner/generic, + /obj/item/soulstone, + ) + + AddElement(/datum/element/basic_eating, heal_amt = 15, food_types = cult_appetite) + AddElement(/datum/element/death_drops, death_loot) + + basic_mob_flags &= DEL_ON_DEATH + qdel(ai_controller) + ai_controller = new /datum/ai_controller/basic_controller/pet_cult(src) + var/datum/action/cooldown/spell/conjure/revive_rune/rune_ability = new(src) + rune_ability.Grant(src) + ai_controller.set_blackboard_key(BB_RUNE_ABILITY, rune_ability) + ai_controller.set_blackboard_key(BB_CULT_TEAM, team) + + var/static/list/new_pet_commands = list( + /datum/pet_command/point_targeting/attack, + /datum/pet_command/follow, + /datum/pet_command/free, + /datum/pet_command/idle, + /datum/pet_command/untargeted_ability/draw_rune, + ) + AddComponent(/datum/component/obeys_commands, new_pet_commands) + RegisterSignal(src, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(activate_rune), override = TRUE) + update_appearance() + return STOP_SACRIFICE + + +/mob/living/basic/pet/proc/activate_rune(datum/source, atom/target) + SIGNAL_HANDLER + + if(!istype(target, /obj/effect/rune/raise_dead)) + return NONE + + target.attack_hand(src) + + return COMPONENT_CANCEL_ATTACK_CHAIN + +/mob/living/basic/pet/Login() + . = ..() + if(!. || !client) + return FALSE + + if(!(FACTION_CULT in faction)) + return + var/datum/team/cult_team = locate(/datum/team/cult) in GLOB.antagonist_teams + if(isnull(cult_team)) + return + mind.add_antag_datum(/datum/antagonist/cult, cult_team) + update_appearance(UPDATE_OVERLAYS) + + +#undef PET_CULT_ATTACK +#undef PET_CULT_HEALTH diff --git a/code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm b/code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm new file mode 100644 index 00000000000..83d70336f2c --- /dev/null +++ b/code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm @@ -0,0 +1,14 @@ +/datum/action/cooldown/spell/conjure/revive_rune + name = "Create Revival Rune" + button_icon = 'icons/obj/antags/cult/rune.dmi' + button_icon_state = "1" + background_icon_state = "bg_cult" + overlay_icon_state = "bg_cult_border" + spell_requirements = NONE + cooldown_time = 30 SECONDS + summon_type = list( + /obj/effect/rune/raise_dead, + ) + summon_radius = 0 + create_summon_timer = 5 SECONDS + sound = 'sound/magic/exit_blood.ogg' diff --git a/code/modules/mob/living/basic/pets/pet_cult/pet_cult_ai.dm b/code/modules/mob/living/basic/pets/pet_cult/pet_cult_ai.dm new file mode 100644 index 00000000000..dc778b5816f --- /dev/null +++ b/code/modules/mob/living/basic/pets/pet_cult/pet_cult_ai.dm @@ -0,0 +1,246 @@ +/datum/ai_controller/basic_controller/pet_cult + blackboard = list( + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/cultist, + BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/cultist, + BB_FRIENDLY_MESSAGE = "eagerly awaits your command...", + ) + + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = /datum/idle_behavior/idle_random_walk + planning_subtrees = list( + /datum/ai_planning_subtree/befriend_cultists, + /datum/ai_planning_subtree/find_occupied_rune, + /datum/ai_planning_subtree/find_dead_cultist, + /datum/ai_planning_subtree/drag_target_to_rune, + /datum/ai_planning_subtree/pet_planning, + /datum/ai_planning_subtree/simple_find_target, + /datum/ai_planning_subtree/basic_melee_attack_subtree, + ) + ai_traits = PAUSE_DURING_DO_AFTER + +///if target gets pulled away, unset him +/datum/ai_controller/basic_controller/pet_cult/proc/delete_pull_target(datum/source, atom/movable/was_pulling) + SIGNAL_HANDLER + + UnregisterSignal(src, COMSIG_ATOM_NO_LONGER_PULLING) + + if(was_pulling == blackboard[BB_DEAD_CULTIST]) + clear_blackboard_key(BB_DEAD_CULTIST) + +///targeting strat to attack non cultists +/datum/targeting_strategy/basic/cultist + +/datum/targeting_strategy/basic/cultist/faction_check(datum/ai_controller/controller, mob/living/living_mob, mob/living/the_target) + return IS_CULTIST_OR_CULTIST_MOB(the_target) + +///befriend all cultists around us! +/datum/ai_planning_subtree/befriend_cultists + +/datum/ai_planning_subtree/befriend_cultists/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + if(controller.blackboard_key_exists(BB_FRIENDLY_CULTIST)) + controller.queue_behavior(/datum/ai_behavior/befriend_target, BB_FRIENDLY_CULTIST) + return + + controller.queue_behavior(/datum/ai_behavior/find_and_set/friendly_cultist, BB_FRIENDLY_CULTIST, /mob/living/carbon) + +///behavior to find cultists that we befriend +/datum/ai_behavior/find_and_set/friendly_cultist + action_cooldown = 5 SECONDS + behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION + +/datum/ai_behavior/find_and_set/friendly_cultist/search_tactic(datum/ai_controller/controller, locate_path, search_range) + var/mob/living/living_pawn = controller.pawn + for(var/mob/living/carbon/possible_cultist in oview(search_range, controller.pawn)) + if(IS_CULTIST(possible_cultist) && !(living_pawn.faction.Find(REF(possible_cultist)))) + return possible_cultist + + return null + +///subtree to find a rune with a viable target on it, so we can go activate it +/datum/ai_planning_subtree/find_occupied_rune + +/datum/ai_planning_subtree/find_occupied_rune/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + if((LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - GLOB.sacrifices_used) < 0) + controller.clear_blackboard_key(BB_OCCUPIED_RUNE) + return + + if(controller.blackboard_key_exists(BB_OCCUPIED_RUNE)) + controller.queue_behavior(/datum/ai_behavior/activate_rune, BB_OCCUPIED_RUNE) + return SUBTREE_RETURN_FINISH_PLANNING + + controller.queue_behavior(/datum/ai_behavior/find_and_set/occupied_rune, BB_OCCUPIED_RUNE, /obj/effect/rune/raise_dead) + +/datum/ai_behavior/find_and_set/occupied_rune + +/datum/ai_behavior/find_and_set/occupied_rune/search_tactic(datum/ai_controller/controller, locate_path, search_range) + var/datum/team/cult/cult_team = controller.blackboard[BB_CULT_TEAM] + if(isnull(cult_team)) + return null + + for(var/obj/effect/rune/raise_dead/target_rune in oview(search_range, controller.pawn)) + controller.set_blackboard_key(BB_NEARBY_RUNE, target_rune) + var/mob/living/occupant = locate(/mob/living/carbon/human) in get_turf(target_rune) + if(isnull(occupant)) + continue + if(occupant.stat != DEAD || !IS_CULTIST(occupant)) + continue + return target_rune + + return null + +/datum/ai_behavior/activate_rune + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION | AI_BEHAVIOR_REQUIRE_REACH + action_cooldown = 3 SECONDS + +/datum/ai_behavior/activate_rune/setup(datum/ai_controller/controller, target_key) + . = ..() + var/turf/target = controller.blackboard[target_key] + if(isnull(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/activate_rune/perform(seconds_per_tick, datum/ai_controller/controller, target_key) + . = ..() + var/atom/target = controller.blackboard[target_key] + + if(QDELETED(target)) + finish_action(controller, FALSE, target_key) + return + + var/datum/team/cult/cult_team = controller.blackboard[BB_CULT_TEAM] + var/mob/living/revive_mob = locate(/mob/living) in get_turf(target) + + if(isnull(revive_mob) || revive_mob.stat != DEAD || !(revive_mob.mind in cult_team.members)) + finish_action(controller, FALSE, target_key) + return + + var/mob/living/basic/living_pawn = controller.pawn + living_pawn.melee_attack(target) + + finish_action(controller, TRUE, target_key) + return + +/datum/ai_behavior/activate_rune/finish_action(datum/ai_controller/controller, success, target_key) + . = ..() + controller.clear_blackboard_key(target_key) + + +///find targets that we can revive +/datum/ai_planning_subtree/find_dead_cultist + +/datum/ai_planning_subtree/find_dead_cultist/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + if((LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - GLOB.sacrifices_used) < 0) + controller.clear_blackboard_key(BB_DEAD_CULTIST) + return + + var/mob/living/living_pawn = controller.pawn + + if(!isnull(living_pawn.pulling)) + return + + if(controller.blackboard_key_exists(BB_DEAD_CULTIST)) + controller.queue_behavior(/datum/ai_behavior/pull_target/cult_revive, BB_DEAD_CULTIST) + return SUBTREE_RETURN_FINISH_PLANNING + + controller.queue_behavior(/datum/ai_behavior/find_and_set/dead_cultist, BB_DEAD_CULTIST, /mob/living/carbon/human) + +/datum/ai_behavior/find_and_set/dead_cultist + +/datum/ai_behavior/find_and_set/dead_cultist/search_tactic(datum/ai_controller/controller, locate_path, search_range) + var/datum/team/cult/cult_team = controller.blackboard[BB_CULT_TEAM] + if(isnull(cult_team)) + return null + var/mob/living/living_pawn = controller.pawn + for(var/mob/living/carbon/human/target in oview(search_range, controller.pawn)) + if(target.stat != DEAD) + continue + if(!IS_CULTIST(target)) + continue + if(target.buckled || target.move_resist > living_pawn.move_force || target.pulledby) + continue + if(locate(/obj/effect/rune/raise_dead) in target.loc) + continue + return target + return null + +/datum/ai_behavior/pull_target/cult_revive + +/datum/ai_behavior/pull_target/cult_revive/finish_action(datum/ai_controller/basic_controller/controller, succeeded, target_key) + . = ..() + if(!succeeded) + return + var/atom/target = controller.blackboard[target_key] + if(QDELETED(target)) + return + controller.RegisterSignal(controller.pawn, COMSIG_ATOM_NO_LONGER_PULLING, TYPE_PROC_REF(/datum/ai_controller/basic_controller/pet_cult, delete_pull_target), override = TRUE) + +/datum/ai_planning_subtree/drag_target_to_rune + +/datum/ai_planning_subtree/drag_target_to_rune/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + + if(!controller.blackboard_key_exists(BB_DEAD_CULTIST)) //no target, we dont need to do anything + return + + var/mob/living/our_pawn = controller.pawn + + if(isnull(our_pawn.pulling)) + return + + var/atom/target_rune = controller.blackboard[BB_NEARBY_RUNE] + + if(QDELETED(target_rune)) + controller.queue_behavior(/datum/ai_behavior/use_mob_ability, BB_RUNE_ABILITY) + return SUBTREE_RETURN_FINISH_PLANNING + + if(!can_see(our_pawn, target_rune, 9)) + controller.clear_blackboard_key(BB_NEARBY_RUNE) + return + + controller.queue_behavior(/datum/ai_behavior/drag_target_to_rune, BB_NEARBY_RUNE, BB_DEAD_CULTIST) + +///behavior to drag the target onto the rune +/datum/ai_behavior/drag_target_to_rune + required_distance = 0 + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT + +/datum/ai_behavior/drag_target_to_rune/setup(datum/ai_controller/controller, target_key, cultist_key) + . = ..() + var/turf/target = controller.blackboard[target_key] + if(isnull(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/drag_target_to_rune/perform(seconds_per_tick, datum/ai_controller/controller, target_key, cultist_key) + . = ..() + var/mob/living/our_pawn = controller.pawn + var/atom/cultist_target = controller.blackboard[cultist_key] + if(isnull(cultist_target)) + finish_action(controller, FALSE, target_key, cultist_key) + return + var/list/possible_dirs = GLOB.alldirs.Copy() + possible_dirs -= get_dir(our_pawn, cultist_target) + for(var/direction in possible_dirs) + var/turf/possible_turf = get_step(our_pawn, direction) + if(possible_turf.is_blocked_turf(source_atom = our_pawn)) + possible_dirs -= direction + step(our_pawn, pick(possible_dirs)) + our_pawn.stop_pulling() + finish_action(controller, TRUE, target_key, cultist_key) + + +/datum/ai_behavior/drag_target_to_rune/finish_action(datum/ai_controller/controller, success, target_key, cultist_key) + . = ..() + if(success) + var/atom/revival_rune = controller.blackboard[target_key] + controller.set_blackboard_key(BB_OCCUPIED_RUNE, revival_rune) + controller.clear_blackboard_key(cultist_key) + controller.clear_blackboard_key(target_key) + +///command ability to draw runes +/datum/pet_command/untargeted_ability/draw_rune + command_name = "Draw Rune" + command_desc = "Draw a revival rune." + radial_icon = 'icons/obj/antags/cult/rune.dmi' + radial_icon_state = "1" + speech_commands = list("rune", "revival") + ability_key = BB_RUNE_ABILITY diff --git a/code/modules/pai/pai.dm b/code/modules/pai/pai.dm index b4414027368..026aacc0e7d 100644 --- a/code/modules/pai/pai.dm +++ b/code/modules/pai/pai.dm @@ -458,7 +458,7 @@ SIGNAL_HANDLER for(var/mob/living/cultist as anything in invokers) - to_chat(cultist, span_cultitalic("You don't think this is what Nar'Sie had in mind when She asked for blood sacrifices...")) + to_chat(cultist, span_cult_italic("You don't think this is what Nar'Sie had in mind when She asked for blood sacrifices...")) return STOP_SACRIFICE /// Updates the distance we can be from our pai card diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index ca9a0ff7023..3b5cd0e4cdd 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -407,7 +407,7 @@ removed_any = TRUE qdel(BS) if(removed_any) - to_chat(affected_mob, span_cultlarge("Your blood rites falter as holy water scours your body!")) + to_chat(affected_mob, span_cult_large("Your blood rites falter as holy water scours your body!")) if(data["deciseconds_metabolized"] >= (25 SECONDS)) // 10 units affected_mob.adjust_stutter_up_to(4 SECONDS * REM * seconds_per_tick, 20 SECONDS) @@ -417,7 +417,7 @@ if(prob(10)) affected_mob.visible_message(span_danger("[affected_mob] starts having a seizure!"), span_userdanger("You have a seizure!")) affected_mob.Unconscious(12 SECONDS) - to_chat(affected_mob, span_cultlarge("[pick("Your blood is your bond - you are nothing without it", "Do not forget your place", \ + to_chat(affected_mob, span_cult_large("[pick("Your blood is your bond - you are nothing without it", "Do not forget your place", \ "All that power, and you still fail?", "If you cannot scour this poison, I shall scour your meager life!")].")) if(data["deciseconds_metabolized"] >= (1 MINUTES)) // 24 units diff --git a/code/modules/spells/spell_types/conjure/_conjure.dm b/code/modules/spells/spell_types/conjure/_conjure.dm index 10b14bd47d5..99f0c5af821 100644 --- a/code/modules/spells/spell_types/conjure/_conjure.dm +++ b/code/modules/spells/spell_types/conjure/_conjure.dm @@ -15,12 +15,17 @@ var/summon_respects_density = FALSE /// If TRUE, no two summons can be spawned in the same turf. var/summon_respects_prev_spawn_points = TRUE + /// for how long must we stay still when summoning + var/create_summon_timer /datum/action/cooldown/spell/conjure/is_valid_target(atom/cast_on) return isturf(cast_on.loc) /datum/action/cooldown/spell/conjure/cast(atom/cast_on) . = ..() + if(create_summon_timer && !do_after(owner, create_summon_timer, target = cast_on.loc)) + owner?.balloon_alert(owner, "need to stay still!") + return var/list/to_summon_in = list() for(var/turf/summon_turf in range(summon_radius, cast_on)) if(summon_respects_density && summon_turf.density) diff --git a/icons/mob/simple/pets.dmi b/icons/mob/simple/pets.dmi index 51e59b13ec056bcb5f2209a895f481b262cee889..e4c333216f1ec5c56615dc761b2f48971b21998e 100644 GIT binary patch literal 87024 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 literal 82578 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 diff --git a/modular_skyrat/master_files/code/game/objects/items/holy_weapons.dm b/modular_skyrat/master_files/code/game/objects/items/holy_weapons.dm index 114114bf09a..f4fa02707f7 100644 --- a/modular_skyrat/master_files/code/game/objects/items/holy_weapons.dm +++ b/modular_skyrat/master_files/code/game/objects/items/holy_weapons.dm @@ -79,7 +79,7 @@ /obj/item/nullrod/cultdagger/attack_self(mob/user) if(narsian) else if(user.mind && (user.mind.holy_role)) - to_chat(user, span_cultlarge("\"Partake in the language of blood..\"")) + to_chat(user, span_cult_large("\"Partake in the language of blood..\"")) user.grant_language(/datum/language/narsie, source = LANGUAGE_MIND) special_desc_requirement = NONE // No point in keeping something that can't no longer be used narsian = TRUE @@ -93,7 +93,7 @@ /obj/item/nullrod/claymore/darkblade/attack_self(mob/user) if(narsian) else if(user.mind && (user.mind.holy_role)) - to_chat(user, span_cultlarge("\"Partake in the language of blood..\"")) + to_chat(user, span_cult_large("\"Partake in the language of blood..\"")) user.grant_language(/datum/language/narsie, source = LANGUAGE_MIND) special_desc_requirement = NONE // No point in keeping something that can't no longer be used narsian = TRUE diff --git a/modular_skyrat/modules/mutants/code/mutant_component.dm b/modular_skyrat/modules/mutants/code/mutant_component.dm index c9ace66db6e..d1a71caf9cf 100644 --- a/modular_skyrat/modules/mutants/code/mutant_component.dm +++ b/modular_skyrat/modules/mutants/code/mutant_component.dm @@ -108,7 +108,7 @@ if(host.stat != DEAD) return if(!ismutant(host)) - to_chat(host, span_cultlarge("You can feel your heart stopping, but something isn't right... \ + to_chat(host, span_cult_large("You can feel your heart stopping, but something isn't right... \ life has not abandoned your broken form. You can only feel a deep and immutable hunger that \ not even death can stop, you will rise again!")) var/revive_time = rand(REVIVE_TIME_LOWER, REVIVE_TIME_UPPER) @@ -151,7 +151,7 @@ /datum/component/mutant_infection/proc/mutant_death() SIGNAL_HANDLER var/revive_time = rand(REVIVE_TIME_LOWER, REVIVE_TIME_UPPER) - to_chat(host, span_cultlarge("You can feel your heart stopping, but something isn't right... you will rise again!")) + to_chat(host, span_cult_large("You can feel your heart stopping, but something isn't right... you will rise again!")) timer_id = addtimer(CALLBACK(src, PROC_REF(regenerate)), revive_time, TIMER_STOPPABLE) /datum/component/mutant_infection/proc/regenerate() diff --git a/tgstation.dme b/tgstation.dme index 9eca34adaeb..3f9288c14b7 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -966,6 +966,7 @@ #include "code\datums\ai\basic_mobs\basic_ai_behaviors\find_parent.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\nearest_targeting.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\pick_up_item.dm" +#include "code\datums\ai\basic_mobs\basic_ai_behaviors\pull_target.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\run_away_from_target.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\set_travel_destination.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\step_towards_turf.dm" @@ -4820,6 +4821,9 @@ #include "code\modules\mob\living\basic\pets\parrot\parrot_ai\parrot_hoarding.dm" #include "code\modules\mob\living\basic\pets\parrot\parrot_ai\parrot_perching.dm" #include "code\modules\mob\living\basic\pets\parrot\parrot_ai\parroting_action.dm" +#include "code\modules\mob\living\basic\pets\pet_cult\pet_cult.dm" +#include "code\modules\mob\living\basic\pets\pet_cult\pet_cult_abilities.dm" +#include "code\modules\mob\living\basic\pets\pet_cult\pet_cult_ai.dm" #include "code\modules\mob\living\basic\ruin_defender\flesh.dm" #include "code\modules\mob\living\basic\ruin_defender\living_floor.dm" #include "code\modules\mob\living\basic\ruin_defender\skeleton.dm" diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss index 0dc93df67d0..64a0db0b681 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss @@ -579,24 +579,24 @@ em { color: #973e3b; } -.cultitalic { +.cult_italic { color: #973e3b; font-style: italic; } -.cultbold { +.cult_bold { color: #973e3b; font-style: italic; font-weight: bold; } -.cultboldtalic { +.cult_bold_italic { color: #973e3b; font-weight: bold; font-size: 185%; } -.cultlarge { +.cult_large { color: #973e3b; font-weight: bold; font-size: 185%; diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss index a3055867f40..0818d48d77e 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss @@ -601,19 +601,19 @@ h2.alert { font-style: italic; } -.cultbold { +.cult_bold { color: #973e3b; font-style: italic; font-weight: bold; } -.cultboldtalic { +.cult_bold_italic { color: #973e3b; font-weight: bold; font-size: 185%; } -.cultlarge { +.cult_large { color: #973e3b; font-weight: bold; font-size: 185%;