Spelling Fixes (#8973)

* SpellingFixes

* OtherTypos

* OtherTypos
This commit is contained in:
klorpa
2023-04-08 21:39:28 -08:00
committed by GitHub
parent ff4bb85a40
commit f445ffde0a
335 changed files with 943 additions and 943 deletions
+1 -1
View File
@@ -38,7 +38,7 @@
return
src << browse(F,"window=investigate[subject];size=800x300")
if("hrefs") //persistant logs and stuff
if("hrefs") //persistent logs and stuff
if(config && config.log_hrefs)
if(href_logfile)
src << browse(href_logfile,"window=investigate[subject];size=800x300")
+2 -2
View File
@@ -13,7 +13,7 @@ var/global/list/admin_ranks = list() //list of all ranks with associated
//load text from file
var/list/Lines = file2list("config/admin_ranks.txt")
//process each line seperately
//process each line separately
for(var/line in Lines)
if(!length(line)) continue
if(copytext(line,1,2) == "#") continue
@@ -75,7 +75,7 @@ var/global/list/admin_ranks = list() //list of all ranks with associated
//load text from file
var/list/Lines = file2list("config/admins.txt")
//process each line seperately
//process each line separately
for(var/line in Lines)
if(!length(line)) continue
if(copytext(line,1,2) == "#") continue
+3 -3
View File
@@ -105,7 +105,7 @@ world/New()
continue
output += "<b>Reported player:</b> [N.offender_key](CID: [N.offender_cid])<br>"
output += "<b>Offense:</b>[N.body]<br>"
output += "<small>Occured at [time2text(N.date,"MM/DD hh:mm:ss")]</small><br>"
output += "<small>Occurred at [time2text(N.date,"MM/DD hh:mm:ss")]</small><br>"
output += "<small>authored by <i>[N.author]</i></small><br>"
output += " <a href='?src=\ref[report_topic_handler];client=\ref[src];action=remove;ID=[N.ID]'>Flag as Handled</a>"
if(src.key == N.author)
@@ -150,7 +150,7 @@ world/New()
if(N.ID == ID)
found = N
if(!found)
to_chat(src, "<b>* An error occured, sorry.</b>")
to_chat(src, "<b>* An error occurred, sorry.</b>")
found.done = 1
@@ -172,7 +172,7 @@ world/New()
if(N.ID == ID)
found = N
if(!found)
to_chat(src, "<b>* An error occured, sorry.</b>")
to_chat(src, "<b>* An error occurred, sorry.</b>")
var/body = input(src.mob, "Enter a body for the news", "Body") as null|message
if(!body) return
+4 -4
View File
@@ -363,8 +363,8 @@
if(deadmin_holder)
deadmin_holder.reassociate()
log_admin("[src] re-admined themself.")
message_admins("[src] re-admined themself.", 1)
log_admin("[src] re-admined themselves.")
message_admins("[src] re-admined themselves.", 1)
to_chat(src, "<span class='filter_system interface'>You now have the keys to control the planet, or at least a small space station</span>")
verbs -= /client/proc/readmin_self
@@ -374,8 +374,8 @@
if(holder)
if(alert("Confirm self-deadmin for the round? You can't re-admin yourself without someone promoting you.",,"Yes","No") == "Yes")
log_admin("[src] deadmined themself.")
message_admins("[src] deadmined themself.", 1)
log_admin("[src] deadmined themselves.")
message_admins("[src] deadmined themselves.", 1)
deadmin()
to_chat(src, "<span class='filter_system interface'>You are now a normal player.</span>")
verbs |= /client/proc/readmin_self
+2 -2
View File
@@ -7,7 +7,7 @@
return
if(isnull(tx) || isnull(ty) || isnull(tz) || isnull(range))
to_chat(usr, "<span class='filter_notice'>Capture Map Part, captures part of a map using camara like rendering.</span>")
to_chat(usr, "<span class='filter_notice'>Capture Map Part, captures part of a map using camera like rendering.</span>")
to_chat(usr, "<span class='filter_notice'>Usage: Capture-Map-Part target_x_cord target_y_cord target_z_cord range.</span>")
to_chat(usr, "<span class='filter_notice'>Target coordinates specify bottom left corner of the capture, range defines render distance to opposite corner.</span>")
return
@@ -26,7 +26,7 @@
turfstocapture.Add(T)
else
if(!hasasked)
var/answer = alert("Capture includes non existant turf, Continue capture?","Continue capture?", "No", "Yes")
var/answer = alert("Capture includes non existent turf, Continue capture?","Continue capture?", "No", "Yes")
hasasked = 1
if(answer == "No")
return
+1 -1
View File
@@ -686,7 +686,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null
text_list += " <font color='gray'>at</font> [final] [ADMIN_COORDJMP(final)]"
a = final.loc
else
text_list += " <font color='gray'>at</font> nonexistant location"
text_list += " <font color='gray'>at</font> nonexistent location"
if(a)
text_list += " <font color='gray'>in</font> area [a]"
if(T.loc != a)
@@ -383,7 +383,7 @@
var/path = text2path(token(i))
if (path == null)
return parse_error("Nonexistant type path: [token(i)]")
return parse_error("Nonexistent type path: [token(i)]")
node += path
@@ -397,7 +397,7 @@
node += token(i)
else
parse_error("Unknown comparitor [token(i)]")
parse_error("Unknown comparator [token(i)]")
return i + 1
@@ -409,7 +409,7 @@
node += token(i)
else
parse_error("Unknown comparitor [token(i)]")
parse_error("Unknown comparator [token(i)]")
return i + 1
+1 -1
View File
@@ -164,7 +164,7 @@
to_chat(recipient, replymsg)
to_chat(src, "<span class='pm notice'>PM to-<b>Admins</b>: [msg]</span>")
//play the recieving admin the adminhelp sound (if they have them enabled)
//play the receiving admin the adminhelp sound (if they have them enabled)
if(recipient.is_preference_enabled(/datum/client_preference/holder/play_adminhelp_ping))
recipient << 'sound/effects/adminhelp.ogg'
+2 -2
View File
@@ -165,7 +165,7 @@
Right Mouse Button + shift on any mob = Command selected mobs to follow mob regardless of faction<br>\
Note: The following also reset the mob's home position:<br>\
Right Mouse Button on tile = Command selected mobs to move to tile (will cancel if enemies are seen)<br>\
Right Mouse Button + shift on tile = Command selected mobs to reposition to tile (will not be inturrupted by enemies)<br>\
Right Mouse Button + shift on tile = Command selected mobs to reposition to tile (will not be interrupted by enemies)<br>\
Right Mouse Button + alt on obj/turfs = Command selected mobs to attack obj/turf<br>\
***********************************************************</span>")
return 1
@@ -386,7 +386,7 @@
to_chat(usr, "[object.type]")
if(BUILDMODE_EDIT)
if(pa.Find("left")) //I cant believe this shit actually compiles.
if(pa.Find("left")) //I can't believe this shit actually compiles.
if(object.vars.Find(holder.buildmode.varholder))
log_admin("[key_name(usr)] modified [object.name]'s [holder.buildmode.varholder] to [holder.buildmode.valueholder]")
object.vars[holder.buildmode.varholder] = holder.buildmode.valueholder
+8 -8
View File
@@ -11,7 +11,7 @@ When designing a new mob, all that is needed to give a mob an AI is to set
its 'ai_holder_type' variable to the path of the AI that is desired.
## Seperation
## Separation
In previous iterations of AI systems, the AI is generally written into the mob's code directly,
which has some advantages, but often makes the code rigid, and also tied the speed of the AI
@@ -24,10 +24,10 @@ which is carried by the mob it controls. This gives some advantages;
Interfaces allow the base AI code to not need to know what particular mode it's controlling.
The processing of the AI is independant of the mob's Life() cycle, which allows for a
The processing of the AI is independent of the mob's Life() cycle, which allows for a
different clock rate.
Seperating the AI from the mob simplies the mob's code greatly.
Separating the AI from the mob simplifies the mob's code greatly.
It is more logical to think that a mob is the 'body', where as its ai_holder is
the 'mind'.
@@ -84,10 +84,10 @@ be too demanding on the CPU to do every half a second, such as
re/calculating an A* path (if the mob uses A*), or running a complicated
tension assessment to determine how brave the mob is feeling. This is the
same delay used for certain tasks in the old implementation, but it is less
noticable due to the mob appearing to do things inbetween those two seconds.
noticeable due to the mob appearing to do things inbetween those two seconds.
The purpose of having two tracks is to allow for 'fast' and 'slow' actions
to be more easily encapsulated, and ensures that all ai_holders are syncronized
to be more easily encapsulated, and ensures that all ai_holders are synchronized
with each other, as opposed to having individual tick counters inside all of
the ai_holder instances. It should be noted that handle_tactics() is always
called first, before handle_strategicals() every two seconds.
@@ -100,7 +100,7 @@ in order to avoid processing.
When busy, the AI subsystem will skip over the ai_holder until it is no
longer busy. The busy state is intended to be short-term, and is usually
toggled by the mob when doing something with a delay, so that the ai_holder
does not accidentally do something to inturrupt something important, like
does not accidentally do something to interrupt something important, like
a special attack.
The longer term alternative to the busy state is the sleep state. Unlike
@@ -175,8 +175,8 @@ AI to have their mob say based on certain conditions, such as when threatening
to kill another mob. Despite the name, a say_list also can contain emotes
and some sounds.
The reason that it is in a seperate datum is to allow for multiple mob types
to have the same text, even when inheritence cannot do that, such as
The reason that it is in a separate datum is to allow for multiple mob types
to have the same text, even when inheritance cannot do that, such as
mercenaries and fake piloted mecha mobs.
The say_list datum is applied to the mob itself and not held inside the AI datum.
+4 -4
View File
@@ -1,5 +1,5 @@
// This is a datum-based artificial intelligence for simple mobs (and possibly others) to use.
// The neat thing with having this here instead of on the mob is that it is independant of Life(), and that different mobs
// The neat thing with having this here instead of on the mob is that it is independent of Life(), and that different mobs
// can use a more or less complex AI by giving it a different datum.
/mob/living
@@ -167,7 +167,7 @@
var/list/choices = list()
for(var/typechoice in types)
var/list/found = list()
for(var/mob in searching) // Isnt't there a helper for this, maybe? I forget.
for(var/mob in searching) // Isn't there a helper for this, maybe? I forget.
var/atom/M = mob
if(!(M.z in levels_working))
continue
@@ -453,10 +453,10 @@
walk_to_target()
if(STANCE_MOVE)
if(hostile && find_target()) // This will switch its stance.
ai_log("handle_stance_strategical() : STANCE_MOVE, found target and was inturrupted.", AI_LOG_TRACE)
ai_log("handle_stance_strategical() : STANCE_MOVE, found target and was interrupted.", AI_LOG_TRACE)
if(STANCE_FOLLOW)
if(hostile && find_target()) // This will switch its stance.
ai_log("handle_stance_strategical() : STANCE_FOLLOW, found target and was inturrupted.", AI_LOG_TRACE)
ai_log("handle_stance_strategical() : STANCE_FOLLOW, found target and was interrupted.", AI_LOG_TRACE)
else if(leader)
ai_log("handle_stance_strategical() : STANCE_FOLLOW, going to calculate_path([leader]).", AI_LOG_TRACE)
calculate_path(leader)
+2 -2
View File
@@ -1,7 +1,7 @@
// This file is for actual fighting. Targeting is in a seperate file.
// This file is for actual fighting. Targeting is in a separate file.
/datum/ai_holder
var/firing_lanes = TRUE // If ture, tries to refrain from shooting allies or the wall.
var/firing_lanes = TRUE // If true, tries to refrain from shooting allies or the wall.
var/conserve_ammo = FALSE // If true, the mob will avoid shooting anything that does not have a chance to hit a mob. Requires firing_lanes to be true.
var/pointblank = FALSE // If ranged is true, and this is true, people adjacent to the mob will suffer the ranged instead of using a melee attack.
+5 -5
View File
@@ -5,7 +5,7 @@
var/threatening = FALSE // If the mob actually gave the warning, checked so it doesn't constantly yell every tick.
var/threaten_delay = 3 SECONDS // How long a 'threat' lasts, until actual fighting starts. If null, the mob never starts the fight but still does the threat.
var/threaten_timeout = 1 MINUTE // If the mob threatens someone, they leave, and then come back before this timeout period, the mob escalates to fighting immediately.
var/last_conflict_time = null // Last occurance of fighting being used, in world.time.
var/last_conflict_time = null // Last occurrence of fighting being used, in world.time.
var/last_threaten_time = null // Ditto but only for threats.
var/last_target_time = null // Ditto for when we last switched targets, used to stop retaliate from gimping mobs
@@ -34,8 +34,8 @@
if(holder.say_list)
holder.ISay(safepick(holder.say_list.say_threaten))
playsound(holder, holder.say_list.threaten_sound, 50, 1) // We do this twice to make the sound -very- noticable to the target.
playsound(target, holder.say_list.threaten_sound, 50, 1) // Actual aim-mode also does that so at least it's consistant.
playsound(holder, holder.say_list.threaten_sound, 50, 1) // We do this twice to make the sound -very- noticeable to the target.
playsound(target, holder.say_list.threaten_sound, 50, 1) // Actual aim-mode also does that so at least it's consistent.
else // Otherwise we are waiting for them to go away or to wait long enough for escalate.
if(target in list_targets()) // Are they still visible?
var/should_escalate = FALSE
@@ -57,8 +57,8 @@
set_stance(STANCE_IDLE)
if(holder.say_list)
holder.ISay(safepick(holder.say_list.say_stand_down))
playsound(holder, holder.say_list.stand_down_sound, 50, 1) // We do this twice to make the sound -very- noticable to the target.
playsound(target, holder.say_list.stand_down_sound, 50, 1) // Actual aim-mode also does that so at least it's consistant.
playsound(holder, holder.say_list.stand_down_sound, 50, 1) // We do this twice to make the sound -very- noticeable to the target.
playsound(target, holder.say_list.stand_down_sound, 50, 1) // Actual aim-mode also does that so at least it's consistent.
// Determines what is deserving of a warning when STANCE_ALERT is active.
/datum/ai_holder/proc/will_threaten(mob/living/the_target)
+3 -3
View File
@@ -56,7 +56,7 @@
for(var/mob/living/L in faction_friends)
if(L == holder) // Lets not call ourselves.
continue
if(holder.z != L.z) // On seperate z-level.
if(holder.z != L.z) // On separate z-level.
continue
if(get_dist(L, holder) > call_distance) // Too far to 'hear' the call for help.
continue
@@ -103,12 +103,12 @@
if(get_dist(holder, friend) <= vision_range) // Within our sight.
ai_log("help_requested() : Help requested by [friend], and within target sharing range.", AI_LOG_INFO)
last_conflict_time = world.time // So we attack immediately and not threaten.
give_target(their_target, urgent = TRUE) // This will set us to the appropiate stance.
give_target(their_target, urgent = TRUE) // This will set us to the appropriate stance.
ai_log("help_requested() : Given target [target] by [friend]. Exiting", AI_LOG_DEBUG)
return
// Otherwise they're outside our sight, lack a target, or aren't AI controlled, but within call range.
// So assuming we're AI controlled, we'll go to them and see whats wrong.
// So assuming we're AI controlled, we'll go to them and see what's wrong.
ai_log("help_requested() : Help requested by [friend], going to go to friend.", AI_LOG_INFO)
if(their_target)
add_attacker(their_target) // We won't wait and 'warn' them while they're stabbing our ally
+1 -1
View File
@@ -7,7 +7,7 @@
var/image/path_overlay // A reference to the overlay
var/last_turf_display = FALSE // Similar to above, but shows the target's last known turf visually.
var/last_turf_icon_state = "green" // A seperate icon_state from the previous.
var/last_turf_icon_state = "green" // A separate icon_state from the previous.
var/image/last_turf_overlay // Another reference for an overlay.
var/stance_coloring = FALSE // Colors the mob depending on its stance.
+1 -1
View File
@@ -41,7 +41,7 @@
/datum/ai_holder/proc/set_follow(mob/living/L, follow_for = 0)
ai_log("set_follow() : Entered.", AI_LOG_DEBUG)
if(!L)
ai_log("set_follow() : Was told to follow a nonexistant mob.", AI_LOG_ERROR)
ai_log("set_follow() : Was told to follow a nonexistent mob.", AI_LOG_ERROR)
return FALSE
leader = L
@@ -135,7 +135,7 @@
my_slime.update_mood()
my_slime.visible_message(span("danger", "\The [my_slime] enrages!"))
// Called when using a pacification agent (or it's Kendrick being initalized).
// Called when using a pacification agent (or it's Kendrick being initialized).
/datum/ai_holder/simple_mob/xenobio_slime/proc/pacify()
remove_target() // So it stops trying to kill them.
rabid = FALSE
+4 -4
View File
@@ -12,7 +12,7 @@
var/turf/target_last_seen_turf = null // Where the mob last observed the target being, used if the target disappears but the mob wants to keep fighting.
var/vision_range = 7 // How far the targeting system will look for things to kill. Note that values higher than 7 are 'offscreen' and might be unsporting.
var/respect_alpha = TRUE // If true, mobs with a sufficently low alpha will be treated as invisible.
var/respect_alpha = TRUE // If true, mobs with a sufficiently low alpha will be treated as invisible.
var/alpha_vision_threshold = FAKE_INVIS_ALPHA_THRESHOLD // Targets with an alpha less or equal to this will be considered invisible. Requires above var to be true.
var/lose_target_time = 0 // world.time when a target was lost.
@@ -206,7 +206,7 @@
return FALSE
if(respect_alpha && the_target.alpha <= alpha_vision_threshold) // Fake invis.
ai_log("can_see_target() : Target ([the_target]) was sufficently transparent to holder and is hidden. Exiting.", AI_LOG_TRACE)
ai_log("can_see_target() : Target ([the_target]) was sufficiently transparent to holder and is hidden. Exiting.", AI_LOG_TRACE)
return FALSE
if(get_dist(holder, the_target) > view_range) // Too far away.
@@ -260,7 +260,7 @@
else if(check_attacker(attacker) && world.time > last_target_time + 3 SECONDS) // Otherwise, let 'er rip
ai_log("react_to_attack() : Was attacked by [attacker]. Can retaliate, waited 3 seconds.", AI_LOG_INFO)
on_attacked(attacker) // So we attack immediately and not threaten.
return give_target(attacker) // Also handles setting the appropiate stance.
return give_target(attacker) // Also handles setting the appropriate stance.
if(stance == STANCE_SLEEP) // If we're asleep, try waking up if someone's wailing on us.
ai_log("react_to_attack() : AI is asleep. Waking up.", AI_LOG_TRACE)
@@ -268,7 +268,7 @@
ai_log("react_to_attack() : Was attacked by [attacker].", AI_LOG_INFO)
on_attacked(attacker) // So we attack immediately and not threaten.
return give_target(attacker, urgent = TRUE) // Also handles setting the appropiate stance.
return give_target(attacker, urgent = TRUE) // Also handles setting the appropriate stance.
// Sets a few vars so mobs that threaten will react faster to an attacker or someone who attacked them before.
/datum/ai_holder/proc/on_attacked(atom/movable/AM)
+1 -1
View File
@@ -1,6 +1,6 @@
// A simple datum that just holds many lists of lines for mobs to pick from.
// This is its own datum in order to be able to have different types of mobs be able to use the same lines if desired,
// even when inheritence wouldn't be able to do so.
// even when inheritance wouldn't be able to do so.
// Also note this also contains emotes, despite its name.
// and now sounds because its probably better that way.
+1 -1
View File
@@ -26,7 +26,7 @@
var/species = SPECIES_HUMAN //defaults to generic-ass humans
var/random_species = FALSE //flip to TRUE to randomize species from the list below
var/corpse_outfit /// Set to an outfit to equip on spawn.
var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJ,SPECIES_UNATHI,SPECIES_SKRELL) //preset list that can be overriden downstream. only includes common humanoids for voidsuit compatibility's sake.
var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJ,SPECIES_UNATHI,SPECIES_SKRELL) //preset list that can be overridden downstream. only includes common humanoids for voidsuit compatibility's sake.
// var/random_appearance = FALSE //TODO: make this work
// var/cause_of_death = null //TODO: set up a cause-of-death system. needs to support both damage types and actual wound types, so a body can have been bitten/stabbed/clawed/shot/burned/lasered/etc. to death
delete_me = TRUE
+3 -3
View File
@@ -63,7 +63,7 @@
/mob/observer/blob/verb/auto_resource()
set category = "Blob"
set name = "Auto Resource Blob (40)"
set desc = "Automatically places a resource tower near a node or your core, at a sufficent distance."
set desc = "Automatically places a resource tower near a node or your core, at a sufficient distance."
if(!blob_type.can_build_resources)
return FALSE
@@ -107,7 +107,7 @@
/mob/observer/blob/verb/auto_factory()
set category = "Blob"
set name = "Auto Factory Blob (60)"
set desc = "Automatically places a resource tower near a node or your core, at a sufficent distance."
set desc = "Automatically places a resource tower near a node or your core, at a sufficient distance."
if(!blob_type.can_build_factories)
return FALSE
@@ -152,7 +152,7 @@
/mob/observer/blob/verb/auto_node()
set category = "Blob"
set name = "Auto Node Blob (100)"
set desc = "Automatically places a node blob at a sufficent distance."
set desc = "Automatically places a node blob at a sufficient distance."
if(!blob_type.can_build_nodes)
return FALSE
+4 -4
View File
@@ -11,7 +11,7 @@
var/faction = "blob" // The blob's faction.
var/attack_message = "The blob attacks you" // Base message the mob gets when blob_act() gets called on them by the blob. An exclaimation point is added to the end.
var/attack_message = "The blob attacks you" // Base message the mob gets when blob_act() gets called on them by the blob. An exclamation point is added to the end.
var/attack_message_living = null // Appended to attack_message, if the target fails isSynthetic() check.
var/attack_message_synth = null // Ditto, but if they pass isSynthetic().
var/attack_verb = "attacks" // Used for the visible_message(), as the above is shown to the mob getting hit directly.
@@ -23,12 +23,12 @@
var/damage_lower = 30 // Lower bound for amount of damage to do for attacks.
var/damage_upper = 40 // Upper bound.
var/brute_multiplier = 0.5 // Adjust to make blobs stonger or weaker against brute damage.
var/brute_multiplier = 0.5 // Adjust to make blobs stronger or weaker against brute damage.
var/burn_multiplier = 1.0 // Ditto, for burns.
var/spread_modifier = 0.5 // A multipler on how fast the blob should naturally spread from the core and nodes.
var/spread_modifier = 0.5 // A multiplier on how fast the blob should naturally spread from the core and nodes.
var/slow_spread_with_size = TRUE // Blobs that get really huge will slow down in expansion.
var/ai_aggressiveness = 10 // Probability of the blob AI attempting to attack someone next to the blob, independant of the attacks from node/core pulsing.
var/ai_aggressiveness = 10 // Probability of the blob AI attempting to attack someone next to the blob, independent of the attacks from node/core pulsing.
var/can_build_factories = FALSE // Forbids this blob type from building factories. Set to true to enable.
var/can_build_resources = FALSE // Ditto, for resource blobs.
+2 -2
View File
@@ -427,9 +427,9 @@
name = "Vey-Medical"
short_name = "Vey-Med"
acronym = "VM"
desc = "Vey-Med is one of the newer TSCs on the block and is notable for being largely owned and opperated by Skrell. \
desc = "Vey-Med is one of the newer TSCs on the block and is notable for being largely owned and operated by Skrell. \
Despite the suspicion and prejudice leveled at them for their alien origin, Vey-Med has obtained market dominance in \
the sale of medical equipment-- from surgical tools to large medical devices to the Oddyseus trauma response mecha \
the sale of medical equipment-- from surgical tools to large medical devices to the Odysseus trauma response mecha \
and everything in between. Their equipment tends to be top-of-the-line, most obviously shown by their incredibly \
human-like FBP designs. Vey's rise to stardom came from their introduction of ressurective cloning, although in \
recent years they've been forced to diversify as their patents expired and NanoTrasen-made medications became \
+1 -1
View File
@@ -48,7 +48,7 @@
// Override for special behaviour.
// Should return a list with one or more "/datum/category_item/catalogue" types, or null.
// If overriding, it may be wise to call the super and get the results in order to merge the base result and the special result, if appropiate.
// If overriding, it may be wise to call the super and get the results in order to merge the base result and the special result, if appropriate.
/atom/proc/get_catalogue_data()
return catalogue_data
+1 -1
View File
@@ -425,7 +425,7 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new)
<br><br>\
It should be noted that the findings in this group appear to conflict heavily with what is \
known about the Singularitarians, giving some credence towards these objects belonging to a \
seperate precursor. As such, the findings have been partitioned inside this scanner to this \
separate precursor. As such, the findings have been partitioned inside this scanner to this \
group, labeled Precursor Group Alpha."
value = CATALOGUER_REWARD_TRIVIAL
unlocked_by_any = list(/datum/category_item/catalogue/anomalous/precursor_a)
+3 -3
View File
@@ -10,7 +10,7 @@ GLOBAL_LIST_EMPTY(all_cataloguers)
Scanning hostile mobs and objects is tricky since only mobs that are alive are scannable, so scanning
them requires careful position to stay out of harms way until the scan finishes. That is why
the person with the scanner gets a visual box that shows where they are allowed to move to
without inturrupting the scan.
without interrupting the scan.
*/
/obj/item/cataloguer
name = "cataloguer"
@@ -18,7 +18,7 @@ GLOBAL_LIST_EMPTY(all_cataloguers)
description_info = "This is a special device used to obtain information about objects and entities in the environment. \
To scan something, click on it with the scanner at a distance. \
Scanning something requires remaining within a certain radius of the object for a specific period of time, until the \
scan is finished. If the scan is inturrupted, it can be resumed from where it was left off, if the same thing is \
scan is finished. If the scan is interrupted, it can be resumed from where it was left off, if the same thing is \
scanned again."
icon = 'icons/obj/device.dmi'
pickup_sound = 'sound/items/pickup/device.ogg'
@@ -34,7 +34,7 @@ GLOBAL_LIST_EMPTY(all_cataloguers)
var/datum/category_item/catalogue/displayed_data = null // Used for viewing a piece of data in the UI.
var/busy = FALSE // Set to true when scanning, to stop multiple scans.
var/debug = FALSE // If true, can view all catalogue data defined, regardless of unlock status.
var/weakref/partial_scanned = null // Weakref of the thing that was last scanned if inturrupted. Used to allow for partial scans to be resumed.
var/weakref/partial_scanned = null // Weakref of the thing that was last scanned if interrupted. Used to allow for partial scans to be resumed.
var/partial_scan_time = 0 // How much to make the next scan shorter.
/obj/item/cataloguer/advanced
+1 -1
View File
@@ -147,7 +147,7 @@
admins += src
holder.owner = src
//preferences datum - also holds some persistant data for the client (because we may as well keep these datums to a minimum)
//preferences datum - also holds some persistent data for the client (because we may as well keep these datums to a minimum)
prefs = preferences_datums[ckey]
if(!prefs)
prefs = new /datum/preferences(src)
@@ -529,10 +529,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
. += "\tPacemaker-assisted [organ_name]"
if("lungs")
. += "\tAssisted [organ_name]"
if("voicebox") //on adding voiceboxes for speaking skrell/similar replacements
if("voicebox") //on adding voiceboxes for speaking Skrell/similar replacements
. += "\tSurgically altered [organ_name]"
if("eyes")
. += "\tRetinal overlayed [organ_name]"
. += "\tRetinal overlaid [organ_name]"
if("brain")
. += "\tAssisted-interface [organ_name]"
else
@@ -201,7 +201,7 @@
/datum/trait/modifier/physical/no_clone
name = "Cloning Incompatability"
name = "Cloning Incompatibility"
modifier_type = /datum/modifier/no_clone
/datum/trait/modifier/physical/no_clone/test_for_invalidity(var/datum/category_item/player_setup_item/traits/setup)
@@ -211,7 +211,7 @@
/datum/trait/modifier/physical/no_borg
name = "Cybernetic Incompatability"
name = "Cybernetic Incompatibility"
modifier_type = /datum/modifier/no_borg
/datum/trait/modifier/physical/no_borg/test_for_invalidity(var/datum/category_item/player_setup_item/traits/setup)
@@ -192,7 +192,7 @@ var/global/list/trait_categories = list() // The categories available for the tr
return TRUE
// Creates a description, if one doesn't exist.
// This one is for inheritence, and so doesn't do anything.
// This one is for inheritance, and so doesn't do anything.
/datum/trait/proc/generate_desc()
return desc
+2 -2
View File
@@ -149,7 +149,7 @@ var/global/list/light_overlay_cache = list() //see get_worn_overlay() on helmets
//Set species_restricted list
switch(target_species)
if(SPECIES_HUMAN, SPECIES_SKRELL) //humanoid bodytypes
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_PROMETHEAN) //skrell/humans can wear each other's suits
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_PROMETHEAN) //Skrell/humans can wear each other's suits
else
species_restricted = list(target_species)
@@ -169,7 +169,7 @@ var/global/list/light_overlay_cache = list() //see get_worn_overlay() on helmets
//Set species_restricted list
switch(target_species)
if(SPECIES_SKRELL)
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_PROMETHEAN) //skrell helmets fit humans too
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_PROMETHEAN) //Srell helmets fit humans too
else
species_restricted = list(target_species)
+12 -12
View File
@@ -13,7 +13,7 @@
Skrell tentacle wear
*/
/obj/item/clothing/ears/skrell
name = "skrell tentacle wear"
name = "Skrell tentacle wear"
desc = "Some stuff worn by skrell to adorn their head tentacles."
icon = 'icons/obj/clothing/ears.dmi'
w_class = ITEMSIZE_TINY
@@ -36,25 +36,25 @@
/obj/item/clothing/ears/skrell/chain/bluejewels
name = "Blue jeweled golden headtail chains"
desc = "A delicate golden chain adorned with blue jewels worn by female skrell to decorate their head tails."
desc = "A delicate golden chain adorned with blue jewels worn by female Skrell to decorate their head tails."
icon_state = "skrell_chain_bjewel"
item_state_slots = list(slot_r_hand_str = "egg2", slot_l_hand_str = "egg2")
/obj/item/clothing/ears/skrell/chain/redjewels
name = "Red jeweled golden headtail chains"
desc = "A delicate golden chain adorned with red jewels worn by female skrell to decorate their head tails."
desc = "A delicate golden chain adorned with red jewels worn by female Skrell to decorate their head tails."
icon_state = "skrell_chain_rjewel"
item_state_slots = list(slot_r_hand_str = "egg4", slot_l_hand_str = "egg4")
/obj/item/clothing/ears/skrell/chain/ebony
name = "Ebony headtail chains"
desc = "A delicate ebony chain worn by female skrell to decorate their head tails."
desc = "A delicate ebony chain worn by female Skrell to decorate their head tails."
icon_state = "skrell_chain_ebony"
item_state_slots = list(slot_r_hand_str = "egg6", slot_l_hand_str = "egg6")
/obj/item/clothing/ears/skrell/band
name = "Gold headtail bands"
desc = "Golden metallic bands worn by male skrell to adorn their head tails."
desc = "Golden metallic bands worn by male Skrell to adorn their head tails."
icon_state = "skrell_band"
item_state_slots = list(slot_r_hand_str = "egg5", slot_l_hand_str = "egg5")
drop_sound = 'sound/items/drop/ring.ogg'
@@ -62,43 +62,43 @@
/obj/item/clothing/ears/skrell/band/silver
name = "Silver headtail bands"
desc = "Silver metallic bands worn by male skrell to adorn their head tails."
desc = "Silver metallic bands worn by male Skrell to adorn their head tails."
icon_state = "skrell_band_sil"
item_state_slots = list(slot_r_hand_str = "egg", slot_l_hand_str = "egg")
/obj/item/clothing/ears/skrell/band/bluejewels
name = "Blue jeweled golden headtail bands"
desc = "Golden metallic bands adorned with blue jewels worn by male skrell to adorn their head tails."
desc = "Golden metallic bands adorned with blue jewels worn by male Skrell to adorn their head tails."
icon_state = "skrell_band_bjewel"
item_state_slots = list(slot_r_hand_str = "egg2", slot_l_hand_str = "egg2")
/obj/item/clothing/ears/skrell/band/redjewels
name = "Red jeweled golden headtail bands"
desc = "Golden metallic bands adorned with red jewels worn by male skrell to adorn their head tails."
desc = "Golden metallic bands adorned with red jewels worn by male Skrell to adorn their head tails."
icon_state = "skrell_band_rjewel"
item_state_slots = list(slot_r_hand_str = "egg4", slot_l_hand_str = "egg4")
/obj/item/clothing/ears/skrell/band/ebony
name = "Ebony headtail bands"
desc = "Ebony bands worn by male skrell to adorn their head tails."
desc = "Ebony bands worn by male Skrell to adorn their head tails."
icon_state = "skrell_band_ebony"
item_state_slots = list(slot_r_hand_str = "egg6", slot_l_hand_str = "egg6")
/obj/item/clothing/ears/skrell/colored/band
name = "Colored headtail bands"
desc = "Metallic bands worn by male skrell to adorn their head tails."
desc = "Metallic bands worn by male Skrell to adorn their head tails."
icon_state = "skrell_band_sil"
item_state_slots = list(slot_r_hand_str = "egg", slot_l_hand_str = "egg")
/obj/item/clothing/ears/skrell/colored/chain
name = "Colored headtail chains"
desc = "A delicate chain worn by female skrell to decorate their head tails."
desc = "A delicate chain worn by female Skrell to decorate their head tails."
icon_state = "skrell_chain_sil"
item_state_slots = list(slot_r_hand_str = "egg", slot_l_hand_str = "egg")
/obj/item/clothing/ears/skrell/cloth_female
name = "red headtail cloth"
desc = "A cloth shawl worn by female skrell draped around their head tails."
desc = "A cloth shawl worn by female Skrell draped around their head tails."
icon_state = "skrell_cloth_female"
item_state_slots = list(slot_r_hand_str = "egg4", slot_l_hand_str = "egg4")
+1 -1
View File
@@ -9,7 +9,7 @@
pickup_sound = 'sound/items/pickup/axe.ogg'
/obj/item/clothing/gloves/arm_guard/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = FALSE)
if(..()) //This will only run if no other problems occured when equiping.
if(..()) //This will only run if no other problems occurred when equipping.
if(H.wear_suit)
if(H.wear_suit.body_parts_covered & ARMS)
to_chat(H, "<span class='warning'>You can't wear \the [src] with \the [H.wear_suit], it's in the way.</span>")
+1 -1
View File
@@ -11,7 +11,7 @@
pickup_sound = 'sound/items/pickup/boots.ogg'
/obj/item/clothing/shoes/leg_guard/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = FALSE)
if(..()) //This will only run if no other problems occured when equiping.
if(..()) //This will only run if no other problems occurred when equipping.
if(H.wear_suit)
if(H.wear_suit.body_parts_covered & LEGS)
to_chat(H, "<span class='warning'>You can't wear \the [src] with \the [H.wear_suit], it's in the way.</span>")
+3 -3
View File
@@ -79,7 +79,7 @@
var/locked_down = 0
var/seal_delay = SEAL_DELAY
var/sealing // Keeps track of seal status independantly of canremove.
var/sealing // Keeps track of seal status independently of canremove.
var/offline = 1 // Should we be applying suit maluses?
var/offline_slowdown = 1.5 // If the suit is deployed and unpowered, it sets slowdown to this.
var/vision_restriction
@@ -809,8 +809,8 @@
if(!is_emp)
chance = 2*max(0, damage - (chest? chest.breach_threshold : 0))
else
//Want this to be roughly independant of the number of modules, meaning that X emp hits will disable Y% of the suit's modules on average.
//that way people designing hardsuits don't have to worry (as much) about how adding that extra module will affect emp resiliance by 'soaking' hits for other modules
//Want this to be roughly independent of the number of modules, meaning that X emp hits will disable Y% of the suit's modules on average.
//that way people designing hardsuits don't have to worry (as much) about how adding that extra module will affect emp resilience by 'soaking' hits for other modules
chance = 2*max(0, damage - emp_protection)*min(installed_modules.len/15, 1)
if(!prob(chance))
@@ -17,7 +17,7 @@
SPECIES_VOX = 'icons/mob/species/vox/head.dmi',
SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi'
)
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, Diona, and zaddat can't use hardsuits not designed for them
max_pressure_protection = null
min_pressure_protection = null
@@ -59,7 +59,7 @@
SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi'
)
supporting_limbs = list()
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, Diona, and zaddat can't use hardsuits not designed for them
var/obj/item/material/knife/tacknife
max_pressure_protection = null
min_pressure_protection = null
@@ -172,7 +172,7 @@
/obj/item/clothing/head/helmet/space/void/medical/bio
name = "biohazard voidsuit helmet"
desc = "A special suit designed to protect the user in hazardous enviornments on the field. It feels heavier than the standard suit with extra protection around the joints."
desc = "A special suit designed to protect the user in hazardous environments on the field. It feels heavier than the standard suit with extra protection around the joints."
icon_state = "rig0-medical_bio"
item_state_slots = list(slot_r_hand_str = "medical_helm_bio", slot_l_hand_str = "medical_helm_bio")
armor = list(melee = 55, bullet = 15, laser = 20, energy = 15, bomb = 15, bio = 100, rad = 75)
@@ -182,7 +182,7 @@
/obj/item/clothing/suit/space/void/medical/bio
name = "biohazard voidsuit"
desc = "A special suit designed to protect the user in hazardous enviornments on the field. It feels heavier than the standard suit with extra protection around the joints."
desc = "A special suit designed to protect the user in hazardous environments on the field. It feels heavier than the standard suit with extra protection around the joints."
icon_state = "rig-medical_bio"
item_state_slots = list(slot_r_hand_str = "medical_voidsuit_bio", slot_l_hand_str = "medical_voidsuit_bio")
armor = list(melee = 55, bullet = 15, laser = 20, energy = 15, bomb = 15, bio = 100, rad = 75)
@@ -199,7 +199,7 @@
icon_state = "rig0-medicalalt"
armor = list(melee = 20, bullet = 5, laser = 20,energy = 5, bomb = 15, bio = 100, rad = 30)
light_overlay = "helmet_light_dual_blue"
species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX,SPECIES_TESHARI) //this thing can autoadapt to most species, but diona/vox are too weird, and tesh are too small
species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX,SPECIES_TESHARI) //this thing can autoadapt to most species, but Diona/vox are too weird, and tesh are too small
no_cycle = TRUE
/obj/item/clothing/head/helmet/space/void/medical/alt
@@ -216,8 +216,8 @@
)
/obj/item/clothing/head/helmet/space/void/medical/alt/tesh
name = "streamlined teshari medical voidsuit helmet"
desc = "A trendy, lightly radiation-shielded voidsuit helmet trimmed in a sleek blue. This teshari-specific model lacks the autoadaption feature due to the reduced amount of materials."
name = "streamlined Teshari medical voidsuit helmet"
desc = "A trendy, lightly radiation-shielded voidsuit helmet trimmed in a sleek blue. This Teshari-specific model lacks the autoadaption feature due to the reduced amount of materials."
species_restricted = list(SPECIES_TESHARI)
no_cycle = FALSE //no autoadaption means it can be refitted
@@ -235,7 +235,7 @@
icon_state = "rig-medicalalt"
slowdown = 0
armor = list(melee = 20, bullet = 5, laser = 20,energy = 5, bomb = 15, bio = 100, rad = 30)
species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX,SPECIES_TESHARI) //this thing can autoadapt, but diona/vox are too weird, and tesh are too small
species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX,SPECIES_TESHARI) //this thing can autoadapt, but Diona/vox are too weird, and tesh are too small
no_cycle = TRUE
/obj/item/clothing/suit/space/void/medical/alt
@@ -252,8 +252,8 @@
)
/obj/item/clothing/suit/space/void/medical/alt/tesh
name = "streamlined teshari medical voidsuit"
desc = "A more recent model of Vey-Med voidsuit, exchanging physical protection for fully unencumbered movement and a complete range of motion. This teshari-specific model lacks the autoadaption feature due to the reduced amount of materials."
name = "streamlined Teshari medical voidsuit"
desc = "A more recent model of Vey-Med voidsuit, exchanging physical protection for fully unencumbered movement and a complete range of motion. This Teshari-specific model lacks the autoadaption feature due to the reduced amount of materials."
species_restricted = list(SPECIES_TESHARI)
no_cycle = FALSE //no autoadaption means it can be refitted
+2 -2
View File
@@ -10,7 +10,7 @@
siemens_coefficient = 0.6
/obj/item/clothing/suit/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = FALSE)
if(..()) //This will only run if no other problems occured when equiping.
if(..()) //This will only run if no other problems occurred when equipping.
for(var/obj/item/clothing/I in list(H.gloves, H.shoes))
if(I && (src.body_parts_covered & ARMS && I.body_parts_covered & ARMS) )
to_chat(H, "<span class='warning'>You can't wear \the [src] with \the [I], it's in the way.</span>")
@@ -524,7 +524,7 @@
blood_overlay_type = "armor"
/obj/item/clothing/suit/armor/pcarrier/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = FALSE)
if(..()) //This will only run if no other problems occured when equiping.
if(..()) //This will only run if no other problems occurred when equipping.
if(H.gloves)
if(H.gloves.body_parts_covered & ARMS)
for(var/obj/item/clothing/accessory/A in src)
+1 -1
View File
@@ -286,7 +286,7 @@
item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat")
flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/straight_jacket //A mispelling from time immemorial...
/obj/item/clothing/suit/straight_jacket //A misspelling from time immemorial...
name = "straitjacket"
desc = "A suit that completely restrains the wearer."
icon_state = "straight_jacket"
@@ -248,7 +248,7 @@
icon_state = "bronze_heart"
/obj/item/clothing/accessory/medal/nobel_science
name = "nobel sciences award"
name = "Nobel sciences award"
desc = "A bronze medal which represents significant contributions to the field of science or engineering."
/obj/item/clothing/accessory/medal/silver
@@ -275,7 +275,7 @@
/obj/item/clothing/accessory/medal/gold/heroism
name = "medal of exceptional heroism"
desc = "An extremely rare golden medal awarded only by high ranking officials. To recieve such a medal is the highest honor and as such, very few exist. This medal is almost never awarded to anybody but distinguished veteran staff."
desc = "An extremely rare golden medal awarded only by high ranking officials. To receive such a medal is the highest honor and as such, very few exist. This medal is almost never awarded to anybody but distinguished veteran staff."
// Base type for 'medals' found in a "dungeon" submap, as a sort of trophy to celebrate the player's conquest.
/obj/item/clothing/accessory/medal/dungeon
@@ -413,7 +413,7 @@
/obj/item/clothing/accessory/asymmetric
name = "blue asymmetrical jacket"
desc = "Insultingly avant-garde in prussian blue."
desc = "Insultingly avant-garde in Prussian blue."
icon_state = "asym_blue"
/obj/item/clothing/accessory/asymmetric/purple
+2 -2
View File
@@ -72,7 +72,7 @@
item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black")
/obj/item/clothing/under/gov
desc = "A neat proper uniform of someone on offical business. The collar is <i>immaculately</i> starched."
desc = "A neat proper uniform of someone on official business. The collar is <i>immaculately</i> starched."
name = "Green formal uniform"
icon_state = "greensuit"
item_state_slots = list(slot_r_hand_str = "centcom", slot_l_hand_str = "centcom")
@@ -81,7 +81,7 @@
/obj/item/clothing/under/gov/skirt
name = "Green formal skirt uniform"
desc = "A neat proper uniform of someone on offical business. The top button is sewn shut."
desc = "A neat proper uniform of someone on official business. The top button is sewn shut."
icon_state = "greensuit_skirt"
/obj/item/clothing/under/space
+5 -5
View File
@@ -8,14 +8,14 @@
var/datum/trade_destination/affected_dest = pick(weighted_mundaneevent_locations)
var/body = pick(
"Tree stuck in tajaran; firefighters baffled.",\
"Tree stuck in Tajaran; firefighters baffled.",\
"Armadillos want aardvarks removed from dictionary claims 'here first'.",\
"Angel found dancing on pinhead ordered to stop; cited for public nuisance.",\
"Letters claim they are better than number; 'Always have been'.",\
"Pens proclaim pencils obsolete, 'lead is dead'.",\
"Rock and paper sues scissors for discrimination.",\
"Steak tell-all book reveals he never liked sitting by potato.",\
"Woodchuck stops counting how many times hes chucked 'Never again'.",\
"Woodchuck stops counting how many times he's chucked 'Never again'.",\
"[affected_dest.name] clerk first person able to pronounce '@*$%!'.",\
"[affected_dest.name] delis serving boiled paperback dictionaries, 'Adjectives chewy' customers declare.",\
"[affected_dest.name] weather deemed 'boring'; meteors and rad storms to be imported.",\
@@ -24,15 +24,15 @@
"Question mark worshipped as deity by ancient [affected_dest.name] dwellers.",\
"Spilled milk causes whole [affected_dest.name] populace to cry.",\
"World largest carp patty at display on [affected_dest.name].",\
"'Here kitty kitty' no longer preferred tajaran retrieval technique.",\
"'Here kitty kitty' no longer preferred Tajaran retrieval technique.",\
"Man travels 7000 light years to retrieve lost hankie, 'It was my favourite'.",\
"New bowling lane that shoots mini-meteors at bowlers very popular.",\
"[pick("Unathi","Spacer")] gets tattoo of "+using_map.starsys_name+" on chest '[pick("[using_map.boss_short]","star","starship","asteroid")] tickles most'.",\
"Skrell marries computer; wedding attended by 100 modems.",\
"Chef reports successfully using harmonica as cheese grater.",\
"[using_map.company_name] invents handkerchief that says 'Bless you' after sneeze.",\
"Clone accused of posing for other cloness school photo.",\
"Clone accused of stealing other cloness employee of the month award.",\
"Clone accused of posing for other clone's school photo.",\
"Clone accused of stealing other clone's employee of the month award.",\
"Woman robs station with hair dryer; crewmen love new style.",\
"This space for rent.",\
"[affected_dest.name] Baker Wins Pickled Crumpet Toss Three Years Running",\
+1 -1
View File
@@ -136,7 +136,7 @@
price_tag = 5
/datum/reagent/ethanol/coffee/brave_bull // Not an original liquor in its own. But since it's a mix of purely Tequila
price_tag = 5 // and Kahlua, it's basically just another one and gets the same price.
price_tag = 5 // and Kahlúa, it's basically just another one and gets the same price.
// Wines //
+1 -1
View File
@@ -9,7 +9,7 @@
var/area/target_area // Chosen target area
var/area/target_turf // Chosen target turf in target_area
var/gas_type // Chosen gas to release
// Exclude these types and sub-types from targeting eligibilty
// Exclude these types and sub-types from targeting eligibility
var/list/area/excluded = list(
/area/shuttle,
/area/crew_quarters,
+2 -2
View File
@@ -105,8 +105,8 @@
/datum/event/proc/lastProcessAt()
return max(startWhen, max(announceWhen, endWhen))
//Do not override this proc, instead use the appropiate procs.
//This proc will handle the calls to the appropiate procs.
//Do not override this proc, instead use the appropriate procs.
//This proc will handle the calls to the appropriate procs.
/datum/event/process()
if(activeFor > startWhen && activeFor < endWhen)
processing_active = FALSE
+1 -1
View File
@@ -26,7 +26,7 @@
var/author = "[using_map.company_name] Editor"
var/channel = "The [using_map.starsys_name] Times"
var/body = "The [using_map.starsys_name] Times wishes to congratulate <b>[winner_name]</b> for recieving the [using_map.starsys_name] Stellar Slam Lottery, and receiving the out of this world sum of [winner_sum] credits!"
var/body = "The [using_map.starsys_name] Times wishes to congratulate <b>[winner_name]</b> for receiving the [using_map.starsys_name] Stellar Slam Lottery, and receiving the out of this world sum of [winner_sum] credits!"
if(!deposit_success)
body += "<br>Unfortunately, we were unable to verify the account details provided, so we were unable to transfer the money. Send a cheque containing the sum of 5000 Thalers to ND 'Stellar Slam' office on the The [using_map.starsys_name] Times gateway containing updated details, and your winnings'll be re-sent within the month."
+8 -8
View File
@@ -58,22 +58,22 @@
"Once you are a player with MaxBet, you will also receive lucrative weekly and monthly promotions.",\
"You will be able to enjoy over 450 top-flight casino games at MaxBet.")
if(2)
sender = pick(300;"QuickDatingSystem",200;"Find your russian bride",50;"Tajaran beauties are waiting",50;"Find your secret skrell crush",50;"Beautiful unathi brides")
sender = pick(300;"QuickDatingSystem",200;"Find your Russian bride",50;"Tajaran beauties are waiting",50;"Find your secret Skrell crush",50;"Beautiful Unathi brides")
message = pick("Your profile caught my attention and I wanted to write and say hello (QuickDating).",\
"If you will write to me on my email [pick(first_names_female)]@[pick(last_names)].[pick("ru","ck","tj","ur","nt")] I shall necessarily send you a photo (QuickDating).",\
"I want that we write each other and I hope, that you will like my profile and you will answer me (QuickDating).",\
"You have (1) new message!",\
"You have (2) new profile views!")
if(3)
sender = pick("Galactic Payments Association","Better Business Bureau","[using_map.starsys_name] E-Payments","NAnoTransen Finance Deparmtent","Luxury Replicas")
sender = pick("Galactic Payments Association","Better Business Bureau","[using_map.starsys_name] E-Payments","NAnoTransen Finance Department","Luxury Replicas")
message = pick("Luxury watches for Blowout sale prices!",\
"Watches, Jewelry & Accessories, Bags & Wallets !",\
"Deposit 100$ and get 300$ totally free!",\
" 100K NT.|WOWGOLD nly $89 <HOT>",\
" 100K NT.|WOWGOLD Only $89 <HOT>",\
"We have been filed with a complaint from one of your customers in respect of their business relations with you.",\
"We kindly ask you to open the COMPLAINT REPORT (attached) to reply on this complaint..")
if(4)
sender = pick("Buy Dr. Maxman","Having dysfuctional troubles?")
sender = pick("Buy Dr. Maxman","Having dysfunctional troubles?")
message = pick("DR MAXMAN: REAL Doctors, REAL Science, REAL Results!",\
"Dr. Maxman was created by George Acuilar, M.D, a [using_map.boss_short] Certified Urologist who has treated over 70,000 patients sector wide with 'male problems'.",\
"After seven years of research, Dr Acuilar and his team came up with this simple breakthrough male enhancement formula.",\
@@ -86,15 +86,15 @@
"We are happy to inform you that due to the delay, we have been instructed to IMMEDIATELY deposit all funds into your account",\
"Dear fund beneficiary, We have please to inform you that overdue funds payment has finally been approved and released for payment",\
"Due to my lack of agents I require an off-world financial account to immediately deposit the sum of 1 POINT FIVE MILLION credits.",\
"Greetings sir, I regretfully to inform you that as I lay dying here due to my lack ofheirs I have chosen you to recieve the full sum of my lifetime savings of 1.5 billion credits")
"Greetings sir, I regretfully to inform you that as I lay dying here due to my lack of heirs I have chosen you to receive the full sum of my lifetime savings of 1.5 billion credits")
if(6)
sender = pick("[using_map.company_name] Morale Divison","Feeling Lonely?","Bored?","www.wetskrell.nt")
sender = pick("[using_map.company_name] Morale Division","Feeling Lonely?","Bored?","www.wetskrell.nt")
message = pick("The [using_map.company_name] Morale Division wishes to provide you with quality entertainment sites.",\
"WetSkrell.nt is a xenophillic website endorsed by NT for the use of male crewmembers among it's many stations and outposts.",\
"Wetskrell.nt only provides the higest quality of male entertaiment to [using_map.company_name] Employees.",\
"Wetskrell.nt only provides the highest quality of male entertainment to [using_map.company_name] Employees.",\
"Simply enter your [using_map.company_name] Bank account system number and pin. With three easy steps this service could be yours!")
if(7)
sender = pick("You have won free tickets!","Click here to claim your prize!","You are the 1000th vistor!","You are our lucky grand prize winner!")
sender = pick("You have won free tickets!","Click here to claim your prize!","You are the 1000th visitor!","You are our lucky grand prize winner!")
message = pick("You have won tickets to the newest ACTION JAXSON MOVIE!",\
"You have won tickets to the newest crime drama DETECTIVE MYSTERY IN THE CLAMITY CAPER!",\
"You have won tickets to the newest romantic comedy 16 RULES OF LOVE!",\
@@ -2,7 +2,7 @@
description_info = "This pipe, and all other pipes, can be connected or disconnected by a wrench. The internal pressure of the pipe must \
be less than 200 kPa above the ambient pressure to do this. More pipes can be obtained from the pipe dispenser."
/obj/machinery/atmospherics/pipe/Initialize() //This is needed or else 20+ lines of copypasta to dance around inheritence.
/obj/machinery/atmospherics/pipe/Initialize() //This is needed or else 20+ lines of copypasta to dance around inheritance.
. = ..()
description_info += "<br>Most pipes and atmospheric devices can be connected or disconnected with a wrench. The pipe's pressure must not be too high, \
or if it is a device, it must be turned off first."
+2 -2
View File
@@ -9,12 +9,12 @@
that is the Exonet.<br>\
<br>\
The Exonet is the predominant interstellar telecomm system, servicing trillions of devices across a large portion of human-controlled space. \
It is distributed by a massive network of telecommunication satellites, some privately owned and others owned by the systems local governments, \
It is distributed by a massive network of telecommunication satellites, some privately owned and others owned by the systems' local governments, \
that utilize FTL technologies to bounce data between satellites at speeds that would not be possible at sub-light technology. This communicator \
uses a protocol called Exonet Protocol Version 2, generally shortened to EPv2.<br>\
<br>\
EPv2 is the most common communications protocol in the Exonet, and was specifically designed for it. It was designed to facilitate communication \
between any device in a star system, and have the ability to forward interstellar requests at the root node of that systems Exonet. \
between any device in a star system, and have the ability to forward interstellar requests at the root node of that system's Exonet. \
It is also built to cope with the reality that the numerous nodes in a system will likely have frequent outages. The protocol allows for \
up to 18,446,744,073,709,551,616 unique addresses, one of which is assigned to this device."
+6 -6
View File
@@ -42,23 +42,23 @@
Note that you cannot control the sleeper while inside of it."
/obj/item/bodybag/cryobag
description_info = "This stasis bag will preserve the occupant, stopping most forms of harm from occuring, such as from oxygen \
description_info = "This stasis bag will preserve the occupant, stopping most forms of harm from occurring, such as from oxygen \
deprivation, irradiation, shock, and chemicals inside the occupant, at least until the bag is opened again.<br>\
<br>\
Stasis bags can only be used once, and are rather costly, so use them well. They are ideal for situations where someone may die \
before being able to bring them back to safety, or if they are in a hostile enviroment, such as in vacuum or in a phoron leak, as \
the bag will protect the occupant from most outside enviromental hazards. If you open a bag by mistake, closing the bag with no \
before being able to bring them back to safety, or if they are in a hostile environment, such as in vacuum or in a phoron leak, as \
the bag will protect the occupant from most outside environmental hazards. If you open a bag by mistake, closing the bag with no \
occupant will not use up the bag, and you can pick it back up.<br>\
<br>\
You can use a health analyzer to scan the occupant's vitals without opening the bag by clicking the occupied bag with the analyzer."
/obj/structure/closet/body_bag/cryobag
description_info = "This stasis bag will preserve the occupant, stopping most forms of harm from occuring, such as from oxygen \
description_info = "This stasis bag will preserve the occupant, stopping most forms of harm from occurring, such as from oxygen \
deprivation, irradiation, shock, and chemicals inside the occupant, at least until the bag is opened again.<br>\
<br>\
Stasis bags can only be used once, and are rather costly, so use them well. They are ideal for situations where someone may die \
before being able to bring them back to safety, or if they are in a hostile enviroment, such as in vacuum or in a phoron leak, as \
the bag will protect the occupant from most outside enviromental hazards. If you open a bag by mistake, closing the bag with no \
before being able to bring them back to safety, or if they are in a hostile environment, such as in vacuum or in a phoron leak, as \
the bag will protect the occupant from most outside environmental hazards. If you open a bag by mistake, closing the bag with no \
occupant will not use up the bag, and you can pick it back up.<br>\
<br>\
You can use a health analyzer to scan the occupant's vitals without opening the bag by clicking the occupied bag with the analyzer."
+1 -1
View File
@@ -32,7 +32,7 @@
/obj/item/reagent_containers/food/Initialize()
. = ..()
if (center_of_mass.len && !pixel_x && !pixel_y)
src.pixel_x = rand(-6.0, 6) //Randomizes postion
src.pixel_x = rand(-6.0, 6) //Randomizes position
src.pixel_y = rand(-6.0, 6)
/obj/item/reagent_containers/food/afterattack(atom/A, mob/user, proximity, params)
+3 -3
View File
@@ -198,7 +198,7 @@
/obj/item/reagent_containers/food/drinks/cans/kvass
name = "\improper Kvass"
desc = "A true Slavic soda."
description_fluff = "A classic slavic beverage which many space-faring slavs still enjoy to this day. Fun fact, it is actually considered a weak beer by non-russians."
description_fluff = "A classic Slavic beverage which many space-faring Slavs still enjoy to this day. Fun fact, it is actually considered a weak beer by non-Russians."
icon_state = "kvass"
center_of_mass = list("x"=16, "y"=10)
@@ -208,8 +208,8 @@
/obj/item/reagent_containers/food/drinks/cans/kompot
name = "\improper Kompot"
desc = "A taste of russia in the summertime - canned for you consumption."
description_fluff = "A sweet and fruity beverage that was traditionally used to preserve frutis in harsh Russian winters that is now available for widespread comsumption."
desc = "A taste of Russia in the summertime - canned for you consumption."
description_fluff = "A sweet and fruity beverage that was traditionally used to preserve fruits in harsh Russian winters that is now available for widespread consumption."
icon_state = "kompot"
center_of_mass = list("x"=16, "y"=10)
+1 -1
View File
@@ -222,7 +222,7 @@
/obj/item/reagent_containers/food/condiment/small/on_reagent_change()
return
/obj/item/reagent_containers/food/condiment/small/saltshaker //Seperate from above since it's a small shaker rather than a large one
/obj/item/reagent_containers/food/condiment/small/saltshaker //Separate from above since it's a small shaker rather than a large one
name = "salt shaker"
desc = "Salt. From space oceans, presumably."
icon_state = "saltshakersmall"
+3 -3
View File
@@ -1,4 +1,4 @@
///////////////////////////////////////////////Alchohol bottles! -Agouri //////////////////////////
///////////////////////////////////////////////Alcohol bottles! -Agouri //////////////////////////
//Functionally identical to regular drinks. The only difference is that the default bottle size is 100. - Darem
//Bottles now weaken and break when smashed on people's heads. - Giacom
@@ -8,7 +8,7 @@
item_state = "broken_beer" //Generic held-item sprite until unique ones are made.
force = 6
var/smash_duration = 5 //Directly relates to the 'weaken' duration. Lowered by armor (i.e. helmets)
var/isGlass = 1 //Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it
var/isGlass = 1 //Whether the 'bottle' is made of glass or not so that milk cartons don't shatter when someone gets hit by it
var/obj/item/reagent_containers/glass/rag/rag = null
var/rag_underlay = "rag"
@@ -314,7 +314,7 @@
/obj/item/reagent_containers/food/drinks/bottle/cognac
name = "Chateau De Baton Premium Cognac"
desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing."
desc = "A sweet and strongly alcoholic drink, made after numerous distillations and years of maturing."
icon_state = "cognacbottle"
center_of_mass = list("x"=16, "y"=6)
+21 -21
View File
@@ -1645,7 +1645,7 @@
/obj/item/reagent_containers/food/snacks/slimesoup
name = "slime soup"
desc = "If no water is available, you may substitute tears."
icon_state = "slimesoup" //nonexistant? - 3/1/2020 FIXED. roro's live on. - 7/14/2020 - The fuck are you smoking, roro's is stupid, name it slimesoup so it's clear wtf it is.
icon_state = "slimesoup" //nonexistent? - 3/1/2020 FIXED. roro's live on. - 7/14/2020 - The fuck are you smoking, roro's is stupid, name it slimesoup so it's clear wtf it is.
filling_color = "#C4DBA0"
bitesize = 5
@@ -1896,11 +1896,11 @@
wrapped = 1
/obj/item/reagent_containers/food/snacks/cube/monkeycube/farwacube
name = "farwa cube"
name = "Farwa cube"
monkey_type = "Farwa"
/obj/item/reagent_containers/food/snacks/cube/monkeycube/wrapped/farwacube
name = "farwa cube"
name = "Farwa cube"
monkey_type = "Farwa"
/obj/item/reagent_containers/food/snacks/cube/monkeycube/stokcube
@@ -1912,11 +1912,11 @@
monkey_type = "Stok"
/obj/item/reagent_containers/food/snacks/cube/monkeycube/neaeracube
name = "neaera cube"
name = "Neaera cube"
monkey_type = "Neaera"
/obj/item/reagent_containers/food/snacks/cube/monkeycube/wrapped/neaeracube
name = "neaera cube"
name = "Neaera cube"
monkey_type = "Neaera"
//Food cubes
@@ -2326,7 +2326,7 @@
/obj/item/reagent_containers/food/snacks/meatballspagetti
name = "Spaghetti & Meatballs"
desc = "Now thats a nic'e meatball!"
desc = "Now that's a nic'e meatball!"
icon_state = "meatballspagetti"
trash = /obj/item/trash/plate
filling_color = "#DE4545"
@@ -2341,7 +2341,7 @@
/obj/item/reagent_containers/food/snacks/spesslaw
name = "Spesslaw"
desc = "A lawyers favourite"
desc = "A lawyer's favourite"
icon_state = "spesslaw"
filling_color = "#DE4545"
center_of_mass = list("x"=16, "y"=10)
@@ -4329,7 +4329,7 @@
if (!flat_icon)
flat_icon = getFlatIcon(src)
var/icon/I = flat_icon
color = "#FFFFFF" //Some fruits use the color var. Reset this so it doesnt tint the batter
color = "#FFFFFF" //Some fruits use the color var. Reset this so it doesn't tint the batter
I.Blend(new /icon('icons/obj/food_custom.dmi', rgb(255,255,255)),ICON_ADD)
I.Blend(new /icon('icons/obj/food_custom.dmi', coating.icon_raw),ICON_MULTIPLY)
var/image/J = image(I)
@@ -4756,7 +4756,7 @@
/obj/item/reagent_containers/food/snacks/nt_muffin
name = "breakfast muffin"
desc = "An english muffin with egg, cheese, and sausage, as sold in fast food joints galaxy-wide."
desc = "An English muffin with egg, cheese, and sausage, as sold in fast food joints galaxy-wide."
icon = 'icons/obj/food_syn.dmi'
icon_state = "nt_muffin"
nutriment_desc = list("biscuit" = 3)
@@ -4861,7 +4861,7 @@
/obj/item/reagent_containers/food/snacks/croissant
name = "croissant"
desc = "True french cuisine."
desc = "True French cuisine."
icon = 'icons/obj/food_syn.dmi'
filling_color = "#E3D796"
icon_state = "croissant"
@@ -7323,7 +7323,7 @@
/obj/item/reagent_containers/food/snacks/kitsuneudon
name = "kitsune udon"
desc = "A purported favorite of kitsunes in ancient japanese myth: udon noodles, fried egg, and tofu."
desc = "A purported favorite of kitsunes in ancient Japanese myth: udon noodles, fried egg, and tofu."
icon = 'icons/obj/food_syn.dmi'
icon_state = "kitsuneudon"
trash = /obj/item/trash/asian_bowl
@@ -7350,7 +7350,7 @@
/obj/item/reagent_containers/food/snacks/mammi
name = "mämmi"
desc = "Traditional finnish desert, some like it, others don't. It's drifting in some milk, add sugar!"
desc = "Traditional Finnish desert, some like it, others don't. It's drifting in some milk, add sugar!"
icon = 'icons/obj/food_syn.dmi'
icon_state = "mammi"
trash = /obj/item/trash/plate
@@ -7535,7 +7535,7 @@
/obj/item/reagent_containers/food/snacks/dynsoup
name = "dyn soup"
desc = "An imported skrellian recipe, with certain substitions for ingredients not commonly available outside of Skrellian space."
desc = "An imported Skrellian recipe, with certain substitutions for ingredients not commonly available outside of Skrellian space."
icon = 'icons/obj/food_syn.dmi'
icon_state = "dynsoup"
bitesize = 5
@@ -7563,7 +7563,7 @@
reagents.add_reagent("nutriment", 8)
/obj/item/reagent_containers/food/snacks/stew/neaera
name = "neaera stew"
name = "Neaera stew"
desc = "Neaera meat stewed in a mixture of water and dyn juice, garnished with guami and eki. Often cooked in large batches to feed many teshari pack members."
icon = 'icons/obj/food_syn.dmi'
icon_state = "neaera_stew"
@@ -7577,8 +7577,8 @@
reagents.add_reagent("dynjuice", 4)
/obj/item/reagent_containers/food/snacks/chipplate/neaeracandy
name = "plate of candied neaera eyes"
desc = "Candied neaera eyes shaped into cubes. The mix of savoury and sweet is generally acceptable for most species, although many dislike the dish for its use of eyes."
name = "plate of candied Neaera eyes"
desc = "Candied Neaera eyes shaped into cubes. The mix of savoury and sweet is generally acceptable for most species, although many dislike the dish for its use of eyes."
icon_state = "neaera_candied_eyes20"
trash = /obj/item/trash/candybowl
vendingobject = /obj/item/reagent_containers/food/snacks/neaeracandy
@@ -7606,8 +7606,8 @@
icon_state = "neaera_candied_eyes20"
/obj/item/reagent_containers/food/snacks/neaeracandy
name = "candied neaera eye"
desc = "A candied neaera eye shaped into a cube. The mix of savoury and sweet is generally acceptable for most species, although many dislike the dish for its use of eyes."
name = "candied Neaera eye"
desc = "A candied Neaera eye shaped into a cube. The mix of savoury and sweet is generally acceptable for most species, although many dislike the dish for its use of eyes."
icon = 'icons/obj/food_syn.dmi'
icon_state = "neaera_candied_eye"
nutriment_desc = list("creamy, fatty meat" = 3)
@@ -7620,7 +7620,7 @@
reagents.add_reagent("seafood", 3)
/obj/item/reagent_containers/food/snacks/neaerakabob
name = "neaera-kabob"
name = "Neaera-kabob"
desc = "Neaera meat and giblets that have been cooked on a skewer."
icon = 'icons/obj/food_syn.dmi'
icon_state = "neaera_skewer"
@@ -7671,7 +7671,7 @@
/obj/item/reagent_containers/food/snacks/garani
name = "garani"
icon = 'icons/obj/food_syn.dmi'
desc = "Neaera liver stuffed with boiled qa'lozyn and fried in oil. A popular light meal for teshari."
desc = "Neaera liver stuffed with boiled qa'lozyn and fried in oil. A popular light meal for Teshari."
icon_state = "garani"
nutriment_amt = 8
nutriment_desc = list("fatty meat" = 4, "sweet turnips" = 4)
@@ -7685,7 +7685,7 @@
/obj/item/reagent_containers/food/snacks/qazal_dough
name = "qa'zal dough"
icon = 'icons/obj/food_syn.dmi'
desc = "A coarse, stretchy, skrellian dough made from qa'zal flour and ga'uli juice in a striking purple color."
desc = "A coarse, stretchy, Skrellian dough made from qa'zal flour and ga'uli juice in a striking purple color."
icon_state = "qazal_dough"
bitesize = 2
nutriment_amt = 3
+3 -3
View File
@@ -16,7 +16,7 @@
if (!isnull(cooked_icon))
icon_state = cooked_icon
flat_icon = null //Force regenating the flat icon for coatings, since we've changed the icon of the thing being coated
flat_icon = null //Force regenerating the flat icon for coatings, since we've changed the icon of the thing being coated
..()
if (name == initial(name))
@@ -36,7 +36,7 @@
name = "synthetic meat"
desc = "A synthetic slab of flesh."
// Seperate definitions because some food likes to know if it's human.
// Separate definitions because some food likes to know if it's human.
// TODO: rewrite kitchen code to check a var on the meat item so we can remove
// all these sybtypes.
/obj/item/reagent_containers/food/snacks/meat/human
@@ -60,7 +60,7 @@
//Chicken is low fat. Less total calories than other meats
/obj/item/reagent_containers/food/snacks/meat/neaera
name = "neaera meat"
name = "Neaera meat"
desc = "A slab of.. blue meat?"
icon_state = "neaera_meat"
+2 -2
View File
@@ -173,7 +173,7 @@
/obj/item/reagent_containers/food/snacks/chaoscakeslice
name = "The Chaos Cake Slice"
desc = "A slice from The Chaos Cake, it pulses weirdly, as if angry to be seperated from the whole"
desc = "A slice from The Chaos Cake, it pulses weirdly, as if angry to be separated from the whole"
icon_state = "chaoscake_slice-1"
center_of_mass = list("x"=16, "y"=10)
@@ -275,4 +275,4 @@
desc = desclist2[stage]
icon_state = "chaoscake_unfinished-[stage]"
else
to_chat(user, "Hmm, doesnt seem like this layer is supposed to be added there?")
to_chat(user, "Hmm, doesn't seem like this layer is supposed to be added there?")
@@ -1,6 +1,6 @@
// This folder contains code that was originally ported from Apollo Station and then refactored/optimized/changed.
// Tracks precooked food to stop deep fried baked grilled grilled grilled diona nymph cereal.
// Tracks precooked food to stop deep fried baked grilled grilled grilled Diona nymph cereal.
/obj/item/reagent_containers/food/snacks
var/tmp/list/cooked = list()
@@ -61,7 +61,7 @@
/obj/machinery/appliance/Destroy()
for (var/a in cooking_objs)
var/datum/cooking_item/CI = a
qdel(CI.container)//Food is fragile, it probably doesnt survive the destruction of the machine
qdel(CI.container)//Food is fragile, it probably doesn't survive the destruction of the machine
cooking_objs -= CI
qdel(CI)
return ..()
@@ -622,7 +622,7 @@
var/delete = 1
var/status = CI.container.check_contents()
if (status == 1)//If theres only one object in a container then we extract that
if (status == 1)//If there's only one object in a container then we extract that
thing = locate(/obj/item) in CI.container
delete = 0
else//If the container is empty OR contains more than one thing, then we must extract the container
@@ -132,7 +132,7 @@
if(cooking_objs.len < max_contents)
return 1
else
//Any food items directly added need an empty container. A slot without a container cant hold food
//Any food items directly added need an empty container. A slot without a container can't hold food
for (var/datum/cooking_item/CI in cooking_objs)
if (CI.container.check_contents() == 0)
return CI
@@ -1,7 +1,7 @@
/*
The mixer subtype is used for the candymaker and cereal maker. They are similar to cookers but with a few
The mixer subtype is used for the candymaker and cereal maker. They are similar to cookers but with a few
fundamental differences
1. They have a single container which cant be removed. it will eject multiple contents
1. They have a single container which can't be removed. it will eject multiple contents
2. Items can't be added or removed once the process starts
3. Items are all placed in the same container when added directly
4. They do combining mode only. And will always combine the entire contents of the container into an output
@@ -86,7 +86,7 @@
/obj/machinery/appliance/cooker/fryer/update_cooking_power()
..()//In addition to parent temperature calculation
//Fryer efficiency also drops when oil levels arent optimal
//Fryer efficiency also drops when oil levels aren't optimal
var/oil_level = 0
var/datum/reagent/nutriment/triglyceride/oil/OL = oil.get_master_reagent()
if(OL && istype(OL))
+3 -3
View File
@@ -160,7 +160,7 @@
return TRUE //Only snacks can be battered
if (coating == -1)
return TRUE //-1 value doesnt care
return TRUE //-1 value doesn't care
var/obj/item/reagent_containers/food/snacks/S = O
if (!S.coating)
@@ -208,7 +208,7 @@
//We will subtract all the ingredients from the container, and transfer their reagents into a holder
//We will not touch things which are not required for this recipe. They will be left behind for the caller
//to decide what to do. They may be used again to make another recipe or discarded, or merged into the results,
//thats no longer the concern of this proc
//that's no longer the concern of this proc
var/datum/reagents/buffer = new /datum/reagents(10000000000, null)//
@@ -239,7 +239,7 @@
//And lastly deduct necessary quantities of reagents
if (reagents && reagents.len)
for (var/r in reagents)
//Doesnt matter whether or not there's enough, we assume that check is done before
//Doesn't matter whether or not there's enough, we assume that check is done before
container.reagents.trans_type_to(buffer, r, reagents[r])
/*
+7 -7
View File
@@ -4,7 +4,7 @@
/*
Important: DO NOT `sleep()` in any of the procs here, or the GM will get stuck. Use callbacks insead.
Important: DO NOT `sleep()` in any of the procs here, or the GM will get stuck. Use callbacks instead.
Also please don't use spawn(), but use callbacks instead.
Note that there is an important distinction between an event being ended, and an event being finished.
@@ -33,20 +33,20 @@ This allows for events that have their announcement happen after the end itself.
// If these are set, the announcement will be delayed by a random time between the lower and upper bounds.
// If the upper bound is not defined, then it will use the lower bound instead.
// Note that this is independant of the event itself, so you can have the announcement happen long after the event ended.
// This may not work if should_announce() is overrided.
// Note that this is independent of the event itself, so you can have the announcement happen long after the event ended.
// This may not work if should_announce() is overridden.
var/announce_delay_lower_bound = null
var/announce_delay_upper_bound = null
// If these are set, the event will be delayed by a random time between the lower and upper bounds.
// If the upper bound is not defined, then it will use the lower bound instead.
// This may not work if should_start() is overrided.
// This may not work if should_start() is overridden.
var/start_delay_lower_bound = null
var/start_delay_upper_bound = null
// If these are set, the event will automatically end at a random time between the lower and upper bounds.
// If the upper bound is not defined, then it will use the lower bound instead.
// This may not work if should_end() is overrided.
// This may not work if should_end() is overridden.
var/length_lower_bound = null
var/length_upper_bound = null
@@ -173,7 +173,7 @@ This allows for events that have their announcement happen after the end itself.
return
if(!check_rights(R_ADMIN|R_EVENT|R_DEBUG))
message_admins("[usr] has attempted to manipulate an event without sufficent privileges.")
message_admins("[usr] has attempted to manipulate an event without sufficient privileges.")
return
if(href_list["abort"])
@@ -205,7 +205,7 @@ This allows for events that have their announcement happen after the end itself.
// Note that events that have `should_start()` return TRUE at the start will never have this proc called.
/datum/event2/event/proc/wait_tick()
// Called every tick from the GM system, and determines if the event should offically start.
// Called every tick from the GM system, and determines if the event should officially start.
// Override this for special logic on when it should start.
/datum/event2/event/proc/should_start()
if(!time_to_start)
@@ -1,7 +1,7 @@
/datum/event2/meta/spacevine
name = "space-vine infestation"
departments = list(DEPARTMENT_ENGINEERING)
chaos = 10 // There's a really rare chance of vines getting something awful like phoron atmosphere but thats not really controllable.
chaos = 10 // There's a really rare chance of vines getting something awful like phoron atmosphere but that's not really controllable.
chaotic_threshold = EVENT_CHAOS_THRESHOLD_MEDIUM_IMPACT
event_type = /datum/event2/event/spacevine
regions = list(EVENT_REGION_PLAYER_MAIN_AREA)
@@ -87,7 +87,7 @@
"Life-changing winnings* await when you register with MaxBet today.",\
"You will be able to enjoy over 450 top-flight casino games at MaxBet.")
if(2)
sender = pick(300;"QuickDatingSystem",200;"Find your almachi bride",50;"Tajaran beauties are waiting",50;"Find your secret skrell crush",50;"Beautiful unathi brides")
sender = pick(300;"QuickDatingSystem",200;"Find your Almachi bride",50;"Tajaran beauties are waiting",50;"Find your secret Skrell crush",50;"Beautiful Unathi brides")
message = pick("Your profile caught my attention and I wanted to write and say hello (QuickDating).",\
"If you will write to me on my email [pick(pick(first_names_female),(pick(first_names_male)))]@[pick(last_names)].[pick("xo.vr","ck","tj","ur","gov","nt","xo.sh")] I shall necessarily send you a photo (QuickDating).",\
"I want that we write each other and I hope, that you will like my profile and you will answer me (QuickDating).",\
@@ -100,13 +100,13 @@
"Watches, Jewelry & Accessories, Bags & Wallets !",\
"Deposit 100Th and get 300Th totally free!",\
"Your package is being held at [using_map.starsys_name] customs until payment of fee at (this page)",
"You have a pending transactions ,log in is required for verifcation!",\
"You have a pending transactions ,log in is required for verification!",\
" 100K NT.|EUNOIACOIN nly Th89 <HOT>",\
"You have won a FREE [pick("Cyber Solutions household drone", "Xion power drill", "Oasis Vacation", "Bishop Rook fitting session", "NanoThreads makeover experience", "home autofabrication system", "MBT interstellar cruise", "custom cybernetic household companion", "full-immersion VR system", "personal robot chef unit", "ThinkTronic PDA upgrade", "Ward-Takahashi communicator", "Nispean Safari Experience", "case of Lite-Speed beer", "Charlemagne von Rheinland personal voidcraft", "lifetime supply of Cheesie Honkers", "RayZar personal energy weapon", "Kaleidoscope Cosmetics gene-therapy consultation")]!",\
"We have been filed with a complaint from one of your customers in respect of their business relations with you.",\
"We kindly ask you to open the COMPLAINT REPORT (attached) to reply on this complaint..")
if(4)
sender = pick("Buy Dr. Maxman","Having dysfuctional troubles?")
sender = pick("Buy Dr. Maxman","Having dysfunctional troubles?")
message = pick("DR MAXMAN: REAL Doctors, REAL Science, REAL Results!",\
"Dr. Maxman was created by George Acuilar, M.D, a [using_map.boss_short] Certified Urologist who has treated over 70,000 patients region wide with '[pick("male","female", "other")] problems'.",\
"After seven years of research, Dr Acuilar and his team came up with this simple breakthrough [pick("male","female", "other")] enhancement formula.",\
@@ -119,12 +119,12 @@
"We are happy to inform you that due to the delay, we have been instructed to IMMEDIATELY deposit all funds into your account",\
"Dear fund beneficiary, We have please to inform you that overdue funds payment has finally been approved and released for payment",\
"Due to my lack of agents I require an off-world financial account to immediately deposit the sum of 1 POINT FIVE MILLION thalers.",\
"Greetings [pick("sir", "madame", "esteemed colleague")], I regretfully to inform you that as I lay dying here due to my lack ofheirs I have chosen you to recieve the full sum of my lifetime savings of 1.5 billion thalers")
"Greetings [pick("sir", "madame", "esteemed colleague")], I regretfully to inform you that as I lay dying here due to my lack of heirs I have chosen you to receive the full sum of my lifetime savings of 1.5 billion thalers")
if(6)
sender = pick("[using_map.company_name] Morale Divison","Feeling Lonely?","Bored?","www.wetskrell.nt")
sender = pick("[using_map.company_name] Morale Division","Feeling Lonely?","Bored?","www.wetskrell.nt")
message = pick("The [using_map.company_name] Morale Division wishes to provide you with quality entertainment sites.",\
"WetSkrell.nt is a xenophillic website endorsed by NT for the use of discerning crewmembers among it's many stations and colonies.",\
"Wetskrell.nt only provides the higest quality of xenophilic entertaiment to [using_map.company_name] Employees.",\
"Wetskrell.nt only provides the highest quality of xenophilic entertainment to [using_map.company_name] Employees.",\
"Simply enter your [using_map.company_name] Bank account system number and pin. With three easy steps this service could be yours!")
if(7)
sender = pick("You have won free tickets!", "Occulum Sweepstakes!", "Click here to claim your prize!","You are the 1000th vistor!","You are our lucky grand prize winner!")
@@ -1,5 +1,5 @@
// This is a somewhat special type of event, that bridges to the old event datum and makes it work with the new system.
// It acts as a compatability layer between the old event, and the new GM system.
// It acts as a compatibility layer between the old event, and the new GM system.
// This is possible because the new datum is mostly a superset of the old one.
/datum/event2/event/legacy
var/datum/event/legacy_event = null
@@ -1,5 +1,5 @@
// Type for inheritence.
// Type for inheritance.
// It has a null name, so it won't be ran.
/datum/event2/meta/prison_break
chaos = 10
@@ -32,7 +32,7 @@
return 10 + (door_fixers * 20) + (afflicted_crew * 10) + trapped
// This is overriden to have specific events trigger more often based on who is trapped in where, if applicable.
// This is overridden to have specific events trigger more often based on who is trapped in where, if applicable.
/datum/event2/meta/prison_break/proc/get_odds_from_trapped_mobs()
return 0
@@ -126,7 +126,7 @@
var/containment_display_desc = null
var/list/areas_to_break = list()
var/list/area_types_to_break = null // Area types to include.
var/list/area_types_to_ignore = null // Area types to exclude, usually due to undesired inclusion from inheritence.
var/list/area_types_to_ignore = null // Area types to exclude, usually due to undesired inclusion from inheritance.
var/ignore_blast_doors = FALSE
/datum/event2/event/prison_break/brig
@@ -18,7 +18,7 @@
suspicious_people += metric.count_all_of_specific_species(SPECIES_PROMETHEAN) * 20
suspicious_people += metric.count_all_of_specific_species(SPECIES_UNATHI) * 10
suspicious_people += metric.count_all_of_specific_species(SPECIES_ZADDAT) * 10
suspicious_people += metric.count_all_of_specific_species(SPECIES_SKRELL) * 5 // Not sure why skrell are so high.
suspicious_people += metric.count_all_of_specific_species(SPECIES_SKRELL) * 5 // Not sure why Skrell are so high.
suspicious_people += metric.count_all_of_specific_species(SPECIES_TAJ) * 5
suspicious_people += metric.count_all_of_specific_species(SPECIES_TESHARI) * 5
suspicious_people += metric.count_all_of_specific_species(SPECIES_HUMAN_VATBORN) * 5
@@ -1,4 +1,4 @@
// Base type used for inheritence.
// Base type used for inheritance.
/datum/event2/meta/stowaway
event_class = "stowaway"
departments = list(DEPARTMENT_SECURITY, DEPARTMENT_EVERYONE)
@@ -58,7 +58,7 @@
log_debug("Surprise carp attack failed to find any space turfs offscreen to the victim.")
// Gets suitable spots for carp to spawn, without risk of going off the edge of the map.
// If there is demand for this proc, then it can easily be made independant and moved into one of the helper files.
// If there is demand for this proc, then it can easily be made independent and moved into one of the helper files.
/datum/event2/event/surprise_carp/proc/get_safe_square(atom/center, radius)
var/lower_left_x = max(center.x - radius, 1 + TRANSITIONEDGE)
var/lower_left_y = max(center.y - radius, 1 + TRANSITIONEDGE)
@@ -49,7 +49,7 @@
B.emag_act(1)
// Messaging server spam filters.
// This might be better served as a seperate event since it seems more like a hacker attack than a natural occurance.
// This might be better served as a separate event since it seems more like a hacker attack than a natural occurrence.
if(message_servers)
for(var/obj/machinery/message_server/MS in message_servers)
if(MS.z in get_location_z_levels())
+3 -3
View File
@@ -4,7 +4,7 @@
// The code for actually executing an event should go inside the event object instead.
/datum/event2/meta
// Name used for organization, shown in the debug verb for the GM system.
// If null, the meta event will be discarded when the GM system initializes, so it is safe to use nameless subtypes for inheritence.
// If null, the meta event will be discarded when the GM system initializes, so it is safe to use nameless subtypes for inheritance.
var/name = null
// If FALSE, the GM system won't pick this.
@@ -42,7 +42,7 @@
// The type path to the event associated with this meta object.
// When the GM chooses this event, a new instance is made.
// Seperate instances allow for multiple concurrent events without sharing state, e.g. two blobs.
// Separate instances allow for multiple concurrent events without sharing state, e.g. two blobs.
var/event_type = null
@@ -72,7 +72,7 @@
return
if(!check_rights(R_ADMIN|R_EVENT|R_DEBUG))
message_admins("[usr] has attempted to manipulate an event without sufficent privilages.")
message_admins("[usr] has attempted to manipulate an event without sufficient privileges.")
return
if(href_list["force"])
+1 -1
View File
@@ -349,7 +349,7 @@
/obj/item/pack/
name = "Card Pack"
desc = "For those with disposible income."
desc = "For those with disposable income."
icon_state = "card_pack"
icon = 'icons/obj/playing_cards.dmi'
+1 -1
View File
@@ -143,7 +143,7 @@
update_projections()
if(safety_disabled)
message_admins("[key_name_admin(usr)] overrode the holodeck's safeties")
log_game("[key_name(usr)] overrided the holodeck's safeties")
log_game("[key_name(usr)] overridden the holodeck's safeties")
else
message_admins("[key_name_admin(usr)] restored the holodeck's safeties")
log_game("[key_name(usr)] restored the holodeck's safeties")
@@ -13,7 +13,7 @@
var/true_description_antag = null // Ditto, for antag info (this probably won't get used).
var/identified = IDENTITY_UNKNOWN // Can be IDENTITY_UNKNOWN, IDENTITY_PROPERTIES, IDENTITY_QUALITY, or IDENTITY_FULL.
// Holds what is displayed when not identified sufficently.
// Holds what is displayed when not identified sufficiently.
var/unidentified_name = null // The name given to the object when not identified. Generated by generate_unidentified_name()
var/unidentified_desc = "You're not too sure what this is."
var/unidentified_description_info = "This object is unidentified, and as such its properties are unknown. Using this object may be dangerous."
@@ -34,7 +34,7 @@
holder = null
return ..()
// Records the object's inital identifiying features to the datum for future safekeeping.
// Records the object's initial identifying features to the datum for future safekeeping.
/datum/identification/proc/record_true_identity()
true_name = holder.name
true_desc = holder.desc
@@ -97,7 +97,7 @@
HTML += "Assembly Cloning: [can_clone ? "Available": "Unavailable"].<br>"
if(assembly_to_clone)
HTML += "Assembly '[assembly_to_clone.name]' loaded.<br>"
HTML += "Crossed out circuits mean that the printer is not sufficentally upgraded to create that circuit.<br>"
HTML += "Crossed out circuits mean that the printer is not sufficiently upgraded to create that circuit.<br>"
HTML += "<hr>"
HTML += "Categories:"
for(var/category in SScircuit.circuit_fabricator_recipe_list)
@@ -33,7 +33,7 @@
to_chat(user, "<span class='warning'>Wiring \the [selected_io.holder]'s [selected_io.name] into itself is rather pointless.</span>")
return
if(io.io_type != selected_io.io_type)
to_chat(user, "<span class='warning'>Those two types of channels are incompatable. The first is a [selected_io.io_type], \
to_chat(user, "<span class='warning'>Those two types of channels are incompatible. The first is a [selected_io.io_type], \
while the second is a [io.io_type].</span>")
return
if(io.holder.assembly && io.holder.assembly != selected_io.holder.assembly)
@@ -206,7 +206,7 @@
to_chat(user, "<span class='warning'>Wiring \the [selected_io.holder]'s [selected_io.name] into itself is rather pointless.</span>")
return
if(io.io_type != selected_io.io_type)
to_chat(user, "<span class='warning'>Those two types of channels are incompatable. The first is a [selected_io.io_type], \
to_chat(user, "<span class='warning'>Those two types of channels are incompatible. The first is a [selected_io.io_type], \
while the second is a [io.io_type].</span>")
return
if(io.holder.assembly && io.holder.assembly != selected_io.holder.assembly)
@@ -165,7 +165,7 @@
/obj/item/integrated_circuit/list/jointext
name = "join text circuit"
desc = "This circuit will add all elements of a list into one string, seperated by a character."
desc = "This circuit will add all elements of a list into one string, separated by a character."
extended_desc = "Default settings will encode the entire list into a string."
inputs = list(
"list to join" = IC_PINTYPE_LIST,//
@@ -106,7 +106,7 @@
icon_state = "locomotion"
extended_desc = "The circuit accepts a 'dir' number as a direction to move towards.<br>\
Pulsing the 'step towards dir' activator pin will cause the machine to move a meter in that direction, assuming it is not \
being held, or anchored in some way. It should be noted that the ability to move is dependant on the type of assembly that this circuit inhabits."
being held, or anchored in some way. It should be noted that the ability to move is dependent on the type of assembly that this circuit inhabits."
w_class = ITEMSIZE_NORMAL
complexity = 20
// size = 5
@@ -438,7 +438,7 @@
activate_pin(2)
// Updates some changable aspects of the hologram like the size or position.
// Updates some changeable aspects of the hologram like the size or position.
/obj/item/integrated_circuit/output/holographic_projector/proc/update_hologram()
if(!hologram)
return FALSE
@@ -455,7 +455,7 @@
return TRUE
// This is a seperate function because other things besides do_work() might warrant updating position, like movement, without bothering with other parts.
// This is a separate function because other things besides do_work() might warrant updating position, like movement, without bothering with other parts.
/obj/item/integrated_circuit/output/holographic_projector/proc/update_hologram_position()
var/holo_x = get_pin_data(IC_INPUT, 4)
var/holo_y = get_pin_data(IC_INPUT, 5)
@@ -8,7 +8,7 @@
extended_desc = "This circuit transmits 5 kJ of electricity every time the activator pin is pulsed. The input pin must be \
a reference to a machine to send electricity to. This can be a battery, or anything containing a battery. The machine can exist \
inside the assembly, or adjacent to it. The power is sourced from the assembly's power cell. If the target is outside of the assembly, \
some power is lost due to ineffiency."
some power is lost due to inefficiency."
w_class = ITEMSIZE_SMALL
complexity = 16
inputs = list("target" = IC_PINTYPE_REF)
@@ -20,16 +20,16 @@
activators = list("transmit" = IC_PINTYPE_PULSE_IN, "on transmit" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 4, TECH_POWER = 4, TECH_MAGNET = 3)
power_draw_per_use = 500 // Inefficency has to come from somewhere.
power_draw_per_use = 500 // Inefficiency has to come from somewhere.
var/amount_to_move = 5000
/obj/item/integrated_circuit/power/transmitter/large
name = "large power transmission circuit"
desc = "This can wirelessly transmit a lot of electricity from an assembly's battery towards a nearby machine. Warning: Do not operate in flammable enviroments."
desc = "This can wirelessly transmit a lot of electricity from an assembly's battery towards a nearby machine. Warning: Do not operate in flammable environments."
extended_desc = "This circuit transmits 20 kJ of electricity every time the activator pin is pulsed. The input pin must be \
a reference to a machine to send electricity to. This can be a battery, or anything containing a battery. The machine can exist \
inside the assembly, or adjacent to it. The power is sourced from the assembly's power cell. If the target is outside of the assembly, \
some power is lost due to ineffiency."
some power is lost due to inefficiency."
w_class = ITEMSIZE_LARGE
complexity = 32
origin_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 4, TECH_POWER = 6, TECH_MAGNET = 5)
@@ -61,7 +61,7 @@
/obj/item/integrated_circuit/trig/tangent
name = "tan circuit"
desc = "Outputs the tangent of A. Guaranteed to not go on a tangent about its existance."
desc = "Outputs the tangent of A. Guaranteed to not go on a tangent about its existence."
icon_state = "tangent"
inputs = list("A" = IC_PINTYPE_NUMBER)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
@@ -46,39 +46,39 @@ Category: Fiction
<body>
<p>
Once upon a time there was a cat, but he wasnt the kind of cat youre thinking of. He was from the land of the fairies and his fur was completely unexpected colors. For starters, his nose was <i>violet</i>. His eyes were <i>indigo</i>, his ears were <i>sky blue</i>, his front paws were <i>green</i>, his body was <i>yellow</i>, his back paws were <i>orange</i>, and his tail was <i>red</i>. So he was a mysterious cat of seven colors arranged just like a rainbow.
Once upon a time there was a cat, but he wasn't the kind of cat you're thinking of. He was from the land of the fairies and his fur was completely unexpected colors. For starters, his nose was <i>violet</i>. His eyes were <i>indigo</i>, his ears were <i>sky blue</i>, his front paws were <i>green</i>, his body was <i>yellow</i>, his back paws were <i>orange</i>, and his tail was <i>red</i>. So he was a mysterious cat of seven colors arranged just like a rainbow.
<br><br>
That rainbow cat went on all sorts of strange adventures. The following story is one of them.
<br><br>
One day while the rainbow cat was sunbathing, he was suddenly vexed by boredom. That is to say, peace reigned in the land of the fairies, so nothing much was going on.
<br><br>
<i>Its not good for my health to spend all my time idling about as if I havent got a care in the world,</i> he thought. <i>Perhaps I should head out and go on an adventure.</i>
<i>It's not good for my health to spend all my time idling about as if I haven't got a care in the world,</i> he thought. <i>Perhaps I should head out and go on an adventure.</i>
<br><br>
So he put a note up on his door: "Dear Mr. Post Man, I will be gone for two or three days, so if any packages or letters come, please throw them down the chimney."
<br><br>
Then he packed a small bag, hung it on his tail, and wobbled off to the border of the land of the fairies. When he arrived, a thick cloud billowed up.
<br><br>
"Well, maybe Ill drop by the cloud peoples place," he chattered to himself, climbing up the cloud embankment.
"Well, maybe I'll drop by the cloud people's place," he chattered to himself, climbing up the cloud embankment.
<br><br>
The people who lived in cloud country were quite pleasant folks. They didnt do any work, in particular, but just because they were lazy didnt mean that they didnt find the world interesting. They all lived in splendid palaces, of which the ones you couldnt see from Earth were far more beautiful than the ones you could.
The people who lived in cloud country were quite pleasant folks. They didn't do any work, in particular, but just because they were lazy didn't mean that they didn't find the world interesting. They all lived in splendid palaces, of which the ones you couldn't see from Earth were far more beautiful than the ones you could.
<br><br>
The people of the cloud country sometimes drove pearly gray carriages or went sailing in lightweight boats. They lived in the sky, so the only person they had to fear was Sir Thunder. Its quite understandable given that he was quick to anger -- he would make the sky rumble with his stomping and go around knocking down their houses.
The people of the cloud country sometimes drove pearly gray carriages or went sailing in lightweight boats. They lived in the sky, so the only person they had to fear was Sir Thunder. It's quite understandable given that he was quick to anger -- he would make the sky rumble with his stomping and go around knocking down their houses.
<br><br>
The people of the cloud country were very happy to have the rainbow cat visit and greeted him politely.
<br><br>
"Youve come at a great time," they said. "Were having a big celebration at the Wind Gods house. His eldest son, North Wind is taking the daughter of the King of the Magic Isle as his wife."
"You've come at a great time," they said. "We're having a big celebration at the Wind God's house. His eldest son, North Wind is taking the daughter of the King of the Magic Isle as his wife."
<br><br>
The rainbow cat, having thought just such a thing might happen, was prepared with various goods in the bag on his tail.
<br><br>
It was a truly magnificent wedding.
<br><br>
Everyone came. Even Comet showed up. You wouldnt see Comet unless it was a very fine banquet indeed.
Everyone came. Even Comet showed up. You wouldn't see Comet unless it was a very fine banquet indeed.
<br><br>
And Aurora came in the most indescribably beautiful garments of light. Of course, the brides parents, the King of Magic Isle and his Pearl Oyster Queen, were in attendance.
And Aurora came in the most indescribably beautiful garments of light. Of course, the bride's parents, the King of Magic Isle and his Pearl Oyster Queen, were in attendance.
<br><br>
A feast was served and everyone was in a lively mood, having interesting conversations and drinking, when all of the sudden a swallow flew in. According to him, the giant Sir Thunder was rushing towards them at a tremendous speed. Apparently, when Trade Wind was hurrying by, he had tripped over sleeping Sir Thunders toes and Sir Thunder was furious.
A feast was served and everyone was in a lively mood, having interesting conversations and drinking, when all of the sudden a swallow flew in. According to him, the giant Sir Thunder was rushing towards them at a tremendous speed. Apparently, when Trade Wind was hurrying by, he had tripped over sleeping Sir Thunder's toes and Sir Thunder was furious.
<br><br>
"Whatll we do?" everyone wondered at once, their faces pale. "The celebration will be ruined!"
"What'll we do?" everyone wondered at once, their faces pale. "The celebration will be ruined!"
<br><br>
All the guests and the master of the house began to scatter in a panic.
<br><br>
@@ -88,9 +88,9 @@ Category: Fiction
<br><br>
A moment later, he came back out.
<br><br>
"Ill find a way to keep Sir Thunder from coming here," said the cat. "So please continue the celebration as you were. Ill go to him and see what I can do."
"I'll find a way to keep Sir Thunder from coming here," said the cat. "So please continue the celebration as you were. I'll go to him and see what I can do."
<br><br>
Everyone was surprised at how brave and composed the rainbow cat was, but it sounded like their celebration wouldnt be intruded upon partway through, so they were happy to gather and see off the cat as he raced towards the far-off rumblings of Sir Thunder.
Everyone was surprised at how brave and composed the rainbow cat was, but it sounded like their celebration wouldn't be intruded upon partway through, so they were happy to gather and see off the cat as he raced towards the far-off rumblings of Sir Thunder.
</p>
</body>
</html>
@@ -111,21 +111,21 @@ Category: Fiction
<br><br>
"Hey, who are you and what are you doing here?" he shouted.
<br><br>
"Me? Im the famed magician Mewpuu," replied the rainbow cat in a voice made to sound serious and important. "Take a look at my bag, here. There are magic seeds inside. Mr. Thunder, Ive known about you for a while now. Youre quite famous."
"Me? I'm the famed magician Mewpuu," replied the rainbow cat in a voice made to sound serious and important. "Take a look at my bag, here. There are magic seeds inside. Mr. Thunder, I've known about you for a while now. You're quite famous."
<br><br>
Hearing this Sir Thunder felt a bit proud, but his foot was sore, so he was soon angry again.
<br><br>
"Hrmph! I dont think too highly of magicians. What can you do, anyways?"
"Hrmph! I don't think too highly of magicians. What can you do, anyways?"
<br><br>
"I can read your mind."
<br><br>
"Oh? Is that so? Then try to guess what Im thinking right now."
"Oh? Is that so? Then try to guess what I'm thinking right now."
<br><br>
"A simple matter. Youre angry because your foot hurts and you want to catch the fellow who kicked your blister, right?"
"A simple matter. You're angry because your foot hurts and you want to catch the fellow who kicked your blister, right?"
<br><br>
The rainbow cat had heard all that from the swallow. Sir Thunder was flabbergasted.
<br><br>
"Wow, thats right. Will you teach me your magic?"
"Wow, that's right. Will you teach me your magic?"
<br><br>
"Sure I will. But first I must test your potential. Have a seat."
<br><br>
@@ -133,35 +133,35 @@ Category: Fiction
<br><br>
"Now then, try to tell me what I am thinking right now," said the cat.
<br><br>
Sir Thunder the giant looked blankly at the cats face. He was not very bright.
Sir Thunder the giant looked blankly at the cat's face. He was not very bright.
<br><br>
"You must be thinking that I look pretty foolish sitting here."
<br><br>
"Excellent. Astonishing! You have more than enough talent to begin the training. You may be my brightest disciple yet."
<br><br>
"Then maybe Ill try one more time." Sir Thunder now thought himself terribly sharp.
"Then maybe I'll try one more time." Sir Thunder now thought himself terribly sharp.
<br><br>
"Very well. Try to guess what Im thinking."
"Very well. Try to guess what I'm thinking."
<br><br>
Sir Thunder tried to look wise and peered at the cats face with his small, goofy eyes.
Sir Thunder tried to look wise and peered at the cat's face with his small, goofy eyes.
<br><br>
"Beef steak and onions," he announced abruptly.
<br><br>
"Brilliant!" the cat feigned surprise and purposely lost his footing to land on his rump. "Youre exactly right. But how did you know?"
"Brilliant!" the cat feigned surprise and purposely lost his footing to land on his rump. "You're exactly right. But how did you know?"
<br><br>
"Oh, how do you say...? I guess it just came to me," replied Sir Thunder.
<br><br>
The cat assumed a serious air. "We must cultivate that fine talent of yours!"
<br><br>
"How do we cultivate it?" asked Sir Thunder. He thought being able to read peoples minds was quite fun.
"How do we cultivate it?" asked Sir Thunder. He thought being able to read people's minds was quite fun.
<br><br>
"Its a cinch," said the cat, finally telling a blatant lie now that he thought he had the giant where he wanted him. "Go home and sleep for two or three hours. Then have some cake and sleep another two or three hours. Then, when you wake up, drink one cup of hot tea. But you have to be as still as possible or it wont work. If you do all that, by tomorrow morning youll be reading peoples minds like its nothing."
"It's a cinch," said the cat, finally telling a blatant lie now that he thought he had the giant where he wanted him. "Go home and sleep for two or three hours. Then have some cake and sleep another two or three hours. Then, when you wake up, drink one cup of hot tea. But you have to be as still as possible or it won't work. If you do all that, by tomorrow morning you'll be reading people's minds like it's nothing."
<br><br>
Sir Thunder wanted to go running straight home, but of course, he couldnt forget his manners. "Thanks a lot. But Master Mewpuu, what can I offer you in return for teaching me this?"
Sir Thunder wanted to go running straight home, but of course, he couldn't forget his manners. "Thanks a lot. But Master Mewpuu, what can I offer you in return for teaching me this?"
<br><br>
The rainbow cat thought a moment and said, "Id like a tiny bit of lightning. Please give me just a smidge."
The rainbow cat thought a moment and said, "I'd like a tiny bit of lightning. Please give me just a smidge."
<br><br>
Sir Thunder the giant put his hand in his pocket and said, "No problem. If thats all, I have a bundle of it right here, so please take this. When you need it, just undo the string and the lightning will come out in a most amusing way."
Sir Thunder the giant put his hand in his pocket and said, "No problem. If that's all, I have a bundle of it right here, so please take this. When you need it, just undo the string and the lightning will come out in a most amusing way."
<br><br>
"Thank you very much."
<br><br>
@@ -285,7 +285,7 @@ Category: Fiction
Those that I fight I do not hate<br>
Those that I guard I do not love;<br>
My country is Kiltartan Cross,<br>
My countrymen Kiltartans poor,<br>
My countrymen Kiltartan's poor,<br>
No likely end could bring them loss<br>
Or leave them happier than before.<br>
Nor law, nor duty bade me fight,<br>
@@ -417,7 +417,7 @@ Category: Fiction
Gas! GAS! Quick, boys! -- An bliss of fumbling<br>
Fitting the clumsy helmets just in time,<br>
But someone still was yelling out and stumbling<br>
And floundring like a man in fire or lime.--<br>
And flound'ring like a man in fire or lime.--<br>
Dim through the misty panes and thick green light,<br>
As under a green sea, I saw him drowning.<br><br>
In all my dreams before my helpless sight,<br>
@@ -425,7 +425,7 @@ Category: Fiction
If in some smothering dreams, you too could pace<br>
Behind the wagon that we flung him in,<br>
And watch the white eyes writhing in his face,<br>
His hanging face, like a devils sick of sin;<br>
His hanging face, like a devil's sick of sin;<br>
If you could hear, at every jolt, the blood<br>
Come gargling from the froth-corrupted lungs,<br>
Obscene as cancer, bitter as the cud<br>
@@ -612,13 +612,13 @@ Category: Fiction
</head>
<body>
<div class="border">
"I wonder where they might be taking shelter from the storm. There is no where else to go in this wide, wide ocean. They must have sunk...<br><br>
"I wonder where they might be taking shelter from the storm. There is no where else to go in this wide, wide ocean. They must have sunk...''<br><br>
The first fisherman had started to worry as the stormy night turned to complete darkness. Whenever he looked out, the waves of the ocean were winding into the skies above. He could see no sign of a boat. The first fisherman had been abandoned on the small, deserted island. He stood on the rocks of the shore and waited a full day for his friends to return. But perhaps because the winds from yesterday had made the ocean rough, the sun that day went down without any sign of the boat he had been waiting for.<br><br>
Three days passed. The first fisherman had started to grow weak. Finally, after standing on the beach looking intently out over the ocean for three days, the boat carrying his friends cut through the waves and sailed towards the beach. It felt like a thousand years since he had seen them last. He could see that the second fisherman and the third fisherman were fine and moving about on the boat.<br><br>
"Hey!" the first fisherman called out over the water, raising both of his hands high in the air. When he did, it looked like they too had thrown their hands in the air and called back. Only he couldn't hear their voices. Just then as the setting sun illuminated the tips of the waves, the two fishermen on the boat came into sight, red in the face.<br><br>
"Ahh, here's a sight for sore eyes, my two friends! They made it back alive," said the first fisherman, warm tears of joy swelling in his eyes. Before long the boat was nearly on the sand.<br><br>
"Hey!" the first fisherman called out, his hand in the air. He thought the other to fishermen would respond, but just as the pair were about to turn to the side and bring their boat in, they disappeared like a puff of smoke. The first fisherman was shocked.<br><br>
"A ghost ship!
"A ghost ship!'
</div><br>
<center><font style="Courier New">III</font></center>
</body>
@@ -634,8 +634,8 @@ Category: Fiction
<body>
<div class="border">
The first fisherman lost all hope, threw himself down on the sand and began to cry. His imagination was running wild, and his nightmares ran through the night. When he awoke the next morning his eyes were blood-shot and his heart was pounding. It was just past midday. The first fisherman raised his head and looked out over the sea only to spot the same boat in the distance. But it was the same as yesterday, a ghost ship, that had come to the island. For a moment he was relieved, and happiness danced in his chest, but in the next instant his body shook with fear.<br><br>
"Damn it. Are they trying to kill me? said the first fisherman, as he started to lose his mind. The boat cut through the waves and came in closer and closer to the island. The first fisherman pulled out his pistol, aimed at the boat and pulled the trigger. But this time the boat wasn't a ghost, and it didn't disappear. Once the boat was docked at the beach, the two other fishermen scrambled up onto land.<br><br>
"Have you gone completely mad? yelled one, which was enough to snap the first fisherman back to reality.<br><br>
"Damn it. Are they trying to kill me?' said the first fisherman, as he started to lose his mind. The boat cut through the waves and came in closer and closer to the island. The first fisherman pulled out his pistol, aimed at the boat and pulled the trigger. But this time the boat wasn't a ghost, and it didn't disappear. Once the boat was docked at the beach, the two other fishermen scrambled up onto land.<br><br>
"Have you gone completely mad?'' yelled one, which was enough to snap the first fisherman back to reality.<br><br>
The first fisherman had gone completely mad. That night the winds had caused the boat to be pushed back against a nearby island. Once the waves had died down, the two fishermen went back to the island to rescue their friend. The two fishermen got their crazy friend back on the boat and returned to the mainland. The pair cared for their weakened friend, and through their care he was able to lose his madness and returned to how he used to be. And from there the three friends went on to be even better friends for a very long time. This story is still told in the harbors to the north where the head of that deserted island still pokes up from between those blue black waves.
</div><br>
<center><font style="Courier New">IV</font></center>
@@ -83,14 +83,14 @@ CATEGORY: Fiction
</style>
</head>
<body>
<div>In the land of Margata, nothing is ever as it seems. There have been many verifiable cases of local bakers having a secret double life as DJs. The correlation between exposure to bread and wanting to scratch out some sick beats has never been quantified, quite possibly to science being illegal in the region. That didn't happen to be the case of a young boy named Gadroc, who was neither a baker nor a DJ. In fact, his story happens to have nothing to do with either of the two. Poor Gadroc was afflicted with a terrible curse. It had been that way ever since he was born, because a witch had cursed his mother for saying "Keep the change," when there was only one cent of change left. Gadrocs curse was horrible, one that no human being should suffer through: he couldnt look at butts. Whenever someone showed him a full moon, he transformed into a horrible beast with astoundingly fresh breath. Whenever this happened, he would always run to the nearest cornfield and begin uncontrollably eating corn. Why corn? Because magic, thats why. That's just how it fucking works. Don't you know anything?</div>
<div>After coming home with corn stuck in his teeth for three days straight, and only having one more pair of pants that werent destroyed, Gadroc knew that he needed to do something about his curse. He went to the first person he could think of for help.</div>
<div>Carne was the towns blacksmith. He wasnt very wise, but he always spoke as though he was. It was for this reason that Gadroc often came to Carne for help, despite the fact that he could probably go to basically anyone else. The town beggar, who was constantly sitting in a puddle of his own pee, gave better advice than the blacksmith. Carne was the only one who knew about Gadrocs affliction. No one else knew who was ravaging the towns corn population, and riots had already broken out over the severe deficit in cornbread supply.</div>
<div>In the land of Margata, nothing is ever as it seems. There have been many verifiable cases of local bakers having a secret double life as DJs. The correlation between exposure to bread and wanting to scratch out some sick beats has never been quantified, quite possibly to science being illegal in the region. That didn't happen to be the case of a young boy named Gadroc, who was neither a baker nor a DJ. In fact, his story happens to have nothing to do with either of the two. Poor Gadroc was afflicted with a terrible curse. It had been that way ever since he was born, because a witch had cursed his mother for saying "Keep the change," when there was only one cent of change left. Gadroc's curse was horrible, one that no human being should suffer through: he couldn't look at butts. Whenever someone showed him a full moon, he transformed into a horrible beast with astoundingly fresh breath. Whenever this happened, he would always run to the nearest cornfield and begin uncontrollably eating corn. Why corn? Because magic, that's why. That's just how it fucking works. Don't you know anything?</div>
<div>After coming home with corn stuck in his teeth for three days straight, and only having one more pair of pants that weren't destroyed, Gadroc knew that he needed to do something about his curse. He went to the first person he could think of for help.</div>
<div>Carne was the town's blacksmith. He wasn't very wise, but he always spoke as though he was. It was for this reason that Gadroc often came to Carne for help, despite the fact that he could probably go to basically anyone else. The town beggar, who was constantly sitting in a puddle of his own pee, gave better advice than the blacksmith. Carne was the only one who knew about Gadroc's affliction. No one else knew who was ravaging the town's corn population, and riots had already broken out over the severe deficit in cornbread supply.</div>
<div>"Carne, you have to help me!" Gadroc shouted as he burst through the doors of the smithy. Carne was in the middle of forging a pair of iron gauntlets, and had his back turned to Gadroc. He did not turn around.</div>
<div>"Do you need my help? Or do you need my help to help yourself?" Carne said, spouting his signature wisdom.</div>
<div>"Yes. No. What? Did you get that from a fortune cookie?" replied Gadroc.</div>
<div>"Yes, actually." Carne turned around. He was loudly crunching on some fortune cookie and inexplicably wearing the gauntlets he was working on, still glowing red hot. He held up the fortune, but Gadroc didnt have time to read it, as it immediately caught fire and fell into a pile of ashes on the floor.</div>
<div>Gadroc was concerned. "Doesnt that... you know... hurt?"</div>
<div>"Yes, actually." Carne turned around. He was loudly crunching on some fortune cookie and inexplicably wearing the gauntlets he was working on, still glowing red hot. He held up the fortune, but Gadroc didn't have time to read it, as it immediately caught fire and fell into a pile of ashes on the floor.</div>
<div>Gadroc was concerned. "Doesn't that... you know... hurt?"</div>
<div>"Oh yes, extremely," Carne said with a smile. They both stared at each other for a moment.</div>
</body>
</html>
@@ -105,27 +105,27 @@ CATEGORY: Fiction
<body>
<div>"<strong>AHHHHHHHHHHHHHHHHHHHH!</strong>" screamed Carne. He flailed his arms around wildly until the gauntlets flew off. One of them flew across the room and hit a painting hanging on the wall. The painting was of our lord and president, Orcbama, and the gauntlet punched him in the face. The painting had a large scorch mark in the same place where the gauntlet had hit, indicating that this was a common occurrence.</div>
<div>"Anyways," Carne said casually, hands blistered and burnt, "What do you need to help me with?"</div>
<div>"Thats not what I... you know what, nevermind. Listen. I am sick and tired of this stupid werewolf bullshit! Corn used to be my favorite, and now I cant stand it! I miss the days when I enjoyed cornbread..."</div>
<div>"That's not what I... you know what, nevermind. Listen. I am sick and tired of this stupid werewolf bullshit! Corn used to be my favorite, and now I can't stand it! I miss the days when I enjoyed cornbread..."</div>
<div>"Yeah, so do the townsfolk," the blacksmith replied.</div>
<div>"That's not helpful," Gadroc said, but Carne went on.</div>
<div>"I've always been more of a corn casserole kind of guy myself. Easier on the old gut. Y'know, when I was a boy-"</div>
<div>"Would you shut up and listen? We need to do something about this!"</div>
<div>"Right... Whats the problem again?" Gadroc smacked his forehead. He pointed to his own butt.</div>
<div>"Right... What's the problem again?" Gadroc smacked his forehead. He pointed to his own butt.</div>
<div>"Listen, son, if that's the way you're swingin', you don't have to play charades about it. Old Carne won't judge," Carne said.</div>
<div>"No, the werewolf problem!" Gadroc screamed. He fell to his knees, tears welling up in his eyes. He sniffed. "I just want to be able to look at butts. Thats all I want."</div>
<div>Carne walked up and put his gross, burnt hand on Gadrocs shoulder. "Its alright. Ill help you with your problem."</div>
<div>"No, the werewolf problem!" Gadroc screamed. He fell to his knees, tears welling up in his eyes. He sniffed. "I just want to be able to look at butts. That's all I want."</div>
<div>Carne walked up and put his gross, burnt hand on Gadroc's shoulder. "It's alright. I'll help you with your problem."</div>
<div>Gadroc sniffed again. "Really?"</div>
<div>"Yes. Even if it means Im helping myself to help you help me-"</div>
<div>"Carne, youre not helping again."</div>
<div>"Yes. Even if it means I'm helping myself to help you help me-"</div>
<div>"Carne, you're not helping again."</div>
</br>
<div>CUT TO: Gadroc and Carne, scaling a mountain. Both men were equipped with the finest blades from Carnes smithy. Gadroc was feeling a little indignant, considering Carne had only given him a foam sword. Carne had taken the only finished blade in the smithy.</div>
<div>"You see that up there?" Carne said to Gadroc as they climbed. "Thats the ancient temple whose name is really hard to pronounce."</div>
<div>CUT TO: Gadroc and Carne, scaling a mountain. Both men were equipped with the finest blades from Carne's smithy. Gadroc was feeling a little indignant, considering Carne had only given him a foam sword. Carne had taken the only finished blade in the smithy.</div>
<div>"You see that up there?" Carne said to Gadroc as they climbed. "That's the ancient temple whose name is really hard to pronounce."</div>
<div>"Really?" Gadroc asked. "What's it called?"</div>
<div>"Id tell you, but its really hard to pronounce," explained the smith. He continued. "From what I understand, theres a mystical artifact that can cure any curse. Were going to use it to cure your werewolf problem."</div>
<div>"Why didnt you tell me any of this on the way here? Ive been following you up this mountain for hours with no idea of what were doing."</div>
<div>"I'd tell you, but it's really hard to pronounce," explained the smith. He continued. "From what I understand, there's a mystical artifact that can cure any curse. We're going to use it to cure your werewolf problem."</div>
<div>"Why didn't you tell me any of this on the way here? I've been following you up this mountain for hours with no idea of what we're doing."</div>
<div>"We took that part out in post. It was a really long and not very funny bit that didn't get much of a reaction out of anyone the first time this story was read out loud. It's a little trick the boys back home call 'the Director's Cut.'"</div>
<div>"Ah. That makes a lot of sense."</div>
<div>"Right?" The two laughed at that, looked at the camera for a moment, then back to each other. A laugh track played during this. It lasted for an uncomfortable amount of time. It was the kind of laughter that you think is about to die down, but then it kicks right back up again. Theres also that one lady whos cackling like a hyena having a tea party with a witch. You try to unhear her, but you just keep noticing her. Why do sitcoms think laugh tracks add anything to the show? It doesn't. That shit just doesnt sit right with me.</div>
<div>"Right?" The two laughed at that, looked at the camera for a moment, then back to each other. A laugh track played during this. It lasted for an uncomfortable amount of time. It was the kind of laughter that you think is about to die down, but then it kicks right back up again. There's also that one lady who's cackling like a hyena having a tea party with a witch. You try to unhear her, but you just keep noticing her. Why do sitcoms think laugh tracks add anything to the show? It doesn't. That shit just doesn't sit right with me.</div>
</body>
</html>
"},
@@ -139,20 +139,20 @@ CATEGORY: Fiction
<body>
<div>They continued to hike up the mountain. After a little while, they reached the temple. The door was guarded by two dog-men holding spears.</div>
<div>"Who are these guys?" Gadroc asked.</div>
<div>"Let me handle this," assured Carne. "Hows it going gentlemen?" The dog-men stepped closer and crossed their spears across the door.</div>
<div>"Listen boys, theres no need for the attitude," said the smith. The dog-men began to growl at him.</div>
<div>Carne frowned. "Hey now, thats just rude." The dog-men responded to this by shoulder-checking Carne, knocking him to the ground. Gadroc sighed and walked up to the armored, bipedal golden retriever.</div>
<div>"Whos a good boy?" Gadroc said as he began to scratch the dog behind his cutie ears. The dog-man turned his head into Gadrocs hand and began to pant.</div>
<div>Gadroc continued. "You are! Youre a good boy! Oh its you!" The dog barked as if to say, "YES IT IS ME, I AM THE GOOD BOY." The dog-man eventually got down on all fours, stomped around in a circle a bit, and promptly fell asleep. The other guard whimpered. He had felt that he had been a good boy too, and that he deserved scratchies just as much as his partner, if not more. He conveyed this to Gadroc in a single bark. Gadroc turned to him.</div>
<div>"Oh I know! Youve been a good boy too!" He pet the guard for a little bit, then pulled an ear of corn out of his pocket.</div>
<div>"Let me handle this," assured Carne. "How's it going gentlemen?" The dog-men stepped closer and crossed their spears across the door.</div>
<div>"Listen boys, there's no need for the attitude," said the smith. The dog-men began to growl at him.</div>
<div>Carne frowned. "Hey now, that's just rude." The dog-men responded to this by shoulder-checking Carne, knocking him to the ground. Gadroc sighed and walked up to the armored, bipedal golden retriever.</div>
<div>"Who's a good boy?" Gadroc said as he began to scratch the dog behind his cutie ears. The dog-man turned his head into Gadroc's hand and began to pant.</div>
<div>Gadroc continued. "You are! You're a good boy! Oh it's you!" The dog barked as if to say, "YES IT IS ME, I AM THE GOOD BOY." The dog-man eventually got down on all fours, stomped around in a circle a bit, and promptly fell asleep. The other guard whimpered. He had felt that he had been a good boy too, and that he deserved scratchies just as much as his partner, if not more. He conveyed this to Gadroc in a single bark. Gadroc turned to him.</div>
<div>"Oh I know! You've been a good boy too!" He pet the guard for a little bit, then pulled an ear of corn out of his pocket.</div>
<div>"You want a treat boy?" Gadroc asked, as he held up the corn. The dog nodded violently and made a couple of attempts to nibble on the corn, but Gadroc pulled it away before he could.</div>
<div>"Go get it!" shouted Gadroc as he threw the corn down the mountain. The dog guard threw his spear to the side as he bounded after the corn bouncing down the path. Certain the guard had made it out of sight, Gadroc went to help Carne up.</div>
<div>"Where did you learn to deal with Canine-sapiens like that?" Carne asked.</div>
<div>"Well, if you think about it, werewolves are technically part dog. Plus, I just know a good boy when I see one."</div>
<div>The two stepped through the doors of the temple. At the end of the long, church-like room was a marble altar on a platform, with a set of stairs leading up to it. On the altar sat a small, simple wooden box. From above, a light fell gently on the box, giving it a soft, almost holy glow. The stained glass windows at the back of the room were arranged in such a way that they almost seemed to be pointing at the box. Many different flowers were arranged on either side of the box and at the foot of the altar.</div>
<div>"Call it a hunch," Carne said slowly, "but I think those flowers might be important somehow. I just get that feeling, I couldnt tell you why."</div>
<div>"Its the box thats important, or whatever's in it," Gadroc said dryly. "The only thing that could make it more obvious is if a huge, luminescent sign dropped down with blinking arrows that read, Theres probably a magic artifact in this box." Just then, a huge luminescent sign with blinking arrows that read, "Theres probably a magic artifact in this box." dropped down. Gadroc pinched the bridge of his nose.</div>
<div>"Do you think there might be a secret compartment in the altar? I bet thats where the artifact is," pondered the smith.</div>
<div>"Call it a hunch," Carne said slowly, "but I think those flowers might be important somehow. I just get that feeling, I couldn't tell you why."</div>
<div>"It's the box that's important, or whatever's in it," Gadroc said dryly. "The only thing that could make it more obvious is if a huge, luminescent sign dropped down with blinking arrows that read, 'There's probably a magic artifact in this box.'" Just then, a huge luminescent sign with blinking arrows that read, "There's probably a magic artifact in this box." dropped down. Gadroc pinched the bridge of his nose.</div>
<div>"Do you think there might be a secret compartment in the altar? I bet that's where the artifact is," pondered the smith.</div>
</body>
</html>
"},
@@ -164,20 +164,20 @@ CATEGORY: Fiction
</style>
</head>
<body>
<div>"Welcome to the temple of Ivyechneyoveen Kahal, my children," came a voice.</div>
<div>"Who said that?" Gadroc asked. "So thats how its pronounced," mused Carne. A figure stepped out from behind a pillar. It was a robed dog-woman, an ancient St. Bernard.</div>
<div>"Welcome to the temple of Ivyechneyoveen Kah'al, my children," came a voice.</div>
<div>"Who said that?" Gadroc asked. "So that's how it's pronounced," mused Carne. A figure stepped out from behind a pillar. It was a robed dog-woman, an ancient St. Bernard.</div>
<div>The dog lady spoke again. "Have you come to give your thanks to Orcville?"</div>
<div>"Im sorry, who?" Gadroc asked, confused.</div>
<div>"I'm sorry, who?" Gadroc asked, confused.</div>
<div>"Yes, Orcville Redenbacher. He blessed the world with his glorious popcorn and saved our souls."</div>
<div>"Wait," interrupted Carne. "Then why is it called the temple of Itchyville Cable?"</div>
<div>"Ivyechneyoveen Kahal," corrected the priestess with a polite smile.</div>
<div>"Yeah, thats what I said."</div>
<div>"Id be glad to enlighten you, my child. It all started when..." The priestess lengthy explanation on the history and fine points of the religion of the dog people. It didnt make the slightest bit of sense, though Carne did have a bit of a chuckle at the part where Orcville defeated the demon lord who wouldn't stop pretending to throw a ball to go fetch and then never actually throw the ball. Gadroc nearly fell asleep on his feet. He decided not to take part in the theological discussion and turned his attention back to the box. He walked up to the altar platform and climbed the steps. Carefully he opened the two small, wooden doors on the front of the box. Words could not describe his excitement. Inside the box was...</div>
<div>"A hot dog?" Gadroc asked aloud. He was thoroughly baffled. Inside the box was a golden hot dog that sparkled in the light. He couldnt tell whether or not it had ketchup, mustard, or even relish on it; it was all gold.</div>
<div>"Ivyechneyoveen Kah'al," corrected the priestess with a polite smile.</div>
<div>"Yeah, that's what I said."</div>
<div>"I'd be glad to enlighten you, my child. It all started when..." The priestess lengthy explanation on the history and fine points of the religion of the dog people. It didn't make the slightest bit of sense, though Carne did have a bit of a chuckle at the part where Orcville defeated the demon lord who wouldn't stop pretending to throw a ball to go fetch and then never actually throw the ball. Gadroc nearly fell asleep on his feet. He decided not to take part in the theological discussion and turned his attention back to the box. He walked up to the altar platform and climbed the steps. Carefully he opened the two small, wooden doors on the front of the box. Words could not describe his excitement. Inside the box was...</div>
<div>"A hot dog?" Gadroc asked aloud. He was thoroughly baffled. Inside the box was a golden hot dog that sparkled in the light. He couldn't tell whether or not it had ketchup, mustard, or even relish on it; it was all gold.</div>
<div>"What are you doing with our sacred artifact?" shouted the dog priestess. Gadroc jumped, startled. He was too busy thinking about what gold tasted like.</div>
<div>"Uh... I need it... for... a friend," Gadroc lied, incredibly convincingly.</div>
<div>"Youd better not eat that because thats totally not how a magic artifact shaped like a hot dog would work!" screeched the priestess.</div>
<div>Gadroc looked again at the supposed cure to all his problems. It was right there in his hands! "Youre not my mom!" he shouted, and promptly shoved the entire hot dog in his mouth and made a break for the door. Carne seemed impressed.</div>
<div>"You'd better not eat that because that's totally not how a magic artifact shaped like a hot dog would work!" screeched the priestess.</div>
<div>Gadroc looked again at the supposed cure to all his problems. It was right there in his hands! "You're not my mom!" he shouted, and promptly shoved the entire hot dog in his mouth and made a break for the door. Carne seemed impressed.</div>
<div>"Damn," he said. "Wish I could run that fast after stuffing an entire hot dog in my mouth. Last time I did that I got a hernia." He turned to the dog priestess.</div>
<div>"So, uh... wanna go grab some popcorn later?" The priestess slapped him across the face. "Right. I'll get goin', then. Sorry about the hot dog. We'll make you a new one." Carne began to head in Gadroc's direction.</div>
</body>
@@ -192,12 +192,12 @@ CATEGORY: Fiction
</style>
</head>
<body>
<div>"Gadroc, where are you?" Carne shouted. "You can come out now, she didnt follow us." Gadroc looked around and slowly stepped out from behind a tree that didn't even come close to consealing him whatsoever.</div>
<div>"I... I dont know if it worked, Carne," the boy said nervously.</div>
<div>"Here," said the smith. He handed Gadroc a small, folded up piece of paper. Almost the exact moment Gadrocs fingers touched it, Carne leapt like an orc-lympic death hurdle sprinter and combat rolled to take cover behind a nearby fallen tree. Gadroc unfolded the paper, hands trembling. On it was a pin up of a real buff orc dude. His shirtless body was ripped and glistening with sweat. He held a wrench and his jeans were not tight around his waist. Another shot showed him crouched down in front of a sink, which was confusing because plumbing was not very popular yet. The orcs loose jeans were sagging down his pants, and they revealed the glowing, firm cheeks of his fine behind. A single tear rolled down Gadrocs face.</div>
<div>"Gadroc, where are you?" Carne shouted. "You can come out now, she didn't follow us." Gadroc looked around and slowly stepped out from behind a tree that didn't even come close to concealing him whatsoever.</div>
<div>"I... I don't know if it worked, Carne," the boy said nervously.</div>
<div>"Here," said the smith. He handed Gadroc a small, folded up piece of paper. Almost the exact moment Gadroc's fingers touched it, Carne leapt like an orc-lympic death hurdle sprinter and combat rolled to take cover behind a nearby fallen tree. Gadroc unfolded the paper, hands trembling. On it was a pin up of a real buff orc dude. His shirtless body was ripped and glistening with sweat. He held a wrench and his jeans were not tight around his waist. Another shot showed him crouched down in front of a sink, which was confusing because plumbing was not very popular yet. The orc's loose jeans were sagging down his pants, and they revealed the glowing, firm cheeks of his fine behind. A single tear rolled down Gadroc's face.</div>
<div>"Carne," he sniffed. "It worked." Carne came out from behind the log and wiped the sweat from his brow with a "Phew!"</div>
<div>"Its beautiful, Carne," Gadroc went on.</div>
<div>"Keep it, kid," the blacksmith said with a smile. "You need it more than I do. Lets go home."</div>
<div>"It's beautiful, Carne," Gadroc went on.</div>
<div>"Keep it, kid," the blacksmith said with a smile. "You need it more than I do. Let's go home."</div>
<div>Gadroc had gold poop for a week.</div>
<br>
<br>
@@ -44,7 +44,7 @@ Category: Non-Fiction
/obj/item/book/bundle/custom_library/nonfiction/viabilityofcorporategov
name = "The Viability of Corporate Government"
desc = "A harbound book titled \"The Viability of Corporate Government\" by Yang Simiao."
desc = "A hardbound book titled \"The Viability of Corporate Government\" by Yang Simiao."
description_info = "This book is titled \"The Viability of Corporate Government\" by Yang Simiao. It seems to be an opinion piece on the relationship between corporations and the stations they own."
title = "The Viability of Corporate Government"
@@ -49,7 +49,7 @@ CATEGORY: Reference
<br>
Phoron research and study is a vital subject of research -- it has been a pillar of humanity's progress, a staple of the technology that has shaped our society. To work on expanding our knowledge and shape our future in the cosmos is a noble cause, but it should be done with caution.
<br><br>
This is not to speak on safety in your lab, but the consequences of action. Many times has man created the unthinkable, and many times we have not been prepared for such discoveries. We should not censor ourselves from advancement, but we should shape the world to be ready for what comes with it and know that it is an invariable consequence there will be those who seek to abuse it.
This is not to speak on safety in your lab, but the consequences of action. Many times has man created the unthinkable, and many times we have not been prepared for such discoveries. We should not censor ourselves from advancement, but we should shape the world to be ready for what comes with it - and know that it is an invariable consequence there will be those who seek to abuse it.
<br><br>
You cannot take back what you give to the world.
</div>
@@ -310,7 +310,7 @@
name = "Neglect of Duty"
definition = "To fail to meet satisfactory work standards."
suggested_punishments = "Demotion at discretion of Superior. Termination at discretion of Station Director."
notes = "This includes accidents, refusing or failing to work, or simply not providing a resonable amount of productivity, when the offender is capable of work. This charge \
notes = "This includes accidents, refusing or failing to work, or simply not providing a reasonable amount of productivity, when the offender is capable of work. This charge \
is meant to be applied only by Command staff to their subordinates, and not from individual Security Officers."
/datum/lore/codex/page/law/deception
@@ -324,7 +324,7 @@
name = "Wrongful Dismissal"
definition = "To demote, dismiss, terminate, or otherwise reduce a crewmember's rank for no valid, or a knowingly false reason."
suggested_punishments = "Demotion. Termination at discretion of Station Director. Notify Central Command."
notes = "An Internal Affairs Agent is required to do an investigation in order to conclude if this has occured or not. Security cannot \
notes = "An Internal Affairs Agent is required to do an investigation in order to conclude if this has occurred or not. Security cannot \
give this charge out on their own."
mandated = TRUE
@@ -3,7 +3,7 @@
data = "This book is meant to act as a reference for both NanoTrasen regulations, Standard Operating Procedure, and important laws of both \
the Vir Governmental Authority and the Solar Confederate Government. The legal interactions between Nanotrasen corporate policy and VGA/SolGov \
law can make for some confusing legalese. This book was written by the Vir division of NanoTrasen in order for employees, visitors, and residents \
at NanoTrasen installations such as the Northen Star and the Southen Cross to know what isn't allowed, without needing to be a lawyer to read it.\
at NanoTrasen installations such as the Northern Star and the Southern Cross to know what isn't allowed, without needing to be a lawyer to read it.\
<br><br>\
In this book, there are two different types of rules. Corporate Regulations, and Laws. They each cover specific situations, and are both enforced \
by the Security team. Despite this, however, the punishments vary considerably for the two types. It should also be noted that no one is above \
@@ -27,7 +27,7 @@
data = "This book was written and published by NanoTrasen, for use on NanoTrasen installations from within the Vir system."
// Special page which will hopefully enforce consistant formatting.
// Special page which will hopefully enforce consistent formatting.
/datum/lore/codex/page/law
var/definition = null // Short definition of the law violation.
var/suggested_punishments = null
@@ -1,6 +1,6 @@
/datum/lore/codex/category/sif_law
name = "Vir Law"
data = "This section contains the abbreviated Vir Govermental Authority legal code's potential charges for crimes that are relevant to \
data = "This section contains the abbreviated Vir Governmental Authority legal code's potential charges for crimes that are relevant to \
the reader."
children = list(
/datum/lore/codex/page/legal_punishments,
@@ -20,7 +20,7 @@
/datum/lore/codex/category/law_minor_violations
name = "Minor Violations (Law)"
data = "Here is a list of the less severe violations of local Vir Law that might occur on your facility. A fax to the Vir Governmental Authority \
is required to be sent within 24 hours of a violation being comitted, for minor violations listed here."
is required to be sent within 24 hours of a violation being committed, for minor violations listed here."
children = list(
/datum/lore/codex/page/law/theft,
/datum/lore/codex/page/law/assault,
@@ -35,7 +35,7 @@
/datum/lore/codex/page/law/assault/add_content()
name = "Assault"
definition = "To threaten use of physical force against someone while also having the capability and/or intent to carry out that threat."
suggested_punishments = "Seperation of offender from the threatened person. Brig time of 10 minutes for first offense. \
suggested_punishments = "Separation of offender from the threatened person. Brig time of 10 minutes for first offense. \
Repeat offenders can be brigged for up to (10 minutes times number of previous assault charges). Demotion at discretion of Superior."
notes = "Not to be confused with [quick_link("Battery")], which covers actual physical injury. The threat must be viable and serious; \
two people threatening to punch each other out over comms wouldn't fall under this."
@@ -150,7 +150,7 @@
definition = "Stealing money that is entrusted to you by a corporation or person."
suggested_punishments = "Hold until Transfer. Termination. Reimbursement of embezzled funds. Fax Central Command and VirGov."
notes = "This includes funneling Departmental, Facility, or Crew funds into the offender's account. It also includes pocketing \
transactions directly that are meant to go to a seperate account."
transactions directly that are meant to go to a separate account."
mandated = TRUE
/datum/lore/codex/page/law/excessive_force/add_content()
@@ -158,7 +158,7 @@
definition = "Using more force than what is required to safely detain someone, using force against a helpless or incapacitated person, \
or using force against an unarmed and compliant person."
suggested_punishments = "Demotion. Termination at discretion of Superior, or Station Director. Send notice to Central Command if a Head of Security had used excessive force."
notes = "This charge also is applicible to non-Security personnel acting in self defense. \
notes = "This charge also is applicable to non-Security personnel acting in self defense. \
Persons whom have caused a person to die as a result of excessive force should have [quick_link("Manslaughter")] applied instead, if the circumstances were \
unjustified."
..()
@@ -168,7 +168,7 @@
definition = "To kill a sapient being without intent."
suggested_punishments = "Hold until Transfer, if unjustified. Fax VirGov."
notes = "Includes provoked manslaughter, negligent manslaughter, and impassioned killing. The important distinction between this \
and [quick_link("Murder")] is intent. Manslaughter can be justified if force was nessecary and it was intented to prevent further loss of life or \
and [quick_link("Murder")] is intent. Manslaughter can be justified if force was necessary and it was intended to prevent further loss of life or \
grievous injury to self or others, however persons involved in the kill will still be required to answer to higher legal authority \
after the shift."
mandated = TRUE
+18 -18
View File
@@ -27,7 +27,7 @@
All crew members and visitors, with exceptions listed below, are to wear the following at minimum: A shirt that covers the chest, pants, shorts or skirts that \
go no shorter than two inches above the knee, and some form of foot covering. Those in departments considered to be emergency services (Security, \
Medical, Engineering) should wear a marker denoting their department, examples being armbands, uniforms, badges, or other means. Those in a department \
are expected to wear clothes appropiate to protect against common risks for the department. Off duty personnel, visitors, and those engaging in certain recreational \
are expected to wear clothes appropriate to protect against common risks for the department. Off duty personnel, visitors, and those engaging in certain recreational \
areas such as the Pool (if one is available on your facility) have less strict dresscode, however clothing of some form must still be worn in public.\
<br><br>\
Exceptions: Skrell, Teshari, and Unathi are expected to cover at minimum their lower bodies. Tajaran males may go topless, as a means to keep cool. \
@@ -41,11 +41,11 @@
less risk to other crew members, if possible.\
<br>\
<h3>EVA Procedure</h3>\
Extravehicular activity should only be done by EVA trained and certified crew members, if there is no emergency. If an emergency is occuring, NanoTrasen \
Extravehicular activity should only be done by EVA trained and certified crew members, if there is no emergency. If an emergency is occurring, NanoTrasen \
provides high visibility, easy to seal emergency softsuits inside blue emergency lockers located at key locations inside your facility. Regardless, \
for your own safety, you should only enter or exit the facility from designated external airlocks, which contain an air cycling system. It is both \
wasteful and potentially dangerous to 'force' an external airlock to open before cycling has completed. Before cycling out into the void, the person going \
on EVA should double check that their internal oxygen supply (or cooling system, if they are a synthetic) is functioning properly and that they have an adaquate \
on EVA should double check that their internal oxygen supply (or cooling system, if they are a synthetic) is functioning properly and that they have an adequate \
amount of oxygen inside the tank. Magnetic boots are also highly suggested if the person will be scaling the sides of your facility, to prevent drifting away \
from the facility.\
<br><br>\
@@ -80,7 +80,7 @@
<h3>Demotion</h3>\
A member of the Command Crew may call for the demotion of any member of their department for disregarding safety protocol, disobeying orders with serious consequences, \
or other gross incompetence. Certain infractions necessitate that a guilty crew member receive a demotion. Demotion is to be performed by the Head of Personnel, or the \
Station Director, as soon as possible. The demoted crewmember is to be present during the demotion, unless it is caused by a criminal sentence. If said crewmemeber \
Station Director, as soon as possible. The demoted crewmember is to be present during the demotion, unless it is caused by a criminal sentence. If said crewmember \
refuses to comply with a demotion order, Security is to escort them to the Head of Personnel's office.\
<br>\
Any demoted crewmember must return all equipment and non-personal items to their previous department, including departmental jumpsuits and radios. If a demoted \
@@ -102,7 +102,7 @@
<h3>Command Crew Demotions</h3>\
If a member of the Command crew is suspected to be incompetent, or in breach of SOP, the Station Director has discretion to demote the guilty Command crewmember. \
If there is no Station Director, or the Station Director themselves is guilty, they may be demoted after a vote of no confidence by the remaining Command crew \
and relevant station crew. For the Station Director, the vote is only to be among the remaining Command crew. Misuse of this privilage may warrant an \
and relevant station crew. For the Station Director, the vote is only to be among the remaining Command crew. Misuse of this privilege may warrant an \
Internal Affairs investigation for wrongful dismissal.\
<br>\
<h3>Communications with Central Command</h3>\
@@ -125,7 +125,7 @@
<h3>Engine Safety</h3>\
Your facility's engine is what provides the majority of electricity to the rest of your facility. As such, the engine is to have priority over \
all other engineering issues, including breaches, if an issue with the engine exists. This book assumes your facility is using one or more thermoelectric engines \
(generally referred to as TEGs), driven by a Supermatter crystal. If this is not the case, please consult the documentation for your specific engine for safety precauctions.\
(generally referred to as TEGs), driven by a Supermatter crystal. If this is not the case, please consult the documentation for your specific engine for safety precautions.\
<br>\
The Supermatter crystal is what presents the most danger to a crewmember. The Supermatter is to remain isolated inside the engine room, inside \
its own chamber, for several reasons. First, Supermatter reacts poorly to oxygen, harming the crystal and causing heat. Second, <b>the crystal \
@@ -160,7 +160,7 @@
was damaged. As such, cosmetic details should be done last. Breach repairs always have priority over construction projects.\
<br>\
<h3>Delamination</h3>\
The Supermatter is volatile, and can undergo the process of 'delamination' if sufficently damaged. To help warn against this, all Supermatter crystals \
The Supermatter is volatile, and can undergo the process of 'delamination' if sufficiently damaged. To help warn against this, all Supermatter crystals \
come with a small monitoring microcontroller, which will warn the Engineering department if the Supermatter is being damaged. Damage can result from \
excessive heat, vacuum exposure, or physical impacts. If the Supermatter achieves delamination, it will cause a massive explosion, deliver a \
massive dose of radiation to everyone in or near your facility, and may cause hallucinations. Delamination prevention should be prioritized above \
@@ -203,7 +203,7 @@
<h3>Cloning Procedure</h3>\
Persons whom have committed suicide are not to be cloned. Individuals are also to not be cloned if there is a Do Not Clone (generally referred \
to as DNC) order in their medical records, or if the individual has had a DNC order declared against them by the Station Director, Chief \
Medical Officer, or Head of Security. If any of this occurs, procede to Portmortem Storage.\
Medical Officer, or Head of Security. If any of this occurs, proceed to Portmortem Storage.\
<br>\
Some individuals may have special instructions in their Postmortem Instructions, generally found in their medical records. \
Be sure to read them before committing to cloning someone. In particular, some instructions may express a desire to be placed \
@@ -214,12 +214,12 @@
<br>\
Ensure that all cloning equipment, including the cryogenic tubes, are functional and ready before cloning begins. Once \
this is done, scan the deceased. Up to three scans are to be made per attempt. If the deceased suffers Mental Interface Failure, \
procede to Postmortem Storage. Further attempts at resuscitation may be made at later times, at the medical teams' discretion. \
proceed to Postmortem Storage. Further attempts at resuscitation may be made at later times, at the medical teams' discretion. \
<br>\
If the deceased is sufficently scanned, remove their possessions and clothing off of the deceased body, for use by the future new clone. \
If the deceased is sufficiently scanned, remove their possessions and clothing off of the deceased body, for use by the future new clone. \
Move the cadaver into the morgue, as per Postmortem Storage. Begin the cloning process. Possessions are to be gathered in a manner that \
facilitates transporting them along with the clone. Upon the cloning process being complete and the new clone being created, the \
clone is to be placed inside a croygenic tube as quickly as possible. Cloning is not a painless experience, and it is best if \
clone is to be placed inside a cryogenic tube as quickly as possible. Cloning is not a painless experience, and it is best if \
the patient reawakens inside a functional body. Once their body is fully functional, dress and process the newly cloned patient, \
informing them of any procedures performed on them, including the cloning itself.\
<br>\
@@ -250,18 +250,18 @@
a specific specimen is completely harmless and safe.\
<br>\
<h3>Toxins Safety</h3>\
Toxins potentially has the greatest capability to harm the experimentor as well as their co-workers, so always be vigilent. \
Toxins potentially has the greatest capability to harm the experimenter as well as their co-workers, so always be vigilant. \
The incinerator is designed to withstand phoron fires, however extremely hot fires can cause damage to the incinerator. \
The experimentor and anyone inside the Toxins section should wear protective clothing while the incinerator is active, and \
The experimenter and anyone inside the Toxins section should wear protective clothing while the incinerator is active, and \
<b>the incinerator should NEVER be left unattended while in use.</b> If damage to the walls of the incinerator are observed, \
the chamber should be vented into space immediately, to abort the burn, then vacating the lab until the flames are extinguished.\
<br>\
Another danger of Toxins is that the experimentor will be handling explosives at some point, in order to test on the \
Another danger of Toxins is that the experimenter will be handling explosives at some point, in order to test on the \
Toxins Testing Range. <b>Explosives are to be tested at the Testing Range, and absolutely no where else.</b> \
When placing an explosive on the mass driver to fire to the Testing Range, the experimentor should triple check that their \
When placing an explosive on the mass driver to fire to the Testing Range, the experimenter should triple check that their \
explosive's signaler frequency and code is unique (if using a signaler). <b>Verify that the signaler's frequency and code do not match multiple \
explosives.</b> Check for any signs of life near the Testing Range before detonation, and warn the facility that an Toxins Test will be \
occuring shortly, as otherwise it may scare the crew and may endanger anyone near the Testing Range.\
occurring shortly, as otherwise it may scare the crew and may endanger anyone near the Testing Range.\
<br>\
<h3>Robotics</h3>\
Robotics exists to service the facility's synthetics, crewmembers with prosthetics, create and maintain exosuits, and create and \
@@ -269,7 +269,7 @@
<br>\
Cyborgification, the process of an organic person's brain being transplanted into a Man-Machine-Interface (MMI), should only be done to \
a person upon their death, and if their medical records state a desire to be placed inside a synthetic body instead of a desire to be cloned. \
Persons who have commited suicide, or persons who have Do-Not-Clone (DNC) orders which don't specifically list cyborgification as an alternative are \
Persons who have committed suicide, or persons who have Do-Not-Clone (DNC) orders which don't specifically list cyborgification as an alternative are \
not to be placed inside an MMI. Still-living persons who wish to be placed inside an MMI should be ignored.\
<br>\
Lawbound Synthetics are to not have their lawset tampered with. Any errors with the lawset, intentional or resulting from an ionic storm, should \
@@ -314,7 +314,7 @@
<br>\
<h3>Locations</h3>\
Secure areas are recommended to be left unbolted, which includes the AI Upload, Secure Technical Storage, and the Teleporter(s). The Vault should remain sealed. \
Heads of Staff may enter the AI Upload alone, although they must have sufficent justification. \
Heads of Staff may enter the AI Upload alone, although they must have sufficient justification. \
<br>\
<h3>Crew</h3>\
Crew members and visitors may freely walk in the hallways and other public areas. Suit sensors are recommended, but not mandatory. \
@@ -32,7 +32,7 @@
The Chief Medical Officer is fully responsible if they choose to clone a person whom has committed suicide. \
Individuals are also to not be cloned if there is a Do Not Clone (generally referred to as DNC) order in their medical records, \
or if the individual has had a DNC order declared against them by the Station Director, Chief Medical Officer, or Head of Security. \
If any of this occurs, procede to Portmortem Storage.\
If any of this occurs, proceed to Portmortem Storage.\
<br><br>\
Some individuals may have special instructions in their Postmortem Instructions, generally found in their medical records. \
Be sure to read them before committing to cloning someone. In particular, some instructions may express a desire to be placed \
@@ -43,12 +43,12 @@
<br><br>\
Ensure that all cloning equipment, including the cryogenic tubes, are functional and ready before cloning begins. Once \
this is done, scan the deceased. Up to three scans are to be made per attempt. If the deceased suffers Mental Interface Failure, \
procede to Postmortem Storage. Further attempts at resuscitation may be made at later times, at the medical teams' discretion. \
proceed to Postmortem Storage. Further attempts at resuscitation may be made at later times, at the medical teams' discretion. \
<br><br>\
If the deceased is sufficently scanned, remove their possessions and clothing off of the deceased body, for use by the future new clone. \
If the deceased is sufficiently scanned, remove their possessions and clothing off of the deceased body, for use by the future new clone. \
Move the cadaver into the morgue, as per Postmortem Storage. Begin the cloning process. Possessions are to be gathered in a manner that \
facilitates transporting them along with the clone. Upon the cloning process being complete and the new clone being created, the \
clone is to be placed inside a croygenic tube as quickly as possible. Cloning is not a painless experience, and it is best if \
clone is to be placed inside a cryogenic tube as quickly as possible. Cloning is not a painless experience, and it is best if \
the patient reawakens inside a functional body. Once their body is fully functional, dress and process the newly cloned patient, \
informing them of any procedures performed on them, including the cloning itself."
@@ -94,7 +94,7 @@
Weaponry and specialized armor are allowed to be given out to security officers, with clearance from the Warden or Head of Security.\
<br>\
For Red, Security may have weapons drawn at all times, however properly handling of weapons should not be disregarded. Body armor and \
helmets are mandatory. Specialized armor may be distributed by the Warden and Head of Security, when appropiate."
helmets are mandatory. Specialized armor may be distributed by the Warden and Head of Security, when appropriate."
/datum/lore/codex/page/sop_escalation
name = "Escalation of Force"
@@ -102,7 +102,7 @@
<br>\
<ul>\
<li>\[0\] <b>Safety</b>: If a crewmember (including the Arresting Officer) is in clear and immediate danger, officers may disregard steps \[1\] and \[2\], \
and procede to \[3\] Neutralize.</li>\
and proceed to \[3\] Neutralize.</li>\
<li>\[1\] <b>Passive</b>: Suspects are to be detailed verbally, with zero or minimal injury, and under their own power, if possible. At this level for \
force, an Officer is permitted to use tasers, pepperspray, flashes, and stunbatons.</li>\
<li>\[2\] <b>Less-than-Lethal</b>: Suspect may be detained with minimal force, causing as little injury as possible. The Arresting Officer must still \
+5 -5
View File
@@ -859,7 +859,7 @@
name = "10/26/63 - 'Largest Engagement Since The Hegemony War' As Gavel Freed"
data = "The Almach Association invasion force in the Gavel system has been all but annihilated by a successful Solar counter-encirclement, at great cost to both sides. The combined Rim Expeditionary Force in Saint Columbia, along with the newly formed Gavel Relief Fleet - which had been massing in the Vir system over the past week - launched the successful attack this Tuesday evening, leaving no route of escape for Almachi invaders and resulting in 'pitched fighting' between the fleets that lasted several days. Solar forces are currently in the process of performing security sweeps of the system and its scattered habitats and it is expected to be several weeks before the system is declared safe to civilian traffic and for refugees to return home.\
<br><br>\
Even as exact causalities remain unconfirmed, the battle has made history as the single largest ship-to-ship engagement by tonnage involving the Sol military since the cessation of hostilities with the Unathi in 2520, involving over one hundred vessels of all sizes across both sides, as well as countless unmanned drones and light craft. Almachi forces, in numbers described as 'far from an insignificant portion of the total fleet' fought fiercely, and 'in manners more reminiscent of mercenary gangs than a single organized force, and with tactics varying from the conventional to the outright mystifying'. Admiral Silvain Barka has commended his own crew for applying lessons learnt from prior 'Aetothean' commando strikes in preventing similar incidents from occuring in the confusion of battle; in a candid interview this morning he stated 'Like any Promethean, (Aetotheans) hate the cold, and my crew are the coldest (expletive) around.' \
Even as exact causalities remain unconfirmed, the battle has made history as the single largest ship-to-ship engagement by tonnage involving the Sol military since the cessation of hostilities with the Unathi in 2520, involving over one hundred vessels of all sizes across both sides, as well as countless unmanned drones and light craft. Almachi forces, in numbers described as 'far from an insignificant portion of the total fleet' fought fiercely, and 'in manners more reminiscent of mercenary gangs than a single organized force, and with tactics varying from the conventional to the outright mystifying'. Admiral Silvain Barka has commended his own crew for applying lessons learnt from prior 'Aetothean' commando strikes in preventing similar incidents from occurring in the confusion of battle; in a candid interview this morning he stated 'Like any Promethean, (Aetotheans) hate the cold, and my crew are the coldest (expletive) around.' \
<br><br>\
The designations of twenty-four Sol Defense Vessels declared 'lost in action' have not yet been released, though next of kin of missing or deceased servicepeople have reportedly been notified."
@@ -1017,7 +1017,7 @@
<br><br>\
Damage to the three stations has been relatively light, with one major exception. A large fire broke out in the Capitol Section of Carter, killing at least 22, including former President Fischer, and wounding at least 74 more. Other casualties among rioters, police, and the populations of the stations are unknown at this point.\
<br><br>\
Other stations with significant permanent populations have been paralyzed by local inaction and the disloyalty of local police and security forces to the Far Kindgoms Skrell, and several with no Skrell presence have issued statements that they will not be accepting any military presence from the Far Kingdoms. It is unclear at this point if this represents the beginning of another major conflict within the system."
Other stations with significant permanent populations have been paralyzed by local inaction and the disloyalty of local police and security forces to the Far Kingdoms Skrell, and several with no Skrell presence have issued statements that they will not be accepting any military presence from the Far Kingdoms. It is unclear at this point if this represents the beginning of another major conflict within the system."
/datum/lore/codex/page/article87
name = "04/30/64 - Meralar Correspondent: Triumphant Return!"
@@ -1075,7 +1075,7 @@
name = "09/24/64 - Kaleidoscope Announce Exclusive Almach Deal"
data = "Mere days after the announcement of the reopening of Almachi-Solar trade, the Kaleidoscope Cosmetics corporation has confirmed that they have secured 'exclusive rights' to genetic products produced by several major manufacturers in the Angessa's Pearl system formerly owned by The Exalt - the insular mercurial theocracy of Exalt's Light - and recently handed over to the Almach Protectorate Government.\
<br><br>\
The details of the company's trade agreement have not been made public, but have reportedly already been approved by both the APG and SCG. The promptness of the agreement suggests to some that negotitations had been underway well before the announcement of the Protectorate's passing grade. Though cooperation between trans-stellar interests and government entities is far from unusual, such dealings with foreign governments - such as those widely made as 'open secrets' with Eutopia - are considered distasteful by many within the Icarus Front.\
The details of the company's trade agreement have not been made public, but have reportedly already been approved by both the APG and SCG. The promptness of the agreement suggests to some that negotiations had been underway well before the announcement of the Protectorate's passing grade. Though cooperation between trans-stellar interests and government entities is far from unusual, such dealings with foreign governments - such as those widely made as 'open secrets' with Eutopia - are considered distasteful by many within the Icarus Front.\
<br><br>\
The Angessan products Kaleidoscope intends to offer have also not been made public, but are all to be thoroughly screened by the Transgressive Technologies Commission before being made available, though 'failing' proposals may be approved for use exclusively within Protectorate territory."
@@ -1091,7 +1091,7 @@
<br><br>\
The XIV Sri Chamarajendra with crew of 32, and IIV Reimarus with 9 are both reported to have lost contact with the system's spaceport while undertaking far-orbit salvage operations on decommissioned and abandoned facilities, including the ILS Harvest Moon which detonated with all hands earlier this year. The disappearances have spurred the system government to request greater anti-piracy support from the SCG, which has been much reduced since the Almach War and increased tensions on the Hegemony border.\
<br><br>\
While Proximal to the independent and often 'lawless' Eutopia system, as well as the Rarkajar Rift, infamous prowl of the human-tajaran Jaguar Gang, the Isavau's System has rarely been a direct target for such large-scale apparent hijackings, and no group has yet claimed credit or demanded ransom."
While Proximal to the independent and often 'lawless' Eutopia system, as well as the Rarkajar Rift, infamous prowl of the human-Tajaran Jaguar Gang, the Isavau's System has rarely been a direct target for such large-scale apparent hijackings, and no group has yet claimed credit or demanded ransom."
/datum/lore/codex/page/article95
name = "12/27/64 - NanoTrasen Accused In Satisfaction Poll Fixing"
@@ -1304,7 +1304,7 @@
The shocking condition of the SCG Fleet has been attributed to a decade of conflict, with the devastating Skathari Incursion following immediately from the costly Almach War, and a spate of defections and territorial concessions. Critics have noted that the report 'brushes over' local Defense Force vessel contributions that were re-assigned to regional militaries and is 'deliberately vague' as to how such ships were accounted for. In 2571, CIDR issued a similar damning report to the Five Arrows, spurring a multi-trillion thaler economy-transforming shipbuilding campaign within the newly independent nation."
/datum/lore/codex/page/article117
name = "01/18/75 - Key NanoTrasen Facilities to Recieve Dedicated Union Office"
name = "01/18/75 - Key NanoTrasen Facilities to Receive Dedicated Union Office"
data = "Several major NanoTrasen corporate facilities throughout the Golden Crescent region are to introduce dedicated union representative positions later this year, according to company spokesperson Valeria Lawless. The scheme is intended to 'better represent the unique needs of individual locations', and builds upon the earlier NanoTrasen Employee Representation Committee pilot scheme that was scrapped following facility closures during the Skathari Incursion.\
<br><br>\
Elaborating on the program, Valeria Lawless explained that 'Our new union structure improves upon positive results we observed in South America, Earth during the NERC scheme, where we found that smaller test groups reported more positive results. By reducing the scope of each union representative's supervision to a single facility, we hope we can better understand the individual needs of individual employees, and clear the muddied waters that arise when representatives with totally different needs are unable to come to an agreement. Under this new program, employees will be granted greater freedom to determine policy and regulation on a per-location basis without the need to consult with other representatives. After all, expecting the needs of employees from say, a mineral processing plant to align with those from a state-of-the-art medical facility, is simply unrealistic and often simply sets unproductive expectations for all involved.'\
@@ -77,7 +77,7 @@
/datum/lore/codex/page/robo_veymed //the deed is done
name = "Vey-Medical"
data = "The most advanced humanoid prosthetic on the market, Vey-Med prides itself on its highly realistic synthskin, near-seamlessly integrated with the most sensitive tactile suite yet created (aside from that of Bishop, with whom they have a long-running friendly rivalry). Vey-Med seeks to be indistinguishable from a human body by both outside observers and by the patient themself, a point at which it succeeds handily.\
data = "The most advanced humanoid prosthetic on the market, Vey-Med prides itself on its highly realistic synthskin, near-seamlessly integrated with the most sensitive tactile suite yet created (aside from that of Bishop, with whom they have a long-running friendly rivalry). Vey-Med seeks to be indistinguishable from a human body by both outside observers and by the patient themselves, a point at which it succeeds handily.\
The main downside to Vey-Med is its incredibly high pricetag-- easily comparable with that of a large house. Every Vey-Med piece is custom-sculpted for its individual owner, usually based on scans of the owner's previous body or the owner's family. Vey-Med also requires regular maintenance, lest the partially-organic synthskin that coats each piece begin to rot.\
Many nouveau riche and lottery winners have splurged on a Vey-Med chassis, only to discover that they couldn't keep it maintained. Such individuals contribute to the large and semi-legal market of second, third, and fourth-hand Vey-Med chasses, which are cheaper than a store-bought one, but not by very much. Vey-Medical forbids resale of its prosthetics line, and works hard to shut down illicit sales. Potential buyers of a pre-owned Vey-Medical chassis should avoid deals that seem too good to be true, lest they discover that their new body is a Zeng-Hu with a layer of epoxy.\
<br><br>\
@@ -1,6 +1,6 @@
/datum/lore/codex/category/main_robutts // The top-level categories for the robot guide
name = "Index"
data = "Temporary death, emancipation, and even basic body migration can be a stressful period in anyone's life. The prosthetics market is complicated, and many corporations view misleading or outright decieving potential clients as \"part of the game\". This Buyer's Guide was compiled in 2542 to serve as an easy reference to the most popular prosthetics available, with consideration paid to every use-case and price point. This is our 12th edition, and much has changed in the field of prosthetics since we first set out. We hope you find the information in this guide helpful."
data = "Temporary death, emancipation, and even basic body migration can be a stressful period in anyone's life. The prosthetics market is complicated, and many corporations view misleading or outright deceiving potential clients as \"part of the game\". This Buyer's Guide was compiled in 2542 to serve as an easy reference to the most popular prosthetics available, with consideration paid to every use-case and price point. This is our 12th edition, and much has changed in the field of prosthetics since we first set out. We hope you find the information in this guide helpful."
children = list(
/datum/lore/codex/category/pros_by_brand,
/datum/lore/codex/category/other_information,
+1 -1
View File
@@ -29,6 +29,6 @@
name = "Kitbashing"
data = "Different corporations' prosthetics are not designed to be slotted together.\
There are exceptions: most industrial brands utilize a shared standard set of connectors, and of course there are Unbranded models that play well with any and all parts.\
Nonetheless, attempting to splice together parts across these lines runs into a variety of technical problems. Most common are sensory and motor cross-wirings, leading to synthesia, uncontrollable jitters, and occasional paralysis. These are uncomfortable enough that most amateur bodymodders give up after one too many hallucinations. Certain combinations of parts run into structural issues-- putting a Hephestus torso on a pair of Morpheus legs is likely to deform those legs badly. Any cross-design kitbashing is likely to result in some level of structural instabilty and poor balance without hard work being put into the design.\
Nonetheless, attempting to splice together parts across these lines runs into a variety of technical problems. Most common are sensory and motor cross-wirings, leading to synthesia, uncontrollable jitters, and occasional paralysis. These are uncomfortable enough that most amateur bodymodders give up after one too many hallucinations. Certain combinations of parts run into structural issues-- putting a Hephaestus torso on a pair of Morpheus legs is likely to deform those legs badly. Any cross-design kitbashing is likely to result in some level of structural instability and poor balance without hard work being put into the design.\
<br><br>\
Most of these can be addressed by a talented roboticist, but nonetheless most people tend to stick to a single brand of prosthetics. People who see their body's makeup as a means of self-expression, or as a machine to be optimized, are much more likely to take risks in pursuit of these goals."
+1 -1
View File
@@ -84,7 +84,7 @@ var/global/use_preloader = FALSE
if(!key_len)
key_len = length(key)
else
throw EXCEPTION("Inconsistant key length in DMM")
throw EXCEPTION("Inconsistent key length in DMM")
if(!measureOnly)
grid_models[key] = dmmRegex.group[2]
+5 -5
View File
@@ -1,7 +1,7 @@
var/global/list/total_extraction_beacons = list()
/obj/item/extraction_pack
name = "fulton extraction pack"
name = "Fulton extraction pack"
desc = "A balloon that can be used to extract equipment or personnel to a Fulton Recovery Beacon. Anything not bolted down can be moved. Link the pack to a beacon by using the pack in hand."
icon = 'icons/obj/fulton.dmi'
icon_state = "extraction_pack"
@@ -140,7 +140,7 @@ var/global/list/total_extraction_beacons = list()
/obj/item/fulton_core
name = "extraction beacon signaller"
desc = "Emits a signal which fulton recovery devices can lock onto. Activate in hand to create a beacon."
desc = "Emits a signal which Fulton recovery devices can lock onto. Activate in hand to create a beacon."
icon = 'icons/obj/stock_parts.dmi'
icon_state = "subspace_amplifier"
@@ -152,8 +152,8 @@ var/global/list/total_extraction_beacons = list()
qdel(src)
/obj/structure/extraction_point
name = "fulton recovery beacon"
desc = "A beacon for the fulton recovery system. Activate a pack in your hand to link it to a beacon."
name = "Fulton recovery beacon"
desc = "A beacon for the Fulton recovery system. Activate a pack in your hand to link it to a beacon."
icon = 'icons/obj/fulton.dmi'
icon_state = "extraction_point"
anchored = TRUE
@@ -171,7 +171,7 @@ var/global/list/total_extraction_beacons = list()
/obj/effect/extraction_holder
name = "extraction holder"
desc = "you shouldnt see this"
desc = "you shouldn't see this"
var/atom/movable/stored_obj
/obj/item/extraction_pack/proc/check_for_living_mobs(atom/A)
@@ -148,7 +148,7 @@
flick(icon_deny, src)
return
if(prize.cost > inserted_id.mining_points)
to_chat(usr, "<span class='warning'>Error: Insufficent points for [prize.equipment_name]!</span>")
to_chat(usr, "<span class='warning'>Error: Insufficient points for [prize.equipment_name]!</span>")
flick(icon_deny, src)
else
inserted_id.mining_points -= prize.cost

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