A lot more Cult fixes (#15161)

* Some fixes

1: ERT members can no longer be given as an assassinate/sacrifice antag objective.
2. Cultists attempting to teleport to a deleted rune will no longer be teleported into nullspace.
3. Re-ordered the cult Blood Rites spell code because it was bugging me. (sorry qwerty)

* Cult stuff

1: Cultists can no longer be chosen as a sacrifice target
2: Rune drawing is limited to one at a time (No spamming on one tile)
3: Removed some unneccesary `/improper`s from area names, for the cult Summoning locations
4: Changed a couple of colours to use defines

* QDELETED()

* Eye colour fix

* Reorganisation, Objectives, and Gender

The majority of the changes here are just reordering the procs, but there's a few fixes too:

1. Roundstart cultists now get given the 'servecult' objective.
2. Deconverting someone now removes their 'servecult' objective, so they won't be notified about target changes.
3. Stopped summoned ghosts from experiencing a spontaneous gender change.

* Screwdriver fix

* Prayer bead stripping

* Some more construct fixes

1: Fixed *all* holy constructs getting the 'Summon soulstone' ability
2: Fixed Wraiths getting their blue light reset to red after jaunting
3: Added a 'holy' variable to constructs, and made the holyification its own proc.

* qdeleted

* Construct Converting

Apparently you can convert holy constructs. Who knew!

* Another two weeks

Moved all the construct icon states to their own file, and fixed Nar'Sie constructs not getting a glowing effect.

* Grab fix

Fixed upgrading a grab having the ability to potentially transport the victim across dimensions.

* Not actually a cult fix but eh

Fixes: Runtime in outfit.dm, 114: bad number
And updates the cult corpse from legion spawns

* Teleport spell effect

Fixed the teleport effect for the spell being attached to the wrong mob.

* Small cleanup

* Eye colour cloning fix

* Veil Shifter

Fixed:
Runtime in cult_items.dm,355: pick() from empty list
Veil shifters not retaining any grabs after teleporting.

* Adjacent
This commit is contained in:
SabreML
2021-05-16 11:33:07 +01:00
committed by GitHub
parent 2c63bd9581
commit 3d6e072464
22 changed files with 251 additions and 204 deletions
@@ -202,7 +202,7 @@
H.ha_style = "None"
update_head_accessory()
/mob/living/carbon/human/proc/change_eye_color(colour = "#000000", update_dna = 1)
/mob/living/carbon/human/proc/change_eye_color(colour = "#000000", update_dna = TRUE)
// Update the main DNA datum, then sync the change across the organs
var/obj/item/organ/internal/eyes/eyes_organ = get_int_organ(/obj/item/organ/internal/eyes)
if(eyes_organ)
@@ -215,10 +215,16 @@
if(update_dna)
update_dna()
sync_organ_dna(assimilate=0)
sync_organ_dna(assimilate = FALSE)
update_eyes()
update_body()
return 1
return TRUE
/mob/living/carbon/human/proc/get_eye_color()
var/obj/item/organ/internal/eyes/E = get_int_organ(/obj/item/organ/internal/eyes)
if(E)
return E.eye_color
return FALSE
/mob/living/carbon/human/proc/change_hair_color(colour = "#000000", secondary)
var/obj/item/organ/external/head/H = get_organ("head")
+1 -1
View File
@@ -973,7 +973,7 @@
M.LAssailant = usr
/mob/living/proc/check_pull()
if(pulling && !(pulling in orange(1)))
if(pulling && !pulling.Adjacent(src))
stop_pulling()
/mob/living/proc/update_z(new_z) // 1+ to register, null to unregister
@@ -4,9 +4,10 @@
mob_biotypes = NONE
speak_emote = list("hisses")
emote_hear = list("wails","screeches")
response_help = "thinks better of touching"
response_help = "thinks better of touching"
response_disarm = "flails at"
response_harm = "punches"
response_harm = "punches"
icon = 'icons/mob/cult.dmi'
icon_dead = "shade_dead"
speed = 0
a_intent = INTENT_HARM
@@ -26,6 +27,9 @@
deathmessage = "collapses in a shattered heap."
var/construct_type = "shade"
var/list/construct_spells = list()
/// Is this a holy/purified construct?
var/holy = FALSE
/// Message to send to the construct when they are created, containing information about their role.
var/playstyle_string = "<b>You are a generic construct! Your job is to not exist, and you should probably adminhelp this.</b>"
/mob/living/simple_animal/hostile/construct/New()
@@ -98,7 +102,6 @@
name = "Juggernaut"
real_name = "Juggernaut"
desc = "A possessed suit of armour driven by the will of the restless dead"
icon = 'icons/mob/mob.dmi'
icon_state = "behemoth"
icon_living = "behemoth"
maxHealth = 250
@@ -149,7 +152,6 @@
name = "Wraith"
real_name = "Wraith"
desc = "A wicked bladed shell contraption piloted by a bound spirit"
icon = 'icons/mob/mob.dmi'
icon_state = "floating"
icon_living = "floating"
maxHealth = 75
@@ -174,7 +176,6 @@
name = "Artificer"
real_name = "Artificer"
desc = "A bulbous construct dedicated to building and maintaining Cult armies."
icon = 'icons/mob/mob.dmi'
icon_state = "artificer"
icon_living = "artificer"
maxHealth = 50
@@ -254,7 +255,6 @@
name = "Behemoth"
real_name = "Behemoth"
desc = "The pinnacle of occult technology, Behemoths are the ultimate weapon in the Cult's arsenal."
icon = 'icons/mob/mob.dmi'
icon_state = "behemoth"
icon_living = "behemoth"
maxHealth = 750
@@ -288,7 +288,6 @@
name = "Harvester"
real_name = "Harvester"
desc = "A harbinger of enlightenment. It'll be all over soon."
icon = 'icons/mob/mob.dmi'
icon_state = "harvester"
icon_living = "harvester"
maxHealth = 60
@@ -316,6 +315,17 @@
AIStatus = AI_ON
environment_smash = 1 //only token destruction, don't smash the cult wall NO STOP
/mob/living/simple_animal/hostile/construct/proc/make_holy()
if(holy) // Already holy-fied
return
holy = TRUE
set_light(3, 5, LIGHT_COLOR_DARK_BLUE)
name = "Holy [name]"
real_name = "Holy [real_name]"
faction.Remove("cult")
///ui stuff
/mob/living/simple_animal/hostile/construct/armoured/update_health_hud()
@@ -419,11 +419,13 @@
back = /obj/item/tank/internals/oxygen
mask = /obj/item/clothing/mask/breath
if("Cultist")
uniform = /obj/item/clothing/under/roman
suit = /obj/item/clothing/suit/hooded/cultrobes
suit_store = /obj/item/tome
r_pocket = /obj/item/restraints/legcuffs/bola/cult
uniform = /obj/item/clothing/under/color/black
back = /obj/item/storage/backpack/cultpack
suit = /obj/item/clothing/suit/hooded/cultrobes/alt
if(prob(40))
suit_store = /obj/item/melee/cultblade
l_pocket = /obj/item/melee/cultblade/dagger
glasses = /obj/item/clothing/glasses/hud/health/night
backpack_contents = list(/obj/item/reagent_containers/food/drinks/bottle/unholywater = 1, /obj/item/cult_shift = 1, /obj/item/flashlight/flare = 1, /obj/item/stack/sheet/runed_metal = 15)
if(prob(60))
r_pocket = /obj/item/reagent_containers/food/drinks/bottle/unholywater
backpack_contents = list(/obj/item/tome = 1, /obj/item/restraints/legcuffs/bola/cult = 1, /obj/item/stack/sheet/runed_metal = 15)
. = ..()
@@ -2,7 +2,7 @@
name = "Shade"
real_name = "Shade"
desc = "A bound spirit"
icon = 'icons/mob/mob.dmi'
icon = 'icons/mob/cult.dmi'
icon_state = "shade"
icon_living = "shade"
icon_dead = "shade_dead"
@@ -34,6 +34,10 @@
deathmessage = "lets out a contented sigh as their form unwinds."
var/holy = FALSE
/mob/living/simple_animal/shade/cult/Initialize(mapload)
. = ..()
icon_state = SSticker.cultdat?.shade_icon_state
/mob/living/simple_animal/shade/death(gibbed)
. = ..()
SSticker.mode.remove_cultist(mind, FALSE)
@@ -48,11 +52,6 @@
/mob/living/simple_animal/shade/Process_Spacemove()
return TRUE
/mob/living/simple_animal/shade/cult/Initialize(mapload)
. = ..()
icon_state = SSticker.cultdat?.shade_icon_state
/mob/living/simple_animal/shade/holy
holy = TRUE
icon_state = "shade_angelic"
+2
View File
@@ -193,6 +193,8 @@
/obj/item/grab/proc/adjust_position()
if(affecting.buckled)
return
if(!assailant.Adjacent(affecting)) // To prevent teleportation via grab
return
if(affecting.lying && state != GRAB_KILL)
animate(affecting, pixel_x = 0, pixel_y = 0, 5, 1, LINEAR_EASING)
return //KJK
@@ -265,16 +265,11 @@
M.SetConfused(0)
return
if(iscultist(M))
SSticker.mode.remove_cultist(M.mind)
SSticker.mode.remove_cultist(M.mind, TRUE, TRUE)
holder.remove_reagent(id, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better??
M.SetJitter(0)
M.SetStuttering(0)
M.SetConfused(0)
if(ishuman(M)) // Unequip all cult clothing
var/mob/living/carbon/human/H = M
for(var/I in H.contents)
if(is_type_in_list(I, CULT_CLOTHING))
H.unEquip(I)
return
if(ishuman(M) && M.mind && M.mind.vampire && !M.mind.vampire.get_ability(/datum/vampire_passive/full) && prob(80))
var/mob/living/carbon/V = M