Files
Bubberstation/code/game/objects/items/food/monkeycube.dm
MrMelbert 2a3b68f879 Adds a very slight animation to monkey cubes (#79227)
## About The Pull Request

I gaslit myself into thinking monkey cubes had an animation for like
years and they got removed by some point, but I think that's false? I
think.

So all I did was add a small transform animate to the thing spawned by
monkey cubes.


https://github.com/tgstation/tgstation/assets/51863163/59e4eb3c-f164-4a58-8b3a-b36777be0931


https://github.com/tgstation/tgstation/assets/51863163/eab5227d-bb66-427b-9054-0c4201fbce43

## Why It's Good For The Game

Makes it a bit more obvious what's going on when a monkey appear. 

## Changelog

🆑 Melbert
qol: Monkey cubes have a slight animation associated now. 
/🆑
2023-10-24 16:59:46 -06:00

116 lines
4.4 KiB
Plaintext

/obj/item/food/monkeycube
name = "monkey cube"
desc = "Just add water!"
icon_state = "monkeycube"
bite_consumption = 12
food_reagents = list(/datum/reagent/monkey_powder = 30)
tastes = list("the jungle" = 1, "bananas" = 1)
foodtypes = MEAT | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_TINY
/// Mob typepath to spawn when expanding
var/spawned_mob = /mob/living/carbon/human/species/monkey
/// Whether we've been wetted and are expanding
var/expanding = FALSE
/obj/item/food/monkeycube/attempt_pickup(mob/user)
if(expanding)
return FALSE
return ..()
/obj/item/food/monkeycube/proc/Expand()
if(expanding)
return
expanding = TRUE
if(ismob(loc))
var/mob/holder = loc
holder.dropItemToGround(src)
var/mob/spammer = get_mob_by_key(fingerprintslast)
var/mob/living/bananas = new spawned_mob(drop_location(), TRUE, spammer) // funny that we pass monkey init args to non-monkey mobs, that's totally a future issue
if (!QDELETED(bananas))
if(faction)
bananas.faction = faction
visible_message(span_notice("[src] expands!"))
bananas.log_message("spawned via [src], Last attached mob: [key_name(spammer)].", LOG_ATTACK)
var/alpha_to = bananas.alpha
var/matrix/scale_to = matrix(bananas.transform)
bananas.alpha = 0
bananas.transform = bananas.transform.Scale(0.1)
animate(bananas, 0.5 SECONDS, alpha = alpha_to, transform = scale_to, easing = QUAD_EASING|EASE_OUT)
else if (!spammer) // Visible message in case there are no fingerprints
visible_message(span_notice("[src] fails to expand!"))
return
animate(src, 0.4 SECONDS, alpha = 0, transform = transform.Scale(0), easing = QUAD_EASING|EASE_IN)
QDEL_IN(src, 0.5 SECONDS)
/obj/item/food/monkeycube/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is putting [src] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide!"))
var/eating_success = do_after(user, 1 SECONDS, src)
if(QDELETED(user)) //qdeletion: the nuclear option of self-harm
return SHAME
if(!eating_success || QDELETED(src)) //checks if src is gone or if they failed to wait for a second
user.visible_message(span_suicide("[user] chickens out!"))
return SHAME
if(HAS_TRAIT(user, TRAIT_NOHUNGER)) //plasmamen don't have saliva/stomach acid
user.visible_message(span_suicide("[user] realizes [user.p_their()] body won't activate [src]!")
,span_warning("Your body won't activate [src]..."))
return SHAME
playsound(user, 'sound/items/eatfood.ogg', rand(10, 50), TRUE)
user.temporarilyRemoveItemFromInventory(src) //removes from hands, keeps in M
addtimer(CALLBACK(src, PROC_REF(finish_suicide), user), 15) //you've eaten it, you can run now
return MANUAL_SUICIDE
/obj/item/food/monkeycube/proc/finish_suicide(mob/living/user) ///internal proc called by a monkeycube's suicide_act using a timer and callback. takes as argument the mob/living who activated the suicide
if(QDELETED(user) || QDELETED(src))
return
if(src.loc != user) //how the hell did you manage this
to_chat(user, span_warning("Something happened to [src]..."))
return
Expand()
user.visible_message(span_danger("[user]'s torso bursts open as a primate emerges!"))
user.gib(DROP_BRAIN|DROP_BODYPARTS|DROP_ITEMS) // just remove the organs
/obj/item/food/monkeycube/syndicate
faction = list(FACTION_NEUTRAL, ROLE_SYNDICATE)
/obj/item/food/monkeycube/gorilla
name = "gorilla cube"
desc = "A Waffle Co. brand gorilla cube. Now with extra molecules!"
bite_consumption = 20
food_reagents = list(
/datum/reagent/monkey_powder = 30,
/datum/reagent/medicine/strange_reagent = 5,
)
tastes = list("the jungle" = 1, "bananas" = 1, "jimmies" = 1)
spawned_mob = /mob/living/basic/gorilla
/obj/item/food/monkeycube/chicken
name = "chicken cube"
desc = "A new Nanotrasen classic, the chicken cube. Tastes like everything!"
bite_consumption = 20
food_reagents = list(
/datum/reagent/consumable/eggyolk = 30,
/datum/reagent/medicine/strange_reagent = 1,
)
tastes = list("chicken" = 1, "the country" = 1, "chicken bouillon" = 1)
spawned_mob = /mob/living/basic/chicken
/obj/item/food/monkeycube/bee
name = "bee cube"
desc = "We were sure it was a good idea. Just add water."
bite_consumption = 20
food_reagents = list(
/datum/reagent/consumable/honey = 10,
/datum/reagent/toxin = 5,
/datum/reagent/medicine/strange_reagent = 1,
)
tastes = list("buzzing" = 1, "honey" = 1, "regret" = 1)
spawned_mob = /mob/living/basic/bee