mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into dufflebags
# Conflicts: # code/datums/uplink/tools.dm
This commit is contained in:
@@ -61,17 +61,17 @@
|
||||
/datum/uplink_item/item/badassery/surplus/merc2
|
||||
name = "Surplus Crate - 240 TC"
|
||||
item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 2
|
||||
item_worth = 360
|
||||
item_worth = 540
|
||||
|
||||
/datum/uplink_item/item/badassery/surplus/merc4
|
||||
name = "Surplus Crate - 480 TC"
|
||||
item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 4
|
||||
item_worth = 720
|
||||
item_worth = 1200
|
||||
|
||||
/datum/uplink_item/item/badassery/surplus/merc6
|
||||
name = "Surplus Crate - 720 TC"
|
||||
item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 6
|
||||
item_worth = 1440
|
||||
item_worth = 1980
|
||||
|
||||
/datum/uplink_item/item/badassery/surplus/New()
|
||||
..()
|
||||
|
||||
@@ -31,10 +31,10 @@
|
||||
|
||||
/datum/uplink_item/item/stealth_items/voice
|
||||
name = "Voice Changer"
|
||||
item_cost = 30
|
||||
item_cost = 15
|
||||
path = /obj/item/clothing/mask/gas/voice
|
||||
|
||||
/datum/uplink_item/item/stealth_items/camera_floppy
|
||||
name = "Camera Network Access - Floppy"
|
||||
item_cost = 30
|
||||
item_cost = 15
|
||||
path = /obj/item/weapon/disk/file/cameras/syndicate
|
||||
|
||||
@@ -26,10 +26,10 @@
|
||||
|
||||
/datum/uplink_item/item/stealthy_weapons/cigarette_kit
|
||||
name = "Cigarette Kit"
|
||||
item_cost = 15
|
||||
item_cost = 10
|
||||
path = /obj/item/weapon/storage/box/syndie_kit/cigarette
|
||||
|
||||
/datum/uplink_item/item/stealthy_weapons/random_toxin
|
||||
name = "Random Toxin - Beaker"
|
||||
item_cost = 15
|
||||
item_cost = 10
|
||||
path = /obj/item/weapon/storage/box/syndie_kit/toxin
|
||||
|
||||
@@ -14,6 +14,22 @@
|
||||
item_cost = 10
|
||||
path = /obj/item/weapon/storage/toolbox/syndicate
|
||||
|
||||
/datum/uplink_item/item/tools/clerical
|
||||
name = "Morphic Clerical Kit"
|
||||
item_cost = 10
|
||||
path = /obj/item/weapon/storage/box/syndie_kit/clerical
|
||||
|
||||
/datum/uplink_item/item/tools/encryptionkey_radio
|
||||
name = "Encrypted Radio Channel Key"
|
||||
item_cost = 10
|
||||
path = /obj/item/device/encryptionkey/syndicate
|
||||
|
||||
/datum/uplink_item/item/tools/money
|
||||
name = "Operations Funding"
|
||||
item_cost = 10
|
||||
path = /obj/item/weapon/storage/secure/briefcase/money
|
||||
desc = "A briefcase with 10,000 untraceable thalers for funding your sneaky activities."
|
||||
|
||||
/datum/uplink_item/item/tools/plastique
|
||||
name = "C-4 (Destroys walls)"
|
||||
item_cost = 10
|
||||
@@ -32,32 +48,21 @@
|
||||
name = "Black Ammunition Duffle Bag"
|
||||
path = /obj/item/weapon/storage/backpack/dufflebag/syndie/ammo
|
||||
|
||||
/datum/uplink_item/item/tools/clerical
|
||||
name = "Morphic Clerical Kit"
|
||||
item_cost = 15
|
||||
path = /obj/item/weapon/storage/box/syndie_kit/clerical
|
||||
|
||||
/datum/uplink_item/item/tools/money
|
||||
name = "Operations Funding"
|
||||
item_cost = 15
|
||||
path = /obj/item/weapon/storage/secure/briefcase/money
|
||||
desc = "A briefcase with 10,000 untraceable thalers for funding your sneaky activities."
|
||||
|
||||
/datum/uplink_item/item/tools/space_suit
|
||||
name = "Space Suit"
|
||||
item_cost = 15
|
||||
path = /obj/item/weapon/storage/box/syndie_kit/space
|
||||
|
||||
/datum/uplink_item/item/tools/encryptionkey_binary
|
||||
name = "Binary Translator Key"
|
||||
item_cost = 15
|
||||
path = /obj/item/device/encryptionkey/binary
|
||||
|
||||
/datum/uplink_item/item/tools/packagebomb
|
||||
name = "Package Bomb (Small)"
|
||||
item_cost = 20
|
||||
path = /obj/item/weapon/storage/box/syndie_kit/demolitions
|
||||
|
||||
/datum/uplink_item/item/tools/encryptionkey_radio
|
||||
name = "Encrypted Radio Channel Key"
|
||||
item_cost = 20
|
||||
path = /obj/item/device/encryptionkey/syndicate
|
||||
|
||||
/datum/uplink_item/item/tools/hacking_tool
|
||||
name = "Door Hacking Tool"
|
||||
item_cost = 20
|
||||
@@ -66,23 +71,6 @@
|
||||
When in hacking mode this device will grant full access to any standard airlock within 20 to 40 seconds. \
|
||||
This device will also be able to immediately access the last 6 to 8 hacked airlocks."
|
||||
|
||||
/datum/uplink_item/item/tools/encryptionkey_binary
|
||||
name = "Binary Translator Key"
|
||||
item_cost = 20
|
||||
path = /obj/item/device/encryptionkey/binary
|
||||
|
||||
/datum/uplink_item/item/tools/packagebomb/large
|
||||
name = "Package Bomb (Large)"
|
||||
item_cost = 40
|
||||
path = /obj/item/weapon/storage/box/syndie_kit/demolitions_heavy
|
||||
|
||||
/*
|
||||
/datum/uplink_item/item/tools/packagebomb/huge
|
||||
name = "Package Bomb (Huge)
|
||||
item_cost = 60
|
||||
path = /obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy
|
||||
*/
|
||||
|
||||
/datum/uplink_item/item/tools/emag
|
||||
name = "Cryptographic Sequencer"
|
||||
item_cost = 30
|
||||
@@ -95,9 +83,21 @@
|
||||
|
||||
/datum/uplink_item/item/tools/powersink
|
||||
name = "Powersink (DANGER!)"
|
||||
item_cost = 50
|
||||
item_cost = 40
|
||||
path = /obj/item/device/powersink
|
||||
|
||||
/datum/uplink_item/item/tools/packagebomb/large
|
||||
name = "Package Bomb (Large)"
|
||||
item_cost = 40
|
||||
path = /obj/item/weapon/storage/box/syndie_kit/demolitions_heavy
|
||||
|
||||
/*
|
||||
/datum/uplink_item/item/tools/packagebomb/huge
|
||||
name = "Package Bomb (Huge)
|
||||
item_cost = 60
|
||||
path = /obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy
|
||||
*/
|
||||
|
||||
/datum/uplink_item/item/tools/ai_module
|
||||
name = "Hacked AI Upload Module"
|
||||
item_cost = 60
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
/datum/uplink_item/item/visible_weapons/combatknife
|
||||
name = "Combat Knife"
|
||||
item_cost = 30
|
||||
item_cost = 20
|
||||
path = /obj/item/weapon/material/hatchet/tacknife/combatknife
|
||||
|
||||
/datum/uplink_item/item/visible_weapons/energy_sword
|
||||
|
||||
@@ -2,15 +2,30 @@
|
||||
name = "Self Respiration"
|
||||
desc = "We evolve our body to no longer require drawing oxygen from the atmosphere."
|
||||
helptext = "We will no longer require internals, and we cannot inhale any gas, including harmful ones."
|
||||
ability_icon_state = "ling_toggle_breath"
|
||||
genomecost = 0
|
||||
isVerb = 0
|
||||
verbpath = /mob/proc/changeling_self_respiration
|
||||
|
||||
//No breathing required
|
||||
/mob/proc/changeling_self_respiration()
|
||||
set category = "Changeling"
|
||||
set name = "Toggle Breathing"
|
||||
set desc = "We choose whether or not to breathe."
|
||||
|
||||
var/datum/changeling/changeling = changeling_power(0,0,100,UNCONSCIOUS)
|
||||
if(!changeling)
|
||||
return 0
|
||||
|
||||
if(istype(src,/mob/living/carbon))
|
||||
var/mob/living/carbon/C = src
|
||||
C.does_not_breathe = 1
|
||||
src << "<span class='notice'>We stop breathing, as we no longer need to.</span>"
|
||||
return 1
|
||||
if(C.suiciding)
|
||||
src << "You're committing suicide, this isn't going to work."
|
||||
return 0
|
||||
if(C.does_not_breathe == 0)
|
||||
C.does_not_breathe = 1
|
||||
src << "<span class='notice'>We stop breathing, as we no longer need to.</span>"
|
||||
return 1
|
||||
else
|
||||
C.does_not_breathe = 0
|
||||
src << "<span class='notice'>We resume breathing, as we now need to again.</span>"
|
||||
return 0
|
||||
@@ -15,7 +15,7 @@
|
||||
glow_color = "#0000FF" //TODO
|
||||
|
||||
/obj/item/weapon/spell/aura/unstable/process()
|
||||
if(!pay_energy(500))
|
||||
if(!pay_energy(200))
|
||||
qdel(src)
|
||||
var/list/nearby_mobs = range(14,owner)
|
||||
for(var/mob/living/L in nearby_mobs)
|
||||
@@ -25,6 +25,7 @@
|
||||
var/damage_to_inflict = max(L.health / L.maxHealth, 0) // Otherwise, those in crit would actually be healed.
|
||||
|
||||
var/armor_factor = abs(L.getarmor(null, "energy") - 100)
|
||||
armor_factor = armor_factor / 100
|
||||
|
||||
damage_to_inflict = damage_to_inflict * armor_factor
|
||||
|
||||
|
||||
@@ -6,11 +6,13 @@
|
||||
obj_path = /obj/item/weapon/spell/gambit
|
||||
|
||||
/var/global/list/all_technomancer_gambit_spells = typesof(/obj/item/weapon/spell) - list(
|
||||
/obj/item/weapon/spell,
|
||||
/obj/item/weapon/spell/gambit,
|
||||
/obj/item/weapon/spell/projectile,
|
||||
/obj/item/weapon/spell/aura,
|
||||
/obj/item/weapon/spell/insert,
|
||||
/obj/item/weapon/spell/spawner)
|
||||
/obj/item/weapon/spell/spawner,
|
||||
/obj/item/weapon/spell/summon)
|
||||
|
||||
/obj/item/weapon/spell/gambit
|
||||
name = "gambit"
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
icon_state = "bluespace"
|
||||
// nodamage = 1
|
||||
damage_type = BURN
|
||||
armor_penetration = 100
|
||||
|
||||
/obj/item/weapon/spell/projectile/overload/on_ranged_cast(atom/hit_atom, mob/living/user)
|
||||
energy_cost_per_shot = round(core.max_energy * 0.15)
|
||||
|
||||
@@ -43,6 +43,8 @@
|
||||
/mob/living/simple_animal/ward/death()
|
||||
if(creator)
|
||||
creator << "<span class='danger'>Your ward inside [get_area(src)] was killed!</span>"
|
||||
..()
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/ward/proc/expire()
|
||||
if(creator && src)
|
||||
|
||||
@@ -39,6 +39,8 @@ var/list/technomancer_belongings = list()
|
||||
for(var/mob/living/L in mob_list)
|
||||
if(!is_ally(L) && !can_track_non_allies)
|
||||
continue
|
||||
if(L == user)
|
||||
continue
|
||||
mob_choices += L
|
||||
var/choice = input(user,"Decide what or who to track.","Tracking") as null|anything in object_choices + mob_choices
|
||||
if(choice)
|
||||
|
||||
@@ -412,6 +412,8 @@ About the new airlock wires panel:
|
||||
if(electrified_until && isAllPowerLoss())
|
||||
electrify(0)
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/door/airlock/proc/loseBackupPower()
|
||||
backup_power_lost_until = backupPowerCablesCut() ? -1 : world.time + SecondsToTicks(60)
|
||||
|
||||
@@ -419,6 +421,8 @@ About the new airlock wires panel:
|
||||
if(electrified_until && isAllPowerLoss())
|
||||
electrify(0)
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/door/airlock/proc/regainMainPower()
|
||||
if(!mainPowerCablesCut())
|
||||
main_power_lost_until = 0
|
||||
@@ -426,11 +430,15 @@ About the new airlock wires panel:
|
||||
if(!backup_power_lost_until)
|
||||
backup_power_lost_until = -1
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/door/airlock/proc/regainBackupPower()
|
||||
if(!backupPowerCablesCut())
|
||||
// Restore backup power only if main power is offline, otherwise permanently disable
|
||||
backup_power_lost_until = main_power_lost_until == 0 ? -1 : 0
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/door/airlock/proc/electrify(var/duration, var/feedback = 0)
|
||||
var/message = ""
|
||||
if(src.isWireCut(AIRLOCK_WIRE_ELECTRIFY) && arePowerSystemsOn())
|
||||
@@ -781,7 +789,7 @@ About the new airlock wires panel:
|
||||
if (istype(da, /obj/structure/door_assembly/multi_tile))
|
||||
da.set_dir(src.dir)
|
||||
|
||||
da.anchored = 1
|
||||
da.anchored = 1
|
||||
if(mineral)
|
||||
da.glass = mineral
|
||||
//else if(glass)
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
bound_height = width * world.icon_size
|
||||
|
||||
health = maxhealth
|
||||
update_icon()
|
||||
|
||||
update_nearby_tiles(need_rebuild=1)
|
||||
return
|
||||
|
||||
@@ -24,10 +24,16 @@
|
||||
src.base_state = src.icon_state
|
||||
return
|
||||
|
||||
/obj/machinery/door/window/update_icon()
|
||||
if(density)
|
||||
icon_state = base_state
|
||||
else
|
||||
icon_state = "[base_state]open"
|
||||
|
||||
/obj/machinery/door/window/proc/shatter(var/display_message = 1)
|
||||
new /obj/item/weapon/material/shard(src.loc)
|
||||
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src.loc)
|
||||
CC.amount = 2
|
||||
new /obj/item/weapon/material/shard(src.loc)
|
||||
new /obj/item/stack/cable_coil(src.loc, 1)
|
||||
var/obj/item/weapon/airlock_electronics/ae
|
||||
if(!electronics)
|
||||
ae = new/obj/item/weapon/airlock_electronics( src.loc )
|
||||
@@ -103,43 +109,39 @@
|
||||
return 1
|
||||
|
||||
/obj/machinery/door/window/open()
|
||||
if (src.operating == 1) //doors can still open when emag-disabled
|
||||
if (operating == 1) //doors can still open when emag-disabled
|
||||
return 0
|
||||
if (!ticker)
|
||||
return 0
|
||||
if(!src.operating) //in case of emag
|
||||
src.operating = 1
|
||||
flick(text("[]opening", src.base_state), src)
|
||||
if (!operating) //in case of emag
|
||||
operating = 1
|
||||
flick(text("[src.base_state]opening"), src)
|
||||
playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1)
|
||||
src.icon_state = text("[]open", src.base_state)
|
||||
sleep(10)
|
||||
|
||||
explosion_resistance = 0
|
||||
src.density = 0
|
||||
// src.sd_SetOpacity(0) //TODO: why is this here? Opaque windoors? ~Carn
|
||||
density = 0
|
||||
update_icon()
|
||||
update_nearby_tiles()
|
||||
|
||||
if(operating == 1) //emag again
|
||||
src.operating = 0
|
||||
operating = 0
|
||||
return 1
|
||||
|
||||
/obj/machinery/door/window/close()
|
||||
if (src.operating)
|
||||
if (operating)
|
||||
return 0
|
||||
src.operating = 1
|
||||
flick(text("[]closing", src.base_state), src)
|
||||
playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1)
|
||||
src.icon_state = src.base_state
|
||||
|
||||
src.density = 1
|
||||
density = 1
|
||||
update_icon()
|
||||
explosion_resistance = initial(explosion_resistance)
|
||||
// if(src.visible)
|
||||
// SetOpacity(1) //TODO: why is this here? Opaque windoors? ~Carn
|
||||
update_nearby_tiles()
|
||||
|
||||
sleep(10)
|
||||
|
||||
src.operating = 0
|
||||
operating = 0
|
||||
return 1
|
||||
|
||||
/obj/machinery/door/window/take_damage(var/damage)
|
||||
@@ -197,12 +199,14 @@
|
||||
var/obj/structure/windoor_assembly/wa = new/obj/structure/windoor_assembly(src.loc)
|
||||
if (istype(src, /obj/machinery/door/window/brigdoor))
|
||||
wa.secure = "secure_"
|
||||
wa.name = "Secure Wired Windoor Assembly"
|
||||
wa.name = "secure wired windoor assembly"
|
||||
else
|
||||
wa.name = "Wired Windoor Assembly"
|
||||
wa.name = "wired windoor assembly"
|
||||
if (src.base_state == "right" || src.base_state == "rightsecure")
|
||||
wa.facing = "r"
|
||||
wa.set_dir(src.dir)
|
||||
wa.anchored = 1
|
||||
wa.created_name = name
|
||||
wa.state = "02"
|
||||
wa.update_icon()
|
||||
|
||||
@@ -223,7 +227,7 @@
|
||||
ae.icon_state = "door_electronics_smoked"
|
||||
|
||||
operating = 0
|
||||
shatter(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
//If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway)
|
||||
@@ -262,6 +266,10 @@
|
||||
maxhealth = 300
|
||||
health = 300.0 //Stronger doors for prison (regular window door health is 150)
|
||||
|
||||
/obj/machinery/door/window/brigdoor/shatter()
|
||||
new /obj/item/stack/rods(src.loc, 2)
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/door/window/northleft
|
||||
dir = NORTH
|
||||
|
||||
@@ -23,12 +23,6 @@ var/list/ai_status_emotions = list(
|
||||
"Dorfy" = new /datum/ai_emotion("ai_urist"),
|
||||
"Facepalm" = new /datum/ai_emotion("ai_facepalm"),
|
||||
"Friend Computer" = new /datum/ai_emotion("ai_friend"),
|
||||
"Your Best Friend" = new /datum/ai_emotion("ai_flowey"),
|
||||
"Your Best Nightmare" = new /datum/ai_emotion("ai_floweymalf"),
|
||||
"Soviet Union" = new /datum/ai_emotion("ai_soviet"),
|
||||
"Holly" = new /datum/ai_emotion("ai_holly"),
|
||||
"Hilly" = new /datum/ai_emotion("ai_hilly"),
|
||||
"Fish" = new /datum/ai_emotion("ai_fishtank"),
|
||||
"Tribunal" = new /datum/ai_emotion("ai_tribunal", "serithi"),
|
||||
"Tribunal Malfunctioning" = new /datum/ai_emotion("ai_tribunal_malf", "serithi")
|
||||
)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
w_class = 4
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "suitcooler0"
|
||||
slot_flags = SLOT_BACK //you can carry it on your back if you want, but it won't do anything unless attached to suit storage
|
||||
slot_flags = SLOT_BACK
|
||||
|
||||
//copied from tank.dm
|
||||
flags = CONDUCT
|
||||
@@ -20,7 +20,7 @@
|
||||
var/on = 0 //is it turned on?
|
||||
var/cover_open = 0 //is the cover open?
|
||||
var/obj/item/weapon/cell/cell
|
||||
var/max_cooling = 12 // in degrees per second - probably don't need to mess with heat capacity here
|
||||
var/max_cooling = 15 // in degrees per second - probably don't need to mess with heat capacity here
|
||||
var/charge_consumption = 3 // charge per second at max_cooling
|
||||
var/thermostat = T20C
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if (!H.wear_suit || H.s_store != src)
|
||||
if (!H.wear_suit || (H.s_store != src && H.back != src))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
@@ -114,6 +114,8 @@
|
||||
new /obj/item/weapon/shield/riot/tele(src)
|
||||
new /obj/item/weapon/storage/box/holobadge/hos(src)
|
||||
new /obj/item/clothing/accessory/badge/holo/hos(src)
|
||||
new /obj/item/weapon/reagent_containers/spray/pepper(src)
|
||||
new /obj/item/weapon/crowbar/red(src)
|
||||
new /obj/item/weapon/storage/box/flashbangs(src)
|
||||
new /obj/item/weapon/storage/belt/security(src)
|
||||
new /obj/item/device/flash(src)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
w_class = 5
|
||||
var/state = 0
|
||||
var/base_icon_state = ""
|
||||
var/base_name = "Airlock"
|
||||
var/base_name = "airlock"
|
||||
var/obj/item/weapon/airlock_electronics/electronics = null
|
||||
var/airlock_type = "" //the type path of the airlock once completed
|
||||
var/glass_type = "/glass"
|
||||
@@ -19,91 +19,91 @@
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_com
|
||||
base_icon_state = "com"
|
||||
base_name = "Command Airlock"
|
||||
base_name = "Command airlock"
|
||||
glass_type = "/glass_command"
|
||||
airlock_type = "/command"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_sec
|
||||
base_icon_state = "sec"
|
||||
base_name = "Security Airlock"
|
||||
base_name = "Security airlock"
|
||||
glass_type = "/glass_security"
|
||||
airlock_type = "/security"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_eng
|
||||
base_icon_state = "eng"
|
||||
base_name = "Engineering Airlock"
|
||||
base_name = "Engineering airlock"
|
||||
glass_type = "/glass_engineering"
|
||||
airlock_type = "/engineering"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_eat
|
||||
base_icon_state = "eat"
|
||||
base_name = "Engineering Atmos Airlock"
|
||||
base_name = "Engineering atmos airlock"
|
||||
glass_type = "/glass_engineeringatmos"
|
||||
airlock_type = "/engineering"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_min
|
||||
base_icon_state = "min"
|
||||
base_name = "Mining Airlock"
|
||||
base_name = "Mining airlock"
|
||||
glass_type = "/glass_mining"
|
||||
airlock_type = "/mining"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_atmo
|
||||
base_icon_state = "atmo"
|
||||
base_name = "Atmospherics Airlock"
|
||||
base_name = "Atmospherics airlock"
|
||||
glass_type = "/glass_atmos"
|
||||
airlock_type = "/atmos"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_research
|
||||
base_icon_state = "res"
|
||||
base_name = "Research Airlock"
|
||||
base_name = "Research airlock"
|
||||
glass_type = "/glass_research"
|
||||
airlock_type = "/research"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_science
|
||||
base_icon_state = "sci"
|
||||
base_name = "Science Airlock"
|
||||
base_name = "Science airlock"
|
||||
glass_type = "/glass_science"
|
||||
airlock_type = "/science"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_med
|
||||
base_icon_state = "med"
|
||||
base_name = "Medical Airlock"
|
||||
base_name = "Medical airlock"
|
||||
glass_type = "/glass_medical"
|
||||
airlock_type = "/medical"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_mai
|
||||
base_icon_state = "mai"
|
||||
base_name = "Maintenance Airlock"
|
||||
base_name = "Maintenance airlock"
|
||||
airlock_type = "/maintenance"
|
||||
glass = -1
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_ext
|
||||
base_icon_state = "ext"
|
||||
base_name = "External Airlock"
|
||||
base_name = "External airlock"
|
||||
airlock_type = "/external"
|
||||
glass = -1
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_fre
|
||||
base_icon_state = "fre"
|
||||
base_name = "Freezer Airlock"
|
||||
base_name = "Freezer airlock"
|
||||
airlock_type = "/freezer"
|
||||
glass = -1
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_hatch
|
||||
base_icon_state = "hatch"
|
||||
base_name = "Airtight Hatch"
|
||||
base_name = "airtight hatch"
|
||||
airlock_type = "/hatch"
|
||||
glass = -1
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_mhatch
|
||||
base_icon_state = "mhatch"
|
||||
base_name = "Maintenance Hatch"
|
||||
base_name = "maintenance hatch"
|
||||
airlock_type = "/maintenance_hatch"
|
||||
glass = -1
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_highsecurity // Borrowing this until WJohnston makes sprites for the assembly
|
||||
base_icon_state = "highsec"
|
||||
base_name = "High Security Airlock"
|
||||
base_name = "high security airlock"
|
||||
airlock_type = "/highsecurity"
|
||||
glass = -1
|
||||
|
||||
@@ -221,7 +221,6 @@
|
||||
W.loc = src
|
||||
user << "<span class='notice'>You installed the airlock electronics!</span>"
|
||||
src.state = 2
|
||||
src.name = "Near finished Airlock Assembly"
|
||||
src.electronics = W
|
||||
|
||||
else if(istype(W, /obj/item/weapon/crowbar) && state == 2 )
|
||||
@@ -238,7 +237,6 @@
|
||||
if(!src) return
|
||||
user << "<span class='notice'>You removed the airlock electronics!</span>"
|
||||
src.state = 1
|
||||
src.name = "Wired Airlock Assembly"
|
||||
electronics.loc = src.loc
|
||||
electronics = null
|
||||
|
||||
@@ -294,9 +292,9 @@
|
||||
switch (state)
|
||||
if(0)
|
||||
if (anchored)
|
||||
name = "Secured "
|
||||
name = "secured "
|
||||
if(1)
|
||||
name = "Wired "
|
||||
name = "wired "
|
||||
if(2)
|
||||
name = "Near Finished "
|
||||
name += "[glass == 1 ? "Window " : ""][istext(glass) ? "[glass] Airlock" : base_name] Assembly"
|
||||
name = "near finished "
|
||||
name += "[glass == 1 ? "window " : ""][istext(glass) ? "[glass] airlock" : base_name] assembly ([created_name])"
|
||||
|
||||
@@ -126,7 +126,8 @@
|
||||
return ..()
|
||||
|
||||
/obj/structure/girder/proc/construct_wall(obj/item/stack/material/S, mob/user)
|
||||
if(S.get_amount() < 2)
|
||||
var/amount_to_use = reinf_material ? 1 : 2
|
||||
if(S.get_amount() < amount_to_use)
|
||||
user << "<span class='notice'>There isn't enough material here to construct a wall.</span>"
|
||||
return 0
|
||||
|
||||
@@ -143,7 +144,6 @@
|
||||
|
||||
user << "<span class='notice'>You begin adding the plating...</span>"
|
||||
|
||||
var/amount_to_use = reinf_material ? 1 : 2
|
||||
if(!do_after(user,40) || !S.use(amount_to_use))
|
||||
return 1 //once we've gotten this far don't call parent attackby()
|
||||
|
||||
|
||||
@@ -19,12 +19,18 @@ obj/structure/windoor_assembly
|
||||
w_class = 3
|
||||
|
||||
var/obj/item/weapon/airlock_electronics/electronics = null
|
||||
var/created_name = null
|
||||
|
||||
//Vars to help with the icon's name
|
||||
var/facing = "l" //Does the windoor open to the left or right?
|
||||
var/secure = "" //Whether or not this creates a secure windoor
|
||||
var/state = "01" //How far the door assembly has progressed in terms of sprites
|
||||
|
||||
obj/structure/windoor_assembly/secure
|
||||
name = "secure windoor assembly"
|
||||
secure = "secure_"
|
||||
icon_state = "l_secure_windoor_assembly01"
|
||||
|
||||
obj/structure/windoor_assembly/New(Loc, start_dir=NORTH, constructed=0)
|
||||
..()
|
||||
if(constructed)
|
||||
@@ -65,24 +71,31 @@ obj/structure/windoor_assembly/Destroy()
|
||||
|
||||
|
||||
/obj/structure/windoor_assembly/attackby(obj/item/W as obj, mob/user as mob)
|
||||
//I really should have spread this out across more states but thin little windoors are hard to sprite.
|
||||
if(istype(W, /obj/item/weapon/pen))
|
||||
var/t = sanitizeSafe(input(user, "Enter the name for the windoor.", src.name, src.created_name), MAX_NAME_LEN)
|
||||
if(!t) return
|
||||
if(!in_range(src, usr) && src.loc != usr) return
|
||||
created_name = t
|
||||
return
|
||||
|
||||
switch(state)
|
||||
if("01")
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && !anchored )
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if (WT.remove_fuel(0,user))
|
||||
user.visible_message("[user] dissassembles the windoor assembly.", "You start to dissassemble the windoor assembly.")
|
||||
user.visible_message("[user] disassembles the windoor assembly.", "You start to disassemble the windoor assembly.")
|
||||
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
|
||||
if(do_after(user, 40))
|
||||
if(!src || !WT.isOn()) return
|
||||
user << "<span class='notice'>You dissasembled the windoor assembly!</span>"
|
||||
new /obj/item/stack/material/glass/reinforced(get_turf(src), 5)
|
||||
user << "<span class='notice'>You disassembled the windoor assembly!</span>"
|
||||
if(secure)
|
||||
PoolOrNew(/obj/item/stack/rods, list(get_turf(src), 4))
|
||||
new /obj/item/stack/material/glass/reinforced(get_turf(src), 2)
|
||||
else
|
||||
new /obj/item/stack/material/glass(get_turf(src), 2)
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='notice'>You need more welding fuel to dissassemble the windoor assembly.</span>"
|
||||
user << "<span class='notice'>You need more welding fuel to disassemble the windoor assembly.</span>"
|
||||
return
|
||||
|
||||
//Wrenching an unsecure assembly anchors it in place. Step 4 complete
|
||||
@@ -95,9 +108,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
user << "<span class='notice'>You've secured the windoor assembly!</span>"
|
||||
src.anchored = 1
|
||||
if(src.secure)
|
||||
src.name = "Secure Anchored Windoor Assembly"
|
||||
src.name = "secure anchored windoor assembly"
|
||||
else
|
||||
src.name = "Anchored Windoor Assembly"
|
||||
src.name = "anchored windoor assembly"
|
||||
|
||||
//Unwrenching an unsecure assembly un-anchors it. Step 4 undone
|
||||
else if(istype(W, /obj/item/weapon/wrench) && anchored)
|
||||
@@ -109,26 +122,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
user << "<span class='notice'>You've unsecured the windoor assembly!</span>"
|
||||
src.anchored = 0
|
||||
if(src.secure)
|
||||
src.name = "Secure Windoor Assembly"
|
||||
src.name = "secure windoor assembly"
|
||||
else
|
||||
src.name = "Windoor Assembly"
|
||||
|
||||
//Adding plasteel makes the assembly a secure windoor assembly. Step 2 (optional) complete.
|
||||
else if(istype(W, /obj/item/stack/rods) && !secure)
|
||||
var/obj/item/stack/rods/R = W
|
||||
if(R.get_amount() < 4)
|
||||
user << "<span class='warning'>You need more rods to do this.</span>"
|
||||
return
|
||||
user << "<span class='notice'>You start to reinforce the windoor with rods.</span>"
|
||||
|
||||
if(do_after(user,40) && !secure)
|
||||
if (R.use(4))
|
||||
user << "<span class='notice'>You reinforce the windoor.</span>"
|
||||
src.secure = "secure_"
|
||||
if(src.anchored)
|
||||
src.name = "Secure Anchored Windoor Assembly"
|
||||
else
|
||||
src.name = "Secure Windoor Assembly"
|
||||
src.name = "windoor assembly"
|
||||
|
||||
//Adding cable to the assembly. Step 5 complete.
|
||||
else if(istype(W, /obj/item/stack/cable_coil) && anchored)
|
||||
@@ -140,9 +136,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
user << "<span class='notice'>You wire the windoor!</span>"
|
||||
src.state = "02"
|
||||
if(src.secure)
|
||||
src.name = "Secure Wired Windoor Assembly"
|
||||
src.name = "secure wired windoor assembly"
|
||||
else
|
||||
src.name = "Wired Windoor Assembly"
|
||||
src.name = "wired windoor assembly"
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -160,9 +156,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
new/obj/item/stack/cable_coil(get_turf(user), 1)
|
||||
src.state = "01"
|
||||
if(src.secure)
|
||||
src.name = "Secure Anchored Windoor Assembly"
|
||||
src.name = "secure anchored windoor assembly"
|
||||
else
|
||||
src.name = "Anchored Windoor Assembly"
|
||||
src.name = "anchored windoor assembly"
|
||||
|
||||
//Adding airlock electronics for access. Step 6 complete.
|
||||
else if(istype(W, /obj/item/weapon/airlock_electronics) && W:icon_state != "door_electronics_smoked")
|
||||
@@ -175,7 +171,7 @@ obj/structure/windoor_assembly/Destroy()
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
user << "<span class='notice'>You've installed the airlock electronics!</span>"
|
||||
src.name = "Near finished Windoor Assembly"
|
||||
src.name = "near finished windoor assembly"
|
||||
src.electronics = W
|
||||
else
|
||||
W.loc = src.loc
|
||||
@@ -189,9 +185,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
if(!src || !src.electronics) return
|
||||
user << "<span class='notice'>You've removed the airlock electronics!</span>"
|
||||
if(src.secure)
|
||||
src.name = "Secure Wired Windoor Assembly"
|
||||
src.name = "secure wired windoor assembly"
|
||||
else
|
||||
src.name = "Wired Windoor Assembly"
|
||||
src.name = "wired windoor assembly"
|
||||
var/obj/item/weapon/airlock_electronics/ae = electronics
|
||||
electronics = null
|
||||
ae.loc = src.loc
|
||||
@@ -222,6 +218,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
windoor.base_state = "rightsecure"
|
||||
windoor.set_dir(src.dir)
|
||||
windoor.density = 0
|
||||
windoor.name = created_name
|
||||
spawn(0)
|
||||
windoor.close()
|
||||
|
||||
if(src.electronics.one_access)
|
||||
windoor.req_access = null
|
||||
@@ -240,6 +239,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
windoor.base_state = "right"
|
||||
windoor.set_dir(src.dir)
|
||||
windoor.density = 0
|
||||
windoor.name = created_name
|
||||
spawn(0)
|
||||
windoor.close()
|
||||
|
||||
if(src.electronics.one_access)
|
||||
windoor.req_access = null
|
||||
@@ -257,8 +259,11 @@ obj/structure/windoor_assembly/Destroy()
|
||||
..()
|
||||
|
||||
//Update to reflect changes(if applicable)
|
||||
update_icon()
|
||||
update_state()
|
||||
|
||||
/obj/structure/windoor_assembly/proc/update_state()
|
||||
update_icon()
|
||||
name += " ([created_name])"
|
||||
|
||||
//Rotates the windoor assembly clockwise
|
||||
/obj/structure/windoor_assembly/verb/revrotate()
|
||||
|
||||
@@ -161,6 +161,7 @@
|
||||
if(reinf) tforce *= 0.25
|
||||
if(health - tforce <= 7 && !reinf)
|
||||
anchored = 0
|
||||
update_verbs()
|
||||
update_nearby_icons()
|
||||
step(src, get_dir(AM, src))
|
||||
take_damage(tforce)
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
src << "You can't commit suicide whilst restrained! ((You can type Ghost instead however.))"
|
||||
return
|
||||
suiciding = 1
|
||||
does_not_breathe = 0 //Prevents ling-suicide zombies, or something
|
||||
var/obj/item/held_item = get_active_hand()
|
||||
if(held_item)
|
||||
var/damagetype = held_item.suicide_act(src)
|
||||
|
||||
@@ -180,6 +180,31 @@
|
||||
path = /obj/item/clothing/suit/wcoat
|
||||
cost = 1
|
||||
|
||||
/datum/gear/suit/wcoat/red
|
||||
display_name = "red waistcoat"
|
||||
path = /obj/item/clothing/suit/wcoat/red
|
||||
|
||||
/datum/gear/suit/wcoat/grey
|
||||
display_name = "grey waistcoat"
|
||||
path = /obj/item/clothing/suit/wcoat/grey
|
||||
|
||||
/datum/gear/suit/wcoat/brown
|
||||
display_name = "brown waistcoat"
|
||||
path = /obj/item/clothing/suit/wcoat/brown
|
||||
|
||||
/datum/gear/suit/swvest
|
||||
display_name = "black sweatervest"
|
||||
path = /obj/item/clothing/suit/wcoat/swvest
|
||||
cost = 1
|
||||
|
||||
/datum/gear/suit/swvest/blue
|
||||
display_name = "blue sweatervest"
|
||||
path = /obj/item/clothing/suit/wcoat/swvest/blue
|
||||
|
||||
/datum/gear/suit/swvest/red
|
||||
display_name = "red sweatervest"
|
||||
path = /obj/item/clothing/suit/wcoat/swvest/red
|
||||
|
||||
/datum/gear/suit/forensics
|
||||
display_name = "forensics long, red"
|
||||
path = /obj/item/clothing/suit/storage/forensics/red/long
|
||||
|
||||
@@ -5,6 +5,11 @@
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/head/centhat/customs
|
||||
name = "Customs Hat"
|
||||
desc = "A formal hat for SolGov Customs Officers."
|
||||
icon_state = "customshat"
|
||||
|
||||
/obj/item/clothing/head/hairflower
|
||||
name = "hair flower pin"
|
||||
icon_state = "hairflower"
|
||||
@@ -79,7 +84,7 @@
|
||||
|
||||
/obj/item/clothing/head/syndicatefake
|
||||
name = "red space-helmet replica"
|
||||
item_state_slots = list(slot_r_hand_str = "syndicate-helm-black-red", slot_l_hand_str = "syndicate-helm-black-red")
|
||||
item_state_slots = list(slot_r_hand_str = "syndicate-helm-black-red", slot_l_hand_str = "syndicate-helm-black-red")
|
||||
icon_state = "syndicate"
|
||||
desc = "A plastic replica of a bloodthirsty mercenary's space helmet, you'll look just like a real murderous criminal operative in this! This is a toy, it is not made for use in space!"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR
|
||||
@@ -125,7 +130,7 @@
|
||||
|
||||
/obj/item/clothing/head/justice/pink
|
||||
icon_state = "justicepink"
|
||||
|
||||
|
||||
/obj/item/clothing/head/rabbitears
|
||||
name = "rabbit ears"
|
||||
desc = "Wearing these makes you looks useless, and only good for your sex appeal."
|
||||
@@ -202,7 +207,7 @@
|
||||
name = "fez"
|
||||
icon_state = "fez"
|
||||
desc = "You should wear a fez. Fezzes are cool."
|
||||
|
||||
|
||||
/obj/item/clothing/head/cowboy_hat
|
||||
name = "cowboy hat"
|
||||
desc = "For those that have spurs that go jingle jangle jingle."
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
flags = CONDUCT
|
||||
fire_resist = T0C+5200
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/greatcoat
|
||||
name = "great coat"
|
||||
desc = "A heavy great coat"
|
||||
@@ -92,6 +92,31 @@
|
||||
blood_overlay_type = "armor"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/suit/wcoat/red
|
||||
name = "red waistcoat"
|
||||
icon_state = "red_waistcoat"
|
||||
|
||||
/obj/item/clothing/suit/wcoat/grey
|
||||
name = "grey waistcoat"
|
||||
icon_state = "grey_waistcoat"
|
||||
|
||||
/obj/item/clothing/suit/wcoat/brown
|
||||
name = "brown waistcoat"
|
||||
icon_state = "brown_waistcoat"
|
||||
|
||||
/obj/item/clothing/suit/wcoat/swvest
|
||||
name = "black sweatervest"
|
||||
desc = "A sleeveless sweater. Wear this if you don't want your arms to be warm, or if you're a nerd."
|
||||
icon_state = "sweatervest"
|
||||
|
||||
/obj/item/clothing/suit/wcoat/swvest/blue
|
||||
name = "blue sweatervest"
|
||||
icon_state = "sweatervest_blue"
|
||||
|
||||
/obj/item/clothing/suit/wcoat/swvest/red
|
||||
name = "red sweatervest"
|
||||
icon_state = "sweatervest_red"
|
||||
|
||||
/obj/item/clothing/suit/apron/overalls
|
||||
name = "coveralls"
|
||||
desc = "A set of denim overalls."
|
||||
@@ -197,7 +222,13 @@
|
||||
desc = "A flowing, black coat."
|
||||
icon_state = "neocoat"
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
|
||||
|
||||
/obj/item/clothing/suit/customs
|
||||
name = "customs jacket"
|
||||
desc = "A standard SolGov Customs formal jacket."
|
||||
icon_state = "customs_jacket"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue")
|
||||
|
||||
/*
|
||||
* stripper
|
||||
*/
|
||||
@@ -732,4 +763,4 @@
|
||||
icon_open = "suitjacket_green_open"
|
||||
icon_closed = "suitjacket_green"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
@@ -33,6 +33,14 @@
|
||||
icon_state = "waiter"
|
||||
rolled_sleeves = 0
|
||||
|
||||
/obj/item/clothing/under/customs
|
||||
name = "customs uniform"
|
||||
desc = "A standard SolGov customs uniform. Complete with epaulettes."
|
||||
icon_state = "cu_suit"
|
||||
|
||||
/obj/item/clothing/under/customs/khaki
|
||||
icon_state = "cu_suit_kh"
|
||||
|
||||
/obj/item/clothing/under/rank/mailman
|
||||
name = "mailman's jumpsuit"
|
||||
desc = "<i>'Special delivery!'</i>"
|
||||
@@ -253,7 +261,7 @@
|
||||
/obj/item/clothing/under/dress/stripeddress
|
||||
name = "striped dress"
|
||||
desc = "Fashion in space."
|
||||
icon_state = "striped_dress"
|
||||
icon_state = "striped_dress"
|
||||
|
||||
/obj/item/clothing/under/dress/sailordress
|
||||
name = "sailor dress"
|
||||
@@ -529,7 +537,7 @@
|
||||
name = "fancy dark red dress"
|
||||
desc = "A short, red dress with a black belt. Fancy."
|
||||
icon_state = "darkreddress"
|
||||
|
||||
|
||||
/*
|
||||
* swimsuit
|
||||
*/
|
||||
@@ -566,7 +574,7 @@
|
||||
desc = "An oldfashioned red swimsuit."
|
||||
icon_state = "swim_red"
|
||||
siemens_coefficient = 1
|
||||
|
||||
|
||||
/*
|
||||
* pyjamas
|
||||
*/
|
||||
@@ -583,7 +591,7 @@
|
||||
icon_state = "red_pyjamas"
|
||||
item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
|
||||
|
||||
|
||||
/obj/item/clothing/under/stripper
|
||||
body_parts_covered = 0
|
||||
|
||||
@@ -598,7 +606,7 @@
|
||||
desc = "A rather skimpy green swimsuit."
|
||||
icon_state = "stripper_g_under"
|
||||
siemens_coefficient = 1
|
||||
|
||||
|
||||
/obj/item/clothing/under/stripper/mankini
|
||||
name = "mankini"
|
||||
desc = "No honest man would wear this abomination"
|
||||
|
||||
@@ -395,7 +395,7 @@ var/list/name_to_material
|
||||
weight = 15
|
||||
door_icon_base = "stone"
|
||||
destruction_desc = "shatters"
|
||||
window_options = list("One Direction" = 1, "Full Window" = 4)
|
||||
window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2)
|
||||
created_window = /obj/structure/window/basic
|
||||
rod_product = /obj/item/stack/material/glass/reinforced
|
||||
|
||||
@@ -425,6 +425,12 @@ var/list/name_to_material
|
||||
for (var/obj/structure/window/check_window in user.loc)
|
||||
window_count++
|
||||
possible_directions -= check_window.dir
|
||||
for (var/obj/structure/windoor_assembly/check_assembly in user.loc)
|
||||
window_count++
|
||||
possible_directions -= check_assembly.dir
|
||||
for (var/obj/machinery/door/window/check_windoor in user.loc)
|
||||
window_count++
|
||||
possible_directions -= check_windoor.dir
|
||||
|
||||
// Get the closest available dir to the user's current facing.
|
||||
var/build_dir = SOUTHWEST //Default to southwest for fulltile windows.
|
||||
@@ -435,18 +441,12 @@ var/list/name_to_material
|
||||
else
|
||||
if(choice in list("One Direction","Windoor"))
|
||||
if(possible_directions.len)
|
||||
for(var/direction in list(user.dir, turn(user.dir,90), turn(user.dir,180), turn(user.dir,270) ))
|
||||
for(var/direction in list(user.dir, turn(user.dir,90), turn(user.dir,270), turn(user.dir,180)))
|
||||
if(direction in possible_directions)
|
||||
build_dir = direction
|
||||
break
|
||||
else
|
||||
failed_to_build = 1
|
||||
if(!failed_to_build && choice == "Windoor")
|
||||
if(!is_reinforced())
|
||||
user << "<span class='warning'>This material is not reinforced enough to use for a door.</span>"
|
||||
return
|
||||
if((locate(/obj/structure/windoor_assembly) in T.contents) || (locate(/obj/machinery/door/window) in T.contents))
|
||||
failed_to_build = 1
|
||||
if(failed_to_build)
|
||||
user << "<span class='warning'>There is no room in this location.</span>"
|
||||
return 1
|
||||
@@ -454,7 +454,8 @@ var/list/name_to_material
|
||||
var/build_path = /obj/structure/windoor_assembly
|
||||
var/sheets_needed = window_options[choice]
|
||||
if(choice == "Windoor")
|
||||
build_dir = user.dir
|
||||
if(is_reinforced())
|
||||
build_path = /obj/structure/windoor_assembly/secure
|
||||
else
|
||||
build_path = created_window
|
||||
|
||||
@@ -484,7 +485,7 @@ var/list/name_to_material
|
||||
weight = 30
|
||||
stack_origin_tech = "materials=2"
|
||||
composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "glass" = SHEET_MATERIAL_AMOUNT)
|
||||
window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 5)
|
||||
window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2)
|
||||
created_window = /obj/structure/window/reinforced
|
||||
wire_product = null
|
||||
rod_product = null
|
||||
@@ -497,6 +498,7 @@ var/list/name_to_material
|
||||
integrity = 100
|
||||
icon_colour = "#FC2BC5"
|
||||
stack_origin_tech = list(TECH_MATERIAL = 4)
|
||||
window_options = list("One Direction" = 1, "Full Window" = 4)
|
||||
created_window = /obj/structure/window/phoronbasic
|
||||
wire_product = null
|
||||
rod_product = /obj/item/stack/material/glass/phoronrglass
|
||||
@@ -507,6 +509,7 @@ var/list/name_to_material
|
||||
stack_type = /obj/item/stack/material/glass/phoronrglass
|
||||
stack_origin_tech = list(TECH_MATERIAL = 5)
|
||||
composite_material = list() //todo
|
||||
window_options = list("One Direction" = 1, "Full Window" = 4)
|
||||
created_window = /obj/structure/window/phoronreinforced
|
||||
hardness = 40
|
||||
weight = 30
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
/mob/living/carbon/proc/breathe()
|
||||
//if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
|
||||
if(!should_have_organ(O_LUNGS) || does_not_breathe) return
|
||||
if(!should_have_organ(O_LUNGS)) return
|
||||
|
||||
var/datum/gas_mixture/breath = null
|
||||
|
||||
|
||||
@@ -1025,9 +1025,8 @@
|
||||
src << msg
|
||||
|
||||
organ.take_damage(rand(1,3), 0, 0)
|
||||
if(!(organ.robotic >= ORGAN_ROBOT) && !(should_have_organ(O_HEART))) //There is no blood in protheses.
|
||||
if(!(organ.robotic >= ORGAN_ROBOT) && (should_have_organ(O_HEART))) //There is no blood in protheses.
|
||||
organ.status |= ORGAN_BLEEDING
|
||||
src.adjustToxLoss(rand(1,3))
|
||||
|
||||
/mob/living/carbon/human/verb/check_pulse()
|
||||
set category = "Object"
|
||||
|
||||
@@ -18,12 +18,11 @@ emp_act
|
||||
|
||||
//Shields
|
||||
var/shield_check = check_shields(P.damage, P, null, def_zone, "the [P.name]")
|
||||
if(shield_check)
|
||||
if(shield_check < 0)
|
||||
return shield_check
|
||||
else
|
||||
P.on_hit(src, 2, def_zone)
|
||||
return 2
|
||||
if(shield_check) // If the block roll succeeded, this is true.
|
||||
if(shield_check < 0) // The shield did something weird and the bullet needs to keep doing things (e.g. it was reflected).
|
||||
return shield_check // Likely equal to PROJECTILE_FORCE_MISS or PROJECTILE_CONTINUE.
|
||||
else // Otherwise we blocked normally and stopped all the damage.
|
||||
return 0
|
||||
|
||||
//Shrapnel
|
||||
if(P.can_embed())
|
||||
|
||||
@@ -327,6 +327,11 @@
|
||||
if(status_flags & GODMODE)
|
||||
return
|
||||
|
||||
if(does_not_breathe)
|
||||
failed_last_breath = 0
|
||||
adjustOxyLoss(-5)
|
||||
return
|
||||
|
||||
if(!breath || (breath.total_moles == 0) || suiciding)
|
||||
failed_last_breath = 1
|
||||
if(suiciding)
|
||||
@@ -1184,10 +1189,10 @@
|
||||
// if(resting || lying || sleeping) rest.icon_state = "rest1"
|
||||
// else rest.icon_state = "rest0"
|
||||
if(toxin)
|
||||
if(hal_screwyhud == 4 || phoron_alert) toxin.icon_state = "tox1"
|
||||
if(hal_screwyhud == 4 || (phoron_alert && !does_not_breathe)) toxin.icon_state = "tox1"
|
||||
else toxin.icon_state = "tox0"
|
||||
if(oxygen)
|
||||
if(hal_screwyhud == 3 || oxygen_alert) oxygen.icon_state = "oxy1"
|
||||
if(hal_screwyhud == 3 || (oxygen_alert && !does_not_breathe)) oxygen.icon_state = "oxy1"
|
||||
else oxygen.icon_state = "oxy0"
|
||||
if(fire)
|
||||
if(fire_alert) fire.icon_state = "fire[fire_alert]" //fire_alert is either 0 if no alert, 1 for cold and 2 for heat.
|
||||
|
||||
@@ -103,11 +103,11 @@
|
||||
min_age = 17
|
||||
max_age = 80
|
||||
|
||||
blurb = "The Tajaran race is a species of feline-like bipeds hailing from the planet of Ahdomai in the \
|
||||
S'randarr system. They have been brought up into the space age by the Humans and Skrell, and have been \
|
||||
influenced heavily by their long history of Slavemaster rule. They have a structured, clan-influenced way \
|
||||
of family and politics. They prefer colder environments, and speak a variety of languages, mostly Siik'Maas, \
|
||||
using unique inflections their mouths form."
|
||||
blurb = "The Tajaran are a mammalian species resembling roughly felines, hailing from Meralar in the Rarkajar system. \
|
||||
While reaching to the stars independently from outside influences, the humans engaged them in peaceful trade contact \
|
||||
and have accelerated the fledgling culture into the interstellar age. Their history is full of war and highly fractious \
|
||||
governments, something that permeates even to today's times. They prefer colder, tundra-like climates, much like their \
|
||||
home worlds and speak a variety of languages, especially Siik and Akhani."
|
||||
|
||||
cold_level_1 = 200 //Default 260
|
||||
cold_level_2 = 140 //Default 200
|
||||
|
||||
@@ -733,7 +733,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
else
|
||||
brute_dam += W.damage
|
||||
|
||||
if(!(robotic >= ORGAN_ROBOT) && W.bleeding() && (H && !H.should_have_organ(O_HEART)))
|
||||
if(!(robotic >= ORGAN_ROBOT) && W.bleeding() && (H && H.should_have_organ(O_HEART)))
|
||||
W.bleed_timer--
|
||||
status |= ORGAN_BLEEDING
|
||||
|
||||
|
||||
Reference in New Issue
Block a user