mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-22 03:27:46 +01:00
Merge remote-tracking branch 'upstream/dev-freeze' into dev
This commit is contained in:
@@ -504,11 +504,6 @@
|
||||
if("python_path")
|
||||
if(value)
|
||||
config.python_path = value
|
||||
else
|
||||
if(world.system_type == UNIX)
|
||||
config.python_path = "/usr/bin/env python2"
|
||||
else //probably windows, if not this should work anyway
|
||||
config.python_path = "python"
|
||||
|
||||
if("use_lib_nudge")
|
||||
config.use_lib_nudge = 1
|
||||
@@ -741,3 +736,11 @@
|
||||
runnable_modes[M] = probabilities[M.config_tag]
|
||||
//world << "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]"
|
||||
return runnable_modes
|
||||
|
||||
/datum/configuration/proc/post_load()
|
||||
//apply a default value to config.python_path, if needed
|
||||
if (!config.python_path)
|
||||
if(world.system_type == UNIX)
|
||||
config.python_path = "/usr/bin/env python2"
|
||||
else //probably windows, if not this should work anyway
|
||||
config.python_path = "python"
|
||||
|
||||
@@ -531,7 +531,6 @@ As such, it's hard-coded for now. No reason for it not to be, really.
|
||||
else
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/color/black(src), slot_w_uniform)
|
||||
|
||||
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/voice/space_ninja(src), slot_wear_mask)
|
||||
equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_belt)
|
||||
|
||||
var/obj/item/weapon/rig/light/ninja/ninjasuit = new(src)
|
||||
@@ -546,16 +545,16 @@ As such, it's hard-coded for now. No reason for it not to be, really.
|
||||
|
||||
equip_to_slot_or_del(ninjasuit,slot_back)
|
||||
|
||||
if(istype(wear_suit,/obj/item/weapon/rig))
|
||||
var/obj/item/weapon/rig/rig = wear_suit
|
||||
if(rig.air_supply)
|
||||
internal = rig.air_supply
|
||||
if(!internal && s_store)
|
||||
internal = s_store
|
||||
if(internal)
|
||||
internals.icon_state = "internal1"
|
||||
|
||||
spawn(10)
|
||||
ninjasuit.toggle_seals(src,1)
|
||||
|
||||
if(istype(back,/obj/item/weapon/rig))
|
||||
var/obj/item/weapon/rig/rig = back
|
||||
if(rig.air_supply)
|
||||
internal = rig.air_supply
|
||||
if(!internal && s_store)
|
||||
internal = s_store
|
||||
if(internal)
|
||||
internals.icon_state = "internal1"
|
||||
|
||||
return 1
|
||||
@@ -111,6 +111,8 @@
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24)
|
||||
pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0
|
||||
update_icon()
|
||||
if(ticker && ticker.current_state == 3)//if the game is running
|
||||
src.initialize()
|
||||
return
|
||||
|
||||
first_run()
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/*********************MANUALS (BOOKS)***********************/
|
||||
|
||||
//Oh god what the fuck I am not good at computer
|
||||
/obj/item/weapon/book/manual
|
||||
icon = 'icons/obj/library.dmi'
|
||||
due_date = 0 // Game time in 1/10th seconds
|
||||
@@ -13,7 +12,7 @@
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "Station Repairs and Construction"
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_construction/initialize()
|
||||
/obj/item/weapon/book/manual/engineering_construction/New()
|
||||
..()
|
||||
dat = {"
|
||||
|
||||
@@ -34,7 +33,7 @@
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "Particle Accelerator User's Guide"
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_particle_accelerator/initialize()
|
||||
/obj/item/weapon/book/manual/engineering_particle_accelerator/New()
|
||||
..()
|
||||
dat = {"<html>
|
||||
<head>
|
||||
@@ -81,7 +80,7 @@
|
||||
author = "Waleed Asad"
|
||||
title = "Supermatter Engine User's Guide"
|
||||
|
||||
/obj/item/weapon/book/manual/supermatter_engine/initialize()
|
||||
/obj/item/weapon/book/manual/supermatter_engine/New()
|
||||
..()
|
||||
dat = {"<html>
|
||||
<head>
|
||||
@@ -193,7 +192,7 @@
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "Hacking"
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_hacking/initialize()
|
||||
/obj/item/weapon/book/manual/engineering_hacking/New()
|
||||
..()
|
||||
dat = {"
|
||||
|
||||
@@ -750,7 +749,7 @@
|
||||
author = "NanoTrasen"
|
||||
title = "Corporate Regulations"
|
||||
|
||||
/obj/item/weapon/book/manual/security_space_law/initialize()
|
||||
/obj/item/weapon/book/manual/security_space_law/New()
|
||||
..()
|
||||
dat = {"
|
||||
|
||||
@@ -774,7 +773,7 @@
|
||||
author = "NanoTrasen Medicine Department"
|
||||
title = "NT Medical Diagnostics Manual"
|
||||
|
||||
/obj/item/weapon/book/manual/medical_diagnostics_manual/initialize()
|
||||
/obj/item/weapon/book/manual/medical_diagnostics_manual/New()
|
||||
..()
|
||||
dat = {"<html>
|
||||
<head>
|
||||
@@ -821,7 +820,7 @@
|
||||
author = "Engineering Encyclopedia"
|
||||
title = "Engineering Textbook"
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_guide/initialize()
|
||||
/obj/item/weapon/book/manual/engineering_guide/New()
|
||||
..()
|
||||
dat = {"
|
||||
|
||||
|
||||
@@ -16,12 +16,6 @@
|
||||
var/damtype = "brute"
|
||||
var/force = 0
|
||||
|
||||
/obj/New()
|
||||
..()
|
||||
// If the game is already underway initialize will no longer be called for us
|
||||
if(ticker && ticker.current_state == GAME_STATE_PLAYING)
|
||||
initialize()
|
||||
|
||||
/obj/Topic(href, href_list, var/nowindow = 0)
|
||||
// Calling Topic without a corresponding window open causes runtime errors
|
||||
if(nowindow)
|
||||
|
||||
@@ -10,13 +10,22 @@
|
||||
var/obj/item/voice_changer/changer
|
||||
origin_tech = "syndicate=4"
|
||||
|
||||
/obj/item/clothing/mask/gas/voice/verb/Toggle_Voice_Changer()
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
changer.active = !changer.active
|
||||
usr << "<span class='notice'>You [changer.active ? "enable" : "disable"] the voice-changing module in \the [src].</span>"
|
||||
|
||||
/obj/item/clothing/mask/gas/voice/verb/Set_Voice(name as text)
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
var/voice = sanitize(copytext(name,1,MAX_MESSAGE_LEN))
|
||||
if(!voice || !length(voice)) return
|
||||
changer.voice = voice
|
||||
usr << "<span class='notice'>You are now mimicking <B>[changer.voice]</B>.</span>"
|
||||
|
||||
/obj/item/clothing/mask/gas/voice/New()
|
||||
..()
|
||||
changer = new(src)
|
||||
|
||||
/obj/item/clothing/mask/gas/voice/space_ninja
|
||||
name = "ninja mask"
|
||||
desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement."
|
||||
icon_state = "s-ninja"
|
||||
item_state = "s-ninja_mask"
|
||||
siemens_coefficient = 0.2
|
||||
@@ -269,7 +269,7 @@
|
||||
if(!raw_choice)
|
||||
return 0
|
||||
voice_holder.voice = sanitize(copytext(raw_choice,1,MAX_MESSAGE_LEN))
|
||||
usr << "You are now mimicking <B>[voice_holder.voice]</B>.</font>"
|
||||
usr << "<font color='blue'>You are now mimicking <B>[voice_holder.voice]</B>.</font>"
|
||||
return 1
|
||||
|
||||
/obj/item/rig_module/maneuvering_jets
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
"adminordrazine" = 1,
|
||||
"milk" = 0.9,
|
||||
"beer" = 0.7,
|
||||
"flourine" = -0.5,
|
||||
"fluorine" = -0.5,
|
||||
"chlorine" = -0.5,
|
||||
"phosphorus" = -0.5,
|
||||
"water" = 1,
|
||||
|
||||
@@ -94,8 +94,10 @@
|
||||
//Disabilities
|
||||
handle_disabilities()
|
||||
|
||||
//Organ failure.
|
||||
//Organs and blood
|
||||
handle_organs()
|
||||
handle_blood()
|
||||
stabilize_body_temperature() //Body temperature adjusts itself (self-regulation)
|
||||
|
||||
//Random events (vomiting etc)
|
||||
handle_random_events()
|
||||
@@ -1070,22 +1072,6 @@
|
||||
take_overall_damage(2,0)
|
||||
traumatic_shock++
|
||||
|
||||
if (drowsyness)
|
||||
drowsyness--
|
||||
eye_blurry = max(2, eye_blurry)
|
||||
if (prob(5))
|
||||
sleeping += 1
|
||||
Paralyse(5)
|
||||
|
||||
confused = max(0, confused - 1)
|
||||
// decrement dizziness counter, clamped to 0
|
||||
if(resting)
|
||||
dizziness = max(0, dizziness - 15)
|
||||
jitteriness = max(0, jitteriness - 15)
|
||||
else
|
||||
dizziness = max(0, dizziness - 3)
|
||||
jitteriness = max(0, jitteriness - 3)
|
||||
|
||||
if(!(species.flags & IS_SYNTHETIC)) handle_trace_chems()
|
||||
|
||||
updatehealth()
|
||||
@@ -1101,10 +1087,6 @@
|
||||
silent = 0
|
||||
else //ALIVE. LIGHTS ARE ON
|
||||
updatehealth() //TODO
|
||||
if(!in_stasis)
|
||||
stabilize_body_temperature() //Body temperature adjusts itself
|
||||
handle_organs() //Optimized.
|
||||
handle_blood()
|
||||
|
||||
if(health <= config.health_threshold_dead || (species.has_organ["brain"] && !has_brain()))
|
||||
death()
|
||||
@@ -1119,13 +1101,6 @@
|
||||
if( (getOxyLoss() > 50) || (config.health_threshold_crit > health) )
|
||||
Paralyse(3)
|
||||
|
||||
/* Done by handle_breath()
|
||||
if( health <= 20 && prob(1) )
|
||||
spawn(0)
|
||||
emote("gasp")
|
||||
if(!reagents.has_reagent("inaprovaline"))
|
||||
adjustOxyLoss(1)*/
|
||||
|
||||
if(hallucination)
|
||||
if(hallucination >= 20)
|
||||
if(prob(3))
|
||||
@@ -1168,22 +1143,17 @@
|
||||
if( prob(2) && health && !hal_crit )
|
||||
spawn(0)
|
||||
emote("snore")
|
||||
else if(resting)
|
||||
if(halloss > 0)
|
||||
adjustHalLoss(-3)
|
||||
//CONSCIOUS
|
||||
else
|
||||
stat = CONSCIOUS
|
||||
if(halloss > 0)
|
||||
adjustHalLoss(-1)
|
||||
|
||||
//Periodically double-check embedded_flag
|
||||
if(embedded_flag && !(life_tick % 10))
|
||||
var/list/E
|
||||
E = get_visible_implants(0)
|
||||
if(!E.len)
|
||||
embedded_flag = 0
|
||||
|
||||
|
||||
//Eyes
|
||||
//Check rig first because it's two-check and other checks will override it.
|
||||
if(istype(back,/obj/item/weapon/rig))
|
||||
@@ -1223,9 +1193,28 @@
|
||||
else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs
|
||||
ear_damage = max(ear_damage-0.05, 0)
|
||||
|
||||
//Resting
|
||||
if(resting)
|
||||
dizziness = max(0, dizziness - 15)
|
||||
jitteriness = max(0, jitteriness - 15)
|
||||
adjustHalLoss(-3)
|
||||
else
|
||||
dizziness = max(0, dizziness - 3)
|
||||
jitteriness = max(0, jitteriness - 3)
|
||||
adjustHalLoss(-1)
|
||||
|
||||
//Other
|
||||
handle_statuses()
|
||||
|
||||
if (drowsyness)
|
||||
drowsyness--
|
||||
eye_blurry = max(2, eye_blurry)
|
||||
if (prob(5))
|
||||
sleeping += 1
|
||||
Paralyse(5)
|
||||
|
||||
confused = max(0, confused - 1)
|
||||
|
||||
// If you're dirty, your gloves will become dirty, too.
|
||||
if(gloves && germ_level > gloves.germ_level && prob(10))
|
||||
gloves.germ_level += 1
|
||||
|
||||
@@ -104,10 +104,17 @@
|
||||
W.germ_level += 1
|
||||
|
||||
/mob/living/carbon/human/proc/handle_stance()
|
||||
if (lying || resting)
|
||||
return // don't need to process any of this if they aren't standing anyways
|
||||
// Don't need to process any of this if they aren't standing anyways
|
||||
// unless their stance is damaged, and we want to check if they should stay down
|
||||
if (!stance_damage && (lying || resting) && (life_tick % 4) == 0)
|
||||
return
|
||||
|
||||
stance_damage = 0
|
||||
|
||||
// Buckled to a bed/chair. Stance damage is forced to 0 since they're sitting on something solid
|
||||
if (istype(buckled, /obj/structure/stool/bed))
|
||||
return
|
||||
|
||||
for (var/organ in list("l_leg","l_foot","r_leg","r_foot"))
|
||||
var/datum/organ/external/E = organs_by_name[organ]
|
||||
if (E.status & ORGAN_DESTROYED)
|
||||
@@ -115,9 +122,18 @@
|
||||
else if (E.is_malfunctioning() || (E.is_broken() && !(E.status & ORGAN_SPLINTED)) || !E.is_usable())
|
||||
stance_damage += 1
|
||||
|
||||
// Canes and crutches help you stand (if the latter is ever added)
|
||||
// One cane mitigates a broken leg+foot, or a missing foot.
|
||||
// Two canes are needed for a lost leg. If you are missing both legs, canes aren't gonna help you.
|
||||
if (istype(l_hand, /obj/item/weapon/cane))
|
||||
stance_damage -= 2
|
||||
if (istype(l_hand, /obj/item/weapon/cane))
|
||||
stance_damage -= 2
|
||||
|
||||
// standing is poor
|
||||
if(stance_damage >= 4 || (stance_damage >= 2 && prob(5)))
|
||||
Weaken(5)
|
||||
if(species && !(species.flags & NO_PAIN))
|
||||
emote("scream")
|
||||
emote("collapse")
|
||||
if(!(lying || resting))
|
||||
if(species && !(species.flags & NO_PAIN))
|
||||
emote("scream")
|
||||
custom_emote(1, "collapses!")
|
||||
Weaken(5) //can't emote while weakened, apparently.
|
||||
@@ -380,7 +380,7 @@ datum
|
||||
id = "inaprovaline"
|
||||
description = "Inaprovaline is a synaptic stimulant and cardiostimulant. Commonly used to stabilize patients."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
color = "#00BFFF" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE*2
|
||||
scannable = 1
|
||||
|
||||
@@ -1595,7 +1595,7 @@ datum
|
||||
id = "phoron"
|
||||
description = "Phoron in its liquid form."
|
||||
reagent_state = LIQUID
|
||||
color = "#00BFFF" // rgb: 231, 27, 0
|
||||
color = "#E71B00" // rgb: 231, 27, 0
|
||||
toxpwr = 3
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
|
||||
+3
-3
@@ -12,7 +12,7 @@ em {font-style: normal;font-weight: bold;}
|
||||
{color: #638500;}
|
||||
|
||||
.prefix {font-weight: bold;}
|
||||
.log_message {color: #789FC7;}
|
||||
.log_message {color: #386AFF; font-weight: bold;}
|
||||
|
||||
/* OOC */
|
||||
.ooc {font-weight: bold;}
|
||||
@@ -29,12 +29,12 @@ em {font-style: normal;font-weight: bold;}
|
||||
.pm .howto {color: #ff0000; font-weight: bold; font-size: 200%;}
|
||||
.pm .in {color: #ff0000;}
|
||||
.pm .out {color: #B54A4A;}
|
||||
.pm .other {color: #498db6;}
|
||||
.pm .other {color: #164664;}
|
||||
|
||||
/* Admin: Channels */
|
||||
.mod_channel {color: #735638; font-weight: bold;}
|
||||
.mod_channel .admin {color: #e40045; font-weight: bold;}
|
||||
.admin_channel {color: #402A14; font-weight: bold;}
|
||||
.admin_channel {color: #9611D4; font-weight: bold;}
|
||||
|
||||
/* Radio: Misc */
|
||||
.deadsay {color: #530FAD;}
|
||||
|
||||
+4
-3
@@ -6,6 +6,7 @@ var/global/datum/global_init/init = new ()
|
||||
/datum/global_init/New()
|
||||
|
||||
makeDatumRefLists()
|
||||
load_configuration()
|
||||
|
||||
del(src)
|
||||
|
||||
@@ -33,8 +34,8 @@ var/global/datum/global_init/init = new ()
|
||||
if(byond_version < RECOMMENDED_VERSION)
|
||||
world.log << "Your server's byond version does not meet the recommended requirements for this server. Please update BYOND"
|
||||
|
||||
load_configuration()
|
||||
|
||||
config.post_load()
|
||||
|
||||
if(config && config.server_name != null && config.server_suffix && world.port > 0)
|
||||
// dumb and hardcoded but I don't care~
|
||||
config.server_name += " #[(world.port % 1000) / 100]"
|
||||
@@ -259,7 +260,7 @@ var/world_topic_spam_protect_time = world.timeofday
|
||||
join_motd = file2text("config/motd.txt")
|
||||
|
||||
|
||||
/world/proc/load_configuration()
|
||||
/proc/load_configuration()
|
||||
config = new /datum/configuration()
|
||||
config.load("config/config.txt")
|
||||
config.load("config/game_options.txt","game_options")
|
||||
|
||||
Reference in New Issue
Block a user