Adds The Qani-Laaca Sensory Computer and mephedrone. Ready for review into merge (#23926)

* Surely this will not have any critical balance implications

* Apply suggestions from code review

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* oops

* marm fixes

* fixes signal

* how on earth did I do that

* adds twitch to nanocalcium

* respect armor, lowers throw

* IPC can use, fuck up heartless people

* no crawl slowdown / meth

* *slightly* turns down the drug effect

* renames it will deal with pr desc soon

* finishes it

* rnd version empable

* Apply suggestions from code review

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Nerfs twitches visuals, due to a reported novastation bug where the visuals would endlessly stack

* Apply suggestions from code review

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>

* C-C-C-Changes

* Epilepsy Warning: Drug has vibrant visual effects!

* safety

* Apply suggestions from code review

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>

* removes twitch name, make mix explode

* oops

---------

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
This commit is contained in:
Qwertytoforty
2024-03-06 08:25:38 -05:00
committed by GitHub
parent e43fb1ce34
commit d7c7cacc52
28 changed files with 589 additions and 17 deletions
@@ -0,0 +1,56 @@
/**
* When attached to something, will make that thing shatter into shards on throw impact or z level falling
*/
/datum/element/shatters_when_thrown
element_flags = ELEMENT_BESPOKE
/// What type of item is spawned as a 'shard' once the shattering happens
var/obj/item/shard_type
/// How many shards total are made when the thing we're attached to shatters
var/number_of_shards
/// What sound plays when the thing we're attached to shatters
var/shattering_sound
/datum/element/shatters_when_thrown/Attach(datum/target, shard_type = /obj/item/shard, number_of_shards = 5, shattering_sound = "shatter")
. = ..()
if(!ismovable(target))
return ELEMENT_INCOMPATIBLE
src.shard_type = shard_type
src.number_of_shards = number_of_shards
src.shattering_sound = shattering_sound
RegisterSignal(target, COMSIG_MOVABLE_IMPACT, PROC_REF(on_throw_impact))
/datum/element/shatters_when_thrown/Detach(datum/target)
. = ..()
UnregisterSignal(target,COMSIG_MOVABLE_IMPACT)
/// Tells the parent to shatter if we are thrown and impact something
/datum/element/shatters_when_thrown/proc/on_throw_impact(datum/source, atom/hit_atom)
SIGNAL_HANDLER
INVOKE_ASYNC(src, PROC_REF(shatter), source, hit_atom)
/// Handles the actual shattering part, throwing shards of whatever is defined on the component everywhere
/datum/element/shatters_when_thrown/proc/shatter(atom/movable/source, atom/hit_atom)
var/generator/scatter_gen = generator("circle", 0, 48, NORMAL_RAND)
var/scatter_turf = get_turf(hit_atom)
for(var/obj/item/scattered_item as anything in source.contents)
scattered_item.forceMove(scatter_turf)
var/list/scatter_vector = scatter_gen.Rand()
scattered_item.pixel_x = scatter_vector[1]
scattered_item.pixel_y = scatter_vector[2]
for(var/iteration in 1 to number_of_shards)
var/obj/item/shard = new shard_type(scatter_turf)
shard.pixel_x = rand(-6, 6)
shard.pixel_y = rand(-6, 6)
playsound(scatter_turf, shattering_sound, 60, TRUE)
if(isobj(source))
var/obj/obj_source = source
obj_source.deconstruct(FALSE)
return
qdel(source)
+1 -1
View File
@@ -827,7 +827,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
name = "Binyat Wireless Hacking System Autoimplanter"
desc = "This implant will allow you to wirelessly emag from a distance. However, it will slightly burn you \
on use, and will be quite visual as you are emaging the object. \
Will not show on unupgraded body scanners."
Will not show on unupgraded body scanners. Incompatible with the Qani-Laaca Sensory Computer."
reference = "HKR"
item = /obj/item/autosurgeon/organ/syndicate/hackerman_deck
cost = 30 // Probably slightly less useful than an emag with heat / cooldown, but I am not going to make it cheaper or everyone picks it over emag
@@ -529,6 +529,18 @@
surplus = 0
cant_discount = TRUE
/datum/uplink_item/cyber_implants/sensory_enhancer
name = "Qani-Laaca Sensory Computer Autoimplanter"
desc = "Epilepsy Warning: Drug has vibrant visual effects! \
This spinal implant will inject mephedrone into your system, a powerful stimulant that causes slight heart damage.\
This stimulant will provide faster movement speed, slight pain resistance, immunity to crawling slowdown, and faster attack speed, though no antistun.\
Overdosing will cause massive heart damage, but will allow the user to dodge bullets for a minute and attack even faster.\
Two minute normal uptime, 5 minute cooldown, unlimited uses. Incompatible with the Binyat Wireless Hacking System."
reference = "QLSC"
item = /obj/item/autosurgeon/organ/syndicate/sensory_enhancer
cost = 40
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) //No, nukies do not get to dodge bullets.
/datum/uplink_item/badass/syndiecards
name = "Syndicate Playing Cards"
desc = "A special deck of space-grade playing cards with a mono-molecular edge and metal reinforcement, making them lethal weapons both when wielded as a blade and when thrown. \