Adds immovable pillars and immobable monoliths.

This commit is contained in:
Shadowmech88
2017-01-18 21:10:50 -06:00
parent b8c141820d
commit 40ce2eb702
11 changed files with 117 additions and 11 deletions

View File

@@ -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

View File

@@ -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,

View File

@@ -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"

View File

@@ -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>

View File

@@ -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")

View File

@@ -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)

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 B

BIN
icons/obj/objects_96x96.dmi Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.