Merge remote-tracking branch 'VOREStation/master' into nova-basicfixes
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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")
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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 ..()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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."
|
||||
)
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/datum/weather_holder
|
||||
var/firework_override = FALSE
|
||||
|
||||
/datum/weather_holder/update_icon_effects()
|
||||
..()
|
||||
if(current_weather.icon)
|
||||
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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
|
||||
|
||||
|
Before Width: | Height: | Size: 800 KiB After Width: | Height: | Size: 857 KiB |
|
Before Width: | Height: | Size: 763 KiB After Width: | Height: | Size: 792 KiB |
|
Before Width: | Height: | Size: 654 KiB After Width: | Height: | Size: 680 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 564 KiB After Width: | Height: | Size: 568 KiB |
|
Before Width: | Height: | Size: 468 B After Width: | Height: | Size: 992 B |
|
Before Width: | Height: | Size: 513 KiB After Width: | Height: | Size: 573 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 478 B |
|
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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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
|
||||
|
||||