diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index 15350793fad40..3efc7429d803d 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -150,7 +150,7 @@ pixel_x = -5; pixel_y = 12 }, -/obj/item/clothing/head/helmet/chaplain/ancient{ +/obj/item/clothing/head/witchunter{ pixel_y = 13; pixel_x = -5 }, diff --git a/_maps/RandomRuins/SpaceRuins/spacemall.dmm b/_maps/RandomRuins/SpaceRuins/spacemall.dmm index 6383f0b920f3d..05d9a042df56d 100644 --- a/_maps/RandomRuins/SpaceRuins/spacemall.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacemall.dmm @@ -2809,10 +2809,9 @@ /obj/item/clothing/head/collectable/chef, /obj/item/clothing/head/collectable/HoP, /obj/item/clothing/head/collectable/rabbitears, -/obj/item/clothing/head/helmet/chaplain, +/obj/item/clothing/head/witchunter, /obj/item/clothing/neck/cloak/trans, /obj/item/clothing/neck/cloak/cap, -/obj/item/clothing/head/helmet/chaplain/witchunter_hat, /obj/item/clothing/neck/beads, /obj/item/clothing/neck/necklace/dope, /obj/item/clothing/neck/stripedredscarf, diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index a880d2947ae29..207d91d4219ae 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -424,7 +424,7 @@ "qo" = ( /obj/structure/closet/cabinet, /obj/item/spear/bonespear, -/obj/item/clothing/suit/armor/riot/chaplain/studentuni, +/obj/item/clothing/suit/armor/witchhunter, /obj/item/reagent_containers/food/snacks/grown/berries/death, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) @@ -461,7 +461,7 @@ /area/ruin/wasteplanet) "qU" = ( /obj/structure/closet/cabinet, -/obj/item/clothing/suit/armor/riot/chaplain/studentuni, +/obj/item/clothing/suit/armor/witchhunter, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) "rh" = ( @@ -492,7 +492,7 @@ "sV" = ( /obj/structure/closet/cabinet, /obj/item/claymore/bone, -/obj/item/clothing/suit/armor/riot/chaplain/studentuni, +/obj/item/clothing/suit/armor/witchhunter, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) "tB" = ( diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index 0fdb4827655a9..5ea4e25b46872 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -2617,7 +2617,7 @@ /obj/item/clothing/under/suit/roumain, /obj/item/clothing/suit/armor/roumain, /obj/item/clothing/head/cowboy/sec/roumain, -/obj/item/clothing/suit/armor/riot/chaplain/witchhunter, +/obj/item/clothing/suit/armor/witchhunter, /obj/item/flashlight/lantern, /obj/structure/closet/secure_closet/hunter, /obj/item/lighter, diff --git a/check_regex.yaml b/check_regex.yaml index e01c41995e8e3..d03e153919754 100644 --- a/check_regex.yaml +++ b/check_regex.yaml @@ -38,7 +38,7 @@ standards: - exactly: [ - 268, + 265, "non-bitwise << uses", '(?A selection has already been made. Self-Destructing...") - return - - /obj/item/storage/box/holy - name = "Templar Kit" - -/obj/item/storage/box/holy/PopulateContents() - new /obj/item/clothing/head/helmet/chaplain(src) - new /obj/item/clothing/suit/armor/riot/chaplain(src) - -/obj/item/storage/box/holy/student - name = "Profane Scholar Kit" - -/obj/item/storage/box/holy/student/PopulateContents() - new /obj/item/clothing/suit/armor/riot/chaplain/studentuni(src) - new /obj/item/clothing/head/helmet/chaplain/cage(src) - -/obj/item/clothing/suit/armor/riot/chaplain/studentuni - name = "student robe" - desc = "The uniform of a bygone institute of learning." - icon_state = "chaplain_studentuni" - item_state = "studentuni" - body_parts_covered = ARMS|CHEST - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - -/obj/item/clothing/head/helmet/chaplain/cage - name = "cage" - desc = "A cage that restrains the will of the self, allowing one to see the profane world for what it is." - flags_inv = HIDEHAIR //bald - mob_overlay_icon = 'icons/mob/large-worn-icons/64x64/head.dmi' - icon_state = "cage" - item_state = "cage" - worn_x_dimension = 64 - worn_y_dimension = 64 - -/obj/item/storage/box/holy/sentinel - name = "Stone Sentinel Kit" - -/obj/item/storage/box/holy/sentinel/PopulateContents() - new /obj/item/clothing/suit/armor/riot/chaplain/ancient(src) - new /obj/item/clothing/head/helmet/chaplain/ancient(src) - -/obj/item/clothing/head/helmet/chaplain/ancient - name = "ancient helmet" - desc = "None may pass!" - icon_state = "knight_ancient" - item_state = "knight_ancient" - -/obj/item/clothing/suit/armor/riot/chaplain/ancient - name = "ancient armour" - desc = "Defend the treasure..." - icon_state = "chaplain_ancient" - item_state = "knight_ancient" - -/obj/item/storage/box/holy/witchhunter name = "Witchhunter Kit" -/obj/item/storage/box/holy/witchhunter/PopulateContents() - new /obj/item/clothing/suit/armor/riot/chaplain/witchhunter(src) - new /obj/item/clothing/head/helmet/chaplain/witchunter_hat(src) - -/obj/item/clothing/suit/armor/riot/chaplain/witchhunter - name = "witchunter garb" - desc = "This worn outfit saw much use back in the day." - icon_state = "chaplain_witchhunter" - item_state = "witchhunter" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - -/obj/item/clothing/head/helmet/chaplain/witchunter_hat - name = "witchunter hat" - desc = "This hat saw much use back in the day." - icon_state = "witchhunterhat" - item_state = "witchhunterhat" - flags_cover = HEADCOVERSEYES - flags_inv = HIDEEYES|HIDEHAIR - -/obj/item/storage/box/holy/adept - name = "Divine Adept Kit" - -/obj/item/storage/box/holy/adept/PopulateContents() - new /obj/item/clothing/suit/armor/riot/chaplain/adept(src) - new /obj/item/clothing/head/helmet/chaplain/adept(src) - -/obj/item/clothing/head/helmet/chaplain/adept - name = "adept hood" - desc = "Its only heretical when others do it." - icon_state = "crusader" - item_state = "crusader" - flags_cover = HEADCOVERSEYES - flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS +/obj/item/storage/box/holy/PopulateContents() + new /obj/item/clothing/head/witchunter(src) + new /obj/item/clothing/suit/armor/witchhunter(src) -/obj/item/clothing/suit/armor/riot/chaplain/adept - name = "adept robes" - desc = "The ideal outfit for burning the unfaithful." - icon_state = "chaplain_crusader" - item_state = "crusader" /obj/item/storage/box/holy/follower name = "Followers of the Chaplain Kit" @@ -203,62 +65,6 @@ var/reskinned = FALSE var/chaplain_spawnable = TRUE -/obj/item/nullrod/Initialize() - . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) - -/obj/item/nullrod/attack_self(mob/user) - if(user.mind && (user.mind.holy_role) && !reskinned) - reskin_holy_weapon(user) - -/** - * reskin_holy_weapon: Shows a user a list of all available nullrod reskins and based on his choice replaces the nullrod with the reskinned version - * - * Arguments: - * * M The mob choosing a nullrod reskin - */ -/obj/item/nullrod/proc/reskin_holy_weapon(mob/M) - if(GLOB.holy_weapon_type) - return - var/list/display_names = list() - var/list/nullrod_icons = list() - for(var/V in typesof(/obj/item/nullrod)) - var/obj/item/nullrod/rodtype = V - if(initial(rodtype.chaplain_spawnable)) - display_names[initial(rodtype.name)] = rodtype - nullrod_icons += list(initial(rodtype.name) = image(icon = initial(rodtype.icon), icon_state = initial(rodtype.icon_state))) - - nullrod_icons = sortList(nullrod_icons) - var/choice = show_radial_menu(M, src , nullrod_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), M), radius = 42, require_near = TRUE) - if(!choice || !check_menu(M)) - return - - var/A = display_names[choice] // This needs to be on a separate var as list member access is not allowed for new - var/obj/item/nullrod/holy_weapon = new A - GLOB.holy_weapon_type = holy_weapon.type - - SSblackbox.record_feedback("tally", "chaplain_weapon", 1, "[choice]") - - if(holy_weapon) - holy_weapon.reskinned = TRUE - qdel(src) - M.put_in_active_hand(holy_weapon) - -/** - * check_menu: Checks if we are allowed to interact with a radial menu - * - * Arguments: - * * user The mob interacting with a menu - */ -/obj/item/nullrod/proc/check_menu(mob/user) - if(!istype(user)) - return FALSE - if(QDELETED(src) || reskinned) - return FALSE - if(user.incapacitated() || !user.is_holding(src)) - return FALSE - return TRUE - /obj/item/nullrod/godhand icon_state = "disintegrate" item_state = "disintegrate" @@ -648,13 +454,6 @@ hitsound = 'sound/weapons/bite.ogg' var/used_blessing = FALSE -/obj/item/nullrod/carp/attack_self(mob/living/user) - if(used_blessing) - else if(user.mind && (user.mind.holy_role)) - to_chat(user, "You are blessed by Carp-Sie. Wild space carp will no longer attack you.") - user.faction |= "carp" - used_blessing = TRUE - /obj/item/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking name = "monk's staff" desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, it is now used to harass the clown." diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 45fee1d676600..67dba503642d3 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -1,3 +1,10 @@ +//need to refactor this. +GLOBAL_LIST_INIT(biblenames, list("Bible", "Quran", "Scrapbook", "Burning Bible", "Clown Bible", "Banana Bible", "Creeper Bible", "White Bible", "Holy Light", "The God Delusion", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "Melted Bible", "Necronomicon", "Insulationism", "Guru Granth Sahib")) +//If you get these two lists not matching in size, there will be runtimes and I will hurt you in ways you couldn't even begin to imagine +// if your bible has no custom itemstate, use one of the existing ones +GLOBAL_LIST_INIT(biblestates, list("bible", "koran", "scrapbook", "burning", "honk1", "honk2", "creeper", "white", "holylight", "atheist", "tome", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon", "insuls", "gurugranthsahib")) +GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", "honk1", "honk2", "creeper", "white", "holylight", "atheist", "tome", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon", "kingyellow", "gurugranthsahib")) + /obj/item/storage/book name = "hollowed book" desc = "I guess someone didn't like it." @@ -17,18 +24,6 @@ /obj/item/storage/book/attack_self(mob/user) to_chat(user, "The pages of [title] have been cut out!") -GLOBAL_LIST_INIT(biblenames, list("Bible", "Quran", "Scrapbook", "Burning Bible", "Clown Bible", "Banana Bible", "Creeper Bible", "White Bible", "Holy Light", "The God Delusion", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "Melted Bible", "Necronomicon", "Insulationism", "Guru Granth Sahib")) -//If you get these two lists not matching in size, there will be runtimes and I will hurt you in ways you couldn't even begin to imagine -// if your bible has no custom itemstate, use one of the existing ones -GLOBAL_LIST_INIT(biblestates, list("bible", "koran", "scrapbook", "burning", "honk1", "honk2", "creeper", "white", "holylight", "atheist", "tome", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon", "insuls", "gurugranthsahib")) -GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", "honk1", "honk2", "creeper", "white", "holylight", "atheist", "tome", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon", "kingyellow", "gurugranthsahib")) - -/mob/proc/bible_check() //The bible, if held, might protect against certain things - var/obj/item/storage/book/bible/B = locate() in src - if(is_holding(B)) - return B - return 0 - /obj/item/storage/book/bible name = "bible" desc = "Apply to head repeatedly." @@ -41,205 +36,6 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", var/deity_name = "Christ" force_string = "holy" -/obj/item/storage/book/bible/Initialize() - . = ..() - AddComponent(/datum/component/anti_magic, FALSE, TRUE) - -/obj/item/storage/book/bible/attack_self(mob/living/carbon/human/H) - if(!istype(H)) - return - if(!H.can_read(src)) - return FALSE - // If H is the Chaplain, we can set the icon_state of the bible (but only once!) - if(!GLOB.bible_icon_state && H.mind.holy_role == HOLY_ROLE_HIGHPRIEST) - var/dat = "Pick Bible Style

Pick a bible style

" - for(var/i in 1 to GLOB.biblestates.len) - var/icon/bibleicon = icon('icons/obj/storage.dmi', GLOB.biblestates[i]) - var/nicename = GLOB.biblenames[i] - H << browse_rsc(bibleicon, nicename) - dat += {""} - dat += "
[nicename]
" - H << browse(dat, "window=editicon;can_close=0;can_minimize=0;size=250x650") - -/obj/item/storage/book/bible/Topic(href, href_list) - if(!usr.canUseTopic(src, BE_CLOSE)) - return - if(href_list["seticon"] && !GLOB.bible_icon_state) - var/iconi = text2num(href_list["seticon"]) - var/biblename = GLOB.biblenames[iconi] - icon_state = GLOB.biblestates[iconi] - item_state = GLOB.bibleitemstates[iconi] - - if(icon_state == "honk1" || icon_state == "honk2") - var/mob/living/carbon/human/H = usr - H.dna.add_mutation(CLOWNMUT) - H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(H), ITEM_SLOT_MASK) - if(icon_state == "insuls") - var/mob/living/carbon/human/H =usr - var/obj/item/clothing/gloves/color/fyellow/insuls = new - insuls.name = "insuls" - insuls.desc = "A mere copy of the true insuls." - insuls.siemens_coefficient = 0.99999 - H.equip_to_slot(insuls, ITEM_SLOT_GLOVES) - GLOB.bible_icon_state = icon_state - GLOB.bible_item_state = item_state - - SSblackbox.record_feedback("text", "religion_book", 1, "[biblename]") - usr << browse(null, "window=editicon") - -/obj/item/storage/book/bible/proc/bless(mob/living/L, mob/living/user) - if(GLOB.religious_sect) - return GLOB.religious_sect.sect_bless(L,user) - if(!ishuman(L)) - return - var/mob/living/carbon/human/H = L - for(var/X in H.bodyparts) - var/obj/item/bodypart/BP = X - if(!IS_ORGANIC_LIMB(BP)) - to_chat(user, "[src.deity_name] refuses to heal this metallic taint!") - return 0 - - var/heal_amt = 10 - var/list/hurt_limbs = H.get_damaged_bodyparts(1, 1, null, BODYTYPE_ORGANIC) - - if(hurt_limbs.len) - for(var/X in hurt_limbs) - var/obj/item/bodypart/affecting = X - if(affecting.heal_damage(heal_amt, heal_amt, null, BODYTYPE_ORGANIC)) - H.update_damage_overlays() - H.visible_message("[user] heals [H] with the power of [deity_name]!") - to_chat(H, "May the power of [deity_name] compel you to be healed!") - playsound(src.loc, "punch", 25, TRUE, -1) - SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) - return 1 - -/obj/item/storage/book/bible/attack(mob/living/M, mob/living/carbon/human/user, heal_mode = TRUE) - - if (!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") - return - - if (HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) - to_chat(user, "[src] slips out of your hand and hits your head.") - user.take_bodypart_damage(10) - user.Unconscious(400) - return - - var/chaplain = 0 - if(user.mind && (user.mind.holy_role)) - chaplain = 1 - - if(!chaplain) - to_chat(user, "The book sizzles in your hands.") - user.take_bodypart_damage(0,10) - return - - if (!heal_mode) - return ..() - - var/smack = 1 - - if (M.stat != DEAD) - if(chaplain && user == M) - to_chat(user, "You can't heal yourself!") - return - - if(prob(60) && bless(M, user)) - smack = 0 - else if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!istype(C.head, /obj/item/clothing/head/helmet)) - C.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 60) - to_chat(C, "You feel dumber.") - - if(smack) - M.visible_message("[user] beats [M] over the head with [src]!", \ - "[user] beats [M] over the head with [src]!") - playsound(src.loc, "punch", 25, TRUE, -1) - log_combat(user, M, "attacked", src) - - else - M.visible_message("[user] smacks [M]'s lifeless corpse with [src].") - playsound(src.loc, "punch", 25, TRUE, -1) - -/obj/item/storage/book/bible/afterattack(atom/A, mob/user, proximity) - . = ..() - if(!proximity) - return - if(isfloorturf(A)) - to_chat(user, "You hit the floor with the bible.") - if(user.mind && (user.mind.holy_role)) - for(var/obj/effect/rune/R in orange(2,user)) - R.invisibility = 0 - if(user?.mind?.holy_role) - if(A.reagents && A.reagents.has_reagent(/datum/reagent/water)) // blesses all the water in the holder - to_chat(user, "You bless [A].") - var/water2holy = A.reagents.get_reagent_amount(/datum/reagent/water) - A.reagents.del_reagent(/datum/reagent/water) - A.reagents.add_reagent(/datum/reagent/water/holywater,water2holy) - if(A.reagents && A.reagents.has_reagent(/datum/reagent/fuel/unholywater)) // yeah yeah, copy pasted code - sue me - to_chat(user, "You purify [A].") - var/unholy2clean = A.reagents.get_reagent_amount(/datum/reagent/fuel/unholywater) - A.reagents.del_reagent(/datum/reagent/fuel/unholywater) - A.reagents.add_reagent(/datum/reagent/water/holywater,unholy2clean) - if(istype(A, /obj/item/storage/book/bible) && !istype(A, /obj/item/storage/book/bible/syndicate)) - to_chat(user, "You purify [A], conforming it to your belief.") - var/obj/item/storage/book/bible/B = A - B.name = name - B.icon_state = icon_state - B.item_state = item_state - if(istype(A, /obj/item/cult_bastard) && !iscultist(user)) - var/obj/item/cult_bastard/sword = A - to_chat(user, "You begin to exorcise [sword].") - playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,TRUE) - if(do_after(user, 40, target = sword)) - playsound(src,'sound/effects/pray_chaplain.ogg',60,TRUE) - for(var/obj/item/soulstone/SS in sword.contents) - SS.usability = TRUE - for(var/mob/living/simple_animal/shade/EX in SS) - SSticker.mode.remove_cultist(EX.mind, 1, 0) - EX.icon_state = "ghost1" - EX.name = "Purified [EX.name]" - SS.release_shades(user) - qdel(SS) - new /obj/item/nullrod/claymore(get_turf(sword)) - user.visible_message("[user] purifies [sword]!") - qdel(sword) - else if(istype(A, /obj/item/soulstone) && !iscultist(user)) - var/obj/item/soulstone/SS = A - if(SS.purified) - return - to_chat(user, "You begin to exorcise [SS].") - playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,TRUE) - if(do_after(user, 40, target = SS)) - playsound(src,'sound/effects/pray_chaplain.ogg',60,TRUE) - SS.usability = TRUE - SS.purified = TRUE - SS.icon_state = "purified_soulstone" - for(var/mob/M in SS.contents) - if(M.mind) - SS.icon_state = "purified_soulstone2" - if(iscultist(M)) - SSticker.mode.remove_cultist(M.mind, FALSE, FALSE) - for(var/mob/living/simple_animal/shade/EX in SS) - EX.icon_state = "ghost1" - EX.name = "Purified [initial(EX.name)]" - user.visible_message("[user] purifies [SS]!") - else if(istype(A, /obj/item/nullrod/scythe/talking)) - var/obj/item/nullrod/scythe/talking/sword = A - to_chat(user, "You begin to exorcise [sword]...") - playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,TRUE) - if(do_after(user, 40, target = sword)) - playsound(src,'sound/effects/pray_chaplain.ogg',60,TRUE) - for(var/mob/living/simple_animal/shade/S in sword.contents) - to_chat(S, "You were destroyed by the exorcism!") - qdel(S) - sword.possessed = FALSE //allows the chaplain (or someone else) to reroll a new spirit for their sword - sword.name = initial(sword.name) - REMOVE_TRAIT(sword, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) //in case the "sword" is a possessed dummy - user.visible_message("[user] exorcises [sword]!", \ - "You successfully exorcise [sword]!") - /obj/item/storage/book/bible/koran name = "Koran" icon_state = "koran" @@ -253,34 +49,6 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", new /obj/item/reagent_containers/food/drinks/bottle/whiskey(src) /obj/item/storage/book/bible/syndicate + name = "Syndicate Tome" icon_state ="ebook" deity_name = "The Syndicate" - throw_speed = 2 - throwforce = 18 - throw_range = 7 - force = 18 - hitsound = 'sound/weapons/sear.ogg' - damtype = BURN - name = "Syndicate Tome" - attack_verb = list("attacked", "burned", "blessed", "damned", "scorched") - var/uses = 1 - -/obj/item/storage/book/bible/syndicate/attack_self(mob/living/carbon/human/H) - if (uses) - H.mind.holy_role = HOLY_ROLE_PRIEST - uses -= 1 - to_chat(H, "You try to open the book AND IT BITES YOU!") - playsound(src.loc, 'sound/effects/snap.ogg', 50, TRUE) - H.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - to_chat(H, "Your name appears on the inside cover, in blood.") - var/ownername = H.real_name - desc += "The name [ownername] is written in blood inside the cover." - -/obj/item/storage/book/bible/syndicate/attack(mob/living/M, mob/living/carbon/human/user, heal_mode = TRUE) - if (user.a_intent == INTENT_HELP) - return ..() - else - return ..(M,user,heal_mode = FALSE) - -/obj/item/storage/book/bible/syndicate/add_blood_DNA(list/blood_dna) - return FALSE diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 0e65a5aeb7604..dac919bb428c4 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -98,7 +98,7 @@ icon_door = "black" /obj/structure/closet/wardrobe/chaplain_black/PopulateContents() - new /obj/item/choice_beacon/holy(src) + new /obj/item/storage/box/holy(src) new /obj/item/clothing/accessory/pocketprotector/cosmetology(src) new /obj/item/clothing/under/rank/civilian/chaplain(src) new /obj/item/clothing/shoes/sneakers/black(src) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 7355880e6da10..5058dc73f0810 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -61,10 +61,6 @@ Runes can either be invoked by one's self or with many different cultists. Each if(do_after(user, 15, target = src)) to_chat(user, "You carefully erase the [lowertext(cultist_name)] rune.") qdel(src) - else if(istype(I, /obj/item/nullrod)) - user.say("BEGONE FOUL MAGIKS!!", forced = "nullrod") - to_chat(user, "You disrupt the magic of [src] with [I].") - qdel(src) /obj/effect/rune/attack_hand(mob/living/user) . = ..() @@ -502,9 +498,6 @@ structure_check() searches for nearby cultist structures required for the invoca if(do_after(user, 50, target = src)) //Prevents accidental erasures. log_game("Summon Narsie rune erased by [key_name(user)] with [I.name]") message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with [I.name]") - else if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. - log_game("Summon Narsie rune erased by [key_name(user)] using a null rod") - message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with a null rod") else ..() diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index 76da8304df094..084176f4b8c41 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -190,17 +190,6 @@ return BULLET_ACT_FORCE_PIERCE return ..() -//damage, gibbing, and dying -/mob/living/simple_animal/revenant/attackby(obj/item/W, mob/living/user, params) - . = ..() - if(istype(W, /obj/item/nullrod)) - visible_message("[src] violently flinches!", \ - "As \the [W] passes through you, you feel your essence draining away!") - adjustBruteLoss(25) //hella effective - inhibited = TRUE - update_action_buttons_icon() - addtimer(CALLBACK(src, PROC_REF(reset_inhibit)), 30) - /mob/living/simple_animal/revenant/proc/reset_inhibit() inhibited = FALSE update_action_buttons_icon() diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index a95ef0d1b5790..a20b905b590d4 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -58,14 +58,6 @@ if(spawn_amt_left <= 0) qdel(src) -/obj/effect/rend/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/nullrod)) - user.visible_message("[user] seals \the [src] with \the [I].") - qdel(src) - return - else - return ..() - /obj/effect/rend/singularity_pull() return diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 994cc6042ef2b..eb76c13fb5416 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -272,3 +272,12 @@ #undef DRILL_SHOUTING #undef DRILL_YELLING #undef DRILL_CANADIAN + +/obj/item/clothing/head/witchunter + name = "witchunter hat" + desc = "This hat saw much use back in the day." + icon_state = "witchhunterhat" + item_state = "witchhunterhat" + flags_cover = HEADCOVERSEYES + flags_inv = HIDEEYES|HIDEHAIR + armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index b9e828ab39749..c04b61563f53c 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -315,13 +315,6 @@ var/datum/brain_trauma/mild/phobia/conspiracies/paranoia var/warped = FALSE -/obj/item/clothing/head/foilhat/Initialize(mapload) - . = ..() - if(!warped) - AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, ITEM_SLOT_HEAD, 6, TRUE, null, CALLBACK(src, PROC_REF(warp_up))) - else - warp_up() - /obj/item/clothing/head/foilhat/equipped(mob/living/carbon/human/user, slot) . = ..() if(slot != ITEM_SLOT_HEAD || warped) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 7eaccd402e357..557a69c5acb2a 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -585,11 +585,6 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/wizard -/obj/item/clothing/suit/space/hardsuit/wizard/Initialize() - . = ..() - AddComponent(/datum/component/anti_magic, TRUE, FALSE, FALSE, ITEM_SLOT_OCLOTHING, INFINITY, FALSE) - - //Medical hardsuit /obj/item/clothing/head/helmet/space/hardsuit/medical name = "medical hardsuit helmet" diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index ae6ebb525a641..67dc7ce529b3f 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -332,10 +332,6 @@ Contains: actions_types = list() resistance_flags = FIRE_PROOF -/obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() - . = ..() - AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, ITEM_SLOT_OCLOTHING) - /obj/item/clothing/suit/space/hardsuit/ert/paranormal name = "paranormal response team hardsuit" desc = "Powerful wards are built into this hardsuit, protecting the user from all manner of paranormal threats." @@ -345,10 +341,6 @@ Contains: max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF -/obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() - . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE, TRUE, ITEM_SLOT_OCLOTHING) - /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor name = "inquisitor's hardsuit" icon_state = "hardsuit-inq" @@ -373,11 +365,6 @@ Contains: resistance_flags = FIRE_PROOF allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw) - -/obj/item/clothing/suit/space/hardsuit/berserker/Initialize() - . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE, TRUE, ITEM_SLOT_OCLOTHING) - /obj/item/clothing/suit/space/hardsuit/berserker/RemoveHelmet() var/obj/item/clothing/head/helmet/space/hardsuit/berserker/helm = helmet if(helm?.berserk_active) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 79aaf15c4d349..56018c288b6ad 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -286,3 +286,10 @@ body_parts_covered = HEAD flags_inv = HIDEHAIR|HIDEEARS|HIDEFACE|HIDEFACIALHAIR +/obj/item/clothing/suit/armor/witchhunter + name = "witchunter garb" + desc = "This worn outfit saw much use back in the day." + icon_state = "chaplain_witchhunter" + item_state = "witchhunter" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + allowed = list(/obj/item/storage/book/bible, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm index e95bdb2063a8c..d5b0c0ff66381 100644 --- a/code/modules/holiday/halloween.dm +++ b/code/modules/holiday/halloween.dm @@ -243,17 +243,6 @@ if(prob(5)) playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, TRUE) -/mob/living/simple_animal/hostile/clown_insane/attackby(obj/item/O, mob/user) - if(istype(O, /obj/item/nullrod)) - if(prob(5)) - visible_message("[src] finally found the peace it deserves. You hear honks echoing off into the distance.") - playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, TRUE) - qdel(src) - else - visible_message("[src] seems to be resisting the effect!") - return - return ..() - /mob/living/simple_animal/hostile/clown_insane/handle_temperature_damage() return diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index 1378fb0253fc8..1c6b19313ee4c 100644 --- a/code/modules/hydroponics/grown/melon.dm +++ b/code/modules/hydroponics/grown/melon.dm @@ -52,19 +52,3 @@ dried_type = null wine_power = 70 //Water to wine, baby. wine_flavor = "divinity" - -/obj/item/reagent_containers/food/snacks/grown/holymelon/Initialize() - . = ..() - var/uses = 1 - if(seed) - uses = round(seed.potency / 20) - AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, ITEM_SLOT_HANDS, uses, TRUE, CALLBACK(src, PROC_REF(block_magic)), CALLBACK(src, PROC_REF(expire))) //deliver us from evil o melon god - -/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/block_magic(mob/user, major) - if(major) - to_chat(user, "[src] hums slightly, and seems to decay a bit.") - -/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/expire(mob/user) - to_chat(user, "[src] rapidly turns into ash!") - qdel(src) - new /obj/effect/decal/cleanable/ash(drop_location()) diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index 8706974767944..ab4ceb6968c04 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -16,8 +16,6 @@ var/obj/item/storage/book/bible/booze/B = new if(GLOB.religion) - if(H.mind) - H.mind.holy_role = HOLY_ROLE_PRIEST B.deity_name = GLOB.deity B.name = GLOB.bible_name B.icon_state = GLOB.bible_icon_state @@ -30,8 +28,6 @@ if(GLOB.religious_sect) GLOB.religious_sect.on_conversion(H) return - if(H.mind) - H.mind.holy_role = HOLY_ROLE_HIGHPRIEST var/new_religion = DEFAULT_RELIGION if(M.client && M.client.prefs.custom_names["religion"]) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 7b80559d26919..268413ef203c4 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -501,10 +501,6 @@ if(input) src.warcry = input -/obj/item/immortality_talisman/Initialize() - . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE, TRUE) - /datum/action/item_action/hands_free/immortality name = "Immortality" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 4430fc1da300f..f92e8d762f2df 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -314,10 +314,6 @@ msg += "" - if(HAS_TRAIT(user, TRAIT_SPIRITUAL) && mind?.holy_role) - msg += "[t_He] [t_has] a holy aura about [t_him].\n" - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "religious_comfort", /datum/mood_event/religiously_comforted) - switch(stat) if(UNCONSCIOUS, HARD_CRIT) msg += "[t_He] [t_is]n't responding to anything around [t_him] and seem[p_s()] to be asleep.\n" diff --git a/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm index 675c6fc993426..b251dda91e48e 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm @@ -47,8 +47,8 @@ melee_damage_upper = 30 deathmessage = "collapses into a pile of bones, its gear clanging as it hits the ground!" loot = list(/obj/effect/decal/remains/human, - /obj/item/clothing/suit/armor/riot/chaplain, - /obj/item/clothing/head/helmet/chaplain, + /obj/item/clothing/suit/armor/witchhunter, + /obj/item/clothing/head/witchunter, /obj/item/claymore/weak{name = "holy sword"}) /mob/living/simple_animal/hostile/human/skeleton/ice diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 123afbcf387c9..5902665e85c9c 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -2162,13 +2162,6 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Trappist Beer" glass_desc = "boozy Catholicism in a glass." -/datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/M) - if(M.mind.holy_role) - M.adjustFireLoss(-2.5, 0) - M.jitteriness = max(0, M.jitteriness-1) - M.stuttering = max(0, M.stuttering-1) - return ..() - /datum/reagent/consumable/ethanol/blazaam name = "Blazaam" description = "A strange drink that few people seem to remember existing. Doubles as a Berenstain remover." diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm index 92327a2ed6890..3ddce78ae6e53 100644 --- a/code/modules/religion/religion_sects.dm +++ b/code/modules/religion/religion_sects.dm @@ -135,8 +135,6 @@ if(iscyborg(L)) var/mob/living/silicon/robot/R = L var/charge_amt = 50 - if(L.mind?.holy_role == HOLY_ROLE_HIGHPRIEST) - charge_amt *= 2 R.cell?.charge += charge_amt R.visible_message("[user] charges [R] with the power of [GLOB.deity]!") to_chat(R, "You are charged by the power of [GLOB.deity]!") diff --git a/code/modules/religion/religion_structures.dm b/code/modules/religion/religion_structures.dm index f9c449c56e9ba..e9d76ca8bf5a8 100644 --- a/code/modules/religion/religion_structures.dm +++ b/code/modules/religion/religion_structures.dm @@ -18,10 +18,6 @@ var/can_i_see = FALSE if(isobserver(user)) can_i_see = TRUE - else if(isliving(user)) - var/mob/living/L = user - if(L.mind?.holy_role) - can_i_see = TRUE if(!can_i_see || !sect_to_altar) return @@ -57,62 +53,6 @@ pushed_mob.forceMove(loc) return ..() -/obj/structure/altar_of_gods/attackby(obj/item/C, mob/user, params) - //If we can sac, we do nothing but the sacrifice instead of typical attackby behavior (IE damage the structure) - if(sect_to_altar?.can_sacrifice(C,user)) - sect_to_altar.on_sacrifice(C,user) - return TRUE - . = ..() - //everything below is assumed you're bibling it up - if(!istype(C, /obj/item/storage/book/bible)) - return - if(sect_to_altar) - if(!sect_to_altar.rites_list) - to_chat(user, "Your sect doesn't have any rites to perform!") - return - var/rite_select = input(user,"Select a rite to perform!","Select a rite",null) in sect_to_altar.rites_list - if(!rite_select || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) - to_chat(user,"You cannot perform the rite at this time.") - return - var/selection2type = sect_to_altar.rites_list[rite_select] - performing_rite = new selection2type(src) - if(!performing_rite.perform_rite(user, src)) - QDEL_NULL(performing_rite) - else - performing_rite.invoke_effect(user, src) - sect_to_altar.adjust_favor(-performing_rite.favor_cost) - QDEL_NULL(performing_rite) - return - - if(user.mind.holy_role != HOLY_ROLE_HIGHPRIEST) - to_chat(user, "You are not the high priest, and therefore cannot select a religious sect.") - return - - var/list/available_options = generate_available_sects(user) - if(!available_options) - return - - var/sect_select = input(user,"Select a sect (You CANNOT revert this decision!)","Select a Sect",null) in available_options - if(!sect_select || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) - to_chat(user,"You cannot select a sect at this time.") - return - var/type_selected = available_options[sect_select] - GLOB.religious_sect = new type_selected() - for(var/i in GLOB.player_list) - if(!isliving(i)) - continue - var/mob/living/am_i_holy_living = i - if(!am_i_holy_living.mind?.holy_role) - continue - GLOB.religious_sect.on_conversion(am_i_holy_living) - sect_to_altar = GLOB.religious_sect - if(sect_to_altar.altar_icon) - icon = sect_to_altar.altar_icon - if(sect_to_altar.altar_icon_state) - icon_state = sect_to_altar.altar_icon_state - - - /obj/structure/altar_of_gods/proc/generate_available_sects(mob/user) //eventually want to add sects you get from unlocking certain achievements . = list() for(var/i in subtypesof(/datum/religion_sect)) diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index bbc53154aac60..da3fdb1340101 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -375,7 +375,7 @@ icon_state = "chapdrobe" product_ads = "Are you being bothered by cultists or pesky revenants? Then come and dress like the holy man!;Clothes for men of the cloth!" vend_reply = "Thank you for using the ChapDrobe!" - products = list(/obj/item/choice_beacon/holy = 1, + products = list(/obj/item/storage/box/holy = 1, /obj/item/storage/backpack/cultpack = 1, /obj/item/clothing/head/beret/service = 1, //WS edit - berets /obj/item/clothing/accessory/pocketprotector/cosmetology = 1, diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 721de12b60b63..c2a73da609b94 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/head/armor.dmi b/icons/mob/clothing/head/armor.dmi index 4cec91ad01103..38adc74f33179 100644 Binary files a/icons/mob/clothing/head/armor.dmi and b/icons/mob/clothing/head/armor.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index fb23d4bc2afe6..cf7f5ff09bd0b 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/head/armor.dmi b/icons/obj/clothing/head/armor.dmi index c6792be933fcb..6757e591c853b 100644 Binary files a/icons/obj/clothing/head/armor.dmi and b/icons/obj/clothing/head/armor.dmi differ