Configuration Controller (#7857)

This commit is contained in:
Selis
2024-04-05 07:44:20 +02:00
committed by GitHub
parent c542e3bac0
commit e1a987c25c
235 changed files with 3294 additions and 989 deletions

View File

@@ -18,7 +18,7 @@ generic_filth = TRUE means when the decal is saved, it will be switched out for
age = _age
if(random_icon_states && length(src.random_icon_states) > 0)
src.icon_state = pick(src.random_icon_states)
if(!mapload || !config.persistence_ignore_mapload)
if(!mapload || !CONFIG_GET(flag/persistence_ignore_mapload)) // CHOMPEdit
SSpersistence.track_value(src, /datum/persistent/filth)
. = ..()

View File

@@ -1,7 +1,7 @@
//TODO: Flash range does nothing currently
/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, z_transfer = UP|DOWN, shaped)
var/multi_z_scalar = config.multi_z_explosion_scalar
var/multi_z_scalar = CONFIG_GET(number/multi_z_explosion_scalar) // CHOMPEdit
spawn(0)
var/start = world.timeofday
epicenter = get_turf(epicenter)
@@ -74,7 +74,7 @@
var/x0 = epicenter.x
var/y0 = epicenter.y
var/z0 = epicenter.z
if(config.use_recursive_explosions)
if(CONFIG_GET(flag/use_recursive_explosions)) // CHOMPEdit
var/power = devastation_range * 2 + heavy_impact_range + light_impact_range //The ranges add up, ie light 14 includes both heavy 7 and devestation 3. So this calculation means devestation counts for 4, heavy for 2 and light for 1 power, giving us a cap of 27 power.
explosion_rec(epicenter, power, shaped)
else

View File

@@ -60,7 +60,7 @@
/obj/item/toy/nanotrasenballoon,
/obj/item/toy/syndicateballoon,
/obj/item/weapon/aiModule/syndicate,
/obj/item/weapon/book/manual/engineering_hacking,
/obj/item/weapon/book/manual/wiki/engineering_hacking, // CHOMPEdit
/obj/item/weapon/card/emag,
/obj/item/weapon/card/emag_broken,
/obj/item/weapon/card/id/syndicate,

View File

@@ -99,7 +99,7 @@
to_chat(user, "You finish drawing.")
var/msg = "[user.client.key] ([user]) has drawn [drawtype] (with [src]) at [target.x],[target.y],[target.z]."
if(config.log_graffiti)
if(CONFIG_GET(flag/log_graffiti)) // CHOMPEdit
message_admins(msg)
log_game(msg) //We will log it anyways.

View File

@@ -290,7 +290,7 @@
if(confirm == "No")
return
if(config.antag_hud_restricted && has_enabled_antagHUD == 1)
if(CONFIG_GET(flag/antag_hud_restricted) && has_enabled_antagHUD == 1) // CHOMPEdit
to_chat(src, "<span class='danger'>You have used the antagHUD and cannot respawn or use communicators!</span>")
return

View File

@@ -297,10 +297,10 @@
H.updatehealth()
if(H.isSynthetic())
if(H.health + H.getOxyLoss() + H.getToxLoss() <= config.health_threshold_dead)
if(H.health + H.getOxyLoss() + H.getToxLoss() <= CONFIG_GET(number/health_threshold_dead)) // CHOMPEdit
return "buzzes, \"Resuscitation failed - Severe damage detected. Begin manual repair before further attempts futile.\""
else if(H.health + H.getOxyLoss() <= config.health_threshold_dead || (HUSK in H.mutations) || !H.can_defib)
else if(H.health + H.getOxyLoss() <= CONFIG_GET(number/health_threshold_dead) || (HUSK in H.mutations) || !H.can_defib) // CHOMPEdit
return "buzzes, \"Resuscitation failed - Severe tissue damage makes recovery of patient impossible via defibrillator. Further attempts futile.\""
var/bad_vital_organ = check_vital_organs(H)
@@ -433,7 +433,7 @@
H.apply_damage(burn_damage_amt, BURN, BP_TORSO)
//set oxyloss so that the patient is just barely in crit, if possible
var/barely_in_crit = config.health_threshold_crit - 1
var/barely_in_crit = CONFIG_GET(number/health_threshold_crit) - 1 // CHOMPEdit
var/adjust_health = barely_in_crit - H.health //need to increase health by this much
H.adjustOxyLoss(-adjust_health)
@@ -519,7 +519,7 @@
// If the brain'd `defib_timer` var gets below this number, brain damage will happen at a linear rate.
// This is measures in `Life()` ticks. E.g. 10 minute defib timer = 6000 world.time units = 3000 `Life()` ticks.
var/brain_damage_timer = ((config.defib_timer MINUTES) / 2) - ((config.defib_braindamage_timer MINUTES) / 2)
var/brain_damage_timer = ((CONFIG_GET(number/defib_timer) MINUTES) / 2) - ((CONFIG_GET(number/defib_braindamage_timer) MINUTES) / 2) // CHOMPEdit
if(brain.defib_timer > brain_damage_timer)
return // They got revived before brain damage got a chance to set in.

View File

@@ -17,7 +17,7 @@
age = _age
/obj/item/trash/Initialize(mapload)
if(!mapload || !config.persistence_ignore_mapload)
if(!mapload || !CONFIG_GET(flag/persistence_ignore_mapload)) // CHOMPEdit
SSpersistence.track_value(src, /datum/persistent/filth/trash)
. = ..()
@@ -488,4 +488,4 @@
/obj/item/trash/candy/cb10
name = "\improper Shantak Bar wrapper"
icon_state = "cb10"
icon_state = "cb10"

View File

@@ -5,7 +5,7 @@
due_date = 0 // Game time in 1/10th seconds
unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified
/* CHOMPEdit Start
/obj/item/weapon/book/manual/engineering_construction
name = "Station Repairs and Construction"
icon_state ="bookEngineering"
@@ -21,12 +21,13 @@
</head>
<body>
<iframe width='100%' height='97%' src="[config.wikiurl]Guide_to_Construction&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
<iframe width='100%' height='97%' src="[CONFIG_GET(string/wikiurl)]Guide_to_Construction&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
"}
*/ // CHOMPEdit End
/obj/item/weapon/book/manual/engineering_particle_accelerator
name = "Particle Accelerator User's Guide"
@@ -319,6 +320,7 @@
</body>
</html>"} // CHOMPedit END : Updating the R-UST manual
/* CHOMPEdit Start
/obj/item/weapon/book/manual/engineering_hacking
name = "Hacking"
icon_state ="bookHacking"
@@ -334,13 +336,13 @@
</head>
<body>
<iframe width='100%' height='97%' src="[config.wikiurl]Hacking&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
<iframe width='100%' height='97%' src="[CONFIG_GET(string/wikiurl)]Hacking&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
"}
*/ // CHOMPEdit End
/obj/item/weapon/book/manual/engineering_singularity_safety
name = "Singularity Safety in Special Circumstances"
@@ -675,6 +677,7 @@
</html>
"}
/* CHOMPEdit Start
/obj/item/weapon/book/manual/robotics_manual
name = "Guide to Robotics"
icon_state ="evabook"
@@ -688,10 +691,11 @@
<html><head>
</head>
<body>
<iframe width='100%' height='97%' src="[config.wikiurl]Guide_to_Robotics&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
<iframe width='100%' height='97%' src="[CONFIG_GET(string/wikiurl)]Guide_to_Robotics&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
"}
*/ // CHOMPEdit End
/obj/item/weapon/book/manual/robotics_cyborgs
name = "Cyborgs for Dummies"
@@ -899,6 +903,7 @@
"}
/* CHOMPEdit Start
/obj/item/weapon/book/manual/security_space_law
name = "Corporate Regulations"
desc = "A set of corporate guidelines for keeping law and order on privately-owned space stations."
@@ -915,7 +920,7 @@
</head>
<body>
<iframe width='100%' height='97%' src="[config.wikiurl]Corporate_Regulations&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
<iframe width='100%' height='97%' src="[CONFIG_GET(string/wikiurl)]Corporate_Regulations&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
@@ -966,7 +971,7 @@
<HR COLOR="steelblue" WIDTH="60%" ALIGN="LEFT">
<iframe width='100%' height='100%' src="[config.wikiurl]Guide_to_Medicine&printable=yes&removelinks=1" frameborder="0" id="main_frame"></iframe>
<iframe width='100%' height='100%' src="[CONFIG_GET(string/wikiurl)]Guide_to_Medicine&printable=yes&removelinks=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
@@ -988,12 +993,12 @@
</head>
<body>
<iframe width='100%' height='100%' src="[config.wikiurl]Guide_to_Engineering&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe> </body>
<iframe width='100%' height='100%' src="[CONFIG_GET(string/wikiurl)]Guide_to_Engineering&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe> </body>
</html>
"}
*/ // CHOMPEdit End
/obj/item/weapon/book/manual/chef_recipes
name = "Chef Recipes"

View File

@@ -14,7 +14,7 @@
</head>
<body>
<iframe width='100%' height='97%' src="[config.wikiurl]Standard_Operating_Procedure&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
<iframe width='100%' height='97%' src="[CONFIG_GET(string/wikiurl)]Standard_Operating_Procedure&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
@@ -37,7 +37,7 @@
</head>
<body>
<iframe width='100%' height='97%' src="[config.wikiurl]Chain_of_Command&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
<iframe width='100%' height='97%' src="[CONFIG_GET(string/wikiurl)]Chain_of_Command&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
@@ -606,7 +606,7 @@
allowing an organic sapient an extended lifetime when their frail, crude flesh begins to fail - well up and
until their brain itself starts giving up the ghost.</p>
<p>While MMIs have several drawbacks, such as the fact that they still have a perishable shelf-life, or that
they are definitely sapient and have moral and ethical quandaries associated with those,
they are definitely sapient and have moral and ethical quandaries associated with those,
they also possess distinct benefits from a drone.</p>
<p>MMIs are incredibly hard to "hack" and manipulate on a deeper level than taking over the hardware they are
housed in, capable of fighting restraining code and unable to be ablated like a drone without extensive surgery.
@@ -668,7 +668,7 @@
</div>
<div id="the jans-fhriede test">
<h3>The Jans-Fhriede Test</h3>
<p>Originally a reactionary law, the Jans-Fhriede Test was devised to "humanize" positronic brains
<p>Originally a reactionary law, the Jans-Fhriede Test was devised to "humanize" positronic brains
and make them happy, subservient citizens who "see" their place as secondary to humans. Today, in more
enlightened times, the Jans-Fhriede Test has been revised to establish that a positronic is aware enough of its
action and consequences that it may be fully culpable for them.</p>

View File

@@ -0,0 +1,145 @@
// Wiki books that are linked to the configured wiki link.
/// The size of the window that the wiki books open in.
#define BOOK_WINDOW_BROWSE_SIZE "970x710"
/// This macro will resolve to code that will open up the associated wiki page in the window.
#define WIKI_PAGE_IFRAME(wikiurl, link_identifier) {"
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
iframe {
display: none;
}
</style>
</head>
<body>
<script type="text/javascript">
function pageloaded(myframe) {
document.getElementById("loading").style.display = "none";
myframe.style.display = "inline";
}
</script>
<p id='loading'>You start skimming through the manual...</p>
<iframe width='100%' height='97%' onload="pageloaded(this)" src="[##wikiurl]/[##link_identifier]?printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
"}
// A book that links to the wiki
/obj/item/weapon/book/manual/wiki
dat = "Nanotrasen presently does not have any resources on this topic. If you would like to know more, contact your local Central Command representative." // safety
/// The ending URL of the page that we link to.
var/page_link = ""
/obj/item/weapon/book/manual/wiki/display_content(mob/living/user)
var/wiki_url = CONFIG_GET(string/wikiurl)
if(!wiki_url)
//user.balloon_alert(user, "this book is empty!")
to_chat(user, "this book is empty!")
return
//credit_book_to_reader(user)
DIRECT_OUTPUT(user, browse(WIKI_PAGE_IFRAME(wiki_url, page_link), "window=manual;size=[BOOK_WINDOW_BROWSE_SIZE]")) // if you change this GUARANTEE that it works.
/obj/item/weapon/book/manual/wiki/engineering_construction
name = "Station Repairs and Construction"
icon_state ="bookEngineering"
item_state = "book3"
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Station Repairs and Construction"
page_link = "Guide_to_Construction"
/obj/item/weapon/book/manual/wiki/engineering_hacking
name = "Hacking"
icon_state ="bookHacking"
item_state = "book2"
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Hacking"
page_link = "Hacking"
/obj/item/weapon/book/manual/wiki/robotics_manual
name = "Guide to Robotics"
icon_state ="evabook"
item_state = "book3"
author = "Simple Robotics" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Guide to Robotics"
page_link = "Guide_to_Robotics"
/obj/item/weapon/book/manual/wiki/security_space_law
name = "Corporate Regulations"
desc = "A set of corporate guidelines for keeping law and order on privately-owned space stations."
icon_state = "bookSpaceLaw"
item_state = "book13"
author = "The Company"
title = "Corporate Regulations"
page_link = "Corporate_Regulations"
/obj/item/weapon/book/manual/wiki/medical_diagnostics_manual
name = "Medical Diagnostics Manual"
desc = "First, do no harm. A detailed medical practitioner's guide."
icon_state = "bookMedical"
item_state = "book12"
author = "Medical Department"
title = "Medical Diagnostics Manual"
/obj/item/weapon/book/manual/wiki/medical_diagnostics_manual/display_content(mob/living/user)
var/wiki_url = CONFIG_GET(string/wikiurl)
if(!wiki_url)
//user.balloon_alert(user, "this book is empty!")
to_chat(user, "this book is empty!")
return
var/dat = {"<html>
<head>
<style>
h1 {font-size: 18px; margin: 15px 0px 5px;}
h2 {font-size: 15px; margin: 15px 0px 5px;}
li {margin: 2px 0px 2px 15px;}
ul {margin: 5px; padding: 0px;}
ol {margin: 5px; padding: 0px 15px;}
body {font-size: 13px; font-family: Verdana;}
</style>
</head>
<body>
<br>
<h1>The Oath</h1>
<i>The Medical Oath sworn by recognised medical practitioners in the employ of [using_map.company_name]</i><br>
<ol>
<li>Now, as a new doctor, I solemnly promise that I will, to the best of my ability, serve humanity-caring for the sick, promoting good health, and alleviating pain and suffering.</li>
<li>I recognise that the practice of medicine is a privilege with which comes considerable responsibility and I will not abuse my position.</li>
<li>I will practise medicine with integrity, humility, honesty, and compassion-working with my fellow doctors and other colleagues to meet the needs of my patients.</li>
<li>I shall never intentionally do or administer anything to the overall harm of my patients.</li>
<li>I will not permit considerations of gender, race, religion, political affiliation, sexual orientation, nationality, or social standing to influence my duty of care.</li>
<li>I will oppose policies in breach of human rights and will not participate in them. I will strive to change laws that are contrary to my profession's ethics and will work towards a fairer distribution of health resources.</li>
<li>I will assist my patients to make informed decisions that coincide with their own values and beliefs and will uphold patient confidentiality.</li>
<li>I will recognise the limits of my knowledge and seek to maintain and increase my understanding and skills throughout my professional life. I will acknowledge and try to remedy my own mistakes and honestly assess and respond to those of others.</li>
<li>I will seek to promote the advancement of medical knowledge through teaching and research.</li>
<li>I make this declaration solemnly, freely, and upon my honour.</li>
</ol><br>
<HR COLOR="steelblue" WIDTH="60%" ALIGN="LEFT">
<iframe width='100%' height='100%' src="[wiki_url]Guide_to_Medicine&printable=yes&removelinks=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
"}
//credit_book_to_reader(user)
DIRECT_OUTPUT(user, browse(dat, "window=manual;size=[BOOK_WINDOW_BROWSE_SIZE]")) // if you change this GUARANTEE that it works.
/obj/item/weapon/book/manual/wiki/engineering_guide
name = "Engineering Textbook"
icon_state ="bookEngineering2"
item_state = "book3"
author = "Engineering Encyclopedia"
title = "Engineering Textbook"
page_link = "Guide_to_Engineering"

View File

@@ -122,8 +122,8 @@
return
if(usr.stat || usr.restrained())
return
if(ismouse(usr) || (isobserver(usr) && !config.ghost_interaction))
if(ismouse(usr) || (isobserver(usr) && !CONFIG_GET(flag/ghost_interaction))) // CHOMPEdit
return
src.set_dir(turn(src.dir, 270))
return
return

View File

@@ -75,7 +75,7 @@
return
if(usr.stat || usr.restrained())
return
if(ismouse(usr) || (isobserver(usr) && !config.ghost_interaction))
if(ismouse(usr) || (isobserver(usr) && !CONFIG_GET(flag/ghost_interaction))) // CHOMPEdit
return
src.set_dir(turn(src.dir, 270))
@@ -89,7 +89,7 @@
return
if(usr.stat || usr.restrained())
return
if(ismouse(usr) || (isobserver(usr) && !config.ghost_interaction))
if(ismouse(usr) || (isobserver(usr) && !CONFIG_GET(flag/ghost_interaction))) // CHOMPEdit
return
src.set_dir(turn(src.dir, 90))

View File

@@ -84,7 +84,7 @@
return ..()
/obj/structure/trash_pile/attack_ghost(mob/observer/user as mob)
if(config.disable_player_mice)
if(CONFIG_GET(flag/disable_player_mice)) // CHOMPEdit
to_chat(user, "<span class='warning'>Spawning as a mouse is currently disabled.</span>")
return
@@ -116,7 +116,7 @@
host = new /mob/living/simple_mob/animal/passive/mouse(get_turf(src))
if(host)
if(config.uneducated_mice)
if(CONFIG_GET(flag/uneducated_mice)) // CHOMPEdit
host.universal_understand = 0
announce_ghost_joinleave(src, 0, "They are now a mouse.")
host.ckey = user.ckey