diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 9781ad98a0..b79e7e1f69 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -152,7 +152,7 @@ if(pcard.is_damage_critical()) pcard.forceMove(get_turf(src)) charging = null - pcard.damage_random_component() + //pcard.damage_random_component()//CHOMPEDIT: Punishing PAI for charging too soon seems kinda annoying update_icon() else if(pcard.pai.bruteloss) pcard.pai.adjustBruteLoss(-5) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index a710df388b..30df9adb2f 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -561,8 +561,8 @@ the implant may become unstable and either pre-maturely inject the subject or si if (malfunction) //so I'm just going to add a meltdown chance here return malfunction = MALFUNCTION_TEMPORARY - - activate("emp") //let's shout that this dude is dead + if(prob(40)) //CHOMPEDIT: Make the malfunction a probability because annoying + activate("emp") //let's shout that this dude is dead if(severity == 1) if(prob(40)) //small chance of obvious meltdown meltdown() diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm index c824e41261..c8be2d2466 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -35,6 +35,13 @@ character_name = list("Malady Blanche") // A CKEYS + +/datum/gear/fluff/mira_medal + path = /obj/item/clothing/accessory/medal/silver/fluff/abc314 + display_name = "Mira's Health Service Achievement medal" + ckeywhitelist = list("abc314") + character_name = list("Mira Nesyne") + /datum/gear/fluff/lethe_helmet path = /obj/item/clothing/head/helmet/hos/fluff/lethe display_name = "Lethe's Helmet" diff --git a/code/modules/client/preference_setup/loadout/loadout_shoes_vr.dm b/code/modules/client/preference_setup/loadout/loadout_shoes_vr.dm index 1f83f7484d..e3c6eaf9b0 100644 --- a/code/modules/client/preference_setup/loadout/loadout_shoes_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_shoes_vr.dm @@ -47,5 +47,6 @@ name = "No Shoes" desc = "shoeless?" icon_state = "" -/obj/item/clothing/shoes/none/New() - qdel(src) +/obj/item/clothing/shoes/none/Initialize() + . = INITIALIZE_HINT_QDEL //Fuck them shoes + ..() diff --git a/code/modules/clothing/glasses/hud_vr.dm b/code/modules/clothing/glasses/hud_vr.dm index 12f409204e..bb3260213b 100644 --- a/code/modules/clothing/glasses/hud_vr.dm +++ b/code/modules/clothing/glasses/hud_vr.dm @@ -13,6 +13,8 @@ var/flash_prot = 0 //0 for none, 1 for flash weapon protection, 2 for welder protection enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED) plane_slots = list(slot_glasses) + var/ar_toggled = TRUE //Used for toggle_ar_planes() verb + /obj/item/clothing/glasses/omnihud/New() ..() @@ -28,6 +30,14 @@ SStgui.close_uis(src) ..() +/obj/item/clothing/glasses/omnihud/examine() + . = ..() + if(ar_toggled) + . += "\n The HUD indicator reads ON." + else + . += "\n The HUD indicator reads OFF." + + /obj/item/clothing/glasses/omnihud/emp_act(var/severity) if(tgarscreen) SStgui.close_uis(src) @@ -114,6 +124,29 @@ to_chat(usr, "The [src] don't seem to support this functionality.") update_clothing_icon() +/obj/item/clothing/glasses/omnihud/verb/toggle_ar_planes() + set name = "Toggle AR Heads-Up Display" + set desc = "Toggles the job icon and other non-manually requested displays. Does not disable Crew monitor and similar." + set category = "Object" + set src in usr + + //We do not check if user can move or not, since this system is inspired to help see chat bubbles during scenes primarily. + //Preventing turning off the HUD could get in the way of scene flow. + usr.visible_emote("toggles a button on their [src.name]!") //Since we're turning stuff like arrest/medical HUD on/off, we should inform those nearby. + if(ar_toggled) + away_planes = enables_planes + enables_planes = null + to_chat(usr, SPAN_NOTICE("You disabled the Augmented Reality HUD of your [src.name].")) + else + enables_planes = away_planes + away_planes = null + to_chat(usr, SPAN_NOTICE("You enabled the Augmented Reality HUD of your [src.name].")) + ar_toggled = !ar_toggled + usr.update_action_buttons() + usr.recalculate_vis() + + + /obj/item/clothing/glasses/omnihud/proc/ar_interact(var/mob/living/carbon/human/user) return 0 //The base models do nothing. @@ -305,4 +338,4 @@ icon_state = "[icon_state]_1" else icon_state = initial(icon_state) - update_clothing_icon() \ No newline at end of file + update_clothing_icon() diff --git a/code/modules/clothing/head/misc_vr.dm b/code/modules/clothing/head/misc_vr.dm index bd7cb68db9..559defab45 100644 --- a/code/modules/clothing/head/misc_vr.dm +++ b/code/modules/clothing/head/misc_vr.dm @@ -91,7 +91,10 @@ /obj/item/clothing/head/pizzaguy name = "pizza delivery visor" desc = "A fancy visor showing alignment to pizza delivery service. Extremely risky career choice." + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' icon_state = "pizzadelivery" + item_state = "pizzadelivery" /obj/item/clothing/head/wedding name = "wedding veil" diff --git a/code/modules/clothing/spacesuits/rig/suits/robotics.dm b/code/modules/clothing/spacesuits/rig/suits/robotics.dm index 860ed2c6b8..5efb8f8348 100644 --- a/code/modules/clothing/spacesuits/rig/suits/robotics.dm +++ b/code/modules/clothing/spacesuits/rig/suits/robotics.dm @@ -32,7 +32,7 @@ name = "suit helmet" /obj/item/clothing/suit/space/rig/advsuit - name = "voidsuit" + name = "Hardsuit" //CHOMPEDIT: Replcing Void with Hard to fit the naming convention. Specced down hardsuit for comfort body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS|FEET heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS|FEET - cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS|FEET \ No newline at end of file + cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS|FEET diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index eb6ba185c7..41f3aac421 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -332,6 +332,16 @@ var/list/holder_mob_icon_cache = list() L.Stun(2) /obj/item/weapon/holder/attackby(obj/item/weapon/W as obj, mob/user as mob) + //CHOMPADDITION: MicroHandCrush + if(W == src && user.a_intent == I_HURT) + for(var/mob/living/M in src.contents) + if(user.size_multiplier > M.size_multiplier) + var/dam = (user.size_multiplier - M.size_multiplier)*(rand(2,5)) + to_chat(user, "You roughly squeeze [M]!") + to_chat(M, "You are roughly squeezed by [user]!") + log_and_message_admins("[key_name(M)] has been harmsqueezed by [key_name(user)]") + M.apply_damage(dam) + //CHOMPADDITION: MicroHandCrush END for(var/mob/M in src.contents) M.attackby(W,user) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 4f1d54f050..e87acde261 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -451,6 +451,8 @@ return 0 /mob/living/carbon/can_feel_pain(var/check_organ) + if(!species) //CHOMPEdit + return 0 if(isSynthetic()) return 0 return !(species.flags & NO_PAIN) diff --git a/code/modules/overmap/sectors.dm b/code/modules/overmap/sectors.dm index da4770c2c3..9e5f14d21b 100644 --- a/code/modules/overmap/sectors.dm +++ b/code/modules/overmap/sectors.dm @@ -16,6 +16,11 @@ var/real_desc /// Icon_state prior to being scanned if !known var/unknown_state = "field" + //Set to null. Exists only for admins/GMs when spawning overmap objects. + //We need these as normal functionality relies on initial() which do not work at all with GM shenanigans. + var/real_icon //Holds the .dmi file for icon_state to pick from. Leave null if using standard overmap.dmi + var/real_icon_state //actual icon name to be used. Find examples inside 'icons/obj/overmap.dmi' + var/real_color var/list/map_z = list() var/list/extra_z_levels //if you need to manually insist that these z-levels are part of this sector, for things like edge-of-map step trigger transitions rather than multi-z complexes @@ -84,6 +89,19 @@ //at the moment only used for the OM location renamer. Initializing here in case we want shuttles incl as well in future. Also proc definition convenience. visitable_overmap_object_instances |= src +//To be used by GMs and calling through var edits for the overmap object +//It causes the overmap object to "reinitialize" its real_appearance for known = FALSE objects +//Includes an argument that allows GMs/Admins to set a previously known sector to unknown. Set to any value except 0/False/Null to activate +/obj/effect/overmap/visitable/proc/gmtools_update_omobject_vars(var/setToHidden) + real_appearance = image(real_icon, src, real_icon_state) + real_appearance.override = TRUE + if(setToHidden && known) // + name = unknown_name + icon = 'icons/obj/overmap.dmi' + icon_state = unknown_state + color = null + desc = "Scan this to find out more information." + known = FALSE // You generally shouldn't destroy these. @@ -141,8 +159,16 @@ name = real_name else name = initial(name) - icon_state = initial(icon_state) - color = initial(color) + if(real_icon_state) //Only true when GMs/Admins play with the object + if(real_icon) //Only true if GMs/Admins want a non-standard icon from outside 'icons/obj/overmap.dmi' + icon = real_icon + icon_state = real_icon_state + else + icon_state = initial(icon_state) + if(real_color) + color = real_color + else + color = initial(color) if(real_desc) desc = real_desc else diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 58f8ee0275..55a7d4d2b9 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -9,7 +9,10 @@ density = FALSE unacidable = TRUE use_power = USE_POWER_OFF - light_range = 4 + light_on = TRUE + light_range = 2 + light_power = 0.5 + light_color = "#5BA8FF" var/obj/machinery/field_generator/FG1 = null var/obj/machinery/field_generator/FG2 = null var/list/shockdirs diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index ec29e08efa..8d892b2756 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -36,6 +36,10 @@ field_generator power level display var/gen_power_draw = 5500 //power needed per generator var/field_power_draw = 2000 //power needed per field object + var/light_range_on = 3 + var/light_power_on = 1 + light_color = "#5BA8FF" + /obj/machinery/field_generator/update_icon() cut_overlays() @@ -177,6 +181,7 @@ field_generator power level display active = 0 spawn(1) src.cleanup() + set_light(0) update_icon() /obj/machinery/field_generator/proc/turn_on() @@ -189,6 +194,7 @@ field_generator power level display update_icon() if(warming_up >= 3) start_fields() + set_light(light_range_on, light_power_on) update_icon() diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 335ed4240a..8c608a83f3 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -10,8 +10,8 @@ icon_state = "conveyor0" name = "conveyor belt" desc = "A conveyor belt." - plane = TURF_PLANE - layer = ABOVE_TURF_LAYER + plane = OBJ_PLANE //CHOMPEdit + layer = STAIRS_LAYER //CHOMPEdit anchored = TRUE active_power_usage = 100 circuit = /obj/item/weapon/circuitboard/conveyor diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index eb5e9e7edb..96f2262c2f 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -936,6 +936,8 @@ M.forceMove(G) else qdel(M) + if(isanimal(owner)) + owner.update_transform() //CHOMPEdit End // Handle a mob being absorbed diff --git a/code/modules/vore/eating/bellymodes_datum_vr.dm b/code/modules/vore/eating/bellymodes_datum_vr.dm index e97a4af930..99d52cfbd0 100644 --- a/code/modules/vore/eating/bellymodes_datum_vr.dm +++ b/code/modules/vore/eating/bellymodes_datum_vr.dm @@ -215,10 +215,12 @@ GLOBAL_LIST_INIT(digest_modes, list()) B.put_in_egg(H, 1)*/ /datum/digest_mode/egg/handle_atoms(obj/belly/B, list/touchable_atoms) + if(B.owner.nutrition < 25) //CHOMPEdit Start + return var/list/egg_contents = list() for(var/E in touchable_atoms) if(istype(E, /obj/item/weapon/storage/vore_egg)) // Don't egg other eggs. - var/obj/item/weapon/storage/vore_egg/EG = E //CHOMPEdit Start + var/obj/item/weapon/storage/vore_egg/EG = E if(EG.egg_name != B.egg_name) if(!B.egg_name) EG.egg_name = null @@ -239,6 +241,7 @@ GLOBAL_LIST_INIT(digest_modes, list()) if(B.egg_type in tf_vore_egg_types) B.egg_path = tf_vore_egg_types[B.egg_type] B.ownegg = new B.egg_path(B) + B.owner.adjust_nutrition(-25) if(B.ownegg && B.egg_name) B.ownegg.egg_name = B.egg_name B.ownegg.name = B.egg_name //CHOMPEdit End diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index dae81f32ce..f23bc2814f 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -1568,3 +1568,12 @@ End CHOMP Removal*/ /obj/item/weapon/dice/loaded/ceph/New() icon_state = "ceph_d6[rand(1,sides)]" + + +//abc123: Mira Nesyne +/obj/item/clothing/accessory/medal/silver/fluff/abc314 + name = "Health Service Achievement medal" + desc = "A small silver medal with the inscription \"For going above and beyond in the field.\" on it, along with the name Mira Nesyne." + + icon = 'icons/inventory/accessory/item.dmi' + icon_state = "silver" diff --git a/code/modules/vore/persist/persist_vr.dm b/code/modules/vore/persist/persist_vr.dm index 69113596fe..a1ab69c506 100644 --- a/code/modules/vore/persist/persist_vr.dm +++ b/code/modules/vore/persist/persist_vr.dm @@ -45,6 +45,9 @@ // Find out of this mob is a proper mob! if (persister.mind && persister.mind.loaded_from_ckey) + if(ckey(persister.mind.key) != persister.mind.loaded_from_ckey) //CHOMPAdd + warning("Persist (P4P): [persister.mind] was loaded from ckey [persister.mind.loaded_from_ckey] mismatching the current ckey [ckey(persister.mind.key)].") + return //CHOMPAdd End // Okay this mob has a real loaded-from-savefile mind in it! var/datum/preferences/prefs = preferences_datums[persister.mind.loaded_from_ckey] if(!prefs) diff --git a/modular_chomp/code/modules/recycling/v_garbosystem.dm b/modular_chomp/code/modules/recycling/v_garbosystem.dm index f76471e5d3..f3c92c868b 100644 --- a/modular_chomp/code/modules/recycling/v_garbosystem.dm +++ b/modular_chomp/code/modules/recycling/v_garbosystem.dm @@ -77,6 +77,8 @@ items_taken++ break for(var/atom/movable/C in A.contents) + if(C.anchored) + C.anchored = FALSE C.forceMove(loc) if(isitem(A)) A.SpinAnimation(5,3) @@ -115,4 +117,4 @@ return else to_chat(user, "Unable to empty filter while the machine is running.") - return ..() \ No newline at end of file + return ..()