mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-26 13:39:16 +01:00
Merge branch 'master' of git://github.com/Baystation12/Baystation12
This commit is contained in:
@@ -931,6 +931,7 @@
|
||||
#include "code\modules\mob\organ\organ.dm"
|
||||
#include "code\modules\mob\organ\organ_external.dm"
|
||||
#include "code\modules\mob\organ\organ_internal.dm"
|
||||
#include "code\modules\mob\organ\pain.dm"
|
||||
#include "code\modules\power\apc.dm"
|
||||
#include "code\modules\power\cable.dm"
|
||||
#include "code\modules\power\cell.dm"
|
||||
|
||||
@@ -52,7 +52,8 @@
|
||||
set background = 1
|
||||
|
||||
var/list/organs = GetAllContents()
|
||||
for(var/obj/organ/organ in organs)
|
||||
for(var/name in organs)
|
||||
var/obj/organ/organ = organs[name]
|
||||
organ.ProcessOrgan()
|
||||
|
||||
return
|
||||
|
||||
@@ -336,12 +336,6 @@ proc/airborne_can_reach(turf/source, turf/target)
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.toxloss += (2*multiplier)
|
||||
|
||||
/datum/disease2/effect/greater/scream
|
||||
name = "Random screaming syndrome"
|
||||
stage = 3
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.say("*scream")
|
||||
|
||||
/datum/disease2/effect/greater/drowsness
|
||||
name = "Automated sleeping syndrome"
|
||||
stage = 3
|
||||
|
||||
@@ -1139,7 +1139,7 @@
|
||||
bitesize = 1+round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris
|
||||
seed = "/obj/item/seeds/ambrosiavulgaris"
|
||||
seed = "/obj/item/seeds/ambrosiavulgarisseed"
|
||||
name = "Ambrosia Vulgaris"
|
||||
desc = "A plant containing various healing chemicals."
|
||||
icon_state = "ambrosiavulgaris"
|
||||
|
||||
@@ -31,6 +31,18 @@
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Empty Box crate"
|
||||
|
||||
/datum/supply_packs/body_bags
|
||||
name = "Body Bag supplies"
|
||||
contains = list(
|
||||
"/obj/item/weapon/bodybag",
|
||||
"/obj/item/weapon/bodybag",
|
||||
"/obj/item/weapon/bodybag",
|
||||
"/obj/item/weapon/bodybag",
|
||||
)
|
||||
cost = 10
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Body Bag crate"
|
||||
|
||||
/datum/supply_packs/stationary
|
||||
name = "Stationary supplies"
|
||||
contains = list("/obj/item/device/taperecorder",
|
||||
@@ -54,7 +66,6 @@
|
||||
/datum/supply_packs/artscrafts
|
||||
name = "Arts and Crafts supplies"
|
||||
contains = list("/obj/item/toy/crayonbox",
|
||||
"/obj/item/weapon/c_tube",
|
||||
"/obj/item/weapon/camera_test",
|
||||
"/obj/item/weapon/storage/photo_album",
|
||||
"/obj/item/weapon/packageWrap",
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
throwforce = 10
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/head/culthood
|
||||
name = "cult hood"
|
||||
icon_state = "culthood"
|
||||
|
||||
@@ -281,7 +281,8 @@ var/list/sacrificed = list()
|
||||
corpse_to_raise.mind.key = ghost.key
|
||||
corpse_to_raise.key = ghost.key
|
||||
del(ghost)
|
||||
for(var/datum/organ/external/affecting in corpse_to_raise.organs)
|
||||
for(var/name in corpse_to_raise.organs)
|
||||
var/datum/organ/external/affecting = corpse_to_raise.organs[name]
|
||||
affecting.heal_damage(1000, 1000)
|
||||
corpse_to_raise.setToxLoss(0)
|
||||
corpse_to_raise.setOxyLoss(0)
|
||||
|
||||
@@ -127,9 +127,29 @@
|
||||
user.next_move = world.time + 2
|
||||
|
||||
if (user.hand)
|
||||
user.l_hand = src
|
||||
if(ishuman(user))
|
||||
var/datum/organ/external/temp = user:organs["l_hand"]
|
||||
if(!temp.destroyed)
|
||||
user.l_hand = src
|
||||
else
|
||||
user << "\blue You pick \the [src] up with your ha- wait a minute."
|
||||
if(loc == user)
|
||||
user.drop_from_slot(src)
|
||||
return
|
||||
else
|
||||
user.l_hand = src
|
||||
else
|
||||
user.r_hand = src
|
||||
if(ishuman(user))
|
||||
var/datum/organ/external/temp = user:organs["r_hand"]
|
||||
if(!temp.destroyed)
|
||||
user.r_hand = src
|
||||
else
|
||||
user << "\blue You pick \the [src] up with your ha- wait a minute."
|
||||
if(loc == user)
|
||||
user.drop_from_slot(src)
|
||||
return
|
||||
else
|
||||
user.r_hand = src
|
||||
src.loc = user
|
||||
src.layer = 20
|
||||
add_fingerprint(user)
|
||||
|
||||
@@ -15,7 +15,7 @@ MEDICAL
|
||||
t_him = "her"
|
||||
user << "\red \The [M] is dead, you cannot help [t_him]!"
|
||||
return
|
||||
if (M.health < 50)
|
||||
if (M.health < 0)
|
||||
var/t_him = "it"
|
||||
if (M.gender == MALE)
|
||||
t_him = "him"
|
||||
@@ -66,6 +66,30 @@ MEDICAL
|
||||
|
||||
if (affecting.heal_damage(src.heal_brute, src.heal_burn))
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
if(H.bloodloss > 0 && heal_brute > 0) // fix wounds too if bruise pack
|
||||
var/stoped = 0
|
||||
for(var/datum/organ/external/wound/W in affecting.wounds)
|
||||
if(W.bleeding)
|
||||
W.stopbleeding()
|
||||
stoped = 0
|
||||
break
|
||||
if(!stoped)
|
||||
// user << "There is no bleeding wound at [t]" //code no longer in a dedicated obj, thus this doesn't really matter
|
||||
return
|
||||
if (user)
|
||||
if (M != user)
|
||||
for (var/mob/O in viewers(H, null))
|
||||
O.show_message("\red [H] has been bandaged with [src] by [user]", 1)
|
||||
else
|
||||
var/t_himself = "itself"
|
||||
if (user.gender == MALE)
|
||||
t_himself = "himself"
|
||||
else if (user.gender == FEMALE)
|
||||
t_himself = "herself"
|
||||
for (var/mob/O in viewers(H, null))
|
||||
O.show_message("\red [H] bandaged [t_himself] with [src]", 1)
|
||||
|
||||
M.updatehealth()
|
||||
else
|
||||
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
|
||||
|
||||
@@ -83,12 +83,12 @@ CIRCULAR SAW
|
||||
if(1.0)
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] is having his eyes retracted by [user].", 1)
|
||||
O.show_message("\red [M] is having \his eyes retracted by [user].", 1)
|
||||
M << "\red [user] begins to seperate your eyes with [src]!"
|
||||
user << "\red You seperate [M]'s eyes with [src]!"
|
||||
else
|
||||
user.visible_message( \
|
||||
"\red [user] begins to have his eyes retracted.", \
|
||||
"\red [user] begins to have \his eyes retracted.", \
|
||||
"\red You begin to pry open your eyes with [src]!" \
|
||||
)
|
||||
if(M == user && prob(25))
|
||||
@@ -102,10 +102,56 @@ CIRCULAR SAW
|
||||
|
||||
M:eye_op_stage = 2.0
|
||||
|
||||
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
|
||||
return ..()
|
||||
else
|
||||
// bone surgery doable?
|
||||
if(!try_bone_surgery(M, user))
|
||||
return ..()
|
||||
|
||||
return
|
||||
/obj/item/weapon/retractor/proc/try_bone_surgery(mob/living/carbon/human/H as mob, mob/living/user as mob)
|
||||
if(!istype(H))
|
||||
return 0
|
||||
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
|
||||
if(!S || !istype(S))
|
||||
return 0
|
||||
|
||||
if(S.destroyed)
|
||||
user << "What [S.display_name]?"
|
||||
if(!S.open)
|
||||
user << "\red There is skin in the way!"
|
||||
return 0
|
||||
if(S.bleeding)
|
||||
user << "\red [H] is profusely bleeding in \his [S.display_name]!"
|
||||
return 0
|
||||
|
||||
if(H != user)
|
||||
H.visible_message( \
|
||||
"\red [user] is beginning to retract the flap in the wound in [H]'s [S.display_name] with [src].", \
|
||||
"\red [user] begins to retract the flap in the wound in your [S.display_name] with [src]!")
|
||||
else
|
||||
H.visible_message( \
|
||||
"\red [user] begins to retract the flap in the wound in \his [S.display_name] with [src]!", \
|
||||
"\red You begin to retract the flap in the wound in your [S.display_name] with [src]!")
|
||||
|
||||
if(do_mob(user, H, 30))
|
||||
if(H != user)
|
||||
H.visible_message( \
|
||||
"\red [user] retracts the flap in the wound in [H]'s [S.display_name] with [src]!", \
|
||||
"\red [user] retracts the flap in the wound in your [S.display_name] with [src]!")
|
||||
else
|
||||
H.visible_message( \
|
||||
"\red [user] retracts the flap in the wound in \his [S.display_name] with [src]!", \
|
||||
"\red You retract the flap in the wound in your [S.display_name] with [src]!")
|
||||
|
||||
if(H == user && prob(25))
|
||||
user << "\red You mess up!"
|
||||
S.take_damage(15)
|
||||
|
||||
S.open = 2
|
||||
|
||||
H.updatehealth()
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
return 1
|
||||
|
||||
////////////
|
||||
//Hemostat//
|
||||
@@ -189,12 +235,12 @@ CIRCULAR SAW
|
||||
if(2.0)
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] is having his eyes mended by [user].", 1)
|
||||
O.show_message("\red [M] is having \his eyes mended by [user].", 1)
|
||||
M << "\red [user] begins to mend your eyes with [src]!"
|
||||
user << "\red You mend [M]'s eyes with [src]!"
|
||||
else
|
||||
user.visible_message( \
|
||||
"\red [user] begins to have his eyes mended.", \
|
||||
"\red [user] begins to have \his eyes mended.", \
|
||||
"\red You begin to mend your eyes with [src]!" \
|
||||
)
|
||||
if(M == user && prob(25))
|
||||
@@ -206,11 +252,68 @@ CIRCULAR SAW
|
||||
else
|
||||
M.take_organ_damage(15)
|
||||
M:eye_op_stage = 3.0
|
||||
else if(user.zone_sel.selecting == "head")
|
||||
if(istype(M, /mob/living/carbon/human) && M:brain_op_stage == 1)
|
||||
M:brain_op_stage = 0
|
||||
var/datum/organ/external/S = M:organs["head"]
|
||||
if(!S || !istype(S))
|
||||
return ..()
|
||||
M:brain_op_stage = 0
|
||||
S.open = 1
|
||||
if(!try_bone_surgery(M, user))
|
||||
return ..()
|
||||
else
|
||||
return ..()
|
||||
else
|
||||
// bone surgery doable?
|
||||
if(!try_bone_surgery(M, user))
|
||||
return ..()
|
||||
|
||||
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
|
||||
return ..()
|
||||
/obj/item/weapon/hemostat/proc/try_bone_surgery(mob/living/carbon/human/H as mob, mob/living/user as mob)
|
||||
if(!istype(H))
|
||||
return 0
|
||||
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
|
||||
if(!S || !istype(S))
|
||||
return 0
|
||||
|
||||
return
|
||||
if(S.destroyed)
|
||||
user << "What [S.display_name]?"
|
||||
if(!S.open)
|
||||
user << "\red There is skin in the way!"
|
||||
return 0
|
||||
if(!S.bleeding)
|
||||
user << "\red [H] is not bleeding in \his [S.display_name]!"
|
||||
return 0
|
||||
|
||||
if(H != user)
|
||||
H.visible_message( \
|
||||
"\red [user] is beginning to clamp bleeders in the wound in [H]'s [S.display_name] with [src].", \
|
||||
"\red [user] begins to clamp bleeders in the wound in your [S.display_name] with [src]!")
|
||||
else
|
||||
H.visible_message( \
|
||||
"\red [user] begins to clamp bleeders in the wound in \his [S.display_name] with [src]!", \
|
||||
"\red You begin to clamp bleeders in the wound in your [S.display_name] with [src]!")
|
||||
|
||||
if(do_mob(user, H, 50))
|
||||
if(H != user)
|
||||
H.visible_message( \
|
||||
"\red [user] clamps bleeders in the wound in [H]'s [S.display_name] with [src]!", \
|
||||
"\red [user] clamps bleeders in the wound in your [S.display_name] with [src]!")
|
||||
else
|
||||
H.visible_message( \
|
||||
"\red [user] clamps bleeders in the wound in \his [S.display_name] with [src]!", \
|
||||
"\red You clamp bleeders in the wound in your [S.display_name] with [src]!")
|
||||
|
||||
if(H == user && prob(25))
|
||||
user << "\red You mess up!"
|
||||
S.take_damage(15)
|
||||
|
||||
S.bleeding = 0
|
||||
|
||||
H.updatehealth()
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
return 1
|
||||
|
||||
///////////
|
||||
//Cautery//
|
||||
@@ -233,6 +336,8 @@ CIRCULAR SAW
|
||||
user << "\red You cauterize the incision in [M]'s torso with [src]!"
|
||||
M:embryo_op_stage = 0.0
|
||||
return
|
||||
else
|
||||
try_bone_surgery(M, user)
|
||||
|
||||
if(user.zone_sel.selecting == "groin")
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
@@ -247,6 +352,8 @@ CIRCULAR SAW
|
||||
for(var/datum/disease/appendicitis in M.viruses)
|
||||
appendicitis.cure()
|
||||
M.resistances += appendicitis
|
||||
else
|
||||
try_bone_surgery(M, user)
|
||||
return
|
||||
|
||||
if (user.zone_sel.selecting == "eyes")
|
||||
@@ -275,12 +382,12 @@ CIRCULAR SAW
|
||||
if(3.0)
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] is having his eyes cauterized by [user].", 1)
|
||||
O.show_message("\red [M] is having \his eyes cauterized by [user].", 1)
|
||||
M << "\red [user] begins to cauterize your eyes!"
|
||||
user << "\red You cauterize [M]'s eyes with [src]!"
|
||||
else
|
||||
user.visible_message( \
|
||||
"\red [user] begins to have his eyes cauterized.", \
|
||||
"\red [user] begins to have \his eyes cauterized.", \
|
||||
"\red You begin to cauterize your eyes!" \
|
||||
)
|
||||
if(M == user && prob(25))
|
||||
@@ -294,11 +401,53 @@ CIRCULAR SAW
|
||||
M.sdisabilities &= ~1
|
||||
M:eye_op_stage = 0.0
|
||||
|
||||
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
|
||||
return ..()
|
||||
else
|
||||
// bone surgery doable?
|
||||
if(!try_bone_surgery(M, user))
|
||||
return ..()
|
||||
|
||||
return
|
||||
/obj/item/weapon/cautery/proc/try_bone_surgery(mob/living/carbon/human/H as mob, mob/living/user as mob)
|
||||
if(!istype(H))
|
||||
return 0
|
||||
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
|
||||
if(!S || !istype(S))
|
||||
return 0
|
||||
|
||||
if(S.destroyed)
|
||||
user << "What [S.display_name]?"
|
||||
if(!S.open)
|
||||
user << "\red There is no wound to close up!"
|
||||
return 0
|
||||
|
||||
if(H != user)
|
||||
H.visible_message( \
|
||||
"\red [user] is beginning to cauterize the incision in [H]'s [S.display_name] with [src].", \
|
||||
"\red [user] begins to cut open the wound in your [S.display_name] with [src]!")
|
||||
else
|
||||
H.visible_message( \
|
||||
"\red [user] begins to cauterize the incision in \his [S.display_name] with [src]!", \
|
||||
"\red You begin to cauterize the incision in your [S.display_name] with [src]!")
|
||||
|
||||
if(do_mob(user, H, 100))
|
||||
if(H != user)
|
||||
H.visible_message( \
|
||||
"\red [user] cauterizes the incision in [H]'s [S.display_name] with [src]!", \
|
||||
"\red [user] cauterizes the incision in your [S.display_name] with [src]!")
|
||||
else
|
||||
H.visible_message( \
|
||||
"\red [user] cauterizes the incision in \his [S.display_name] with [src]!", \
|
||||
"\red You cauterize the incision in your [S.display_name] with [src]!")
|
||||
|
||||
if(H == user && prob(25))
|
||||
user << "\red You mess up!"
|
||||
S.take_damage(15)
|
||||
|
||||
S.open = 0
|
||||
|
||||
H.updatehealth()
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
return 1
|
||||
|
||||
//obj/item/weapon/surgicaldrill
|
||||
|
||||
@@ -327,7 +476,7 @@ CIRCULAR SAW
|
||||
if(0.0)
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] is beginning to have his torso cut open with [src] by [user].", 1)
|
||||
O.show_message("\red [M] is beginning to have \his torso cut open with [src] by [user].", 1)
|
||||
M << "\red [user] begins to cut open your torso with [src]!"
|
||||
user << "\red You cut [M]'s torso open with [src]!"
|
||||
M:embryo_op_stage = 1.0
|
||||
@@ -335,7 +484,7 @@ CIRCULAR SAW
|
||||
if(3.0)
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] is beginning to have his stomach cut open with [src] by [user].", 1)
|
||||
O.show_message("\red [M] is beginning to have \his stomach cut open with [src] by [user].", 1)
|
||||
M << "\red [user] begins to cut open your stomach with [src]!"
|
||||
user << "\red You cut [M]'s stomach open with [src]!"
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
@@ -352,14 +501,14 @@ CIRCULAR SAW
|
||||
if(0.0)
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] is beginning to have his abdomen cut open with [src] by [user].", 1)
|
||||
O.show_message("\red [M] is beginning to have \his abdomen cut open with [src] by [user].", 1)
|
||||
M << "\red [user] begins to cut open your abdomen with [src]!"
|
||||
user << "\red You cut [M]'s abdomen open with [src]!"
|
||||
M:appendix_op_stage = 1.0
|
||||
if(3.0)
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] is beginning to have his appendix seperated with [src] by [user].", 1)
|
||||
O.show_message("\red [M] is beginning to have \his appendix seperated with [src] by [user].", 1)
|
||||
M << "\red [user] begins to seperate your appendix with [src]!"
|
||||
user << "\red You seperate [M]'s appendix with [src]!"
|
||||
M:appendix_op_stage = 4.0
|
||||
@@ -368,6 +517,12 @@ CIRCULAR SAW
|
||||
if(user.zone_sel.selecting == "head" || istype(M, /mob/living/carbon/metroid))
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if(istype(H) && H.organs["head"])
|
||||
var/datum/organ/external/affecting = H.organs["head"]
|
||||
if(affecting.destroyed)
|
||||
return ..()
|
||||
|
||||
if(istype(H) && ( \
|
||||
(H.head && H.head.flags & HEADCOVERSEYES) || \
|
||||
(H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \
|
||||
@@ -397,12 +552,12 @@ CIRCULAR SAW
|
||||
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] is beginning to have his head cut open with [src] by [user].", 1)
|
||||
O.show_message("\red [M] is beginning to have \his head cut open with [src] by [user].", 1)
|
||||
M << "\red [user] begins to cut open your head with [src]!"
|
||||
user << "\red You cut [M]'s head open with [src]!"
|
||||
else
|
||||
user.visible_message( \
|
||||
"\red [user] begins to cut open his skull with [src]!", \
|
||||
"\red [user] begins to cut open \his skull with [src]!", \
|
||||
"\red You begin to cut open your head with [src]!" \
|
||||
)
|
||||
|
||||
@@ -443,12 +598,12 @@ CIRCULAR SAW
|
||||
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] is having his connections to the brain delicately severed with [src] by [user].", 1)
|
||||
O.show_message("\red [M] is having \his connections to the brain delicately severed with [src] by [user].", 1)
|
||||
M << "\red [user] begins to cut open your head with [src]!"
|
||||
user << "\red You cut [M]'s head open with [src]!"
|
||||
else
|
||||
user.visible_message( \
|
||||
"\red [user] begin to delicately remove the connections to his brain with [src]!", \
|
||||
"\red [user] begin to delicately remove the connections to \his brain with [src]!", \
|
||||
"\red You begin to cut open your head with [src]!" \
|
||||
)
|
||||
if(M == user && prob(25))
|
||||
@@ -498,12 +653,12 @@ CIRCULAR SAW
|
||||
if(0.0)
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] is beginning to have his eyes incised with [src] by [user].", 1)
|
||||
O.show_message("\red [M] is beginning to have \his eyes incised with [src] by [user].", 1)
|
||||
M << "\red [user] begins to cut open your eyes with [src]!"
|
||||
user << "\red You make an incision around [M]'s eyes with [src]!"
|
||||
else
|
||||
user.visible_message( \
|
||||
"\red [user] begins to cut around his eyes with [src]!", \
|
||||
"\red [user] begins to cut around \his eyes with [src]!", \
|
||||
"\red You begin to cut open your eyes with [src]!" \
|
||||
)
|
||||
if(M == user && prob(25))
|
||||
@@ -519,13 +674,78 @@ CIRCULAR SAW
|
||||
M:eye_op_stage = 1.0
|
||||
user << "\blue So far so good after."
|
||||
else
|
||||
return ..()
|
||||
// bone surgery doable?
|
||||
if(!try_bone_surgery(M, user))
|
||||
return ..()
|
||||
|
||||
/* wat
|
||||
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
|
||||
return ..()
|
||||
*/
|
||||
return
|
||||
|
||||
/obj/item/weapon/scalpel/proc/try_bone_surgery(mob/living/carbon/human/H as mob, mob/living/user as mob)
|
||||
if(!istype(H))
|
||||
return 0
|
||||
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
|
||||
if(!S || !istype(S))
|
||||
return 0
|
||||
|
||||
if(S.destroyed)
|
||||
user << "What [S.display_name]?"
|
||||
if(S.open)
|
||||
user << "\red The wound is already open!"
|
||||
return 0
|
||||
|
||||
if(H != user)
|
||||
H.visible_message( \
|
||||
"\red [user] is beginning to cut open the wound in [H]'s [S.display_name] with [src].", \
|
||||
"\red [user] begins to cut open the wound in your [S.display_name] with [src]!")
|
||||
else
|
||||
H.visible_message( \
|
||||
"\red [user] begins to cut open the wound in \his [S.display_name] with [src]!", \
|
||||
"\red You begin to cut open the wound in your [S.display_name] with [src]!")
|
||||
|
||||
if(do_mob(user, H, 100))
|
||||
if(H != user)
|
||||
H.visible_message( \
|
||||
"\red [user] cuts open the wound in [H]'s [S.display_name] with [src]!", \
|
||||
"\red [user] cuts open the wound in your [S.display_name] with [src]!")
|
||||
else
|
||||
H.visible_message( \
|
||||
"\red [user] cuts open the wound in \his [S.display_name] with [src]!", \
|
||||
"\red You cut open the wound in your [S.display_name] with [src]!")
|
||||
|
||||
if(H == user && prob(25))
|
||||
user << "\red You mess up!"
|
||||
S.take_damage(15)
|
||||
|
||||
S.open = 1
|
||||
S.bleeding = 1
|
||||
|
||||
H.updatehealth()
|
||||
H.UpdateDamageIcon()
|
||||
else
|
||||
var/a = pick(1,2,3)
|
||||
var/msg
|
||||
if(a == 1)
|
||||
msg = "\red [user]'s move slices open [H]'s wound, causing massive bleeding"
|
||||
S.brute_dam += 35
|
||||
S.createwound(rand(1,3))
|
||||
else if(a == 2)
|
||||
msg = "\red [user]'s move slices open [H]'s wound, and causes \him to accidentally stab himself"
|
||||
S.brute_dam += 35
|
||||
var/datum/organ/external/userorgan = user:organs["chest"]
|
||||
if(userorgan)
|
||||
userorgan.brute_dam += 35
|
||||
else
|
||||
user.take_organ_damage(35)
|
||||
else if(a == 3)
|
||||
msg = "\red [user] quickly stops the surgery"
|
||||
for(var/mob/O in viewers(H))
|
||||
O.show_message(msg, 1)
|
||||
|
||||
return 1
|
||||
|
||||
////////////////
|
||||
//CIRCULAR SAW//
|
||||
@@ -562,17 +782,28 @@ CIRCULAR SAW
|
||||
return
|
||||
|
||||
switch(M:brain_op_stage)
|
||||
if(0)
|
||||
if(!istype(H))
|
||||
return ..()
|
||||
var/datum/organ/external/S = H.organs["head"]
|
||||
if(S.destroyed)
|
||||
return
|
||||
for(var/mob/O in viewers(H, null))
|
||||
O.show_message(text("\red [H] gets \his [S.display_name] sawed off with [src] by [user]."), 1)
|
||||
S.destroyed = 1
|
||||
S.droplimb()
|
||||
H.update_body()
|
||||
if(1.0)
|
||||
if(istype(M, /mob/living/carbon/metroid))
|
||||
return
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] has his skull sawed open with [src] by [user].", 1)
|
||||
O.show_message("\red [M] has \his skull sawed open with [src] by [user].", 1)
|
||||
M << "\red [user] begins to saw open your head with [src]!"
|
||||
user << "\red You saw [M]'s head open with [src]!"
|
||||
else
|
||||
user.visible_message( \
|
||||
"\red [user] saws open his skull with [src]!", \
|
||||
"\red [user] saws open \his skull with [src]!", \
|
||||
"\red You begin to saw open your head with [src]!" \
|
||||
)
|
||||
if(M == user && prob(25))
|
||||
@@ -615,12 +846,12 @@ CIRCULAR SAW
|
||||
if(3.0)
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] has his spine's connection to the brain severed with [src] by [user].", 1)
|
||||
O.show_message("\red [M] has \his spine's connection to the brain severed with [src] by [user].", 1)
|
||||
M << "\red [user] severs your brain's connection to the spine with [src]!"
|
||||
user << "\red You sever [M]'s brain's connection to the spine with [src]!"
|
||||
else
|
||||
user.visible_message( \
|
||||
"\red [user] severs his brain's connection to the spine with [src]!", \
|
||||
"\red [user] severs \his brain's connection to the spine with [src]!", \
|
||||
"\red You sever your brain's connection to the spine with [src]!" \
|
||||
)
|
||||
|
||||
@@ -637,6 +868,16 @@ CIRCULAR SAW
|
||||
..()
|
||||
return
|
||||
|
||||
else if(user.zone_sel.selecting != "chest" && user.zone_sel.selecting != "groin" && istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
|
||||
if(S.destroyed)
|
||||
return
|
||||
for(var/mob/O in viewers(H, null))
|
||||
O.show_message(text("\red [H] gets \his [S.display_name] sawed off with [src] by [user]."), 1)
|
||||
S.destroyed = 1
|
||||
S.droplimb()
|
||||
H.update_body()
|
||||
else
|
||||
return ..()
|
||||
/*
|
||||
@@ -644,3 +885,135 @@ CIRCULAR SAW
|
||||
return ..()
|
||||
*/
|
||||
return
|
||||
|
||||
/obj/item/weapon/surgical_tool
|
||||
name = "surgical tool"
|
||||
var/list/stage = list() //Stage to act on
|
||||
var/time = 50 //Time it takes to use
|
||||
var/wound //Wound type to act on
|
||||
|
||||
proc/get_message(var/mnumber,var/M,var/user,var/datum/organ/external/organ)//=Start,2=finish,3=walk away,4=screw up, 5 = closed wound
|
||||
proc/screw_up(mob/living/carbon/M as mob,mob/living/carbon/user as mob,var/datum/organ/external/organ)
|
||||
organ.brute_dam += 30
|
||||
/obj/item/weapon/surgical_tool/proc/IsFinalStage(var/stage)
|
||||
var/a
|
||||
switch(wound)
|
||||
if("broken") //Basic broken bone
|
||||
a=3
|
||||
if("blood")
|
||||
a=3
|
||||
return stage == a
|
||||
|
||||
/obj/item/weapon/surgical_tool/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M, /mob))
|
||||
return
|
||||
if((usr.mutations & 16) && prob(50))
|
||||
M << "\red You stab yourself in the eye."
|
||||
M.disabilities |= 128
|
||||
M.weakened += 4
|
||||
M.bruteloss += 10
|
||||
|
||||
src.add_fingerprint(user)
|
||||
|
||||
if(!(locate(/obj/machinery/optable, M.loc) && M.resting))
|
||||
return ..()
|
||||
|
||||
var/zone = user.zone_sel.selecting
|
||||
if (istype(M.organs[zone], /datum/organ/external))
|
||||
var/datum/organ/external/temp = M.organs[zone]
|
||||
var/msg
|
||||
|
||||
// quickly convert embryo removal to bone surgery
|
||||
if(zone == "chest" && M.embryo_op_stage == 3)
|
||||
M.embryo_op_stage = 0
|
||||
temp.open = 2
|
||||
temp.bleeding = 0
|
||||
|
||||
// quickly convert appendectomy to bone surgery
|
||||
if(zone == "groin" && M.appendix_op_stage == 3)
|
||||
M.appendix_op_stage = 0
|
||||
temp.open = 2
|
||||
temp.bleeding = 0
|
||||
|
||||
msg = get_message(1,M,user,temp)
|
||||
for(var/mob/O in viewers(M,null))
|
||||
O.show_message("\red [msg]",1)
|
||||
if(do_mob(user,M,time))
|
||||
if(temp.open == 2 && !temp.bleeding)
|
||||
if(temp.wound == wound)
|
||||
if(temp.stage in stage)
|
||||
temp.stage += 1
|
||||
|
||||
if(IsFinalStage(temp.stage))
|
||||
temp.broken = 0
|
||||
temp.stage = 0
|
||||
temp.perma_injury = 0
|
||||
temp.brute_dam = temp.min_broken_damage -1
|
||||
msg = get_message(2,M,user,temp)
|
||||
else
|
||||
msg = get_message(4,M,user,temp)
|
||||
screw_up(M,user,temp)
|
||||
else
|
||||
msg = get_message(5,M,user,temp)
|
||||
else
|
||||
msg = get_message(3,M,user,temp)
|
||||
|
||||
for(var/mob/O in viewers(M,null))
|
||||
O.show_message("\red [msg]",1)
|
||||
|
||||
|
||||
//Broken bone
|
||||
//Basic
|
||||
//Open -> Clean -> Bone-gel -> pop-into-place -> Bone-gel -> close -> glue -> clean
|
||||
|
||||
//Split
|
||||
//Open -> Clean -> Tweasers -> bone-glue -> close -> glue -> clean
|
||||
|
||||
//
|
||||
|
||||
/obj/item/weapon/surgical_tool/bonegel
|
||||
name = "Bone-gel"
|
||||
icon = 'janitor.dmi'
|
||||
icon_state = "cleaner"
|
||||
|
||||
/obj/item/weapon/surgical_tool/bonegel/New()
|
||||
stage += 0
|
||||
stage += 2
|
||||
wound = "broken"
|
||||
/obj/item/weapon/surgical_tool/bonegel/get_message(var/n,var/m,var/usr,var/datum/organ/external/organ)
|
||||
var/z
|
||||
switch(n)
|
||||
if(1)
|
||||
z="[usr] starts applying bone-gel to [m]'s [organ.display_name]"
|
||||
if(2)
|
||||
z="[usr] finishes applying bone-gel to [m]'s [organ.display_name]"
|
||||
if(3)
|
||||
z="[usr] stops applying bone-gel to [m]'s [organ.display_name]"
|
||||
if(4)
|
||||
z="[usr] applies bone-gel incorrectly to [m]'s [organ.display_name]"
|
||||
if(5)
|
||||
z="[usr] lubricates [m]'s [organ.display_name]"
|
||||
return z
|
||||
|
||||
/obj/item/weapon/surgical_tool/bonecracker
|
||||
name = "Bone-cracker"
|
||||
icon = 'items.dmi'
|
||||
icon_state = "wrench"
|
||||
|
||||
/obj/item/weapon/surgical_tool/bonecracker/New()
|
||||
stage += 1
|
||||
wound = "broken"
|
||||
/obj/item/weapon/surgical_tool/bonecracker/get_message(var/n,var/m,var/usr,var/datum/organ/external/organ)
|
||||
var/z
|
||||
switch(n)
|
||||
if(1)
|
||||
z="[usr] starts popping [m]'s [organ.display_name] bone into place"
|
||||
if(2)
|
||||
z="[usr] finishes popping [m]'s [organ.display_name] bone into place"
|
||||
if(3)
|
||||
z="[usr] stops popping [m]'s [organ.display_name] bone into place"
|
||||
if(4)
|
||||
z="[usr] pops [m]'s [organ.display_name] bone into the wrong place"
|
||||
if(5)
|
||||
z="[usr] performs chiropractice on [m]'s [organ.display_name]"
|
||||
return z
|
||||
|
||||
@@ -6,20 +6,21 @@
|
||||
new /obj/item/weapon/spacecash(src)
|
||||
new /obj/item/weapon/spacecash(src)
|
||||
|
||||
/*/obj/item/weapon/storage/bible/proc/bless(mob/living/carbon/M as mob)
|
||||
/obj/item/weapon/storage/bible/proc/bless(mob/living/carbon/M as mob)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/heal_amt = 10
|
||||
for(var/datum/organ/external/affecting in H.organs)
|
||||
for(var/name in H.organs)
|
||||
var/datum/organ/external/affecting = H.organs[name]
|
||||
if(affecting.heal_damage(heal_amt, heal_amt))
|
||||
H.UpdateDamageIcon()
|
||||
return */
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/bible/attack(mob/M as mob, mob/living/user as mob)
|
||||
|
||||
// var/chaplain = 0
|
||||
// if(user.mind && (user.mind.assigned_role == "Chaplain"))
|
||||
// chaplain = 1
|
||||
var/chaplain = 0
|
||||
if(user.mind && (user.mind.assigned_role == "Chaplain"))
|
||||
chaplain = 1
|
||||
|
||||
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
@@ -28,10 +29,10 @@
|
||||
if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
|
||||
user << "\red You don't have the dexterity to do this!"
|
||||
return
|
||||
// if(!chaplain)
|
||||
// user << "\red The book sizzles in your hands."
|
||||
// user.take_organ_damage(0,10)
|
||||
// return
|
||||
if(!chaplain)
|
||||
user << "\red The book sizzles in your hands."
|
||||
user.take_organ_damage(0,10)
|
||||
return
|
||||
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red The [src] slips out of your hand and hits your head."
|
||||
@@ -47,7 +48,7 @@
|
||||
M << "\red The power of [src.deity_name] clears your mind of heresy!"
|
||||
user << "\red You see how [M]'s eyes become clear, the cult no longer holds control over him!"
|
||||
ticker.mode.remove_cultist(M.mind)
|
||||
/* if ((istype(M, /mob/living/carbon/human) && prob(60)))
|
||||
if ((istype(M, /mob/living/carbon/human) && prob(60)))
|
||||
bless(M)
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red <B>[] heals [] with the power of [src.deity_name]!</B>", user, M), 1)
|
||||
@@ -59,7 +60,7 @@
|
||||
M << "\red You feel dumber."
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red <B>[] beats [] over the head with []!</B>", user, M, src), 1)
|
||||
playsound(src.loc, "punch", 25, 1, -1) */
|
||||
playsound(src.loc, "punch", 25, 1, -1)
|
||||
else if(M.stat == 2)
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red <B>[] smacks []'s lifeless corpse with [].</B>", user, M, src), 1)
|
||||
|
||||
@@ -81,6 +81,20 @@
|
||||
new /obj/item/weapon/reagent_containers/pill/kelotane( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/kelotane( src )
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/tramadol
|
||||
name = "Pill bottle (tramadol)"
|
||||
desc = "Contains painkiller pills."
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/kelotane/New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/antitox
|
||||
name = "Pill bottle (Anti-toxin)"
|
||||
desc = "Contains pills used to counter toxins."
|
||||
|
||||
@@ -494,6 +494,24 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
//M.updatehealth()
|
||||
M.buckled = initial(M.buckled)
|
||||
M.handcuffed = initial(M.handcuffed)
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/name in H.organs)
|
||||
var/datum/organ/external/e = H.organs[name]
|
||||
e.brute_dam = 0.0
|
||||
e.burn_dam = 0.0
|
||||
e.bandaged = 0.0
|
||||
e.wound_size = 0.0
|
||||
e.max_damage = initial(e.max_damage)
|
||||
e.bleeding = 0
|
||||
e.open = 0
|
||||
e.broken = 0
|
||||
e.destroyed = 0
|
||||
e.perma_injury = 0
|
||||
e.update_icon()
|
||||
H.update_body()
|
||||
H.update_face()
|
||||
H.UpdateDamageIcon()
|
||||
if (M.stat > 1)
|
||||
M.stat=0
|
||||
..()
|
||||
|
||||
@@ -667,8 +667,9 @@ datum
|
||||
return
|
||||
|
||||
if(prob(15) && istype(M, /mob/living/carbon/human) && volume >= 30)
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
var/datum/organ/external/head/affecting = M:get_organ("head")
|
||||
if(affecting)
|
||||
affecting.disfigured = 1
|
||||
affecting.take_damage(25, 0)
|
||||
M:UpdateDamageIcon()
|
||||
M:emote("scream")
|
||||
@@ -714,7 +715,8 @@ datum
|
||||
del (M:head)
|
||||
M << "\red Your helmet melts into uselessness!"
|
||||
return
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
var/datum/organ/external/head/affecting = M:get_organ("head")
|
||||
affecting.disfigured = 1
|
||||
affecting.take_damage(35, 0)
|
||||
M:UpdateDamageIcon()
|
||||
M:emote("scream")
|
||||
@@ -729,7 +731,8 @@ datum
|
||||
M.take_organ_damage(min(15, volume * 4)) // same deal as sulphuric acid
|
||||
else
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
var/datum/organ/external/head/affecting = M:get_organ("head")
|
||||
affecting.disfigured = 1
|
||||
affecting.take_damage(30, 0)
|
||||
M:UpdateDamageIcon()
|
||||
M:emote("scream")
|
||||
@@ -1308,6 +1311,19 @@ datum
|
||||
..()
|
||||
return
|
||||
|
||||
tramadol
|
||||
name = "Tramadol"
|
||||
id = "tramadol"
|
||||
description = "A simple, yet effective painkiller."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC"
|
||||
|
||||
oxycodone
|
||||
name = "Oxycodone"
|
||||
id = "oxycodone"
|
||||
description = "An effective and very addictive painkiller."
|
||||
reagent_state = LIQUID
|
||||
color = "#C805DC"
|
||||
|
||||
impedrezene
|
||||
name = "Impedrezene"
|
||||
|
||||
@@ -70,6 +70,13 @@ datum
|
||||
required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1)
|
||||
result_amount = 3
|
||||
|
||||
tramadol
|
||||
name = "Tramadol"
|
||||
id = "tramadol"
|
||||
result = "tramadol"
|
||||
required_reagents = list("inaprovaline" = 1, "ethanol" = 1, "oxygen" = 1)
|
||||
result_amount = 3
|
||||
|
||||
//cyanide
|
||||
// name = "Cyanide"
|
||||
// id = "cyanide"
|
||||
|
||||
@@ -2726,6 +2726,14 @@
|
||||
..()
|
||||
reagents.add_reagent("kelotane", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/tramadol
|
||||
name = "Tramadol pill"
|
||||
desc = "A simple painkiller."
|
||||
icon_state = "pill8"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("tramadol", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/inaprovaline
|
||||
name = "Inaprovaline pill"
|
||||
desc = "Used to stabilize patients."
|
||||
|
||||
@@ -151,7 +151,31 @@
|
||||
if (!src.client)
|
||||
usr << "\red [src.name] doesn't seem as though they want to talk."
|
||||
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/temp = organs[name]
|
||||
if(temp.destroyed)
|
||||
usr << "\red [name] is missing [t_his] [temp.display_name]."
|
||||
if(temp.wounds)
|
||||
for(var/datum/organ/external/wound/w in temp.wounds)
|
||||
var/size = w.wound_size
|
||||
var/sizetext
|
||||
switch(size)
|
||||
if(1)
|
||||
sizetext = "cut"
|
||||
if(2)
|
||||
sizetext = "deep cut"
|
||||
if(3)
|
||||
sizetext = "flesh wound"
|
||||
if(4)
|
||||
sizetext = "gaping wound"
|
||||
if(5)
|
||||
sizetext = "big gaping wound"
|
||||
if(6)
|
||||
sizetext = "massive wound"
|
||||
if(w.bleeding)
|
||||
usr << "\red [name] is bleeding from a [sizetext] on [t_his] [temp.display_name]."
|
||||
continue
|
||||
|
||||
print_flavor_text()
|
||||
|
||||
usr << "\blue *---------*"
|
||||
|
||||
|
||||
@@ -55,6 +55,9 @@
|
||||
var/mutantrace = null
|
||||
|
||||
var/list/organs = list()
|
||||
var/bloodloss = 0
|
||||
var/debug_leftarm
|
||||
var/debug_lefthand
|
||||
|
||||
/mob/living/carbon/human/dummy
|
||||
real_name = "Test Dummy"
|
||||
@@ -69,24 +72,25 @@
|
||||
|
||||
if(!dna) dna = new /datum/dna(null)
|
||||
|
||||
var/datum/organ/external/chest/chest = new /datum/organ/external/chest(src)
|
||||
var/datum/organ/external/head/head = new /datum/organ/external/head(src)
|
||||
var/datum/organ/external/l_arm/l_arm = new /datum/organ/external/l_arm(src)
|
||||
var/datum/organ/external/r_arm/r_arm = new /datum/organ/external/r_arm(src)
|
||||
var/datum/organ/external/r_leg/r_leg = new /datum/organ/external/r_leg(src)
|
||||
var/datum/organ/external/l_leg/l_leg = new /datum/organ/external/l_leg(src)
|
||||
chest.owner = src
|
||||
head.owner = src
|
||||
r_arm.owner = src
|
||||
l_arm.owner = src
|
||||
r_leg.owner = src
|
||||
l_leg.owner = src
|
||||
organs += chest
|
||||
organs += head
|
||||
organs += r_arm
|
||||
organs += l_arm
|
||||
organs += r_leg
|
||||
organs += l_leg
|
||||
new /datum/organ/external/chest(src)
|
||||
new /datum/organ/external/groin(src)
|
||||
new /datum/organ/external/head(src)
|
||||
new /datum/organ/external/l_arm(src)
|
||||
new /datum/organ/external/r_arm(src)
|
||||
new /datum/organ/external/r_leg(src)
|
||||
new /datum/organ/external/l_leg(src)
|
||||
|
||||
var/datum/organ/external/part = new /datum/organ/external/l_hand(src)
|
||||
part.parent = organs["l_arm"]
|
||||
part = new /datum/organ/external/l_foot(src)
|
||||
part.parent = organs["l_leg"]
|
||||
part = new /datum/organ/external/r_hand(src)
|
||||
part.parent = organs["r_arm"]
|
||||
part = new /datum/organ/external/r_foot(src)
|
||||
part.parent = organs["r_leg"]
|
||||
|
||||
debug_leftarm = organs["l_arm"]
|
||||
debug_lefthand = organs["l_hand"]
|
||||
|
||||
var/g = "m"
|
||||
if (gender == MALE)
|
||||
@@ -170,6 +174,11 @@
|
||||
var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80
|
||||
if (hungry >= 70) tally += hungry/50
|
||||
|
||||
for(var/organ in list("l_leg","l_foot","r_leg","r_foot"))
|
||||
var/datum/organ/external/o = organs["[organ]"]
|
||||
if(o.broken)
|
||||
tally += 6
|
||||
|
||||
if(wear_suit)
|
||||
tally += wear_suit.slowdown
|
||||
|
||||
@@ -270,7 +279,8 @@
|
||||
if (prob(50) && !shielded)
|
||||
Paralyse(10)
|
||||
|
||||
for(var/datum/organ/external/temp in organs)
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/temp = organs[name]
|
||||
switch(temp.name)
|
||||
if("head")
|
||||
temp.take_damage(b_loss * 0.2, f_loss * 0.2)
|
||||
@@ -653,7 +663,7 @@
|
||||
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
||||
if (health > 0)
|
||||
var/datum/organ/external/affecting = get_organ(pick("chest", "chest", "chest", "head"))
|
||||
if(!affecting) return
|
||||
if(!affecting || affecting.destroyed) return
|
||||
if (istype(O, /obj/effect/immovablerod))
|
||||
affecting.take_damage(101, 0)
|
||||
else
|
||||
@@ -881,17 +891,33 @@
|
||||
//because theyre located on the 'other' inventory bar.
|
||||
|
||||
// Gloves
|
||||
if (gloves)
|
||||
var/t1 = gloves.item_state
|
||||
if (!t1)
|
||||
t1 = gloves.icon_state
|
||||
overlays += image("icon" = 'hands.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
|
||||
if (gloves.blood_DNA)
|
||||
var/datum/organ/external/lo = organs["l_hand"]
|
||||
var/datum/organ/external/ro = organs["r_hand"]
|
||||
if (!lo.destroyed || !ro.destroyed)
|
||||
if (gloves)
|
||||
var/t1 = gloves.item_state
|
||||
if (!t1)
|
||||
t1 = gloves.icon_state
|
||||
var/icon/gloves_icon = new /icon("icon" = 'hands.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")))
|
||||
if(lo.destroyed)
|
||||
gloves_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
|
||||
else if(ro.destroyed)
|
||||
gloves_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
|
||||
overlays += image(gloves_icon, "layer" = MOB_LAYER)
|
||||
if (gloves.blood_DNA)
|
||||
var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]")
|
||||
if(lo.destroyed)
|
||||
stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
|
||||
else if(ro.destroyed)
|
||||
stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
|
||||
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
|
||||
else if (blood_DNA)
|
||||
var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]")
|
||||
if(lo.destroyed)
|
||||
stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
|
||||
else if(ro.destroyed)
|
||||
stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
|
||||
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
|
||||
else if (blood_DNA)
|
||||
var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]")
|
||||
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
|
||||
// Glasses
|
||||
if (glasses)
|
||||
var/t1 = glasses.icon_state
|
||||
@@ -904,11 +930,22 @@
|
||||
var/t1 = r_ear.icon_state
|
||||
overlays += image("icon" = 'ears.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
|
||||
// Shoes
|
||||
if (shoes)
|
||||
lo = organs["l_foot"]
|
||||
ro = organs["r_foot"]
|
||||
if ((!lo.destroyed || !ro.destroyed) && shoes)
|
||||
var/t1 = shoes.icon_state
|
||||
overlays += image("icon" = 'feet.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
|
||||
var/icon/shoes_icon = new /icon("icon" = 'feet.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")))
|
||||
if(lo.destroyed && !lying)
|
||||
shoes_icon.Blend(new /icon('limb_mask.dmi', "right[lying?"_l":""]"), ICON_MULTIPLY)
|
||||
else if(ro.destroyed && !lying)
|
||||
shoes_icon.Blend(new /icon('limb_mask.dmi', "left[lying?"_l":""]"), ICON_MULTIPLY)
|
||||
overlays += image(shoes_icon, "layer" = MOB_LAYER)
|
||||
if (shoes.blood_DNA)
|
||||
var/icon/stain_icon = icon('blood.dmi', "shoesblood[!lying ? "" : "2"]")
|
||||
if(lo.destroyed)
|
||||
stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
|
||||
else if(ro.destroyed)
|
||||
stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
|
||||
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) // Radio
|
||||
/* if (w_radio)
|
||||
overlays += image("icon" = 'ears.dmi', "icon_state" = "headset[!lying ? "" : "2"]", "layer" = MOB_LAYER) */
|
||||
@@ -1238,28 +1275,50 @@
|
||||
else if (gender == FEMALE)
|
||||
g = "f"
|
||||
|
||||
stand_icon = new /icon('human.dmi', "blank")
|
||||
lying_icon = new /icon('human.dmi', "blank")
|
||||
stand_icon = new /icon('human.dmi', "torso_s")
|
||||
lying_icon = new /icon('human.dmi', "torso_l")
|
||||
|
||||
var/husk = (mutations & HUSK)
|
||||
//var/obese = (mutations & FAT)
|
||||
|
||||
stand_icon.Blend(new /icon('human.dmi', "chest_[g]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('human.dmi', "chest_[g]_l"), ICON_OVERLAY)
|
||||
|
||||
var/datum/organ/external/head = organs["head"]
|
||||
if(!head.destroyed)
|
||||
stand_icon.Blend(new /icon('human.dmi', "head_[g]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('human.dmi', "head_[g]_l"), ICON_OVERLAY)
|
||||
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/part = organs[name]
|
||||
if(!istype(part, /datum/organ/external/groin) \
|
||||
&& !istype(part, /datum/organ/external/chest) \
|
||||
&& !istype(part, /datum/organ/external/head) \
|
||||
&& !part.destroyed)
|
||||
stand_icon.Blend(new /icon('human.dmi', "[part.icon_name]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('human.dmi', "[part.icon_name]_l"), ICON_OVERLAY)
|
||||
|
||||
stand_icon.Blend(new /icon('human.dmi', "groin_[g]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('human.dmi', "groin_[g]_l"), ICON_OVERLAY)
|
||||
|
||||
if (husk)
|
||||
stand_icon.Blend(new /icon('human.dmi', "husk_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('human.dmi', "husk_l"), ICON_OVERLAY)
|
||||
var/icon/husk_s = new /icon('human.dmi', "husk_s")
|
||||
var/icon/husk_l = new /icon('human.dmi', "husk_l")
|
||||
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/part = organs[name]
|
||||
if(!istype(part, /datum/organ/external/groin) \
|
||||
&& !istype(part, /datum/organ/external/chest) \
|
||||
&& !istype(part, /datum/organ/external/head) \
|
||||
&& part.destroyed)
|
||||
husk_s.Blend(new /icon('dam_mask.dmi', "[part.icon_name]"), ICON_SUBTRACT)
|
||||
husk_l.Blend(new /icon('dam_mask.dmi', "[part.icon_name]2"), ICON_SUBTRACT)
|
||||
|
||||
stand_icon.Blend(husk_s, ICON_OVERLAY)
|
||||
lying_icon.Blend(husk_l, ICON_OVERLAY)
|
||||
/*else if(obese)
|
||||
stand_icon.Blend(new /icon('human.dmi', "fatbody_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('human.dmi', "fatbody_l"), ICON_OVERLAY)*/
|
||||
else
|
||||
stand_icon.Blend(new /icon('human.dmi', "chest_[g]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('human.dmi', "chest_[g]_l"), ICON_OVERLAY)
|
||||
|
||||
for (var/part in list("head", "arm_left", "arm_right", "hand_left", "hand_right", "leg_left", "leg_right", "foot_left", "foot_right"))
|
||||
stand_icon.Blend(new /icon('human.dmi', "[part]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('human.dmi', "[part]_l"), ICON_OVERLAY)
|
||||
|
||||
stand_icon.Blend(new /icon('human.dmi', "groin_[g]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('human.dmi', "groin_[g]_l"), ICON_OVERLAY)
|
||||
|
||||
// Skin tone
|
||||
if (s_tone >= 0)
|
||||
@@ -1275,6 +1334,14 @@
|
||||
lying_icon.Blend(new /icon('human.dmi', "underwear[underwear]_[g]_l"), ICON_OVERLAY)
|
||||
|
||||
/mob/living/carbon/human/proc/update_face()
|
||||
if(organs)
|
||||
var/datum/organ/external/head = organs["head"]
|
||||
if(head)
|
||||
if(head.destroyed)
|
||||
del(face_standing)
|
||||
del(face_lying)
|
||||
return
|
||||
|
||||
if(!facial_hair_style || !hair_style) return//Seems people like to lose their icons, this should stop the runtimes for now
|
||||
del(face_standing)
|
||||
del(face_lying)
|
||||
@@ -1978,7 +2045,7 @@ It can still be worn/put on as normal.
|
||||
//SN src = null
|
||||
del(src)
|
||||
return
|
||||
if ((target.health >= -99.0 && target.health < 0))
|
||||
if ((target.health >= -99.0 && target.health < config.health_threshold_dead))
|
||||
target.cpr_time = world.time
|
||||
var/suff = min(target.getOxyLoss(), 7)
|
||||
target.oxyloss -= suff
|
||||
@@ -2176,14 +2243,16 @@ It can still be worn/put on as normal.
|
||||
|
||||
/mob/living/carbon/human/proc/get_damaged_organs(var/brute, var/burn)
|
||||
var/list/datum/organ/external/parts = list()
|
||||
for(var/datum/organ/external/organ in organs)
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/organ = organs[name]
|
||||
if((brute && organ.brute_dam) || (burn && organ.burn_dam))
|
||||
parts += organ
|
||||
return parts
|
||||
|
||||
/mob/living/carbon/human/proc/get_damageable_organs()
|
||||
var/list/datum/organ/external/parts = list()
|
||||
for(var/datum/organ/external/organ in organs)
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/organ = organs[name]
|
||||
if(organ.brute_dam + organ.burn_dam < organ.max_damage)
|
||||
parts += organ
|
||||
return parts
|
||||
@@ -2311,7 +2380,8 @@ It can still be worn/put on as normal.
|
||||
|
||||
/mob/living/carbon/human/getBruteLoss()
|
||||
var/amount = 0.0
|
||||
for(var/datum/organ/external/O in organs)
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/O = organs[name]
|
||||
amount+= O.brute_dam
|
||||
return amount
|
||||
|
||||
@@ -2323,7 +2393,8 @@ It can still be worn/put on as normal.
|
||||
|
||||
/mob/living/carbon/human/getFireLoss()
|
||||
var/amount = 0.0
|
||||
for(var/datum/organ/external/O in organs)
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/O = organs[name]
|
||||
amount+= O.burn_dam
|
||||
return amount
|
||||
|
||||
|
||||
@@ -15,26 +15,31 @@
|
||||
body_standing = list()
|
||||
del(body_lying)
|
||||
body_lying = list()
|
||||
for(var/datum/organ/external/O in organs)
|
||||
var/icon/DI = new /icon('dam_human.dmi', O.damage_state) // the damage icon for whole human
|
||||
DI.Blend(new /icon('dam_mask.dmi', O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels
|
||||
// world << "[O.icon_name] [O.damage_state] \icon[DI]"
|
||||
body_standing += DI
|
||||
DI = new /icon('dam_human.dmi', "[O.damage_state]-2") // repeat for lying icons
|
||||
DI.Blend(new /icon('dam_mask.dmi', "[O.icon_name]2"), ICON_MULTIPLY)
|
||||
// world << "[O.r_name]2 [O.d_i_state]-2 \icon[DI]"
|
||||
body_lying += DI
|
||||
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/O = organs[name]
|
||||
if(!O.destroyed)
|
||||
O.update_icon()
|
||||
var/icon/DI = new /icon('dam_human.dmi', O.damage_state) // the damage icon for whole human
|
||||
DI.Blend(new /icon('dam_mask.dmi', O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels
|
||||
// world << "[O.icon_name] [O.damage_state] \icon[DI]"
|
||||
body_standing += DI
|
||||
DI = new /icon('dam_human.dmi', "[O.damage_state]-2") // repeat for lying icons
|
||||
DI.Blend(new /icon('dam_mask.dmi', "[O.icon_name]2"), ICON_MULTIPLY)
|
||||
// world << "[O.r_name]2 [O.d_i_state]-2 \icon[DI]"
|
||||
body_lying += DI
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/get_organ(var/zone)
|
||||
if(!zone) zone = "chest"
|
||||
for(var/datum/organ/external/O in organs)
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/O = organs[name]
|
||||
if(O.name == zone)
|
||||
return O
|
||||
return null
|
||||
|
||||
|
||||
/mob/living/carbon/human/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0)
|
||||
/mob/living/carbon/human/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/sharp = 0)
|
||||
if((damagetype != BRUTE) && (damagetype != BURN))
|
||||
..(damage, damagetype, def_zone, blocked)
|
||||
return 1
|
||||
@@ -47,15 +52,15 @@
|
||||
else
|
||||
if(!def_zone) def_zone = ran_zone(def_zone)
|
||||
organ = get_organ(check_zone(def_zone))
|
||||
if(!organ) return 0
|
||||
if(!organ || organ.destroyed) return 0
|
||||
if(blocked)
|
||||
damage = (damage/(blocked+1))
|
||||
|
||||
switch(damagetype)
|
||||
if(BRUTE)
|
||||
organ.take_damage(damage, 0)
|
||||
organ.take_damage(damage, 0, sharp)
|
||||
if(BURN)
|
||||
organ.take_damage(0, damage)
|
||||
organ.take_damage(0, damage, sharp)
|
||||
UpdateDamageIcon()
|
||||
updatehealth()
|
||||
return 1
|
||||
@@ -27,7 +27,8 @@ emp_act
|
||||
//If a specific bodypart is targetted, check how that bodypart is protected and return the value.
|
||||
|
||||
//If you don't specify a bodypart, it checks ALL your bodyparts for protection, and averages out the values
|
||||
for(var/datum/organ/external/organ in organs)
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/organ = organs[name]
|
||||
armorval += checkarmor(organ, type)
|
||||
organnum++
|
||||
return (armorval/max(organnum, 1))
|
||||
@@ -95,7 +96,7 @@ emp_act
|
||||
var/armor = run_armor_check(affecting, "melee", "Your armor has protected you from a hit to the [hit_area].", "Your armor has softened hit to your [hit_area].")
|
||||
if(armor >= 2) return 0
|
||||
if(!I.force) return 0
|
||||
apply_damage(I.force, I.damtype, affecting, armor)
|
||||
apply_damage(I.force, I.damtype, affecting, armor, is_cut(I))
|
||||
|
||||
var/bloody = 0
|
||||
if((I.damtype == BRUTE) && prob(25 + (I.force * 2)))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#define HUMAN_MAX_OXYLOSS 12 //Defines how much oxyloss humans can get per tick. No air applies this value.
|
||||
#define HUMAN_MAX_OXYLOSS 3 //Defines how much oxyloss humans can get per tick. No air applies this value.
|
||||
|
||||
/mob/living/carbon/human
|
||||
var
|
||||
@@ -73,6 +73,8 @@
|
||||
UpdateLuminosity()
|
||||
handle_regular_status_updates()
|
||||
|
||||
handle_pain()
|
||||
|
||||
// Update clothing
|
||||
update_clothing()
|
||||
|
||||
@@ -227,7 +229,7 @@
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
var/datum/air_group/breath
|
||||
// HACK NEED CHANGING LATER
|
||||
if(health < 0)
|
||||
if(health < config.health_threshold_dead)
|
||||
losebreath++
|
||||
|
||||
if(losebreath>0) //Suffocating so do not take a breath
|
||||
@@ -667,6 +669,30 @@
|
||||
return //TODO: DEFERRED
|
||||
|
||||
handle_regular_status_updates()
|
||||
var/leg_tally = 2
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/E = organs[name]
|
||||
E.process()
|
||||
if(E.broken || E.destroyed)
|
||||
if(E.name == "l_hand" || E.name == "l_arm")
|
||||
if(hand && equipped())
|
||||
drop_item()
|
||||
emote("scream")
|
||||
else if(E.name == "r_hand" || E.name == "r_arm")
|
||||
if(!hand && equipped())
|
||||
drop_item()
|
||||
emote("scream")
|
||||
else if(E.name == "l_leg" || E.name == "l_foot" \
|
||||
|| E.name == "r_leg" || E.name == "r_foot" && !lying)
|
||||
leg_tally-- // let it fail even if just foot&leg
|
||||
|
||||
// can't stand
|
||||
if(leg_tally == 0)
|
||||
emote("scream")
|
||||
emote("collapse")
|
||||
paralysis = 10
|
||||
|
||||
updatehealth()
|
||||
|
||||
// health = 100 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
|
||||
|
||||
@@ -729,6 +755,28 @@
|
||||
if (stuttering) stuttering--
|
||||
if (slurring) slurring--
|
||||
|
||||
var/datum/organ/external/head/head = organs["head"]
|
||||
if(head && !head.disfigured)
|
||||
if(head.brute_dam >= 45 || head.burn_dam >= 45)
|
||||
head.disfigured = 1
|
||||
emote("scream")
|
||||
real_name = "Unknown"
|
||||
src << "\red Your face has become disfigured."
|
||||
warn_flavor_changed()
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/temp = organs[name]
|
||||
if(!temp.bleeding)
|
||||
continue
|
||||
else
|
||||
if(prob(35))
|
||||
bloodloss += rand(1,10)
|
||||
if(temp.wounds)
|
||||
for(var/datum/organ/external/wound/W in temp.wounds)
|
||||
if(!temp.bleeding)
|
||||
continue
|
||||
else
|
||||
if(prob(25))
|
||||
bloodloss++
|
||||
if (eye_blind)
|
||||
eye_blind--
|
||||
blinded = 1
|
||||
@@ -1053,9 +1101,14 @@
|
||||
handle_shock()
|
||||
..()
|
||||
|
||||
if(health < 0)
|
||||
// health 0 makes you immediately collapse
|
||||
shock_stage = max(shock_stage, 61)
|
||||
|
||||
if(traumatic_shock >= 80)
|
||||
shock_stage += 1
|
||||
else
|
||||
if(shock_stage > 100) shock_stage = 100
|
||||
shock_stage--
|
||||
shock_stage = max(shock_stage, 0)
|
||||
return
|
||||
|
||||
@@ -7,9 +7,26 @@
|
||||
if(reagents.has_reagent("alkysine"))
|
||||
src.traumatic_shock -= 10
|
||||
if(reagents.has_reagent("inaprovaline"))
|
||||
src.traumatic_shock -= 15
|
||||
if(reagents.has_reagent("synaptizine"))
|
||||
src.traumatic_shock -= 50
|
||||
src.traumatic_shock -= 25
|
||||
if(reagents.has_reagent("tramadol"))
|
||||
src.traumatic_shock -= 80 // make synaptizine function as good painkiller
|
||||
if(reagents.has_reagent("oxycodone"))
|
||||
src.traumatic_shock -= 200 // make synaptizine function as good painkiller
|
||||
if(src.slurring)
|
||||
src.traumatic_shock -= 20
|
||||
|
||||
// broken or ripped off organs will add quite a bit of pain
|
||||
if(istype(src,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/M = src
|
||||
for(var/name in M.organs)
|
||||
var/datum/organ/external/organ = M.organs[name]
|
||||
if(organ.destroyed || organ.open)
|
||||
src.traumatic_shock += 60
|
||||
else if(organ.broken)
|
||||
src.traumatic_shock += 30
|
||||
|
||||
if(src.traumatic_shock < 0)
|
||||
src.traumatic_shock = 0
|
||||
|
||||
return src.traumatic_shock
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
Returns
|
||||
standard 0 if fail
|
||||
*/
|
||||
/mob/living/proc/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0)
|
||||
/mob/living/proc/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/slash = 0)
|
||||
if(!damage || (blocked >= 2)) return 0
|
||||
switch(damagetype)
|
||||
if(BRUTE)
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
var/mob/living/carbon/human/H = src //make this damage method divide the damage to be done among all the body parts, then burn each body part for that much damage. will have better effect then just randomly picking a body part
|
||||
var/divided_damage = (burn_amount)/(H.organs.len)
|
||||
var/extradam = 0 //added to when organ is at max dam
|
||||
for(var/datum/organ/external/affecting in H.organs)
|
||||
for(var/name in H.organs)
|
||||
var/datum/organ/external/affecting = H.organs[name]
|
||||
if(!affecting) continue
|
||||
if(affecting.take_damage(0, divided_damage+extradam))
|
||||
extradam = 0
|
||||
@@ -134,6 +135,20 @@
|
||||
src.updatehealth()
|
||||
|
||||
/mob/living/proc/revive()
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = src
|
||||
for(var/A in H.organs)
|
||||
var/datum/organ/external/affecting = null
|
||||
if(!H.organs[A]) continue
|
||||
affecting = H.organs[A]
|
||||
if(!istype(affecting, /datum/organ/external)) continue
|
||||
affecting.heal_damage(1000, 1000) //fixes getting hit after ingestion, killing you when game updates organ health
|
||||
affecting.broken = 0
|
||||
affecting.destroyed = 0
|
||||
for(var/datum/organ/external/wound/W in affecting.wounds)
|
||||
W.stopbleeding()
|
||||
H.UpdateDamageIcon()
|
||||
H.update_body()
|
||||
//src.fireloss = 0
|
||||
src.setToxLoss(0)
|
||||
//src.bruteloss = 0
|
||||
|
||||
@@ -320,7 +320,8 @@
|
||||
W |= M.contents
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/G = M
|
||||
for(var/datum/organ/external/F in G.organs)
|
||||
for(var/name in G.organs)
|
||||
var/datum/organ/external/F = G.organs[name]
|
||||
W |= F.implant
|
||||
|
||||
for (var/obj/item/device/pda/M in W)
|
||||
|
||||
+183
-11
@@ -1,18 +1,15 @@
|
||||
/datum/organ
|
||||
var
|
||||
name = "organ"
|
||||
owner = null
|
||||
mob/living/carbon/human/owner = null
|
||||
|
||||
|
||||
proc/process()
|
||||
return 0
|
||||
|
||||
|
||||
proc/receive_chem(chemical as obj)
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
/****************************************************
|
||||
EXTERNAL ORGANS
|
||||
****************************************************/
|
||||
@@ -29,11 +26,53 @@
|
||||
max_damage = 0
|
||||
wound_size = 0
|
||||
max_size = 0
|
||||
var/obj/item/weapon/implant/implant = null
|
||||
obj/item/weapon/implant/implant = null
|
||||
|
||||
display_name
|
||||
list/wounds = list()
|
||||
bleeding = 0
|
||||
perma_injury = 0
|
||||
perma_dmg = 0
|
||||
broken = 0
|
||||
destroyed = 0
|
||||
destspawn
|
||||
min_broken_damage = 30
|
||||
datum/organ/external/parent
|
||||
damage_msg = "\red You feel a intense pain"
|
||||
|
||||
var/open = 0
|
||||
var/stage = 0
|
||||
var/wound = 0
|
||||
|
||||
New(mob/living/carbon/human/H)
|
||||
..(H)
|
||||
if(!display_name)
|
||||
display_name = name
|
||||
if(istype(H))
|
||||
owner = H
|
||||
H.organs[name] = src
|
||||
|
||||
proc/take_damage(brute, burn, sharp)
|
||||
if((brute <= 0) && (burn <= 0))
|
||||
return 0
|
||||
if(destroyed)
|
||||
return 0
|
||||
|
||||
if(owner) owner.pain(display_name, (brute+burn)*3, 1)
|
||||
if(sharp)
|
||||
var/chance = rand(1,5)
|
||||
var/nux = brute * chance
|
||||
if(brute_dam >= max_damage)
|
||||
if(prob(5 * brute))
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [display_name] flies off.")
|
||||
destroyed = 1
|
||||
droplimb()
|
||||
return
|
||||
else if(prob(nux))
|
||||
createwound(rand(1,5))
|
||||
owner << "You feel something wet on your [display_name]"
|
||||
|
||||
proc/take_damage(brute, burn)
|
||||
if((brute <= 0) && (burn <= 0)) return 0
|
||||
if((src.brute_dam + src.burn_dam + brute + burn) < src.max_damage)
|
||||
src.brute_dam += brute
|
||||
src.burn_dam += burn
|
||||
@@ -56,19 +95,57 @@
|
||||
else
|
||||
return 0
|
||||
|
||||
if(broken)
|
||||
owner.emote("scream")
|
||||
|
||||
var/result = src.update_icon()
|
||||
return result
|
||||
|
||||
|
||||
proc/heal_damage(brute, burn)
|
||||
src.brute_dam = max(0, src.brute_dam - brute)
|
||||
src.burn_dam = max(0, src.burn_dam - burn)
|
||||
proc/heal_damage(brute, burn, internal = 0)
|
||||
brute_dam = max(0, brute_dam - brute)
|
||||
burn_dam = max(0, burn_dam - burn)
|
||||
if(internal)
|
||||
broken = 0
|
||||
perma_injury = 0
|
||||
return update_icon()
|
||||
|
||||
|
||||
proc/get_damage() //returns total damage
|
||||
return src.brute_dam + src.burn_dam //could use src.health?
|
||||
return max(brute_dam + burn_dam - perma_injury,perma_injury) //could use health?
|
||||
|
||||
proc/get_damage_brute()
|
||||
return max(brute_dam+perma_injury,perma_injury)
|
||||
|
||||
proc/get_damage_fire()
|
||||
return burn_dam
|
||||
|
||||
process()
|
||||
if(destroyed)
|
||||
if(destspawn)
|
||||
droplimb()
|
||||
return
|
||||
if(broken == 0)
|
||||
perma_dmg = 0
|
||||
if(parent)
|
||||
if(parent.destroyed)
|
||||
destroyed = 1
|
||||
owner:update_body()
|
||||
return
|
||||
if(brute_dam > min_broken_damage)
|
||||
if(broken == 0)
|
||||
var/dmgmsg = "[damage_msg] in your [display_name]"
|
||||
owner << dmgmsg
|
||||
//owner.unlock_medal("Broke Yarrr Bones!", 0, "Break a bone.", "easy")
|
||||
for(var/mob/M in viewers(owner))
|
||||
if(M != owner)
|
||||
M.show_message("\red You hear a loud cracking sound coming from [owner.name].")
|
||||
owner.emote("scream")
|
||||
broken = 1
|
||||
wound = "broken" //Randomise in future
|
||||
perma_injury = brute_dam
|
||||
return
|
||||
return
|
||||
|
||||
// new damage icon system
|
||||
// returns just the brute/burn damage code
|
||||
@@ -105,7 +182,102 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
proc/droplimb()
|
||||
if(destroyed)
|
||||
//owner.unlock_medal("Lost something?", 0, "Lose a limb.", "easy")
|
||||
switch(body_part)
|
||||
if(UPPER_TORSO)
|
||||
owner.gib()
|
||||
if(LOWER_TORSO)
|
||||
owner << "\red You are now sterile."
|
||||
if(HEAD)
|
||||
var/obj/item/weapon/organ/head/H = new(owner.loc, owner)
|
||||
if(owner.gender == FEMALE)
|
||||
H.icon_state = "head_f_l"
|
||||
H.overlays += owner.face_lying
|
||||
H.transfer_identity(owner)
|
||||
|
||||
var/lol = pick(cardinal)
|
||||
step(H,lol)
|
||||
owner.update_face()
|
||||
owner.update_body()
|
||||
owner.death()
|
||||
if(ARM_RIGHT)
|
||||
var/obj/item/weapon/organ/r_arm/H = new(owner.loc, owner)
|
||||
if(owner:organs["r_hand"])
|
||||
var/datum/organ/external/S = owner:organs["r_hand"]
|
||||
if(!S.destroyed)
|
||||
var/obj/item/weapon/organ/r_hand/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
var/lol = pick(cardinal)
|
||||
step(H,lol)
|
||||
destroyed = 1
|
||||
if(ARM_LEFT)
|
||||
var/obj/item/weapon/organ/l_arm/H = new(owner.loc, owner)
|
||||
if(owner:organs["l_hand"])
|
||||
var/datum/organ/external/S = owner:organs["l_hand"]
|
||||
if(!S.destroyed)
|
||||
var/obj/item/weapon/organ/l_hand/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off in arc.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
var/lol = pick(cardinal)
|
||||
step(H,lol)
|
||||
destroyed = 1
|
||||
if(LEG_RIGHT)
|
||||
var/obj/item/weapon/organ/r_leg/H = new(owner.loc, owner)
|
||||
if(owner:organs["r_foot"])
|
||||
var/datum/organ/external/S = owner:organs["r_foot"]
|
||||
if(!S.destroyed)
|
||||
var/obj/item/weapon/organ/l_foot/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off flies off in arc.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
var/lol = pick(cardinal)
|
||||
step(H,lol)
|
||||
destroyed = 1
|
||||
if(LEG_LEFT)
|
||||
var/obj/item/weapon/organ/l_leg/H = new(owner.loc, owner)
|
||||
if(owner:organs["l_foot"])
|
||||
var/datum/organ/external/S = owner:organs["l_foot"]
|
||||
if(!S.destroyed)
|
||||
var/obj/item/weapon/organ/l_foot/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
var/lol = pick(cardinal)
|
||||
step(H,lol)
|
||||
destroyed = 1
|
||||
|
||||
proc/createwound(var/size = 1)
|
||||
if(ishuman(src.owner))
|
||||
var/datum/organ/external/wound/W = new(src)
|
||||
W.bleeding = 1
|
||||
src.owner:bloodloss += 10 * size
|
||||
W.wound_size = size
|
||||
W.owner = src.owner
|
||||
src.wounds += W
|
||||
|
||||
/datum/organ/external/wound
|
||||
name = "wound"
|
||||
wound_size = 1
|
||||
icon_name = "wound"
|
||||
display_name = "wound"
|
||||
parent = null
|
||||
|
||||
proc/stopbleeding()
|
||||
if(!src.bleeding)
|
||||
return
|
||||
var/t = 10 * src.wound_size
|
||||
src.owner:bloodloss -= t
|
||||
src.bleeding = 0
|
||||
del(src)
|
||||
|
||||
/****************************************************
|
||||
INTERNAL ORGANS
|
||||
|
||||
@@ -2,61 +2,189 @@
|
||||
name = "chest"
|
||||
icon_name = "chest"
|
||||
max_damage = 150
|
||||
min_broken_damage = 75
|
||||
body_part = UPPER_TORSO
|
||||
|
||||
/*/datum/organ/external/groin
|
||||
/datum/organ/external/groin
|
||||
name = "groin"
|
||||
icon_name = "groin"
|
||||
icon_name = "diaper"
|
||||
max_damage = 115
|
||||
min_broken_damage = 70
|
||||
body_part = LOWER_TORSO
|
||||
*/
|
||||
|
||||
/datum/organ/external/head
|
||||
name = "head"
|
||||
icon_name = "head"
|
||||
max_damage = 125
|
||||
max_damage = 75
|
||||
min_broken_damage = 40
|
||||
body_part = HEAD
|
||||
var/disfigured = 0
|
||||
|
||||
/datum/organ/external/l_arm
|
||||
name = "l_arm"
|
||||
display_name = "left arm"
|
||||
icon_name = "l_arm"
|
||||
max_damage = 75
|
||||
min_broken_damage = 30
|
||||
body_part = ARM_LEFT
|
||||
|
||||
/datum/organ/external/l_leg
|
||||
name = "l_leg"
|
||||
display_name = "left leg"
|
||||
icon_name = "l_leg"
|
||||
max_damage = 75
|
||||
min_broken_damage = 30
|
||||
body_part = LEG_LEFT
|
||||
|
||||
/datum/organ/external/r_arm
|
||||
name = "r_arm"
|
||||
display_name = "right arm"
|
||||
icon_name = "r_arm"
|
||||
max_damage = 75
|
||||
min_broken_damage = 30
|
||||
body_part = ARM_RIGHT
|
||||
|
||||
/datum/organ/external/r_leg
|
||||
name = "r_leg"
|
||||
display_name = "right leg"
|
||||
icon_name = "r_leg"
|
||||
max_damage = 75
|
||||
min_broken_damage = 30
|
||||
body_part = LEG_RIGHT
|
||||
|
||||
/*Leaving these here in case we want to use them later
|
||||
/datum/organ/external/l_foot
|
||||
name = "l foot"
|
||||
name = "l_foot"
|
||||
display_name = "left foot"
|
||||
icon_name = "l_foot"
|
||||
max_damage = 40
|
||||
min_broken_damage = 15
|
||||
body_part = FOOT_LEFT
|
||||
|
||||
/datum/organ/external/r_foot
|
||||
name = "r foot"
|
||||
name = "r_foot"
|
||||
display_name = "right foot"
|
||||
icon_name = "r_foot"
|
||||
max_damage = 40
|
||||
min_broken_damage = 15
|
||||
body_part = FOOT_RIGHT
|
||||
|
||||
/datum/organ/external/r_hand
|
||||
name = "r hand"
|
||||
name = "r_hand"
|
||||
display_name = "right hand"
|
||||
icon_name = "r_hand"
|
||||
max_damage = 40
|
||||
min_broken_damage = 15
|
||||
body_part = HAND_RIGHT
|
||||
|
||||
/datum/organ/external/l_hand
|
||||
name = "l hand"
|
||||
name = "l_hand"
|
||||
display_name = "left hand"
|
||||
icon_name = "l_hand"
|
||||
max_damage = 40
|
||||
min_broken_damage = 15
|
||||
body_part = HAND_LEFT
|
||||
*/
|
||||
|
||||
obj/item/weapon/organ
|
||||
icon = 'human.dmi'
|
||||
|
||||
obj/item/weapon/organ/New(loc, mob/living/carbon/human/H)
|
||||
..(loc)
|
||||
if(!istype(H))
|
||||
return
|
||||
if(H.dna)
|
||||
blood_DNA = H.dna.unique_enzymes
|
||||
blood_type = H.b_type
|
||||
|
||||
var/icon/I = new /icon(icon, icon_state)
|
||||
|
||||
if (H.s_tone >= 0)
|
||||
I.Blend(rgb(H.s_tone, H.s_tone, H.s_tone), ICON_ADD)
|
||||
else
|
||||
I.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT)
|
||||
icon = I
|
||||
|
||||
obj/item/weapon/organ/head
|
||||
name = "head"
|
||||
icon_state = "head_m_l"
|
||||
var/mob/living/carbon/brain/brainmob
|
||||
var/brain_op_stage = 0
|
||||
|
||||
obj/item/weapon/organ/head/proc/transfer_identity(var/mob/living/carbon/human/H)//Same deal as the regular brain proc. Used for human-->head
|
||||
brainmob = new(src)
|
||||
brainmob.name = H.real_name
|
||||
brainmob.real_name = H.real_name
|
||||
brainmob.dna = H.dna
|
||||
if(H.mind)
|
||||
H.mind.transfer_to(brainmob)
|
||||
|
||||
obj/item/weapon/organ/head/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/scalpel))
|
||||
switch(brain_op_stage)
|
||||
if(0)
|
||||
for(var/mob/O in (oviewers(brainmob) - user))
|
||||
O.show_message("\red [brainmob] is beginning to have \his head cut open with [src] by [user].", 1)
|
||||
brainmob << "\red [user] begins to cut open your head with [src]!"
|
||||
user << "\red You cut [brainmob]'s head open with [src]!"
|
||||
|
||||
brain_op_stage = 1
|
||||
|
||||
if(2)
|
||||
for(var/mob/O in (oviewers(brainmob) - user))
|
||||
O.show_message("\red [brainmob] is having \his connections to the brain delicately severed with [src] by [user].", 1)
|
||||
brainmob << "\red [user] begins to cut open your head with [src]!"
|
||||
user << "\red You cut [brainmob]'s head open with [src]!"
|
||||
|
||||
brain_op_stage = 3.0
|
||||
else
|
||||
..()
|
||||
else if(istype(W,/obj/item/weapon/circular_saw))
|
||||
switch(brain_op_stage)
|
||||
if(1)
|
||||
for(var/mob/O in (oviewers(brainmob) - user))
|
||||
O.show_message("\red [brainmob] has \his skull sawed open with [src] by [user].", 1)
|
||||
brainmob << "\red [user] begins to saw open your head with [src]!"
|
||||
user << "\red You saw [brainmob]'s head open with [src]!"
|
||||
|
||||
brain_op_stage = 2
|
||||
if(3)
|
||||
for(var/mob/O in (oviewers(brainmob) - user))
|
||||
O.show_message("\red [brainmob] has \his spine's connection to the brain severed with [src] by [user].", 1)
|
||||
brainmob << "\red [user] severs your brain's connection to the spine with [src]!"
|
||||
user << "\red You sever [brainmob]'s brain's connection to the spine with [src]!"
|
||||
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> Debrained [brainmob.name] ([brainmob.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
brainmob.attack_log += "\[[time_stamp()]\]<font color='orange'> Debrained by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
|
||||
var/obj/item/brain/B = new(loc)
|
||||
B.transfer_identity(brainmob)
|
||||
|
||||
brain_op_stage = 4.0
|
||||
else
|
||||
..()
|
||||
else
|
||||
..()
|
||||
|
||||
obj/item/weapon/organ/l_arm
|
||||
name = "left arm"
|
||||
icon_state = "l_arm_l"
|
||||
obj/item/weapon/organ/l_foot
|
||||
name = "left foot"
|
||||
icon_state = "l_foot_l"
|
||||
obj/item/weapon/organ/l_hand
|
||||
name = "left hand"
|
||||
icon_state = "l_hand_l"
|
||||
obj/item/weapon/organ/l_leg
|
||||
name = "left leg"
|
||||
icon_state = "l_leg_l"
|
||||
obj/item/weapon/organ/r_arm
|
||||
name = "right arm"
|
||||
icon_state = "r_arm_l"
|
||||
obj/item/weapon/organ/r_foot
|
||||
name = "right foot"
|
||||
icon_state = "r_foot_l"
|
||||
obj/item/weapon/organ/r_hand
|
||||
name = "right hand"
|
||||
icon_state = "r_hand_l"
|
||||
obj/item/weapon/organ/r_leg
|
||||
name = "right leg"
|
||||
icon_state = "r_leg_l"
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
mob/proc/flash_pain()
|
||||
flick("pain",pain)
|
||||
|
||||
mob/var/list/pain_stored = list()
|
||||
mob/var/last_pain_message = ""
|
||||
mob/var/next_pain_time = 0
|
||||
|
||||
// partname is the name of a body part
|
||||
// amount is a num from 1 to 100
|
||||
mob/proc/pain(var/partname, var/amount, var/force)
|
||||
if(stat >= 2) return
|
||||
if(world.time < next_pain_time && !force)
|
||||
return
|
||||
if(amount > 10 && istype(src,/mob/living/carbon/human))
|
||||
if(src:paralysis)
|
||||
src:paralysis = max(0, src:paralysis-round(amount/10))
|
||||
if(amount > 50 && prob(amount / 5))
|
||||
src:drop_item()
|
||||
var/msg
|
||||
switch(amount)
|
||||
if(1 to 10)
|
||||
msg = "<b>Your [partname] hurts a bit.</b>"
|
||||
if(11 to 90)
|
||||
flash_weak_pain()
|
||||
msg = "<b><font size=1>Ouch! Your [partname] hurts.</font></b>"
|
||||
if(91 to 10000)
|
||||
flash_pain()
|
||||
msg = "<b><font size=3>OH GOD! Your [partname] is hurting terribly!</font></b>"
|
||||
if(msg && (msg != last_pain_message || prob(10)))
|
||||
last_pain_message = msg
|
||||
src << msg
|
||||
next_pain_time = world.time + (100 - amount)
|
||||
|
||||
mob/living/carbon/human/proc/handle_pain()
|
||||
// not when sleeping
|
||||
if(stat >= 2) return
|
||||
var/maxdam = 0
|
||||
var/datum/organ/external/damaged_organ = null
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/E = organs[name]
|
||||
var/dam = E.get_damage()
|
||||
// make the choice of the organ depend on damage,
|
||||
// but also sometimes use one of the less damaged ones
|
||||
if(dam > maxdam && (maxdam == 0 || prob(70)) )
|
||||
damaged_organ = E
|
||||
maxdam = dam
|
||||
if(damaged_organ)
|
||||
pain(damaged_organ.display_name, maxdam, 0)
|
||||
@@ -10,8 +10,8 @@
|
||||
canmove = 0
|
||||
icon = null
|
||||
invisibility = 101
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
for(var/name in organs)
|
||||
del(organs[name])
|
||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'mob.dmi'
|
||||
@@ -51,8 +51,8 @@
|
||||
/mob/living/carbon/human/AIize()
|
||||
if (monkeyizing)
|
||||
return
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
for(var/name in organs)
|
||||
del(organs[name])
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/AIize()
|
||||
@@ -153,8 +153,8 @@
|
||||
canmove = 0
|
||||
icon = null
|
||||
invisibility = 101
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
for(var/name in organs)
|
||||
del(organs[name])
|
||||
if(client)
|
||||
//client.screen -= main_hud1.contents
|
||||
client.screen -= hud_used.contents
|
||||
@@ -216,8 +216,8 @@
|
||||
canmove = 0
|
||||
icon = null
|
||||
invisibility = 101
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
for(var/name in organs)
|
||||
del(organs[name])
|
||||
|
||||
var/alien_caste = pick("Hunter","Sentinel","Drone")
|
||||
var/mob/living/carbon/alien/humanoid/new_xeno
|
||||
@@ -256,8 +256,8 @@
|
||||
canmove = 0
|
||||
icon = null
|
||||
invisibility = 101
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
for(var/name in organs)
|
||||
del(organs[name])
|
||||
|
||||
if(reproduce)
|
||||
var/number = pick(2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4)
|
||||
|
||||
@@ -708,6 +708,36 @@
|
||||
H.merge(H2)
|
||||
|
||||
H.loc = P
|
||||
|
||||
if((P.dir & (P.dir - 1)) || istype(P,/obj/structure/disposalpipe/junction) || istype(P,/obj/structure/disposalpipe/sortjunction))
|
||||
for(var/mob/M in H)
|
||||
M.weakened += 2
|
||||
if(prob(20))
|
||||
M.paralysis += 2
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
var/name = pick(M:organs)
|
||||
var/datum/organ/external/temp = M:organs[name]
|
||||
if (istype(temp, /datum/organ/external))
|
||||
temp.take_damage(4, 0)
|
||||
if(temp.name == "head")
|
||||
M.paralysis += 4
|
||||
M << "\red Your head smashes into a rogue piece of metal!"
|
||||
else if(temp.name == "groin")
|
||||
M.weakened += 4
|
||||
M << "\red You're gonna remember that one in the morning!"
|
||||
M:UpdateDamageIcon()
|
||||
//M:UpdateDamage() //doesnt fucking exist if you arent a blob
|
||||
else
|
||||
M.bruteloss += 4
|
||||
if(prob(2))
|
||||
M << "\red Your elbow doesn't bend that way, dammit!"
|
||||
//else
|
||||
// M << "\red <b>You are tossed about in the pipes!</b>"
|
||||
M << 'clang.ogg'
|
||||
for (var/mob/O in hearers(get_turf(src)))
|
||||
O << "<FONT size=[max(0, 5 - get_dist(src, M))]>CLONG!</FONT>"
|
||||
|
||||
playsound(src.loc, 'clang.ogg', 50, 0, 0)
|
||||
else // if wasn't a pipe, then set loc to turf
|
||||
H.loc = T
|
||||
return null
|
||||
@@ -750,7 +780,7 @@
|
||||
H.active = 0
|
||||
H.loc = src
|
||||
return
|
||||
if(T.intact && istype(T,/turf/simulated/floor)) //intact floor, pop the tile
|
||||
if(istype(T,/turf/simulated/floor) && T.intact) //intact floor, pop the tile
|
||||
var/turf/simulated/floor/F = T
|
||||
//F.health = 100
|
||||
F.burnt = 1
|
||||
|
||||
@@ -486,9 +486,13 @@ Doing this because FindTurfs() isn't even used
|
||||
e.bandaged = 0.0
|
||||
e.wound_size = 0.0
|
||||
e.max_damage = initial(e.max_damage)
|
||||
e.broken = 0
|
||||
e.destroyed = 0
|
||||
e.perma_injury = 0
|
||||
e.update_icon()
|
||||
if(src.type == /mob/living/carbon/human)
|
||||
var/mob/living/carbon/human/H = src
|
||||
H.update_body()
|
||||
H.UpdateDamageIcon()
|
||||
else
|
||||
alert("Debugging off")
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ SQL_ENABLED 0
|
||||
PROBABILITY EXTENDED 0
|
||||
PROBABILITY TRAITOR 4
|
||||
PROBABILITY METEOR 0
|
||||
PROBABILITY MALFUNCTION 1
|
||||
PROBABILITY MALFUNCTION 0
|
||||
PROBABILITY BLOB 1
|
||||
PROBABILITY NUCLEAR 0
|
||||
PROBABILITY SANDBOX 0
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
### HEALTH ###
|
||||
|
||||
## level of health at which a mob becomes unconscious (crit)
|
||||
HEALTH_THRESHOLD_CRIT 0
|
||||
HEALTH_THRESHOLD_CRIT -50
|
||||
|
||||
## level of health at which a mob becomes dead
|
||||
HEALTH_THRESHOLD_DEAD -100
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.5 KiB |
+65
-65
@@ -2748,7 +2748,7 @@
|
||||
"baR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
|
||||
"baS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
|
||||
"baT" = (/obj/structure/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/extinguisher,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
|
||||
"baU" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"baU" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/obj/item/weapon/storage/pill_bottle/tramadol{pixel_x = 8},/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"baV" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"baW" = (/obj/structure/morgue,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
|
||||
"baX" = (/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
|
||||
@@ -3621,7 +3621,7 @@
|
||||
"brG" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/crew_quarters/bar)
|
||||
"brH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/sortjunction{sortType = list("Bar")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
|
||||
"brI" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
|
||||
"brJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table,/obj/item/weapon/storage/backpack/medic{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/backpack/medic{pixel_x = 3; pixel_y = 6},/obj/item/weapon/cleaner,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"brJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table,/obj/item/weapon/storage/backpack/medic{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/backpack/medic{pixel_x = 3; pixel_y = 6},/obj/item/weapon/cleaner,/obj/machinery/light{dir = 8},/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/storage/pill_bottle/tramadol,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"brK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"brL" = (/obj/structure/closet/secure_closet/medical1{pixel_x = 5},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/medical/medbay)
|
||||
"brM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
@@ -4468,60 +4468,60 @@
|
||||
"bHV" = (/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Obshutter"; name = "Observation Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/surgery)
|
||||
"bHW" = (/obj/structure/table,/obj/item/weapon/cigpacket,/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bHX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bHY" = (/obj/machinery/optable{id = "medbay"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bHZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bIa" = (/obj/structure/table,/obj/item/weapon/circular_saw,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bIb" = (/obj/machinery/r_n_d/server{id_with_download_string = "1"; id_with_upload_string = "1"; name = "Core R&D Server"; server_id = 1},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
|
||||
"bIc" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = "SS13"; pixel_x = 22},/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
|
||||
"bId" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = "RD"},/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
|
||||
"bIe" = (/obj/machinery/blackbox_recorder,/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
|
||||
"bIf" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
|
||||
"bIg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/sign/biohazard{pixel_x = 28},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
|
||||
"bIh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/requests_console{department = "Xenobiology"; departmentType = 0; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bIi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bIj" = (/obj/structure/stool/chair,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bIk" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bIl" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bIm" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/apmaint)
|
||||
"bIn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/apmaint)
|
||||
"bIo" = (/turf/simulated/wall,/area/assembly/chargebay)
|
||||
"bIp" = (/obj/machinery/recharge_station,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay)
|
||||
"bIq" = (/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay)
|
||||
"bIr" = (/obj/machinery/door/airlock/maintenance{name = "Assembly Line Maintenance"; req_access_txt = "12;29"},/turf/simulated/floor/plating,/area/maintenance/apmaint)
|
||||
"bIs" = (/obj/effect/showcase{icon_state = "showcase_3"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/assembly/chargebay)
|
||||
"bIt" = (/obj/machinery/light,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/assembly/chargebay)
|
||||
"bIu" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/aft)
|
||||
"bIv" = (/obj/machinery/atmospherics/pipe/simple{color = "cyan"; dir = 10; icon_state = "intact-c"; initialize_directions = 10; level = 2},/turf/simulated/wall,/area/maintenance/asmaint)
|
||||
"bIw" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "bot"},/area/atmos)
|
||||
"bIx" = (/obj/machinery/light/small,/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "bot"},/area/atmos)
|
||||
"bIy" = (/obj/machinery/dispenser{pltanks = 0},/turf/simulated/floor,/area/atmos)
|
||||
"bIz" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/atmos)
|
||||
"bIA" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor{icon_state = "warning"},/area/atmos)
|
||||
"bIB" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor{icon_state = "warning"},/area/atmos)
|
||||
"bIC" = (/obj/machinery/portable_atmospherics/canister/air,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/atmos)
|
||||
"bID" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor,/area/atmos)
|
||||
"bIE" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/turf/simulated/floor,/area/atmos)
|
||||
"bIF" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/simulated/floor,/area/atmos)
|
||||
"bIG" = (/obj/machinery/atmospherics/pipe/manifold{color = "yellow"; dir = 8; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/atmos)
|
||||
"bIH" = (/obj/machinery/atmospherics/pipe/manifold{color = "yellow"; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/atmos)
|
||||
"bII" = (/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "yellow"; icon_state = "intact-y"; level = 2},/turf/simulated/floor,/area/atmos)
|
||||
"bIJ" = (/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/atmos)
|
||||
"bIK" = (/obj/machinery/atmospherics/pipe/simple{color = "yellow"; icon_state = "intact-y"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/simulated/floor,/area/atmos)
|
||||
"bIL" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Mix to Tank/Distro"; on = 1},/turf/simulated/floor,/area/atmos)
|
||||
"bIM" = (/obj/machinery/atmospherics/valve/digital{color = "yellow"; dir = 4; name = "Gas Mix Outlet Valve"},/turf/simulated/floor{icon_state = "green"; dir = 6},/area/atmos)
|
||||
"bIN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; initialize_directions = 12; level = 1},/obj/machinery/atmospherics/pipe/simple{color = "cyan"; icon_state = "intact-c"},/turf/simulated/floor/plating,/area/atmos)
|
||||
"bIO" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; initialize_directions = 12; level = 1},/turf/space,/area)
|
||||
"bIP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "waste_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/atmos)
|
||||
"bIQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"bIR" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
|
||||
"bIS" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
|
||||
"bIT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/cmo)
|
||||
"bIU" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Surgery Observation"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
|
||||
"bIV" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
|
||||
"bIW" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
|
||||
"bIX" = (/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Obshutter"; name = "Observation Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/surgery)
|
||||
"bIY" = (/obj/structure/table,/obj/item/weapon/surgicaldrill,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bIZ" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bHY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bHZ" = (/obj/structure/table,/obj/item/weapon/circular_saw,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bIa" = (/obj/machinery/r_n_d/server{id_with_download_string = "1"; id_with_upload_string = "1"; name = "Core R&D Server"; server_id = 1},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
|
||||
"bIb" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = "SS13"; pixel_x = 22},/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
|
||||
"bIc" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = "RD"},/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
|
||||
"bId" = (/obj/machinery/blackbox_recorder,/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/grid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
|
||||
"bIe" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
|
||||
"bIf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/sign/biohazard{pixel_x = 28},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
|
||||
"bIg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/requests_console{department = "Xenobiology"; departmentType = 0; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bIh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bIi" = (/obj/structure/stool/chair,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bIj" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bIk" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bIl" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/apmaint)
|
||||
"bIm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/apmaint)
|
||||
"bIn" = (/turf/simulated/wall,/area/assembly/chargebay)
|
||||
"bIo" = (/obj/machinery/recharge_station,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay)
|
||||
"bIp" = (/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay)
|
||||
"bIq" = (/obj/machinery/door/airlock/maintenance{name = "Assembly Line Maintenance"; req_access_txt = "12;29"},/turf/simulated/floor/plating,/area/maintenance/apmaint)
|
||||
"bIr" = (/obj/effect/showcase{icon_state = "showcase_3"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/assembly/chargebay)
|
||||
"bIs" = (/obj/machinery/light,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/assembly/chargebay)
|
||||
"bIt" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/hallway/primary/aft)
|
||||
"bIu" = (/obj/machinery/atmospherics/pipe/simple{color = "cyan"; dir = 10; icon_state = "intact-c"; initialize_directions = 10; level = 2},/turf/simulated/wall,/area/maintenance/asmaint)
|
||||
"bIv" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "bot"},/area/atmos)
|
||||
"bIw" = (/obj/machinery/light/small,/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "bot"},/area/atmos)
|
||||
"bIx" = (/obj/machinery/dispenser{pltanks = 0},/turf/simulated/floor,/area/atmos)
|
||||
"bIy" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/atmos)
|
||||
"bIz" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor{icon_state = "warning"},/area/atmos)
|
||||
"bIA" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor{icon_state = "warning"},/area/atmos)
|
||||
"bIB" = (/obj/machinery/portable_atmospherics/canister/air,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/atmos)
|
||||
"bIC" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor,/area/atmos)
|
||||
"bID" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/turf/simulated/floor,/area/atmos)
|
||||
"bIE" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/simulated/floor,/area/atmos)
|
||||
"bIF" = (/obj/machinery/atmospherics/pipe/manifold{color = "yellow"; dir = 8; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/atmos)
|
||||
"bIG" = (/obj/machinery/atmospherics/pipe/manifold{color = "yellow"; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/atmos)
|
||||
"bIH" = (/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "yellow"; icon_state = "intact-y"; level = 2},/turf/simulated/floor,/area/atmos)
|
||||
"bII" = (/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/atmos)
|
||||
"bIJ" = (/obj/machinery/atmospherics/pipe/simple{color = "yellow"; icon_state = "intact-y"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/simulated/floor,/area/atmos)
|
||||
"bIK" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Mix to Tank/Distro"; on = 1},/turf/simulated/floor,/area/atmos)
|
||||
"bIL" = (/obj/machinery/atmospherics/valve/digital{color = "yellow"; dir = 4; name = "Gas Mix Outlet Valve"},/turf/simulated/floor{icon_state = "green"; dir = 6},/area/atmos)
|
||||
"bIM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; initialize_directions = 12; level = 1},/obj/machinery/atmospherics/pipe/simple{color = "cyan"; icon_state = "intact-c"},/turf/simulated/floor/plating,/area/atmos)
|
||||
"bIN" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; initialize_directions = 12; level = 1},/turf/space,/area)
|
||||
"bIO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "waste_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/atmos)
|
||||
"bIP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"bIQ" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
|
||||
"bIR" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
|
||||
"bIS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/cmo)
|
||||
"bIT" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Surgery Observation"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
|
||||
"bIU" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
|
||||
"bIV" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
|
||||
"bIW" = (/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Obshutter"; name = "Observation Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/surgery)
|
||||
"bIX" = (/obj/structure/table,/obj/item/weapon/surgicaldrill,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bIY" = (/obj/machinery/optable{id = "medbay"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bIZ" = (/obj/structure/table,/obj/item/weapon/surgical_tool/bonegel,/obj/item/weapon/surgical_tool/bonecracker,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bJa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
|
||||
"bJb" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
|
||||
"bJc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
|
||||
@@ -4645,7 +4645,7 @@
|
||||
"bLq" = (/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Obshutter"; name = "Observation Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/surgery)
|
||||
"bLr" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bLs" = (/obj/structure/table,/obj/machinery/light,/obj/item/device/radio/intercom{pixel_y = -25},/obj/item/weapon/cleaner,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bLt" = (/obj/machinery/vending/wallmed2{pixel_y = -28},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bLt" = (/obj/machinery/vending/wallmed2{pixel_y = -28},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bLu" = (/obj/structure/closet/crate/freezer,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bLv" = (/turf/simulated/wall/r_wall,/area/medical/virology)
|
||||
"bLw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/window/reinforced,/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/medical/research{name = "Research Division"})
|
||||
@@ -7954,16 +7954,16 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDPbwhbDQbwhbDRaaaaaeaaaaaebsnbsnbAebDSbDSbDSbDSbAfbDTaaaaaaaaaboMbDUbDVbDWbDXbDYbDZbEabEbbEbbEcbEdbEebEfbEbbEgbEgbEhbEibEjbEkbALbElbCVbEmbCWbEnbEobCVbCVbEobCVbDdbDebEpbEqbErbEsbEtbEubEvbEwbCVbExaaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaabsAbEybEzbEAbEBbEBbEBbEBbEBbECbkXbEDbEEbEFbEGbEHbEIbEJbzBbEKbEKbELbEMbENbEObEPbEQbERbESbETbEUbEVbEWbEXbEYbETbEZbFabFbbFabCqbhebllaYdaYdbtlbtlbtlbtlbtlaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabtqbFcbyHbyHbyHbyHbyHbFdbuLbyGbyHbFebuLbuLbuLbuLbtqaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaaaaeaaeaaaaaeaaaaaaaaaboMboMbDVbFfbFgbCNboMboMboMboMbFhbFibCPbFibFjbFkbFlbFmbFnbplbFobsAbFpbCVbCVbFqbCVbCVbCVbCVbFrbFsbFtbFubCVbEqbFvbFwbFxbCVbFybFzbFAbExaaebFBbFBbFBbFBbFBaaeaaeaaeaaeaaebsAbsAbFCbFDbEBbFEbFFbFGbFHbFIbFJbxdbxdbxdbFKbFLbFMbxdbxdbxdbzBbFNbFObFPbFQbFRbEQboCbFSbCqbFTbFbbFUbFbbFVbCqbFWbFXbFYbFZbCqbGabllbGbaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebtqbuLbuLbuLbuLbuLbuLbBsbuLbFebuLbuLbuLbuLbuLbtqbtqaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaaeboMbDVbGcbGdbGebGdbGdbGfboMbGgbGhbGibGhbGjbFkbGkbGlbswbGmbGnbsAbGobCVbGpbCWbGqbCVbCVbCVbDebGrbGsbGtbFAbEqbGubGvbGwbGxbGybGzbGAbGBbGCbGDbGEbGFbGGbFBaaeaaaaaaaaaaaaaaebGHbFCbFDbEBbGIbGJbGKbGLbGMbGNbxdbGObGPbGQbGRbAUbGSbGTbGUbzBbGVbEQbGWbEQbGVbEQboCbGXbGYbGZbHabHbbHbbHbbHcbHbbDEbHdbHebCqbCqbllbHfaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabtqbtqbzZbuLbuLbuLbuLbHgbuLbuLbuLbuLbuLbuLbtqbtqaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeboMbHhbHiboMbCNboMboMbHjbHkbGdbGdbHlbqfbqfbFkbHmbGlbpcbplbpcbHnbCVbCVbCVbHobHpbHqbHrbHsbHtbGrbHubHvbHwbHxbHybHzbHAbHBbHCbHDbHEbExaaebHFbHGbGGbHHbFBaaeaaaaaaaaaaaaaaebHIbHJbHKbHLbHMbHNbHObHPbHQbHRbHSbHTbHUbHVbHWbHXbHYbHZbIabzBbIbbIcbFPbIdbIebEQbIfbIgbETbIhbIibFbbIjbFbbIibFbbFbbIkbIkbIlbCqbllaYdaYdaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebtqbtqbCxbCvbCvbuLbuLbuLbuLbuLbuLbuLbuLbtqbtqaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaabImbDVbInbIobIpbIqboMboMboMboMboMboMbIrboMbFkbIsbItbpcbplbIubIvbIwbIxbIybHobIzbIAbIBbICbHtbBLbIDbIEbCVbIFbIGbIHbIIbIJbIKbILbIMbINbIObGDbIPbGGbGGbFBaaeaaeaaeaaeaaeaaebHIbFCbIQbEBbIRbISbGKbITbsVaZtbIUbIVbIWbIXbIYbAUbAUbAUbIZbzBbJabFPbJbbFPbJcbEQbJdbJebCqbJfbJgbJhbJibJjbJkbJlbJmbJnbJobJpbJqbJrbJsbJtaYdaYdaaaaaaaaeaaaaaaaaebJubJubJuaaaaaaaaeaaaaaaaaeaaaaaaaaeaaaaaabtqbtqbwcbtqbtqbuLbuLbuLbuLbuLbuLbuLbtqbtqaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaeaaaaaaaaabJvbDVbFfbIobJwbJxbJybJxbJzbJxbJybJxbJAbIobFkbFkbJBbJCbJDbJEbJFbsAbJGbJGbCWbJGbJGbJGbJGbJHbJIbDkbDkbDkbJJbJKbJLbJKbJMbJNbJObJLbJPaaebFBbFBbFBbFBbFBaaeaaaaaaaaaaaaaaebHIbFCbJQbJRbJSbJTbJUbJVbJWbqDbJXbJYbJZbKabKbbKcbKcbKdbKebzBbKfbKgbKhbKgbKibEQbKjbKkbCqbKlbKmbKnbKobKpbKqbKrbKobKsbKpbKlbCqbKtbKubKvbKubKvbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKxbKybKzbKAbtqbtqbuLbuLbKBbuLbuLbtqbtqaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeboMbHhbHiboMbCNboMboMbHjbHkbGdbGdbHlbqfbqfbFkbHmbGlbpcbplbpcbHnbCVbCVbCVbHobHpbHqbHrbHsbHtbGrbHubHvbHwbHxbHybHzbHAbHBbHCbHDbHEbExaaebHFbHGbGGbHHbFBaaeaaaaaaaaaaaaaaebHIbHJbHKbHLbHMbHNbHObHPbHQbHRbHSbHTbHUbHVbHWbHXbHXbHYbHZbzBbIabIbbFPbIcbIdbEQbIebIfbETbIgbIhbFbbIibFbbIhbFbbFbbIjbIjbIkbCqbllaYdaYdaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebtqbtqbCxbCvbCvbuLbuLbuLbuLbuLbuLbuLbuLbtqbtqaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaabIlbDVbImbInbIobIpboMboMboMboMboMboMbIqboMbFkbIrbIsbpcbplbItbIubIvbIwbIxbHobIybIzbIAbIBbHtbBLbICbIDbCVbIEbIFbIGbIHbIIbIJbIKbILbIMbINbGDbIObGGbGGbFBaaeaaeaaeaaeaaeaaebHIbFCbIPbEBbIQbIRbGKbISbsVaZtbITbIUbIVbIWbIXbAUbIYbAUbIZbzBbJabFPbJbbFPbJcbEQbJdbJebCqbJfbJgbJhbJibJjbJkbJlbJmbJnbJobJpbJqbJrbJsbJtaYdaYdaaaaaaaaeaaaaaaaaebJubJubJuaaaaaaaaeaaaaaaaaeaaaaaaaaeaaaaaabtqbtqbwcbtqbtqbuLbuLbuLbuLbuLbuLbuLbtqbtqaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaeaaaaaaaaabJvbDVbFfbInbJwbJxbJybJxbJzbJxbJybJxbJAbInbFkbFkbJBbJCbJDbJEbJFbsAbJGbJGbCWbJGbJGbJGbJGbJHbJIbDkbDkbDkbJJbJKbJLbJKbJMbJNbJObJLbJPaaebFBbFBbFBbFBbFBaaeaaaaaaaaaaaaaaebHIbFCbJQbJRbJSbJTbJUbJVbJWbqDbJXbJYbJZbKabKbbKcbKcbKdbKebzBbKfbKgbKhbKgbKibEQbKjbKkbCqbKlbKmbKnbKobKpbKqbKrbKobKsbKpbKlbCqbKtbKubKvbKubKvbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKwbKxbKybKzbKAbtqbtqbuLbuLbKBbuLbuLbtqbtqaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaboMboMboMboMboMbKCbKDbKEbKFbKGbKHbKIbJAbKGbKHbKIbJAbKJbKKbKLbKMbpcbplbKNbKObKPbKQbKRbKSbKTbKUbKVbKWbKXbCVbCVbKYbCVbKZbLabLbbLcbLdbHybLebLfbLgbGCbGDbLhbLibLibFBaaeaaaaaaaaaaaaaaebHIbFCbFDbEBbLjbLkbLlbLmbsVbLnbxdbLobLpbLqbLrbAUbLsbLtbLubzBbLvbLvbLvbLvbEQbEQbKjbLwbCqbCqbCqbLxbLybLybLybLzbLybLybCqbCqbCqbLAaZMaYdaYdaYdaaaaaaabVaaaaaaaaebJubJubJuaaaaaaaaeaaaaaaaaeaaaaaaaaeaaeaaebLBbLCbLDbLEbtqbtqbtqbuLbuMbuLbtqbtqaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaabImbLFbqfbLGbLHbLIbLJbLKbLLbJAbJAbJAbJAbJAbJAbJAbJAbKJbKKbpcbKMbpcbplbLMbLNbLObLPbLQbLRbLSbFrbLTbLUbLVbCVbLWbLXbCVbLYbLZbMabCVbMbbLabMcbMdbExaaebHFbMebMfbMgbFBaaeaaeaaeaaeaaeaaebMhbFCbFDbEBbEBbEBbEBbEBbsVaZtbxdbxdbxdbxdbxdbFMbLvbLvbLvbLvbMibMjbMkbLvbMlbMmbMnbMobMpbMqbCqbLybLybLybLybMrbLybLybCqbMsbMtbMubMvaYdaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebMwbtobtobtpbtqbtqbtqbtqbtqbtqbtqaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaeaaabJvbqebqfbMxbqfbDVboMbIobMybJxbJxbJxbJAbJxbJxbJxbMzbIobIobIobMAbMBbplbMCbMDbMEbMFbMGbMHbMIbMJbMKbMFbMLbMMbLPbLPbLPbMNbMObMObMPbMbbIGbMQbMRbMSbMTbGDbMUbLibLibFBaaeaaaaaaaaaaaaaaebsAbFCbFDbMVbMWaZtbMXaZtbsVaZtbMYbMZbNabNbbNcbAUbNdbNebNfbNgbNhbNibNjbNkbNlbNmbNnbNobNpbNqbCqbNrbNsbLybLybLybNsbNtbCqbLAbNubNvbNwbJuaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaisaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaabNxbNxbNxboMbqfbNyboMbHhboMbIqbJAbKGbKHbNzbJAbKGbKHbKIbJAbJAbNAbJAbNBbpcbplbNCbsxbNDbLPbNEbNFbNGbNHbNIbJGbNJbMbbNKbLPbNLbNMbMPbNMbNNbMbbHybMcbNObExaaebFBbFBbFBbFBbFBaaeaaaaaaaaaaaaaaebsAbFCbFDbsAaZrbNPbNQbNRbNSaZtbNTbAUbAUbCebAUbAUbNUbNVbNWbNXbNYbNVbNZbLvbOabOabObbOcbOabOabCqbLybLybLybOdbLybLybLybCqbLAbOeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaabNxbOfbOgboMbqfbMxboMbOhbOibIqbJAbJAbOjbJAbOkbJAbOlbJAbJAbJAbOlbJAbNBbpcbplbpcbOmbOnbOobOpbJGbGqbLRbOqbJGbHtbMbbNKbLPbNLbNMbNNbNMbNNbOrbHybOsbOtbLgbGCbGDbOubOvbOwbFBaaeaaeaaeaaeaaeaaebsAbOxbOybOzbfvbfvbfvbOAbsVbOBbMYbOCbODbOEbOFbODbNdbOGbOHbLvbOIbNVbOJbLvbLvbLvbLvbLvbLvbLvbLvbCqbCqbCqbCqbCqbCqbCqbCqbOKaYdaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaisaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaabIlbLFbqfbLGbLHbLIbLJbLKbLLbJAbJAbJAbJAbJAbJAbJAbJAbKJbKKbpcbKMbpcbplbLMbLNbLObLPbLQbLRbLSbFrbLTbLUbLVbCVbLWbLXbCVbLYbLZbMabCVbMbbLabMcbMdbExaaebHFbMebMfbMgbFBaaeaaeaaeaaeaaeaaebMhbFCbFDbEBbEBbEBbEBbEBbsVaZtbxdbxdbxdbxdbxdbFMbLvbLvbLvbLvbMibMjbMkbLvbMlbMmbMnbMobMpbMqbCqbLybLybLybLybMrbLybLybCqbMsbMtbMubMvaYdaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebMwbtobtobtpbtqbtqbtqbtqbtqbtqbtqaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaeaaabJvbqebqfbMxbqfbDVboMbInbMybJxbJxbJxbJAbJxbJxbJxbMzbInbInbInbMAbMBbplbMCbMDbMEbMFbMGbMHbMIbMJbMKbMFbMLbMMbLPbLPbLPbMNbMObMObMPbMbbIFbMQbMRbMSbMTbGDbMUbLibLibFBaaeaaaaaaaaaaaaaaebsAbFCbFDbMVbMWaZtbMXaZtbsVaZtbMYbMZbNabNbbNcbAUbNdbNebNfbNgbNhbNibNjbNkbNlbNmbNnbNobNpbNqbCqbNrbNsbLybLybLybNsbNtbCqbLAbNubNvbNwbJuaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaisaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaabNxbNxbNxboMbqfbNyboMbHhboMbIpbJAbKGbKHbNzbJAbKGbKHbKIbJAbJAbNAbJAbNBbpcbplbNCbsxbNDbLPbNEbNFbNGbNHbNIbJGbNJbMbbNKbLPbNLbNMbMPbNMbNNbMbbHybMcbNObExaaebFBbFBbFBbFBbFBaaeaaaaaaaaaaaaaaebsAbFCbFDbsAaZrbNPbNQbNRbNSaZtbNTbAUbAUbCebAUbAUbNUbNVbNWbNXbNYbNVbNZbLvbOabOabObbOcbOabOabCqbLybLybLybOdbLybLybLybCqbLAbOeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaabNxbOfbOgboMbqfbMxboMbOhbOibIpbJAbJAbOjbJAbOkbJAbOlbJAbJAbJAbOlbJAbNBbpcbplbpcbOmbOnbOobOpbJGbGqbLRbOqbJGbHtbMbbNKbLPbNLbNMbNNbNMbNNbOrbHybOsbOtbLgbGCbGDbOubOvbOwbFBaaeaaeaaeaaeaaeaaebsAbOxbOybOzbfvbfvbfvbOAbsVbOBbMYbOCbODbOEbOFbODbNdbOGbOHbLvbOIbNVbOJbLvbLvbLvbLvbLvbLvbLvbLvbCqbCqbCqbCqbCqbCqbCqbCqbOKaYdaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaisaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaabNxbOfbOLbOMbGdbONboMbOObOObOPbOPbOPbOPbOPbOPbOPbOPbOQbOQbOPbOPbOPbORbOSbOTbpcbswbpcbpcbOUbOVbOWbOXbOYbOVbHtbOZbLPbLPbLPbPabNNbNMbNNbMbbHybMcbPbbExaaebHFbPcbPdbPebFBaaeaaaaaaaaaaaaaaebsAbPfbAJbPgbPhbPibcEbcEbPjbPkbxdbxdbxdbxdbxdbxdbLvbLvbPlbPmbPnbPobPpbPqbPrbPsbPtbPubPtbPvbPwbPxbPybPzbMtbMtbMtbMtbMtbMuaYdaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaadaadaagaadaadaadahOaadaadaadaagaagaaaaaaaaeaaeaaaaaaaaaaaaaaaaaabNxbOfbPAbOPbOPbPBbOPbPCbPDbOPbPEbPFbPGbOPbPHbPIbPJbPKbPKbPLbPMbEkbPNbpcbplbPObsxbPPbPQbPRbPSbJGbNFbBRbJGbNJbMbbLWbPTbPUbPVbMObPWbPXbMbbIGbPYbPZbMSbMTbGDbQabOvbOvbFBaaeaaaaaaaaaaaaaaeaaebsAbsAbsAbsAbxWbxXbxXbQbbvwbvwbvwbvwbvwbQcbvwbvwbvwbQdbQebQfbNVbQgbQhbQibNVbQjbQibQkbQlbQmbllbQnbNubQoaYdaYdaYdaYdaYdaYdaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaadaadaagaadaadaadahOaadaadaadaagaagaaaaaaaaeaaeaaaaaaaaaaaaaaaaaabNxbOfbPAbOPbOPbPBbOPbPCbPDbOPbPEbPFbPGbOPbPHbPIbPJbPKbPKbPLbPMbEkbPNbpcbplbPObsxbPPbPQbPRbPSbJGbNFbBRbJGbNJbMbbLWbPTbPUbPVbMObPWbPXbMbbIFbPYbPZbMSbMTbGDbQabOvbOvbFBaaeaaaaaaaaaaaaaaeaaebsAbsAbsAbsAbxWbxXbxXbQbbvwbvwbvwbvwbvwbQcbvwbvwbvwbQdbQebQfbNVbQgbQhbQibNVbQjbQibQkbQlbQmbllbQnbNubQoaYdaYdaYdaYdaYdaYdaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaeaaeaaaaaeaaeaaaaaaaaeaaeaaeaaaaagaaaaaeaaeaaaaaaaaaaaaaaaaaaaaabNxbOfbPAbQpbQqbPKbQrbQsbPKbQtbQubQvbPKbQwbPKbQvbPKbPKbPKbQxbQybpcbQzbQAbplbQBbQCbnXbnXbnXbnXbQDbQEbQFbJGbQGbQHbCVbHwbQIbCVbHAbQJbQKbQLbHCbMcbCVbExaaebFBbFBbFBbFBbFBaaeaaaaaaaaaaaaaaaaaeaaeaaaaaebJubsAbsAbsJbsJbsJbQMbQNbQNbQNbQObQNbQNbQNbllbQebQPbNVbQQbQRbQibQSbQTbQUbQVbQWbQmbllbQnbnFaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaabQXbQYbQZaaabQXbQYbQZaaabQXbQYbQZaaebRaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaabNxbOfbPAbRbbRcbPKbQubQsbPKbRdbRebRebRebRebRebRebRfbRebRgbQxbRhbpcbKMbpcbplbRibnYbRjbRkbRlbRmbRnbRobRpbBObRqbGvbPVbPVbPXbRrbRsbRtbGwbRubHybRvbRwbLgbGCbGDbRxbRybRybFBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebsAbRzbRAbABbAAbQNbRBbRCbRDbREbRFbQNbllbQebRGbRHbRIbRJbRKbRLbRMbRNbRObRPbQmbllbRQbnFaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaabQXbRRbQZaaabQXbRRbQZaaabQXbRRbQZaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaabNxbOfbPAbOPbOPbRSbPKbQsbRTbRUbRUbRVbRWbPKbPKbRXbPKbPKbRYbRZbSabpcbSbbpcbplbScbnYbSdbRnbSebSfbSgbShbSibJGbCVbMbbDjbDmbDkbSjbSkbEubSlbSmbHybMcbSnbExaaebHFbSobSpbSqbFBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebQNbQNbQNbQNbQNbQNbSrbSrbRDbSrbSsbQNbllbStbSubNVbRIbNVbSvbNVbNVbNVbNVbSwbQmbllbQnbnFaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
Reference in New Issue
Block a user