mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 02:34:00 +00:00
Ports /tg/'s meteor implementation.
Merges the two meteor events into one, and now takes severity into consideration instead. Including the basic meteors there are also new types ranging from flaming to radioactive which may drop appropriate types of ore.
This commit is contained in:
@@ -67,9 +67,6 @@
|
||||
return flags & INSERT_CONTAINER
|
||||
*/
|
||||
|
||||
/atom/proc/meteorhit(obj/meteor as obj)
|
||||
return
|
||||
|
||||
/atom/proc/allow_drop()
|
||||
return 1
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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("<span class='warning'>\The [user] hits \the [src] with \a [W]!</span>")
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -127,11 +127,6 @@ for reference:
|
||||
dismantle()
|
||||
return
|
||||
|
||||
/obj/structure/barricade/meteorhit()
|
||||
visible_message("<span class='danger'>\The [src] is smashed apart!</span>")
|
||||
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)
|
||||
|
||||
@@ -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)
|
||||
..()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -399,10 +399,6 @@
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
meteorhit()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
var/dat = {"<html>
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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("<span class='danger'>[user] strikes [src] with [I].</span>")
|
||||
if(health <= 0)
|
||||
for(var/mob/M in src)
|
||||
shatter(M)
|
||||
check_health()
|
||||
|
||||
/obj/structure/closet/statue/MouseDrop_T()
|
||||
return
|
||||
|
||||
@@ -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 ))
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ))
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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),
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
..()
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -220,15 +220,6 @@
|
||||
/mob/living/carbon/slime/attack_ui(slot)
|
||||
return
|
||||
|
||||
/mob/living/carbon/slime/meteorhit(O as obj)
|
||||
visible_message("<span class='warning'>[src] has been hit by [O]</span>")
|
||||
|
||||
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)
|
||||
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -169,17 +169,6 @@
|
||||
if(3)
|
||||
src << "<font color=green>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.</font>"
|
||||
|
||||
// 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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -119,10 +119,6 @@
|
||||
..()
|
||||
healthcheck()
|
||||
|
||||
/obj/vehicle/meteorhit()
|
||||
explode()
|
||||
return
|
||||
|
||||
/obj/vehicle/blob_act()
|
||||
src.health -= rand(20,40)*fire_dam_coeff
|
||||
healthcheck()
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 4.4 KiB |
Reference in New Issue
Block a user