mirror of
https://github.com/goonstation/goonstation-2020.git
synced 2026-07-10 22:52:21 +01:00
1231 lines
29 KiB
Plaintext
1231 lines
29 KiB
Plaintext
//AZARAK//
|
|
|
|
|
|
//AREAS//
|
|
|
|
/area/azarak/cave
|
|
name = "azarak cave"
|
|
icon_state = "azarak_cave"
|
|
filler_turf = "/turf/unsimulated/floor/setpieces/Azarak/lavalethal"
|
|
sound_environment = 21
|
|
skip_sims = 1
|
|
sims_score = 15
|
|
sound_group = "azarak"
|
|
|
|
/area/azarak/retreat
|
|
name = "azarak retreat"
|
|
icon_state = "azarak_lava"
|
|
filler_turf = "/turf/unsimulated/floor/setpieces/Azarak/lavalethal"
|
|
sound_environment = 21
|
|
skip_sims = 1
|
|
sims_score = 15
|
|
sound_group = "azarak"
|
|
|
|
|
|
|
|
//FLOORS//
|
|
|
|
/turf/unsimulated/floor/setpieces/Azarak/cavefloor
|
|
name = "cave floor"
|
|
desc = "Just some cave flooring. Wonder who was the last person to step on this..?."
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "cave_floor"
|
|
intact = 0
|
|
|
|
floor2
|
|
icon_state = "cave_floor2"
|
|
|
|
floor3
|
|
icon_state = "cave_floor3"
|
|
|
|
edges
|
|
icon_state = "cave_floor3_edges"
|
|
|
|
underwalls
|
|
icon_state = "lava_rockfloor"
|
|
|
|
/turf/unsimulated/floor/setpieces/Azarak/lavalethal
|
|
name = "Lava"
|
|
desc = "Some very very hot, dense liquid. Do not step on it."
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "lava_floor"
|
|
var/deadly = 1
|
|
fullbright = 0
|
|
pathable = 1
|
|
can_replace_with_stuff = 0
|
|
temperature = 10+T0C
|
|
|
|
Entered(atom/movable/O)
|
|
..()
|
|
if(src.deadly && O.anchored != 2)
|
|
if (istype(O, /obj/critter) && O:flying)
|
|
return
|
|
|
|
if (istype(O, /obj/projectile))
|
|
return
|
|
|
|
if (isintangible(O))
|
|
return
|
|
|
|
return_if_overlay_or_effect(O)
|
|
|
|
if (O.throwing && !isliving(O))
|
|
SPAWN_DBG(8 DECI SECONDS)
|
|
if (O && O.loc == src)
|
|
melt_away(O)
|
|
return
|
|
|
|
melt_away(O)
|
|
|
|
proc/melt_away(atom/movable/O)
|
|
if (ismob(O))
|
|
if (isliving(O))
|
|
var/mob/living/M = O
|
|
var/mob/living/carbon/human/H = M
|
|
if (istype(H))
|
|
H.unkillable = 0
|
|
if(!M.stat) M.emote("scream")
|
|
src.visible_message("<span style=\"color:red\"><B>[M]</B> falls into the [src] and melts away!</span>")
|
|
M.firegib() // thanks ISN!
|
|
else
|
|
src.visible_message("<span style=\"color:red\"><B>[O]</B> falls into the [src] and melts away!</span>")
|
|
qdel(O)
|
|
|
|
ex_act(severity)
|
|
return
|
|
|
|
bubbling
|
|
icon_state = "lava_floor_bubbling"
|
|
|
|
bubbling2
|
|
icon_state = "lava_floor_bubbling2"
|
|
|
|
/turf/unsimulated/floor/setpieces/Azarak/lava
|
|
name = "lava edge"
|
|
desc = "That is some seriously warm liquid.. Might not want to get too close to the edge."
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "lava_edges"
|
|
temperature = 10+T0C
|
|
|
|
Entered(var/mob/M)
|
|
if (istype(M,/mob/dead) || istype(M,/mob/wraith) || istype(M,/mob/living/intangible) || istype(M, /obj/lattice))
|
|
return
|
|
return_if_overlay_or_effect(M)
|
|
|
|
|
|
SPAWN_DBG(0)
|
|
if(M.loc == src)
|
|
if (ishuman(M))
|
|
var/mob/living/carbon/human/H = M
|
|
M.canmove = 0
|
|
M.changeStatus("weakened", 6 SECONDS)
|
|
boutput(M, "You get too close to the edge of the lava and spontaniously combust from the heat!")
|
|
visible_message("<span style=\"color:red\">[M] gets too close to the edge of the lava and spontaniously combusts from the heat!</span>")
|
|
H.set_burning(500)
|
|
playsound(M.loc, "sound/effects/mag_fireballlaunch.ogg", 50, 0)
|
|
M.emote("scream")
|
|
if (isrobot(M))
|
|
M.canmove = 0
|
|
M.TakeDamage("chest", pick(5,10), 0, DAMAGE_BURN)
|
|
M.emote("scream")
|
|
playsound(M.loc, "sound/effects/mag_fireballlaunch.ogg", 50, 0)
|
|
boutput(M, "You get too close to the edge of the lava and spontaniously combust from the heat!")
|
|
visible_message("<span style=\"color:red\">[M] gets too close to the edge of the lava and their internal wiring suffers a major burn!</span>")
|
|
M.changeStatus("stunned", 6 SECONDS)
|
|
SPAWN_DBG(5 SECONDS)
|
|
if(M.loc == src)
|
|
if (ishuman(M))
|
|
var/mob/living/carbon/human/H = M
|
|
M.changeStatus("weakened", 10 SECONDS)
|
|
M.set_body_icon_dirty()
|
|
H.set_burning(1000)
|
|
playsound(M.loc, "sound/effects/mag_fireballlaunch.ogg", 50, 0)
|
|
M.emote("scream")
|
|
if (H.limbs.l_leg && H.limbs.r_leg)
|
|
if (H.limbs.l_leg)
|
|
H.limbs.l_leg.delete()
|
|
if (H.limbs.r_leg)
|
|
H.limbs.r_leg.delete()
|
|
boutput(M, "You can feel how both of your legs melt away!")
|
|
visible_message("<span style=\"color:red\">[M] continues to remain too close to the lava, their legs literally melting away!</span>")
|
|
else
|
|
boutput(M, "You can feel intense heat on the lower part of your torso.")
|
|
visible_message("<span style=\"color:red\">[M] continues to remain too close to the lava, if they had any legs, they would have melted away!</span>")
|
|
|
|
if (isrobot(M))
|
|
var/mob/living/silicon/robot/R = M
|
|
R.canmove = 0
|
|
R.TakeDamage("chest", pick(20,40), 0, DAMAGE_BURN)
|
|
R.emote("scream")
|
|
playsound(R.loc, "sound/effects/mag_fireballlaunch.ogg", 50, 0)
|
|
R.changeStatus("stunned", 10 SECONDS)
|
|
R.part_leg_r.holder = null
|
|
qdel(R.part_leg_r)
|
|
if (R.part_leg_r.slot == "leg_both")
|
|
R.part_leg_l = null
|
|
R.update_bodypart("l_leg")
|
|
R.part_leg_r = null
|
|
R.update_bodypart("r_leg")
|
|
R.part_leg_l.holder = null
|
|
qdel(R.part_leg_l)
|
|
if (R.part_leg_l.slot == "leg_both")
|
|
R.part_leg_r = null
|
|
R.update_bodypart("r_leg")
|
|
R.part_leg_l = null
|
|
R.update_bodypart("l_leg")
|
|
visible_message("<span style=\"color:red\">[M] continues to remain too close to the lava, their legs literally melting away!</span>")
|
|
boutput(M, "You can feel how both of your legs melt away!")
|
|
else
|
|
boutput(M, "You can feel intense heat on the lower part of your torso.")
|
|
visible_message("<span style=\"color:red\">[M] continues to remain too close to the lava, if they had any legs, they would have melted away!</span>")
|
|
|
|
corners
|
|
icon_state = "lava_corners"
|
|
|
|
bubbling_edges
|
|
icon_state = "lava_edges_bubbling"
|
|
|
|
/turf/unsimulated/floor/setpieces/Azarak/rockyfloor
|
|
name = "rocky floor"
|
|
desc = "Some rocky floor.."
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "lava_rockfloor"
|
|
temperature = 10+T0C
|
|
|
|
/turf/unsimulated/floor/carpet/purple
|
|
icon = 'icons/turf/carpet.dmi'
|
|
icon_state = "purple1"
|
|
|
|
|
|
/turf/unsimulated/floor/carpet/purple/decal
|
|
icon = 'icons/turf/carpet.dmi'
|
|
icon_state = "fpurple1"
|
|
innercross
|
|
dir = 1
|
|
outercross
|
|
dir = 4
|
|
|
|
/turf/unsimulated/floor/carpet/purple/standard/edge
|
|
icon = 'icons/turf/carpet.dmi'
|
|
icon_state = "purple2"
|
|
|
|
north
|
|
dir = 1
|
|
south
|
|
dir = 2
|
|
east
|
|
dir = 4
|
|
west
|
|
dir = 8
|
|
ne
|
|
dir = 5
|
|
se
|
|
dir = 6
|
|
nw
|
|
dir = 9
|
|
sw
|
|
dir = 10
|
|
|
|
/turf/unsimulated/floor/carpet/purple/standard/innercorner
|
|
icon = 'icons/turf/carpet.dmi'
|
|
icon_state = "purple3"
|
|
|
|
ne
|
|
dir = 5
|
|
se
|
|
dir = 6
|
|
nw
|
|
dir = 9
|
|
sw
|
|
dir = 10
|
|
north
|
|
dir = 1
|
|
south
|
|
dir = 2
|
|
east
|
|
dir = 4
|
|
west
|
|
dir = 8
|
|
ne_triple
|
|
icon_state = "purple4"
|
|
dir = 5
|
|
se_triple
|
|
icon_state = "purple4"
|
|
dir = 6
|
|
nw_triple
|
|
icon_state = "purple4"
|
|
dir = 9
|
|
sw_triple
|
|
icon_state = "purple4"
|
|
dir = 10
|
|
ne_sw
|
|
icon_state = "purple1"
|
|
dir = 5
|
|
nw_se
|
|
icon_state = "purple1"
|
|
dir = 9
|
|
omni
|
|
icon_state = "purple1"
|
|
dir = 8
|
|
|
|
/turf/unsimulated/floor/carpet/purple/standard/narrow
|
|
icon = 'icons/turf/carpet.dmi'
|
|
icon_state = "purple6"
|
|
|
|
ne
|
|
dir = 5
|
|
se
|
|
dir = 6
|
|
nw
|
|
dir = 9
|
|
sw
|
|
dir = 10
|
|
T_north
|
|
dir = 1
|
|
T_south
|
|
dir = 2
|
|
T_east
|
|
dir = 4
|
|
T_west
|
|
dir = 8
|
|
north
|
|
icon_state = "purple4"
|
|
dir = 1
|
|
south
|
|
icon_state = "purple4"
|
|
dir = 2
|
|
east
|
|
icon_state = "purple4"
|
|
dir = 4
|
|
west
|
|
icon_state = "purple4"
|
|
dir = 8
|
|
solo
|
|
icon_state = "purple1"
|
|
dir = 4
|
|
northsouth
|
|
icon_state = "purple1"
|
|
dir = 6
|
|
eastwest
|
|
icon_state = "purple1"
|
|
dir = 10
|
|
|
|
/turf/unsimulated/floor/carpet/purple/standard/junction
|
|
icon = 'icons/turf/carpet.dmi'
|
|
icon_state = "purple5"
|
|
|
|
sw_e
|
|
dir = 1
|
|
ne_w
|
|
dir = 2
|
|
nw_s
|
|
dir = 4
|
|
se_n
|
|
dir = 8
|
|
sw_n
|
|
dir = 5
|
|
nw_e
|
|
dir = 6
|
|
ne_s
|
|
dir = 9
|
|
se_w
|
|
dir = 10
|
|
|
|
//fancy subvariant///////////////////////
|
|
|
|
/turf/unsimulated/floor/carpet/purple/fancy/edge
|
|
icon = 'icons/turf/carpet.dmi'
|
|
icon_state = "fpurple2"
|
|
|
|
north
|
|
dir = 1
|
|
south
|
|
dir = 2
|
|
east
|
|
dir = 4
|
|
west
|
|
dir = 8
|
|
ne
|
|
dir = 5
|
|
se
|
|
dir = 6
|
|
nw
|
|
dir = 9
|
|
sw
|
|
dir = 10
|
|
|
|
/turf/unsimulated/floor/carpet/purple/fancy/innercorner
|
|
icon = 'icons/turf/carpet.dmi'
|
|
icon_state = "fpurple3"
|
|
|
|
ne
|
|
dir = 5
|
|
se
|
|
dir = 6
|
|
nw
|
|
dir = 9
|
|
sw
|
|
dir = 10
|
|
north
|
|
dir = 1
|
|
south
|
|
dir = 2
|
|
east
|
|
dir = 4
|
|
west
|
|
dir = 8
|
|
ne_triple
|
|
icon_state = "fpurple4"
|
|
dir = 5
|
|
se_triple
|
|
icon_state = "fpurple4"
|
|
dir = 6
|
|
nw_triple
|
|
icon_state = "fpurple4"
|
|
dir = 9
|
|
sw_triple
|
|
icon_state = "fpurple4"
|
|
dir = 10
|
|
ne_sw
|
|
icon_state = "fpurple1"
|
|
dir = 5
|
|
nw_se
|
|
icon_state = "fpurple1"
|
|
dir = 9
|
|
omni
|
|
icon_state = "fpurple1"
|
|
dir = 8
|
|
|
|
/turf/unsimulated/floor/carpet/purple/fancy/narrow
|
|
icon = 'icons/turf/carpet.dmi'
|
|
icon_state = "fpurple6"
|
|
|
|
ne
|
|
dir = 5
|
|
se
|
|
dir = 6
|
|
nw
|
|
dir = 9
|
|
sw
|
|
dir = 10
|
|
T_north
|
|
dir = 1
|
|
T_south
|
|
dir = 2
|
|
T_east
|
|
dir = 4
|
|
T_west
|
|
dir = 8
|
|
north
|
|
icon_state = "fpurple4"
|
|
dir = 1
|
|
south
|
|
icon_state = "fpurple4"
|
|
dir = 2
|
|
east
|
|
icon_state = "fpurple4"
|
|
dir = 4
|
|
west
|
|
icon_state = "fpurple4"
|
|
dir = 8
|
|
northsouth
|
|
icon_state = "fpurple1"
|
|
dir = 6
|
|
eastwest
|
|
icon_state = "fpurple1"
|
|
dir = 10
|
|
|
|
/turf/unsimulated/floor/carpet/purple/fancy/junction
|
|
icon = 'icons/turf/carpet.dmi'
|
|
icon_state = "fpurple5"
|
|
|
|
sw_e
|
|
dir = 1
|
|
ne_w
|
|
dir = 2
|
|
nw_s
|
|
dir = 4
|
|
se_n
|
|
dir = 8
|
|
sw_n
|
|
dir = 5
|
|
nw_e
|
|
dir = 6
|
|
ne_s
|
|
dir = 9
|
|
se_w
|
|
dir = 10
|
|
|
|
/turf/unsimulated/wall/setpieces/Azarak/cavewall
|
|
name = "rock wall"
|
|
desc = "TEMP"
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "cave_wall"
|
|
|
|
edges
|
|
icon_state = "cave_wall_edges"
|
|
|
|
corners
|
|
icon_state = "cave_wall_corners"
|
|
|
|
/obj/decal/fakeobjects/bedrolls
|
|
name = "bedrolls"
|
|
desc = "TEMP"
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "bedrolls"
|
|
anchored = 1
|
|
density = 1
|
|
|
|
/obj/decal/fakeobjects/shrooms
|
|
name = "weird looking mushrooms"
|
|
desc = "What the hell are these..?"
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "shrooms"
|
|
anchored = 1
|
|
|
|
/obj/decal/fakeobjects/smallrocks
|
|
name = "small rocks"
|
|
desc = "Some small rocks."
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "smallrocks"
|
|
anchored = 1
|
|
density = 1
|
|
|
|
attackby(obj/item/W as obj, mob/user as mob)
|
|
if (istype(W, /obj/item/mining_tool/power_pick))
|
|
boutput(user, "You hit the [src] a few times with the [W]!")
|
|
src.visible_message("<span style=\"color:blue\"><b>[src] crumbles into dust!</b></span>")
|
|
playsound(src.loc, 'sound/items/mining_pick.ogg', 90,1)
|
|
qdel(src)
|
|
|
|
/obj/decal/fakeobjects/bigrocks
|
|
name = "big rocks"
|
|
desc = "Those are some big rocks, they are probably from the ceiling..?"
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "bigrocks"
|
|
anchored = 1
|
|
density = 1
|
|
|
|
|
|
attackby(obj/item/W as obj, mob/user as mob)
|
|
if (istype(W, /obj/item/mining_tool/power_pick))
|
|
boutput(user, "You hit the [src] a few times with the [W]!")
|
|
src.visible_message("<span style=\"color:blue\"><b>After a few hits [src] crumbles into smaller rocks.</b></span>")
|
|
playsound(src.loc, 'sound/items/mining_pick.ogg', 90,1)
|
|
new /obj/decal/fakeobjects/smallrocks(src.loc)
|
|
qdel(src)
|
|
|
|
/obj/decal/fakeobjects/biggerrock
|
|
name = "big rock"
|
|
desc = "Seriously big rocks."
|
|
icon = 'icons/obj/32x64.dmi'
|
|
icon_state = "bigrock"
|
|
anchored = 1
|
|
density = 1
|
|
|
|
/obj/decal/fakeobjects/azarakrocks
|
|
name = "rock"
|
|
desc = "Some lil' rocks."
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "rock1"
|
|
anchored = 1
|
|
density = 1
|
|
|
|
rock2
|
|
name = "rocks"
|
|
density = 0
|
|
icon_state = "rock2"
|
|
|
|
rock3
|
|
name = "rocks"
|
|
density = 0
|
|
icon_state = "rock3"
|
|
|
|
rock4
|
|
name = "rocks"
|
|
density = 0
|
|
icon_state = "rock4"
|
|
|
|
rock6
|
|
name = "rocks"
|
|
density = 0
|
|
icon_state = "rock6"
|
|
|
|
rock9
|
|
name = "rocks"
|
|
density = 0
|
|
icon_state = "rock9"
|
|
|
|
|
|
/obj/decal/fakeobjects/cultiststatue
|
|
name = "statue of a hooded figure"
|
|
desc = "TEMP"
|
|
icon = 'icons/obj/32x64.dmi'
|
|
icon_state = "cultiststatue"
|
|
anchored = 1
|
|
density = 1
|
|
layer = EFFECTS_LAYER_UNDER_3
|
|
|
|
/obj/decal/fakeobjects/crossinverted
|
|
name = "inverted cross"
|
|
desc = "TEMP"
|
|
icon = 'icons/obj/32x64.dmi'
|
|
icon_state = "cross"
|
|
anchored = 1
|
|
density = 1
|
|
|
|
/obj/decal/fakeobjects/bookcase
|
|
name = "bookcase"
|
|
desc = "It's a bookcase. Full of books."
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "bookcase"
|
|
anchored = 1
|
|
density = 0
|
|
layer = DECAL_LAYER
|
|
|
|
/obj/decal/fakeobjects/creepytv
|
|
name = "broken old television"
|
|
desc = "TEMP"
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "creepytv"
|
|
anchored = 1
|
|
density = 1
|
|
|
|
/obj/decal/fakeobjects/circle
|
|
name = "summoning circle"
|
|
desc = "TEMP"
|
|
icon = 'icons/effects/224x224.dmi'
|
|
icon_state = "circle"
|
|
anchored = 1
|
|
density = 0
|
|
opacity= 0
|
|
layer = FLOOR_EQUIP_LAYER1
|
|
|
|
/obj/decal/fakeobjects/Azarakcandleswall
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "candles"
|
|
name = "candles"
|
|
desc = "TEMP"
|
|
density = 0
|
|
anchored = 1
|
|
opacity = 0
|
|
layer = FLOOR_EQUIP_LAYER1
|
|
|
|
var/datum/light/point/light
|
|
|
|
New()
|
|
..()
|
|
light = new
|
|
light.set_brightness(0.9)
|
|
light.set_color(1, 0.6, 0)
|
|
light.set_height(0.75)
|
|
light.attach(src)
|
|
light.enable()
|
|
|
|
/obj/decal/fakeobjects/Azarakcandles
|
|
icon = 'icons/effects/alch.dmi'
|
|
icon_state = "candle"
|
|
name = "candle"
|
|
desc = "TEMP"
|
|
density = 0
|
|
anchored = 1
|
|
opacity = 0
|
|
|
|
var/datum/light/point/light
|
|
|
|
New()
|
|
..()
|
|
light = new
|
|
light.set_brightness(0.8)
|
|
light.set_color(1, 0.6, 0)
|
|
light.set_height(0.75)
|
|
light.attach(src)
|
|
light.enable()
|
|
|
|
/*
|
|
/obj/decal/fakeobjects/Azarakaltar
|
|
name = "altar"
|
|
desc = "TEMP"
|
|
icon_state = "altar"
|
|
icon = 'icons/obj/64x96.dmi'
|
|
density = 1
|
|
anchored = 1
|
|
|
|
attackby(obj/item/W as obj, mob/user as mob, params)
|
|
if (istype(W, /obj/item/grab))
|
|
var/obj/item/grab/G = W
|
|
if (!G.affecting || G.affecting.buckled)
|
|
return
|
|
if (!G.state)
|
|
boutput(user, "<span style='color:red'>You need a tighter grip!</span>")
|
|
return
|
|
G.affecting.set_loc(src.loc)
|
|
if (user.a_intent == "harm")
|
|
if (!G.affecting.hasStatus("weakened"))
|
|
G.affecting.changeStatus("weakened", 4 SECONDS)
|
|
src.visible_message("<span style='color:red'><b>[G.assailant] slams [G.affecting] onto \the [src]!</b></span>")
|
|
playsound(get_turf(src), "sound/impact_sounds/Generic_Hit_Heavy_1.ogg", 50, 1)
|
|
if (src.material)
|
|
src.material.triggerOnAttacked(src, G.assailant, G.affecting, src)
|
|
else
|
|
if (!G.affecting.hasStatus("weakened"))
|
|
G.affecting.changeStatus("weakened", 2 SECONDS)
|
|
src.visible_message("<span style='color:red'>[G.assailant] puts [G.affecting] on \the [src].</span>")
|
|
|
|
place_on(obj/item/W as obj, mob/user as mob, params)
|
|
..()
|
|
if (. == 1) // successfully put thing on table, make a noise because we are a fancy special glass table
|
|
return 1
|
|
|
|
/obj/cave_entrance
|
|
name = "cave entrance"
|
|
desc = "temp"
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "cave_entrance"
|
|
anchored = 1
|
|
density = 0
|
|
var/id = null
|
|
|
|
New()
|
|
..()
|
|
if (!id)
|
|
id = "generic"
|
|
|
|
src.tag = "cave[id][src.icon_state == "cave_entrance" ? 0 : 1]"
|
|
|
|
attack_hand(mob/user as mob)
|
|
if (user.stat || user.getStatusDuration("weakened") || get_dist(user, src) > 1)
|
|
return
|
|
|
|
var/obj/cave_entrance/otherEntrance = locate("cave[id][src.icon_state == "cave_entrance"]")
|
|
if (!istype(otherEntrance))
|
|
return
|
|
|
|
user.visible_message("", "You climb [src.icon_state == "cave_entrance" ? "down" : "up"] the stairs to the [src.icon_state == "cave_entrance" ? "cave" : "surface"]. ")
|
|
user.set_loc(get_turf(otherEntrance))
|
|
|
|
|
|
/MOVE THIS INTO REAGENTS-EXPLOSIVEFIRE.DM LATER//
|
|
|
|
//combustible/nitrogentriiodide/dry/hellshroom
|
|
//name = "Hellshroom Extract"
|
|
//id = "hellshroom"
|
|
//description = "An organic substance that is extremely volatile due to it being so dry. Rather fascinating."
|
|
|
|
//MOVE THIS TO SEEDS.DM LATER//
|
|
|
|
/obj/item/seed/alien/hellshroom
|
|
New()
|
|
..()
|
|
src.planttype = HY_get_species_from_path(/datum/plant/artifact/hellshroom, src)
|
|
|
|
//MOVE THIS TO SNACKS.DM LATER//
|
|
|
|
/obj/item/reagent_containers/food/snacks/hellshroom
|
|
name = "hellshroom"
|
|
desc = "TEMP"
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "hellshroom_produce"
|
|
amount = 1
|
|
heal_amt = 0
|
|
initial_reagents = list("hellshroom_extract"=6)
|
|
|
|
//MOVE THIS TO PLANTS_ALIEN.DM LATER//
|
|
|
|
/datum/plant/artifact/hellshroom
|
|
name = "Hellshroom"
|
|
growthmode = "weed"
|
|
category = "Miscellaneous"
|
|
seedcolor = "#FF0000"
|
|
special_icon = "hellshroom"
|
|
crop = /obj/item/reagent_containers/food/snacks/hellshroom
|
|
starthealth = 10
|
|
nothirst = 1
|
|
starthealth = 20
|
|
growtime = 180
|
|
harvtime = 250
|
|
harvests = 10
|
|
endurance = 20
|
|
cropsize = 2
|
|
force_seed_on_harvest = 1
|
|
vending = 2
|
|
genome = 30
|
|
assoc_reagents = list("hellshroom_extract")
|
|
|
|
//MOVE THIS TO MISC_WEAPONS.DM LATER//
|
|
|
|
/obj/item/dagger/azarakknife
|
|
name = "sacrificial knife"
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "sacknife"
|
|
inhand_image_icon = 'icons/misc/AzungarAdventure.dmi'
|
|
item_state = "sacknife"
|
|
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
|
|
tool_flags = TOOL_CUTTING
|
|
hit_type = DAMAGE_CUT
|
|
hitsound = 'sound/impact_sounds/Flesh_Cut_1.ogg'
|
|
force = 5.0
|
|
throwforce = 15.0
|
|
throw_range = 5
|
|
desc = "TEMP"
|
|
pickup_sfx = "sound/items/blade_pull.ogg"
|
|
stamina_damage = 15
|
|
stamina_cost = 15
|
|
stamina_crit_chance = 50
|
|
|
|
//MOVE TO SMALL_ANIMALS.DM LATER//
|
|
|
|
/obj/critter/bat/hellbat
|
|
name = "hellbat"
|
|
desc = "TEMP"
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "hellbat"
|
|
health = 35
|
|
aggressive = 1
|
|
defensive = 1
|
|
wanderer = 1
|
|
atkcarbon = 1
|
|
atksilicon = 1
|
|
brutevuln = 0.7
|
|
opensdoors = 0
|
|
seekrange = 5
|
|
flying = 1
|
|
density = 1 // so lasers can hit them
|
|
angertext = "screeches at"
|
|
|
|
seek_target()
|
|
src.anchored = 0
|
|
for (var/mob/living/C in hearers(src.seekrange,src))
|
|
if (src.target)
|
|
src.task = "chasing"
|
|
break
|
|
if ((C.name == src.oldtarget_name) && (world.time < src.last_found + 100)) continue
|
|
if (iscarbon(C) && !src.atkcarbon) continue
|
|
if (issilicon(C) && !src.atksilicon) continue
|
|
if (C.health < 0) continue
|
|
if (C in src.friends) continue
|
|
if (C.name == src.attacker) src.attack = 1
|
|
if (iscarbon(C) && src.atkcarbon) src.attack = 1
|
|
if (issilicon(C) && src.atksilicon) src.attack = 1
|
|
|
|
if (src.attack)
|
|
src.target = C
|
|
src.oldtarget_name = C.name
|
|
src.visible_message("<span class='combat'><b>[src]</b> [src.angertext] [C.name]!</span>")
|
|
src.task = "chasing"
|
|
break
|
|
else
|
|
continue
|
|
|
|
ChaseAttack(mob/M)
|
|
src.visible_message("<span class='combat'><B>[src]</B> launches itself at [M]!</span>")
|
|
if (prob(30)) M.changeStatus("weakened", 2 SECONDS)
|
|
|
|
CritterAttack(mob/M)
|
|
src.attacking = 1
|
|
src.visible_message("<span class='combat'><B>[src]</B> bites and claws at [src.target]!</span>")
|
|
random_brute_damage(src.target, rand(3,5))
|
|
random_burn_damage(src.target, rand(2,3))
|
|
SPAWN_DBG(1 SECOND)
|
|
src.attacking = 0
|
|
|
|
|
|
//MOVE TO HEART.DM LATER//
|
|
|
|
/obj/item/organ/heart/eldritchadventure
|
|
name = "tainted heart"
|
|
desc = "TEMP"
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "artifact_eldritchHeart"
|
|
edible = 0
|
|
|
|
/mob/living/carbon/human/npc/cultist
|
|
name = "Crazed cultist"
|
|
real_name = "Crazed cultist"
|
|
ai_aggressive = 1
|
|
unobservable = 1
|
|
|
|
New()
|
|
..()
|
|
SPAWN_DBG(0)
|
|
bioHolder.mobAppearance.underwear = "briefs"
|
|
JobEquipSpawned("DO NOT USE THIS JOB")
|
|
update_clothing()
|
|
//src.equip_if_possible(new /obj/item/clothing/shoes/dress_shoes(src), slot_shoes)
|
|
//src.equip_if_possible(new /obj/item/clothing/under/suit/purple(src), slot_w_uniform)
|
|
//src.equip_if_possible(new /obj/item/clothing/suit/cultistblack/cursed(src), slot_wear_suit)
|
|
//src.equip_if_possible(new /obj/item/clothing/mask/eldritchskull {cant_drop = 1; cant_other_remove = 1; cant_self_remove = 1} (src), slot_wear_mask)
|
|
//src.equip_if_possible(new /obj/item/dagger/azarakknife {cant_drop = 1; cant_other_remove = 1; cant_self_remove = 1} (src), slot_r_hand)
|
|
SPAWN_DBG(0)
|
|
var/obj/item/organ/heart/eldritchadventure/H = new /obj/item/organ/heart/eldritchadventure
|
|
receive_organ(H, "heart", 0, 1)
|
|
return
|
|
|
|
|
|
|
|
|
|
/datum/job/special/DONOTUSETHISJOB
|
|
name = "DO NOT USE THIS JOB"
|
|
limit = 0
|
|
wages = 0
|
|
slot_jump = /obj/item/clothing/under/suit/purple
|
|
slot_foot = /obj/item/clothing/shoes/dress_shoes
|
|
slot_rhan = null
|
|
slot_back = null
|
|
slot_card = null
|
|
slot_ears = null
|
|
slot_poc1 = null
|
|
slot_poc2 = null
|
|
|
|
*/
|
|
|
|
/obj/syndicateholoemitter
|
|
name = "Holo-emitter"
|
|
desc = "A compact holo emitter pre-loaded with a holographic image."
|
|
icon = 'icons/obj/janitor.dmi'
|
|
icon_state = "emitter-on"
|
|
flags = FPRINT | TABLEPASS
|
|
anchored = 2
|
|
|
|
|
|
|
|
/obj/holosigntest
|
|
desc = "... is that Absu..?"
|
|
name = "... is that Absu..?"
|
|
icon = 'icons/effects/96x96.dmi'
|
|
icon_state = "holoplanet"
|
|
alpha = 180
|
|
pixel_y = 16
|
|
anchored = 2
|
|
layer = EFFECTS_LAYER_BASE
|
|
var/datum/light/light
|
|
var/obj/holoparticles/particles
|
|
|
|
New(var/_loc)
|
|
set_loc(_loc)
|
|
|
|
light = new /datum/light/point
|
|
light.attach(src)
|
|
light.set_color(0.50, 0.60, 0.94)
|
|
light.set_brightness(0.7)
|
|
light.enable()
|
|
|
|
SPAWN_DBG(1 DECI SECOND)
|
|
animate(src, alpha=130, color="#DDDDDD", time=7, loop=-1)
|
|
animate(alpha=180, color="#FFFFFF", time=1)
|
|
animate(src, pixel_y=10, time=15, flags=ANIMATION_PARALLEL, easing=SINE_EASING, loop=-1)
|
|
animate(pixel_y=16, easing=SINE_EASING, time=15)
|
|
|
|
particles = new/obj/holoparticles(src.loc)
|
|
attached_objs = list(particles)
|
|
..(_loc)
|
|
|
|
disposing()
|
|
if(particles)
|
|
particles.invisibility = 101
|
|
qdel(particles)
|
|
..()
|
|
|
|
/obj/holoparticles
|
|
desc = ""
|
|
name = ""
|
|
icon = 'icons/obj/janitor.dmi'
|
|
icon_state = "holoparticles"
|
|
anchored = 1
|
|
alpha= 230
|
|
pixel_y = 14
|
|
layer = EFFECTS_LAYER_BASE
|
|
|
|
/obj/dispenser
|
|
name = "handcuff dispenser"
|
|
desc = "A handy dispenser for handcuffs."
|
|
icon = 'icons/obj/stationobjs.dmi'
|
|
icon_state = "dispenser_handcuffs"
|
|
var/amount = 3
|
|
|
|
attackby(obj/item/W as obj, mob/user as mob)
|
|
if (istype(W, /obj/item/handcuffs))
|
|
user.u_equip(W)
|
|
qdel(W)
|
|
src.amount++
|
|
boutput(user, "<span style=\"color:blue\">You put a pair of handcuffs in the [src]. [amount] left in the dispenser.</span>")
|
|
return
|
|
|
|
attack_hand(mob/user as mob)
|
|
add_fingerprint(user)
|
|
if (src.amount >= 1)
|
|
src.amount--
|
|
user.put_in_hand_or_drop(new/obj/item/handcuffs, user.hand)
|
|
boutput(user, "<span style=\"color:red\">You take a pair of handcuffs from the [src]. [amount] left in the dispenser.</span>")
|
|
if (src.amount <= 0)
|
|
src.icon_state = "dispenser_handcuffs"
|
|
else
|
|
boutput(user, "<span style=\"color:red\">There's no handcuffs left in the [src]!</span>")
|
|
|
|
/obj/decal/fakeobjects/mantacontainer
|
|
name = "container"
|
|
desc = "These huge containers are used to transport goods from one place to another."
|
|
icon = 'icons/obj/64x96.dmi'
|
|
icon_state = "manta"
|
|
anchored = 2
|
|
density = 1
|
|
bound_height = 32
|
|
bound_width = 96
|
|
layer = EFFECTS_LAYER_BASE
|
|
|
|
attack_hand(mob/user as mob)
|
|
if (can_reach(user,src))
|
|
boutput(user, "<span style=\"color:red\">You attempt to open the container but its doors are sealed tight. It doesn't look like you'll be able to open it.</span>")
|
|
playsound(src.loc, "sound/machines/door_locked.ogg", 50, 1, -2)
|
|
|
|
yellow
|
|
icon_state = "mantayellow"
|
|
blue
|
|
icon_state = "mantablue"
|
|
|
|
/obj/decal/fakeobjects/mantacontainer/upwards
|
|
name = "container"
|
|
desc = "These huge containers are used to transport goods from one place to another."
|
|
icon = 'icons/obj/96x64.dmi'
|
|
icon_state = "manta"
|
|
anchored = 2
|
|
density = 1
|
|
bound_height = 96
|
|
bound_width = 64
|
|
layer = EFFECTS_LAYER_BASE
|
|
|
|
/obj/decal/fakeobjects/mantacontainer/upwards/yellow
|
|
icon_state = "mantayellow"
|
|
|
|
/obj/roulette_table_w //Big thanks to Haine for the sprite and parts of the code!
|
|
name = "roulette wheel"
|
|
desc = "A table with a roulette wheel and a little ball. Even numbers seem to be red, odd numbers seem to be black. 0 and 00 seem to be green."
|
|
icon = 'icons/obj/gambling.dmi'
|
|
icon_state = "roulette_w0"
|
|
anchored = 1
|
|
density = 1
|
|
var/resultcolor = 5
|
|
var/running = 0
|
|
var/run_time = 40
|
|
var/last_result = "red"
|
|
var/list/nums_red = list(1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36)
|
|
var/list/nums_black = list(2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35)
|
|
var/list/nums_green = list(37,38)
|
|
|
|
attack_hand(mob/user)
|
|
src.spin(user)
|
|
|
|
proc/update_icon()
|
|
if (running == 0)
|
|
src.icon_state = "roulette_w0"
|
|
else if (running == 1)
|
|
src.icon_state = "roulette_w1"
|
|
|
|
proc/spin(mob/user)
|
|
src.maptext = ""
|
|
if (src.running)
|
|
if (user)
|
|
user.show_text("[src] is already spinning, be patient!","red")
|
|
return
|
|
if (user)
|
|
src.visible_message("[user] spins [src]!")
|
|
else
|
|
src.visible_message("[src] starts spinning!")
|
|
src.running = 1
|
|
update_icon()
|
|
var/real_run_time = rand(max(src.run_time - 10, 1), (src.run_time + 10))
|
|
sleep(real_run_time)
|
|
src.last_result = rand(1,38) // 1-36 are regular numbers to land on, 37 and 38 are 0 and 00 respectively
|
|
if (last_result in nums_red)
|
|
src.resultcolor = "red"
|
|
if (last_result in nums_black)
|
|
src.resultcolor = "black"
|
|
if (last_result in nums_green)
|
|
src.resultcolor = "green"
|
|
|
|
src.visible_message("<span style=\"color:green\">[src] lands on [src.last_result > 37 ? "00" : src.last_result > 36 ? "0" : src.last_result] [src.resultcolor]!</span>")
|
|
src.running = 0
|
|
update_icon()
|
|
src.maptext = text("<span style='color:[resultcolor];font:bold'>[] []</span>", src.last_result > 37 ? "00" : src.last_result > 36 ? "0" : src.last_result, length(resultcolor) ? uppertext(resultcolor[1]) : "")
|
|
src.maptext_width = 64
|
|
src.maptext_x= 32
|
|
src.maptext_y= 32
|
|
SPAWN_DBG(5 SECONDS)
|
|
src.maptext = ""
|
|
// "<span style='color:black'><b>33 B</b></span>"
|
|
/obj/decal/fakeobjects/turbinetest
|
|
name = "TEMP"
|
|
desc = "TEMP"
|
|
icon = 'icons/obj/96x160.dmi'
|
|
icon_state = "turbine_main"
|
|
anchored = 2
|
|
density = 1
|
|
bound_height = 160
|
|
bound_width = 96
|
|
|
|
/obj/decal/fakeobjects/nuclearcomputertest
|
|
name = "TEMP"
|
|
desc = "TEMP"
|
|
icon = 'icons/obj/32x96.dmi'
|
|
icon_state = "nuclearcomputer"
|
|
anchored = 2
|
|
density = 1
|
|
bound_height = 96
|
|
bound_width = 32
|
|
|
|
//Shamelessly stolen from Keelinstuff.dm
|
|
|
|
/obj/item/lawbook
|
|
name = "Space Law 1st Print"
|
|
desc = "A very rare first print of the fabled Space Law book."
|
|
inhand_image_icon = 'icons/mob/inhand/hand_weapons.dmi'
|
|
item_state = "lawbook"
|
|
|
|
density = 0
|
|
opacity = 0
|
|
anchored = 1
|
|
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "lawbook"
|
|
item_state = "lawbook"
|
|
|
|
//throwforce = 10
|
|
throw_range = 10
|
|
throw_speed = 1
|
|
throw_return = 1
|
|
|
|
var/prob_clonk = 0
|
|
|
|
throw_begin(atom/target)
|
|
icon_state = "lawspin"
|
|
playsound(src.loc, "rustle", 50, 1)
|
|
return ..(target)
|
|
|
|
throw_impact(atom/hit_atom)
|
|
icon_state = "lawbook"
|
|
if(hit_atom == usr)
|
|
if(prob(prob_clonk))
|
|
var/mob/living/carbon/human/user = usr
|
|
user.visible_message("<span style=\"color:red\"><B>[user] fumbles the catch and is clonked on the head!</B></span>")
|
|
playsound(user.loc, 'sound/impact_sounds/Flesh_Break_1.ogg', 50, 1)
|
|
user.changeStatus("stunned", 50)
|
|
user.changeStatus("weakened", 3 SECONDS)
|
|
user.changeStatus("paralysis", 2 SECONDS)
|
|
user.force_laydown_standup()
|
|
else
|
|
src.attack_hand(usr)
|
|
return
|
|
else
|
|
if(ishuman(hit_atom))
|
|
var/mob/living/carbon/human/user = usr
|
|
var/hos = (istype(user.head, /obj/item/clothing/head/hosberet) || istype(user.head, /obj/item/clothing/head/helmet/HoS))
|
|
if(hos)
|
|
var/mob/living/carbon/human/H = hit_atom
|
|
H.changeStatus("stunned", 90)
|
|
H.changeStatus("weakened", 2 SECONDS)
|
|
H.force_laydown_standup()
|
|
//H.paralysis++
|
|
playsound(H.loc, "swing_hit", 50, 1)
|
|
usr.say("I AM THE LAW!")
|
|
prob_clonk = min(prob_clonk + 5, 40)
|
|
SPAWN_DBG(2 SECONDS)
|
|
prob_clonk = max(prob_clonk - 5, 0)
|
|
|
|
return ..(hit_atom)
|
|
|
|
/obj/portalmartian
|
|
name = "portal"
|
|
icon = 'icons/obj/stationobjs.dmi'
|
|
icon_state = "portal"
|
|
density = 1
|
|
anchored = 1
|
|
var/recharging =0
|
|
var/id = "shuttle" //The main location of the teleporter
|
|
var/recharge = 20 //A short recharge time between teleports
|
|
var/busy = 0
|
|
layer = 2
|
|
|
|
|
|
|
|
Bumped(mob/user as mob)
|
|
if(busy) return
|
|
if(get_dist(usr, src) > 1 || usr.z != src.z) return
|
|
user.machine = src
|
|
busy = 1
|
|
showswirl(user.loc)
|
|
playsound(src, 'sound/effects/teleport.ogg', 60, 1)
|
|
SPAWN_DBG(1 SECOND)
|
|
teleport(user)
|
|
busy = 0
|
|
|
|
proc/teleport(mob/user)
|
|
for(var/obj/portalmartian/S) // in world AUGHHH
|
|
if(S.id == src.id && S != src)
|
|
if(recharging == 1)
|
|
return 1
|
|
else
|
|
S.recharging = 1
|
|
src.recharging = 1
|
|
user.set_loc(S.loc)
|
|
showswirl(user.loc)
|
|
SPAWN_DBG(recharge)
|
|
S.recharging = 0
|
|
src.recharging = 0
|
|
return
|
|
|
|
/obj/critter/bat/hellbat
|
|
name = "ancient bat"
|
|
desc = "This bat must be really old!"
|
|
icon = 'icons/misc/AzungarAdventure.dmi'
|
|
icon_state = "hellbat"
|
|
health = 35
|
|
aggressive = 1
|
|
defensive = 1
|
|
wanderer = 1
|
|
atkcarbon = 1
|
|
atksilicon = 1
|
|
brutevuln = 0.7
|
|
opensdoors = 0
|
|
seekrange = 5
|
|
flying = 1
|
|
density = 1 // so lasers can hit them
|
|
angertext = "screeches at"
|
|
|
|
seek_target()
|
|
src.anchored = 0
|
|
for (var/mob/living/C in hearers(src.seekrange,src))
|
|
if (src.target)
|
|
src.task = "chasing"
|
|
break
|
|
if ((C.name == src.oldtarget_name) && (world.time < src.last_found + 100)) continue
|
|
if (iscarbon(C) && !src.atkcarbon) continue
|
|
if (issilicon(C) && !src.atksilicon) continue
|
|
if (C.health < 0) continue
|
|
if (C in src.friends) continue
|
|
if (C.name == src.attacker) src.attack = 1
|
|
if (iscarbon(C) && src.atkcarbon) src.attack = 1
|
|
if (issilicon(C) && src.atksilicon) src.attack = 1
|
|
|
|
if (src.attack)
|
|
src.target = C
|
|
src.oldtarget_name = C.name
|
|
src.visible_message("<span class='combat'><b>[src]</b> [src.angertext] [C.name]!</span>")
|
|
src.task = "chasing"
|
|
break
|
|
else
|
|
continue
|
|
|
|
ChaseAttack(mob/M)
|
|
src.visible_message("<span class='combat'><B>[src]</B> launches itself at [M]!</span>")
|
|
if (prob(30)) M.changeStatus("weakened", 2 SECONDS)
|
|
|
|
CritterAttack(mob/M)
|
|
src.attacking = 1
|
|
src.visible_message("<span class='combat'><B>[src]</B> bites and claws at [src.target]!</span>")
|
|
random_brute_damage(src.target, rand(3,5))
|
|
random_burn_damage(src.target, rand(2,3))
|
|
SPAWN_DBG(1 SECOND)
|
|
src.attacking = 0
|
|
|
|
CritterDeath()
|
|
qdel(src) |