mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Merge pull request #13818 from Screemonster/snapsnapsnappi
Enhances pakkuns
This commit is contained in:
@@ -2,8 +2,11 @@
|
||||
name = "Wildlife - Pakkun"
|
||||
desc = "Classification: Mordens Lacerta\
|
||||
<br><br>\
|
||||
Their diet is primarily pescatarian, but they known to consume other species and even their own - this activity doesn't appear to be malicious \
|
||||
or even borne out of hunger, but more of a form of playfighting among packmates."
|
||||
Their diet is primarily pescatarian, but they are known to consume other species and even their own - this activity doesn't appear to be malicious \
|
||||
or even borne out of hunger, but more of a form of playfighting among packmates. Some colonies are known to keep domesticated specimens as a form of pest control \
|
||||
despite the occasional accidents that can occur as a result of staff becoming overly friendly and triggering their playfighting instincts. \
|
||||
More mature specimens are identifiable by a greener tint to their skin, and eventually the development of frills \
|
||||
around their neck and along the backs of their heads."
|
||||
value = CATALOGUER_REWARD_TRIVIAL
|
||||
|
||||
/mob/living/simple_mob/vore/pakkun
|
||||
@@ -11,6 +14,8 @@
|
||||
desc = "A small, blue, bipedal reptile. Its head and jaws are rather large in proportion to its body."
|
||||
tt_desc = "Mordens Lacerta"
|
||||
catalogue_data = list(/datum/category_item/catalogue/fauna/pakkun)
|
||||
player_msg = "Pakkuns are bipedal lizardy things. You don't really have much in the way of grasping fingers, but you have an extremely long and powerful tongue and a frankly disproportionate \
|
||||
stomach-to-body ratio. Pakkuns will eat just about anything, both for food and out of idle curiosity - if you encounter something you don't understand, put it in your mouth for science."
|
||||
|
||||
icon_dead = "pakkun-dead"
|
||||
icon_living = "pakkun"
|
||||
@@ -32,6 +37,10 @@
|
||||
melee_damage_lower = 3
|
||||
melee_damage_upper = 5
|
||||
|
||||
response_help = "pets"
|
||||
response_disarm = "shoves"
|
||||
response_harm = "punches"
|
||||
|
||||
base_attack_cooldown = 5 SECONDS
|
||||
projectiletype = /obj/item/projectile/beam/appendage
|
||||
projectilesound = 'sound/effects/slime_squish.ogg'
|
||||
@@ -75,4 +84,92 @@
|
||||
/mob/living/simple_mob/vore/pakkun/on_throw_vore_special(var/pred, var/mob/living/target)
|
||||
if(pred && !extra_posessive)
|
||||
prey_excludes += target
|
||||
addtimer(CALLBACK(src, .proc/removeMobFromPreyExcludes, weakref(target)), 5 MINUTES)
|
||||
addtimer(CALLBACK(src, .proc/removeMobFromPreyExcludes, weakref(target)), 5 MINUTES)
|
||||
if(ai_holder)
|
||||
ai_holder.remove_target()
|
||||
|
||||
/mob/living/simple_mob/vore/pakkun/init_vore()
|
||||
..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
B.desc = "you land with a soft bump in what can only be described as a big soft slimy sack, the walls effortlessly stretching to match your every move with no sign of reaching any kind of elastic \
|
||||
limit - and to add insult to injury, it seems the thing is... pressing on you, kneading over the lump you make in its midsection, as though rubbing in the fact that you've just been caught."
|
||||
B.absorbed_desc = "the endless smooshing and kneading has taken its toll, your form softening and sinking into the body of the greedy little reptile. It seems like you might be here for some time - \
|
||||
assuming you ever get out at all. For now though, you're stuck as some extra softness padding out a cute little lizard."
|
||||
B.belly_fullscreen = "a_tumby"
|
||||
B.escapechance = 25
|
||||
B.absorbchance = 0
|
||||
B.digestchance = 0
|
||||
B.digest_mode = DM_SELECT
|
||||
|
||||
/mob/living/simple_mob/vore/pakkun/attackby(var/obj/item/O, var/mob/user) //if they're newspapered, they'll spit out any junk they've eaten for whatever reason
|
||||
if(istype(O, /obj/item/weapon/newspaper) && !ckey && isturf(user.loc))
|
||||
user.visible_message("<span class='info'>[user] swats [src] with [O]!</span>")
|
||||
release_vore_contents()
|
||||
for(var/mob/living/L in living_mobs(0))
|
||||
if(!(L in prey_excludes))
|
||||
prey_excludes += L
|
||||
addtimer(CALLBACK(src, .proc/removeMobFromPreyExcludes, weakref(L)), 5 MINUTES)
|
||||
else
|
||||
..()
|
||||
|
||||
//a palette-swapped version that's a bit tougher and bossier, in JRPG tradition
|
||||
|
||||
/mob/living/simple_mob/vore/pakkun/snapdragon
|
||||
name = "snapdragon"
|
||||
desc = "A small, green, bipedal reptile. Its head and jaws are rather large in proportion to its body."
|
||||
icon_dead = "snapdragon-dead"
|
||||
icon_living = "snapdragon"
|
||||
icon_state = "snapdragon"
|
||||
|
||||
extra_posessive = TRUE //you're gonna get KEPT, at least the first time you go in
|
||||
maxHealth = 100
|
||||
health = 100
|
||||
|
||||
/mob/living/simple_mob/vore/pakkun/snapdragon/on_throw_vore_special(var/pred, var/mob/living/target)
|
||||
..()
|
||||
extra_posessive = !extra_posessive //toggle their possessiveness on and off every time they eat someone
|
||||
|
||||
// (mostly) friendly pet version
|
||||
|
||||
/mob/living/simple_mob/vore/pakkun/snapdragon/snappy
|
||||
name = "Snappy"
|
||||
desc = "A friendly-looking lizard-thing. This one has a little row of spines running down the back of its head and a crest of frills around its neck."
|
||||
icon_dead = "snappy-dead"
|
||||
icon_living = "snappy"
|
||||
icon_state = "snappy"
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/pakkun/snappy
|
||||
var/list/petters = list()
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/pakkun/snappy/list_targets()
|
||||
var/mob/living/simple_mob/vore/pakkun/snapdragon/snappy/SM = holder
|
||||
if (!LAZYLEN(SM.petters)) //very quick and dirty dropout if there are no valid targets
|
||||
return
|
||||
var/list/our_targets = ..()
|
||||
for(var/list_target in our_targets) //otherwise check the viable targets to see if any of them have petted
|
||||
if(!(list_target in SM.petters))
|
||||
our_targets -= list_target
|
||||
return our_targets
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/pakkun/snappy/can_attack(atom/movable/the_target, var/vision_required = TRUE)
|
||||
.=..()
|
||||
var/mob/living/simple_mob/vore/pakkun/snapdragon/snappy/SM = holder
|
||||
if(!(the_target in SM.petters))
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_mob/vore/pakkun/snapdragon/snappy/attack_hand(mob/living/carbon/human/M as mob)
|
||||
if(M.a_intent == I_HELP && !(M in petters))
|
||||
to_chat(M, "<span class='notice'>\The [src] gets a mischievous glint in her eye!!</span>")
|
||||
petters += M //YOU HAVE OFFERED YOURSELF TO THE LIZARD
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/vore/pakkun/snapdragon/snappy/init_vore()
|
||||
..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.digest_mode = DM_HOLD
|
||||
B.desc = "the lizard gently yet insistently stuffs you down her gullet - evidently enjoying this moment of playtime as you land in a sprawled heap in the stretchy, clinging sack that makes up \
|
||||
most of her girth. Your movements are rewarded only with squeezing from outside, the skin of the reptile easily stretching out to match your movements no matter how hard you try to push. If anything, \
|
||||
wriggling about just seems to prompt the playful creature to mess with you more, mooshing her paws into the bulges you make, wrapping both arms around you and squeezing you tight, making it absolutely \
|
||||
plain that she's more than happy to just keep you in there - and is more than capable of doing so if she so chooses."
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 311 KiB After Width: | Height: | Size: 328 KiB |
Reference in New Issue
Block a user