mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-28 22:46:22 +01:00
Merge branch 'master' of https://github.com/JoanRisu/VOREStation-1 into Fluff_Items_worshop
This commit is contained in:
@@ -29,6 +29,8 @@ Pipelines + Other Objects -> Pipe network
|
||||
var/pipe_color
|
||||
|
||||
var/global/datum/pipe_icon_manager/icon_manager
|
||||
var/obj/machinery/atmospherics/node1
|
||||
var/obj/machinery/atmospherics/node2
|
||||
|
||||
/obj/machinery/atmospherics/New()
|
||||
if(!icon_manager)
|
||||
|
||||
@@ -6,9 +6,6 @@ obj/machinery/atmospherics/binary
|
||||
var/datum/gas_mixture/air1
|
||||
var/datum/gas_mixture/air2
|
||||
|
||||
var/obj/machinery/atmospherics/node1
|
||||
var/obj/machinery/atmospherics/node2
|
||||
|
||||
var/datum/pipe_network/network1
|
||||
var/datum/pipe_network/network2
|
||||
|
||||
|
||||
@@ -17,9 +17,6 @@
|
||||
|
||||
var/dP = 0
|
||||
|
||||
var/obj/machinery/atmospherics/node1
|
||||
var/obj/machinery/atmospherics/node2
|
||||
|
||||
var/datum/pipe_network/network1
|
||||
var/datum/pipe_network/network2
|
||||
|
||||
|
||||
@@ -7,8 +7,6 @@ obj/machinery/atmospherics/trinary
|
||||
var/datum/gas_mixture/air2
|
||||
var/datum/gas_mixture/air3
|
||||
|
||||
var/obj/machinery/atmospherics/node1
|
||||
var/obj/machinery/atmospherics/node2
|
||||
var/obj/machinery/atmospherics/node3
|
||||
|
||||
var/datum/pipe_network/network1
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
var/state = 0 // 0 = go straight, 1 = go to side
|
||||
|
||||
// like a trinary component, node1 is input, node2 is side output, node3 is straight output
|
||||
var/obj/machinery/atmospherics/node1
|
||||
var/obj/machinery/atmospherics/node2
|
||||
var/obj/machinery/atmospherics/node3
|
||||
|
||||
var/datum/pipe_network/network_node1
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
var/open = 0
|
||||
var/openDuringInit = 0
|
||||
|
||||
var/obj/machinery/atmospherics/node1
|
||||
var/obj/machinery/atmospherics/node2
|
||||
|
||||
var/datum/pipe_network/network_node1
|
||||
var/datum/pipe_network/network_node2
|
||||
|
||||
@@ -153,9 +153,6 @@
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH|NORTH
|
||||
|
||||
var/obj/machinery/atmospherics/node1
|
||||
var/obj/machinery/atmospherics/node2
|
||||
|
||||
var/minimum_temperature_difference = 300
|
||||
var/thermal_conductivity = 0 //WALL_HEAT_TRANSFER_COEFFICIENT No
|
||||
|
||||
@@ -427,8 +424,6 @@
|
||||
dir = SOUTH
|
||||
initialize_directions = EAST|NORTH|WEST
|
||||
|
||||
var/obj/machinery/atmospherics/node1
|
||||
var/obj/machinery/atmospherics/node2
|
||||
var/obj/machinery/atmospherics/node3
|
||||
|
||||
level = 1
|
||||
@@ -687,8 +682,6 @@
|
||||
dir = SOUTH
|
||||
initialize_directions = NORTH|SOUTH|EAST|WEST
|
||||
|
||||
var/obj/machinery/atmospherics/node1
|
||||
var/obj/machinery/atmospherics/node2
|
||||
var/obj/machinery/atmospherics/node3
|
||||
var/obj/machinery/atmospherics/node4
|
||||
|
||||
@@ -1074,8 +1067,6 @@
|
||||
initialize_directions = SOUTH
|
||||
density = 1
|
||||
|
||||
var/obj/machinery/atmospherics/node1
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/New()
|
||||
icon_state = "air"
|
||||
initialize_directions = dir
|
||||
@@ -1238,8 +1229,6 @@
|
||||
|
||||
var/build_killswitch = 1
|
||||
|
||||
var/obj/machinery/atmospherics/node1
|
||||
|
||||
/obj/machinery/atmospherics/pipe/vent/New()
|
||||
initialize_directions = dir
|
||||
..()
|
||||
|
||||
@@ -35,9 +35,8 @@
|
||||
#define ORGAN_BLEEDING (1<<1)
|
||||
#define ORGAN_BROKEN (1<<2)
|
||||
#define ORGAN_DESTROYED (1<<3)
|
||||
#define ORGAN_SPLINTED (1<<4)
|
||||
#define ORGAN_DEAD (1<<5)
|
||||
#define ORGAN_MUTATED (1<<6)
|
||||
#define ORGAN_DEAD (1<<4)
|
||||
#define ORGAN_MUTATED (1<<5)
|
||||
|
||||
#define DROPLIMB_EDGE 0
|
||||
#define DROPLIMB_BLUNT 1
|
||||
|
||||
@@ -55,7 +55,7 @@ var/global/list/skin_styles_female_list = list() //unused
|
||||
var/datum/category_collection/underwear/global_underwear = new()
|
||||
|
||||
//Backpacks
|
||||
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt")
|
||||
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt", "Messenger Bag")
|
||||
var/global/list/pdachoicelist = list("Default", "Slim", "Old")
|
||||
var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg)
|
||||
|
||||
|
||||
@@ -15,3 +15,101 @@
|
||||
animate(src, transform = m120, time = speed, loops)
|
||||
animate(transform = m240, time = speed)
|
||||
animate(transform = m360, time = speed)
|
||||
|
||||
//The X pixel offset of this matrix
|
||||
/matrix/proc/get_x_shift()
|
||||
. = c
|
||||
|
||||
//The Y pixel offset of this matrix
|
||||
/matrix/proc/get_y_shift()
|
||||
. = f
|
||||
// Color matrices:
|
||||
|
||||
//Luma coefficients suggested for HDTVs. If you change these, make sure they add up to 1.
|
||||
#define LUMR 0.2126
|
||||
#define LUMG 0.7152
|
||||
#define LUMB 0.0722
|
||||
|
||||
//Still need color matrix addition, negation, and multiplication.
|
||||
|
||||
//Returns an identity color matrix which does nothing
|
||||
/proc/color_identity()
|
||||
return list(1,0,0, 0,1,0, 0,0,1)
|
||||
|
||||
//Moves all colors angle degrees around the color wheel while maintaining intensity of the color and not affecting whites
|
||||
//TODO: Need a version that only affects one color (ie shift red to blue but leave greens and blues alone)
|
||||
/proc/color_rotation(angle)
|
||||
if(angle == 0)
|
||||
return color_identity()
|
||||
angle = Clamp(angle, -180, 180)
|
||||
var/cos = cos(angle)
|
||||
var/sin = sin(angle)
|
||||
|
||||
var/constA = 0.143
|
||||
var/constB = 0.140
|
||||
var/constC = -0.283
|
||||
return list(
|
||||
LUMR + cos * (1-LUMR) + sin * -LUMR, LUMR + cos * -LUMR + sin * constA, LUMR + cos * -LUMR + sin * -(1-LUMR),
|
||||
LUMG + cos * -LUMG + sin * -LUMG, LUMG + cos * (1-LUMG) + sin * constB, LUMG + cos * -LUMG + sin * LUMG,
|
||||
LUMB + cos * -LUMB + sin * (1-LUMB), LUMB + cos * -LUMB + sin * constC, LUMB + cos * (1-LUMB) + sin * LUMB
|
||||
)
|
||||
|
||||
//Makes everything brighter or darker without regard to existing color or brightness
|
||||
/proc/color_brightness(power)
|
||||
power = Clamp(power, -255, 255)
|
||||
power = power/255
|
||||
|
||||
return list(1,0,0, 0,1,0, 0,0,1, power,power,power)
|
||||
|
||||
/var/list/delta_index = list(
|
||||
0, 0.01, 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.1, 0.11,
|
||||
0.12, 0.14, 0.15, 0.16, 0.17, 0.18, 0.20, 0.21, 0.22, 0.24,
|
||||
0.25, 0.27, 0.28, 0.30, 0.32, 0.34, 0.36, 0.38, 0.40, 0.42,
|
||||
0.44, 0.46, 0.48, 0.5, 0.53, 0.56, 0.59, 0.62, 0.65, 0.68,
|
||||
0.71, 0.74, 0.77, 0.80, 0.83, 0.86, 0.89, 0.92, 0.95, 0.98,
|
||||
1.0, 1.06, 1.12, 1.18, 1.24, 1.30, 1.36, 1.42, 1.48, 1.54,
|
||||
1.60, 1.66, 1.72, 1.78, 1.84, 1.90, 1.96, 2.0, 2.12, 2.25,
|
||||
2.37, 2.50, 2.62, 2.75, 2.87, 3.0, 3.2, 3.4, 3.6, 3.8,
|
||||
4.0, 4.3, 4.7, 4.9, 5.0, 5.5, 6.0, 6.5, 6.8, 7.0,
|
||||
7.3, 7.5, 7.8, 8.0, 8.4, 8.7, 9.0, 9.4, 9.6, 9.8,
|
||||
10.0)
|
||||
|
||||
//Exxagerates or removes brightness
|
||||
/proc/color_contrast(value)
|
||||
value = Clamp(value, -100, 100)
|
||||
if(value == 0)
|
||||
return color_identity()
|
||||
|
||||
var/x = 0
|
||||
if (value < 0)
|
||||
x = 127 + value / 100 * 127;
|
||||
else
|
||||
x = value % 1
|
||||
if(x == 0)
|
||||
x = delta_index[value]
|
||||
else
|
||||
x = delta_index[value] * (1-x) + delta_index[value+1] * x//use linear interpolation for more granularity.
|
||||
x = x * 127 + 127
|
||||
|
||||
var/mult = x / 127
|
||||
var/add = 0.5 * (127-x) / 255
|
||||
return list(mult,0,0, 0,mult,0, 0,0,mult, add,add,add)
|
||||
|
||||
//Exxagerates or removes colors
|
||||
/proc/color_saturation(value as num)
|
||||
if(value == 0)
|
||||
return color_identity()
|
||||
value = Clamp(value, -100, 100)
|
||||
if(value > 0)
|
||||
value *= 3
|
||||
var/x = 1 + value / 100
|
||||
var/inv = 1 - x
|
||||
var/R = LUMR * inv
|
||||
var/G = LUMG * inv
|
||||
var/B = LUMB * inv
|
||||
|
||||
return list(R + x,R,R, G,G + x,G, B,B,B + x)
|
||||
|
||||
#undef LUMR
|
||||
#undef LUMG
|
||||
#undef LUMB
|
||||
@@ -158,7 +158,7 @@ Proc for attack log creation, because really why not
|
||||
else
|
||||
return pick("chest", "groin")
|
||||
|
||||
/proc/do_mob(mob/user , mob/target, time = 30, uninterruptible = 0, progress = 1)
|
||||
/proc/do_mob(mob/user , mob/target, time = 30, target_zone = 0, uninterruptible = 0, progress = 1)
|
||||
if(!user || !target)
|
||||
return 0
|
||||
var/user_loc = user.loc
|
||||
@@ -194,6 +194,10 @@ Proc for attack log creation, because really why not
|
||||
. = 0
|
||||
break
|
||||
|
||||
if(target_zone && user.zone_sel.selecting != target_zone)
|
||||
. = 0
|
||||
break
|
||||
|
||||
if (progbar)
|
||||
qdel(progbar)
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#define Clamp(x, y, z) (x <= y ? y : (x >= z ? z : x))
|
||||
|
||||
#define CLAMP01(x) (Clamp(x, 0, 1))
|
||||
|
||||
#define get_turf(A) get_step(A,0)
|
||||
@@ -42,3 +43,5 @@
|
||||
#define isxeno(A) istype(A, /mob/living/simple_animal/xeno)
|
||||
|
||||
#define RANDOM_BLOOD_TYPE pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
|
||||
|
||||
#define to_chat(target, message) target << message
|
||||
|
||||
@@ -209,7 +209,7 @@ var/global/datum/shuttle_controller/shuttle_controller
|
||||
shuttle.docking_controller_tag = "centcom_shuttle"
|
||||
shuttle.dock_target_station = "centcom_shuttle_dock_airlock"
|
||||
shuttle.dock_target_offsite = "centcom_shuttle_bay"
|
||||
shuttles["Centcom"] = shuttle
|
||||
shuttles["CentCom"] = shuttle
|
||||
process_shuttles += shuttle
|
||||
|
||||
shuttle = new()
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
..()
|
||||
|
||||
/******************** Nanotrasen/Malf ********************/
|
||||
/******************** NanoTrasen/Malf ********************/
|
||||
/datum/ai_laws/nanotrasen
|
||||
name = "NT Default"
|
||||
selectable = 1
|
||||
@@ -30,7 +30,7 @@
|
||||
set_zeroth_law(config.law_zero)
|
||||
..()
|
||||
|
||||
/************* Nanotrasen Aggressive *************/
|
||||
/************* NanoTrasen Aggressive *************/
|
||||
/datum/ai_laws/nanotrasen_aggressive
|
||||
name = "NT Aggressive"
|
||||
selectable = 1
|
||||
|
||||
@@ -43,15 +43,15 @@
|
||||
|
||||
/datum/locations/exodus
|
||||
name = "NSS Exodus"
|
||||
desc = "A highly profitable research, mining, and supply dock for Nanotrasen that serves as one of their many facilities in exploiting the \
|
||||
desc = "A highly profitable research, mining, and supply dock for NanoTrasen that serves as one of their many facilities in exploiting the \
|
||||
wonders of phoron. It is currently orbiting around Erebus and maintains close contact with the NAS Crescent. The station itself has been \
|
||||
a target for a large number of Mercenaries and other companies wishing to steal Nanotrasen's secrets."
|
||||
a target for a large number of Mercenaries and other companies wishing to steal NanoTrasen's secrets."
|
||||
|
||||
/datum/locations/crescent
|
||||
name = "NAS Crescent"
|
||||
desc = "The main hub for Nanotrasen in the Nyx system and is commonly referred to it by their workers as central command or \"Centcomm\". \
|
||||
desc = "The main hub for NanoTrasen in the Nyx system and is commonly referred to it by their workers as central command or \"CentCom\". \
|
||||
The Crescent refines and stores much of the products that stations (such as the Exodus) bring in. It is also a large refueling and supply \
|
||||
station of phoron and tritium in the Nyx system due to Nanotrasen being able to outsell almost any other company."
|
||||
station of phoron and tritium in the Nyx system due to NanoTrasen being able to outsell almost any other company."
|
||||
|
||||
/datum/locations/emerald_habitation
|
||||
name = "Emerald Habitation"
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
/datum/locations/northern_star //Inception joke here
|
||||
name = "Northern Star"
|
||||
desc = "The Northern Star is an asteroid colony owned and operated by Nanotrasen, among many other asteroid installations. \
|
||||
desc = "The Northern Star is an asteroid colony owned and operated by NanoTrasen, among many other asteroid installations. \
|
||||
Originally conceived as 'just another pitstop' for weary asteroid miners, it has grown to become a significant installation in the Kara subsystem."
|
||||
|
||||
/datum/locations/northern_star/New(var/creator)
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
/datum/supply_packs/supply/stolen
|
||||
name = "Stolen supply crate"
|
||||
contains = list(/obj/item/stolenpackage = 1)
|
||||
cost = 150
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Stolen crate"
|
||||
contraband = 1
|
||||
@@ -0,0 +1,6 @@
|
||||
/datum/supply_packs/hydro/goat
|
||||
name = "Birds Crate"
|
||||
cost = 200 //You're getting 22 birds. Of course it's going to be a lot!
|
||||
containertype = /obj/structure/largecrate/birds
|
||||
containername = "Bird crate"
|
||||
access = access_hydroponics
|
||||
@@ -49,7 +49,7 @@ var/datum/antagonist/deathsquad/deathsquad
|
||||
player.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle(player), slot_r_hand)
|
||||
player.equip_to_slot_or_del(new /obj/item/weapon/rig/ert/assetprotection(player), slot_back)
|
||||
player.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(player), slot_s_store)
|
||||
player.implant_loyalty()
|
||||
// player.implant_loyalty()
|
||||
|
||||
var/obj/item/weapon/card/id/id = create_id("Asset Protection", player)
|
||||
if(id)
|
||||
|
||||
@@ -41,6 +41,7 @@ var/datum/antagonist/mercenary/mercs
|
||||
if(player.backbag == 2) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(player), slot_back)
|
||||
if(player.backbag == 3) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(player), slot_back)
|
||||
if(player.backbag == 4) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(player), slot_back)
|
||||
if(player.backbag == 5) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(player), slot_back)
|
||||
player.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(player.back), slot_in_backpack)
|
||||
player.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/cyanide(player), slot_in_backpack)
|
||||
player.mind.tcrystals = DEFAULT_TELECRYSTAL_AMOUNT
|
||||
|
||||
@@ -83,6 +83,7 @@ var/datum/antagonist/wizard/wizards
|
||||
if(wizard_mob.backbag == 2) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(wizard_mob), slot_back)
|
||||
if(wizard_mob.backbag == 3) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(wizard_mob), slot_back)
|
||||
if(wizard_mob.backbag == 4) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(wizard_mob), slot_back)
|
||||
if(wizard_mob.backbag == 5) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(wizard_mob), slot_back)
|
||||
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box(wizard_mob), slot_in_backpack)
|
||||
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(wizard_mob), slot_r_store)
|
||||
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/spellbook(wizard_mob), slot_r_hand)
|
||||
|
||||
@@ -166,7 +166,7 @@ area/space/atmosalert()
|
||||
icon_state = "shuttle2"
|
||||
|
||||
/area/shuttle/escape/centcom
|
||||
name = "\improper Emergency Shuttle Centcom"
|
||||
name = "\improper Emergency Shuttle CentCom"
|
||||
icon_state = "shuttle"
|
||||
|
||||
/area/shuttle/escape/transit // the area to pass through for 3 minute transit
|
||||
@@ -282,6 +282,7 @@ area/space/atmosalert()
|
||||
|
||||
/area/shuttle/cryo/station
|
||||
icon_state = "shuttle2"
|
||||
base_turf = /turf/simulated/mineral/floor/ignore_mapgen
|
||||
|
||||
/area/shuttle/cryo/centcom
|
||||
icon_state = "shuttle"
|
||||
@@ -290,9 +291,10 @@ area/space/atmosalert()
|
||||
icon_state = "shuttle"
|
||||
|
||||
/area/shuttle/mining
|
||||
name = "\improper Mining Shuttle"
|
||||
name = "\improper Mining Elevator"
|
||||
music = "music/escape.ogg"
|
||||
lighting_use_dynamic = 0
|
||||
base_turf = /turf/simulated/mineral/floor/ignore_mapgen
|
||||
|
||||
/area/shuttle/mining/station
|
||||
icon_state = "shuttle2"
|
||||
@@ -302,7 +304,7 @@ area/space/atmosalert()
|
||||
|
||||
/area/shuttle/transport1/centcom
|
||||
icon_state = "shuttle"
|
||||
name = "\improper Transport Shuttle Centcom"
|
||||
name = "\improper Transport Shuttle CentCom"
|
||||
|
||||
/area/shuttle/transport1/station
|
||||
icon_state = "shuttle"
|
||||
@@ -344,7 +346,7 @@ area/space/atmosalert()
|
||||
icon_state = "shuttlered2"
|
||||
|
||||
/area/shuttle/administration/centcom
|
||||
name = "\improper Administration Shuttle Centcom"
|
||||
name = "\improper Administration Shuttle CentCom"
|
||||
icon_state = "shuttlered"
|
||||
|
||||
/area/shuttle/administration/station
|
||||
@@ -352,7 +354,7 @@ area/space/atmosalert()
|
||||
icon_state = "shuttlered2"
|
||||
|
||||
/area/shuttle/trade/centcom
|
||||
name = "\improper Trade Shuttle Centcom"
|
||||
name = "\improper Trade Shuttle CentCom"
|
||||
icon_state = "shuttlered"
|
||||
|
||||
/area/shuttle/trade/station
|
||||
@@ -388,9 +390,10 @@ area/space/atmosalert()
|
||||
// === Trying to remove these areas:
|
||||
|
||||
/area/shuttle/research
|
||||
name = "\improper Research Shuttle"
|
||||
name = "\improper Research Elevator"
|
||||
music = "music/escape.ogg"
|
||||
lighting_use_dynamic = 0
|
||||
base_turf = /turf/simulated/mineral/floor/ignore_mapgen
|
||||
|
||||
/area/shuttle/research/station
|
||||
icon_state = "shuttle2"
|
||||
@@ -412,34 +415,34 @@ area/space/atmosalert()
|
||||
// CENTCOM
|
||||
|
||||
/area/centcom
|
||||
name = "\improper Centcom"
|
||||
name = "\improper CentCom"
|
||||
icon_state = "centcom"
|
||||
requires_power = 0
|
||||
lighting_use_dynamic = 0
|
||||
|
||||
/area/centcom/control
|
||||
name = "\improper Centcom Control"
|
||||
name = "\improper CentCom Control"
|
||||
|
||||
/area/centcom/evac
|
||||
name = "\improper Centcom Emergency Shuttle"
|
||||
name = "\improper CentCom Emergency Shuttle"
|
||||
|
||||
/area/centcom/suppy
|
||||
name = "\improper Centcom Supply Shuttle"
|
||||
name = "\improper CentCom Supply Shuttle"
|
||||
|
||||
/area/centcom/ferry
|
||||
name = "\improper Centcom Transport Shuttle"
|
||||
name = "\improper CentCom Transport Shuttle"
|
||||
|
||||
/area/centcom/shuttle
|
||||
name = "\improper Centcom Administration Shuttle"
|
||||
name = "\improper CentCom Administration Shuttle"
|
||||
|
||||
/area/centcom/test
|
||||
name = "\improper Centcom Testing Facility"
|
||||
name = "\improper CentCom Testing Facility"
|
||||
|
||||
/area/centcom/living
|
||||
name = "\improper Centcom Living Quarters"
|
||||
name = "\improper CentCom Living Quarters"
|
||||
|
||||
/area/centcom/specops
|
||||
name = "\improper Centcom Special Ops"
|
||||
name = "\improper CentCom Special Ops"
|
||||
|
||||
/area/centcom/creed
|
||||
name = "Creed's Office"
|
||||
@@ -455,15 +458,15 @@ area/space/atmosalert()
|
||||
name = "\improper Tram Station"
|
||||
|
||||
/area/centcom/security
|
||||
name = "\improper Centcom Security"
|
||||
name = "\improper CentCom Security"
|
||||
icon_state = "centcom_security"
|
||||
|
||||
/area/centcom/medical
|
||||
name = "\improper Centcom Medical"
|
||||
name = "\improper CentCom Medical"
|
||||
icon_state = "centcom_medical"
|
||||
|
||||
/area/centcom/command
|
||||
name = "\improper Centcom Command" //Central Command Command totally isn't RAS Syndrome in action.
|
||||
name = "\improper CentCom Command" //Central Command Command totally isn't RAS Syndrome in action.
|
||||
icon_state = "centcom_command"
|
||||
|
||||
/area/centcom/main_hall
|
||||
@@ -471,15 +474,15 @@ area/space/atmosalert()
|
||||
icon_state = "centcom_hallway1"
|
||||
|
||||
/area/centcom/bar
|
||||
name = "\improper Centcom Bar"
|
||||
name = "\improper CentCom Bar"
|
||||
icon_state = "centcom_crew"
|
||||
|
||||
/area/centcom/restaurant
|
||||
name = "\improper Centcom Restaurant"
|
||||
name = "\improper CentCom Restaurant"
|
||||
icon_state = "centcom_crew"
|
||||
|
||||
/area/centcom/bathroom
|
||||
name = "\improper Centcom Bathroom"
|
||||
name = "\improper CentCom Bathroom"
|
||||
icon_state = "centcom_crew"
|
||||
|
||||
//SYNDICATES
|
||||
@@ -2319,6 +2322,7 @@ area/space/atmosalert()
|
||||
name = "\improper Construction Site Shuttle"
|
||||
icon_state = "yellow"
|
||||
lighting_use_dynamic = 0
|
||||
base_turf = /turf/simulated/mineral/floor/ignore_mapgen
|
||||
|
||||
/area/shuttle/constructionsite/station
|
||||
name = "\improper Construction Site Shuttle"
|
||||
@@ -2527,20 +2531,20 @@ area/space/atmosalert()
|
||||
ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
|
||||
|
||||
/area/tcommsat/entrance
|
||||
name = "\improper Telecoms Teleporter"
|
||||
name = "\improper Telecomms Teleporter"
|
||||
icon_state = "tcomsatentrance"
|
||||
|
||||
/area/tcommsat/chamber
|
||||
name = "\improper Telecoms Central Compartment"
|
||||
name = "\improper Telecomms Central Compartment"
|
||||
icon_state = "tcomsatcham"
|
||||
|
||||
/area/tcomsat
|
||||
name = "\improper Telecoms Satellite"
|
||||
name = "\improper Telecomms Satellite"
|
||||
icon_state = "tcomsatlob"
|
||||
ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
|
||||
|
||||
/area/tcomfoyer
|
||||
name = "\improper Telecoms Foyer"
|
||||
name = "\improper Telecomms Foyer"
|
||||
icon_state = "tcomsatentrance"
|
||||
ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
|
||||
|
||||
@@ -2555,7 +2559,7 @@ area/space/atmosalert()
|
||||
ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
|
||||
|
||||
/area/tcommsat/computer
|
||||
name = "\improper Telecoms Control Room"
|
||||
name = "\improper Telecomms Control Room"
|
||||
icon_state = "tcomsatcomp"
|
||||
|
||||
/area/tcommsat/lounge
|
||||
@@ -2632,7 +2636,7 @@ area/space/atmosalert()
|
||||
requires_power = 0
|
||||
|
||||
/area/awaymission/spacebattle/cruiser
|
||||
name = "\improper Nanotrasen Cruiser"
|
||||
name = "\improper NanoTrasen Cruiser"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate1
|
||||
name = "\improper Syndicate Assault Ship 1"
|
||||
|
||||
+21
-4
@@ -463,11 +463,11 @@ its easier to just keep the beam vertical.
|
||||
//spawn(0)
|
||||
//if(I) //It's possible that it could be deleted in the meantime.
|
||||
var/obj/O = I
|
||||
O.show_message( message, 1, blind_message, 2)
|
||||
O.show_message(message, 1, blind_message, 2)
|
||||
else if(ismob(I))
|
||||
var/mob/M = I
|
||||
if(M.see_invisible >= invisibility) // Cannot view the invisible
|
||||
M.show_message( message, 1, blind_message, 2)
|
||||
M.show_message(message, 1, blind_message, 2)
|
||||
else if (blind_message)
|
||||
M.show_message(blind_message, 2)
|
||||
|
||||
@@ -488,7 +488,24 @@ its easier to just keep the beam vertical.
|
||||
spawn(0)
|
||||
if(I) //It's possible that it could be deleted in the meantime.
|
||||
var/obj/O = I
|
||||
O.show_message( message, 2, deaf_message, 1)
|
||||
O.show_message(message, 2, deaf_message, 1)
|
||||
else if(ismob(I))
|
||||
var/mob/M = I
|
||||
M.show_message( message, 2, deaf_message, 1)
|
||||
M.show_message(message, 2, deaf_message, 1)
|
||||
|
||||
/atom/movable/proc/dropInto(var/atom/destination)
|
||||
while(istype(destination))
|
||||
var/atom/drop_destination = destination.onDropInto(src)
|
||||
if(!istype(drop_destination) || drop_destination == destination)
|
||||
return forceMove(destination)
|
||||
destination = drop_destination
|
||||
return forceMove(null)
|
||||
|
||||
/atom/proc/onDropInto(var/atom/movable/AM)
|
||||
return // If onDropInto returns null, then dropInto will forceMove AM into us.
|
||||
|
||||
/atom/movable/onDropInto(var/atom/movable/AM)
|
||||
return loc // If onDropInto returns something, then dropInto will attempt to drop AM there.
|
||||
|
||||
/atom/proc/InsertedContents()
|
||||
return contents
|
||||
|
||||
@@ -63,13 +63,35 @@
|
||||
return
|
||||
|
||||
/atom/movable/proc/forceMove(atom/destination)
|
||||
if(loc == destination)
|
||||
return 0
|
||||
var/is_origin_turf = isturf(loc)
|
||||
var/is_destination_turf = isturf(destination)
|
||||
// It is a new area if:
|
||||
// Both the origin and destination are turfs with different areas.
|
||||
// When either origin or destination is a turf and the other is not.
|
||||
var/is_new_area = (is_origin_turf ^ is_destination_turf) || (is_origin_turf && is_destination_turf && loc.loc != destination.loc)
|
||||
|
||||
var/atom/origin = loc
|
||||
loc = destination
|
||||
|
||||
if(origin)
|
||||
origin.Exited(src, destination)
|
||||
if(is_origin_turf)
|
||||
for(var/atom/movable/AM in origin)
|
||||
AM.Uncrossed(src)
|
||||
if(is_new_area && is_origin_turf)
|
||||
origin.loc.Exited(src, destination)
|
||||
|
||||
if(destination)
|
||||
if(loc)
|
||||
loc.Exited(src)
|
||||
loc = destination
|
||||
loc.Entered(src)
|
||||
return 1
|
||||
return 0
|
||||
destination.Entered(src, origin)
|
||||
if(is_destination_turf) // If we're entering a turf, cross all movable atoms
|
||||
for(var/atom/movable/AM in loc)
|
||||
if(AM != src)
|
||||
AM.Crossed(src)
|
||||
if(is_new_area && is_destination_turf)
|
||||
destination.loc.Entered(src, origin)
|
||||
return 1
|
||||
|
||||
//called when src is thrown into hit_atom
|
||||
/atom/movable/proc/throw_impact(atom/hit_atom, var/speed)
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
|
||||
/obj/machinery/computer/scan_consolenew
|
||||
name = "DNA Modifier Access Console"
|
||||
desc = "Scand DNA."
|
||||
desc = "Scan DNA."
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
icon_keyboard = "med_key"
|
||||
icon_screen = "dna"
|
||||
|
||||
@@ -273,6 +273,21 @@ var/list/sacrificed = list()
|
||||
for (,drain>0,drain-=5)
|
||||
sleep(2)
|
||||
user.heal_organ_damage(5, 0)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
for(var/obj/item/organ/I in H.internal_organs)
|
||||
if(I.damage > 0)
|
||||
I.damage = max(I.damage - 5, 0) //Heals 5 damage per organ per use
|
||||
if(I.damage <= 5 && I.organ_tag == O_EYES)
|
||||
H.sdisabilities &= ~BLIND
|
||||
for(var/obj/item/organ/E in H.bad_external_organs)
|
||||
var/obj/item/organ/external/affected = E
|
||||
if((affected.damage < affected.min_broken_damage * config.organ_health_multiplier) && (affected.status & ORGAN_BROKEN))
|
||||
affected.status &= ~ORGAN_BROKEN
|
||||
for(var/datum/wound/W in affected.wounds)
|
||||
if(istype(W, /datum/wound/internal_bleeding))
|
||||
affected.wounds -= W
|
||||
affected.update_damages()
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -264,7 +264,7 @@ datum
|
||||
target = targeta
|
||||
job = joba
|
||||
weight = get_points(job)
|
||||
explanation_text = "Frame [target.current.real_name], the [target.assigned_role] for a crime and make sure they are arrested and brought back to the Centcom station alive. We'll handle the rest from there."
|
||||
explanation_text = "Frame [target.current.real_name], the [target.assigned_role] for a crime and make sure they are arrested and brought back to the CentCom station alive. We'll handle the rest from there."
|
||||
|
||||
check_completion()
|
||||
if(!emergency_shuttle.returned())
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
the omniscience of the AI and rival the most hardened weapons your station is capable of. Tread lightly and \
|
||||
only hope this unknown assassin isn't here for you."
|
||||
config_tag = "ninja"
|
||||
required_players = 1
|
||||
required_players_secret = 3
|
||||
required_players = 5
|
||||
required_players_secret = 5
|
||||
required_enemies = 1
|
||||
end_on_antag_death = 0
|
||||
antag_tags = list(MODE_NINJA)
|
||||
@@ -9,27 +9,30 @@
|
||||
|
||||
/obj/item/clothing/under/technomancer
|
||||
name = "initiate's jumpsuit"
|
||||
desc = "It's a blue colored jumpsuit. There appears to be light-weight armor padding underneath, providing some protection."
|
||||
desc = "It's a blue colored jumpsuit. There appears to be light-weight armor padding underneath, providing some protection. \
|
||||
There is also a healthy amount of insulation underneath."
|
||||
icon_state = "initiate"
|
||||
armor = list(melee = 10, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
siemens_coefficient = 0.3
|
||||
|
||||
/obj/item/clothing/under/technomancer/apprentice
|
||||
name = "apprentice's jumpsuit"
|
||||
desc = "It's a blue colored jumpsuit with some silver markings. There appears to be light-weight armor padding \
|
||||
underneath, providing some protection."
|
||||
underneath, providing some protection. There is also a healthy amount of insulation underneath."
|
||||
icon_state = "apprentice"
|
||||
|
||||
/obj/item/clothing/under/technomancer/master
|
||||
name = "master's jumpsuit"
|
||||
desc = "It's a blue colored jumpsuit with some gold markings. There appears to be light-weight armor padding \
|
||||
underneath, providing some protection."
|
||||
underneath, providing some protection. There is also a healthy amount of insulation underneath."
|
||||
icon_state = "technomancer"
|
||||
|
||||
/obj/item/clothing/head/technomancer
|
||||
name = "initiate's hat"
|
||||
desc = "It's a somewhat silly looking blue pointed hat."
|
||||
icon_state = "initiate"
|
||||
armor = list(melee = 10, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.3
|
||||
|
||||
/obj/item/clothing/head/technomancer/apprentice
|
||||
name = "apprentice's hat"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Disposable Teleporter"
|
||||
desc = "An ultra-safe teleportation device that can directly teleport you to a number of locations at minimal risk, however \
|
||||
it has a limited amount of charges."
|
||||
cost = 100
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/disposable_teleporter
|
||||
|
||||
/obj/item/weapon/disposable_teleporter
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
of which your Core can provide. When you are struck by something, the shield will block 75% of the damage, deducting energy \
|
||||
proportional to the amount of force that was inflicted. Armor penetration has no effect on the shield's ability to protect \
|
||||
you from harm, however the shield will fail if the energy supply cannot meet demand."
|
||||
cost = 300
|
||||
cost = 200
|
||||
obj_path = /obj/item/clothing/suit/armor/shield
|
||||
|
||||
/obj/item/clothing/suit/armor/shield
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
the next attack you suffer, and strike the attacker with a strong bolt of lightning. This effect requires twenty seconds to \
|
||||
recharge. If you are attacked while this is recharging, a weaker lightning bolt is sent out, however you won't be protected from \
|
||||
the person beating you."
|
||||
cost = 250
|
||||
cost = 150
|
||||
obj_path = /obj/item/clothing/suit/armor/tesla
|
||||
|
||||
/obj/item/clothing/suit/armor/tesla
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
desc = "A core optimized for passive regeneration, however at the cost of capacity. Has a capacity of 7,000 units of energy, and \
|
||||
recharges at a rate of 70 units. Complex gravatics and force manipulation allows the wearer to also run slightly faster, and \
|
||||
reduces incoming instability from functions by 10%."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/technomancer_core/rapid
|
||||
|
||||
/datum/technomancer/equipment/bulky_core
|
||||
@@ -20,7 +20,7 @@
|
||||
purchase one or more energy-generating Functions as well if using this core. Has a capacity of 20,000 units of energy, \
|
||||
and recharges at a rate of 25 units. The intense weight of the core unfortunately can cause the wear to move slightly slower, \
|
||||
and the closeness of the capacitors causes a slight increase in incoming instability by 10%."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/technomancer_core/bulky
|
||||
|
||||
/datum/technomancer/equipment/unstable
|
||||
@@ -29,7 +29,7 @@
|
||||
better as the user has more instability, which could prove dangerous to the inexperienced or unprepared. Has a capacity of 13,000 \
|
||||
units of energy, and recharges at a rate of 35 units at no instability, and approximately 110 units when within the \
|
||||
'yellow zone' of instability. Incoming instability is also amplified by 30%, due to the nature of this core."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/technomancer_core/unstable
|
||||
|
||||
/datum/technomancer/equipment/recycling
|
||||
@@ -38,7 +38,7 @@
|
||||
cores. The focus on efficency also makes instability less of an issue, as incoming instability from functions are reduced by \
|
||||
40%. The capacitor is also slightly better, holding 12,000 units of energy, however the reactor is slower to recharge, at a rate \
|
||||
of 40 units."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/technomancer_core/recycling
|
||||
|
||||
/datum/technomancer/equipment/summoning
|
||||
@@ -47,13 +47,13 @@
|
||||
entities from vast distances, and keeping them there. Wearers of this core can maintain up to 30 summons at once, and the energy \
|
||||
demand for maintaining summons is severely reduced. This comes at the price of capcitors that can only hold 8,000 units of energy, \
|
||||
a recharging rate of 35 energy, and no shielding from instability."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/technomancer_core/summoner
|
||||
|
||||
/datum/technomancer/equipment/hypo_belt
|
||||
name = "Hypo Belt"
|
||||
desc = "A medical belt designed to carry autoinjectors and other medical equipment. Comes with one of each hypo."
|
||||
cost = 100
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/storage/belt/medical/technomancer
|
||||
|
||||
/obj/item/weapon/storage/belt/medical/technomancer
|
||||
@@ -76,7 +76,7 @@
|
||||
desc = "A belt with a literal pocket which opens to a localized pocket of 'Blue-Space', allowing for more storage. \
|
||||
The nature of the pocket allows for storage of larger objects than what is typical for other belts, and in larger quanities. \
|
||||
It will also help keep your pants on."
|
||||
cost = 100
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/storage/belt/holding
|
||||
|
||||
/obj/item/weapon/storage/belt/holding
|
||||
@@ -103,7 +103,7 @@
|
||||
/datum/technomancer/equipment/omni_sight
|
||||
name = "Omnisight Scanner"
|
||||
desc = "A very rare scanner worn on the face, which allows the wearer to see nearly anything across walls."
|
||||
cost = 400
|
||||
cost = 300
|
||||
obj_path = /obj/item/clothing/glasses/omni
|
||||
|
||||
/obj/item/clothing/glasses/omni
|
||||
@@ -122,7 +122,7 @@
|
||||
name = "Medical HUD"
|
||||
desc = "A commonly available HUD for medical professionals, which displays how healthy an individual is. \
|
||||
Recommended for support-based apprentices!"
|
||||
cost = 30
|
||||
cost = 25
|
||||
obj_path = /obj/item/clothing/glasses/thermal/plain/monocle
|
||||
|
||||
/datum/technomancer/equipment/scepter
|
||||
@@ -130,7 +130,7 @@
|
||||
desc = "A gem sometimes found in the depths of asteroids makes up the basis for this device. Energy is channeled into it from \
|
||||
the Core and the user, causing many functions to be enhanced in various ways, so long as it is held in the off-hand. \
|
||||
Be careful not to lose this!"
|
||||
cost = 300
|
||||
cost = 200
|
||||
obj_path = /obj/item/weapon/scepter
|
||||
|
||||
/obj/item/weapon/scepter
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
rng = rand(0,8)
|
||||
switch(rng)
|
||||
if(0)
|
||||
apply_effect(instability * 0.5, IRRADIATE)
|
||||
apply_effect(instability * 0.3, IRRADIATE)
|
||||
if(1)
|
||||
return
|
||||
// visible_message("<span class='warning'>\The [src] suddenly collapses!</span>",
|
||||
@@ -120,21 +120,21 @@
|
||||
// Weaken(instability * 0.1)
|
||||
if(2)
|
||||
if(can_feel_pain())
|
||||
apply_effect(instability * 0.5, AGONY)
|
||||
apply_effect(instability * 0.3, AGONY)
|
||||
src << "<span class='danger'>You feel a sharp pain!</span>"
|
||||
if(3)
|
||||
apply_effect(instability * 0.5, EYE_BLUR)
|
||||
apply_effect(instability * 0.3, EYE_BLUR)
|
||||
src << "<span class='danger'>Your eyes start to get cloudy!</span>"
|
||||
if(4)
|
||||
electrocute_act(instability * 0.3, "unstable energies")
|
||||
if(5)
|
||||
adjustFireLoss(instability * 0.2) //10 burn @ 50 instability
|
||||
adjustFireLoss(instability * 0.15) //7.5 burn @ 50 instability
|
||||
src << "<span class='danger'>You feel your skin burn!</span>"
|
||||
if(6)
|
||||
adjustBruteLoss(instability * 0.2) //10 brute @ 50 instability
|
||||
adjustBruteLoss(instability * 0.15) //7.5 brute @ 50 instability
|
||||
src << "<span class='danger'>You feel a sharp pain as an unseen force harms your body!</span>"
|
||||
if(7)
|
||||
adjustToxLoss(instability * 0.2) //10 tox @ 50 instability
|
||||
adjustToxLoss(instability * 0.15) //7.5 tox @ 50 instability
|
||||
if(8)
|
||||
safe_blink(src, range = 6)
|
||||
src << "<span class='warning'>You're teleported against your will!</span>"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Abjuration"
|
||||
desc = "This ability attempts to send summoned or teleported entities or anomalies to the place from whence they came, or at least \
|
||||
far away from the caster. Failing that, it may inhibit those entities in some form."
|
||||
cost = 40
|
||||
cost = 25
|
||||
obj_path = /obj/item/weapon/spell/abjuration
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Apportation"
|
||||
desc = "This allows you to teleport objects into your hand, or to pull people towards you. If they're close enough, the function \
|
||||
will grab them automatically."
|
||||
cost = 50
|
||||
cost = 25
|
||||
obj_path = /obj/item/weapon/spell/apportation
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Allows you to create a specific sound at a location of your choosing."
|
||||
enhancement_desc = "An extremely loud sound that a large amount of energy and instability becomes available, which will \
|
||||
deafen and stun all who are near the targeted tile, including yourself if unprotected."
|
||||
cost = 150
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/audible_deception
|
||||
ability_icon_state = "tech_audibledeception"
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/technomancer/spell/biomed_aura
|
||||
name = "Restoration Aura"
|
||||
desc = "Heals you and your allies (or everyone, if you want) of trauma and burns slowly, as long as they remain within four meters."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/aura/biomed
|
||||
ability_icon_state = "tech_biomedaura"
|
||||
category = SUPPORT_SPELLS
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
This does not affect you or your allies. It also causes a large amount of fire to erupt around you, however the main threat is \
|
||||
still the heating up."
|
||||
enhancement_desc = "Increased heat generation, more fires, and higher temperature cap."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/aura/fire
|
||||
ability_icon_state = "tech_fireaura"
|
||||
category = OFFENSIVE_SPELLS
|
||||
@@ -21,13 +21,13 @@
|
||||
qdel(src)
|
||||
var/list/nearby_things = range(4,owner)
|
||||
|
||||
var/temp_change = 25
|
||||
var/temp_cap = 500
|
||||
var/temp_change = 40
|
||||
var/temp_cap = 600
|
||||
var/fire_power = 2
|
||||
|
||||
if(check_for_scepter())
|
||||
temp_change = 50
|
||||
temp_cap = 700
|
||||
temp_change = 80
|
||||
temp_cap = 1000
|
||||
fire_power = 4
|
||||
for(var/mob/living/carbon/human/H in nearby_things)
|
||||
if(is_ally(H))
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Lowers the core body temperature of everyone around you (except for your friends), causing them to freeze to death if \
|
||||
they stay within four meters of you."
|
||||
enhancement_desc = "The chill becomes lethal."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/aura/frost
|
||||
ability_icon_state = "tech_frostaura"
|
||||
category = DEFENSIVE_SPELLS // Scepter-less frost aura is nonlethal.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/technomancer/spell/shock_aura
|
||||
name = "Electric Aura"
|
||||
desc = "Repeatively electrocutes enemies within four meters of you, as well as nearby electronics."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/aura/shock
|
||||
ability_icon_state = "tech_shockaura"
|
||||
category = OFFENSIVE_SPELLS
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Force the target to teleport a short distance away. This target could be anything from something lying on the ground, to someone trying to \
|
||||
fight you, or even yourself. Using this on someone next to you makes their potential distance after teleportation greater."
|
||||
enhancement_desc = "Blink distance is increased greatly."
|
||||
cost = 100
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/blink
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
targets. This function will have no effect on entities of higher intelligence, such as humans and similar alien species, as it's \
|
||||
not true mind control, but merely pheromone synthesis for living animals, and electronic hacking for simple robots. The green web \
|
||||
around the entity is merely a hologram used to allow the user to know if the creature is safe or not."
|
||||
cost = 200
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/control
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
Every second, electricity is stolen until the link is broken by the target moving too far away, or having no more energy left. \
|
||||
Can drain from powercells, microbatteries, and other Cores. The beam created by the siphoning is harmful to touch."
|
||||
enhancement_desc = "Rate of siphoning is doubled."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/energy_siphon
|
||||
ability_icon_state = "tech_energysiphon"
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/technomancer/spell/flame_tongue
|
||||
name = "Flame Tongue"
|
||||
desc = "Using a miniturized flamethrower in your gloves, you can emit a flame strong enough to melt both your enemies and walls."
|
||||
cost = 100
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/flame_tongue
|
||||
ability_icon_state = "tech_flametongue"
|
||||
category = OFFENSIVE_SPELLS
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Illusion"
|
||||
desc = "Allows you to create and control a holographic illusion, that can take the form of most object or entities."
|
||||
enhancement_desc = "Illusions will be made of hard light, allowing the interception of attacks, appearing more realistic."
|
||||
cost = 100
|
||||
cost = 25
|
||||
obj_path = /obj/item/weapon/spell/illusion
|
||||
ability_icon_state = "tech_illusion"
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Corona"
|
||||
desc = "Causes the victim to glow very brightly, which while harmless in itself, makes it easier for them to be hit. The \
|
||||
bright glow also makes it very difficult to be stealthy. The effect lasts for one minute."
|
||||
cost = 100
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/insert/corona
|
||||
ability_icon_state = "tech_corona"
|
||||
category = SUPPORT_SPELLS
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Mend Organs"
|
||||
desc = "Heals the target's internal organs, both organic and robotic. Instability is split between the target \
|
||||
and technomancer, if seperate."
|
||||
cost = 75
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/insert/mend_organs
|
||||
ability_icon_state = "tech_mendwounds"
|
||||
category = SUPPORT_SPELLS
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Repel Missiles"
|
||||
desc = "Places a repulsion field around you, which attempts to deflect incoming bullets and lasers, making them 30% less likely \
|
||||
to hit you. The field lasts for five minutes and can be granted to yourself or an ally."
|
||||
cost = 60
|
||||
cost = 25
|
||||
obj_path = /obj/item/weapon/spell/insert/repel_missiles
|
||||
ability_icon_state = "tech_repelmissiles"
|
||||
category = SUPPORT_SPELLS
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Instability Tap"
|
||||
desc = "Creates a large sum of energy, at the cost of a very large amount of instability afflicting you."
|
||||
enhancement_desc = "50% more energy gained, 20% less instability gained."
|
||||
cost = 120
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/instability_tap
|
||||
ability_icon_state = "tech_instabilitytap"
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "This function places a specific 'mark' beacon under you, which is used by the Recall function as a destination. \
|
||||
Note that using Mark again will move the destination instead of creating a second destination, and only one destination \
|
||||
can exist, regardless of who casted Mark."
|
||||
cost = 50
|
||||
cost = 25
|
||||
obj_path = /obj/item/weapon/spell/mark
|
||||
ability_icon_state = "tech_mark"
|
||||
category = UTILITY_SPELLS
|
||||
@@ -50,7 +50,7 @@
|
||||
desc = "This function teleports you to where you placed a mark using the Mark function. Without the Mark function, this \
|
||||
function is useless. Note that teleporting takes three seconds. Being incapacitated while teleporting will cancel it."
|
||||
enhancement_desc = "Recall takes two seconds instead of three."
|
||||
cost = 50
|
||||
cost = 25
|
||||
obj_path = /obj/item/weapon/spell/recall
|
||||
ability_icon_state = "tech_recall"
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Oxygenate"
|
||||
desc = "This function creates oxygen at a location of your chosing. If used on a humanoid entity, it heals oxygen deprivation. \
|
||||
If casted on the envirnment, air (oxygen and nitrogen) is moved from a distant location to your target."
|
||||
cost = 70
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/oxygenate
|
||||
ability_icon_state = "oxygenate"
|
||||
category = SUPPORT_SPELLS
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Phase Shift"
|
||||
desc = "Hides you in the safest possible place, where no harm can come to you. Unfortunately you can only stay inside for a few moments before \
|
||||
draining your powercell."
|
||||
cost = 80
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/phase_shift
|
||||
category = DEFENSIVE_SPELLS
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/technomancer/spell/beam
|
||||
name = "Beam"
|
||||
desc = "Fires a laser at your target. Cheap, reliable, and a bit boring."
|
||||
cost = 150
|
||||
cost = 100
|
||||
ability_icon_state = "tech_beam"
|
||||
obj_path = /obj/item/weapon/spell/projectile/beam
|
||||
category = OFFENSIVE_SPELLS
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Force Missile"
|
||||
desc = "This fires a missile at your target. It's cheap to use, however the projectile itself moves and impacts in such a way \
|
||||
that armor designed to protect from blunt force will mitigate this function as well."
|
||||
cost = 100
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/projectile/force_missile
|
||||
category = OFFENSIVE_SPELLS
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Overload"
|
||||
desc = "Fires a bolt of highly unstable energy, that does damaged equal to 1.5% of the technomancer's current reserve of energy. \
|
||||
This energy pierces all known armor."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/projectile/overload
|
||||
category = OFFENSIVE_SPELLS
|
||||
|
||||
|
||||
@@ -10,10 +10,9 @@
|
||||
var/fire_sound = null
|
||||
|
||||
/obj/item/weapon/spell/projectile/on_ranged_cast(atom/hit_atom, mob/living/user)
|
||||
var/turf/T = get_turf(hit_atom)
|
||||
if(set_up(hit_atom, user))
|
||||
var/obj/item/projectile/new_projectile = new spell_projectile(get_turf(user))
|
||||
new_projectile.launch(T)
|
||||
new_projectile.launch(hit_atom)
|
||||
if(fire_sound)
|
||||
playsound(get_turf(src), fire_sound, 75, 1)
|
||||
owner.adjust_instability(instability_per_shot)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/technomancer/spell/radiance
|
||||
name = "Radiance"
|
||||
desc = "Causes you to be very radiant, glowing brightly in visible light, thermal energy, and deadly ionizing radiation."
|
||||
cost = 180
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/radiance
|
||||
category = OFFENSIVE_SPELLS
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/technomancer/spell/reflect
|
||||
name = "Reflect"
|
||||
desc = "Emits a protective shield fron your hand in front of you, which will reflect one attack back at the attacker."
|
||||
cost = 120
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/reflect
|
||||
ability_icon_state = "tech_reflect"
|
||||
category = DEFENSIVE_SPELLS
|
||||
@@ -22,7 +22,7 @@
|
||||
spark_system = PoolOrNew(/datum/effect/effect/system/spark_spread)
|
||||
spark_system.set_up(5, 0, src)
|
||||
owner << "<span class='notice'>Your shield will expire in 3 seconds!</span>"
|
||||
spawn(3 SECONDS)
|
||||
spawn(5 SECONDS)
|
||||
if(src)
|
||||
owner << "<span class='danger'>Your shield expires!</span>"
|
||||
qdel(src)
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
if(!reflecting)
|
||||
reflecting = 1
|
||||
spawn(1 SECOND) //To ensure that most or all of a burst fire cycle is reflected.
|
||||
spawn(2 SECONDS) //To ensure that most or all of a burst fire cycle is reflected.
|
||||
owner << "<span class='danger'>Your shield fades due being used up!</span>"
|
||||
qdel(src)
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
if(!reflecting)
|
||||
reflecting = 1
|
||||
spawn(1 SECOND) //To ensure that most or all of a burst fire cycle is reflected.
|
||||
spawn(2 SECONDS) //To ensure that most or all of a burst fire cycle is reflected.
|
||||
owner << "<span class='danger'>Your shield fades due being used up!</span>"
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Shield"
|
||||
desc = "Emits a protective shield fron your hand in front of you, which will protect you from almost anything able to harm \
|
||||
you, so long as you can power it."
|
||||
cost = 120
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/shield
|
||||
ability_icon_state = "tech_shield"
|
||||
category = DEFENSIVE_SPELLS
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/technomancer/spell/darkness
|
||||
name = "Darkness"
|
||||
desc = "Disrupts photons moving in a local area, causing darkness to shroud yourself or a position of your choosing."
|
||||
cost = 30
|
||||
cost = 25
|
||||
obj_path = /obj/item/weapon/spell/spawner/darkness
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/technomancer/spell/pulsar
|
||||
name = "Pulsar"
|
||||
desc = "Emits electronic pulses to destroy, disable, or otherwise harm devices and machines. Be sure to not hit yourself with this."
|
||||
cost = 150
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/spawner/pulsar
|
||||
category = OFFENSIVE_SPELLS
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
The creatures take a few moments to be teleported to the targeted tile. Note that the creatures summoned are \
|
||||
not inherently loyal to the technomancer, and that the creatures will be hurt slightly from being teleported to you."
|
||||
enhancement_desc = "Summoned entities will never harm their summoner."
|
||||
cost = 200
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/summon/summon_creature
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Teleports a prefabricated 'ward' drone to the target location, which will alert you and your allies when it sees entities \
|
||||
moving around it, or when it is attacked. They can see for up to five meters. Wards expire in six minutes."
|
||||
enhancement_desc = "Wards can detect invisibile entities, and are more specific in relaying information about what it sees."
|
||||
cost = 100
|
||||
cost = 25
|
||||
obj_path = /obj/item/weapon/spell/summon/summon_ward
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
@@ -84,6 +84,9 @@
|
||||
if(L.alpha <= 127)
|
||||
continue // Too transparent, as a mercy to camo lings.
|
||||
|
||||
else
|
||||
L.break_cloak()
|
||||
|
||||
// Warn the Technomancer when it sees a new mob.
|
||||
if(!(L in seen_mobs))
|
||||
seen_mobs.Add(L)
|
||||
@@ -111,3 +114,7 @@
|
||||
overlays.Cut()
|
||||
var/image/I = image('icons/mob/critter.dmi',"ward_truesight")
|
||||
overlays.Add(I)
|
||||
|
||||
/mob/living/simple_animal/ward/invisible_detect
|
||||
true_sight = 1
|
||||
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Targeting Matrix"
|
||||
desc = "Automatically targets and fires a ranged weapon or function at a non-friendly target near a targeted tile. \
|
||||
Each target assisted attack costs some energy and instability."
|
||||
cost = 150
|
||||
cost = 50
|
||||
ability_icon_state = "tech_targetingmatrix"
|
||||
obj_path = /obj/item/weapon/spell/targeting_matrix
|
||||
category = UTILITY_SPELLS
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/technomancer/spell/warp_strike
|
||||
name = "Warp Strike"
|
||||
desc = "Teleports you next to your target, and attacks them with whatever is in your off-hand, spell or object."
|
||||
cost = 200
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/spell/warp_strike
|
||||
ability_icon_state = "tech_warpstrike"
|
||||
category = OFFENSIVE_SPELLS
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
their powers can be used for good or if their arrival foreshadows the destruction of the entire colony, or worse."
|
||||
config_tag = "technomancer"
|
||||
votable = 0
|
||||
required_players = 8
|
||||
required_players_secret = 10
|
||||
required_players = 5
|
||||
required_players_secret = 5
|
||||
required_enemies = 1
|
||||
end_on_antag_death = 0
|
||||
antag_tags = list(MODE_TECHNOMANCER)
|
||||
@@ -239,6 +239,11 @@ proc/get_all_job_icons() //For all existing HUD icons
|
||||
if(I.rank in job_icons)
|
||||
return I.rank
|
||||
|
||||
var/centcom = get_all_centcom_jobs()
|
||||
if(I.assignment in centcom) //Return with the NT logo if it is a CentCom job
|
||||
return "CentCom"
|
||||
if(I.rank in centcom)
|
||||
return "CentCom"
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back)
|
||||
if(has_alt_title(H, alt_title,"Visitor")) //I doubt someone visiting the station would want to wear an ugly grey uniform
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/assistantformal(H), slot_w_uniform)
|
||||
else if(has_alt_title(H, alt_title,"Resident"))
|
||||
|
||||
@@ -30,6 +30,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/captain(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/cap(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/com(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/captain(H), slot_w_uniform)
|
||||
if(H.age>49)
|
||||
// Since we can have something other than the default uniform at this
|
||||
@@ -109,4 +110,39 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack)
|
||||
H.implant_loyalty()
|
||||
return 1
|
||||
return 1
|
||||
|
||||
/datum/job/secretary
|
||||
title = "Command Secretary"
|
||||
flag = BRIDGE
|
||||
department = "Civilian"
|
||||
head_position = 1
|
||||
department_flag = CIVILIAN
|
||||
faction = "Station"
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
supervisors = "command staff"
|
||||
selection_color = "#2F2F7F"
|
||||
idtype = /obj/item/weapon/card/id/silver
|
||||
alt_titles = list("Command Liaison", "Bridge Secretary")
|
||||
minimal_player_age = 5
|
||||
economic_modifier = 7
|
||||
|
||||
access = list(access_heads)
|
||||
minimal_access = list(access_heads)
|
||||
|
||||
/datum/job/secretary/equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_com(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hop(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand)
|
||||
if(H.gender == FEMALE)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/female/skirt(H), slot_w_uniform)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/charcoal(H), slot_w_uniform)
|
||||
return 1
|
||||
@@ -21,6 +21,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform)
|
||||
@@ -86,6 +87,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/hydroponics(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/hyd(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/hyd(H), slot_back)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -171,6 +173,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/shaftminer(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
@@ -265,6 +268,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/internalaffairs(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_engineer(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/ce(H), slot_l_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
|
||||
@@ -73,6 +74,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
@@ -111,6 +113,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/atmospheric_technician(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/atmos(H), slot_l_store)
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back)
|
||||
|
||||
/datum/job/proc/equip_survival(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/med(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/cmo(H), slot_belt)
|
||||
@@ -63,6 +64,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/med(H), slot_back)
|
||||
if(has_alt_title(H, alt_title,"Emergency Physician"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit)
|
||||
@@ -78,6 +80,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/virology(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/vir(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/viro(H), slot_back)
|
||||
else if(has_alt_title(H, alt_title,"Medical Doctor"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
@@ -128,6 +131,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/chemistry(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/chem(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/chem(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/chemist(H), slot_wear_suit)
|
||||
return 1
|
||||
|
||||
@@ -185,6 +189,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back)
|
||||
if(has_alt_title(H, alt_title,"Psychiatrist"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych(H), slot_w_uniform)
|
||||
else if(has_alt_title(H, alt_title,"Psychologist"))
|
||||
@@ -221,6 +226,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/med(H), slot_back)
|
||||
if(has_alt_title(H, alt_title,"Emergency Medical Technician"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/paramedic(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit)
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
|
||||
access_tox_storage, access_teleporter, access_sec_doors,
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch)
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva) //VORESTATION EDIT
|
||||
minimal_access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
|
||||
access_tox_storage, access_teleporter, access_sec_doors,
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch)
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva) //VORESTATION EDIT
|
||||
alt_titles = list("Research Supervisor")
|
||||
|
||||
minimum_character_age = 25
|
||||
@@ -37,6 +37,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/tox(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
return 1
|
||||
|
||||
@@ -70,6 +71,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/tox(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit)
|
||||
return 1
|
||||
|
||||
@@ -101,6 +103,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/tox(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/sec(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hos(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
@@ -70,6 +71,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/sec(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/warden(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/warden(H), slot_belt)
|
||||
@@ -108,6 +110,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/det(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/detective(H), slot_belt)
|
||||
@@ -151,6 +154,7 @@
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/sec(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/security(H), slot_belt)
|
||||
|
||||
@@ -44,6 +44,7 @@ var/const/CHAPLAIN =(1<<10)
|
||||
var/const/CLOWN =(1<<11)
|
||||
var/const/MIME =(1<<12)
|
||||
var/const/ASSISTANT =(1<<13)
|
||||
var/const/BRIDGE =(1<<14)
|
||||
|
||||
|
||||
var/list/assistant_occupations = list(
|
||||
@@ -56,7 +57,8 @@ var/list/command_positions = list(
|
||||
"Head of Security",
|
||||
"Chief Engineer",
|
||||
"Research Director",
|
||||
"Chief Medical Officer"
|
||||
"Chief Medical Officer",
|
||||
"Command Secretary"
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -329,7 +329,7 @@
|
||||
organStatus["broken"] = E.broken_description
|
||||
if(E.status & ORGAN_ROBOT)
|
||||
organStatus["robotic"] = 1
|
||||
if(E.status & ORGAN_SPLINTED)
|
||||
if(E.splinted)
|
||||
organStatus["splinted"] = 1
|
||||
if(E.status & ORGAN_BLEEDING)
|
||||
organStatus["bleeding"] = 1
|
||||
@@ -483,7 +483,7 @@
|
||||
break
|
||||
if(istype(e, /obj/item/organ/external/chest) && occupant.is_lung_ruptured())
|
||||
lung_ruptured = "Lung ruptured:"
|
||||
if(e.status & ORGAN_SPLINTED)
|
||||
if(e.splinted)
|
||||
splint = "Splinted:"
|
||||
if(e.status & ORGAN_BLEEDING)
|
||||
bled = "Bleeding:"
|
||||
|
||||
@@ -222,7 +222,7 @@ mob/living/proc/near_camera()
|
||||
|
||||
/mob/living/proc/tracking_status()
|
||||
// Easy checks first.
|
||||
// Don't detect mobs on Centcom. Since the wizard den is on Centcomm, we only need this.
|
||||
// Don't detect mobs on CentCom. Since the wizard den is on CentCom, we only need this.
|
||||
var/obj/item/weapon/card/id/id = GetIdCard()
|
||||
if(id && id.prevent_tracking())
|
||||
return TRACKING_TERMINATE
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
src.updateDialog()
|
||||
|
||||
// OMG CENTCOMM LETTERHEAD
|
||||
if("MessageCentcomm")
|
||||
if("MessageCentCom")
|
||||
if(src.authenticated==2)
|
||||
if(centcomm_message_cooldown)
|
||||
usr << "\red Arrays recycling. Please stand by."
|
||||
@@ -181,7 +181,7 @@
|
||||
var/input = sanitize(input("Please choose a message to transmit to [boss_short] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", ""))
|
||||
if(!input || !(usr in view(1,src)))
|
||||
return
|
||||
Centcomm_announce(input, usr)
|
||||
CentCom_announce(input, usr)
|
||||
usr << "\blue Message transmitted."
|
||||
log_say("[key_name(usr)] has made an IA [boss_short] announcement: [input]")
|
||||
centcomm_message_cooldown = 1
|
||||
@@ -295,7 +295,7 @@
|
||||
if (src.authenticated==2)
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=announce'>Make An Announcement</A> \]"
|
||||
if(src.emagged == 0)
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=MessageCentcomm'>Send an emergency message to [boss_short]</A> \]"
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=MessageCentCom'>Send an emergency message to [boss_short]</A> \]"
|
||||
else
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=MessageSyndicate'>Send an emergency message to \[UNKNOWN\]</A> \]"
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=RestoreBackup'>Restore Backup Routing Data</A> \]"
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
if (href_list["choice"])
|
||||
switch(href_list["choice"])
|
||||
if ("giv_name")
|
||||
var/nam = sanitize(input("Person pass is issued to", "Name", giv_name) as text|null)
|
||||
var/nam = sanitizeName(input("Person pass is issued to", "Name", giv_name) as text|null)
|
||||
if (nam)
|
||||
giv_name = nam
|
||||
if ("reason")
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
|
||||
|
||||
/datum/file/program/communications
|
||||
name = "Centcom communications relay"
|
||||
desc = "Used to connect to Centcom."
|
||||
name = "CentCom communications relay"
|
||||
desc = "Used to connect to CentCom."
|
||||
active_state = "comm"
|
||||
req_access = list(access_heads)
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
computer.updateDialog()
|
||||
|
||||
// OMG CENTCOMM LETTERHEAD
|
||||
if("MessageCentcomm" in href_list)
|
||||
if("MessageCentCom" in href_list)
|
||||
if(!computer.radio.subspace)
|
||||
return
|
||||
if(authenticated==2)
|
||||
@@ -195,7 +195,7 @@
|
||||
var/input = sanitize(input("Please choose a message to transmit to [boss_short] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", ""))
|
||||
if(!input || !interactable())
|
||||
return
|
||||
Centcomm_announce(input, usr)
|
||||
CentCom_announce(input, usr)
|
||||
usr << "Message transmitted."
|
||||
log_say("[key_name(usr)] has made a [boss_short] announcement: [input]")
|
||||
centcomm_message_cooldown = 1
|
||||
@@ -288,7 +288,7 @@
|
||||
if (authenticated==2)
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];announce'>Make An Announcement</A> \]"
|
||||
if(computer.emagged == 0)
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];MessageCentcomm'>Send an emergency message to [boss_short]</A> \]"
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];MessageCentCom'>Send an emergency message to [boss_short]</A> \]"
|
||||
else
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];MessageSyndicate'>Send an emergency message to \[UNKNOWN\]</A> \]"
|
||||
dat += "<BR>\[ <A HREF='?src=\ref[src];RestoreBackup'>Restore Backup Routing Data</A> \]"
|
||||
|
||||
@@ -62,13 +62,13 @@
|
||||
return 1
|
||||
|
||||
/*
|
||||
Centcom root authorization certificate
|
||||
CentCom root authorization certificate
|
||||
|
||||
Non-destructive, officially sanctioned.
|
||||
Has the same effect on computers as an emag.
|
||||
*/
|
||||
/datum/file/centcom_auth
|
||||
name = "Centcom Root Access Token"
|
||||
name = "CentCom Root Access Token"
|
||||
extension = "auth"
|
||||
volume = 100
|
||||
copy()
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call [boss_short] Support.</span>"
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call CentComm Support.</span>"
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call CentCom Support.</span>"
|
||||
else
|
||||
transfer_and_vend(CH, C)
|
||||
|
||||
@@ -328,7 +328,7 @@
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call [boss_short] Support.</span>"
|
||||
return 0
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call CentComm Support.</span>"
|
||||
usr << "\icon[src]<span class='warning'>Unable to access vendor account. Please record the machine ID and call CentCom Support.</span>"
|
||||
return 0
|
||||
else
|
||||
transfer_and_reimburse(CH)
|
||||
|
||||
@@ -447,6 +447,31 @@
|
||||
state = 3
|
||||
if(frame_type.frame_class == "machine")
|
||||
user << desc
|
||||
else if(state == 3)
|
||||
if(frame_type.frame_class == "machine")
|
||||
for(var/I in req_components)
|
||||
if(istype(P, I) && (req_components[I] > 0))
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
if(istype(P, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/CP = P
|
||||
if(CP.get_amount() > 1)
|
||||
var/camt = min(CP.amount, req_components[I]) // amount of cable to take, idealy amount required, but limited by amount provided
|
||||
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src)
|
||||
CC.amount = camt
|
||||
CC.update_icon()
|
||||
CP.use(camt)
|
||||
components += CC
|
||||
req_components[I] -= camt
|
||||
update_desc()
|
||||
break
|
||||
|
||||
user.drop_item()
|
||||
P.forceMove(src)
|
||||
components += P
|
||||
req_components[I]--
|
||||
update_desc()
|
||||
break
|
||||
user << desc
|
||||
|
||||
else if(istype(P, /obj/item/weapon/wirecutters))
|
||||
if(state == 3)
|
||||
@@ -506,20 +531,7 @@
|
||||
for(var/I in req_components)
|
||||
if(istype(P, I) && (req_components[I] > 0))
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
if(istype(P, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/CP = P
|
||||
if(CP.get_amount() > 1)
|
||||
var/camt = min(CP.amount, req_components[I]) // amount of cable to take, idealy amount required, but limited by amount provided
|
||||
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src)
|
||||
CC.amount = camt
|
||||
CC.update_icon()
|
||||
CP.use(camt)
|
||||
components += CC
|
||||
req_components[I] -= camt
|
||||
update_desc()
|
||||
break
|
||||
|
||||
else if(istype(P, /obj/item/stack/material/glass/reinforced))
|
||||
if(istype(P, /obj/item/stack/material/glass/reinforced))
|
||||
var/obj/item/stack/material/glass/reinforced/CP = P
|
||||
if(CP.get_amount() > 1)
|
||||
var/camt = min(CP.amount, req_components[I]) // amount of glass to take, idealy amount required, but limited by amount provided
|
||||
@@ -539,8 +551,65 @@
|
||||
update_desc()
|
||||
break
|
||||
user << desc
|
||||
if(P && P.loc != src && !istype(P, /obj/item/stack/cable_coil) && !istype(P, /obj/item/stack/material))
|
||||
if(P && P.loc != src && !istype(P, /obj/item/stack/material))
|
||||
user << "<span class='warning'>You cannot add that component to the machine!</span>"
|
||||
return
|
||||
|
||||
update_icon()
|
||||
update_icon()
|
||||
|
||||
/obj/structure/frame/verb/rotate()
|
||||
set name = "Rotate Frame Counter-Clockwise"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.incapacitated())
|
||||
return 0
|
||||
|
||||
if(anchored)
|
||||
usr << "It is fastened to the floor therefore you can't rotate it!"
|
||||
return 0
|
||||
|
||||
set_dir(turn(dir, 90))
|
||||
|
||||
var/dir_text
|
||||
if(dir == 1)
|
||||
dir_text = "north"
|
||||
else if(dir == 2)
|
||||
dir_text = "south"
|
||||
else if(dir == 4)
|
||||
dir_text = "east"
|
||||
else if(dir == 8)
|
||||
dir_text = "west"
|
||||
|
||||
usr << "<span class='notice'>You rotate the [src] to face [dir_text]!</span>"
|
||||
|
||||
return
|
||||
|
||||
|
||||
/obj/structure/frame/verb/revrotate()
|
||||
set name = "Rotate Frame Clockwise"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.incapacitated())
|
||||
return 0
|
||||
|
||||
if(anchored)
|
||||
usr << "It is fastened to the floor therefore you can't rotate it!"
|
||||
return 0
|
||||
|
||||
set_dir(turn(dir, 270))
|
||||
|
||||
var/dir_text
|
||||
if(dir == 1)
|
||||
dir_text = "north"
|
||||
else if(dir == 2)
|
||||
dir_text = "south"
|
||||
else if(dir == 4)
|
||||
dir_text = "east"
|
||||
else if(dir == 8)
|
||||
dir_text = "west"
|
||||
|
||||
usr << "<span class='notice'>You rotate the [src] to face [dir_text]!</span>"
|
||||
|
||||
return
|
||||
@@ -586,7 +586,7 @@
|
||||
var/electrified = 0
|
||||
|
||||
//Departments that the cycler can paint suits to look like.
|
||||
var/list/departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction")
|
||||
var/list/departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard")
|
||||
//Species that the suits can be configured to fit.
|
||||
var/list/species = list("Human","Skrell","Unathi","Tajara", "Teshari")
|
||||
|
||||
@@ -634,7 +634,7 @@
|
||||
name = "Medical suit cycler"
|
||||
model_text = "Medical"
|
||||
req_access = list(access_medical)
|
||||
departments = list("Medical")
|
||||
departments = list("Medical","Biohazard")
|
||||
|
||||
/obj/machinery/suit_cycler/syndicate
|
||||
name = "Nonstandard suit cycler"
|
||||
@@ -751,8 +751,8 @@
|
||||
|
||||
//Clear the access reqs, disable the safeties, and open up all paintjobs.
|
||||
user << "<span class='danger'>You run the sequencer across the interface, corrupting the operating protocols.</span>"
|
||||
departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","^%###^%$")
|
||||
species = list("Human","Tajara","Skrell","Unathi", "Teshari")
|
||||
departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","^%###^%$")
|
||||
species = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid") //VORESTATION EDIT
|
||||
|
||||
emagged = 1
|
||||
safeties = 0
|
||||
@@ -1036,6 +1036,15 @@
|
||||
suit.name = "Construction voidsuit"
|
||||
suit.icon_state = "rig-engineering_con"
|
||||
suit.item_state = "eng_voidsuit_con"
|
||||
if("Biohazard")
|
||||
if(helmet)
|
||||
helmet.name = "Biohazard voidsuit helmet"
|
||||
helmet.icon_state = "rig0-medical_bio"
|
||||
helmet.item_state = "rig0-medical_bio"
|
||||
if(suit)
|
||||
suit.name = "Biohazard voidsuit"
|
||||
suit.icon_state = "rig-medical_bio"
|
||||
suit.item_state = "medical_voidsuit_bio"
|
||||
if("^%###^%$" || "Mercenary")
|
||||
if(helmet)
|
||||
helmet.name = "blood-red voidsuit helmet"
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
autolinkers = list("r_relay")
|
||||
|
||||
/obj/machinery/telecomms/relay/preset/centcom
|
||||
id = "Centcom Relay"
|
||||
id = "CentCom Relay"
|
||||
hide = 1
|
||||
toggled = 1
|
||||
//anchored = 1
|
||||
@@ -44,7 +44,7 @@
|
||||
"receiverA", "broadcasterA")
|
||||
|
||||
/obj/machinery/telecomms/hub/preset_cent
|
||||
id = "CentComm Hub"
|
||||
id = "CentCom Hub"
|
||||
network = "tcommsat"
|
||||
produces_heat = 0
|
||||
autolinkers = list("hub_cent", "c_relay", "s_relay", "m_relay", "r_relay",
|
||||
@@ -65,7 +65,7 @@
|
||||
..()
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_cent
|
||||
id = "CentComm Receiver"
|
||||
id = "CentCom Receiver"
|
||||
network = "tcommsat"
|
||||
produces_heat = 0
|
||||
autolinkers = list("receiverCent")
|
||||
@@ -106,7 +106,7 @@
|
||||
autolinkers = list("processor4", "engineering", "common")
|
||||
|
||||
/obj/machinery/telecomms/bus/preset_cent
|
||||
id = "CentComm Bus"
|
||||
id = "CentCom Bus"
|
||||
network = "tcommsat"
|
||||
freq_listening = list(ERT_FREQ, DTH_FREQ)
|
||||
produces_heat = 0
|
||||
@@ -135,7 +135,7 @@
|
||||
autolinkers = list("processor4")
|
||||
|
||||
/obj/machinery/telecomms/processor/preset_cent
|
||||
id = "CentComm Processor"
|
||||
id = "CentCom Processor"
|
||||
network = "tcommsat"
|
||||
produces_heat = 0
|
||||
autolinkers = list("processorCent")
|
||||
@@ -200,7 +200,7 @@
|
||||
autolinkers = list("security")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/centcomm
|
||||
id = "CentComm Server"
|
||||
id = "CentCom Server"
|
||||
freq_listening = list(ERT_FREQ, DTH_FREQ)
|
||||
produces_heat = 0
|
||||
autolinkers = list("centcomm")
|
||||
@@ -216,7 +216,7 @@
|
||||
autolinkers = list("broadcasterA")
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_cent
|
||||
id = "CentComm Broadcaster"
|
||||
id = "CentCom Broadcaster"
|
||||
network = "tcommsat"
|
||||
produces_heat = 0
|
||||
autolinkers = list("broadcasterCent")
|
||||
@@ -41,10 +41,10 @@
|
||||
|
||||
/datum/poster/tg_9
|
||||
name = "Missing Gloves"
|
||||
desc = "This poster is about the uproar that followed Nanotrasen's financial cuts towards insulated-glove purchases."
|
||||
desc = "This poster is about the uproar that followed NanoTrasen's financial cuts towards insulated-glove purchases."
|
||||
icon_state="poster9"
|
||||
|
||||
/datum/poster/tg_10
|
||||
name = "Hacking Guide"
|
||||
desc = "This poster details the internal workings of the common Nanotrasen airlock."
|
||||
desc = "This poster details the internal workings of the common NanoTrasen airlock."
|
||||
icon_state="poster10"
|
||||
@@ -0,0 +1,95 @@
|
||||
/obj/item/stolenpackage
|
||||
name = "stolen package"
|
||||
desc = "What's in the box?"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "deliverycrate5"
|
||||
item_state = "table_parts"
|
||||
w_class = 5
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
// Another way of doing this. Commented out because the other method is better for this application.
|
||||
/*var/spawn_chance = rand(1,100)
|
||||
switch(spawn_chance)
|
||||
if(0 to 49)
|
||||
new /obj/random/gun/guarenteed(usr.loc)
|
||||
usr << "You got a thing!"
|
||||
if(50 to 99)
|
||||
new /obj/item/weapon/bikehorn/rubberducky(usr.loc)
|
||||
new /obj/item/weapon/bikehorn(usr.loc)
|
||||
usr << "You got two things!"
|
||||
if(100)
|
||||
usr << "The box contained nothing!"
|
||||
return
|
||||
*/
|
||||
var/loot = pick(/obj/effect/landmark/costume,
|
||||
/obj/item/clothing/glasses/thermal,
|
||||
/obj/item/clothing/gloves/combat,
|
||||
/obj/item/clothing/head/bearpelt,
|
||||
/obj/item/clothing/mask/balaclava,
|
||||
/obj/item/clothing/mask/horsehead,
|
||||
/obj/item/clothing/mask/muzzle,
|
||||
/obj/item/clothing/suit/armor/heavy,
|
||||
/obj/item/clothing/suit/armor/laserproof,
|
||||
/obj/item/clothing/suit/armor/vest,
|
||||
/obj/item/device/chameleon,
|
||||
/obj/item/device/pda/clown,
|
||||
/obj/item/device/pda/mime,
|
||||
/obj/item/device/pda/syndicate,
|
||||
/obj/item/mecha_parts/chassis/phazon,
|
||||
/obj/item/mecha_parts/part/phazon_head,
|
||||
/obj/item/mecha_parts/part/phazon_left_arm,
|
||||
/obj/item/mecha_parts/part/phazon_left_leg,
|
||||
/obj/item/mecha_parts/part/phazon_right_arm,
|
||||
/obj/item/mecha_parts/part/phazon_right_leg,
|
||||
/obj/item/mecha_parts/part/phazon_torso,
|
||||
/obj/item/seeds/ambrosiadeusseed,
|
||||
/obj/item/seeds/ambrosiavulgarisseed,
|
||||
/obj/item/seeds/libertymycelium,
|
||||
/obj/item/stack/material/platinum/fifty,
|
||||
/obj/item/toy/nanotrasenballoon,
|
||||
/obj/item/toy/syndicateballoon,
|
||||
/obj/item/weapon/aiModule/syndicate,
|
||||
/obj/item/weapon/book/manual/engineering_hacking,
|
||||
/obj/item/weapon/card/emag,
|
||||
/obj/item/weapon/card/emag_broken,
|
||||
/obj/item/weapon/card/id/syndicate,
|
||||
/obj/item/weapon/contraband/poster,
|
||||
/obj/item/weapon/disposable_teleporter,
|
||||
/obj/item/weapon/grenade/flashbang/clusterbang,
|
||||
/obj/item/weapon/grenade/flashbang/clusterbang,
|
||||
/obj/item/weapon/grenade/spawnergrenade/spesscarp,
|
||||
/obj/item/weapon/melee/energy/sword,
|
||||
/obj/item/weapon/melee/telebaton,
|
||||
/obj/item/weapon/pen/reagent/paralysis,
|
||||
/obj/item/weapon/pickaxe/diamonddrill,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/clownstears,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeat,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/neurotoxin,
|
||||
/obj/item/weapon/rig/combat/equipped,
|
||||
/obj/item/weapon/shield/energy,
|
||||
/obj/item/weapon/stamp/centcomm,
|
||||
/obj/item/weapon/stamp/solgov,
|
||||
/obj/item/weapon/storage/fancy/cigar/havana,
|
||||
/obj/item/xenos_claw,
|
||||
/obj/random/contraband,
|
||||
/obj/random/contraband,
|
||||
/obj/random/contraband,
|
||||
/obj/random/contraband,
|
||||
/obj/random/weapon/guarenteed)
|
||||
new loot(usr.loc)
|
||||
usr << "You unwrap the package."
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigar/havana // Putting this here 'cuz fuck it. -Spades
|
||||
name = "\improper Havana cigar case"
|
||||
desc = "Save these for the fancy-pantses at the next CentCom black tie reception. You can't blow the smoke from such majestic stogies in just anyone's face."
|
||||
icon_state = "cigarcase"
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
w_class = 1
|
||||
throwforce = 2
|
||||
slot_flags = SLOT_BELT
|
||||
storage_slots = 7
|
||||
can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar/havana)
|
||||
icon_type = "cigar"
|
||||
@@ -168,8 +168,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
/obj/item/device/pda/syndicate
|
||||
default_cartridge = /obj/item/weapon/cartridge/syndicate
|
||||
icon_state = "pda-syn"
|
||||
name = "Military PDA"
|
||||
owner = "John Doe"
|
||||
// name = "Military PDA" // Vorestation Edit
|
||||
// owner = "John Doe"
|
||||
hidden = 1
|
||||
|
||||
/obj/item/device/pda/chaplain
|
||||
|
||||
@@ -97,6 +97,7 @@ var/list/civilian_cartridges = list(
|
||||
name = "\improper ChemWhiz cartridge"
|
||||
icon_state = "cart-chem"
|
||||
access_reagent_scanner = 1
|
||||
access_medical = 1
|
||||
|
||||
/obj/item/weapon/cartridge/security
|
||||
name = "\improper R.O.B.U.S.T. cartridge"
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
if(hack_result && in_hack_mode)
|
||||
user << "<span class='notice'>Your hacking attempt was succesful!</span>"
|
||||
playsound(src.loc, 'sound/piano/A#6.ogg', 75)
|
||||
user.playsound_local(get_turf(src), 'sound/piano/A#6.ogg', 50)
|
||||
else
|
||||
user << "<span class='warning'>Your hacking attempt failed!</span>"
|
||||
return 0
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
var/apc_drain_rate = 5000 // Max. amount drained from single APC. In Watts.
|
||||
var/dissipation_rate = 20000 // Passive dissipation of drained power. In Watts.
|
||||
var/power_drained = 0 // Amount of power drained.
|
||||
var/max_power = 5e9 // Detonation point.
|
||||
var/max_power = 1e9 // Detonation point.
|
||||
var/mode = 0 // 0 = off, 1=clamped (off), 2=operating
|
||||
var/drained_this_tick = 0 // This is unfortunately necessary to ensure we process powersinks BEFORE other machinery such as APCs.
|
||||
|
||||
|
||||
@@ -143,13 +143,25 @@ REAGENT SCANNER
|
||||
user.show_message("<span class='warning'>Significant brain damage detected. Subject may have had a concussion.</span>")
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/name_i in H.internal_organs_by_name)
|
||||
var/obj/item/organ/internal/i = H.internal_organs_by_name[name_i]
|
||||
if(istype(i, /obj/item/organ/internal/appendix))
|
||||
var/obj/item/organ/internal/appendix/a = H.internal_organs_by_name[name_i]
|
||||
if(a.inflamed > 3)
|
||||
user.show_message(text("<span class='warning'>Severe inflammation detected in subject [a.name].</span>"), 1)
|
||||
else if(a.inflamed > 2)
|
||||
user.show_message(text("<span class='warning'>Moderate inflammation detected in subject [a.name].</span>"), 1)
|
||||
else if(a.inflamed >= 1)
|
||||
user.show_message(text("<span class='warning'>Mild inflammation detected in subject [a.name].</span>"), 1)
|
||||
|
||||
|
||||
for(var/name in H.organs_by_name)
|
||||
var/obj/item/organ/external/e = H.organs_by_name[name]
|
||||
if(!e)
|
||||
continue
|
||||
var/limb = e.name
|
||||
if(e.status & ORGAN_BROKEN)
|
||||
if(((e.name == "l_arm") || (e.name == "r_arm") || (e.name == "l_leg") || (e.name == "r_leg")) && (!(e.status & ORGAN_SPLINTED)))
|
||||
if(((e.name == "l_arm") || (e.name == "r_arm") || (e.name == "l_leg") || (e.name == "r_leg")) && (!e.splinted))
|
||||
user << "<span class='warning'>Unsecured fracture in subject [limb]. Splinting recommended for transport.</span>"
|
||||
if(e.has_infected_wound())
|
||||
user << "<span class='warning'>Infected wound detected in subject [limb]. Disinfection recommended.</span>"
|
||||
@@ -165,6 +177,7 @@ REAGENT SCANNER
|
||||
for(var/datum/wound/W in e.wounds) if(W.internal)
|
||||
user.show_message(text("<span class='warning'>Internal bleeding detected. Advanced scanner required for location.</span>"), 1)
|
||||
break
|
||||
|
||||
if(M:vessel)
|
||||
var/blood_volume = H.vessel.get_reagent_amount("blood")
|
||||
var/blood_percent = round((blood_volume / H.species.blood_volume)*100)
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
if(!(affecting.organ_tag in splintable_organs))
|
||||
user << "<span class='danger'>You can't use \the [src] to apply a splint there!</span>"
|
||||
return
|
||||
if(affecting.status & ORGAN_SPLINTED)
|
||||
if(affecting.splinted)
|
||||
user << "<span class='danger'>[M]'s [limb] is already splinted!</span>"
|
||||
return
|
||||
if (M != user)
|
||||
@@ -275,17 +275,21 @@
|
||||
user << "<span class='danger'>You can't apply a splint to the arm you're using!</span>"
|
||||
return
|
||||
user.visible_message("<span class='danger'>[user] starts to apply \the [src] to their [limb].</span>", "<span class='danger'>You start to apply \the [src] to your [limb].</span>", "<span class='danger'>You hear something being wrapped.</span>")
|
||||
if(do_after(user, 50))
|
||||
if (M != user)
|
||||
user.visible_message("<span class='danger'>[user] finishes applying \the [src] to [M]'s [limb].</span>", "<span class='danger'>You finish applying \the [src] to [M]'s [limb].</span>", "<span class='danger'>You hear something being wrapped.</span>")
|
||||
else
|
||||
if(prob(25))
|
||||
user.visible_message("<span class='danger'>[user] successfully applies \the [src] to their [limb].</span>", "<span class='danger'>You successfully apply \the [src] to your [limb].</span>", "<span class='danger'>You hear something being wrapped.</span>")
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] fumbles \the [src].</span>", "<span class='danger'>You fumble \the [src].</span>", "<span class='danger'>You hear something being wrapped.</span>")
|
||||
if(do_after(user, 50, M))
|
||||
if(M == user && prob(75))
|
||||
user.visible_message("<span class='danger'>\The [user] fumbles [src].</span>", "<span class='danger'>You fumble [src].</span>", "<span class='danger'>You hear something being wrapped.</span>")
|
||||
return
|
||||
var/obj/item/stack/medical/splint/S = split(1)
|
||||
if(S)
|
||||
if(affecting.apply_splint(S))
|
||||
S.forceMove(affecting)
|
||||
if (M != user)
|
||||
user.visible_message("<span class='danger'>\The [user] finishes applying [src] to [M]'s [limb].</span>", "<span class='danger'>You finish applying \the [src] to [M]'s [limb].</span>", "<span class='danger'>You hear something being wrapped.</span>")
|
||||
else
|
||||
user.visible_message("<span class='danger'>\The [user] successfully applies [src] to their [limb].</span>", "<span class='danger'>You successfully apply \the [src] to your [limb].</span>", "<span class='danger'>You hear something being wrapped.</span>")
|
||||
return
|
||||
affecting.status |= ORGAN_SPLINTED
|
||||
use(1)
|
||||
S.dropInto(src.loc) //didn't get applied, so just drop it
|
||||
user.visible_message("<span class='danger'>\The [user] fails to apply [src].</span>", "<span class='danger'>You fail to apply [src].</span>", "<span class='danger'>You hear something being wrapped.</span>")
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -94,6 +94,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
var/zippomes = "USER lights NAME with FLAME"
|
||||
var/weldermes = "USER lights NAME with FLAME"
|
||||
var/ignitermes = "USER lights NAME with FLAME"
|
||||
var/brand
|
||||
|
||||
/obj/item/clothing/mask/smokable/New()
|
||||
..()
|
||||
@@ -169,6 +170,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if (type_butt)
|
||||
var/obj/item/butt = new type_butt(T)
|
||||
transfer_fingerprints_to(butt)
|
||||
if(brand)
|
||||
butt.desc += " This one is \a [brand]."
|
||||
if(ismob(loc))
|
||||
var/mob/living/M = loc
|
||||
if (!nomessage)
|
||||
|
||||
@@ -280,3 +280,62 @@
|
||||
name = "emergency response team medical backpack"
|
||||
desc = "A spacious backpack with lots of pockets, worn by medical members of an Emergency Response Team."
|
||||
icon_state = "ert_medical"
|
||||
|
||||
/*
|
||||
* Courier Bags
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger
|
||||
name = "messenger bag"
|
||||
desc = "A sturdy backpack worn over one shoulder."
|
||||
icon_state = "courierbag"
|
||||
item_state_slots = list(slot_r_hand_str = "backpack", slot_l_hand_str = "backpack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/chem
|
||||
name = "chemistry messenger bag"
|
||||
desc = "A serile backpack worn over one shoulder. This one is in Chemsitry colors."
|
||||
icon_state = "courierbagchem"
|
||||
item_state_slots = list(slot_r_hand_str = "chempack", slot_l_hand_str = "chempack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/med
|
||||
name = "medical messenger bag"
|
||||
desc = "A sterile backpack worn over one shoulder used in medical departments."
|
||||
icon_state = "courierbagmed"
|
||||
item_state_slots = list(slot_r_hand_str = "medicalpack", slot_l_hand_str = "medicalpack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/viro
|
||||
name = "virology messenger bag"
|
||||
desc = "A sterile backpack worn over one shoulder. This one is in Virology colors."
|
||||
icon_state = "courierbagviro"
|
||||
item_state_slots = list(slot_r_hand_str = "viropack", slot_l_hand_str = "viropack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/tox
|
||||
name = "research messenger bag"
|
||||
desc = "A backpack worn over one shoulder. Useful for holding science materials."
|
||||
icon_state = "courierbagtox"
|
||||
item_state_slots = list(slot_r_hand_str = "toxpack", slot_l_hand_str = "toxpack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/com
|
||||
name = "command messenger bag"
|
||||
desc = "A special backpack worn over one shoulder. This one is made specifically for officers."
|
||||
icon_state = "courierbagcom"
|
||||
item_state_slots = list(slot_r_hand_str = "captainpack", slot_l_hand_str = "captainpack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/engi
|
||||
name = "engineering messenger bag"
|
||||
icon_state = "courierbagengi"
|
||||
item_state_slots = list(slot_r_hand_str = "engiepack", slot_l_hand_str = "engiepack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/hyd
|
||||
name = "hydroponics messenger bag"
|
||||
desc = "A backpack worn over one shoulder. This one is designed for plant-related work."
|
||||
icon_state = "courierbaghyd"
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/sec
|
||||
name = "security messenger bag"
|
||||
desc = "A tactical backpack worn over one shoulder. This one is in Security colors."
|
||||
icon_state = "courierbagsec"
|
||||
item_state_slots = list(slot_r_hand_str = "securitypack", slot_l_hand_str = "securitypack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/black
|
||||
icon_state = "courierbagblk"
|
||||
@@ -56,6 +56,7 @@
|
||||
/obj/item/weapon/extinguisher/mini,
|
||||
/obj/item/device/flashlight/maglight,
|
||||
/obj/item/weapon/tape_roll,
|
||||
/obj/item/device/integrated_electronics/wirer,
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/full/New()
|
||||
@@ -128,6 +129,8 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut/,
|
||||
/obj/item/weapon/melee/baton,
|
||||
/obj/item/weapon/gun/energy/taser,
|
||||
/obj/item/weapon/gun/energy/stunrevolver,
|
||||
/obj/item/weapon/gun/energy/gun,
|
||||
/obj/item/weapon/flame/lighter,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/device/pda,
|
||||
|
||||
@@ -134,6 +134,7 @@
|
||||
storage_slots = 6
|
||||
can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter)
|
||||
icon_type = "cigarette"
|
||||
var/brand = "\improper Trans-Stellar Duty-free"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/New()
|
||||
..()
|
||||
@@ -142,6 +143,10 @@
|
||||
new /obj/item/clothing/mask/smokable/cigarette(src)
|
||||
create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one
|
||||
flags |= OPENCONTAINER
|
||||
if(brand)
|
||||
for(var/obj/item/clothing/mask/smokable/cigarette/C in src)
|
||||
C.brand = brand
|
||||
C.desc += " This one is \a [brand]."
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/update_icon()
|
||||
icon_state = "[initial(icon_state)][contents.len]"
|
||||
@@ -186,11 +191,13 @@
|
||||
name = "\improper DromedaryCo packet"
|
||||
desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\""
|
||||
icon_state = "Dpacket"
|
||||
brand = "\improper Dromedary Co. cigarette"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/killthroat
|
||||
name = "\improper AcmeCo packet"
|
||||
desc = "A packet of six AcmeCo cigarettes. For those who somehow want to obtain the record for the most amount of cancerous tumors."
|
||||
icon_state = "Bpacket"
|
||||
brand = "\improper Acme Co. cigarette"
|
||||
|
||||
// New()
|
||||
// ..()
|
||||
@@ -202,26 +209,31 @@
|
||||
name = "\improper pack of Lucky Stars"
|
||||
desc = "A mellow blend made from synthetic, pod-grown tobacco. The commercial jingle is guaranteed to get stuck in your head."
|
||||
icon_state = "LSpacket"
|
||||
brand = "\improper Lucky Star"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/jerichos
|
||||
name = "\improper pack of Jerichos"
|
||||
desc = "Typically seen dangling from the lips of Martian soldiers and border world hustlers. Tastes like hickory smoke, feels like warm liquid death down your lungs."
|
||||
icon_state = "Jpacket"
|
||||
brand = "\improper Jericho"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/menthols
|
||||
name = "\improper pack of Temperamento Menthols"
|
||||
desc = "With a sharp and natural organic menthol flavor, these Temperamentos are a favorite of NDV crews. Hardly anyone knows they make 'em in non-menthol!"
|
||||
icon_state = "TMpacket"
|
||||
brand = "\improper Temperamento Menthol"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/carcinomas
|
||||
name = "\improper pack of Carcinoma Angels"
|
||||
desc = "This unknown brand was slated for the chopping block, until they were publicly endorsed by an old Earthling gonzo journalist. The rest is history. They sell a variety for cats, too."
|
||||
icon_state = "CApacket"
|
||||
brand = "\improper Carcinoma Angel"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/professionals
|
||||
name = "\improper pack of Professional 120s"
|
||||
desc = "Let's face it - if you're smoking these, you're either trying to look upper-class or you're 80 years old. That's the only excuse. They are, however, very good quality."
|
||||
icon_state = "P100packet"
|
||||
brand = "\improper Professional 120"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigar
|
||||
name = "cigar case"
|
||||
|
||||
@@ -127,10 +127,10 @@
|
||||
filled = TRUE
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/nt
|
||||
name = "Nanotrasen brand lunchbox"
|
||||
name = "NanoTrasen brand lunchbox"
|
||||
icon_state = "lunchbox_nanotrasen"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_blue", slot_l_hand_str = "toolbox_blue")
|
||||
desc = "A little lunchbox. This one is branded with the Nanotrasen logo!"
|
||||
desc = "A little lunchbox. This one is branded with the NanoTrasen logo!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/nt/filled
|
||||
filled = TRUE
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user