Merge pull request #10340 from Kyep/chaplain_1

Chaplain tweaks
This commit is contained in:
variableundefined
2018-11-29 14:22:03 +08:00
committed by GitHub
14 changed files with 167 additions and 59 deletions
+1 -1
View File
@@ -10705,7 +10705,7 @@
"dXS" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plating,/area/medical/surgery1) "dXS" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plating,/area/medical/surgery1)
"dXT" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small,/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/turf/simulated/floor/plating,/area/medical/surgery1) "dXT" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small,/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/turf/simulated/floor/plating,/area/medical/surgery1)
"dXU" = (/obj/structure/table/reinforced,/obj/item/storage/firstaid/regular,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/plasteel,/area/medical/surgery1) "dXU" = (/obj/structure/table/reinforced,/obj/item/storage/firstaid/regular,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/plasteel,/area/medical/surgery1)
"dXV" = (/obj/structure/table/wood,/obj/item/soulstone/anybody/chaplain,/obj/item/nullrod,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "dXV" = (/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
"dXW" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "arrival_south_airlock"; name = "interior access button"; pixel_x = -24; pixel_y = -24; req_access_txt = "10;13"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "dXW" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "arrival_south_airlock"; name = "interior access button"; pixel_x = -24; pixel_y = -24; req_access_txt = "10;13"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit)
"dXX" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "sw_maint2_airlock"; name = "exterior access button"; pixel_x = 24; pixel_y = 24; req_access_txt = "0"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "dXX" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "sw_maint2_airlock"; name = "exterior access button"; pixel_x = 24; pixel_y = 24; req_access_txt = "0"},/turf/simulated/floor/plating/airless/catwalk,/area/space)
"dXY" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/syringe/epinephrine,/obj/item/reagent_containers/syringe,/obj/item/clothing/accessory/stethoscope,/obj/effect/decal/cleanable/dirt,/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/plasteel,/area/medical/surgery1) "dXY" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/syringe/epinephrine,/obj/item/reagent_containers/syringe,/obj/item/clothing/accessory/stethoscope,/obj/effect/decal/cleanable/dirt,/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/plasteel,/area/medical/surgery1)
+2 -2
View File
@@ -2828,7 +2828,7 @@
"bct" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bct" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry)
"bcu" = (/obj/structure/table/wood,/obj/item/pen,/obj/item/reagent_containers/food/drinks/bottle/holywater,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/carpet/black,/area/chapel/office) "bcu" = (/obj/structure/table/wood,/obj/item/pen,/obj/item/reagent_containers/food/drinks/bottle/holywater,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/carpet/black,/area/chapel/office)
"bcv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bcv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry)
"bcw" = (/obj/machinery/alarm{pixel_y = 25},/obj/machinery/camera{c_tag = "Chapel Chaplain's Office"; dir = 2; network = list("SS13")},/obj/structure/table/wood,/obj/item/soulstone/anybody/chaplain,/turf/simulated/floor/carpet/black,/area/chapel/office) "bcw" = (/obj/machinery/alarm{pixel_y = 25},/obj/machinery/camera{c_tag = "Chapel Chaplain's Office"; dir = 2; network = list("SS13")},/obj/structure/table/wood,/turf/simulated/floor/carpet/black,/area/chapel/office)
"bcx" = (/turf/simulated/floor/carpet/black,/area/chapel/office) "bcx" = (/turf/simulated/floor/carpet/black,/area/chapel/office)
"bcy" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/grass,/area/hydroponics) "bcy" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/grass,/area/hydroponics)
"bcz" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "bcz" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
@@ -2927,7 +2927,7 @@
"beo" = (/obj/structure/chair/office/dark{dir = 8},/turf/simulated/floor/wood,/area/library) "beo" = (/obj/structure/chair/office/dark{dir = 8},/turf/simulated/floor/wood,/area/library)
"bep" = (/obj/machinery/newscaster{pixel_x = 30},/turf/simulated/floor/wood,/area/library) "bep" = (/obj/machinery/newscaster{pixel_x = 30},/turf/simulated/floor/wood,/area/library)
"beq" = (/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0; step_size = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "beq" = (/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0; step_size = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
"ber" = (/obj/structure/table/wood,/obj/item/stack/tile/carpet/black{amount = 10},/obj/item/nullrod,/turf/simulated/floor/carpet/black,/area/chapel/office) "ber" = (/obj/structure/table/wood,/obj/item/stack/tile/carpet/black{amount = 10},/turf/simulated/floor/carpet/black,/area/chapel/office)
"bes" = (/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "bes" = (/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"bet" = (/obj/structure/chair{dir = 4},/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/carpet/black,/area/chapel/office) "bet" = (/obj/structure/chair{dir = 4},/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/carpet/black,/area/chapel/office)
"beu" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/carpet/black,/area/chapel/office) "beu" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/carpet/black,/area/chapel/office)
+7 -3
View File
@@ -58,6 +58,10 @@
var/rev_cooldown = 0 var/rev_cooldown = 0
var/isholy = FALSE // is this person a chaplain or admin role allowed to use bibles
var/isblessed = FALSE // is this person blessed by a chaplain?
var/num_blessed = 0 // for prayers
// the world.time since the mob has been brigged, or -1 if not at all // the world.time since the mob has been brigged, or -1 if not at all
var/brigged_since = -1 var/brigged_since = -1
var/suicided = FALSE var/suicided = FALSE
@@ -375,9 +379,9 @@
/** SILICON ***/ /** SILICON ***/
if(issilicon(current)) if(issilicon(current))
sections["silicon"] = memory_edit_silicon() sections["silicon"] = memory_edit_silicon()
/* /*
This prioritizes antags relevant to the current round to make them appear at the top of the panel. This prioritizes antags relevant to the current round to make them appear at the top of the panel.
Traitorchan and traitorvamp are snowflaked in because they have multiple sections. Traitorchan and traitorvamp are snowflaked in because they have multiple sections.
*/ */
if(ticker.mode.config_tag == "traitorchan") if(ticker.mode.config_tag == "traitorchan")
if(sections["traitor"]) if(sections["traitor"])
+73
View File
@@ -0,0 +1,73 @@
/obj/effect/proc_holder/spell/targeted/chaplain_bless
name = "Bless"
desc = "Blesses a single person."
school = "transmutation"
charge_max = 60
clothes_req = 0
invocation = "none"
invocation_type = "none"
max_targets = 1
include_user = 0
humans_only = 1
range = 1
cooldown_min = 20
action_icon_state = "shield"
/obj/effect/proc_holder/spell/targeted/chaplain_bless/cast(list/targets, mob/living/user = usr, distanceoverride)
if(!istype(user))
to_chat(user, "Somehow, you are not a living mob. This should never happen. Report this bug.")
revert_cast()
return
if(!user.mind)
to_chat(user, "Somehow, you are mindless. This should never happen. Report this bug.")
revert_cast()
return
if(!user.mind.isholy)
to_chat(user, "Somehow, you are not holy enough to use this ability. This should never happen. Report this bug.")
revert_cast()
return
var/mob/living/carbon/human/target = targets[range]
if(!istype(target))
to_chat(user, "No target.")
revert_cast()
return
if(!(target in oview(range)) && !distanceoverride)//If they are not in overview after selection. Do note that !() is necessary for in to work because ! takes precedence over it.
to_chat(user, "[target] is too far away!")
revert_cast()
return
if(!target.mind)
to_chat(user, "[target] appears to be catatonic. Your blessing would have no effect.")
revert_cast()
return
if(!target.ckey)
to_chat(user, "[target] appears to be too out of it to benefit from this.")
revert_cast()
return
if(target.stat == DEAD)
to_chat(user, "[target] is already dead. There is no point.")
revert_cast()
return
spawn(0) // allows cast to complete even if recipient ignores the prompt
if(alert(target, "[user] wants to bless you, in the name of [user.p_their()] religion. Accept?", "Accept Blessing?", "Yes", "No") == "Yes") // prevents forced conversions
user.visible_message("[user] starts blessing [target] in the name of [ticker.Bible_deity_name].", "<span class='notice'>You start blessing [target] in the name of [ticker.Bible_deity_name].</span>")
if(do_after(user, 150, target = target))
user.visible_message("[user] has blessed [target] in the name of [ticker.Bible_deity_name].", "<span class='notice'>You have blessed [target] in the name of [ticker.Bible_deity_name].</span>")
if(!target.mind.isblessed)
target.mind.isblessed = TRUE
user.mind.num_blessed++
@@ -76,8 +76,8 @@
//Vampires who have reached their full potential can affect nearly everything //Vampires who have reached their full potential can affect nearly everything
if(user.mind.vampire.get_ability(/datum/vampire_passive/full)) if(user.mind.vampire.get_ability(/datum/vampire_passive/full))
return 1 return 1
//Chaplains are resistant to vampire powers //Holy characters are resistant to vampire powers
if(target.mind && target.mind.assigned_role == "Chaplain") if(target.mind && target.mind.isholy)
return 0 return 0
return 1 return 1
+15 -10
View File
@@ -25,6 +25,7 @@
backpack_contents = list( backpack_contents = list(
/obj/item/camera/spooky = 1 /obj/item/camera/spooky = 1
) )
r_hand = /obj/item/nullrod
/datum/outfit/job/chaplain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) /datum/outfit/job/chaplain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..() . = ..()
@@ -32,13 +33,16 @@
if(visualsOnly) if(visualsOnly)
return return
var/obj/item/storage/bible/B = new /obj/item/storage/bible(H) if(H.mind)
H.mind.isholy = TRUE
spawn() spawn()
var/obj/item/storage/bible/B = new /obj/item/storage/bible(H)
H.equip_to_slot_or_del(B, slot_l_hand) H.equip_to_slot_or_del(B, slot_l_hand)
var/religion_name = "Christianity" var/religion_name = "Christianity"
var/new_religion = sanitize(copytext(input(H, "You are the crew services officer. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name),1,MAX_NAME_LEN)) var/new_religion = sanitize(copytext(input(H, "You are the Chaplain. What name do you give your beliefs? Default is Christianity.", "Name change", religion_name),1,MAX_NAME_LEN))
if(!new_religion) if(!new_religion)
new_religion = religion_name new_religion = religion_name
@@ -72,12 +76,14 @@
feedback_set_details("religion_name","[new_religion]") feedback_set_details("religion_name","[new_religion]")
var/deity_name = "Space Jesus" var/deity_name = "Space Jesus"
var/new_deity = sanitize(copytext(input(H, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name),1,MAX_NAME_LEN)) var/new_deity = sanitize(copytext(input(H, "Who or what do you worship? Default is Space Jesus.", "Name change", deity_name),1,MAX_NAME_LEN))
if((length(new_deity) == 0) || (new_deity == "Space Jesus") ) if((length(new_deity) == 0) || (new_deity == "Space Jesus") )
new_deity = deity_name new_deity = deity_name
B.deity_name = new_deity B.deity_name = new_deity
H.AddSpell(new /obj/effect/proc_holder/spell/targeted/chaplain_bless(null))
var/accepted = 0 var/accepted = 0
var/outoftime = 0 var/outoftime = 0
spawn(200) // 20 seconds to choose spawn(200) // 20 seconds to choose
@@ -85,8 +91,9 @@
var/new_book_style = "Bible" var/new_book_style = "Bible"
while(!accepted) while(!accepted)
if(!B) break // prevents possible runtime errors if(!B)
new_book_style = input(H,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Creeper", "White Bible", "Holy Light", "Athiest", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon", "Greentext") break // prevents possible runtime errors
new_book_style = input(H,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Creeper", "White Bible", "Holy Light", "PlainRed", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon", "Greentext")
switch(new_book_style) switch(new_book_style)
if("Koran") if("Koran")
B.icon_state = "koran" B.icon_state = "koran"
@@ -107,13 +114,9 @@
if("Holy Light") if("Holy Light")
B.icon_state = "holylight" B.icon_state = "holylight"
B.item_state = "syringe_kit" B.item_state = "syringe_kit"
if("Athiest") if("PlainRed")
B.icon_state = "athiest" B.icon_state = "athiest"
B.item_state = "syringe_kit" B.item_state = "syringe_kit"
for(var/area/chapel/main/A in world)
for(var/turf/T in A.contents)
if(T.icon_state == "carpetsymbol")
T.dir = 10
if("Tome") if("Tome")
B.icon_state = "tome" B.icon_state = "tome"
B.item_state = "syringe_kit" B.item_state = "syringe_kit"
@@ -165,3 +168,5 @@
ticker.Bible_deity_name = B.deity_name ticker.Bible_deity_name = B.deity_name
feedback_set_details("religion_deity","[new_deity]") feedback_set_details("religion_deity","[new_deity]")
feedback_set_details("religion_book","[new_book_style]") feedback_set_details("religion_book","[new_book_style]")
+51 -17
View File
@@ -11,6 +11,7 @@
var/reskinned = FALSE var/reskinned = FALSE
var/reskin_selectable = TRUE //set to FALSE if a subtype is meant to not normally be available as a reskin option (fluff ones will get re-added through their list) var/reskin_selectable = TRUE //set to FALSE if a subtype is meant to not normally be available as a reskin option (fluff ones will get re-added through their list)
var/list/fluff_transformations = list() //does it have any special transformations only accessible to it? Should only be subtypes of /obj/item/nullrod var/list/fluff_transformations = list() //does it have any special transformations only accessible to it? Should only be subtypes of /obj/item/nullrod
var/sanctify_force = 0
/obj/item/nullrod/suicide_act(mob/user) /obj/item/nullrod/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is killing [user.p_them()]self with \the [src.name]! It looks like [user.p_theyre()] trying to get closer to god!</span>") user.visible_message("<span class='suicide'>[user] is killing [user.p_them()]self with \the [src.name]! It looks like [user.p_theyre()] trying to get closer to god!</span>")
@@ -25,12 +26,29 @@
to_chat(M, "<span class='warning'>The nullrod's power interferes with your own!</span>") to_chat(M, "<span class='warning'>The nullrod's power interferes with your own!</span>")
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
/obj/item/nullrod/pickup(mob/living/user)
. = ..()
if(sanctify_force)
if(!user.mind || !user.mind.isholy)
user.adjustBruteLoss(force)
user.adjustFireLoss(sanctify_force)
user.Weaken(5)
user.unEquip(src, 1)
user.visible_message("<span class='warning'>[src] slips out of the grip of [user] as they try to pick it up, bouncing upwards and smacking [user.p_them()] in the face!</span>", \
"<span class='warning'>[src] slips out of your grip as you pick it up, bouncing upwards and smacking you in the face!</span>")
playsound(get_turf(user), 'sound/effects/hit_punch.ogg', 50, 1, -1)
throw_at(get_edge_target_turf(user, pick(alldirs)), rand(1, 3), 5)
/obj/item/nullrod/attack_self(mob/user) /obj/item/nullrod/attack_self(mob/user)
if(reskinned) if(user.mind && (user.mind.isholy) && !reskinned)
return
if(user.mind && (user.mind.assigned_role == "Chaplain" || user.mind.special_role == SPECIAL_ROLE_ERT))
reskin_holy_weapon(user) reskin_holy_weapon(user)
/obj/item/nullrod/examine(mob/living/user)
. = ..()
if(sanctify_force)
to_chat(user, "<span class='notice'>It bears the inscription: 'Sanctified weapon of the inquisitors. Only the worthy may wield. Nobody shall expect us.'</span>")
/obj/item/nullrod/proc/reskin_holy_weapon(mob/M) /obj/item/nullrod/proc/reskin_holy_weapon(mob/M)
var/list/holy_weapons_list = typesof(/obj/item/nullrod) var/list/holy_weapons_list = typesof(/obj/item/nullrod)
for(var/entry in holy_weapons_list) for(var/entry in holy_weapons_list)
@@ -60,11 +78,27 @@
holy_weapon.reskinned = TRUE holy_weapon.reskinned = TRUE
M.unEquip(src) M.unEquip(src)
M.put_in_active_hand(holy_weapon) M.put_in_active_hand(holy_weapon)
if(sanctify_force)
holy_weapon.sanctify_force = sanctify_force
holy_weapon.name = "sanctified " + holy_weapon.name
qdel(src) qdel(src)
/obj/item/nullrod/fluff //fluff subtype to be used for all donator nullrods /obj/item/nullrod/afterattack(atom/movable/AM, mob/user, proximity)
. = ..()
if(!sanctify_force)
return
if(isliving(AM))
var/mob/living/L = AM
L.adjustFireLoss(sanctify_force) // Bonus fire damage for sanctified (ERT) versions of nullrod
/obj/item/nullrod/fluff // fluff subtype to be used for all donator nullrods
reskin_selectable = FALSE reskin_selectable = FALSE
/obj/item/nullrod/ert // ERT subtype, applies sanctified property to any derived rod
name = "inquisitor null rod"
reskin_selectable = FALSE
sanctify_force = 10
/obj/item/nullrod/godhand /obj/item/nullrod/godhand
name = "god hand" name = "god hand"
icon_state = "disintegrate" icon_state = "disintegrate"
@@ -126,7 +160,7 @@
hitsound = 'sound/weapons/chainsaw.ogg' hitsound = 'sound/weapons/chainsaw.ogg'
/obj/item/nullrod/claymore/glowing /obj/item/nullrod/claymore/glowing
name = "force weapon" name = "force blade"
icon_state = "swordon" icon_state = "swordon"
item_state = "swordon" item_state = "swordon"
desc = "The blade glows with the power of faith. Or possibly a battery." desc = "The blade glows with the power of faith. Or possibly a battery."
@@ -147,7 +181,7 @@
slot_flags = SLOT_BELT slot_flags = SLOT_BELT
/obj/item/nullrod/claymore/saber /obj/item/nullrod/claymore/saber
name = "light energy sword" name = "light energy blade"
hitsound = 'sound/weapons/blade1.ogg' hitsound = 'sound/weapons/blade1.ogg'
icon_state = "swordblue" icon_state = "swordblue"
item_state = "swordblue" item_state = "swordblue"
@@ -155,13 +189,13 @@
slot_flags = SLOT_BELT slot_flags = SLOT_BELT
/obj/item/nullrod/claymore/saber/red /obj/item/nullrod/claymore/saber/red
name = "dark energy sword" name = "dark energy blade"
icon_state = "swordred" icon_state = "swordred"
item_state = "swordred" item_state = "swordred"
desc = "Woefully ineffective when used on steep terrain." desc = "Woefully ineffective when used on steep terrain."
/obj/item/nullrod/claymore/saber/pirate /obj/item/nullrod/claymore/saber/pirate
name = "nautical energy sword" name = "nautical energy cutlass"
icon_state = "cutlass1" icon_state = "cutlass1"
item_state = "cutlass1" item_state = "cutlass1"
desc = "Convincing HR that your religion involved piracy was no mean feat." desc = "Convincing HR that your religion involved piracy was no mean feat."
@@ -279,7 +313,7 @@
/obj/item/nullrod/whip /obj/item/nullrod/whip
name = "holy whip" name = "holy whip"
desc = "What a terrible night to be in spess" desc = "A whip, blessed with the power to banish evil shadowy creatures. What a terrible night to be in spess."
icon_state = "chain" icon_state = "chain"
item_state = "chain" item_state = "chain"
slot_flags = SLOT_BELT slot_flags = SLOT_BELT
@@ -298,11 +332,11 @@
if(is_shadow(H)) if(is_shadow(H))
var/phrase = pick("Die monster! You don't belong in this world!!!", "You steal men's souls and make them your slaves!!!", "Your words are as empty as your soul!!!", "Mankind ill needs a savior such as you!!!") var/phrase = pick("Die monster! You don't belong in this world!!!", "You steal men's souls and make them your slaves!!!", "Your words are as empty as your soul!!!", "Mankind ill needs a savior such as you!!!")
user.say("[phrase]") user.say("[phrase]")
H.adjustBruteLoss(8) //Bonus damage H.adjustBruteLoss(12) //Bonus damage
/obj/item/nullrod/fedora /obj/item/nullrod/fedora
name = "athiest's fedora" name = "binary fedora"
desc = "The brim of the hat is as sharp as your wit. Throwing it at someone would hurt almost as much as disproving the existence of God." desc = "The brim of the hat is as sharp as the division between 0 and 1. It makes a mighty throwing weapon."
icon_state = "fedora" icon_state = "fedora"
item_state = "fedora" item_state = "fedora"
slot_flags = SLOT_HEAD slot_flags = SLOT_HEAD
@@ -310,7 +344,7 @@
force = 0 force = 0
throw_speed = 4 throw_speed = 4
throw_range = 7 throw_range = 7
throwforce = 20 throwforce = 25 // Yes, this is high, since you can typically only use it once in a fight.
/obj/item/nullrod/armblade /obj/item/nullrod/armblade
name = "dark blessing" name = "dark blessing"
@@ -335,7 +369,7 @@
/obj/item/nullrod/carp/attack_self(mob/living/user) /obj/item/nullrod/carp/attack_self(mob/living/user)
if(used_blessing) if(used_blessing)
return return
if(user.mind && (user.mind.assigned_role != "Chaplain" && user.mind.special_role != SPECIAL_ROLE_ERT)) if(user.mind && !user.mind.isholy)
return return
to_chat(user, "You are blessed by Carp-Sie. Wild space carp will no longer attack you.") to_chat(user, "You are blessed by Carp-Sie. Wild space carp will no longer attack you.")
user.faction |= "carp" user.faction |= "carp"
@@ -408,7 +442,7 @@
if(!iscarbon(M)) if(!iscarbon(M))
return ..() return ..()
if(!user.mind || (user.mind.assigned_role != "Chaplain" && user.mind.special_role != SPECIAL_ROLE_ERT)) if(!user.mind || !user.mind.isholy)
to_chat(user, "<span class='notice'>You are not close enough with [ticker.Bible_deity_name] to use [src].</span>") to_chat(user, "<span class='notice'>You are not close enough with [ticker.Bible_deity_name] to use [src].</span>")
return return
@@ -420,7 +454,7 @@
praying = 1 praying = 1
if(do_after(user, 150, target = M)) if(do_after(user, 150, target = M))
if(ishuman(M)) // This probably should not work on vulps. They're unholy abominations. if(ishuman(M))
var/mob/living/carbon/human/target = M var/mob/living/carbon/human/target = M
if(target.mind) if(target.mind)
@@ -470,7 +504,7 @@
/obj/item/nullrod/salt/attack_self(mob/user) /obj/item/nullrod/salt/attack_self(mob/user)
if(!user.mind || (user.mind.assigned_role != "Chaplain" && user.mind.special_role != SPECIAL_ROLE_ERT )) if(!user.mind || !user.mind.isholy)
to_chat(user, "<span class='notice'>You are not close enough with [ticker.Bible_deity_name] to use [src].</span>") to_chat(user, "<span class='notice'>You are not close enough with [ticker.Bible_deity_name] to use [src].</span>")
return return
@@ -38,10 +38,6 @@
return return
/obj/item/storage/bible/attack(mob/living/M as mob, mob/living/user as mob) /obj/item/storage/bible/attack(mob/living/M as mob, mob/living/user as mob)
var/chaplain = 0
if(user.mind && (user.mind.assigned_role == "Chaplain"))
chaplain = 1
add_attack_logs(user, M, "Hit with [src]") add_attack_logs(user, M, "Hit with [src]")
if(!iscarbon(user)) if(!iscarbon(user))
M.LAssailant = null M.LAssailant = null
@@ -51,7 +47,7 @@
if(!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") if(!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>") to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
return return
if(!chaplain) if(!user.mind || !user.mind.isholy)
to_chat(user, "<span class='warning'>The book sizzles in your hands.</span>") to_chat(user, "<span class='warning'>The book sizzles in your hands.</span>")
user.take_organ_damage(0,10) user.take_organ_damage(0,10)
return return
@@ -62,14 +58,7 @@
user.Paralyse(20) user.Paralyse(20)
return return
// if(..() == BLOCKED)
// return
if(M.stat !=2) if(M.stat !=2)
/*if((M.mind in ticker.mode.cult) && (prob(20)))
to_chat(M, "<span class='warning'>The power of [src.deity_name] clears your mind of heresy!</span>")
to_chat(user, "<span class='warning'>You see how [M]'s eyes become clear, the cult no longer holds control over [M.p_them()]!</span>")
ticker.mode.remove_cultist(M.mind)*/
if((istype(M, /mob/living/carbon/human) && prob(60))) if((istype(M, /mob/living/carbon/human) && prob(60)))
bless(M) bless(M)
for(var/mob/O in viewers(M, null)) for(var/mob/O in viewers(M, null))
@@ -94,11 +83,11 @@
return return
if(istype(A, /turf/simulated/floor)) if(istype(A, /turf/simulated/floor))
to_chat(user, "<span class='notice'>You hit the floor with the bible.</span>") to_chat(user, "<span class='notice'>You hit the floor with the bible.</span>")
if(user.mind && (user.mind.assigned_role == "Chaplain")) if(user.mind && (user.mind.isholy))
for(var/obj/effect/rune/R in A) for(var/obj/effect/rune/R in A)
if(R.invisibility) if(R.invisibility)
R.talismanreveal() R.talismanreveal()
if(user.mind && (user.mind.assigned_role == "Chaplain")) if(user.mind && (user.mind.isholy))
if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder
to_chat(user, "<span class='notice'>You bless [A].</span>") to_chat(user, "<span class='notice'>You bless [A].</span>")
var/water2holy = A.reagents.get_reagent_amount("water") var/water2holy = A.reagents.get_reagent_amount("water")
@@ -20,9 +20,10 @@
new /obj/item/clothing/head/witchhunter_hat(src) new /obj/item/clothing/head/witchhunter_hat(src)
new /obj/item/clothing/suit/holidaypriest(src) new /obj/item/clothing/suit/holidaypriest(src)
new /obj/item/clothing/under/wedding/bride_white(src) new /obj/item/clothing/under/wedding/bride_white(src)
new /obj/item/storage/backpack/cultpack (src) new /obj/item/storage/backpack/cultpack(src)
new /obj/item/clothing/head/helmet/riot/knight/templar(src) new /obj/item/clothing/head/helmet/riot/knight/templar(src)
new /obj/item/clothing/suit/armor/riot/knight/templar(src) new /obj/item/clothing/suit/armor/riot/knight/templar(src)
new /obj/item/soulstone/anybody/chaplain(src)
new /obj/item/storage/fancy/candle_box/eternal(src) new /obj/item/storage/fancy/candle_box/eternal(src)
new /obj/item/storage/fancy/candle_box/eternal(src) new /obj/item/storage/fancy/candle_box/eternal(src)
new /obj/item/storage/fancy/candle_box/eternal(src) new /obj/item/storage/fancy/candle_box/eternal(src)
+3 -2
View File
@@ -3,7 +3,8 @@
set name = "Pray" set name = "Pray"
msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN)) msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN))
if(!msg) return if(!msg)
return
if(usr.client) if(usr.client)
if(usr.client.prefs.muted & MUTE_PRAY) if(usr.client.prefs.muted & MUTE_PRAY)
@@ -29,7 +30,7 @@
deity = ticker.cultdat.entity_name deity = ticker.cultdat.entity_name
log_say("(PRAYER) [msg]", usr) log_say("(PRAYER) [msg]", usr)
msg = "<span class='notice'>[bicon(cross)]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""]:</font>[key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) ([ADMIN_SC(src,"SC")]) (<A HREF='?_src_=holder;Bless=[UID()]'>BLESS</A>) (<A HREF='?_src_=holder;Smite=[UID()]'>SMITE</A>):</b> [msg]</span>" msg = "<span class='notice'>[bicon(cross)]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""][mind && mind.isholy ? " (blessings: [mind.num_blessed])" : ""]:</font> [key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) ([ADMIN_SC(src,"SC")]) (<A HREF='?_src_=holder;Bless=[UID()]'>BLESS</A>) (<A HREF='?_src_=holder;Smite=[UID()]'>SMITE</A>):</b> [msg]</span>"
for(var/client/X in GLOB.admins) for(var/client/X in GLOB.admins)
if(check_rights(R_EVENT,0,X.mob)) if(check_rights(R_EVENT,0,X.mob))
+1
View File
@@ -279,6 +279,7 @@ var/ert_request_answered = FALSE
paranormal_slots -= 1 paranormal_slots -= 1
M.equipOutfit(paranormal_outfit) M.equipOutfit(paranormal_outfit)
M.job = "ERT Paranormal" M.job = "ERT Paranormal"
M.mind.isholy = TRUE
if("Commander") if("Commander")
command_slots = 0 command_slots = 0
+4 -5
View File
@@ -146,7 +146,7 @@
/obj/item/organ/internal/cyberimp/chest/nutriment, /obj/item/organ/internal/cyberimp/chest/nutriment,
/obj/item/organ/internal/cyberimp/eyes/hud/security /obj/item/organ/internal/cyberimp/eyes/hud/security
) )
backpack_contents = list( backpack_contents = list(
/obj/item/clothing/head/helmet/space/hardsuit/ert/security = 1, /obj/item/clothing/head/helmet/space/hardsuit/ert/security = 1,
/obj/item/clothing/mask/gas/sechailer = 1, /obj/item/clothing/mask/gas/sechailer = 1,
@@ -379,8 +379,7 @@
pda = /obj/item/pda/centcom pda = /obj/item/pda/centcom
backpack_contents = list( backpack_contents = list(
/obj/item/clothing/mask/gas/sechailer/swat = 1, /obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/storage/box/zipties = 1, /obj/item/storage/box/zipties = 1
/obj/item/flashlight/seclite = 1
) )
/datum/outfit/job/centcom/response_team/paranormal/amber /datum/outfit/job/centcom/response_team/paranormal/amber
@@ -395,7 +394,7 @@
suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
head = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor head = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor
suit_store = /obj/item/gun/energy/gun suit_store = /obj/item/gun/energy/gun
r_pocket = /obj/item/nullrod r_pocket = /obj/item/nullrod/ert
glasses = /obj/item/clothing/glasses/sunglasses glasses = /obj/item/clothing/glasses/sunglasses
cybernetic_implants = list( cybernetic_implants = list(
@@ -411,7 +410,7 @@
l_pocket = /obj/item/grenade/clusterbuster/holy l_pocket = /obj/item/grenade/clusterbuster/holy
shoes = /obj/item/clothing/shoes/magboots/advance shoes = /obj/item/clothing/shoes/magboots/advance
glasses = /obj/item/clothing/glasses/night glasses = /obj/item/clothing/glasses/night
r_pocket = /obj/item/nullrod r_pocket = /obj/item/nullrod/ert
cybernetic_implants = list( cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/chest/nutriment/plus, /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+2 -2
View File
@@ -136,8 +136,8 @@ var/static/regex/multispin_words = regex("like a record baby")
var/power_multiplier = base_multiplier var/power_multiplier = base_multiplier
if(owner.mind) if(owner.mind)
//Chaplains are very good at speaking with the voice of god //Holy characters are very good at speaking with the voice of god
if(owner.mind.assigned_role == "Chaplain") if(owner.mind.isholy)
power_multiplier *= 2 power_multiplier *= 2
//Command staff has authority //Command staff has authority
if(owner.mind.assigned_role in command_positions) if(owner.mind.assigned_role in command_positions)
+1
View File
@@ -334,6 +334,7 @@
#include "code\datums\ruins\space.dm" #include "code\datums\ruins\space.dm"
#include "code\datums\spells\area_teleport.dm" #include "code\datums\spells\area_teleport.dm"
#include "code\datums\spells\bloodcrawl.dm" #include "code\datums\spells\bloodcrawl.dm"
#include "code\datums\spells\chaplain.dm"
#include "code\datums\spells\charge.dm" #include "code\datums\spells\charge.dm"
#include "code\datums\spells\cluwne.dm" #include "code\datums\spells\cluwne.dm"
#include "code\datums\spells\conjure.dm" #include "code\datums\spells\conjure.dm"