mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 05:00:55 +01:00
Gives wizard constructs a purple theme. Minor construct fixes. (#56758)
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user