Whitespace cleanup part 3. (#19897)

* Whitespace cleanup part 3.

* clean up mecha a lot, other review fixes
This commit is contained in:
warriorstar-orion
2022-12-27 11:00:39 -05:00
committed by GitHub
parent f86374a504
commit 066bd06e8d
81 changed files with 1049 additions and 939 deletions
+5 -4
View File
@@ -283,10 +283,11 @@ SUBSYSTEM_DEF(air)
/datum/controller/subsystem/air/proc/add_to_active(turf/simulated/T, blockchanges = 1)
if(!initialized)
/* it makes no sense to "activate" turfs before setup_allturfs is
called, as setup_allturfs would simply cull the list incorrectly.
only /turf/simulated/Initialize_Atmos() is blessed enough to
activate turfs during this phase of initialization, as it happens
post-cull and inlines the logic (perhaps incorrectly) */
* called, as setup_allturfs would simply cull the list incorrectly.
* only /turf/simulated/Initialize_Atmos() is blessed enough to
* activate turfs during this phase of initialization, as it happens
* post-cull and inlines the logic (perhaps incorrectly)
**/
return
if(istype(T) && T.air)
+2 -2
View File
@@ -7,7 +7,7 @@ SUBSYSTEM_DEF(events)
// Report events at the end of the rouund
var/report_at_round_end = 0
// UI vars
// UI vars
var/window_x = 700
var/window_y = 600
var/table_options = " align='center'"
@@ -16,7 +16,7 @@ SUBSYSTEM_DEF(events)
var/row_options2 = " width='260px'"
var/row_options3 = " width='150px'"
// Event vars
// Event vars
var/datum/event_container/selected_event_container = null
var/list/active_events = list()
var/list/finished_events = list()
+27 -27
View File
@@ -1,37 +1,37 @@
SUBSYSTEM_DEF(npcpool)
name = "NPC Pool"
flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_BACKGROUND
priority = FIRE_PRIORITY_NPC
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
offline_implications = "Simple animals will no longer process. Shuttle call recommended."
name = "NPC Pool"
flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_BACKGROUND
priority = FIRE_PRIORITY_NPC
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
offline_implications = "Simple animals will no longer process. Shuttle call recommended."
var/list/currentrun = list()
var/list/currentrun = list()
/datum/controller/subsystem/npcpool/get_stat_details()
return "SimpleAnimals: [length(GLOB.simple_animals[AI_ON])]"
return "SimpleAnimals: [length(GLOB.simple_animals[AI_ON])]"
/datum/controller/subsystem/npcpool/fire(resumed = FALSE)
if(!resumed)
var/list/activelist = GLOB.simple_animals[AI_ON]
src.currentrun = activelist.Copy()
if(!resumed)
var/list/activelist = GLOB.simple_animals[AI_ON]
src.currentrun = activelist.Copy()
var/list/currentrun = src.currentrun
var/list/currentrun = src.currentrun
while(currentrun.len)
var/mob/living/simple_animal/SA = currentrun[currentrun.len]
--currentrun.len
if(!SA)
log_debug("npcpool encountered an invalid entry, resumed: [resumed], SA [SA], type of SA [SA?.type], null [SA == null], qdelled [QDELETED(SA)], SA in AI_ON list: [SA in GLOB.simple_animals[AI_ON]]")
GLOB.simple_animals[AI_ON] -= SA
continue
while(currentrun.len)
var/mob/living/simple_animal/SA = currentrun[currentrun.len]
--currentrun.len
if(!SA)
log_debug("npcpool encountered an invalid entry, resumed: [resumed], SA [SA], type of SA [SA?.type], null [SA == null], qdelled [QDELETED(SA)], SA in AI_ON list: [SA in GLOB.simple_animals[AI_ON]]")
GLOB.simple_animals[AI_ON] -= SA
continue
if(!SA.ckey && !SA.notransform)
if(SA.stat != DEAD)
SA.handle_automated_movement()
if(SA.stat != DEAD)
SA.handle_automated_action()
if(SA.stat != DEAD)
SA.handle_automated_speech()
if(MC_TICK_CHECK)
return
if(!SA.ckey && !SA.notransform)
if(SA.stat != DEAD)
SA.handle_automated_movement()
if(SA.stat != DEAD)
SA.handle_automated_action()
if(SA.stat != DEAD)
SA.handle_automated_speech()
if(MC_TICK_CHECK)
return
@@ -1,9 +1,9 @@
GLOBAL_REAL(SSmentor_tickets, /datum/controller/subsystem/tickets/mentor_tickets)
/datum/controller/subsystem/tickets/mentor_tickets/New()
NEW_SS_GLOBAL(SSmentor_tickets)
PreInit()
ss_id = "mentor_tickets"
NEW_SS_GLOBAL(SSmentor_tickets)
PreInit()
ss_id = "mentor_tickets"
/datum/controller/subsystem/tickets/mentor_tickets
name = "Mentor Tickets"
@@ -566,7 +566,7 @@ UI STUFF
* msg - The message being send
* alt - If an alternative prefix should be used or not. Defaults to TICKET_STAFF_MESSAGE_PREFIX
* important - If the message is important. If TRUE it will ignore the CHAT_NO_TICKETLOGS preferences,
send a sound and flash the window. Defaults to FALSE
* send a sound and flash the window. Defaults to FALSE
*/
/datum/controller/subsystem/tickets/proc/message_staff(msg, prefix_type = TICKET_STAFF_MESSAGE_PREFIX, important = FALSE)
switch(prefix_type)
+7 -7
View File
@@ -79,10 +79,10 @@ SUBSYSTEM_DEF(weather)
next_hit_by_zlevel["[z]"] = null
/datum/controller/subsystem/weather/proc/get_weather(z, area/active_area)
var/datum/weather/A
for(var/V in processing)
var/datum/weather/W = V
if((z in W.impacted_z_levels) && W.area_type == active_area)
A = W
break
return A
var/datum/weather/A
for(var/V in processing)
var/datum/weather/W = V
if((z in W.impacted_z_levels) && W.area_type == active_area)
A = W
break
return A
+1 -1
View File
@@ -402,7 +402,7 @@
name = "Activate"
/datum/action/item_action/hands_free/activate/always
check_flags = null
check_flags = null
/datum/action/item_action/toggle_research_scanner
name = "Toggle Research Scanner"
+3 -3
View File
@@ -1,9 +1,9 @@
#define ARMORID "armor-[melee]-[bullet]-[laser]-[energy]-[bomb]-[bio]-[rad]-[fire]-[acid]-[magic]"
/proc/getArmor(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0)
. = locate(ARMORID)
if (!.)
. = new /datum/armor(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic)
. = locate(ARMORID)
if (!.)
. = new /datum/armor(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic)
/datum/armor
var/melee
+2 -2
View File
@@ -361,8 +361,8 @@ GLOBAL_LIST_INIT(advance_cures, list(
var/datum/disease/advance/D2 = pick(diseases)
D2.Mix(D1)
// Should be only 1 entry left, but if not let's only return a single entry
// to_chat(world, "END MIXING!!!!!")
// Should be only 1 entry left, but if not let's only return a single entry
// to_chat(world, "END MIXING!!!!!")
var/datum/disease/advance/to_return = pick(diseases)
to_return.Refresh(1)
return to_return
+5 -5
View File
@@ -28,11 +28,11 @@
/datum/news_announcement/revolution_inciting_event/human_experiments
round_time = 60*90
message = {"Unbelievable reports about human experimentation have reached our ears. According
to a refugee from one of the Tau Ceti Research Stations, their station, in order
to increase revenue, has refactored several of their facilities to perform experiments
on live humans, including virology research, genetic manipulation, and \"feeding them
to the slimes to see what happens\". Allegedly, these test subjects were neither
humanified monkeys nor volunteers, but rather unqualified staff that were forced into
to a refugee from one of the Tau Ceti Research Stations, their station, in order
to increase revenue, has refactored several of their facilities to perform experiments
on live humans, including virology research, genetic manipulation, and \"feeding them
to the slimes to see what happens\". Allegedly, these test subjects were neither
humanified monkeys nor volunteers, but rather unqualified staff that were forced into
the experiments, and reported to have died in a \"work accident\" by Nanotrasen Inc."}
author = "Unauthorized"
+1 -1
View File
@@ -9,7 +9,7 @@
* * items are objects. Fruits, tools, circuit boards.
* * result is type to create as new object
* * time is optional parameter, you shall use in in your machine,
default /datum/recipe/ procs does not rely on this parameter.
* default /datum/recipe/ procs does not rely on this parameter.
*
* Functions you need:
* /datum/recipe/proc/make(var/obj/container as obj)
+1 -1
View File
@@ -25,7 +25,7 @@
spawn()
A.throw_at(get_edge_target_turf(H, pick(GLOB.alldirs)), rand(1, 10), 5)
H.visible_message("<span class='danger'>[H]'s [A.name] flies out of their body in a magical explosion!</span>",\
"<span class='danger'>Your [A.name] flies out of your body in a magical explosion!</span>")
"<span class='danger'>Your [A.name] flies out of your body in a magical explosion!</span>")
H.Weaken(4 SECONDS)
else
var/obj/effect/decal/cleanable/blood/gibs/G = new/obj/effect/decal/cleanable/blood/gibs(get_turf(H))
+8 -8
View File
@@ -537,10 +537,10 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/dangerous/powerfist
name = "Power Fist"
desc = "The power-fist is a metal gauntlet with a built-in piston-ram powered by an external gas supply.\
Upon hitting a target, the piston-ram will extend foward to make contact for some serious damage. \
Using a wrench on the piston valve will allow you to tweak the amount of gas used per punch to \
deal extra damage and hit targets further. Use a screwdriver to take out any attached tanks."
desc = "The power-fist is a metal gauntlet with a built-in piston-ram powered by an external gas supply. \
Upon hitting a target, the piston-ram will extend foward to make contact for some serious damage. \
Using a wrench on the piston valve will allow you to tweak the amount of gas used per punch to \
deal extra damage and hit targets further. Use a screwdriver to take out any attached tanks."
reference = "PF"
item = /obj/item/melee/powerfist
cost = 8
@@ -905,9 +905,9 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/stealthy_weapons/cameraflash
name = "Camera Flash"
desc = "A flash disguised as a camera with a self-charging safety system preventing the flash from burning out.\
Due to its design, this flash cannot be overcharged like regular flashes can.\
Useful for stunning borgs and individuals without eye protection or blinding a crowd for a get away."
desc = "A flash disguised as a camera with a self-charging safety system preventing the flash from burning out. \
Due to its design, this flash cannot be overcharged like regular flashes can. \
Useful for stunning borgs and individuals without eye protection or blinding a crowd for a get away."
reference = "CF"
item = /obj/item/flash/cameraflash
cost = 1
@@ -915,7 +915,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/stealthy_weapons/throwingweapons
name = "Box of Throwing Weapons"
desc = "A box of shurikens and reinforced bolas from ancient Earth martial arts. They are highly effective \
throwing weapons. The bolas can knock a target down and the shurikens will embed into limbs."
throwing weapons. The bolas can knock a target down and the shurikens will embed into limbs."
reference = "STK"
item = /obj/item/storage/box/syndie_kit/throwing_weapons
cost = 3
+2 -2
View File
@@ -162,7 +162,7 @@
holder.add_hiddenprint(user)
switch(action)
// Toggles the cut/mend status.
// Toggles the cut/mend status.
if("cut")
if(!istype(I, /obj/item/wirecutters) && !user.can_admin_interact())
to_chat(user, "<span class='error'>You need wirecutters!</span>")
@@ -188,7 +188,7 @@
return TRUE
// Attach a signaler to a wire.
// Attach a signaler to a wire.
if("attach")
if(is_attached(color))
var/obj/item/O = detach_assembly(color)
+6 -6
View File
@@ -565,16 +565,16 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
//STATION13
/area/atmos
name = "Atmospherics"
icon_state = "atmos"
name = "Atmospherics"
icon_state = "atmos"
/area/atmos/control
name = "Atmospherics Control Room"
icon_state = "atmosctrl"
name = "Atmospherics Control Room"
icon_state = "atmosctrl"
/area/atmos/distribution
name = "Atmospherics Distribution Loop"
icon_state = "atmos"
name = "Atmospherics Distribution Loop"
icon_state = "atmos"
//Maintenance
/area/maintenance
+1 -1
View File
@@ -1168,7 +1168,7 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
/** Call this when you want to present a renaming prompt to the user.
It's a simple proc, but handles annoying edge cases such as forgetting to add a "cancel" button,
It's a simple proc, but handles annoying edge cases such as forgetting to add a "cancel" button,
or being able to rename stuff remotely.
Arguments:
+4 -4
View File
@@ -134,9 +134,9 @@
go_out(user, force)
for(var/obj/O in src)
if(!istype(O,/obj/item/circuitboard/clonescanner) && \
!istype(O,/obj/item/stock_parts) && \
!istype(O,/obj/item/stack/cable_coil) && \
O != beaker)
!istype(O,/obj/item/stock_parts) && \
!istype(O,/obj/item/stack/cable_coil) && \
O != beaker)
O.forceMove(get_turf(src))//Ejects items that manage to get in there (exluding the components and beaker)
if(!occupant)
for(var/mob/M in src)//Failsafe so you can get mobs out
@@ -262,7 +262,7 @@
return
for(var/obj/thing in contents) // in case there is something in the scanner
thing.forceMove(loc)
default_deconstruction_crowbar(user, I)
default_deconstruction_crowbar(user, I)
/obj/machinery/dna_scannernew/screwdriver_act(mob/user, obj/item/I)
if(occupant)
+5 -5
View File
@@ -184,7 +184,7 @@
if(owner.holy_check())
return
owner.visible_message("<span class='warning'>[owner]'s body flashes a bright blue!</span>", \
"<span class='cultitalic'>You speak the cursed words, channeling an electromagnetic pulse from your body.</span>")
"<span class='cultitalic'>You speak the cursed words, channeling an electromagnetic pulse from your body.</span>")
owner.emp_act(2)
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(empulse), owner, 2, 5, TRUE, "cult")
owner.whisper(invocation)
@@ -219,13 +219,13 @@
/datum/action/innate/cult/blood_spell/dagger/Activate()
var/turf/T = get_turf(owner)
owner.visible_message("<span class='warning'>[owner]'s hand glows red for a moment.</span>", \
"<span class='cultitalic'>Red light begins to shimmer and take form within your hand!</span>")
"<span class='cultitalic'>Red light begins to shimmer and take form within your hand!</span>")
var/obj/item/melee/cultblade/dagger/O = new(T)
if(owner.put_in_hands(O))
to_chat(owner, "<span class='warning'>A [O.name] appears in your hand!</span>")
else
owner.visible_message("<span class='warning'>A [O.name] appears at [owner]'s feet!</span>", \
"<span class='cultitalic'>A [O.name] materializes at your feet.</span>")
"<span class='cultitalic'>A [O.name] materializes at your feet.</span>")
playsound(owner, 'sound/magic/cult_spell.ogg', 25, TRUE)
charges--
desc = base_desc
@@ -444,7 +444,7 @@
var/obj/item/nullrod/N = locate() in target
if(N)
target.visible_message("<span class='warning'>[target]'s holy weapon absorbs the red light!</span>", \
"<span class='userdanger'>Your holy weapon absorbs the blinding light!</span>")
"<span class='userdanger'>Your holy weapon absorbs the blinding light!</span>")
else
to_chat(user, "<span class='cultitalic'>In a brilliant flash of red, [L] falls to the ground!</span>")
@@ -810,7 +810,7 @@
user.Beam(H, icon_state = "drainbeam", time = 10)
playsound(get_turf(H), 'sound/misc/enter_blood.ogg', 50)
H.visible_message("<span class='danger'>[user] has drained some of [H]'s blood!</span>",
"<span class='userdanger'>[user] has drained some of your blood!</span>")
"<span class='userdanger'>[user] has drained some of your blood!</span>")
to_chat(user, "<span class='cultitalic'>Your blood rite gains 50 charges from draining [H]'s blood.</span>")
new /obj/effect/temp_visual/cult/sparks(get_turf(H))
else
+1 -1
View File
@@ -39,7 +39,7 @@
user.Weaken(10 SECONDS)
user.unEquip(src, 1)
user.visible_message("<span class='warning'>A powerful force shoves [user] away from [target]!</span>",
"<span class='cultlarge'>\"You shouldn't play with sharp things. You'll poke someone's eye out.\"</span>")
"<span class='cultlarge'>\"You shouldn't play with sharp things. You'll poke someone's eye out.\"</span>")
if(ishuman(user))
var/mob/living/carbon/human/H = user
H.apply_damage(rand(force/2, force), BRUTE, pick("l_arm", "r_arm"))
+1 -1
View File
@@ -186,7 +186,7 @@
return
user.visible_message("<span class='warning'>[user] creates a strange circle in [user.p_their()] own blood.</span>",
"<span class='cultitalic'>You finish drawing the arcane markings of [SSticker.cultdat.entity_title3].</span>")
"<span class='cultitalic'>You finish drawing the arcane markings of [SSticker.cultdat.entity_title3].</span>")
var/obj/effect/rune/R = new rune(runeturf, keyword)
if(narsie_rune)
+3 -3
View File
@@ -638,7 +638,7 @@ structure_check() searches for nearby cultist structures required for the invoca
SEND_SOUND(mob_to_revive, sound('sound/ambience/antag/bloodcult.ogg'))
to_chat(mob_to_revive, "<span class='cultlarge'>\"PASNAR SAVRAE YAM'TOTH. Arise.\"</span>")
mob_to_revive.visible_message("<span class='warning'>[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes.</span>", \
"<span class='cultlarge'>You awaken suddenly from the void. You're alive!</span>")
"<span class='cultlarge'>You awaken suddenly from the void. You're alive!</span>")
rune_in_use = FALSE
/obj/effect/rune/raise_dead/proc/validness_checks(mob/living/target_mob, mob/living/user)
@@ -745,7 +745,7 @@ structure_check() searches for nearby cultist structures required for the invoca
return
cultist_to_summon.visible_message("<span class='warning'>[cultist_to_summon] suddenly disappears in a flash of red light!</span>", \
"<span class='cultitalic'><b>Overwhelming vertigo consumes you as you are hurled through the air!</b></span>")
"<span class='cultitalic'><b>Overwhelming vertigo consumes you as you are hurled through the air!</b></span>")
..()
INVOKE_ASYNC(src, PROC_REF(teleport_effect), cultist_to_summon, get_turf(cultist_to_summon), src)
visible_message("<span class='warning'>[src] begins to bubble and rises into the form of [cultist_to_summon]!</span>")
@@ -948,7 +948,7 @@ structure_check() searches for nearby cultist structures required for the invoca
ghosts--
if(new_human)
new_human.visible_message("<span class='warning'>[new_human] suddenly dissolves into bones and ashes.</span>",
"<span class='cultlarge'>Your link to the world fades. Your form breaks apart.</span>")
"<span class='cultlarge'>Your link to the world fades. Your form breaks apart.</span>")
for(var/obj/item/I in new_human.get_all_slots())
new_human.unEquip(I)
SSticker.mode.remove_cultist(new_human.mind, FALSE)
@@ -117,6 +117,6 @@
. = 1
/mob/living/simple_animal/hostile/guardian/beam/death(gibbed)
if(summoner)
REMOVE_TRAIT(summoner, TRAIT_SHOCKIMMUNE, "guardian")
return ..()
if(summoner)
REMOVE_TRAIT(summoner, TRAIT_SHOCKIMMUNE, "guardian")
return ..()
@@ -3,7 +3,7 @@
/obj/effect/proc_holder/spell/morph_spell/ambush
name = "Prepare Ambush"
desc = "Prepare an ambush. Dealing significantly more damage on the first hit and you will weaken the target. Only works while morphed. If the target tries to use you with their hands then you will do even more damage. \
Keeping still for another 15 seconds will perfect your disguise."
Keeping still for another 15 seconds will perfect your disguise."
action_icon_state = "morph_ambush"
base_cooldown = 8 SECONDS
@@ -336,19 +336,19 @@
/datum/objective/revenantFluff/New()
var/list/explanationTexts = list("Assist and exacerbate existing threats at critical moments.", \
"Cause as much chaos and anger as you can without being killed.", \
"Damage and render as much of the station rusted and unusable as possible.", \
"Disable and cause malfunctions in as many machines as possible.", \
"Ensure that any holy weapons are rendered unusable.", \
"Hinder the crew while attempting to avoid being noticed.", \
"Make the crew as miserable as possible.", \
"Make the clown as miserable as possible.", \
"Make the captain as miserable as possible.", \
"Make the AI as miserable as possible.", \
"Annoy the ones that insult you the most.", \
"Whisper ghost jokes into peoples heads.", \
"Help the crew in critical situations, but take your payments in souls.", \
"Prevent the use of energy weapons where possible.")
"Cause as much chaos and anger as you can without being killed.", \
"Damage and render as much of the station rusted and unusable as possible.", \
"Disable and cause malfunctions in as many machines as possible.", \
"Ensure that any holy weapons are rendered unusable.", \
"Hinder the crew while attempting to avoid being noticed.", \
"Make the crew as miserable as possible.", \
"Make the clown as miserable as possible.", \
"Make the captain as miserable as possible.", \
"Make the AI as miserable as possible.", \
"Annoy the ones that insult you the most.", \
"Whisper ghost jokes into peoples heads.", \
"Help the crew in critical situations, but take your payments in souls.", \
"Prevent the use of energy weapons where possible.")
explanation_text = pick(explanationTexts)
..()
@@ -381,7 +381,7 @@
if(!reforming || inert)
return ..()
user.visible_message("<span class='notice'>[user] scatters [src] in all directions.</span>", \
"<span class='notice'>You scatter [src] across the area. The particles slowly fade away.</span>")
"<span class='notice'>You scatter [src] across the area. The particles slowly fade away.</span>")
user.drop_item()
qdel(src)
@@ -86,7 +86,7 @@
to_chat(src, "<span class='revenboldnotice'>The perfection of [target]'s soul has increased your maximum essence level. Your new maximum essence is [essence_regen_cap].</span>")
to_chat(src, "<span class='revennotice'>[target]'s soul has been considerably weakened and will yield no more essence for the time being.</span>")
target.visible_message("<span class='warning'>[target] slumps onto the ground.</span>", \
"<span class='revenwarning'>Violets lights, dancing in your vision, getting clo--</span>")
"<span class='revenwarning'>Violets lights, dancing in your vision, getting clo--</span>")
drained_mobs.Add(mob_UID)
add_attack_logs(src, target, "revenant harvested soul")
target.death()
@@ -96,7 +96,7 @@
essence_drained = 0
if(target) //Wait, target is WHERE NOW?
target.visible_message("<span class='warning'>[target] slumps onto the ground.</span>", \
"<span class='revenwarning'>Violets lights, dancing in your vision, receding--</span>")
"<span class='revenwarning'>Violets lights, dancing in your vision, receding--</span>")
return
else
to_chat(src, "<span class='revenwarning'>You are not close enough to siphon [target ? "[target]'s":"their"] soul. The link has been broken.</span>")
@@ -256,13 +256,13 @@
/obj/item/organ/internal/heart/demon/attack_self(mob/living/user)
user.visible_message("<span class='warning'>[user] raises [src] to [user.p_their()] mouth and tears into it with [user.p_their()] teeth!</span>", \
"<span class='danger'>An unnatural hunger consumes you. You raise [src] to your mouth and devour it!</span>")
"<span class='danger'>An unnatural hunger consumes you. You raise [src] to your mouth and devour it!</span>")
playsound(user, 'sound/misc/demon_consume.ogg', 50, 1)
// Eating the heart for the first time. Gives basic bloodcrawling. This is the only time we need to insert the heart.
if(!HAS_TRAIT(user, TRAIT_BLOODCRAWL))
user.visible_message("<span class='warning'>[user]'s eyes flare a deep crimson!</span>", \
"<span class='userdanger'>You feel a strange power seep into your body... you have absorbed the demon's blood-travelling powers!</span>")
"<span class='userdanger'>You feel a strange power seep into your body... you have absorbed the demon's blood-travelling powers!</span>")
ADD_TRAIT(user, TRAIT_BLOODCRAWL, "bloodcrawl")
user.drop_item()
insert(user) //Consuming the heart literally replaces your heart with a demon heart. H A R D C O R E.
@@ -363,15 +363,15 @@
if(target && target.current)
targetname = target.current.real_name
var/list/explanationTexts = list("Spread blood all over the bridge.", \
"Spread blood all over the brig.", \
"Spread blood all over the chapel.", \
"Kill or Destroy all Janitors or Sanitation bots.", \
"Spare a few after striking them... make them bleed before the harvest.", \
"Hunt those that try to hunt you first.", \
"Hunt those that run away from you in fear", \
"Show [targetname] the power of blood.", \
"Drive [targetname] insane with demonic whispering."
)
"Spread blood all over the brig.", \
"Spread blood all over the chapel.", \
"Kill or Destroy all Janitors or Sanitation bots.", \
"Spare a few after striking them... make them bleed before the harvest.", \
"Hunt those that try to hunt you first.", \
"Hunt those that run away from you in fear", \
"Show [targetname] the power of blood.", \
"Drive [targetname] insane with demonic whispering."
)
explanation_text = pick(explanationTexts)
..()
@@ -57,7 +57,7 @@
S.challenge = TRUE
S.challenge_time = world.time
// No. of player - Min. Player to dec, divided by player per bonus, then multipled by TC per bonus. Rounded.
// No. of player - Min. Player to dec, divided by player per bonus, then multipled by TC per bonus. Rounded.
total_tc = CHALLENGE_TELECRYSTALS + round((((GLOB.player_list.len - CHALLENGE_MIN_PLAYERS)/CHALLENGE_SCALE_PLAYER) * CHALLENGE_SCALE_BONUS))
share_telecrystals()
SSshuttle.refuel_delay = CHALLENGE_SHUTTLE_DELAY
+1 -1
View File
@@ -433,7 +433,7 @@ GLOBAL_VAR(bomb_set)
INVOKE_ASYNC(src, PROC_REF(explode))
return
//if no boom then we need to let the blob capture our nuke
//if no boom then we need to let the blob capture our nuke
var/turf/T = get_turf(src)
if(!T)
return
+13 -13
View File
@@ -790,21 +790,21 @@
dat += {"
<head>
<style type="text/css">
body { font-size: 80%; font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif; }
ul#tabs { list-style-type: none; margin: 10px 0 0 0; padding: 0 0 0.6em 0; }
ul#tabs li { display: inline; }
ul#tabs li a { color: #42454a; background-color: #dedbde; border: 1px solid #c9c3ba; border-bottom: none; padding: 0.6em; text-decoration: none; }
ul#tabs li a:hover { background-color: #f1f0ee; }
ul#tabs li a.selected { color: #000; background-color: #f1f0ee; border-bottom: 1px solid #f1f0ee; font-weight: bold; padding: 0.6em 0.6em 0.6em 0.6em; }
body { font-size: 80%; font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif; }
ul#tabs { list-style-type: none; margin: 10px 0 0 0; padding: 0 0 0.6em 0; }
ul#tabs li { display: inline; }
ul#tabs li a { color: #42454a; background-color: #dedbde; border: 1px solid #c9c3ba; border-bottom: none; padding: 0.6em; text-decoration: none; }
ul#tabs li a:hover { background-color: #f1f0ee; }
ul#tabs li a.selected { color: #000; background-color: #f1f0ee; border-bottom: 1px solid #f1f0ee; font-weight: bold; padding: 0.6em 0.6em 0.6em 0.6em; }
ul#maintabs { list-style-type: none; margin: 30px 0 0 0; padding: 0 0 1em 0; font-size: 14px; }
ul#maintabs li { display: inline; }
ul#maintabs li a { color: #42454a; background-color: #dedbde; border: 1px solid #c9c3ba; padding: 1em; text-decoration: none; }
ul#maintabs li a:hover { background-color: #f1f0ee; }
ul#maintabs li a.selected { color: #000; background-color: #f1f0ee; font-weight: bold; padding: 1.4em 1.2em 1em 1.2em; }
div.tabContent { border: 1px solid #c9c3ba; padding: 0.5em; background-color: #f1f0ee; }
div.tabContent.hide { display: none; }
</style>
</head>
ul#maintabs li a { color: #42454a; background-color: #dedbde; border: 1px solid #c9c3ba; padding: 1em; text-decoration: none; }
ul#maintabs li a:hover { background-color: #f1f0ee; }
ul#maintabs li a.selected { color: #000; background-color: #f1f0ee; font-weight: bold; padding: 1.4em 1.2em 1em 1.2em; }
div.tabContent { border: 1px solid #c9c3ba; padding: 0.5em; background-color: #f1f0ee; }
div.tabContent.hide { display: none; }
</style>
</head>
"}
dat += {"[content]</body></html>"}
return dat
+1 -1
View File
@@ -79,7 +79,7 @@
</i>Provides His Grace, an Ancient Jumpsuit, an Assistant ID, a Gas Mask and Shoes, Insulated Gloves, a full Toolbelt, Ethereal Jaunt, Force Wall, Knock and No Clothes.<i>"
log_name = "GT"
items_path = list(/obj/item/his_grace, /obj/item/clothing/under/color/grey/glorf, /obj/item/clothing/mask/gas, /obj/item/clothing/shoes/black, \
/obj/item/clothing/gloves/color/yellow, /obj/item/storage/belt/utility/full/multitool)
/obj/item/clothing/gloves/color/yellow, /obj/item/storage/belt/utility/full/multitool)
spells_path = list(/obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/forcewall, \
/obj/effect/proc_holder/spell/aoe/knock, /obj/effect/proc_holder/spell/noclothes)
category = "Unique"
+6 -6
View File
@@ -11,13 +11,13 @@
req_admin_notify = 1
department_account_access = TRUE
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
minimal_player_age = 21
exp_map = list(EXP_TYPE_ENGINEERING = 1200)
outfit = /datum/outfit/job/chief_engineer
+6 -6
View File
@@ -11,13 +11,13 @@
req_admin_notify = 1
department_account_access = TRUE
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT,
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
minimal_access = list(ACCESS_EVA, ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT,
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
minimal_player_age = 21
exp_map = list(EXP_TYPE_SECURITY = 1200)
disabilities_allowed = 0
+31 -31
View File
@@ -71,17 +71,17 @@
department_account_access = TRUE
exp_map = list(EXP_TYPE_COMMAND = 1200)
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS,
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS,
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
outfit = /datum/outfit/job/hop
important_information = "This role requires you to coordinate a department. You are required to be familiar with Standard Operating Procedure (Service), basic job duties, and act professionally (roleplay)."
@@ -119,17 +119,17 @@
minimal_player_age = 21
exp_map = list(EXP_TYPE_COMMAND = 3000) // 50 hours baby
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS,
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_NTREP)
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_NTREP)
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS,
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_NTREP)
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_NTREP)
outfit = /datum/outfit/job/nanotrasenrep
important_information = "This role requires you to advise the Command team about Standard Operating Procedure, Chain of Command, and report to Central Command about various matters. You are required to act in a manner befitting someone representing Nanotrasen."
@@ -166,13 +166,13 @@
minimal_player_age = 21
exp_map = list(EXP_TYPE_COMMAND = 3000) // 50 hours baby
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS,
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_BLUESHIELD)
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_BLUESHIELD)
minimal_access = list(ACCESS_FORENSICS_LOCKERS, ACCESS_SEC_DOORS, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_ENGINE, ACCESS_MAINT_TUNNELS, ACCESS_RESEARCH,
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_HEADS, ACCESS_BLUESHIELD, ACCESS_WEAPONS)
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_HEADS, ACCESS_BLUESHIELD, ACCESS_WEAPONS)
outfit = /datum/outfit/job/blueshield
important_information = "This role requires you to ensure the safety of the Heads of Staff, not the general crew. You may perform arrests only if the combatant is directly threatening a member of Command, the Nanotrasen Representative, or the Magistrate."
@@ -212,11 +212,11 @@
minimal_player_age = 30
exp_map = list(EXP_TYPE_SECURITY = 6000) // 100 hours baby
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_FORENSICS_LOCKERS,
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAGISTRATE)
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAGISTRATE)
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_LAWYER, ACCESS_MAGISTRATE, ACCESS_HEADS)
outfit = /datum/outfit/job/judge
important_information = "This role requires you to oversee legal matters and make important decisions about sentencing. You are required to have an extensive knowledge of Space Law and Security SOP and only operate within, not outside, the boundaries of the law."
+1 -8
View File
@@ -234,13 +234,6 @@ GLOBAL_LIST_INIT(cloner_biomass_items, list(\
if(!G)
return 0
/*
if(clonemind.damnation_type) //Can't clone the damned.
playsound('sound/hallucinations/veryfar_noise.ogg', 50, 0)
malfunction()
return -1 // so that the record gets flushed out
*/
if(biomass >= CLONE_BIOMASS)
biomass -= CLONE_BIOMASS
else
@@ -332,7 +325,7 @@ GLOBAL_LIST_INIT(cloner_biomass_items, list(\
else if(occupant.cloneloss > (100 - heal_level))
occupant.Paralyse(8 SECONDS)
//Slowly get that clone healed and finished.
//Slowly get that clone healed and finished.
occupant.adjustCloneLoss(-((speed_coeff/2)))
// For human species that lack non-vital parts for some weird reason
+8 -8
View File
@@ -296,14 +296,14 @@
var/event = null
var/list/settlers = list("Harry","Larry","Bob")
var/list/events = list(ORION_TRAIL_RAIDERS = 3,
ORION_TRAIL_FLUX = 1,
ORION_TRAIL_ILLNESS = 3,
ORION_TRAIL_BREAKDOWN = 2,
ORION_TRAIL_LING = 3,
ORION_TRAIL_MALFUNCTION = 2,
ORION_TRAIL_COLLISION = 1,
ORION_TRAIL_SPACEPORT = 2
)
ORION_TRAIL_FLUX = 1,
ORION_TRAIL_ILLNESS = 3,
ORION_TRAIL_BREAKDOWN = 2,
ORION_TRAIL_LING = 3,
ORION_TRAIL_MALFUNCTION = 2,
ORION_TRAIL_COLLISION = 1,
ORION_TRAIL_SPACEPORT = 2
)
var/list/stops = list()
var/list/stopblurbs = list()
var/lings_aboard = 0
+19 -19
View File
@@ -1,27 +1,27 @@
/obj/machinery/computer/brigcells
name = "cell management computer"
desc = "Used to manage prison cells."
icon_keyboard = "security_key"
icon_screen = "cell_monitor"
use_power = IDLE_POWER_USE
idle_power_usage = 250
active_power_usage = 500
circuit = /obj/item/circuitboard/brigcells
light_color = LIGHT_COLOR_DARKRED
req_access = list(ACCESS_BRIG)
name = "cell management computer"
desc = "Used to manage prison cells."
icon_keyboard = "security_key"
icon_screen = "cell_monitor"
use_power = IDLE_POWER_USE
idle_power_usage = 250
active_power_usage = 500
circuit = /obj/item/circuitboard/brigcells
light_color = LIGHT_COLOR_DARKRED
req_access = list(ACCESS_BRIG)
/obj/machinery/computer/brigcells/attack_ai(mob/user)
attack_hand(user)
ui_interact(user)
attack_hand(user)
ui_interact(user)
/obj/machinery/computer/brigcells/attack_hand(mob/user)
add_fingerprint(user)
if(stat & (BROKEN|NOPOWER))
return
if(!allowed(user))
to_chat(user, "<span class='warning'>Access denied.</span>")
return
ui_interact(user)
add_fingerprint(user)
if(stat & (BROKEN|NOPOWER))
return
if(!allowed(user))
to_chat(user, "<span class='warning'>Access denied.</span>")
return
ui_interact(user)
/obj/machinery/computer/brigcells/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = TRUE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+2 -2
View File
@@ -18,8 +18,8 @@
GLOB.prisoncomputer_list += src
/obj/machinery/computer/prisoner/Destroy()
GLOB.prisoncomputer_list -= src
return ..()
GLOB.prisoncomputer_list -= src
return ..()
/obj/machinery/computer/prisoner/attackby(obj/item/O, mob/user, params)
var/datum/ui_login/state = ui_login_get()
+1 -1
View File
@@ -410,7 +410,7 @@
M.stand_up()
else
M.lay_down()
time--
time--
/obj/machinery/disco/proc/dance5(mob/living/M)
animate(M, transform = matrix(180, MATRIX_ROTATE), time = 1, loop = 0)
+1 -1
View File
@@ -1175,7 +1175,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
beingcrowbarred = TRUE
if(beingcrowbarred && panel_open && (emagged || (density && welded && !operating && !arePowerSystemsOn() && !locked)))
user.visible_message("[user] removes the electronics from the airlock assembly.", \
"<span class='notice'>You start to remove electronics from the airlock assembly...</span>")
"<span class='notice'>You start to remove electronics from the airlock assembly...</span>")
if(I.use_tool(src, user, 40, volume = I.tool_volume))
deconstruct(TRUE, user)
return
+18 -18
View File
@@ -141,7 +141,7 @@
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
user.visible_message("<span class='notice'>[user] [boltslocked ? "unlocks" : "locks"] [src]'s bolts.</span>", \
"<span class='notice'>You [boltslocked ? "unlock" : "lock"] [src]'s floor bolts.</span>")
"<span class='notice'>You [boltslocked ? "unlock" : "lock"] [src]'s floor bolts.</span>")
boltslocked = !boltslocked
/obj/machinery/door/firedoor/wrench_act(mob/user, obj/item/I)
@@ -156,7 +156,7 @@
to_chat(user, "<span class='notice'>There are screws locking the bolts in place!</span>")
return
user.visible_message("<span class='notice'>[user] starts undoing [src]'s bolts...</span>", \
"<span class='notice'>You start unfastening [src]'s floor bolts...</span>")
"<span class='notice'>You start unfastening [src]'s floor bolts...</span>")
if(!I.use_tool(src, user, 50, volume = I.tool_volume) || boltslocked)
return
user.visible_message("<span class='notice'>[user] unfastens [src]'s bolts.</span>", \
@@ -379,13 +379,13 @@
to_chat(user, "<span class='warning'>You need more plasteel to reinforce [src].</span>")
return
user.visible_message("<span class='notice'>[user] begins reinforcing [src]...</span>", \
"<span class='notice'>You begin reinforcing [src]...</span>")
"<span class='notice'>You begin reinforcing [src]...</span>")
playsound(get_turf(src), C.usesound, 50, 1)
if(do_after(user, 60 * C.toolspeed, target = src))
if(constructionStep != CONSTRUCTION_PANEL_OPEN || reinforced || P.get_amount() < 2 || !P)
return
user.visible_message("<span class='notice'>[user] reinforces [src].</span>", \
"<span class='notice'>You reinforce [src].</span>")
"<span class='notice'>You reinforce [src].</span>")
playsound(get_turf(src), C.usesound, 50, 1)
P.use(2)
reinforced = 1
@@ -397,13 +397,13 @@
to_chat(user, "<span class='warning'>You need more wires to add wiring to [src].</span>")
return
user.visible_message("<span class='notice'>[user] begins wiring [src]...</span>", \
"<span class='notice'>You begin adding wires to [src]...</span>")
"<span class='notice'>You begin adding wires to [src]...</span>")
playsound(get_turf(src), B.usesound, 50, 1)
if(do_after(user, 60 * B.toolspeed, target = src))
if(constructionStep != CONSTRUCTION_GUTTED || B.get_amount() < 5 || !B)
return
user.visible_message("<span class='notice'>[user] adds wires to [src].</span>", \
"<span class='notice'>You wire [src].</span>")
"<span class='notice'>You wire [src].</span>")
playsound(get_turf(src), B.usesound, 50, 1)
B.use(5)
constructionStep = CONSTRUCTION_WIRES_EXPOSED
@@ -412,7 +412,7 @@
if(CONSTRUCTION_NOCIRCUIT)
if(istype(C, /obj/item/firelock_electronics))
user.visible_message("<span class='notice'>[user] starts adding [C] to [src]...</span>", \
"<span class='notice'>You begin adding a circuit board to [src]...</span>")
"<span class='notice'>You begin adding a circuit board to [src]...</span>")
playsound(get_turf(src), C.usesound, 50, 1)
if(!do_after(user, 40 * C.toolspeed, target = src))
return
@@ -421,7 +421,7 @@
user.drop_item()
qdel(C)
user.visible_message("<span class='notice'>[user] adds a circuit to [src].</span>", \
"<span class='notice'>You insert and secure [C].</span>")
"<span class='notice'>You insert and secure [C].</span>")
playsound(get_turf(src), C.usesound, 50, 1)
constructionStep = CONSTRUCTION_GUTTED
update_icon()
@@ -436,33 +436,33 @@
return
if(constructionStep == CONSTRUCTION_WIRES_EXPOSED)
user.visible_message("<span class='notice'>[user] starts prying a metal plate into [src]...</span>", \
"<span class='notice'>You begin prying the cover plate back onto [src]...</span>")
"<span class='notice'>You begin prying the cover plate back onto [src]...</span>")
if(!I.use_tool(src, user, 50, volume = I.tool_volume))
return
if(constructionStep != CONSTRUCTION_WIRES_EXPOSED)
return
user.visible_message("<span class='notice'>[user] pries the metal plate into [src].</span>", \
"<span class='notice'>You pry [src]'s cover plate into place, hiding the wires.</span>")
"<span class='notice'>You pry [src]'s cover plate into place, hiding the wires.</span>")
constructionStep = CONSTRUCTION_PANEL_OPEN
else if(constructionStep == CONSTRUCTION_PANEL_OPEN)
user.visible_message("<span class='notice'>[user] starts prying something out from [src]...</span>", \
"<span class='notice'>You begin prying out the wire cover...</span>")
"<span class='notice'>You begin prying out the wire cover...</span>")
if(!I.use_tool(src, user, 50, volume = I.tool_volume))
return
if(constructionStep != CONSTRUCTION_PANEL_OPEN)
return
user.visible_message("<span class='notice'>[user] pries out a metal plate from [src], exposing the wires.</span>", \
"<span class='notice'>You remove the cover plate from [src], exposing the wires.</span>")
"<span class='notice'>You remove the cover plate from [src], exposing the wires.</span>")
constructionStep = CONSTRUCTION_WIRES_EXPOSED
else if(constructionStep == CONSTRUCTION_GUTTED)
user.visible_message("<span class='notice'>[user] begins removing the circuit board from [src]...</span>", \
"<span class='notice'>You begin prying out the circuit board from [src]...</span>")
"<span class='notice'>You begin prying out the circuit board from [src]...</span>")
if(!I.use_tool(src, user, 50, volume = I.tool_volume))
return
if(constructionStep != CONSTRUCTION_GUTTED)
return
user.visible_message("<span class='notice'>[user] removes [src]'s circuit board.</span>", \
"<span class='notice'>You remove the circuit board from [src].</span>")
"<span class='notice'>You remove the circuit board from [src].</span>")
new /obj/item/firelock_electronics(get_turf(src))
constructionStep = CONSTRUCTION_NOCIRCUIT
update_icon()
@@ -475,13 +475,13 @@
return
user.visible_message("<span class='notice'>[user] starts cutting the wires from [src]...</span>", \
"<span class='notice'>You begin removing [src]'s wires...</span>")
"<span class='notice'>You begin removing [src]'s wires...</span>")
if(!I.use_tool(src, user, 50, volume = I.tool_volume))
return
if(constructionStep != CONSTRUCTION_WIRES_EXPOSED)
return
user.visible_message("<span class='notice'>[user] removes the wires from [src].</span>", \
"<span class='notice'>You remove the wiring from [src], exposing the circuit board.</span>")
"<span class='notice'>You remove the wiring from [src], exposing the circuit board.</span>")
var/obj/item/stack/cable_coil/B = new(get_turf(src))
B.amount = 5
constructionStep = CONSTRUCTION_GUTTED
@@ -497,13 +497,13 @@
if(!I.tool_start_check(src, user, 0))
return
user.visible_message("<span class='notice'>[user] starts bolting down [src]...</span>", \
"<span class='notice'>You begin bolting [src]...</span>")
"<span class='notice'>You begin bolting [src]...</span>")
if(!I.use_tool(src, user, 50, volume = I.tool_volume))
return
if(locate(/obj/machinery/door/firedoor) in get_turf(src))
return
user.visible_message("<span class='notice'>[user] finishes the firelock.</span>", \
"<span class='notice'>You finish the firelock.</span>")
"<span class='notice'>You finish the firelock.</span>")
if(reinforced)
new /obj/machinery/door/firedoor/heavy(get_turf(src))
else
+1 -1
View File
@@ -58,7 +58,7 @@
icon_state = "open"
/obj/machinery/door/poddoor/try_to_activate_door(mob/user)
return
return
/obj/machinery/door/poddoor/try_to_crowbar(mob/user, obj/item/I)
if(!density)
+1 -1
View File
@@ -312,7 +312,7 @@
return
if(panel_open && !density && !operating)
user.visible_message("<span class='warning'>[user] removes the electronics from the [name].</span>", \
"You start to remove electronics from the [name]...")
"You start to remove electronics from the [name]...")
if(I.use_tool(src, user, 40, volume = I.tool_volume))
if(panel_open && !density && !operating && loc)
var/obj/structure/windoor_assembly/WA = new /obj/structure/windoor_assembly(loc)
+3 -3
View File
@@ -110,7 +110,7 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
<em>Printed at [station_time_timestamp()].</em>"
/obj/machinery/doppler_array/proc/sense_explosion(var/x0,var/y0,var/z0,var/devastation_range,var/heavy_impact_range,var/light_impact_range,
var/took,var/orig_dev_range,var/orig_heavy_range,var/orig_light_range)
var/took,var/orig_dev_range,var/orig_heavy_range,var/orig_light_range)
if(stat & NOPOWER)
return
if(z != z0)
@@ -141,8 +141,8 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
return
var/list/messages = list("Explosive disturbance detected.", \
"Epicenter at: grid ([x0],[y0]). Temporal displacement of tachyons: [took] seconds.", \
"Actual: Epicenter radius: [devastation_range]. Outer radius: [heavy_impact_range]. Shockwave radius: [light_impact_range].")
"Epicenter at: grid ([x0],[y0]). Temporal displacement of tachyons: [took] seconds.", \
"Actual: Epicenter radius: [devastation_range]. Outer radius: [heavy_impact_range]. Shockwave radius: [light_impact_range].")
// If the bomb was capped, say its theoretical size.
if(devastation_range < orig_dev_range || heavy_impact_range < orig_heavy_range || light_impact_range < orig_light_range)
+1 -1
View File
@@ -1043,7 +1043,7 @@ GLOBAL_LIST_EMPTY(turret_icons)
var/area/syndicate_depot/core/depotarea
/obj/machinery/porta_turret/syndicate/CanPass(atom/A)
return ((stat & BROKEN) || !isliving(A))
return ((stat & BROKEN) || !isliving(A))
/obj/machinery/porta_turret/syndicate/CanPathfindPass(obj/item/card/id/ID, to_dir, atom/movable/caller, no_id = FALSE)
return ((stat & BROKEN) || !isliving(caller))
+7 -7
View File
@@ -319,9 +319,9 @@ GLOBAL_LIST_EMPTY(tcomms_machines)
// Get a list of mobs who can hear from the radios we collected.
var/list/receive = get_mobs_in_radio_ranges(radios)
/* ###### Organize the receivers into categories for displaying the message ###### */
/* ###### Organize the receivers into categories for displaying the message ###### */
// Understood the message:
// Understood the message:
var/list/heard_masked = list() // masked name or no real name
var/list/heard_normal = list() // normal message
@@ -333,7 +333,7 @@ GLOBAL_LIST_EMPTY(tcomms_machines)
for(var/M in receive)
var/mob/R = M
/* --- Loop through the receivers and categorize them --- */
/* --- Loop through the receivers and categorize them --- */
if(is_admin(R) && !R.get_preference(PREFTOGGLE_CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios.
continue
@@ -359,10 +359,10 @@ GLOBAL_LIST_EMPTY(tcomms_machines)
heard_garbled += R
/* ###### Begin formatting and sending the message ###### */
/* ###### Begin formatting and sending the message ###### */
if(length(heard_masked) || length(heard_normal) || length(heard_voice) || length(heard_garbled) || length(heard_gibberish))
/* --- Some miscellaneous variables to format the string output --- */
/* --- Some miscellaneous variables to format the string output --- */
var/freq_text = get_frequency_name(display_freq)
var/part_a = "<span class='[SSradio.frequency_span_class(display_freq)]'><b>\[[freq_text]\]</b> <span class='name'>" // goes in the actual output
@@ -374,10 +374,10 @@ GLOBAL_LIST_EMPTY(tcomms_machines)
SSblackbox.LogBroadcast(display_freq)
/* ###### Send the message ###### */
/* ###### Send the message ###### */
/* --- Process all the mobs that heard a masked voice (understood) --- */
/* --- Process all the mobs that heard a masked voice (understood) --- */
if(length(heard_masked))
for(var/M in heard_masked)
+7 -7
View File
@@ -94,12 +94,12 @@
/obj/item/clothing/suit/syndicatefake = 5,
/obj/item/clothing/head/syndicatefake = 5) //OPS IN DORMS oh wait it's just an assistant
contraband = list(/obj/item/gun/projectile/shotgun/toy/crossbow = 10, //Congrats, you unlocked the +18 setting!
/obj/item/gun/projectile/automatic/c20r/toy/riot = 10,
/obj/item/gun/projectile/automatic/l6_saw/toy/riot = 10,
/obj/item/gun/projectile/automatic/sniper_rifle/toy = 10,
/obj/item/ammo_box/foambox/riot = 20,
/obj/item/toy/katana = 10,
/obj/item/twohanded/dualsaber/toy = 5,
/obj/item/deck/cards/syndicate = 10) //Gambling and it hurts, making it a +18 item
/obj/item/gun/projectile/automatic/c20r/toy/riot = 10,
/obj/item/gun/projectile/automatic/l6_saw/toy/riot = 10,
/obj/item/gun/projectile/automatic/sniper_rifle/toy = 10,
/obj/item/ammo_box/foambox/riot = 20,
/obj/item/toy/katana = 10,
/obj/item/twohanded/dualsaber/toy = 5,
/obj/item/deck/cards/syndicate = 10) //Gambling and it hurts, making it a +18 item
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
+9 -9
View File
@@ -132,15 +132,15 @@
/obj/item/seeds/wheat = 3,
/obj/item/seeds/whitebeet = 3)
contraband = list(/obj/item/seeds/cannabis = 3,
/obj/item/seeds/amanita = 2,
/obj/item/seeds/fungus = 3,
/obj/item/seeds/glowshroom = 2,
/obj/item/seeds/liberty = 2,
/obj/item/seeds/nettle = 2,
/obj/item/seeds/plump = 2,
/obj/item/seeds/reishi = 2,
/obj/item/seeds/starthistle = 2,
/obj/item/seeds/random = 2)
/obj/item/seeds/amanita = 2,
/obj/item/seeds/fungus = 3,
/obj/item/seeds/glowshroom = 2,
/obj/item/seeds/liberty = 2,
/obj/item/seeds/nettle = 2,
/obj/item/seeds/plump = 2,
/obj/item/seeds/reishi = 2,
/obj/item/seeds/starthistle = 2,
/obj/item/seeds/random = 2)
premium = list(/obj/item/reagent_containers/spray/waterflower = 1)
refill_canister = /obj/item/vending_refill/hydroseeds
+27 -27
View File
@@ -38,7 +38,7 @@
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 30,
/obj/item/reagent_containers/food/drinks/ice = 9)
contraband = list(/obj/item/reagent_containers/food/drinks/tea = 10,
/obj/item/reagent_containers/food/drinks/bottle/fernet = 5)
/obj/item/reagent_containers/food/drinks/bottle/fernet = 5)
vend_delay = 15
slogan_list = list("I hope nobody asks me for a bloody cup o' tea...","Alcohol is humanity's friend. Would you abandon a friend?","Quite delighted to serve you!","Is nobody thirsty on this station?")
ads_list = list("Drink up!","Booze is good for you!","Alcohol is humanity's best friend.","Quite delighted to serve you!","Care for a nice, cold beer?","Nothing cures you like booze!","Have a sip!","Have a drink!","Have a beer!","Beer is good for you!","Only the finest alcohol!","Best quality booze since 2053!","Award-winning wine!","Maximum alcohol!","Man loves beer.","A toast for progress!")
@@ -64,7 +64,7 @@
contraband = list(/obj/item/reagent_containers/food/drinks/ice = 10)
premium = list(/obj/item/reagent_containers/food/drinks/mug/novelty = 5)
prices = list(/obj/item/reagent_containers/food/drinks/coffee = 80, /obj/item/reagent_containers/food/drinks/tea = 80, /obj/item/reagent_containers/food/drinks/h_chocolate = 64, /obj/item/reagent_containers/food/drinks/chocolate = 120,
/obj/item/reagent_containers/food/drinks/chicken_soup = 100, /obj/item/reagent_containers/food/drinks/weightloss = 50, /obj/item/reagent_containers/food/drinks/mug = 75)
/obj/item/reagent_containers/food/drinks/chicken_soup = 100, /obj/item/reagent_containers/food/drinks/weightloss = 50, /obj/item/reagent_containers/food/drinks/mug = 75)
refill_canister = /obj/item/vending_refill/coffee
/obj/machinery/economy/vending/coffee/free
@@ -253,16 +253,16 @@
/obj/item/clothing/suit/mantle/regal = 2)
contraband = list(/obj/item/clothing/under/syndicate/tacticool = 1,
/obj/item/clothing/mask/balaclava = 1,
/obj/item/clothing/head/ushanka = 1,
/obj/item/clothing/under/costume/soviet = 1,
/obj/item/storage/belt/fannypack/black = 1)
/obj/item/clothing/mask/balaclava = 1,
/obj/item/clothing/head/ushanka = 1,
/obj/item/clothing/under/costume/soviet = 1,
/obj/item/storage/belt/fannypack/black = 1)
premium = list(/obj/item/clothing/under/suit/checkered = 1,
/obj/item/clothing/head/mailman = 1,
/obj/item/clothing/under/misc/mailman = 1,
/obj/item/clothing/suit/jacket/leather = 1,
/obj/item/clothing/under/pants/mustangjeans = 1)
/obj/item/clothing/head/mailman = 1,
/obj/item/clothing/under/misc/mailman = 1,
/obj/item/clothing/suit/jacket/leather = 1,
/obj/item/clothing/under/pants/mustangjeans = 1)
prices = list(/obj/item/clothing/head/that = 20,
/obj/item/clothing/head/fedora = 20,
@@ -486,19 +486,19 @@
/obj/item/clothing/under/misc/bluehawaiianshirt = 1,
/obj/item/clothing/under/misc/orangehawaiianshirt = 1)
contraband = list(/obj/item/clothing/suit/judgerobe = 1,
/obj/item/clothing/head/powdered_wig = 1,
/obj/item/gun/magic/wand = 1,
/obj/item/clothing/mask/balaclava=1,
/obj/item/clothing/mask/horsehead = 2)
/obj/item/clothing/head/powdered_wig = 1,
/obj/item/gun/magic/wand = 1,
/obj/item/clothing/mask/balaclava=1,
/obj/item/clothing/mask/horsehead = 2)
premium = list(/obj/item/clothing/suit/hgpirate = 1,
/obj/item/clothing/head/hgpiratecap = 1,
/obj/item/clothing/head/helmet/roman/fake = 1,
/obj/item/clothing/head/helmet/roman/legionaire/fake = 1,
/obj/item/clothing/under/costume/roman = 1,
/obj/item/clothing/shoes/roman = 1,
/obj/item/shield/riot/roman/fake = 1,
/obj/item/clothing/under/costume/cuban_suit = 1,
/obj/item/clothing/head/cuban_hat = 1)
/obj/item/clothing/head/hgpiratecap = 1,
/obj/item/clothing/head/helmet/roman/fake = 1,
/obj/item/clothing/head/helmet/roman/legionaire/fake = 1,
/obj/item/clothing/under/costume/roman = 1,
/obj/item/clothing/shoes/roman = 1,
/obj/item/shield/riot/roman/fake = 1,
/obj/item/clothing/under/costume/cuban_suit = 1,
/obj/item/clothing/head/cuban_hat = 1)
prices = list(/obj/item/clothing/suit/chickensuit = 100,
/obj/item/clothing/head/chicken = 50,
@@ -629,9 +629,9 @@
/obj/item/reagent_containers/food/drinks/ice = 12,
/obj/item/reagent_containers/food/snacks/candy/candy_corn = 6)
contraband = list(/obj/item/kitchen/knife = 6,
/obj/item/reagent_containers/food/drinks/coffee = 12,
/obj/item/tank/internals/emergency_oxygen = 6,
/obj/item/clothing/mask/breath = 6)
/obj/item/reagent_containers/food/drinks/coffee = 12,
/obj/item/tank/internals/emergency_oxygen = 6,
/obj/item/clothing/mask/breath = 6)
refill_canister = /obj/item/vending_refill/sustenance
/obj/machinery/economy/vending/sovietsoda
@@ -830,8 +830,8 @@
/obj/item/lighter/random = 4,
/obj/item/storage/fancy/rollingpapers = 5)
premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2,
/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 1,
/obj/item/lighter/zippo = 3)
/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 1,
/obj/item/lighter/zippo = 3)
prices = list()
/obj/machinery/economy/vending/wallmed
+5 -5
View File
@@ -35,9 +35,9 @@
/obj/item/clothing/gloves/color/black = 4,
/obj/item/clothing/accessory/armband/sec = 6)
premium = list(/obj/item/clothing/mask/balaclava = 1,
/obj/item/clothing/mask/gas/sechailer/swat = 2)
/obj/item/clothing/mask/gas/sechailer/swat = 2)
contraband = list(/obj/item/toy/figure/crew/hos = 1,
/obj/item/toy/figure/crew/secofficer = 1)
/obj/item/toy/figure/crew/secofficer = 1)
prices = list(/obj/item/clothing/under/rank/security/officer/corporate = 50,
/obj/item/clothing/under/rank/security/officer/skirt/corporate = 50,
@@ -296,7 +296,7 @@
/obj/item/storage/backpack/satchel_tox = 2,
/obj/item/storage/backpack/duffel/science = 2,)
contraband = list(/obj/item/toy/figure/crew/rd = 1,
/obj/item/toy/figure/crew/scientist = 1)
/obj/item/toy/figure/crew/scientist = 1)
prices = list(/obj/item/clothing/under/rank/rnd/scientist = 50,
/obj/item/clothing/under/rank/rnd/scientist/skirt = 50,
/obj/item/clothing/suit/hooded/wintercoat/science = 75,
@@ -366,7 +366,7 @@
/obj/item/storage/belt/utility = 2)
premium = list(/obj/item/clothing/gloves/color/yellow = 2)
contraband = list(/obj/item/toy/figure/crew/ce = 1,
/obj/item/toy/figure/crew/engineer = 1)
/obj/item/toy/figure/crew/engineer = 1)
prices = list(/obj/item/clothing/under/rank/engineering/engineer = 50,
/obj/item/clothing/under/rank/engineering/engineer/skirt = 50,
/obj/item/clothing/suit/hooded/wintercoat/engineering = 75,
@@ -454,7 +454,7 @@
/obj/item/clothing/shoes/black = 3,
/obj/item/clothing/shoes/workboots = 3)
contraband = list(/obj/item/toy/figure/crew/qm = 1,
/obj/item/toy/figure/crew/cargotech = 1)
/obj/item/toy/figure/crew/cargotech = 1)
prices = list(/obj/item/clothing/under/rank/cargo/tech = 50,
/obj/item/clothing/under/rank/cargo/tech/skirt = 50,
/obj/item/clothing/suit/hooded/wintercoat/cargo = 75,
+11 -11
View File
@@ -70,19 +70,19 @@
[JS_BYJAX]
[JS_DROPDOWNS]
function ticker() {
setInterval(function(){
window.location='byond://?src=[UID()]&update_content=1';
document.body.style.color = get_rand_color_string();
document.body.style.background = get_rand_color_string();
}, 1000);
setInterval(function(){
window.location='byond://?src=[UID()]&update_content=1';
document.body.style.color = get_rand_color_string();
document.body.style.background = get_rand_color_string();
}, 1000);
}
function get_rand_color_string() {
var color = new Array;
for(var i=0;i<3;i++){
color.push(Math.floor(Math.random()*255));
}
return "rgb("+color.toString()+")";
var color = new Array;
for(var i=0;i<3;i++){
color.push(Math.floor(Math.random()*255));
}
return "rgb("+color.toString()+")";
}
window.onload = function() {
@@ -104,7 +104,7 @@
</div>
</body>
</html>
"}
"}
return output
/obj/mecha/combat/honker/get_commands()
@@ -27,7 +27,7 @@
return
target.visible_message("<span class='warning'>[chassis] starts to drill [target].</span>",
"<span class='userdanger'>[chassis] starts to drill [target]...</span>",
"<span class='italics'>You hear drilling.</span>")
"<span class='italics'>You hear drilling.</span>")
if(do_after_cooldown(target))
set_ready_state(FALSE)
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -21,9 +21,9 @@
[JS_BYJAX]
[JS_DROPDOWNS]
function ticker() {
setInterval(function(){
window.location='byond://?src=[UID()]&update_content=1';
}, 1000);
setInterval(function(){
window.location='byond://?src=[UID()]&update_content=1';
}, 1000);
}
window.onload = function() {
@@ -45,7 +45,7 @@
</div>
</body>
</html>
"}
"}
return output
+3 -3
View File
@@ -3,13 +3,13 @@
//Meteors probability of spawning during a given wave
GLOBAL_LIST_INIT(meteors_normal, list(/obj/effect/meteor/dust = 3, /obj/effect/meteor/medium = 8, /obj/effect/meteor/big = 3,
/obj/effect/meteor/flaming = 1, /obj/effect/meteor/irradiated = 3)) //for normal meteor event
/obj/effect/meteor/flaming = 1, /obj/effect/meteor/irradiated = 3)) //for normal meteor event
GLOBAL_LIST_INIT(meteors_threatening, list(/obj/effect/meteor/medium = 4, /obj/effect/meteor/big = 8,
/obj/effect/meteor/flaming = 3, /obj/effect/meteor/irradiated = 3)) //for threatening meteor event
/obj/effect/meteor/flaming = 3, /obj/effect/meteor/irradiated = 3)) //for threatening meteor event
GLOBAL_LIST_INIT(meteors_catastrophic, list(/obj/effect/meteor/medium = 5, /obj/effect/meteor/big = 75,
/obj/effect/meteor/flaming = 10, /obj/effect/meteor/irradiated = 10, /obj/effect/meteor/tunguska = 1)) //for catastrophic meteor event
/obj/effect/meteor/flaming = 10, /obj/effect/meteor/irradiated = 10, /obj/effect/meteor/tunguska = 1)) //for catastrophic meteor event
GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/meteor/meaty/xeno = 1)) //for meaty ore event
+2 -2
View File
@@ -18,8 +18,8 @@
/datum/autopsy_data_scanner
var/weapon = null // this is the DEFINITE weapon type that was used
var/list/organs_scanned = list() // this maps a number of scanned organs to
// the wounds to those organs with this data's weapon type
var/list/organs_scanned = list() // this maps a number of scanned organs to
// the wounds to those organs with this data's weapon type
var/organ_names = ""
/datum/autopsy_data_scanner/Destroy()
@@ -61,14 +61,14 @@
if(M == user) //they're using it on themselves
if(M.flash_eyes(visual = 1))
M.visible_message("<span class='notice'>[M] directs [src] to [M.p_their()] eyes.</span>", \
"<span class='notice'>You wave the light in front of your eyes! Trippy!</span>")
"<span class='notice'>You wave the light in front of your eyes! Trippy!</span>")
else
M.visible_message("<span class='notice'>[M] directs [src] to [M.p_their()] eyes.</span>", \
"<span class='notice'>You wave the light in front of your eyes.</span>")
"<span class='notice'>You wave the light in front of your eyes.</span>")
else
user.visible_message("<span class='notice'>[user] directs [src] to [M]'s eyes.</span>", \
"<span class='notice'>You direct [src] to [M]'s eyes.</span>")
"<span class='notice'>You direct [src] to [M]'s eyes.</span>")
if(istype(H)) //robots and aliens are unaffected
var/obj/item/organ/internal/eyes/eyes = H.get_int_organ(/obj/item/organ/internal/eyes)
+48 -48
View File
@@ -40,90 +40,90 @@
<head>
<style>
body {
margin-top:5px;
font-family:Verdana;
color:white;
font-size:13px;
background-image:url('uiBackground.png');
background-repeat:repeat-x;
background-color:#272727;
margin-top:5px;
font-family:Verdana;
color:white;
font-size:13px;
background-image:url('uiBackground.png');
background-repeat:repeat-x;
background-color:#272727;
background-position:center top;
}
table {
font-size:13px;
margin-left:-2px;
font-size:13px;
margin-left:-2px;
}
table.request {
border-collapse:collapse;
border-collapse:collapse;
}
table.desc {
border-collapse:collapse;
font-size:13px;
border: 1px solid #161616;
width:100%;
border-collapse:collapse;
font-size:13px;
border: 1px solid #161616;
width:100%;
}
table.download {
border-collapse:collapse;
font-size:13px;
border: 1px solid #161616;
width:100%;
border-collapse:collapse;
font-size:13px;
border: 1px solid #161616;
width:100%;
}
tr.d0 td, tr.d0 th {
background-color: #506070;
color: white;
background-color: #506070;
color: white;
}
tr.d1 td, tr.d1 th {
background-color: #708090;
color: white;
background-color: #708090;
color: white;
}
tr.d2 td {
background-color: #00FF00;
color: white;
text-align:center;
background-color: #00FF00;
color: white;
text-align:center;
}
td.button {
border: 1px solid #161616;
background-color: #40628a;
border: 1px solid #161616;
background-color: #40628a;
}
td.button {
border: 1px solid #161616;
background-color: #40628a;
text-align: center;
border: 1px solid #161616;
background-color: #40628a;
text-align: center;
}
td.button_red {
border: 1px solid #161616;
background-color: #B04040;
text-align: center;
border: 1px solid #161616;
background-color: #B04040;
text-align: center;
}
td.download {
border: 1px solid #161616;
background-color: #40628a;
text-align: center;
border: 1px solid #161616;
background-color: #40628a;
text-align: center;
}
th {
text-align:left;
width:125px;
text-align:left;
width:125px;
}
td.request {
width:140px;
vertical-align:top;
width:140px;
vertical-align:top;
}
td.radio {
width:90px;
vertical-align:top;
width:90px;
vertical-align:top;
}
td.request {
vertical-align:top;
vertical-align:top;
}
a {
color:#4477E0;
color:#4477E0;
}
a.button {
color:white;
text-decoration: none;
color:white;
text-decoration: none;
}
h2 {
font-size:15px;
font-size:15px;
}
</style>
</head>
@@ -212,7 +212,7 @@
else
dat += {"
<b><font size='3px'>pAI Request Module</font></b><br><br>
<p>No personality is installed.</p>
<p>No personality is installed.</p>
<table>
<tr>
<td class="button"><a href='byond://?src=[UID()];request=1' class="button">Request personality</a>
+6 -6
View File
@@ -66,21 +66,21 @@
critter.heal_organ_damage(heal_brute, heal_burn)
user.visible_message("<span class='green'>[user] applies [src] on [critter].</span>", \
"<span class='green'>You apply [src] on [critter].</span>")
"<span class='green'>You apply [src] on [critter].</span>")
use(1)
else
M.heal_organ_damage(heal_brute, heal_burn)
user.visible_message("<span class='green'>[user] applies [src] on [M].</span>", \
"<span class='green'>You apply [src] on [M].</span>")
"<span class='green'>You apply [src] on [M].</span>")
use(1)
/obj/item/stack/medical/proc/heal(mob/living/M, mob/user)
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/affecting = H.get_organ(user.zone_selected)
user.visible_message("<span class='green'>[user] [healverb]s the wounds on [H]'s [affecting.name].</span>", \
"<span class='green'>You [healverb] the wounds on [H]'s [affecting.name].</span>" )
"<span class='green'>You [healverb] the wounds on [H]'s [affecting.name].</span>" )
var/rembrute = max(0, heal_brute - affecting.brute_dam) // Maxed with 0 since heal_damage let you pass in a negative value
var/remburn = max(0, heal_burn - affecting.burn_dam) // And deduct it from their health (aka deal damage)
@@ -110,7 +110,7 @@
rembrute = nrembrute
remburn = nremburn
user.visible_message("<span class='green'>[user] [healverb]s the wounds on [H]'s [E.name] with the remaining medication.</span>", \
"<span class='green'>You [healverb] the wounds on [H]'s [E.name] with the remaining medication.</span>" )
"<span class='green'>You [healverb] the wounds on [H]'s [E.name] with the remaining medication.</span>" )
//Bruise Packs//
@@ -131,8 +131,8 @@
return
new /obj/item/stack/sheet/cloth(user.drop_location())
user.visible_message("[user] cuts [src] into pieces of cloth with [I].", \
"<span class='notice'>You cut [src] into pieces of cloth with [I].</span>", \
"<span class='italics'>You hear cutting.</span>")
"<span class='notice'>You cut [src] into pieces of cloth with [I].</span>", \
"<span class='italics'>You hear cutting.</span>")
use(2)
else
return ..()
+1 -1
View File
@@ -79,7 +79,7 @@ GLOBAL_LIST_INIT(rod_recipes, list (
// stack was moved into another one on the pile
new_item = locate() in user.loc
visible_message("<span class='notice'>[user.name] shapes [src] into metal with [I]!</span>", \
"<span class='notice'>You shape [src] into metal with [I]!</span>", \
"<span class='notice'>You shape [src] into metal with [I]!</span>", \
"<span class='warning'>You hear welding.</span>")
var/replace = user.is_in_inactive_hand(src)
use(2)
@@ -18,7 +18,7 @@ Mineral Sheets
GLOBAL_LIST_INIT(sandstone_recipes, list (
new /datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 1 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, time = 2 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("sandstone airlock assembly", /obj/structure/door_assembly/door_assembly_sandstone, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("sandstone airlock assembly", /obj/structure/door_assembly/door_assembly_sandstone, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("sarcophagus", /obj/structure/closet/coffin/sarcophagus, 5, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
null,
new /datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, time = 2.5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
@@ -28,7 +28,7 @@ GLOBAL_LIST_INIT(sandstone_recipes, list (
GLOBAL_LIST_INIT(silver_recipes, list (
new /datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, time = 2 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("silver airlock assembly", /obj/structure/door_assembly/door_assembly_silver, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("silver airlock assembly", /obj/structure/door_assembly/door_assembly_silver, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
null,
new /datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20),
null,
@@ -45,7 +45,7 @@ GLOBAL_LIST_INIT(silver_recipes, list (
GLOBAL_LIST_INIT(diamond_recipes, list (
new /datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, time = 2 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("diamond airlock assembly", /obj/structure/door_assembly/door_assembly_diamond, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("diamond airlock assembly", /obj/structure/door_assembly/door_assembly_diamond, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
null,
new /datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20),
null,
@@ -58,7 +58,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list (
GLOBAL_LIST_INIT(uranium_recipes, list (
new /datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, time = 2 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("uranium airlock assembly", /obj/structure/door_assembly/door_assembly_uranium, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("uranium airlock assembly", /obj/structure/door_assembly/door_assembly_uranium, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
null,
new /datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20),
null,
@@ -70,7 +70,7 @@ GLOBAL_LIST_INIT(uranium_recipes, list (
GLOBAL_LIST_INIT(gold_recipes, list (
new /datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, time = 2 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("golden airlock assembly", /obj/structure/door_assembly/door_assembly_gold, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("golden airlock assembly", /obj/structure/door_assembly/door_assembly_gold, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
null,
new /datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20),
null,
@@ -87,7 +87,7 @@ GLOBAL_LIST_INIT(gold_recipes, list (
GLOBAL_LIST_INIT(plasma_recipes, list (
new /datum/stack_recipe/dangerous("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, time = 2 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe/dangerous("plasma airlock assembly", /obj/structure/door_assembly/door_assembly_plasma, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe/dangerous("plasma airlock assembly", /obj/structure/door_assembly/door_assembly_plasma, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
null,
new /datum/stack_recipe/dangerous("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20),
null,
@@ -98,7 +98,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list (
))
GLOBAL_LIST_INIT(bananium_recipes, list (
new /datum/stack_recipe("bananium airlock assembly", /obj/structure/door_assembly/door_assembly_bananium, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("bananium airlock assembly", /obj/structure/door_assembly/door_assembly_bananium, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE),
null,
new /datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20),
null,
@@ -109,7 +109,7 @@ GLOBAL_LIST_INIT(bananium_recipes, list (
GLOBAL_LIST_INIT(tranquillite_recipes, list (
new /datum/stack_recipe("tranquillite airlock assembly", /obj/structure/door_assembly/door_assembly_tranquillite, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE),
null,
null,
new /datum/stack_recipe("invisible wall", /obj/structure/barricade/mime, 5, one_per_turf = TRUE, on_floor = TRUE, time = 50),
null,
new /datum/stack_recipe("silent tile", /obj/item/stack/tile/mineral/tranquillite, 1, 4, 20),
@@ -373,7 +373,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list (
point_value = 20
GLOBAL_LIST_INIT(titanium_recipes, list(
new /datum/stack_recipe("titanium airlock assembly", /obj/structure/door_assembly/door_assembly_titanium, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("titanium airlock assembly", /obj/structure/door_assembly/door_assembly_titanium, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE),
null,
new /datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20),
new /datum/stack_recipe("surgical tray", /obj/structure/table/tray, 2, one_per_turf = TRUE, on_floor = TRUE),
@@ -212,7 +212,7 @@ GLOBAL_LIST_INIT(wood_recipes, list(
new /datum/stack_recipe("dresser", /obj/structure/dresser, 30, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("dog bed", /obj/structure/bed/dogbed, 10, time = 1 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 2 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("wooden airlock assembly", /obj/structure/door_assembly/door_assembly_wood, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("wooden airlock assembly", /obj/structure/door_assembly/door_assembly_wood, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 1.5 SECONDS, one_per_turf = TRUE, on_floor = TRUE),
)),
new /datum/stack_recipe_list("pews", list(
@@ -457,14 +457,14 @@ GLOBAL_LIST_INIT(cult_recipes, list (
return ..()
/datum/stack_recipe/cult
one_per_turf = TRUE
on_floor = TRUE
one_per_turf = TRUE
on_floor = TRUE
/datum/stack_recipe/cult/post_build(obj/item/stack/S, obj/result)
if(ishuman(S.loc))
var/mob/living/carbon/human/H = S.loc
H.bleed(5)
..()
if(ishuman(S.loc))
var/mob/living/carbon/human/H = S.loc
H.bleed(5)
..()
/obj/item/stack/sheet/runed_metal/ten
amount = 10
@@ -32,8 +32,8 @@
if (mineralType == "metal")
var/obj/item/stack/sheet/metal/new_item = new(user.loc)
user.visible_message("[user.name] shaped [src] into metal with the welding tool.", \
"<span class='notice'>You shaped [src] into metal with the welding tool.</span>", \
"<span class='italics'>You hear welding.</span>")
"<span class='notice'>You shaped [src] into metal with the welding tool.</span>", \
"<span class='italics'>You hear welding.</span>")
var/obj/item/stack/rods/R = src
src = null
var/replace = (user.get_inactive_hand()==R)
+3 -3
View File
@@ -41,7 +41,7 @@
add_fingerprint(user)
if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
user.visible_message("<span class='danger'>[user] accidentally clubs [user.p_them()]self with [src]!</span>", \
"<span class='userdanger'>You accidentally club yourself with [src]!</span>")
"<span class='userdanger'>You accidentally club yourself with [src]!</span>")
user.KnockDown(knockdown_duration)
if(ishuman(user))
var/mob/living/carbon/human/H = user
@@ -69,7 +69,7 @@
/obj/item/melee/classic_baton/proc/baton_knockdown(mob/living/target, mob/living/user)
if(issilicon(target))
user.visible_message("<span class='danger'>[user] pulses [target]'s sensors with [src]!</span>",\
"<span class='danger'>You pulse [target]'s sensors with [src]!</span>")
"<span class='danger'>You pulse [target]'s sensors with [src]!</span>")
on_silicon_stun(target, user)
else
// Check for shield/countering
@@ -78,7 +78,7 @@
if(H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK))
return FALSE
user.visible_message("<span class='danger'>[user] knocks down [target] with [src]!</span>",\
"<span class='danger'>You knock down [target] with [src]!</span>")
"<span class='danger'>You knock down [target] with [src]!</span>")
on_non_silicon_stun(target, user)
// Visuals and sound
user.do_attack_animation(target)
+9 -9
View File
@@ -889,9 +889,9 @@
registered_name = "HoS"
icon_state = "HoS"
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT,
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
/obj/item/card/id/cmo
name = "Chief Medical Officer ID"
@@ -906,18 +906,18 @@
registered_name = "RD"
icon_state = "RD"
access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE,
ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS,
ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_XENOARCH, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS,
ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_XENOARCH, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/ce
name = "Chief Engineer ID"
registered_name = "CE"
icon_state = "CE"
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/ntrep
name = "Nanotrasen Representative ID"
+3 -3
View File
@@ -81,16 +81,16 @@
return
if(H == user)
user.visible_message("<span class='notice'>[user] does [user.p_their()] lips with [src].</span>", \
"<span class='notice'>You take a moment to apply [src]. Perfect!</span>")
"<span class='notice'>You take a moment to apply [src]. Perfect!</span>")
H.lip_style = "lipstick"
H.lip_color = lipstick_colors[colour]
H.update_body()
else
user.visible_message("<span class='warning'>[user] begins to do [H]'s lips with \the [src].</span>", \
"<span class='notice'>You begin to apply \the [src].</span>")
"<span class='notice'>You begin to apply \the [src].</span>")
if(do_after(user, 20, target = H))
user.visible_message("<span class='notice'>[user] does [H]'s lips with \the [src].</span>", \
"<span class='notice'>You apply \the [src].</span>")
"<span class='notice'>You apply \the [src].</span>")
H.lip_style = "lipstick"
H.lip_color = lipstick_colors[colour]
H.update_body()
+2 -2
View File
@@ -340,8 +340,8 @@
result = special_faces[result]
if(user != null) //Dice was rolled in someone's hand
user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]",
"<span class='notice'>You throw [src]. It lands on [result]. [comment]</span>",
"<span class='italics'>You hear [src] rolling, it sounds like a [fake_result].</span>")
"<span class='notice'>You throw [src]. It lands on [result]. [comment]</span>",
"<span class='italics'>You hear [src] rolling, it sounds like a [fake_result].</span>")
else if(!throwing) //Dice was thrown and is coming to rest
visible_message("<span class='notice'>[src] rolls to a stop, landing on [result]. [comment]</span>")
+3 -3
View File
@@ -96,8 +96,8 @@
playsound(src.loc, 'sound/weapons/cablecuff.ogg', 15, 1, -1)
M.visible_message("<span class='danger'>[U] comes from behind and begins garroting [M] with [src]!</span>", \
"<span class='userdanger'>[U] begins garroting you with [src]![improvised ? "" : " You are unable to speak!"]</span>", \
"You hear struggling and wire strain against flesh!")
"<span class='userdanger'>[U] begins garroting you with [src]![improvised ? "" : " You are unable to speak!"]</span>", \
"You hear struggling and wire strain against flesh!")
return
@@ -126,7 +126,7 @@
else
user.visible_message("<span class='warning'>[user] loses [user.p_their()] grip on [strangling]'s neck.</span>", \
"<span class='warning'>You lose your grip on [strangling]'s neck.</span>")
"<span class='warning'>You lose your grip on [strangling]'s neck.</span>")
strangling = null
update_icon(UPDATE_ICON_STATE)
+1 -1
View File
@@ -310,7 +310,7 @@
<I>Or: How not to suffocate because there's a hole in your shoes</I><BR><BR>
EVA gear. Wonderful to use. It's useful for mining, engineering, and occasionally just surviving, if things are that bad. Most people have EVA training,
but apparently there are some on a space station who don't. This guide should give you a basic idea of how to use this gear, safely. It's split into two sections:
Civilian suits and hardsuits.<BR><BR>
Civilian suits and hardsuits.<BR><BR>
<h1><a name="Civilian">Civilian Suits</a></h1><BR>
<I>The bulkiest things this side of Alpha Centauri</I><BR>
These suits are the grey ones that are stored in EVA. They're the more simple to get on, but are also a lot bulkier, and provide less protection from environmental hazards such as radiaion or physical impact.
+1 -1
View File
@@ -108,7 +108,7 @@
if(!angle)
angle = 1
//to_chat(world, "adjusted [angle]")
//to_chat(world, "adjusted [angle]")
icon_state = "[angle]"
//to_chat(world, "[angle] [(get_dist(user, A) - 1)]")
user.Beam(A, "lightning", 'icons/obj/zap.dmi', 50, 15)
@@ -118,7 +118,7 @@
discharge = 1
if(!discharge)
user.visible_message("<span class='danger'>[user] fires \the [src]!</span>", \
"<span class='danger'>You fire \the [src]!</span>")
"<span class='danger'>You fire \the [src]!</span>")
add_attack_logs(user, target, "Fired [src]")
playsound(src.loc, 'sound/weapons/sonic_jackhammer.ogg', 50, 1)
for(var/obj/item/ITD in loadedItems) //Item To Discharge
+3 -3
View File
@@ -41,9 +41,9 @@
icon_state = "[icon_prefix][icon_state]"
/obj/item/shard/Initialize()
. = ..()
AddComponent(/datum/component/caltrop, force)
set_initial_icon_state()
. = ..()
AddComponent(/datum/component/caltrop, force)
set_initial_icon_state()
/obj/item/shard/afterattack(atom/movable/AM, mob/user, proximity)
if(!proximity || !(src in user))
@@ -80,8 +80,8 @@
/obj/item/stack/spacecash/c50,
/obj/item/stack/spacecash/c100)
var/coin = pickweight(list(/obj/item/coin/iron = 3,
/obj/item/coin/silver = 2,
/obj/item/coin/gold = 1))
/obj/item/coin/silver = 2,
/obj/item/coin/gold = 1))
new cash(src)
if(prob(50)) // 50% chance of a second
@@ -148,4 +148,4 @@ Frequency:
add_fingerprint(user)
/obj/item/hand_tele/portal_destroyed(obj/effect/portal/P)
active_portals--
active_portals--
+2 -2
View File
@@ -124,8 +124,8 @@
return TRUE
/obj/structure/sign/barsign/emp_act(severity)
set_sign(new /datum/barsign/hiddensigns/empbarsign)
broken = TRUE
set_sign(new /datum/barsign/hiddensigns/empbarsign)
broken = TRUE
/obj/structure/sign/barsign/emag_act(mob/user)
if(broken || emagged)
@@ -41,8 +41,8 @@
var/atom/movable/A = O
A.forceMove(T)
user.visible_message("<span class='notice'>[user] pries \the [src] open.</span>", \
"<span class='notice'>You pry open \the [src].</span>", \
"<span class='notice'>You hear splitting wood.</span>")
"<span class='notice'>You pry open \the [src].</span>", \
"<span class='notice'>You hear splitting wood.</span>")
qdel(src)
else if(user.a_intent != INTENT_HARM)
attack_hand(user)
+1 -1
View File
@@ -185,7 +185,7 @@
update_icon(UPDATE_OVERLAYS)
return
else
//prevents remote "kicks" with TK
//prevents remote "kicks" with TK
if(!Adjacent(user))
return
user.visible_message("<span class='danger'>[user] kicks the display case.</span>")
+2 -2
View File
@@ -74,7 +74,7 @@
if(has_buckled_mobs())
if(user.a_intent == INTENT_HARM)
user.visible_message("<span class='warning'>[user] begins to pull the lever!</span>",
"<span class='warning'>You begin to the pull the lever.</span>")
"<span class='warning'>You begin to the pull the lever.</span>")
current_action = GUILLOTINE_ACTION_INUSE
if(do_after(user, GUILLOTINE_ACTIVATE_DELAY, target = src) && blade_status == GUILLOTINE_BLADE_RAISED)
@@ -162,7 +162,7 @@
if(do_after(user, 7, target = src))
blade_status = GUILLOTINE_BLADE_RAISED
user.visible_message("<span class='notice'>[user] sharpens the large blade of the guillotine.</span>",
"<span class='notice'>You sharpen the large blade of the guillotine.</span>")
"<span class='notice'>You sharpen the large blade of the guillotine.</span>")
blade_sharpness += 1
playsound(src, 'sound/items/screwdriver.ogg', 100, 1)
return
+3 -3
View File
@@ -17,12 +17,12 @@
if(istype(W, /obj/item/gun/energy/plasmacutter))
playsound(src, W.usesound, 100, 1)
user.visible_message("[user] is slicing apart the [name]...", \
"<span class='notice'>You are slicing apart the [name]...</span>")
"<span class='notice'>You are slicing apart the [name]...</span>")
if(do_after(user, 40 * W.toolspeed, target = src))
if(!loc)
return
user.visible_message("[user] slices apart the [name].", \
"<span class='notice'>You slice apart the [name].</span>")
"<span class='notice'>You slice apart the [name].</span>")
deconstruct(TRUE)
return
return ..()
@@ -44,7 +44,7 @@
user.changeNext_move(CLICK_CD_MELEE)
add_fingerprint(user)
user.visible_message("[user] rubs some dust off from the [name]'s surface.", \
"<span class='notice'>You rub some dust off from the [name]'s surface.</span>")
"<span class='notice'>You rub some dust off from the [name]'s surface.</span>")
/obj/structure/statue/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT))
+1 -1
View File
@@ -875,7 +875,7 @@
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src, ATTACK_EFFECT_KICK)
user.visible_message("<span class='warning'>[user] kicks [src].</span>", \
"<span class='danger'>You kick [src].</span>")
"<span class='danger'>You kick [src].</span>")
take_damage(rand(4,8), BRUTE, MELEE, 1)
/obj/structure/rack/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
+3 -3
View File
@@ -57,7 +57,7 @@ falloff_distance - Distance at which falloff begins. Sound is at peak volume (in
//allocate a channel if necessary now so its the same for everyone
channel = channel || SSsounds.random_available_channel()
// Looping through the player list has the added bonus of working for mobs inside containers
// Looping through the player list has the added bonus of working for mobs inside containers
var/sound/S = sound(get_sfx(soundin))
var/maxdistance = SOUND_RANGE + extrarange
@@ -221,8 +221,8 @@ falloff_distance - Distance at which falloff begins. Sound is at peak volume (in
soundin = pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg','sound/weapons/effects/ric3.ogg','sound/weapons/effects/ric4.ogg','sound/weapons/effects/ric5.ogg')
if("terminal_type")
soundin = pick('sound/machines/terminal_button01.ogg', 'sound/machines/terminal_button02.ogg', 'sound/machines/terminal_button03.ogg',
'sound/machines/terminal_button04.ogg', 'sound/machines/terminal_button05.ogg', 'sound/machines/terminal_button06.ogg',
'sound/machines/terminal_button07.ogg', 'sound/machines/terminal_button08.ogg')
'sound/machines/terminal_button04.ogg', 'sound/machines/terminal_button05.ogg', 'sound/machines/terminal_button06.ogg',
'sound/machines/terminal_button07.ogg', 'sound/machines/terminal_button08.ogg')
if("growls")
soundin = pick('sound/goonstation/voice/growl1.ogg', 'sound/goonstation/voice/growl2.ogg', 'sound/goonstation/voice/growl3.ogg')
+1 -1
View File
@@ -6,7 +6,7 @@
var/damage_mod = 1
switch(damagetype) //Sorry about the magic numbers.
//brute = 1, burn = 2, tox = 4, oxy = 8
//brute = 1, burn = 2, tox = 4, oxy = 8
if(15) //4 damage types
damage_mod = 4