mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
[MIRROR] bunch of issues (#11109)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
56db86d29d
commit
e1b719d926
10
code/__defines/organ_external.dm
Normal file
10
code/__defines/organ_external.dm
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
GLOBAL_LIST_INIT(storable_amputated_organs, list(
|
||||||
|
BP_L_FOOT,
|
||||||
|
BP_R_FOOT,
|
||||||
|
BP_L_LEG,
|
||||||
|
BP_R_LEG,
|
||||||
|
BP_L_HAND,
|
||||||
|
BP_R_HAND,
|
||||||
|
BP_L_ARM,
|
||||||
|
BP_R_ARM,
|
||||||
|
))
|
||||||
@@ -21,8 +21,9 @@
|
|||||||
|
|
||||||
#define MAPTEXT(text) {"<span class='maptext'>[##text]</span>"}
|
#define MAPTEXT(text) {"<span class='maptext'>[##text]</span>"}
|
||||||
|
|
||||||
|
// Remove the + 1 at the end once byond fixes the issue. Currently MeasureText returns 1 px too less often
|
||||||
#define WXH_TO_HEIGHT(measurement, return_var) \
|
#define WXH_TO_HEIGHT(measurement, return_var) \
|
||||||
do { \
|
do { \
|
||||||
var/_measurement = measurement; \
|
var/_measurement = measurement; \
|
||||||
return_var = text2num(copytext(_measurement, findtextEx(_measurement, "x") + 1)); \
|
return_var = text2num(copytext(_measurement, findtextEx(_measurement, "x") + 1)) + 1; \
|
||||||
} while(FALSE);
|
} while(FALSE);
|
||||||
|
|||||||
@@ -147,7 +147,7 @@
|
|||||||
|
|
||||||
/obj/screen/movable/action_button/proc/dump_save()
|
/obj/screen/movable/action_button/proc/dump_save()
|
||||||
var/mob/user = our_hud.mymob
|
var/mob/user = our_hud.mymob
|
||||||
if(!user?.client)
|
if(!user?.client?.prefs)
|
||||||
return
|
return
|
||||||
LAZYREMOVE(user.client.prefs.action_button_screen_locs, "[name]_[id]")
|
LAZYREMOVE(user.client.prefs.action_button_screen_locs, "[name]_[id]")
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,8 @@
|
|||||||
//////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////
|
||||||
/// Adds hidden admin trackable fingerprints, visible even if normal fingerprints are smudged.
|
/// Adds hidden admin trackable fingerprints, visible even if normal fingerprints are smudged.
|
||||||
/datum/forensics_crime/proc/add_hiddenprints(mob/living/M as mob)
|
/datum/forensics_crime/proc/add_hiddenprints(mob/living/M as mob)
|
||||||
|
if(!fingerprintshidden)
|
||||||
|
fingerprintshidden = list()
|
||||||
if(!ishuman(M))
|
if(!ishuman(M))
|
||||||
if(fingerprintslast != M.key)
|
if(fingerprintslast != M.key)
|
||||||
fingerprintshidden += text("\[[time_stamp()]\] (Non-human mob). Real name: [], Key: []",M.real_name, M.key)
|
fingerprintshidden += text("\[[time_stamp()]\] (Non-human mob). Real name: [], Key: []",M.real_name, M.key)
|
||||||
|
|||||||
@@ -62,5 +62,5 @@
|
|||||||
. += "Use an empty hand on it to scoop up some snow, which you can use to make snowballs or snowmen."
|
. += "Use an empty hand on it to scoop up some snow, which you can use to make snowballs or snowmen."
|
||||||
|
|
||||||
/turf/simulated/floor/outdoors/grass/get_description_interaction()
|
/turf/simulated/floor/outdoors/grass/get_description_interaction()
|
||||||
. = "Use floor tiles on it to make a plating." // using . = ..() would incorrectly say you can remove the grass with a shovel
|
. = list("Use floor tiles on it to make a plating.") // using . = ..() would incorrectly say you can remove the grass with a shovel
|
||||||
. += "Use a shovel on it to dig for worms."
|
. += "Use a shovel on it to dig for worms."
|
||||||
|
|||||||
@@ -306,21 +306,21 @@
|
|||||||
* * redeemer - The person holding it
|
* * redeemer - The person holding it
|
||||||
*/
|
*/
|
||||||
/obj/machinery/mineral/equipment_vendor/proc/redeem_voucher(obj/item/mining_voucher/voucher, mob/redeemer)
|
/obj/machinery/mineral/equipment_vendor/proc/redeem_voucher(obj/item/mining_voucher/voucher, mob/redeemer)
|
||||||
to_chat(redeemer, "You insert your voucher into the machine!")
|
to_chat(redeemer, span_notice("You insert your voucher into the machine!"))
|
||||||
var/selection = tgui_input_list(redeemer, "Pick your equipment.", "Mining Voucher Redemption", list("Kinetic Accelerator + KA Addon", "Resonator + Advanced Ore Scanner", "Survival Pistol & Machete + Survival Addon","1000 Points"))
|
var/selection = tgui_input_list(redeemer, "Pick your equipment.", "Mining Voucher Redemption", list("Kinetic Accelerator + KA Addon", "Resonator + Advanced Ore Scanner", "Survival Pistol & Machete + Survival Addon","1000 Points"))
|
||||||
var/drop_location = drop_location()
|
var/drop_location = drop_location()
|
||||||
if(!Adjacent(redeemer))
|
if(!Adjacent(redeemer))
|
||||||
to_chat(redeemer, "You must stay near the machine to use it.")
|
to_chat(redeemer, span_warning("You must stay near the machine to use it."))
|
||||||
return
|
return
|
||||||
if(!selection)
|
if(!selection)
|
||||||
to_chat(redeemer, "You decide not to redeem anything for now.")
|
to_chat(redeemer, span_notice("You decide not to redeem anything for now."))
|
||||||
return
|
return
|
||||||
switch(selection)
|
switch(selection)
|
||||||
|
|
||||||
if("Kinetic Accelerator + KA Addon") //1250-2100 points worth
|
if("Kinetic Accelerator + KA Addon") //1250-2100 points worth
|
||||||
var/addon_selection = tgui_input_list(redeemer, "Pick your addon", "Mining Voucher Redemption", list("Cooldown", "Range","Holster")) //Just the basics. Nothing too crazy.
|
var/addon_selection = tgui_input_list(redeemer, "Pick your addon", "Mining Voucher Redemption", list("Cooldown", "Range","Holster")) //Just the basics. Nothing too crazy.
|
||||||
if(!addon_selection)
|
if(!addon_selection)
|
||||||
to_chat(redeemer, "You must select an addon.")
|
to_chat(redeemer, span_warning("You must select an addon."))
|
||||||
return
|
return
|
||||||
new /obj/item/gun/energy/kinetic_accelerator(drop_location)
|
new /obj/item/gun/energy/kinetic_accelerator(drop_location)
|
||||||
switch(addon_selection)
|
switch(addon_selection)
|
||||||
@@ -340,7 +340,7 @@
|
|||||||
if("Survival Pistol & Machete + Survival Addon") // ~3000-3500 points worth.
|
if("Survival Pistol & Machete + Survival Addon") // ~3000-3500 points worth.
|
||||||
var/addon_selection = tgui_input_list(redeemer, "Pick your survival addon", "Mining Voucher Redemption", list("Shelter Capsule", "Glucose", "Panacea", "Trauma", "Medipens")) //Just the basics. Nothing too crazy.
|
var/addon_selection = tgui_input_list(redeemer, "Pick your survival addon", "Mining Voucher Redemption", list("Shelter Capsule", "Glucose", "Panacea", "Trauma", "Medipens")) //Just the basics. Nothing too crazy.
|
||||||
if(!addon_selection)
|
if(!addon_selection)
|
||||||
to_chat(redeemer, "You must select an addon.")
|
to_chat(redeemer, span_warning("You must select an addon."))
|
||||||
return
|
return
|
||||||
new /obj/item/gun/energy/locked/phasegun/pistol(drop_location) //1500
|
new /obj/item/gun/energy/locked/phasegun/pistol(drop_location) //1500
|
||||||
new /obj/item/material/knife/machete(drop_location) //1000
|
new /obj/item/material/knife/machete(drop_location) //1000
|
||||||
|
|||||||
@@ -197,7 +197,7 @@
|
|||||||
if(vantag_hud)
|
if(vantag_hud)
|
||||||
compiled_vis |= VIS_CH_VANTAG
|
compiled_vis |= VIS_CH_VANTAG
|
||||||
|
|
||||||
if(client?.prefs.read_preference(/datum/preference/toggle/tummy_sprites))
|
if(client?.prefs?.read_preference(/datum/preference/toggle/tummy_sprites))
|
||||||
compiled_vis += VIS_CH_STOMACH
|
compiled_vis += VIS_CH_STOMACH
|
||||||
|
|
||||||
if(soulgem?.flag_check(SOULGEM_SEE_SR_SOULS))
|
if(soulgem?.flag_check(SOULGEM_SEE_SR_SOULS))
|
||||||
|
|||||||
@@ -153,7 +153,7 @@
|
|||||||
H.nif.unimplant(H) //Needs reference to owner to unimplant right.
|
H.nif.unimplant(H) //Needs reference to owner to unimplant right.
|
||||||
H.nif.moveToNullspace()
|
H.nif.moveToNullspace()
|
||||||
..()
|
..()
|
||||||
if(saved_nif)
|
if(saved_nif && !ismannequin(H))
|
||||||
saved_nif.quick_implant(H)
|
saved_nif.quick_implant(H)
|
||||||
|
|
||||||
/datum/species/protean/get_race_key()
|
/datum/species/protean/get_race_key()
|
||||||
|
|||||||
@@ -66,6 +66,7 @@
|
|||||||
//Melee Check
|
//Melee Check
|
||||||
if(istype(thing_to_check, /obj/item/melee/robotic))
|
if(istype(thing_to_check, /obj/item/melee/robotic))
|
||||||
var/obj/item/melee/robotic/melee = thing_to_check
|
var/obj/item/melee/robotic/melee = thing_to_check
|
||||||
|
melee.refresh_light(TRUE)
|
||||||
if(sprite_flag_check(ROBOT_HAS_MELEE_SPRITE) && melee.weapon_flag_check(COUNTS_AS_ROBOTIC_MELEE))
|
if(sprite_flag_check(ROBOT_HAS_MELEE_SPRITE) && melee.weapon_flag_check(COUNTS_AS_ROBOTIC_MELEE))
|
||||||
ourborg.add_overlay("[sprite_icon_state]-melee")
|
ourborg.add_overlay("[sprite_icon_state]-melee")
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -113,6 +113,7 @@
|
|||||||
sprite_hud_icon_state = "ert"
|
sprite_hud_icon_state = "ert"
|
||||||
rest_sprite_options = list("Default", "Sit")
|
rest_sprite_options = list("Default", "Sit")
|
||||||
sprite_flags = ROBOT_HAS_GUN_SPRITE | ROBOT_HAS_SHIELD_SPRITE
|
sprite_flags = ROBOT_HAS_GUN_SPRITE | ROBOT_HAS_SHIELD_SPRITE
|
||||||
|
|
||||||
/datum/robot_sprite/dogborg/tall/combat/derg/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
|
/datum/robot_sprite/dogborg/tall/combat/derg/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
|
||||||
..()
|
..()
|
||||||
if(ourborg.resting)
|
if(ourborg.resting)
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
B.name = "trap"
|
B.name = "trap"
|
||||||
B.desc = "As you step onto the large leaves of the mantrap, they suddenly shoot up and snap shut around you, encasing you in a fleshy-feeling gut. The saw-toothed spikes around the edge of the leaves interlock with one another and exerts a tremendous pressure on your body. Copious volumes of fluids begin to seep in from the walls themselves, rapidly coating your body and pooling around you, all of your movements only seem to speed up this process.."
|
B.desc = "As you step onto the large leaves of the mantrap, they suddenly shoot up and snap shut around you, encasing you in a fleshy-feeling gut. The saw-toothed spikes around the edge of the leaves interlock with one another and exerts a tremendous pressure on your body. Copious volumes of fluids begin to seep in from the walls themselves, rapidly coating your body and pooling around you, all of your movements only seem to speed up this process.."
|
||||||
B.mode_flags = DM_FLAG_THICKBELLY
|
B.mode_flags = DM_FLAG_THICKBELLY
|
||||||
B.belly_fullscreen = "destination_tumby"
|
B.belly_fullscreen = "VBO_maw12"
|
||||||
B.belly_fullscreen_color = "#02a802"
|
B.belly_fullscreen_color = "#02a802"
|
||||||
B.digest_brute = 2
|
B.digest_brute = 2
|
||||||
B.digest_burn = 2
|
B.digest_burn = 2
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
B.name = "stomach"
|
B.name = "stomach"
|
||||||
B.desc = "Walking a little too close to the pitcher plant, you trigger its trap mechanism and a tendril shoots out towards you. Wrapping around your body, you are rapidly dragged into the open mouth of the plant, stuffing your entire body into a fleshy, green stomach filled with a pool of some sort of tingling liquid. The lid of the plant slams down over the mouth, making it far more difficult to escape, all whilst that pool steadily seems to be filling up."
|
B.desc = "Walking a little too close to the pitcher plant, you trigger its trap mechanism and a tendril shoots out towards you. Wrapping around your body, you are rapidly dragged into the open mouth of the plant, stuffing your entire body into a fleshy, green stomach filled with a pool of some sort of tingling liquid. The lid of the plant slams down over the mouth, making it far more difficult to escape, all whilst that pool steadily seems to be filling up."
|
||||||
B.mode_flags = DM_FLAG_THICKBELLY
|
B.mode_flags = DM_FLAG_THICKBELLY
|
||||||
B.belly_fullscreen = "destination_tumby"
|
B.belly_fullscreen = "VBO_belly1"
|
||||||
B.belly_fullscreen_color = "#02a802"
|
B.belly_fullscreen_color = "#02a802"
|
||||||
B.digest_brute = 1
|
B.digest_brute = 1
|
||||||
B.digest_burn = 1
|
B.digest_burn = 1
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ var/global/moth_amount = 0 // CHOMPEnable, Rykka waz here. *pawstamp*
|
|||||||
//CHOMPEnable Start
|
//CHOMPEnable Start
|
||||||
if(prob(1) && charge >= 32000 && can_evolve == 1 && moth_amount < 1) //it's reading from the moth_amount global list to determine if it can evolve. There should only ever be a maxcap of 1 existing solar moth alive at any time. TODO: make the code decrease the list after 1 has spawned this shift.
|
if(prob(1) && charge >= 32000 && can_evolve == 1 && moth_amount < 1) //it's reading from the moth_amount global list to determine if it can evolve. There should only ever be a maxcap of 1 existing solar moth alive at any time. TODO: make the code decrease the list after 1 has spawned this shift.
|
||||||
anchored = 0
|
anchored = 0
|
||||||
PN = attached.powernet
|
PN = null
|
||||||
release_vore_contents()
|
release_vore_contents()
|
||||||
if(prey_excludes)
|
if(prey_excludes)
|
||||||
prey_excludes.Cut()
|
prey_excludes.Cut()
|
||||||
|
|||||||
@@ -257,6 +257,9 @@
|
|||||||
var/mob/living/carbon/human/H = target
|
var/mob/living/carbon/human/H = target
|
||||||
H.forcesay(GLOB.hit_appends)
|
H.forcesay(GLOB.hit_appends)
|
||||||
|
|
||||||
|
/obj/item/melee/robotic/proc/refresh_light(clear)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/item/melee/robotic/blade //For downstreams that use blade
|
/obj/item/melee/robotic/blade //For downstreams that use blade
|
||||||
name = "Robotic Blade"
|
name = "Robotic Blade"
|
||||||
desc = "A glowing blade. It appears to be extremely sharp."
|
desc = "A glowing blade. It appears to be extremely sharp."
|
||||||
@@ -292,7 +295,13 @@
|
|||||||
var/mutable_appearance/blade_overlay = mutable_appearance(icon, "[icon_state]_blade")
|
var/mutable_appearance/blade_overlay = mutable_appearance(icon, "[icon_state]_blade")
|
||||||
blade_overlay.color = lcolor
|
blade_overlay.color = lcolor
|
||||||
add_overlay(blade_overlay)
|
add_overlay(blade_overlay)
|
||||||
set_light(2, 1, lcolor)
|
refresh_light()
|
||||||
|
|
||||||
|
/obj/item/melee/robotic/blade/refresh_light(clear)
|
||||||
|
if(active)
|
||||||
|
if(clear)
|
||||||
|
set_light(0)
|
||||||
|
set_light(2, 2, lcolor)
|
||||||
else
|
else
|
||||||
set_light(0)
|
set_light(0)
|
||||||
|
|
||||||
@@ -395,7 +404,12 @@
|
|||||||
icon_state = "[initial(name)]_active"
|
icon_state = "[initial(name)]_active"
|
||||||
else
|
else
|
||||||
icon_state = "[initial(name)]"
|
icon_state = "[initial(name)]"
|
||||||
|
refresh_light()
|
||||||
|
|
||||||
|
/obj/item/melee/robotic/baton/refresh_light(clear)
|
||||||
if(icon_state == "[initial(name)]_active")
|
if(icon_state == "[initial(name)]_active")
|
||||||
|
if(clear)
|
||||||
|
set_light(0)
|
||||||
set_light(2, 1, lightcolor)
|
set_light(2, 1, lightcolor)
|
||||||
else
|
else
|
||||||
set_light(0)
|
set_light(0)
|
||||||
|
|||||||
@@ -701,7 +701,7 @@
|
|||||||
result_amount = 1
|
result_amount = 1
|
||||||
|
|
||||||
/decl/chemical_reaction/instant/concrete/on_reaction(var/datum/reagents/holder, var/created_volume)
|
/decl/chemical_reaction/instant/concrete/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||||
new /obj/item/stack/material/concrete(get_turf(holder.my_atom), created_volume)
|
new /obj/item/stack/material/concrete(get_turf(holder.my_atom), round(created_volume))
|
||||||
return
|
return
|
||||||
|
|
||||||
/* Grenade reactions */
|
/* Grenade reactions */
|
||||||
|
|||||||
@@ -56,14 +56,14 @@
|
|||||||
balloon_alert(user, "\the [blocked] is in the way!")
|
balloon_alert(user, "\the [blocked] is in the way!")
|
||||||
return
|
return
|
||||||
|
|
||||||
balloon_alert_visible("[user] attempts to force [M] to swallow \the [src].")
|
user.balloon_alert_visible("[user] attempts to force [M] to swallow \the [src].")
|
||||||
|
|
||||||
user.setClickCooldown(user.get_attack_speed(src))
|
user.setClickCooldown(user.get_attack_speed(src))
|
||||||
if(!do_mob(user, M))
|
if(!do_mob(user, M))
|
||||||
return
|
return
|
||||||
|
|
||||||
user.drop_from_inventory(src) //icon update
|
user.drop_from_inventory(src) //icon update
|
||||||
balloon_alert_visible("[user] forces [M] to swallow \the [src].")
|
user.balloon_alert_visible("[user] forces [M] to swallow \the [src].")
|
||||||
|
|
||||||
var/contained = reagentlist()
|
var/contained = reagentlist()
|
||||||
add_attack_logs(user,M,"Fed a pill containing [contained]")
|
add_attack_logs(user,M,"Fed a pill containing [contained]")
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
if(!target.reagents.total_volume)
|
if(!target.reagents.total_volume)
|
||||||
balloon_alert(user, "[target] is empty.")
|
balloon_alert(user, "[target] is empty.")
|
||||||
return
|
return
|
||||||
balloon_alert_visible("[user] puts something in \the [target]", "[target] dissolves in \the [src]", 2)
|
user.balloon_alert_visible("[user] puts something in \the [target]", "[target] dissolves in \the [src]", 2)
|
||||||
|
|
||||||
add_attack_logs(user,null,"Spiked [target.name] with a pill containing [reagentlist()]")
|
add_attack_logs(user,null,"Spiked [target.name] with a pill containing [reagentlist()]")
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
/obj/item/reagent_containers/pill/attackby(obj/item/W as obj, mob/user as mob)
|
/obj/item/reagent_containers/pill/attackby(obj/item/W as obj, mob/user as mob)
|
||||||
if(is_sharp(W))
|
if(is_sharp(W))
|
||||||
var/obj/item/reagent_containers/powder/J = new /obj/item/reagent_containers/powder(src.loc)
|
var/obj/item/reagent_containers/powder/J = new /obj/item/reagent_containers/powder(src.loc)
|
||||||
balloon_alert_visible("[user] cuts up [src] with [W]!", "cut up \the [src] with [W]")
|
user.balloon_alert_visible("[user] cuts up [src] with [W]!", "cut up \the [src] with [W]")
|
||||||
playsound(src.loc, 'sound/effects/chop.ogg', 50, 1)
|
playsound(src.loc, 'sound/effects/chop.ogg', 50, 1)
|
||||||
|
|
||||||
if(reagents)
|
if(reagents)
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
|
|
||||||
if(istype(W, /obj/item/card/id))
|
if(istype(W, /obj/item/card/id))
|
||||||
var/obj/item/reagent_containers/powder/J = new /obj/item/reagent_containers/powder(src.loc)
|
var/obj/item/reagent_containers/powder/J = new /obj/item/reagent_containers/powder(src.loc)
|
||||||
balloon_alert_visible("[user] clumsily cuts up [src] with [W]!", "You clumsily cut up \the [src] with [W]")
|
user.balloon_alert_visible("[user] clumsily cuts up [src] with [W]!", "You clumsily cut up \the [src] with [W]")
|
||||||
playsound(src.loc, 'sound/effects/chop.ogg', 50, 1)
|
playsound(src.loc, 'sound/effects/chop.ogg', 50, 1)
|
||||||
|
|
||||||
if(reagents)
|
if(reagents)
|
||||||
|
|||||||
@@ -189,7 +189,10 @@ GLOBAL_LIST_INIT(vore_words_snake, list("snake","serpent","reptilian","noodle","
|
|||||||
/// `prey` may be a string or a specific prey ref.
|
/// `prey` may be a string or a specific prey ref.
|
||||||
/obj/belly/proc/belly_format_string(message, prey, use_absorbed_count = FALSE, item = null, dest = null, use_first_only = FALSE)
|
/obj/belly/proc/belly_format_string(message, prey, use_absorbed_count = FALSE, item = null, dest = null, use_first_only = FALSE)
|
||||||
if(islist(message))
|
if(islist(message))
|
||||||
. = "[pick(message)]"
|
if(!LAZYLEN(message))
|
||||||
|
. = ""
|
||||||
|
else
|
||||||
|
. = "[pick(message)]"
|
||||||
else
|
else
|
||||||
. = "[message]"
|
. = "[message]"
|
||||||
|
|
||||||
@@ -236,6 +239,8 @@ GLOBAL_LIST_INIT(vore_words_snake, list("snake","serpent","reptilian","noodle","
|
|||||||
. = replacetext(., "%snack", use_first_only ? GLOB.vore_words_snackname[1] : pick(GLOB.vore_words_snackname))
|
. = replacetext(., "%snack", use_first_only ? GLOB.vore_words_snackname[1] : pick(GLOB.vore_words_snackname))
|
||||||
. = replacetext(., "%hot", use_first_only ? GLOB.vore_words_hot[1] : pick(GLOB.vore_words_hot))
|
. = replacetext(., "%hot", use_first_only ? GLOB.vore_words_hot[1] : pick(GLOB.vore_words_hot))
|
||||||
. = replacetext(., "%snake", use_first_only ? GLOB.vore_words_snake[1] : pick(GLOB.vore_words_snake))
|
. = replacetext(., "%snake", use_first_only ? GLOB.vore_words_snake[1] : pick(GLOB.vore_words_snake))
|
||||||
|
if(!.)
|
||||||
|
. = "No message set for this action. Please inform your pred to fix this."
|
||||||
|
|
||||||
// Get the line that should show up in Examine message if the owner of this belly
|
// Get the line that should show up in Examine message if the owner of this belly
|
||||||
// is examined. By making this a proc, we not only take advantage of polymorphism,
|
// is examined. By making this a proc, we not only take advantage of polymorphism,
|
||||||
|
|||||||
@@ -169,7 +169,10 @@
|
|||||||
for(var/name in character.species.has_limbs)
|
for(var/name in character.species.has_limbs)
|
||||||
var/obj/item/organ/external/O = character.organs_by_name[name]
|
var/obj/item/organ/external/O = character.organs_by_name[name]
|
||||||
if(!O)
|
if(!O)
|
||||||
prefs.organ_data[name] = "amputated"
|
if(name in GLOB.storable_amputated_organs)
|
||||||
|
prefs.organ_data[name] = "amputated"
|
||||||
|
else
|
||||||
|
prefs.rlimb_data.Remove(name) // Missing limb and not in the global list means default model
|
||||||
else if(O.robotic >= ORGAN_ROBOT)
|
else if(O.robotic >= ORGAN_ROBOT)
|
||||||
prefs.organ_data[name] = "cyborg"
|
prefs.organ_data[name] = "cyborg"
|
||||||
if(O.model)
|
if(O.model)
|
||||||
|
|||||||
@@ -117,6 +117,7 @@
|
|||||||
#include "code\__defines\objects.dm"
|
#include "code\__defines\objects.dm"
|
||||||
#include "code\__defines\observer.dm"
|
#include "code\__defines\observer.dm"
|
||||||
#include "code\__defines\ores.dm"
|
#include "code\__defines\ores.dm"
|
||||||
|
#include "code\__defines\organ_external.dm"
|
||||||
#include "code\__defines\organ_internal.dm"
|
#include "code\__defines\organ_internal.dm"
|
||||||
#include "code\__defines\overlay_ch.dm"
|
#include "code\__defines\overlay_ch.dm"
|
||||||
#include "code\__defines\overmap.dm"
|
#include "code\__defines\overmap.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user