//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("[M] falls into the [src] and melts away!")
M.firegib() // thanks ISN!
else
src.visible_message("[O] falls into the [src] and melts away!")
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("[M] gets too close to the edge of the lava and spontaniously combusts from the heat!")
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("[M] gets too close to the edge of the lava and their internal wiring suffers a major burn!")
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("[M] continues to remain too close to the lava, their legs literally melting away!")
else
boutput(M, "You can feel intense heat on the lower part of your torso.")
visible_message("[M] continues to remain too close to the lava, if they had any legs, they would have melted away!")
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("[M] continues to remain too close to the lava, their legs literally melting away!")
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("[M] continues to remain too close to the lava, if they had any legs, they would have melted away!")
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("[src] crumbles into dust!")
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("After a few hits [src] crumbles into smaller rocks.")
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, "You need a tighter grip!")
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("[G.assailant] slams [G.affecting] onto \the [src]!")
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("[G.assailant] puts [G.affecting] on \the [src].")
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("[src] [src.angertext] [C.name]!")
src.task = "chasing"
break
else
continue
ChaseAttack(mob/M)
src.visible_message("[src] launches itself at [M]!")
if (prob(30)) M.changeStatus("weakened", 2 SECONDS)
CritterAttack(mob/M)
src.attacking = 1
src.visible_message("[src] bites and claws at [src.target]!")
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, "You put a pair of handcuffs in the [src]. [amount] left in the dispenser.")
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, "You take a pair of handcuffs from the [src]. [amount] left in the dispenser.")
if (src.amount <= 0)
src.icon_state = "dispenser_handcuffs"
else
boutput(user, "There's no handcuffs left in the [src]!")
/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, "You attempt to open the container but its doors are sealed tight. It doesn't look like you'll be able to open it.")
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("[src] lands on [src.last_result > 37 ? "00" : src.last_result > 36 ? "0" : src.last_result] [src.resultcolor]!")
src.running = 0
update_icon()
src.maptext = text("[] []", 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 = ""
// "33 B"
/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("[user] fumbles the catch and is clonked on the head!")
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("[src] [src.angertext] [C.name]!")
src.task = "chasing"
break
else
continue
ChaseAttack(mob/M)
src.visible_message("[src] launches itself at [M]!")
if (prob(30)) M.changeStatus("weakened", 2 SECONDS)
CritterAttack(mob/M)
src.attacking = 1
src.visible_message("[src] bites and claws at [src.target]!")
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)