From 8605809c57d7bffeeb3783d5aba9bbf460b79166 Mon Sep 17 00:00:00 2001 From: Ergovisavi Date: Sat, 3 Sep 2016 16:27:11 -0700 Subject: [PATCH 1/2] New colossus loot, the "Anomolous Crystal" --- code/game/objects/structures/flora.dm | 11 + code/modules/mining/mine_turfs.dm | 3 +- .../hostile/megafauna/colossus.dm | 392 ++++++++++++++++++ icons/mob/actions.dmi | Bin 89805 -> 90208 bytes icons/mob/animal.dmi | Bin 215075 -> 218228 bytes icons/obj/lavaland/artefacts.dmi | Bin 9381 -> 9972 bytes 6 files changed, 405 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 48192946ac6..08a823f44be 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -23,7 +23,9 @@ return user.visible_message("[user] fells [src] with the [W].","You fell [src] with the [W].", "You hear the sound of a tree falling.") playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0) + icon = 'icons/obj/flora/pinetrees.dmi' icon_state = "tree_stump" + pixel_x = -16 name += " stump" cut = TRUE for(var/i=1 to log_amount) @@ -56,6 +58,15 @@ icon = 'icons/obj/flora/deadtrees.dmi' icon_state = "tree_1" +/obj/structure/flora/tree/palm + icon = 'icons/misc/beach2.dmi' + icon_state = "palm1" + +/obj/structure/flora/tree/palm/New() + ..() + icon_state = pick("palm1","palm2") + pixel_x = 0 + /obj/structure/festivus name = "festivus pole" icon = 'icons/obj/flora/pinetrees.dmi' diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index f18a329581a..1ee1da83742 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -278,7 +278,7 @@ /turf/open/floor/plating/asteroid/airless/cave/volcanic mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goldgrub = 10, /mob/living/simple_animal/hostile/asteroid/goliath/beast = 50, /mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 40, /mob/living/simple_animal/hostile/asteroid/hivelord/legion = 30, /mob/living/simple_animal/hostile/spawner/lavaland = 2, /mob/living/simple_animal/hostile/spawner/lavaland/goliath = 3, /mob/living/simple_animal/hostile/spawner/lavaland/legion = 3, \ - /mob/living/simple_animal/hostile/megafauna/dragon = 2, /mob/living/simple_animal/hostile/megafauna/bubblegum = 2) + /mob/living/simple_animal/hostile/megafauna/dragon = 2, /mob/living/simple_animal/hostile/megafauna/bubblegum = 2, /mob/living/simple_animal/hostile/megafauna/colossus = 2) data_having_type = /turf/open/floor/plating/asteroid/airless/cave/volcanic/has_data turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface @@ -561,6 +561,7 @@ if(istype(src, /turf/open/floor/plating/asteroid)) user << "You dig a hole." gets_dug() + layer = TURF_LAYER //In the event that our layer was increased to hide things under the surface feedback_add_details("pick_used_mining","[W.type]") if(istype(W,/obj/item/weapon/storage/bag/ore)) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 9e10ed76efe..8b0180c99c7 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -359,4 +359,396 @@ Difficulty: Very Hard /obj/machinery/smartfridge/black_box/default_deconstruction_crowbar() return +///Anomolous Crystal/// + +/obj/machinery/anomalous_crystal + name = "anomalous crystal" + desc = "A strange chunk of crystal, being in the presence of it fills you with equal parts excitement and dread." + icon = 'icons/obj/lavaland/artefacts.dmi' + icon_state = "anomaly_crystal" + luminosity = 8 + burn_state = LAVA_PROOF + pixel_y = -4 + use_power = 0 + density = 1 + languages_spoken = ALL + languages_understood = ALL + flags = HEAR + var/activation_turf = null + var/aim_direction = SOUTH + var/activation_method = "touch" + var/activation_damage_type = null + var/last_use_timer = 0 + var/cooldown_add = 30 + var/list/affected_targets = list() + var/activation_sound = 'sound/effects/break_stone.ogg' + +/obj/machinery/anomalous_crystal/New() + activation_method = pick("touch","beam","bullet","energy","magic","mob_bump","heat","weapon","speech") + ..() + +/obj/machinery/anomalous_crystal/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans) + ..() + if(isliving(speaker)) + ActivationReaction(speaker,"speech") + +/obj/machinery/anomalous_crystal/attack_hand(mob/user) + ..() + ActivationReaction(user,"touch") + +/obj/machinery/anomalous_crystal/attackby(obj/item/I, mob/user, params) + if(I.is_hot()) + ActivationReaction(user,"heat") + else + ActivationReaction(user,"weapon") + ..() + +/obj/machinery/anomalous_crystal/bullet_act(obj/item/projectile/P, def_zone) + ..() + if(istype(P, /obj/item/projectile/beam)) + ActivationReaction(P.firer, "beam", P.damage_type) + return + if(istype(P, /obj/item/projectile/bullet)) + ActivationReaction(P.firer, "bullet", P.damage_type) + return + if(istype(P, /obj/item/projectile/energy)) + ActivationReaction(P.firer, "energy",P.damage_type) + return + if(istype(P, /obj/item/projectile/magic)) + ActivationReaction(P.firer, "magic", P.damage_type) + return + +/obj/machinery/anomalous_crystal/proc/ActivationReaction(mob/user, method, damtype) + if(world.time < last_use_timer) + return 0 + if(activation_damage_type && activation_damage_type != damtype) + return 0 + if(method != activation_method) + return 0 + last_use_timer = (world.time + cooldown_add) + playsound(user, activation_sound, 100, 1) + return 1 + +/obj/machinery/anomalous_crystal/Bumped(atom/AM as mob|obj) + ..() + if(ismob(AM)) + ActivationReaction(AM,"mob_bump") + +/obj/machinery/anomalous_crystal/honk //Strips and equips you as a clown. I apologize for nothing + activation_method = "mob_bump" + activation_sound = 'sound/items/bikehorn.ogg' + +/obj/machinery/anomalous_crystal/honk/ActivationReaction(mob/user) + if(ishuman(user) && ..() && !(user in affected_targets)) + var/mob/living/carbon/human/H = user + for(var/obj/item/W in H) + H.unEquip(W) + var/datum/job/clown/C = new /datum/job/clown() + C.equip(H) + qdel(C) + affected_targets.Add(H) + +/obj/machinery/anomalous_crystal/theme_warp //Warps the area you're in to look like a new one + activation_method = "touch" + cooldown_add = 200 + var/terrain_theme = "winter" + var/NewTerrainFloors + var/NewTerrainWalls + var/NewTerrainChairs + var/NewTerrainTables + var/list/NewFlora = list() + var/florachance = 8 + var/FloorLayerChange + +/obj/machinery/anomalous_crystal/theme_warp/New() + ..() + terrain_theme = pick("lavaland","winter","jungle","ayy lmao") + switch(terrain_theme) + if("lavaland")//Depressurizes the place... and free cult metal, I guess. + NewTerrainFloors = /turf/open/floor/plating/asteroid/basalt/lava_land_surface + NewTerrainWalls = /turf/closed/wall/mineral/cult + NewFlora = list(/mob/living/simple_animal/hostile/asteroid/goldgrub) + florachance = 1 + FloorLayerChange = 2.6 + if("winter") //Depressurizes the place, and snow terrain is slow to move in + NewTerrainFloors = /turf/open/floor/plating/asteroid/snow/temperatre + NewTerrainWalls = /turf/closed/wall/mineral/wood + NewTerrainChairs = /obj/structure/chair/wood/normal + NewTerrainTables = /obj/structure/table/glass + NewFlora = list(/obj/structure/flora/grass/green, /obj/structure/flora/grass/brown, /obj/structure/flora/grass/both) + FloorLayerChange = 2.6 + if("jungle") //Beneficial due to actually having breathable air. Plus, monkeys. + NewTerrainFloors = /turf/open/floor/grass + NewTerrainWalls = /turf/closed/wall/mineral/sandstone + NewTerrainChairs = /obj/structure/chair/wood + NewTerrainTables = /obj/structure/table/wood + NewFlora = list(/obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/fernybush, /obj/structure/flora/ausbushes/leafybush, + /obj/structure/flora/ausbushes/grassybush, /obj/structure/flora/ausbushes/sunnybush, /obj/structure/flora/tree/palm, /mob/living/carbon/monkey) + florachance = 20 + FloorLayerChange = 2.6 + if("ayy lmao") //Beneficial, turns stuff into alien alloy which is useful to cargo and research. Also repairs atmos. + NewTerrainFloors = /turf/open/floor/plating/abductor + NewTerrainWalls = /turf/closed/wall/mineral/abductor + NewTerrainChairs = /obj/structure/bed/abductor //ayys apparently don't have chairs. An entire species of people who only recline. + NewTerrainTables = /obj/structure/table/abductor + +/obj/machinery/anomalous_crystal/theme_warp/ActivationReaction(mob/user, method) + if(..()) + var/area/A = get_area(src) + if(!A.outdoors && !(A in affected_targets)) + for(var/atom/Stuff in A) + if(isturf(Stuff)) + var/turf/T = Stuff + if((istype(T, /turf/open/space) || istype(T, /turf/open/floor)) && NewTerrainFloors) + var/turf/open/O = T.ChangeTurf(NewTerrainFloors) + if(O.air) + var/datum/gas_mixture/G = O.air + G.copy_from_turf(O) + if(FloorLayerChange) + O.layer = FloorLayerChange + if(prob(florachance) && NewFlora.len) + var/density_checks = 1 + for(var/atom/junk in O) + if(junk.density) + density_checks = 0 + break + if(density_checks) + var/atom/Picked = pick(NewFlora) + new Picked(O) + continue + if(istype(T, /turf/closed/wall) && NewTerrainWalls) + T.ChangeTurf(NewTerrainWalls) + continue + if(istype(Stuff, /obj/structure/chair) && NewTerrainChairs) + var/obj/structure/chair/Original = Stuff + var/obj/structure/chair/C = new NewTerrainChairs(Original.loc) + C.dir = Original.dir + qdel(Stuff) + continue + if(istype(Stuff, /obj/structure/table) && NewTerrainTables) + new NewTerrainTables(Stuff.loc) + qdel(Stuff) + continue + affected_targets += A + +/obj/machinery/anomalous_crystal/emitter //Generates a projectile when interacted with + activation_method = "touch" + cooldown_add = 50 + var/generated_projectile = /obj/item/projectile/beam/emitter + +/obj/machinery/anomalous_crystal/emitter/New() + ..() + generated_projectile = pick(/obj/item/projectile/beam/emitter,/obj/item/projectile/magic/fireball/infernal,/obj/item/projectile/magic/spellblade, + /obj/item/projectile/energy/net, /obj/item/projectile/bullet/meteorshot, /obj/item/projectile/beam/xray) + +/obj/machinery/anomalous_crystal/emitter/ActivationReaction(mob/user, method) + if(..()) + var/obj/item/projectile/P = new generated_projectile(get_turf(src)) + P.dir = dir + switch(dir) + if(NORTH) + P.yo = 20 + P.xo = 0 + if(EAST) + P.yo = 0 + P.xo = 20 + if(WEST) + P.yo = 0 + P.xo = -20 + else + P.yo = -20 + P.xo = 0 + P.fire() + +/obj/machinery/anomalous_crystal/dark_reprise //Revives anyone nearby, but turns them into shadowpeople. Cannot revive shadowpeople, so this is a one time thing. + activation_method = "touch" + +/obj/machinery/anomalous_crystal/dark_reprise/ActivationReaction(mob/user, method) + if(..()) + for(var/i in range(1, src)) + if(ishuman(i)) + var/mob/living/carbon/human/H = i + if(H.stat == DEAD && !is_species(H, /datum/species/shadow)) + H.set_species(/datum/species/shadow, 1) + H.revive(1,0) + +/obj/machinery/anomalous_crystal/helpers //Lets ghost spawn as helpful creatures that can only heal people slightly. Incredibly fragile and they can't converse with humans + activation_method = "touch" + var/ready_to_deploy = 0 + +/obj/machinery/anomalous_crystal/helpers/ActivationReaction(mob/user, method) + if(..() && !ready_to_deploy) + ready_to_deploy = 1 + +/obj/machinery/anomalous_crystal/helpers/attack_ghost(mob/dead/observer/user) + ..() + if(ready_to_deploy) + var/be_helper = alert("Become a Lightgeist? (Warning, You can no longer be cloned!)",,"Yes","No") + if(!be_helper == "No") + return + var/mob/living/simple_animal/hostile/lightgeist/W = new /mob/living/simple_animal/hostile/lightgeist(get_turf(loc)) + W.key = user.key + +/mob/living/simple_animal/hostile/lightgeist + name = "lightgeist" + desc = "This small floating creature is a completely unknown form of life... being near it fills you with a sense of tranquility." + icon_state = "lightgeist" + icon_living = "lightgeist" + icon_dead = "butterfly_dead" + turns_per_move = 1 + response_help = "waves away" + response_disarm = "brushes aside" + response_harm = "disrupts" + speak_emote = list("oscillates") + maxHealth = 2 + health = 2 + harm_intent_damage = 1 + friendly = "mends" + density = 0 + flying = 1 + pass_flags = PASSTABLE | PASSGRILLE | PASSMOB + ventcrawler = 2 + mob_size = MOB_SIZE_TINY + gold_core_spawnable = 0 + verb_say = "warps" + verb_ask = "floats inquisitively" + verb_exclaim = "zaps" + verb_yell = "bangs" + damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + luminosity = 4 + faction = list("neutral") + languages_spoken = 0 + languages_understood = ALL + del_on_death = 1 + var/heal_power = 5 + +/mob/living/simple_animal/hostile/lightgeist/New() + ..() + verbs -= /mob/living/verb/pulled + verbs -= /mob/verb/me_verb + +/mob/living/simple_animal/hostile/lightgeist/AttackingTarget() + ..() + if(isliving(target) && target != src) + var/mob/living/L = target + if(L.stat < DEAD) + L.heal_overall_damage(heal_power, heal_power, 1) + PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(target), "#80F5FF")) + +/mob/living/simple_animal/hostile/lightgeist/Life() + if(!ckey) + death() + ..() + + +/obj/machinery/anomalous_crystal/refresher //Deletes and recreates a copy of the item, "refreshing" it. Only works once per item. + activation_method = "touch" + cooldown_add = 50 + +/obj/machinery/anomalous_crystal/refresher/ActivationReaction(mob/user, method) + if(..()) + var/list/L + var/turf/T = get_step(src, dir) + for(var/i in T) + if(istype(i, /obj/item) && !istype(i, /obj/item/weapon/storage) && !(i in affected_targets) && !istype(i, /obj/item/weapon/implant) && !istype(i, /obj/item/weapon/implanter) && !istype(i, /obj/item/weapon/disk/nuclear)) + var/obj/item/W = i + if(!W.admin_spawned) + L += W + var/obj/item/CHOSEN = pick(L) + if(CHOSEN) + var/A = new CHOSEN.type(T) + affected_targets += A + qdel(CHOSEN) + +/obj/machinery/anomalous_crystal/possessor //Allows you to bodyjack small animals, then exit them at your leisure, but you can only do this once per activation. Because they blow up. Also, if the bodyjacked animal dies, SO DO YOU. + activation_method = "touch" + +/obj/machinery/anomalous_crystal/possessor/ActivationReaction(mob/user, method) + if(..()) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + var/mobcheck = 0 + for(var/i in range(1, src)) + if(istype(i, /mob/living/simple_animal)) + var/mob/living/simple_animal/A = i + if(A.melee_damage_upper || A.mob_size >= MOB_SIZE_LARGE || A.ckey || A.stat) + break + A.verbs -= /mob/living/verb/pulled + var/obj/structure/closet/stasis/S = new /obj/structure/closet/stasis(A) + H.loc = S + H.disabilities += MUTE + H.status_flags |= GODMODE + H.mind.transfer_to(A) + var/obj/effect/proc_holder/spell/targeted/exit_possession/P = new /obj/effect/proc_holder/spell/targeted/exit_possession + A.mind.AddSpell(P) + mobcheck = 1 + break + if(!mobcheck) + new /mob/living/simple_animal/cockroach(loc) //Just in case there aren't any animals on the station, this will leave you with a terrible option to possess if you feel like it + +/obj/structure/closet/stasis //Abstract game mechanic workarounds are the best + name = "quantum entanglement stasis warp field" + desc = "You can hardly comprehend this thing... which is why you can't see it." + icon_state = null //This shouldn't even be visible, so if it DOES show up, at least nobody will notice + density = 1 + anchored = 1 + health = 0 + var/mob/living/simple_animal/holder_animal + var/turf/last_location + +/obj/structure/closet/stasis/process() + for(var/mob/living/L in src) + L.Stun(1) + if(holder_animal.stat == DEAD || !istype(loc, /mob/living/simple_animal)) + dump_contents(1) + holder_animal.gib() + +/obj/structure/closet/stasis/New(mob/user) + ..() + holder_animal = user + START_PROCESSING(SSobj, src) + +/obj/structure/closet/stasis/dump_contents(var/kill = 0) + STOP_PROCESSING(SSobj, src) + for(var/mob/living/L in src) + L.disabilities -= MUTE + L.status_flags &= ~GODMODE + L.stunned = 0 + L.update_canmove() + holder_animal.mind.transfer_to(L) + L.mind.RemoveSpell(/obj/effect/proc_holder/spell/targeted/exit_possession) + if(kill || !istype(loc, /mob/living/simple_animal)) + L.death(0) + ..() + +/obj/effect/proc_holder/spell/targeted/exit_possession + name = "Exit Possession" + desc = "Exits the body you are possessing" + charge_max = 60 + clothes_req = 0 + invocation_type = "none" + max_targets = 1 + range = -1 + include_user = 1 + selection_type = "view" + action_icon_state = "exit_possession" + sound = null + smoke_spread = 1 + smoke_amt = 1 + +/obj/effect/proc_holder/spell/targeted/exit_possession/cast(list/targets, mob/user = usr) + if(!istype(user.loc, /turf/open/floor)) + return + var/datum/mind/target_mind = user.mind + for(var/i in user) + if(istype(i, /obj/structure/closet/stasis)) + var/obj/structure/closet/stasis/S = i + S.dump_contents() + qdel(S) + break + user.gib() + target_mind.RemoveSpell(/obj/effect/proc_holder/spell/targeted/exit_possession) + + #undef MEDAL_PREFIX diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 03e67a1c927958d7dfd5d767eb1ea086b0b8a6e3..58f922a9430735e44abef5d40353e28462f4e317 100644 GIT binary patch delta 12412 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 G_^CE(GblONT=T=^#j#rWEPDH$gyp?+|(m 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 delta 11433 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 From 114676c548ec63a0f27874a8a490a722ce14a837 Mon Sep 17 00:00:00 2001 From: Ergovisavi Date: Wed, 7 Sep 2016 18:59:42 -0700 Subject: [PATCH 2/2] Finishing up anomalous crystals --- code/__DEFINES/is_helpers.dm | 1 + .../game/turfs/simulated/floor/fancy_floor.dm | 47 ++++++- code/modules/mining/mine_turfs.dm | 4 +- .../hostile/megafauna/colossus.dm | 127 +++++++++--------- 4 files changed, 105 insertions(+), 74 deletions(-) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 5baea0ba429..1e66100e551 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -16,6 +16,7 @@ #define ispodperson(A) (is_species(A, /datum/species/podperson)) #define isflyperson(A) (is_species(A, /datum/species/fly)) #define isslimeperson(A) (is_species(A, /datum/species/jelly/slime)) +#define isshadowperson(A) (is_species(A, /datum/species/shadow)) #define iszombie(A) (is_species(A, /datum/species/zombie)) #define ishumanbasic(A) (is_species(A, /datum/species/human)) diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index 6509d415684..edefd3b9f66 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -28,10 +28,11 @@ initial_gas_mix = "TEMP=2.7" /turf/open/floor/grass - name = "Grass patch" + name = "grass patch" icon_state = "grass" floor_tile = /obj/item/stack/tile/grass broken_states = list("sand") + var/ore_type = /obj/item/weapon/ore/glass /turf/open/floor/grass/New() ..() @@ -39,13 +40,47 @@ update_icon() /turf/open/floor/grass/attackby(obj/item/C, mob/user, params) + if(istype(C, /obj/item/weapon/shovel) && params) + new ore_type(src) + new ore_type(src) //Make some sand if you shovel grass + user << "You shovel [src]." + make_plating() if(..()) return - if(istype(C, /obj/item/weapon/shovel)) - new /obj/item/weapon/ore/glass(src) - new /obj/item/weapon/ore/glass(src) //Make some sand if you shovel grass - user << "You shovel the grass." - make_plating() + +/turf/open/floor/grass/snow + name = "snow" + icon = 'icons/turf/snow.dmi' + desc = "Looks cold." + icon_state = "snow" + ore_type = /obj/item/stack/sheet/mineral/snow + planetary_atmos = TRUE + floor_tile = null + initial_gas_mix = "o2=22;n2=82;TEMP=180" + slowdown = 2 + + +/turf/open/floor/grass/snow/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/weapon/crowbar))//You need to dig this turf out instead of crowbarring it + return + ..() + +/turf/open/floor/grass/snow/basalt //By your powers combined, I am captain planet + name = "volcanic floor" + icon = 'icons/turf/floors.dmi' + icon_state = "basalt" + ore_type = /obj/item/weapon/ore/glass/basalt + initial_gas_mix = "o2=14;n2=23;TEMP=300" + slowdown = 0 + +/turf/open/floor/grass/snow/basalt/New() + ..() + if(prob(15)) + icon_state = "basalt[rand(0, 12)]" + switch(icon_state) + if("basalt1", "basalt2", "basalt3") + SetLuminosity(1, 1) + /turf/open/floor/carpet name = "Carpet" diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 9b02354edf3..367308e0e36 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -507,6 +507,9 @@ /turf/open/floor/plating/asteroid/snow/temperatre initial_gas_mix = "TEMP=255.37" +/turf/open/floor/plating/asteroid/snow/atmosphere + initial_gas_mix = "o2=22;n2=82;TEMP=180" + /turf/open/floor/plating/asteroid/New() var/proper_name = name ..() @@ -561,7 +564,6 @@ if(istype(src, /turf/open/floor/plating/asteroid)) user << "You dig a hole." gets_dug() - layer = TURF_LAYER //In the event that our layer was increased to hide things under the surface feedback_add_details("pick_used_mining","[W.type]") if(istype(W,/obj/item/weapon/storage/bag/ore)) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 8b0180c99c7..a8f7b491bc9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -46,7 +46,7 @@ Difficulty: Very Hard del_on_death = 1 medal_type = MEDAL_PREFIX score_type = COLOSSUS_SCORE - loot = list(/obj/machinery/smartfridge/black_box) + loot = list(/obj/machinery/anomalous_crystal/random) butcher_results = list(/obj/item/weapon/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30) deathmessage = "disintegrates, leaving a glowing core in its wake." death_sound = 'sound/magic/demon_dies.ogg' @@ -368,14 +368,11 @@ Difficulty: Very Hard icon_state = "anomaly_crystal" luminosity = 8 burn_state = LAVA_PROOF - pixel_y = -4 use_power = 0 density = 1 languages_spoken = ALL languages_understood = ALL flags = HEAR - var/activation_turf = null - var/aim_direction = SOUTH var/activation_method = "touch" var/activation_damage_type = null var/last_use_timer = 0 @@ -384,7 +381,7 @@ Difficulty: Very Hard var/activation_sound = 'sound/effects/break_stone.ogg' /obj/machinery/anomalous_crystal/New() - activation_method = pick("touch","beam","bullet","energy","magic","mob_bump","heat","weapon","speech") + activation_method = pick("touch","laser","bullet","energy","magic","mob_bump","heat","weapon","speech") ..() /obj/machinery/anomalous_crystal/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans) @@ -405,18 +402,10 @@ Difficulty: Very Hard /obj/machinery/anomalous_crystal/bullet_act(obj/item/projectile/P, def_zone) ..() - if(istype(P, /obj/item/projectile/beam)) - ActivationReaction(P.firer, "beam", P.damage_type) - return - if(istype(P, /obj/item/projectile/bullet)) - ActivationReaction(P.firer, "bullet", P.damage_type) - return - if(istype(P, /obj/item/projectile/energy)) - ActivationReaction(P.firer, "energy",P.damage_type) - return if(istype(P, /obj/item/projectile/magic)) ActivationReaction(P.firer, "magic", P.damage_type) return + ActivationReaction(P.firer, P.flag, P.damage_type) /obj/machinery/anomalous_crystal/proc/ActivationReaction(mob/user, method, damtype) if(world.time < last_use_timer) @@ -434,12 +423,17 @@ Difficulty: Very Hard if(ismob(AM)) ActivationReaction(AM,"mob_bump") +/obj/machinery/anomalous_crystal/random/New()//Just a random crysal spawner for loot + var/random_crystal = pick(typesof(/obj/machinery/anomalous_crystal) - /obj/machinery/anomalous_crystal/random) + new random_crystal(loc) + qdel(src) + /obj/machinery/anomalous_crystal/honk //Strips and equips you as a clown. I apologize for nothing activation_method = "mob_bump" activation_sound = 'sound/items/bikehorn.ogg' /obj/machinery/anomalous_crystal/honk/ActivationReaction(mob/user) - if(ishuman(user) && ..() && !(user in affected_targets)) + if(..() && ishuman(user) && !(user in affected_targets)) var/mob/living/carbon/human/H = user for(var/obj/item/W in H) H.unEquip(W) @@ -448,6 +442,10 @@ Difficulty: Very Hard qdel(C) affected_targets.Add(H) +/obj/machinery/anomalous_crystal/honk/New() + ..() + activation_method = pick("mob_bump","speech") + /obj/machinery/anomalous_crystal/theme_warp //Warps the area you're in to look like a new one activation_method = "touch" cooldown_add = 200 @@ -458,25 +456,22 @@ Difficulty: Very Hard var/NewTerrainTables var/list/NewFlora = list() var/florachance = 8 - var/FloorLayerChange /obj/machinery/anomalous_crystal/theme_warp/New() ..() terrain_theme = pick("lavaland","winter","jungle","ayy lmao") switch(terrain_theme) if("lavaland")//Depressurizes the place... and free cult metal, I guess. - NewTerrainFloors = /turf/open/floor/plating/asteroid/basalt/lava_land_surface + NewTerrainFloors = /turf/open/floor/grass/snow/basalt NewTerrainWalls = /turf/closed/wall/mineral/cult NewFlora = list(/mob/living/simple_animal/hostile/asteroid/goldgrub) florachance = 1 - FloorLayerChange = 2.6 - if("winter") //Depressurizes the place, and snow terrain is slow to move in - NewTerrainFloors = /turf/open/floor/plating/asteroid/snow/temperatre + if("winter") //Snow terrain is slow to move in and cold! Get the assistants to shovel your driveway. + NewTerrainFloors = /turf/open/floor/grass/snow NewTerrainWalls = /turf/closed/wall/mineral/wood NewTerrainChairs = /obj/structure/chair/wood/normal NewTerrainTables = /obj/structure/table/glass NewFlora = list(/obj/structure/flora/grass/green, /obj/structure/flora/grass/brown, /obj/structure/flora/grass/both) - FloorLayerChange = 2.6 if("jungle") //Beneficial due to actually having breathable air. Plus, monkeys. NewTerrainFloors = /turf/open/floor/grass NewTerrainWalls = /turf/closed/wall/mineral/sandstone @@ -485,7 +480,6 @@ Difficulty: Very Hard NewFlora = list(/obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/fernybush, /obj/structure/flora/ausbushes/leafybush, /obj/structure/flora/ausbushes/grassybush, /obj/structure/flora/ausbushes/sunnybush, /obj/structure/flora/tree/palm, /mob/living/carbon/monkey) florachance = 20 - FloorLayerChange = 2.6 if("ayy lmao") //Beneficial, turns stuff into alien alloy which is useful to cargo and research. Also repairs atmos. NewTerrainFloors = /turf/open/floor/plating/abductor NewTerrainWalls = /turf/closed/wall/mineral/abductor @@ -504,17 +498,9 @@ Difficulty: Very Hard if(O.air) var/datum/gas_mixture/G = O.air G.copy_from_turf(O) - if(FloorLayerChange) - O.layer = FloorLayerChange - if(prob(florachance) && NewFlora.len) - var/density_checks = 1 - for(var/atom/junk in O) - if(junk.density) - density_checks = 0 - break - if(density_checks) - var/atom/Picked = pick(NewFlora) - new Picked(O) + if(prob(florachance) && NewFlora.len && !is_blocked_turf(O)) + var/atom/Picked = pick(NewFlora) + new Picked(O) continue if(istype(T, /turf/closed/wall) && NewTerrainWalls) T.ChangeTurf(NewTerrainWalls) @@ -522,12 +508,11 @@ Difficulty: Very Hard if(istype(Stuff, /obj/structure/chair) && NewTerrainChairs) var/obj/structure/chair/Original = Stuff var/obj/structure/chair/C = new NewTerrainChairs(Original.loc) - C.dir = Original.dir + C.setDir(Original.dir) qdel(Stuff) continue if(istype(Stuff, /obj/structure/table) && NewTerrainTables) new NewTerrainTables(Stuff.loc) - qdel(Stuff) continue affected_targets += A @@ -544,7 +529,7 @@ Difficulty: Very Hard /obj/machinery/anomalous_crystal/emitter/ActivationReaction(mob/user, method) if(..()) var/obj/item/projectile/P = new generated_projectile(get_turf(src)) - P.dir = dir + P.setDir(dir) switch(dir) if(NORTH) P.yo = 20 @@ -568,7 +553,7 @@ Difficulty: Very Hard for(var/i in range(1, src)) if(ishuman(i)) var/mob/living/carbon/human/H = i - if(H.stat == DEAD && !is_species(H, /datum/species/shadow)) + if(H.stat == DEAD && !isshadowperson(H)) H.set_species(/datum/species/shadow, 1) H.revive(1,0) @@ -579,6 +564,7 @@ Difficulty: Very Hard /obj/machinery/anomalous_crystal/helpers/ActivationReaction(mob/user, method) if(..() && !ready_to_deploy) ready_to_deploy = 1 + notify_ghosts("An anomalous crystal has been activated in [get_area(src)]!", enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK) /obj/machinery/anomalous_crystal/helpers/attack_ghost(mob/dead/observer/user) ..() @@ -615,12 +601,15 @@ Difficulty: Very Hard verb_exclaim = "zaps" verb_yell = "bangs" damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) luminosity = 4 faction = list("neutral") languages_spoken = 0 languages_understood = ALL del_on_death = 1 + unsuitable_atmos_damage = 0 + flying = 1 + minbodytemp = 0 + maxbodytemp = 1500 var/heal_power = 5 /mob/living/simple_animal/hostile/lightgeist/New() @@ -667,27 +656,18 @@ Difficulty: Very Hard /obj/machinery/anomalous_crystal/possessor/ActivationReaction(mob/user, method) if(..()) if(ishuman(user)) - var/mob/living/carbon/human/H = user var/mobcheck = 0 - for(var/i in range(1, src)) - if(istype(i, /mob/living/simple_animal)) - var/mob/living/simple_animal/A = i - if(A.melee_damage_upper || A.mob_size >= MOB_SIZE_LARGE || A.ckey || A.stat) - break - A.verbs -= /mob/living/verb/pulled - var/obj/structure/closet/stasis/S = new /obj/structure/closet/stasis(A) - H.loc = S - H.disabilities += MUTE - H.status_flags |= GODMODE - H.mind.transfer_to(A) - var/obj/effect/proc_holder/spell/targeted/exit_possession/P = new /obj/effect/proc_holder/spell/targeted/exit_possession - A.mind.AddSpell(P) - mobcheck = 1 + for(var/mob/living/simple_animal/A in range(1, src)) + if(A.melee_damage_upper > 5 || A.mob_size >= MOB_SIZE_LARGE || A.ckey || A.stat) break + var/obj/structure/closet/stasis/S = new /obj/structure/closet/stasis(A) + user.forceMove(S) + mobcheck = 1 + break if(!mobcheck) new /mob/living/simple_animal/cockroach(loc) //Just in case there aren't any animals on the station, this will leave you with a terrible option to possess if you feel like it -/obj/structure/closet/stasis //Abstract game mechanic workarounds are the best +/obj/structure/closet/stasis name = "quantum entanglement stasis warp field" desc = "You can hardly comprehend this thing... which is why you can't see it." icon_state = null //This shouldn't even be visible, so if it DOES show up, at least nobody will notice @@ -695,33 +675,48 @@ Difficulty: Very Hard anchored = 1 health = 0 var/mob/living/simple_animal/holder_animal - var/turf/last_location /obj/structure/closet/stasis/process() - for(var/mob/living/L in src) - L.Stun(1) - if(holder_animal.stat == DEAD || !istype(loc, /mob/living/simple_animal)) + if(!isanimal(loc)) dump_contents(1) - holder_animal.gib() + return + if(holder_animal) + if(holder_animal.stat == DEAD) + dump_contents(1) + holder_animal.gib() -/obj/structure/closet/stasis/New(mob/user) +/obj/structure/closet/stasis/New() ..() - holder_animal = user + if(isanimal(loc)) + holder_animal = loc START_PROCESSING(SSobj, src) +/obj/structure/closet/stasis/Entered(atom/A) + if(isliving(A) && holder_animal) + var/mob/living/L = A + L.notransform = 1 + L.disabilities |= MUTE + L.status_flags |= GODMODE + L.mind.transfer_to(holder_animal) + var/obj/effect/proc_holder/spell/targeted/exit_possession/P = new /obj/effect/proc_holder/spell/targeted/exit_possession + holder_animal.mind.AddSpell(P) + holder_animal.verbs -= /mob/living/verb/pulled + /obj/structure/closet/stasis/dump_contents(var/kill = 0) STOP_PROCESSING(SSobj, src) for(var/mob/living/L in src) - L.disabilities -= MUTE + L.disabilities &= ~MUTE L.status_flags &= ~GODMODE - L.stunned = 0 - L.update_canmove() + L.notransform = 0 holder_animal.mind.transfer_to(L) L.mind.RemoveSpell(/obj/effect/proc_holder/spell/targeted/exit_possession) - if(kill || !istype(loc, /mob/living/simple_animal)) + if(kill || !isanimal(loc)) L.death(0) ..() +/obj/structure/closet/stasis/emp_act() + return + /obj/effect/proc_holder/spell/targeted/exit_possession name = "Exit Possession" desc = "Exits the body you are possessing" @@ -734,8 +729,6 @@ Difficulty: Very Hard selection_type = "view" action_icon_state = "exit_possession" sound = null - smoke_spread = 1 - smoke_amt = 1 /obj/effect/proc_holder/spell/targeted/exit_possession/cast(list/targets, mob/user = usr) if(!istype(user.loc, /turf/open/floor))