diff --git a/code/game/gamemodes/cult/arcane_tome.dm b/code/game/gamemodes/cult/arcane_tome.dm index 7efb8f291de..cfb4b5029e8 100644 --- a/code/game/gamemodes/cult/arcane_tome.dm +++ b/code/game/gamemodes/cult/arcane_tome.dm @@ -46,10 +46,11 @@ var/obj/effect/rune/NR = V if (!initial(NR.can_write)) continue + var/obj/item/paper/talisman/T = initial(NR.talisman_path) rune_data += list(list( "name" = initial(NR.rune_name), "invokers" = initial(NR.required_invokers), - "talisman" = initial(NR.talisman_path), + "talisman" = T ? initial(T.tome_desc) : null, "shorthand" = initial(NR.rune_shorthand) ? initial(NR.rune_shorthand) : initial(NR.rune_desc), "typepath" = NR )) @@ -79,12 +80,12 @@ user.setClickCooldown(user.get_attack_speed(src)) user.do_attack_animation(M) var/hit_zone = M.resolve_item_attack(src, user, target_zone) - if(hit_zone) - user.visible_message( - SPAN_DANGER("\The [user] bathes \the [M] in red light from \the [src]'s cover!"), + if (hit_zone) + M.interact_message(user, + SPAN_DANGER("\The [user] bathes \the [M] in red light from \the [src]!"), + SPAN_DANGER("\The [user] bathes you in burning red light from \the [src]!"), SPAN_DANGER("You burn \the [M] with \the [src]!") ) - to_chat(M, SPAN_DANGER("You feel a searing heat inside!")) playsound(src, 'sound/weapons/sear.ogg', 50, TRUE, -1) M.apply_damage(rand(5, 20), BURN, hit_zone, used_weapon = "internal burns") return @@ -104,7 +105,7 @@ blood_name = H.species?.get_blood_name() user.apply_damage(1, BRUTE, pick(BP_L_HAND, BP_R_HAND), sharp = TRUE, edge = TRUE, used_weapon = "long, precise cut") user.visible_message( - SPAN_WARNING("\The [user] [!synth ? "slices open [G.his] skin" : "tears open [G.his] circulation"] and begins painting on symbols on the floor with [G.his] own [blood_name]"), + SPAN_WARNING("\The [user] [!synth ? "slices open [G.his] skin" : "tears open [G.his] circulation"] and begins painting on symbols on the floor with [G.his] own [blood_name]!"), SPAN_NOTICE("You [!synth ? "slice open your skin" : "tear open your circulation"] and begin drawing a rune on the floor whilst invoking the ritual that binds your life essence with the dark arcane energies flowing through the surrounding world."), SPAN_WARNING("You hear droplets softly splattering on the ground."), range = 3 diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 8badfe918a8..d3bdcb4ab46 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -1,6 +1,7 @@ /obj/item/melee/cultblade name = "cult blade" - desc = "An arcane weapon wielded by the followers of an unknown god." + desc = "A wicked sword made of serrated black metal, with a very slightly curving blade evoking a khopesh. The grip is studded with dull spikes." + description_antag = "Through some anomalous means, this weapon refuses to be wielded by any other than the followers of Nar-Sie. Attempting to wield it without being a cultist yourself is like to result in disaster." icon_state = "cultblade" origin_tech = list(TECH_COMBAT = 1, TECH_ARCANE = 1) w_class = ITEMSIZE_LARGE diff --git a/code/game/gamemodes/cult/runes/armor.dm b/code/game/gamemodes/cult/runes/armor.dm index 130145e42a4..30a33935db0 100644 --- a/code/game/gamemodes/cult/runes/armor.dm +++ b/code/game/gamemodes/cult/runes/armor.dm @@ -1,18 +1,16 @@ /obj/effect/rune/armor rune_name = "Armor" - rune_desc = "When this rune is invoked, either from a rune or a talisman, it will equip its invoker with the armor of the followers of Nar-Sie. To use this rune to its fullest extent, make sure you are not wearing any form of headgear, armor, gloves or shoes, and make sure you are not holding anything in your hands." - rune_shorthand = "Creates and equips a set of protective robes as well as a sword." + rune_desc = "When this rune is invoked, either from a rune or a talisman, it will equip its invoker with protective robes. To use this rune to its fullest extent, make sure you are not wearing any form of headgear, armor, or shoes." + rune_shorthand = "Creates and equips a set of protective, conspicuous robes." talisman_path = /obj/item/paper/talisman/armor - circle_words = list(CULT_WORD_HELL, CULT_WORD_DESTROY, CULT_WORD_OTHER) + circle_words = list(CULT_WORD_HELL, CULT_WORD_DESTROY, CULT_WORD_SELF) invocation = "Sa tatha najin!" /obj/effect/rune/armor/invoke(list/invokers) var/mob/living/L = invokers[1] - L.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(L), slot_head) - L.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(L), slot_wear_suit) + L.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hooded/cult(L), slot_wear_suit) L.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult(L), slot_shoes) L.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(L), slot_back) - L.put_in_hands(new /obj/item/melee/cultblade(L)) var/datum/gender/G = gender_datums[L.get_visible_gender()] L.visible_message( SPAN_DANGER("The runes crawl onto [L]'s body as they expand to cocoon [G.him], before falling away and revealing [G.his] body once more in gushing spurts of black sludge."), diff --git a/code/game/gamemodes/cult/runes/weapon.dm b/code/game/gamemodes/cult/runes/weapon.dm new file mode 100644 index 00000000000..3d07953dda0 --- /dev/null +++ b/code/game/gamemodes/cult/runes/weapon.dm @@ -0,0 +1,15 @@ +/obj/effect/rune/weapon + rune_name = "Weapon" + rune_desc = "Creates a deadly blade, adept at maiming and dismemberment. It will reject nonbelievers, preventing them from wielding it as a weapon. Use sparingly, for the Geometer disdains bloodshed not executed at Its behest." + circle_words = list(CULT_WORD_HELL, CULT_WORD_DESTROY, CULT_WORD_OTHER) + invocation = "Sa tatha rajin!" + +/obj/effect/rune/weapon/invoke(list/invokers) + var/mob/living/L = invokers[1] + var/obj/item/melee/cultblade/C = new (get_turf(src)) + L.put_in_active_hand(C) + L.visible_message( + SPAN_DANGER("The runes coalesce into a long, cruel blade, which [L.get_active_hand() == C ? "\the [L] picks up" : "settles on the floor"]."), + SPAN_DANGER("The runes coalesce into a serrated blade[L.get_active_hand() == C ? ", which you pick up" : ""].") + ) + qdel(src) diff --git a/code/game/gamemodes/cult/talismans/_talisman.dm b/code/game/gamemodes/cult/talismans/_talisman.dm index bb3fa93a1d3..7d4cf81eea3 100644 --- a/code/game/gamemodes/cult/talismans/_talisman.dm +++ b/code/game/gamemodes/cult/talismans/_talisman.dm @@ -8,6 +8,8 @@ var/talisman_name /// A description of what this talisman actually does. var/talisman_desc + /// Specifically shown in the arcane tome, alongside the rune's description. + var/tome_desc /// The words spoken by a cultist activating this talisman. var/invocation = "Look at this photograph!" /// If true, cultists invoking this talisman will whisper, instead of speaking normally. diff --git a/code/game/gamemodes/cult/talismans/armor.dm b/code/game/gamemodes/cult/talismans/armor.dm index c4da785c059..16c7ef5e4a2 100644 --- a/code/game/gamemodes/cult/talismans/armor.dm +++ b/code/game/gamemodes/cult/talismans/armor.dm @@ -1,14 +1,13 @@ /obj/item/paper/talisman/armor talisman_name = "Armor" talisman_desc = "Equips its invoker with a set of followers' armor, equivalent to the rune from which it was drawn." + tome_desc = "Ditto." invocation = "Sa tatha najin!" /obj/item/paper/talisman/armor/invoke(mob/living/user) - user.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head) - user.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit) + user.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hooded/cult(user), slot_wear_suit) user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult(user), slot_shoes) user.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), slot_back) - user.put_in_hands(new /obj/item/melee/cultblade(user)) var/datum/gender/G = gender_datums[user.get_visible_gender()] user.visible_message( SPAN_DANGER("\The [src] expands to briefly envelop \the [user]'s body before [G.he] tears through it in a gushing spurt of black sludge."), diff --git a/code/game/gamemodes/cult/talismans/blind.dm b/code/game/gamemodes/cult/talismans/blind.dm index 3100bf77e87..bbf449c4bac 100644 --- a/code/game/gamemodes/cult/talismans/blind.dm +++ b/code/game/gamemodes/cult/talismans/blind.dm @@ -1,6 +1,7 @@ /obj/item/paper/talisman/blind talisman_name = "Blind" talisman_desc = "Induces blindness in nonbelievers within two tiles." + tome_desc = "Shorter range." invocation = "Sti'kaliesin!" /obj/item/paper/talisman/blind/invoke(mob/living/user) diff --git a/code/game/gamemodes/cult/talismans/communicate.dm b/code/game/gamemodes/cult/talismans/communicate.dm index 79c3390d4e4..234c2edca3c 100644 --- a/code/game/gamemodes/cult/talismans/communicate.dm +++ b/code/game/gamemodes/cult/talismans/communicate.dm @@ -1,6 +1,7 @@ /obj/item/paper/talisman/communicate talisman_name = "Communicate" talisman_desc = "Allows you to communicate with other cultists." + tome_desc = "Send a single message upon invocation." invocation = "O bidai nabora se'sma!" whispered = TRUE delete_self = FALSE diff --git a/code/game/gamemodes/cult/talismans/deafen.dm b/code/game/gamemodes/cult/talismans/deafen.dm index 311591cf9e2..43f0f5c4418 100644 --- a/code/game/gamemodes/cult/talismans/deafen.dm +++ b/code/game/gamemodes/cult/talismans/deafen.dm @@ -1,6 +1,7 @@ /obj/item/paper/talisman/deafen talisman_name = "Deafen" talisman_desc = "Induces deafness in all nearby nonbelievers." + tome_desc = "Shorter range." invocation = "Sti'kaliedir!" /obj/item/paper/talisman/deafen/invoke(mob/living/user) diff --git a/code/game/gamemodes/cult/talismans/emp.dm b/code/game/gamemodes/cult/talismans/emp.dm index be8f34e9d5c..481440448f9 100644 --- a/code/game/gamemodes/cult/talismans/emp.dm +++ b/code/game/gamemodes/cult/talismans/emp.dm @@ -1,6 +1,7 @@ /obj/item/paper/talisman/emp talisman_name = "Disable Technology" talisman_desc = "Emits a strong electromagnetic pulse in a small radius, disabling or harming nearby electronics." + tome_desc = "Shorter range." invocation = "Ta'gh fara'qha fel d'amar det!" /obj/item/paper/talisman/emp/invoke(mob/living/user) diff --git a/code/game/gamemodes/cult/talismans/hide_and_reveal.dm b/code/game/gamemodes/cult/talismans/hide_and_reveal.dm index c237323a15d..e122c38912a 100644 --- a/code/game/gamemodes/cult/talismans/hide_and_reveal.dm +++ b/code/game/gamemodes/cult/talismans/hide_and_reveal.dm @@ -1,6 +1,7 @@ /obj/item/paper/talisman/hide_runes talisman_name = "Hide Runes" talisman_desc = "Veils all nearby runes from sight, turning them invisible until they are revealed." + tome_desc = "Shorter range." invocation = "Kla'atu barada nikt'o!" /obj/item/paper/talisman/hide_runes/invoke(mob/living/user) @@ -13,6 +14,7 @@ /obj/item/paper/talisman/reveal_runes talisman_name = "Reveal Runes" talisman_desc = "Reveal all nearby hidden runes." + tome_desc = "Shorter range." invocation = "Nikt'o barada kla'atu!" /obj/item/paper/talisman/reveal_runes/invoke(mob/living/user) diff --git a/code/game/gamemodes/cult/talismans/stun.dm b/code/game/gamemodes/cult/talismans/stun.dm index 6a025ce7065..8d8fe9a0ff7 100644 --- a/code/game/gamemodes/cult/talismans/stun.dm +++ b/code/game/gamemodes/cult/talismans/stun.dm @@ -1,6 +1,7 @@ /obj/item/paper/talisman/stun talisman_name = "Stun" talisman_desc = "Forces the concentrated energy of a stun rune into a struck target, immediately knocking them to the ground. Humans will be prevented from speaking for a time." + tome_desc = "Switch to Harm intent and strike a target to forcefully knock them to the ground and silence them for a time." invocation = "Dream sign 'Evil Sealing Talisman'!" // I think this is a touhou reference whispered = FALSE @@ -20,9 +21,10 @@ return ..() /obj/item/paper/talisman/stun/proc/stun(mob/living/user, mob/living/target) - user.visible_message( + target.interact_message(user, SPAN_DANGER("\The [user] thrusts \the [src] into \the [target]'s face!"), - SPAN_DANGER("You invoke the talisman at [target]!") + SPAN_DANGER("\The [user] thrusts \the [src] into your face!"), + SPAN_DANGER("You invoke the talisman at \the [target]!") ) if (findNullRod(target)) target.visible_message( diff --git a/code/game/gamemodes/cult/talismans/summon_tome.dm b/code/game/gamemodes/cult/talismans/summon_tome.dm index 2a46324dba8..c67126fbd21 100644 --- a/code/game/gamemodes/cult/talismans/summon_tome.dm +++ b/code/game/gamemodes/cult/talismans/summon_tome.dm @@ -1,6 +1,7 @@ /obj/item/paper/talisman/summon_tome talisman_name = "Summon Tome" talisman_desc = "Manifests another copy of the Geometer's scripture." + tome_desc = "Ditto." invocation = "N'ath reth sh'yro eth d'raggathnor!" /obj/item/paper/talisman/summon_tome/invoke(mob/living/user) diff --git a/code/game/gamemodes/cult/talismans/teleport.dm b/code/game/gamemodes/cult/talismans/teleport.dm index e583b5d3955..a10f9cd35bf 100644 --- a/code/game/gamemodes/cult/talismans/teleport.dm +++ b/code/game/gamemodes/cult/talismans/teleport.dm @@ -1,6 +1,7 @@ /obj/item/paper/talisman/teleport talisman_name = "Teleport" talisman_desc = "Teleports its invoker to the location of a random Teleport rune with the same keyword." + tome_desc = "On activation, teleports its user to a random rune of the same keyword." invocation = "Sas'so c'arta forbici!" delete_self = FALSE var/key_word = CULT_WORD_OTHER diff --git a/code/modules/clothing/head/hood.dm b/code/modules/clothing/head/hood.dm index decd5258d9c..c82d86095ca 100644 --- a/code/modules/clothing/head/hood.dm +++ b/code/modules/clothing/head/hood.dm @@ -183,6 +183,18 @@ desc = "An old-fashioned fur-lined hood." icon_state = "vintagepark_hood" +/obj/item/clothing/head/hood/cult + name = "cult hood" + icon_state = "cult_hoodalt" + desc = "Chips of wet magmellite and strips of leathery textile are melded together into stiff cloth. Its surface is warm and shudders at the touch." + flags_inv = HIDEEARS | HIDEFACE | BLOCKHAIR + min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE + siemens_coefficient = 0 + armor = list(melee = 50, bullet = 30, laser = 50, energy = 80, bomb = 25, bio = 10, rad = 0) + +/obj/item/clothing/head/hood/cult/cultify() + return + // Explorer gear /obj/item/clothing/head/hood/explorer name = "explorer hood" diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 062bcdb1eaf..ab8cea35bdd 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -79,7 +79,7 @@ playsound(src, "clownstep", 20, 1) /obj/item/clothing/shoes/cult - name = "boots" + name = "cult boots" desc = "Chips of wet magmellite and strips of leathery textile are melded together into stiff cloth. Its surface is warm and shudders at the touch." icon_state = "cult" item_state_slots = list(slot_r_hand_str = "cult", slot_l_hand_str = "cult") diff --git a/code/modules/clothing/suits/hooded.dm b/code/modules/clothing/suits/hooded.dm index 08a267359e0..68a8de83aef 100644 --- a/code/modules/clothing/suits/hooded.dm +++ b/code/modules/clothing/suits/hooded.dm @@ -398,3 +398,18 @@ /obj/item/radio, /obj/item/pickaxe ) + +/obj/item/clothing/suit/storage/hooded/cult + name = "cult robes" + desc = "Chips of wet magmellite and strips of leathery textile are melded together into stiff cloth. Its surface is warm and shudders at the touch." + icon_state = "cultrobesalt" + origin_tech = list(TECH_MATERIAL = 3, TECH_ARCANE = 1) + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + flags_inv = HIDEJUMPSUIT + hoodtype = /obj/item/clothing/head/hood/cult + siemens_coefficient = 0 + armor = list(melee = 50, bullet = 30, laser = 50, energy = 80, bomb = 25, bio = 10, rad = 0) + allowed = list(/obj/item/arcane_tome, /obj/item/melee/cultblade) + +/obj/item/clothing/suit/storage/hooded/cult/cultify() + return diff --git a/code/modules/examine/descriptions/weapons.dm b/code/modules/examine/descriptions/weapons.dm index f6f8a3b4ed6..d4bf13c3f69 100644 --- a/code/modules/examine/descriptions/weapons.dm +++ b/code/modules/examine/descriptions/weapons.dm @@ -87,6 +87,3 @@ description_antag = "The energy sword is a very strong melee weapon, capable of severing limbs easily, if they are targeted. It can also has a chance \ to block projectiles and melee attacks while it is on and being held. The sword can be toggled on or off by using it in your hand. While it is off, \ it can be concealed in your pocket or bag." - -/obj/item/melee/cultblade - description_antag = "This sword is a powerful weapon, capable of severing limbs easily, if they are targeted. Nonbelievers are unable to use this weapon." diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index ab7376fbda7..4ba7d88cc55 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index aaa87506920..5f943a7fe55 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/polaris.dme b/polaris.dme index b01cb7b5ea5..5ecab22f709 100644 --- a/polaris.dme +++ b/polaris.dme @@ -557,6 +557,7 @@ #include "code\game\gamemodes\cult\runes\tear_reality.dm" #include "code\game\gamemodes\cult\runes\teleport.dm" #include "code\game\gamemodes\cult\runes\wall.dm" +#include "code\game\gamemodes\cult\runes\weapon.dm" #include "code\game\gamemodes\cult\talismans\_talisman.dm" #include "code\game\gamemodes\cult\talismans\armor.dm" #include "code\game\gamemodes\cult\talismans\blind.dm" diff --git a/tgui/packages/tgui/interfaces/ArcaneTome.js b/tgui/packages/tgui/interfaces/ArcaneTome.js index 90bd2f80577..fb9f6d08cdd 100644 --- a/tgui/packages/tgui/interfaces/ArcaneTome.js +++ b/tgui/packages/tgui/interfaces/ArcaneTome.js @@ -115,9 +115,9 @@ export const ArcaneTome = (props, context) => {
{entry.invokers > 1 && (Required invokers: {entry.invokers}

) || ""} - {entry.talisman - && (Can be made into a talisman

) || ""} {entry.shorthand}

+ {entry.talisman + && (Talisman effect: {entry.talisman}

) || ""}