mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2025-12-10 18:53:12 +00:00
* move phoronlock define * t * force rename * nuke unneeded things * don't do that * tgui sync? * changes * unit testing module * backend * tools update * aaah * go and stay go * path replace * move everything * toss out more stuff * remove * fine those can stay * dependencies.sh * ruin datum move + rename * level assets why did you guys put the turfs in my atmosphers folder grr * more moving * basemap, force stuff * fix that desync meme * move more stuff * move those too * repath * get rid of useless initializers * hacky patchy * reservations * alright * tgui * changelog example * checksum * md5 * errors * more * turf empty * stop * fix * bad kwarg * let's get those in again * alright * rid of that * huh * newlines * newlines * folder * mood * woops * readme * might as well trim now * let's go * fuck it tether isn't being used anyways lol * ok * empty files go * tether is demoted * sorry but this goes too * okay * make that work too * ok * wow. * whew * Fix * fixes * ok * sigh * fix * fix * aah. * rust_g logging * update rust g file * fix * funny * Fix * map issues * fix * initialize hints * solves some problems * those too * ok * pills * let's do that. * hit that too * runtime * add that too * alright * fix * fix * fix * Fix * add * fix * wildwest, what have they done to you... * do that too' git push * fixes * fixes * fixes * pack this tightly * let's not have empty files * sigh * fix * FUCK OFF * fix icon * rip old mapmerge * zz * woo yeah woo yeah * logging * fix * better logs * GRRRRRR * last commit?? * awful
39 lines
1.5 KiB
Plaintext
39 lines
1.5 KiB
Plaintext
/datum/component/shrapnel
|
|
var/projectile_type
|
|
var/radius // shoots a projectile for every turf on this radius from the hit target
|
|
var/override_projectile_range
|
|
|
|
/datum/component/shrapnel/Initialize(projectile_type, radius=1, override_projectile_range)
|
|
if(!isgun(parent) && !ismachinery(parent) && !isstructure(parent))
|
|
return COMPONENT_INCOMPATIBLE
|
|
|
|
src.projectile_type = projectile_type
|
|
src.radius = radius
|
|
src.override_projectile_range = override_projectile_range
|
|
|
|
/datum/component/shrapnel/RegisterWithParent()
|
|
if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc
|
|
RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
|
|
|
|
/datum/component/shrapnel/UnregisterFromParent()
|
|
UnregisterSignal(parent, list(COMSIG_PROJECTILE_ON_HIT))
|
|
|
|
/datum/component/shrapnel/proc/projectile_hit(atom/fired_from, atom/movable/firer, atom/target, Angle)
|
|
do_shrapnel(firer, target)
|
|
|
|
/datum/component/shrapnel/proc/do_shrapnel(mob/firer, atom/target)
|
|
if(radius < 1)
|
|
return
|
|
var/turf/target_turf = get_turf(target)
|
|
for(var/turf/shootat_turf in RANGE_TURFS(radius, target) - RANGE_TURFS(radius-1, target))
|
|
var/obj/item/projectile/P = new projectile_type(target_turf)
|
|
|
|
//Shooting Code:
|
|
P.range = radius+1
|
|
if(override_projectile_range)
|
|
P.range = override_projectile_range
|
|
P.preparePixelProjectile(shootat_turf, target)
|
|
P.firer = firer // don't hit ourself that would be really annoying
|
|
P.permutated += target // don't hit the target we hit already with the flak
|
|
P.fire()
|