mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 09:54:52 +00:00
153 lines
4.5 KiB
Plaintext
153 lines
4.5 KiB
Plaintext
//generates a component in the global component cache, either random based on lowest or a specific component
|
|
/proc/generate_cache_component(specific_component_id, atom/A)
|
|
if(!specific_component_id)
|
|
specific_component_id = get_weighted_component_id()
|
|
GLOB.clockwork_component_cache[specific_component_id]++
|
|
if(A)
|
|
var/component_animation_type = get_component_animation_type(specific_component_id)
|
|
new component_animation_type(get_turf(A))
|
|
update_slab_info()
|
|
return specific_component_id
|
|
|
|
//returns a chosen component id based on the lowest amount of that component in the global cache, the global cache plus the slab if there are caches, or the slab if there are no caches.
|
|
/proc/get_weighted_component_id(obj/item/clockwork/slab/storage_slab)
|
|
. = list()
|
|
if(storage_slab)
|
|
if(GLOB.clockwork_caches)
|
|
for(var/i in GLOB.clockwork_component_cache)
|
|
.[i] = max(MAX_COMPONENTS_BEFORE_RAND - LOWER_PROB_PER_COMPONENT*(GLOB.clockwork_component_cache[i] + storage_slab.stored_components[i]), 1)
|
|
else
|
|
for(var/i in GLOB.clockwork_component_cache)
|
|
.[i] = max(MAX_COMPONENTS_BEFORE_RAND - LOWER_PROB_PER_COMPONENT*storage_slab.stored_components[i], 1)
|
|
else
|
|
for(var/i in GLOB.clockwork_component_cache)
|
|
.[i] = max(MAX_COMPONENTS_BEFORE_RAND - LOWER_PROB_PER_COMPONENT*GLOB.clockwork_component_cache[i], 1)
|
|
for(var/obj/structure/destructible/clockwork/massive/celestial_gateway/G in GLOB.all_clockwork_objects)
|
|
if(G.still_needs_components())
|
|
for(var/i in G.required_components)
|
|
if(!G.required_components[i])
|
|
. -= i
|
|
break
|
|
. = pickweight(.)
|
|
|
|
//returns a component name from a component id
|
|
/proc/get_component_name(id)
|
|
switch(id)
|
|
if(BELLIGERENT_EYE)
|
|
return "Belligerent Eye"
|
|
if(VANGUARD_COGWHEEL)
|
|
return "Vanguard Cogwheel"
|
|
if(GEIS_CAPACITOR)
|
|
return "Geis Capacitor"
|
|
if(REPLICANT_ALLOY)
|
|
return "Replicant Alloy"
|
|
if(HIEROPHANT_ANSIBLE)
|
|
return "Hierophant Ansible"
|
|
else
|
|
return null
|
|
|
|
//returns a component acronym from a component id
|
|
/proc/get_component_acronym(id)
|
|
switch(id)
|
|
if(BELLIGERENT_EYE)
|
|
return "BE"
|
|
if(VANGUARD_COGWHEEL)
|
|
return "VC"
|
|
if(GEIS_CAPACITOR)
|
|
return "GC"
|
|
if(REPLICANT_ALLOY)
|
|
return "RA"
|
|
if(HIEROPHANT_ANSIBLE)
|
|
return "HA"
|
|
else
|
|
return null
|
|
|
|
//returns a component id from a component name
|
|
/proc/get_component_id(name)
|
|
switch(name)
|
|
if("Belligerent Eye")
|
|
return BELLIGERENT_EYE
|
|
if("Vanguard Cogwheel")
|
|
return VANGUARD_COGWHEEL
|
|
if("Geis Capacitor")
|
|
return GEIS_CAPACITOR
|
|
if("Replicant Alloy")
|
|
return REPLICANT_ALLOY
|
|
if("Hierophant Ansible")
|
|
return HIEROPHANT_ANSIBLE
|
|
else
|
|
return null
|
|
|
|
//returns a component spanclass from a component id
|
|
/proc/get_component_span(id)
|
|
switch(id)
|
|
if(BELLIGERENT_EYE)
|
|
return "neovgre"
|
|
if(VANGUARD_COGWHEEL)
|
|
return "inathneq"
|
|
if(GEIS_CAPACITOR)
|
|
return "sevtug"
|
|
if(REPLICANT_ALLOY)
|
|
return "nezbere"
|
|
if(HIEROPHANT_ANSIBLE)
|
|
return "nzcrentr"
|
|
else
|
|
return "brass"
|
|
|
|
//returns a component color from a component id, but with brighter colors for the darkest
|
|
/proc/get_component_color_bright(id)
|
|
switch(id)
|
|
if(BELLIGERENT_EYE)
|
|
return "#880020"
|
|
if(REPLICANT_ALLOY)
|
|
return "#5A6068"
|
|
else
|
|
return get_component_color(id)
|
|
|
|
//returns a component color from a component id
|
|
/proc/get_component_color(id)
|
|
switch(id)
|
|
if(BELLIGERENT_EYE)
|
|
return "#6E001A"
|
|
if(VANGUARD_COGWHEEL)
|
|
return "#1E8CE1"
|
|
if(GEIS_CAPACITOR)
|
|
return "#AF0AAF"
|
|
if(REPLICANT_ALLOY)
|
|
return "#42474D"
|
|
if(HIEROPHANT_ANSIBLE)
|
|
return "#DAAA18"
|
|
else
|
|
return "#BE8700"
|
|
|
|
//returns a type for a floating component animation from a component id
|
|
/proc/get_component_animation_type(id)
|
|
switch(id)
|
|
if(BELLIGERENT_EYE)
|
|
return /obj/effect/overlay/temp/ratvar/component
|
|
if(VANGUARD_COGWHEEL)
|
|
return /obj/effect/overlay/temp/ratvar/component/cogwheel
|
|
if(GEIS_CAPACITOR)
|
|
return /obj/effect/overlay/temp/ratvar/component/capacitor
|
|
if(REPLICANT_ALLOY)
|
|
return /obj/effect/overlay/temp/ratvar/component/alloy
|
|
if(HIEROPHANT_ANSIBLE)
|
|
return /obj/effect/overlay/temp/ratvar/component/ansible
|
|
else
|
|
return null
|
|
|
|
//returns a type for a component from a component id
|
|
/proc/get_component_type(id)
|
|
switch(id)
|
|
if(BELLIGERENT_EYE)
|
|
return /obj/item/clockwork/component/belligerent_eye
|
|
if(VANGUARD_COGWHEEL)
|
|
return /obj/item/clockwork/component/vanguard_cogwheel
|
|
if(GEIS_CAPACITOR)
|
|
return /obj/item/clockwork/component/geis_capacitor
|
|
if(REPLICANT_ALLOY)
|
|
return /obj/item/clockwork/component/replicant_alloy
|
|
if(HIEROPHANT_ANSIBLE)
|
|
return /obj/item/clockwork/component/hierophant_ansible
|
|
else
|
|
return null |