mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 01:34:01 +00:00
## About The Pull Request moves all implementations (im aware of) for "Im a parent type dont spawn me please" to the datum layer to standardized behavior adds a standerized proc for filtering out "bad" items that we dont want spawning. applies to it the subtype vendor, gifts, and a new spawner and mystery box for a random gun (neither playerfacing) "port" of https://github.com/shiptest-ss13/Shiptest/pull/4621 https://github.com/user-attachments/assets/22f6f0b2-b44e-411a-b3dc-6b97dc0287aa small warning: I dont have EVERY abstract type defined right now but, ive done a good enough job for now. Im tired of data entry rn ## Why It's Good For The Game standardizing behavior. Might be a micro hit to performance however having this lets us not rely on icon state to determine whether something is a parent type and makes it much easier to tell something is a parent type (could be applied further to things like admin spawning menus and things like that). need feedback on if this is actually good for the game. ## Changelog 🆑 add: Soda cans show up in the silver slime drink table. add: Examine tag for items that are not mean to show up ingame. refactor: Standardizes how gifts rule out abstract types. fix: gifts no longer check if something has an inhand, massively expanding the list of potential items. /🆑
84 lines
3.0 KiB
Plaintext
84 lines
3.0 KiB
Plaintext
/obj/item/chromosome
|
|
name = "blank chromosome"
|
|
icon = 'icons/obj/science/chromosomes.dmi'
|
|
icon_state = ""
|
|
abstract_type = /obj/item/chromosome
|
|
desc = "A tube holding chromosomal data."
|
|
force = 0
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
|
|
///If set, this will affect the stability of the mutation, lower is better.
|
|
var/stabilizer_coeff
|
|
///If set, this will affect the chance of backfire, lower is better.
|
|
var/synchronizer_coeff
|
|
///If set, this will affect the overall strength of the mutation, higher is better.
|
|
var/power_coeff //higher is better, affects "strength"
|
|
///If set, this will affect the cooldowns of actions specific to a mutation, lower is better.
|
|
var/energy_coeff
|
|
|
|
///The chance of a specific mutation of being generated compared to others when generate_chromosome() is called.
|
|
var/weight = 5
|
|
|
|
/obj/item/chromosome/proc/can_apply(datum/mutation/mutation)
|
|
if(!mutation || QDELETED(mutation.owner) || mutation.can_chromosome != CHROMOSOME_NONE)
|
|
return FALSE
|
|
if(!isnull(stabilizer_coeff) && (mutation.stabilizer_coeff != MUTATION_COEFFICIENT_UNMODIFIABLE))
|
|
return TRUE
|
|
if(!isnull(synchronizer_coeff) && (mutation.synchronizer_coeff != MUTATION_COEFFICIENT_UNMODIFIABLE))
|
|
return TRUE
|
|
if(!isnull(power_coeff) && (mutation.power_coeff != MUTATION_COEFFICIENT_UNMODIFIABLE))
|
|
return TRUE
|
|
if(!isnull(energy_coeff) && (mutation.energy_coeff != MUTATION_COEFFICIENT_UNMODIFIABLE))
|
|
return TRUE
|
|
|
|
/obj/item/chromosome/proc/apply(datum/mutation/mutation)
|
|
if(mutation.stabilizer_coeff != MUTATION_COEFFICIENT_UNMODIFIABLE && stabilizer_coeff)
|
|
mutation.stabilizer_coeff = stabilizer_coeff
|
|
if(mutation.synchronizer_coeff != MUTATION_COEFFICIENT_UNMODIFIABLE && synchronizer_coeff)
|
|
mutation.synchronizer_coeff = synchronizer_coeff
|
|
if(mutation.power_coeff != MUTATION_COEFFICIENT_UNMODIFIABLE && power_coeff)
|
|
mutation.power_coeff = power_coeff
|
|
if(mutation.energy_coeff != MUTATION_COEFFICIENT_UNMODIFIABLE && energy_coeff)
|
|
mutation.energy_coeff = energy_coeff
|
|
mutation.can_chromosome = CHROMOSOME_USED
|
|
mutation.chromosome_name = name
|
|
mutation.setup()
|
|
qdel(src)
|
|
|
|
/proc/generate_chromosome()
|
|
var/static/list/chromosomes
|
|
if(!chromosomes)
|
|
chromosomes = list()
|
|
for(var/A in subtypesof(/obj/item/chromosome))
|
|
var/obj/item/chromosome/CM = A
|
|
if(!initial(CM.weight))
|
|
break
|
|
chromosomes[A] = initial(CM.weight)
|
|
return pick_weight(chromosomes)
|
|
|
|
|
|
/obj/item/chromosome/stabilizer
|
|
name = "stabilizer chromosome"
|
|
desc = "A chromosome that reduces mutation instability by 20%."
|
|
icon_state = "stabilizer"
|
|
stabilizer_coeff = 0.8
|
|
weight = 1
|
|
|
|
/obj/item/chromosome/synchronizer
|
|
name = "synchronizer chromosome"
|
|
desc = "A chromosome that reduces mutation knockback and downsides by 50%."
|
|
icon_state = "synchronizer"
|
|
synchronizer_coeff = 0.5
|
|
|
|
/obj/item/chromosome/power
|
|
name = "power chromosome"
|
|
desc = "A chromosome that increases mutation power by 50%."
|
|
icon_state = "power"
|
|
power_coeff = 1.5
|
|
|
|
/obj/item/chromosome/energy
|
|
name = "energetic chromosome"
|
|
desc = "A chromosome that reduces action based mutation cooldowns by 50%."
|
|
icon_state = "energy"
|
|
energy_coeff = 0.5
|