mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user