mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
Merge pull request #13055 from Anonus/actionbuttons
Gives constructs action buttons, adds cool effects to cult turfs.
This commit is contained in:
@@ -2,13 +2,15 @@
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser
|
||||
charge_max = 1800
|
||||
action_icon_state = "artificer"
|
||||
action_background_icon_state = "bg_demon"
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser/cult
|
||||
cult_req = 1
|
||||
charge_max = 2500
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/floor
|
||||
name = "Floor Construction"
|
||||
name = "Summon Cult Floor"
|
||||
desc = "This spell constructs a cult floor"
|
||||
|
||||
school = "conjuration"
|
||||
@@ -17,11 +19,12 @@
|
||||
invocation = "none"
|
||||
invocation_type = "none"
|
||||
range = 0
|
||||
summon_type = list(/turf/simulated/floor/plasteel/cult)
|
||||
centcom_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
|
||||
summon_type = list(/turf/simulated/floor/engine/cult)
|
||||
action_icon_state = "floorconstruct"
|
||||
action_background_icon_state = "bg_cult"
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/wall
|
||||
name = "Lesser Construction"
|
||||
name = "Summon Cult Wall"
|
||||
desc = "This spell constructs a cult wall"
|
||||
|
||||
school = "conjuration"
|
||||
@@ -30,8 +33,10 @@
|
||||
invocation = "none"
|
||||
invocation_type = "none"
|
||||
range = 0
|
||||
action_icon_state = "lesserconstruct"
|
||||
action_background_icon_state = "bg_cult"
|
||||
|
||||
summon_type = list(/turf/simulated/wall/cult)
|
||||
centcom_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/wall/reinforced
|
||||
name = "Greater Construction"
|
||||
@@ -43,7 +48,6 @@
|
||||
invocation = "none"
|
||||
invocation_type = "none"
|
||||
range = 0
|
||||
centcom_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
|
||||
|
||||
summon_type = list(/turf/simulated/wall/r_wall)
|
||||
|
||||
@@ -57,7 +61,8 @@
|
||||
invocation = "none"
|
||||
invocation_type = "none"
|
||||
range = 0
|
||||
|
||||
action_icon_state = "summonsoulstone"
|
||||
action_background_icon_state = "bg_demon"
|
||||
|
||||
summon_type = list(/obj/item/device/soulstone)
|
||||
|
||||
@@ -76,8 +81,10 @@
|
||||
invocation = "none"
|
||||
invocation_type = "none"
|
||||
range = 0
|
||||
summon_type = list(/obj/effect/forcefield)
|
||||
summon_type = list(/obj/effect/forcefield/cult)
|
||||
summon_lifespan = 200
|
||||
action_icon_state = "cultforcewall"
|
||||
action_background_icon_state = "bg_demon"
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift
|
||||
@@ -93,6 +100,8 @@
|
||||
include_user = 1
|
||||
jaunt_duration = 50 //in deciseconds
|
||||
centcom_cancast = 0 //Stop people from getting to centcom
|
||||
action_icon_state = "phaseshift"
|
||||
action_background_icon_state = "bg_demon"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/jaunt_disappear(atom/movable/overlay/animation, mob/living/target)
|
||||
animation.icon_state = "phase_shift"
|
||||
@@ -118,6 +127,8 @@
|
||||
invocation_type = "none"
|
||||
proj_lifespan = 10
|
||||
max_targets = 6
|
||||
action_icon_state = "magicm"
|
||||
action_background_icon_state = "bg_demon"
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/smoke/disable
|
||||
@@ -135,3 +146,5 @@
|
||||
|
||||
smoke_spread = 3
|
||||
smoke_amt = 4
|
||||
action_icon_state = "parasmoke"
|
||||
action_background_icon_state = "bg_cult"
|
||||
|
||||
@@ -147,7 +147,7 @@ Class Procs:
|
||||
if(use_power && stat == 0)
|
||||
use_power(7500/severity)
|
||||
|
||||
new/obj/effect/overlay/temp/emp(src.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/emp, src.loc)
|
||||
..()
|
||||
|
||||
/obj/machinery/proc/open_machine()
|
||||
|
||||
@@ -11,7 +11,10 @@
|
||||
/obj/effect/forcefield/CanAtmosPass(turf/T)
|
||||
return !density
|
||||
|
||||
|
||||
/obj/effect/forcefield/cult
|
||||
desc = "An unholy shield that blocks all attacks."
|
||||
name = "glowing wall"
|
||||
icon_state = "cultshield"
|
||||
|
||||
///////////Mimewalls///////////
|
||||
|
||||
|
||||
@@ -20,21 +20,40 @@
|
||||
spawn(10) qdel(src)
|
||||
|
||||
/obj/effect/overlay/temp
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "nothing"
|
||||
anchored = 1
|
||||
layer = 4.1
|
||||
mouse_opacity = 0
|
||||
var/duration = 10
|
||||
var/randomdir = 1
|
||||
|
||||
/obj/effect/overlay/temp/Destroy()
|
||||
..()
|
||||
return QDEL_HINT_PUTINPOOL
|
||||
|
||||
/obj/effect/overlay/temp/New()
|
||||
if(randomdir)
|
||||
dir = pick(cardinal)
|
||||
flick("[icon_state]", src) //Because we might be pulling it from a pool, flick whatever icon it uses so it starts at the start of the icon's animation.
|
||||
spawn(duration)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/effect/overlay/temp/cult
|
||||
name = "unholy glow"
|
||||
icon_state = "wallglow"
|
||||
layer = 2.01
|
||||
randomdir = 0
|
||||
duration = 10
|
||||
|
||||
/obj/effect/overlay/temp/cult/floor
|
||||
icon_state = "floorglow"
|
||||
duration = 5
|
||||
|
||||
|
||||
/obj/effect/overlay/temp/revenant
|
||||
name = "spooky lights"
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "purplesparkles"
|
||||
|
||||
/obj/effect/overlay/temp/revenant/cracks
|
||||
@@ -42,15 +61,15 @@
|
||||
icon_state = "purplecrack"
|
||||
duration = 6
|
||||
|
||||
|
||||
/obj/effect/overlay/temp/emp
|
||||
name = "emp sparks"
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "empdisable"
|
||||
|
||||
/obj/effect/overlay/temp/emp/pulse
|
||||
name = "emp pulse"
|
||||
icon_state = "emp pulse"
|
||||
duration = 20
|
||||
duration = 8
|
||||
randomdir = 0
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ")
|
||||
|
||||
if(heavy_range > 1)
|
||||
new/obj/effect/overlay/temp/emp/pulse(epicenter)
|
||||
PoolOrNew(/obj/effect/overlay/temp/emp/pulse, epicenter)
|
||||
|
||||
if(heavy_range > light_range)
|
||||
light_range = heavy_range
|
||||
|
||||
@@ -169,7 +169,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
|
||||
|
||||
/turf/simulated/floor/narsie_act()
|
||||
if(prob(20))
|
||||
ChangeTurf(/turf/simulated/floor/plasteel/cult)
|
||||
ChangeTurf(/turf/simulated/floor/engine/cult)
|
||||
|
||||
/turf/simulated/floor/can_have_cabling()
|
||||
return !burnt & !broken & !lava
|
||||
|
||||
@@ -124,6 +124,10 @@
|
||||
name = "engraved floor"
|
||||
icon_state = "cult"
|
||||
|
||||
/turf/simulated/floor/engine/cult/New()
|
||||
PoolOrNew(/obj/effect/overlay/temp/cult/floor, src)
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/engine/cult/narsie_act()
|
||||
return
|
||||
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
builtin_sheet = null
|
||||
canSmoothWith = null
|
||||
|
||||
/turf/simulated/wall/cult/New()
|
||||
PoolOrNew(/obj/effect/overlay/temp/cult, src)
|
||||
..()
|
||||
|
||||
/turf/simulated/wall/cult/break_wall()
|
||||
new /obj/effect/decal/cleanable/blood(src)
|
||||
return (new /obj/structure/cultgirder(src))
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
/mob/living/simple_animal/construct/New()
|
||||
..()
|
||||
for(var/spell in construct_spells)
|
||||
mob_spell_list += new spell(src)
|
||||
AddSpell(new spell(null))
|
||||
|
||||
/mob/living/simple_animal/construct/death()
|
||||
..(1)
|
||||
@@ -165,10 +165,10 @@
|
||||
speed = 0
|
||||
environment_smash = 2
|
||||
attack_sound = 'sound/weapons/punch2.ogg'
|
||||
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser,
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/wall,
|
||||
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/wall,
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/floor,
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone,
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser,
|
||||
/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser)
|
||||
playstyle_string = "<B>You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \
|
||||
use magic missile, repair allied constructs (by clicking on them), \
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(4, 0, L)
|
||||
s.start()
|
||||
new/obj/effect/overlay/temp/revenant(L.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, L.loc)
|
||||
sleep(20)
|
||||
if(!L.on) //wait, wait, don't shock me
|
||||
return
|
||||
@@ -137,19 +137,19 @@
|
||||
spawn(0)
|
||||
if(T.flags & NOJAUNT)
|
||||
T.flags -= NOJAUNT
|
||||
new/obj/effect/overlay/temp/revenant(T)
|
||||
if(istype(T, /turf/simulated/floor) && !istype(T, /turf/simulated/floor/plating) && prob(15))
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, T)
|
||||
if(!istype(T, /turf/simulated/floor/plating) && !istype(T, /turf/simulated/floor/engine/cult) && istype(T, /turf/simulated/floor) && prob(15))
|
||||
var/turf/simulated/floor/floor = T
|
||||
if(floor.intact)
|
||||
floor.builtin_tile.loc = floor
|
||||
floor.broken = 0
|
||||
floor.burnt = 0
|
||||
floor.make_plating(1)
|
||||
if(!istype(T, /turf/simulated/wall/shuttle) && !istype(T, /turf/simulated/wall/rust) && !istype(T, /turf/simulated/wall/r_wall) && istype(T, /turf/simulated/wall) && prob(15))
|
||||
new/obj/effect/overlay/temp/revenant(T)
|
||||
if(!istype(T, /turf/simulated/wall/shuttle) && !istype(T, /turf/simulated/wall/cult) && !istype(T, /turf/simulated/wall/rust) && !istype(T, /turf/simulated/wall/r_wall) && istype(T, /turf/simulated/wall) && prob(15))
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, T)
|
||||
T.ChangeTurf(/turf/simulated/wall/rust)
|
||||
if(!istype(T, /turf/simulated/wall/r_wall/rust) && istype(T, /turf/simulated/wall/r_wall) && prob(15))
|
||||
new/obj/effect/overlay/temp/revenant(T)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, T)
|
||||
T.ChangeTurf(/turf/simulated/wall/r_wall/rust)
|
||||
for(var/obj/structure/closet/closet in T.contents)
|
||||
closet.open()
|
||||
@@ -161,7 +161,7 @@
|
||||
for(var/obj/structure/window/window in T.contents)
|
||||
window.hit(rand(50,90))
|
||||
if(window && window.fulltile)
|
||||
new/obj/effect/overlay/temp/revenant/cracks(window.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant/cracks, window.loc)
|
||||
for(var/obj/machinery/light/light in T.contents)
|
||||
light.flicker(20) //spooky
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
spawn(0)
|
||||
for(var/obj/machinery/bot/bot in T.contents)
|
||||
if(!bot.emagged)
|
||||
new/obj/effect/overlay/temp/revenant(bot.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, bot.loc)
|
||||
bot.locked = 0
|
||||
bot.open = 1
|
||||
bot.Emag(null)
|
||||
@@ -190,21 +190,21 @@
|
||||
if(human == user)
|
||||
continue
|
||||
human << "<span class='revenwarning'>You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with static")].</span>"
|
||||
new/obj/effect/overlay/temp/revenant(human.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, human.loc)
|
||||
human.emp_act(1)
|
||||
for(var/obj/thing in T.contents)
|
||||
if(istype(thing, /obj/machinery/dominator) || istype(thing, /obj/machinery/power/apc) || istype(thing, /obj/machinery/power/smes) || istype(thing, /obj/machinery/bot)) //Doesn't work on dominators, SMES and APCs, to prevent kekkery
|
||||
continue
|
||||
if(prob(20))
|
||||
if(prob(50))
|
||||
new/obj/effect/overlay/temp/revenant(thing.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, thing.loc)
|
||||
thing.emag_act(null)
|
||||
else
|
||||
if(!istype(thing, /obj/machinery/clonepod)) //I hate everything but mostly the fact there's no better way to do this without just not affecting it at all
|
||||
thing.emp_act(1)
|
||||
for(var/mob/living/silicon/robot/S in T.contents) //Only works on cyborgs, not AI
|
||||
playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1)
|
||||
new/obj/effect/overlay/temp/revenant(S.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, S.loc)
|
||||
S.spark_system.start()
|
||||
S.emp_act(1)
|
||||
|
||||
@@ -225,7 +225,7 @@
|
||||
for(var/mob/living/mob in T.contents)
|
||||
if(mob == user)
|
||||
continue
|
||||
new/obj/effect/overlay/temp/revenant(mob.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, mob.loc)
|
||||
if(iscarbon(mob))
|
||||
if(ishuman(mob))
|
||||
var/mob/living/carbon/human/H = mob
|
||||
@@ -253,18 +253,18 @@
|
||||
mob.adjustToxLoss(5)
|
||||
for(var/obj/effect/spacevine/vine in T.contents) //Fucking with botanists, the ability.
|
||||
vine.color = "#823abb"
|
||||
new/obj/effect/overlay/temp/revenant(vine.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, vine.loc)
|
||||
spawn(20)
|
||||
if(vine)
|
||||
qdel(vine)
|
||||
for(var/obj/effect/glowshroom/shroom in T.contents)
|
||||
shroom.color = "#823abb"
|
||||
new/obj/effect/overlay/temp/revenant(shroom.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, shroom.loc)
|
||||
spawn(20)
|
||||
if(shroom)
|
||||
qdel(shroom)
|
||||
for(var/obj/machinery/hydroponics/tray in T.contents)
|
||||
new/obj/effect/overlay/temp/revenant(tray.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, tray.loc)
|
||||
tray.pestlevel = rand(8, 10)
|
||||
tray.weedlevel = rand(8, 10)
|
||||
tray.toxic = rand(45, 55)
|
||||
@@ -23,11 +23,11 @@
|
||||
affected_mob << "<span class='revennotice'>You suddenly feel [pick("sick and tired", "disoriented", "tired and confused", "nauseated", "faint", "dizzy")]...</span>"
|
||||
affected_mob.confused += 10
|
||||
affected_mob.adjustStaminaLoss(10)
|
||||
new/obj/effect/overlay/temp/revenant(affected_mob.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, affected_mob.loc)
|
||||
if(stagedamage < stage)
|
||||
stagedamage++
|
||||
affected_mob.adjustToxLoss(stage*3) //should, normally, do about 45 toxin damage.
|
||||
new/obj/effect/overlay/temp/revenant(affected_mob.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, affected_mob.loc)
|
||||
..() //So we don't increase a stage before applying the stage damage.
|
||||
switch(stage)
|
||||
if(2)
|
||||
@@ -44,7 +44,7 @@
|
||||
if(5)
|
||||
affected_mob << "<span class='revenbignotice'>You feel like [pick("nothing's worth it anymore", "nobody ever needed your help", "nothing you did mattered", "everything you tried to do was worthless")].</span>"
|
||||
affected_mob.adjustStaminaLoss(45)
|
||||
new/obj/effect/overlay/temp/revenant(affected_mob.loc)
|
||||
PoolOrNew(/obj/effect/overlay/temp/revenant, affected_mob.loc)
|
||||
if(affected_mob.dna && affected_mob.dna.species)
|
||||
affected_mob.dna.species.handle_mutant_bodyparts(affected_mob,"#1d2953")
|
||||
affected_mob.dna.species.handle_hair(affected_mob,"#1d2953")
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
/obj/singularity/narsie/large/New()
|
||||
..()
|
||||
world << "<font size='15' color='red'><b>NAR-SIE HAS RISEN</b></font>"
|
||||
world << "<span class='narsie'>NAR-SIE HAS RISEN</span>"
|
||||
world << pick('sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg')
|
||||
|
||||
var/area/A = get_area(src)
|
||||
@@ -75,7 +75,7 @@
|
||||
for(var/mob/living/carbon/M in oviewers(8, src))
|
||||
if(M.stat == CONSCIOUS)
|
||||
if(!iscultist(M))
|
||||
M << "<span class='warning'>You feel conscious thought crumble away in an instant as you gaze upon [src.name]...</span>"
|
||||
M << "<span class='cultsmall'>You feel conscious thought crumble away in an instant as you gaze upon [src.name]...</span>"
|
||||
M.apply_effect(3, STUN)
|
||||
|
||||
|
||||
@@ -122,12 +122,14 @@
|
||||
|
||||
|
||||
/obj/singularity/narsie/proc/acquire(mob/food)
|
||||
target << "<span class='notice'>NAR-SIE HAS LOST INTEREST IN YOU</span>"
|
||||
if(food == target)
|
||||
return
|
||||
target << "<span class='cultsmall'>NAR-SIE HAS LOST INTEREST IN YOU.</span>"
|
||||
target = food
|
||||
if(ishuman(target))
|
||||
target << "<span class ='userdanger'>NAR-SIE HUNGERS FOR YOUR SOUL</span>"
|
||||
if(isliving(target))
|
||||
target << "<span class ='cult'>NAR-SIE HUNGERS FOR YOUR SOUL.</span>"
|
||||
else
|
||||
target << "<span class ='userdanger'>NAR-SIE HAS CHOSEN YOU TO LEAD HIM TO HIS NEXT MEAL</span>"
|
||||
target << "<span class ='cult'>NAR-SIE HAS CHOSEN YOU TO LEAD HER TO HER NEXT MEAL.</span>"
|
||||
|
||||
//Wizard narsie
|
||||
/obj/singularity/narsie/wizard
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 301 KiB After Width: | Height: | Size: 303 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 68 KiB |
@@ -65,7 +65,9 @@ h1.alert, h2.alert {color: #000000;}
|
||||
.suicide {color: #ff5050; font-style: italic;}
|
||||
.green {color: #03ff39;}
|
||||
.shadowling {color: #3b2769;}
|
||||
.cultsmall {color: #960000;}
|
||||
.cult {color: #960000; font-weight: bold; font-size: 3;}
|
||||
.narsie {color: #960000; font-weight: bold; font-size: 15;}
|
||||
.purple {color: #5e2d79;}
|
||||
|
||||
.revennotice {color: #1d2953;}
|
||||
|
||||
Reference in New Issue
Block a user