")
- update_icon()
-
-/obj/item/weapon/gun/energy/kinetic_accelerator/update_icon()
- if(!can_shoot())
- icon_state = "[initial(icon_state)]_empty"
- else
- icon_state = initial(icon_state)
-
/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow
name = "mini energy crossbow"
desc = "A weapon favored by syndicate stealth specialists."
@@ -234,6 +99,9 @@
overheat_time = 20
holds_charge = TRUE
unique_frequency = TRUE
+ can_flashlight = 0
+ max_mod_capacity = 0
+ empty_state = null
/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/ninja
name = "energy dart thrower"
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 7b0bcda17d0..4a3afd18684 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -52,7 +52,7 @@
var/forcedodge = 0 //to pass through everything
var/dismemberment = 0 //The higher the number, the greater the bonus to dismembering. 0 will not dismember at all.
- var/log = 1 //whether print to admin attack logs or just keep it in the diary
+ var/log_override = FALSE //whether print to admin attack logs or just keep it in the diary
/obj/item/projectile/New()
permutated = list()
@@ -90,7 +90,8 @@
for(var/datum/reagent/R in reagents.reagent_list)
reagent_note += R.id + " ("
reagent_note += num2text(R.volume) + ") "
- add_logs(firer, L, "shot", src, reagent_note, print_attack_log = log)
+ if(!log_override && firer && original)
+ add_logs(firer, L, "shot", src, reagent_note)
return L.apply_effects(stun, weaken, paralyze, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter)
/obj/item/projectile/proc/vol_by_damage()
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 872ee7c3f26..6cddc1c1b91 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -20,7 +20,7 @@
name = "practice laser"
damage = 0
nodamage = 1
- log = 0
+ log_override = TRUE
/obj/item/projectile/beam/scatter
name = "laser pellet"
@@ -75,7 +75,7 @@
damage_type = STAMINA
flag = "laser"
var/suit_types = list(/obj/item/clothing/suit/redtag, /obj/item/clothing/suit/bluetag)
- log = 0
+ log_override = TRUE
/obj/item/projectile/beam/lasertag/on_hit(atom/target, blocked = 0)
. = ..()
diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm
index 17aaad71a2a..cb0ee34ad75 100644
--- a/code/modules/projectiles/projectile/reusable.dm
+++ b/code/modules/projectiles/projectile/reusable.dm
@@ -37,7 +37,7 @@
var/obj/item/weapon/pen/pen = null
edge = 0
embed = 0
- log = 0//it won't log even when there's a pen inside, but since the damage will be so low, I don't think there's any point in making it any more complex
+ log_override = TRUE//it won't log even when there's a pen inside, but since the damage will be so low, I don't think there's any point in making it any more complex
/obj/item/projectile/bullet/reusable/foam_dart/handle_drop()
if(dropped)
@@ -65,4 +65,4 @@
icon_state = "foamdart_riot"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
stamina = 25
- log = 1
+ log_override = FALSE
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index b1cdef1f73c..83a4ec0650c 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -201,62 +201,6 @@
playsound(src, 'sound/effects/snap.ogg', 50, 1)
qdel(src)
-/obj/item/projectile/kinetic
- name = "kinetic force"
- icon_state = null
- damage = 10
- damage_type = BRUTE
- flag = "bomb"
- range = 3
- var/splash = 0
-
-/obj/item/projectile/kinetic/super
- damage = 11
- range = 4
-
-/obj/item/projectile/kinetic/hyper
- damage = 12
- range = 5
- splash = 1
-
-obj/item/projectile/kinetic/New()
- var/turf/proj_turf = get_turf(src)
- if(!istype(proj_turf, /turf))
- return
- var/datum/gas_mixture/environment = proj_turf.return_air()
- var/pressure = environment.return_pressure()
- if(pressure < 50)
- name = "full strength kinetic force"
- damage *= 4
- ..()
-
-/obj/item/projectile/kinetic/on_range()
- new /obj/effect/kinetic_blast(loc)
- ..()
-
-/obj/item/projectile/kinetic/on_hit(atom/target)
- . = ..()
- var/turf/target_turf= get_turf(target)
- if(istype(target_turf, /turf/simulated/mineral))
- var/turf/simulated/mineral/M = target_turf
- M.gets_drilled(firer)
- new /obj/effect/kinetic_blast(target_turf)
- if(splash)
- for(var/turf/T in range(splash, target_turf))
- if(istype(T, /turf/simulated/mineral))
- var/turf/simulated/mineral/M = T
- M.gets_drilled(firer)
-
-/obj/effect/kinetic_blast
- name = "kinetic explosion"
- icon = 'icons/obj/projectiles.dmi'
- icon_state = "kinetic_blast"
- layer = 4.1
-
-/obj/effect/kinetic_blast/New()
- spawn(4)
- qdel(src)
-
/obj/item/projectile/beam/wormhole
name = "bluespace beam"
icon_state = "spark"
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 0f6e202ba07..db77f30e76b 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -1,7 +1,3 @@
-#define SOLID 1
-#define LIQUID 2
-#define GAS 3
-
/datum/reagent
var/name = "Reagent"
var/id = "reagent"
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index 2785683e378..3d57f950995 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -50,7 +50,7 @@
dir = newdir
update_move_direction()
-/obj/machinery/conveyor/set_dir(newdir)
+/obj/machinery/conveyor/setDir(newdir)
. = ..()
update_move_direction()
diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm
index 5ea86d2c7a3..779a0809577 100644
--- a/code/modules/research/designs/mechfabricator_designs.dm
+++ b/code/modules/research/designs/mechfabricator_designs.dm
@@ -1038,16 +1038,6 @@
construction_time = 120
category = list("Cyborg Upgrade Modules")
-/datum/design/borg_upgrade_hyperka
- name = "Cyborg Upgrade (Hyper-Kinetic Accelerator)"
- id = "borg_upgrade_hyperka"
- req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
- build_type = MECHFAB //Reqs same as human Hyper KA
- materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
- build_path = /obj/item/borg/upgrade/hyperka
- construction_time = 120
- category = list("Cyborg Upgrade Modules")
-
/datum/design/borg_syndicate_module
name = "Cyborg Upgrade (Illegal Modules)"
id = "borg_syndicate_module"
@@ -1110,7 +1100,7 @@
name = "IPC Optical Sensor"
id = "ipc_optics"
build_type = MECHFAB
- build_path = /obj/item/organ/internal/optical_sensor
+ build_path = /obj/item/organ/internal/eyes/optical_sensor
materials = list(MAT_METAL=1000, MAT_GLASS=2500)
construction_time = 200
category = list("Misc")
diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm
index 2b7d911f2b1..aa3014e2825 100644
--- a/code/modules/research/designs/mining_designs.dm
+++ b/code/modules/research/designs/mining_designs.dm
@@ -64,26 +64,6 @@
build_path = /obj/item/weapon/pickaxe/drill/jackhammer
category = list("Mining")
-/datum/design/superaccelerator
- name = "Super-Kinetic Accelerator"
- desc = "An upgraded version of the proto-kinetic accelerator, with superior damage, speed and range."
- id = "superaccelerator"
- req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000)
- build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/super
- category = list("Mining")
-
-/datum/design/hyperaccelerator
- name = "Hyper-Kinetic Accelerator"
- desc = "An upgraded version of the proto-kinetic accelerator, with even more superior damage, speed and range."
- id = "hyperaccelerator"
- req_tech = list("materials" = 6, "powerstorage" = 6, "engineering" = 5, "magnets" = 6, "combat" = 4)
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
- build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/hyper
- category = list("Mining")
-
/datum/design/superresonator
name = "Upgraded Resonator"
desc = "An upgraded version of the resonator that allows more fields to be active at once."
@@ -92,4 +72,64 @@
build_type = PROTOLATHE
materials = list(MAT_METAL = 4000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000)
build_path = /obj/item/weapon/resonator/upgraded
- category = list("Mining")
\ No newline at end of file
+ category = list("Mining")
+
+/datum/design/trigger_guard_mod
+ name = "Kinetic Accelerator Trigger Guard Mod"
+ desc = "A device which allows kinetic accelerators to be wielded by any organism."
+ id = "triggermod"
+ req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
+ build_path = /obj/item/borg/upgrade/modkit/trigger_guard
+ category = list("Mining")
+
+/datum/design/damage_mod
+ name = "Kinetic Accelerator Damage Mod"
+ desc = "A device which allows kinetic accelerators to deal more damage."
+ id = "damagemod"
+ req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
+ build_type = PROTOLATHE | MECHFAB
+ materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
+ build_path = /obj/item/borg/upgrade/modkit/damage
+ category = list("Mining", "Cyborg Upgrade Modules")
+
+/datum/design/cooldown_mod
+ name = "Kinetic Accelerator Cooldown Mod"
+ desc = "A device which decreases the cooldown of a Kinetic Accelerator."
+ id = "cooldownmod"
+ req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
+ build_type = PROTOLATHE | MECHFAB
+ materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
+ build_path = /obj/item/borg/upgrade/modkit/cooldown
+ category = list("Mining", "Cyborg Upgrade Modules")
+
+/datum/design/range_mod
+ name = "Kinetic Accelerator Range Mod"
+ desc = "A device which allows kinetic accelerators to fire at a further range."
+ id = "rangemod"
+ req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
+ build_type = PROTOLATHE | MECHFAB
+ materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
+ build_path = /obj/item/borg/upgrade/modkit/range
+ category = list("Mining", "Cyborg Upgrade Modules")
+
+/datum/design/superaccelerator
+ name = "Kinetic Accelerator Pressure Mod"
+ desc = "A modification kit which allows Kinetic Accelerators to do more damage while indoors."
+ id = "indoormod"
+ req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
+ build_type = PROTOLATHE | MECHFAB
+ materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000)
+ build_path = /obj/item/borg/upgrade/modkit/indoors
+ category = list("Mining", "Cyborg Upgrade Modules")
+
+/datum/design/hyperaccelerator
+ name = "Kinetic Accelerator Mining AoE Mod"
+ desc = "A modification kit for Kinetic Accelerators which causes it to fire AoE blasts that destroy rock."
+ id = "hypermod"
+ req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
+ build_type = PROTOLATHE | MECHFAB
+ materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
+ build_path = /obj/item/borg/upgrade/modkit/aoe/turfs
+ category = list("Mining", "Cyborg Upgrade Modules")
\ No newline at end of file
diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm
index e2ba439a0dd..8944cf84131 100644
--- a/code/modules/shuttle/supply.dm
+++ b/code/modules/shuttle/supply.dm
@@ -247,6 +247,8 @@
/obj/machinery/teleport/hub,
/obj/machinery/telepad,
/obj/machinery/clonepod,
+ /obj/effect/hierophant,
+ /obj/item/device/warp_cube,
/obj/machinery/quantumpad
)
if(A)
diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm
index 0d029c8e1ce..16a22ea81f6 100644
--- a/code/modules/surgery/organs/organ.dm
+++ b/code/modules/surgery/organs/organ.dm
@@ -228,10 +228,10 @@ var/list/organ_cache = list()
/obj/item/organ/proc/take_damage(amount, var/silent=0)
if(tough)
return
- if(src.status & ORGAN_ROBOT)
- src.damage = between(0, src.damage + (amount * 0.8), max_damage)
+ if(status & ORGAN_ROBOT)
+ damage = between(0, damage + (amount * 0.8), max_damage)
else
- src.damage = between(0, src.damage + amount, max_damage)
+ damage = between(0, damage + amount, max_damage)
//only show this if the organ is not robotic
if(owner && parent_organ && amount > 0)
@@ -241,18 +241,18 @@ var/list/organ_cache = list()
/obj/item/organ/proc/robotize() //Being used to make robutt hearts, etc
robotic = 2
- src.status &= ~ORGAN_BROKEN
- src.status &= ~ORGAN_BLEEDING
- src.status &= ~ORGAN_SPLINTED
- src.status &= ~ORGAN_CUT_AWAY
- src.status &= ~ORGAN_ATTACHABLE
- src.status &= ~ORGAN_DESTROYED
- src.status |= ORGAN_ROBOT
- src.status |= ORGAN_ASSISTED
+ status &= ~ORGAN_BROKEN
+ status &= ~ORGAN_BLEEDING
+ status &= ~ORGAN_SPLINTED
+ status &= ~ORGAN_CUT_AWAY
+ status &= ~ORGAN_ATTACHABLE
+ status &= ~ORGAN_DESTROYED
+ status |= ORGAN_ROBOT
+ status |= ORGAN_ASSISTED
/obj/item/organ/proc/mechassist() //Used to add things like pacemakers, etc
- robotize()
- src.status &= ~ORGAN_ROBOT
+ robotize(1) //Skip the icon/name setting that occurs in robotize to avoid having to reset the icon file.
+ status &= ~ORGAN_ROBOT
robotic = 1
min_bruised_damage = 15
min_broken_damage = 35
@@ -325,7 +325,7 @@ var/list/organ_cache = list()
affected.internal_organs |= src
if(!target.get_int_organ(src))
target.internal_organs += src
- src.loc = target
+ loc = target
if(robotic)
status |= ORGAN_ROBOT
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index 8a5a6a6b158..8de7cccd2d6 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -201,7 +201,7 @@
/obj/item/organ/internal/heart/prepare_eat()
var/obj/S = ..()
- S.icon_state = "heart-off"
+ S.icon_state = dead_icon
return S
/obj/item/organ/internal/heart/cursed
@@ -343,16 +343,47 @@
parent_organ = "head"
slot = "eyes"
var/list/eye_colour = list(0,0,0)
+ var/list/colourmatrix = null
+ var/list/colourblind_matrix = MATRIX_GREYSCALE //Special colourblindness parameters. By default, it's black-and-white.
+ var/colourblind_darkview = null
+ var/dependent_disabilities = null //Gets set by eye-dependent disabilities such as colourblindness so the eyes can transfer the disability during transplantation.
+ var/dark_view = 2 //Default dark_view for Humans.
+ var/weld_proof = null //If set, the eyes will not take damage during welding. eg. IPC optical sensors do not take damage when they weld things while all other eyes will.
/obj/item/organ/internal/eyes/proc/update_colour()
dna.write_eyes_attributes(src)
-/obj/item/organ/internal/eyes/insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/internal/eyes/proc/get_colourmatrix() //Returns a special colour matrix if the eyes are organic and the mob is colourblind, otherwise it uses the current one.
+ if(!robotic && owner.disabilities & COLOURBLIND)
+ return colourblind_matrix
+ else
+ return colourmatrix
+
+/obj/item/organ/internal/eyes/proc/get_dark_view() //Returns dark_view (if the eyes are organic) for see_invisible handling in species.dm to be autoprocessed by life().
+ if(!robotic && colourblind_darkview && owner.disabilities & COLOURBLIND) //Returns special darkview value if colourblind and it exists, otherwise reuse current.
+ return colourblind_darkview
+ else
+ return dark_view
+
+/obj/item/organ/internal/eyes/insert(mob/living/carbon/human/M, special = 0)
..()
if(istype(M) && eye_colour)
- var/mob/living/carbon/human/H = M
- // Apply our eye colour to the target.
- H.update_body()
+ M.update_body() //Apply our eye colour to the target.
+
+ if(!(M.disabilities & COLOURBLIND) && (dependent_disabilities & COLOURBLIND)) //If the eyes are colourblind and we're not, carry over the gene.
+ dependent_disabilities &= ~COLOURBLIND
+ M.dna.SetSEState(COLOURBLINDBLOCK,1)
+ genemutcheck(M,COLOURBLINDBLOCK,null,MUTCHK_FORCED)
+ else
+ M.update_client_colour() //If we're here, that means the mob acquired the colourblindness gene while they didn't have eyes. Better handle it.
+
+/obj/item/organ/internal/eyes/remove(mob/living/carbon/human/M, special = 0)
+ if(!special && (M.disabilities & COLOURBLIND)) //If special is set, that means these eyes are getting deleted (i.e. during set_species())
+ if(!(dependent_disabilities & COLOURBLIND)) //We only want to change COLOURBLINDBLOCK and such it the eyes are being surgically removed.
+ dependent_disabilities |= COLOURBLIND
+ M.dna.SetSEState(COLOURBLINDBLOCK,0)
+ genemutcheck(M,COLOURBLINDBLOCK,null,MUTCHK_FORCED)
+ . = ..()
/obj/item/organ/internal/eyes/surgeryize()
if(!owner)
@@ -362,6 +393,38 @@
owner.SetEyeBlurry(0)
owner.SetEyeBlind(0)
+/obj/item/organ/internal/robotize(var/icon_bypass) //If icon bypass isn't null, skip the processing here and go straight to the parent call.
+ if(!icon_bypass && !(status & ORGAN_ROBOT)) //Don't override the icons for the already-mechanical IPC organs.
+ var/list/states = icon_states('icons/obj/surgery.dmi') //Insensitive to specially-defined icon files for species like the Drask or whomever else. Everyone gets the same robotic heart.
+ if(slot == "heart" && ("[slot]-prosthetic-on" in states) && ("[slot]-prosthetic-off" in states)) //Give the robotic heart its robotic heart icons if they exist.
+ var/obj/item/organ/internal/heart/H = src
+ H.icon = icon('icons/obj/surgery.dmi')
+ H.icon_base = "[slot]-prosthetic"
+ H.dead_icon = "[slot]-prosthetic-off"
+ H.update_icon()
+ else if("[slot]-prosthetic" in states) //Give the robotic organ its robotic organ icons if they exist.
+ icon = icon('icons/obj/surgery.dmi')
+ icon_state = "[slot]-prosthetic"
+ name = "mechanical [slot]"
+ ..() //Go apply all the organ flags/robotic statuses.
+
+/obj/item/organ/internal/eyes/robotize()
+ colourmatrix = null
+ dark_view = 2
+ ..() //Make sure the organ's got the robotic status indicators before updating the client colour.
+ owner.update_client_colour(0) //Since both mechassisted and mechanical eyes give dark_view of 2 and full colour vision atm, just having this here is fine as mechassist() will call it anyway.
+
+/obj/item/organ/internal/mechassist()
+ ..() //Go back, call robotize(), adjust the robotic status indicators and the organ damage parameters.
+ var/list/states = icon_states(icon) //Sensitive to specially-defined icon files since the organs are not fully synthetic.
+ if(slot == "heart" && ("[organ_tag]-assisted-on" in states) && ("[organ_tag]-assisted-off" in states)) //Give the mechassisted heart its mechassisted heart icons if they exist.
+ var/obj/item/organ/internal/heart/H = src
+ H.icon_base = "[organ_tag]-assisted"
+ H.dead_icon = "[organ_tag]-assisted-off"
+ H.update_icon()
+ else if("[organ_tag]-assisted" in states) //Give the mechassisted organ its mechassisted organ icons if they exist.
+ icon_state = "[organ_tag]-assisted"
+ name = "mechanically assisted [initial(name)]" //Avoid setting the organ's name to something like "mechanically assisted mechanical eyes".
/obj/item/organ/internal/liver
name = "liver"
@@ -372,7 +435,6 @@
var/alcohol_intensity = 1
/obj/item/organ/internal/liver/process()
-
..()
if(!owner)
diff --git a/code/modules/surgery/organs/subtypes/abductor.dm b/code/modules/surgery/organs/subtypes/abductor.dm
new file mode 100644
index 00000000000..6fd234bc501
--- /dev/null
+++ b/code/modules/surgery/organs/subtypes/abductor.dm
@@ -0,0 +1,4 @@
+/obj/item/organ/internal/eyes/abductor
+ name = "abductor eyeballs"
+ dark_view = 3
+ species = "Abductor"
diff --git a/code/modules/surgery/organs/subtypes/diona.dm b/code/modules/surgery/organs/subtypes/diona.dm
index 48ad2fb3cea..c7044f92fb9 100644
--- a/code/modules/surgery/organs/subtypes/diona.dm
+++ b/code/modules/surgery/organs/subtypes/diona.dm
@@ -97,74 +97,42 @@
/obj/item/organ/diona/process()
return
-/obj/item/organ/internal/heart/diona
+/obj/item/organ/internal/heart/diona // Turns into a nymph instantly, no transplanting possible.
name = "neural strata"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- organ_tag = "heart" // Turns into a nymph instantly, no transplanting possible.
- origin_tech = "biotech=3"
- parent_organ = "chest"
- slot = "heart"
species = "Diona"
-/obj/item/organ/internal/brain/diona
+/obj/item/organ/internal/brain/diona // Turns into a nymph instantly, no transplanting possible.
name = "gas bladder"
- parent_organ = "head"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- organ_tag = "brain" // Turns into a nymph instantly, no transplanting possible.
- origin_tech = "biotech=3"
- slot = "brain"
species = "Diona"
-/obj/item/organ/internal/kidneys/diona
+/obj/item/organ/internal/kidneys/diona // Turns into a nymph instantly, no transplanting possible.
name = "polyp segment"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- organ_tag = "kidneys" // Turns into a nymph instantly, no transplanting possible.
- origin_tech = "biotech=3"
- parent_organ = "groin"
- slot = "kidneys"
species = "Diona"
-/obj/item/organ/internal/appendix/diona
+/obj/item/organ/internal/appendix/diona // Turns into a nymph instantly, no transplanting possible.
name = "anchoring ligament"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- organ_tag = "appendix" // Turns into a nymph instantly, no transplanting possible.
- origin_tech = "biotech=3"
- parent_organ = "groin"
- slot = "appendix"
species = "Diona"
-/obj/item/organ/internal/diona_receptor
+/obj/item/organ/internal/eyes/diona // Turns into a nymph instantly, no transplanting possible.
name = "receptor node"
- organ_tag = "eyes"
icon = 'icons/mob/alien.dmi'
icon_state = "claw"
- origin_tech = "biotech=3"
- parent_organ = "head"
- slot = "eyes"
species = "Diona"
-/obj/item/organ/internal/diona_receptor/surgeryize()
- if(!owner)
- return
- owner.CureNearsighted()
- owner.CureBlind()
- owner.SetEyeBlurry(0)
- owner.SetEyeBlind(0)
-
-
//TODO:Make absorb rads on insert
-/obj/item/organ/internal/liver/diona
+/obj/item/organ/internal/liver/diona // Turns into a nymph instantly, no transplanting possible.
name = "nutrient vessel"
- parent_organ = "chest"
- organ_tag = "liver"
icon = 'icons/mob/alien.dmi'
icon_state = "claw"
- slot = "liver"
alcohol_intensity = 0.5
species = "Diona"
diff --git a/code/modules/surgery/organs/subtypes/drask.dm b/code/modules/surgery/organs/subtypes/drask.dm
index b3b260a28a0..6e1e6662d0a 100644
--- a/code/modules/surgery/organs/subtypes/drask.dm
+++ b/code/modules/surgery/organs/subtypes/drask.dm
@@ -9,51 +9,29 @@
/obj/item/organ/internal/heart/drask
name = "drask heart"
icon = 'icons/obj/surgery_drask.dmi'
- icon_state = "heart-on"
- dead_icon = "heart-off"
- organ_tag = "heart"
parent_organ = "head"
- slot = "heart"
species = "Drask"
/obj/item/organ/internal/lungs/drask
- name = "lungs"
icon = 'icons/obj/surgery_drask.dmi'
- icon_state = "lungs"
- gender = PLURAL
- organ_tag = "lungs"
- parent_organ = "chest"
- slot = "lungs"
species = "Drask"
/obj/item/organ/internal/liver/drask
name = "metabolic strainer"
icon = 'icons/obj/surgery_drask.dmi'
- icon_state = "kidneys"
- gender = PLURAL
- organ_tag = "kidneys"
- parent_organ = "groin"
- slot = "kidneys"
alcohol_intensity = 0.8
species = "Drask"
/obj/item/organ/internal/brain/drask
- name = "brain"
icon = 'icons/obj/surgery_drask.dmi'
icon_state = "brain2"
- organ_tag = "brain"
- slot = "brain"
mmi_icon = 'icons/obj/surgery_drask.dmi'
mmi_icon_state = "mmi_full"
species = "Drask"
/obj/item/organ/internal/eyes/drask
- name = "eyes"
+ name = "drask eyeballs"
icon = 'icons/obj/surgery_drask.dmi'
- icon_state = "eyes"
- gender = PLURAL
- organ_tag = "eyes"
- parent_organ = "head"
- slot = "eyes"
desc = "Drask eyes. They look even stranger disembodied"
+ dark_view = 5
species = "Drask"
diff --git a/code/modules/surgery/organs/subtypes/grey.dm b/code/modules/surgery/organs/subtypes/grey.dm
index a47ab801d6f..6c06da373b7 100644
--- a/code/modules/surgery/organs/subtypes/grey.dm
+++ b/code/modules/surgery/organs/subtypes/grey.dm
@@ -14,3 +14,8 @@
/obj/item/organ/internal/brain/grey/remove(var/mob/living/carbon/M, var/special = 0)
. = ..()
M.remove_language("Psionic Communication")
+
+/obj/item/organ/internal/eyes/grey
+ name = "grey eyeballs"
+ dark_view = 5
+ species = "Grey"
diff --git a/code/modules/surgery/organs/subtypes/machine.dm b/code/modules/surgery/organs/subtypes/machine.dm
index 0f402a42e5d..b3bb3f61e07 100644
--- a/code/modules/surgery/organs/subtypes/machine.dm
+++ b/code/modules/surgery/organs/subtypes/machine.dm
@@ -117,37 +117,26 @@
robotize()
..()
-/obj/item/organ/internal/optical_sensor
+/obj/item/organ/internal/eyes/optical_sensor
name = "optical sensor"
- organ_tag = "eyes"
- parent_organ = "head"
icon = 'icons/obj/robot_component.dmi'
icon_state = "camera"
- slot = "eyes"
status = ORGAN_ROBOT
species = "Machine"
// dead_icon = "camera_broken"
+ weld_proof = 1
-/obj/item/organ/internal/optical_sensor/New()
+/obj/item/organ/internal/eyes/optical_sensor/New()
robotize()
..()
-/obj/item/organ/internal/optical_sensor/remove(var/mob/living/user,special = 0)
+/obj/item/organ/internal/eyes/optical_sensor/remove(var/mob/living/user,special = 0)
if(!special)
to_chat(owner, "Error 404:Optical Sensors not found.")
. = ..()
-/obj/item/organ/internal/optical_sensor/surgeryize()
- if(!owner)
- return
- owner.CureNearsighted()
- owner.CureBlind()
- owner.SetEyeBlurry(0)
- owner.SetEyeBlind(0)
-
-
// Used for an MMI or posibrain being installed into a human.
/obj/item/organ/internal/brain/mmi_holder
name = "brain"
@@ -160,7 +149,6 @@
species = "Machine"
var/obj/item/device/mmi/stored_mmi
-
/obj/item/organ/internal/brain/mmi_holder/Destroy()
if(stored_mmi)
qdel(stored_mmi)
diff --git a/code/modules/surgery/organs/subtypes/nucleation.dm b/code/modules/surgery/organs/subtypes/nucleation.dm
index d234b666ae3..4223834501d 100644
--- a/code/modules/surgery/organs/subtypes/nucleation.dm
+++ b/code/modules/surgery/organs/subtypes/nucleation.dm
@@ -26,8 +26,6 @@
icon_state = "crystal-eyes"
organ_tag = "luminescent eyes"
light_color = "#1C1C00"
- parent_organ = "head"
- slot = "eyes"
species = "Nucleation"
/obj/item/organ/internal/eyes/luminescent_crystal/New()
@@ -35,8 +33,7 @@
..()
/obj/item/organ/internal/brain/crystal
- name = "crystalized brain"
+ name = "crystallized brain"
icon_state = "crystal-brain"
- organ_tag = "crystalized brain"
- slot = "brain"
+ organ_tag = "crystallized brain"
species = "Nucleation"
diff --git a/code/modules/surgery/organs/subtypes/shadow.dm b/code/modules/surgery/organs/subtypes/shadow.dm
new file mode 100644
index 00000000000..f81fc54bfb1
--- /dev/null
+++ b/code/modules/surgery/organs/subtypes/shadow.dm
@@ -0,0 +1,4 @@
+/obj/item/organ/internal/eyes/shadow
+ name = "dark orbs"
+ dark_view = 8
+ species = "Shadow"
diff --git a/code/modules/surgery/organs/subtypes/tajaran.dm b/code/modules/surgery/organs/subtypes/tajaran.dm
index e37686a05ca..746abd6e601 100644
--- a/code/modules/surgery/organs/subtypes/tajaran.dm
+++ b/code/modules/surgery/organs/subtypes/tajaran.dm
@@ -1,3 +1,16 @@
/obj/item/organ/internal/liver/tajaran
alcohol_intensity = 1.4
species = "Tajaran"
+
+/obj/item/organ/internal/eyes/tajaran /*Most Tajara see in full colour as a result of genetic augmentation, although it cost them their darksight (darksight = 2)
+ unless they choose otherwise by selecting the colourblind disability in character creation (darksight = 8 but colourblind).*/
+ name = "tajaran eyeballs"
+ species = "Tajaran"
+ colourblind_matrix = MATRIX_TAJ_CBLIND //The colour matrix and darksight parameters that the mob will recieve when they get the disability.
+ colourblind_darkview = 8
+
+/obj/item/organ/internal/eyes/tajaran/farwa //Being the lesser form of Tajara, Farwas have an utterly incurable version of their colourblindness.
+ name = "farwa eyeballs"
+ species = "Farwa"
+ colourmatrix = MATRIX_TAJ_CBLIND
+ dark_view = 8
diff --git a/code/modules/surgery/organs/subtypes/unathi.dm b/code/modules/surgery/organs/subtypes/unathi.dm
index a769bce7a02..0fb45319ce5 100644
--- a/code/modules/surgery/organs/subtypes/unathi.dm
+++ b/code/modules/surgery/organs/subtypes/unathi.dm
@@ -1,3 +1,8 @@
/obj/item/organ/internal/liver/unathi
alcohol_intensity = 0.8
species = "Unathi"
+
+/obj/item/organ/internal/eyes/unathi
+ name = "unathi eyeballs"
+ dark_view = 3
+ species = "Unathi"
diff --git a/code/modules/surgery/organs/subtypes/vulpkanin.dm b/code/modules/surgery/organs/subtypes/vulpkanin.dm
index ca47ac83ddd..af3d9deab09 100644
--- a/code/modules/surgery/organs/subtypes/vulpkanin.dm
+++ b/code/modules/surgery/organs/subtypes/vulpkanin.dm
@@ -1,3 +1,16 @@
/obj/item/organ/internal/liver/vulpkanin
alcohol_intensity = 1.4
species = "Vulpkanin"
+
+/obj/item/organ/internal/eyes/vulpkanin /*Most Vulpkanin see in full colour as a result of genetic augmentation, although it cost them their darksight (darksight = 2)
+ unless they choose otherwise by selecting the colourblind disability in character creation (darksight = 8 but colourblind).*/
+ name = "vulpkanin eyeballs"
+ species = "Vulpkanin"
+ colourblind_matrix = MATRIX_VULP_CBLIND //The colour matrix and darksight parameters that the mob will recieve when they get the disability.
+ colourblind_darkview = 8
+
+/obj/item/organ/internal/eyes/vulpkanin/wolpin //Being the lesser form of Vulpkanin, Wolpins have an utterly incurable version of their colourblindness.
+ name = "wolpin eyeballs"
+ species = "Wolpin"
+ colourmatrix = MATRIX_VULP_CBLIND
+ dark_view = 8
diff --git a/code/modules/surgery/organs/subtypes/wryn.dm b/code/modules/surgery/organs/subtypes/wryn.dm
index f51adb6054e..ee1a12fd1ab 100644
--- a/code/modules/surgery/organs/subtypes/wryn.dm
+++ b/code/modules/surgery/organs/subtypes/wryn.dm
@@ -7,3 +7,7 @@
parent_organ = "head"
slot = "hivenode"
species = "Wryn"
+
+/obj/item/organ/internal/eyes/wryn
+ dark_view = 3
+ species = "Wryn"
diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm
index f86cf41bcd0..73416045624 100644
--- a/code/modules/surgery/organs_internal.dm
+++ b/code/modules/surgery/organs_internal.dm
@@ -182,7 +182,7 @@
H.custom_pain("The pain in your [affected.name] is living hell!", 1)
else if(istype(tool, /obj/item/weapon/reagent_containers/food/snacks/organ))
- to_chat(user, "[tool] was biten by someone! It's too damaged to use!")
+ to_chat(user, "[tool] was bitten by someone! It's too damaged to use!")
return -1
..()
@@ -244,6 +244,8 @@
thing.forceMove(get_turf(target))
else
user.put_in_hands(thing)
+
+ target.update_icons()
else
user.visible_message("[user] can't seem to extract anything from [target]'s [parse_zone(target_zone)]!",
"You can't extract anything from [target]'s [parse_zone(target_zone)]!")
diff --git a/html/changelog.html b/html/changelog.html
index 551751dc447..93108539e6c 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -55,13 +55,43 @@
-->
+
11 February 2017
+
Markolie updated:
+
+ - Ports over the remaining Lavaland loot items from /tg/ (most developed by KorPhaeron).
+ - Refactors the kinetic accelerator to use modkits instead of subtypes: these unique mods (such as more range or shorter cooldown) can be purchased from the mining vendor or built by R&D or robotics (developed by KorPhaeron).
+
+
10 February 2017
+
Fox McCloud updated:
+
+ - Fixes not being able to bloodcrawl in most sources of blood
+ - Fixes slaughter demon whisper not working at all
+ - Drying rack drying now properly uses NanoUI instead of a right-click verb
+ - Fixes produce appearing stuck in a drying rack when it was empty
+ - Fixes a few failed icon updates with the drying rack
+
+
KasparoVy, Krausus updated:
+
+ - Adds the colourblindness gene. It is eye-dependent, and can be transferred from person-to-person with the eye organ.
+ - Colourblindness can be detected by the advanced medical scanner just like blindness and short-sightedness.
+ - Vulpkanin and Tajara can now choose to be uniquely colourblind in exchange for fantastic darksight. The default option is colour vision but low darksight.
+ - Selecting mechanical or mechanically assisted eyes at character creation grants full colour vision, but standard Human darksight. This overrides the colour vision preference.
+ - Mechanical(ly assisted) internal organs such as hearts and eyes are now appropriately named, and have appropriate sprites.
+ - Vulpkanin and Tajara monkey-forms (Wolpins and Farwas) are incurably colourblind but have excellent darksight as they get nearly the same organs as their greater forms.
+ - Increases reliability of turning into a monkey.
+ - Fixes a bug with changelings lesser-forming, transforming and humanforming into a different identity.
+
Markolie updated:
- Firelocks can now be constructed and deconstructed.
- Firelocks no longer show a confirmation message when being opened.
- Various map fixes (vents, scrubbers, firelocks and intercoms). Also removes the firelocks covering the windows in escape/cargo.
+
tigercat2000 updated:
+
+ - Ported Goonstation slash /vg/ lighting. Pretty.
+
uraniummeltdown updated:
- Quantum Pads are now buildable in R&D!
@@ -69,6 +99,8 @@
- Pads do not need to be linked in pairs: Pad A can lead to Pad B which can lead to pad C.
- Upgrading a Quantum Pad will reduce the cooldown, charge-up time, and power consumption.
- Quantum Pads require a bluespace crystal, a micro manipulator, a capacitor and a cable piece.
+ - Events now scale better with population.
+ - Enabled immovable rod, slaughter demon and morph events.
08 February 2017
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index 6c2ea070652..b27e7bece5a 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -3582,11 +3582,37 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
Fox McCloud:
- bugfix: Grinding wheat and other products produces the proper reagents again
2017-02-10:
+ Fox McCloud:
+ - bugfix: Fixes not being able to bloodcrawl in most sources of blood
+ - bugfix: Fixes slaughter demon whisper not working at all
+ - tweak: Drying rack drying now properly uses NanoUI instead of a right-click verb
+ - bugfix: Fixes produce appearing stuck in a drying rack when it was empty
+ - bugfix: Fixes a few failed icon updates with the drying rack
+ KasparoVy, Krausus:
+ - rscadd: Adds the colourblindness gene. It is eye-dependent, and can be transferred
+ from person-to-person with the eye organ.
+ - rscadd: Colourblindness can be detected by the advanced medical scanner just like
+ blindness and short-sightedness.
+ - rscadd: Vulpkanin and Tajara can now choose to be uniquely colourblind in exchange
+ for fantastic darksight. The default option is colour vision but low darksight.
+ - rscadd: Selecting mechanical or mechanically assisted eyes at character creation
+ grants full colour vision, but standard Human darksight. This overrides the
+ colour vision preference.
+ - rscadd: Mechanical(ly assisted) internal organs such as hearts and eyes are now
+ appropriately named, and have appropriate sprites.
+ - tweak: Vulpkanin and Tajara monkey-forms (Wolpins and Farwas) are incurably colourblind
+ but have excellent darksight as they get nearly the same organs as their greater
+ forms.
+ - bugfix: Increases reliability of turning into a monkey.
+ - bugfix: Fixes a bug with changelings lesser-forming, transforming and humanforming
+ into a different identity.
Markolie:
- rscadd: Firelocks can now be constructed and deconstructed.
- tweak: Firelocks no longer show a confirmation message when being opened.
- tweak: Various map fixes (vents, scrubbers, firelocks and intercoms). Also removes
the firelocks covering the windows in escape/cargo.
+ tigercat2000:
+ - rscadd: Ported Goonstation slash /vg/ lighting. Pretty.
uraniummeltdown:
- rscadd: Quantum Pads are now buildable in R&D!
- rscadd: Quantum Pads, once built, can be linked to other Quantum Pads using a
@@ -3598,3 +3624,12 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
power consumption.
- rscadd: Quantum Pads require a bluespace crystal, a micro manipulator, a capacitor
and a cable piece.
+ - tweak: Events now scale better with population.
+ - tweak: Enabled immovable rod, slaughter demon and morph events.
+2017-02-11:
+ Markolie:
+ - rscadd: Ports over the remaining Lavaland loot items from /tg/ (most developed
+ by KorPhaeron).
+ - rscadd: 'Refactors the kinetic accelerator to use modkits instead of subtypes:
+ these unique mods (such as more range or shorter cooldown) can be purchased
+ from the mining vendor or built by R&D or robotics (developed by KorPhaeron).'
diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi
index 01729aa70af..9111297a266 100644
Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ
diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi
index b20f8abf0b8..67da41362f8 100644
Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index 93a175f3efc..a7962c37ec1 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ
diff --git a/icons/effects/lighting_overlay.dmi b/icons/effects/lighting_overlay.dmi
deleted file mode 100644
index a5bee534b3d..00000000000
Binary files a/icons/effects/lighting_overlay.dmi and /dev/null differ
diff --git a/icons/effects/lighting_overlay.png b/icons/effects/lighting_overlay.png
new file mode 100644
index 00000000000..b317268b702
Binary files /dev/null and b/icons/effects/lighting_overlay.png differ
diff --git a/icons/mob/clothing/paranormal_hardsuit.dmi b/icons/mob/clothing/paranormal_hardsuit.dmi
new file mode 100644
index 00000000000..f06e81ab1e7
Binary files /dev/null and b/icons/mob/clothing/paranormal_hardsuit.dmi differ
diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi
index f74ebda9d34..97966c61dac 100644
Binary files a/icons/mob/eyes.dmi and b/icons/mob/eyes.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index e6b8d4ca621..d56a42ca099 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi
index 938d810a612..fd2947d7d69 100644
Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 24585cbdccc..f12fcf3d86c 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index a72971f450d..b98c786872a 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/crates.dmi b/icons/obj/crates.dmi
new file mode 100644
index 00000000000..9ec95b4f300
Binary files /dev/null and b/icons/obj/crates.dmi differ
diff --git a/icons/obj/guns/magic.dmi b/icons/obj/guns/magic.dmi
index 05c8aa7794f..b057d644918 100644
Binary files a/icons/obj/guns/magic.dmi and b/icons/obj/guns/magic.dmi differ
diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi
index b0a35a3f35b..06afc67979c 100644
Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ
diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi
index 53d3954ec06..c02603ecd25 100644
Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ
diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi
index bd45f38cd00..6c3fdcf2bee 100644
Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ
diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi
index a5638d1db1b..2f055a0c491 100644
Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ
diff --git a/icons/obj/vehicles.dmi b/icons/obj/vehicles.dmi
index 63515f5b2e5..2f528c44c77 100644
Binary files a/icons/obj/vehicles.dmi and b/icons/obj/vehicles.dmi differ
diff --git a/nano/templates/adv_med.tmpl b/nano/templates/adv_med.tmpl
index 51b74a12fda..e88db47456a 100644
--- a/nano/templates/adv_med.tmpl
+++ b/nano/templates/adv_med.tmpl
@@ -52,10 +52,13 @@ Used In File(s): \code\game\machinery\adv_med.dm
Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended.
{{/if}}
{{if data.occupant.blind}}
-
Pupils unresponsive.
+
Cataracts detected.
+ {{/if}}
+ {{if data.occupant.colourblind}}
+
Photoreceptor abnormalities detected.
{{/if}}
{{if data.occupant.nearsighted}}
-
Retinal misalignment detected
+
Retinal misalignment detected.
{{/if}}
diff --git a/nano/templates/smartfridge.tmpl b/nano/templates/smartfridge.tmpl
index 873487454dc..3c59892486d 100644
--- a/nano/templates/smartfridge.tmpl
+++ b/nano/templates/smartfridge.tmpl
@@ -10,6 +10,16 @@
{{/if}}
+
+ {{if data.can_dry}}
+
+ Drying:
+
+
+ {{:helper.link('On', 'power-off', {'dryingOn' : 1}, data.drying ? 'selected' : null)}}{{:helper.link('Off', 'close', {'dryingOff' : 1}, data.drying ? null : 'selected')}}
+
+ {{/if}}
+
{{if data.contents}}
{{for data.contents}}
diff --git a/paradise.dme b/paradise.dme
index 15d3c08f39d..4f8a12f79f9 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -29,8 +29,10 @@
#include "code\__DEFINES\genetics.dm"
#include "code\__DEFINES\hud.dm"
#include "code\__DEFINES\hydroponics.dm"
+#include "code\__DEFINES\inventory.dm"
#include "code\__DEFINES\is_helpers.dm"
#include "code\__DEFINES\language.dm"
+#include "code\__DEFINES\layers.dm"
#include "code\__DEFINES\lighting.dm"
#include "code\__DEFINES\machines.dm"
#include "code\__DEFINES\math.dm"
@@ -40,6 +42,7 @@
#include "code\__DEFINES\preferences.dm"
#include "code\__DEFINES\process_scheduler.dm"
#include "code\__DEFINES\qdel.dm"
+#include "code\__DEFINES\reagents.dm"
#include "code\__DEFINES\role_preferences.dm"
#include "code\__DEFINES\rolebans.dm"
#include "code\__DEFINES\sight.dm"
@@ -87,7 +90,6 @@
#include "code\_globalvars\lists\names.dm"
#include "code\_globalvars\lists\objects.dm"
#include "code\_globalvars\lists\reagents.dm"
-#include "code\_onclick\_defines.dm"
#include "code\_onclick\adjacent.dm"
#include "code\_onclick\ai.dm"
#include "code\_onclick\click.dm"
@@ -398,7 +400,6 @@
#include "code\game\gamemodes\changeling\powers\hivemind.dm"
#include "code\game\gamemodes\changeling\powers\humanform.dm"
#include "code\game\gamemodes\changeling\powers\lesserform.dm"
-#include "code\game\gamemodes\changeling\powers\linglink.dm"
#include "code\game\gamemodes\changeling\powers\mimic_voice.dm"
#include "code\game\gamemodes\changeling\powers\mutations.dm"
#include "code\game\gamemodes\changeling\powers\panacea.dm"
@@ -1416,12 +1417,14 @@
#include "code\modules\library\computers\checkout.dm"
#include "code\modules\library\computers\public.dm"
#include "code\modules\lighting\__lighting_docs.dm"
-#include "code\modules\lighting\light_source.dm"
+#include "code\modules\lighting\lighting_area.dm"
#include "code\modules\lighting\lighting_atom.dm"
+#include "code\modules\lighting\lighting_corner.dm"
#include "code\modules\lighting\lighting_overlay.dm"
-#include "code\modules\lighting\lighting_process.dm"
-#include "code\modules\lighting\lighting_system.dm"
+#include "code\modules\lighting\lighting_setup.dm"
+#include "code\modules\lighting\lighting_source.dm"
#include "code\modules\lighting\lighting_turf.dm"
+#include "code\modules\lighting\~lighting_undefs.dm"
#include "code\modules\logic\converter.dm"
#include "code\modules\logic\dual_input.dm"
#include "code\modules\logic\logic_base.dm"
@@ -1453,8 +1456,13 @@
#include "code\modules\mining\laborcamp\laborshuttle.dm"
#include "code\modules\mining\laborcamp\laborstacker.dm"
#include "code\modules\mining\lavaland\ash_flora.dm"
-#include "code\modules\mining\lavaland\colossus_loot.dm"
#include "code\modules\mining\lavaland\necropolis_chests.dm"
+#include "code\modules\mining\lavaland\loot\ashdragon_loot.dm"
+#include "code\modules\mining\lavaland\loot\bubblegum_loot.dm"
+#include "code\modules\mining\lavaland\loot\colossus_loot.dm"
+#include "code\modules\mining\lavaland\loot\hierophant_loot.dm"
+#include "code\modules\mining\lavaland\loot\legion_loot.dm"
+#include "code\modules\mining\lavaland\loot\tendril_loot.dm"
#include "code\modules\mob\abilities.dm"
#include "code\modules\mob\death.dm"
#include "code\modules\mob\emote.dm"
@@ -1858,6 +1866,7 @@
#include "code\modules\projectiles\guns\rocket.dm"
#include "code\modules\projectiles\guns\syringe_gun.dm"
#include "code\modules\projectiles\guns\throw.dm"
+#include "code\modules\projectiles\guns\energy\kinetic_accelerator.dm"
#include "code\modules\projectiles\guns\energy\laser.dm"
#include "code\modules\projectiles\guns\energy\nuclear.dm"
#include "code\modules\projectiles\guns\energy\pulse.dm"
@@ -2094,6 +2103,7 @@
#include "code\modules\surgery\organs\skeleton.dm"
#include "code\modules\surgery\organs\vocal_cords.dm"
#include "code\modules\surgery\organs\wound.dm"
+#include "code\modules\surgery\organs\subtypes\abductor.dm"
#include "code\modules\surgery\organs\subtypes\diona.dm"
#include "code\modules\surgery\organs\subtypes\drask.dm"
#include "code\modules\surgery\organs\subtypes\grey.dm"
@@ -2101,6 +2111,7 @@
#include "code\modules\surgery\organs\subtypes\machine.dm"
#include "code\modules\surgery\organs\subtypes\misc.dm"
#include "code\modules\surgery\organs\subtypes\nucleation.dm"
+#include "code\modules\surgery\organs\subtypes\shadow.dm"
#include "code\modules\surgery\organs\subtypes\skrell.dm"
#include "code\modules\surgery\organs\subtypes\standard.dm"
#include "code\modules\surgery\organs\subtypes\tajaran.dm"