This commit is contained in:
silicons
2021-04-26 23:32:33 -07:00
parent a415453540
commit 1585d1c2be
6 changed files with 23 additions and 26 deletions
+19 -18
View File
@@ -6,7 +6,7 @@
stop = TRUE
return ..()
/datum/yelling_wavefill/proc/run(atom/source, dist = 50)
/datum/yelling_wavefill/proc/run_wavefill(atom/source, dist = 50)
collected = list()
do_run(source, dist)
// gc
@@ -14,6 +14,7 @@
collected = null
// blatantly copied from wave explosion code
// check explosion2.dm for what this does and how it works.
/datum/yelling_wavefill/proc/do_run(atom/source, dist)
var/list/edges = list(source = (NORTH|SOUTH|EAST|WEST))
var/list/powers = list(source = dist)
@@ -34,24 +35,8 @@
var/list/turf/diagonal_powers = list()
var/list/turf/diagonal_powers_max = list()
while(edges.len)
// process cardinals
for(var/i in edges)
T = i
power = powers[T]
dir = edges[T]
RUN_YELL(T, power, dir)
powers_returned[T] = returned
if(returned)
// get hearing atoms
else
continue
// diagonal power calc when multiple things hit one diagonal
#define CALCULATE_DIAGONAL_POWER(existing, adding, maximum) min(maximum, existing + adding)
// diagonal hitting cardinal expansion
#define CALCULATE_DIAGONAL_CROSS_POWER(existing, adding) max(existing, adding)
// insanity define to mark the next set of cardinals.
#define CARDINAL_MARK(ndir, cdir, edir) \
if(edir & cdir) { \
expanding = get_step(T,ndir); \
@@ -79,6 +64,22 @@
DIAGONAL_SUBSTEP(turn(ndir, 90), turn(cdir, 90), edir); \
DIAGONAL_SUBSTEP(turn(ndir, -90), turn(cdir, -90), edir); \
};
while(edges.len)
// to_chat(world, "DEBUG: cycle start edges [english_list_assoc(edges)]")
// process cardinals
for(var/i in edges)
T = i
power = powers[T]
dir = edges[T]
RUN_YELL(T, power, dir)
powers_returned[T] = returned
if(returned)
// get hearing atoms
else
continue
CARDINAL_MARK(NORTH, NORTH, dir)
CARDINAL_MARK(SOUTH, SOUTH, dir)
CARDINAL_MARK(EAST, EAST, dir)
@@ -129,6 +130,6 @@
/proc/yelling_wavefill(atom/source, dist = 50)
var/datum/yelling_wavefill/Y = new
Y.run(source, dist)
Y.run_wavefill(source, dist)
return Y.collected || list()
@@ -299,7 +299,7 @@
/obj/item/energy_katana,
/obj/item/hierophant_club,
/obj/item/his_grace,
/obj/item/gun/ballistic/minigun,
/obj/item/gun/energy/minigun,
/obj/item/gun/ballistic/automatic/l6_saw,
/obj/item/gun/magic/staff/chaos,
/obj/item/gun/magic/staff/spellblade,
@@ -230,7 +230,6 @@
var/list/determined = determine_parry_method(TRUE, TRUE)
if(!islist(determined))
return FALSE
var/method = determined[1]
var/datum/block_parry_data/data = return_block_parry_datum(determined[2])
if(!data.parry_automatic_enabled)
return FALSE
@@ -10,7 +10,7 @@
e_cost = 100
/obj/item/ammo_casing/energy/electrode/hos
projectile_type = /obj/item/projectile/energy/electrode/hos
projectile_type = /obj/item/projectile/energy/electrode/security/hos
e_cost = 100
/obj/item/ammo_casing/energy/electrode/spec
@@ -20,7 +20,6 @@
fire_sound = 'sound/weapons/gunshot.ogg'
e_cost = 100
/obj/item/ammo_casing/energy/electrode/old
e_cost = 1000
@@ -90,7 +90,6 @@
update_icon()
user.update_inv_back()
/obj/item/gun/energy/minigun
name = "laser gatling gun"
desc = "An advanced laser cannon with an incredible rate of fire. Requires a bulky backpack power source to use."
@@ -76,6 +76,8 @@
var/wait_step = CEILING(spray_delay * INVERSE(range), world.tick_lag)
var/obj/effect/decal/chempuff/D = new /obj/effect/decal/chempuff(get_turf(src), stream_mode, wait_step, range, stream_mode? 1 : range)
var/turf/T = get_turf(src)
if(!T)
return
log_reagent("SPRAY: [key_name(usr)] fired [src] ([REF(src)]) [COORD(T)] at [A] ([REF(A)]) [COORD(A)] (chempuff: [D.reagents.log_list()])")
D.create_reagents(amount_per_transfer_from_this, NONE, NO_REAGENTS_VALUE)
if(stream_mode)
@@ -83,9 +85,6 @@
else
reagents.trans_to(D, amount_per_transfer_from_this, 1/range)
D.color = mix_color_from_reagents(D.reagents.reagent_list)
var/turf/T = get_turf(src)
if(!T)
return
last_spray = world.time
D.run(A)