mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 15:08:02 +01:00
Whitespace cleanup part 3. (#19897)
* Whitespace cleanup part 3. * clean up mecha a lot, other review fixes
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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,
|
||||
|
||||
@@ -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
@@ -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,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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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>")
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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--
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
@@ -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')
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user