diff --git a/SQL/migrate/V063__char_delete_update.sql b/SQL/migrate/V063__char_delete_update.sql new file mode 100644 index 00000000000..2462c3e1fc5 --- /dev/null +++ b/SQL/migrate/V063__char_delete_update.sql @@ -0,0 +1,7 @@ +-- +-- Adds a deleted_by and deleted reason to ss13_characters in preparation for player-permitted un-delete +-- + +ALTER TABLE `ss13_characters` + ADD COLUMN `deleted_by` ENUM('player','staff') NULL DEFAULT NULL AFTER `gear_slot`, + ADD COLUMN `deleted_reason` TEXT NULL AFTER `deleted_by`; diff --git a/code/_helpers/maths.dm b/code/_helpers/maths.dm index 8ddb79b320c..86443852787 100644 --- a/code/_helpers/maths.dm +++ b/code/_helpers/maths.dm @@ -164,4 +164,10 @@ // Returns 1 if N is inbetween Min and Max /proc/n_inrange(var/num, var/min=-1, var/max=1) if(isnum(num)&&isnum(min)&&isnum(max)) - return ((min <= num) && (num <= max)) \ No newline at end of file + return ((min <= num) && (num <= max)) + +#define MODULUS_FLOAT(X, Y) ( (X) - (Y) * round((X) / (Y)) ) + +// Will filter out extra rotations and negative rotations +// E.g: 540 becomes 180. -180 becomes 180. +#define SIMPLIFY_DEGREES(degrees) (MODULUS_FLOAT((degrees), 360)) \ No newline at end of file diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 1eef82c7480..67847656e9c 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -55,6 +55,22 @@ else if(dx<0) .+=360 +/proc/get_projectile_angle(atom/source, atom/target) + var/sx = source.x * world.icon_size + var/sy = source.y * world.icon_size + var/tx = target.x * world.icon_size + var/ty = target.y * world.icon_size + var/atom/movable/AM + if(ismovable(source)) + AM = source + sx += AM.step_x + sy += AM.step_y + if(ismovable(target)) + AM = target + tx += AM.step_x + ty += AM.step_y + return SIMPLIFY_DEGREES(arctan(ty - sy, tx - sx)) + //Returns location. Returns null if no location was found. /proc/get_teleport_loc(turf/location,mob/target,distance = 1, density = 0, errorx = 0, errory = 0, eoffsetx = 0, eoffsety = 0) /* diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 7e2c9f1cd85..6c1a10678b2 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -36,8 +36,8 @@ suit = /obj/item/clothing/suit/storage/toggle/labcoat/cmo suit_store = /obj/item/device/flashlight/pen shoes = /obj/item/clothing/shoes/brown - bowman = /obj/item/device/radio/headset/heads/cmo - headset = /obj/item/device/radio/headset/heads/cmo/alt + headset = /obj/item/device/radio/headset/heads/cmo + bowman = /obj/item/device/radio/headset/heads/cmo/alt tab_pda = /obj/item/modular_computer/handheld/pda/medical/cmo wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/medical/cmo tablet = /obj/item/modular_computer/handheld/preset/medical/cmo diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 5f723edcb38..de413f7685d 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -41,11 +41,11 @@ M.facing_dir = null M.update_canmove() else - MA.anchored = TRUE + MA.anchored = TRUE else return 0 post_buckle(MA) - MA.layer = src.layer + 1 + MA.layer = src.layer + 0.1 return 1 /obj/proc/unbuckle() @@ -91,8 +91,8 @@ "You hear metal clanking.") else MA.visible_message(\ - "[MA.name] is buckled_to to [src] by [user.name]!",\ - "You are buckled_to to [src] by [user.name]!",\ + "[MA.name] is buckled to [src] by [user.name]!",\ + "You are buckled to [src] by [user.name]!",\ "You hear metal clanking.") /obj/proc/user_unbuckle(mob/user) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index d40d396b496..effe6e985b7 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -1,7 +1,7 @@ //generic procs copied from obj/effect/alien /obj/effect/spider name = "web" - desc = "It's stringy and sticky, eugh. Probably came from one of those giant spiders..." + desc = "It's stringy and sticky, eugh. Probably came from one of those greimorians..." icon = 'icons/effects/effects.dmi' anchored = TRUE density = FALSE @@ -321,14 +321,14 @@ qdel(O) /obj/effect/decal/cleanable/spiderling_remains - name = "spiderling remains" + name = "greimorian larva remains" desc = "Green squishy mess." icon = 'icons/effects/effects.dmi' icon_state = "greenshatter" /obj/effect/spider/cocoon name = "cocoon" - desc = "Something wrapped in silky spider web" + desc = "Something wrapped in silky greimorian web" icon_state = "cocoon1" health = 60 diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm index 2aacfb113d6..10791d33656 100644 --- a/code/game/objects/structures/plasticflaps.dm +++ b/code/game/objects/structures/plasticflaps.dm @@ -24,7 +24,7 @@ return prob(60) var/obj/structure/bed/B = A - if (istype(A, /obj/structure/bed) && B.buckled)//if it's a bed/chair and someone is buckled_to, it will not pass + if (istype(A, /obj/structure/bed) && B.buckled)//if it's a bed/chair and someone is buckled, it will not pass return 0 if(istype(A, /obj/vehicle)) //no vehicles diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index f9c101b5000..092aeb85fd5 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -157,8 +157,8 @@ spawn(0) if(buckle(affecting)) affecting.visible_message(\ - "[affecting.name] is buckled_to to [src] by [user.name]!",\ - "You are buckled_to to [src] by [user.name]!",\ + "[affecting.name] is buckled to [src] by [user.name]!",\ + "You are buckled to [src] by [user.name]!",\ "You hear metal clanking.") qdel(W) diff --git a/code/modules/admin/verbs/bluespacetech.dm b/code/modules/admin/verbs/bluespacetech.dm index 0890dda59bc..a1fa9b5565e 100644 --- a/code/modules/admin/verbs/bluespacetech.dm +++ b/code/modules/admin/verbs/bluespacetech.dm @@ -415,7 +415,6 @@ /obj/item/clothing/glasses/sunglasses/bst name = "bluespace technician's glasses" desc = "A pair of modified sunglasses. The word 'BST' is stamped on the side." -// var/list/obj/item/clothing/glasses/hud/health/hud = null vision_flags = (SEE_TURFS|SEE_OBJS|SEE_MOBS) see_invisible = SEE_INVISIBLE_NOLIGHTING canremove = 0 @@ -443,12 +442,6 @@ to_chat(usr, "\The [src]'s vision mode is now [mode].") -/* New() - ..() - src.hud += new/obj/item/clothing/glasses/hud/security(src) - src.hud += new/obj/item/clothing/glasses/hud/health(src) - return -*/ /obj/item/clothing/glasses/sunglasses/bst/attack_hand() if(!usr) return diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index 0def4b93f61..5421cc8f7f8 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -109,6 +109,13 @@ allowed_roles = list("Chief Medical Officer", "Physician", "Surgeon", "Pharmacist", "First Responder", "Medical Intern") flags = GEAR_HAS_DESC_SELECTION +/datum/gear/suit/iaclabcoat + display_name = "IAC labcoat" + description = "It's a standard medical labcoat designed to be worn by the Interstellar Aid Corps." + path = /obj/item/clothing/suit/storage/toggle/labcoat/iac + allowed_roles = list("Chief Medical Officer", "Physician", "Surgeon", "Pharmacist", "First Responder", "Medical Intern") + flags = GEAR_HAS_DESC_SELECTION + /datum/gear/suit/poncho display_name = "poncho selection" path = /obj/item/clothing/accessory/poncho diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 9f72ab436c1..b2bef7eba92 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -378,7 +378,7 @@ datum/preferences else if(href_list["delete"]) if (!config.sql_saves) return 0 - if (alert(usr, "This will permanently delete the character you have loaded. Are you sure?", "Delete Character", "No", "Yes") == "Yes") + if (alert(usr, "You will be unable to re-create a character with the same name! Are you sure you want to delete the loaded character?", "Delete Character", "No", "Yes") == "Yes") delete_character_sql(usr.client) else return 0 @@ -671,7 +671,7 @@ datum/preferences to_chat(C, "Unable to establish database connection.") return - var/DBQuery/query = dbcon.NewQuery("UPDATE ss13_characters SET deleted_at = NOW() WHERE id = :char_id:") + var/DBQuery/query = dbcon.NewQuery("UPDATE ss13_characters SET deleted_at = NOW(), deleted_by = \"player\" WHERE id = :char_id:") query.Execute(list("char_id" = current_character)) // Create a new character. diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 5ee8edaacb0..f68cf941d62 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -100,3 +100,15 @@ name = "hephaestus labcoat" desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Comes in Hephaestus colours." icon_state = "labcoat_heph" + armor = list( + bio = ARMOR_BIO_RESISTANT + ) + +/obj/item/clothing/suit/storage/toggle/labcoat/iac + name = "iac labcoat" + desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Comes in IAC colors." + icon_state = "labcoat_iac" + item_state = "labcoat_iac" + armor = list( + bio = ARMOR_BIO_RESISTANT + ) diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index e3103e0d359..ee668ccc729 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -5,7 +5,7 @@ parent_organ = BP_HEAD icon = 'icons/mob/npc/alien.dmi' icon_state = "chitin" - vital = 1 + vital = TRUE /obj/item/organ/internal/brain/xeno name = "thinkpan" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 9f2fca3c919..5d602d6523b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1414,6 +1414,7 @@ species.handle_post_spawn(src,kpg) // should be zero by default maxHealth = species.total_health + health = maxHealth spawn(0) regenerate_icons() diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index fbf9c1ff88c..faec9a7c33a 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -378,7 +378,8 @@ This function restores all organs. /mob/living/carbon/human/proc/get_organ(var/zone) - if(!zone) zone = BP_CHEST + if(!zone) + zone = BP_CHEST if (zone in list(BP_EYES, BP_MOUTH)) zone = BP_HEAD return organs_by_name[zone] diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index de5a4aa5155..af58424ca5a 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -83,10 +83,21 @@ if (istype(buckled_to, /obj/structure/bed)) return - for(var/limb_tag in list(BP_L_LEG,BP_R_LEG,BP_L_FOOT,BP_R_FOOT)) + var/static/support_limbs = list( + BP_L_LEG = BP_R_LEG, + BP_L_FOOT = BP_R_FOOT + ) + var/has_opposite_limb = FALSE + + for(var/limb_tag in list(BP_L_LEG, BP_L_FOOT, BP_R_LEG, BP_R_FOOT)) var/obj/item/organ/external/E = organs_by_name[limb_tag] if(!E || (E.status & (ORGAN_MUTATED|ORGAN_DEAD)) || E.is_stump()) //should just be !E.is_usable() here but dislocation screws that up. - stance_damage += 2 // let it fail even if just foot&leg + has_opposite_limb = get_organ(support_limbs[limb_tag]) + if(!has_opposite_limb) + stance_damage += 10 //No walking for you with no supporting limb, buddy. + break + else + stance_damage += 2 else if (E.is_malfunctioning()) //malfunctioning only happens intermittently so treat it as a missing limb when it procs stance_damage += 2 @@ -100,20 +111,25 @@ // Canes and crutches help you stand (if the latter is ever added) // One cane mitigates a broken leg+foot, or a missing foot. - // Two canes are needed for a lost leg. If you are missing both legs, canes aren't gonna help you. - if (l_hand && istype(l_hand, /obj/item/cane)) - stance_damage -= 2 - if (r_hand && istype(r_hand, /obj/item/cane)) - stance_damage -= 2 + // No double caning allowed, sorry. Canes also don't work if you're missing a functioning pair of feet or legs. + if(has_opposite_limb) + if(l_hand && istype(l_hand, /obj/item/cane)) + stance_damage -= 2 + else if(r_hand && istype(r_hand, /obj/item/cane)) + stance_damage -= 2 - // standing is poor + //Standing is poor. if(stance_damage >= 4 || (stance_damage >= 2 && prob(5))) if(!(lying || resting)) emote("scream") if(!weakened) custom_emote(VISIBLE_MESSAGE, "collapses!") - Weaken(3) - next_stance_collapse = world.time + (rand(8, 16) SECONDS) + + if(stance_damage <= 5) + Weaken(3) + next_stance_collapse = world.time + (rand(8, 16) SECONDS) + else + Weaken(6) //No legs or feet means you should be really fucked. /mob/living/carbon/human/proc/handle_grasp() if(!l_hand && !r_hand) diff --git a/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm b/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm index e5ee3267085..70c4d205db8 100644 --- a/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm +++ b/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm @@ -83,20 +83,21 @@ zombie_type = SPECIES_ZOMBIE_SKRELL /datum/species/skrell/handle_post_spawn(mob/living/carbon/human/H) + ..() H.set_psi_rank(PSI_COERCION, PSI_RANK_OPERANT) /datum/species/skrell/handle_strip(var/mob/user, var/mob/living/carbon/human/H, var/action) switch(action) if("headtail") - if(!H.head) + if(!H.organs_by_name[BP_HEAD] || istype(H.organs_by_name[BP_HEAD], /obj/item/organ/external/stump)) to_chat(user, SPAN_WARNING("\The [H] doesn't have a head!")) return user.visible_message(SPAN_WARNING("\The [user] is trying to remove something from \the [H]'s headtails!")) - if(do_after(usr, HUMAN_STRIP_DELAY, act_target = H)) - var/obj/item/storage/internal/skrell/S = locate() in H.head + if(do_after(user, HUMAN_STRIP_DELAY, act_target = H)) + var/obj/item/storage/internal/skrell/S = locate() in H.organs_by_name[BP_HEAD] var/obj/item/I = locate() in S if(!I) - to_chat(usr, SPAN_WARNING("\The [H] had nothing in their headtail storage.")) + to_chat(user, SPAN_WARNING("\The [H] had nothing in their headtail storage.")) return S.remove_from_storage(I, get_turf(H)) return diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index b25ba1afa23..4d2f907f660 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -865,10 +865,13 @@ There are several things that need to be remembered: overlays_raw[shoe_layer] = ovr || result_layer else if(footprint_color) // Handles bloody feet. - var/image/bloodsies = image(species.blood_mask, "shoeblood") - bloodsies.color = footprint_color - bloodsies.appearance_flags = RESET_ALPHA - overlays_raw[SHOES_LAYER] = bloodsies + for(var/limb_tag in list(BP_L_FOOT, BP_R_FOOT)) + var/obj/item/organ/external/E = get_organ(limb_tag) + if(E && !E.is_stump()) + var/image/bloodsies = image(species.blood_mask, "shoeblood_[E.limb_name]") + bloodsies.color = footprint_color + bloodsies.appearance_flags = RESET_ALPHA + overlays_raw[SHOES_LAYER] = bloodsies else overlays_raw[SHOES_LAYER] = null overlays_raw[SHOES_LAYER_ALT] = null diff --git a/code/modules/mob/living/carbon/resist.dm b/code/modules/mob/living/carbon/resist.dm index 9eef2efb531..dbadb447cf2 100644 --- a/code/modules/mob/living/carbon/resist.dm +++ b/code/modules/mob/living/carbon/resist.dm @@ -113,7 +113,7 @@ var/buckle_message_user = "" var/buckle_message_other = "" - if(buckled_to) //If the person is buckled_to, also unbuckle the person + if(buckled_to) //If the person is buckled, also unbuckle the person buckle_message_user = " and unbuckle yourself" buckle_message_other = " and to unbuckle themself" buckled_to.user_unbuckle(src) diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index 198960bfb38..31faf8ca6dc 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -4,7 +4,7 @@ desc = "A piece of juicy meat found in a person's head." organ_tag = BP_BRAIN parent_organ = BP_HEAD - vital = 1 + vital = TRUE icon_state = "brain" force = 1.0 w_class = ITEMSIZE_SMALL diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm index de90c3dd3a7..e302111b342 100644 --- a/code/modules/organs/pain.dm +++ b/code/modules/organs/pain.dm @@ -3,7 +3,6 @@ animate(pain, alpha = target, time = 15, easing = ELASTIC_EASING) animate(pain, alpha = 0, time = 20) -mob/var/list/pain_stored = list() mob/var/last_pain_message = "" mob/var/next_pain_time = 0 diff --git a/code/modules/organs/subtypes/diona.dm b/code/modules/organs/subtypes/diona.dm index 716eaa52ed1..75479d7ab91 100644 --- a/code/modules/organs/subtypes/diona.dm +++ b/code/modules/organs/subtypes/diona.dm @@ -38,7 +38,7 @@ min_broken_damage = 50 w_class = ITEMSIZE_HUGE body_part = UPPER_TORSO - vital = 1 + vital = TRUE parent_organ = null limb_flags = 0 dislocated = -1 diff --git a/code/modules/organs/subtypes/machine.dm b/code/modules/organs/subtypes/machine.dm index d3378bc697a..60f78243acd 100644 --- a/code/modules/organs/subtypes/machine.dm +++ b/code/modules/organs/subtypes/machine.dm @@ -156,7 +156,7 @@ icon_state = "surge_ipc" organ_tag = "surge" parent_organ = BP_CHEST - vital = 0 + vital = FALSE var/surge_left = 0 var/broken = 0 @@ -342,7 +342,7 @@ name = BP_BRAIN organ_tag = BP_BRAIN parent_organ = BP_CHEST - vital = 1 + vital = TRUE emp_coeff = 0.1 /obj/item/organ/internal/data @@ -351,7 +351,7 @@ parent_organ = BP_GROIN icon = 'icons/obj/cloning.dmi' icon_state = "harddisk" - vital = 0 + vital = FALSE emp_coeff = 0.1 /obj/item/organ/internal/data/Initialize() diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm index 36f9f2d58fc..5dc6a68eeca 100644 --- a/code/modules/organs/subtypes/standard.dm +++ b/code/modules/organs/subtypes/standard.dm @@ -4,13 +4,13 @@ /obj/item/organ/external/chest name = "upper body" - limb_name = "chest" + limb_name = BP_CHEST icon_name = "torso" max_damage = 100 min_broken_damage = 35 w_class = ITEMSIZE_HUGE body_part = UPPER_TORSO - vital = 1 + vital = TRUE amputation_point = "spine" joint = "neck" artery_name = "internal thoracic artery" @@ -29,13 +29,12 @@ /obj/item/organ/external/groin name = "lower body" - limb_name = "groin" + limb_name = BP_GROIN icon_name = "groin" max_damage = 100 min_broken_damage = 35 w_class = ITEMSIZE_LARGE body_part = LOWER_TORSO - vital = 1 parent_organ = BP_CHEST amputation_point = "lumbar" joint = "hip" @@ -51,7 +50,7 @@ return "[owner.get_pronoun("has")] [blood_type] running down their thighs!" /obj/item/organ/external/arm - limb_name = "l_arm" + limb_name = BP_L_ARM name = "left arm" icon_name = "l_arm" max_damage = 50 @@ -73,7 +72,7 @@ return "[owner.get_pronoun("has")] [blood_type] running down their sleeves!" /obj/item/organ/external/arm/right - limb_name = "r_arm" + limb_name = BP_R_ARM name = "right arm" icon_name = "r_arm" body_part = ARM_RIGHT @@ -83,7 +82,7 @@ amputation_point = "right shoulder" /obj/item/organ/external/leg - limb_name = "l_leg" + limb_name = BP_L_LEG name = "left leg" icon_name = "l_leg" max_damage = 50 @@ -106,7 +105,7 @@ return "[owner.get_pronoun("has")] [blood_type] pooling at their feet!" /obj/item/organ/external/leg/right - limb_name = "r_leg" + limb_name = BP_R_LEG name = "right leg" icon_name = "r_leg" body_part = LEG_RIGHT @@ -115,7 +114,7 @@ amputation_point = "right hip" /obj/item/organ/external/foot - limb_name = "l_foot" + limb_name = BP_L_FOOT name = "left foot" icon_name = "l_foot" max_damage = 35 @@ -142,7 +141,7 @@ ..() /obj/item/organ/external/foot/right - limb_name = "r_foot" + limb_name = BP_R_FOOT name = "right foot" icon_name = "r_foot" body_part = FOOT_RIGHT @@ -152,7 +151,7 @@ amputation_point = "right ankle" /obj/item/organ/external/hand - limb_name = "l_hand" + limb_name = BP_L_HAND name = "left hand" icon_name = "l_hand" max_damage = 35 @@ -191,7 +190,7 @@ ..() /obj/item/organ/external/hand/right - limb_name = "r_hand" + limb_name = BP_R_HAND name = "right hand" icon_name = "r_hand" body_part = HAND_RIGHT @@ -200,14 +199,14 @@ amputation_point = "right wrist" /obj/item/organ/external/head - limb_name = "head" + limb_name = BP_HEAD icon_name = "head" name = BP_HEAD max_damage = 75 min_broken_damage = 35 w_class = ITEMSIZE_NORMAL body_part = HEAD | FACE - vital = 1 + vital = TRUE parent_organ = BP_CHEST joint = "jaw" artery_name = "cartoid artery" diff --git a/code/modules/organs/subtypes/xenos.dm b/code/modules/organs/subtypes/xenos.dm index c793af6393d..c7e06f966ce 100644 --- a/code/modules/organs/subtypes/xenos.dm +++ b/code/modules/organs/subtypes/xenos.dm @@ -4,7 +4,6 @@ /obj/item/organ/external/groin/skeleton name = "pelvis" - vital = 0 /obj/item/organ/external/arm/skeleton dislocated = -1 @@ -33,5 +32,5 @@ /obj/item/organ/external/head/skeleton name = "skull" dislocated = -1 - vital = 0 + vital = FALSE diff --git a/code/modules/power/lights/fixtures.dm b/code/modules/power/lights/fixtures.dm index 280293f024e..0386d3f13f7 100644 --- a/code/modules/power/lights/fixtures.dm +++ b/code/modules/power/lights/fixtures.dm @@ -389,6 +389,8 @@ else user.visible_message(SPAN_WARNING("\The [user] hits \the [src], but it doesn't break."), SPAN_WARNING("You hit \the [src], but it doesn't break."), SPAN_WARNING("You hear something hitting against glass.")) +/obj/machinery/light/bullet_act(obj/item/projectile/P, def_zone) + shatter() // returns whether this light has power // true if area has power diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 60c7ccccfb8..288a4572e5f 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -311,7 +311,7 @@ /obj/item/projectile/proc/old_style_target(atom/target, atom/source) if(!source) source = get_turf(src) - setAngle(Get_Angle(source, target)) + setAngle(get_projectile_angle(source, target)) /obj/item/projectile/proc/fire(angle, atom/direct_target) //If no angle needs to resolve it from xo/yo! @@ -332,7 +332,7 @@ qdel(src) return var/turf/target = locate(Clamp(starting + xo, 1, world.maxx), Clamp(starting + yo, 1, world.maxy), starting.z) - setAngle(Get_Angle(src, target)) + setAngle(get_projectile_angle(src, target)) if(dispersion) setAngle(Angle + rand(-dispersion, dispersion)) original_angle = Angle @@ -368,7 +368,7 @@ else if(targloc && curloc) yo = targloc.y - curloc.y xo = targloc.x - curloc.x - setAngle(Get_Angle(src, targloc)) + setAngle(get_projectile_angle(src, targloc)) else crash_with("WARNING: Projectile [type] fired without either mouse parameters, or a target atom to aim at!") qdel(src) diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 3d03b4ad094..2a29f4a50a1 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -13,7 +13,6 @@ animate_movement=1 light_range = 3 - can_buckle = 1 buckle_movable = 1 buckle_lying = 0 @@ -47,6 +46,10 @@ ..() //spawn the cell you want in each vehicle +/obj/vehicle/Initialize() + . = ..() + LAZYADD(can_buckle, /mob/living) + /obj/vehicle/Move() if(world.time > l_move_time + move_delay) var/old_loc = get_turf(src) @@ -75,6 +78,9 @@ else return 0 +/obj/vehicle/proc/create_vehicle_overlay() + return + /obj/vehicle/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/device/hand_labeler)) return @@ -296,7 +302,6 @@ C.pixel_y += mob_offset_y else C.pixel_y += load_offset_y - C.layer = layer + 0.1 //so it sits above the vehicle if(ismob(C)) buckle(C) diff --git a/html/changelog.html b/html/changelog.html index 73e7f709014..1c9e99f826f 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -35,6 +35,50 @@ -->
+

19 February 2021

+

Arrow768 updated:

+ +

Geeves updated:

+ +

William Murdoch updated:

+ + +

18 February 2021

+

Alberyk updated:

+ +

Geeves updated:

+ +

MattAtlas updated:

+ + +

17 February 2021

+

Sparky_hotdog updated:

+ +

WickedCybs updated:

+ +

16 February 2021

Geeves updated: