mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-26 14:47:50 +01:00
Initial work on adding vore sprites
This commit is contained in:
@@ -7,3 +7,8 @@
|
||||
#define DM_FLAG_REAGENTSDIGEST 0x2
|
||||
#define DM_FLAG_REAGENTSABSORB 0x4
|
||||
#define DM_FLAG_REAGENTSDRAIN 0x8
|
||||
|
||||
//Vore Sprite Flags
|
||||
#define DM_FLAG_VORESPRITE_BELLY 0x1
|
||||
#define DM_FLAG_VORESPRITE_TAIL 0x2
|
||||
#define DM_FLAG_VORESPRITE_MARKING 0x4
|
||||
@@ -53,7 +53,11 @@
|
||||
R.pixel_x = -16
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
R.dogborg = TRUE
|
||||
//CHOMPEdit - Add vore capacity
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
//CHOMPEdit End
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
|
||||
@@ -85,6 +85,8 @@
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
|
||||
@@ -248,6 +248,10 @@
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
//CHOMPEdit - Add vore capacity
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
//CHOMPEdit End
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
@@ -360,6 +364,10 @@
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
//CHOMPEdit - Add vore capacity
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
//CHOMPEdit End
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
@@ -412,6 +420,10 @@
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
//CHOMPEdit - Add vore capacity
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
//CHOMPEdit End
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
@@ -499,6 +511,10 @@
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
//CHOMPEdit - Add vore capacity
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
//CHOMPEdit End
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
@@ -580,6 +596,10 @@
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
//CHOMPEdit - Add vore capacity
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
//CHOMPEdit End
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
@@ -737,6 +757,10 @@
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
//CHOMPEdit - Add vore capacity
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
//CHOMPEdit End
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
@@ -815,6 +839,10 @@
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
//CHOMPEdit - Add vore capacity
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
//CHOMPEdit End
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
@@ -876,6 +904,10 @@
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
//CHOMPEdit - Add vore capacity
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
//CHOMPEdit End
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
@@ -962,6 +994,10 @@
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
//CHOMPEdit - Add vore capacity
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
//CHOMPEdit End
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
..()
|
||||
@@ -1037,6 +1073,10 @@
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
//CHOMPEdit - Add vore capacity
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
//CHOMPEdit End
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
|
||||
@@ -97,9 +97,10 @@
|
||||
vr_sprite_check()
|
||||
..()
|
||||
if(dogborg == TRUE && stat == CONSCIOUS)
|
||||
update_fullness()
|
||||
if(sleeper_g == TRUE)
|
||||
add_overlay("[module_sprites[icontype]]-sleeper_g")
|
||||
if(sleeper_r == TRUE)
|
||||
if(sleeper_r == TRUE || (!sleeper_g && vore_fullness_ex["stomach"])) //CHOMPEdit - Also allow normal vore bellies to affect this sprite
|
||||
add_overlay("[module_sprites[icontype]]-sleeper_r")
|
||||
if(istype(module_active,/obj/item/weapon/gun/energy/laser/mounted))
|
||||
add_overlay("laser")
|
||||
|
||||
@@ -107,6 +107,8 @@ What Borgs are available is sadly handled in the above file in the proc
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
..()
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
|
||||
var/vore_active = 0 // If vore behavior is enabled for this mob
|
||||
|
||||
var/vore_capacity = 1 // The capacity (in people) this person can hold
|
||||
//CHOMPEdit - Vore_capacity is now defined on living
|
||||
vore_capacity = 1 // The capacity (in people) this person can hold
|
||||
var/vore_max_size = RESIZE_HUGE // The max size this mob will consider eating
|
||||
var/vore_min_size = RESIZE_TINY // The min size this mob will consider eating
|
||||
var/vore_bump_chance = 0 // Chance of trying to eat anyone that bumps into them, regardless of hostility
|
||||
@@ -40,9 +41,11 @@
|
||||
var/vore_default_contamination_flavor = "Generic" //Contamination descriptors
|
||||
var/vore_default_contamination_color = "green" //Contamination color
|
||||
|
||||
var/vore_fullness = 0 // How "full" the belly is (controls icons)
|
||||
var/vore_icons = 0 // Bitfield for which fields we have vore icons for.
|
||||
var/vore_eyes = FALSE // For mobs with fullness specific eye overlays.
|
||||
//CHOMPEDIT start - Moved to living
|
||||
//var/vore_fullness = 0 // How "full" the belly is (controls icons)
|
||||
//var/vore_icons = 0 // Bitfield for which fields we have vore icons for.
|
||||
//var/vore_eyes = FALSE // For mobs with fullness specific eye overlays.
|
||||
//CHOMPEDIT end.
|
||||
var/life_disabled = 0 // For performance reasons
|
||||
|
||||
var/mount_offset_x = 5 // Horizontal riding offset.
|
||||
@@ -67,6 +70,7 @@
|
||||
return myid
|
||||
|
||||
// Update fullness based on size & quantity of belly contents
|
||||
/* CHOMPEdit - moved to living
|
||||
/mob/living/simple_mob/proc/update_fullness()
|
||||
var/new_fullness = 0
|
||||
for(var/obj/belly/B as anything in vore_organs)
|
||||
@@ -75,6 +79,7 @@
|
||||
new_fullness = new_fullness / size_multiplier //Divided by pred's size so a macro mob won't get macro belly from a regular prey.
|
||||
new_fullness = round(new_fullness, 1) // Because intervals of 0.25 are going to make sprite artists cry.
|
||||
vore_fullness = min(vore_capacity, new_fullness)
|
||||
*/
|
||||
|
||||
/mob/living/simple_mob/update_icon()
|
||||
. = ..()
|
||||
|
||||
@@ -318,6 +318,7 @@ I think I covered everything.
|
||||
update_fullness()
|
||||
build_icons()
|
||||
|
||||
/* CHOMPEDIT - removed
|
||||
/mob/living/simple_mob/vore/bigdragon/update_fullness()
|
||||
var/new_fullness = 0
|
||||
// Only count stomachs to fullness
|
||||
@@ -328,6 +329,7 @@ I think I covered everything.
|
||||
new_fullness /= size_multiplier
|
||||
new_fullness = round(new_fullness, 1)
|
||||
vore_fullness = min(vore_capacity, new_fullness)
|
||||
*/
|
||||
|
||||
/mob/living/simple_mob/vore/bigdragon/proc/build_icons(var/random)
|
||||
cut_overlays()
|
||||
@@ -505,6 +507,7 @@ I think I covered everything.
|
||||
|
||||
/mob/living/simple_mob/vore/bigdragon/init_vore()
|
||||
var/obj/belly/B = new /obj/belly/dragon/maw(src)
|
||||
B.affects_vore_sprites = FALSE //CHOMPEdit - Added so that the new system handles these not affecting the sprite.
|
||||
B.emote_lists[DM_HOLD] = list(
|
||||
"The dragon's breath continues to pant over you rhythmically, each exhale carrying a bone-shivering growl",
|
||||
"The thick, heavy tongue lifts, curling around you, cramming you tightly against it's teeth, to squeeze some flavor out of you.",
|
||||
@@ -514,6 +517,7 @@ I think I covered everything.
|
||||
gut1 = B
|
||||
vore_selected = B
|
||||
B = new /obj/belly/dragon/throat(src)
|
||||
B.affects_vore_sprites = FALSE //CHOMPEdit - Added so that the new system handles these not affecting the sprite.
|
||||
B.emote_lists[DM_HOLD] = list(
|
||||
"Gggllrrrk! Another loud, squelching swallow rings out in your ears, dragging you a little deeper into the furnace-like humid heat of the dragon's body.",
|
||||
"Nestling in a still throat for a moment, you feel the walls quiver and undulate excitedly in tune with the beast's heartbeat.",
|
||||
@@ -529,6 +533,7 @@ I think I covered everything.
|
||||
"The constant, rhythmic kneading and massaging starts to take its toll along with the muggy heat, making you feel weaker and weaker!",
|
||||
"The drake happily wanders around while digesting its meal, almost like it is trying to show off the hanging gut you've given it.")
|
||||
B = new /obj/belly/dragon/maw/heal(src)
|
||||
B.affects_vore_sprites = FALSE //CHOMPEdit - Added so that the new system handles these not affecting the sprite.
|
||||
B.emote_lists[DM_HEAL] = list(
|
||||
"Gently, the dragon's hot, bumpy tongue cradles you, feeling like a slime-soaked memory-foam bed, twitching with life. The delicacy that the dragon holds you with is quite soothing.",
|
||||
"The wide, slick throat infront of you constantly quivers and undulates. Every hot muggy exhale of the beast makes that throat spread, ropes of slime within it's hold shivering in the flow, inhales causing it to clench up somewhat.",
|
||||
@@ -537,6 +542,7 @@ I think I covered everything.
|
||||
"Saliva soaks the area all around you thickly, lubricating absolutely everything with the hot liquid. From time to time, the beast carefully shifts the rear of it's tongue to piston a cache of the goop down the hatch. The throat seen clenching tightly shut, the tongue's rear bobbing upwards, before down again - showing off a freshly slime-soaked entrance.")
|
||||
gut2 = B
|
||||
B = new /obj/belly/dragon/throat/heal(src)
|
||||
B.affects_vore_sprites = FALSE //CHOMPEdit - Added so that the new system handles these not affecting the sprite.
|
||||
B.emote_lists[DM_HEAL] = list(
|
||||
"The tunnel of the gullet closely wraps around you, mummifying you in a hot writhing embrace of silky flesh. The walls are slick, soaked in a lubricating slime, and so very warm.",
|
||||
"The walls around you pulse in time with the dragon's heartbeat, which itself pounds in your ears. Rushing wind of calm breaths fill the gaps, and distant squelches of slimy payloads shifted around by soft flesh echo down below.",
|
||||
|
||||
@@ -344,7 +344,7 @@ I think I covered everything.
|
||||
update_fullness()
|
||||
build_icons()
|
||||
|
||||
/mob/living/simple_mob/vore/bigdragon/update_fullness()
|
||||
/* /mob/living/simple_mob/vore/bigdragon/update_fullness()
|
||||
var/new_fullness = 0
|
||||
// Only count stomachs to fullness
|
||||
for(var/obj/belly/B in vore_organs)
|
||||
@@ -354,6 +354,7 @@ I think I covered everything.
|
||||
new_fullness /= size_multiplier
|
||||
new_fullness = round(new_fullness, 1)
|
||||
vore_fullness = min(vore_capacity, new_fullness)
|
||||
*/
|
||||
|
||||
/mob/living/simple_mob/vore/bigdragon/proc/build_icons(var/random)
|
||||
cut_overlays()
|
||||
@@ -534,6 +535,7 @@ I think I covered everything.
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
var/obj/belly/B = new /obj/belly/dragon/maw(src)
|
||||
B.affects_vore_sprites = FALSE
|
||||
B.emote_lists[DM_HOLD] = list(
|
||||
"The dragon's breath continues to pant over you rhythmically, each exhale carrying a bone-shivering growl",
|
||||
"The thick, heavy tongue lifts, curling around you, cramming you tightly against it's teeth, to squeeze some flavor out of you.",
|
||||
@@ -543,6 +545,7 @@ I think I covered everything.
|
||||
gut1 = B
|
||||
vore_selected = B
|
||||
B = new /obj/belly/dragon/throat(src)
|
||||
B.affects_vore_sprites = FALSE
|
||||
B.emote_lists[DM_HOLD] = list(
|
||||
"Gggllrrrk! Another loud, squelching swallow rings out in your ears, dragging you a little deeper into the furnace-like humid heat of the dragon's body.",
|
||||
"Nestling in a still throat for a moment, you feel the walls quiver and undulate excitedly in tune with the beast's heartbeat.",
|
||||
@@ -558,6 +561,7 @@ I think I covered everything.
|
||||
"The constant, rhythmic kneading and massaging starts to take its toll along with the muggy heat, making you feel weaker and weaker!",
|
||||
"The drake happily wanders around while digesting its meal, almost like it is trying to show off the hanging gut you've given it.")
|
||||
B = new /obj/belly/dragon/maw/heal(src)
|
||||
B.affects_vore_sprites = FALSE
|
||||
B.emote_lists[DM_HEAL] = list(
|
||||
"Gently, the dragon's hot, bumpy tongue cradles you, feeling like a slime-soaked memory-foam bed, twitching with life. The delicacy that the dragon holds you with is quite soothing.",
|
||||
"The wide, slick throat infront of you constantly quivers and undulates. Every hot muggy exhale of the beast makes that throat spread, ropes of slime within it's hold shivering in the flow, inhales causing it to clench up somewhat.",
|
||||
@@ -566,6 +570,7 @@ I think I covered everything.
|
||||
"Saliva soaks the area all around you thickly, lubricating absolutely everything with the hot liquid. From time to time, the beast carefully shifts the rear of it's tongue to piston a cache of the goop down the hatch. The throat seen clenching tightly shut, the tongue's rear bobbing upwards, before down again - showing off a freshly slime-soaked entrance.")
|
||||
gut2 = B
|
||||
B = new /obj/belly/dragon/throat/heal(src)
|
||||
B.affects_vore_sprites = FALSE
|
||||
B.emote_lists[DM_HEAL] = list(
|
||||
"The tunnel of the gullet closely wraps around you, mummifying you in a hot writhing embrace of silky flesh. The walls are slick, soaked in a lubricating slime, and so very warm.",
|
||||
"The walls around you pulse in time with the dragon's heartbeat, which itself pounds in your ears. Rushing wind of calm breaths fill the gaps, and distant squelches of slimy payloads shifted around by soft flesh echo down below.",
|
||||
|
||||
@@ -28,8 +28,11 @@
|
||||
// Vore tags
|
||||
vore_active = 1
|
||||
vore_capacity = 1
|
||||
vore_capacity_ex = list("stomach" = 1, "tail" = 1)
|
||||
vore_fullness_ex = list("stomach" = 0, "tail" = 0)
|
||||
vore_bump_emote = "coils their tail around"
|
||||
vore_icons = 0
|
||||
vore_icon_bellies = list("stomach", "tail")
|
||||
// Default stomach
|
||||
vore_stomach_name = "upper stomach"
|
||||
vore_stomach_flavor = "You've ended up inside of the lamia's human stomach. It's pretty much identical to any human stomach, but the valve leading deeper is much bigger."
|
||||
@@ -51,6 +54,7 @@
|
||||
say_list_type = /datum/say_list/lamia
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/passive
|
||||
|
||||
/* CHOMPEdit - now handled by new belly features.
|
||||
/mob/living/simple_mob/vore/lamia/update_fullness()
|
||||
var/new_fullness = 0
|
||||
// We only want to count our upper_stomach towards capacity
|
||||
@@ -61,6 +65,7 @@
|
||||
new_fullness /= size_multiplier
|
||||
new_fullness = round(new_fullness, 1)
|
||||
vore_fullness = min(vore_capacity, new_fullness)
|
||||
*/
|
||||
|
||||
/mob/living/simple_mob/vore/lamia/update_icon()
|
||||
. = ..()
|
||||
@@ -72,6 +77,7 @@
|
||||
// And copper_vore_1_0 is full upper stomach, but empty tail stomach
|
||||
// For unconscious: [icon_rest]_vore_[upper]_[tail]
|
||||
// For dead, it doesn't show.
|
||||
/* CHOMPEdit - Handled differently now.
|
||||
var/upper_shows = FALSE
|
||||
var/tail_shows = FALSE
|
||||
|
||||
@@ -89,6 +95,9 @@
|
||||
upper_shows = TRUE
|
||||
else if(B.name == "tail stomach")
|
||||
tail_shows = TRUE
|
||||
*/
|
||||
var/upper_shows = vore_fullness_ex["stomach"]
|
||||
var/tail_shows = vore_fullness_ex["tail"]
|
||||
|
||||
if(upper_shows || tail_shows)
|
||||
if((stat == CONSCIOUS) && (!icon_rest || !resting || !incapacitated(INCAPACITATION_DISABLED)))
|
||||
@@ -98,6 +107,7 @@
|
||||
else if(((stat == UNCONSCIOUS) || resting || incapacitated(INCAPACITATION_DISABLED) ) && icon_rest)
|
||||
icon_state = "[icon_rest]_vore_[upper_shows]_[tail_shows]"
|
||||
|
||||
|
||||
/mob/living/simple_mob/vore/lamia/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
@@ -126,6 +136,7 @@
|
||||
tail.human_prey_swallow_time = swallowTime
|
||||
tail.nonhuman_prey_swallow_time = swallowTime
|
||||
tail.vore_verb = "stuff"
|
||||
tail.belly_sprite_to_affect = "tail"
|
||||
tail.emote_lists[DM_HOLD] = B.emote_lists[DM_HOLD].Copy()
|
||||
tail.emote_lists[DM_DIGEST] = B.emote_lists[DM_DIGEST].Copy()
|
||||
|
||||
|
||||
@@ -74,6 +74,36 @@
|
||||
"Cherry Jelly"
|
||||
)
|
||||
|
||||
//CHOMP - vore sprites
|
||||
var/vore_sprite_flags = DM_FLAG_VORESPRITE_BELLY
|
||||
var/tmp/static/list/vore_sprite_flag_list= list(
|
||||
"Normal belly sprite" = DM_FLAG_VORESPRITE_BELLY,
|
||||
//"Tail adjustment" = DM_FLAG_VORESPRITE_TAIL,
|
||||
//"Marking addition" = DM_FLAG_VORESPRITE_MARKING
|
||||
)
|
||||
|
||||
var/affects_vore_sprites = TRUE
|
||||
var/count_absorbed_prey_for_sprite = TRUE
|
||||
var/resist_triggers_animation = TRUE
|
||||
var/size_factor_for_sprite = 1
|
||||
var/belly_sprite_to_affect = "stomach"
|
||||
var/datum/sprite_accessory/tail/tail_to_change_to = FALSE
|
||||
var/tail_colouration = FALSE
|
||||
var/tail_extra_overlay = FALSE
|
||||
var/tail_extra_overlay2 = FALSE
|
||||
//var/marking_to_add = NULL
|
||||
//var/marking_color = NULL
|
||||
|
||||
|
||||
/obj/belly/proc/GetFullnessFromBelly()
|
||||
if(!affects_vore_sprites)
|
||||
return 0
|
||||
var/belly_fullness = 0
|
||||
for(var/mob/living/M in src)
|
||||
if(count_absorbed_prey_for_sprite || !M.absorbed)
|
||||
belly_fullness += M.size_multiplier
|
||||
belly_fullness *= size_factor_for_sprite
|
||||
return belly_fullness
|
||||
|
||||
|
||||
///////////////////// NUTRITION REAGENT PRODUCTION /////////////////
|
||||
|
||||
@@ -240,6 +240,12 @@
|
||||
"fullness4_messages",
|
||||
"fullness5_messages",
|
||||
"vorespawn_blacklist",
|
||||
"vore_sprite_flags",
|
||||
"affects_vore_sprites",
|
||||
"count_absorbed_prey_for_sprite",
|
||||
"resist_triggers_animation",
|
||||
"size_factor_for_sprite",
|
||||
"belly_sprite_to_affect",
|
||||
"autotransferchance",
|
||||
"autotransferwait",
|
||||
"autotransferlocation",
|
||||
@@ -1182,6 +1188,12 @@
|
||||
dupe.reagent_transfer_verb = reagent_transfer_verb
|
||||
dupe.custom_max_volume = custom_max_volume
|
||||
dupe.vorespawn_blacklist = vorespawn_blacklist
|
||||
dupe.vore_sprite_flags = vore_sprite_flags
|
||||
dupe.affects_vore_sprites = affects_vore_sprites
|
||||
dupe.count_absorbed_prey_for_sprite = count_absorbed_prey_for_sprite
|
||||
dupe.resist_triggers_animation = resist_triggers_animation
|
||||
dupe.size_factor_for_sprite = size_factor_for_sprite
|
||||
dupe.belly_sprite_to_affect = belly_sprite_to_affect
|
||||
dupe.autotransferchance = autotransferchance
|
||||
dupe.autotransferwait = autotransferwait
|
||||
dupe.autotransferlocation = autotransferlocation
|
||||
|
||||
@@ -9,6 +9,32 @@
|
||||
|
||||
var/parasitic = FALSE //Digestion immunity and nutrition leeching variable
|
||||
|
||||
// CHOMP vore icons refactor (Now on living)
|
||||
var/vore_capacity = 0 // Maximum capacity, -1 for unlimited
|
||||
var/vore_capacity_ex = list("stomach" = 0) //expanded list of capacities
|
||||
var/vore_fullness = 0 // How "full" the belly is (controls icons)
|
||||
var/list/vore_fullness_ex = list("stomach" = 0) // Expanded list of fullness
|
||||
var/vore_icons = 0 // Bitfield for which fields we have vore icons for.
|
||||
var/vore_eyes = FALSE // For mobs with fullness specific eye overlays.
|
||||
|
||||
var/list/vore_icon_bellies = list("stomach")
|
||||
|
||||
|
||||
// Update fullness based on size & quantity of belly contents
|
||||
/mob/living/proc/update_fullness()
|
||||
var/list/new_fullness = list()
|
||||
vore_fullness = 0
|
||||
for(var/belly_class in vore_icon_bellies)
|
||||
new_fullness[belly_class] = 0
|
||||
for(var/obj/belly/B as anything in vore_organs)
|
||||
new_fullness[B.belly_sprite_to_affect] += B.GetFullnessFromBelly()
|
||||
for(var/belly_class in vore_icon_bellies)
|
||||
new_fullness[belly_class] /= size_multiplier //Divided by pred's size so a macro mob won't get macro belly from a regular prey.
|
||||
new_fullness[belly_class] = round(new_fullness[belly_class], 1) // Because intervals of 0.25 are going to make sprite artists cry.
|
||||
vore_fullness_ex[belly_class] = min(vore_capacity_ex[belly_class], new_fullness[belly_class])
|
||||
vore_fullness += new_fullness[belly_class]
|
||||
vore_fullness = min(vore_capacity, vore_fullness)
|
||||
|
||||
|
||||
/mob/living/proc/check_vorefootstep(var/m_intent, var/turf/T)
|
||||
if(vore_footstep_volume_cooldown++ >= 5) //updating the 'dominating' belly, the one that has most liquid and is loudest.
|
||||
|
||||
@@ -44,11 +44,11 @@ const digestModeToPreyMode = {
|
||||
* - The Belly Selection Panel, where you can select what belly people will go into and customize the active one.
|
||||
* - User Preferences, where you can adjust all of your vore preferences on the fly.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* CHOMPedits specified here. Read ALL of this if conflicts happen, I can't find a way to add comments line by line.
|
||||
*
|
||||
* Under VoreSelectedBelly the following strings have been added to const{}:
|
||||
* Under VoreSelectedBelly the following strings have been added to const{}:
|
||||
* show_liq, liq_interacts, liq_reagent_gen, liq_reagent_type, liq_reagent_name,
|
||||
* liq_reagent_transfer_verb, liq_reagent_nutri_rate, liq_reagent_capacity, liq_sloshing, liq_reagent_addons,
|
||||
* show_liq_fullness, liq_messages, liq_msg_toggle1, liq_msg_toggle2, liq_msg_toggle3, liq_msg_toggle4,
|
||||
@@ -732,10 +732,85 @@ const VoreSelectedBellyVisuals = (props, context) => {
|
||||
mapRef,
|
||||
possible_fullscreens,
|
||||
disable_hud,
|
||||
vore_sprite_flags,
|
||||
affects_voresprite,
|
||||
absorbed_voresprite,
|
||||
resist_animation,
|
||||
voresprite_size_factor,
|
||||
belly_sprite_option_shown,
|
||||
belly_sprite_to_affect,
|
||||
tail_option_shown,
|
||||
tail_to_change_to,
|
||||
tail_colouration,
|
||||
tail_extra_overlay,
|
||||
tail_extra_overlay2,
|
||||
} = belly;
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<Section title="Vore Sprites">
|
||||
<Flex direction="row">
|
||||
<Flex.Item basis="49%" grow={1}>
|
||||
<LabeledList>
|
||||
<LabeledList.Item label="Affect Vore Sprites">
|
||||
<Button
|
||||
onClick={() => act("set_attribute", { attribute: "b_affects_vore_sprites" })}
|
||||
icon={affects_voresprite ? "toggle-on" : "toggle-off"}
|
||||
selected={affects_voresprite}
|
||||
content={affects_voresprite ? "Yes" : "No"}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
{affects_voresprite ? (
|
||||
<span>
|
||||
<LabeledList.Item label="Vore Sprite Mode">
|
||||
{vore_sprite_flags.length && vore_sprite_flags.join(", ") || "None"}
|
||||
<Button
|
||||
onClick={() => act("set_attribute", { attribute: "b_vore_sprite_flags" })}
|
||||
ml={1}
|
||||
icon="plus" />
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Count Absorbed prey for vore sprites">
|
||||
<Button
|
||||
onClick={() => act("set_attribute", { attribute: "b_count_absorbed_prey_for_sprites" })}
|
||||
icon={absorbed_voresprite ? "toggle-on" : "toggle-off"}
|
||||
selected={absorbed_voresprite}
|
||||
content={absorbed_voresprite ? "Yes" : "No"}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Animation when prey resist">
|
||||
<Button
|
||||
onClick={() => act("set_attribute", { attribute: "b_resist_animation" })}
|
||||
icon={resist_animation ? "toggle-on" : "toggle-off"}
|
||||
selected={resist_animation}
|
||||
content={resist_animation ? "Yes" : "No"}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Vore Sprite Size Factor">
|
||||
<Button
|
||||
onClick={() => act("set_attribute", { attribute: "b_size_factor_sprites" })}
|
||||
content={voresprite_size_factor} />
|
||||
</LabeledList.Item>
|
||||
{belly_sprite_option_shown ? (
|
||||
<LabeledList.Item label="Belly Sprite to affect">
|
||||
<Button
|
||||
onClick={() => act("set_attribute", { attribute: "b_belly_sprite_to_affect" })}
|
||||
content={belly_sprite_to_affect} />
|
||||
</LabeledList.Item>
|
||||
) : ""}
|
||||
{tail_option_shown && vore_sprite_flags.includes("Tail adjustment") ? (
|
||||
<LabeledList.Item label="Tail to change to">
|
||||
<Button
|
||||
onClick={() => act("set_attribute", { attribute: "b_tail_to_change_to" })}
|
||||
content={tail_to_change_to}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
) : ""}
|
||||
</span>
|
||||
) : ""}
|
||||
</LabeledList>
|
||||
</Flex.Item>
|
||||
</Flex>
|
||||
</Section>
|
||||
<Section title="Belly Fullscreens Preview and Coloring">
|
||||
<Flex direction="row">
|
||||
<Box backgroundColor={belly_fullscreen_color} width="20px" height="20px" />
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user