mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
new Olmec loot: Archaic clay canister (#21932)
* New tator item: Air Shoes New 'air shoes' -intended tot item for 4-5tc -functionally wheelys that can ollie as well -slight maneuverability in 0g just like moths Co-Authored-By: Byemoh <5091394+ToasterBiome@users.noreply.github.com> * things changed -tried giving them the ability to ollie but botched it and idk how -nvm baiomu told me * Update scooter.dm sparks appear on activation of shoes * making it so if atmos is ok and gravity is gone yo can still move * LAST THING DIDNT WORK trying tje walk in pressurized thing again * what do you MEAN UNDEFINED VAR * stole from mothcode again instead fuckin indentationerrors * Update miscellaneous.dm * fuck it dealing with this part later * SPRITES BABEY airshoes have proper worn/item sprites now * changing shoe toggle sprites toggling them on has its own sprite, but working on getting the ollie one to work properly * another shot at the movement in 0g second attempt at allowing movement in 0g and atmos * headache part 4 * Update miscellaneous.dm * messed up vehicle sprites added in icons for riding but sprites are a bit buggy atm, will replace later when replacements come in * trying to figure out why a button wont change * got it no longer skateboard ollie * just had a worse idea gonna replace noslip with something else * yes its dashing * jorts * jorts 2 * vehicle sprite * last sprite thing added custom sprite for shoe dash * shoes can be renamed now * Update miscellaneous.dm * other actions now available+fixed sprite mistake -removed a redundant line stopping the action from being recognized -removed old shoe vehicle sprites so there's no shoes on top of shoes * Update miscellaneous.dm * fixed a problem walking while dashing used to just interrupt the dash so i just made the dash happen faster * why does this keep happening when i merge master god * biden blast * Revert "biden blast" This reverts commit21cfbf9761. * Update reverbpalm.dm * Update reverbpalm.dm * Revert "Update reverbpalm.dm" This reverts commit82eb94f0c2. * Revert "Update reverbpalm.dm" This reverts commit57ad3ae093. * purple * Update necropolis_chests.dm * on second thought you're really probably not landing this 5 damageb uff * new * just read jjk259 * chosooooooo * i changed the sprite yet again cuackles oops * almost forgot to get rid of you * Update necropolis_chests.dm * Update necropolis_chests.dm * Update artefacts.dmi * Update necropolis_chests.dm * whats the point of being a maintainer if you're gonna ignore the pr list and make molti check old ones long after the momentum is dead are you just a role collector or something * Update necropolis_chests.dm --------- Co-authored-by: Byemoh <5091394+ToasterBiome@users.noreply.github.com> Co-authored-by: ToasterBiome <baiomurang@gmail.com>
This commit is contained in:
@@ -2006,3 +2006,136 @@ GLOBAL_LIST_EMPTY(aide_list)
|
||||
var/mob/living/M = hit_atom
|
||||
if(curse(thrownby, M) == TRUE)
|
||||
to_chat(thrownby, span_notice("You appear before the cane and stab [M], making a new minion out of [M.p_them()]!"))
|
||||
|
||||
//Olmec
|
||||
|
||||
#define COOLDOWN_HEADCRAFT 10 SECONDS
|
||||
/obj/item/claycanister
|
||||
name = "archaic clay canister"
|
||||
desc = "A seemingly bottomless canister of violet clay. Kneading it seems to always results in a shape resembling a head, regardless of intent or concentration."
|
||||
icon = 'icons/obj/lavaland/artefacts.dmi'
|
||||
icon_state = "claycan"
|
||||
force = 5
|
||||
throwforce = 3
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
COOLDOWN_DECLARE(next_headcraft)
|
||||
var/next_craft = 0
|
||||
|
||||
|
||||
|
||||
/obj/item/claycanister/attack_self(mob/user)
|
||||
if(!COOLDOWN_FINISHED(src, next_headcraft))
|
||||
to_chat(user, span_warning("You can't do that yet!"))
|
||||
return
|
||||
var/obj/item/minihead/B = new()
|
||||
user.put_in_hands(B)
|
||||
to_chat(user, span_notice("You mold a head from the clay!"))
|
||||
COOLDOWN_START(src, next_headcraft, COOLDOWN_HEADCRAFT)
|
||||
|
||||
|
||||
|
||||
/obj/item/minihead
|
||||
name = "small clay head"
|
||||
desc = "An earthen homage to its colossal predecessor. The round shape and heft almost scream its desire for flight."
|
||||
icon = 'yogstation/icons/mob/human_parts.dmi'
|
||||
icon_state = "b_golem_head"
|
||||
var/list/headlist = list("abductor_head", "plasmaman_head", "skeleton_head", "cultgolem_head", "fly_head_m", "moth_head_f", "agent_head", "skeleton_head")
|
||||
color = "#774e6d"
|
||||
force = 0
|
||||
throwforce = 0
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF //indestructable bc it needs to exist for a few seconds before dying to not runtime
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/usedup = FALSE
|
||||
var/smashdam = 25
|
||||
var/animaldam = 50
|
||||
var/objdam = 25
|
||||
|
||||
|
||||
/obj/item/minihead/Initialize(mapload)
|
||||
. = ..()
|
||||
src.icon_state = pick(headlist)
|
||||
|
||||
|
||||
/obj/item/minihead/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
||||
. = ..()
|
||||
if(hit_atom && !usedup)
|
||||
rise(hit_atom, src.icon_state)
|
||||
usedup = TRUE
|
||||
|
||||
/obj/item/minihead/after_throw(datum/callback/callback)
|
||||
. = ..()
|
||||
if(!usedup)
|
||||
rise(src.loc, src.icon_state)
|
||||
usedup = TRUE
|
||||
|
||||
/obj/item/minihead/attack_self(mob/user)
|
||||
if(!usedup)
|
||||
rise(src, src.icon_state)
|
||||
usedup = TRUE
|
||||
|
||||
/obj/item/minihead/attack_hand(mob/user)
|
||||
if(isturf(src.loc) && usedup)
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/minihead/pickup(mob/user)
|
||||
if(usedup)
|
||||
return FALSE
|
||||
. = ..()
|
||||
|
||||
|
||||
|
||||
/obj/item/minihead/proc/rise(atom/target, icon_state)
|
||||
target.visible_message(span_warning("A stone head grows and floats overhead!"))
|
||||
alpha = 0
|
||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), 2.5 SECONDS)
|
||||
var/obj/item/minihead/shadow = new(get_turf(target))
|
||||
var/obj/item/minihead/realdeal = new(get_turf(target))
|
||||
realdeal.icon_state = icon_state
|
||||
realdeal.usedup = TRUE
|
||||
shadow.icon_state = icon_state
|
||||
shadow.usedup = TRUE
|
||||
shadow.color = "#000000"
|
||||
walk_towards(shadow, target, 0, 0)
|
||||
walk_towards(realdeal, target, 0, 0)
|
||||
animate(realdeal, pixel_y = 60, pixel_x = 0, transform = matrix().Scale(3), time = 1.5 SECONDS)
|
||||
animate(shadow, pixel_y = -30, transform = matrix().Scale(3), time = 1.5 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(follow), realdeal, shadow), 1.5 SECONDS)
|
||||
return
|
||||
|
||||
/obj/item/minihead/proc/follow(var/obj/damocles, var/obj/silhouette)
|
||||
walk(damocles, 0)
|
||||
walk(silhouette, 0)
|
||||
addtimer(CALLBACK(src, PROC_REF(comedown), damocles, silhouette), 0.5 SECONDS)
|
||||
return
|
||||
|
||||
/obj/item/minihead/proc/comedown(var/obj/damocles, var/obj/silhouette)
|
||||
var/turf/uhoh = get_turf(damocles)
|
||||
animate(damocles, pixel_y = 0, time = 0.2 SECONDS, easing = ELASTIC_EASING)
|
||||
animate(silhouette, transform = matrix().Scale(3), time = 0.2 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(crush), uhoh), 0.1 SECONDS)
|
||||
playsound(damocles, 'sound/effects/break_stone.ogg', 15, 1)
|
||||
playsound(damocles, 'sound/effects/meteorimpact.ogg', 30, 1)
|
||||
QDEL_IN(silhouette, 0.2 SECONDS)
|
||||
QDEL_IN(damocles, 0.2 SECONDS)
|
||||
return
|
||||
|
||||
/obj/item/minihead/proc/crush(var/turf/landingzone)
|
||||
landingzone.break_tile()
|
||||
for(var/mob/witness in range(10, landingzone))
|
||||
shake_camera(witness, 1, 2)
|
||||
for(var/obj/X in landingzone.contents)
|
||||
X.take_damage(objdam)
|
||||
for(var/mob/living/coyote in landingzone.contents)
|
||||
var/armor = coyote.run_armor_check(BODY_ZONE_HEAD, MELEE, armour_penetration = 0)
|
||||
coyote.apply_damage(smashdam, BRUTE, BODY_ZONE_HEAD, armor)
|
||||
to_chat(coyote, span_userdanger("The boulder comes down on your head!"))
|
||||
if(isanimal(coyote))
|
||||
coyote.adjustBruteLoss(animaldam)
|
||||
if(coyote.stat == DEAD)
|
||||
coyote.gib()
|
||||
for(var/mob/living/tripped in range(1, landingzone))
|
||||
tripped.Immobilize(1 SECONDS)
|
||||
to_chat(tripped, span_userdanger("The shockwave disrupts your balance!"))
|
||||
qdel(src)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 39 KiB |
Reference in New Issue
Block a user