mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-17 13:43:21 +00:00
Add Lamia Mobs (sprites by Prof. Smokey!)
This commit is contained in:
304
code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm
Normal file
304
code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm
Normal file
@@ -0,0 +1,304 @@
|
|||||||
|
/mob/living/simple_mob/vore/lamia
|
||||||
|
name = "purple lamia"
|
||||||
|
desc = "Combination snake-human. This one is purple."
|
||||||
|
|
||||||
|
icon = 'icons/mob/vore_lamia.dmi'
|
||||||
|
icon_state = "ffta"
|
||||||
|
icon_living = "ffta"
|
||||||
|
icon_rest = "ffta_rest"
|
||||||
|
icon_dead = "ffta_dead"
|
||||||
|
|
||||||
|
harm_intent_damage = 5
|
||||||
|
melee_damage_lower = 0
|
||||||
|
melee_damage_upper = 0
|
||||||
|
|
||||||
|
response_help = "pets"
|
||||||
|
response_disarm = "gently baps"
|
||||||
|
response_harm = "hits"
|
||||||
|
|
||||||
|
health = 60
|
||||||
|
maxHealth = 60
|
||||||
|
|
||||||
|
old_x = -16
|
||||||
|
old_y = 0
|
||||||
|
default_pixel_x = -16
|
||||||
|
pixel_x = -16
|
||||||
|
pixel_y = 0
|
||||||
|
|
||||||
|
// Vore tags
|
||||||
|
vore_active = 1
|
||||||
|
vore_capacity = 1
|
||||||
|
vore_bump_emote = "coils their tail around"
|
||||||
|
vore_icons = 0
|
||||||
|
// 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."
|
||||||
|
|
||||||
|
// Meaningful stats
|
||||||
|
vore_default_mode = DM_HOLD
|
||||||
|
vore_digest_chance = 0
|
||||||
|
vore_pounce_chance = 65
|
||||||
|
vore_bump_chance = 50
|
||||||
|
vore_standing_too = TRUE
|
||||||
|
vore_escape_chance = 25
|
||||||
|
|
||||||
|
// Special lamia vore tags
|
||||||
|
var/vore_upper_transfer_chance = 50
|
||||||
|
var/vore_tail_digest_chance = 25
|
||||||
|
var/vore_tail_absorb_chance = 0
|
||||||
|
var/vore_tail_transfer_chance = 50
|
||||||
|
|
||||||
|
say_list_type = /datum/say_list/lamia
|
||||||
|
ai_holder_type = /datum/ai_holder/simple_mob/passive
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/update_fullness()
|
||||||
|
var/new_fullness = 0
|
||||||
|
// We only want to count our upper_stomach towards capacity
|
||||||
|
for(var/belly in vore_organs)
|
||||||
|
var/obj/belly/B = belly
|
||||||
|
if(B.name == "upper stomach")
|
||||||
|
for(var/mob/living/M in B)
|
||||||
|
new_fullness += M.size_multiplier
|
||||||
|
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()
|
||||||
|
. = ..()
|
||||||
|
|
||||||
|
if(vore_active)
|
||||||
|
// Icon_state for fullness is as such if they are CONSCIOUS:
|
||||||
|
// [icon_living]_vore_[upper_shows]_[tail_shows]
|
||||||
|
// So copper_vore_1_1 is a full upper stomach *and* tail stomach
|
||||||
|
// 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.
|
||||||
|
var/upper_shows = FALSE
|
||||||
|
var/tail_shows = FALSE
|
||||||
|
|
||||||
|
for(var/belly in vore_organs)
|
||||||
|
var/obj/belly/B = belly
|
||||||
|
if(!(B.name in list("upper stomach", "tail stomach")))
|
||||||
|
continue
|
||||||
|
var/belly_fullness = 0
|
||||||
|
for(var/mob/living/M in B)
|
||||||
|
belly_fullness += M.size_multiplier
|
||||||
|
belly_fullness /= size_multiplier
|
||||||
|
belly_fullness = round(belly_fullness, 1)
|
||||||
|
|
||||||
|
if(belly_fullness)
|
||||||
|
if(B.name == "upper stomach")
|
||||||
|
upper_shows = TRUE
|
||||||
|
else if(B.name == "tail stomach")
|
||||||
|
tail_shows = TRUE
|
||||||
|
|
||||||
|
if(upper_shows || tail_shows)
|
||||||
|
if((stat == CONSCIOUS) && (!icon_rest || !resting || !incapacitated(INCAPACITATION_DISABLED)))
|
||||||
|
icon_state = "[icon_living]_vore_[upper_shows]_[tail_shows]"
|
||||||
|
else if(stat >= DEAD)
|
||||||
|
icon_state = icon_dead
|
||||||
|
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()
|
||||||
|
. = ..()
|
||||||
|
var/obj/belly/B = vore_selected
|
||||||
|
|
||||||
|
B.transferchance = vore_upper_transfer_chance
|
||||||
|
B.transferlocation = "tail stomach"
|
||||||
|
|
||||||
|
var/obj/belly/tail = new /obj/belly(src)
|
||||||
|
tail.immutable = TRUE
|
||||||
|
tail.name = "tail stomach"
|
||||||
|
tail.desc = "You slide out into the narrow, constricting tube of flesh that is the lamia's snake half, heated walls and strong muscles all around clinging to your form with every slither."
|
||||||
|
tail.digest_mode = vore_default_mode
|
||||||
|
tail.mode_flags = vore_default_flags
|
||||||
|
tail.item_digest_mode = vore_default_item_mode
|
||||||
|
tail.contaminates = vore_default_contaminates
|
||||||
|
tail.contamination_flavor = vore_default_contamination_flavor
|
||||||
|
tail.contamination_color = vore_default_contamination_color
|
||||||
|
tail.escapable = TRUE // needed for transferchance
|
||||||
|
tail.escapechance = 0 // No directly escaping a tail, gotta squirm back out.
|
||||||
|
tail.digestchance = vore_tail_digest_chance
|
||||||
|
tail.absorbchance = vore_tail_absorb_chance
|
||||||
|
tail.transferchance = vore_tail_transfer_chance
|
||||||
|
tail.transferlocation = "upper stomach"
|
||||||
|
tail.human_prey_swallow_time = swallowTime
|
||||||
|
tail.nonhuman_prey_swallow_time = swallowTime
|
||||||
|
tail.vore_verb = "stuff"
|
||||||
|
tail.emote_lists[DM_HOLD] = B.emote_lists[DM_HOLD].Copy()
|
||||||
|
tail.emote_lists[DM_DIGEST] = B.emote_lists[DM_DIGEST].Copy()
|
||||||
|
|
||||||
|
// FFTA Bra
|
||||||
|
/mob/living/simple_mob/vore/lamia/bra
|
||||||
|
desc = "Combination snake-human. This one is purple. They're wearing a bra."
|
||||||
|
icon_state = "ffta_bra"
|
||||||
|
icon_living = "ffta_bra"
|
||||||
|
icon_rest = "ffta_bra_rest"
|
||||||
|
icon_dead = "ffta_bra_dead"
|
||||||
|
|
||||||
|
// Albino
|
||||||
|
/mob/living/simple_mob/vore/lamia/albino
|
||||||
|
name = "albino lamia"
|
||||||
|
desc = "Combination snake-human. This one is albino."
|
||||||
|
icon_state = "albino"
|
||||||
|
icon_living = "albino"
|
||||||
|
icon_rest = "albino_rest"
|
||||||
|
icon_dead = "albino_dead"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/albino/bra
|
||||||
|
desc = "Combination snake-human. This one is albino. They're wearing a bra."
|
||||||
|
icon_state = "albino_bra"
|
||||||
|
icon_living = "albino_bra"
|
||||||
|
icon_rest = "albino_bra_rest"
|
||||||
|
icon_dead = "albino_bra_dead"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/albino/shirt
|
||||||
|
desc = "Combination snake-human. This one is albino. They're wearing a shirt."
|
||||||
|
icon_state = "albino_shirt"
|
||||||
|
icon_living = "albino_shirt"
|
||||||
|
icon_rest = "albino_shirt_rest"
|
||||||
|
icon_dead = "albino_shirt_dead"
|
||||||
|
|
||||||
|
// Cobra
|
||||||
|
/mob/living/simple_mob/vore/lamia/cobra
|
||||||
|
name = "cobra lamia"
|
||||||
|
desc = "Combination snake-human. This one looks like a cobra."
|
||||||
|
icon_state = "cobra"
|
||||||
|
icon_living = "cobra"
|
||||||
|
icon_rest = "cobra_rest"
|
||||||
|
icon_dead = "cobra_dead"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/cobra/bra
|
||||||
|
desc = "Combination snake-human. This one looks like a cobra. They're wearing a bra."
|
||||||
|
icon_state = "cobra_bra"
|
||||||
|
icon_living = "cobra_bra"
|
||||||
|
icon_rest = "cobra_bra_rest"
|
||||||
|
icon_dead = "cobra_bra_dead"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/cobra/shirt
|
||||||
|
desc = "Combination snake-human. This one looks like a cobra. They're wearing a shirt."
|
||||||
|
icon_state = "cobra_shirt"
|
||||||
|
icon_living = "cobra_shirt"
|
||||||
|
icon_rest = "cobra_shirt_rest"
|
||||||
|
icon_dead = "cobra_shirt_dead"
|
||||||
|
|
||||||
|
// Copper
|
||||||
|
/mob/living/simple_mob/vore/lamia/copper
|
||||||
|
name = "copper lamia"
|
||||||
|
desc = "Combination snake-human. This one is copper."
|
||||||
|
icon_state = "copper"
|
||||||
|
icon_living = "copper"
|
||||||
|
icon_rest = "copper_rest"
|
||||||
|
icon_dead = "copper_dead"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/copper/bra
|
||||||
|
desc = "Combination snake-human. This one is copper. They're wearing a bra."
|
||||||
|
icon_state = "copper_bra"
|
||||||
|
icon_living = "copper_bra"
|
||||||
|
icon_rest = "copper_bra_rest"
|
||||||
|
icon_dead = "copper_bra_dead"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/copper/shirt
|
||||||
|
desc = "Combination snake-human. This one is copper. They're wearing a shirt."
|
||||||
|
icon_state = "copper_shirt"
|
||||||
|
icon_living = "copper_shirt"
|
||||||
|
icon_rest = "copper_shirt_rest"
|
||||||
|
icon_dead = "copper_shirt_dead"
|
||||||
|
|
||||||
|
// Green
|
||||||
|
/mob/living/simple_mob/vore/lamia/green
|
||||||
|
name = "green lamia"
|
||||||
|
desc = "Combination snake-human. This one is green."
|
||||||
|
icon_state = "green"
|
||||||
|
icon_living = "green"
|
||||||
|
icon_rest = "green_rest"
|
||||||
|
icon_dead = "green_dead"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/green/bra
|
||||||
|
desc = "Combination snake-human. This one is green. They're wearing a bra."
|
||||||
|
icon_state = "green_bra"
|
||||||
|
icon_living = "green_bra"
|
||||||
|
icon_rest = "green_bra_rest"
|
||||||
|
icon_dead = "green_bra_dead"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/green/shirt
|
||||||
|
desc = "Combination snake-human. This one is green. They're wearing a shirt."
|
||||||
|
icon_state = "green_shirt"
|
||||||
|
icon_living = "green_shirt"
|
||||||
|
icon_rest = "green_shirt_rest"
|
||||||
|
icon_dead = "green_shirt_dead"
|
||||||
|
|
||||||
|
// Zebra
|
||||||
|
/mob/living/simple_mob/vore/lamia/zebra
|
||||||
|
name = "zebra lamia"
|
||||||
|
desc = "Combination snake-human. This one has a zebra pattern."
|
||||||
|
icon_state = "zebra"
|
||||||
|
icon_living = "zebra"
|
||||||
|
icon_rest = "zebra_rest"
|
||||||
|
icon_dead = "zebra_dead"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/zebra/bra
|
||||||
|
desc = "Combination snake-human. This one has a zebra pattern. They're wearing a bra."
|
||||||
|
icon_state = "zebra_bra"
|
||||||
|
icon_living = "zebra_bra"
|
||||||
|
icon_rest = "zebra_bra_rest"
|
||||||
|
icon_dead = "zebra_bra_dead"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/zebra/shirt
|
||||||
|
desc = "Combination snake-human. This one has a zebra pattern. They're wearing a shirt."
|
||||||
|
icon_state = "zebra_shirt"
|
||||||
|
icon_living = "zebra_shirt"
|
||||||
|
icon_rest = "zebra_shirt_rest"
|
||||||
|
icon_dead = "zebra_shirt_dead"
|
||||||
|
|
||||||
|
GLOBAL_LIST_INIT(valid_random_lamias, list(
|
||||||
|
/mob/living/simple_mob/vore/lamia,
|
||||||
|
/mob/living/simple_mob/vore/lamia/bra,
|
||||||
|
/mob/living/simple_mob/vore/lamia/albino,
|
||||||
|
/mob/living/simple_mob/vore/lamia/albino/bra,
|
||||||
|
/mob/living/simple_mob/vore/lamia/albino/shirt,
|
||||||
|
/mob/living/simple_mob/vore/lamia/cobra,
|
||||||
|
/mob/living/simple_mob/vore/lamia/cobra/bra,
|
||||||
|
/mob/living/simple_mob/vore/lamia/cobra/shirt,
|
||||||
|
/mob/living/simple_mob/vore/lamia/copper,
|
||||||
|
/mob/living/simple_mob/vore/lamia/copper/bra,
|
||||||
|
/mob/living/simple_mob/vore/lamia/copper/shirt,
|
||||||
|
/mob/living/simple_mob/vore/lamia/green,
|
||||||
|
/mob/living/simple_mob/vore/lamia/green/bra,
|
||||||
|
/mob/living/simple_mob/vore/lamia/green/shirt,
|
||||||
|
/mob/living/simple_mob/vore/lamia/zebra,
|
||||||
|
/mob/living/simple_mob/vore/lamia/zebra/bra,
|
||||||
|
/mob/living/simple_mob/vore/lamia/zebra/shirt,
|
||||||
|
))
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/lamia/random
|
||||||
|
/mob/living/simple_mob/vore/lamia/random/New()
|
||||||
|
var/mob/living/simple_mob/vore/lamia/new_attrs = pick(GLOB.valid_random_lamias)
|
||||||
|
|
||||||
|
name = initial(new_attrs.name)
|
||||||
|
desc = initial(new_attrs.desc)
|
||||||
|
|
||||||
|
icon_state = initial(new_attrs.icon_state)
|
||||||
|
icon_living = initial(new_attrs.icon_living)
|
||||||
|
icon_rest = initial(new_attrs.icon_rest)
|
||||||
|
icon_dead = initial(new_attrs.icon_dead)
|
||||||
|
|
||||||
|
vore_default_mode = initial(new_attrs.vore_default_mode)
|
||||||
|
vore_digest_chance = initial(new_attrs.vore_digest_chance)
|
||||||
|
vore_pounce_chance = initial(new_attrs.vore_pounce_chance)
|
||||||
|
vore_bump_chance = initial(new_attrs.vore_bump_chance)
|
||||||
|
vore_standing_too = initial(new_attrs.vore_standing_too)
|
||||||
|
vore_escape_chance = initial(new_attrs.vore_escape_chance)
|
||||||
|
|
||||||
|
vore_upper_transfer_chance = initial(new_attrs.vore_upper_transfer_chance)
|
||||||
|
vore_tail_digest_chance = initial(new_attrs.vore_tail_digest_chance)
|
||||||
|
vore_tail_absorb_chance = initial(new_attrs.vore_tail_absorb_chance)
|
||||||
|
vore_tail_transfer_chance = initial(new_attrs.vore_tail_transfer_chance)
|
||||||
|
|
||||||
|
. = ..()
|
||||||
|
|
||||||
|
/datum/say_list/lamia
|
||||||
|
speak = list("Sss...","Sss!","Hiss!","HSSSSS")
|
||||||
|
emote_hear = list("hisses","slithers")
|
||||||
|
emote_see = list("shakes her head","coils","stretches","slithers")
|
||||||
@@ -370,6 +370,8 @@
|
|||||||
|
|
||||||
prey.forceMove(src)
|
prey.forceMove(src)
|
||||||
owner.updateVRPanel()
|
owner.updateVRPanel()
|
||||||
|
if(isanimal(owner))
|
||||||
|
owner.update_icon()
|
||||||
|
|
||||||
for(var/mob/living/M in contents)
|
for(var/mob/living/M in contents)
|
||||||
M.updateVRPanel()
|
M.updateVRPanel()
|
||||||
@@ -538,6 +540,8 @@
|
|||||||
|
|
||||||
//Update owner
|
//Update owner
|
||||||
owner.updateVRPanel()
|
owner.updateVRPanel()
|
||||||
|
if(isanimal(owner))
|
||||||
|
owner.update_icon()
|
||||||
|
|
||||||
//Digest a single item
|
//Digest a single item
|
||||||
//Receives a return value from digest_act that's how much nutrition
|
//Receives a return value from digest_act that's how much nutrition
|
||||||
@@ -707,6 +711,8 @@
|
|||||||
I.gurgle_contaminate(target.contents, target.contamination_flavor, target.contamination_color)
|
I.gurgle_contaminate(target.contents, target.contamination_flavor, target.contamination_color)
|
||||||
items_preserved -= content
|
items_preserved -= content
|
||||||
owner.updateVRPanel()
|
owner.updateVRPanel()
|
||||||
|
if(isanimal(owner))
|
||||||
|
owner.update_icon()
|
||||||
for(var/mob/living/M in contents)
|
for(var/mob/living/M in contents)
|
||||||
M.updateVRPanel()
|
M.updateVRPanel()
|
||||||
|
|
||||||
|
|||||||
@@ -232,3 +232,5 @@
|
|||||||
M.updateVRPanel()
|
M.updateVRPanel()
|
||||||
if(owner.client)
|
if(owner.client)
|
||||||
owner.updateVRPanel()
|
owner.updateVRPanel()
|
||||||
|
if(isanimal(owner))
|
||||||
|
owner.update_icon()
|
||||||
BIN
icons/mob/vore_lamia.dmi
Normal file
BIN
icons/mob/vore_lamia.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 96 KiB |
@@ -3014,7 +3014,12 @@
|
|||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\hippo.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\hippo.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\horse.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\horse.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\jelly.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\jelly.dm"
|
||||||
|
<<<<<<< HEAD
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\lizardman.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\lizardman.dm"
|
||||||
|
||||||| parent of a51848c002... Merge pull request #9250 from ShadowLarkens/lamia
|
||||||
|
=======
|
||||||
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\lamia.dm"
|
||||||
|
>>>>>>> a51848c002... Merge pull request #9250 from ShadowLarkens/lamia
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\mimic.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\mimic.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\oregrub.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\oregrub.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\otie.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\otie.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user