[MIRROR] Fixes various immovable rod bugs, adds logging (#1568)

* Fixes various immovable rod bugs (#54770)

* Fixes various immovable rod bugs, adds logging

Co-authored-by: skoglol <33292112+kriskog@users.noreply.github.com>
This commit is contained in:
SkyratBot
2020-11-04 14:53:11 +01:00
committed by GitHub
co-authored by skoglol
parent 3f00f9a4d9
commit 0f737f3b1d
2 changed files with 24 additions and 18 deletions
+19 -16
View File
@@ -1,4 +1,6 @@
#define DEFAULT_METEOR_LIFETIME 1800
#define MAP_EDGE_PAD 5
GLOBAL_VAR_INIT(meteor_wave_delay, 625) //minimum wait between waves in tenths of seconds
//set to at least 100 unless you want evarr ruining every round
@@ -46,17 +48,17 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
var/startx
switch(startSide)
if(NORTH)
starty = world.maxy-(TRANSITIONEDGE+1)
startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
starty = world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD)
startx = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD))
if(EAST)
starty = rand((TRANSITIONEDGE+1),world.maxy-(TRANSITIONEDGE+1))
startx = world.maxx-(TRANSITIONEDGE+1)
starty = rand((TRANSITIONEDGE + MAP_EDGE_PAD),world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD))
startx = world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD)
if(SOUTH)
starty = (TRANSITIONEDGE+1)
startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
starty = (TRANSITIONEDGE + MAP_EDGE_PAD)
startx = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD))
if(WEST)
starty = rand((TRANSITIONEDGE+1), world.maxy-(TRANSITIONEDGE+1))
startx = (TRANSITIONEDGE+1)
starty = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD))
startx = (TRANSITIONEDGE + MAP_EDGE_PAD)
. = locate(startx, starty, Z)
/proc/spaceDebrisFinishLoc(startSide, Z)
@@ -64,17 +66,17 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
var/endx
switch(startSide)
if(NORTH)
endy = (TRANSITIONEDGE+1)
endx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
endy = (TRANSITIONEDGE + MAP_EDGE_PAD)
endx = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD))
if(EAST)
endy = rand((TRANSITIONEDGE+1), world.maxy-(TRANSITIONEDGE+1))
endx = (TRANSITIONEDGE+1)
endy = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD))
endx = (TRANSITIONEDGE + MAP_EDGE_PAD)
if(SOUTH)
endy = world.maxy-(TRANSITIONEDGE+1)
endx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
endy = world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD)
endx = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD))
if(WEST)
endy = rand((TRANSITIONEDGE+1),world.maxy-(TRANSITIONEDGE+1))
endx = world.maxx-(TRANSITIONEDGE+1)
endy = rand((TRANSITIONEDGE + MAP_EDGE_PAD),world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD))
endx = world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD)
. = locate(endx, endy, Z)
///////////////////////
@@ -381,3 +383,4 @@ GLOBAL_LIST_INIT(meteorsSPOOKY, list(/obj/effect/meteor/pumpkin))
meteorsound = pick('sound/hallucinations/im_here1.ogg','sound/hallucinations/im_here2.ogg')
//////////////////////////
#undef DEFAULT_METEOR_LIFETIME
#undef MAP_EDGE_PAD
+5 -2
View File
@@ -22,6 +22,8 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
var/aimed = alert("Aimed at current location?","Sniperod", "Yes", "No")
if(aimed == "Yes")
special_target = get_turf(usr)
message_admins("[key_name_admin(usr)] has aimed an immovable rod at [AREACOORD(special_target)].")
log_admin("[key_name_admin(usr)] has aimed an immovable rod at [AREACOORD(special_target)].")
/datum/round_event/immovable_rod
announceWhen = 5
@@ -34,8 +36,9 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
var/startside = pick(GLOB.cardinals)
var/z = pick(SSmapping.levels_by_trait(ZTRAIT_STATION))
var/turf/startT = spaceDebrisStartLoc(startside, z)
var/turf/endT = spaceDebrisFinishLoc(startside, z)
var/turf/endT = get_edge_target_turf(get_random_station_turf(), turn(startside, 180))
var/atom/rod = new /obj/effect/immovablerod(startT, endT, C.special_target)
C.special_target = null //Cleanup for future event rolls.
announce_to_ghosts(rod)
/obj/effect/immovablerod
@@ -106,7 +109,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
. = ..()
/obj/effect/immovablerod/Moved()
if((z != z_original) || (loc == destination))
if((z != z_original))
qdel(src)
if(special_target && loc == get_turf(special_target))
complete_trajectory()