Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Manifest Spirit is better for summoning cannon fodder but slightly worse for instantly summoning Nar-Sie #27104

Merged
merged 3 commits into from
May 12, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions code/__DEFINES/status_effects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,5 @@
#define MANIA_DAMAGE_TO_CONVERT 90 //how much damage is required before it'll convert affected targets

#define STATUS_EFFECT_HISWRATH /datum/status_effect/his_wrath //His Wrath.

#define STATUS_EFFECT_SUMMONEDGHOST /datum/status_effect/cultghost //is a cult ghost and can't use manifest runes
5 changes: 5 additions & 0 deletions code/datums/status_effects/debuffs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -162,3 +162,8 @@
owner.confused = min(owner.confused + round(severity * 0.025, 1), 25) //2.5% of severity per second above 20 severity
owner.adjustToxLoss(severity * 0.02, TRUE, TRUE) //2% of severity per second
severity--

/datum/status_effect/cultghost //is a cult ghost and can't use manifest runes
id = "cult_ghost"
duration = -1
alert_type = null
11 changes: 11 additions & 0 deletions code/game/gamemodes/cult/cult_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@
return
..()

/obj/item/weapon/melee/cultblade/ghost
name = "eldritch sword"
force = 20
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ghosts summoned by Manifest Spirit are outfitted with ghostly armor and a ghostly cult blade that does slightly less damage than a normal cult blade.

20, from 30. "Slightly".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

five hits, from four, on unarmored targets.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also seriously they're getting free armor and a sword, that's great.

flags = NODROP|DROPDEL

/obj/item/weapon/melee/cultblade/pickup(mob/living/user)
..()
if(!iscultist(user))
Expand Down Expand Up @@ -100,12 +105,18 @@
icon_state = "cult_hoodalt"
item_state = "cult_hoodalt"

/obj/item/clothing/head/culthood/alt/ghost
flags = NODROP|DROPDEL

/obj/item/clothing/suit/cultrobes/alt
name = "cultist robes"
desc = "An armored set of robes worn by the followers of Nar-Sie."
icon_state = "cultrobesalt"
item_state = "cultrobesalt"

/obj/item/clothing/suit/cultrobes/alt/ghost
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should set some cool user_vars_to_edit on this (eg: colouring the mob slightly red, slightly see through, etc.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given how the rune works and that these robes shouldn't be normally obtainable, I can just do that effect to the summoned mob itself.

flags = NODROP|DROPDEL


/obj/item/clothing/head/magus
name = "magus helm"
Expand Down
30 changes: 23 additions & 7 deletions code/game/gamemodes/cult/runes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -890,9 +890,11 @@ structure_check() searches for nearby cultist structures required for the invoca
icon_state = "6"
construct_invoke = 0
color = "#C80000"
var/ghost_limit = 5
var/ghosts = 0

/obj/effect/rune/manifest/New(loc)
..()
/obj/effect/rune/manifest/Initialize()
. = ..()
notify_ghosts("Manifest rune created in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src)

/obj/effect/rune/manifest/can_invoke(mob/living/user)
Expand All @@ -901,6 +903,16 @@ structure_check() searches for nearby cultist structures required for the invoca
fail_invoke()
log_game("Manifest rune failed - user not standing on rune")
return list()
if(user.has_status_effect(STATUS_EFFECT_SUMMONEDGHOST))
to_chat(user, "<span class='cultitalic'>Ghosts can't summon more ghosts!</span>")
fail_invoke()
log_game("Manifest rune failed - user is a ghost")
return list()
if(ghosts >= ghost_limit)
to_chat(user, "<span class='cultitalic'>You are sustaining too many ghosts to summon more!</span>")
fail_invoke()
log_game("Manifest rune failed - too many summoned ghosts")
return list()
var/list/ghosts_on_rune = list()
for(var/mob/dead/observer/O in get_turf(src))
if(O.client && !jobban_isbanned(O, ROLE_CULTIST))
Expand All @@ -922,8 +934,11 @@ structure_check() searches for nearby cultist structures required for the invoca
var/mob/living/carbon/human/new_human = new(get_turf(src))
new_human.real_name = ghost_to_spawn.real_name
new_human.alpha = 150 //Makes them translucent
new_human.equipOutfit(/datum/outfit/ghost_cultist) //give them armor
new_human.apply_status_effect(STATUS_EFFECT_SUMMONEDGHOST) //ghosts can't summon more ghosts
..()
visible_message("<span class='warning'>A cloud of red mist forms above [src], and from within steps... a man.</span>")
ghosts++
visible_message("<span class='warning'>A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man.</span>")
to_chat(user, "<span class='cultitalic'>Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...</span>")
var/turf/T = get_turf(src)
var/obj/structure/emergency_shield/invoker/N = new(T)
Expand All @@ -932,16 +947,17 @@ structure_check() searches for nearby cultist structures required for the invoca
SSticker.mode.add_cultist(new_human.mind, 0)
to_chat(new_human, "<span class='cultitalic'><b>You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs.</b></span>")

while(user in T)
if(user.stat)
while(!QDELETED(src) && !QDELETED(user) && !QDELETED(new_human) && (user in T))
if(user.stat || new_human.InCritical())
break
user.apply_damage(0.1, BRUTE)
sleep(3)
sleep(1)

qdel(N)
ghosts--
if(new_human)
new_human.visible_message("<span class='warning'>[new_human] suddenly dissolves into bones and ashes.</span>", \
"<span class='cultlarge'>Your link to the world fades. Your form breaks apart.</span>")
for(var/obj/I in new_human)
new_human.dropItemToGround(I)
new_human.dropItemToGround(I, TRUE)
new_human.dust()
9 changes: 9 additions & 0 deletions code/modules/clothing/outfits/standard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,15 @@
R.set_frequency(GLOB.CENTCOM_FREQ)
R.freqlock = 1

/datum/outfit/ghost_cultist
name = "Cultist Ghost"

uniform = /obj/item/clothing/under/color/black/ghost
suit = /obj/item/clothing/suit/cultrobes/alt/ghost
shoes = /obj/item/clothing/shoes/cult/alt/ghost
head = /obj/item/clothing/head/culthood/alt/ghost
r_hand = /obj/item/weapon/melee/cultblade/ghost

/datum/outfit/wizard
name = "Blue Wizard"

Expand Down
3 changes: 3 additions & 0 deletions code/modules/clothing/shoes/miscellaneous.dm
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,9 @@
name = "cultist boots"
icon_state = "cultalt"

/obj/item/clothing/shoes/cult/alt/ghost
flags = NODROP|DROPDEL

/obj/item/clothing/shoes/cyborg
name = "cyborg boots"
desc = "Shoes for a cyborg costume."
Expand Down
3 changes: 3 additions & 0 deletions code/modules/clothing/under/color.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
item_color = "black"
resistance_flags = 0

/obj/item/clothing/under/color/black/ghost
flags = NODROP|DROPDEL

/obj/item/clothing/under/color/grey
name = "grey jumpsuit"
desc = "A tasteful grey jumpsuit that reminds you of the good old days."
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/living.dm
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@
return 1

/mob/living/proc/InCritical()
return (src.health < 0 && src.health > -95 && stat == UNCONSCIOUS)
return (health < 0 && health > -100 && stat == UNCONSCIOUS)

//This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually
//affects them once clothing is factored in. ~Errorage
Expand Down