mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 16:47:13 +01:00
[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:
@@ -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."
|
||||
|
||||
@@ -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 |
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user