[MIRROR] September 2024 various fixes (#8920)

Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com>
Co-authored-by: Nadyr <41974248+Darlantanis@users.noreply.github.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2
2024-09-07 16:27:57 -07:00
committed by GitHub
parent 4f6614ba16
commit 664b5e84dd
22 changed files with 99 additions and 25 deletions

View File

@@ -293,7 +293,7 @@ GLOBAL_LIST_EMPTY(mannequins)
// Custom species icon bases
var/list/blacklisted_icons = list(SPECIES_CUSTOM,SPECIES_PROMETHEAN) //VOREStation Edit
var/list/whitelisted_icons = list(SPECIES_FENNEC,SPECIES_XENOHYBRID, SPECIES_SHADEKIN) //CHOMPedit
var/list/whitelisted_icons = list(SPECIES_FENNEC,SPECIES_XENOHYBRID,SPECIES_TESHARI,SPECIES_VOX,SPECIES_SHADEKIN) //CHOMPedit
for(var/species_name in GLOB.playable_species)
if(species_name in blacklisted_icons)
continue

View File

@@ -1,4 +1,4 @@
var/global/const/base_law_type = /datum/ai_laws/nanotrasen
// var/global/const/base_law_type = /datum/ai_laws/nanotrasen //VOREstation edit: unused
/datum/ai_law
var/law = ""

View File

@@ -334,6 +334,7 @@
occupantData["blind"] = (H.sdisabilities & BLIND)
occupantData["nearsighted"] = (H.disabilities & NEARSIGHTED)
occupantData["husked"] = (HUSK in H.mutations) // VOREstation edit
occupantData = attempt_vr(src, "get_occupant_data_vr", list(occupantData, H)) //VOREStation Insert
data["occupant"] = occupantData
@@ -537,6 +538,8 @@
dat += "<font color='red'>Cataracts detected.</font><BR>"
if(occupant.disabilities & NEARSIGHTED)
dat += "<font color='red'>Retinal misalignment detected.</font><BR>"
if(HUSK in occupant.mutations) // VOREstation edit
dat += "<font color='red'>Anatomical structure lost, resuscitation not possible!</font><BR>"
else
dat += "\The [src] is empty."

View File

@@ -10,6 +10,12 @@
var/obj/item/weapon/circuitboard/circuit = null
var/obj/item/device/mmi/brain = null
// VOREstation edit: Respect map config's default
/obj/structure/AIcore/Initialize(var/mapload)
. = ..()
if(mapload)
laws = new global.using_map.default_law_type
// VOREstation edit end
/obj/structure/AIcore/attackby(obj/item/P as obj, mob/user as mob)

View File

@@ -1015,8 +1015,15 @@ About the new airlock wires panel:
flick("door_deny", src)
playsound(src, knock_hammer_sound, 50, 0, 3)
else if(arePowerSystemsOn()) //ChompEDIT - removed intent check
src.visible_message("[user] presses the door bell on \the [src].", "\The [src]'s bell rings.")
src.add_fingerprint(user)
if(isElectrified())
src.visible_message("[user] presses the door bell on \the [src], making it violently spark!", "\The [src] sparks!")
src.add_fingerprint(user)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
else
src.visible_message("[user] presses the door bell on \the [src].", "\The [src]'s bell rings.")
src.add_fingerprint(user)
if(icon_state == "door_closed")
flick("door_deny", src)
playsound(src, knock_sound, 50, 0, 3)

View File

@@ -6,6 +6,7 @@
#define RADIATION_DAMAGE 0x20
#define TOXIN_DAMAGE 0x40
#define OXY_DAMAGE 0x80
#define HUSKED_BODY 0x100
/obj/machinery/medical_kiosk
name = "medical kiosk"
@@ -76,14 +77,14 @@
if(!choice || choice == "Cancel" || !Adjacent(user) || inoperable() || panel_open)
suspend()
return
// Service begins, delay
visible_message("<b>\The [src]</b> scans [user] thoroughly!")
flick("kiosk_active", src)
if(!do_after(user, 10 SECONDS, src, exclusive = TASK_ALL_EXCLUSIVE) || inoperable())
suspend()
return
// Service completes
switch(choice)
if("Health Scan")
@@ -95,7 +96,7 @@
else
var/scan_report = do_backup_scan(user)
to_chat(user, "<span class='notice'><b>Backup scan results:</b></span>"+scan_report)
// Standby
suspend()
@@ -104,7 +105,7 @@
return "<br><span class='warning'>Unable to perform diagnosis on this type of life form.</span>"
if(user.isSynthetic())
return "<br><span class='warning'>Unable to perform diagnosis on synthetic life forms.</span>"
var/problems = 0
for(var/obj/item/organ/external/E in user)
if(E.status & ORGAN_BROKEN)
@@ -119,13 +120,16 @@
problems |= INTERNAL_BLEEDING
else
problems |= EXTERNAL_BLEEDING
for(var/obj/item/organ/internal/I in user)
if(I.status & (ORGAN_BROKEN|ORGAN_DEAD|ORGAN_DESTROYED))
problems |= SERIOUS_INTERNAL_DAMAGE
if(I.status & ORGAN_BLEEDING)
problems |= INTERNAL_BLEEDING
if(HUSK in user.mutations)
problems |= HUSKED_BODY
if(user.getToxLoss() > 0)
problems |= TOXIN_DAMAGE
if(user.getOxyLoss() > 0)
@@ -134,13 +138,13 @@
problems |= RADIATION_DAMAGE
if(user.getFireLoss() > 40 || user.getBruteLoss() > 40)
problems |= SERIOUS_EXTERNAL_DAMAGE
if(!problems)
if(user.getHalLoss() > 0)
return "<br><span class='warning'>Mild concussion detected - advising bed rest until patient feels well. No other anatomical issues detected.</span>"
else
return "<br><span class='notice'>No anatomical issues detected.</span>"
var/problem_text = ""
if(problems & BROKEN_BONES)
problem_text += "<br><span class='warning'>Broken bones detected - see a medical professional and move as little as possible.</span>"
@@ -158,6 +162,8 @@
problem_text += "<br><span class='warning'>Exposure to toxic materials detected - induce vomiting if you have consumed anything recently.</span>"
if(problems & OXY_DAMAGE)
problem_text += "<br><span class='warning'>Blood/air perfusion level is below acceptable norms - use concentrated oxygen if necessary.</span>"
if(problems & HUSKED_BODY)
problem_text += "<br><span class='danger'>Anatomical structure lost, resuscitation not possible!</span>"
return problem_text
@@ -166,11 +172,11 @@
return "<br><span class='warning'>Unable to perform full scan. Please see a medical professional.</span>"
if(!user.mind)
return "<br><span class='warning'>Unable to perform full scan. Please see a medical professional.</span>"
var/nif = user.nif
if(nif)
persist_nif_data(user)
our_db.m_backup(user.mind,nif,one_time = TRUE)
var/datum/transhuman/body_record/BR = new()
BR.init_from_mob(user, TRUE, TRUE, database_key = db_key)
@@ -184,4 +190,5 @@
#undef SERIOUS_INTERNAL_DAMAGE
#undef RADIATION_DAMAGE
#undef TOXIN_DAMAGE
#undef OXY_DAMAGE
#undef OXY_DAMAGE
#undef HUSKED_BODY

View File

@@ -244,6 +244,8 @@
severity = "Mild"
if(severity)
dat += "<span class='warning'>[severity] inflammation detected in subject [a.name].</span><br>"
if(HUSK in H.mutations)
dat += "<span class='danger'>Anatomical structure lost, resuscitation not possible!</span><br>"
// Infections, fractures, and IB
var/basic_fracture = 0 // If it's a basic scanner
var/basic_ib = 0 // If it's a basic scanner

View File

@@ -269,6 +269,11 @@ AI MODULES
desc = "A 'reset' AI module: 'Clears all, except the inherent, laws.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4)
// VOREstation edit: use map default laws
/obj/item/weapon/aiModule/reset/Initialize()
. = ..()
laws = new global.using_map.default_law_type // Pull from loaded map
/obj/item/weapon/aiModule/reset/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
log_law_changes(target, sender)

View File

@@ -249,8 +249,12 @@
/obj/item/device/flashlight,
/obj/item/weapon/cell/device,
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/storage/quickdraw/syringe_case,
/obj/item/ammo_casing/macrobattery // CHOMPedit: Macrobatteries for the Curabitur can fit into medbelts.
/obj/item/ammo_casing/macrobattery, // CHOMPedit: Macrobatteries for the Curabitur can fit into medbelts.
/obj/item/device/antibody_scanner, // VOREstation edit start
/obj/item/device/sleevemate,
/obj/item/device/mass_spectrometer,
/obj/item/weapon/surgical,
/obj/item/clothing/mask/chewable/candy/lolli // VOREstation edit end
)
/obj/item/weapon/storage/belt/medical/emt

View File

@@ -69,6 +69,14 @@
update_icon()
return 1
/obj/structure/closet/crate/MouseDrop_T(mob/target, mob/user)
// Adds climbing from drag, You can't put yourself in crates with a drag anyway... Nore anyone else actually.
var/mob/living/H = user
if(istype(H) && can_climb(H) && target == user)
do_climb(target)
else
return ..()
/obj/structure/closet/crate/verb/rotate_clockwise()
set name = "Rotate Crate Clockwise"
set category = "Object"

View File

@@ -2,6 +2,7 @@
/datum/preferences
var/resleeve_lock = 0 // Whether movs should have OOC reslieving protection. Default false.
var/resleeve_scan = 1 // Whether mob should start with a pre-spawn body scan. Default true.
var/mind_scan = 1 // Whether mob should start with a pre-spawn mind scan. Default true.
// Definition of the stuff for Sizing
/datum/category_item/player_setup_item/vore/resleeve
@@ -11,24 +12,32 @@
/datum/category_item/player_setup_item/vore/resleeve/load_character(var/savefile/S)
S["resleeve_lock"] >> pref.resleeve_lock
S["resleeve_scan"] >> pref.resleeve_scan
S["mind_scan"] >> pref.mind_scan
/datum/category_item/player_setup_item/vore/resleeve/save_character(var/savefile/S)
S["resleeve_lock"] << pref.resleeve_lock
S["resleeve_scan"] << pref.resleeve_scan
S["mind_scan"] << pref.mind_scan
/datum/category_item/player_setup_item/vore/resleeve/sanitize_character()
pref.resleeve_lock = sanitize_integer(pref.resleeve_lock, 0, 1, initial(pref.resleeve_lock))
pref.resleeve_scan = sanitize_integer(pref.resleeve_scan, 0, 1, initial(pref.resleeve_scan))
pref.mind_scan = sanitize_integer(pref.mind_scan, 0, 1, initial(pref.mind_scan))
/datum/category_item/player_setup_item/vore/resleeve/copy_to_mob(var/mob/living/carbon/human/character)
if(character && !istype(character,/mob/living/carbon/human/dummy))
spawn(50)
if(QDELETED(character) || QDELETED(pref))
return // They might have been deleted during the wait
if(pref.resleeve_scan)
var/datum/transhuman/body_record/BR = new()
BR.init_from_mob(character, pref.resleeve_scan, pref.resleeve_lock)
if(!character.virtual_reality_mob && !(/mob/living/carbon/human/proc/exit_vr in character.verbs)) // CHOMPedit start: janky fix to prevent resleeving VR avatars but beats refactoring transcore
if(pref.resleeve_scan)
var/datum/transhuman/body_record/BR = new()
BR.init_from_mob(character, pref.resleeve_scan, pref.resleeve_lock)
if(pref.mind_scan)
var/datum/transcore_db/our_db = SStranscore.db_by_key(null)
if(our_db)
our_db.m_backup(character.mind,character.nif,one_time = TRUE) // CHOMPedit end
if(pref.resleeve_lock)
character.resleeve_lock = character.ckey
character.original_player = character.ckey
@@ -36,6 +45,7 @@
/datum/category_item/player_setup_item/vore/resleeve/content(var/mob/user)
. += "<br>"
. += "<b>Start With Body Scan:</b> <a [pref.resleeve_scan ? "class='linkOn'" : ""] href='?src=\ref[src];toggle_resleeve_scan=1'><b>[pref.resleeve_scan ? "Yes" : "No"]</b></a><br>"
. += "<b>Start With Mind Scan:</b> <a [pref.mind_scan ? "class='linkOn'" : ""] href='?src=\ref[src];toggle_mind_scan=1'><b>[pref.mind_scan ? "Yes" : "No"]</b></a><br>"
. += "<b>Prevent Body Impersonation:</b> <a [pref.resleeve_lock ? "class='linkOn'" : ""] href='?src=\ref[src];toggle_resleeve_lock=1'><b>[pref.resleeve_lock ? "Yes" : "No"]</b></a><br>"
/datum/category_item/player_setup_item/vore/resleeve/OnTopic(var/href, var/list/href_list, var/mob/user)
@@ -45,4 +55,7 @@
else if(href_list["toggle_resleeve_scan"])
pref.resleeve_scan = pref.resleeve_scan ? 0 : 1;
return TOPIC_REFRESH
else if(href_list["toggle_mind_scan"])
pref.mind_scan = pref.mind_scan ? 0 : 1;
return TOPIC_REFRESH
return ..();

View File

@@ -239,7 +239,7 @@
/mob/living/silicon/robot/proc/init()
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
laws = new /datum/ai_laws/nanotrasen()
laws = new global.using_map.default_law_type // VOREstation edit: use map's default
additional_law_channels["Binary"] = "#b"
var/new_ai = select_active_ai_with_fewest_borgs()
if(new_ai)

View File

@@ -131,7 +131,7 @@
B.desc = "The moment the wolf gets its jaws around you, it scoops you right up off of the ground, and greedily scarfs you down with a few swift gulps. Your small frame alone is hardly enough to make him look somewhat plump as you slop wetly into that dark, hot chamber, although the dense squish is rather comfortable. The thick, humid air is tinged with the smell of digested meat, and the surrounding flesh wastes no time in clenching and massaging down over its newfound fodder."
B.vore_sound = "Tauric Swallow"
B.release_sound = "Pred Escape"
B.mode_flags = list(DM_FLAG_NUMBING, DM_FLAG_THICKBELLY, DM_FLAG_AFFECTWORN)
B.mode_flags = DM_FLAG_NUMBING | DM_FLAG_THICKBELLY | DM_FLAG_AFFECTWORN
B.fancy_vore = 1
B.vore_verb = "slurp"
B.contamination_color = "grey"

View File

@@ -125,7 +125,7 @@
B.desc = "The moment the wolf gets its jaws around you, it scoops you right up off of the ground, and greedily scarfs you down with a few swift gulps. Your small frame alone is hardly enough to make him look somewhat plump as you slop wetly into that dark, hot chamber, although the dense squish is rather comfortable. The thick, humid air is tinged with the smell of digested meat, and the surrounding flesh wastes no time in clenching and massaging down over its newfound fodder."
B.vore_sound = "Tauric Swallow"
B.release_sound = "Pred Escape"
B.mode_flags = list(DM_FLAG_NUMBING, DM_FLAG_THICKBELLY, DM_FLAG_AFFECTWORN)
B.mode_flags = DM_FLAG_NUMBING | DM_FLAG_THICKBELLY | DM_FLAG_AFFECTWORN
B.fancy_vore = 1
B.vore_verb = "slurp"
B.contamination_color = "grey"

View File

@@ -3730,3 +3730,9 @@ shaved
icon_state = "Voxscales"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_R_ARM,BP_L_ARM,BP_R_HAND,BP_L_HAND,BP_R_LEG,BP_L_LEG,BP_R_FOOT,BP_L_FOOT)
/datum/sprite_accessory/marking/vox/dinomuzzle
name = "Vox Dinosaur Muzzle"
icon_state = "vox_muzzle"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)

View File

@@ -492,7 +492,7 @@
name = "Shaved"
icon_state = "bald"
gender = NEUTER
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL) //This lets all races use the facial hair styles.
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_VOX) //This needed to be manually defined, apparantly.
/datum/sprite_accessory/facial_hair/neck_fluff
name = "Neck Fluff"

View File

@@ -456,6 +456,9 @@
var/turf/simulated/S = T
S.dirt = 0
T.clean_blood()
for(var/obj/effect/O in T)
if(istype(O,/obj/effect/rune) || istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay))
qdel(O)
for(var/mob/living/simple_mob/slime/M in T)
M.adjustToxLoss(rand(5, 10))

View File

@@ -156,6 +156,9 @@
verbs += /obj/vehicle/train/engine/verb/stop_engine
/obj/vehicle/train/RunOver(var/mob/living/M)
if(pulledby == M) // VOREstation edit: Don't destroy people pulling vehicles up stairs
return
var/list/parts = list(BP_HEAD, BP_TORSO, BP_L_LEG, BP_R_LEG, BP_L_ARM, BP_R_ARM)
M.apply_effects(5, 5)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -10,7 +10,8 @@ export const BodyScannerMainAbnormalities = (props: { occupant: occupant }) => {
occupant.blind ||
occupant.colourblind ||
occupant.nearsighted ||
occupant.hasVirus;
occupant.hasVirus ||
occupant.husked;
hasAbnormalities =
hasAbnormalities ||

View File

@@ -43,6 +43,11 @@ export const abnormalities: (string | ((occupant: occupant) => string))[][] = [
return 'Foreign Object(s) detected: ' + occupant.objectPrey;
},
],
[
'husked',
'bad',
(occupant) => 'Anatomical structure lost, resuscitation not possible!',
],
];
export const damages: string[][] = [

View File

@@ -35,6 +35,7 @@ export type occupant = {
humanPrey: number;
objectPrey: number;
weight: number;
husked: BooleanLike;
};
type reagent = { name: string; amount: number; overdose: BooleanLike };