diff --git a/code/datums/shuttle_controller.dm b/code/datums/shuttle_controller.dm index 356ac366ed4..5ea2e3367cb 100644 --- a/code/datums/shuttle_controller.dm +++ b/code/datums/shuttle_controller.dm @@ -29,7 +29,7 @@ datum/shuttle_controller // if not called before, set the endtime to T+600 seconds // otherwise if outgoing, switch to incoming proc/incall(coeff = 1) - if(deny_shuttle) + if(deny_shuttle && alert == 1) //crew transfer shuttle does not gets recalled by gamemode return if(endtime) @@ -38,12 +38,12 @@ datum/shuttle_controller else settimeleft(SHUTTLEARRIVETIME*coeff) online = 1 - //turning on the red lights in hallways and siren - if(coeff == 1) + //turning on the red lights in hallways + if(alert == 0) for(var/area/A in world) if(istype(A, /area/hallway)) A.readyalert() - //sound_siren = 1 + proc/shuttlealert(var/X) alert = X diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 0a87ba0ec5b..8bf065bbea1 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -482,8 +482,8 @@ user << "Under directive 7-10, [station_name()] is quarantined until further notice." return + emergency_shuttle.shuttlealert(0) emergency_shuttle.incall() - emergency_shuttle.shuttlealert(1) log_game("[key_name(user)] has called the shuttle.") message_admins("[key_name_admin(user)] has called the shuttle.", 1) captain_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.") @@ -523,8 +523,8 @@ user << "Under directive 7-10, [station_name()] is quarantined until further notice." return - emergency_shuttle.incall() emergency_shuttle.shuttlealert(1) + emergency_shuttle.incall() log_game("[key_name(user)] has called the shuttle.") message_admins("[key_name_admin(user)] has called the shuttle.", 1) captain_announce("A crew transfer has been initiated. The shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.") diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 3287321aced..7ebcc9242d6 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1,3 +1,9 @@ +/obj/item/Del() + if (src.loc && istype(src.loc, /mob/living/carbon/human)) + //world << "\blue **Beep! Deleted [src] from [src.loc]**" + var/mob/living/carbon/human/H = src.loc + H.u_equip(src) + ..() /obj/item/weapon/bedsheet/ex_act(severity) if (severity <= 2) diff --git a/code/game/objects/items/weapons/medical.dm b/code/game/objects/items/weapons/medical.dm index e827156a11c..5752ef8601a 100644 --- a/code/game/objects/items/weapons/medical.dm +++ b/code/game/objects/items/weapons/medical.dm @@ -8,6 +8,8 @@ MEDICAL /obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob) var/heal_cap = 50 + var/ointment = istype(src, /obj/item/stack/medical/advanced/ointment) \ + || istype(src, /obj/item/stack/medical/ointment) if(istype(src, /obj/item/stack/medical/advanced)) heal_cap = 0 @@ -89,7 +91,12 @@ MEDICAL if (user) if (M != user) - user.visible_message("\red \The [H]'s [affecting.display_name] has been bandaged with \a [src] by \the [user].",\ + if ( ointment ) + user.visible_message("\red \The [H]'s [affecting.display_name] burns have been salved with \a [src] by \the [user].",\ + "\red You salve \the [H]'s [affecting.display_name] burns with \the [src].",\ + "ou hear ointement being applied.") + else + user.visible_message("\red \The [H]'s [affecting.display_name] has been bandaged with \a [src] by \the [user].",\ "\red You bandage \the [H]'s [affecting.display_name] with \the [src].",\ "You hear gauze being ripped.") else @@ -98,17 +105,26 @@ MEDICAL t_his = "his" else if (user.gender == FEMALE) t_his = "her" - user.visible_message("\red \The [user] bandages [t_his] [affecting.display_name] with \a [src].",\ + if ( ointment ) + user.visible_message("\red \The [user] salves [t_his] [affecting.display_name] burns with \a [src].",\ + "\red You salve your [affecting.display_name] burns with \the [src].",\ + "You hear ointement being applied.") + else + user.visible_message("\red \The [user] bandages [t_his] [affecting.display_name] with \a [src].",\ "\red You bandage your [affecting.display_name] with \the [src].",\ "You hear gauze being ripped.") use(1) + if (!ointment && (affecting.status & BLEEDING)) + affecting.status &= ~BLEEDING + if (affecting.heal_damage(src.heal_brute, src.heal_burn)) H.UpdateDamageIcon() else H.UpdateDamage() M.updatehealth() + else if (M.health < heal_cap) var/t_him = "it" diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index 1d05a02dc73..b24fd8440ed 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -24,6 +24,8 @@ CIRCULAR SAW if(((user.zone_sel.selecting == "l_arm") || (user.zone_sel.selecting == "r_arm") || (user.zone_sel.selecting == "l_leg") || (user.zone_sel.selecting == "r_leg")) & (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(user.zone_sel.selecting == "mouth" || user.zone_sel.selecting == "eyes") + S = H.organs["head"] if(S.status & DESTROYED) if(S.status & BLEEDING) user << "\red There's too much blood here!" @@ -300,9 +302,10 @@ CIRCULAR SAW if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/stool/bed/roller, M.loc) && (M.buckled || M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat)) && prob(75) || (locate(/obj/structure/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(66)))) return ..() + var/mob/living/carbon/human/H = M + var/datum/organ/external/S = H.organs[user.zone_sel.selecting] + if(((user.zone_sel.selecting == "l_arm") || (user.zone_sel.selecting == "r_arm") || (user.zone_sel.selecting == "l_leg") || (user.zone_sel.selecting == "r_leg")) & (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.status & DESTROYED) if(!(S.status & BLEEDING)) user << "\red There is nothing bleeding here!" @@ -349,6 +352,11 @@ CIRCULAR SAW M << "\red [user] begins to clamp bleeders in your chest with [src]!" user << "\red You clamp bleeders in [M]'s torso with [src]!" M:embryo_op_stage = 2.0 + + S.status &= ~BLEEDING + M.updatehealth() + M.UpdateDamageIcon() + return if(5.0) if(M != user) @@ -369,6 +377,11 @@ CIRCULAR SAW M << "\red [user] begins to clamp bleeders in your abdomen with [src]!" user << "\red You clamp bleeders in [M]'s abdomen with [src]!" M:appendix_op_stage = 2.0 + + S.status &= ~BLEEDING + M.updatehealth() + M.UpdateDamageIcon() + return if(4.0) if(M != user) @@ -386,8 +399,6 @@ CIRCULAR SAW return if (user.zone_sel.selecting == "eyes") - - var/mob/living/carbon/human/H = M if(istype(H) && ( \ (H.head && H.head.flags & HEADCOVERSEYES) || \ (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \ @@ -432,7 +443,6 @@ CIRCULAR SAW 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 @@ -443,8 +453,6 @@ CIRCULAR SAW return ..() if(user.zone_sel.selecting == "mouth") - - var/mob/living/carbon/human/H = M if(istype(H) && ( \ (H.head && H.head.flags & HEADCOVERSEYES) || \ (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \ @@ -497,6 +505,7 @@ CIRCULAR SAW M.face_op_stage = 2.0 + S.status &= ~BLEEDING M.updatehealth() M.UpdateDamageIcon() return @@ -614,7 +623,6 @@ CIRCULAR SAW else 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].", \ diff --git a/code/modules/mob/organ/organ.dm b/code/modules/mob/organ/organ.dm index 655a828750b..3911db351d0 100644 --- a/code/modules/mob/organ/organ.dm +++ b/code/modules/mob/organ/organ.dm @@ -69,11 +69,11 @@ var/list/wound_progressions = list( W.hits = hits W.time_inflicted = time_inflicted return W - +/* fuckign double defines #define CUT 0 #define BRUISE 1 #define BURN 2 - +*/ /**************************************************** EXTERNAL ORGANS ****************************************************/ @@ -415,6 +415,7 @@ var/list/wound_progressions = list( var/size = min( max( 1, damage/10 ) , 6) switch(type) if(CUT) + src.status |= BLEEDING var/list/size_names = list("cut", "deep cut", "flesh wound", "gaping wound", "big gaping wound", "massive wound") wound_name = size_names[size] if(wound_descs["[update_time]"]) diff --git a/code/setup.dm b/code/setup.dm index 843bfbbbc26..92e06912af6 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -371,6 +371,8 @@ var/list/global_mutations = list() // list of hidden mutation things //Damage things +#define CUT "cut" +#define BRUISE "bruise" #define BRUTE "brute" #define BURN "fire" #define TOX "tox"