mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-20 11:31:12 +01:00
New Away Site: Hiskyn Treasure Trove (#21324)
EDIT: This is complete and no longer a work in progress. I've tried to make sure that everything is tested and working properly but if there are issues please let me know. This away site is intended to be a high risk, high reward, encounter. I'm also attempting to increase its replayability by incorporating a number of sections and submaps that will be newly generated each time. Things added or changed: - Additional traps and environmental hazards. - Lava is now more deadly. It used to only set you on fire, now it will burn you appropriately. - Minor sprite fixes for uncommon elements for easier mapping; throwers, step triggers. - Map and associated files, submap json, landmarks, areas, ect. --------- Signed-off-by: Evandorf <ej_denton@msn.com> Co-authored-by: Kano <89972582+kano-dot@users.noreply.github.com>
This commit is contained in:
@@ -63,6 +63,11 @@
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.apply_radiation(5)
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/effect/decal/cleanable/greenglow/radioactive/Initialize()
|
||||
. = ..()
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/effect/decal/cleanable/greenglow/radioactive/process()
|
||||
SSradiation.radiate(src, 25)
|
||||
|
||||
@@ -109,6 +109,8 @@
|
||||
|
||||
/* Tosses things in a certain direction */
|
||||
/obj/effect/step_trigger/thrower
|
||||
icon = 'icons/mob/screen/generic.dmi'
|
||||
icon_state = "dir_arrow"
|
||||
var/direction = SOUTH // the direction of throw
|
||||
var/tiles = 3 // if 0: forever until atom hits a stopper
|
||||
var/immobilize = 1 // if nonzero: prevents mobs from moving while they're being flung
|
||||
|
||||
@@ -207,6 +207,9 @@
|
||||
var/explosion_size = 3
|
||||
var/spread_range = 7
|
||||
|
||||
/obj/item/landmine/frag/deployed
|
||||
deployed = TRUE
|
||||
|
||||
/obj/item/landmine/frag/trigger(mob/living/triggerer)
|
||||
spark(src, 3, GLOB.alldirs)
|
||||
fragem(src,num_fragments,num_fragments,explosion_size,explosion_size+1,fragment_damage,damage_step,TRUE)
|
||||
@@ -304,6 +307,9 @@
|
||||
/obj/item/landmine/phoron
|
||||
icon_state = "phoronlandmine"
|
||||
|
||||
/obj/item/landmine/phoron/deployed
|
||||
deployed = TRUE
|
||||
|
||||
/obj/item/landmine/phoron/trigger(mob/living/triggerer)
|
||||
spark(src, 3, GLOB.alldirs)
|
||||
for (var/turf/simulated/floor/target in range(1,src))
|
||||
@@ -322,6 +328,9 @@
|
||||
/obj/item/landmine/n2o
|
||||
icon_state = "phoronlandmine"
|
||||
|
||||
/obj/item/landmine/n2o/deployed
|
||||
deployed = TRUE
|
||||
|
||||
/obj/item/landmine/n2o/trigger(mob/living/L)
|
||||
spark(src, 3, GLOB.alldirs)
|
||||
for (var/turf/simulated/floor/target in range(1,src))
|
||||
@@ -338,6 +347,9 @@
|
||||
/obj/item/landmine/emp
|
||||
icon_state = "emplandmine"
|
||||
|
||||
/obj/item/landmine/emp/deployed
|
||||
deployed = TRUE
|
||||
|
||||
/obj/item/landmine/emp/trigger(mob/living/triggerer)
|
||||
spark(src, 3, GLOB.alldirs)
|
||||
empulse(src.loc, 2, 4)
|
||||
|
||||
@@ -209,29 +209,28 @@
|
||||
desc = "This is a random soap."
|
||||
icon = 'icons/obj/soap.dmi'
|
||||
icon_state = "soap"
|
||||
|
||||
/obj/random/soap/item_to_spawn()
|
||||
return pick(/obj/item/soap, \
|
||||
/obj/item/soap/nanotrasen, \
|
||||
/obj/item/soap/deluxe,\
|
||||
/obj/item/soap/space_soap,\
|
||||
/obj/item/soap/space_soap,\
|
||||
/obj/item/soap/water_soap,\
|
||||
/obj/item/soap/fire_soap,\
|
||||
/obj/item/soap/rainbow_soap,\
|
||||
/obj/item/soap/diamond_soap,\
|
||||
/obj/item/soap/uranium_soap,\
|
||||
/obj/item/soap/silver_soap,\
|
||||
/obj/item/soap/brown_soap,\
|
||||
/obj/item/soap/white_soap,\
|
||||
/obj/item/soap/grey_soap,\
|
||||
/obj/item/soap/pink_soap,\
|
||||
/obj/item/soap/purple_soap,\
|
||||
/obj/item/soap/blue_soap,\
|
||||
/obj/item/soap/cyan_soap,\
|
||||
/obj/item/soap/green_soap,\
|
||||
/obj/item/soap/yellow_soap,\
|
||||
/obj/item/soap/orange_soap,\
|
||||
/obj/item/soap/red_soap,\
|
||||
/obj/item/soap/golden_soap,\
|
||||
spawnlist = list(
|
||||
/obj/item/soap,
|
||||
/obj/item/soap/nanotrasen,
|
||||
/obj/item/soap/deluxe,
|
||||
/obj/item/soap/space_soap,
|
||||
/obj/item/soap/space_soap,
|
||||
/obj/item/soap/water_soap,
|
||||
/obj/item/soap/fire_soap,
|
||||
/obj/item/soap/rainbow_soap,
|
||||
/obj/item/soap/diamond_soap,
|
||||
/obj/item/soap/uranium_soap,
|
||||
/obj/item/soap/silver_soap,
|
||||
/obj/item/soap/brown_soap,
|
||||
/obj/item/soap/white_soap,
|
||||
/obj/item/soap/grey_soap,
|
||||
/obj/item/soap/pink_soap,
|
||||
/obj/item/soap/purple_soap,
|
||||
/obj/item/soap/blue_soap,
|
||||
/obj/item/soap/cyan_soap,
|
||||
/obj/item/soap/green_soap,
|
||||
/obj/item/soap/yellow_soap,
|
||||
/obj/item/soap/orange_soap,
|
||||
/obj/item/soap/red_soap,
|
||||
/obj/item/soap/golden_soap,
|
||||
)
|
||||
|
||||
@@ -256,7 +256,7 @@
|
||||
/obj/item/trap/punji/attack_mob(mob/living/L)
|
||||
|
||||
//Reveal the trap, if not already visible
|
||||
hide(FALSE)
|
||||
invisibility = 0
|
||||
|
||||
//Select a target zone
|
||||
var/target_zone
|
||||
@@ -352,6 +352,57 @@
|
||||
deployed = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/item/trap/punji/deployed/hidden
|
||||
invisibility = INVISIBILITY_MAXIMUM
|
||||
|
||||
/obj/item/trap/jagged_rock
|
||||
name = "treacherous rock"
|
||||
desc = "A jagged and dangerous outcropping."
|
||||
icon = 'icons/obj/flora/rocks_grey.dmi'
|
||||
icon_state = "basalt"
|
||||
anchored = TRUE
|
||||
invisibility = 0
|
||||
|
||||
/obj/item/trap/jagged_rock/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
|
||||
if(isliving(arrived))
|
||||
var/mob/living/L = arrived
|
||||
attack_mob(L)
|
||||
update_icon()
|
||||
|
||||
/obj/item/trap/jagged_rock/attack_mob(mob/living/L)
|
||||
|
||||
//Select a target zone
|
||||
var/target_zone
|
||||
if(L.lying)
|
||||
target_zone = pick(BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_L_HAND, BP_L_ARM, BP_R_HAND, BP_R_ARM)
|
||||
else
|
||||
target_zone = pick(BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG)
|
||||
|
||||
//Try to apply the damage
|
||||
var/success = L.apply_damage(50, DAMAGE_BRUTE, target_zone, used_weapon = src, armor_pen = activated_armor_penetration)
|
||||
//Apply weakness, so the victim doesn't walk immediately back out of the trap
|
||||
L.Weaken(10)
|
||||
|
||||
//If successfully applied, give the message
|
||||
if(success)
|
||||
|
||||
//Give a simple message and return if it's not a human
|
||||
if(!ishuman(L))
|
||||
L.visible_message(SPAN_DANGER("[L] slams into \the [src]!"))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/human = L
|
||||
var/obj/item/organ/organ = human.get_organ(target_zone)
|
||||
|
||||
if(isipc(L) || isrobot(L))
|
||||
playsound(src, 'sound/weapons/smash.ogg', 100, TRUE)
|
||||
else
|
||||
playsound(src, 'sound/weapons/heavysmash.ogg', 100, TRUE)
|
||||
|
||||
human.visible_message(SPAN_DANGER("\The [human] slams into \the [src]!"),
|
||||
SPAN_WARNING(FONT_LARGE(SPAN_DANGER("You crash on \the [src], feel your body crumble, and something sharp penetrate your [organ.name]!"))),
|
||||
SPAN_WARNING("<b>You feel your body crumble, and something sharp penetrate your [organ.name]!</b>"))
|
||||
|
||||
/**
|
||||
* # Animal trap
|
||||
*
|
||||
|
||||
@@ -438,14 +438,11 @@
|
||||
/obj/random/smalltank
|
||||
name = "random small tank"
|
||||
icon_state = "airtank"
|
||||
|
||||
/obj/random/smalltank/item_to_spawn()
|
||||
if (prob(40))
|
||||
return /obj/item/tank/emergency_oxygen
|
||||
else if (prob(60))
|
||||
return /obj/item/tank/emergency_oxygen/engi
|
||||
else
|
||||
return /obj/item/tank/emergency_oxygen/double
|
||||
problist = list(
|
||||
/obj/item/tank/emergency_oxygen = 3,
|
||||
/obj/item/tank/emergency_oxygen/engi = 2,
|
||||
/obj/item/tank/emergency_oxygen/double = 1,
|
||||
)
|
||||
|
||||
/obj/random/pottedplant
|
||||
name = "random potted plant, big"
|
||||
@@ -641,3 +638,12 @@
|
||||
/obj/random/med_stack = 1,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia = 1,
|
||||
)
|
||||
|
||||
/obj/random/holoturret
|
||||
name = "random holoturret"
|
||||
desc = "This is a random turret item. It could be active or simply a statue."
|
||||
icon_state = "holoturret"
|
||||
problist = list(
|
||||
/obj/machinery/porta_turret/hologram = 1,
|
||||
/obj/structure/unathi_statue/warrior/right = 1,
|
||||
)
|
||||
|
||||
@@ -22,27 +22,19 @@
|
||||
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
// this function should return a specific item to spawn
|
||||
/obj/random/proc/item_to_spawn()
|
||||
return 0
|
||||
|
||||
/obj/random/proc/post_spawn(obj/thing)
|
||||
LOG_DEBUG("random_obj: [DEBUG_REF(src)] registered itself as having post_spawn, but did not override post_spawn()!")
|
||||
|
||||
// creates the random item
|
||||
/obj/random/proc/spawn_item()
|
||||
if (spawnlist)
|
||||
if(spawnlist)
|
||||
var/itemtype = pick(spawnlist)
|
||||
. = new itemtype(loc)
|
||||
|
||||
else if (problist)
|
||||
if(problist)
|
||||
var/itemtype = pickweight(problist)
|
||||
. = new itemtype(loc)
|
||||
|
||||
else
|
||||
var/itemtype = item_to_spawn()
|
||||
. = new itemtype(loc)
|
||||
|
||||
if (!.)
|
||||
LOG_DEBUG("random_obj: [DEBUG_REF(src)] returned null item!")
|
||||
|
||||
@@ -51,6 +43,3 @@
|
||||
desc = "This item type is used to randomly spawn a given object at round-start"
|
||||
icon_state = "x3"
|
||||
var/spawn_object = null
|
||||
|
||||
/obj/random/single/item_to_spawn()
|
||||
return ispath(spawn_object) ? spawn_object : text2path(spawn_object)
|
||||
|
||||
@@ -246,3 +246,12 @@
|
||||
E.charge_cost *= 2
|
||||
E.self_recharge = 0
|
||||
E.reliability = 90
|
||||
|
||||
/obj/random/mine
|
||||
name = "random deployed mine"
|
||||
desc = "This will choose from a number of available mines and they will be active at start."
|
||||
icon_state = "landmine"
|
||||
spawnlist = list(
|
||||
/obj/item/landmine/frag/deployed,
|
||||
/obj/item/landmine/emp/deployed,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user