mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 15:17:01 +01:00
Refactors space dust
Meteors spin renames meateors
This commit is contained in:
@@ -1,3 +1,17 @@
|
||||
/matrix/proc/TurnTo(old_angle, new_angle)
|
||||
. = new_angle - old_angle
|
||||
Turn(.) //BYOND handles cases such as -270, 360, 540 etc. DOES NOT HANDLE 180 TURNS WELL, THEY TWEEN AND LOOK LIKE SHIT
|
||||
|
||||
|
||||
/atom/proc/SpinAnimation(speed = 10)
|
||||
var/matrix/m120 = matrix(transform)
|
||||
m120.Turn(120)
|
||||
var/matrix/m240 = matrix(transform)
|
||||
m240.Turn(240)
|
||||
var/matrix/m360 = matrix(transform)
|
||||
speed /= 3 //Gives us 3 equal time segments for our three turns.
|
||||
//Why not one turn? Because byond will see that the start and finish are the same place and do nothing
|
||||
//Why not two turns? Because byond will do a flip instead of a turn
|
||||
animate(src, transform = m120, time = speed, loop = -1)
|
||||
animate(transform = m240, time = speed)
|
||||
animate(transform = m360, time = speed)
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
/var/list/meteorsB = list(/obj/effect/meteor/meaty=5, /obj/effect/meteor/meaty/xeno=1)
|
||||
|
||||
/var/list/meteorsC = list(/obj/effect/meteor/dust) //for space dust event
|
||||
|
||||
|
||||
/proc/meteor_wave(var/number = 50) //this proc's unused now.
|
||||
if(!ticker || wavesecret)
|
||||
@@ -82,6 +84,7 @@
|
||||
density = 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
|
||||
@@ -95,6 +98,7 @@
|
||||
icon_state = "dust"
|
||||
pass_flags = PASSTABLE | PASSGRILLE
|
||||
hits = 1
|
||||
hitpwr = 3
|
||||
meteorsound = 'sound/weapons/throwtap.ogg'
|
||||
meteordrop = /obj/item/weapon/ore/glass
|
||||
|
||||
@@ -125,7 +129,7 @@
|
||||
meteordrop = /obj/item/weapon/ore/uranium
|
||||
|
||||
/obj/effect/meteor/meaty
|
||||
name = "meateor"
|
||||
name = "meaty ore"
|
||||
icon_state = "meateor"
|
||||
desc = "Just... don't think too hard about where this thing came from."
|
||||
hits = 2
|
||||
@@ -140,9 +144,13 @@
|
||||
meteorgibs = /obj/effect/gibspawner/xeno
|
||||
|
||||
|
||||
/obj/effect/meteor/New()
|
||||
..()
|
||||
SpinAnimation()
|
||||
|
||||
/obj/effect/meteor/Bump(atom/A)
|
||||
if(A)
|
||||
A.ex_act(2)
|
||||
A.ex_act(hitpwr)
|
||||
playsound(src.loc, meteorsound, 40, 1)
|
||||
if(--src.hits <= 0)
|
||||
make_debris()
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
// if(ticker.mode.name == "nuclear emergency") return
|
||||
if(A.z > 6) return
|
||||
if (A.x <= TRANSITIONEDGE || A.x >= (world.maxx - TRANSITIONEDGE - 1) || A.y <= TRANSITIONEDGE || A.y >= (world.maxy - TRANSITIONEDGE - 1))
|
||||
if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust))
|
||||
if(istype(A, /obj/effect/meteor))
|
||||
qdel(A)
|
||||
return
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
var/list/y_arr
|
||||
|
||||
if(src.x <= 1)
|
||||
if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust))
|
||||
if(istype(A, /obj/effect/meteor))
|
||||
qdel(A)
|
||||
return
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
A.loc.Entered(A)
|
||||
|
||||
else if (src.y >= world.maxy)
|
||||
if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust))
|
||||
if(istype(A, /obj/effect/meteor))
|
||||
qdel(A)
|
||||
return
|
||||
var/list/cur_pos = src.get_global_map_pos()
|
||||
|
||||
+12
-101
@@ -1,108 +1,19 @@
|
||||
/datum/round_event_control/dust
|
||||
/datum/round_event_control/meteor_wave/dust
|
||||
name = "Minor Space Dust"
|
||||
typepath = /datum/round_event/dust
|
||||
typepath = /datum/round_event/meteor_wave/dust
|
||||
weight = 300
|
||||
max_occurrences = 10000
|
||||
max_occurrences = 1000
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/dust
|
||||
var/qnty = 1
|
||||
/datum/round_event/meteor_wave/dust
|
||||
startWhen = 1
|
||||
endWhen = 2
|
||||
|
||||
/datum/round_event/dust/setup()
|
||||
qnty = rand(1,5)
|
||||
/datum/round_event/meteor_wave/dust/announce()
|
||||
return
|
||||
|
||||
/datum/round_event/dust/start()
|
||||
while(qnty-- > 0)
|
||||
new /obj/effect/space_dust/weak()
|
||||
/datum/round_event/meteor_wave/dust/start()
|
||||
spawn_meteors(1, meteorsC)
|
||||
|
||||
|
||||
/obj/effect/space_dust
|
||||
name = "Space Dust"
|
||||
desc = "Dust in space."
|
||||
icon = 'icons/obj/meteor.dmi'
|
||||
icon_state = "space_dust"
|
||||
density = 1
|
||||
anchored = 1
|
||||
var/strength = 2 //ex_act severity number
|
||||
var/life = 2 //how many things we hit before qdel(src)
|
||||
|
||||
weak
|
||||
strength = 3
|
||||
life = 1
|
||||
|
||||
strong
|
||||
strength = 1
|
||||
life = 6
|
||||
|
||||
super
|
||||
strength = 1
|
||||
life = 40
|
||||
|
||||
|
||||
New()
|
||||
var/startx = 0
|
||||
var/starty = 0
|
||||
var/endy = 0
|
||||
var/endx = 0
|
||||
var/startside = pick(cardinal)
|
||||
|
||||
switch(startside)
|
||||
if(NORTH)
|
||||
starty = world.maxy-(TRANSITIONEDGE+1)
|
||||
startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
|
||||
endy = TRANSITIONEDGE
|
||||
endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
|
||||
if(EAST)
|
||||
starty = rand((TRANSITIONEDGE+1),world.maxy-(TRANSITIONEDGE+1))
|
||||
startx = world.maxx-(TRANSITIONEDGE+1)
|
||||
endy = rand(TRANSITIONEDGE, world.maxy-TRANSITIONEDGE)
|
||||
endx = TRANSITIONEDGE
|
||||
if(SOUTH)
|
||||
starty = (TRANSITIONEDGE+1)
|
||||
startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
|
||||
endy = world.maxy-TRANSITIONEDGE
|
||||
endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
|
||||
if(WEST)
|
||||
starty = rand((TRANSITIONEDGE+1), world.maxy-(TRANSITIONEDGE+1))
|
||||
startx = (TRANSITIONEDGE+1)
|
||||
endy = rand(TRANSITIONEDGE,world.maxy-TRANSITIONEDGE)
|
||||
endx = world.maxx-TRANSITIONEDGE
|
||||
var/goal = locate(endx, endy, 1)
|
||||
src.x = startx
|
||||
src.y = starty
|
||||
src.z = 1
|
||||
spawn(0)
|
||||
walk_towards(src, goal, 1)
|
||||
return
|
||||
|
||||
|
||||
Bump(atom/A)
|
||||
spawn(0)
|
||||
if(prob(50))
|
||||
for(var/mob/M in range(10, src))
|
||||
if(!M.stat && !istype(M, /mob/living/silicon/ai))
|
||||
shake_camera(M, 3, 1)
|
||||
if (A)
|
||||
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
|
||||
|
||||
if(ismob(A))
|
||||
A.ex_act(strength)
|
||||
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
|
||||
|
||||
life--
|
||||
if(life <= 0)
|
||||
walk(src,0)
|
||||
qdel(src)
|
||||
return 0
|
||||
return
|
||||
|
||||
|
||||
Bumped(atom/A)
|
||||
Bump(A)
|
||||
return
|
||||
|
||||
|
||||
ex_act(severity)
|
||||
qdel(src)
|
||||
return
|
||||
/datum/round_event/meteor_wave/dust/tick()
|
||||
return
|
||||
@@ -1,11 +1,11 @@
|
||||
/datum/round_event_control/meteor_wave/meaty
|
||||
name = "Meateor Wave"
|
||||
name = "Meaty Ore Wave"
|
||||
typepath = /datum/round_event/meteor_wave/meaty
|
||||
weight = 1
|
||||
max_occurrences = 1
|
||||
|
||||
/datum/round_event/meteor_wave/meaty/announce()
|
||||
command_alert("Meateors have been detected on collision course with the station.", "Oh Crap, Get The Mop.")
|
||||
command_alert("Meaty ores have been detected on collision course with the station.", "Oh Crap, Get The Mop.")
|
||||
world << sound('sound/AI/meteors.ogg')
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user