Merge pull request #13063 from silicons/supermatter

Ports /tg/ supermatter - no more infinite stunlock death on charge inertia delaminations
This commit is contained in:
Putnam3145
2020-08-17 03:13:14 -07:00
committed by GitHub
80 changed files with 781 additions and 313 deletions
File diff suppressed because it is too large Load Diff
+29 -8
View File
@@ -180,16 +180,37 @@
reload()
/obj/machinery/bsa/full/proc/fire(mob/user, turf/bullseye)
var/turf/point = get_front_turf()
for(var/turf/T in getline(get_step(point,dir),get_target_turf()))
T.ex_act(EXPLODE_DEVASTATE)
point.Beam(get_target_turf(),icon_state="bsa_beam",time=50,maxdistance = world.maxx) //ZZZAP
message_admins("[ADMIN_LOOKUPFLW(user)] has launched an artillery strike.")
explosion(bullseye,ex_power,ex_power*2,ex_power*4)
reload()
var/turf/point = get_front_turf()
var/turf/target = get_target_turf()
var/atom/movable/blocker
for(var/T in getline(get_step(point, dir), target))
var/turf/tile = T
if(SEND_SIGNAL(tile, COMSIG_ATOM_BSA_BEAM) & COMSIG_ATOM_BLOCKS_BSA_BEAM)
blocker = tile
else
for(var/AM in tile)
var/atom/movable/stuff = AM
if(SEND_SIGNAL(stuff, COMSIG_ATOM_BSA_BEAM) & COMSIG_ATOM_BLOCKS_BSA_BEAM)
blocker = stuff
break
if(blocker)
target = tile
break
else
tile.ex_act(EXPLODE_DEVASTATE)
point.Beam(target, icon_state = "bsa_beam", time = 50, maxdistance = world.maxx) //ZZZAP
new /obj/effect/temp_visual/bsa_splash(point, dir)
if(!blocker)
message_admins("[ADMIN_LOOKUPFLW(user)] has launched an artillery strike targeting [ADMIN_VERBOSEJMP(bullseye)].")
log_game("[key_name(user)] has launched an artillery strike targeting [AREACOORD(bullseye)].")
explosion(bullseye, ex_power, ex_power*2, ex_power*4)
else
message_admins("[ADMIN_LOOKUPFLW(user)] has launched an artillery strike targeting [ADMIN_VERBOSEJMP(bullseye)] but it was blocked by [blocker] at [ADMIN_VERBOSEJMP(target)].")
log_game("[key_name(user)] has launched an artillery strike targeting [AREACOORD(bullseye)] but it was blocked by [blocker] at [AREACOORD(target)].")
/obj/machinery/bsa/full/proc/reload()
ready = FALSE
use_power(power_used_per_shot)