Files
b4a124e557 [IDB IGNORE] cyborg refactor: icons, chassis, modules base (#6929)
- separates the composition of cyborgs into modules, iconsets, chassis,
upgrades
- modules / chassis atm can provide items, so can upgrades; in the
future we will want to probably generalize the item API a bit so
components can work
- chassis now can (unimplemented) easily be made to give different stats
- reorganizes all the cyborg sprites
- adds generalized item mounts with redirection support and tears out
legacy cyborg items
- entirely rebalances modules & writes some new lawsets in for future
use

---------

Co-authored-by: silicons <silicons@silicons.dev>
2026-01-13 18:39:38 +00:00

154 lines
4.8 KiB
Plaintext

// TODO: IOU swarmers.
// /obj/structure/cult/pylon/swarm
// name = "Swarm Construct"
// desc = "A small pod."
// icon = 'icons/mob/swarmbot.dmi'
// icon_state = "pod"
// light_color = "#00B2B2"
// shatter_message = "The energetic field shatters!"
// impact_sound = 'sound/effects/Glasshit.ogg'
// shatter_sound = 'sound/effects/phasein.ogg'
// var/list/active_beams
// /obj/structure/cult/pylon/swarm/CanAllowThrough(atom/movable/mover, turf/target)
// if(istype(mover, /mob/living))
// var/mob/living/L = mover
// if(L.has_iff_faction(MOB_IFF_FACTION_SWARMER))
// return TRUE
// else if(istype(mover, /obj/projectile))
// var/obj/projectile/P = mover
// if(isliving(P.firer))
// var/mob/living/L = P.firer
// if(L.has_iff_faction(MOB_IFF_FACTION_SWARMER))
// return TRUE
// return ..()
// /obj/structure/cult/pylon/swarm/Initialize(mapload)
// . = ..()
// active_beams = list()
// /obj/structure/cult/pylon/swarm/Destroy()
// for(var/datum/beam_legacy/B in active_beams)
// QDEL_NULL(B)
// active_beams = null
// ..()
// /obj/structure/cult/pylon/swarm/pylonhit(var/damage)
// if(!isbroken)
// if(prob(1 + damage * 3))
// visible_message("<span class='danger'>[shatter_message]</span>")
// STOP_PROCESSING(SSobj, src)
// playsound(get_turf(src),shatter_sound, 75, 1)
// isbroken = 1
// density = 0
// icon_state = "[initial(icon_state)]-broken"
// set_light(0)
// /obj/structure/cult/pylon/swarm/attackpylon(mob/user as mob, var/damage)
// if(!isbroken)
// if(prob(1 + damage * 3))
// user.visible_message(
// "<span class='danger'>[user] smashed \the [src]!</span>",
// "<span class='warning'>You hit \the [src], and its crystal breaks apart!</span>",
// "You hear a tinkle of crystalline shards."
// )
// STOP_PROCESSING(SSobj, src)
// user.do_attack_animation(src)
// playsound(get_turf(src),shatter_sound, 75, 1)
// isbroken = 1
// density = 0
// icon_state = "[initial(icon_state)]-broken"
// set_light(0)
// else
// to_chat(user, "You hit \the [src]!")
// playsound(get_turf(src),impact_sound, 75, 1)
// else
// if(prob(damage * 2))
// to_chat(user, "You pulverize what was left of \the [src]!")
// qdel(src)
// else
// to_chat(user, "You hit \the [src]!")
// playsound(get_turf(src),impact_sound, 75, 1)
// /obj/structure/cult/pylon/swarm/pylon_unique()
// . = ..()
// return .
// /obj/structure/cult/pylon/swarm/zp_well
// name = "Zero Point Well"
// desc = "Infinite cosmic power, itty bitty usability."
// icon_state = "trap"
// description_info = "An infinitely small point in space that may or may not be used to supply power to some form of advanced machine."
// activation_cooldown = 0 // These things run constantly.
// /obj/structure/cult/pylon/swarm/zp_well/pylon_unique()
// . = ..()
// for(var/mob/living/silicon/robot/drone/swarm/S in view(3, src))
// var/has_beam = FALSE
// for(var/datum/beam_legacy/B in active_beams)
// if(B.target == S)
// has_beam = TRUE
// break
// if(!has_beam)
// active_beams |= Beam(S,icon='icons/effects/beam.dmi',icon_state="holo_beam",time=3 SECONDS,maxdistance=3,beam_type = /obj/effect/ebeam)
// if(S.cell)
// S.cell.give(rand(5, 30))
// . = TRUE
// return .
// /obj/structure/cult/pylon/swarm/defender
// name = "Zero Point Wall"
// desc = "Infinite cosmic power, itty bitty passability."
// icon_state = "barricade"
// description_info = "An infinitely small point in space spread upon infinitely many finitely-bounded points in space. Nice."
// /obj/structure/cult/pylon/swarm/defender/pylonhit(var/damage)
// if(!isbroken)
// if(prob(1 + damage * 3) && round(damage * 0.8) >= 30)
// visible_message("<span class='danger'>[shatter_message]</span>")
// STOP_PROCESSING(SSobj, src)
// playsound(get_turf(src),shatter_sound, 75, 1)
// isbroken = 1
// density = 0
// icon_state = "[initial(icon_state)]-broken"
// set_light(0)
// /obj/structure/cult/pylon/swarm/defender/attackpylon(mob/user as mob, var/damage)
// if(!isbroken)
// if(prob(1 + damage * 3) && round(damage * 0.8) >= 25)
// user.visible_message(
// "<span class='danger'>[user] smashed \the [src]!</span>",
// "<span class='warning'>You hit \the [src], and its crystal breaks apart!</span>",
// "You hear a tinkle of crystalline shards."
// )
// STOP_PROCESSING(SSobj, src)
// user.do_attack_animation(src)
// playsound(get_turf(src),shatter_sound, 75, 1)
// isbroken = 1
// density = 0
// icon_state = "[initial(icon_state)]-broken"
// set_light(0)
// else
// to_chat(user, "You hit \the [src]!")
// playsound(get_turf(src),impact_sound, 75, 1)
// else
// if(prob(damage * 2))
// to_chat(user, "You pulverize what was left of \the [src]!")
// qdel(src)
// else
// to_chat(user, "You hit \the [src]!")
// playsound(get_turf(src),impact_sound, 75, 1)