diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_fountain_hall.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_fountain_hall.dmm
index b367a068f15..918b0e894b7 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_fountain_hall.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_fountain_hall.dmm
@@ -8,19 +8,19 @@
},
/area/ruin/unpowered)
"c" = (
-/obj/structure/divine/healingfountain/anyone,
+/obj/structure/healingfountain,
/turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth
},
/area/ruin/unpowered)
"d" = (
-/obj/structure/divine/conduit,
+/obj/structure/fluff/divine/conduit,
/turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth
},
/area/ruin/unpowered)
"e" = (
-/obj/structure/divine/sacrificealtar,
+/obj/structure/sacrificealtar,
/turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth
},
diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm
index 4577417fc7b..260a66f8642 100644
--- a/_maps/RandomZLevels/Academy.dmm
+++ b/_maps/RandomZLevels/Academy.dmm
@@ -852,7 +852,7 @@
/turf/closed/wall,
/area/awaymission/academy/headmaster)
"cI" = (
-/obj/structure/divine/trap/damage,
+/obj/structure/trap/damage,
/turf/open/floor/carpet,
/area/awaymission/academy/headmaster)
"cJ" = (
@@ -3881,11 +3881,11 @@
d2 = 4;
icon_state = "2-4"
},
-/obj/structure/divine/trap/chill,
+/obj/structure/trap/chill,
/turf/open/floor/plating,
/area/awaymission/academy/academyaft)
"kN" = (
-/obj/structure/divine/trap/fire,
+/obj/structure/trap/fire,
/turf/open/floor/engine,
/area/awaymission/academy/academyaft)
"kO" = (
@@ -3946,7 +3946,7 @@
/turf/open/floor/engine/cult,
/area/awaymission/academy/academycellar)
"la" = (
-/obj/structure/divine/trap/damage,
+/obj/structure/trap/damage,
/turf/open/floor/engine/cult,
/area/awaymission/academy/academycellar)
"lb" = (
diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm
index 839dee842a4..dea105695ea 100644
--- a/_maps/RandomZLevels/caves.dmm
+++ b/_maps/RandomZLevels/caves.dmm
@@ -167,7 +167,7 @@
name = "\improper BMP Asteroid Level 4"
})
"av" = (
-/obj/structure/divine/trap/stun{
+/obj/structure/trap/stun{
desc = "A rune inscribed in the floor, the air feeling electrified around it.";
name = "shock rune"
},
@@ -474,7 +474,7 @@
name = "\improper BMP Asteroid Level 3"
})
"aY" = (
-/obj/structure/divine/trap/fire{
+/obj/structure/trap/fire{
desc = "An old rune inscribed on the floor, giving off an intense amount of heat.";
name = "flame rune"
},
@@ -485,7 +485,7 @@
name = "\improper BMP Asteroid Level 4"
})
"aZ" = (
-/obj/structure/divine/trap/fire{
+/obj/structure/trap/fire{
desc = "An old rune inscribed on the floor, giving off an intense amount of heat.";
name = "flame rune"
},
@@ -672,7 +672,7 @@
name = "\improper BMP Asteroid Level 4"
})
"bs" = (
-/obj/structure/divine/trap/stun{
+/obj/structure/trap/stun{
desc = "A rune inscribed in the floor, the air feeling electrified around it.";
name = "shock rune"
},
diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm
index d66f49ddb40..3f56227c366 100644
--- a/_maps/RandomZLevels/research.dmm
+++ b/_maps/RandomZLevels/research.dmm
@@ -4907,7 +4907,7 @@
/turf/open/floor/mineral/plasma,
/area/space)
"nd" = (
-/obj/structure/divine/healingfountain/anyone,
+/obj/structure/healingfountain,
/turf/open/floor/mineral/plasma,
/area/space)
"ne" = (
diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm
index b9586bc48b5..723bcc61f73 100644
--- a/_maps/map_files/generic/z2.dmm
+++ b/_maps/map_files/generic/z2.dmm
@@ -5307,7 +5307,7 @@
/turf/open/floor/plating,
/area/ctf)
"qD" = (
-/obj/structure/divine/trap/ctf/blue,
+/obj/structure/trap/ctf/blue,
/turf/open/floor/plasteel/blue,
/area/ctf)
"qE" = (
@@ -5335,7 +5335,7 @@
/turf/open/floor/plasteel/darkred,
/area/ctf)
"qI" = (
-/obj/structure/divine/trap/ctf/red,
+/obj/structure/trap/ctf/red,
/turf/open/floor/plasteel/darkred,
/area/ctf)
"qJ" = (
@@ -5379,7 +5379,7 @@
/turf/open/floor/plasteel/circuit/gcircuit/off,
/area/ctf)
"qQ" = (
-/obj/structure/divine/trap/ctf/red,
+/obj/structure/trap/ctf/red,
/turf/open/floor/plasteel/red,
/area/ctf)
"qR" = (
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index 2e765ab4e05..579e58e771a 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -232,7 +232,7 @@
..()
return
-/obj/item/stack/AltClick(mob/user)
+/obj/item/stack/AltClick(mob/living/user)
if(user.incapacitated())
user << "You can't do that right now!"
return
diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm
index f843044933d..51415356960 100644
--- a/code/game/objects/structures/divine.dm
+++ b/code/game/objects/structures/divine.dm
@@ -1,104 +1,13 @@
-/obj/structure/divine
- name = "divine construction site"
- icon = 'icons/obj/hand_of_god_structures.dmi'
- desc = "An unfinished divine building"
- anchored = 1
- density = 1
- var/trap = FALSE
- var/side = "neutral" //only used to decide icon states
- var/health = 100
- var/maxhealth = 100
- var/deactivated = 0 //Structures being hidden can't be used. Mainly to prevent invisible defense pylons.
-
-/obj/structure/divine/proc/deactivate()
- deactivated = 1
-
-/obj/structure/divine/proc/activate()
- deactivated = 0
-
-/obj/structure/divine/proc/update_icons()
- icon_state = "[initial(icon_state)]-[side]"
-
-/obj/structure/divine/attacked_by(obj/item/I, mob/living/user)
- ..()
- take_damage(I.force, I.damtype, 1)
-
-/obj/structure/divine/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1)
- switch(damage_type)
- if(BRUTE)
- if(sound_effect)
- if(damage)
- playsound(loc, 'sound/weapons/smash.ogg', 50, 1)
- else
- playsound(loc, 'sound/weapons/tap.ogg', 50, 1)
- if(BURN)
- if(sound_effect)
- playsound(src.loc, 'sound/items/Welder.ogg', 100, 1)
- else
- return
- health -= damage
- if(!health)
- visible_message("\The [src] was destroyed!")
- qdel(src)
-
-
-/obj/structure/divine/bullet_act(obj/item/projectile/P)
- . = ..()
- take_damage(P.damage, P.damage_type, 0)
-
-
-/obj/structure/divine/attack_alien(mob/living/carbon/alien/humanoid/user)
- user.changeNext_move(CLICK_CD_MELEE)
- user.do_attack_animation(src)
- add_hiddenprint(user)
- visible_message("\The [user] slashes at [src]!")
- playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1)
- take_damage(20, BRUTE, 0)
-
-/obj/machinery/attack_animal(mob/living/simple_animal/M)
- M.changeNext_move(CLICK_CD_MELEE)
- M.do_attack_animation(src)
- if(M.melee_damage_upper > 0 || M.obj_damage)
- M.visible_message("[M.name] smashes against \the [src.name].",\
- "You smash against the [src.name].")
- if(M.obj_damage)
- take_damage(M.obj_damage, M.melee_damage_type, 1)
- else
- take_damage(rand(M.melee_damage_lower,M.melee_damage_upper), M.melee_damage_type, 1)
-
-/obj/structure/divine/nexus
- name = "nexus"
- desc = "It anchors a deity to this world. It radiates an unusual aura. It looks well protected from explosive shock."
- icon_state = "nexus"
- health = 500
- maxhealth = 500
- var/list/powerpylons = list()
-
-/obj/structure/divine/nexus/ex_act()
- return
-
-/obj/structure/divine/conduit
- name = "conduit"
- desc = "It allows a deity to extend their reach. Their powers are just as potent near a conduit as a nexus."
- icon_state = "conduit"
- health = 150
- maxhealth = 150
-
-/obj/structure/divine/convertaltar
- name = "conversion altar"
- desc = "An altar dedicated to a deity."
- icon_state = "convertaltar"
- density = 0
- can_buckle = 1
-
-/obj/structure/divine/sacrificealtar
+/obj/structure/sacrificealtar
name = "sacrificial altar"
desc = "An altar designed to perform blood sacrifice for a deity."
+ icon = 'icons/obj/hand_of_god_structures.dmi'
icon_state = "sacrificealtar"
+ anchored = 1
density = 0
can_buckle = 1
-/obj/structure/divine/sacrificealtar/attack_hand(mob/living/user)
+/obj/structure/sacrificealtar/attack_hand(mob/living/user)
..()
if(!has_buckled_mobs())
return
@@ -109,136 +18,29 @@
L.gib()
message_admins("[key_name_admin(user)] has sacrificed [key_name_admin(L)] on the sacrifical altar.")
-/obj/structure/divine/healingfountain
+/obj/structure/healingfountain
name = "healing fountain"
- desc = "A fountain containing the waters of life... or death, depending on where your allegiances lie."
+ desc = "A fountain containing the waters of life."
+ icon = 'icons/obj/hand_of_god_structures.dmi'
icon_state = "fountain"
+ anchored = 1
+ density = 1
var/time_between_uses = 1800
var/last_process = 0
- var/cult_only = TRUE
-/obj/structure/divine/healingfountain/anyone
- desc = "A fountain containing the waters of life."
- cult_only = FALSE
-
-/obj/structure/divine/healingfountain/attack_hand(mob/living/user)
- if(deactivated)
- return
+/obj/structure/healingfountain/attack_hand(mob/living/user)
if(last_process + time_between_uses > world.time)
user << "The fountain appears to be empty."
return
last_process = world.time
- if(!iscultist(user) && cult_only)
- user << "The water burns!"
- user.reagents.add_reagent("hell_water",20)
- else
- user << "The water feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards."
- user.reagents.add_reagent("godblood",20)
+ user << "The water feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards."
+ user.reagents.add_reagent("godblood",20)
update_icons()
addtimer(src, "update_icons", time_between_uses)
-/obj/structure/divine/healingfountain/update_icons()
+/obj/structure/healingfountain/proc/update_icons()
if(last_process + time_between_uses > world.time)
icon_state = "fountain"
else
- icon_state = "fountain-[side]"
-
-
-/obj/structure/divine/powerpylon
- name = "power pylon"
- desc = "A pylon which increases the deity's rate it can influence the world."
- icon_state = "powerpylon"
- density = 1
- health = 30
- maxhealth = 30
-
-/obj/structure/divine/defensepylon
- name = "defense pylon"
- desc = "A pylon which is blessed to withstand many blows, and fire strong bolts at nonbelievers. A god can toggle it."
- icon_state = "defensepylon"
- health = 150
- maxhealth = 150
- var/gun_faction = "cult"
- var/obj/machinery/porta_turret/defensepylon_internal_turret/pylon_gun
-
-
-/obj/structure/divine/defensepylon/New()
- ..()
- pylon_gun = new(src)
- pylon_gun.base = src
- pylon_gun.faction = list(gun_faction)
- pylon_gun.side = side
-
-
-/obj/structure/divine/defensepylon/Destroy()
- qdel(pylon_gun) //just in case
- return ..()
-
-/obj/structure/divine/defensepylon/examine(mob/user)
- ..()
- user << "\The [src] looks [pylon_gun.on ? "on" : "off"]."
-
-/obj/structure/divine/defensepylon/attack_hand(mob/living/user)
- if(gun_faction in user.faction)
- pylon_gun.on = !pylon_gun.on
- icon_state = (pylon_gun.on) ? "defensepylon-[side]" : "defensepylon"
- else
- . = ..()
-
-/obj/structure/divine/defensepylon/deactivate()
- ..()
- pylon_gun.on = 0
- icon_state = (pylon_gun.on) ? "defensepylon-[side]" : "defensepylon"
-
-/obj/structure/divine/defensepylon/activate()
- ..()
- pylon_gun.on = 1
- icon_state = (pylon_gun.on) ? "defensepylon-[side]" : "defensepylon"
-
-//This sits inside the defensepylon, to avoid copypasta
-/obj/machinery/porta_turret/defensepylon_internal_turret
- name = "defense pylon"
- desc = "A plyon which is blessed to withstand many blows, and fire strong bolts at nonbelievers."
- icon = 'icons/obj/hand_of_god_structures.dmi'
- installation = null
- always_up = 1
- use_power = 0
- has_cover = 0
- health = 200
- projectile = /obj/item/projectile/beam/pylon_bolt
- eprojectile = /obj/item/projectile/beam/pylon_bolt
- shot_sound = 'sound/weapons/emitter2.ogg'
- eshot_sound = 'sound/weapons/emitter2.ogg'
- base_icon_state = "defensepylon"
- active_state = ""
- off_state = ""
- faction = null
- emp_vunerable = 0
- var/side = "neutral"
-
-/obj/machinery/porta_turret/defensepylon_internal_turret/setup()
- return
-
-/obj/machinery/porta_turret/defensepylon_internal_turret/shootAt(atom/movable/target)
- var/obj/item/projectile/A = ..()
- if(A)
- A.color = side
-
-/obj/machinery/porta_turret/defensepylon_internal_turret/assess_perp(mob/living/carbon/human/perp)
- if(perp.handcuffed) //dishonourable to kill somebody who might be converted.
- return 0
- var/list/test = faction & perp.faction
- if(test.len)
- return 0
- return 10
-
-/obj/item/projectile/beam/pylon_bolt
- name = "divine bolt"
- icon_state = "greyscale_bolt"
- damage = 15
-
-/obj/structure/divine/shrine
- name = "shrine"
- desc = "A shrine dedicated to a deity."
- icon_state = "shrine"
\ No newline at end of file
+ icon_state = "fountain-red"
\ No newline at end of file
diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm
index c2fa1e72cf6..13ae66801be 100644
--- a/code/game/objects/structures/fluff.dm
+++ b/code/game/objects/structures/fluff.dm
@@ -120,3 +120,43 @@
name = "dense stack of papers"
desc = "A stack of various papers, childish scribbles scattered across each page."
icon_state = "paperstack"
+
+
+/obj/structure/fluff/divine
+ name = "Miracle"
+ icon = 'icons/obj/hand_of_god_structures.dmi'
+ anchored = 1
+ density = 1
+
+/obj/structure/fluff/divine/nexus
+ name = "nexus"
+ desc = "It anchors a deity to this world. It radiates an unusual aura. It looks well protected from explosive shock."
+ icon_state = "nexus-neutral"
+
+/obj/structure/fluff/divine/conduit
+ name = "conduit"
+ desc = "It allows a deity to extend their reach. Their powers are just as potent near a conduit as a nexus."
+ icon_state = "conduit-neutral"
+
+/obj/structure/fluff/divine/convertaltar
+ name = "conversion altar"
+ desc = "An altar dedicated to a deity."
+ icon_state = "convertaltar-neutral"
+ density = 0
+ can_buckle = 1
+
+/obj/structure/fluff/divine/powerpylon
+ name = "power pylon"
+ desc = "A pylon which increases the deity's rate it can influence the world."
+ icon_state = "powerpylon"
+ can_buckle = 1
+
+/obj/structure/fluff/divine/defensepylon
+ name = "defense pylon"
+ desc = "A pylon which is blessed to withstand many blows, and fire strong bolts at nonbelievers. A god can toggle it."
+ icon_state = "defensepylon"
+
+/obj/structure/fluff/divine/shrine
+ name = "shrine"
+ desc = "A shrine dedicated to a deity."
+ icon_state = "shrine"
\ No newline at end of file
diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm
index f189f443e20..3c8880412b1 100644
--- a/code/game/objects/structures/traps.dm
+++ b/code/game/objects/structures/traps.dm
@@ -1,18 +1,14 @@
-
-/obj/structure/divine/trap
+/obj/structure/trap
name = "IT'S A TARP"
desc = "stepping on me is a guaranteed bad day"
+ icon = 'icons/obj/hand_of_god_structures.dmi'
icon_state = "trap"
density = 0
alpha = 30 //initially quite hidden when not "recharging"
- health = 20
- maxhealth = 20
- trap = TRUE
var/last_trigger = 0
var/time_between_triggers = 600 //takes a minute to recharge
-
-/obj/structure/divine/trap/Crossed(atom/movable/AM)
+/obj/structure/trap/Crossed(atom/movable/AM)
if(last_trigger + time_between_triggers > world.time)
return
alpha = initial(alpha)
@@ -23,7 +19,7 @@
trap_effect(L)
animate(src, alpha = initial(alpha), time = time_between_triggers)
-/obj/structure/divine/trap/examine(mob/user)
+/obj/structure/trap/examine(mob/user)
..()
if(!isliving(user)) //bad ghosts, stop trying to powergame from beyond the grave
return
@@ -32,15 +28,15 @@
animate(src, alpha = initial(alpha), time = time_between_triggers)
-/obj/structure/divine/trap/proc/trap_effect(mob/living/L)
+/obj/structure/trap/proc/trap_effect(mob/living/L)
return
-/obj/structure/divine/trap/stun
+/obj/structure/trap/stun
name = "shock trap"
desc = "A trap that will shock you, it will burn your flesh and render you immobile, You'd better avoid it."
icon_state = "trap-shock"
-/obj/structure/divine/trap/stun/trap_effect(mob/living/L)
+/obj/structure/trap/stun/trap_effect(mob/living/L)
L << "You are paralyzed from the intense shock!"
L.Weaken(5)
var/turf/Lturf = get_turf(L)
@@ -48,13 +44,13 @@
new /obj/effect/particle_effect/sparks(Lturf)
-/obj/structure/divine/trap/fire
+/obj/structure/trap/fire
name = "flame trap"
desc = "A trap that will set you ablaze. You'd better avoid it."
icon_state = "trap-fire"
-/obj/structure/divine/trap/fire/trap_effect(mob/living/L)
+/obj/structure/trap/fire/trap_effect(mob/living/L)
L << "Spontaneous combustion!"
L.Weaken(1)
var/turf/Lturf = get_turf(L)
@@ -62,26 +58,26 @@
new /obj/effect/particle_effect/sparks(Lturf)
-/obj/structure/divine/trap/chill
+/obj/structure/trap/chill
name = "frost trap"
desc = "A trap that will chill you to the bone. You'd better avoid it."
icon_state = "trap-frost"
-/obj/structure/divine/trap/chill/trap_effect(mob/living/L)
+/obj/structure/trap/chill/trap_effect(mob/living/L)
L << "You're frozen solid!"
L.Weaken(1)
L.bodytemperature -= 300
new /obj/effect/particle_effect/sparks(get_turf(L))
-/obj/structure/divine/trap/damage
+/obj/structure/trap/damage
name = "earth trap"
desc = "A trap that will summon a small earthquake, just for you. You'd better avoid it."
icon_state = "trap-earth"
-/obj/structure/divine/trap/damage/trap_effect(mob/living/L)
+/obj/structure/trap/damage/trap_effect(mob/living/L)
L << "The ground quakes beneath your feet!"
L.Weaken(5)
L.adjustBruteLoss(35)
@@ -90,7 +86,7 @@
new /obj/structure/flora/rock(Lturf)
-/obj/structure/divine/trap/ward
+/obj/structure/trap/ward
name = "divine ward"
desc = "A divine barrier, It looks like you could destroy it with enough effort, or wait for it to dissipate..."
icon_state = "ward"
@@ -100,6 +96,6 @@
time_between_triggers = 1200 //Exists for 2 minutes
-/obj/structure/divine/trap/ward/New()
+/obj/structure/trap/ward/New()
..()
QDEL_IN(src, time_between_triggers)
diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm
index 6c7de4dcef8..c6c4e545d42 100644
--- a/code/modules/awaymissions/capture_the_flag.dm
+++ b/code/modules/awaymissions/capture_the_flag.dm
@@ -463,29 +463,27 @@
-/obj/structure/divine/trap/ctf
+/obj/structure/trap/ctf
name = "Spawn protection"
desc = "Stay outta the enemy spawn!"
icon_state = "trap"
- health = INFINITY
- maxhealth = INFINITY
var/team = WHITE_TEAM
time_between_triggers = 1
alpha = 255
-/obj/structure/divine/trap/examine(mob/user)
+/obj/structure/trap/examine(mob/user)
return
-/obj/structure/divine/trap/ctf/trap_effect(mob/living/L)
+/obj/structure/trap/ctf/trap_effect(mob/living/L)
if(!(src.team in L.faction))
L << "Stay out of the enemy spawn!"
L.death()
-/obj/structure/divine/trap/ctf/red
+/obj/structure/trap/ctf/red
team = RED_TEAM
icon_state = "trap-fire"
-/obj/structure/divine/trap/ctf/blue
+/obj/structure/trap/ctf/blue
team = BLUE_TEAM
icon_state = "trap-frost"