Merge pull request #13055 from Anonus/actionbuttons

Gives constructs action buttons, adds cool effects to cult turfs.
This commit is contained in:
Remie Richards
2015-11-18 20:26:47 +00:00
15 changed files with 89 additions and 42 deletions
+21 -8
View File
@@ -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"
+1 -1
View File
@@ -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()
+4 -1
View File
@@ -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///////////
+22 -3
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+4
View File
@@ -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")
+8 -6
View File
@@ -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

+2
View File
@@ -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;}