Merge remote-tracking branch 'VOREStation/master' into nova-basicfixes

This commit is contained in:
Unknown
2022-12-30 15:25:24 -05:00
72 changed files with 1009 additions and 279 deletions
+2
View File
@@ -13,6 +13,8 @@
#define WEATHER_ASH_STORM "ash storm" // Ripped from TG, like the above. Less harmless.
#define WEATHER_ASH_STORM_SAFE "light ash storm" //Safe version of the ash storm. Dimmer.
#define WEATHER_FALLOUT "fallout" // Modified emberfall, actually harmful. Admin only.
#define WEATHER_FALLOUT_TEMP "short-term fallout" // Nuclear fallout that actually ends. Firework-only
#define WEATHER_CONFETTI "confetti" // Firework-only
#define MOON_PHASE_NEW_MOON "new moon"
#define MOON_PHASE_WAXING_CRESCENT "waxing crescent"
+1 -6
View File
@@ -140,12 +140,7 @@
return
// Cache this since S may go away after use()
var/list/sheet_matter
if(istype(S, /obj/item/stack/material))
var/obj/item/stack/material/MS = S
sheet_matter = list(MS.material.name = 2000)
else
sheet_matter = S.matter
var/list/sheet_matter = S.matter
// Calculate total amount of material for one sheet
var/matter_per_sheet = 0
+1 -1
View File
@@ -41,7 +41,7 @@ var/list/outfits_decls_by_type_
var/l_hand = null
// In the list(path=count,otherpath=count) format
var/list/uniform_accessories = list() // webbing, armbands etc - fits in slot_tie
var/list/backpack_contents = list()
var/list/backpack_contents = list()
var/id_type
var/id_desc
+4 -1
View File
@@ -25,7 +25,7 @@
dept_time_required = 60
alt_titles = list("Crew Resources Officer" = /datum/alt_title/cro, "Deputy Manager" = /datum/alt_title/deputy_manager, "Staff Manager" = /datum/alt_title/staff_manager,
"Facility Steward" = /datum/alt_title/facility_steward)
"Facility Steward" = /datum/alt_title/facility_steward, "First Mate" = /datum/alt_title/first_mate)
access = list(access_security, access_sec_doors, access_brig, access_forensics_lockers,
access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads,
@@ -49,6 +49,9 @@
/datum/alt_title/facility_steward
title = "Facility Steward"
/datum/alt_title/first_mate
title = "First Mate"
/datum/job/hop/get_request_reasons()
return list("ID modification", "Training crew")
+5 -1
View File
@@ -50,7 +50,8 @@
/datum/job/atmos
spawn_positions = 3
pto_type = PTO_ENGINEERING
alt_titles = list("Atmospheric Engineer" = /datum/alt_title/atmos_engi, "Atmospheric Maintainer" = /datum/alt_title/atmos_maint, "Disposals Technician" = /datum/alt_title/disposals_tech)
alt_titles = list("Atmospheric Engineer" = /datum/alt_title/atmos_engi, "Atmospheric Maintainer" = /datum/alt_title/atmos_maint, "Disposals Technician" = /datum/alt_title/disposals_tech,
"Fuel Technician" = /datum/alt_title/refuel_tech)
/datum/alt_title/atmos_maint
title = "Atmospheric Maintainer"
@@ -62,5 +63,8 @@
title = "Disposals Technician"
title_blurb = "A Disposals Technician is an Atmospheric Technician still and can fulfill all the same duties, although specializes more in disposals delivery system's operations and configurations."
/datum/alt_title/refuel_tech
title = "Fuel Technician"
/datum/job/atmos/get_request_reasons()
return list("Construction project", "Repairs necessary")
+4 -1
View File
@@ -23,7 +23,7 @@
/datum/job/warden
pto_type = PTO_SECURITY
dept_time_required = 20
alt_titles = list("Brig Sentry" = /datum/alt_title/brig_sentry, "Armory Superintendent" = /datum/alt_title/armory_superintendent)
alt_titles = list("Brig Sentry" = /datum/alt_title/brig_sentry, "Armory Superintendent" = /datum/alt_title/armory_superintendent, "Master-at-Arms" = /datum/alt_title/master_at_arms)
/datum/alt_title/brig_sentry
title = "Brig Sentry"
@@ -31,6 +31,9 @@
/datum/alt_title/armory_superintendent
title = "Armory Superintendent"
/datum/alt_title/master_at_arms
title = "Master-at-Arms"
/datum/job/warden/get_request_reasons()
return list("Wildlife management")
+5 -5
View File
@@ -104,7 +104,7 @@
if(shocked)
shock(user, 50)
tgui_interact(user)
/obj/machinery/autolathe/attackby(var/obj/item/O as obj, var/mob/user as mob)
@@ -135,7 +135,7 @@
if(istype(O,/obj/item/ammo_magazine/clip) || istype(O,/obj/item/ammo_magazine/s357) || istype(O,/obj/item/ammo_magazine/s38) || istype (O,/obj/item/ammo_magazine/s44)/* VOREstation Edit*/) // Prevents ammo recycling exploit with speedloaders.
to_chat(user, "\The [O] is too hazardous to recycle with the autolathe!")
return
return ..()
/obj/machinery/autolathe/attack_hand(mob/user as mob)
@@ -177,12 +177,12 @@
max_sheets = 0
//Build list of multipliers for sheets.
multiplier = tgui_input_number(usr, "How many do you want to print? (0-[max_sheets])", null, null, max_sheets, 0)
if(!multiplier || multiplier <= 0 || multiplier > max_sheets || tgui_status(usr, state) != STATUS_INTERACTIVE)
if(!multiplier || multiplier <= 0 || (multiplier != round(multiplier)) || multiplier > max_sheets || tgui_status(usr, state) != STATUS_INTERACTIVE)
return FALSE
//Check if we still have the materials.
var/coeff = (making.no_scale ? 1 : mat_efficiency) //stacks are unaffected by production coefficient
for(var/datum/material/used_material as anything in making.resources)
var/amount_needed = making.resources[used_material] * coeff * multiplier
materials_used[used_material] = amount_needed
@@ -190,7 +190,7 @@
if(LAZYLEN(materials_used))
if(!materials.has_materials(materials_used))
return
materials.use_materials(materials_used)
busy = making.name
+38 -34
View File
@@ -683,34 +683,30 @@
seenturfs += T
for(var/mob/M as anything in living_mob_list)
if(M.z != z) //Skip
if(M.z != z || !(get_turf(M) in seenturfs)) // Skip
continue
if(get_turf(M) in seenturfs)
assess_and_assign(M, targets, secondarytargets)
switch(assess_living(M))
if(TURRET_PRIORITY_TARGET)
targets += M
if(TURRET_SECONDARY_TARGET)
secondarytargets += M
/* This was dumb. Why do this and then check line of sight later?
for(var/mob/M in mobs_in_xray_view(world.view, src))
assess_and_assign(M, targets, secondarytargets)
*/
for(var/obj/mecha/M as anything in mechas_list)
if(M.z != z || !(get_turf(M) in seenturfs)) // Skip
continue
switch(assess_mecha(M))
if(TURRET_PRIORITY_TARGET)
targets += M
if(TURRET_SECONDARY_TARGET)
secondarytargets += M
if(!tryToShootAt(targets))
if(!tryToShootAt(secondarytargets)) // if no valid targets, go for secondary targets
timeout--
if(timeout <= 0)
spawn()
popDown() // no valid targets, close the cover
if(!tryToShootAt(targets) && !tryToShootAt(secondarytargets) && --timeout <= 0)
popDown() // no valid targets, close the cover
if(auto_repair && (health < maxhealth))
use_power(20000)
health = min(health+1, maxhealth) // 1HP for 20kJ
/obj/machinery/porta_turret/proc/assess_and_assign(var/mob/living/L, var/list/targets, var/list/secondarytargets)
switch(assess_living(L))
if(TURRET_PRIORITY_TARGET)
targets += L
if(TURRET_SECONDARY_TARGET)
secondarytargets += L
/obj/machinery/porta_turret/proc/assess_living(var/mob/living/L)
if(!istype(L))
return TURRET_NOT_TARGET
@@ -718,9 +714,6 @@
if(L.invisibility >= INVISIBILITY_LEVEL_ONE) // Cannot see him. see_invisible is a mob-var
return TURRET_NOT_TARGET
if(!L)
return TURRET_NOT_TARGET
if(faction && L.faction == faction)
return TURRET_NOT_TARGET
@@ -765,6 +758,15 @@
return TURRET_PRIORITY_TARGET //if the perp has passed all previous tests, congrats, it is now a "shoot-me!" nominee
/obj/machinery/porta_turret/proc/assess_mecha(var/obj/mecha/M)
if(!istype(M))
return TURRET_NOT_TARGET
if(!M.occupant)
return check_all ? TURRET_SECONDARY_TARGET : TURRET_NOT_TARGET
return assess_living(M.occupant)
/obj/machinery/porta_turret/proc/assess_perp(var/mob/living/carbon/human/H)
if(!H || !istype(H))
return 0
@@ -786,6 +788,7 @@
/obj/machinery/porta_turret/proc/popUp() //pops the turret up
set waitfor = FALSE
if(disabled)
return
if(raising || raised)
@@ -807,6 +810,7 @@
timeout = 10
/obj/machinery/porta_turret/proc/popDown() //pops the turret down
set waitfor = FALSE
last_target = null
if(disabled)
return
@@ -835,17 +839,16 @@
/obj/machinery/porta_turret/proc/target(var/mob/living/target)
if(disabled)
return
return FALSE
if(target)
last_target = target
spawn()
popUp() //pop the turret up if it's not already up.
popUp() //pop the turret up if it's not already up.
set_dir(get_dir(src, target)) //even if you can't shoot, follow the target
playsound(src, 'sound/machines/turrets/turret_rotate.ogg', 100, 1) // Play rotating sound
spawn()
shootAt(target)
return 1
return
return TRUE
return FALSE
/obj/machinery/porta_turret/proc/shootAt(var/mob/living/target)
//any emagged turrets will shoot extremely fast! This not only is deadly, but drains a lot power!
@@ -857,9 +860,7 @@
sleep(shot_delay)
last_fired = FALSE
var/turf/T = get_turf(src)
var/turf/U = get_turf(target)
if(!istype(T) || !istype(U))
if(!isturf(get_turf(src)) || !isturf(get_turf(target)))
return
if(!raised) //the turret has to be raised in order to fire - makes sense, right?
@@ -874,9 +875,12 @@
A = new projectile(loc)
playsound(src, shot_sound, 75, 1)
// Lethal/emagged turrets use twice the power due to higher energy beams
// Emagged turrets again use twice as much power due to higher firing rates
use_power(reqpower * (2 * (emagged || lethal)) * (2 * emagged))
var/power_mult = 1
if(emagged)
power_mult = 4 // Lethal beams + higher rate of fire
else if(lethal)
power_mult = 2 // Lethal beams
use_power(reqpower * power_mult)
//Turrets aim for the center of mass by default.
//If the target is grabbing someone then the turret smartly aims for extremities
+2 -2
View File
@@ -391,7 +391,7 @@ var/list/global/slot_flags_enumeration = list(
//If you are making custom procs but would like to retain partial or complete functionality of this one, include a 'return ..()' to where you want this to happen.
//Set disable_warning to 1 if you wish it to not give you outputs.
//Should probably move the bulk of this into mob code some time, as most of it is related to the definition of slots and not item-specific
/obj/item/proc/mob_can_equip(M as mob, slot, disable_warning = FALSE)
/obj/item/proc/mob_can_equip(M as mob, slot, disable_warning = FALSE, var/ignore_obstruction = FALSE)
if(!slot) return 0
if(!M) return 0
@@ -417,7 +417,7 @@ var/list/global/slot_flags_enumeration = list(
//Next check if the slot is accessible.
var/mob/_user = disable_warning? null : H
if(!H.slot_is_accessible(slot, src, _user))
if(!H.slot_is_accessible(slot, src, _user) && !ignore_obstruction)
return 0
//Lastly, check special rules for the desired slot.
+8 -5
View File
@@ -240,7 +240,7 @@
//Return 1 if an immediate subsequent call to use() would succeed.
//Ensures that code dealing with stacks uses the same logic
/obj/item/stack/proc/can_use(var/used)
if(used < 0 || used % 1)
if(used < 0 || (used != round(used)))
stack_trace("Tried to use a bad stack amount: [used]")
return 0
if(get_amount() < used)
@@ -265,7 +265,7 @@
return 1
/obj/item/stack/proc/add(var/extra)
if(extra < 0 || extra % 1)
if(extra < 0 || (extra != round(extra)))
stack_trace("Tried to add a bad stack amount: [extra]")
return 0
if(!uses_charge)
@@ -283,7 +283,7 @@
S.add_charge(charge_costs[i] * extra)
/obj/item/stack/proc/set_amount(var/new_amount, var/no_limits = FALSE)
if(new_amount < 0 || new_amount % 1)
if(new_amount < 0 || (new_amount != round(new_amount)))
stack_trace("Tried to set a bad stack amount: [new_amount]")
return 0
@@ -321,7 +321,7 @@
if (isnull(tamount))
tamount = src.get_amount()
if(tamount < 0 || tamount % 1)
if(tamount < 0 || (tamount != round(tamount)))
stack_trace("Tried to transfer a bad stack amount: [tamount]")
return 0
@@ -347,7 +347,7 @@
if(uses_charge)
return null
if(tamount < 0 || tamount % 1)
if(tamount < 0 || (tamount != round(tamount)))
stack_trace("Tried to split a bad stack amount: [tamount]")
return null
@@ -403,6 +403,9 @@
/obj/item/stack/attack_hand(mob/user as mob)
if (user.get_inactive_hand() == src)
var/N = tgui_input_number(usr, "How many stacks of [src] would you like to split off? There are currently [amount].", "Split stacks", 1, amount, 1)
if(N != round(N))
to_chat(user, "<span class='warning'>You cannot separate a non-whole number of stacks!</span>")
return
if(N)
var/obj/item/stack/F = src.split(N)
if (F)
+1 -1
View File
@@ -56,7 +56,7 @@
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>")
if(do_after(user, 20) && do_after(H, 20, 5, 0)) //user needs to keep their active hand, H does not.
if(do_after(user, 20, H)) //user needs to keep their active hand, H does not.
user.visible_message("<span class='notice'>[user] does [H]'s lips with \the [src].</span>", \
"<span class='notice'>You apply \the [src].</span>")
H.lip_style = colour
@@ -56,10 +56,7 @@
to_chat(user, "<span class='notice'>You cut open the present.</span>")
for(var/mob/M in src) //Should only be one but whatever.
M.loc = src.loc
if (M.client)
M.client.eye = M.client.mob
M.client.perspective = MOB_PERSPECTIVE
M.forceMove(src.loc)
qdel(src)
@@ -180,11 +177,7 @@
var/obj/effect/spresent/present = new /obj/effect/spresent (H.loc)
src.amount -= 2
if (H.client)
H.client.perspective = EYE_PERSPECTIVE
H.client.eye = present
H.loc = present
H.forceMove(present)
add_attack_logs(user,H,"Wrapped with [src]")
else
+3 -3
View File
@@ -16,7 +16,7 @@
for (var/obj/item/weapon/grab/G in H.grabbed_by)
if (G.loc == user && G.state >= GRAB_AGGRESSIVE)
return TRUE
return FALSE
/obj/item/weapon/tape_roll/attack(var/mob/living/carbon/human/H, var/mob/user)
@@ -53,7 +53,7 @@
return
user.visible_message("<span class='danger'>\The [user] has taped up \the [H]'s eyes!</span>")
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/blindfold/tape(H), slot_glasses)
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/blindfold/tape(H), slot_glasses, ignore_obstructions = FALSE)
H.update_inv_glasses()
playsound(src, 'sound/effects/tape.ogg',25)
@@ -83,7 +83,7 @@
user.visible_message("<span class='danger'>\The [user] has taped up \the [H]'s mouth!</span>")
H.equip_to_slot_or_del(new /obj/item/clothing/mask/muzzle/tape(H), slot_wear_mask)
H.equip_to_slot_or_del(new /obj/item/clothing/mask/muzzle/tape(H), slot_wear_mask, ignore_obstructions = FALSE)
H.update_inv_wear_mask()
playsound(src, 'sound/effects/tape.ogg',25)
@@ -99,6 +99,7 @@
playsound(src, 'sound/items/change_jaws.ogg', 50, 1)
user.drop_item(src)
counterpart.forceMove(get_turf(src))
counterpart.persist_storable = persist_storable
src.forceMove(counterpart)
user.put_in_active_hand(counterpart)
to_chat(user, "<span class='notice'>You attach the cutting jaws to [src].</span>")
@@ -141,6 +141,7 @@
playsound(src,'sound/items/change_drill.ogg',50,1)
user.drop_item(src)
counterpart.forceMove(get_turf(src))
counterpart.persist_storable = persist_storable
src.forceMove(counterpart)
user.put_in_active_hand(counterpart)
to_chat(user, "<span class='notice'>You attach the bolt driver bit to [src].</span>")
@@ -126,6 +126,7 @@
playsound(src, 'sound/items/change_jaws.ogg', 50, 1)
user.drop_item(src)
counterpart.forceMove(get_turf(src))
counterpart.persist_storable = persist_storable
src.forceMove(counterpart)
user.put_in_active_hand(counterpart)
to_chat(user, "<span class='notice'>You attach the pry jaws to [src].</span>")
@@ -104,6 +104,7 @@
playsound(src,'sound/items/change_drill.ogg',50,1)
user.drop_item(src)
counterpart.forceMove(get_turf(src))
counterpart.persist_storable = persist_storable
src.forceMove(counterpart)
user.put_in_active_hand(counterpart)
to_chat(user, "<span class='notice'>You attach the screw driver bit to [src].</span>")
@@ -210,7 +210,7 @@
/obj/item/weapon/cell/device,
/obj/item/device/radio,
/obj/item/device/gps/explorer,
/obj/item/weapon/gun/energy/taser)
/obj/item/weapon/gun/energy/gun/protector/pilotgun/locked)
/obj/structure/closet/secure_closet/pilot/Initialize()
if(prob(50))
@@ -1,3 +1,8 @@
/obj/structure/ghost_pod/proc/reset_ghostpod() //Makes the ghost pod usable again and re-adds it to the active ghost pod list if it is not on it.
active_ghost_pods |= src
used = FALSE
busy = FALSE
/obj/structure/ghost_pod/ghost_activated/maintpred
name = "maintenance hole"
desc = "Looks like some creature dug its way into station's maintenance..."
@@ -48,23 +53,26 @@
/obj/structure/ghost_pod/ghost_activated/maintpred/create_occupant(var/mob/M)
..()
var/choice
var/randomize
var/finalized = "No"
if(jobban_isbanned(M, "GhostRoles"))
to_chat(M, "<span class='warning'>You cannot inhabit this creature because you are banned from playing ghost roles.</span>")
reset_ghostpod()
return
while(finalized == "No" && M.client)
if(jobban_isbanned(M, "GhostRoles"))
to_chat(M, "<span class='warning'>You cannot inhabit this creature because you are banned from playing ghost roles.</span>")
return
choice = tgui_input_list(M, "What type of predator do you want to play as?", "Maintpred Choice", possible_mobs)
if(!choice)
randomize = TRUE
break
if(!choice) //We probably pushed the cancel button on the mob selection. Let's just put the ghost pod back in the list.
to_chat(M, "<span class='notice'>No mob selected, cancelling.</span>")
reset_ghostpod()
return
if(choice)
finalized = tgui_alert(M, "Are you sure you want to play as [choice]?","Confirmation",list("No","Yes"))
if(randomize)
choice = pick(possible_mobs)
if(!choice) //If somehow we ended up here and we don't have a choice, let's just reset things!
reset_ghostpod()
return
var/mobtype = possible_mobs[choice]
var/mob/living/simple_mob/newPred = new mobtype(get_turf(src))
@@ -117,4 +125,4 @@
qdel(src)
/obj/structure/ghost_pod/ghost_activated/morphspawn/no_announce
announce_prob = 0
announce_prob = 0
+1 -1
View File
@@ -81,7 +81,7 @@
return
// Making windows, different per subtype
else if(istype(W, /obj/item/stack/material/glass))
else if(istype(W, /obj/item/stack/material/glass) || istype(W, /obj/item/stack/material/cyborg/glass))
handle_glass_use(user, W)
return
+15
View File
@@ -652,6 +652,21 @@
message_admins(log)
log_admin(log)
/datum/admins/proc/toggle_firework_override()
set category = "Fun"
set name = "Toggle Weather Firework Override"
set desc = "Toggles ability for weather fireworks to affect weather on planet of choice."
if(!check_rights(R_DEBUG))
return
var/datum/planet/planet = tgui_input_list(usr, "Which planet do you want to toggle firework effects on?", "Change Weather", SSplanets.planets)
if(istype(planet) && planet.weather_holder)
planet.weather_holder.firework_override = !(planet.weather_holder.firework_override)
var/log = "[key_name(src)] toggled [planet.name]'s firework override to [planet.weather_holder.firework_override ? "on" : "off"]."
message_admins(log)
log_admin(log)
/datum/admins/proc/change_time()
set category = "Debug"
set name = "Change Planet Time"
-22
View File
@@ -15,7 +15,6 @@
var/airlock_wire = null
var/datum/wires/connected = null
var/datum/radio_frequency/radio_connection
var/deadman = FALSE
/obj/item/device/assembly/signaler/Initialize()
. = ..()
@@ -131,27 +130,6 @@
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
/obj/item/device/assembly/signaler/process()
if(!deadman)
STOP_PROCESSING(SSobj, src)
var/mob/M = src.loc
if(!M || !ismob(M))
if(prob(5))
signal()
deadman = FALSE
STOP_PROCESSING(SSobj, src)
else if(prob(5))
M.visible_message("[M]'s finger twitches a bit over [src]'s signal button!")
/obj/item/device/assembly/signaler/verb/deadman_it()
set src in usr
set name = "Threaten to push the button!"
set desc = "BOOOOM!"
deadman = TRUE
START_PROCESSING(SSobj, src)
log_and_message_admins("is threatening to trigger a signaler deadman's switch")
usr.visible_message("<font color='red'>[usr] moves their finger over [src]'s signal button...</font>")
/obj/item/device/assembly/signaler/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
+22 -14
View File
@@ -216,23 +216,31 @@
for(var/mob/living/L in view(src))
if(L.stat == DEAD)
continue // Already dying or dead.
if(L.faction == blob_type.faction)
continue // No friendly fire.
if(locate(/obj/structure/blob) in L.loc)
continue // Already has a blob over them.
if(can_attack(L))
potential_targets += L
var/obj/structure/blob/B = null
for(var/direction in cardinal)
var/turf/T = get_step(L, direction)
B = locate(/obj/structure/blob) in T
if(B && B.overmind == src)
break
if(!B)
continue
potential_targets += L
for(var/obj/mecha/M in view(src))
if(!M.occupant)
continue // Just a hunk of metal
if(can_attack(M.occupant))
potential_targets += M
if(potential_targets.len)
var/mob/living/victim = pick(potential_targets)
var/turf/T = get_turf(victim)
expand_blob(T)
/mob/observer/blob/proc/can_attack(var/mob/living/L)
if(!istype(L))
return FALSE
if(L.faction == blob_type.faction)
return FALSE // No friendly fire.
if(locate(/obj/structure/blob) in get_turf(L))
return FALSE // Already has a blob over them.
for(var/direction in cardinal)
var/turf/T = get_step(L, direction)
var/obj/structure/blob/B = locate(/obj/structure/blob) in T
if(B && B.overmind == src)
return TRUE
return FALSE
@@ -92,13 +92,13 @@
//Orange emergency space suit
/obj/item/clothing/head/helmet/space/emergency
name = "Emergency Space Helmet"
name = "emergency soft helmet"
icon_state = "syndicate-helm-orange"
desc = "A simple helmet with a built in light, smells like mothballs."
flash_protection = FLASH_PROTECTION_NONE
/obj/item/clothing/suit/space/emergency
name = "Emergency Softsuit"
name = "emergency softsuit"
icon_state = "syndicate-orange"
desc = "A thin, ungainly softsuit colored in blaze orange for rescuers to easily locate, looks pretty fragile."
slowdown = 2
+1 -1
View File
@@ -86,7 +86,7 @@
..()
return
var/obj/item/stack/cable_coil/CC = new (user.loc)
var/obj/item/stack/cable_coil/CC = new (user.loc, 1)
CC.update_icon()
cut_overlays()
string_attached = null
+124
View File
@@ -0,0 +1,124 @@
/obj/machinery/firework_launcher
name = "firework launcher"
desc = "A machine for launching fireworks of varying practicality."
icon = 'icons/obj/machines/firework_launcher.dmi'
icon_state = "launcher01"
density = TRUE
anchored = TRUE
circuit = /obj/item/weapon/circuitboard/firework_launcher
var/obj/item/weapon/firework_star/loaded_star
var/last_launch
var/launch_cooldown = 5 MINUTES
/obj/machinery/firework_launcher/Initialize()
. = ..()
default_apply_parts()
last_launch = world.time // Prevents cheesing cooldown by deconstructing and reconstructing
update_icon()
/obj/machinery/firework_launcher/RefreshParts()
launch_cooldown = 5 MINUTES
var/rating = 0
for(var/obj/item/weapon/stock_parts/micro_laser/laser in component_parts)
rating += laser.rating - 1
launch_cooldown = max(0, (launch_cooldown - ((rating*30) SECONDS))) // For every part tier above 1 on the two lasers, reduce cooldown by 30 seconds. 1 minute cooldown on the tier 5 parts, 3 minutes on tier 3.
. = ..()
/obj/machinery/firework_launcher/update_icon()
icon_state = "launcher[loaded_star ? "1" : "0"][anchored ? "1" : "0"][panel_open ? "_open" : ""]"
/obj/machinery/firework_launcher/attackby(var/obj/item/O, var/mob/user)
if(default_deconstruction_screwdriver(user, O))
update_icon()
return
if(default_deconstruction_crowbar(user, O))
return
if(default_part_replacement(user, O))
return
if(default_unfasten_wrench(user, O, 20))
update_icon()
return
if(istype(O, /obj/item/weapon/firework_star))
loaded_star = O
user.drop_item()
O.forceMove(src)
to_chat(user, "<span class='notice'>You insert the firework star into the launcher.</span>")
add_fingerprint(user)
update_icon()
return
return ..()
/obj/machinery/firework_launcher/verb/eject()
set category = "Object"
set name = "Eject Firework Star"
set src in oview(1)
var/mob/living/user = usr
if(!user || user.stat != 0)
return
if(!loaded_star)
to_chat(user, "<span class='notice'>There is no firework star loaded in the launcher.</span>")
return
else
loaded_star.forceMove(get_turf(src))
loaded_star = null
add_fingerprint(user)
update_icon()
/obj/machinery/firework_launcher/attack_hand(mob/user) // Maybe this proc could be better as entirely its own proc, called from attack_hand, but also I don't really see the point
if(panel_open)
to_chat(user, "<span class='warning'>Close the panel first!</span>")
return
if(!loaded_star)
to_chat(user, "<span class='notice'>There is no firework star loaded in the launcher.</span>")
return
if((world.time - last_launch) <= launch_cooldown)
to_chat(user, "<span class='notice'>The launcher is still re-priming for launch.</span>")
return
if(!anchored)
to_chat(user, "<span class='warning'>Launcher must be firmly secured to the ground before firework can be launched!</span>")
return
var/datum/planet/P = get_planet()
if(!P || !(P.weather_holder)) // There are potential cases of being outside but not on planet. And checking whether planet has weather at all is more sanity thing than anything.
to_chat(user, "<span class='warning'>Launcher beeps as its safeties seem to prevent launch in the current location.</span>")
return
var/datum/weather_holder/WH = P.weather_holder
if(WH.firework_override && istype(loaded_star, /obj/item/weapon/firework_star/weather)) // Enable weather-based events to not be ruined
to_chat(user, "<span class='warning'>Launcher beeps as it seems some interference is preventing launch of this type of firework.</span>")
return
to_chat(user, "<span class='notice'>You launch the firework!</span>")
playsound(get_turf(src), 'sound/weapons/rpg.ogg', 75, 1)
loaded_star.trigger_firework(WH)
qdel(loaded_star)
loaded_star = null
last_launch = world.time
add_fingerprint(user)
update_icon()
flick("launcher_launch", src)
/obj/machinery/firework_launcher/proc/get_planet()
var/turf/T = get_turf(src)
if(!T)
return
if(!T.is_outdoors())
return
var/datum/planet/P = SSplanets.z_to_planet[T.z]
if(!P)
return
return P
+142
View File
@@ -0,0 +1,142 @@
#define T_FIREWORK_WEATHER_STAR(name) "weather firework star (" + (name) + ")"
/obj/item/weapon/firework_star
icon = 'icons/obj/firework_stars.dmi'
name = "firework star"
desc = "A very tightly compacted ball of chemicals for use with firework launcher."
icon_state = "star"
w_class = ITEMSIZE_SMALL
origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 1)
/obj/item/weapon/firework_star/proc/trigger_firework(var/datum/weather_holder/w_holder)
return
/obj/item/weapon/firework_star/weather
name = "weather firework star"
desc = "A firework star designed to alter a weather, rather than put on a show."
var/weather_type
origin_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 2)
/obj/item/weapon/firework_star/weather/trigger_firework(var/datum/weather_holder/w_holder)
if(!w_holder) // Sanity
return
if(w_holder.firework_override) // Make sure weather-based events can't be interfered with
return
if(weather_type && (weather_type in w_holder.allowed_weather_types))
w_holder.message_all_outdoor_players("Something seems to flash in the sky, as weather suddenly shifts!")
w_holder.change_weather(weather_type)
w_holder.rebuild_forecast()
/obj/item/weapon/firework_star/weather/clear
name = T_FIREWORK_WEATHER_STAR("CLEAR SKY")
weather_type = WEATHER_CLEAR
icon_state = "clear"
/obj/item/weapon/firework_star/weather/overcast
name = T_FIREWORK_WEATHER_STAR("CLOUDY")
weather_type = WEATHER_OVERCAST
icon_state = "cloudy"
/obj/item/weapon/firework_star/weather/rain
name = T_FIREWORK_WEATHER_STAR("RAIN")
weather_type = WEATHER_RAIN
icon_state = "rain"
/obj/item/weapon/firework_star/weather/storm
name = T_FIREWORK_WEATHER_STAR("STORM")
weather_type = WEATHER_STORM
icon_state = "rain"
/obj/item/weapon/firework_star/weather/light_snow
name = T_FIREWORK_WEATHER_STAR("SNOW - LIGHT")
weather_type = WEATHER_LIGHT_SNOW
icon_state = "snow"
/obj/item/weapon/firework_star/weather/snow
name = T_FIREWORK_WEATHER_STAR("SNOW - MEDIUM")
weather_type = WEATHER_SNOW
icon_state = "snow"
/obj/item/weapon/firework_star/weather/blizzard
name = T_FIREWORK_WEATHER_STAR("SNOW - HEAVY")
weather_type = WEATHER_BLIZZARD
icon_state = "snow"
/obj/item/weapon/firework_star/weather/hail
name = T_FIREWORK_WEATHER_STAR("HAIL")
weather_type = WEATHER_HAIL
icon_state = "snow"
origin_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 2, TECH_ILLEGAL = 1)
/obj/item/weapon/firework_star/weather/fallout
name = T_FIREWORK_WEATHER_STAR("NUCLEAR")
desc = "This is the worst idea ever."
weather_type = WEATHER_FALLOUT_TEMP
icon_state = "nuclear"
origin_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
/obj/item/weapon/firework_star/weather/confetti
name = T_FIREWORK_WEATHER_STAR("CONFETTI")
desc = "A firework star designed to alter a weather, rather than put on a show. This one makes colorful confetti rain from the sky."
weather_type = WEATHER_CONFETTI
icon_state = "confetti"
/obj/item/weapon/firework_star/aesthetic
name = "aesthetic firework star"
desc = "A firework star designed to paint the sky with pretty lights."
var/list/firework_adjectives = list("beautiful", "pretty", "fancy", "colorful", "bright", "shimmering")
var/list/firework_colors = list("red", "orange", "yellow", "green", "cyan", "blue", "purple", "pink", "beige", "white")
/obj/item/weapon/firework_star/aesthetic/trigger_firework(var/datum/weather_holder/w_holder)
if(!w_holder)
return
w_holder.message_all_outdoor_players(get_firework_message())
/obj/item/weapon/firework_star/aesthetic/proc/get_firework_message()
return "You see a [pick(firework_adjectives)] explosion of [pick(firework_colors)] sparks in the sky!"
/obj/item/weapon/firework_star/aesthetic/configurable
name = "configurable aesthetic firework star"
desc = "A firework star designed to paint the sky with pretty lights. This one's advanced and can be configured to specific shapes or colors."
icon_state = "config"
var/current_color = "white"
var/current_shape = "Random"
var/list/firework_shapes = list("none", "Random",
"a circle", "an oval", "a triangle", "a square", "a pentagon", "a hexagon", "an octagon", "a plus sign", "an x", "a star", "a spiral", "a heart", "a teardrop",
"a smiling face", "a winking face", "a mouse", "a cat", "a dog", "a fox", "a bird", "a fish", "a lizard", "a bug", "a butterfly", "a robot", "a dragon", "a teppi", "a catslug",
"a tree", "a leaf", "a flower", "a lightning bolt", "a cloud", "a sun", "a gemstone", "a flame", "a wrench", "a beaker", "a syringe", "a pickaxe", "a pair of handcuffs", "a crown",
"a bottle", "a boat", "a spaceship",
"Nanotrasen logo", "a geometric-looking letter S", "a dodecahedron")
/obj/item/weapon/firework_star/aesthetic/configurable/attack_self(var/mob/user)
var/choice = tgui_alert(usr, "What setting do you want to adjust?", "Firework Star", list("Color", "Shape", "Nothing"))
if(src.loc != user)
return
if(choice == "Color")
var/color_choice = tgui_input_list(user, "What color would you like firework to be?", "Firework Star", firework_colors)
if(src.loc != user)
return
if(color_choice)
current_color = color_choice
if(choice == "Shape")
var/shape_choice = tgui_input_list(user, "What shape would you like firework to be?", "Firework Star", firework_shapes)
if(src.loc != user)
return
if(shape_choice)
current_shape = shape_choice
/obj/item/weapon/firework_star/aesthetic/configurable/get_firework_message()
var/temp_shape = current_shape
if(temp_shape == "Random")
var/list/shapes_copy = firework_shapes.Copy()
shapes_copy -= "Random"
temp_shape = pick(shapes_copy)
if(temp_shape == "none" || !temp_shape)
return "You see a [pick(firework_adjectives)] explosion of [current_color] sparks in the sky!"
else
return "You see a [pick(firework_adjectives)] explosion of [current_color] sparks in the sky, forming into shape of [current_shape]!"
@@ -0,0 +1,8 @@
/obj/item/weapon/circuitboard/firework_launcher
name = T_BOARD("firework launcher")
board_type = new /datum/frame/frame_types/machine
build_path = /obj/machinery/firework_launcher
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 2)
req_components = list (
/obj/item/weapon/stock_parts/micro_laser = 2
)
@@ -217,14 +217,14 @@
amount = params["amount"]
else
amount = tgui_input_number(usr, "How many items?", "How many items would you like to take out?", 1)
if(QDELETED(src) || QDELETED(usr) || !usr.Adjacent(src))
return FALSE
var/index = text2num(params["index"])
if(index < 1 || index > LAZYLEN(item_records))
return TRUE
vend(item_records[index], amount)
return TRUE
return FALSE
@@ -257,7 +257,7 @@
if(stat & (NOPOWER|BROKEN))
return TRUE
if(usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf)))
if(!allowed(usr) && !emagged && locked != -1 && action == "Release")
if((!allowed(usr) && scan_id) && !emagged && locked != -1 && action == "Release")
to_chat(usr, "<span class='warning'>Access denied.</span>")
return TRUE
return ..()
+1 -2
View File
@@ -132,13 +132,12 @@
display_name = "reinforced borosilicate glass"
stack_type = /obj/item/stack/material/glass/phoronrglass
stack_origin_tech = list(TECH_MATERIAL = 5)
composite_material = list() //todo
window_options = list("One Direction" = 1, "Full Window" = 4)
created_window = /obj/structure/window/phoronreinforced
created_fulltile_window = /obj/structure/window/phoronreinforced/full
hardness = 40
weight = 30
stack_origin_tech = list(TECH_MATERIAL = 2)
composite_material = list(MAT_STEEL = SHEET_MATERIAL_AMOUNT / 2, "borosilicate glass" = SHEET_MATERIAL_AMOUNT)
composite_material = list(MAT_STEEL = SHEET_MATERIAL_AMOUNT / 2, MAT_PGLASS = SHEET_MATERIAL_AMOUNT)
rod_product = null
flags = MATERIAL_UNMELTABLE
@@ -13,7 +13,6 @@
created_fulltile_window = /obj/structure/window/titanium/full
wire_product = null
rod_product = /obj/item/stack/material/glass/titanium
composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, MAT_GLASS = SHEET_MATERIAL_AMOUNT)
/datum/material/glass/plastaniumglass
name = MAT_PLASTITANIUMGLASS
@@ -30,4 +29,3 @@
created_fulltile_window = /obj/structure/window/plastitanium/full
wire_product = null
rod_product = /obj/item/stack/material/glass/plastitanium
composite_material = list(MAT_PLASTITANIUM = SHEET_MATERIAL_AMOUNT, MAT_GLASS = SHEET_MATERIAL_AMOUNT)
@@ -7,6 +7,7 @@
icon_reinf = "reinf_mesh"
icon_colour = "#666677"
flags = MATERIAL_UNMELTABLE
composite_material = list(MAT_STEEL = SHEET_MATERIAL_AMOUNT)
/datum/material/steel/hull/place_sheet(var/turf/target) //Deconstructed into normal steel sheets.
new /obj/item/stack/material/steel(target)
@@ -20,6 +21,7 @@
icon_colour = "#777788"
explosion_resistance = 40
flags = MATERIAL_UNMELTABLE
composite_material = list(MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT)
/datum/material/plasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets.
new /obj/item/stack/material/plasteel(target)
@@ -33,6 +35,7 @@
explosion_resistance = 90
reflectivity = 0.9
flags = MATERIAL_UNMELTABLE
composite_material = list(MAT_DURASTEEL = SHEET_MATERIAL_AMOUNT)
/datum/material/durasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal durasteel sheets.
new /obj/item/stack/material/durasteel(target)
@@ -43,6 +46,7 @@
icon_base = "hull"
icon_reinf = "reinf_mesh"
flags = MATERIAL_UNMELTABLE
composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT)
/datum/material/titanium/hull/place_sheet(var/turf/target) //Deconstructed into normal titanium sheets.
new /obj/item/stack/material/titanium(target)
@@ -53,6 +57,7 @@
icon_base = "hull"
icon_reinf = "reinf_mesh"
flags = MATERIAL_UNMELTABLE
composite_material = list(MAT_MORPHIUM = SHEET_MATERIAL_AMOUNT)
/datum/material/morphium/hull/place_sheet(var/turf/target)
new /obj/item/stack/material/morphium(target)
@@ -5,6 +5,7 @@
icon_reinf = "reinf_mesh"
icon_colour = "#585658"
explosion_resistance = 50
composite_material = list(MAT_PLASTITANIUM = SHEET_MATERIAL_AMOUNT)
/datum/material/plastitanium/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets.
new /obj/item/stack/material/plastitanium(target)
@@ -15,6 +16,7 @@
icon_base = "hull"
icon_reinf = "reinf_mesh"
explosion_resistance = 50
composite_material = list(MAT_GOLD = SHEET_MATERIAL_AMOUNT)
/datum/material/gold/hull/place_sheet(var/turf/target) //Deconstructed into normal gold sheets.
new /obj/item/stack/material/gold(target)
@@ -17,7 +17,6 @@
protectiveness = 60 // 75%
reflectivity = 0.7 // Not a perfect mirror, but close.
stack_origin_tech = list(TECH_MATERIAL = 8)
composite_material = list("plasteel" = SHEET_MATERIAL_AMOUNT, "diamond" = SHEET_MATERIAL_AMOUNT) //shrug
supply_conversion_value = 9
/datum/material/titanium
@@ -28,7 +27,6 @@
door_icon_base = "metal"
icon_colour = "#D1E6E3"
icon_reinf = "reinf_metal"
composite_material = null
/datum/material/iron
name = "iron"
@@ -12,7 +12,6 @@
protectiveness = 20 // 50%
conductivity = 13 // For the purposes of balance.
stack_origin_tech = list(TECH_MATERIAL = 2)
composite_material = list(MAT_STEEL = SHEET_MATERIAL_AMOUNT, "platinum" = SHEET_MATERIAL_AMOUNT) //todo
supply_conversion_value = 6
/datum/material/plasteel/generate_recipes()
@@ -38,3 +37,4 @@
stack_type = /obj/item/stack/material/plasteel/rebar
sheet_singular_name = "rod"
sheet_plural_name = "rods"
composite_material = list(MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT)
@@ -12,7 +12,6 @@
protectiveness = 30
conductivity = 7
stack_origin_tech = list(TECH_MATERIAL = 5)
composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT)
supply_conversion_value = 8
/datum/material/plastitanium/generate_recipes()
+4 -4
View File
@@ -47,10 +47,10 @@ var/list/slot_equipment_priority = list( \
//set del_on_fail to have it delete W if it fails to equip
//set disable_warning to disable the 'you are unable to equip that' warning.
//unset redraw_mob to prevent the mob from being redrawn at the end.
/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, del_on_fail = 0, disable_warning = 0, redraw_mob = 1)
/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, del_on_fail = 0, disable_warning = 0, redraw_mob = 1, ignore_obstructions = 1)
if(!W)
return 0
if(!W.mob_can_equip(src, slot, disable_warning))
if(!W.mob_can_equip(src, slot, disable_warning, ignore_obstructions))
if(del_on_fail)
qdel(W)
@@ -68,8 +68,8 @@ var/list/slot_equipment_priority = list( \
return
//This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the rounds tarts and when events happen and such.
/mob/proc/equip_to_slot_or_del(obj/item/W as obj, slot)
return equip_to_slot_if_possible(W, slot, 1, 1, 0)
/mob/proc/equip_to_slot_or_del(obj/item/W as obj, slot, ignore_obstructions = 1)
return equip_to_slot_if_possible(W, slot, 1, 1, 0, ignore_obstructions)
//hurgh. these feel hacky, but they're the only way I could get the damn thing to work. I guess they could be handy for antag spawners too?
/mob/proc/equip_voidsuit_to_slot_or_del_with_refit(obj/item/clothing/suit/space/void/W as obj, slot, species = SPECIES_HUMAN)
@@ -101,14 +101,6 @@
/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone)
//Being hit while using a deadman switch
if(istype(get_active_hand(),/obj/item/device/assembly/signaler))
var/obj/item/device/assembly/signaler/signaler = get_active_hand()
if(signaler.deadman && prob(80))
log_and_message_admins("has triggered a signaler deadman's switch")
src.visible_message("<font color='red'>[src] triggers their deadman's switch!</font>")
signaler.signal()
if(ai_holder && P.firer)
ai_holder.react_to_attack(P.firer)
+35 -9
View File
@@ -111,17 +111,19 @@ var/datum/planet/virgo3b/planet_virgo3b = null
WEATHER_EMBERFALL = new /datum/weather/virgo3b/emberfall(),
WEATHER_ASH_STORM = new /datum/weather/virgo3b/ash_storm(),
WEATHER_ASH_STORM_SAFE = new /datum/weather/virgo3b/ash_storm_safe(),
WEATHER_FALLOUT = new /datum/weather/virgo3b/fallout()
WEATHER_FALLOUT = new /datum/weather/virgo3b/fallout(),
WEATHER_FALLOUT_TEMP = new /datum/weather/virgo3b/fallout/temp(),
WEATHER_CONFETTI = new /datum/weather/virgo3b/confetti()
)
roundstart_weather_chances = list(
WEATHER_CLEAR = 30,
WEATHER_OVERCAST = 30,
WEATHER_LIGHT_SNOW = 20,
WEATHER_SNOW = 5,
WEATHER_BLIZZARD = 5,
WEATHER_RAIN = 5,
WEATHER_STORM = 2.5,
WEATHER_HAIL = 2.5
WEATHER_CLEAR = 60,
WEATHER_OVERCAST = 60,
WEATHER_LIGHT_SNOW = 40,
WEATHER_SNOW = 10,
WEATHER_BLIZZARD = 10,
WEATHER_RAIN = 10,
WEATHER_STORM = 5,
WEATHER_HAIL = 5
)
/datum/weather/virgo3b
@@ -550,3 +552,27 @@ var/datum/planet/virgo3b/planet_virgo3b = null
if(T.is_outdoors())
SSradiation.radiate(T, rand(fallout_rad_low, fallout_rad_high))
/datum/weather/virgo3b/fallout/temp
name = "short-term fallout"
transition_chances = list(
WEATHER_FALLOUT = 10,
WEATHER_RAIN = 50,
WEATHER_STORM = 20,
WEATHER_OVERCAST = 5
)
/datum/weather/virgo3b/confetti
name = "confetti"
icon = 'icons/effects/weather_vr.dmi'
icon_state = "confetti"
transition_chances = list(
WEATHER_CLEAR = 50,
WEATHER_OVERCAST = 20,
WEATHER_CONFETTI = 5
)
observed_message = "Confetti is raining from the sky."
transition_messages = list(
"Suddenly, colorful confetti starts raining from the sky."
)
+27 -1
View File
@@ -131,7 +131,9 @@ var/datum/planet/virgo3c/planet_virgo3c = null
WEATHER_EMBERFALL = new /datum/weather/virgo3c/emberfall(),
WEATHER_ASH_STORM = new /datum/weather/virgo3c/ash_storm(),
WEATHER_ASH_STORM_SAFE = new /datum/weather/virgo3c/ash_storm_safe(),
WEATHER_FALLOUT = new /datum/weather/virgo3c/fallout()
WEATHER_FALLOUT = new /datum/weather/virgo3c/fallout(),
WEATHER_FALLOUT_TEMP = new /datum/weather/virgo3c/fallout/temp(),
WEATHER_CONFETTI = new /datum/weather/virgo3c/confetti()
)
roundstart_weather_chances = list(
WEATHER_CLEAR = 50,
@@ -548,6 +550,30 @@ var/datum/planet/virgo3c/planet_virgo3c = null
if(T.is_outdoors())
SSradiation.radiate(T, rand(fallout_rad_low, fallout_rad_high))
/datum/weather/virgo3c/fallout/temp
name = "short-term fallout"
transition_chances = list(
WEATHER_FALLOUT = 10,
WEATHER_RAIN = 50,
WEATHER_STORM = 20,
WEATHER_OVERCAST = 5
)
/datum/weather/virgo3c/confetti
name = "confetti"
icon = 'icons/effects/weather_vr.dmi'
icon_state = "confetti"
transition_chances = list(
WEATHER_CLEAR = 50,
WEATHER_OVERCAST = 20,
WEATHER_CONFETTI = 5
)
observed_message = "Confetti is raining from the sky."
transition_messages = list(
"Suddenly, colorful confetti starts raining from the sky."
)
/turf/unsimulated/wall/planetary/virgo3c
name = "impassable rock"
desc = "It's quite impassable"
+38 -6
View File
@@ -110,7 +110,9 @@ var/datum/planet/virgo4/planet_virgo4 = null
WEATHER_EMBERFALL = new /datum/weather/virgo4/emberfall(),
WEATHER_ASH_STORM = new /datum/weather/virgo4/ash_storm(),
WEATHER_ASH_STORM_SAFE = new /datum/weather/virgo4/ash_storm_safe(),
WEATHER_FALLOUT = new /datum/weather/virgo4/fallout()
WEATHER_FALLOUT = new /datum/weather/virgo4/fallout(),
WEATHER_FALLOUT_TEMP = new /datum/weather/virgo4/fallout/temp(),
WEATHER_CONFETTI = new /datum/weather/virgo4/confetti()
)
roundstart_weather_chances = list(
WEATHER_CLEAR = 50,
@@ -160,7 +162,8 @@ var/datum/planet/virgo4/planet_virgo4 = null
temp_low = 263.15 // -10c
light_modifier = 0.7
transition_chances = list(
WEATHER_LIGHT_SNOW = 100
WEATHER_LIGHT_SNOW = 15,
WEATHER_OVERCAST = 80
)
observed_message = "It is snowing lightly."
transition_messages = list(
@@ -178,7 +181,8 @@ var/datum/planet/virgo4/planet_virgo4 = null
light_modifier = 0.5
flight_failure_modifier = 5
transition_chances = list(
WEATHER_LIGHT_SNOW = 100
WEATHER_SNOW = 10,
WEATHER_LIGHT_SNOW = 80
)
observed_message = "It is snowing."
transition_messages = list(
@@ -210,7 +214,8 @@ var/datum/planet/virgo4/planet_virgo4 = null
light_modifier = 0.3
flight_failure_modifier = 10
transition_chances = list(
WEATHER_BLIZZARD = 100
WEATHER_BLIZZARD = 5,
WEATHER_SNOW = 80
)
observed_message = "A blizzard blows snow everywhere."
transition_messages = list(
@@ -294,7 +299,8 @@ var/datum/planet/virgo4/planet_virgo4 = null
transition_chances = list(
WEATHER_STORM = 100
WEATHER_STORM = 10,
WEATHER_RAIN = 80
)
/datum/weather/virgo4/storm/process_effects()
@@ -341,7 +347,9 @@ var/datum/planet/virgo4/planet_virgo4 = null
effect_message = "<span class='warning'>The hail smacks into you!</span>"
transition_chances = list(
WEATHER_HAIL = 100
WEATHER_HAIL = 10,
WEATHER_SNOW = 40,
WEATHER_RAIN = 40
)
observed_message = "Ice is falling from the sky."
transition_messages = list(
@@ -524,6 +532,30 @@ var/datum/planet/virgo4/planet_virgo4 = null
if(T.is_outdoors())
SSradiation.radiate(T, rand(fallout_rad_low, fallout_rad_high))
/datum/weather/virgo4/fallout/temp
name = "short-term fallout"
transition_chances = list(
WEATHER_FALLOUT = 10,
WEATHER_RAIN = 50,
WEATHER_STORM = 20,
WEATHER_OVERCAST = 5
)
/datum/weather/virgo4/confetti
name = "confetti"
icon = 'icons/effects/weather_vr.dmi'
icon_state = "confetti"
transition_chances = list(
WEATHER_CLEAR = 50,
WEATHER_OVERCAST = 20,
WEATHER_CONFETTI = 5
)
observed_message = "Confetti is raining from the sky."
transition_messages = list(
"Suddenly, colorful confetti starts raining from the sky."
)
/turf/unsimulated/wall/planetary/normal/virgo4
name = "deep ocean"
alpha = 0
+3
View File
@@ -1,3 +1,6 @@
/datum/weather_holder
var/firework_override = FALSE
/datum/weather_holder/update_icon_effects()
..()
if(current_weather.icon)
+3 -1
View File
@@ -12,6 +12,7 @@
user.put_in_active_hand(newcell)
var/percentage = charge/maxcharge
newcell.charge = newcell.maxcharge * percentage
newcell.persist_storable = persist_storable
qdel(src)
//The machine cell
@@ -36,8 +37,9 @@
user.put_in_active_hand(newcell)
var/percentage = charge/maxcharge
newcell.charge = newcell.maxcharge * percentage
newcell.persist_storable = persist_storable
qdel(src)
// Bloo friendlier hybrid tech
/obj/item/weapon/cell/device/weapon/recharge/alien/hybrid
icon = 'icons/obj/power_vr.dmi'
@@ -27,6 +27,10 @@
light_state = "prot_light"
flight_x_offset = 0
flight_y_offset = 0
action_button_name = "Toggle gun-light"
var/gun_light_icon = TRUE
var/gun_light_on = FALSE
var/brightness_on = 5
w_class = ITEMSIZE_SMALL
@@ -44,6 +48,17 @@
return ..()
/obj/item/weapon/gun/energy/gun/protector/ui_action_click(mob/user, actiontype)
gun_light_on = !gun_light_on
playsound(src, 'sound/weapons/empty.ogg', 40, TRUE)
update_brightness(user)
update_icon()
/obj/item/weapon/gun/energy/gun/protector/proc/update_brightness(mob/user = null)
if(gun_light_on)
set_light(brightness_on)
else
set_light(0)
/obj/item/weapon/gun/energy/gun/protector/emag_act(var/remaining_charges,var/mob/user)
..()
@@ -86,11 +101,12 @@
else
add_overlay("[icon_state]_[modifystate][ratio]")
if(can_flashlight & gun_light)
if(can_flashlight & gun_light_on)
var/mutable_appearance/flashlight_overlay = mutable_appearance(icon, light_state)
flashlight_overlay.pixel_x = flight_x_offset
flashlight_overlay.pixel_y = flight_y_offset
add_overlay(flashlight_overlay)
add_overlay(light_state)
/* Don't have one for this gun
if(itemState)
@@ -102,3 +118,43 @@
emagged = TRUE
name = "small energy gun"
desc = "The LAEP95 'Protector' is another firearm from Lawson Arms and "+TSC_HEPH+", unlike the Perun this is designed for issue to non-security staff. It contains a detachable cell. It also features an integrated flashlight!"
/obj/item/weapon/gun/energy/gun/protector/pilotgun/locked
name = "secure shuttle-protection pistol"
desc = "The LAEP97 'Defender' is a variant of another firearm from Lawson Arms and "+TSC_HEPH+", designed to be issued to pilots for defence of their craft from trespassers whilst in-flight. It contains a detachable cell, two modes of fire and a safety interlock to minimize workplace accidents. It also features an integrated flashlight!"
description_info = "This gun can only fire non-lethally. Additionally, it's incapable of firing within the proximity of Nanotrasen facilities courtesy of the built-in safety interlock."
description_fluff = "A lighter weapon designed for pilots, this gun has a wireless connection to the computer's datacore to ensure it can't be used within the bounds of NT facilities without authorization from ranking members of security, or the Captain."
firemodes = list(
list(mode_name="stunbeam", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="stun", charge_cost = 400),
list(mode_name="electrode", projectile_type=/obj/item/projectile/energy/electrode/strong, modifystate="zap", charge_cost = 800),
)
req_access = list(access_armory) //for toggling safety
var/locked = 1
var/lockable = 1
/obj/item/weapon/gun/energy/gun/protector/pilotgun/locked/attackby(obj/item/I, mob/user)
var/obj/item/weapon/card/id/id = I.GetID()
if(istype(id) && lockable)
if(check_access(id))
locked = !locked
to_chat(user, "<span class='warning'>You [locked ? "enable" : "disable"] the safety interlock on \the [src].</span>")
else
to_chat(user, "<span class='warning'>Access denied.</span>")
user.visible_message("<span class='notice'>[user] swipes \the [I] against \the [src].</span>")
else
return ..()
/obj/item/weapon/gun/energy/gun/protector/pilotgun/locked/emag_act(var/remaining_charges,var/mob/user)
return ..()
/obj/item/weapon/gun/energy/gun/protector/pilotgun/locked/special_check(mob/user)
if(locked)
var/turf/T = get_turf(src)
if(T.z in using_map.station_levels)
to_chat(user, "<span class='warning'>The safety device prevents the gun from firing this close to the facility.</span>")
return 0
return ..()
@@ -169,6 +169,13 @@
build_path = /obj/item/weapon/circuitboard/machine/vitals_monitor
sort_string = "HAAF"
/datum/design/circuit/firework_launcher
name = "firework launcher"
id = "fireworklauncher"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/weapon/circuitboard/firework_launcher
sort_string = "KBAAB"
/datum/design/circuit/pointdefense
name = "point defense battery"
id = "pointdefense"
@@ -0,0 +1,112 @@
// Firework Stars
/datum/design/item/firework_star/AssembleDesignName()
name = "Firework star prototype ([item_name])"
/datum/design/item/firework_star/aesthetic
name = "aesthetic"
desc = "A firework star, designed for use with launcher. Produces variable amount of joy."
id = "fireworkaesthetic"
req_tech = list(TECH_MATERIAL = 2)
materials = list(MAT_PLASTIC = 500, MAT_GLASS = 500)
build_path = /obj/item/weapon/firework_star/aesthetic
sort_string = "IFAAA"
/datum/design/item/firework_star/aesthetic_config
name = "aesthetic - configurable"
desc = "A firework star, designed for use with launcher. Produces variable amount of joy. Can be modified to produce specific forms."
id = "fireworkaestheticconfig"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2)
materials = list(MAT_PLASTIC = 1000, MAT_GLASS = 1000)
build_path = /obj/item/weapon/firework_star/aesthetic/configurable
sort_string = "IFAAB"
/datum/design/item/firework_star/weather_clear
name = "weather - CLEAR"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one clears the sky."
id = "fireworkclearsky"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_STEEL = 4000)
build_path = /obj/item/weapon/firework_star/weather/clear
sort_string = "IFABA"
/datum/design/item/firework_star/weather_overcast
name = "weather - CLOUDY"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates some clouds."
id = "fireworkcloudy"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 1000)
build_path = /obj/item/weapon/firework_star/weather/overcast
sort_string = "IFABB"
/datum/design/item/firework_star/weather_rain
name = "weather - RAIN"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates rain."
id = "fireworkrain"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 4000)
build_path = /obj/item/weapon/firework_star/weather/rain
sort_string = "IFABC"
/datum/design/item/firework_star/weather_storm
name = "weather - STORM"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a rainstorm."
id = "fireworkstorm"
req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_GOLD = 1000)
build_path = /obj/item/weapon/firework_star/weather/storm
sort_string = "IFABD"
/datum/design/item/firework_star/weather_light_snow
name = "weather - LIGHT SNOW"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a light snowfall."
id = "fireworklightsnow"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_LEAD = 2000)
build_path = /obj/item/weapon/firework_star/weather/light_snow
sort_string = "IFABE"
/datum/design/item/firework_star/weather_snow
name = "weather - MODERATE SNOW"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a moderate snowfall."
id = "fireworksnow"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_LEAD = 2000)
build_path = /obj/item/weapon/firework_star/weather/snow
sort_string = "IFABF"
/datum/design/item/firework_star/weather_blizzard
name = "weather - HEAVY SNOW"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a blizzard."
id = "fireworkblizzard"
req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_LEAD = 3000)
build_path = /obj/item/weapon/firework_star/weather/blizzard
sort_string = "IFABG"
/datum/design/item/firework_star/weather_hail
name = "weather - HAIL"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a hailstorm. DANGEROUS."
id = "fireworkhail"
req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5, TECH_ILLEGAL = 2)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_LEAD = 3000, MAT_PLASTEEL = 4000)
build_path = /obj/item/weapon/firework_star/weather/hail
sort_string = "IFABH"
/datum/design/item/firework_star/weather_fallout
name = "weather - NUCLEAR"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a heavy cloud of nuclear fallout. DANGEROUS."
id = "fireworkfallout"
req_tech = list(TECH_MATERIAL = 8, TECH_ENGINEERING = 6, TECH_ILLEGAL = 7)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_URANIUM = 12000)
build_path = /obj/item/weapon/firework_star/weather/fallout
sort_string = "IFABI"
/datum/design/item/firework_star/weather_confetti
name = "weather - CONFETTI"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one clears the sky and rains colorful confetti from it."
id = "fireworkconfetti"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
materials = list(MAT_PLASTIC = 10000, MAT_GLASS = 10000)
build_path = /obj/item/weapon/firework_star/weather/confetti
sort_string = "IFABJ"
+10 -1
View File
@@ -88,6 +88,15 @@
build_path = /obj/item/device/healthanalyzer/improved
sort_string = "KBAAB"
/datum/design/item/medical/advanced_analyzer
name = "advanced health analyzer"
desc = "An even more advanced handheld health scanner, complete with a full biosign monitor and on-board radiation and neurological analysis suites."
id = "advanced_analyzer"
req_tech = list(TECH_MAGNET = 7, TECH_BIO = 7, TECH_DATA = 5)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 4000, MAT_SILVER = 3500, MAT_GOLD = 2500, MAT_DIAMOND = 1250)
build_path = /obj/item/device/healthanalyzer/advanced
sort_string = "KBAAC"
/datum/design/item/medical/advanced_roller
name = "advanced roller bed"
desc = "A more advanced version of the regular roller bed, with inbuilt surgical stabilisers and an improved folding system."
@@ -95,4 +104,4 @@
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 3, TECH_MAGNET = 3)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_PHORON = 2000)
build_path = /obj/item/roller/adv
sort_string = "KCAAA"
sort_string = "KCAAA"
+1 -1
View File
@@ -165,7 +165,7 @@
for(var/lang in ghost_client.prefs.alternate_languages)
var/datum/language/chosen_language = GLOB.all_languages[lang]
if(chosen_language)
if(is_lang_whitelisted(src,chosen_language) || (new_character.species && (chosen_language.name in new_character.species.secondary_langs)))
if(is_lang_whitelisted(ghost,chosen_language) || (new_character.species && (chosen_language.name in new_character.species.secondary_langs)))
new_character.add_language(lang)
for(var/key in ghost_client.prefs.language_custom_keys)
if(ghost_client.prefs.language_custom_keys[key])
+1 -1
View File
@@ -714,7 +714,7 @@
var/obj/item/I = M.get_equipped_item(slot = slot)
if(I)
M.unEquip(I,force = TRUE)
if(contaminates || istype(I, /obj/item/weapon/card/id))
if(contaminates)
I.gurgle_contaminate(contents, contamination_flavor, contamination_color) //We do an initial contamination pass to get stuff like IDs wet.
if(item_digest_mode == IM_HOLD)
items_preserved |= I
@@ -2490,7 +2490,7 @@ Departamental Swimsuits, for general use
//Pandora029:Seona Young
/obj/item/clothing/under/fluff/foxoflightsuit
name = "padded flightsui"
name = "padded flightsuit"
desc = "A ruddy-orange combination immersion-and-flight suit, fitted with extra padding across the front of its legs. Warm, waterproof and practical, seveal patches are scattered across it alongside a hard-wearing harness."
icon = 'icons/vore/custom_clothes_vr.dmi'
@@ -2562,4 +2562,4 @@ Departamental Swimsuits, for general use
icon_override = 'icons/vore/custom_onmob_vr.dmi'
item_state = "perrinrobes_s"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
body_parts_covered = UPPER_TORSO|LOWER_TORSO
Binary file not shown.

Before

Width:  |  Height:  |  Size: 800 KiB

After

Width:  |  Height:  |  Size: 857 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 763 KiB

After

Width:  |  Height:  |  Size: 792 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 654 KiB

After

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 KiB

After

Width:  |  Height:  |  Size: 568 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 468 B

After

Width:  |  Height:  |  Size: 992 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 513 KiB

After

Width:  |  Height:  |  Size: 573 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

@@ -48,6 +48,7 @@
/obj/machinery/computer/shuttle_control/aerostat_shuttle
name = "aerostat ferry control console"
shuttle_tag = "Aerostat Ferry"
ai_control = TRUE
/obj/tether_away_spawner/aerostat_inside
name = "Aerostat Indoors Spawner"
+20 -17
View File
@@ -6078,6 +6078,20 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/tiled,
/area/groundbase/engineering/atmos/monitoring)
"np" = (
/obj/machinery/hologram/holopad,
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/disposalpipe/segment{
dir = 8;
icon_state = "pipe-c"
},
/obj/structure/flora/tree/pine/xmas/presents,
/turf/simulated/floor/tiled/dark,
/area/groundbase/civilian/bar)
"nq" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -9460,19 +9474,6 @@
},
/turf/simulated/floor/tiled/dark,
/area/groundbase/civilian/bar)
"vF" = (
/obj/machinery/hologram/holopad,
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/disposalpipe/segment{
dir = 8;
icon_state = "pipe-c"
},
/turf/simulated/floor/tiled/dark,
/area/groundbase/civilian/bar)
"vH" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass_security{
@@ -11430,8 +11431,6 @@
/obj/structure/table/rack/shelf,
/obj/item/device/cataloguer,
/obj/item/device/cataloguer,
/obj/item/device/cataloguer/compact,
/obj/item/device/cataloguer/compact,
/turf/simulated/floor/tiled,
/area/groundbase/civilian/gateway)
"Ao" = (
@@ -14815,7 +14814,7 @@
frequency = 1443;
level = 3;
name = "Distribution and Waste Monitor";
sensors = list("dist_main_meter"="Surface - Distribution Loop","scrub_main_meter"="Surface - Scrubbers Loop","mair_main_meter"="Surface - Mixed Air Tank","dist_aux_meter"="Station - Distribution Loop","scrub_aux_meter"="Station - Scrubbers Loop","mair_aux_meter"="Station - Mixed Air Tank","mair_mining_meter"="Mining Outpost - Mixed Air Tank")
sensors = list("dist_main_meter" = "Surface - Distribution Loop", "scrub_main_meter" = "Surface - Scrubbers Loop", "mair_main_meter" = "Surface - Mixed Air Tank", "dist_aux_meter" = "Station - Distribution Loop", "scrub_aux_meter" = "Station - Scrubbers Loop", "mair_aux_meter" = "Station - Mixed Air Tank", "mair_mining_meter" = "Mining Outpost - Mixed Air Tank")
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
@@ -17120,6 +17119,10 @@
req_access = list(43)
},
/obj/item/device/mapping_unit,
/obj/item/device/cataloguer,
/obj/item/device/cataloguer,
/obj/item/device/cataloguer/compact,
/obj/item/device/cataloguer/compact,
/turf/simulated/floor/tiled/dark,
/area/groundbase/civilian/gateway)
"Oj" = (
@@ -26705,7 +26708,7 @@ oe
gF
FB
JX
vF
np
Cy
cN
Bo
+6 -2
View File
@@ -208,6 +208,10 @@
},
/turf/simulated/floor/tiled,
/area/groundbase/science/robotics)
"aw" = (
/obj/machinery/firework_launcher,
/turf/simulated/floor/tiled,
/area/groundbase/science/hall)
"ax" = (
/obj/structure/closet/secure_closet/personal,
/obj/item/weapon/towel/random,
@@ -2268,7 +2272,7 @@
name = "box of measuring cups";
pixel_x = 2;
pixel_y = 3;
starts_with = list(/obj/item/weapon/reagent_containers/glass/beaker/measuring_cup=7)
starts_with = list(/obj/item/weapon/reagent_containers/glass/beaker/measuring_cup = 7)
},
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
@@ -23498,7 +23502,7 @@ aB
PR
lw
Vr
Vr
aw
Bl
ag
ag
+69 -22
View File
@@ -388,7 +388,7 @@
req_one_access = null
},
/obj/machinery/door/firedoor/glass/talon,
/obj/structure/cable/yellow{
/obj/structure/cable/cyan{
icon_state = "4-8"
},
/turf/simulated/floor/tiled/steel_ridged,
@@ -533,6 +533,9 @@
/obj/machinery/computer/ship/engines{
dir = 1
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/simulated/floor/tiled/eris/dark/techfloor_grid,
/area/shuttle/groundbase/exploration)
"jp" = (
@@ -841,6 +844,9 @@
req_one_access = null
},
/obj/effect/map_helper/airlock/door/simple,
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/simulated/floor/tiled/steel_ridged,
/area/shuttle/groundbase/exploration)
"ok" = (
@@ -1189,6 +1195,9 @@
/obj/machinery/light{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/simulated/floor/tiled,
/area/shuttle/groundbase/exploration)
"to" = (
@@ -1454,7 +1463,7 @@
dir = 8;
req_access = list(11,67)
},
/obj/structure/cable/yellow{
/obj/structure/cable/cyan{
icon_state = "0-2"
},
/turf/simulated/floor/tiled/eris/dark/panels,
@@ -1582,6 +1591,15 @@
},
/turf/simulated/floor/tiled/white,
/area/groundbase/medical/paramedic)
"zS" = (
/obj/structure/bed/chair/shuttle{
dir = 1
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/simulated/floor/tiled/eris/dark/techfloor_grid,
/area/shuttle/groundbase/exploration)
"zW" = (
/obj/structure/bed/chair/backed_red{
dir = 4
@@ -1746,12 +1764,15 @@
},
/area/groundbase/level3/escapepad)
"CU" = (
/obj/structure/cable/yellow{
/obj/structure/cable/cyan{
icon_state = "1-2"
},
/obj/structure/handrail{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/simulated/floor/tiled,
/area/shuttle/groundbase/exploration)
"De" = (
@@ -1868,7 +1889,9 @@
/turf/simulated/floor/bmarble,
/area/groundbase/civilian/kitchen)
"Es" = (
/mob/living/simple_mob/vore/alienanimals/catslug/custom/pilotslug,
/mob/living/simple_mob/vore/alienanimals/catslug/custom/pilotslug{
ghostjoin = 1
},
/turf/simulated/floor/tiled,
/area/groundbase/civilian/pilot)
"Ev" = (
@@ -2073,7 +2096,7 @@
},
/area/groundbase/medical/patio)
"HE" = (
/obj/structure/cable/yellow{
/obj/structure/cable/cyan{
icon_state = "2-4"
},
/obj/machinery/alarm{
@@ -2136,6 +2159,9 @@
/obj/structure/cable/yellow{
icon_state = "0-8"
},
/obj/structure/cable/yellow{
icon_state = "0-4"
},
/turf/simulated/floor/tiled,
/area/shuttle/groundbase/exploration)
"ID" = (
@@ -2160,6 +2186,12 @@
edge_blending_priority = -1
},
/area/groundbase/level3/nw/open)
"IP" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/simulated/floor/tiled,
/area/shuttle/groundbase/exploration)
"IS" = (
/turf/simulated/open/virgo3c,
/area/groundbase/level3/ne/open)
@@ -2180,7 +2212,7 @@
/turf/simulated/floor/tiled/eris/dark/panels,
/area/shuttle/groundbase/exploration)
"Jk" = (
/obj/structure/cable/yellow{
/obj/structure/cable/cyan{
icon_state = "1-8"
},
/turf/simulated/floor/tiled/eris/dark/panels,
@@ -2317,7 +2349,7 @@
/turf/simulated/floor/tiled/white,
/area/groundbase/medical/uhallway)
"Ma" = (
/obj/structure/cable/yellow{
/obj/structure/cable/cyan{
icon_state = "1-8"
},
/obj/structure/closet/walllocker_double/east,
@@ -2410,6 +2442,9 @@
name = "Excursion Shuttlepad"
},
/obj/effect/overmap/visitable/ship/landable/gbexplo,
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/simulated/floor/tiled,
/area/shuttle/groundbase/exploration)
"Nf" = (
@@ -2539,7 +2574,7 @@
/obj/machinery/power/smes/buildable{
charge = 500000
},
/obj/structure/cable/yellow{
/obj/structure/cable/cyan{
icon_state = "0-4"
},
/obj/machinery/light,
@@ -2995,6 +3030,9 @@
/obj/machinery/alarm{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/simulated/floor/tiled/eris/dark/panels,
/area/shuttle/groundbase/exploration)
"Vh" = (
@@ -3021,6 +3059,9 @@
/obj/structure/bed/chair/shuttle{
dir = 1
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/simulated/floor/tiled/eris/dark/panels,
/area/shuttle/groundbase/exploration)
"VB" = (
@@ -3069,6 +3110,12 @@
/obj/structure/railing,
/turf/simulated/floor/bmarble,
/area/groundbase/civilian/kitchen)
"Wl" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/simulated/wall/rshull,
/area/shuttle/groundbase/exploration)
"Wr" = (
/obj/effect/floor_decal/industrial/warning{
dir = 8
@@ -7686,7 +7733,7 @@ pd
vV
PH
gx
PH
Wl
PH
PH
sL
@@ -7970,7 +8017,7 @@ DE
Ml
Zx
Hm
tY
zS
PH
PH
rb
@@ -8254,7 +8301,7 @@ DE
fc
zF
Hm
tY
zS
PH
PH
rb
@@ -8538,7 +8585,7 @@ jX
vV
PH
Ka
PH
Wl
PH
PH
MP
@@ -8822,7 +8869,7 @@ PH
Bo
PH
Ef
XT
IP
vV
PH
JI
@@ -11509,9 +11556,9 @@ Zo
Zo
Zo
Kr
Kr
Kr
Kr
QD
QD
QD
QD
QD
QD
@@ -11651,9 +11698,9 @@ vs
Kr
Kr
Kr
Kr
Kr
Kr
QD
QD
QD
QD
QD
QD
@@ -11793,9 +11840,9 @@ Kr
Kr
Kr
Kr
Kr
Kr
Kr
QD
QD
QD
QD
QD
gs
+5 -1
View File
@@ -3808,6 +3808,10 @@
},
/turf/simulated/floor,
/area/groundbase/engineering/solarshed)
"Fr" = (
/obj/machinery/recharge_station,
/turf/simulated/floor/plating,
/area/shuttle/axolotl)
"Fs" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 6
@@ -19309,7 +19313,7 @@ bs
xg
or
iE
Ga
Fr
Uf
Uf
qV
+5 -1
View File
@@ -1459,6 +1459,10 @@
"lh" = (
/turf/simulated/wall/shull,
/area/shuttle/axolotl_cockpit)
"li" = (
/obj/machinery/recharge_station,
/turf/simulated/floor/plating,
/area/shuttle/axolotl)
"lk" = (
/obj/machinery/light{
dir = 8
@@ -21718,7 +21722,7 @@ oO
BL
Pw
yC
Uh
li
tX
tX
WD
+4 -4
View File
@@ -9634,6 +9634,8 @@
req_access = list(43)
},
/obj/item/device/bluespaceradio/sd_prelinked,
/obj/item/device/cataloguer/compact,
/obj/item/device/cataloguer/compact,
/turf/simulated/floor/tiled/milspec,
/area/stellardelight/deck1/exploequipment)
"ue" = (
@@ -13704,10 +13706,6 @@
pixel_y = 32
},
/obj/structure/table/standard,
/obj/item/device/cataloguer,
/obj/item/device/cataloguer,
/obj/item/device/cataloguer/compact,
/obj/item/device/cataloguer/compact,
/turf/simulated/floor/tiled/milspec,
/area/stellardelight/deck1/exploequipment)
"CU" = (
@@ -16954,6 +16952,8 @@
req_access = list(43)
},
/obj/item/device/mapping_unit,
/obj/item/device/cataloguer,
/obj/item/device/cataloguer,
/turf/simulated/floor/tiled/milspec,
/area/stellardelight/deck1/exploequipment)
"Kf" = (
@@ -1,34 +1,2 @@
//The pathfinder doesn't have a OM shuttle that they are in charge of, and so, doesn't need pilot access.
//Mostly to prevent explo from just commandeering the Starstuff as the explo shuttle without involving a pilot every round.
/*
/datum/job/pathfinder
access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_explorer, access_gateway, access_pathfinder)
minimal_access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_explorer, access_gateway, access_pathfinder)
//Same as above, to discorage explo from taking off with the small ship without asking, SAR should not need pilot access.
/datum/job/sar
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_eva, access_maint_tunnels, access_external_airlocks)
minimal_access = list(access_medical, access_medical_equip, access_morgue)
*/
/datum/job/hop
alt_titles = list("Crew Resources Officer" = /datum/alt_title/cro, "Deputy Manager" = /datum/alt_title/deputy_manager, "Staff Manager" = /datum/alt_title/staff_manager,
"Facility Steward" = /datum/alt_title/facility_steward, "First Mate" = /datum/alt_title/first_mate)
/datum/alt_title/first_mate
title = "First Mate"
/datum/job/atmos
alt_titles = list("Atmospheric Engineer" = /datum/alt_title/atmos_engi, "Atmospheric Maintainer" = /datum/alt_title/atmos_maint, "Disposals Technician" = /datum/alt_title/disposals_tech,
"Fuel Technician" = /datum/alt_title/refuel_tech)
/datum/alt_title/refuel_tech
title = "Fuel Technician"
/datum/job/warden
alt_titles = list("Brig Sentry" = /datum/alt_title/brig_sentry, "Armory Superintendent" = /datum/alt_title/armory_superintendent, "Master-at-Arms" = /datum/alt_title/master_at_arms)
/datum/alt_title/master_at_arms
title = "Master-at-Arms"
/datum/job/pilot/get_request_reasons()
return list("Moving Stellar Delight")
+6 -5
View File
@@ -8995,6 +8995,11 @@
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/surface_one_hall)
"aoR" = (
/obj/machinery/light/small,
/obj/machinery/firework_launcher,
/turf/simulated/floor/tiled,
/area/rnd/hardstorage)
"aoS" = (
/obj/structure/flora/ausbushes/ppflowers,
/turf/simulated/floor/grass,
@@ -32895,10 +32900,6 @@
/obj/effect/floor_decal/corner/red/border,
/turf/simulated/floor/tiled,
/area/tether/surfacebase/security/lowerhall)
"fna" = (
/obj/machinery/light/small,
/turf/simulated/floor/tiled,
/area/rnd/hardstorage)
"fpU" = (
/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/manifold/hidden/green,
@@ -47177,7 +47178,7 @@ abn
abn
acx
afg
fna
aoR
abm
aCm
akg
+154 -19
View File
@@ -9555,6 +9555,9 @@
pixel_x = 24;
pixel_y = 24
},
/obj/structure/sign/christmas/lights{
dir = 4
},
/turf/simulated/floor/lino,
/area/crew_quarters/bar)
"api" = (
@@ -11646,6 +11649,9 @@
pixel_y = 28
},
/obj/machinery/camera/network/civilian,
/obj/structure/sign/christmas/lights{
dir = 1
},
/turf/simulated/floor/lino,
/area/crew_quarters/bar)
"asC" = (
@@ -14046,6 +14052,12 @@
/obj/machinery/light{
dir = 4
},
/obj/structure/sign/christmas/lights{
dir = 4
},
/obj/structure/sign/christmas/lights{
dir = 1
},
/turf/simulated/floor/lino,
/area/crew_quarters/bar)
"awU" = (
@@ -14289,6 +14301,9 @@
/obj/structure/sign/painting/library_secure{
pixel_x = 30
},
/obj/structure/sign/christmas/lights{
dir = 4
},
/turf/simulated/floor/lino,
/area/crew_quarters/bar)
"axp" = (
@@ -15143,6 +15158,9 @@
/obj/item/weapon/stool/padded{
dir = 1
},
/obj/structure/sign/christmas/lights{
dir = 4
},
/turf/simulated/floor/lino,
/area/crew_quarters/bar)
"ayK" = (
@@ -15651,6 +15669,10 @@
/obj/item/device/radio/intercom{
pixel_y = -24
},
/obj/structure/sign/christmas/lights{
dir = 4
},
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/lino,
/area/crew_quarters/bar)
"azu" = (
@@ -17876,6 +17898,9 @@
dir = 8;
icon_state = "pipe-c"
},
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"aCU" = (
@@ -19996,6 +20021,12 @@
},
/obj/machinery/vending/snack,
/obj/machinery/atmospherics/unary/vent_pump/on,
/obj/structure/sign/christmas/lights{
dir = 1
},
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/tiled/monotile,
/area/crew_quarters/bar)
"aGy" = (
@@ -20530,6 +20561,9 @@
/obj/item/weapon/stool/padded{
dir = 4
},
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/carpet/turcarpet,
/area/crew_quarters/bar)
"aHt" = (
@@ -20634,6 +20668,9 @@
},
/obj/machinery/disposal,
/obj/structure/disposalpipe/trunk,
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/tiled/white,
/area/crew_quarters/bar)
"aHz" = (
@@ -21460,6 +21497,9 @@
/area/crew_quarters/kitchen)
"aIO" = (
/obj/effect/floor_decal/spline/plain,
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/carpet/turcarpet,
/area/crew_quarters/bar)
"aIP" = (
@@ -21479,6 +21519,9 @@
dir = 4
},
/obj/machinery/smartfridge/drinks,
/obj/structure/sign/christmas/lights{
dir = 4
},
/turf/simulated/floor/lino,
/area/crew_quarters/bar)
"aIR" = (
@@ -21491,6 +21534,7 @@
/obj/machinery/newscaster{
pixel_y = -28
},
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"aIT" = (
@@ -22103,6 +22147,9 @@
/obj/machinery/light{
dir = 4
},
/obj/structure/sign/christmas/lights{
dir = 4
},
/turf/simulated/floor/tiled/white,
/area/crew_quarters/bar)
"aJW" = (
@@ -22674,14 +22721,6 @@
},
/turf/simulated/floor/tiled/techmaint,
/area/tether/surfacebase/shuttle_pad)
"aLb" = (
/obj/effect/floor_decal/corner/grey/diagonal,
/obj/machinery/smartfridge{
req_access = list(28)
},
/obj/machinery/door/firedoor/glass,
/turf/simulated/floor/tiled/white,
/area/crew_quarters/kitchen)
"aLc" = (
/obj/effect/floor_decal/corner/grey/diagonal,
/obj/effect/landmark/start{
@@ -25199,6 +25238,9 @@
dir = 8
},
/obj/machinery/vending/cola,
/obj/structure/sign/christmas/lights{
dir = 1
},
/turf/simulated/floor/tiled/monotile,
/area/crew_quarters/bar)
"aQg" = (
@@ -26393,6 +26435,9 @@
/obj/structure/extinguisher_cabinet{
pixel_y = 32
},
/obj/structure/sign/christmas/lights{
dir = 1
},
/turf/simulated/floor/lino,
/area/crew_quarters/bar)
"aSz" = (
@@ -27413,6 +27458,14 @@
},
/turf/simulated/floor/tiled/monotile,
/area/hallway/lower/third_south)
"aUq" = (
/obj/effect/landmark{
name = "Observer-Start"
},
/obj/machinery/hologram/holopad,
/obj/structure/flora/tree/pine/xmas/presents,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"aUr" = (
/obj/structure/disposalpipe/segment{
dir = 4;
@@ -28063,6 +28116,7 @@
dir = 1
},
/obj/structure/disposalpipe/segment,
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"aVx" = (
@@ -30942,6 +30996,9 @@
/obj/item/weapon/stool/padded{
dir = 4
},
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/carpet/turcarpet,
/area/crew_quarters/bar)
"baB" = (
@@ -31222,6 +31279,7 @@
dir = 1;
pixel_y = -22
},
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"baU" = (
@@ -31238,6 +31296,7 @@
dir = 1;
pixel_y = -25
},
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"baX" = (
@@ -31721,6 +31780,9 @@
/area/crew_quarters/bar)
"bbT" = (
/obj/structure/table/woodentable,
/obj/structure/sign/christmas/lights{
dir = 4
},
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bbU" = (
@@ -31802,6 +31864,7 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bcc" = (
@@ -32878,6 +32941,9 @@
dir = 4;
icon_state = "pipe-c"
},
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bdQ" = (
@@ -32894,6 +32960,7 @@
/obj/structure/disposalpipe/segment{
dir = 8
},
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bdR" = (
@@ -33000,6 +33067,9 @@
"bee" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/computer/arcade/orion_trail,
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bef" = (
@@ -33043,6 +33113,7 @@
icon_state = "pipe-c"
},
/obj/machinery/light,
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bei" = (
@@ -33278,6 +33349,13 @@
/obj/structure/disposalpipe/trunk{
dir = 1
},
/obj/structure/sign/christmas/lights,
/obj/structure/sign/christmas/lights{
dir = 8
},
/obj/structure/sign/christmas/lights{
dir = 4
},
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"beB" = (
@@ -33340,6 +33418,9 @@
id = "bar";
layer = 3.3
},
/obj/structure/sign/christmas/lights{
dir = 4
},
/turf/simulated/floor/lino,
/area/crew_quarters/bar)
"beF" = (
@@ -33452,6 +33533,9 @@
},
/obj/machinery/vending/cigarette,
/obj/machinery/atmospherics/unary/vent_scrubber/on,
/obj/structure/sign/christmas/lights{
dir = 1
},
/turf/simulated/floor/tiled/monotile,
/area/crew_quarters/bar)
"beN" = (
@@ -33467,6 +33551,9 @@
/obj/machinery/light/small{
dir = 1
},
/obj/structure/sign/christmas/lights{
dir = 1
},
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"beP" = (
@@ -33544,6 +33631,12 @@
/area/tether/surfacebase/entertainment)
"beZ" = (
/obj/structure/bed/chair/comfy/black,
/obj/structure/sign/christmas/lights{
dir = 4
},
/obj/structure/sign/christmas/lights{
dir = 1
},
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bfa" = (
@@ -33962,6 +34055,7 @@
/area/tether/surfacebase/barbackmaintenance)
"bfR" = (
/obj/machinery/media/jukebox,
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bfS" = (
@@ -34004,6 +34098,9 @@
/obj/effect/floor_decal/spline/plain{
dir = 1
},
/obj/structure/sign/christmas/lights{
dir = 1
},
/turf/simulated/floor/lino,
/area/crew_quarters/bar)
"bfY" = (
@@ -34031,6 +34128,12 @@
/obj/machinery/camera/network/civilian{
dir = 4
},
/obj/structure/sign/christmas/lights{
dir = 1
},
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/tiled/white,
/area/crew_quarters/bar)
"bga" = (
@@ -34068,13 +34171,6 @@
/obj/structure/sign/botany,
/turf/simulated/floor/plating,
/area/hydroponics)
"bgd" = (
/obj/effect/landmark{
name = "Observer-Start"
},
/obj/machinery/hologram/holopad,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bge" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -34091,6 +34187,9 @@
/obj/structure/noticeboard{
pixel_y = 29
},
/obj/structure/sign/christmas/lights{
dir = 1
},
/turf/simulated/floor/tiled/white,
/area/crew_quarters/bar)
"bgg" = (
@@ -34156,6 +34255,9 @@
dir = 2;
icon_state = "pipe-c"
},
/obj/structure/sign/christmas/lights{
dir = 1
},
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bgk" = (
@@ -34365,6 +34467,9 @@
/obj/machinery/camera/network/civilian{
dir = 4
},
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bgE" = (
@@ -34384,6 +34489,7 @@
/obj/machinery/camera/network/civilian{
dir = 1
},
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bgG" = (
@@ -34453,6 +34559,9 @@
/obj/machinery/chemical_dispenser/bar_coffee/full{
dir = 8
},
/obj/structure/sign/christmas/lights{
dir = 4
},
/turf/simulated/floor/lino,
/area/crew_quarters/bar)
"bgP" = (
@@ -35609,6 +35718,7 @@
dir = 1;
pixel_y = -28
},
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"biV" = (
@@ -35757,6 +35867,7 @@
/area/tether/surfacebase/topairlock)
"bjh" = (
/obj/machinery/light/small,
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bji" = (
@@ -35806,6 +35917,7 @@
/area/tether/surfacebase/topairlock)
"bjo" = (
/obj/structure/sign/poster,
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bjp" = (
@@ -37889,6 +38001,10 @@
/obj/structure/bed/chair/comfy/black{
dir = 1
},
/obj/structure/sign/christmas/lights,
/obj/structure/sign/christmas/lights{
dir = 4
},
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bsb" = (
@@ -38131,6 +38247,12 @@
/obj/machinery/door/firedoor,
/turf/simulated/floor/tiled,
/area/shuttle/tourbus/general)
"cev" = (
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"ceN" = (
/obj/structure/disposalpipe/segment{
dir = 8;
@@ -38241,6 +38363,7 @@
/obj/structure/sign/painting/library_secure{
pixel_y = -30
},
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"cFA" = (
@@ -38265,6 +38388,9 @@
/obj/effect/floor_decal/spline/plain{
dir = 1
},
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/carpet/turcarpet,
/area/crew_quarters/bar)
"cGt" = (
@@ -40311,6 +40437,10 @@
/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/tiled,
/area/rnd/research/researchdivision)
"jta" = (
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"juj" = (
/obj/machinery/newscaster{
pixel_y = 30
@@ -41130,6 +41260,7 @@
/obj/item/device/radio/intercom{
pixel_y = -24
},
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"lFG" = (
@@ -41911,6 +42042,9 @@
/obj/item/weapon/stool/padded{
dir = 4
},
/obj/structure/sign/christmas/lights{
dir = 8
},
/turf/simulated/floor/carpet/turcarpet,
/area/crew_quarters/bar)
"orc" = (
@@ -42691,6 +42825,7 @@
/area/tether/surfacebase/southhall)
"qFD" = (
/obj/machinery/light,
/obj/structure/sign/christmas/lights,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"qFL" = (
@@ -59519,7 +59654,7 @@ baA
oqI
aIO
bgD
asX
cev
bdP
beA
aJs
@@ -60225,7 +60360,7 @@ asX
aLd
aHl
aIi
bgd
aUq
aLd
baC
bcm
@@ -61214,7 +61349,7 @@ bpC
bge
bgA
bgA
aLb
aru
bfX
bgz
bgz
@@ -61508,7 +61643,7 @@ aJt
aJt
aGx
bgH
asX
jta
aGK
qum
sUg
+6 -7
View File
@@ -8415,7 +8415,8 @@
/obj/machinery/door/airlock/multi_tile/glass{
dir = 2;
name = "Gateway/EVA Prep Room";
req_access = list(18,19,43,67)
req_access = null;
req_one_access = list(18,19,43,67)
},
/turf/simulated/floor/tiled/steel_ridged,
/area/gateway/prep_room)
@@ -14326,10 +14327,6 @@
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
/obj/item/device/cataloguer,
/obj/item/device/cataloguer,
/obj/item/device/cataloguer/compact,
/obj/item/device/cataloguer/compact,
/turf/simulated/floor/tiled,
/area/ai_monitored/storage/eva)
"bkU" = (
@@ -18669,8 +18666,6 @@
/turf/simulated/floor/tiled,
/area/hallway/station/atrium)
"frS" = (
/obj/structure/closet/secure_closet/guncabinet/excursion,
/obj/item/weapon/pickaxe,
/obj/machinery/light{
dir = 1
},
@@ -21718,6 +21713,8 @@
/obj/machinery/door/window/brigdoor{
req_access = list(43)
},
/obj/item/device/cataloguer/compact,
/obj/item/device/cataloguer/compact,
/turf/simulated/floor/tiled/dark,
/area/ai_monitored/storage/eva)
"ifp" = (
@@ -22194,6 +22191,8 @@
/obj/machinery/door/window/brigdoor/eastright{
req_access = list(43)
},
/obj/item/device/cataloguer,
/obj/item/device/cataloguer,
/turf/simulated/floor/tiled/dark,
/area/ai_monitored/storage/eva)
"iIf" = (
+5 -1
View File
@@ -2270,6 +2270,9 @@
#include "code\modules\examine\descriptions\weapons.dm"
#include "code\modules\ext_scripts\irc.dm"
#include "code\modules\ext_scripts\python.dm"
#include "code\modules\fireworks\firework_launcher.dm"
#include "code\modules\fireworks\firework_stars.dm"
#include "code\modules\fireworks\launcher_construction.dm"
#include "code\modules\fishing\fishing.dm"
#include "code\modules\fishing\fishing_net.dm"
#include "code\modules\fishing\fishing_rod.dm"
@@ -3747,6 +3750,7 @@
#include "code\modules\research\designs\bio_devices_vr.dm"
#include "code\modules\research\designs\circuit_assembly.dm"
#include "code\modules\research\designs\engineering.dm"
#include "code\modules\research\designs\firework_stars.dm"
#include "code\modules\research\designs\HUDs.dm"
#include "code\modules\research\designs\HUDs_vr.dm"
#include "code\modules\research\designs\implants.dm"
@@ -4169,7 +4173,6 @@
#include "maps\expedition_vr\beach\submaps\mountains.dm"
#include "maps\expedition_vr\beach\submaps\mountains_areas.dm"
#include "maps\gateway_archive_vr\blackmarketpackers.dm"
#include "maps\groundbase\groundbase.dm"
#include "maps\offmap_vr\om_ships\abductor.dm"
#include "maps\offmap_vr\om_ships\lunaship.dm"
#include "maps\southern_cross\items\clothing\sc_accessory.dm"
@@ -4187,5 +4190,6 @@
#include "maps\submaps\space_submaps\debrisfield\debrisfield.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm"
#include "maps\tether\tether.dm"
#include "maps\~map_system\maps.dm"
// END_INCLUDE