mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
Adds immovable pillars and immobable monoliths.
This commit is contained in:
@@ -96,6 +96,10 @@ var/image/list/w_overlays = list("wet" = image('icons/effects/water.dmi',icon_st
|
||||
/turf/simulated/floor/blob_act()
|
||||
return
|
||||
|
||||
/turf/simulated/floor/add_dust()
|
||||
if(!(locate(/obj/effect/decal/cleanable/dirt) in contents))
|
||||
getFromPool(/obj/effect/decal/cleanable/dirt,src)
|
||||
|
||||
turf/simulated/floor/update_icon()
|
||||
overlays -= floor_overlay
|
||||
|
||||
|
||||
@@ -273,6 +273,9 @@
|
||||
qdel (L)
|
||||
L = null
|
||||
|
||||
/turf/proc/add_dust()
|
||||
return
|
||||
|
||||
//Creates a new turf
|
||||
/turf/proc/ChangeTurf(var/turf/N, var/tell_universe=1, var/force_lighting_update = 0, var/allow = 1)
|
||||
if(loc)
|
||||
@@ -316,6 +319,10 @@
|
||||
if(connections)
|
||||
connections.erase_all()
|
||||
|
||||
if(N == /turf/space)
|
||||
for(var/obj/effect/decal/cleanable/C in src)
|
||||
qdel(C)//enough with footprints floating in space
|
||||
|
||||
if(istype(src,/turf/simulated))
|
||||
//Yeah, we're just going to rebuild the whole thing.
|
||||
//Despite this being called a bunch during explosions,
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
/turf/unsimulated/floor/attack_paw(user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/turf/unsimulated/floor/add_dust()
|
||||
if(!(locate(/obj/effect/decal/cleanable/dirt) in contents))
|
||||
new/obj/effect/decal/cleanable/dirt(src)
|
||||
|
||||
/turf/unsimulated/floor/cultify()
|
||||
if((icon_state != "cult")&&(icon_state != "cult-narsie"))
|
||||
name = "engraved floor"
|
||||
|
||||
@@ -760,6 +760,8 @@ var/global/floorIsLava = 0
|
||||
<A href='?src=\ref[src];secretsfun=gravanomalies'>Spawn a gravitational anomaly (aka lagitational anomolag)</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=timeanomalies'>Spawn wormholes</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=immovable'>Spawn an Immovable Rod</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=immovablebig'>Spawn an Immovable Pillar</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=immovablehyper'>Spawn an Immovable Monolith (highly destructive!)</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=meaty_gores'>Trigger an Organic Debris Field</A><BR>
|
||||
<BR>
|
||||
<A href='?src=\ref[src];secretsfun=blobwave'>Spawn a blob cluster</A><BR>
|
||||
|
||||
@@ -2867,6 +2867,16 @@
|
||||
feedback_add_details("admin_secrets_fun_used","IR")
|
||||
message_admins("[key_name_admin(usr)] has sent an immovable rod to the station", 1)
|
||||
immovablerod()
|
||||
if("immovablebig")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","IRB")
|
||||
message_admins("[key_name_admin(usr)] has sent an immovable pillar to the station.", 1)
|
||||
immovablerod(1)
|
||||
if("immovablehyper")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","IRH")
|
||||
message_admins("[key_name_admin(usr)] has sent an immovable monolith to the station. That one's gonna hurt.", 1)
|
||||
immovablerod(2)
|
||||
if("prison_break")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","PB")
|
||||
|
||||
@@ -12,8 +12,12 @@
|
||||
|
||||
/datum/event/immovable_rod/start()
|
||||
immovablerod()
|
||||
/datum/event/immovable_rod/big/start()
|
||||
immovablerod(1)
|
||||
/datum/event/immovable_rod/hyper/start()
|
||||
immovablerod(2)
|
||||
|
||||
/proc/immovablerod()
|
||||
/proc/immovablerod(var/hyperRod = 0)
|
||||
var/startx = 0
|
||||
var/starty = 0
|
||||
var/endy = 0
|
||||
@@ -39,7 +43,13 @@
|
||||
endx = rand((world.maxx/2)-30,(world.maxx/2)+30)
|
||||
endy = rand((world.maxy/2)-30,(world.maxy/2)+30)
|
||||
|
||||
new /obj/item/projectile/immovablerod(locate(startx, starty, 1), locate(endx, endy, 1))
|
||||
switch(hyperRod)
|
||||
if(0)
|
||||
new /obj/item/projectile/immovablerod(locate(startx, starty, 1), locate(endx, endy, 1))
|
||||
if(1)
|
||||
new /obj/item/projectile/immovablerod/big(locate(startx, starty, 1), locate(endx, endy, 1))
|
||||
if(2)
|
||||
new /obj/item/projectile/immovablerod/hyper(locate(startx, starty, 1), locate(endx, endy, 1))
|
||||
|
||||
/obj/item/projectile/immovablerod
|
||||
name = "\improper Immovable Rod"
|
||||
@@ -51,6 +61,7 @@
|
||||
anchored = 1
|
||||
grillepasschance = 0
|
||||
mouse_opacity = 1
|
||||
var/clongSound = 'sound/effects/bang.ogg'
|
||||
|
||||
/obj/item/projectile/immovablerod/New(atom/start, atom/end)
|
||||
..()
|
||||
@@ -58,9 +69,31 @@
|
||||
if(end)
|
||||
throw_at(end)
|
||||
|
||||
/obj/item/projectile/immovablerod/big
|
||||
name = "\improper Immovable Pillar"
|
||||
icon = 'icons/obj/objects_64x64.dmi'
|
||||
pixel_x = -16
|
||||
pixel_y = -16
|
||||
clongSound = 'sound/effects/immovablerod_clong.ogg'
|
||||
|
||||
/obj/item/projectile/immovablerod/hyper
|
||||
name = "\improper Immovable Monolith"
|
||||
icon = 'icons/obj/objects_96x96.dmi'
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
lock_angle = 1
|
||||
clongSound = 'sound/effects/immovablerod_clong.ogg'
|
||||
|
||||
/obj/item/projectile/immovablerod/hyper/New()
|
||||
..()
|
||||
var/image/I = image('icons/obj/objects_96x96.dmi',"immrod_bottom")
|
||||
I.layer = layer-1
|
||||
I.plane = -1
|
||||
overlays += I
|
||||
|
||||
/obj/item/projectile/immovablerod/throw_at(atom/end)
|
||||
for(var/mob/dead/observer/people in observers)
|
||||
to_chat(people, "<span class = 'notice'>Immovable rod has been thrown at the station, <a href='?src=\ref[people];follow=\ref[src]'>Follow it</a></span>")
|
||||
to_chat(people, "<span class = 'notice'>\A [src] has been thrown at the station, <a href='?src=\ref[people];follow=\ref[src]'>Follow it</a></span>")
|
||||
original = end
|
||||
starting = loc
|
||||
current = loc
|
||||
@@ -94,16 +127,57 @@
|
||||
error -= distB
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/immovablerod/proc/break_stuff()
|
||||
if(loc.density)
|
||||
loc.ex_act(2)
|
||||
if(prob(25))
|
||||
clong()
|
||||
|
||||
/obj/item/projectile/immovablerod/big/break_stuff()
|
||||
if(loc && !istype(loc,/turf/space))
|
||||
if(loc.density)
|
||||
loc.ex_act(2)
|
||||
else
|
||||
loc.ex_act(3)
|
||||
if(istype(loc,/turf/simulated/floor))
|
||||
var/turf/simulated/floor/under = loc
|
||||
under.break_tile_to_plating()
|
||||
|
||||
for(var/turf/T in orange(loc,1))
|
||||
T.ex_act(3)
|
||||
|
||||
if(prob(50))
|
||||
clong()
|
||||
|
||||
/obj/item/projectile/immovablerod/hyper/break_stuff()
|
||||
if(loc && !istype(loc,/turf/space))
|
||||
loc.ex_act(1)
|
||||
for(var/turf/T in orange(loc,1))
|
||||
if(prob(50))
|
||||
if(istype(T,/turf/simulated/floor))
|
||||
var/turf/simulated/floor/under = T
|
||||
under.break_tile_to_plating()
|
||||
else
|
||||
T.ex_act(3)
|
||||
else
|
||||
T.ex_act(3)
|
||||
|
||||
for(var/turf/T in orange(loc,2))
|
||||
if(prob(50))
|
||||
T.ex_act(3)
|
||||
else
|
||||
T.add_dust()
|
||||
|
||||
if(prob(50))
|
||||
clong()
|
||||
|
||||
/obj/item/projectile/immovablerod/forceMove(atom/destination,var/no_tp=0)
|
||||
..()
|
||||
if(z != starting.z)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(loc.density)
|
||||
loc.ex_act(2)
|
||||
if(prob(25))
|
||||
clong()
|
||||
break_stuff()
|
||||
|
||||
for(var/atom/clong in loc)
|
||||
if(!clong.density)
|
||||
@@ -126,5 +200,6 @@
|
||||
clong()
|
||||
|
||||
/obj/item/projectile/immovablerod/proc/clong()
|
||||
playsound(src, 'sound/effects/bang.ogg', 50, 1)
|
||||
visible_message("CLANG")
|
||||
for (var/mob/M in range(loc,20))
|
||||
to_chat(M,"<FONT size=[max(0, 5 - round(get_dist(src, M)/4))]>CLANG!</FONT>")
|
||||
M.playsound_local(loc, clongSound, 100 - (get_dist(src,M)*5), 1)
|
||||
|
||||
@@ -81,6 +81,8 @@ var/list/impact_master = list()
|
||||
var/error = 0
|
||||
var/target_angle = 0
|
||||
|
||||
var/lock_angle = 0
|
||||
|
||||
var/override_starting_X = 0
|
||||
var/override_starting_Y = 0
|
||||
var/override_target_X = 0
|
||||
@@ -403,7 +405,8 @@ var/list/impact_master = list()
|
||||
//If the icon has not been added yet
|
||||
if( !("[icon_state]_angle[target_angle]" in bullet_master) )
|
||||
var/icon/I = new(icon,"[icon_state]_pixel") //Generate it.
|
||||
I.Turn(target_angle+45)
|
||||
if(!lock_angle)
|
||||
I.Turn(target_angle+45)
|
||||
bullet_master["[icon_state]_angle[target_angle]"] = I //And cache it!
|
||||
src.icon = bullet_master["[icon_state]_angle[target_angle]"]
|
||||
|
||||
@@ -628,7 +631,8 @@ var/list/impact_master = list()
|
||||
if(linear_movement)
|
||||
if( !("[icon_state][target_angle]" in bullet_master) )
|
||||
var/icon/I = new(initial(icon),"[icon_state]_pixel")
|
||||
I.Turn(target_angle+45)
|
||||
if(!lock_angle)
|
||||
I.Turn(target_angle+45)
|
||||
bullet_master["[icon_state]_angle[target_angle]"] = I
|
||||
src.icon = bullet_master["[icon_state]_angle[target_angle]"]
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 99 KiB |
BIN
icons/obj/objects_64x64.dmi
Normal file
BIN
icons/obj/objects_64x64.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 405 B |
BIN
icons/obj/objects_96x96.dmi
Normal file
BIN
icons/obj/objects_96x96.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
BIN
sound/effects/immovablerod_clong.ogg
Normal file
BIN
sound/effects/immovablerod_clong.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user