mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-08-21 02:16:54 +01:00
- 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>
154 lines
4.8 KiB
Plaintext
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)
|