mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-25 17:41:56 +00:00
Merge branch 'master' into development
# Conflicts: # code/modules/multiz/movement.dm # maps/aurora/aurora-1_centcomm.dmm # maps/aurora/aurora-3_sublevel.dmm # maps/aurora/aurora-4_mainlevel.dmm # maps/aurora/aurora-6_surface.dmm
This commit is contained in:
@@ -66,6 +66,7 @@
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/computer_hardware/battery_module = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/computer_hardware/battery_module/lambda = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/circuitboard/telecomms = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard/unary_atmos = TRADER_BLACKLIST,
|
||||
|
||||
@@ -145,8 +145,13 @@
|
||||
var/is_wanted = 0
|
||||
if(is_type_in_list(offer,wanted_items))
|
||||
is_wanted = 1
|
||||
if(blacklisted_trade_items && blacklisted_trade_items.len && is_type_in_list(offer,blacklisted_trade_items))
|
||||
return 0
|
||||
if(blacklisted_trade_items && blacklisted_trade_items.len)
|
||||
if(ishuman(offer))
|
||||
var/mob/living/carbon/human/A = offer
|
||||
if(is_type_in_list(A.species, blacklisted_trade_items))
|
||||
return 0
|
||||
else if(is_type_in_list(offer,blacklisted_trade_items))
|
||||
return 0
|
||||
|
||||
if(istype(offer,/obj/item/weapon/spacecash))
|
||||
if(!(trade_flags & TRADER_MONEY))
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
/obj/item/weapon/gun/energy/rifle/pulse = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
blacklisted_trade_items = null
|
||||
blacklisted_trade_items = list(/datum/species/monkey, /datum/species/machine, /datum/species/bug, /datum/species/diona)
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "H-hello. Can you hear me? G-good... I have... specific needs... I have a lot to t-trade with you in return of course.",
|
||||
|
||||
@@ -119,6 +119,8 @@ datum/announcement/proc/Log(message as text, message_title as text)
|
||||
message_admins("[key_name_admin(usr)] has made \a [announcement_type].", 1)
|
||||
|
||||
/proc/GetNameAndAssignmentFromId(var/obj/item/weapon/card/id/I)
|
||||
if(!I)
|
||||
return "Unknown"
|
||||
// Format currently matches that of newscaster feeds: Registered Name (Assigned Rank)
|
||||
return I.assignment ? "[I.registered_name] ([I.assignment])" : I.registered_name
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
return 0
|
||||
if(config.protect_roles_from_antagonist && (player.assigned_role in protected_jobs))
|
||||
return 0
|
||||
if(player.current.client.prefs.species in restricted_species)
|
||||
if(player.current.client.prefs && player.current.client.prefs.species in restricted_species)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
This code is slightly more documented than normal, as requested by XSI on IRC.
|
||||
*/
|
||||
|
||||
|
||||
#define TURRET_PRIORITY_TARGET 2
|
||||
#define TURRET_SECONDARY_TARGET 1
|
||||
#define TURRET_NOT_TARGET 0
|
||||
@@ -94,7 +95,7 @@
|
||||
installation = /obj/item/weapon/gun/energy/laser
|
||||
sprite_set = "laser"
|
||||
|
||||
/obj/machinery/porta_turret/Initialize()
|
||||
/obj/machinery/porta_turret/Initialize(mapload)
|
||||
. = ..()
|
||||
LAZYCLEARLIST(req_access)
|
||||
req_one_access = list(access_security, access_heads)
|
||||
@@ -102,16 +103,35 @@
|
||||
//Sets up a spark system
|
||||
spark_system = bind_spark(src, 5)
|
||||
|
||||
var/area/control_area = get_area(src)
|
||||
if(istype(control_area))
|
||||
LAZYADD(control_area.turrets, src)
|
||||
if(!mapload)
|
||||
for(var/obj/machinery/turretid/aTurretID in control_area.turret_controls)
|
||||
aTurretID.turretModes()
|
||||
if(LAZYLEN(control_area.turret_controls))
|
||||
var/obj/machinery/turretid/SOME_TURRET_ID = control_area.turret_controls[1]
|
||||
var/datum/turret_checks/SOME_TC = SOME_TURRET_ID.getState() // this helper should honestly fucking exist why doesn't it :ree:
|
||||
if(SOME_TC.lethal != lethal && !egun)
|
||||
SOME_TC.enabled = 0
|
||||
src.setState(SOME_TC)
|
||||
|
||||
/obj/machinery/porta_turret/crescent/Initialize()
|
||||
. = ..()
|
||||
LAZYCLEARLIST(req_one_access)
|
||||
req_access = list(access_cent_specops)
|
||||
|
||||
/obj/machinery/porta_turret/Destroy()
|
||||
var/area/control_area = get_area(src)
|
||||
if(istype(control_area))
|
||||
LAZYREMOVE(control_area.turrets, src)
|
||||
for(var/obj/machinery/turretid/aTurretID in control_area.turret_controls)
|
||||
aTurretID.turretModes()
|
||||
qdel(spark_system)
|
||||
spark_system = null
|
||||
. = ..()
|
||||
|
||||
|
||||
/obj/machinery/porta_turret/update_icon()
|
||||
cut_overlays()
|
||||
underlays.Cut()
|
||||
@@ -608,8 +628,9 @@
|
||||
if(controllock)
|
||||
return
|
||||
src.enabled = TC.enabled
|
||||
src.lethal = TC.lethal
|
||||
src.lethal_icon = TC.lethal
|
||||
if(egun) //If turret can switch modes.
|
||||
src.lethal = TC.lethal
|
||||
src.lethal_icon = TC.lethal
|
||||
|
||||
check_synth = TC.check_synth
|
||||
check_access = TC.check_access
|
||||
@@ -816,6 +837,11 @@
|
||||
Turret.egun = E.can_switch_modes
|
||||
Turret.sprite_set = E.turret_sprite_set
|
||||
Turret.lethal_icon = E.turret_is_lethal
|
||||
// Check if gun has wielded delay, turret will have same fire rate as the gun.
|
||||
if(E.fire_delay_wielded > 0)
|
||||
Turret.shot_delay = E.fire_delay_wielded
|
||||
else
|
||||
Turret.shot_delay = E.fire_delay
|
||||
|
||||
Turret.cover_set = case_sprite_set
|
||||
Turret.icon_state = "cover_[case_sprite_set]"
|
||||
|
||||
@@ -108,6 +108,13 @@ var/list/obj/machinery/requests_console/allConsoles = list()
|
||||
req_console_supplies -= department
|
||||
if (departmentType & RC_INFO)
|
||||
req_console_information -= department
|
||||
|
||||
if (LAZYLEN(alert_pdas))
|
||||
for (var/pp in alert_pdas)
|
||||
var/obj/item/device/pda/P = pp
|
||||
P.linked_consoles -= src
|
||||
|
||||
alert_pdas.Cut()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/requests_console/attack_hand(user as mob)
|
||||
@@ -244,6 +251,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
|
||||
//Update the name real quick.
|
||||
alert_pdas[pda] = pda.name
|
||||
else
|
||||
LAZYADD(pda.linked_consoles, src)
|
||||
alert_pdas += pda
|
||||
alert_pdas[pda] = pda.name
|
||||
usr << "<span class='notice'>You link \the [pda] to \the [src]. It will now ping upon the arrival of a fax to this machine.</span>"
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
/area
|
||||
// Turrets use this list to see if individual power/lethal settings are allowed
|
||||
var/list/turret_controls = list()
|
||||
var/list/turrets
|
||||
|
||||
|
||||
/obj/machinery/turretid
|
||||
name = "turret control panel"
|
||||
@@ -29,6 +31,8 @@
|
||||
|
||||
req_access = list(access_ai_upload)
|
||||
|
||||
// list of turrets under control
|
||||
|
||||
/obj/machinery/turretid/stun
|
||||
enabled = 1
|
||||
icon_state = "control_stun"
|
||||
@@ -45,7 +49,7 @@
|
||||
A.turret_controls -= src
|
||||
return ..()
|
||||
|
||||
/obj/machinery/turretid/Initialize()
|
||||
/obj/machinery/turretid/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!control_area)
|
||||
control_area = get_area(src)
|
||||
@@ -62,7 +66,15 @@
|
||||
else
|
||||
control_area = null
|
||||
|
||||
power_change() //Checks power and initial settings
|
||||
if (!mapload)
|
||||
power_change() //Checks power and initial settings
|
||||
turretModes()
|
||||
else
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
/obj/machinery/turretid/LateInitialize()
|
||||
power_change()
|
||||
turretModes()
|
||||
|
||||
/obj/machinery/turretid/proc/isLocked(mob/user)
|
||||
if(ailock && issilicon(user))
|
||||
@@ -165,9 +177,21 @@
|
||||
check_anomalies = value
|
||||
|
||||
updateTurrets()
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/obj/machinery/turretid/proc/updateTurrets()
|
||||
var/datum/turret_checks/TC = getState()
|
||||
if(istype(control_area))
|
||||
for (var/obj/machinery/porta_turret/aTurret in control_area.turrets)
|
||||
if (aTurret.lethal == lethal || aTurret.egun)
|
||||
TC.enabled = enabled
|
||||
aTurret.setState(TC)
|
||||
else
|
||||
TC.enabled = 0
|
||||
aTurret.setState(TC)
|
||||
|
||||
/obj/machinery/turretid/proc/getState()
|
||||
var/datum/turret_checks/TC = new
|
||||
TC.enabled = enabled
|
||||
TC.lethal = lethal
|
||||
@@ -179,10 +203,27 @@
|
||||
TC.check_anomalies = check_anomalies
|
||||
TC.ailock = ailock
|
||||
|
||||
if(istype(control_area))
|
||||
for (var/obj/machinery/porta_turret/aTurret in control_area)
|
||||
aTurret.setState(TC)
|
||||
return TC
|
||||
|
||||
/obj/machinery/turretid/proc/turretModes()
|
||||
if (!istype(control_area))
|
||||
return
|
||||
var/one_mode = 0 // Is there general one mode only turret
|
||||
var/both_mode = 0 // Is there both mode turrets
|
||||
for (var/obj/machinery/porta_turret/aTurret in control_area.turrets)
|
||||
// If turret only has lethal mode - lock switching modes
|
||||
if(!aTurret.egun)
|
||||
one_mode = 1
|
||||
egun = 0
|
||||
else
|
||||
both_mode = 1
|
||||
// If there is a turret with lethal mode only, and turret with both modes. Disable turrets with lethality that is not same as current control setting.
|
||||
if(both_mode && one_mode)
|
||||
egun = 1
|
||||
else if (LAZYLEN(control_area.turrets)) // If we just have turrets with one mode, ensure that panel's lethal variable is same as Turrets.
|
||||
var/obj/machinery/porta_turret/aTurret = control_area.turrets[1]
|
||||
lethal = aTurret.lethal
|
||||
updateTurrets()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/turretid/power_change()
|
||||
|
||||
@@ -67,6 +67,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
var/obj/item/device/paicard/pai = null // A slot for a personal AI device
|
||||
|
||||
var/obj/item/weapon/pen/pen
|
||||
var/list/obj/machinery/requests_console/linked_consoles
|
||||
|
||||
/obj/item/device/pda/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
@@ -1419,6 +1420,11 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if (src.id && prob(90)) //IDs are kept in 90% of the cases
|
||||
src.id.loc = get_turf(src.loc)
|
||||
QDEL_NULL(pen)
|
||||
if (LAZYLEN(linked_consoles))
|
||||
for(var/A in linked_consoles)
|
||||
var/obj/machinery/requests_console/B = A
|
||||
B.alert_pdas -= src
|
||||
linked_consoles -= B
|
||||
return ..()
|
||||
|
||||
/obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery.
|
||||
|
||||
@@ -157,6 +157,9 @@
|
||||
|
||||
if(M == user && target_zone == "mouth" && contents.len > 0 && !user.wear_mask)
|
||||
var/obj/item/clothing/mask/smokable/cigarette/W = new /obj/item/clothing/mask/smokable/cigarette(user)
|
||||
if(!istype(W))
|
||||
user <<"<span class ='notice'>The [W] is blocking the cigarettes.</span>"
|
||||
return
|
||||
reagents.trans_to_obj(W, (reagents.total_volume/contents.len))
|
||||
user.equip_to_slot_if_possible(W, slot_wear_mask)
|
||||
reagents.maximum_volume = 15 * contents.len
|
||||
|
||||
@@ -1157,6 +1157,7 @@ var/list/global/random_stock_large = list(
|
||||
allsigns -= typesof(/obj/structure/sign/double)
|
||||
allsigns -= typesof(/obj/structure/sign/poster)
|
||||
allsigns -= /obj/structure/sign/directions
|
||||
allsigns -= typesof(/obj/structure/sign/christmas)
|
||||
var/number = rand(1,5)
|
||||
|
||||
while (number > 0)
|
||||
|
||||
@@ -239,6 +239,10 @@
|
||||
else
|
||||
target_mob = H
|
||||
|
||||
if(!H.Adjacent(target_mob))
|
||||
H << "<span class='danger'>You are not close enough to inject them!</span>"
|
||||
return 0
|
||||
|
||||
if(target_mob != H)
|
||||
H << "<span class='danger'>You inject [target_mob] with [chems_to_use] unit\s of [charge.display_name].</span>"
|
||||
|
||||
|
||||
@@ -1288,7 +1288,7 @@ All custom items with worn sprites must follow the contained sprite system: http
|
||||
usr << "You close \the [src]."
|
||||
|
||||
|
||||
/obj/item/clothing/suit/storage/fluff/azala_coat //Azala's Gentleman's Coat - Azala Guwan - tomiixstarslasher
|
||||
/obj/item/clothing/suit/storage/fluff/azala_coat //Azala's Gentleman's Coat - Azala Huz'kai - tomiixstarslasher
|
||||
name = "gentleman's coat"
|
||||
desc = "A blue gentleman's coat. It is very stylish, and appears to be very warm."
|
||||
icon = 'icons/obj/custom_items/azala_items.dmi'
|
||||
@@ -1296,7 +1296,7 @@ All custom items with worn sprites must follow the contained sprite system: http
|
||||
item_state = "azala_coat"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/head/fluff/azala_hat //Azala's Gentleman's Cap - Azala Guwan - tomiixstarslasher
|
||||
/obj/item/clothing/head/fluff/azala_hat //Azala's Gentleman's Cap - Azala Huz'kai - tomiixstarslasher
|
||||
name = "gentleman's cap"
|
||||
desc = "A blue gentleman's cap. It is very stylish, and appears to be warped from being worn crooked."
|
||||
icon = 'icons/obj/custom_items/azala_items.dmi'
|
||||
@@ -1304,7 +1304,7 @@ All custom items with worn sprites must follow the contained sprite system: http
|
||||
item_state = "azala_hat"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/under/fluff/azala_jumpsuit //Azala's Roboticist Jumpsuit - Azala Guwan - tomiixstarslasher
|
||||
/obj/item/clothing/under/fluff/azala_jumpsuit //Azala's Roboticist Jumpsuit - Azala Huz'kai - tomiixstarslasher
|
||||
name = "modified roboticist jumpsuit"
|
||||
desc = "A variation of the roboticists jumpsuit, this one is in blue colors."
|
||||
icon = 'icons/obj/custom_items/azala_items.dmi'
|
||||
@@ -1421,7 +1421,7 @@ All custom items with worn sprites must follow the contained sprite system: http
|
||||
|
||||
/obj/item/clothing/gloves/watch/fluff/rex_watch //Engraved Wristwatch - Rex Winters - tailson
|
||||
name = "engraved wristwatch"
|
||||
desc = " A fine gold watch. On the inside is an engraving that reads \"Happy birthday dad, thinking of you always\"."
|
||||
desc = "A fine gold watch. On the inside is an engraving that reads \"Happy birthday dad, thinking of you always\"."
|
||||
icon = 'icons/obj/custom_items/rex_watch.dmi'
|
||||
icon_state = "rex_watch"
|
||||
|
||||
@@ -1439,3 +1439,275 @@ All custom items with worn sprites must follow the contained sprite system: http
|
||||
name = "silver star of merit"
|
||||
desc = "The Biesel Silver Star of Merit, rewarded for bravery and professionalism in the line of duty."
|
||||
icon_state = "silver_sword"
|
||||
|
||||
|
||||
/obj/item/clothing/mask/gas/fluff/karihaakaki_mask //Wooden Mask - Keziah Green/Karihaakaki - dronzthewolf
|
||||
name = "wooden mask"
|
||||
desc = "A wooden mask for non-human proportions, it has craftsmanship of uncanny precision."
|
||||
icon = 'icons/obj/custom_items/karihaakaki_mask.dmi'
|
||||
icon_state = "karihaakaki_mask"
|
||||
item_state = "karihaakaki_mask"
|
||||
species_restricted = list("Vox")
|
||||
contained_sprite = TRUE
|
||||
|
||||
|
||||
/obj/item/weapon/storage/wallet/fluff/muhawir_wallet //Pineapple Wallet - Muhawir Nawfal - menown
|
||||
name = "pineapple wallet"
|
||||
desc = "A rather small, cheaply made felt wallet with a zipper near the top. It looks like a pineapple."
|
||||
icon = 'icons/obj/custom_items/muhawir_wallet.dmi'
|
||||
icon_state = "muhawir_wallet"
|
||||
|
||||
/obj/item/weapon/storage/wallet/fluff/muhawir_wallet/update_icon()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/folder/fluff/sukhoi_folder //Inventor's Notebook - Natascha Sukhoi - lancelynxx
|
||||
name = "inventor's notebook"
|
||||
desc = "A dark-green notebook, with crumpled Post-Its sticking out and binding tearing at the edges. It reeks of DromedaryCo cigarettes. The words \"SUKH SYSTEMS\" are scribbled on the cover with a black sharpie."
|
||||
icon = 'icons/obj/custom_items/sukhoi_folder.dmi'
|
||||
icon_state = "sukhoi_folder"
|
||||
|
||||
|
||||
/obj/item/clothing/suit/fluff/diamond_cloak //Ragged Purple Cloak - Diamond With Flaw - burgerbb
|
||||
name = "ragged purple cloak"
|
||||
desc = "An old, worn down cloak that smells of dirt and stories."
|
||||
icon = 'icons/obj/custom_items/diamond_cloak.dmi'
|
||||
icon_state = "diamond_cloak"
|
||||
item_state = "diamond_cloak"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
contained_sprite = TRUE
|
||||
|
||||
|
||||
/obj/item/fluff/jennifer_wardrobe_kit //Portable Wardrobe Kit - Jennifer Beal - synnono
|
||||
name = "portable wardrobe kit"
|
||||
desc = "A kit containing a change of casual clothes, packaged for easy transport. This one advertises some sort of cartoon featuring slimes. It is labeled \"J. Beal.\""
|
||||
icon = 'icons/obj/custom_items/jennifer_clothes.dmi'
|
||||
icon_state = "jennifer_wardrobe_box"
|
||||
item_state = "syringe_kit"
|
||||
|
||||
/obj/item/fluff/jennifer_wardrobe_kit/attack_self(mob/user as mob)
|
||||
if (use_check(user, USE_DISALLOW_SILICONS))
|
||||
return
|
||||
|
||||
var/list/outfits = list(
|
||||
"Pale turtleneck outfit" = list(
|
||||
/obj/item/clothing/under/fluff/jennifer_turtleneck,
|
||||
/obj/item/clothing/shoes/fluff/jennifer_aboots
|
||||
),
|
||||
"Black net mesh outfit" = list(
|
||||
/obj/item/clothing/under/fluff/jennifer_nets,
|
||||
/obj/item/clothing/shoes/fluff/jennifer_pboots
|
||||
),
|
||||
"Cartoon T-shirt outfit" = list(
|
||||
/obj/item/clothing/under/fluff/jennifer_tee,
|
||||
/obj/item/clothing/shoes/fluff/jennifer_shoes
|
||||
)
|
||||
)
|
||||
|
||||
var/selection = input("What do you find inside?", "Inside the kit...") as null|anything in outfits
|
||||
if (!selection)
|
||||
return
|
||||
for (var/item in outfits[selection])
|
||||
new item(get_turf(src))
|
||||
to_chat(user, "<span class='notice'>You unpack the outfit from the kit.</span>")
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/item/clothing/under/fluff/jennifer_nets //Black Net Mesh Outfit - Jennifer Beal - synnono
|
||||
name = "black net mesh outfit"
|
||||
desc = "A clingy black top and matching skirt, belted with heavy leather around the waist. A soft fabric netting stretches over the exposed collar, midriff, arms and legs."
|
||||
icon = 'icons/obj/custom_items/jennifer_clothes.dmi'
|
||||
icon_state = "jennifer_nets"
|
||||
item_state = "jennifer_nets"
|
||||
has_sensor = 0
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/under/fluff/jennifer_turtleneck //Pale Turtleneck Outfit - Jennifer Beal - synnono
|
||||
name = "pale turtleneck outfit"
|
||||
desc = "A graphite-blue turtleneck sweater, paired with dark blue jeans."
|
||||
icon = 'icons/obj/custom_items/jennifer_clothes.dmi'
|
||||
icon_state = "jennifer_turtleneck"
|
||||
item_state = "jennifer_turtleneck"
|
||||
has_sensor = 0
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/under/fluff/jennifer_tee //Cartoon T-shirt Outfit - Jennifer Beal - synnono
|
||||
name = "cartoon T-shirt outfit"
|
||||
desc = "A promotional white T-shirt and cargo shorts. The shirt is printed with Slime Purple, the protagonist of the cartoon 'Great Slime Hero: Zettai Justice.'\nFor great slime justice!"
|
||||
icon = 'icons/obj/custom_items/jennifer_clothes.dmi'
|
||||
icon_state = "jennifer_tee"
|
||||
item_state = "jennifer_tee"
|
||||
has_sensor = 0
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/under/fluff/jennifer_jersey //Capital Sting FC Outfit - Jennifer Beal - synnono
|
||||
name = "association football outfit"
|
||||
desc = "A yellow and black jersey for the Mendell City women's club \"Capital Sting FC\" paired with black athletic shorts. This belongs on the pitch!"
|
||||
icon = 'icons/obj/custom_items/jennifer_clothes.dmi'
|
||||
icon_state = "jennifer_jersey"
|
||||
item_state = "jennifer_jersey"
|
||||
has_sensor = 0
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/shoes/fluff/jennifer_pboots //Black Punk Boots - Jennifer Beal - synnono
|
||||
name = "black punk boots"
|
||||
desc = "A tall pair of thick-heeled black leather boots. They are fastened with several burnished steel buckles."
|
||||
icon = 'icons/obj/custom_items/jennifer_clothes.dmi'
|
||||
icon_state = "jennifer_pboots"
|
||||
item_state = "jennifer_pboots"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/shoes/fluff/jennifer_aboots //Brown Ankle Boots - Jennifer Beal - synnono
|
||||
name = "brown ankle boots"
|
||||
desc = "A comfortable pair of short ankle boots."
|
||||
icon = 'icons/obj/custom_items/jennifer_clothes.dmi'
|
||||
icon_state = "jennifer_aboots"
|
||||
item_state = "jennifer_aboots"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/shoes/fluff/jennifer_shoes //White Walking Sneakers - Jennifer Beal - synnono
|
||||
name = "white walking sneakers"
|
||||
desc = "A bright pair of white sneakers. They have purple rubber soles."
|
||||
icon = 'icons/obj/custom_items/jennifer_clothes.dmi'
|
||||
icon_state = "jennifer_shoes"
|
||||
item_state = "jennifer_shoes"
|
||||
contained_sprite = TRUE
|
||||
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/fluff/blessing_jacket //Armored Detective Jacket - Nelson Blessing - seniorscore
|
||||
name = "armored detective jacket"
|
||||
desc = "A white suit jacket, has a badge hanging out of a breast pocket. Touching it gives a feeling of working on a case for months."
|
||||
icon = 'icons/obj/custom_items/blessing_jacket.dmi'
|
||||
icon_state = "blessing_jacket"
|
||||
item_state = "blessing_jacket"
|
||||
icon_open = "blessing_jacket_open"
|
||||
icon_closed = "blessing_jacket"
|
||||
contained_sprite = TRUE
|
||||
|
||||
|
||||
/obj/item/clothing/under/dress/fluff/katya_dress //Tailored Tajara Dress - Katya Al-Tahara - coalf
|
||||
name = "tailored tajaran dress"
|
||||
desc = "A simple long, blue and flowing dress, it has a knitted overthrow that fits over the shoulder and arms."
|
||||
icon = 'icons/obj/custom_items/katya_clothing.dmi'
|
||||
icon_state = "katya_dress"
|
||||
item_state = "katya_dress"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/under/fluff/katya_uniform //Messy Work Clothes - Katya Al-Tahara - coalf
|
||||
name = "messy work clothes"
|
||||
desc = "A simple pants and shirt combo. The white shirt has long since faded...and are those crumbs?"
|
||||
icon = 'icons/obj/custom_items/katya_clothing.dmi'
|
||||
icon_state = "katya_uniform"
|
||||
item_state = "katya_uniform"
|
||||
contained_sprite = TRUE
|
||||
|
||||
|
||||
/obj/item/clothing/accessory/badge/fluff/jamie_tags //Elyran Navy Holotags - Jamie Knight - superballs
|
||||
name = "elyran navy holotags"
|
||||
desc = "A pair of standard issue holotags issued to all Elyran servicemen. The tags read, \"KNIGHT JAMES 627810021-EN O-NEG CATHOLIC\". \
|
||||
Contains both analog and digital information on the serviceman. The digital information seems to be deactivated and non-functional."
|
||||
icon = 'icons/obj/custom_items/jamie_tags.dmi'
|
||||
icon_state = "jamie_tags"
|
||||
item_state = "jamie_tags"
|
||||
stored_name = "Knight, James"
|
||||
badge_string = "Elyran Navy"
|
||||
contained_sprite = TRUE
|
||||
slot_flags = SLOT_MASK | SLOT_TIE
|
||||
var/separated = FALSE
|
||||
|
||||
/obj/item/fluff/jamie_tag //Single Elyran Navy Holotag - Jamie Knight - superballs
|
||||
name = "elyran navy holotag"
|
||||
desc = "A single tag of a set of holotags issued to all Elyran servicemen. The tags read, \"KNIGHT JAMES 627810021-EN O-NEG CATHOLIC\". \
|
||||
Contains both analog and digital information on the serviceman. The digital information seems to be deactivated and non-functional. It is missing it's other pair."
|
||||
icon = 'icons/obj/custom_items/jamie_tags.dmi'
|
||||
icon_state = "jamie_tag"
|
||||
w_class = 1
|
||||
|
||||
/obj/item/clothing/accessory/badge/fluff/jamie_tags/update_icon()
|
||||
if(separated)
|
||||
icon_state = "[icon_state]_single"
|
||||
item_state = "[item_state]_single"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
item_state = initial(item_state)
|
||||
|
||||
/obj/item/clothing/accessory/badge/fluff/jamie_tags/verb/separate()
|
||||
set name = "Retrieve the Fallen"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(use_check(usr)) return
|
||||
|
||||
if(src.separated)
|
||||
return
|
||||
|
||||
usr.visible_message("<span class='notice'>[usr] yanks apart \the [src]!</span>")
|
||||
var/obj/item/fluff/jamie_tag/tag = new(get_turf(user))
|
||||
usr.put_in_hands(tag)
|
||||
src.separated = TRUE
|
||||
src.update_icon()
|
||||
|
||||
/obj/item/clothing/accessory/badge/fluff/jamie_tags/attackby(var/obj/item/fluff/jamie_tag/W, var/mob/user)
|
||||
if(src.separated && istype(W))
|
||||
qdel(W)
|
||||
src.separated = FALSE
|
||||
src.update_icon()
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/clothing/under/fluff/halstere_uniform //Martian Militia Dress Uniform - Kalren Halstere - brutishcrab51
|
||||
name = "martian militia dress uniform"
|
||||
desc = "A brick-red uniform with golden shoulder-scrubbers, a crisp tie, and golden buttons, complete with steel-grey slacks. An image of Olympus Mons is stamped on the left bicep."
|
||||
icon = 'icons/obj/custom_items/halstere_clothing.dmi'
|
||||
icon_state = "halstere_uniform"
|
||||
item_state = "halstere_uniform"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/head/fluff/halstere_cap //Martian Militia Dress Cap - Kalren Halstere - brutishcrab51
|
||||
name = "martian militia dress cap"
|
||||
desc = "A red and black peak cap with a golden Officer Corps indicator on the brow."
|
||||
icon = 'icons/obj/custom_items/halstere_clothing.dmi'
|
||||
icon_state = "halstere_cap"
|
||||
item_state = "halstere_cap"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/fluff/halstere_coat //Martian Militia Officer Coat - Kalren Halstere - brutishcrab51
|
||||
name = "martian militia officer coat"
|
||||
desc = "A decorated military coat with an aiguillette, arm-bars, and golden buttons. Made of a thick material."
|
||||
icon = 'icons/obj/custom_items/halstere_clothing.dmi'
|
||||
icon_state = "halstere_jacket"
|
||||
item_state = "halstere_jacket"
|
||||
icon_open = "halstere_jacket_open"
|
||||
icon_closed = "halstere_jacket"
|
||||
contained_sprite = TRUE
|
||||
|
||||
|
||||
/obj/item/clothing/head/beret/fluff/chunley_beret //Sol's Dog Handler Beret - Freya Chunley - thesmiley
|
||||
name = "sol's dog handler beret"
|
||||
desc = "A scarlet military beret worn by the Sol Alliance Military Police dog handling unit. The symbol on the cap is that of a grey wolf's head on white. It quivers menacingly. \
|
||||
Upon flipping it you see a name tag with the word \"CHUNLEY\" written in on it with a very sloppy hand write."
|
||||
icon = 'icons/obj/custom_items/chunley_beret.dmi'
|
||||
icon_state = "chunley_beret"
|
||||
item_state = "chunley_beret"
|
||||
contained_sprite = TRUE
|
||||
|
||||
|
||||
/obj/item/clothing/suit/storage/fluff/keorat_mantle //Worn Maraziite Shroud - Iksaeors Keorat - dasfox
|
||||
name = "worn maraziite shroud"
|
||||
desc = "A brown, armored looking trenchcoat. There appears to be a fur cloak over the top of it, draping down to the sleeve. The cloak shows the obvious insignia of the Maraziite Order upon it. It looks worn."
|
||||
icon = 'icons/obj/custom_items/keorat_clothing.dmi'
|
||||
icon_state = "keorat_mantle"
|
||||
item_state = "keorat_mantle"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/mask/fluff/keorat_mask //Charred Iron Mask - Iksaeors Keorat - dasfox
|
||||
name = "charred iron mask"
|
||||
desc = "This is an iron mask used by those of the Maraziite Order. It appears to be entirely charred, perhaps there's a story behind that."
|
||||
icon = 'icons/obj/custom_items/keorat_clothing.dmi'
|
||||
icon_state = "keorat_mask"
|
||||
item_state = "keorat_mask"
|
||||
contained_sprite = TRUE
|
||||
flags_inv = HIDEEARS|HIDEFACE
|
||||
body_parts_covered = FACE
|
||||
w_class = 3
|
||||
@@ -14,8 +14,6 @@ emp_act
|
||||
if(!has_organ(def_zone))
|
||||
return PROJECTILE_FORCE_MISS //if they don't have the organ in question then the projectile just passes by.
|
||||
|
||||
var/obj/item/organ/external/organ = get_organ()
|
||||
|
||||
//Shields
|
||||
var/shield_check = check_shields(P.damage, P, null, def_zone, "the [P.name]")
|
||||
if(shield_check)
|
||||
@@ -32,6 +30,7 @@ emp_act
|
||||
|
||||
//Shrapnel
|
||||
if(!(species.flags & NO_EMBED) && P.can_embed())
|
||||
var/obj/item/organ/external/organ = get_organ(def_zone)
|
||||
var/armor = getarmor_organ(organ, "bullet")
|
||||
if(prob(20 + max(P.damage - armor, -10)))
|
||||
var/obj/item/weapon/SP = new P.shrapnel_type()
|
||||
|
||||
@@ -909,7 +909,7 @@
|
||||
|
||||
var/total_phoronloss = 0
|
||||
for(var/obj/item/I in src)
|
||||
if(I.contaminated)
|
||||
if(I.contaminated && !(isvaurca(src) && src.species.has_organ["filtration bit"]))
|
||||
total_phoronloss += vsc.plc.CONTAMINATION_LOSS
|
||||
if(!(status_flags & GODMODE)) adjustToxLoss(total_phoronloss)
|
||||
|
||||
|
||||
@@ -1033,6 +1033,10 @@ proc/is_blind(A)
|
||||
. = ..()
|
||||
. |= TYPE_SYNTHETIC
|
||||
|
||||
/mob/living/silicon/find_type()
|
||||
. = ..()
|
||||
. |= TYPE_SYNTHETIC
|
||||
|
||||
// Yeah, I'm just going to cheat and do istype(src) checks here.
|
||||
// It's not worth adding a proc for every single one of these types.
|
||||
/mob/living/simple_animal/find_type()
|
||||
|
||||
@@ -200,11 +200,10 @@
|
||||
return FALSE
|
||||
|
||||
// Lattices, ladders, and stairs stop things from falling.
|
||||
if(locate(/obj/structure/lattice, dest) || locate(/obj/structure/stairs, dest) || locate(/obj/structure/ladder, dest))
|
||||
if(locate(/obj/structure/lattice, dest) || locate(/obj/structure/stairs, dest))
|
||||
return FALSE
|
||||
|
||||
//Ladders too
|
||||
if(below && locate(/obj/structure/ladder) in below)
|
||||
if(ismob(src) && locate(/obj/structure/ladder, dest)) //hmmm how is this locker just floating here?
|
||||
return FALSE
|
||||
|
||||
// The var/climbers API is implemented here.
|
||||
|
||||
@@ -131,6 +131,13 @@
|
||||
|
||||
/obj/structure/ladder/proc/climbLadder(var/mob/M, var/target_ladder)
|
||||
var/turf/T = get_turf(target_ladder)
|
||||
var/turf/LAD = get_turf(src)
|
||||
var/direction = UP
|
||||
if(istype(target_ladder, target_down))
|
||||
direction = DOWN
|
||||
if(!LAD.CanZPass(M, direction))
|
||||
to_chat(M, "<span class='notice'>\The [T] is blocking \the [src].</span>")
|
||||
return FALSE
|
||||
for(var/atom/A in T)
|
||||
if(!A.CanPass(M, M.loc, 1.5, 0))
|
||||
to_chat(M, "<span class='notice'>\The [A] is blocking \the [src].</span>")
|
||||
@@ -199,7 +206,7 @@
|
||||
/obj/structure/stairs/CheckExit(mob/living/mover, turf/target)
|
||||
if (!istype(mover) || target.z != z)
|
||||
return ..()
|
||||
|
||||
|
||||
if (mover.loc == loc && get_dir(mover, target) != reverse_dir[dir])
|
||||
addtimer(CALLBACK(src, .proc/mob_fall, mover), 0)
|
||||
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
|
||||
if(reagents.total_volume/count < 1) //Sanity checking.
|
||||
return
|
||||
while (count--)
|
||||
while (count-- && count >= 0)
|
||||
var/obj/item/weapon/reagent_containers/pill/P = new/obj/item/weapon/reagent_containers/pill(src.loc)
|
||||
if(!name) name = reagents.get_master_reagent_name()
|
||||
P.name = "[name] pill"
|
||||
|
||||
Reference in New Issue
Block a user