mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
Merge branch 'master' of https://github.com/Skyrat-SS13/Skyrat-tg
This commit is contained in:
@@ -66,6 +66,9 @@ GLOBAL_VAR(command_name)
|
||||
new_station_name = name + " "
|
||||
name = ""
|
||||
|
||||
if(prob(1))
|
||||
random = 999999999 //ridiculously long name in written numbers
|
||||
|
||||
// Prefix
|
||||
var/holiday_name = pick(SSevents.holidays)
|
||||
if(holiday_name)
|
||||
@@ -94,9 +97,11 @@ GLOBAL_VAR(command_name)
|
||||
if(4)
|
||||
new_station_name += pick(GLOB.phonetic_alphabet)
|
||||
if(5)
|
||||
new_station_name += pick(GLOB.numbers_as_words)
|
||||
new_station_name += convert_integer_to_words(rand(-1,99), capitalise = TRUE)
|
||||
if(13)
|
||||
new_station_name += pick("13","XIII","Thirteen")
|
||||
if(999999999)
|
||||
new_station_name = "Space Station " + convert_integer_to_words(rand(111111111,999999999), capitalise = TRUE)
|
||||
return new_station_name
|
||||
|
||||
/proc/syndicate_name()
|
||||
|
||||
@@ -810,6 +810,113 @@ GLOBAL_LIST_INIT(binary, list("0","1"))
|
||||
else
|
||||
return "[number]\th"
|
||||
|
||||
/**
|
||||
* Takes a 1, 2 or 3 digit number and returns it in words. Don't call this directly, use convert_integer_to_words() instead.
|
||||
*
|
||||
* Arguments:
|
||||
* * number - 1, 2 or 3 digit number to convert.
|
||||
* * carried_string - Text to append after number is converted to words, e.g. "million", as in "eighty million".
|
||||
* * capitalise - Whether the number it returns should be capitalised or not, e.g. "Eighty-Eight" vs. "eighty-eight".
|
||||
*/
|
||||
/proc/int_to_words(number, carried_string, capitalise = FALSE)
|
||||
var/static/list/tens = list("", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety")
|
||||
var/static/list/ones = list("one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen")
|
||||
number = round(number)
|
||||
|
||||
if(number > 999)
|
||||
return
|
||||
|
||||
if(number <= 0)
|
||||
return
|
||||
|
||||
var/list/string = list()
|
||||
|
||||
if(number >= 100)
|
||||
string += int_to_words(number / 100, "hundred")
|
||||
number = round(number % 100)
|
||||
if(!number)
|
||||
return string + carried_string
|
||||
string += "and"
|
||||
|
||||
//if number is more than 19, divide it
|
||||
if(number > 19)
|
||||
var/temp_num = tens[number / 10]
|
||||
if(number % 10)
|
||||
temp_num += "-"
|
||||
if(capitalise)
|
||||
temp_num += capitalize(ones[number % 10])
|
||||
else
|
||||
temp_num += ones[number % 10]
|
||||
string += temp_num
|
||||
else
|
||||
string += ones[number]
|
||||
|
||||
if(carried_string)
|
||||
string += carried_string
|
||||
|
||||
return string
|
||||
|
||||
/**
|
||||
* Takes an integer up to 999,999,999 and returns it in words. Works with negative numbers and 0.
|
||||
*
|
||||
* Arguments:
|
||||
* * number - Integer up to 999,999,999 to convert.
|
||||
* * capitalise - Whether the number it returns should be capitalised or not, e.g. "Eighty Million" vs. "eighty million".
|
||||
*/
|
||||
/proc/convert_integer_to_words(number, capitalise = FALSE)
|
||||
|
||||
if(!isnum(number))
|
||||
return
|
||||
|
||||
var/negative = FALSE
|
||||
if(number < 0)
|
||||
number = abs(number)
|
||||
negative = TRUE
|
||||
|
||||
number = round(number)
|
||||
|
||||
if(number > 999999999)
|
||||
return negative ? -number : number
|
||||
|
||||
if(number == 0)
|
||||
return capitalise ? "Zero" : "zero"
|
||||
|
||||
//stores word representation of given number
|
||||
var/list/output = list()
|
||||
|
||||
//handles millions
|
||||
var/millions = int_to_words(((number / 1000000) % 1000), "million", capitalise)
|
||||
if(length(millions))
|
||||
output += millions
|
||||
|
||||
///handles thousands
|
||||
var/thousands = int_to_words(((number / 1000) % 1000), "thousand", capitalise)
|
||||
if(length(thousands))
|
||||
output += thousands
|
||||
|
||||
if(length(output) && number % 1000 && (number % 1000) < 100) //e.g. One Thousand And Ninety-Nine, instead of One Thousand Ninety-Nine
|
||||
output += "and"
|
||||
|
||||
//handles digits at ones, tens and hundreds places (if any)
|
||||
output += int_to_words((number % 1000), "", capitalise)
|
||||
|
||||
for(var/index in 1 to length(output))
|
||||
if(isnull(output[index]))
|
||||
output -= output[index]
|
||||
continue
|
||||
if(capitalise)
|
||||
output[index] = capitalize(output[index])
|
||||
|
||||
if(!length(output))
|
||||
return negative ? -number : number
|
||||
|
||||
var/number_in_words
|
||||
if(negative)
|
||||
number_in_words += capitalise ? "Negative " : "negative "
|
||||
|
||||
number_in_words += output.Join(" ")
|
||||
|
||||
return number_in_words
|
||||
|
||||
/proc/random_capital_letter()
|
||||
return uppertext(pick(GLOB.alphabet))
|
||||
|
||||
@@ -861,7 +861,7 @@
|
||||
//Small sprites
|
||||
/datum/action/small_sprite
|
||||
name = "Toggle Giant Sprite"
|
||||
desc = "Others will always see you as giant"
|
||||
desc = "Others will always see you as giant."
|
||||
icon_icon = 'icons/mob/actions/actions_xeno.dmi'
|
||||
button_icon_state = "smallqueen"
|
||||
background_icon_state = "bg_alien"
|
||||
@@ -875,8 +875,6 @@
|
||||
|
||||
/datum/action/small_sprite/megafauna
|
||||
icon_icon = 'icons/mob/actions/actions_xeno.dmi'
|
||||
button_icon_state = "smallqueen"
|
||||
background_icon_state = "bg_alien"
|
||||
small_icon = 'icons/mob/lavaland/lavaland_monsters.dmi'
|
||||
|
||||
/datum/action/small_sprite/megafauna/drake
|
||||
@@ -896,6 +894,12 @@
|
||||
small_icon_state = "arachnid_mini"
|
||||
background_icon_state = "bg_demon"
|
||||
|
||||
/datum/action/small_sprite/space_dragon
|
||||
small_icon = 'icons/mob/carp.dmi'
|
||||
small_icon_state = "carp"
|
||||
icon_icon = 'icons/mob/carp.dmi'
|
||||
button_icon_state = "carp"
|
||||
|
||||
/datum/action/small_sprite/Trigger(trigger_flags)
|
||||
..()
|
||||
if(!small)
|
||||
|
||||
@@ -30,40 +30,50 @@
|
||||
|
||||
/obj/structure/frame/machine/examine(user)
|
||||
. = ..()
|
||||
if(state == 3 && req_components && req_component_names)
|
||||
var/hasContent = FALSE
|
||||
var/requires = "It requires"
|
||||
if(state != 3)
|
||||
return
|
||||
|
||||
for(var/i = 1 to req_components.len)
|
||||
var/tname = req_components[i]
|
||||
var/amt = req_components[tname]
|
||||
if(amt == 0)
|
||||
continue
|
||||
var/use_and = i == req_components.len
|
||||
requires += "[(hasContent ? (use_and ? ", and" : ",") : "")] [amt] [amt == 1 ? req_component_names[tname] : "[req_component_names[tname]]\s"]"
|
||||
hasContent = TRUE
|
||||
if(!length(req_components))
|
||||
. += span_info("It requires no components.")
|
||||
return .
|
||||
|
||||
if(!req_component_names)
|
||||
stack_trace("[src]'s req_components list has items but its req_component_names list is null!")
|
||||
return
|
||||
|
||||
var/list/nice_list = list()
|
||||
for(var/atom/component as anything in req_components)
|
||||
if(!ispath(component))
|
||||
stack_trace("An item in [src]'s req_components list is not a path!")
|
||||
continue
|
||||
if(!req_components[component])
|
||||
continue
|
||||
|
||||
nice_list += list("[req_components[component]] [req_component_names[component]]\s")
|
||||
. += span_info("It requires [english_list(nice_list, "no more components")].")
|
||||
|
||||
if(hasContent)
|
||||
. += "[requires]."
|
||||
else
|
||||
. += "It does not require any more components."
|
||||
|
||||
/obj/structure/frame/machine/proc/update_namelist()
|
||||
if(!req_components)
|
||||
return
|
||||
|
||||
req_component_names = new()
|
||||
for(var/tname in req_components)
|
||||
if(ispath(tname, /obj/item/stack))
|
||||
var/obj/item/stack/S = tname
|
||||
var/singular_name = initial(S.singular_name)
|
||||
if(singular_name)
|
||||
req_component_names[tname] = singular_name
|
||||
else
|
||||
req_component_names[tname] = initial(S.name)
|
||||
else
|
||||
var/obj/O = tname
|
||||
req_component_names[tname] = initial(O.name)
|
||||
req_component_names = list()
|
||||
for(var/atom/component_path as anything in req_components)
|
||||
if(!ispath(component_path))
|
||||
continue
|
||||
|
||||
req_component_names[component_path] = initial(component_path.name)
|
||||
|
||||
if(ispath(component_path, /obj/item/stack))
|
||||
var/obj/item/stack/stack_path = component_path
|
||||
if(initial(stack_path.singular_name))
|
||||
req_component_names[component_path] = initial(stack_path.singular_name)
|
||||
continue
|
||||
|
||||
if(ispath(component_path, /obj/item/stock_parts))
|
||||
var/obj/item/stock_parts/stock_part = component_path
|
||||
if(initial(stock_part.base_name))
|
||||
req_component_names[component_path] = initial(stock_part.base_name)
|
||||
|
||||
/obj/structure/frame/machine/proc/get_req_components_amt()
|
||||
var/amt = 0
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
flick("ecto_sniffer_flick", src)
|
||||
playsound(loc, 'sound/machines/ectoscope_beep.ogg', 75)
|
||||
use_power(10)
|
||||
say("Reporting [pick(world.file2list("strings/spook_levels.txt"))] levels of paranormal activity!")
|
||||
if(activator?.ckey)
|
||||
ectoplasmic_residues += activator.ckey
|
||||
addtimer(CALLBACK(src, .proc/clear_residue, activator.ckey), 15 SECONDS)
|
||||
|
||||
@@ -94,10 +94,28 @@ micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells.
|
||||
|
||||
/obj/item/circuitboard/machine/examine(mob/user)
|
||||
. = ..()
|
||||
if(LAZYLEN(req_components))
|
||||
var/list/nice_list = list()
|
||||
for(var/atom/component as anything in req_components)
|
||||
if(!ispath(component))
|
||||
continue
|
||||
nice_list += list("[req_components[component]] [initial(component.name)]")
|
||||
. += span_notice("Required components: [english_list(nice_list)].")
|
||||
if(!LAZYLEN(req_components))
|
||||
. += span_info("It requires no components.")
|
||||
return .
|
||||
|
||||
var/list/nice_list = list()
|
||||
for(var/atom/component_path as anything in req_components)
|
||||
if(!ispath(component_path))
|
||||
continue
|
||||
|
||||
var/component_name = initial(component_path.name)
|
||||
var/component_amount = req_components[component_path]
|
||||
|
||||
if(ispath(component_path, /obj/item/stack))
|
||||
var/obj/item/stack/stack_path = component_path
|
||||
if(initial(stack_path.singular_name))
|
||||
component_name = initial(stack_path.singular_name) //e.g. "glass sheet" vs. "glass"
|
||||
|
||||
else if(ispath(component_path, /obj/item/stock_parts))
|
||||
var/obj/item/stock_parts/stock_part = component_path
|
||||
if(initial(stock_part.base_name))
|
||||
component_name = initial(stock_part.base_name)
|
||||
|
||||
nice_list += list("[component_amount] [component_name]\s")
|
||||
|
||||
. += span_info("It requires [english_list(nice_list)].")
|
||||
|
||||
@@ -270,84 +270,6 @@
|
||||
foodtypes = GRAIN
|
||||
venue_value = FOOD_PRICE_NORMAL
|
||||
|
||||
/obj/item/food/deepfryholder
|
||||
name = "Deep Fried Foods Holder Obj"
|
||||
desc = "If you can see this description the code for the deep fryer fucked up."
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = ""
|
||||
bite_consumption = 2
|
||||
|
||||
/obj/item/food/deepfryholder/MakeEdible()
|
||||
AddComponent(/datum/component/edible,\
|
||||
initial_reagents = food_reagents,\
|
||||
food_flags = food_flags,\
|
||||
foodtypes = foodtypes,\
|
||||
volume = max_volume,\
|
||||
eat_time = eat_time,\
|
||||
tastes = tastes,\
|
||||
eatverbs = eatverbs,\
|
||||
bite_consumption = bite_consumption,\
|
||||
on_consume = CALLBACK(src, .proc/On_Consume))
|
||||
|
||||
|
||||
/obj/item/food/deepfryholder/Initialize(mapload, obj/item/fried)
|
||||
if(!fried)
|
||||
stack_trace("A deepfried object was created with no fried target")
|
||||
return INITIALIZE_HINT_QDEL
|
||||
. = ..()
|
||||
name = fried.name //We'll determine the other stuff when it's actually removed
|
||||
appearance = fried.appearance
|
||||
layer = initial(layer)
|
||||
plane = initial(plane)
|
||||
lefthand_file = fried.lefthand_file
|
||||
righthand_file = fried.righthand_file
|
||||
inhand_icon_state = fried.inhand_icon_state
|
||||
desc = fried.desc
|
||||
w_class = fried.w_class
|
||||
slowdown = fried.slowdown
|
||||
equip_delay_self = fried.equip_delay_self
|
||||
equip_delay_other = fried.equip_delay_other
|
||||
strip_delay = fried.strip_delay
|
||||
species_exception = fried.species_exception
|
||||
item_flags = fried.item_flags
|
||||
obj_flags = fried.obj_flags
|
||||
inhand_x_dimension = fried.inhand_x_dimension
|
||||
inhand_y_dimension = fried.inhand_y_dimension
|
||||
|
||||
if(!(SEND_SIGNAL(fried, COMSIG_ITEM_FRIED, src) & COMSIG_FRYING_HANDLED)) //If frying is handled by signal don't do the defaault behavior.
|
||||
fried.forceMove(src)
|
||||
|
||||
|
||||
/obj/item/food/deepfryholder/Destroy()
|
||||
if(contents)
|
||||
QDEL_LIST(contents)
|
||||
return ..()
|
||||
|
||||
/obj/item/food/deepfryholder/proc/On_Consume(eater, feeder)
|
||||
if(contents)
|
||||
QDEL_LIST(contents)
|
||||
|
||||
|
||||
/obj/item/food/deepfryholder/proc/fry(cook_time = 30)
|
||||
switch(cook_time)
|
||||
if(0 to 15)
|
||||
add_atom_colour(rgb(166, 103, 54), FIXED_COLOUR_PRIORITY)
|
||||
name = "lightly-fried [name]"
|
||||
desc = "[desc] It's been lightly fried in a deep fryer."
|
||||
if(16 to 49)
|
||||
add_atom_colour(rgb(103, 63, 24), FIXED_COLOUR_PRIORITY)
|
||||
name = "fried [name]"
|
||||
desc = "[desc] It's been fried, increasing its tastiness value by [rand(1, 75)]%."
|
||||
if(50 to 59)
|
||||
add_atom_colour(rgb(63, 23, 4), FIXED_COLOUR_PRIORITY)
|
||||
name = "deep-fried [name]"
|
||||
desc = "[desc] Deep-fried to perfection."
|
||||
if(60 to INFINITY)
|
||||
add_atom_colour(rgb(33, 19, 9), FIXED_COLOUR_PRIORITY)
|
||||
name = "\proper the physical manifestation of the very concept of fried foods"
|
||||
desc = "A heavily-fried... something. Who can tell anymore?"
|
||||
foodtypes |= FRIED
|
||||
|
||||
/obj/item/food/butterbiscuit
|
||||
name = "butter biscuit"
|
||||
desc = "Well butter my biscuit!"
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
/obj/item/food/deepfryholder
|
||||
name = "Deep Fried Foods Holder Obj"
|
||||
desc = "If you can see this description the code for the deep fryer fucked up."
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = ""
|
||||
bite_consumption = 2
|
||||
|
||||
/obj/item/food/deepfryholder/MakeEdible()
|
||||
AddComponent(/datum/component/edible,\
|
||||
initial_reagents = food_reagents,\
|
||||
food_flags = food_flags,\
|
||||
foodtypes = foodtypes,\
|
||||
volume = max_volume,\
|
||||
eat_time = eat_time,\
|
||||
tastes = tastes,\
|
||||
eatverbs = eatverbs,\
|
||||
bite_consumption = bite_consumption,\
|
||||
on_consume = CALLBACK(src, .proc/On_Consume))
|
||||
|
||||
|
||||
/obj/item/food/deepfryholder/Initialize(mapload, obj/item/fried)
|
||||
if(!fried)
|
||||
stack_trace("A deepfried object was created with no fried target")
|
||||
return INITIALIZE_HINT_QDEL
|
||||
. = ..()
|
||||
name = fried.name //We'll determine the other stuff when it's actually removed
|
||||
appearance = fried.appearance
|
||||
layer = initial(layer)
|
||||
plane = initial(plane)
|
||||
lefthand_file = fried.lefthand_file
|
||||
righthand_file = fried.righthand_file
|
||||
inhand_icon_state = fried.inhand_icon_state
|
||||
desc = fried.desc
|
||||
w_class = fried.w_class
|
||||
slowdown = fried.slowdown
|
||||
equip_delay_self = fried.equip_delay_self
|
||||
equip_delay_other = fried.equip_delay_other
|
||||
strip_delay = fried.strip_delay
|
||||
species_exception = fried.species_exception
|
||||
item_flags = fried.item_flags
|
||||
obj_flags = fried.obj_flags
|
||||
inhand_x_dimension = fried.inhand_x_dimension
|
||||
inhand_y_dimension = fried.inhand_y_dimension
|
||||
|
||||
if(!(SEND_SIGNAL(fried, COMSIG_ITEM_FRIED, src) & COMSIG_FRYING_HANDLED)) //If frying is handled by signal don't do the defaault behavior.
|
||||
fried.forceMove(src)
|
||||
|
||||
|
||||
/obj/item/food/deepfryholder/Destroy()
|
||||
if(contents)
|
||||
QDEL_LIST(contents)
|
||||
return ..()
|
||||
|
||||
/obj/item/food/deepfryholder/proc/On_Consume(eater, feeder)
|
||||
if(contents)
|
||||
QDEL_LIST(contents)
|
||||
|
||||
|
||||
/obj/item/food/deepfryholder/proc/fry(cook_time = 30)
|
||||
switch(cook_time)
|
||||
if(0 to 15)
|
||||
add_atom_colour(rgb(166, 103, 54), FIXED_COLOUR_PRIORITY)
|
||||
name = "lightly-fried [name]"
|
||||
desc = "[desc] It's been lightly fried in a deep fryer."
|
||||
if(16 to 49)
|
||||
add_atom_colour(rgb(103, 63, 24), FIXED_COLOUR_PRIORITY)
|
||||
name = "fried [name]"
|
||||
desc = "[desc] It's been fried, increasing its tastiness value by [rand(1, 75)]%."
|
||||
if(50 to 59)
|
||||
add_atom_colour(rgb(63, 23, 4), FIXED_COLOUR_PRIORITY)
|
||||
name = "deep-fried [name]"
|
||||
desc = "[desc] Deep-fried to perfection."
|
||||
if(60 to INFINITY)
|
||||
add_atom_colour(rgb(33, 19, 9), FIXED_COLOUR_PRIORITY)
|
||||
name = "\proper the physical manifestation of the very concept of fried foods"
|
||||
desc = "A heavily-fried... something. Who can tell anymore?"
|
||||
foodtypes |= FRIED
|
||||
@@ -111,8 +111,8 @@
|
||||
|
||||
/obj/item/storage/toolbox/mechanical/old/clean/proc/calc_damage()
|
||||
var/power = 0
|
||||
for (var/obj/item/stack/telecrystal/TC in get_all_contents())
|
||||
power += TC.amount
|
||||
for (var/obj/item/stack/telecrystal/stored_crystals in get_all_contents())
|
||||
power += (stored_crystals.amount / 2)
|
||||
force = 19 + power
|
||||
throwforce = 22 + power
|
||||
|
||||
|
||||
@@ -118,6 +118,8 @@ GLOBAL_LIST_INIT(department_order_cooldowns, list(
|
||||
if(!pack)
|
||||
say("Something went wrong!")
|
||||
CRASH("requested supply pack id \"[id]\" not found!")
|
||||
if(pack.hidden || pack.DropPodOnly || pack.special)
|
||||
return
|
||||
var/name = "*None Provided*"
|
||||
var/rank = "*None Provided*"
|
||||
var/ckey = usr.ckey
|
||||
|
||||
@@ -171,6 +171,7 @@
|
||||
if(scanned_tray.myseed)
|
||||
returned_message += "*** [span_bold("[scanned_tray.myseed.plantname]")] ***\n"
|
||||
returned_message += "- Plant Age: [span_notice("[scanned_tray.age]")]\n"
|
||||
returned_message += "- Plant Health: [span_notice("[scanned_tray.plant_health]")]\n"
|
||||
returned_message += scan_plant_stats(scanned_tray.myseed)
|
||||
else
|
||||
returned_message += span_bold("No plant found.\n")
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
icon_state = "mulebot0"
|
||||
density = TRUE
|
||||
move_resist = MOVE_FORCE_STRONG
|
||||
animate_movement = FORWARD_STEPS
|
||||
animate_movement = SLIDE_STEPS
|
||||
health = 50
|
||||
maxHealth = 50
|
||||
speed = 3
|
||||
|
||||
@@ -91,6 +91,8 @@
|
||||
var/objective_complete = FALSE
|
||||
/// The innate ability to summon rifts
|
||||
var/datum/action/innate/summon_rift/rift
|
||||
/// The ability to make your sprite smaller
|
||||
var/datum/action/small_sprite/space_dragon/small_sprite
|
||||
/// The color of the space dragon.
|
||||
var/chosen_color
|
||||
/// Minimum devastation damage dealt coefficient based on max health
|
||||
@@ -106,6 +108,9 @@
|
||||
ADD_TRAIT(src, TRAIT_HEALS_FROM_CARP_RIFTS, INNATE_TRAIT)
|
||||
rift = new
|
||||
rift.Grant(src)
|
||||
small_sprite = new
|
||||
small_sprite.Grant(src)
|
||||
RegisterSignal(small_sprite, COMSIG_ACTION_TRIGGER, .proc/add_dragon_overlay)
|
||||
|
||||
/mob/living/simple_animal/hostile/space_dragon/Login()
|
||||
. = ..()
|
||||
@@ -201,10 +206,12 @@
|
||||
destroy_rifts()
|
||||
..()
|
||||
add_dragon_overlay()
|
||||
UnregisterSignal(small_sprite, COMSIG_ACTION_TRIGGER)
|
||||
|
||||
/mob/living/simple_animal/hostile/space_dragon/revive(full_heal, admin_revive)
|
||||
. = ..()
|
||||
add_dragon_overlay()
|
||||
RegisterSignal(small_sprite, COMSIG_ACTION_TRIGGER, .proc/add_dragon_overlay)
|
||||
|
||||
/mob/living/simple_animal/hostile/space_dragon/wabbajack_act(mob/living/new_mob)
|
||||
empty_contents()
|
||||
@@ -252,6 +259,8 @@
|
||||
*/
|
||||
/mob/living/simple_animal/hostile/space_dragon/proc/add_dragon_overlay()
|
||||
cut_overlays()
|
||||
if(!small_sprite.small)
|
||||
return
|
||||
if(stat == DEAD)
|
||||
var/mutable_appearance/overlay = mutable_appearance(icon, "overlay_dead")
|
||||
overlay.appearance_flags = RESET_COLOR
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
* pH meter that will give a detailed or truncated analysis of all the reagents in of an object with a reagents datum attached to it. Only way of detecting purity for now.
|
||||
*/
|
||||
/obj/item/ph_meter
|
||||
name = "Chemistry Analyser"
|
||||
name = "Chemical Analyzer"
|
||||
desc = "An electrode attached to a small circuit box that will display details of a solution. Can be toggled to provide a description of each of the reagents. The screen currently displays nothing."
|
||||
icon_state = "pHmeter"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
|
||||
@@ -1194,6 +1194,7 @@
|
||||
metabolization_rate = 0.4 * REAGENTS_METABOLISM
|
||||
ph = 4.3
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
harmful = TRUE
|
||||
|
||||
/datum/reagent/medicine/haloperidol/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
for(var/datum/reagent/drug/R in M.reagents.reagent_list)
|
||||
|
||||
@@ -738,9 +738,9 @@
|
||||
build_path = /obj/item/assembly/timer
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/voice_analyser
|
||||
name = "Voice Analyser"
|
||||
id = "voice_analyser"
|
||||
/datum/design/voice_analyzer
|
||||
name = "Voice Analyzer"
|
||||
id = "voice_analyzer"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 50)
|
||||
build_path = /obj/item/assembly/voice
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/ph_meter
|
||||
name = "Chemical analyser"
|
||||
name = "Chemical Analyzer"
|
||||
id = "ph_meter"
|
||||
build_type = PROTOLATHE | AWAY_LATHE
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -220,6 +220,8 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
|
||||
icon = 'icons/obj/stock_parts.dmi'
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/rating = 1
|
||||
///Used when a base part has a different name to higher tiers of part. For example, machine frames want any manipulator and not just a micro-manipulator.
|
||||
var/base_name
|
||||
|
||||
/obj/item/stock_parts/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -248,6 +250,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "micro_mani"
|
||||
custom_materials = list(/datum/material/iron=30)
|
||||
base_name = "manipulator"
|
||||
|
||||
/obj/item/stock_parts/micro_laser
|
||||
name = "micro-laser"
|
||||
|
||||
@@ -20,10 +20,10 @@
|
||||
monochromatic cyan, leaving the user unable to see long distances. However, the way the helmet retracts is pretty cool."
|
||||
|
||||
/obj/item/paper/fluff/ruins/oldstation/protohealth
|
||||
name = "Health Analyser Report"
|
||||
info = "<b>*Health Analyser*</b><br><br>The portable Health Analyser is essentially a handheld variant of a health analyser. Years of research have concluded with this device which is \
|
||||
name = "Health Analyzer Report"
|
||||
info = "<b>*Health Analyzer*</b><br><br>The portable Health Analyzer is essentially a handheld variant of a health analyzer. Years of research have concluded with this device which is \
|
||||
capable of diagnosing even the most critical, obscure or technical injuries any humanoid entity is suffering in an easy to understand format that even a non-trained health professional \
|
||||
can understand.<br><br>The health analyser is expected to go into full production as standard issue medical kit."
|
||||
can understand.<br><br>The health analyzer is expected to go into full production as standard issue medical kit."
|
||||
|
||||
/obj/item/paper/fluff/ruins/oldstation/protogun
|
||||
name = "K14 Energy Gun Report"
|
||||
|
||||
@@ -43,6 +43,14 @@
|
||||
restricted_roles = list(JOB_ASSISTANT)
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/role_restricted/oldtoolboxclean
|
||||
name = "Ancient Toolbox"
|
||||
desc = "An iconic toolbox design notorious with Assistants everywhere, this design was especially made to become more robust the more telecrystals it has inside it! Tools and insulated gloves included."
|
||||
item = /obj/item/storage/toolbox/mechanical/old/clean
|
||||
cost = 2
|
||||
restricted_roles = list(JOB_ASSISTANT)
|
||||
surplus = 0
|
||||
|
||||
// Low progression cost
|
||||
|
||||
/datum/uplink_item/role_restricted/clownpin
|
||||
|
||||
@@ -375,8 +375,4 @@
|
||||
cell.forceMove(WR)
|
||||
cell.charge = rand(0, cell.charge)
|
||||
cell = null
|
||||
if(internal_tank)
|
||||
WR.crowbar_salvage += internal_tank
|
||||
internal_tank.forceMove(WR)
|
||||
cell = null
|
||||
. = ..()
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "SkyratBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Nanotrasen realized how much they were spending on newscasters that got buried under posters and the like, so the corporation decided to stock the crew with juuuuust enough. They have saved a lot of money from this venture, and the economy will promptly begin to skyrocket to new heights."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "TheBonded, timothymtorres"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixed mulebot movement animation to be smoother"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "SkyratBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Machine frames and circuit boards no longer call manipulators micro-manipulators when examined"
|
||||
- code_imp: "Improves code in constructable_frame.dm and circuitboard.dm"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "SkyratBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "fixed mech air tanks being removable"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "SkyratBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Assistant Traitors can now purchase the Ancient Toolbox again."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "SkyratBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Adds checks for packs on the departmental order console."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "SkyratBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Haloperidol has been properly labelled in medical cyborg hyposprays after several instances of mediborg induced brain damage were found in human patients."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "SkyratBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- spellcheck: "Voice and chemical analyzers now have more consistent names and spelling."
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 19 KiB |
@@ -1,5 +1,5 @@
|
||||
A reaction can be slowed down by cooling the beaker it's in!
|
||||
Chemical analysers scan more than just pH. They can tell you the purity of each reagent.
|
||||
Chemical analyzers scan more than just pH. They can tell you the purity of each reagent.
|
||||
The infomation depth of pH meter readouts can be reduced by using it in hand!
|
||||
ChemMaster 3000s can tell you the optimal pH of a reagent's reaction with their analyze function.
|
||||
Oculine slightly improves your eyesight while it's in your system, to a degree based on its purity.
|
||||
@@ -10,7 +10,7 @@ Inverse Neurine will not delete an imaginary friend. Once a friend, always a fri
|
||||
Overdosing on Mannitol will give you pro tips from your newfound enlightenment. Perhaps you know that already, though!
|
||||
Eigenstasium's wild ride can be halted by taking more eigenstasium, bluespace dust, or stabilising agent.
|
||||
The longer synthtissue has been growing, the more stuff it can do!
|
||||
Exact organ health values can be determined by using a health analyser while Technetium 99 is in their system.
|
||||
Exact organ health values can be determined by using a health analyzer while Technetium 99 is in their system.
|
||||
100% pure inacusiate will let you hear whispers from a distance while it's in your system.
|
||||
Turning sugar into caramel before attempting to make Eigenstasium makes it much easier to create.
|
||||
Thermometers crafted in the chemistry section will let you detect the temperature of anything that has a reagent temperature. This includes people too!
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
moderate
|
||||
regular
|
||||
okay
|
||||
somewhat irregular
|
||||
weird
|
||||
offputting
|
||||
ungodly
|
||||
off the charts
|
||||
earth-shattering
|
||||
station-shaking
|
||||
REDACTED
|
||||
annoying
|
||||
nuisance heavy
|
||||
intern
|
||||
clown
|
||||
Poly
|
||||
low
|
||||
medium
|
||||
high
|
||||
medium rare
|
||||
golem
|
||||
cheesy horror flick
|
||||
SKELLY TONE
|
||||
chair-moving
|
||||
hair-raising
|
||||
RUNTIME ERROR
|
||||
help
|
||||
IT COMES
|
||||
NAR
|
||||
hi
|
||||
@@ -1587,6 +1587,7 @@
|
||||
#include "code\game\objects\items\food\bread.dm"
|
||||
#include "code\game\objects\items\food\burgers.dm"
|
||||
#include "code\game\objects\items\food\cake.dm"
|
||||
#include "code\game\objects\items\food\deepfried.dm"
|
||||
#include "code\game\objects\items\food\dough.dm"
|
||||
#include "code\game\objects\items\food\egg.dm"
|
||||
#include "code\game\objects\items\food\frozen.dm"
|
||||
|
||||
Reference in New Issue
Block a user