mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
[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:
@@ -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
|
||||
|
||||
@@ -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 = ""
|
||||
|
||||
@@ -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."
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 ..();
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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 |
@@ -10,7 +10,8 @@ export const BodyScannerMainAbnormalities = (props: { occupant: occupant }) => {
|
||||
occupant.blind ||
|
||||
occupant.colourblind ||
|
||||
occupant.nearsighted ||
|
||||
occupant.hasVirus;
|
||||
occupant.hasVirus ||
|
||||
occupant.husked;
|
||||
|
||||
hasAbnormalities =
|
||||
hasAbnormalities ||
|
||||
|
||||
@@ -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[][] = [
|
||||
|
||||
@@ -35,6 +35,7 @@ export type occupant = {
|
||||
humanPrey: number;
|
||||
objectPrey: number;
|
||||
weight: number;
|
||||
husked: BooleanLike;
|
||||
};
|
||||
|
||||
type reagent = { name: string; amount: number; overdose: BooleanLike };
|
||||
|
||||
Reference in New Issue
Block a user