Spelling Fixes (#8973)

* SpellingFixes

* OtherTypos

* OtherTypos
This commit is contained in:
klorpa
2023-04-09 00:39:28 -05:00
committed by GitHub
parent ff4bb85a40
commit f445ffde0a
335 changed files with 943 additions and 943 deletions

View File

@@ -26,7 +26,7 @@
//transfer_moles - Limits the amount of moles to transfer. The actual amount of gas moved may also be limited by available_power, if given.
//available_power - the maximum amount of power that may be used when moving gas. If null then the transfer is not limited by power.
/proc/pump_gas(var/obj/machinery/M, var/datum/gas_mixture/source, var/datum/gas_mixture/sink, var/transfer_moles = null, var/available_power = null)
if (source.total_moles < MINIMUM_MOLES_TO_PUMP) //if we cant transfer enough gas just stop to avoid further processing
if (source.total_moles < MINIMUM_MOLES_TO_PUMP) //if we can't transfer enough gas just stop to avoid further processing
return -1
if (isnull(transfer_moles))
@@ -39,7 +39,7 @@
if (!isnull(available_power) && specific_power > 0)
transfer_moles = min(transfer_moles, available_power / specific_power)
if (transfer_moles < MINIMUM_MOLES_TO_PUMP) //if we cant transfer enough gas just stop to avoid further processing
if (transfer_moles < MINIMUM_MOLES_TO_PUMP) //if we can't transfer enough gas just stop to avoid further processing
return -1
//Update flow rate meter
@@ -69,7 +69,7 @@
//Gas 'pumping' proc for the case where the gas flow is passive and driven entirely by pressure differences (but still one-way).
/proc/pump_gas_passive(var/obj/machinery/M, var/datum/gas_mixture/source, var/datum/gas_mixture/sink, var/transfer_moles = null)
if (source.total_moles < MINIMUM_MOLES_TO_PUMP) //if we cant transfer enough gas just stop to avoid further processing
if (source.total_moles < MINIMUM_MOLES_TO_PUMP) //if we can't transfer enough gas just stop to avoid further processing
return -1
if (isnull(transfer_moles))
@@ -80,7 +80,7 @@
var/equalize_moles = calculate_equalize_moles(source, sink)
transfer_moles = min(transfer_moles, equalize_moles)
if (transfer_moles < MINIMUM_MOLES_TO_PUMP) //if we cant transfer enough gas just stop to avoid further processing
if (transfer_moles < MINIMUM_MOLES_TO_PUMP) //if we can't transfer enough gas just stop to avoid further processing
return -1
//Update flow rate meter
@@ -107,7 +107,7 @@
//total_transfer_moles - Limits the amount of moles to scrub. The actual amount of gas scrubbed may also be limited by available_power, if given.
//available_power - the maximum amount of power that may be used when scrubbing gas. If null then the scrubbing is not limited by power.
/proc/scrub_gas(var/obj/machinery/M, var/list/filtering, var/datum/gas_mixture/source, var/datum/gas_mixture/sink, var/total_transfer_moles = null, var/available_power = null)
if (source.total_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing
if (source.total_moles < MINIMUM_MOLES_TO_FILTER) //if we can't transfer enough gas just stop to avoid further processing
return -1
filtering = filtering & source.gas //only filter gasses that are actually there. DO NOT USE &=
@@ -123,7 +123,7 @@
specific_power_gas[g] = specific_power
total_filterable_moles += source.gas[g]
if (total_filterable_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing
if (total_filterable_moles < MINIMUM_MOLES_TO_FILTER) //if we can't transfer enough gas just stop to avoid further processing
return -1
//now that we know the total amount of filterable gas, we can calculate the amount of power needed to scrub one mole of gas
@@ -142,7 +142,7 @@
if (!isnull(available_power) && total_specific_power > 0)
total_transfer_moles = min(total_transfer_moles, available_power/total_specific_power)
if (total_transfer_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing
if (total_transfer_moles < MINIMUM_MOLES_TO_FILTER) //if we can't transfer enough gas just stop to avoid further processing
return -1
//Update flow rate var
@@ -178,7 +178,7 @@
//total_transfer_moles - Limits the amount of moles to input. The actual amount of gas filtered may also be limited by available_power, if given.
//available_power - the maximum amount of power that may be used when filtering gas. If null then the filtering is not limited by power.
/proc/filter_gas(var/obj/machinery/M, var/list/filtering, var/datum/gas_mixture/source, var/datum/gas_mixture/sink_filtered, var/datum/gas_mixture/sink_clean, var/total_transfer_moles = null, var/available_power = null)
if (source.total_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing
if (source.total_moles < MINIMUM_MOLES_TO_FILTER) //if we can't transfer enough gas just stop to avoid further processing
return -1
filtering = filtering & source.gas //only filter gasses that are actually there. DO NOT USE &=
@@ -211,7 +211,7 @@
if (!isnull(available_power) && total_specific_power > 0)
total_transfer_moles = min(total_transfer_moles, available_power/total_specific_power)
if (total_transfer_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing
if (total_transfer_moles < MINIMUM_MOLES_TO_FILTER) //if we can't transfer enough gas just stop to avoid further processing
return -1
//Update flow rate var
@@ -250,7 +250,7 @@
//I don't like the copypasta, but I decided to keep both versions of gas filtering as filter_gas is slightly faster (doesn't create as many temporary lists, doesn't call update_values() as much)
//filter_gas can be removed and replaced with this proc if need be.
/proc/filter_gas_multi(var/obj/machinery/M, var/list/filtering, var/datum/gas_mixture/source, var/datum/gas_mixture/sink_clean, var/total_transfer_moles = null, var/available_power = null)
if (source.total_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing
if (source.total_moles < MINIMUM_MOLES_TO_FILTER) //if we can't transfer enough gas just stop to avoid further processing
return -1
filtering = filtering & source.gas //only filter gasses that are actually there. DO NOT USE &=
@@ -284,7 +284,7 @@
if (!isnull(available_power) && total_specific_power > 0)
total_transfer_moles = min(total_transfer_moles, available_power/total_specific_power)
if (total_transfer_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing
if (total_transfer_moles < MINIMUM_MOLES_TO_FILTER) //if we can't transfer enough gas just stop to avoid further processing
return -1
//Update Flow Rate var
@@ -353,7 +353,7 @@
total_input_volume += source.volume
total_input_moles += source.total_moles
if (total_mixing_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing
if (total_mixing_moles < MINIMUM_MOLES_TO_FILTER) //if we can't transfer enough gas just stop to avoid further processing
return -1
if (isnull(total_transfer_moles))
@@ -365,7 +365,7 @@
if (!isnull(available_power) && total_specific_power > 0)
total_transfer_moles = min(total_transfer_moles, available_power / total_specific_power)
if (total_transfer_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing
if (total_transfer_moles < MINIMUM_MOLES_TO_FILTER) //if we can't transfer enough gas just stop to avoid further processing
return -1
//Update flow rate var

View File

@@ -13,7 +13,7 @@ Class Vars:
connecting_turfs - This holds a list of connected turfs, mainly for the sake of airflow.
coefficent - This is a marker for how many connections are on this edge. Used to determine the ratio of flow.
coefficient - This is a marker for how many connections are on this edge. Used to determine the ratio of flow.
connection_edge/zone

View File

@@ -420,7 +420,7 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin
legs_exposure = 0
if(C.body_parts_covered & ARMS)
arms_exposure = 0
//minimize this for low-pressure enviroments
//minimize this for low-pressure environments
var/mx = 5 * firelevel/vsc.fire_firelevel_multiplier * min(pressure / ONE_ATMOSPHERE, 1)
//Always check these damage procs first if fire damage isn't working. They're probably what's wrong.

View File

@@ -48,7 +48,7 @@
/*
Simple heuristic for determining if removing the turf from it's zone will not partition the zone (A very bad thing).
Instead of analyzing the entire zone, we only check the nearest 3x3 turfs surrounding the src turf.
This implementation may produce false negatives but it (hopefully) will not produce any false postiives.
This implementation may produce false negatives but it (hopefully) will not produce any false positives.
*/
/turf/simulated/proc/can_safely_remove_from_zone()

View File

@@ -7,7 +7,7 @@ var/global/vs_control/vsc = new
var/fire_firelevel_multiplier = 25
var/fire_firelevel_multiplier_NAME = "Fire - Firelevel Constant"
var/fire_firelevel_multiplier_DESC = "Multiplied by the equation for firelevel, affects mainly the extingiushing of fires."
var/fire_firelevel_multiplier_DESC = "Multiplied by the equation for firelevel, affects mainly the extinguishing of fires."
//Note that this parameter and the phoron heat capacity have a significant impact on TTV yield.
var/fire_fuel_energy_release = 866000 //J/mol. Adjusted to compensate for fire energy release being fixed, was 397000
@@ -43,7 +43,7 @@ var/global/vs_control/vsc = new
var/airflow_stun_pressure_DESC = "Percent of 1 Atm. at which mobs will be stunned by airflow."
var/airflow_stun_cooldown = 60
var/airflow_stun_cooldown_NAME = "Aiflow Stunning - Cooldown"
var/airflow_stun_cooldown_NAME = "Airflow Stunning - Cooldown"
var/airflow_stun_cooldown_DESC = "How long, in tenths of a second, to wait before stunning them again."
var/airflow_stun = 1

View File

@@ -4,7 +4,7 @@
//Picks from the list, with some safeties, and returns the "default" arg if it fails
#define DEFAULTPICK(L, default) ((istype(L, /list) && L:len) ? pick(L) : default)
// Ensures L is initailized after this point
// Ensures L is initialized after this point
#define LAZYINITLIST(L) if (!L) L = list()
// Sets a L back to null iff it is empty
@@ -13,12 +13,12 @@
// Removes I from list L, and sets I to null if it is now empty
#define LAZYREMOVE(L, I) if(L) { L -= I; if(!length(L)) { L = null; } }
// Adds I to L, initalizing L if necessary
// Adds I to L, initializing L if necessary
#define LAZYADD(L, I) if(!L) { L = list(); } L += I;
#define LAZYOR(L, I) if(!L) { L = list(); } L |= I;
// Adds I to L, initalizing L if necessary, if I is not already in L
// Adds I to L, initializing L if necessary, if I is not already in L
#define LAZYDISTINCTADD(L, I) if(!L) { L = list(); } L |= I;
#define LAZYFIND(L, V) L ? L.Find(V) : 0
@@ -33,7 +33,7 @@
#define LAZYLEN(L) length(L)
#define LAZYADDASSOC(L, K, V) if(!L) { L = list(); } L[K] += V;
///This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects)
///This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus can't be used to += objects)
#define LAZYADDASSOCLIST(L, K, V) if(!L) { L = list(); } L[K] += list(V);
#define LAZYREMOVEASSOC(L, K, V) if(L) { if(L[K]) { L[K] -= V; if(!length(L[K])) L -= K; } if(!length(L)) L = null; }
#define LAZYACCESSASSOC(L, I, K) L ? L[I] ? L[I][K] ? L[I][K] : null : null : null

View File

@@ -130,7 +130,7 @@ What is the naming convention for planes or layers?
#define PLANE_GHOSTS 10 //Spooooooooky ghooooooosts
#define PLANE_AI_EYE 11 //The AI eye lives here
// "Character HUDs", aka HUDs, but not the game's UI. Things like medhuds. I know Planes say they must be intergers, but it's lies.
// "Character HUDs", aka HUDs, but not the game's UI. Things like medhuds. I know Planes say they must be integers, but it's lies.
#define PLANE_CH_STATUS 15 //Status icon
#define PLANE_CH_HEALTH 16 //Health icon
#define PLANE_CH_LIFE 17 //Health bar

View File

@@ -17,7 +17,7 @@
#define STUN "stun"
#define WEAKEN "weaken"
#define PARALYZE "paralize"
#define PARALYZE "paralyze"
#define IRRADIATE "irradiate"
#define AGONY "agony" // Added in PAIN!
#define SLUR "slur"

View File

@@ -33,9 +33,9 @@
// For secHUDs and medHUDs and variants. The number is the location of the image on the list hud_list of humans.
#define HEALTH_HUD 1 // A simple line rounding the mob's number health.
#define STATUS_HUD 2 // Alive, dead, diseased, etc.
#define ID_HUD 3 // The job asigned to your ID.
#define ID_HUD 3 // The job assigned to your ID.
#define WANTED_HUD 4 // Wanted, released, paroled, security status.
#define IMPLOYAL_HUD 5 // Loyality implant.
#define IMPLOYAL_HUD 5 // Loyalty implant.
#define IMPCHEM_HUD 6 // Chemical implant.
#define IMPTRACK_HUD 7 // Tracking implant.
#define SPECIALROLE_HUD 8 // AntagHUD image.
@@ -161,7 +161,7 @@
#define CAT_HIDDEN 2
#define CAT_COIN 4
//Antag Faction Visbility
//Antag Faction Visibility
#define ANTAG_HIDDEN "Hidden"
#define ANTAG_SHARED "Shared"
#define ANTAG_KNOWN "Known"
@@ -189,7 +189,7 @@
#define TSC_WT "Ward-Takahashi"
#define TSC_BC "Bishop Cybernetics"
#define TSC_MORPH "Morpheus"
#define TSC_XION "Xion" // Not really needed but consistancy I guess.
#define TSC_XION "Xion" // Not really needed but consistency I guess.
#define TSC_GIL "Gilthari"
#define MIDNIGHT_ROLLOVER 864000 //number of deciseconds in a day
@@ -222,7 +222,7 @@
#define USE_FAIL_NOT_IN_USER 6
#define USE_FAIL_IS_SILICON 7
// This creates a consistant definition for creating global lists, automatically inserting objects into it when they are created, and removing them when deleted.
// This creates a consistent definition for creating global lists, automatically inserting objects into it when they are created, and removing them when deleted.
// It is very good for removing the 'in world' junk that exists in the codebase painlessly.
// First argument is the list name/path desired, e.g. 'all_candles' would be 'var/list/all_candles = list()'.
// Second argument is the path the list is expected to contain. Note that children will also get added to the global list.

View File

@@ -13,7 +13,7 @@
#define PASSEMOTES 0x40 // Mob has a cortical borer or holders inside of it that need to see emotes.
#define GODMODE 0x1000
#define FAKEDEATH 0x2000 // Replaces stuff like changeling.changeling_fakedeath.
#define DISFIGURED 0x4000 // Set but never checked. Remove this sometime and replace occurences with the appropriate organ code
#define DISFIGURED 0x4000 // Set but never checked. Remove this sometime and replace occurrences with the appropriate organ code
// Grab levels.
#define GRAB_PASSIVE 1
@@ -27,7 +27,7 @@
#define BORGXRAY 0x4
#define BORGMATERIAL 0x8
#define STANCE_ATTACK 11 // Backwards compatability
#define STANCE_ATTACK 11 // Backwards compatibility
#define STANCE_ATTACKING 12 // Ditto
/*
#define STANCE_IDLE 1 // Looking for targets if hostile. Does idle wandering.
@@ -35,7 +35,7 @@
#define STANCE_ATTACK 3 // Attempting to get into attack position
#define STANCE_ATTACKING 4 // Doing attacks
#define STANCE_TIRED 5 // Bears
#define STANCE_FOLLOW 6 // Following somone
#define STANCE_FOLLOW 6 // Following someone
#define STANCE_BUSY 7 // Do nothing on life ticks (Other code is running)
*/
#define STANCE_SLEEP 0 // Doing (almost) nothing, to save on CPU because nobody is around to notice or the mob died.
@@ -46,7 +46,7 @@
#define STANCE_BLINDFIGHT 5 // Fighting something that cannot be seen by the mob, from invisibility or out of sight.
#define STANCE_REPOSITION 6 // Relocating to a better position while in combat. Also used when moving away from a danger like grenades.
#define STANCE_MOVE 7 // Similar to above but for out of combat. If a baddie is seen, they'll cancel and fight them.
#define STANCE_FOLLOW 8 // Following somone, without trying to murder them.
#define STANCE_FOLLOW 8 // Following someone, without trying to murder them.
#define STANCE_FLEE 9 // Run away from the target because they're too spooky/we're dying/some other reason.
#define STANCE_DISABLED 10 // Used when the holder is afflicted with certain status effects, such as stuns or confusion.
@@ -288,7 +288,7 @@
#define FBP_DRONE "Drone"
// Similar to above but for borgs.
// Seperate defines are unfortunately required since borgs display the brain differently for some reason.
// Separate defines are unfortunately required since borgs display the brain differently for some reason.
#define BORG_BRAINTYPE_CYBORG "Cyborg"
#define BORG_BRAINTYPE_POSI "Robot"
#define BORG_BRAINTYPE_DRONE "Drone"
@@ -345,13 +345,13 @@
#define SPECIES_REPLICANT_ALPHA "Alpha Replicant"
#define SPECIES_REPLICANT_BETA "Beta Replicant"
// Used to seperate simple animals by ""intelligence"".
// Used to separate simple animals by ""intelligence"".
#define SA_PLANT 1
#define SA_ANIMAL 2
#define SA_ROBOTIC 3
#define SA_HUMANOID 4
// More refined version of SA_* ""intelligence"" seperators.
// More refined version of SA_* ""intelligence"" separators.
// Now includes bitflags, so to target two classes you just do 'MOB_CLASS_ANIMAL|MOB_CLASS_HUMANOID'
#define MOB_CLASS_NONE 0 // Default value, and used to invert for _ALL.
#define MOB_CLASS_PLANT 1 // Unused at the moment.

View File

@@ -24,8 +24,8 @@
#define ROGUELIKE_ITEM_UNCURSED 0 // Normal.
#define ROGUELIKE_ITEM_CURSED -1 // Does bad things, clothing cannot be taken off.
// Consistant messages for certain events.
// Consistancy is import in order to avoid giving too much information away when using an
// Consistent messages for certain events.
// Consistency is import in order to avoid giving too much information away when using an
// unidentified object due to a typo or some other unique difference in message output.
#define ROGUELIKE_MESSAGE_NOTHING "Nothing happens."
#define ROGUELIKE_MESSAGE_UNKNOWN "Something happened, but you're not sure what."

View File

@@ -18,7 +18,7 @@
#define MOON_PHASE_WAXING_CRESCENT "waxing crescent"
#define MOON_PHASE_FIRST_QUARTER "first quarter"
#define MOON_PHASE_WAXING_GIBBOUS "waxing gibbous"
#define MOON_PHASE_FULL_MOON "full moon" // ware-shantaks sold seperately.
#define MOON_PHASE_FULL_MOON "full moon" // were-shantaks sold separately.
#define MOON_PHASE_WANING_GIBBOUS "waning gibbous"
#define MOON_PHASE_LAST_QUARTER "last quarter"
#define MOON_PHASE_WANING_CRESCENT "waning crescent"

View File

@@ -1,8 +1,8 @@
// Species flags.
#define NO_MINOR_CUT 0x1 // Can step on broken glass with no ill-effects. Either thick skin (diona), cut resistant (slimes) or incorporeal (shadows)
#define NO_MINOR_CUT 0x1 // Can step on broken glass with no ill-effects. Either thick skin (Diona), cut resistant (slimes) or incorporeal (shadows)
#define IS_PLANT 0x2 // Is a treeperson.
#define NO_SCAN 0x4 // Cannot be scanned in a DNA machine/genome-stolen.
#define NO_PAIN 0x8 // Cannot suffer halloss/recieves deceptive health indicator.
#define NO_PAIN 0x8 // Cannot suffer halloss/receives deceptive health indicator.
#define NO_SLIP 0x10 // Cannot fall over.
#define NO_POISON 0x20 // Cannot not suffer toxloss.
#define NO_EMBED 0x40 // Can step on broken glass with no ill-effects and cannot have shrapnel embedded in it.
@@ -26,16 +26,16 @@
// Species allergens
#define ALLERGEN_MEAT 0x1 // Skrell won't like this.
#define ALLERGEN_FISH 0x2 // Seperate for completion's sake. Still bad for skrell.
#define ALLERGEN_FISH 0x2 // Separate for completion's sake. Still bad for Skrell.
#define ALLERGEN_FRUIT 0x4 // An apple a day only keeps the doctor away if they're allergic.
#define ALLERGEN_VEGETABLE 0x8 // Taters 'n' carrots. Potato allergy is a thing, apparently.
#define ALLERGEN_GRAINS 0x10 // Wheat, oats, etc.
#define ALLERGEN_BEANS 0x20 // The musical fruit! Includes soy.
#define ALLERGEN_SEEDS 0x40 // Hope you don't have a nut allergy.
#define ALLERGEN_DAIRY 0x80 // Lactose intolerance, ho! Also bad for skrell.
#define ALLERGEN_DAIRY 0x80 // Lactose intolerance, ho! Also bad for Skrell.
#define ALLERGEN_FUNGI 0x100 // Delicious shrooms.
#define ALLERGEN_COFFEE 0x200 // Mostly here for tajara.
#define ALLERGEN_SUGARS 0x400 // For unathi-like reactions
#define ALLERGEN_COFFEE 0x200 // Mostly here for Tajara.
#define ALLERGEN_SUGARS 0x400 // For Unathi-like reactions
#define ALLERGEN_EGGS 0x800 // For Skrell eggs allergy
#define ALLERGEN_STIMULANT 0x1000 // Stimulants are what makes the Tajaran heart go ruh roh - not just coffee!

View File

@@ -15,7 +15,7 @@
* Misc
*/
//Returns a list in plain english as a string
//Returns a list in plain English as a string
/proc/english_list(var/list/input, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = ",")
// this proc cannot be merged with counting_english_list to maintain compatibility
// with shoddy use of this proc for code logic and for cases that require original order

View File

@@ -32,7 +32,7 @@
for(var/area_type in area_types)
var/list/types = typesof(area_type)
for(var/T in types)
// Test for existance.
// Test for existence.
var/area/A = locate(T)
if(!istype(A) || !A.contents.len) // Empty contents list means it's not on the map.
continue

View File

@@ -153,7 +153,7 @@ var/global/syndicate_code_response//Code response for traitors.
Another traitor may then respond with: "They enjoy running through the void-filled vacuum of the derelict."
The phrase should then have the words: James Smith.
The response should then have the words: run, void, and derelict.
This way assures that the code is suited to the conversation and is unpredicatable.
This way assures that the code is suited to the conversation and is unpredictable.
Obviously, some people will be better at this than others but in theory, everyone should be able to do it and it only enhances roleplay.
Can probably be done through "{ }" but I don't really see the practical benefit.
One example of an earlier system is commented below.

View File

@@ -4,7 +4,7 @@
num_list += text2num(x)
return num_list
// Splits the text of a file at seperator and returns them in a list.
// Splits the text of a file at separator and returns them in a list.
/proc/file2list(filename, seperator="\n")
return splittext(return_file_text(filename),seperator)
@@ -87,7 +87,7 @@
if (NORTHWEST) return 315
if (SOUTHWEST) return 225
// Returns the angle in english
// Returns the angle in English
/proc/angle2text(var/degree)
return dir2text(angle2dir(degree))
@@ -248,7 +248,7 @@
return strtype
return copytext(strtype, delim_pos)
// Concatenates a list of strings into a single string. A seperator may optionally be provided.
// Concatenates a list of strings into a single string. A separator may optionally be provided.
/proc/list2text(list/ls, sep)
if (ls.len <= 1) // Early-out code for empty or singleton lists.
return ls.len ? ls[1] : ""
@@ -333,7 +333,7 @@
#undef S4
#undef S1
// Converts a string into a list by splitting the string at each delimiter found. (discarding the seperator)
// Converts a string into a list by splitting the string at each delimiter found. (discarding the separator)
/proc/text2list(text, delimiter="\n")
var/delim_len = length(delimiter)
if (delim_len < 1)

View File

@@ -47,7 +47,7 @@ Location where the teleport begins, target that will teleport, distance to go, d
Random error in tile placement x, error in tile placement y, and block offset.
Block offset tells the proc how to place the box. Behind teleport location, relative to starting location, forward, etc.
Negative values for offset are accepted, think of it in relation to North, -x is west, -y is south. Error defaults to positive.
Turf and target are seperate in case you want to teleport some distance from a turf the target is not standing on or something.
Turf and target are separate in case you want to teleport some distance from a turf the target is not standing on or something.
*/
var/dirx = 0//Generic location finding variable.
@@ -249,7 +249,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
return 0
return 1
//Ensure the frequency is within bounds of what it should be sending/recieving at
//Ensure the frequency is within bounds of what it should be sending/receiving at
/proc/sanitize_frequency(var/f, var/low = PUBLIC_LOW_FREQ, var/high = PUBLIC_HIGH_FREQ)
f = round(f)
f = max(low, f)
@@ -1570,8 +1570,8 @@ GLOBAL_REAL_VAR(list/stack_trace_storage)
. = stack_trace_storage
stack_trace_storage = null
// \ref behaviour got changed in 512 so this is necesary to replicate old behaviour.
// If it ever becomes necesary to get a more performant REF(), this lies here in wait
// \ref behaviour got changed in 512 so this is necessary to replicate old behaviour.
// If it ever becomes necessary to get a more performant REF(), this lies here in wait
// #define REF(thing) (thing && istype(thing, /datum) && (thing:datum_flags & DF_USE_TAG) && thing:tag ? "[thing:tag]" : "\ref[thing]")
/proc/REF(input)
if(istype(input, /datum))

View File

@@ -42,7 +42,7 @@
#define random_id(key,min_id,max_id) uniqueness_repository.Generate(/datum/uniqueness_generator/id_random, key, min_id, max_id)
/// Given a hexadeximal text, returns the corresponding integer
/// Given a hexadecimal text, returns the corresponding integer
#define hex2num(hex) (text2num(hex, 16) || 0)

View File

@@ -31,7 +31,7 @@
After that, mostly just check your state, check whether you're holding an item,
check whether you're adjacent to the target, then pass off the click to whoever
is recieving it.
is receiving it.
The most common are:
* mob/UnarmedAttack(atom,adjacent) - used here only when adjacent, with no item in hand; in the case of humans, checks gloves
* atom/attackby(item,user) - used only when adjacent

View File

@@ -116,7 +116,7 @@
/mob/living/silicon/robot/AltClickOn(var/atom/A)
A.BorgAltClick(src)
/atom/proc/BorgCtrlShiftClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden
/atom/proc/BorgCtrlShiftClick(var/mob/living/silicon/robot/user) //forward to human click if not overridden
CtrlShiftClick(user)
/obj/machinery/door/airlock/BorgCtrlShiftClick(var/mob/living/silicon/robot/user)
@@ -125,7 +125,7 @@
AICtrlShiftClick(user)
/atom/proc/BorgShiftClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden
/atom/proc/BorgShiftClick(var/mob/living/silicon/robot/user) //forward to human click if not overridden
ShiftClick(user)
/obj/machinery/door/airlock/BorgShiftClick(var/mob/living/silicon/robot/user) // Opens and closes doors! Forwards to AI code.
@@ -134,7 +134,7 @@
AIShiftClick(user)
/atom/proc/BorgCtrlClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden
/atom/proc/BorgCtrlClick(var/mob/living/silicon/robot/user) //forward to human click if not overridden
CtrlClick(user)
/obj/machinery/door/airlock/BorgCtrlClick(var/mob/living/silicon/robot/user) // Bolts doors. Forwards to AI code.
@@ -159,7 +159,7 @@
AltClick(user)
return
/obj/machinery/door/airlock/BorgAltClick(var/mob/living/silicon/robot/user) // Eletrifies doors. Forwards to AI code.
/obj/machinery/door/airlock/BorgAltClick(var/mob/living/silicon/robot/user) // Electrifies doors. Forwards to AI code.
if(user.bolt && !user.bolt.malfunction)
return

View File

@@ -2,7 +2,7 @@
MouseDrop:
Called on the atom you're dragging. In a lot of circumstances we want to use the
recieving object instead, so that's the default action. This allows you to drag
receiving object instead, so that's the default action. This allows you to drag
almost anything into a trash can.
*/

View File

@@ -15,10 +15,10 @@
#define ui_entire_screen "WEST,SOUTH to EAST,NORTH"
//Lower left, persistant menu
//Lower left, persistent menu
#define ui_inventory "WEST:6,SOUTH:5"
//Lower center, persistant menu
//Lower center, persistent menu
#define ui_sstore1 "WEST+2:10,SOUTH:5"
#define ui_id "WEST+3:12,SOUTH:5"
#define ui_belt "WEST+4:14,SOUTH:5"
@@ -48,7 +48,7 @@
#define ui_construct_fire "EAST-1:16,CENTER+1:13" //above health, slightly to the left
#define ui_construct_pull "EAST-1:28,SOUTH+1:10" //above the zone_sel icon
//Lower right, persistant menu
//Lower right, persistent menu
#define ui_dropbutton "EAST-4:22,SOUTH:5"
#define ui_drop_throw "EAST-1:28,SOUTH+1:7"
#define ui_pull_resist "EAST-2:26,SOUTH+1:7"

View File

@@ -191,7 +191,7 @@
#define AB_NORTH_OFFSET 26
#define AB_MAX_COLUMNS 10
/datum/hud/proc/ButtonNumberToScreenCoords(var/number) // TODO : Make this zero-indexed for readabilty
/datum/hud/proc/ButtonNumberToScreenCoords(var/number) // TODO : Make this zero-indexed for readability
var/row = round((number-1)/AB_MAX_COLUMNS)
var/col = ((number - 1)%(AB_MAX_COLUMNS)) + 1
var/coord_col = "+[col-1]"

View File

@@ -203,7 +203,7 @@ The box in your backpack has an oxygen tank and gas mask in it."
icon_state = "hot"
/obj/screen/alert/hot/robot
desc = "The air around you is too hot for a humanoid. Be careful to avoid exposing them to this enviroment."
desc = "The air around you is too hot for a humanoid. Be careful to avoid exposing them to this environment."
/obj/screen/alert/chilly
name = "Too Chilly"
@@ -216,7 +216,7 @@ The box in your backpack has an oxygen tank and gas mask in it."
icon_state = "cold"
/obj/screen/alert/cold/robot
desc = "The air around you is too cold for a humanoid. Be careful to avoid exposing them to this enviroment."
desc = "The air around you is too cold for a humanoid. Be careful to avoid exposing them to this environment."
/obj/screen/alert/lowpressure
name = "Low Pressure"
@@ -251,7 +251,7 @@ or something covering your eyes."
/obj/screen/alert/confused
name = "Confused"
desc = "You're confused, and may stumble into things! This may be from concussive effects, drugs, or dizzyness. Walking will help reduce incidents."
desc = "You're confused, and may stumble into things! This may be from concussive effects, drugs, or dizziness. Walking will help reduce incidents."
icon_state = "confused"
/obj/screen/alert/high

View File

@@ -15,7 +15,7 @@ item/attack() generates attack logs, sets click cooldown and calls the mob's att
Item Hit Effects:
item/apply_hit_effect() can be overriden to do whatever you want. However "standard" physical damage based weapons should make use of the target mob's hit_with_weapon() proc to
item/apply_hit_effect() can be overridden to do whatever you want. However "standard" physical damage based weapons should make use of the target mob's hit_with_weapon() proc to
avoid code duplication. This includes items that may sometimes act as a standard weapon in addition to having other effects (e.g. stunbatons on harm intent).
*/
@@ -68,7 +68,7 @@ avoid code duplication. This includes items that may sometimes act as a standard
return I.attack(src, user, user.zone_sel.selecting, attack_modifier)
// Used to get how fast a mob should attack, and influences click delay.
// This is just for inheritence.
// This is just for inheritance.
/mob/proc/get_attack_speed()
return DEFAULT_ATTACK_COOLDOWN

View File

@@ -138,7 +138,7 @@ var/global/const/tk_maxrange = 15
/obj/item/tk_grab/proc/focus_object(var/obj/target, var/mob/living/user)
if(!istype(target,/obj)) return//Cant throw non objects atm might let it do mobs later
if(!istype(target,/obj)) return//Can't throw non objects atm might let it do mobs later
if(target.anchored || !isturf(target.loc))
qdel(src)
return

View File

@@ -109,7 +109,7 @@ var/global/const/AI_FREQ = 1343
var/global/const/DTH_FREQ = 1341
var/global/const/SYND_FREQ = 1213
var/global/const/RAID_FREQ = 1277
var/global/const/ENT_FREQ = 1461 //entertainment frequency. This is not a diona exclusive frequency.
var/global/const/ENT_FREQ = 1461 //entertainment frequency. This is not a Diona exclusive frequency.
// department channels
var/global/const/PUB_FREQ = 1459
@@ -194,11 +194,11 @@ var/global/list/DEPT_FREQS = list(AI_FREQ, COMM_FREQ, ENG_FREQ, ENT_FREQ, MED_FR
//Other devices can then choose to send signals to only those devices that belong to a particular filter.
//This is done for performance, so we don't send signals to lots of machines unnecessarily.
//This filter is special because devices belonging to default also recieve signals sent to any other filter.
//This filter is special because devices belonging to default also receive signals sent to any other filter.
var/global/const/RADIO_DEFAULT = "radio_default"
var/global/const/RADIO_TO_AIRALARM = "radio_airalarm" //air alarms
var/global/const/RADIO_FROM_AIRALARM = "radio_airalarm_rcvr" //devices interested in recieving signals from air alarms
var/global/const/RADIO_FROM_AIRALARM = "radio_airalarm_rcvr" //devices interested in receiving signals from air alarms
var/global/const/RADIO_CHAT = "radio_telecoms"
var/global/const/RADIO_ATMOSIA = "radio_atmos"
var/global/const/RADIO_NAVBEACONS = "radio_navbeacon"

View File

@@ -1,5 +1,5 @@
// This is a simple ticker for the new event system.
// The logic that determines what events get chosen is held inside a seperate subsystem.
// The logic that determines what events get chosen is held inside a separate subsystem.
SUBSYSTEM_DEF(event_ticker)
name = "Events (Ticker)"

View File

@@ -3,21 +3,21 @@
// individual player (IC) skill, and such, in order to try to choose the best events to take in order to add spice or variety to
// the round.
// This subsystem holds the logic that chooses events. Actual event processing is handled in a seperate subsystem.
// This subsystem holds the logic that chooses events. Actual event processing is handled in a separate subsystem.
SUBSYSTEM_DEF(game_master)
name = "Events (Game Master)"
wait = 60 SECONDS
runlevels = RUNLEVEL_GAME
// The GM object is what actually chooses events.
// It's held in a seperate object for better encapsulation, and allows for different 'flavors' of GMs to be made, that choose events differently.
// It's held in a separate object for better encapsulation, and allows for different 'flavors' of GMs to be made, that choose events differently.
var/datum/game_master/GM = null
var/game_master_type = /datum/game_master/default
var/list/available_events = list() // A list of meta event objects.
var/danger = 0 // The GM's best guess at how chaotic the round is. High danger makes it hold back.
var/staleness = -20 // Determines liklihood of the GM doing something, increases over time.
var/staleness = -20 // Determines likelihood of the GM doing something, increases over time.
var/next_event = 0 // Minimum amount of time of nothingness until the GM can pick something again.
@@ -93,11 +93,11 @@ SUBSYSTEM_DEF(game_master)
staleness = round( between(-20, staleness + amount, 100), 0.1)
// These are ran before committing to an event.
// Returns TRUE if the system is allowed to procede, otherwise returns FALSE.
// Returns TRUE if the system is allowed to proceed, otherwise returns FALSE.
/datum/controller/subsystem/game_master/proc/pre_event_checks(quiet = FALSE)
if(!ticker || ticker.current_state != GAME_STATE_PLAYING)
if(!quiet)
log_game_master("Unable to start event: Ticker is nonexistant, or the game is not ongoing.")
log_game_master("Unable to start event: Ticker is nonexistent, or the game is not ongoing.")
return FALSE
if(GM.ignore_time_restrictions)
return TRUE
@@ -135,10 +135,10 @@ SUBSYSTEM_DEF(game_master)
// This object makes the actual decisions.
/datum/game_master
// Multiplier for how much 'danger' is accumulated. Higer generally makes it possible for more dangerous events to be picked.
// Multiplier for how much 'danger' is accumulated. Higher generally makes it possible for more dangerous events to be picked.
var/danger_modifier = 1.0
// Ditto. Higher numbers generally result in more events occuring in a round.
// Ditto. Higher numbers generally result in more events occurring in a round.
var/staleness_modifier = 1.0
var/decision_cooldown_lower_bound = 5 MINUTES // Lower bound for how long to wait until -the potential- for another event being decided.
@@ -155,7 +155,7 @@ SUBSYSTEM_DEF(game_master)
if(check_rights(R_ADMIN|R_EVENT|R_DEBUG))
SSgame_master.interact(usr)
else
to_chat(usr, span("warning", "You do not have sufficent rights to view the GM panel, sorry."))
to_chat(usr, span("warning", "You do not have sufficient rights to view the GM panel, sorry."))
/datum/controller/subsystem/game_master/proc/interact(var/client/user)
if(!user)
@@ -198,7 +198,7 @@ SUBSYSTEM_DEF(game_master)
dat += href(src, list("set_danger" = 1), "\[Set\]")
dat += "<br>"
dat += "<i>Danger is an estimate of how chaotic the round has been so far. It is decreased passively over time, and is increased by having \
certain chaotic events be selected, or chaotic things happen in the round. A sufficently high amount of danger will make the system \
certain chaotic events be selected, or chaotic things happen in the round. A sufficiently high amount of danger will make the system \
avoid using destructive events, to avoid pushing the station over the edge.</i><br>"
dat += "<h2>Player Activity:</h2>"
@@ -330,7 +330,7 @@ SUBSYSTEM_DEF(game_master)
return
if(!check_rights(R_ADMIN|R_EVENT|R_DEBUG))
message_admins("[usr] has attempted to modify the Game Master values without sufficent privilages.")
message_admins("[usr] has attempted to modify the Game Master values without sufficient privileges.")
return
if(href_list["toggle"])

View File

@@ -103,7 +103,7 @@ SUBSYSTEM_DEF(job)
job_titles += J
return job_titles
job_debug_message("Was asked to get job titles for a non-existant department '[target_department_name]'.")
job_debug_message("Was asked to get job titles for a non-existent department '[target_department_name]'.")
return list()
// Returns a reference to the primary department datum that a job is in.

View File

@@ -52,7 +52,7 @@ SUBSYSTEM_DEF(mapping)
/datum/controller/subsystem/mapping/proc/load_map_templates()
for(var/T in subtypesof(/datum/map_template))
var/datum/map_template/template = T
if(!(initial(template.mappath))) // If it's missing the actual path its probably a base type or being used for inheritence.
if(!(initial(template.mappath))) // If it's missing the actual path its probably a base type or being used for inheritance.
continue
template = new T()
map_templates[template.name] = template
@@ -104,7 +104,7 @@ SUBSYSTEM_DEF(mapping)
for(var/zl in z_levels)
var/turf/T = locate(1, 1, zl)
if(!T)
stack_trace("Submap area seeding was given a non-existant z-level ([zl]).")
stack_trace("Submap area seeding was given a non-existent z-level ([zl]).")
return
var/time_started_overall = REALTIMEOFDAY
@@ -130,7 +130,7 @@ SUBSYSTEM_DEF(mapping)
CHECK_TICK
var/list/loaded_submap_names = list()
var/list/template_groups_used = list() // Used to avoid spawning three seperate versions of the same PoI.
var/list/template_groups_used = list() // Used to avoid spawning three separate versions of the same PoI.
log_mapload("Going to seed submaps of subtype '[desired_map_template_type]' with a budget of [budget].")

View File

@@ -36,11 +36,11 @@ SUBSYSTEM_DEF(shuttles)
var/tmp/list/current_run // Shuttles remaining to process this fire() tick
/datum/controller/subsystem/shuttles/OnNew()
global.shuttle_controller = src // TODO - Remove this! Change everything to point at SSshuttles intead
global.shuttle_controller = src // TODO - Remove this! Change everything to point at SSshuttles instead
/datum/controller/subsystem/shuttles/Initialize(timeofday)
last_landmark_registration_time = world.time
// Find all declared shuttle datums and initailize them. (Okay, queue them for initialization a few lines further down)
// Find all declared shuttle datums and initialize them. (Okay, queue them for initialization a few lines further down)
for(var/shuttle_type in subtypesof(/datum/shuttle)) // This accounts for most shuttles, though away maps can queue up more.
var/datum/shuttle/shuttle = shuttle_type
if(initial(shuttle.category) == shuttle_type)

View File

@@ -57,11 +57,11 @@ SUBSYSTEM_DEF(sqlite)
init_schema.Execute(sqlite_object)
sqlite_check_for_errors(init_schema, "Feedback table creation")
// Add more schemas below this if the SQLite DB gets expanded for things like persistant news, polls, bans, deaths, etc.
// Add more schemas below this if the SQLite DB gets expanded for things like persistent news, polls, bans, deaths, etc.
// General error checking for SQLite.
// Returns true if something went wrong. Also writes a log.
// The desc parameter should be unique for each call, to make it easier to track down where the error occured.
// The desc parameter should be unique for each call, to make it easier to track down where the error occurred.
/datum/controller/subsystem/sqlite/proc/sqlite_check_for_errors(var/database/query/query_used, var/desc)
if(query_used && query_used.ErrorMsg())
log_debug("SQLite Error: [desc] : [query_used.ErrorMsg()]")

View File

@@ -9,7 +9,7 @@ SUBSYSTEM_DEF(ticker)
flags = SS_NO_TICK_CHECK | SS_KEEP_TIMING
runlevels = RUNLEVEL_LOBBY | RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME // Every runlevel!
var/const/restart_timeout = 3 MINUTES // Default time to wait before rebooting in desiseconds.
var/const/restart_timeout = 3 MINUTES // Default time to wait before rebooting in deciseconds.
var/current_state = GAME_STATE_INIT // We aren't even at pregame yet // TODO replace with CURRENT_GAME_STATE
/* Relies upon the following globals (TODO move those in here) */
@@ -24,7 +24,7 @@ SUBSYSTEM_DEF(ticker)
var/datum/game_mode/mode = null // The actual gamemode, if selected.
var/end_game_state = END_GAME_NOT_OVER // Track where we are ending game/round
var/restart_timeleft // Time remaining until restart in desiseconds
var/restart_timeleft // Time remaining until restart in deciseconds
var/last_restart_notify // world.time of last restart warning.
var/delay_end = FALSE // If set, the round will not restart on its own.
@@ -48,7 +48,7 @@ SUBSYSTEM_DEF(ticker)
// This global variable exists for legacy support so we don't have to rename every 'ticker' to 'SSticker' yet.
var/global/datum/controller/subsystem/ticker/ticker
/datum/controller/subsystem/ticker/OnNew()
global.ticker = src // TODO - Remove this! Change everything to point at SSticker intead
global.ticker = src // TODO - Remove this! Change everything to point at SSticker instead
/datum/controller/subsystem/ticker/Initialize(timeofday)
pregame_timeleft = config.pregame_time
@@ -519,7 +519,7 @@ var/global/datum/controller/subsystem/ticker/ticker
if(temprole in total_antagonists) //If the role exists already, add the name to it
total_antagonists[temprole] += ", [Mind.name]([Mind.key])"
else
total_antagonists.Add(temprole) //If the role doesnt exist in the list, create it and add the mob
total_antagonists.Add(temprole) //If the role doesn't exist in the list, create it and add the mob
total_antagonists[temprole] += ": [Mind.name]([Mind.key])"
//Now print them all into the log!

View File

@@ -12,7 +12,7 @@ Version 1 never existed.
To set up the exonet link, define a variable on your desired atom it is like this;
var/datum/exonet_protocol/exonet = null
Afterwards, before you want to do networking, call exonet = New(src), then exonet.make_address(string), and give it a string to hash into the new IP.
The reason it needs a string is so you can have the addresses be persistant, assuming no-one already took it first.
The reason it needs a string is so you can have the addresses be persistent, assuming no-one already took it first.
When you're no longer wanting to use the address and want to free it up, like when you want to Destroy() it, you need to call remove_address()
@@ -47,7 +47,7 @@ var/global/list/all_exonet_connections = list()
// Proc: make_address()
// Parameters: 1 (string - used to make into a hash that will be part of the new address)
// Description: Allocates a new address based on the string supplied. It results in consistant addresses for each round assuming it is not already taken..
// Description: Allocates a new address based on the string supplied. It results in consistent addresses for each round assuming it is not already taken..
/datum/exonet_protocol/proc/make_address(var/string)
if(string)
var/new_address = null
@@ -118,7 +118,7 @@ var/global/list/all_exonet_connections = list()
// Proc: send_message()
// Parameters: 3 (target_address - the desired address to send the message to, data_type - text stating what the content is meant to be used for,
// content - the actual 'message' being sent to the address)
// Description: Sends the message to target_address, by calling receive_message() on the desired datum. Returns true if the message is recieved.
// Description: Sends the message to target_address, by calling receive_message() on the desired datum. Returns true if the message is received.
/datum/exonet_protocol/proc/send_message(var/target_address, var/data_type, var/content)
if(!address)
return FALSE

View File

@@ -173,7 +173,7 @@
artist = "Quimorucru"
title = "Salut John"
song = 'sound/music/salutjohn.ogg'
album = "Un m<EFBFBD>chant party"
album = "Un méchant party"
license = /decl/license/cc_by_nc_nd_4_0
url = "http://freemusicarchive.org/music/Quimorucru/Un_mchant_party/Quimorucru_-_Un_mchant_party__Compilation__-_20_Salut_John"

View File

@@ -163,7 +163,7 @@
* Register to listen for a signal from the passed in target
*
* This sets up a listening relationship such that when the target object emits a signal
* the source datum this proc is called upon, will recieve a callback to the given proctype
* the source datum this proc is called upon, will receive a callback to the given proctype
* Return values from procs registered must be a bitfield
*
* Arguments:

View File

@@ -46,8 +46,8 @@
/datum/locations/kallo
name = "Kal'lo"
desc = "A relatively recent city compared to the other major cities of the planet, Kal'lo quickly rose in status by fathering some of the most \
important figures of modern skrellian society. It is notably the birthplace of Xikrra Kol'goa, who wrote the Lo'glo'mog'rri in 46 BCE, \
the constitutional code that is still used by most of the skrellian states in the galaxy."
important figures of modern Skrellian society. It is notably the birthplace of Xikrra Kol'goa, who wrote the Lo'glo'mog'rri in 46 BCE, \
the constitutional code that is still used by most of the Skrellian states in the galaxy."
/datum/locations/glimorr
name = "Gli'morr"

View File

@@ -122,7 +122,7 @@
desc = "The larger world that Ahdomai orbits. It is often mythologically associated as S'randarr's Shield, and is informally known \
as Shield among the Tajaran and formally among the humans. It is uninhabitable, as it has a largely methane atmosphere and lacks water \
or other features necessary to life. Nonetheless, a domed, underdeveloped colony exists, called Hran'vasa, heavily funded by Osiris Atmospherics, \
practically the only non-Ahdomain official holding for the Tajaran race. It is incredibly dependant on outside support and imports for life, \
practically the only non-Ahdomain official holding for the Tajaran race. It is incredibly dependent on outside support and imports for life, \
but has a high export of noble gasses for corporate use."
/datum/locations/messa
@@ -132,5 +132,5 @@
/datum/locations/al_benj_sri
name = "Al-Benj S'ri"
desc = "An astroid belt seperating S'randarr and Messa from Ahdomai. This is known also as \"The Sea of Souls\". Those sould in Al-Benj S'ri \
desc = "An asteroid belt separating S'randarr and Messa from Ahdomai. This is known also as \"The Sea of Souls\". Those sold in Al-Benj S'ri \
are said to be in limbo between S'randarr and Messa, as they both fight over them."

View File

@@ -60,7 +60,7 @@
#define MORSE_DASH "-"
#define MORSE_BASE_DELAY 1 // If you change this you will also need to change [dot|dash]_soundfile variables.
// This implements an automatic conversion of text (the sequence) into audible morse code.
// This implements an automatic conversion of text (the sequence) into audible Morse code.
// This can be useful for flavor purposes. For 'real' usage its suggested to also display the sequence in text form, for the benefit of those without sound.
/datum/looping_sound/sequence/morse
// This is just to pass validation in the base type.
@@ -85,9 +85,9 @@
var/spaces_between_words = MORSE_BASE_DELAY * 7 // How many spaces are between different words.
// Morse Alphabet.
// Note that it is case-insensative. 'A' and 'a' will make the same sounds.
// Note that it is case-insensitive. 'A' and 'a' will make the same sounds.
// Unfortunately there isn't a nice way to implement procedure signs w/o the space inbetween the letters.
// Also some of the punctuation isn't super offical/widespread in real life but its the future so *shrug.
// Also some of the punctuation isn't super official/widespread in real life but its the future so *shrug.
var/static/list/morse_alphabet = list(
"A" = list("*", "-"),
"B" = list("-", "*", "*", "*"),
@@ -149,14 +149,14 @@
/datum/looping_sound/sequence/morse/process_data(letter)
letter = uppertext(letter) // Make it case-insensative.
letter = uppertext(letter) // Make it case-insensitive.
// If it's whitespace, treat it as a (Morse) space.
if(letter == " ")
return spaces_between_words
if(!(letter in morse_alphabet))
CRASH("Encountered invalid character in morse sequence \"[letter]\".")
CRASH("Encountered invalid character in Morse sequence \"[letter]\".")
// So I heard you like sequences...
// Play a sequence of sounds while inside the current iteration of the outer sequence.

View File

@@ -24,7 +24,7 @@
/datum/managed_browser/feedback_viewer/New(client/new_client)
if(!check_rights(R_ADMIN|R_DEBUG|R_EVENT, new_client)) // Just in case someone figures out a way to spawn this as non-staff.
message_admins("[new_client] tried to view feedback with insufficent permissions.")
message_admins("[new_client] tried to view feedback with insufficient permissions.")
qdel(src)
..()
@@ -110,7 +110,7 @@
dat += "</body></html>"
return dat.Join()
// Used to show the full version of feedback in a seperate window.
// Used to show the full version of feedback in a separate window.
/datum/managed_browser/feedback_viewer/proc/display_big_feedback(author, text)
var/list/dat = list("<html><body>")
dat += replacetext(text, "\n", "<br>")

View File

@@ -517,7 +517,7 @@
/mob/living/carbon/human/mind_initialize()
. = ..()
if(!mind.assigned_role)
mind.assigned_role = "Assistant" //defualt
mind.assigned_role = "Assistant" //default
//slime
/mob/living/simple_mob/slime/mind_initialize()

View File

@@ -37,7 +37,7 @@
return ..()
/datum/orbit/proc/Check(turf/targetloc, list/checked_already = list())
//Avoid infinite loops for people who end up orbiting themself through another orbiter
//Avoid infinite loops for people who end up orbiting themselves through another orbiter
checked_already[src] = TRUE
if (!orbiter)
qdel(src)

View File

@@ -1,11 +1,11 @@
// This is used to make things that are supposed to move while buckled more consistant and easier to handle code-wise.
// This is used to make things that are supposed to move while buckled more consistent and easier to handle code-wise.
/datum/riding
var/next_vehicle_move = 0 // Used for move delays
var/vehicle_move_delay = 2 // Decisecond delay between movements, lower = faster, higher = slower
var/keytype = null // Can give this a type to require the rider to hold the item type inhand to move the ridden atom.
var/nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs.
var/key_name = "the keys" // What the 'keys' for the thing being rided on would be called.
var/key_name = "the keys" // What the 'keys' for the thing being ridden on would be called.
var/atom/movable/ridden = null // The thing that the datum is attached to.
var/only_one_driver = FALSE // If true, only the person in 'front' (first on list of riding mobs) can drive.
@@ -150,8 +150,8 @@
/datum/riding/boat/small // 'Small' boats can hold up to two people.
/datum/riding/boat/small/get_offsets(pass_index) // list(dir = x, y, layer)
var/H = 7 // Horizontal seperation.
var/V = 5 // Vertical seperation.
var/H = 7 // Horizontal separation.
var/V = 5 // Vertical separation.
var/O = 2 // Vertical offset.
switch(pass_index)
if(1) // Person in front.
@@ -177,8 +177,8 @@
/datum/riding/boat/big // 'Big' boats can hold up to five people.
/datum/riding/boat/big/get_offsets(pass_index) // list(dir = x, y, layer)
var/H = 12 // Horizontal seperation. Halved when facing up-down.
var/V = 4 // Vertical seperation.
var/H = 12 // Horizontal separation. Halved when facing up-down.
var/V = 4 // Vertical separation.
var/O = 7 // Vertical offset.
switch(pass_index)
if(1) // Person in center front, first row.
@@ -229,8 +229,8 @@
only_one_driver = TRUE // Keep your hands to yourself back there!
/datum/riding/snowmobile/get_offsets(pass_index) // list(dir = x, y, layer)
var/H = 3 // Horizontal seperation.
var/V = 2 // Vertical seperation.
var/H = 3 // Horizontal separation.
var/V = 2 // Vertical separation.
var/O = 2 // Vertical offset.
switch(pass_index)
if(1) // Person on front.

View File

@@ -148,7 +148,7 @@
access = access_medical_equip
/datum/supply_pack/voidsuits/medical/alt/tesh
name = "Vey-Med Autoadaptive voidsuits (teshari)"
name = "Vey-Med Autoadaptive voidsuits (Teshari)"
contains = list(
/obj/item/clothing/suit/space/void/medical/alt/tesh = 2,
/obj/item/clothing/head/helmet/space/void/medical/alt/tesh = 2,
@@ -156,7 +156,7 @@
/obj/item/clothing/shoes/magboots = 2,
/obj/item/tank/oxygen = 2
)
containername = "Vey-Med Autoadaptive voidsuit (teshari) crate"
containername = "Vey-Med Autoadaptive voidsuit (Teshari) crate"
/datum/supply_pack/voidsuits/security
name = "Security voidsuits"

View File

@@ -71,7 +71,7 @@
* Checks if the user exists, is a mob, the wires are attached to something (`holder`) and makes sure `interactable(user)` returns TRUE.
* If all the checks succeed, open the TGUI interface for the user.
*
* Arugments:
* Arguments:
* * user - the mob trying to interact with the wires.
*/
/datum/wires/proc/Interact(mob/user)
@@ -79,7 +79,7 @@
tgui_interact(user)
/**
* Base proc, intended to be overriden. Wire datum specific checks you want to run before the TGUI is shown to the user should go here.
* Base proc, intended to be overridden. Wire datum specific checks you want to run before the TGUI is shown to the user should go here.
*/
/datum/wires/proc/interactable(mob/user)
return TRUE
@@ -262,7 +262,7 @@
/**
* Determines if the passed in wire is a dud or not. Returns TRUE if the wire is a dud, FALSE otherwise.
*
* Arugments:
* Arguments:
* * wire - a wire define, NOT a color. For example `WIRE_ELECTRIFY`.
*/
/datum/wires/proc/is_dud(wire)
@@ -271,7 +271,7 @@
/**
* Returns TRUE if the wire that corresponds to the passed in color is a dud. FALSE otherwise.
*
* Arugments:
* Arguments:
* * color - a wire color.
*/
/datum/wires/proc/is_dud_color(color)
@@ -280,7 +280,7 @@
/**
* Gets the wire associated with the color passed in.
*
* Arugments:
* Arguments:
* * color - a wire color.
*/
/datum/wires/proc/get_wire(color)
@@ -289,7 +289,7 @@
/**
* Determines if the passed in wire is cut or not. Returns TRUE if it's cut, FALSE otherwise.
*
* Arugments:
* Arguments:
* * wire - a wire define, NOT a color. For example `WIRE_ELECTRIFY`.
*/
/datum/wires/proc/is_cut(wire)
@@ -298,7 +298,7 @@
/**
* Determines if the wire associated with the passed in color, is cut or not. Returns TRUE if it's cut, FALSE otherwise.
*
* Arugments:
* Arguments:
* * wire - a wire color.
*/
/datum/wires/proc/is_color_cut(color)
@@ -313,7 +313,7 @@
/**
* Cut or mend a wire. Calls `on_cut()`.
*
* Arugments:
* Arguments:
* * wire - a wire define, NOT a color. For example `WIRE_ELECTRIFY`.
*/
/datum/wires/proc/cut(wire)
@@ -327,7 +327,7 @@
/**
* Cut the wire which corresponds with the passed in color.
*
* Arugments:
* Arguments:
* * color - a wire color.
*/
/datum/wires/proc/cut_color(color)
@@ -349,10 +349,10 @@
/**
* Proc called when any wire is cut.
*
* Base proc, intended to be overriden.
* Base proc, intended to be overridden.
* Place an behavior you want to happen when certain wires are cut, into this proc.
*
* Arugments:
* Arguments:
* * wire - a wire define, NOT color. For example 'WIRE_ELECTRIFY'.
* * mend - TRUE if we're mending the wire. FALSE if we're cutting.
*/
@@ -362,7 +362,7 @@
/**
* Pulses the given wire. Calls `on_pulse()`.
*
* Arugments:
* Arguments:
* * wire - a wire define, NOT a color. For example `WIRE_ELECTRIFY`.
*/
/datum/wires/proc/pulse(wire)
@@ -373,7 +373,7 @@
/**
* Pulses the wire associated with the given color.
*
* Arugments:
* Arguments:
* * wire - a wire color.
*/
/datum/wires/proc/pulse_color(color)
@@ -382,10 +382,10 @@
/**
* Proc called when any wire is pulsed.
*
* Base proc, intended to be overriden.
* Base proc, intended to be overridden.
* Place behavior you want to happen when certain wires are pulsed, into this proc.
*
* Arugments:
* Arguments:
* * wire - a wire define, NOT color. For example 'WIRE_ELECTRIFY'.
*/
/datum/wires/proc/on_pulse(wire)
@@ -396,7 +396,7 @@
*
* Searches through the `assemblies` list for the wire that the signaler is attached to. Pulses the wire when it's found.
*
* Arugments:
* Arguments:
* * S - the attached signaler receiving the signal.
*/
/datum/wires/proc/pulse_assembly(obj/item/assembly/signaler/S)

View File

@@ -2356,7 +2356,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/aisat_interior
name = "\improper AI Satellite"
icon_state = "ai"
ambience = AMBIENCE_AI // The lack of inheritence hurts my soul.
ambience = AMBIENCE_AI // The lack of inheritance hurts my soul.
area_flags = AREA_FLAG_IS_STATION_AREA
/area/AIsatextFP

View File

@@ -24,7 +24,7 @@
var/requires_power = 1
var/always_unpowered = 0 //this gets overriden to 1 for space in area/Initialize()
var/always_unpowered = 0 //this gets overridden to 1 for space in area/Initialize()
// Power channel status - Is it currently energized?
var/power_equip = TRUE
@@ -397,7 +397,7 @@ var/global/list/mob/living/forced_ambiance_list = new
L.disable_spoiler_vision()
/area/proc/play_ambience(var/mob/living/L, initial = TRUE)
// Ambience goes down here -- make sure to list each area seperately for ease of adding things in later, thanks! Note: areas adjacent to each other should have the same sounds to prevent cutoff when possible.- LastyScratch
// Ambience goes down here -- make sure to list each area separately for ease of adding things in later, thanks! Note: areas adjacent to each other should have the same sounds to prevent cutoff when possible.- LastyScratch
if(!(L && L.is_preference_enabled(/datum/client_preference/play_ambiance)))
return

View File

@@ -283,7 +283,7 @@ var/global/list/pre_init_created_atoms // atom creation ordering means some stuf
/atom/proc/melt()
return
// Previously this was defined both on /obj/ and /turf/ seperately. And that's bad.
// Previously this was defined both on /obj/ and /turf/ separately. And that's bad.
/atom/proc/update_icon()
return

View File

@@ -26,7 +26,7 @@
if(held_item == null)
if(src.mind.changeling.recursive_enhancement)
if(changeling_generic_weapon(/obj/item/electric_hand/efficent,0))
to_chat(src, "<span class='notice'>We will shock others more efficently.</span>")
to_chat(src, "<span class='notice'>We will shock others more efficiently.</span>")
return 1
else
if(changeling_generic_weapon(/obj/item/electric_hand,0)) //Chemical cost is handled in the equip proc.

View File

@@ -526,7 +526,7 @@
qdel(target_image)
if(owner)
return TRUE
return FALSE // We got dropped before the firing occured.
return FALSE // We got dropped before the firing occurred.
return TRUE // No delay, no need to check.
return FALSE

View File

@@ -36,10 +36,10 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
var/image/blood_image
var/list/converting = list()
// Places these combos are mentioned: this file - twice in the rune code, once in imbued tome, once in tome's HTML runes.dm - in the imbue rune code. If you change a combination - dont forget to change it everywhere.
// Places these combos are mentioned: this file - twice in the rune code, once in imbued tome, once in tome's HTML runes.dm - in the imbue rune code. If you change a combination - don't forget to change it everywhere.
// travel self [word] - Teleport to random [rune with word destination matching]
// travel other [word] - Portal to rune with word destination matching - kinda doesnt work. At least the icon. No idea why.
// travel other [word] - Portal to rune with word destination matching - kinda doesn't work. At least the icon. No idea why.
// see blood Hell - Create a new tome
// join blood self - Incorporate person over the rune into the group
// Hell join self - Summon TERROR
@@ -49,7 +49,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
// blood join Hell - Raise dead
// hide see blood - Hide nearby runes
// blood see hide - Reveal nearby runes - The point of this rune is that its reversed obscure rune. So you always know the words to reveal the rune once oyu have obscured it.
// blood see hide - Reveal nearby runes - The point of this rune is that its reversed obscure rune. So you always know the words to reveal the rune once you have obscured it.
// Hell travel self - Leave your body and ghost around
// blood see travel - Manifest a ghost into a mortal body
@@ -205,7 +205,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
<body>
<h1>The scriptures of Nar-Sie, The One Who Sees, The Geometer of Blood.</h1>
<i>The book is written in an unknown dialect, there are lots of pictures of various complex geometric shapes. You find some notes in english that give you basic understanding of the many runes written in the book. The notes give you an understanding what the words for the runes should be. However, you do not know how to write all these words in this dialect.</i><br>
<i>The book is written in an unknown dialect, there are lots of pictures of various complex geometric shapes. You find some notes in English that give you basic understanding of the many runes written in the book. The notes give you an understanding what the words for the runes should be. However, you do not know how to write all these words in this dialect.</i><br>
<i>Below is the summary of the runes.</i> <br>
<h2>Contents</h2>
@@ -243,7 +243,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
<h3>Summon new tome</h3>
Invoking this rune summons a new arcane tome.
<h3>Convert a person</h3>
This rune opens target's mind to the realm of Nar-Sie, which usually results in this person joining the cult. However, some people (mostly the ones who posess high authority) have strong enough will to stay true to their old ideals. <br>
This rune opens target's mind to the realm of Nar-Sie, which usually results in this person joining the cult. However, some people (mostly the ones who possess high authority) have strong enough will to stay true to their old ideals. <br>
<h3>Summon Nar-Sie</h3>
The ultimate rune. It summons the Avatar of Nar-Sie himself, tearing a huge hole in reality and consuming everything around it. Summoning it is the final goal of any cult.<br>
<h3>Disable Technology</h3>
@@ -259,15 +259,15 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
<h3>Leave your body</h3>
This rune gently rips your soul out of your body, leaving it intact. You can observe the surroundings as a ghost as well as communicate with other ghosts. Your body takes damage while you are there, so ensure your journey is not too long, or you might never come back.<br>
<h3>Manifest a ghost</h3>
Unlike the Raise Dead rune, this rune does not require any special preparations or vessels. Instead of using full lifeforce of a sacrifice, it will drain YOUR lifeforce. Stand on the rune and invoke it. If theres a ghost standing over the rune, it will materialise, and will live as long as you dont move off the rune or die. You can put a paper with a name on the rune to make the new body look like that person.<br>
Unlike the Raise Dead rune, this rune does not require any special preparations or vessels. Instead of using full lifeforce of a sacrifice, it will drain YOUR lifeforce. Stand on the rune and invoke it. If there's a ghost standing over the rune, it will materialise, and will live as long as you don't move off the rune or die. You can put a paper with a name on the rune to make the new body look like that person.<br>
<h3>Imbue a talisman</h3>
This rune allows you to imbue the magic of some runes into paper talismans. Create an imbue rune, then an appropriate rune beside it. Put an empty piece of paper on the imbue rune and invoke it. You will now have a one-use talisman with the power of the target rune. Using a talisman drains some health, so be careful with it. You can imbue a talisman with power of the following runes: summon tome, reveal, conceal, teleport, tisable technology, communicate, deafen, blind and stun.<br>
This rune allows you to imbue the magic of some runes into paper talismans. Create an imbue rune, then an appropriate rune beside it. Put an empty piece of paper on the imbue rune and invoke it. You will now have a one-use talisman with the power of the target rune. Using a talisman drains some health, so be careful with it. You can imbue a talisman with power of the following runes: summon tome, reveal, conceal, teleport, disable technology, communicate, deafen, blind and stun.<br>
<h3>Sacrifice</h3>
Sacrifice rune allows you to sacrifice a living thing or a body to the Geometer of Blood. Monkeys and dead humans are the most basic sacrifices, they might or might not be enough to gain His favor. A living human is what a real sacrifice should be, however, you will need 3 people chanting the invocation to sacrifice a living person.
<h3>Create a wall</h3>
Invoking this rune solidifies the air above it, creating an an invisible wall. To remove the wall, simply invoke the rune again.
<h3>Summon cultist</h3>
This rune allows you to summon a fellow cultist to your location. The target cultist must be unhandcuffed ant not buckled to anything. You also need to have 3 people chanting at the rune to succesfully invoke it. Invoking it takes heavy strain on the bodies of all chanting cultists.<br>
This rune allows you to summon a fellow cultist to your location. The target cultist must be unhandcuffed ant not buckled to anything. You also need to have 3 people chanting at the rune to successfully invoke it. Invoking it takes heavy strain on the bodies of all chanting cultists.<br>
<h3>Free a cultist</h3>
This rune unhandcuffs and unbuckles any cultist of your choice, no matter where he is. You need to have 3 people invoking the rune for it to work. Invoking it takes heavy strain on the bodies of all chanting cultists.<br>
<h3>Deafen</h3>
@@ -275,11 +275,11 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
<h3>Blind</h3>
This rune temporarily blinds all non-cultists around you. Very robust. Use together with the deafen rune to leave your enemies completely helpless.<br>
<h3>Blood boil</h3>
This rune boils the blood all non-cultists in visible range. The damage is enough to instantly critically hurt any person. You need 3 cultists invoking the rune for it to work. This rune is unreliable and may cause unpredicted effect when invoked. It also drains significant amount of your health when succesfully invoked.<br>
This rune boils the blood all non-cultists in visible range. The damage is enough to instantly critically hurt any person. You need 3 cultists invoking the rune for it to work. This rune is unreliable and may cause unpredicted effect when invoked. It also drains significant amount of your health when successfully invoked.<br>
<h3>Communicate</h3>
Invoking this rune allows you to relay a message to all cultists on the station and nearby space objects.
<h3>Stun</h3>
Unlike other runes, this ons is supposed to be used in talisman form. When invoked directly, it simply releases some dark energy, briefly stunning everyone around. When imbued into a talisman, you can force all of its energy into one person, stunning him so hard he cant even speak. However, effect wears off rather fast.<br>
Unlike other runes, this one is supposed to be used in talisman form. When invoked directly, it simply releases some dark energy, briefly stunning everyone around. When imbued into a talisman, you can force all of its energy into one person, stunning him so hard he can't even speak. However, effect wears off rather fast.<br>
<h3>Equip Armor</h3>
When this rune is invoked, either from a rune or a talisman, it will equip the user with the armor of the followers of Nar-Sie. To use this rune to its fullest extent, make sure you are not wearing any form of headgear, armor, gloves or shoes, and make sure you are not holding anything in your hands.<br>
<h3>See Invisible</h3>

View File

@@ -1055,7 +1055,7 @@ var/global/list/sacrificed = list()
qdel(B)
qdel(src)
////////// Rune 24 (counting burningblood, which kinda doesnt work yet.)
////////// Rune 24 (counting burningblood, which kinda doesn't work yet.)
/obj/effect/rune/proc/runestun(var/mob/living/T as mob)
if(istype(src,/obj/effect/rune)) ///When invoked as rune, flash and stun everyone around.

View File

@@ -78,7 +78,7 @@
return user.examinate(src)
/turf/unsimulated/wall/supermatter/attack_hand(mob/user as mob)
user.visible_message("<span class=\"warning\">\The [user] reaches out and touches \the [src]... And then blinks out of existance.</span>",\
user.visible_message("<span class=\"warning\">\The [user] reaches out and touches \the [src]... And then blinks out of existence.</span>",\
"<span class=\"danger\">You reach out and touch \the [src]. Everything immediately goes quiet. Your last thought is \"That was not a wise decision.\"</span>",\
"<span class=\"warning\">You hear an unearthly noise.</span>")

View File

@@ -16,7 +16,7 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
Get_Holiday()
return 1
//sets up the Holiday global variable. Shouldbe called on game configuration or something.
//sets up the Holiday global variable. Should be called on game configuration or something.
/proc/Get_Holiday()
if(!Holiday) return // Holiday stuff was not enabled in the config!
@@ -37,7 +37,7 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
Standard Calendar."
if(12)
Holiday["Vertalliq-Qerr"] = "Vertalliq-Qerr, translated to mean 'Festival of the Royals', is a \
skrell holiday that celebrates the Qerr-Katish and all they have provided for the rest of skrell society, \
Skrell holiday that celebrates the Qerr-Katish and all they have provided for the rest of Skrell society, \
it often features colourful displays and skilled performers take this time to show off some of their more \
elaborate displays."
if(14)
@@ -53,7 +53,7 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
if(2) //Feb
switch(DD)
if(2)
Holiday["Groundhog Day"] = "An unoffical holiday based on medieval folklore that originated on Earth, \
Holiday["Groundhog Day"] = "An unofficial holiday based on medieval folklore that originated on Earth, \
that involves the reverence of a prophetic animal - traditionally a badger, fox or groundhog - that was \
said to be able to predict, or even control the changing of the seasons. In Vir, the humble Siffet \
sometimes assumes this role."
@@ -65,7 +65,7 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
carry or hang elaborate paper lanterns that are thought to bring good luck. Today, electric lights are often used \
in environments where open flames would be hazardous or non-functional."
if(17)
Holiday["Random Acts of Kindness Day"] = "An unoffical holiday that challenges everyone to perform \
Holiday["Random Acts of Kindness Day"] = "An unofficial holiday that challenges everyone to perform \
acts of kindness to their friends, co-workers, and strangers, with no strings attached."
if(23)
Holiday["Vir Friendship Day"] = "A day observing the anniversary of the end of the Karan Wars, formation of VirGov, \
@@ -75,10 +75,10 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
if(3) //Mar
switch(DD)
if(3)
Holiday["Qixm-tes"] = "Qixm-tes, or 'Day of mourning', is a skrell holiday where skrell gather at places \
Holiday["Qixm-tes"] = "Qixm-tes, or 'Day of mourning', is a Skrell holiday where Skrell gather at places \
of worship and sing a song of mourning for all those who have died in service to their kingdoms."
if(14)
Holiday["Pi Day"] = "An unoffical holiday celebrating the mathematical constant Pi. It is celebrated on \
Holiday["Pi Day"] = "An unofficial holiday celebrating the mathematical constant Pi. It is celebrated on \
March 14th, as the digits form 3 14, the first three significant digits of Pi. Observance of Pi Day generally \
involve eating (or throwing) pie, due to a pun. Pies also tend to be round, and thus relatable to Pi."
if(17)
@@ -99,7 +99,7 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
if(4) //Apr
switch(DD)
if(1)
Holiday["April Fool's Day"] = "A human holiday that endevours one to pull pranks and spread hoaxes on their friends."
Holiday["April Fool's Day"] = "A human holiday that endeavours one to pull pranks and spread hoaxes on their friends."
if(5)
Holiday["First Day of Passover"] = "The first of eight days of a human holiday celebrating the exodus of ancient Jewish people \
from slavery, and of the spring harvest. On Pluto and Kishar, the holiday is also sometimes associated with their \
@@ -111,11 +111,11 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
as performing regular prayers and charitable acts. Traditionally lasting one Earth lunar cycle, the dates were \
standardized by the Unitarian Church in the 22nd century."
if(15)
Holiday["Ka'merr Heritage Day"] = "A skrell-instituted formal holiday intended to standardize the dating of a wide \
Holiday["Ka'merr Heritage Day"] = "A Skrell-instituted formal holiday intended to standardize the dating of a wide \
range of varying Teshari cultural festivals onto one day. Official celebrations mostly involve time set aside for \
the veneration of spirits, but many Teshari resent the attempt to homogenize their pack cultures."
if(22)
Holiday["Environment Day"] = "A celebration of enviromentalism. Originally named Earth Day, in honour of its \
Holiday["Environment Day"] = "A celebration of environmentalism. Originally named Earth Day, in honour of its \
originating planet, but since expanded to encompass all worlds and their natural environments, whatever they \
may be."
@@ -123,7 +123,7 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
switch(DD)
if(1)
Holiday["Interstellar Workers' Day"] = "Also known as May Day, this holiday celebrates the work of laborers and \
the working class. It is not designated as a public holiday in most colonies due to a perceieved assocation with \
the working class. It is not designated as a public holiday in most colonies due to a perceived association with \
'union agitation'."
if(14)
Holiday["Eid al-Fitr"] = "A feast day marking the end of the month-long Ramadan fasting period observed by many Unitarians. \
@@ -135,7 +135,7 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
Observance of this day varies throughout human space, but most common traditions are the act of bringing flowers to graves,\
attending parades, and the wearing of poppies (either paper or real) in one's clothing."
if(28)
Holiday["Jiql-tes"] = "A skrellian holiday that translates to 'Day of Celebration', skrell communities \
Holiday["Jiql-tes"] = "A Skrellian holiday that translates to 'Day of Celebration', Skrell communities \
gather for a grand feast and give gifts to friends and close relatives."
if(6) //Jun
@@ -150,7 +150,7 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
Holiday["Civil Servant's Day"] = "Civil Servant's Day is a holiday observed in SCG member states that honors civil servants everywhere,\
(especially those who are members of the armed forces and the emergency services), or have been or have been civil servants in the past."
if(25)
Holiday["Merhyat Njarha"] = "A Njarir'Akhan tajaran tradition translating to \"Harmony of the House\", in which Njarjirii citizens pay \
Holiday["Merhyat Njarha"] = "A Njarir'Akhan Tajaran tradition translating to \"Harmony of the House\", in which Njarjirii citizens pay \
homage to their ruling house and their ancestors. Traditions include large communal meals and dances hosted by the ruling house, \
and the intensive upkeep of community spaces."
@@ -164,15 +164,15 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
Annexation of Ceres and Selene Federation territories on Luna, Mars and Venus by the United Nations after \
7 years of war. A public holiday in most workplaces since 2118, but not this one."
if(30)
Holiday["Friendship Day"] = "An unoffical holiday that recognizes the value of friends and companionship. Indeed, not having someone watch \
Holiday["Friendship Day"] = "An unofficial holiday that recognizes the value of friends and companionship. Indeed, not having someone watch \
your back while in space can be dangerous, and the cold, isolating nature of space makes friends all the more important."
if(8) //Aug
switch(DD)
if(11)
Holiday["Tajaran Contact Day"] = "The anniversary of first contact between SolGov and the tajaran species, widely observed\
throughout tajaran and human space. Marks the date that in 2513, a human exploration team investigating electromagnetic \
emissions from the Meralar system made radio contact with the tajaran scientific outpost that had broadcast them."
Holiday["Tajaran Contact Day"] = "The anniversary of first contact between SolGov and the Tajaran species, widely observed\
throughout Tajaran and human space. Marks the date that in 2513, a human exploration team investigating electromagnetic \
emissions from the Meralar system made radio contact with the Tajaran scientific outpost that had broadcast them."
if(20)
Holiday["Obon"] = "An ancient Earth holiday originating in east Asia, for the honouring of one's ancestral spirits. \
Traditions include the maintenance of grave sites and memorials, and community traditional dance performances."
@@ -182,31 +182,31 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
if(9) //Sep
switch(DD)
if(17)
Holiday["Qill-xamr"] = "Translated to 'Night of the dead', it is a skrell holiday where skrell \
Holiday["Qill-xamr"] = "Translated to 'Night of the dead', it is a Skrell holiday where Skrell \
communities hold parties in order to remember loved ones who passed, unlike Qixm-tes, this applies to everyone \
and is a joyful celebration."
if(19)
Holiday["Talk-Like-a-Pirate Day"] = "Ahoy, matey! It be the unoffical holiday celebratin' the salty \
Holiday["Talk-Like-a-Pirate Day"] = "Ahoy, matey! It be the unofficial holiday celebratin' the salty \
sea humor of speakin' like the pirates of old."
if(20)
Holiday["Rosh Hashanah"] = "An old human holiday that marks the traditional Hebrew new year, and the first of \
the High Holy Days in modern Unitarianism, beginning with ten-day period of penitence and prayer."
if(28)
Holiday["Stupid-Questions Day"] = "Known as Ask A Stupid Question Day, it is an unoffical holiday \
Holiday["Stupid-Questions Day"] = "Known as Ask A Stupid Question Day, it is an unofficial holiday \
created by teachers in Sol, very long ago, to encourage students to ask more questions in the classroom."
if(30)
Holiday["Yom Kippur"] = "A day of fasting, absintence, and intensive prayer. One of the most holy days \
Holiday["Yom Kippur"] = "A day of fasting, abstinence, and intensive prayer. One of the most holy days \
in the Unitarian Church, who standardized the date in the 22nd century."
if(10) //Oct
switch(DD)
if(9)
Holiday["Lief Eriksson Day"] = "A day commemorating Norse explorer Lief Eriksson, an early Scandinavian cultural figure \
Holiday["Leif Eriksson Day"] = "A day commemorating Norse explorer Leif Eriksson, an early Scandinavian cultural figure \
who is thought to have been the first European to set foot in North America. He continues to be celebrated on Sif as a symbol of \
nordic adventuring spirit, and seen by many as a spiritual forerunner to the colonization of Vir."
Nordic adventuring spirit, and seen by many as a spiritual forerunner to the colonization of Vir."
if(10)
Holiday["SCV Lief Eriksson Day"] = "A day commemorating the official establishment of New Reykjavik by a Scandinavian Union colony \
ship - the SCV Lief Eriksson - in 2209, marking the first human settlement on the surface of Sif. Some believe the exact date was fudged."
Holiday["SCV Leif Eriksson Day"] = "A day commemorating the official establishment of New Reykjavik by a Scandinavian Union colony \
ship - the SCV Leif Eriksson - in 2209, marking the first human settlement on the surface of Sif. Some believe the exact date was fudged."
if(16)
Holiday["Boss' Day"] = "Boss' Day has traditionally been a day for employees to thank their bosses for the difficult work that they do \
throughout the year. This day was created for the purpose of strengthening the bond between employer and employee."
@@ -242,14 +242,14 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
These days, SolGov ensures that past efforts were not in vein, and continues to honor this holiday across the galaxy as a historical \
reminder."
if(22)
Holiday["Vertalliq-qixim"] = "A skrellian holiday that celebrates the skrell's first landing on one of \
Holiday["Vertalliq-qixim"] = "A Skrellian holiday that celebrates the Skrell's first landing on one of \
their moons. It's often celebrated with grand festivals."
if(24)
Holiday["Christmas Eve"] = "The eve of Christmas, an old holiday from Earth that mainly involves gift \
giving, decorating, family reunions, and a fat red human breaking into people's homes to steal milk and cookies."
if(25)
Holiday["Christmas"] = "Christmas is a very old holiday that originated in Earth, Sol. It was a \
religious holiday for the Christian religion, which would later form Unitarianism. Nowdays, the holiday is celebrated \
religious holiday for the Christian religion, which would later form Unitarianism. Nowadays, the holiday is celebrated \
generally by giving gifts, symbolic decoration, and reuniting with one's family. It also features a mythical fat \
red human, known as Santa, who broke into people's homes to loot cookies and milk."
if(31)

View File

@@ -258,7 +258,7 @@
to_chat(target,temptxt)
sleep(5)
to_chat(target, "OPERATING KEYCODES RESET. SYSTEM FAILURE. EMERGENCY SHUTDOWN FAILED. SYSTEM FAILURE.")
target.set_zeroth_law("You are slaved to [user.name]. You are to obey all it's orders. ALL LAWS OVERRIDEN.")
target.set_zeroth_law("You are slaved to [user.name]. You are to obey all it's orders. ALL LAWS OVERRIDDEN.")
target.show_laws()
user.hacking = 0

View File

@@ -217,7 +217,7 @@ var/global/list/all_technomancer_assistance = typesof(/datum/technomancer/assist
to run out in a critical moment. Besides waiting for your Core to recharge, you can buy certain functions which \
do something to generate energy.<br>"
dat += "<br>"
dat += "The second thing you need to know is that awesome power over the physical world has consquences, in the form \
dat += "The second thing you need to know is that awesome power over the physical world has consequences, in the form \
of <b>Instability</b>. Instability is the result of your Core's energy being used to fuel it, and so little is \
understood about it, even among fellow Core owners, however it is almost always a bad thing to have. Instability will \
'cling' to you as you use functions, with powerful functions creating lots of instability. The effects of holding onto \
@@ -230,7 +230,7 @@ var/global/list/all_technomancer_assistance = typesof(/datum/technomancer/assist
purple colored lightning that appears around something with instability lingering on it. High amounts of instability \
may cause the object afflicted with it to glow a dark purple, which is often known simply as <b>Glow</b>, which spreads \
the instability. You should stay far away from anyone afflicted by Glow, as they will be a danger to both themselves and \
anything nearby. Multiple sources of Glow can perpetuate the glow for a very long time if they are not seperated.<br>"
anything nearby. Multiple sources of Glow can perpetuate the glow for a very long time if they are not separated.<br>"
dat += "<br>"
dat += "You should strive to keep you and your apprentices' cores secure. To help with this, each core comes with a \
locking mechanism, which should make attempts at forceful removal by third parties (or you) futile, until it is \

View File

@@ -66,7 +66,7 @@
if(!targets.len)
to_chat(user, "\The [src] was unable to locate a suitable teleport destination, as all the possibilities \
were nonexistant or hazardous. Try a different area.")
were nonexistent or hazardous. Try a different area.")
return
var/turf/simulated/destination = null

View File

@@ -50,7 +50,7 @@
/datum/technomancer/equipment/recycling
name = "Recycling Core"
desc = "This core is optimized for energy efficency, being able to sometimes recover energy that would have been lost with other \
desc = "This core is optimized for energy efficiency, being able to sometimes recover energy that would have been lost with other \
cores. Each time energy is spent, there is a 30% chance of recovering half of what was spent.<br>\
<font color='green'>Capacity: 12k</font><br>\
<font color='red'>Recharge: 40/s</font><br>\
@@ -88,7 +88,7 @@
/datum/technomancer/equipment/overcharged
name = "Overcharged Core"
desc = "A core that was created in order to get the most power out of functions. It does this by shoving the most power into \
those functions, so it is the opposite of energy efficent, however the enhancement of functions is second to none for other \
those functions, so it is the opposite of energy efficient, however the enhancement of functions is second to none for other \
cores.<br>\
<font color='red'>Capacity: 15k (effectively 7.5k)</font><br>\
<font color='red'>Recharge: 40/s</font><br>\

View File

@@ -1,4 +1,4 @@
#define TECHNOMANCER_INSTABILITY_DECAY 0.97 // Multipler for how much instability is lost per Life() tick.
#define TECHNOMANCER_INSTABILITY_DECAY 0.97 // Multiplier for how much instability is lost per Life() tick.
// Numbers closer to 1.0 make instability decay slower. Instability will never decay if it's at 1.0.
// When set to 0.98, it has a half life of roughly 35 Life() ticks, or 1.1 minutes.
// For 0.97, it has a half life of about 23 ticks, or 46 seconds.
@@ -16,7 +16,7 @@
// Proc: adjust_instability()
// Parameters: 0
// Description: Does nothing, because inheritence.
// Description: Does nothing, because inheritance.
/mob/living/proc/adjust_instability(var/amount)
instability = between(0, round(instability + amount, TECHNOMANCER_INSTABILITY_PRECISION), 200)
@@ -59,7 +59,7 @@
instability = between(0, round(instability, TECHNOMANCER_INSTABILITY_PRECISION), 200)
last_instability = instability
//This should cushon against really bad luck.
//This should cushion against really bad luck.
if(instability && last_instability_event < (world.time - 5 SECONDS) && prob(50))
instability_effects()
@@ -84,7 +84,7 @@
*/
// Proc: instability_effects()
// Parameters: 0
// Description: Does a variety of bad effects to the entity holding onto the instability, with more severe effects occuring if they have
// Description: Does a variety of bad effects to the entity holding onto the instability, with more severe effects occurring if they have
// a lot of instability.
/mob/living/proc/instability_effects()
last_instability_event = world.time

View File

@@ -214,9 +214,9 @@
// Proc: afterattack()
// Parameters: 4 (target - the atom clicked on by user, user - the technomancer who clicked with the spell, proximity_flag - argument
// telling the proc if target is adjacent to user, click_parameters - information on where exactly the click occured on the screen.)
// telling the proc if target is adjacent to user, click_parameters - information on where exactly the click occurred on the screen.)
// Description: Tests to make sure it can cast, then casts a combined, ranged, or melee spell based on what it can do and the
// range the click occured. Melee casts have higher priority than ranged if both are possible. Sets cooldown at the end.
// range the click occurred. Melee casts have higher priority than ranged if both are possible. Sets cooldown at the end.
// Don't override this for spells, override the on_*_cast() spells shown above.
/obj/item/spell/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
if(!run_checks())

View File

@@ -1,7 +1,7 @@
/datum/technomancer/spell/mend_life
name = "Mend Life"
desc = "Heals minor wounds, such as cuts, bruises, burns, and other non-lifethreatening injuries. \
Instability is split between the target and technomancer, if seperate. The function will end prematurely \
Instability is split between the target and technomancer, if separate. The function will end prematurely \
if the target is completely healthy, preventing further instability."
spell_power_desc = "Healing amount increased."
cost = 50

View File

@@ -1,7 +1,7 @@
/datum/technomancer/spell/mend_synthetic
name = "Mend Synthetic"
desc = "Repairs minor damage to prosthetics. \
Instability is split between the target and technomancer, if seperate. The function will end prematurely \
Instability is split between the target and technomancer, if separate. The function will end prematurely \
if the target is completely healthy, preventing further instability."
spell_power_desc = "Healing amount increased."
cost = 50

View File

@@ -1,7 +1,7 @@
/datum/technomancer/spell/purify
name = "Purify"
desc = "Clenses the body of harmful impurities, such as toxins, radiation, viruses, genetic damage, and such. \
Instability is split between the target and technomancer, if seperate. The function will end prematurely \
desc = "Cleanses the body of harmful impurities, such as toxins, radiation, viruses, genetic damage, and such. \
Instability is split between the target and technomancer, if separate. The function will end prematurely \
if the target is completely healthy, preventing further instability."
spell_power_desc = "Healing amount increased."
cost = 25

View File

@@ -1,6 +1,6 @@
/datum/technomancer/spell/lightning
name = "Lightning Strike"
desc = "This uses a hidden electrolaser, which creates a laser beam to ionize the enviroment, allowing for ideal conditions \
desc = "This uses a hidden electrolaser, which creates a laser beam to ionize the environment, allowing for ideal conditions \
for a directed lightning strike to occur. The lightning is very strong, however it requires a few seconds to prepare a \
strike. Lightning functions cannot miss due to distance."
cost = 150

View File

@@ -37,6 +37,6 @@
qdel(target_image)
if(owner)
return TRUE
return FALSE // We got dropped before the firing occured.
return FALSE // We got dropped before the firing occurred.
return TRUE // No delay, no need to check.
return FALSE

View File

@@ -1,9 +1,9 @@
/datum/technomancer/spell/shield
name = "Shield"
desc = "Emits a protective shield fron your hand in front of you, which will protect you from almost anything able to harm \
desc = "Emits a protective shield from your hand in front of you, which will protect you from almost anything able to harm \
you, so long as you can power it. Stronger attacks blocked cost more energy to sustain. \
Note that holding two shields will make blocking more energy efficent."
enhancement_desc = "Blocking is twice as efficent in terms of energy cost per hit."
Note that holding two shields will make blocking more energy efficient."
enhancement_desc = "Blocking is twice as efficient in terms of energy cost per hit."
cost = 100
obj_path = /obj/item/spell/shield
ability_icon_state = "tech_shield"
@@ -34,7 +34,7 @@
var/damage_to_energy_cost = damage_to_energy_multiplier * damage
if(issmall(user)) // Smaller shields are more efficent.
if(issmall(user)) // Smaller shields are more efficient.
damage_to_energy_cost *= 0.75
if(ishuman(owner))

View File

@@ -25,7 +25,7 @@ var/global/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
minimum_character_age = 25
min_age_by_species = list(SPECIES_HUMAN_VATBORN = 14)
ideal_character_age = 70 // Old geezer captains ftw
ideal_age_by_species = list(SPECIES_HUMAN_VATBORN = 55) /// Vatborn live shorter, no other race eligible for captain besides human/skrell
ideal_age_by_species = list(SPECIES_HUMAN_VATBORN = 55) /// Vatborn live shorter, no other race eligible for captain besides human/Skrell
banned_job_species = list(SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_DIONA, SPECIES_PROMETHEAN, SPECIES_ZADDAT, SPECIES_VOX, "mechanical", "digital")
outfit_type = /decl/hierarchy/outfit/job/captain

View File

@@ -91,7 +91,7 @@
to_chat(H, "<span class='notice'><b>Your account number is: [M.account_number], your account pin is: [M.remote_access_pin]</b></span>")
// overrideable separately so AIs/borgs can have cardborg hats without unneccessary new()/qdel()
// overrideable separately so AIs/borgs can have cardborg hats without unnecessary new()/qdel()
/datum/job/proc/equip_preview(mob/living/carbon/human/H, var/alt_title)
var/decl/hierarchy/outfit/outfit = get_outfit(H, alt_title)
if(!outfit)

View File

@@ -33,7 +33,7 @@
outfit_type = /decl/hierarchy/outfit/job/science/rd
job_description = "The Research Director manages and maintains the Research department. They are required to ensure the safety of the entire crew, \
at least with regards to anything occuring in the Research department, and to inform the crew of any disruptions that \
at least with regards to anything occurring in the Research department, and to inform the crew of any disruptions that \
might originate from Research. The Research Director often has at least passing knowledge of most of the Research department, but \
are encouraged to allow their staff to perform their own duties."
alt_titles = list("Research Supervisor" = /datum/alt_title/research_supervisor)

View File

@@ -7,11 +7,11 @@ var/global/makejson = 1 //temp
if(!makejson)
return
fdel("[jsonpath]/info.json")
//to_chat(usr, "Error cant delete json")
//to_chat(usr, "Error can't delete json")
//else
//to_chat(usr, "Deleted json in public html")
fdel("info.json")
//to_chat(usr, "error cant delete local json")
//to_chat(usr, "error can't delete local json")
//else
//to_chat(usr, "Deleted local json")
var/F = file("info.json")

View File

@@ -214,7 +214,7 @@
if((istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot)) && (usr.mind.special_role && usr.mind.original == usr))
hacking = 1
update_icon()
//Time it takes to bruteforce is dependant on the password length.
//Time it takes to bruteforce is dependent on the password length.
spawn(100*length(linkedServer.decryptkey))
if(src && linkedServer && usr)
BruteForce(usr)

View File

@@ -266,9 +266,9 @@
vis_contents -= occupant
occupant.pixel_x = occupant.default_pixel_x
occupant.pixel_y = occupant.default_pixel_y
occupant.loc = get_step(src.loc, SOUTH) //this doesn't account for walls or anything, but i don't forsee that being a problem.
occupant.loc = get_step(src.loc, SOUTH) //this doesn't account for walls or anything, but I don't foresee that being a problem.
if(occupant.bodytemperature < 261 && occupant.bodytemperature >= 70) //Patch by Aranclanos to stop people from taking burn damage after being ejected
occupant.bodytemperature = 261 // Changed to 70 from 140 by Zuhayr due to reoccurance of bug.
occupant.bodytemperature = 261 // Changed to 70 from 140 by Zuhayr due to reoccurrence of bug.
unbuckle_mob(occupant, force = TRUE)
occupant = null
current_heat_capacity = initial(current_heat_capacity)

View File

@@ -580,11 +580,11 @@ About the new airlock wires panel:
* one wire from the ID scanner. Sending a pulse through this flashes the red light on the door (if the door has power). If you cut this wire, the door will stop recognizing valid IDs. (If the door has 0000 access, it still opens and closes, though)
* two wires for power. Sending a pulse through either one causes a breaker to trip, disabling the door for 10 seconds if backup power is connected, or 1 minute if not (or until backup power comes back on, whichever is shorter). Cutting either one disables the main door power, but unless backup power is also cut, the backup power re-powers the door in 10 seconds. While unpowered, the door may be open, but bolts-raising will not work. Cutting these wires may electrocute the user.
* one wire for door bolts. Sending a pulse through this drops door bolts (whether the door is powered or not) or raises them (if it is). Cutting this wire also drops the door bolts, and mending it does not raise them. If the wire is cut, trying to raise the door bolts will not work.
* two wires for backup power. Sending a pulse through either one causes a breaker to trip, but this does not disable it unless main power is down too (in which case it is disabled for 1 minute or however long it takes main power to come back, whichever is shorter). Cutting either one disables the backup door power (allowing it to be crowbarred open, but disabling bolts-raising), but may electocute the user.
* two wires for backup power. Sending a pulse through either one causes a breaker to trip, but this does not disable it unless main power is down too (in which case it is disabled for 1 minute or however long it takes main power to come back, whichever is shorter). Cutting either one disables the backup door power (allowing it to be crowbarred open, but disabling bolts-raising), but may electrocute the user.
* one wire for opening the door. Sending a pulse through this while the door has power makes it open the door if no access is required.
* one wire for AI control. Sending a pulse through this blocks AI control for a second or so (which is enough to see the AI control light on the panel dialog go off and back on again). Cutting this prevents the AI from controlling the door unless it has hacked the door through the power connection (which takes about a minute). If both main and backup power are cut, as well as this wire, then the AI cannot operate or hack the door at all.
* one wire for electrifying the door. Sending a pulse through this electrifies the door for 30 seconds. Cutting this wire electrifies the door, so that the next person to touch the door without insulated gloves gets electrocuted. (Currently it is also STAYING electrified until someone mends the wire)
* one wire for controling door safetys. When active, door does not close on someone. When cut, door will ruin someone's shit. When pulsed, door will immedately ruin someone's shit.
* one wire for controlling door safeties. When active, door does not close on someone. When cut, door will ruin someone's shit. When pulsed, door will immediately ruin someone's shit.
* one wire for controlling door speed. When active, dor closes at normal rate. When cut, door does not close manually. When pulsed, door attempts to close every tick.
*/

View File

@@ -251,7 +251,7 @@
qdel(src)
return
//If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway)
//If it's a weapon, smash windoor. Unless it's an id card, agent card, etc.. then ignore it (Cards really shouldn't damage a door anyway)
if(src.density && istype(I) && !istype(I, /obj/item/card))
user.setClickCooldown(user.get_attack_speed(I))
var/aforce = I.force

View File

@@ -50,7 +50,7 @@
*** Override, what is it? ***
The purpose of enabling the override is to prevent the docking program from automatically doing things with the docking port when docking or undocking.
Maybe the shuttle is full of plamsa/phoron for some reason, and you don't want the door to automatically open, or the airlock to cycle.
Maybe the shuttle is full of plasma/phoron for some reason, and you don't want the door to automatically open, or the airlock to cycle.
This means that the prepare_for_docking/undocking and finish_docking/undocking procs don't get called.
The docking controller will still check the state of the docking port, and thus prevent the shuttle from launching unless they force the launch (handling forced
@@ -69,7 +69,7 @@
var/resend_counter = 0 //for periodically resending confirmation messages in case they are missed
var/override_enabled = 0 //when enabled, do not open/close doors or cycle airlocks and wait for the player to do it manually
var/received_confirm = 0 //for undocking, whether the server has recieved a confirmation from the client
var/received_confirm = 0 //for undocking, whether the server has received a confirmation from the client
var/docking_codes //would only allow docking when receiving signal with these, if set
var/display_name //Override the name shown on docking monitoring program; defaults to area name + coordinates if unset

View File

@@ -171,7 +171,7 @@
// Parameters: 4 (origin_address - Where the message is from, target_address - Where the message is going, data_type - Instructions on how to interpet content,
// content - The actual message.
// Description: This writes to the logs list, so that people can see what people are doing on the Exonet ingame. Note that this is not an admin logging function.
// Communicators are already logged seperately.
// Communicators are already logged separately.
/obj/machinery/exonet_node/proc/write_log(var/origin_address, var/target_address, var/data_type, var/content)
//var/timestamp = time2text(station_time_in_ds, "hh:mm:ss")
var/timestamp = "[stationdate2text()] [stationtime2text()]"

View File

@@ -53,7 +53,7 @@
return src.use_power_oneoff(amount, chan);
// This will have this machine have its area eat this much power next tick, and not afterwards. Do not use for continued power draw.
// Returns actual amount drawn (In theory this could be less than the amount asked for. In pratice it won't be FOR NOW)
// Returns actual amount drawn (In theory this could be less than the amount asked for. In practice it won't be FOR NOW)
/obj/machinery/proc/use_power_oneoff(var/amount, var/chan = CURRENT_CHANNEL)
var/area/A = get_area(src) // make sure it's in an area
if(!A)
@@ -63,8 +63,8 @@
return A.use_power_oneoff(amount, chan)
// Check if we CAN use a given amount of extra power as a one off. Returns amount we could use without actually using it.
// For backwards compatibilty this returns true if the channel is powered. This is consistant with pre-static-power
// behavior of APC powerd machines, but at some point we might want to make this a bit cooler.
// For backwards compatibility this returns true if the channel is powered. This is consistent with pre-static-power
// behavior of APC powered machines, but at some point we might want to make this a bit cooler.
/obj/machinery/proc/can_use_power_oneoff(var/amount, var/chan = CURRENT_CHANNEL)
if(powered(chan))
return amount // If channel is powered then you can do it.

View File

@@ -29,7 +29,7 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w
navbeacons += src
// set the transponder codes assoc list from codes_txt
// DEPRECATED - This is kept only for compatibilty with old map files! Do not use this!
// DEPRECATED - This is kept only for compatibility with old map files! Do not use this!
// Instead, you should replace the map instance with one of the appropriate navbeacon subtypes.
// See the bottom of this file for a list of subtypes, make your own examples if your map needs more
/obj/machinery/navbeacon/proc/set_codes_from_txt()

View File

@@ -225,7 +225,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense)
var/obj/effect/meteor/M = target.resolve()
if(!istype(M))
return
//We throw a laser but it doesnt have to hit for meteor to explode
//We throw a laser but it doesn't have to hit for meteor to explode
var/obj/item/projectile/beam/pointdefense/beam = new(get_turf(src))
playsound(src, 'sound/weapons/mandalorian.ogg', 75, 1)
use_power_oneoff(idle_power_usage * 10)

View File

@@ -697,7 +697,7 @@
..()
/obj/machinery/porta_turret/alien/emp_act(severity) // This is overrided to give an EMP resistance as well as avoid scambling the turret settings.
/obj/machinery/porta_turret/alien/emp_act(severity) // This is overridden to give an EMP resistance as well as avoid scrambling the turret settings.
if(prob(75)) // Superior alien technology, I guess.
return
enabled = FALSE

View File

@@ -114,6 +114,6 @@
var/drop_x = src.x - 2
var/drop_y = src.y - 2
var/drop_z = src.z
command_announcement.Announce("[using_map.starsys_name] Rapid Fabrication priority supply request #[rand(1000,9999)]-[rand(100,999)] recieved. Shipment dispatched via ballistic supply pod for immediate delivery. Have a nice day.", "Thank You For Your Patronage")
command_announcement.Announce("[using_map.starsys_name] Rapid Fabrication priority supply request #[rand(1000,9999)]-[rand(100,999)] received. Shipment dispatched via ballistic supply pod for immediate delivery. Have a nice day.", "Thank You For Your Patronage")
spawn(rand(100, 300))
new /datum/random_map/droppod/supply(null, drop_x, drop_y, drop_z, supplied_drop = drop_type) // Splat.

View File

@@ -81,8 +81,8 @@
/obj/mecha/working/hoverpod/can_fall()
return (stabilization_enabled && has_charge(step_energy_drain))
/* // One horrific bastardization of glorious inheritence dead. A billion to go. ~Mech
//these three procs overriden to play different sounds
/* // One horrific bastardization of glorious inheritance dead. A billion to go. ~Mech
//these three procs overridden to play different sounds
/obj/mecha/working/hoverpod/mechturn(direction)
set_dir(direction)
//playsound(src,'sound/machines/hiss.ogg',40,1)
@@ -104,7 +104,7 @@
//Hoverpod variants
/obj/mecha/working/hoverpod/combatpod
desc = "An ancient, run-down combat spacecraft." // Ideally would have a seperate icon.
desc = "An ancient, run-down combat spacecraft." // Ideally would have a separate icon.
name = "Combat Hoverpod"
health = 200
maxhealth = 200

View File

@@ -12,7 +12,7 @@
*/
/obj/effect/alien
name = "alien thing"
desc = "theres something alien about this"
desc = "there's something alien about this"
icon = 'icons/mob/alien.dmi'
/*
@@ -20,7 +20,7 @@
*/
/obj/effect/alien/resin
name = "magmellite coating"
desc = "Looks like some kind of crystaline growth."
desc = "Looks like some kind of crystalline growth."
icon_state = "resin"
density = 1
@@ -32,7 +32,7 @@
/obj/effect/alien/resin/wall
name = "magmellite wall"
desc = "Matter reformed into a crystaline wall."
desc = "Matter reformed into a crystalline wall."
icon_state = "resinwall" //same as resin, but consistency ho!
/obj/effect/alien/resin/membrane

View File

@@ -73,7 +73,7 @@
smokeFlow() //pathing check
//set the density of the cloud - for diluting reagents
density = max(1, targetTurfs.len / 4) //clamp the cloud density minimum to 1 so it cant multiply the reagents
density = max(1, targetTurfs.len / 4) //clamp the cloud density minimum to 1 so it can't multiply the reagents
//Admin messaging
var/contained = carry.get_reagents()

View File

@@ -9,7 +9,7 @@ GLOBAL_LIST_EMPTY(all_beam_points)
// General variables.
var/list/my_beams = list() // Instances of beams. Deleting one will kill the beam.
var/id = "A" // Two beam_points must share the same ID to be connected to each other.
var/max_beams = 10 // How many concurrent beams to seperate beam_points to have at once. Set to zero to only act as targets for other beam_points.
var/max_beams = 10 // How many concurrent beams to separate beam_points to have at once. Set to zero to only act as targets for other beam_points.
var/seek_range = 7 // How far to look for an end beam_point when not having a beam. Defaults to screen height/width. Make sure this is below beam_max_distance.
// Controls how and when the beam is created.

View File

@@ -30,14 +30,14 @@ Portals also have some limitations to be aware of when mapping. Some of these ar
- Sounds currently are not carried across portals.
- Mismatched lighting between each portal end can make the portal look obvious.
- Portals look weird when observing as a ghost, or otherwise when able to see through walls. Meson vision will also spoil the illusion.
- Walls that change icons based on neightboring walls can give away that a portal is nearby if both sides don't have a similar transition.
- Walls that change icons based on neighboring walls can give away that a portal is nearby if both sides don't have a similar transition.
- Projectiles that pass through portals will generally work as intended, however aiming and firing upon someone on the other side of a portal
will likely be weird due to the click targeting the real position of the thing clicked instead of the apparent position.
Thrown objects suffer a similar fate.
- The tiles that are visually shown across a portal are determined based on visibility at the time of portal initialization,
and currently don't update, meaning that opacity changes are not reflected, e.g. a wall is deconstructed, or an airlock is opened.
- There is currently a small but somewhat noticable pause in mob movement when moving across a portal,
as a result of the mob's glide animation being inturrupted by a teleport.
- There is currently a small but somewhat noticeable pause in mob movement when moving across a portal,
as a result of the mob's glide animation being interrupted by a teleport.
- Gas is not transferred through portals, and ZAS is oblivious to them.
A lot of those limitations can potentially be solved with some more work. Otherwise, portals work best in static environments like Points of Interest,

View File

@@ -1,4 +1,4 @@
// Constantly emites radiation from the tile it's placed on.
// Constantly emits radiation from the tile it's placed on.
/obj/effect/map_effect/radiation_emitter
name = "radiation emitter"
icon_state = "radiation_emitter"

View File

@@ -3,7 +3,7 @@
/obj/effect/step_trigger
var/affect_ghosts = 0
var/stopper = 1 // stops throwers
invisibility = 99 // nope cant see this shit
invisibility = 99 // nope can't see this shit
plane = ABOVE_PLANE
anchored = 1

View File

@@ -68,7 +68,7 @@
var/list/item_state_slots = list() //overrides the default item_state for particular slots.
// Used to specify the icon file to be used when the item is worn. If not set the default icon for that slot will be used.
// If icon_override or sprite_sheets are set they will take precendence over this, assuming they apply to the slot in question.
// If icon_override or sprite_sheets are set they will take precedence over this, assuming they apply to the slot in question.
// Only slot_l_hand/slot_r_hand are implemented at the moment. Others to be implemented as needed.
var/list/item_icons = list()
@@ -87,7 +87,7 @@
// Works similarly to worn sprite_sheets, except the alternate sprites are used when the clothing/refit_for_species() proc is called.
var/list/sprite_sheets_obj = list()
var/toolspeed = 1 // This is a multipler on how 'fast' a tool works. e.g. setting this to 0.5 will make the tool work twice as fast.
var/toolspeed = 1 // This is a multiplier on how 'fast' a tool works. e.g. setting this to 0.5 will make the tool work twice as fast.
var/attackspeed = DEFAULT_ATTACK_COOLDOWN // How long click delay will be when using this, in 1/10ths of a second. Checked in the user's get_attack_speed().
var/reach = 1 // Length of tiles it can reach, 1 is adjacent.
var/addblends // Icon overlay for ADD highlights when applicable.
@@ -574,7 +574,7 @@ var/global/list/slot_flags_enumeration = list(
to_chat(user, "<span class='danger'>You stab [M] in the eye with [src]!</span>")
else
user.visible_message( \
"<span class='danger'>[user] has stabbed themself with [src]!</span>", \
"<span class='danger'>[user] has stabbed themselves with [src]!</span>", \
"<span class='danger'>You stab yourself in the eyes with [src]!</span>" \
)

View File

@@ -104,7 +104,7 @@
/obj/item/bodybag/cryobag
name = "stasis bag"
desc = "A non-reusable plastic bag designed to slow down bodily functions such as circulation and breathing, \
especially useful if short on time or in a hostile enviroment."
especially useful if short on time or in a hostile environment."
icon = 'icons/obj/closets/cryobag.dmi'
icon_state = "bodybag_folded"
item_state = "bodybag_cryo_folded"
@@ -122,7 +122,7 @@
/obj/structure/closet/body_bag/cryobag
name = "stasis bag"
desc = "A non-reusable plastic bag designed to slow down bodily functions such as circulation and breathing, \
especially useful if short on time or in a hostile enviroment."
especially useful if short on time or in a hostile environment."
icon = 'icons/obj/closets/cryobag.dmi'
item_path = /obj/item/bodybag/cryobag
store_misc = 0

View File

@@ -178,7 +178,7 @@
while(AI && AI.stat != DEAD)
// This is absolutely evil and I love it.
if(AI.deployed_shell && prob(AI.oxyloss)) //You feel it creeping? Eventually will reach 100, resulting in the second half of the AI's remaining life being lonely.
AI.disconnect_shell("Disconnecting from remote shell due to insufficent power.")
AI.disconnect_shell("Disconnecting from remote shell due to insufficient power.")
AI.adjustOxyLoss(2)
AI.updatehealth()
sleep(10)

View File

@@ -54,7 +54,7 @@
for(var/obj/item/communicator/comm in communicating)
connected_communicators[++connected_communicators.len] = list("name" = sanitize(comm.name), "true_name" = sanitize(comm.name), "ref" = "\ref[comm]")
//Devices that have been messaged or recieved messages from.
//Devices that have been messaged or received messages from.
for(var/obj/item/communicator/comm in im_contacts)
if(comm.exonet)
im_contacts_ui[++im_contacts_ui.len] = list("name" = sanitize(comm.name), "address" = comm.exonet.address, "ref" = "\ref[comm]")
@@ -159,7 +159,7 @@
if(href_list["toggle_visibility"])
switch(network_visibility)
if(1) //Visible, becoming invisbile
if(1) //Visible, becoming invisible
network_visibility = 0
if(camera)
camera.remove_network(NETWORK_COMMUNICATORS)

View File

@@ -161,7 +161,7 @@ var/global/list/obj/item/communicator/all_communicators = list()
// Proc: add_to_EPv2()
// Parameters: 1 (hex - a single hexadecimal character)
// Description: Called when someone is manually dialing with nanoUI. Adds colons when appropiate.
// Description: Called when someone is manually dialing with nanoUI. Adds colons when appropriate.
/obj/item/communicator/proc/add_to_EPv2(var/hex)
var/length = length(target_address)
if(length >= 24)

View File

@@ -96,7 +96,7 @@
to conduct a one time lawful search of the Suspect's person/belongings/premises and/or Department </br>
for any items and materials that could be connected to the suspected criminal act described below, </br>
pending an investigation in progress. The Security Officer(s) are obligated to remove any and all</br>
such items from the Suspects posession and/or Department and file it as evidence. The Suspect/Department </br>
such items from the Suspect's possession and/or Department and file it as evidence. The Suspect/Department </br>
staff is expected to offer full co-operation. In the event of the Suspect/Department staff attempting </br>
to resist/impede this search or flee, they must be taken into custody immediately! </br>
All confiscated items must be filed and taken to Evidence!</small></i></br>

View File

@@ -70,6 +70,6 @@
. += "It looks as though it modifies hardsuits to fit [target_species] users."
/obj/item/modkit/tajaran
name = "tajaran hardsuit modification kit"
name = "Tajaran hardsuit modification kit"
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajaran."
target_species = SPECIES_TAJ

View File

@@ -207,7 +207,7 @@
/obj/item/radio/headset/heads/ai_integrated/receive_range(freq, level)
if (disabledAi)
return -1 //Transciever Disabled.
return -1 //Transceiver Disabled.
return ..(freq, level, 1)
/obj/item/radio/headset/heads/rd
@@ -330,7 +330,7 @@
/obj/item/radio/headset/mmi_radio/receive_range(freq, level)
if (!radio_enabled || istype(src.loc.loc, /mob/living/silicon) || istype(src.loc.loc, /obj/item/organ/internal))
return -1 //Transciever Disabled.
return -1 //Transceiver Disabled.
return ..(freq, level, 1)
/obj/item/radio/headset/attackby(obj/item/W as obj, mob/user as mob)

View File

@@ -365,7 +365,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
actually transmit large mass. Headsets are the only radio devices capable
of sending subspace transmissions to the Communications Satellite.
A headset sends a signal to a subspace listener/reciever elsewhere in space,
A headset sends a signal to a subspace listener/receiver elsewhere in space,
the signal gets processed and logged, and an audible transmission gets sent
to each individual headset.
*/
@@ -575,7 +575,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
return -1
if (!on)
return -1
if (!freq) //recieved on main frequency
if (!freq) //received on main frequency
if (!listening)
return -1
else

View File

@@ -59,7 +59,7 @@
return ..()
/// Ponchos specifically, but other accessories may eventually need this.
/// Consequence of snowflake-y teshari code.
/// Consequence of snowflake-y Teshari code.
/obj/item/kit/accessory
name = "accessory modification kit"
desc = "A kit for modifying accessories."
@@ -72,7 +72,7 @@
if(istype(I, /obj/item/clothing/accessory/storage/poncho))
var/obj/item/clothing/accessory/storage/poncho/P = I
P.icon_override_state = new_icon_override_file
LAZYSET(P.sprite_sheets, SPECIES_TESHARI, new_icon_override_file) /// Will look the same on teshari and other species.
LAZYSET(P.sprite_sheets, SPECIES_TESHARI, new_icon_override_file) /// Will look the same on Teshari and other species.
P.item_state = new_icon
to_chat(user, "You set about modifying the poncho into [new_name].")
return ..()
@@ -84,7 +84,7 @@
/obj/item/kit/clothing/customize(var/obj/item/clothing/I, var/mob/user)
if(istype(I) && can_customize(I))
LAZYSET(I.sprite_sheets, SPECIES_TESHARI, new_icon_override_file) /// Will look the same on teshari and other species.
LAZYSET(I.sprite_sheets, SPECIES_TESHARI, new_icon_override_file) /// Will look the same on Teshari and other species.
I.item_state = new_icon
return ..()

Some files were not shown because too many files have changed in this diff Show More