Experimentor Strange Object Tweaks (#84982)

## About The Pull Request

De-costumed highlander skirts

Fixed bioscramble function not working for strange objects unless
dropped

Fixed the disguiser cardboard ID not overlaying propery

## Why It's Good For The Game

Guys I think I'm not good at testing (why doesnt range() work like that)

Please stop using a COSTUME subtype for NOT COSTUMES.

## Changelog

🆑

fix: Fixed sometimes obtaining the nodrop highlander kilt with relics
fix: Fixed bioscramble function not working for strange objects unless
dropped
fix: Fixed the disguiser cardboard ID not overlaying properly
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
This commit is contained in:
carlarctg
2024-07-18 23:58:12 +00:00
committed by GitHub
co-authored by Ghom
parent 30a5719669
commit 129c61b77e
2 changed files with 295 additions and 248 deletions
+30 -19
View File
@@ -574,11 +574,19 @@
COOLDOWN_DECLARE(cooldown)
//What visual theme this artefact has. Current possible choices: "prototype", "necrotech"
var/artifact_theme = "prototype"
var/datum/effect_system/spark_spread/sparks
/obj/item/relic/Initialize(mapload)
. = ..()
sparks = new()
sparks.set_up(5, 1, src)
sparks.attach(src)
random_themed_appearance()
/obj/item/relic/Destroy(force)
QDEL_NULL(sparks)
. = ..()
/obj/item/relic/proc/random_themed_appearance()
var/themed_name_prefix
var/themed_name_suffix
@@ -720,22 +728,26 @@
/obj/item/relic/proc/do_the_teleport(mob/user)
var/turf/userturf = get_turf(user)
if(loc == user && !is_centcom_level(userturf.z)) //Because Nuke Ops bringing this back on their shuttle, then looting the ERT area is 2fun4you!
visible_message(span_notice("[src] twists and bends, relocating itself!"))
throw_smoke(userturf)
do_teleport(user, userturf, 8, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE)
throw_smoke(get_turf(user))
warn_admins(user, "Teleport", 0)
//Because Nuke Ops bringing this back on their shuttle, then looting the ERT area is 2fun4you!
if(is_centcom_level(userturf.z))
return
var/to_teleport = ismovable(loc) ? loc : src
visible_message(span_notice("[to_teleport] twists and bends, relocating itself!"))
throw_smoke(get_turf(to_teleport))
do_teleport(to_teleport, userturf, 8, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE)
throw_smoke(get_turf(to_teleport))
warn_admins(user, "Teleport", 0)
// Creates a glass and fills it up with a drink.
/obj/item/relic/proc/drink_dispenser(mob/user)
var/obj/item/reagent_containers/cup/glass/drinkingglass/freebie = new(get_step_rand(user))
playsound(freebie, 'sound/effects/phasein.ogg', rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
playsound(freebie, SFX_SPARKS, rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
sparks.start()
addtimer(CALLBACK(src, PROC_REF(dispense_drink), freebie), 0.5 SECONDS)
/obj/item/relic/proc/dispense_drink(obj/item/reagent_containers/cup/glass/glasser)
playsound(glasser, 'sound/effects/phasein.ogg', rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
glasser.reagents.add_reagent(get_random_drink_id(), rand(glasser.volume * 0.3, glasser.volume))
playsound(glasser, SFX_SPARKS, rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
throw_smoke(get_turf(glasser))
// Scrambles your organs. 33% chance to delete after use.
@@ -747,7 +759,7 @@
/obj/item/relic/proc/scrambliticus(mob/user)
new /obj/effect/temp_visual/circle_wave/bioscrambler/light(get_turf(src))
playsound(src, 'sound/magic/cosmic_energy.ogg', vol = 50, vary = TRUE)
for(var/mob/living/carbon/nearby in hearers(2, src))
for(var/mob/living/carbon/nearby in range(2, get_turf(src))) //needs get_turf() to work
nearby.bioscramble(name)
playsound(nearby, SFX_SPARKS, rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
throw_smoke(get_turf(nearby))
@@ -838,7 +850,7 @@
// carbons always get a hat at least
var/mob/living/carbon/carbonius = user
//hat
var/obj/item/clothing/head/costume/disguise_hat = roll_costume(/obj/item/clothing/head/costume, HIDEMASK)
var/obj/item/clothing/head/costume/disguise_hat = roll_costume(ITEM_SLOT_HEAD, HIDEMASK)
carbonius.dropItemToGround(carbonius.head)
carbonius.equip_to_slot_or_del(disguise_hat, ITEM_SLOT_HEAD)
if(!ishuman(carbonius))
@@ -847,11 +859,11 @@
var/mob/living/carbon/human/humerus = carbonius
// uniform
var/obj/item/clothing/under/costume/disguise_uniform = roll_costume(/obj/item/clothing/under/costume)
var/obj/item/clothing/under/costume/disguise_uniform = roll_costume(ITEM_SLOT_ICLOTHING)
humerus.dropItemToGround(humerus.w_uniform)
humerus.equip_to_slot_or_del(disguise_uniform, ITEM_SLOT_ICLOTHING)
// suit
var/obj/item/clothing/suit/costume/disguise_suit = roll_costume(/obj/item/clothing/suit/costume)
var/obj/item/clothing/suit/costume/disguise_suit = roll_costume(ITEM_SLOT_OCLOTHING)
humerus.dropItemToGround(humerus.wear_suit)
humerus.equip_to_slot_or_del(disguise_suit, ITEM_SLOT_OCLOTHING)
// id
@@ -863,7 +875,6 @@
if(!card_id)
return
card_id.scribbled_name = "[pick(GLOB.first_names)] [pick(GLOB.last_names)]"
card_id.update_name()
card_id.details_colors = list(ready_random_color(), ready_random_color(), ready_random_color())
card_id.item_flags |= DROPDEL
@@ -872,17 +883,17 @@
if(random_trim.trim_state && random_trim.assignment)
card_id.scribbled_trim = replacetext(random_trim.trim_state, "trim_", "cardboard_")
card_id.scribbled_assignment = random_trim.assignment
card_id.update_overlays()
card_id.update_appearance()
REMOVE_TRAIT(user, TRAIT_NO_JUMPSUIT, REF(src))
/obj/item/relic/proc/roll_costume(type, flagcheck)
/obj/item/relic/proc/roll_costume(slot, flagcheck)
var/list/candidates = list()
for(var/obj/item/thingy as anything in subtypesof(type))
if(flagcheck && !(initial(thingy.flags_inv) & flagcheck))
for(var/obj/item/costume as anything in GLOB.all_autodrobe_items)
if(flagcheck && !(initial(costume.flags_inv) & flagcheck))
continue
if(isnull(initial(thingy.icon_state)))
if(slot && !(initial(costume.slot_flags) & slot))
continue
candidates |= thingy
candidates |= costume
var/obj/item/new_costume = pick(candidates)
new_costume = new new_costume()
new_costume.item_flags |= DROPDEL