[MIRROR] climbing hooks for multiz planetary maps [MDB IGNORE] (#23718)

* climbing hooks for multiz planetary maps  (#78340)

## About The Pull Request

https://github.com/tgstation/tgstation/assets/70376633/6c65925e-5276-41fb-8062-cafc2de94b2f

allows you to climb up holes by clicking on tiles above the hole youre
on
examining the rope shows you your current binds for looking up

emergency variant can be found in internals boxes on planetary maps that
have multiz levels (2 uses)
a better one can be bought from cargo for 250 credits (5 uses)
syndies can buy a much much better one for 1TC or can be found in the
nukie base personal lockers (10 uses)

## Why It's Good For The Game

being fucked because you fell down a 1 tile hole in the dark and now
youre in a 1x1 box of snow on the middle of nowhere sucks
or falling down a hole and bam 30 watchers
or falling down a hole and now youre completely lost and might have to
weld your way into the station if youre lucky

## Changelog
🆑
add: climbing hooks that allow you to go up holes for multiz, found in
internals boxes (on planetary maps), the uplink, cargo and nukie
personal lockers
/🆑

* climbing hooks for multiz planetary maps

---------

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
This commit is contained in:
SkyratBot
2023-09-17 14:39:40 -04:00
committed by GitHub
co-authored by jimmyl
parent 2de834cf85
commit 50fa2f4263
7 changed files with 103 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
/obj/item/climbing_hook
name = "climbing hook"
desc = "Standard hook with rope to scale up holes. The rope is of average quality, but due to your weight amongst other factors, may not withstand extreme use."
icon = 'icons/obj/mining.dmi'
icon_state = "climbingrope"
inhand_icon_state = "crowbar_brass"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
force = 5
throwforce = 10
reach = 2
throw_range = 4
w_class = WEIGHT_CLASS_NORMAL
attack_verb_continuous = list("whacks", "flails", "bludgeons")
attack_verb_simple = list("whack", "flail", "bludgeon")
resistance_flags = FLAMMABLE
///how many times can we climb with this rope
var/uses = 5
///climb time
var/climb_time = 2.5 SECONDS
/obj/item/climbing_hook/examine(mob/user)
. = ..()
var/list/look_binds = user.client.prefs.key_bindings["look up"]
. += span_notice("Firstly, look upwards by holding <b>[english_list(look_binds, nothing_text = "(nothing bound)", and_text = " or ", comma_text = ", or ")]!</b>")
. += span_notice("Then, click solid ground adjacent to the hole above you.")
. += span_notice("The rope looks like you could use it [uses] times before it falls apart.")
/obj/item/climbing_hook/afterattack(turf/open/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(target.z == user.z)
return
if(!istype(target) || isopenspaceturf(target))
return
if(target.is_blocked_turf(exclude_mobs = TRUE))
return
var/turf/above = GET_TURF_ABOVE(user)
if(!isopenspaceturf(above) || !above.Adjacent(target)) //are we below a hole, is the target blocked, is the target adjacent to our hole
balloon_alert(user, "blocked!")
return
var/turf/user_turf = get_turf(user)
var/away_dir = get_dir(above, target)
user.visible_message(span_notice("[user] begins climbing upwards with [src]."), span_notice("You get to work on properly hooking [src] and going upwards."))
playsound(target, 'sound/effects/picaxe1.ogg', 50) //plays twice so people above and below can hear
playsound(user_turf, 'sound/effects/picaxe1.ogg', 50)
var/list/effects = list(new /obj/effect/temp_visual/climbing_hook(target, away_dir), new /obj/effect/temp_visual/climbing_hook(user_turf, away_dir))
if(do_after(user, climb_time, target))
user.Move(target)
uses--
if(uses <= 0)
user.visible_message(span_warning("[src] snaps and tears apart!"))
qdel(src)
QDEL_LIST(effects)
/obj/item/climbing_hook/emergency
name = "emergency climbing hook"
desc = "An emergency climbing hook to scale up holes. The rope is EXTREMELY cheap and may not withstand extended use."
uses = 2
climb_time = 4 SECONDS
w_class = WEIGHT_CLASS_SMALL
/obj/item/climbing_hook/syndicate
name = "suspicious climbing hook"
desc = "REALLY suspicious climbing hook to scale up holes. The hook has a syndicate logo engraved on it, and the rope appears rather durable."
icon_state = "climbingrope_s"
uses = 10
climb_time = 1.5 SECONDS
/obj/item/climbing_hook/infinite //debug stuff
name = "infinite climbing hook"
desc = "A plasteel hook, with rope. Upon closer inspection, the rope appears to be made out of plasteel woven into regular rope, amongst many other reinforcements."
uses = INFINITY
climb_time = 1 SECONDS
/obj/effect/temp_visual/climbing_hook
icon = 'icons/mob/silicon/aibots.dmi'
icon_state = "path_indicator"
layer = BELOW_MOB_LAYER
plane = GAME_PLANE
duration = 4 SECONDS
/obj/effect/temp_visual/climbing_hook/Initialize(mapload, direction)
. = ..()
dir = direction
@@ -48,6 +48,9 @@
if(HAS_TRAIT(SSstation, STATION_TRAIT_RADIOACTIVE_NEBULA))
new /obj/item/storage/pill_bottle/potassiodide(src)
if(SSmapping.is_planetary() && LAZYLEN(SSmapping.multiz_levels))
new /obj/item/climbing_hook/emergency(src)
new /obj/item/oxygen_candle(src) //SKYRAT EDIT ADDITION
@@ -29,6 +29,7 @@
new /obj/item/clothing/under/syndicate/skirt(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/mod/module/plasma_stabilizer(src)
new /obj/item/climbing_hook/syndicate(src)
/obj/structure/closet/syndicate/nuclear
desc = "It's a storage unit for a Syndicate boarding party."
+6
View File
@@ -271,3 +271,9 @@
desc = "A standard-sized coffeepot, for use with a coffeemaker."
cost = PAYCHECK_CREW
contains = list(/obj/item/reagent_containers/cup/coffeepot)
/datum/supply_pack/goody/climbing_hook
name = "Climbing hook"
desc = "A less cheap imported climbing hook. Absolutely no use outside of planetary stations."
cost = PAYCHECK_CREW * 5
contains = list(/obj/item/climbing_hook)
@@ -267,3 +267,9 @@
bright lights. Effective, affordable, and nigh undetectable."
item = /obj/item/syndicate_contacts
cost = 3
/datum/uplink_item/device_tools/syndicate_climbing_hook
name = "Syndicate Climbing Hook"
desc = "High-tech rope, a refined hook structure, the peak of climbing technology. Only useful for climbing up holes, provided the operation site has any."
item = /obj/item/climbing_hook/syndicate
cost = 1
Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 59 KiB

+1
View File
@@ -2070,6 +2070,7 @@
#include "code\game\objects\items\choice_beacon.dm"
#include "code\game\objects\items\chromosome.dm"
#include "code\game\objects\items\cigs_lighters.dm"
#include "code\game\objects\items\climbingrope.dm"
#include "code\game\objects\items\clown_items.dm"
#include "code\game\objects\items\control_wand.dm"
#include "code\game\objects\items\cosmetics.dm"