//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)