diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index d40d10bf93..628a707af4 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -67,9 +67,6 @@
return flags & INSERT_CONTAINER
*/
-/atom/proc/meteorhit(obj/meteor as obj)
- return
-
/atom/proc/allow_drop()
return 1
diff --git a/code/game/gamemodes/events/clang.dm b/code/game/gamemodes/events/clang.dm
index 74fb9ee507..d1b82af940 100644
--- a/code/game/gamemodes/events/clang.dm
+++ b/code/game/gamemodes/events/clang.dm
@@ -34,7 +34,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
else if (istype(clong, /mob))
if(clong.density || prob(10))
- clong.meteorhit(src)
+ clong.ex_act(1)
else
qdel(src)
diff --git a/code/game/gamemodes/events/dust.dm b/code/game/gamemodes/events/dust.dm
index 13cdb511e8..492b932e46 100644
--- a/code/game/gamemodes/events/dust.dm
+++ b/code/game/gamemodes/events/dust.dm
@@ -102,7 +102,7 @@ The "dust" will damage the hull of the station causin minor hull breaches.
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
if(ismob(A))
- A.meteorhit(src)//This should work for now I guess
+ A.ex_act(strength)//This should work for now I guess
else if(!istype(A,/obj/machinery/power/emitter) && !istype(A,/obj/machinery/field_generator)) //Protect the singularity from getting released every round!
A.ex_act(strength) //Changing emitter/field gen ex_act would make it immune to bombs and C4
diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm
index 335360d40d..593f4a3d22 100644
--- a/code/game/gamemodes/meteor/meteor.dm
+++ b/code/game/gamemodes/meteor/meteor.dm
@@ -9,14 +9,16 @@
votable = 0
uplink_welcome = "EVIL METEOR Uplink Console:"
deny_respawn = 1
+ var/next_wave = METEOR_DELAY
/datum/game_mode/meteor/post_setup()
defer_powernet_rebuild = 2//Might help with the lag
..()
/datum/game_mode/meteor/process()
- if(world.time >= METEOR_DELAY)
- spawn() spawn_meteors(6)
+ if(world.time >= next_wave)
+ next_wave = world.time + meteor_wave_delay
+ spawn() spawn_meteors(6, meteors_normal)
/datum/game_mode/meteor/declare_completion()
var/text
diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm
index 06d9b291a2..96367b4a11 100644
--- a/code/game/gamemodes/meteor/meteors.dm
+++ b/code/game/gamemodes/meteor/meteors.dm
@@ -1,167 +1,259 @@
/var/const/meteor_wave_delay = 625 //minimum wait between waves in tenths of seconds
//set to at least 100 unless you want evarr ruining every round
-/var/const/meteors_in_wave = 50
-/var/const/meteors_in_small_wave = 10
+//Meteors probability of spawning during a given wave
+/var/list/meteors_normal = list(/obj/effect/meteor/dust=3, /obj/effect/meteor/medium=8, /obj/effect/meteor/big=3, \
+ /obj/effect/meteor/flaming=1, /obj/effect/meteor/irradiated=3) //for normal meteor event
-/proc/meteor_wave(var/number = meteors_in_wave)
- if(!ticker || wavesecret)
- return
+/var/list/meteors_threatening = list(/obj/effect/meteor/medium=4, /obj/effect/meteor/big=8, \
+ /obj/effect/meteor/flaming=3, /obj/effect/meteor/irradiated=3) //for threatening meteor event
- wavesecret = 1
- for(var/i = 0 to number)
- spawn(rand(10,100))
- spawn_meteor()
- spawn(meteor_wave_delay)
- wavesecret = 0
+/var/list/meteors_catastrophic = list(/obj/effect/meteor/medium=5, /obj/effect/meteor/big=75, \
+ /obj/effect/meteor/flaming=10, /obj/effect/meteor/irradiated=10, /obj/effect/meteor/tunguska = 1) //for catastrophic meteor event
-/proc/spawn_meteors(var/number = meteors_in_small_wave)
+/var/list/meteors_dust = list(/obj/effect/meteor/dust) //for space dust event
+
+
+///////////////////////////////
+//Meteor spawning global procs
+///////////////////////////////
+
+/proc/spawn_meteors(var/number = 10, var/list/meteortypes)
for(var/i = 0; i < number; i++)
- spawn(0)
- spawn_meteor()
+ spawn_meteor(meteortypes)
-/proc/spawn_meteor()
-
- var/startx
- var/starty
- var/endx
- var/endy
+/proc/spawn_meteor(var/list/meteortypes)
var/turf/pickedstart
var/turf/pickedgoal
var/max_i = 10//number of tries to spawn meteor.
-
-
- do
- switch(pick(1,2,3,4))
- if(1) //NORTH
- starty = world.maxy-(TRANSITIONEDGE+1)
- startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
- endy = TRANSITIONEDGE
- endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
- if(2) //EAST
- starty = rand((TRANSITIONEDGE+1),world.maxy-(TRANSITIONEDGE+1))
- startx = world.maxx-(TRANSITIONEDGE+1)
- endy = rand(TRANSITIONEDGE, world.maxy-TRANSITIONEDGE)
- endx = TRANSITIONEDGE
- if(3) //SOUTH
- starty = (TRANSITIONEDGE+1)
- startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
- endy = world.maxy-TRANSITIONEDGE
- endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
- if(4) //WEST
- starty = rand((TRANSITIONEDGE+1), world.maxy-(TRANSITIONEDGE+1))
- startx = (TRANSITIONEDGE+1)
- endy = rand(TRANSITIONEDGE,world.maxy-TRANSITIONEDGE)
- endx = world.maxx-TRANSITIONEDGE
-
- pickedstart = locate(startx, starty, 1)
- pickedgoal = locate(endx, endy, 1)
+ while (!istype(pickedstart, /turf/space))
+ var/startSide = pick(cardinal)
+ pickedstart = spaceDebrisStartLoc(startSide, 1)
+ pickedgoal = spaceDebrisFinishLoc(startSide, 1)
max_i--
- if(max_i<=0) return
-
- while (!istype(pickedstart, /turf/space)) //FUUUCK, should never happen.
-
-
- var/obj/effect/meteor/M
- switch(rand(1, 100))
-
- if(1 to 10)
- M = new /obj/effect/meteor/big( pickedstart )
- if(11 to 75)
- M = new /obj/effect/meteor( pickedstart )
- if(76 to 100)
- M = new /obj/effect/meteor/small( pickedstart )
-
+ if(max_i<=0)
+ return
+ var/Me = pickweight(meteortypes)
+ var/obj/effect/meteor/M = new Me(pickedstart)
M.dest = pickedgoal
+ M.z_original = 1
spawn(0)
walk_towards(M, M.dest, 1)
-
return
+/proc/spaceDebrisStartLoc(startSide, Z)
+ var/starty
+ var/startx
+ switch(startSide)
+ if(1) //NORTH
+ starty = world.maxy-(TRANSITIONEDGE+1)
+ startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
+ if(2) //EAST
+ starty = rand((TRANSITIONEDGE+1),world.maxy-(TRANSITIONEDGE+1))
+ startx = world.maxx-(TRANSITIONEDGE+1)
+ if(3) //SOUTH
+ starty = (TRANSITIONEDGE+1)
+ startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
+ if(4) //WEST
+ starty = rand((TRANSITIONEDGE+1), world.maxy-(TRANSITIONEDGE+1))
+ startx = (TRANSITIONEDGE+1)
+ var/turf/T = locate(startx, starty, Z)
+ return T
+
+/proc/spaceDebrisFinishLoc(startSide, Z)
+ var/endy
+ var/endx
+ switch(startSide)
+ if(1) //NORTH
+ endy = TRANSITIONEDGE
+ endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
+ if(2) //EAST
+ endy = rand(TRANSITIONEDGE, world.maxy-TRANSITIONEDGE)
+ endx = TRANSITIONEDGE
+ if(3) //SOUTH
+ endy = world.maxy-TRANSITIONEDGE
+ endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
+ if(4) //WEST
+ endy = rand(TRANSITIONEDGE,world.maxy-TRANSITIONEDGE)
+ endx = world.maxx-TRANSITIONEDGE
+ var/turf/T = locate(endx, endy, Z)
+ return T
+
+///////////////////////
+//The meteor effect
+//////////////////////
+
/obj/effect/meteor
- name = "meteor"
+ name = "the concept of meteor"
+ desc = "You should probably run instead of gawking at this."
icon = 'icons/obj/meteor.dmi'
- icon_state = "flaming"
+ icon_state = "small"
density = 1
- anchored = 1.0
- var/hits = 1
- var/detonation_chance = 15
- var/power = 4
- var/power_step = 1
+ anchored = 1
+ var/hits = 4
+ var/hitpwr = 2 //Level of ex_act to be called on hit.
var/dest
pass_flags = PASSTABLE
+ var/heavy = 0
+ var/meteorsound = 'sound/effects/meteorimpact.ogg'
+ var/z_original = 1
-/obj/effect/meteor/small
- name = "small meteor"
- icon_state = "smallf"
- pass_flags = PASSTABLE | PASSGRILLE
- power = 2
+ var/meteordrop = /obj/item/weapon/ore/iron
+ var/dropamt = 2
+
+/obj/effect/meteor/Move()
+ if(z != z_original || loc == dest)
+ qdel(src)
+ return
+
+ . = ..() //process movement...
+
+ if(.)//.. if did move, ram the turf we get in
+ var/turf/T = get_turf(loc)
+ ram_turf(T)
+
+ if(prob(10) && !istype(T, /turf/space))//randomly takes a 'hit' from ramming
+ get_hit()
+
+ return .
/obj/effect/meteor/Destroy()
walk(src,0) //this cancels the walk_towards() proc
..()
+/obj/effect/meteor/New()
+ ..()
+ //SpinAnimation()
+
/obj/effect/meteor/Bump(atom/A)
- spawn(0)
+ if(A)
+ ram_turf(get_turf(A))
+ playsound(src.loc, meteorsound, 40, 1)
+ get_hit()
- if (A)
- A.meteorhit(src)
- playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
- if (--src.hits <= 0)
+/obj/effect/meteor/proc/ram_turf(var/turf/T)
+ //first bust whatever is in the turf
+ for(var/atom/A in T)
+ if(A != src)
+ A.ex_act(hitpwr)
- //Prevent meteors from blowing up the singularity's containment.
- //Changing emitter and generator ex_act would result in them being bomb and C4 proof.
- if(!istype(A,/obj/machinery/power/emitter) && \
- !istype(A,/obj/machinery/field_generator) && \
- prob(detonation_chance))
- explosion(loc, power, power + power_step, power + power_step * 2, power + power_step * 3, 0)
- qdel(src)
- return
+ //then, ram the turf if it still exists
+ if(T)
+ T.ex_act(hitpwr)
-/obj/effect/meteor/ex_act(severity)
-
- if (severity < 4)
+//process getting 'hit' by colliding with a dense object
+//or randomly when ramming turfs
+/obj/effect/meteor/proc/get_hit()
+ hits--
+ if(hits <= 0)
+ make_debris()
+ meteor_effect(heavy)
qdel(src)
+
+/obj/effect/meteor/ex_act()
return
-/obj/effect/meteor/big
- name = "big meteor"
- hits = 5
- power = 1
-
- ex_act(severity)
- return
-
- Bump(atom/A)
- spawn(0)
- //Prevent meteors from blowing up the singularity's containment.
- //Changing emitter and generator ex_act would result in them being bomb and C4 proof
- if(!istype(A,/obj/machinery/power/emitter) && \
- !istype(A,/obj/machinery/field_generator))
- if(--src.hits <= 0)
- qdel(src) //Dont blow up singularity containment if we get stuck there.
-
- if (A)
- for(var/mob/M in player_list)
- var/turf/T = get_turf(M)
- if(!T || T.z != src.z)
- continue
- shake_camera(M, 3, get_dist(M.loc, src.loc) > 20 ? 1 : 3)
- playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
- explosion(src.loc, 0, 1, 2, 3, 0)
-
- if (--src.hits <= 0)
- if(prob(detonation_chance) && !istype(A, /obj/structure/grille))
- explosion(loc, power, power + power_step, power + power_step * 2, power + power_step * 3, 0)
- qdel(src)
- return
-
-/obj/effect/meteor/attackby(obj/item/weapon/W as obj, mob/user as mob)
+/obj/effect/meteor/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/pickaxe))
qdel(src)
return
- ..()
+ ..()
-/obj/effect/meteor/touch_map_edge()
- qdel(src)
+/obj/effect/meteor/proc/make_debris()
+ for(var/throws = dropamt, throws > 0, throws--)
+ var/obj/item/O = new meteordrop(get_turf(src))
+ O.throw_at(dest, 5, 10)
+
+/obj/effect/meteor/proc/meteor_effect(var/sound=1)
+ if(sound)
+ for(var/mob/M in player_list)
+ var/turf/T = get_turf(M)
+ if(!T || T.z != src.z)
+ continue
+ var/dist = get_dist(M.loc, src.loc)
+ shake_camera(M, dist > 20 ? 3 : 5, dist > 20 ? 1 : 3)
+ M.playsound_local(src.loc, meteorsound, 50, 1, get_rand_frequency(), 10)
+
+///////////////////////
+//Meteor types
+///////////////////////
+
+//Dust
+/obj/effect/meteor/dust
+ name = "space dust"
+ icon_state = "dust"
+ pass_flags = PASSTABLE | PASSGRILLE
+ hits = 1
+ hitpwr = 3
+ meteorsound = 'sound/weapons/throwtap.ogg'
+ meteordrop = /obj/item/weapon/ore/glass
+
+//Medium-sized
+/obj/effect/meteor/medium
+ name = "meteor"
+ dropamt = 3
+
+/obj/effect/meteor/medium/meteor_effect()
+ ..(heavy)
+ explosion(src.loc, 0, 1, 2, 3, 0)
+
+//Large-sized
+/obj/effect/meteor/big
+ name = "big meteor"
+ icon_state = "large"
+ hits = 6
+ heavy = 1
+ dropamt = 4
+
+/obj/effect/meteor/big/meteor_effect()
+ ..(heavy)
+ explosion(src.loc, 1, 2, 3, 4, 0)
+
+//Flaming meteor
+/obj/effect/meteor/flaming
+ name = "flaming meteor"
+ icon_state = "flaming"
+ hits = 5
+ heavy = 1
+ meteorsound = 'sound/effects/bamf.ogg'
+ meteordrop = /obj/item/weapon/ore/phoron
+
+/obj/effect/meteor/flaming/meteor_effect()
+ ..(heavy)
+ explosion(src.loc, 1, 2, 3, 4, 0, 0, 5)
+
+//Radiation meteor
+/obj/effect/meteor/irradiated
+ name = "glowing meteor"
+ icon_state = "glowing"
+ heavy = 1
+ meteordrop = /obj/item/weapon/ore/uranium
+
+
+/obj/effect/meteor/irradiated/meteor_effect()
+ ..(heavy)
+ explosion(src.loc, 0, 0, 4, 3, 0)
+ new /obj/effect/decal/cleanable/greenglow(get_turf(src))
+ for(var/mob/living/L in view(5, src))
+ L.apply_effect(40, IRRADIATE)
+
+//Station buster Tunguska
+/obj/effect/meteor/tunguska
+ name = "tunguska meteor"
+ icon_state = "flaming"
+ desc = "Your life briefly passes before your eyes the moment you lay them on this monstruosity"
+ hits = 30
+ hitpwr = 1
+ heavy = 1
+ meteorsound = 'sound/effects/bamf.ogg'
+ meteordrop = /obj/item/weapon/ore/phoron
+
+/obj/effect/meteor/tunguska/meteor_effect()
+ ..(heavy)
+ explosion(src.loc, 5, 10, 15, 20, 0)
+
+/obj/effect/meteor/tunguska/Bump()
+ ..()
+ if(prob(20))
+ explosion(src.loc,2,4,6,8)
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index c84d030cc4..21550121cd 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -240,11 +240,6 @@ update_flag
healthcheck()
..()
-/obj/machinery/portable_atmospherics/canister/meteorhit(var/obj/O as obj)
- src.health = 0
- healthcheck()
- return
-
/obj/machinery/portable_atmospherics/canister/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if(!istype(W, /obj/item/weapon/wrench) && !istype(W, /obj/item/weapon/tank) && !istype(W, /obj/item/device/analyzer) && !istype(W, /obj/item/device/pda))
visible_message("\The [user] hits \the [src] with \a [W]!")
diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm
index ad9a964ca9..803615adaf 100644
--- a/code/game/machinery/bots/bots.dm
+++ b/code/game/machinery/bots/bots.dm
@@ -86,10 +86,6 @@
..()
healthcheck()
-/obj/machinery/bot/meteorhit()
- src.explode()
- return
-
/obj/machinery/bot/blob_act()
src.health -= rand(20,40)*fire_dam_coeff
healthcheck()
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index b32f9e9daa..74edf74ea9 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -20,16 +20,6 @@
return 0
return 1
-/obj/machinery/computer/meteorhit(var/obj/O as obj)
- for(var/x in verbs)
- verbs -= x
- set_broken()
- var/datum/effect/effect/system/smoke_spread/smoke = PoolOrNew(/datum/effect/effect/system/smoke_spread)
- smoke.set_up(5, 0, src)
- smoke.start()
- return
-
-
/obj/machinery/computer/emp_act(severity)
if(prob(20/severity)) set_broken()
..()
diff --git a/code/game/machinery/computer3/computer.dm b/code/game/machinery/computer3/computer.dm
index 902d8ef1a4..6b6a2f8491 100644
--- a/code/game/machinery/computer3/computer.dm
+++ b/code/game/machinery/computer3/computer.dm
@@ -75,15 +75,15 @@
set name = "Reset Computer"
set category = "Object"
set src in view(1)
-
+
if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living))
usr << "You can't do that."
return
-
+
if(!Adjacent(usr))
usr << "You can't reach it."
return
-
+
Reset()
New(var/L, var/built = 0)
@@ -199,14 +199,6 @@
// todo does this do enough
-
- meteorhit(var/obj/O as obj)
- for(var/x in verbs)
- verbs -= x
- set_broken()
- return
-
-
emp_act(severity)
if(prob(20/severity)) set_broken()
..()
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index e3c8607b88..73501f283d 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -127,11 +127,6 @@ for reference:
dismantle()
return
-/obj/structure/barricade/meteorhit()
- visible_message("\The [src] is smashed apart!")
- dismantle()
- return
-
/obj/structure/barricade/blob_act()
src.health -= 25
if (src.health <= 0)
@@ -252,10 +247,6 @@ for reference:
anchored = !anchored
icon_state = "barrier[src.locked]"
- meteorhit()
- src.explode()
- return
-
blob_act()
src.health -= 25
if (src.health <= 0)
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 69dc698795..9f5a831b16 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -146,10 +146,6 @@
else do_animate("deny")
return
-/obj/machinery/door/meteorhit(obj/M as obj)
- src.open()
- return
-
/obj/machinery/door/bullet_act(var/obj/item/projectile/Proj)
..()
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index 424971cc71..1383bf56e7 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -200,10 +200,6 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
qdel(src)
return
-/obj/machinery/hologram/meteorhit()
- qdel(src)
- return
-
/obj/machinery/hologram/holopad/Destroy()
for (var/mob/living/silicon/ai/master in masters)
clear_holo(master)
diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm
index e04034ad93..a3ac073a90 100644
--- a/code/game/machinery/turrets.dm
+++ b/code/game/machinery/turrets.dm
@@ -399,10 +399,6 @@
qdel(src)
return
- meteorhit()
- qdel(src)
- return
-
attack_hand(mob/user as mob)
user.set_machine(src)
var/dat = {"
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 2d5c2201bd..32fc2e0123 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -648,10 +648,6 @@
return
*/
-//TODO
-/obj/mecha/meteorhit()
- return ex_act(rand(1,3))//should do for now
-
/obj/mecha/emp_act(severity)
if(get_charge())
use_power((cell.charge/2)/severity)
diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index d9e88e70e0..cd6d1e76d3 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -82,11 +82,6 @@
healthcheck()
return
-/obj/effect/alien/resin/meteorhit()
- health-=50
- healthcheck()
- return
-
/obj/effect/alien/resin/hitby(AM as mob|obj)
..()
for(var/mob/O in viewers(src, null))
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index 867c5155e0..e9670ce4d7 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -217,10 +217,6 @@
health = 0
healthcheck()
-/obj/effect/energy_net/meteorhit()
- health = 0
- healthcheck()
-
/obj/effect/energy_net/attack_hand(var/mob/user)
var/mob/living/carbon/human/H = user
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 8039814f4f..1f25043e89 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -32,9 +32,6 @@
if(prob(50))
qdel(src)
-/obj/structure/meteorhit(obj/O as obj)
- qdel(src)
-
/obj/structure/attack_tk()
return
@@ -50,9 +47,6 @@
if(3.0)
return
-/obj/structure/meteorhit(obj/O as obj)
- qdel(src)
-
/obj/structure/New()
..()
if(climbable)
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index e66d5c488a..7d2ca17eb9 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -210,13 +210,6 @@
A.loc = src.loc
qdel(src)
-/obj/structure/closet/meteorhit(obj/O as obj)
- if(O.icon_state == "flaming")
- for(var/mob/M in src)
- M.meteorhit(O)
- src.dump_contents()
- qdel(src)
-
/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(src.opened)
if(istype(W, /obj/item/weapon/grab))
diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm
index b59cd62dfa..5458f3da94 100644
--- a/code/game/objects/structures/crates_lockers/closets/statue.dm
+++ b/code/game/objects/structures/crates_lockers/closets/statue.dm
@@ -80,12 +80,15 @@
/obj/structure/closet/statue/toggle()
return
-/obj/structure/closet/statue/bullet_act(var/obj/item/projectile/Proj)
- health -= Proj.damage
+/obj/structure/closet/statue/proc/check_health()
if(health <= 0)
for(var/mob/M in src)
shatter(M)
+/obj/structure/closet/statue/bullet_act(var/obj/item/projectile/Proj)
+ health -= Proj.damage
+ check_health()
+
return
/obj/structure/closet/statue/attack_generic(var/mob/user, damage, attacktext, environment_smash)
@@ -97,19 +100,17 @@
for(var/mob/M in src)
shatter(M)
-/obj/structure/closet/statue/meteorhit(obj/O as obj)
- if(O.icon_state == "flaming")
- for(var/mob/M in src)
- M.meteorhit(O)
- shatter(M)
+/obj/structure/closet/statue/ex_act(severity)
+ for(var/mob/M in src)
+ M.ex_act(severity)
+ health -= 60 / severity
+ check_health()
/obj/structure/closet/statue/attackby(obj/item/I as obj, mob/user as mob)
health -= I.force
user.do_attack_animation(src)
visible_message("[user] strikes [src] with [I].")
- if(health <= 0)
- for(var/mob/M in src)
- shatter(M)
+ check_health()
/obj/structure/closet/statue/MouseDrop_T()
return
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 3c5d5ec849..bc6217f774 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -43,13 +43,6 @@
occupied = 0
qdel(src)
-
-/obj/structure/displaycase/meteorhit(obj/O as obj)
- new /obj/item/weapon/material/shard( src.loc )
- new /obj/item/weapon/gun/energy/captain( src.loc )
- qdel(src)
-
-
/obj/structure/displaycase/proc/healthcheck()
if (src.health <= 0)
if (!( src.destroyed ))
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index fa7a448bd6..cc154918e6 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -19,9 +19,6 @@
/obj/structure/grille/blob_act()
qdel(src)
-/obj/structure/grille/meteorhit(var/obj/M)
- qdel(src)
-
/obj/structure/grille/update_icon()
if(destroyed)
icon_state = "[initial(icon_state)]-b"
diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm
index cd8fad5ec5..f31b098b5b 100644
--- a/code/game/objects/structures/inflatable.dm
+++ b/code/game/objects/structures/inflatable.dm
@@ -63,9 +63,6 @@
/obj/structure/inflatable/blob_act()
deflate(1)
-/obj/structure/inflatable/meteorhit()
- deflate(1)
-
/obj/structure/inflatable/attack_hand(mob/user as mob)
add_fingerprint(user)
return
diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm
index 8c3cc5e6f2..13d6694822 100644
--- a/code/game/objects/structures/lamarr_cage.dm
+++ b/code/game/objects/structures/lamarr_cage.dm
@@ -39,13 +39,6 @@
Break()
qdel(src)
-
-/obj/structure/lamarr/meteorhit(obj/O as obj)
- new /obj/item/weapon/material/shard( src.loc )
- Break()
- qdel(src)
-
-
/obj/structure/lamarr/proc/healthcheck()
if (src.health <= 0)
if (!( src.destroyed ))
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index 199635cd0f..0bbfe9f2f0 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -167,11 +167,6 @@ obj/structure/safe/blob_act()
obj/structure/safe/ex_act(severity)
return
-
-obj/structure/safe/meteorhit(obj/O as obj)
- return
-
-
//FLOOR SAFES
/obj/structure/safe/floor
name = "floor safe"
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 26bc16e070..1fec557b8d 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -125,10 +125,6 @@
/obj/structure/window/blob_act()
shatter()
-
-/obj/structure/window/meteorhit()
- shatter()
-
//TODO: Make full windows a separate type of window.
//Once a full window, it will always be a full window, so there's no point
//having the same type for both.
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 65b40e1fdf..8015c47c8c 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -233,16 +233,6 @@ var/list/global/wall_cache = list()
// F.sd_LumReset() //TODO: ~Carn
return
-/turf/simulated/wall/meteorhit(obj/M as obj)
- var/rotting = (locate(/obj/effect/overlay/wallrot) in src)
- if (prob(15) && !rotting)
- dismantle_wall()
- else if(prob(70) && !rotting)
- ChangeTurf(/turf/simulated/floor/plating)
- else
- ReplaceWithLattice()
- return 0
-
/turf/simulated/wall/proc/radiate()
var/total_radiation = material.radioactivity + (reinf_material ? reinf_material.radioactivity / 2 : 0)
if(!total_radiation)
diff --git a/code/modules/admin/verbs/icarus.dm b/code/modules/admin/verbs/icarus.dm
index 1f9b2dd4c4..ef322d40dd 100644
--- a/code/modules/admin/verbs/icarus.dm
+++ b/code/modules/admin/verbs/icarus.dm
@@ -111,11 +111,10 @@ proc/Icarus_FireCannon(var/turf/target)
target = locate(x, y, target.z)
// Finally fire the fucker.
- var/obj/effect/meteor/small/projectile = new (start)
+ var/obj/effect/meteor/projectile = new (start)
projectile.dest = target
projectile.name = "main gun projectile" // stealthy
projectile.hits = 6
- projectile.detonation_chance = 99 // it's a missile/cannon round thing!
// Make sure it travels
spawn(0)
diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm
index 3c1aeba23f..cd65ca7ea3 100644
--- a/code/modules/events/event_container.dm
+++ b/code/modules/events/event_container.dm
@@ -153,7 +153,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 75, list(ASSIGNMENT_ENGINEER = 60)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_SCIENTIST = 10)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 50, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5)),
- new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_shower, 0, list(ASSIGNMENT_ENGINEER = 20)),
+ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 20)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 100)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 0, list(ASSIGNMENT_MEDICAL = 50), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 2.5, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5),
@@ -168,13 +168,13 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
/datum/event_container/major
severity = EVENT_LEVEL_MAJOR
available_events = list(
- new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 1320),
- new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 0, list(ASSIGNMENT_ENGINEER = 60), 1),
- new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 3), 1),
- new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ANY = 5)),
- new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 3), 1),
- new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 0, list(ASSIGNMENT_ENGINEER = 15), 1),
- new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 30), 1),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 1320),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 0, list(ASSIGNMENT_ENGINEER = 60), 1),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 3), 1),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station,0,list(ASSIGNMENT_ANY = 5)),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 3), 1),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 0, list(ASSIGNMENT_ENGINEER = 15), 1),
+ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 30), 1),
)
diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm
index 3539130c27..d34fadeb32 100644
--- a/code/modules/events/event_dynamic.dm
+++ b/code/modules/events/event_dynamic.dm
@@ -71,7 +71,6 @@ var/list/event_last_fired = list()
possibleEvents[/datum/event/spacevine] = 10 + 5 * active_with_role["Engineer"]
if(minutes_passed >= 30) // Give engineers time to set up engine
possibleEvents[/datum/event/meteor_wave] = 10 * active_with_role["Engineer"]
- possibleEvents[/datum/event/meteor_shower] = 20 * active_with_role["Engineer"]
possibleEvents[/datum/event/blob] = 10 * active_with_role["Engineer"]
if(active_with_role["Medical"] > 0)
diff --git a/code/modules/events/meteors.dm b/code/modules/events/meteors.dm
index 45d59ca8cd..43093a3de8 100644
--- a/code/modules/events/meteors.dm
+++ b/code/modules/events/meteors.dm
@@ -1,44 +1,39 @@
-//meteor storms are much heavier
/datum/event/meteor_wave
- startWhen = 6
- endWhen = 33
-
-/datum/event/meteor_wave/setup()
- endWhen = rand(15,30) * 3
-
-/datum/event/meteor_wave/announce()
- command_announcement.Announce("Meteors have been detected on collision course with the station.", "Meteor Alert", new_sound = 'sound/AI/meteors.ogg')
-
-/datum/event/meteor_wave/tick()
- if(IsMultiple(activeFor, 3))
- meteor_wave(rand(2,5))
-
-/datum/event/meteor_wave/end()
- command_announcement.Announce("The station has cleared the meteor storm.", "Meteor Alert")
-
-//
-/datum/event/meteor_shower
startWhen = 5
endWhen = 7
var/next_meteor = 6
var/waves = 1
-/datum/event/meteor_shower/setup()
- waves = rand(2,5)
+/datum/event/meteor_wave/setup()
+ waves = severity * rand(1,3)
-/datum/event/meteor_shower/announce()
- command_announcement.Announce("The station is now in a meteor shower.", "Meteor Alert")
+/datum/event/meteor_wave/announce()
+ switch(severity)
+ if(EVENT_LEVEL_MAJOR)
+ command_announcement.Announce("Meteors have been detected on collision course with the station.", "Meteor Alert", new_sound = 'sound/AI/meteors.ogg')
+ else
+ command_announcement.Announce("The station is now in a meteor shower.", "Meteor Alert")
//meteor showers are lighter and more common,
-/datum/event/meteor_shower/tick()
+/datum/event/meteor_wave/tick()
if(activeFor >= next_meteor)
- meteor_wave(rand(1,4))
- next_meteor += rand(20,100)
+ spawn() spawn_meteors(severity * rand(1,2), get_meteors())
+ next_meteor += rand(15, 30) / severity
waves--
- if(waves <= 0)
- endWhen = activeFor + 1
- else
- endWhen = next_meteor + 1
+ endWhen = (waves <= 0 ? activeFor + 15 : next_meteor + 1)
-/datum/event/meteor_shower/end()
- command_announcement.Announce("The station has cleared the meteor shower", "Meteor Alert")
+/datum/event/meteor_wave/end()
+ switch(severity)
+ if(EVENT_LEVEL_MAJOR)
+ command_announcement.Announce("The station has cleared the meteor storm.", "Meteor Alert")
+ else
+ command_announcement.Announce("The station has cleared the meteor shower", "Meteor Alert")
+
+/datum/event/meteor_wave/proc/get_meteors()
+ switch(severity)
+ if(EVENT_LEVEL_MAJOR)
+ return meteors_catastrophic
+ if(EVENT_LEVEL_MODERATE)
+ return meteors_threatening
+ else
+ return meteors_normal
diff --git a/code/modules/holodeck/HolodeckControl.dm b/code/modules/holodeck/HolodeckControl.dm
index 45eaf758f9..373c75ceea 100644
--- a/code/modules/holodeck/HolodeckControl.dm
+++ b/code/modules/holodeck/HolodeckControl.dm
@@ -158,16 +158,6 @@
emergencyShutdown()
..()
-/obj/machinery/computer/HolodeckControl/meteorhit(var/obj/O as obj)
- emergencyShutdown()
- ..()
-
-
-/obj/machinery/computer/HolodeckControl/emp_act(severity)
- emergencyShutdown()
- ..()
-
-
/obj/machinery/computer/HolodeckControl/ex_act(severity)
emergencyShutdown()
..()
diff --git a/code/modules/mob/living/carbon/alien/alien_attacks.dm b/code/modules/mob/living/carbon/alien/alien_attacks.dm
index 62768945a3..578059e6e0 100644
--- a/code/modules/mob/living/carbon/alien/alien_attacks.dm
+++ b/code/modules/mob/living/carbon/alien/alien_attacks.dm
@@ -3,17 +3,6 @@
/mob/living/carbon/alien/attack_ui(slot_id)
return
-/mob/living/carbon/alien/meteorhit(O as obj)
- for(var/mob/M in viewers(src, null))
- if ((M.client && !( M.blinded )))
- M.show_message(text("\red [] has been hit by []", src, O), 1)
- if (health > 0)
- adjustBruteLoss((istype(O, /obj/effect/meteor/small) ? 10 : 25))
- adjustFireLoss(30)
-
- updatehealth()
- return
-
/mob/living/carbon/alien/attack_hand(mob/living/carbon/M as mob)
..()
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 10e165fa5f..718f9c6533 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -177,22 +177,6 @@
apply_damage(rand(30,40), BRUTE, affecting, run_armor_check(affecting, "melee"))
return
-/mob/living/carbon/human/meteorhit(O as obj)
- for(var/mob/M in viewers(src, null))
- if ((M.client && !( M.blinded )))
- M.show_message("\red [src] has been hit by [O]", 1)
- if (health > 0)
- var/obj/item/organ/external/affecting = get_organ(pick("chest", "chest", "chest", "head"))
- if(!affecting) return
- if (istype(O, /obj/effect/immovablerod))
- if(affecting.take_damage(101, 0))
- UpdateDamageIcon()
- else
- if(affecting.take_damage((istype(O, /obj/effect/meteor/small) ? 10 : 25), 30))
- UpdateDamageIcon()
- updatehealth()
- return
-
/mob/living/carbon/human/proc/implant_loyalty(mob/living/carbon/human/M, override = FALSE) // Won't override by default.
if(!config.use_loyalty_implants && !override) return // Nuh-uh.
diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm
index 8c97286e3f..d7994b3a60 100644
--- a/code/modules/mob/living/carbon/metroid/metroid.dm
+++ b/code/modules/mob/living/carbon/metroid/metroid.dm
@@ -220,15 +220,6 @@
/mob/living/carbon/slime/attack_ui(slot)
return
-/mob/living/carbon/slime/meteorhit(O as obj)
- visible_message("[src] has been hit by [O]")
-
- adjustBruteLoss((istype(O, /obj/effect/meteor/small) ? 10 : 25))
- adjustFireLoss(30)
-
- updatehealth()
- return
-
/mob/living/carbon/slime/attack_hand(mob/living/carbon/human/M as mob)
..()
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index c0df651d4b..dd0ba82a56 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -452,17 +452,6 @@ var/list/ai_verbs_default = list(
return
-/mob/living/silicon/ai/meteorhit(obj/O as obj)
- for(var/mob/M in viewers(src, null))
- M.show_message(text("\red [] has been hit by []", src, O), 1)
- //Foreach goto(19)
- if (health > 0)
- adjustBruteLoss(30)
- if ((O.icon_state == "flaming"))
- adjustFireLoss(40)
- updatehealth()
- return
-
/mob/living/silicon/ai/reset_view(atom/A)
if(camera)
camera.set_light(0)
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 99e5684e4e..b0a27ad52f 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -169,17 +169,6 @@
if(3)
src << "You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all."
-// See software.dm for Topic()
-/mob/living/silicon/pai/meteorhit(obj/O as obj)
- for(var/mob/M in viewers(src, null))
- M.show_message(text("\red [] has been hit by []", src, O), 1)
- if (src.health > 0)
- src.adjustBruteLoss(30)
- if ((O.icon_state == "flaming"))
- src.adjustFireLoss(40)
- src.updatehealth()
- return
-
/mob/living/silicon/pai/proc/switchCamera(var/obj/machinery/camera/C)
if(istype(usr, /mob/living))
var/mob/living/U = usr
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index e71db5693d..c7a1d1145c 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -450,17 +450,6 @@
/mob/living/silicon/robot/restrained()
return 0
-/mob/living/silicon/robot/meteorhit(obj/O as obj)
- for(var/mob/M in viewers(src, null))
- M.show_message(text("\red [src] has been hit by [O]"), 1)
- //Foreach goto(19)
- if (health > 0)
- adjustBruteLoss(30)
- if ((O.icon_state == "flaming"))
- adjustFireLoss(40)
- updatehealth()
- return
-
/mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj)
..(Proj)
if(prob(75) && Proj.damage > 0) spark_system.start()
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index 8b51264460..6ae977735b 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -36,9 +36,6 @@
/obj/machinery/containment_field/ex_act(severity)
return 0
-/obj/machinery/containment_field/meteorhit()
- return 0
-
/obj/machinery/containment_field/HasProximity(atom/movable/AM as mob|obj)
if(istype(AM,/mob/living/silicon) && prob(40))
shock(AM)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 11606b3dc1..789a6b13d7 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -93,9 +93,6 @@
src.use_power = 1 */
return 1
-/obj/machinery/containment_field/meteorhit()
- return 0
-
/obj/machinery/power/emitter/process()
if(stat & (BROKEN))
return
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 2f38800637..5532f8ce9e 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -166,9 +166,6 @@ field_generator power level display
else
..()
-/obj/machinery/containment_field/meteorhit()
- return 0
-
/obj/machinery/field_generator/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj, /obj/item/projectile/beam))
power += Proj.damage * EMITTER_DAMAGE_POWER_TRANSFER
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
index 6ae932dee1..ec659eca58 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
@@ -163,12 +163,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
qdel(src)
return
-
-/obj/structure/particle_accelerator/meteorhit()
- if(prob(50))
- qdel(src)
- return
-
/obj/structure/particle_accelerator/update_icon()
switch(construction_state)
if(0,1)
@@ -351,12 +345,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
return
-/obj/machinery/particle_accelerator/meteorhit()
- if(prob(50))
- qdel(src)
- return
-
-
/obj/machinery/particle_accelerator/proc/update_state()
return 0
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 9ef0aea43c..6f42a099f1 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -59,7 +59,7 @@
if(src)//Do not add to this if() statement, otherwise the meteor won't delete them
if(A)
- A.meteorhit(src)
+ A.ex_act(3)
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
for(var/mob/M in range(10, src))
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 7f6da07d67..9d742d726a 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -48,10 +48,6 @@
if (prob(50))
qdel(src)
-/obj/machinery/chem_master/meteorhit()
- qdel(src)
- return
-
/obj/machinery/chem_master/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob)
if(istype(B, /obj/item/weapon/reagent_containers/glass))
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index 57812535b6..7c43450ce2 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -83,10 +83,6 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
if(prob(50))
qdel(src)
-/obj/machinery/r_n_d/circuit_imprinter/meteorhit()
- qdel(src)
- return
-
/obj/machinery/r_n_d/circuit_imprinter/proc/TotalMaterials()
var/t = 0
for(var/f in materials)
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index 9b97fecd95..c6cbff2496 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -31,10 +31,6 @@ Note: Must be placed within 3 tiles of the R&D Console
T += S.rating
decon_mod = T * 0.1
-/obj/machinery/r_n_d/destructive_analyzer/meteorhit()
- qdel(src)
- return
-
/obj/machinery/r_n_d/destructive_analyzer/update_icon()
if(panel_open)
icon_state = "d_analyzer_t"
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index cca8f65b16..a2184d6b79 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -71,10 +71,6 @@
produce_heat()
delay = initial(delay)
-/obj/machinery/r_n_d/server/meteorhit(var/obj/O as obj)
- griefProtection()
- ..()
-
/obj/machinery/r_n_d/server/emp_act(severity)
griefProtection()
..()
diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm
index 15bfa973ed..9918afb068 100644
--- a/code/modules/shieldgen/emergency_shield.dm
+++ b/code/modules/shieldgen/emergency_shield.dm
@@ -59,13 +59,6 @@
..()
-/obj/machinery/shield/meteorhit()
- src.health -= max_health*0.75 //3/4 health as damage
- check_failure()
- opacity = 1
- spawn(20) if(src) opacity = 0
- return
-
/obj/machinery/shield/bullet_act(var/obj/item/projectile/Proj)
health -= Proj.damage
..()
@@ -225,13 +218,6 @@
update_icon()
return
-/obj/machinery/shieldgen/meteorhit(obj/O as obj)
- src.health -= max_health*0.25 //A quarter of the machine's health
- if (prob(5))
- src.malfunction = 1
- src.checkhp()
- return
-
/obj/machinery/shieldgen/ex_act(severity)
switch(severity)
if(1.0)
diff --git a/code/modules/shieldgen/energy_field.dm b/code/modules/shieldgen/energy_field.dm
index 074d3abbfa..7b26e1696f 100644
--- a/code/modules/shieldgen/energy_field.dm
+++ b/code/modules/shieldgen/energy_field.dm
@@ -27,11 +27,6 @@
/obj/effect/energy_field/bullet_act(var/obj/item/projectile/Proj)
Stress(Proj.damage / 10)
-/obj/effect/energy_field/meteorhit(obj/effect/meteor/M as obj)
- if(M)
- walk(M,0)
- Stress(2)
-
/obj/effect/energy_field/proc/Stress(var/severity)
strength -= severity
diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm
index 556e82cd0c..f28b001fef 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -119,10 +119,6 @@
..()
healthcheck()
-/obj/vehicle/meteorhit()
- explode()
- return
-
/obj/vehicle/blob_act()
src.health -= rand(20,40)*fire_dam_coeff
healthcheck()
diff --git a/icons/obj/meteor.dmi b/icons/obj/meteor.dmi
index 123a5bdf86..b9a83d510e 100644
Binary files a/icons/obj/meteor.dmi and b/icons/obj/meteor.dmi differ