Gives wizard constructs a purple theme. Minor construct fixes. (#56758)

This commit is contained in:
itseasytosee
2021-02-13 12:43:49 -08:00
committed by GitHub
parent 43200a3167
commit f2b9adbc35
8 changed files with 90 additions and 41 deletions
+4
View File
@@ -27,3 +27,7 @@
//misc
#define SOULS_TO_REVIVE 3
#define BLOODCULT_EYE "f00"
//soulstone & construct themes
#define THEME_WIZARD "wizard"
#define THEME_CULT "cult"
#define THEME_HOLY "holy"
+1 -1
View File
@@ -358,7 +358,7 @@
/obj/item/storage/belt/soulstone/full/PopulateContents()
for(var/i in 1 to 6)
new /obj/item/soulstone(src)
new /obj/item/soulstone/mystic(src)
/obj/item/storage/belt/soulstone/full/chappy/PopulateContents()
for(var/i in 1 to 6)
+2 -2
View File
@@ -229,14 +229,14 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning",
qdel(sword)
else if(istype(A, /obj/item/soulstone) && !iscultist(user))
var/obj/item/soulstone/SS = A
if(SS.purified)
if(SS.theme == THEME_HOLY)
return
to_chat(user, "<span class='notice'>You begin to exorcise [SS].</span>")
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.theme = THEME_HOLY
SS.icon_state = "purified_soulstone"
for(var/mob/M in SS.contents)
if(M.mind)
+4
View File
@@ -473,6 +473,10 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
icon = 'icons/obj/wizard.dmi'
icon_state = "angelplasm"
/obj/item/ectoplasm/mystic
icon_state = "revenantEctoplasm"
/obj/item/mounted_chainsaw
name = "mounted chainsaw"
desc = "A chainsaw that has replaced your arm."
@@ -1,3 +1,4 @@
/obj/item/soulstone
name = "soulstone shard"
icon = 'icons/obj/wizard.dmi'
@@ -13,7 +14,8 @@
var/old_shard = FALSE
var/spent = FALSE
var/purified = FALSE
///this controlls the color of the soulstone as well as restrictions for who can use it. THEME_CULT is red and is the default of cultist THEME_WIZARD is purple and is the default of wizard and THEME_HOLY is for purified soul stone
var/theme = THEME_CULT
/obj/item/soulstone/proc/was_used()
if(old_shard)
@@ -26,13 +28,17 @@
/obj/item/soulstone/anybody
usability = TRUE
/obj/item/soulstone/mystic
icon_state = "mystic_soulstone"
theme = THEME_CULT
/obj/item/soulstone/anybody/revolver
old_shard = TRUE
/obj/item/soulstone/anybody/purified
icon = 'icons/obj/wizard.dmi'
icon_state = "purified_soulstone"
purified = TRUE
theme = THEME_HOLY
/obj/item/soulstone/anybody/chaplain
name = "mysterious old shard"
@@ -83,7 +89,7 @@
if(iscultist(user))
to_chat(user, "<span class='cultlarge'>\"Come now, do not capture your bretheren's soul.\"</span>")
return
if(purified && iscultist(user))
if(theme == THEME_HOLY && iscultist(user))
hot_potato(user)
return
log_combat(user, M, "captured [M.name]'s soul", src)
@@ -98,7 +104,7 @@
user.Unconscious(100)
to_chat(user, "<span class='userdanger'>Your body is wracked with debilitating pain!</span>")
return
if(purified && iscultist(user))
if(theme == THEME_HOLY && iscultist(user))
hot_potato(user)
return
release_shades(user)
@@ -107,12 +113,18 @@
for(var/mob/living/simple_animal/shade/A in src)
A.forceMove(get_turf(user))
A.cancel_camera()
if(purified)
icon_state = "purified_soulstone"
A.icon_state = "shade_angelic"
A.name = "Purified [initial(A.name)]"
else
icon_state = "soulstone"
switch(theme)
if(THEME_HOLY)
icon_state = "purified_soulstone"
A.icon_state = "shade_angelic"
A.name = "Purified [initial(A.name)]"
A.loot = list(/obj/item/ectoplasm/angelic)
if(THEME_WIZARD)
icon_state = "mystic_soulstone"
A.icon_state = "shade_mystic"
A.loot = list(/obj/item/ectoplasm/mystic)
if(THEME_CULT)
icon_state = "soulstone"
name = initial(name)
if(!silent)
if(iswizard(user) || usability)
@@ -127,7 +139,7 @@
if(!occupant || !istype(target_toolbox) || target_toolbox.has_soul)
return ..()
if(purified && iscultist(user))
if(theme == THEME_HOLY && iscultist(user))
hot_potato(user)
return
if(!iscultist(user) && !iswizard(user) && !usability)
@@ -169,11 +181,11 @@
/obj/structure/constructshell/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/soulstone))
var/obj/item/soulstone/SS = O
if(!iscultist(user) && !iswizard(user) && !SS.purified)
if(!iscultist(user) && !iswizard(user) && !SS.theme == THEME_HOLY)
to_chat(user, "<span class='danger'>An overwhelming feeling of dread comes over you as you attempt to place [SS] into the shell. It would be wise to be rid of this quickly.</span>")
user.Dizzy(30)
return
if(SS.purified && iscultist(user))
if(SS.theme == THEME_HOLY && iscultist(user))
SS.hot_potato(user)
return
SS.transfer_soul("CONSTRUCT",src,user)
@@ -231,11 +243,13 @@
to_chat(user, "<span class='userdanger'>Capture failed!</span>: [src] is full! Free an existing soul to make room.")
else
T.AddComponent(/datum/component/soulstoned, src)
if(purified)
if(theme == THEME_HOLY)
icon_state = "purified_soulstone2"
if(iscultist(T))
SSticker.mode.remove_cultist(T.mind, FALSE, FALSE)
else
if(theme == THEME_WIZARD)
icon_state = "mystic_soulstone2"
if(theme == THEME_CULT)
icon_state = "soulstone2"
name = "soulstone: Shade of [T.real_name]"
to_chat(T, "<span class='notice'>Your soul has been captured by [src]. Its arcane energies are reknitting your ethereal form.</span>")
@@ -256,26 +270,35 @@
return
switch(construct_class)
if("Juggernaut")
if(iscultist(user) || iswizard(user))
makeNewConstruct(/mob/living/simple_animal/hostile/construct/juggernaut, A, user, 0, T.loc)
if(iscultist(user))
if(theme == THEME_WIZARD)
makeNewConstruct(/mob/living/simple_animal/hostile/construct/juggernaut/mystic, A, user, 0, T.loc)
else
makeNewConstruct(/mob/living/simple_animal/hostile/construct/juggernaut, A, user, 0, T.loc)
else
if(purified)
if(theme == THEME_HOLY)
makeNewConstruct(/mob/living/simple_animal/hostile/construct/juggernaut/angelic, A, user, 0, T.loc)
else
makeNewConstruct(/mob/living/simple_animal/hostile/construct/juggernaut/noncult, A, user, 0, T.loc)
if("Wraith")
if(iscultist(user) || iswizard(user))
makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith, A, user, 0, T.loc)
if(iscultist(user))
if(theme == THEME_WIZARD)
makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith/mystic, A, user, 0, T.loc)
else
makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith, A, user, 0, T.loc)
else
if(purified)
if((theme == THEME_HOLY))
makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith/angelic, A, user, 0, T.loc)
else
makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith/noncult, A, user, 0, T.loc)
if("Artificer")
if(iscultist(user) || iswizard(user))
makeNewConstruct(/mob/living/simple_animal/hostile/construct/artificer, A, user, 0, T.loc)
if(iscultist(user))
if(theme == THEME_WIZARD)
makeNewConstruct(/mob/living/simple_animal/hostile/construct/artificer/mystic, A, user, 0, T.loc)
else
makeNewConstruct(/mob/living/simple_animal/hostile/construct/artificer, A, user, 0, T.loc)
else
if(purified)
if((theme == THEME_HOLY))
makeNewConstruct(/mob/living/simple_animal/hostile/construct/artificer/angelic, A, user, 0, T.loc)
else
makeNewConstruct(/mob/living/simple_animal/hostile/construct/artificer/noncult, A, user, 0, T.loc)
@@ -301,7 +324,7 @@
return
var/mob/living/simple_animal/hostile/construct/newstruct = new ctype((loc_override) ? (loc_override) : (get_turf(target)))
var/makeicon = newstruct.icon_state
var/holyness = newstruct.holy
var/holyness = newstruct.theme
flick("make_[makeicon][holyness]", newstruct)
playsound(newstruct, 'sound/effects/constructform.ogg', 50)
if(stoner)
@@ -347,10 +370,13 @@
SSticker.mode.add_cultist(S.mind, 0)
S.cancel_camera()
name = "soulstone: Shade of [T.real_name]"
if(purified)
icon_state = "purified_soulstone2"
else
icon_state = "soulstone2"
switch(theme)
if(THEME_HOLY)
icon_state = "purified_soulstone2"
if(THEME_WIZARD)
icon_state = "mystic_soulstone2"
if(THEME_CULT)
icon_state = "soulstone2"
if(user && (iswizard(user) || usability))
to_chat(S, "Your soul has been captured! You are now bound to [user.real_name]'s will. Help [user.p_them()] succeed in [user.p_their()] goals at all costs.")
else if(user && iscultist(user))
@@ -380,3 +406,4 @@
init_shade(T, user , shade_controller = chosen_ghost)
qdel(T)
return TRUE
@@ -1,3 +1,4 @@
/mob/living/simple_animal/hostile/construct
name = "Construct"
real_name = "Construct"
@@ -42,7 +43,8 @@
var/can_repair_constructs = FALSE
var/can_repair_self = FALSE
var/runetype
var/holy = FALSE
/// Theme controls color. THEME_CULT is red THEME_WIZARD is purple and THEME_HOLY is blue
var/theme = THEME_CULT
/mob/living/simple_animal/hostile/construct/Initialize()
. = ..()
@@ -65,7 +67,7 @@
var/pos = 2+spellnum*31
CR.button.screen_loc = "6:[pos],4:-2"
CR.button.moved = "6:[pos],4:-2"
add_overlay("glow_[icon_state][holy]")
add_overlay("glow_[icon_state]_[theme]")
/mob/living/simple_animal/hostile/construct/Login()
. = ..()
@@ -89,7 +91,7 @@
var/mob/living/simple_animal/hostile/construct/C = M
if(!C.can_repair_constructs || (C == src && !C.can_repair_self))
return ..()
if(holy != C.holy)
if(theme != C.theme)
return ..()
if(health < maxHealth)
adjustHealth(-5)
@@ -181,11 +183,15 @@
return ..()
//////////////////////////Angelic-Juggernaut////////////////////////////
//////////////////////////Juggernaut-alts////////////////////////////
/mob/living/simple_animal/hostile/construct/juggernaut/angelic
holy = TRUE
theme = THEME_HOLY
loot = list(/obj/item/ectoplasm/angelic)
/mob/living/simple_animal/hostile/construct/juggernaut/mystic
theme = THEME_WIZARD
loot = list(/obj/item/ectoplasm/mystic)
/mob/living/simple_animal/hostile/construct/juggernaut/noncult
////////////////////////Wraith/////////////////////////////////////////////
@@ -234,12 +240,16 @@
/mob/living/simple_animal/hostile/construct/wraith/hostile //actually hostile, will move around, hit things
AIStatus = AI_ON
//////////////////////////Angelic-Wraith////////////////////////////
//////////////////////////Wraith-alts////////////////////////////
/mob/living/simple_animal/hostile/construct/wraith/angelic
holy = TRUE
theme = THEME_HOLY
construct_spells = list(/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/angelic)
loot = list(/obj/item/ectoplasm/angelic)
/mob/living/simple_animal/hostile/construct/wraith/mystic
theme = THEME_WIZARD
loot = list(/obj/item/ectoplasm/mystic)
/mob/living/simple_animal/hostile/construct/wraith/noncult
/////////////////////////////Artificer/////////////////////////
@@ -324,15 +334,19 @@
AIStatus = AI_ON
environment_smash = ENVIRONMENT_SMASH_STRUCTURES //only token destruction, don't smash the cult wall NO STOP
/////////////////////////////Angelic Artificer/////////////////////////
/////////////////////////////Artificer-alts/////////////////////////
/mob/living/simple_animal/hostile/construct/artificer/angelic
desc = "A bulbous construct dedicated to building and maintaining holy armies."
holy = TRUE
theme = THEME_HOLY
loot = list(/obj/item/ectoplasm/angelic)
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/noncult/purified,
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser,
/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser)
/mob/living/simple_animal/hostile/construct/artificer/mystic
theme = THEME_WIZARD
loot = list(/obj/item/ectoplasm/mystic)
/mob/living/simple_animal/hostile/construct/artificer/noncult
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/wall,
/obj/effect/proc_holder/spell/aoe_turf/conjure/floor,
Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB