diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index d1f942c426..7b74c73ed0 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -231,6 +231,7 @@ var/global/list/edible_trash = list(/obj/item/broken_device, /obj/item/weapon/storage/wallet, /obj/item/weapon/storage/vore_egg, /obj/item/weapon/bikehorn/tinytether, +<<<<<<< HEAD /obj/item/weapon/material/kitchen, //chompstation addition start /obj/item/weapon/storage/mre, /obj/item/weapon/storage/mrebag, @@ -254,6 +255,9 @@ var/global/list/edible_trash = list(/obj/item/broken_device, /obj/item/weapon/clipboard, /obj/item/weapon/coin, /obj/item/clothing/ears //chompstation addition end +======= + /obj/item/capture_crystal +>>>>>>> 60011ecd0b... Merge pull request #11928 from Very-Soft/whalesandcrystals ) var/global/list/contamination_flavors = list( diff --git a/code/_macros_vr.dm b/code/_macros_vr.dm index 2eecbe69ed..314689541e 100644 --- a/code/_macros_vr.dm +++ b/code/_macros_vr.dm @@ -1 +1,2 @@ #define isbelly(A) istype(A, /obj/belly) +#define iscapturecrystal(A) istype(A, /obj/item/capture_crystal) diff --git a/code/controllers/subsystems/ai.dm b/code/controllers/subsystems/ai.dm index 4ed43a3481..9df293f417 100644 --- a/code/controllers/subsystems/ai.dm +++ b/code/controllers/subsystems/ai.dm @@ -32,10 +32,11 @@ SUBSYSTEM_DEF(ai) while(currentrun.len) var/datum/ai_holder/A = currentrun[currentrun.len] --currentrun.len - if(!A || QDELETED(A) || !A.holder?.loc || A.busy) // Doesn't exist or won't exist soon or not doing it this tick + var/mob/living/L = A.holder //VOREStation Edit Start + if(!A || QDELETED(A) || !L?.loc || A.busy) // Doesn't exist or won't exist soon or not doing it this tick continue - if(process_z[get_z(A.holder)]) + if(process_z[get_z(L)] || !L.low_priority) //VOREStation Edit End A.handle_strategicals() else slept_mobs++ diff --git a/code/controllers/subsystems/mapping.dm b/code/controllers/subsystems/mapping.dm index 06bf16e255..832a84784d 100644 --- a/code/controllers/subsystems/mapping.dm +++ b/code/controllers/subsystems/mapping.dm @@ -76,7 +76,9 @@ SUBSYSTEM_DEF(mapping) // VOREStation Edit Start: Enable This /datum/controller/subsystem/mapping/proc/loadLateMaps() var/list/deffo_load = using_map.lateload_z_levels - var/list/maybe_load = using_map.lateload_single_pick + var/list/maybe_load = using_map.lateload_gateway + var/list/also_load = using_map.lateload_overmap + for(var/list/maplist in deffo_load) if(!islist(maplist)) @@ -110,6 +112,28 @@ SUBSYSTEM_DEF(mapping) error("Randompick Z level \"[map]\" is not a valid map!") else MT.load_new_z(centered = FALSE) + + if(LAZYLEN(also_load)) //Just copied from gateway picking, this is so we can have a kind of OM map version of the same concept. + var/picklist = pick(also_load) + + if(!picklist) //No lateload maps at all + return + + if(!islist(picklist)) //So you can have a 'chain' of z-levels that make up one away mission + error("Randompick Z level [picklist] is not a list! Must be in a list!") + return + + for(var/map in picklist) + if(islist(map)) + // TRIPLE NEST. In this situation we pick one at random from the choices in the list. + //This allows a sort of a1,a2,a3,b1,b2,b3,c1,c2,c3 setup where it picks one 'a', one 'b', one 'c' + map = pick(map) + var/datum/map_template/MT = map_templates[map] + if(!istype(MT)) + error("Randompick Z level \"[map]\" is not a valid map!") + else + MT.load_new_z(centered = FALSE) + /datum/controller/subsystem/mapping/proc/preloadShelterTemplates() for(var/datum/map_template/shelter/shelter_type as anything in subtypesof(/datum/map_template/shelter)) diff --git a/code/game/objects/effects/semirandom_mobs_vr.dm b/code/game/objects/effects/semirandom_mobs_vr.dm index b7008b4627..343401bbf3 100644 --- a/code/game/objects/effects/semirandom_mobs_vr.dm +++ b/code/game/objects/effects/semirandom_mobs_vr.dm @@ -55,7 +55,10 @@ var/global/list/semirandom_mob_spawner_decisions = list() list(/mob/living/simple_mob/animal/passive/yithian), list( /mob/living/simple_mob/animal/wolf = 10, - /mob/living/simple_mob/animal/wolf/direwolf = 1 + /mob/living/simple_mob/animal/wolf/direwolf = 5, + /mob/living/simple_mob/vore/greatwolf = 1, + /mob/living/simple_mob/vore/greatwolf/black = 1, + /mob/living/simple_mob/vore/greatwolf/grey = 1 ), list(/mob/living/simple_mob/vore/rabbit), list(/mob/living/simple_mob/vore/redpanda), @@ -109,12 +112,8 @@ var/global/list/semirandom_mob_spawner_decisions = list() /mob/living/simple_mob/animal/giant_spider/phorogenic = 10, /mob/living/simple_mob/animal/giant_spider/thermic = 5, /mob/living/simple_mob/animal/giant_spider/tunneler = 10, - /mob/living/simple_mob/animal/giant_spider/webslinger = 5 - ), - list( - /mob/living/simple_mob/animal/wolf = 10, - /mob/living/simple_mob/animal/wolf/direwolf = 1 - ), + /mob/living/simple_mob/animal/giant_spider/webslinger = 5, + /mob/living/simple_mob/animal/giant_spider/broodmother = 1), list(/mob/living/simple_mob/creature/strong), list(/mob/living/simple_mob/faithless/strong), list(/mob/living/simple_mob/animal/goat), @@ -244,7 +243,6 @@ var/global/list/semirandom_mob_spawner_decisions = list() list(/mob/living/simple_mob/mechanical/wahlem), list(/mob/living/simple_mob/animal/passive/fox/syndicate), list(/mob/living/simple_mob/animal/passive/fox), - list(/mob/living/simple_mob/animal/wolf/direwolf), list(/mob/living/simple_mob/animal/space/jelly), list( /mob/living/simple_mob/otie/feral, @@ -253,12 +251,12 @@ var/global/list/semirandom_mob_spawner_decisions = list() /mob/living/simple_mob/otie/red/chubby ), list( - /mob/living/simple_mob/shadekin/blue/ai = 100, - /mob/living/simple_mob/shadekin/green/ai = 50, - /mob/living/simple_mob/shadekin/orange/ai = 20, - /mob/living/simple_mob/shadekin/purple/ai = 60, - /mob/living/simple_mob/shadekin/red/ai = 40, - /mob/living/simple_mob/shadekin/yellow/ai = 1 + /mob/living/simple_mob/shadekin/blue = 100, + /mob/living/simple_mob/shadekin/green = 50, + /mob/living/simple_mob/shadekin/orange = 20, + /mob/living/simple_mob/shadekin/purple = 60, + /mob/living/simple_mob/shadekin/red = 40, + /mob/living/simple_mob/shadekin/yellow = 1 ), list( /mob/living/simple_mob/vore/aggressive/corrupthound, @@ -292,7 +290,21 @@ var/global/list/semirandom_mob_spawner_decisions = list() ), list(/mob/living/simple_mob/vore/solargrub), list(/mob/living/simple_mob/vore/woof), - list(/mob/living/simple_mob/vore/alienanimals/teppi) + list(/mob/living/simple_mob/vore/alienanimals/teppi), + list(/mob/living/simple_mob/vore/alienanimals/space_ghost), + list(/mob/living/simple_mob/vore/alienanimals/catslug), + list(/mob/living/simple_mob/vore/alienanimals/space_jellyfish), + list(/mob/living/simple_mob/vore/alienanimals/startreader), + list( + /mob/living/simple_mob/vore/bigdragon, + /mob/living/simple_mob/vore/bigdragon/friendly), + list( + /mob/living/simple_mob/vore/leopardmander = 50, + /mob/living/simple_mob/vore/leopardmander/blue = 10, + /mob/living/simple_mob/vore/leopardmander/exotic = 1 + ), + list(/mob/living/simple_mob/vore/sheep), + list(/mob/living/simple_mob/vore/weretiger) ) /obj/random/mob/semirandom_mob_spawner/item_to_spawn() @@ -363,7 +375,10 @@ var/global/list/semirandom_mob_spawner_decisions = list() list(/mob/living/simple_mob/animal/passive/yithian) = 10, list( /mob/living/simple_mob/animal/wolf = 10, - /mob/living/simple_mob/animal/wolf/direwolf = 1 + /mob/living/simple_mob/animal/wolf/direwolf = 5, + /mob/living/simple_mob/vore/greatwolf = 1, + /mob/living/simple_mob/vore/greatwolf/black = 1, + /mob/living/simple_mob/vore/greatwolf/grey = 1 ) = 10, list(/mob/living/simple_mob/vore/rabbit) = 10, list(/mob/living/simple_mob/vore/redpanda) = 10, @@ -407,7 +422,18 @@ var/global/list/semirandom_mob_spawner_decisions = list() ) = 5, list(/mob/living/simple_mob/animal/sif/siffet) = 5, list(/mob/living/simple_mob/animal/sif/tymisian) = 5, - list(/mob/living/simple_mob/vore/alienanimals/teppi) = 10 + list(/mob/living/simple_mob/vore/alienanimals/teppi) = 10, + list(/mob/living/simple_mob/vore/alienanimals/dustjumper) = 5, + list(/mob/living/simple_mob/vore/alienanimals/space_jellyfish) = 5, + list(/mob/living/simple_mob/vore/alienanimals/space_ghost) = 5, + list( + /mob/living/simple_mob/vore/leopardmander = 50, + /mob/living/simple_mob/vore/leopardmander/blue = 10, + /mob/living/simple_mob/vore/leopardmander/exotic = 1 + ) = 5, + list(/mob/living/simple_mob/vore/sheep) = 5, + list(/mob/living/simple_mob/vore/weretiger) = 5, + list(/mob/living/simple_mob/vore/alienanimals/skeleton) = 5 ) /obj/random/mob/semirandom_mob_spawner/monster @@ -433,14 +459,17 @@ var/global/list/semirandom_mob_spawner_decisions = list() /mob/living/simple_mob/animal/giant_spider/webslinger = 5 ) = 100, list( - /mob/living/simple_mob/shadekin/red/ai = 5, - /mob/living/simple_mob/shadekin/orange/ai = 1, - /mob/living/simple_mob/shadekin/purple/ai = 10 + /mob/living/simple_mob/shadekin/red = 5, + /mob/living/simple_mob/shadekin/orange = 1, + /mob/living/simple_mob/shadekin/purple = 10 ) = 1, list( /mob/living/simple_mob/animal/wolf = 10, - /mob/living/simple_mob/animal/wolf/direwolf = 1, - ) = 80, + /mob/living/simple_mob/animal/wolf/direwolf = 5, + /mob/living/simple_mob/vore/greatwolf = 1, + /mob/living/simple_mob/vore/greatwolf/black = 1, + /mob/living/simple_mob/vore/greatwolf/grey = 1 + ) = 40, list(/mob/living/simple_mob/creature/strong) = 40, list(/mob/living/simple_mob/faithless/strong) = 20, list(/mob/living/simple_mob/animal/goat) = 1, @@ -501,7 +530,18 @@ var/global/list/semirandom_mob_spawner_decisions = list() /mob/living/simple_mob/vore/oregrub = 5, /mob/living/simple_mob/vore/oregrub/lava = 1 ) = 15, - list(/mob/living/simple_mob/vore/alienanimals/teppi) = 15 + list(/mob/living/simple_mob/vore/alienanimals/teppi) = 15, + list(/mob/living/simple_mob/vore/alienanimals/space_jellyfish) = 5, + list(/mob/living/simple_mob/vore/alienanimals/space_ghost) = 5, + list( + /mob/living/simple_mob/vore/leopardmander = 50, + /mob/living/simple_mob/vore/leopardmander/blue = 10, + /mob/living/simple_mob/vore/leopardmander/exotic = 1 + ) = 5, + list(/mob/living/simple_mob/vore/sheep) = 5, + list(/mob/living/simple_mob/vore/weretiger) = 5, + list(/mob/living/simple_mob/vore/alienanimals/skeleton) = 5, + list(/mob/living/simple_mob/vore/alienanimals/catslug) = 5 ) /obj/random/mob/semirandom_mob_spawner/humanoid @@ -512,9 +552,9 @@ var/global/list/semirandom_mob_spawner_decisions = list() possible_mob_types = list( list( - /mob/living/simple_mob/shadekin/blue/ai = 25, - /mob/living/simple_mob/shadekin/green/ai = 10, - /mob/living/simple_mob/shadekin/purple/ai = 1, + /mob/living/simple_mob/shadekin/blue = 25, + /mob/living/simple_mob/shadekin/green = 10, + /mob/living/simple_mob/shadekin/purple = 1, ) = 1, list(/mob/living/simple_mob/vore/catgirl) = 100, list(/mob/living/simple_mob/vore/wolfgirl) = 100, @@ -675,7 +715,12 @@ var/global/list/semirandom_mob_spawner_decisions = list() mob_faction = "vore" possible_mob_types = list( - list(/mob/living/simple_mob/animal/wolf/direwolf) = 100, + list( + /mob/living/simple_mob/animal/wolf/direwolf = 5, + /mob/living/simple_mob/vore/greatwolf = 1, + /mob/living/simple_mob/vore/greatwolf/black = 1, + /mob/living/simple_mob/vore/greatwolf/grey = 1 + ) = 100, list(/mob/living/simple_mob/animal/space/jelly) = 70, list( /mob/living/simple_mob/otie/feral, @@ -684,12 +729,12 @@ var/global/list/semirandom_mob_spawner_decisions = list() /mob/living/simple_mob/otie/red/chubby ) = 50, list( - /mob/living/simple_mob/shadekin/blue/ai = 100, - /mob/living/simple_mob/shadekin/green/ai = 50, - /mob/living/simple_mob/shadekin/orange/ai = 20, - /mob/living/simple_mob/shadekin/purple/ai = 60, - /mob/living/simple_mob/shadekin/red/ai = 40, - /mob/living/simple_mob/shadekin/yellow/ai = 1 + /mob/living/simple_mob/shadekin/blue = 100, + /mob/living/simple_mob/shadekin/green = 50, + /mob/living/simple_mob/shadekin/orange = 20, + /mob/living/simple_mob/shadekin/purple = 60, + /mob/living/simple_mob/shadekin/red = 40, + /mob/living/simple_mob/shadekin/yellow = 1 ) = 1, list( /mob/living/simple_mob/vore/aggressive/corrupthound, diff --git a/code/game/objects/items/devices/denecrotizer_vr.dm b/code/game/objects/items/devices/denecrotizer_vr.dm index 83adeac8b3..ced4911bce 100644 --- a/code/game/objects/items/devices/denecrotizer_vr.dm +++ b/code/game/objects/items/devices/denecrotizer_vr.dm @@ -95,6 +95,10 @@ to_chat(D, "Sorry, someone else has already inhabited [src].") return FALSE + if(capture_caught && !D.client.prefs.capture_crystal) + to_chat(D, "Sorry, [src] is participating in capture mechanics, and your preferences do not allow for that.") + return FALSE + // Insert whatever ban checks you want here if we ever add simplemob bans return TRUE diff --git a/code/game/objects/items/weapons/capture_crystal.dm b/code/game/objects/items/weapons/capture_crystal.dm new file mode 100644 index 0000000000..002b381c81 --- /dev/null +++ b/code/game/objects/items/weapons/capture_crystal.dm @@ -0,0 +1,752 @@ +/obj/item/capture_crystal + name = "Curious Crystal" + desc = "A silent, unassuming crystal in what appears to be some kind of steel housing." + icon = 'icons/obj/capture_crystal_vr.dmi' + icon_state = "inactive" + drop_sound = 'sound/items/drop/ring.ogg' + pickup_sound = 'sound/items/pickup/ring.ogg' + throwforce = 0 + force = 0 + action_button_name = "Command" + + var/active = FALSE //Is it set up? + var/mob/living/owner //Reference to the owner + var/mob/living/bound_mob //Reference to our bound mob + var/spawn_mob_type //The kind of mob an inactive crystal will try to spawn when activated + var/activate_cooldown = 30 SECONDS //How long do we wait between unleashing and recalling + var/last_activate //Automatically set by things that try to move the bound mob or capture things + var/empty_icon = "empty" + var/full_icon = "full" + var/capture_chance_modifier = 1 //So we can have special subtypes with different capture rates! + +/obj/item/capture_crystal/Initialize() + . = ..() + update_icon() + +//Let's make sure we clean up our references and things if the crystal goes away (such as when it's digested) +/obj/item/capture_crystal/Destroy() + if(bound_mob) + if(bound_mob in contents) + unleash() + to_chat(bound_mob, "You feel like yourself again. You are no longer under the influince of \the [src]'s command.") + UnregisterSignal(bound_mob, COMSIG_PARENT_QDELETING) + bound_mob.capture_caught = FALSE + bound_mob = null + if(owner) + UnregisterSignal(owner, COMSIG_PARENT_QDELETING) + owner = null + return ..() + +/obj/item/capture_crystal/examine(user) + . = ..() + if(user == owner && bound_mob) + . += "[bound_mob]'s crystal" + if(isanimal(bound_mob)) + . += "[bound_mob.health / bound_mob.maxHealth * 100]%" + if(bound_mob.ooc_notes) + . += "OOC Notes: \[View\]" + . += "\[Mechanical Vore Preferences\]" + +//Command! This lets the owner toggle hostile on AI controlled mobs, or send a silent command message to your bound mob, wherever they may be. +/obj/item/capture_crystal/ui_action_click() + if(!ismob(loc)) + return + var/mob/living/M = src.loc + if(M != owner) + to_chat(M, "\The [src] emits an unpleasant tone... It does not respond to your command.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(!bound_mob) + to_chat(M, "\The [src] emits an unpleasant tone... There is nothing to command.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(isanimal(bound_mob) && !bound_mob.client) + if(!isnull(bound_mob.get_AI_stance())) + var/datum/ai_holder/AI = bound_mob.ai_holder + AI.hostile = !AI.hostile + if(!AI.hostile) + AI.set_stance(STANCE_IDLE) + to_chat(M, span("notice", "\The [bound_mob] is now [AI.hostile ? "hostile" : "passive"].")) + else if(bound_mob.client) + var/transmit_msg + transmit_msg = sanitizeSafe(input(usr, "What is your command?", "Command", null) as text, MAX_NAME_LEN) + if(isnull(transmit_msg)) + to_chat(M, "You decided against it.") + return + to_chat(bound_mob, "\The [owner] commands, '[transmit_msg]'") + to_chat(M, "Your command has been transmitted, '[transmit_msg]'") + else + to_chat(M, "\The [src] emits an unpleasant tone... \The [bound_mob] is unresponsive.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + +//Lets the owner get AI controlled bound mobs to follow them, or tells player controlled mobs to follow them. +/obj/item/capture_crystal/verb/follow_owner() + set name = "Toggle Follow" + set category = "Object" + set src in usr + if(!ismob(loc)) + return + var/mob/living/M = src.loc + if(M != owner) + to_chat(M, "\The [src] emits an unpleasant tone... It does not respond to your command.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(bound_mob.stat != CONSCIOUS) + to_chat(M, "\The [src] emits an unpleasant tone... \The [bound_mob] is not able to hear your command.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(bound_mob.client) + to_chat(bound_mob, "\The [owner] wishes for you to follow them.") + else if(bound_mob in contents) + var/datum/ai_holder/AI = bound_mob.ai_holder + if(AI.leader) + to_chat(M, "\The [src] chimes~ \The [bound_mob] stopped following [AI.leader].") + AI.lose_follow(AI.leader) + else + AI.set_follow(M) + to_chat(M, "\The [src] chimes~ \The [bound_mob] started following following [AI.leader].") + else if(!(bound_mob in view(M))) + to_chat(M, "\The [src] emits an unpleasant tone... \The [bound_mob] is not able to hear your command.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + var/datum/ai_holder/AI = bound_mob.ai_holder + if(AI.leader) + to_chat(M, "\The [src] chimes~ \The [bound_mob] stopped following [AI.leader].") + AI.lose_follow(AI.leader) + else + AI.set_follow(M) + to_chat(M, "\The [src] chimes~ \The [bound_mob] started following following [AI.leader].") + +/obj/item/capture_crystal/update_icon() + . = ..() + if(spawn_mob_type) + icon_state = full_icon + else if(!bound_mob) + icon_state = "inactive" + else if(bound_mob in contents) + icon_state = full_icon + else + icon_state = empty_icon + if(!cooldown_check()) + icon_state = "[icon_state]-busy" + spawn(activate_cooldown) //If it's busy then we want to wait a bit to fix the sprite after the cooldown is done. + update_icon() + +/obj/item/capture_crystal/proc/cooldown_check() + if(world.time < last_activate + activate_cooldown) + return FALSE + else return TRUE + +/obj/item/capture_crystal/attack(mob/living/M, mob/living/user) + if(bound_mob) + if(!bound_mob.devourable) //Don't eat if prefs are bad + return + if(user.zone_sel.selecting == "mouth") //Click while targetting the mouth and you eat/feed the stored mob to whoever you clicked on + if(bound_mob in contents) + user.visible_message("\The [user] moves \the [src] to [M]'s [M.vore_selected]...") + M.perform_the_nom(M, bound_mob, M, M.vore_selected) + else if(M == user) //You don't have a mob, you ponder the orb instead of trying to capture yourself + user.visible_message("\The [user] ponders \the [src]...", "You ponder \the [src]...") + else if (cooldown_check()) //Try to capture someone without throwing + user.visible_message("\The [user] taps \the [M] with \the [src].") + activate(user, M) + else + to_chat(user, "\The [src] emits an unpleasant tone... It is not ready yet.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + +//Tries to unleash or recall your stored mob +/obj/item/capture_crystal/attack_self(mob/living/user) + if(!cooldown_check()) + to_chat(user, "\The [src] emits an unpleasant tone... It is not ready yet.") + if(bound_mob) + playsound(src, 'sound/effects/capture-crystal-problem.ogg', 75, 1, -1) + else + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(user == bound_mob) //You can't recall yourself + to_chat(user, "\The [src] emits an unpleasant tone... It does not activate for you.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(!active) + activate(user) + else + determine_action(user) + +//Make it so the crystal knows if its mob references get deleted to make sure things get cleaned up +/obj/item/capture_crystal/proc/knowyoursignals(mob/living/M, mob/living/U) + RegisterSignal(M, COMSIG_PARENT_QDELETING, .proc/mob_was_deleted, TRUE) + RegisterSignal(U, COMSIG_PARENT_QDELETING, .proc/owner_was_deleted, TRUE) + +//The basic capture command does most of the registration work. +/obj/item/capture_crystal/proc/capture(mob/living/M, mob/living/U) + if(!M.capture_crystal || M.capture_caught) + to_chat(U, "This creature is not suitable for capture.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + return + knowyoursignals(M, U) + owner = U + if(!bound_mob) + bound_mob = M + bound_mob.capture_caught = TRUE + desc = "A glowing crystal in what appears to be some kind of steel housing." + +//Determines the capture chance! So you can't capture AI mobs if they're perfectly healthy and all that +/obj/item/capture_crystal/proc/capture_chance(mob/living/M, user) + if(capture_chance_modifier >= 100) //Master crystal always work + return 100 + var/capture_chance = ((1 - (M.health / M.maxHealth)) * 100) //Inverted health percent! 100% = 0% + //So I don't know how this works but here's a kind of explanation + //Basic chance + ((Mob's max health - minimum calculated health) / (Max allowed health - Min allowed health)*(Chance at Max allowed health - Chance at minimum allowed health) + capture_chance += 35 + ((M.maxHealth - 5)/ (1000-5)*(-100 - 35)) + //Basically! Mobs over 1000 max health will be unable to be caught without using status effects. + //Thanks Aronai! + var/effect_count = 0 //This will give you a smol chance to capture if you have applied status effects, even if the chance would ordinarily be <0 + if(M.stat == UNCONSCIOUS) + capture_chance += 0.1 + effect_count += 1 + else if(M.stat == CONSCIOUS) + capture_chance *= 0.9 + else + capture_chance = 0 + if(M.weakened) //Haha you fall down + capture_chance += 0.1 + effect_count += 1 + if(M.stunned) //What's the matter??? + capture_chance += 0.1 + effect_count += 1 + if(M.on_fire) //AAAAAAAA + capture_chance += 0.1 + effect_count += 1 + if(M.paralysis) //Oh noooo + capture_chance += 0.1 + effect_count += 1 + if(M.ai_holder.stance == STANCE_IDLE) //SNEAK ATTACK??? + capture_chance += 0.1 + effect_count += 1 + + capture_chance *= capture_chance_modifier + + if(capture_chance <= 0) + capture_chance = 0 + effect_count + if(capture_chance <= 0) + capture_chance = 0 + to_chat(user, "There's no chance... It needs to be weaker.") + + last_activate = world.time + log_and_message_admins("I got [capture_chance].") + return capture_chance + +//Handles checking relevent bans, preferences, and asking the player if they want to be caught +/obj/item/capture_crystal/proc/capture_player(mob/living/M, mob/living/U) + if(jobban_isbanned(M, "GhostRoles")) + to_chat(U, "This creature is not suitable for capture.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(!M.capture_crystal || M.capture_caught) + to_chat(U, "This creature is not suitable for capture.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(tgui_alert(M, "Would you like to be caught by in [src] by [U]? You will be bound to their will.", "Become Caught",list("No","Yes")) == "Yes") + if(tgui_alert(M, "Are you really sure? The only way to undo this is to OOC escape while you're in the crystal.", "Become Caught", list("No","Yes")) == "Yes") + log_admin("[key_name(M)] has agreed to become caught by [key_name(U)].") + capture(M, U) + recall(U) + +//The clean up procs! +/obj/item/capture_crystal/proc/mob_was_deleted() + UnregisterSignal(bound_mob, COMSIG_PARENT_QDELETING) + UnregisterSignal(owner, COMSIG_PARENT_QDELETING) + bound_mob.capture_caught = FALSE + bound_mob = null + owner = null + active = FALSE + update_icon() + +/obj/item/capture_crystal/proc/owner_was_deleted() + UnregisterSignal(owner, COMSIG_PARENT_QDELETING) + owner = null + active = FALSE + update_icon() + +//If the crystal hasn't been set up, it does this +/obj/item/capture_crystal/proc/activate(mob/living/user, target) + if(!cooldown_check()) //Are we ready to do things yet? + to_chat(thrower, "\The [src] clicks unsatisfyingly... It is not ready yet.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(spawn_mob_type && !bound_mob) //We don't already have a mob, but we know what kind of mob we want + bound_mob = new spawn_mob_type(src) //Well let's spawn it then! + bound_mob.faction = user.faction + spawn_mob_type = null + capture(bound_mob, user) + else if(bound_mob) //We have a mob! Let's finish setting up. + user.visible_message("\The [src] clicks, and then emits a small chime.", "\The [src] grows warm in your hand, something inside is awake.") + active = TRUE + if(!owner) //Do we have an owner? It's pretty unlikely that this would ever happen! But it happens, let's claim the crystal. + owner = user + unleash(user, target) + else if(isliving(target)) //So we don't have a mob, let's try to claim one! Is the target a mob? + var/mob/living/M = target + last_activate = world.time + if(M.capture_caught) //Can't capture things that were already caught. + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + to_chat(user, "\The [src] clicks unsatisfyingly... \The [M] is already under someone else's control.") + else if(M.stat == DEAD) //Is it dead? We can't influence dead things. + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + to_chat(user, "\The [src] clicks unsatisfyingly... \The [M] is not in a state to be captured.") + else if(M.client) //Is it player controlled? + capture_player(M, user) //We have to do things a little differently if so. + else if(!isanimal(M)) //So it's not player controlled, but it's also not a simplemob? + to_chat(user, "This creature is not suitable for capture.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + var/mob/living/simple_mob/S = M + if(!S.ai_holder) //We don't really want to capture simplemobs that don't have an AI + to_chat(user, "This creature is not suitable for capture.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(prob(capture_chance(S, user))) //OKAY! So we have an NPC simplemob with an AI, let's calculate its capture chance! It varies based on the mob's condition. + capture(S, user) //We did it! Woo! We capture it! + user.visible_message("\The [src] clicks, and then emits a small chime.", "Alright! \The [S] was caught!") + recall(user) + active = TRUE + else //Shoot, it didn't work and now it's mad!!! + S.ai_holder.go_wake() + S.ai_holder.target = user + S.ai_holder.track_target_position() + S.ai_holder.set_stance(STANCE_FIGHT) + user.visible_message("\The [src] bonks into \the [S], angering it!") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + to_chat(user, "\The [src] clicks unsatisfyingly.") + update_icon() + return + //The target is not a mob, so let's not do anything. + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + to_chat(user, "\The [src] clicks unsatisfyingly.") + +//We're using the crystal, but what will it do? +/obj/item/capture_crystal/proc/determine_action(mob/living/U) + if(!cooldown_check()) //Are we ready yet? + to_chat(thrower, "\The [src] clicks unsatisfyingly... It is not ready yet.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + return //No + if(bound_mob in contents) //Do we have our mob? + unleash(U) //Yes, let's let it out! + else if (bound_mob) //Do we HAVE a mob? + recall(U) //Yes, let's try to put it back in the crystal + else //No we don't have a mob, let's reset the crystal. + to_chat(U, "\The [src] clicks unsatisfyingly.") + active = FALSE + update_icon() + owner = null + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + +//Let's try to call our mob back! +/obj/item/capture_crystal/proc/recall(mob/living/user, atom/target) + if(bound_mob in view(user)) //We can only recall it if we can see it + var/turf/turfmemory = get_turf(bound_mob) + if(isanimal(bound_mob)) + var/mob/living/simple_mob/M = bound_mob + M.ai_holder.go_sleep() //AI doesn't need to think when it's in the crystal + bound_mob.forceMove(src) + last_activate = world.time + bound_mob.visible_message("\The [user]'s [src] flashes, disappearing [bound_mob] in an instant!!!", "\The [src] pulls you back into confinement in a flash of light!!!") + animate_action(turfmemory) + playsound(src, 'sound/effects/capture-crystal-in.ogg', 75, 1, -1) + update_icon() + else + to_chat(user, "\The [src] clicks and emits a small, unpleasant tone. \The [bound_mob] cannot be recalled.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + +//Let's let our mob out! +/obj/item/capture_crystal/proc/unleash(mob/living/user, atom/target) + if(!user && !target) //We got thrown but we're not sure who did it, let's go to where the crystal is + bound_mob.forceMove(src.drop_location()) + return + if(!target) //We know who wants to let us out, but they didn't say where, so let's drop us on them + bound_mob.forceMove(user.drop_location()) + else //We got thrown! Let's go where we got thrown + bound_mob.forceMove(target.drop_location()) + last_activate = world.time + if(isanimal(bound_mob)) + var/mob/living/simple_mob/M = bound_mob + M.ai_holder.go_wake() //Okay it's time to do work, let's wake up! + if(!M.client && !M.ghostjoin) + M.ghostjoin = 1 //Players playing mobs is fun! + bound_mob.faction = owner.faction //Let's make sure we aren't hostile to our owner or their friends + bound_mob.visible_message("\The [user]'s [src] flashes, \the [bound_mob] appears in an instant!!!", "The world around you rematerialize as you are unleashed from the [src] next to \the [user]. You feel a strong compulsion to enact \the [owner]'s will.") + animate_action(get_turf(bound_mob)) + playsound(src, 'sound/effects/capture-crystal-out.ogg', 75, 1, -1) + update_icon() + +//Let's make a flashy sparkle when someone appears or disappears! +/obj/item/capture_crystal/proc/animate_action(atom/thing) + var/image/coolanimation = image('icons/obj/capture_crystal_vr.dmi', null, "animation") + coolanimation.plane = PLANE_LIGHTING_ABOVE + thing.overlays += coolanimation + sleep(11) + thing.overlays -= coolanimation + +//IF the crystal somehow ends up in a tummy and digesting with a bound mob who doesn't want to be eaten, let's move them to the ground +/obj/item/capture_crystal/digest_act(var/atom/movable/item_storage = null) + if(bound_mob in contents && !bound_mob.devourable) + bound_mob.forceMove(src.drop_location()) + return ..() + +//We got thrown! Let's figure out what to do +/obj/item/capture_crystal/throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, datum/callback/callback) + . = ..() + if(target == bound_mob && thrower != bound_mob) //We got thrown at our bound mob (and weren't thrown by the bound mob) let's ignore the cooldown and just put them back in + recall(thrower) + else if(!cooldown_check()) //OTHERWISE let's obey the cooldown + to_chat(thrower, "\The [src] emits an soft tone... It is not ready yet.") + if(bound_mob) + playsound(src, 'sound/effects/capture-crystal-problem.ogg', 75, 1, -1) + else + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(!active) //The ball isn't set up, let's try to set it up. + if(isliving(target)) //We're hitting a mob, let's try to capture it. + sleep(10) + activate(thrower, target) + return + sleep(10) + activate(thrower, src) + else if(!bound_mob) //We hit something else, and we don't have a mob, so we can't really do anything! + to_chat(thrower, "\The [src] clicks unpleasantly...") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + else if(bound_mob in contents) //We have our mob! Let's try to let it out. + sleep(10) + unleash(thrower, src) + update_icon() + else //Our mob isn't here, we can't do anything. + to_chat(thrower, "\The [src] clicks unpleasantly...") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + +/obj/item/capture_crystal/great + capture_chance_modifier = 1.5 + +/obj/item/capture_crystal/ultra + capture_chance_modifier = 2 + +/obj/item/capture_crystal/master + capture_chance_modifier = 100 + +/obj/item/capture_crystal/cass + spawn_mob_type = /mob/living/simple_mob/vore/woof/cass +/obj/item/capture_crystal/adg + spawn_mob_type = /mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced +/obj/item/capture_crystal/bigdragon + spawn_mob_type = /mob/living/simple_mob/vore/bigdragon +/obj/item/capture_crystal/bigdragon/friendly + spawn_mob_type = /mob/living/simple_mob/vore/bigdragon/friendly +/obj/item/capture_crystal/teppi + spawn_mob_type = /mob/living/simple_mob/vore/alienanimals/teppi +/obj/item/capture_crystal/broodmother + spawn_mob_type = /mob/living/simple_mob/animal/giant_spider/broodmother +/obj/item/capture_crystal/skeleton + spawn_mob_type = /mob/living/simple_mob/vore/alienanimals/skeleton +/obj/item/capture_crystal/dustjumper + spawn_mob_type = /mob/living/simple_mob/vore/alienanimals/dustjumper + +/obj/item/capture_crystal/random + var/static/list/possible_mob_types = list( + list(/mob/living/simple_mob/animal/goat), + list( + /mob/living/simple_mob/animal/passive/bird, + /mob/living/simple_mob/animal/passive/bird/azure_tit, + /mob/living/simple_mob/animal/passive/bird/black_bird, + /mob/living/simple_mob/animal/passive/bird/european_robin, + /mob/living/simple_mob/animal/passive/bird/goldcrest, + /mob/living/simple_mob/animal/passive/bird/ringneck_dove, + /mob/living/simple_mob/animal/passive/bird/parrot, + /mob/living/simple_mob/animal/passive/bird/parrot/black_headed_caique, + /mob/living/simple_mob/animal/passive/bird/parrot/budgerigar, + /mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/blue, + /mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/bluegreen, + /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel, + /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/grey, + /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/white, + /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/yellowish, + /mob/living/simple_mob/animal/passive/bird/parrot/eclectus, + /mob/living/simple_mob/animal/passive/bird/parrot/grey_parrot, + /mob/living/simple_mob/animal/passive/bird/parrot/kea, + /mob/living/simple_mob/animal/passive/bird/parrot/pink_cockatoo, + /mob/living/simple_mob/animal/passive/bird/parrot/sulphur_cockatoo, + /mob/living/simple_mob/animal/passive/bird/parrot/white_caique, + /mob/living/simple_mob/animal/passive/bird/parrot/white_cockatoo + ), + list( + /mob/living/simple_mob/animal/passive/cat, + /mob/living/simple_mob/animal/passive/cat/black + ), + list(/mob/living/simple_mob/animal/passive/chick), + list(/mob/living/simple_mob/animal/passive/cow), + list(/mob/living/simple_mob/animal/passive/dog/brittany), + list(/mob/living/simple_mob/animal/passive/dog/corgi), + list(/mob/living/simple_mob/animal/passive/dog/tamaskan), + list(/mob/living/simple_mob/animal/passive/fox), + list(/mob/living/simple_mob/animal/passive/hare), + list(/mob/living/simple_mob/animal/passive/lizard), + list(/mob/living/simple_mob/animal/passive/mouse), + list(/mob/living/simple_mob/animal/passive/mouse/jerboa), + list(/mob/living/simple_mob/animal/passive/opossum), + list(/mob/living/simple_mob/animal/passive/pillbug), + list(/mob/living/simple_mob/animal/passive/snake), + list(/mob/living/simple_mob/animal/passive/tindalos), + list(/mob/living/simple_mob/animal/passive/yithian), + list( + /mob/living/simple_mob/animal/wolf, + /mob/living/simple_mob/animal/wolf/direwolf + ), + list(/mob/living/simple_mob/vore/rabbit), + list(/mob/living/simple_mob/vore/redpanda), + list(/mob/living/simple_mob/vore/woof), + list(/mob/living/simple_mob/vore/fennec), + list(/mob/living/simple_mob/vore/fennix), + list(/mob/living/simple_mob/vore/hippo), + list(/mob/living/simple_mob/vore/horse), + list(/mob/living/simple_mob/vore/bee), + list( + /mob/living/simple_mob/animal/space/bear, + /mob/living/simple_mob/animal/space/bear/brown + ), + list( + /mob/living/simple_mob/otie/feral, + /mob/living/simple_mob/otie/feral/chubby, + /mob/living/simple_mob/otie/red, + /mob/living/simple_mob/otie/red/chubby + ), + list(/mob/living/simple_mob/animal/sif/diyaab), + list(/mob/living/simple_mob/animal/sif/duck), + list(/mob/living/simple_mob/animal/sif/frostfly), + list( + /mob/living/simple_mob/animal/sif/glitterfly =50, + /mob/living/simple_mob/animal/sif/glitterfly/rare = 1 + ), + list( + /mob/living/simple_mob/animal/sif/kururak = 10, + /mob/living/simple_mob/animal/sif/kururak/leader = 1, + /mob/living/simple_mob/animal/sif/kururak/hibernate = 2, + ), + list( + /mob/living/simple_mob/animal/sif/sakimm = 10, + /mob/living/simple_mob/animal/sif/sakimm/intelligent = 1 + ), + list(/mob/living/simple_mob/animal/sif/savik) = 5, + list( + /mob/living/simple_mob/animal/sif/shantak = 10, + /mob/living/simple_mob/animal/sif/shantak/leader = 1 + ), + list(/mob/living/simple_mob/animal/sif/siffet), + list(/mob/living/simple_mob/animal/sif/tymisian), + list( + /mob/living/simple_mob/animal/giant_spider/nurse = 10, + /mob/living/simple_mob/animal/giant_spider/electric = 5, + /mob/living/simple_mob/animal/giant_spider/frost = 5, + /mob/living/simple_mob/animal/giant_spider/hunter = 10, + /mob/living/simple_mob/animal/giant_spider/ion = 5, + /mob/living/simple_mob/animal/giant_spider/lurker = 10, + /mob/living/simple_mob/animal/giant_spider/pepper = 10, + /mob/living/simple_mob/animal/giant_spider/phorogenic = 10, + /mob/living/simple_mob/animal/giant_spider/thermic = 5, + /mob/living/simple_mob/animal/giant_spider/tunneler = 10, + /mob/living/simple_mob/animal/giant_spider/webslinger = 5, + /mob/living/simple_mob/animal/giant_spider/broodmother = 1), + list( + /mob/living/simple_mob/animal/wolf = 10, + /mob/living/simple_mob/animal/wolf/direwolf = 5, + /mob/living/simple_mob/vore/greatwolf = 1, + /mob/living/simple_mob/vore/greatwolf/black = 1, + /mob/living/simple_mob/vore/greatwolf/grey = 1 + ), + list(/mob/living/simple_mob/creature/strong), + list(/mob/living/simple_mob/faithless/strong), + list(/mob/living/simple_mob/animal/goat), + list( + /mob/living/simple_mob/animal/sif/shantak/leader = 1, + /mob/living/simple_mob/animal/sif/shantak = 10), + list(/mob/living/simple_mob/animal/sif/savik,), + list(/mob/living/simple_mob/animal/sif/hooligan_crab), + list( + /mob/living/simple_mob/animal/space/alien = 50, + /mob/living/simple_mob/animal/space/alien/drone = 40, + /mob/living/simple_mob/animal/space/alien/sentinel = 25, + /mob/living/simple_mob/animal/space/alien/sentinel/praetorian = 15, + /mob/living/simple_mob/animal/space/alien/queen = 10, + /mob/living/simple_mob/animal/space/alien/queen/empress = 5, + /mob/living/simple_mob/animal/space/alien/queen/empress/mother = 1 + ), + list(/mob/living/simple_mob/animal/space/bats/cult/strong), + list( + /mob/living/simple_mob/animal/space/bear, + /mob/living/simple_mob/animal/space/bear/brown + ), + list( + /mob/living/simple_mob/animal/space/carp = 50, + /mob/living/simple_mob/animal/space/carp/large = 10, + /mob/living/simple_mob/animal/space/carp/large/huge = 5 + ), + list(/mob/living/simple_mob/animal/space/goose), + list(/mob/living/simple_mob/animal/space/jelly), + list(/mob/living/simple_mob/animal/space/tree), + list( + /mob/living/simple_mob/vore/aggressive/corrupthound = 10, + /mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi = 1, + ), + list(/mob/living/simple_mob/vore/aggressive/deathclaw), + list(/mob/living/simple_mob/vore/aggressive/dino), + list(/mob/living/simple_mob/vore/aggressive/dragon), + list(/mob/living/simple_mob/vore/aggressive/dragon/virgo3b), + list(/mob/living/simple_mob/vore/aggressive/frog), + list(/mob/living/simple_mob/vore/aggressive/giant_snake), + list(/mob/living/simple_mob/vore/aggressive/mimic), + list(/mob/living/simple_mob/vore/aggressive/panther), + list(/mob/living/simple_mob/vore/aggressive/rat), + list(/mob/living/simple_mob/vore/bee), + list( + /mob/living/simple_mob/vore/sect_drone = 10, + /mob/living/simple_mob/vore/sect_queen = 1 + ), + list(/mob/living/simple_mob/vore/solargrub), + list( + /mob/living/simple_mob/vore/oregrub = 5, + /mob/living/simple_mob/vore/oregrub/lava = 1 + ), + list(/mob/living/simple_mob/vore/catgirl), + list(/mob/living/simple_mob/vore/wolfgirl), + list( + /mob/living/simple_mob/vore/lamia, + /mob/living/simple_mob/vore/lamia/albino, + /mob/living/simple_mob/vore/lamia/albino/bra, + /mob/living/simple_mob/vore/lamia/albino/shirt, + /mob/living/simple_mob/vore/lamia/bra, + /mob/living/simple_mob/vore/lamia/cobra, + /mob/living/simple_mob/vore/lamia/cobra/bra, + /mob/living/simple_mob/vore/lamia/cobra/shirt, + /mob/living/simple_mob/vore/lamia/copper, + /mob/living/simple_mob/vore/lamia/copper/bra, + /mob/living/simple_mob/vore/lamia/copper/shirt, + /mob/living/simple_mob/vore/lamia/green, + /mob/living/simple_mob/vore/lamia/green/bra, + /mob/living/simple_mob/vore/lamia/green/shirt, + /mob/living/simple_mob/vore/lamia/zebra, + /mob/living/simple_mob/vore/lamia/zebra/bra, + /mob/living/simple_mob/vore/lamia/zebra/shirt + ), + list( + /mob/living/simple_mob/humanoid/merc = 100, + /mob/living/simple_mob/humanoid/merc/melee/sword = 50, + /mob/living/simple_mob/humanoid/merc/ranged = 25, + /mob/living/simple_mob/humanoid/merc/ranged/grenadier = 1, + /mob/living/simple_mob/humanoid/merc/ranged/ionrifle = 10, + /mob/living/simple_mob/humanoid/merc/ranged/laser = 5, + /mob/living/simple_mob/humanoid/merc/ranged/rifle = 5, + /mob/living/simple_mob/humanoid/merc/ranged/smg = 5, + /mob/living/simple_mob/humanoid/merc/ranged/sniper = 1, + /mob/living/simple_mob/humanoid/merc/ranged/space = 10, + /mob/living/simple_mob/humanoid/merc/ranged/technician = 5 + ), + list( + /mob/living/simple_mob/humanoid/pirate = 3, + /mob/living/simple_mob/humanoid/pirate/ranged = 1 + ), + list(/mob/living/simple_mob/mechanical/combat_drone), + list(/mob/living/simple_mob/mechanical/corrupt_maint_drone), + list( + /mob/living/simple_mob/mechanical/hivebot = 100, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage = 20, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/backline = 10, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/basic = 20, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/dot = 5, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion = 20, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser = 10, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/rapid = 2, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege = 1, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/emp = 5, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/fragmentation = 1, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/radiation = 1, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong = 3, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong/guard = 3, + /mob/living/simple_mob/mechanical/hivebot/support = 8, + /mob/living/simple_mob/mechanical/hivebot/support/commander = 5, + /mob/living/simple_mob/mechanical/hivebot/support/commander/autofollow = 10, + /mob/living/simple_mob/mechanical/hivebot/swarm = 20, + /mob/living/simple_mob/mechanical/hivebot/tank = 20, + /mob/living/simple_mob/mechanical/hivebot/tank/armored = 20, + /mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_bullet = 20, + /mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_laser = 20, + /mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_melee = 20, + /mob/living/simple_mob/mechanical/hivebot/tank/meatshield = 20 + ), + list(/mob/living/simple_mob/mechanical/infectionbot), + list(/mob/living/simple_mob/mechanical/mining_drone), + list(/mob/living/simple_mob/mechanical/technomancer_golem), + list( + /mob/living/simple_mob/mechanical/viscerator, + /mob/living/simple_mob/mechanical/viscerator/piercing + ), + list(/mob/living/simple_mob/mechanical/wahlem), + list(/mob/living/simple_mob/animal/passive/fox/syndicate), + list(/mob/living/simple_mob/animal/passive/fox), + list(/mob/living/simple_mob/animal/wolf/direwolf), + list(/mob/living/simple_mob/animal/space/jelly), + list( + /mob/living/simple_mob/otie/feral, + /mob/living/simple_mob/otie/feral/chubby, + /mob/living/simple_mob/otie/red, + /mob/living/simple_mob/otie/red/chubby + ), + list( + /mob/living/simple_mob/shadekin/blue = 100, + /mob/living/simple_mob/shadekin/green = 50, + /mob/living/simple_mob/shadekin/orange = 20, + /mob/living/simple_mob/shadekin/purple = 60, + /mob/living/simple_mob/shadekin/red = 40, + /mob/living/simple_mob/shadekin/yellow = 1 + ), + list( + /mob/living/simple_mob/vore/aggressive/corrupthound, + /mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi + ), + list(/mob/living/simple_mob/vore/aggressive/deathclaw), + list(/mob/living/simple_mob/vore/aggressive/dino), + list(/mob/living/simple_mob/vore/aggressive/dragon), + list(/mob/living/simple_mob/vore/aggressive/dragon/virgo3b), + list(/mob/living/simple_mob/vore/aggressive/frog), + list(/mob/living/simple_mob/vore/aggressive/giant_snake), + list(/mob/living/simple_mob/vore/aggressive/mimic), + list(/mob/living/simple_mob/vore/aggressive/panther), + list(/mob/living/simple_mob/vore/aggressive/rat), + list(/mob/living/simple_mob/vore/bee), + list(/mob/living/simple_mob/vore/catgirl), + list(/mob/living/simple_mob/vore/cookiegirl), + list(/mob/living/simple_mob/vore/fennec), + list(/mob/living/simple_mob/vore/fennix), + list(/mob/living/simple_mob/vore/hippo), + list(/mob/living/simple_mob/vore/horse), + list(/mob/living/simple_mob/vore/oregrub), + list(/mob/living/simple_mob/vore/rabbit), + list( + /mob/living/simple_mob/vore/redpanda = 50, + /mob/living/simple_mob/vore/redpanda/fae = 1 + ), + list( + /mob/living/simple_mob/vore/sect_drone = 10, + /mob/living/simple_mob/vore/sect_queen = 1 + ), + list(/mob/living/simple_mob/vore/solargrub), + list(/mob/living/simple_mob/vore/woof), + list(/mob/living/simple_mob/vore/alienanimals/teppi), + list(/mob/living/simple_mob/vore/alienanimals/space_ghost), + list(/mob/living/simple_mob/vore/alienanimals/catslug), + list(/mob/living/simple_mob/vore/alienanimals/space_jellyfish), + list(/mob/living/simple_mob/vore/alienanimals/startreader), + list(/mob/living/simple_mob/vore/bigdragon), + list( + /mob/living/simple_mob/vore/leopardmander = 50, + /mob/living/simple_mob/vore/leopardmander/blue = 10, + /mob/living/simple_mob/vore/leopardmander/exotic = 1 + ), + list(/mob/living/simple_mob/vore/sheep), + list(/mob/living/simple_mob/vore/weretiger), + list(/mob/living/simple_mob/vore/alienanimals/skeleton), + list(/mob/living/simple_mob/vore/alienanimals/dustjumper) + ) + +/obj/item/capture_crystal/random/Initialize() + var/subchoice = pickweight(possible_mob_types) //Some of the lists have nested lists, so let's pick one of them + var/choice = pickweight(subchoice) //And then we'll pick something from whatever's left + spawn_mob_type = choice //Now when someone uses this, we'll spawn whatever we picked! + return ..() + +/mob/living + var/capture_crystal = TRUE //If TRUE, the mob is capturable. Otherwise it isn't. + var/capture_caught = FALSE //If TRUE, the mob has already been caught, and so cannot be caught again. \ No newline at end of file diff --git a/code/game/objects/random/misc_vr.dm b/code/game/objects/random/misc_vr.dm index 0d3a17c23f..9030e874ac 100644 --- a/code/game/objects/random/misc_vr.dm +++ b/code/game/objects/random/misc_vr.dm @@ -23,6 +23,7 @@ prob(30);/obj/item/weapon/aliencoin/gold, prob(20);/obj/item/weapon/aliencoin/phoron, prob(10);/obj/item/device/denecrotizer, + prob(5);/obj/item/capture_crystal, prob(5);/obj/item/device/perfect_tele, prob(5);/obj/item/weapon/bluespace_harpoon, prob(1);/obj/item/weapon/cell/infinite, @@ -43,9 +44,59 @@ prob(3);/obj/fiftyspawner/silver, prob(1);/obj/fiftyspawner/diamond, prob(5);/obj/fiftyspawner/phoron, - prob(1);/obj/item/weapon/telecube/randomized + prob(1);/obj/item/weapon/telecube/randomized, + prob(1);/obj/item/capture_crystal/random ) /obj/random/awayloot/nofail name = "garunteed random away mission loot" spawn_nothing_percentage = 0 + +/obj/random/awayloot/looseloot +/obj/random/awayloot/looseloot/item_to_spawn() + return pick(prob(50);/obj/item/weapon/aliencoin, + prob(40);/obj/item/weapon/aliencoin/silver, + prob(30);/obj/item/weapon/aliencoin/gold, + prob(20);/obj/item/weapon/aliencoin/phoron, + prob(10);/obj/item/device/denecrotizer, + prob(5);/obj/item/capture_crystal, + prob(3);/obj/item/capture_crystal/great, + prob(1);/obj/item/capture_crystal/ultra, + prob(4);/obj/item/capture_crystal/random, + prob(5);/obj/item/device/perfect_tele, + prob(5);/obj/item/weapon/bluespace_harpoon, + prob(1);/obj/item/weapon/cell/infinite, + prob(1);/obj/item/weapon/cell/void, + prob(1);/obj/item/weapon/cell/device/weapon/recharge/alien, + prob(1);/obj/item/clothing/shoes/boots/speed, + prob(1);/obj/item/device/nif, + prob(1);/obj/item/device/paicard, + prob(2);/obj/item/weapon/storage/backpack/dufflebag/syndie, + prob(2);/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo, + prob(2);/obj/item/weapon/storage/backpack/dufflebag/syndie/med, + prob(2);/obj/item/clothing/mask/gas/voice, + prob(2);/obj/item/device/radio_jammer, + prob(1);/obj/item/toy/bosunwhistle, + prob(1);/obj/item/weapon/bananapeel, + prob(5);/obj/fiftyspawner/platinum, + prob(3);/obj/fiftyspawner/gold, + prob(3);/obj/fiftyspawner/silver, + prob(1);/obj/fiftyspawner/diamond, + prob(5);/obj/fiftyspawner/phoron, + prob(1);/obj/item/weapon/telecube/randomized, + prob(10);/obj/random/empty_or_lootable_crate, + prob(10);/obj/random/medical, + prob(5);/obj/random/firstaid, + prob(30);/obj/random/maintenance, + prob(10);/obj/random/mre, + prob(15);/obj/random/snack, + prob(10);/obj/random/tech_supply, + prob(15);/obj/random/tech_supply/component, + prob(10);/obj/random/tool, + prob(5);/obj/random/tool/power, + prob(1);/obj/random/tool/alien, + prob(5);/obj/random/weapon, + prob(5);/obj/random/ammo_all, + prob(3);/obj/random/projectile/random, + prob(5);/obj/random/multiple/voidsuit + ) diff --git a/code/game/objects/structures/flora/flora.dm b/code/game/objects/structures/flora/flora.dm index 96795f446d..4780c89f36 100644 --- a/code/game/objects/structures/flora/flora.dm +++ b/code/game/objects/structures/flora/flora.dm @@ -450,6 +450,43 @@ desc = "This is a tiny well lit decorative christmas tree." icon_state = "plant-xmas" +/obj/random/pottedplant + name = "random potted plant" + desc = "This is a random potted plant." + +/obj/random/pottedplant/item_to_spawn() + return pick( + prob(10);/obj/structure/flora/pottedplant, + prob(10);/obj/structure/flora/pottedplant/large, + prob(10);/obj/structure/flora/pottedplant/fern, + prob(10);/obj/structure/flora/pottedplant/overgrown, + prob(10);/obj/structure/flora/pottedplant/bamboo, + prob(10);/obj/structure/flora/pottedplant/largebush, + prob(10);/obj/structure/flora/pottedplant/thinbush, + prob(10);/obj/structure/flora/pottedplant/mysterious, + prob(10);/obj/structure/flora/pottedplant/smalltree, + prob(10);/obj/structure/flora/pottedplant/unusual, + prob(10);/obj/structure/flora/pottedplant/orientaltree, + prob(10);/obj/structure/flora/pottedplant/smallcactus, + prob(10);/obj/structure/flora/pottedplant/tall, + prob(10);/obj/structure/flora/pottedplant/sticky, + prob(10);/obj/structure/flora/pottedplant/smelly, + prob(10);/obj/structure/flora/pottedplant/small, + prob(10);/obj/structure/flora/pottedplant/aquatic, + prob(10);/obj/structure/flora/pottedplant/shoot, + prob(10);/obj/structure/flora/pottedplant/flower, + prob(10);/obj/structure/flora/pottedplant/crystal, + prob(10);/obj/structure/flora/pottedplant/subterranean, + prob(10);/obj/structure/flora/pottedplant/minitree, + prob(10);/obj/structure/flora/pottedplant/stoutbush, + prob(10);/obj/structure/flora/pottedplant/drooping, + prob(10);/obj/structure/flora/pottedplant/tropical, + prob(10);/obj/structure/flora/pottedplant/dead, + prob(10);/obj/structure/flora/pottedplant/decorative, + prob(1);/obj/structure/flora/pottedplant/xmas + ) + + /obj/structure/flora/sif icon = 'icons/obj/flora/sifflora.dmi' diff --git a/code/game/objects/structures/trash_pile_vr.dm b/code/game/objects/structures/trash_pile_vr.dm index 459f907195..a646583e34 100644 --- a/code/game/objects/structures/trash_pile_vr.dm +++ b/code/game/objects/structures/trash_pile_vr.dm @@ -263,7 +263,8 @@ prob(1);/obj/item/weapon/storage/box/survival/space, prob(1);/obj/item/weapon/storage/secure/briefcase/trashmoney, prob(1);/obj/item/device/survivalcapsule/popcabin, - prob(1);/obj/item/weapon/reagent_containers/syringe/steroid) + prob(1);/obj/item/weapon/reagent_containers/syringe/steroid, + prob(1);/obj/item/capture_crystal) var/obj/item/I = new path() return I diff --git a/code/game/turfs/weird_turfs_vr.dm b/code/game/turfs/weird_turfs_vr.dm new file mode 100644 index 0000000000..b1ef1fa4fb --- /dev/null +++ b/code/game/turfs/weird_turfs_vr.dm @@ -0,0 +1,131 @@ +/turf/simulated/floor/weird_things + icon = 'icons/turf/flooring/weird_vr.dmi' + +/turf/simulated/floor/weird_things/dark + name = "dark" + desc = "It's a strange, impenetrable darkness." + icon_state = "dark" + can_dirty = FALSE + +/turf/simulated/floor/weird_things/dark/Initialize(mapload) + . = ..() + if(prob(5)) + add_glow() + +/turf/simulated/floor/weird_things/dark/Crossed(O) + . = ..() + if(!isliving(O)) + return + cut_overlays() + if(prob(5)) + add_glow() + if(istype(O, /mob/living/carbon/human)) + var/mob/living/carbon/human/L = O + if(istype(L.species, /datum/species/crew_shadekin)) + L.halloss += 5 + if(prob(50)) + to_chat(L, "The more you move through this darkness, the more you can feel a throbbing, shooting ache in your bones.") + if(prob(5)) + L.visible_message("[L]'s body gives off a faint, sparking, haze...", "Your body gives off a faint, sparking, haze...", runemessage = "gives off a faint, sparking haze") + else if(istype(L.species, /datum/species/shadekin)) + var/obj/item/organ/internal/brain/shadekin/B = L.internal_organs_by_name["brain"] + B.dark_energy += 10 + if(prob(10)) + to_chat(L, "You can feel the energy flowing into you!") + else + if(prob(0.25)) + to_chat(L, "The darkness seethes under your feet...") + L.hallucination += 50 + +/turf/simulated/floor/weird_things/dark/proc/add_glow() + var/choice = "overlay-[rand(1,6)]" + var/image/i = image('icons/turf/flooring/weird_vr.dmi', choice) + i.plane = PLANE_LIGHTING_ABOVE + add_overlay(i) + +/turf/simulated/floor/weird_things/dark/ChangeTurf() + . = ..() + cut_overlays() + +/turf/unsimulated/wall/dark + name = "dark" + desc = "It's a strange, impenetrable darkness." + icon = 'icons/turf/flooring/weird_vr.dmi' + icon_state = "dark" + +/turf/unsimulated/wall/dark/Initialize(mapload) + . = ..() + if(prob(5)) + add_glow() + +/turf/unsimulated/wall/dark/proc/add_glow() + var/choice = "overlay-[rand(1,6)]" + var/image/i = image('icons/turf/flooring/weird_vr.dmi', choice) + i.plane = PLANE_LIGHTING_ABOVE + add_overlay(i) + +/turf/unsimulated/wall/dark/ChangeTurf() + . = ..() + cut_overlays() + + +/turf/unsimulated/floor/dark + name = "dark" + desc = "It's a strange, impenetrable darkness." + icon = 'icons/turf/flooring/weird_vr.dmi' + icon_state = "dark" + +/turf/unsimulated/floor/dark/Initialize(mapload) + . = ..() + if(prob(5)) + add_glow() + +/turf/unsimulated/floor/dark/Crossed(O) + . = ..() + if(!isliving(O)) + return + cut_overlays() + if(prob(5)) + add_glow() + if(istype(O, /mob/living/carbon/human)) + var/mob/living/carbon/human/L = O + if(istype(L.species, /datum/species/crew_shadekin)) + L.halloss += 5 + if(prob(50)) + to_chat(L, "The more you move through this darkness, the more you can feel a throbbing, shooting ache in your bones.") + if(prob(5)) + L.visible_message("[L]'s body gives off a faint, sparking, haze...", "Your body gives off a faint, sparking, haze...", runemessage = "gives off a faint, sparking haze") + else if(istype(L.species, /datum/species/shadekin)) + var/obj/item/organ/internal/brain/shadekin/B = L.internal_organs_by_name["brain"] + B.dark_energy += 10 + if(prob(10)) + to_chat(L, "You can feel the energy flowing into you!") + else + if(prob(0.25)) + to_chat(L, "The darkness seethes under your feet...") + L.hallucination += 50 + +/turf/unsimulated/floor/dark/proc/add_glow() + var/flip = rand(1,2) + var/choice + var/choiceb + if(flip == 1) + choice = "overlay-[rand(1,6)]" + if(flip == 2) + choice = "overlay-[rand(7,12)]" + var/image/i = image('icons/turf/flooring/weird_vr.dmi', choice) + i.plane = PLANE_LIGHTING_ABOVE + add_overlay(i) + if(prob(10)) + if(flip == 1) + choiceb = "overlay-[rand(7,12)]" + if(flip == 2) + choiceb = "overlay-[rand(1,6)]" + var/image/ii = image('icons/turf/flooring/weird_vr.dmi', choiceb) + add_overlay(ii) + + + +/turf/unsimulated/floor/dark/ChangeTurf() + . = ..() + cut_overlays() \ No newline at end of file diff --git a/code/modules/admin/verbs/smite_vr.dm b/code/modules/admin/verbs/smite_vr.dm index 51e4411906..750a8c0bea 100644 --- a/code/modules/admin/verbs/smite_vr.dm +++ b/code/modules/admin/verbs/smite_vr.dm @@ -34,7 +34,7 @@ if(!Ts) return //Didn't find shadekin spawn turf - var/mob/living/simple_mob/shadekin/red/ai/shadekin = new(Ts) + var/mob/living/simple_mob/shadekin/red/shadekin = new(Ts) //Abuse of shadekin shadekin.real_name = shadekin.name shadekin.init_vore() diff --git a/code/modules/client/preference_setup/vore/09_misc.dm b/code/modules/client/preference_setup/vore/09_misc.dm index 2273cc586b..8f3d467ff5 100644 --- a/code/modules/client/preference_setup/vore/09_misc.dm +++ b/code/modules/client/preference_setup/vore/09_misc.dm @@ -8,6 +8,7 @@ S["directory_erptag"] >> pref.directory_erptag S["directory_ad"] >> pref.directory_ad S["sensorpref"] >> pref.sensorpref + S["capture_crystal"] >> pref.capture_crystal /datum/category_item/player_setup_item/vore/misc/save_character(var/savefile/S) S["show_in_directory"] << pref.show_in_directory @@ -15,17 +16,21 @@ S["directory_erptag"] << pref.directory_erptag S["directory_ad"] << pref.directory_ad S["sensorpref"] << pref.sensorpref + S["capture_crystal"] << pref.capture_crystal + /datum/category_item/player_setup_item/vore/misc/copy_to_mob(var/mob/living/carbon/human/character) if(pref.sensorpref > 5 || pref.sensorpref < 1) pref.sensorpref = 5 character.sensorpref = pref.sensorpref + character.capture_crystal = pref.capture_crystal /datum/category_item/player_setup_item/vore/misc/sanitize_character() pref.show_in_directory = sanitize_integer(pref.show_in_directory, 0, 1, initial(pref.show_in_directory)) pref.directory_tag = sanitize_inlist(pref.directory_tag, GLOB.char_directory_tags, initial(pref.directory_tag)) pref.directory_erptag = sanitize_inlist(pref.directory_erptag, GLOB.char_directory_erptags, initial(pref.directory_erptag)) pref.sensorpref = sanitize_integer(pref.sensorpref, 1, sensorpreflist.len, initial(pref.sensorpref)) + pref.capture_crystal = sanitize_integer(pref.capture_crystal, 0, 1, initial(pref.capture_crystal)) /datum/category_item/player_setup_item/vore/misc/content(var/mob/user) . += "
" @@ -34,6 +39,7 @@ . += "Character Directory ERP Tag: [pref.directory_erptag]
" . += "Character Directory Advertisement: Set Directory Ad
" . += "Suit Sensors Preference: [sensorpreflist[pref.sensorpref]]
" + . += "Capture Crystal Preference [pref.capture_crystal ? "Yes" : "No"]
" /datum/category_item/player_setup_item/vore/misc/OnTopic(var/href, var/list/href_list, var/mob/user) if(href_list["toggle_show_in_directory"]) @@ -60,4 +66,8 @@ if (!isnull(new_sensorpref) && CanUseTopic(user)) pref.sensorpref = sensorpreflist.Find(new_sensorpref) return TOPIC_REFRESH + else if(href_list["toggle_capture_crystal"]) + pref.capture_crystal = pref.capture_crystal ? 0 : 1; + return TOPIC_REFRESH + return ..(); diff --git a/code/modules/client/preferences_vr.dm b/code/modules/client/preferences_vr.dm index 5dda608597..1e8f8013df 100644 --- a/code/modules/client/preferences_vr.dm +++ b/code/modules/client/preferences_vr.dm @@ -4,6 +4,11 @@ var/directory_erptag = "Unset" //ditto, but for non-vore scenes var/directory_ad = "" //Advertisement stuff to show in character directory. var/sensorpref = 5 //Set character's suit sensor level +<<<<<<< HEAD +======= + var/capture_crystal = 1 //Whether or not someone is able to be caught with capture crystals + +>>>>>>> 60011ecd0b... Merge pull request #11928 from Very-Soft/whalesandcrystals var/job_talon_high = 0 var/job_talon_med = 0 var/job_talon_low = 0 @@ -71,7 +76,7 @@ feedback_add_details("admin_verb","TEmoteNoise") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/verb/toggle_ghost_quiets() - set name = "Toggle Whisper/Subtle Vis" + set name = "Toggle Ghost Privacy" set category = "Preferences" set desc = "Toggle ghosts viewing your subtles/whispers." @@ -84,3 +89,22 @@ SScharacter_setup.queue_preferences_save(prefs) feedback_add_details("admin_verb","TWhisubtleVis") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/verb/toggle_capture_crystal() + set name = "Toggle Catchable" + set category = "Preferences" + set desc = "Toggle being catchable with capture crystals." + + var/mob/living/L = mob + + if(prefs.capture_crystal) + to_chat(src, "You are no longer catchable.") + prefs.capture_crystal = 0 + else + to_chat(src, "You are now catchable.") + prefs.capture_crystal = 1 + if(L) + L.capture_crystal = prefs.capture_crystal + SScharacter_setup.queue_preferences_save(prefs) + + feedback_add_details("admin_verb","TCaptureCrystal") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! \ No newline at end of file diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index b3ccb1898e..f451b2b38c 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -70,6 +70,7 @@ if(stat == DEAD) return 0 + SEND_SIGNAL(src, COMSIG_MOB_DEATH, gibbed) if(src.loc && istype(loc,/obj/belly) || istype(loc,/obj/item/device/dogborg/sleeper)) deathmessage = "no message" //VOREStation Add - Prevents death messages from inside mobs facing_dir = null diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 5b2d45a29e..1ad95b35fd 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -19,8 +19,9 @@ selected_image = image(icon = buildmode_hud, loc = src, icon_state = "ai_sel") /mob/living/Destroy() - dsoverlay.loc = null //I'll take my coat with me - dsoverlay = null + if(dsoverlay) + dsoverlay.loc = null //I'll take my coat with me + dsoverlay = null if(nest) //Ew. if(istype(nest, /obj/structure/prop/nest)) var/obj/structure/prop/nest/N = nest diff --git a/code/modules/mob/living/simple_mob/overmap_mob_vr.dm b/code/modules/mob/living/simple_mob/overmap_mob_vr.dm new file mode 100644 index 0000000000..d9b544cc73 --- /dev/null +++ b/code/modules/mob/living/simple_mob/overmap_mob_vr.dm @@ -0,0 +1,112 @@ +//So this is a bit weird, but I tried to make this as adaptable as I could +//There are two working parts of an overmap mob, but I made it look like there is only one as far as the players are concerned. +//The /obj/effect/overmap/visitable/simplemob is the part people will actually see. It follows the mob around and changes dir to look as mob-ish as it can. +//The /mob/living/simple_mob/vore/overmap is NOT VISIBLE normally, and is the part that actually does the work most of the time. +//Being a simplemob, the mob can wander around and affect the overmap in whatever way you might desire. +//Whatever it does, the /visitable/simplemob will follow it, and does all the functional parts relating to the OM +//including scanning, and housing Z levels people might land on. + +//The MOB being invisible presents some problems though, which I am not entirely sure how to resolve +//Such as, being unable to be attacked by other mobs, and possibly unable to be attacked by players. +//This does not at all prevent the mob from attacking other things though +//so in general, please ensure that you never spawn these where players can ordinarily access them. + +//The mob was made invisible though, because the sensors can't detect invisible objects, so when the /visitable/simplemob was made invisible +//it refused to show up on sensors, and a few simple changes to the sensors didn't rectify this. So, rather than adding in more spaghetti to make +//simplemobs scannable (WHICH I DID, AND IT WORKED SOMEHOW), Aronai and I found that this was the better solution for making all the parts function like I'd like. +//Since I also want it to be possible to land on the overmap object. + +/////OM LANDMARK///// +/obj/effect/overmap/visitable/simplemob + name = "unknown ship" + icon = 'icons/obj/overmap.dmi' + icon_state = "ship" + scannable = TRUE + known = FALSE + in_space = FALSE //Just cuz we don't want people getting here via map edge transitions normally. + unknown_name = "unknown ship" + unknown_state = "ship" + + var/mob/living/simple_mob/vore/overmap/parent_mob_type + var/mob/living/simple_mob/vore/overmap/parent + +/obj/effect/overmap/visitable/simplemob/New(newloc, new_parent) + if(new_parent) + parent = new_parent + return ..() + +/obj/effect/overmap/visitable/simplemob/Initialize() + . = ..() + if(!parent_mob_type && !parent) + log_and_message_admins("An improperly configured OM mob event tried to spawn, and was deleted.") + return INITIALIZE_HINT_QDEL + if(!parent) + var/mob/living/simple_mob/vore/overmap/P = new parent_mob_type(loc, src) + parent = P + om_mob_event_setup() + +/obj/effect/overmap/visitable/simplemob/proc/om_mob_event_setup() + scanner_desc = parent.scanner_desc + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_parent_moved) + skybox_pixel_x = rand(-100,100) + if(known) + name = initial(parent.name) + icon = initial(parent.icon) + icon_state = initial(parent.icon_state) + color = initial(parent.color) + desc = initial(parent.desc) + +/obj/effect/overmap/visitable/simplemob/Destroy() + UnregisterSignal(parent, COMSIG_MOVABLE_MOVED) + qdel_null(parent) + return ..() + +/obj/effect/overmap/visitable/simplemob/get_scan_data(mob/user) + if(!known) + known = TRUE + name = initial(parent.name) + icon = initial(parent.icon) + icon_state = initial(parent.icon_state) + color = initial(parent.color) + desc = initial(parent.desc) + + var/dat = {"\[b\]Scan conducted at\[/b\]: [stationtime2text()] [stationdate2text()]\n\[b\]Grid coordinates\[/b\]: [x],[y]\n\n[scanner_desc]"} + + return dat + +/obj/effect/overmap/visitable/simplemob/proc/on_parent_moved(atom/movable/source, OldLoc, Dir, Forced) + forceMove(parent.loc) + set_dir(parent.dir) + +/////OM MOB///// DO NOT SPAWN THESE ANYWHERE IN THE WORLD, THAT'S SCARY ///// +/mob/living/simple_mob/vore/overmap + invisibility = INVISIBILITY_ABSTRACT //We're making an overmap icon pretend to be a mob + name = "DONT SPAWN ME" + desc = "I'm a bad person I'm sorry" + + faction = "overmap" + low_priority = FALSE + devourable = FALSE + digestable = FALSE + var/scanner_desc + var/obj/effect/overmap/visitable/simplemob/child_om_marker + var/om_child_type + +/mob/living/simple_mob/vore/overmap/New(mapload, new_child) + if(new_child) + child_om_marker = new_child + return ..() + +/mob/living/simple_mob/vore/overmap/Initialize() + . = ..() + if(!om_child_type && !om_child_type) + log_and_message_admins("An improperly configured OM mob tried to spawn, and was deleted.") + return INITIALIZE_HINT_QDEL + if(!child_om_marker) + var/obj/effect/overmap/visitable/simplemob/C = new om_child_type(loc, src) + child_om_marker = C + +/mob/living/simple_mob/vore/overmap/Destroy() + qdel_null(child_om_marker) + return ..() + diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/skeleton.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/skeleton.dm new file mode 100644 index 0000000000..4e9f2f66e0 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/skeleton.dm @@ -0,0 +1,94 @@ +/datum/category_item/catalogue/fauna/skeleton + name = "Alien Wildlife - Space Skeleton" + desc = "A creature consisting primarily of what appears to be bones with no apparent connective tissue, muscle, or organs.\ + It is not clear at all how this creature even operates." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/vore/alienanimals/skeleton + name = "skeleton" + desc = "An arrangement of what appears to be bones, given life and mobility. It looks REALLY spooky." + catalogue_data = list(/datum/category_item/catalogue/fauna/skeleton) + + icon = 'icons/mob/alienanimals_x32.dmi' + icon_state = "skeleton" + icon_living = "skeleton" + icon_dead = "skeleton_dead" + + faction = "space skeleton" + maxHealth = 100 + health = 100 + movement_cooldown = 1 + movement_sound = 'sound/effects/skeleton_walk.ogg' //VERY IMPORTANT + + see_in_dark = 10 + + response_help = "rattles" + response_disarm = "shoves aside" + response_harm = "smashes" + + melee_damage_lower = 1 + melee_damage_upper = 10 + attack_sharp = FALSE + attacktext = list("spooked", "startled", "jumpscared", "rattled at") + + ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/skeleton + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + maxbodytemp = 900 + + loot_list = list( + /obj/item/weapon/bone = 25, + /obj/item/weapon/bone/skull = 25, + /obj/item/weapon/bone/ribs = 25, + /obj/item/weapon/bone/arm = 25, + /obj/item/weapon/bone/leg = 25 + ) + + speak_emote = list("rattles") + + say_list_type = /datum/say_list/skeleton + + vore_active = 1 + vore_capacity = 1 + vore_bump_chance = 5 + vore_ignores_undigestable = 0 + vore_default_mode = DM_DRAIN + vore_icons = SA_ICON_LIVING + vore_stomach_name = "stomach" + vore_default_contamination_flavor = "Wet" + vore_default_contamination_color = "grey" + vore_default_item_mode = IM_DIGEST + +/datum/say_list/skeleton + speak = list("Nyeh heh heeeh","NYAAAAHHHH", "Books are the real treasures of the world!", "Why are skeletons so calm? Because nothing gets under their skin.","When does a skeleton laugh? When someone tickels their funny bone!","What is a skeleton’s favorite mode of transport? A scare-plane.", "What did the skeleton say to the vampire? 'You suck.'","What is a skeleton’s favorite thing to do with their cell phone? Take skelfies.", "How did the skeleton know the other skeleton was lying? He could see right through him.","What’s a skeleton’s least favorite room in the house? The living room.", "How much does an elephant skeleton weigh? Skele-tons.", "Why do skeletons drink so much milk? It’s good for the bones!", "Where do bad jokes about skeletons belong? In the skelebin.","What does a skeleton use to cut through objects? A shoulder blade.", "What kind of jokes do skeletons tell? Humerus ones.") + emote_see = list("spins its head around", "shuffles","shambles","practices on the xylophone","drinks some milk","looks at you. Its hollow, bottomless sockets gaze into you greedily.") + emote_hear = list("rattles","makes a spooky sound","cackles madly","plinks","clacks") + +/mob/living/simple_mob/vore/alienanimals/skeleton/init_vore() + ..() + var/obj/belly/B = vore_selected + B.name = "stomach" + B.desc = "You're not sure quite how, but you've found your way inside of the skeleton's stomach! It's cramped and cold and sounds heavily of xylophones!" + B.mode_flags = 40 + B.digest_brute = 0.5 + B.digest_burn = 0.5 + B.digestchance = 10 + B.absorbchance = 0 + B.escapechance = 25 + +/mob/living/simple_mob/vore/alienanimals/skeleton/death(gibbed, deathmessage = "falls down and stops moving...") + . = ..() + +/datum/ai_holder/simple_mob/melee/evasive/skeleton + hostile = TRUE + retaliate = TRUE + destructive = TRUE + violent_breakthrough = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm new file mode 100644 index 0000000000..60be79dadd --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm @@ -0,0 +1,92 @@ +/datum/category_item/catalogue/fauna/dustjumper + name = "Alien Wildlife - Dust Jumper" + desc = "A small, quick creature, the dust jumper is a rare space creature.\ + They have striking similarities to the common mouse, but these creatures are actually most commonly found in space.\ + They are known to make their homes in asteroids, and leap from one to another when food is scarce.\ + Dust jumpers are omnivorous, eating what scraps of organic material they can get their little paws on.\ + They hybernate during long floats through space." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/vore/alienanimals/dustjumper + name = "dust jumper" + desc = "A small, unassuming mammal. It looks quite soft and fluffy, and has bright blue eyes." + catalogue_data = list(/datum/category_item/catalogue/fauna/dustjumper) + + icon = 'icons/mob/alienanimals_x32.dmi' + icon_state = "space_mouse" + icon_living = "space_mouse" + icon_dead = "space_mouse_dead" + + faction = "space mouse" + maxHealth = 20 + health = 20 + movement_cooldown = 1 + + see_in_dark = 10 + + response_help = "pets" + response_disarm = "pushes" + response_harm = "punches" + + melee_damage_lower = 1 + melee_damage_upper = 2 + attack_sharp = FALSE + attacktext = list("nipped", "squeaked at", "hopped on", "kicked") + + ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/dustjumper + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + maxbodytemp = 900 + + speak_emote = list("squeaks") + + say_list_type = /datum/say_list/mouse + + vore_active = 1 + vore_capacity = 1 + vore_bump_chance = 0 + vore_ignores_undigestable = 0 + vore_default_mode = DM_DRAIN + vore_icons = SA_ICON_LIVING + vore_stomach_name = "stomach" + vore_default_contamination_flavor = "Wet" + vore_default_contamination_color = "grey" + vore_default_item_mode = IM_DIGEST + +/mob/living/simple_mob/vore/alienanimals/dustjumper/init_vore() + ..() + var/obj/belly/B = vore_selected + B.name = "stomach" + B.desc = "You've been packed into the impossibly tight stomach of the dust jumper!!! The broiling heat seeps into you while the walls churn in powerfully, forcing you to curl up in the darkness." + B.mode_flags = DM_FLAG_THICKBELLY | DM_FLAG_NUMBING + B.digest_brute = 0.5 + B.digest_burn = 0.5 + B.digestchance = 10 + B.absorbchance = 0 + B.escapechance = 25 + +/mob/living/simple_mob/vore/alienanimals/dustjumper/Life() + . = ..() + if(!.) + return + if(vore_fullness == 0 && movement_cooldown == 50) + movement_cooldown = initial(movement_cooldown) +/mob/living/simple_mob/vore/alienanimals/dustjumper/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay) + . = ..() + movement_cooldown = 50 + +/datum/ai_holder/simple_mob/melee/evasive/dustjumper + hostile = FALSE + retaliate = TRUE + destructive = FALSE + violent_breakthrough = FALSE + can_flee = TRUE + flee_when_dying = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm new file mode 100644 index 0000000000..ded1f6ad6a --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm @@ -0,0 +1,201 @@ +/datum/category_item/catalogue/fauna/spacewhale + name = "Alien Wildlife - Space Whale" + desc = "A massive space creature! These are typically peaceful to anything smaller than themselves, with exception given to space carp, which it eats.\ + It is known to ravage and devour other large space dwelling species.\ + It occasionally gets restless and moves around erratically, which may affect the local space weather.\ + This creature shows no real interest in or aversion to spacecraft." + value = CATALOGUER_REWARD_SUPERHARD + +/mob/living/simple_mob/vore/overmap/spacewhale + name = "space whale" + desc = "It's a space whale. I don't know what more you expected." + scanner_desc = "It's a space whale! Woah!" + catalogue_data = list(/datum/category_item/catalogue/fauna/spacewhale) + + icon = 'icons/mob/alienanimals_x32.dmi' + icon_state = "space_whale" + icon_living = "space_whale" + icon_dead = "space_ghost_dead" + + om_child_type = /obj/effect/overmap/visitable/simplemob/spacewhale + + maxHealth = 100000 + health = 100000 + movement_cooldown = 50 + + see_in_dark = 10 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "punches" + + harm_intent_damage = 1 + melee_damage_lower = 50 + melee_damage_upper = 100 + attack_sharp = FALSE + attacktext = list("chomped", "bashed", "monched", "bumped") + + ai_holder_type = /datum/ai_holder/simple_mob/melee/spacewhale + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + maxbodytemp = 900 + + loot_list = list(/obj/random/underdark/uncertain) + + armor = list( + "melee" = 1000, + "bullet" = 1000, + "laser" = 1000, + "energy" = 1000, + "bomb" = 1000, + "bio" = 1000, + "rad" = 1000) + + armor_soak = list( + "melee" = 1000, + "bullet" = 1000, + "laser" = 1000, + "energy" = 1000, + "bomb" = 1000, + "bio" = 1000, + "rad" = 1000 + ) + + speak_emote = list("rumbles") + + say_list_type = /datum/say_list/spacewhale + + var/hazard_pickup_chance = 35 + var/hazard_drop_chance = 35 + var/held_hazard + var/restless = FALSE + + vore_active = 1 + vore_capacity = 99 + vore_bump_chance = 99 + vore_pounce_chance = 99 + vore_ignores_undigestable = 0 + vore_default_mode = DM_DIGEST + vore_icons = SA_ICON_LIVING + vore_stomach_name = "stomach" + vore_default_contamination_flavor = "Wet" + vore_default_contamination_color = "grey" + vore_default_item_mode = IM_DIGEST + +/datum/say_list/spacewhale + emote_see = list("ripples and flows", "flashes rhythmically","glows faintly","investigates something") + +/mob/living/simple_mob/vore/overmap/spacewhale/init_vore() + ..() + var/obj/belly/B = vore_selected + B.name = "stomach" + B.desc = "It's warm and wet, makes sense, considering it's inside of a space whale. You should take a moment to reflect upon how you got here, and how you might avoid situations like this in the future, while this whale attempts to mercilessly destroy you through various gastric processes." + B.mode_flags = DM_FLAG_THICKBELLY | DM_FLAG_NUMBING + B.digest_brute = 50 + B.digest_burn = 50 + B.escapechance = 0 + +/mob/living/simple_mob/vore/overmap/spacewhale/Initialize() + . = ..() + handle_restless() + +/mob/living/simple_mob/vore/overmap/spacewhale/Moved() + . = ..() + if(restless && prob(5)) + handle_restless() + + for(var/obj/effect/decal/cleanable/C in loc) + qdel(C) + for(var/obj/item/organ/O in loc) + qdel(O) + var/detected = FALSE + for(var/obj/effect/overmap/event/E in loc) + detected = TRUE + if(istype(E, /obj/effect/overmap/event/carp)) + qdel(E) + continue + else if(!held_hazard && prob(hazard_pickup_chance)) + held_hazard = E.type + qdel(E) + return + if(held_hazard && !detected && prob(hazard_drop_chance)) + if(!(locate(/obj/effect/overmap/visitable/sector) in loc)) + new held_hazard(loc) + held_hazard = null + +/mob/living/simple_mob/vore/overmap/spacewhale/Life() + . = ..() + if(!restless && prob(0.5)) + handle_restless() + +/mob/living/simple_mob/vore/overmap/spacewhale/proc/handle_restless() + if(restless) + restless = FALSE + hazard_pickup_chance = initial(hazard_pickup_chance) + hazard_drop_chance = initial(hazard_drop_chance) + movement_cooldown = initial(movement_cooldown) + ai_holder.base_wander_delay = initial(ai_holder.base_wander_delay) + if(child_om_marker.known == TRUE) + child_om_marker.icon_state = "space_whale" + visible_message("\The [child_om_marker.name] settles down.") + else + restless = TRUE + hazard_pickup_chance *= 1.5 + hazard_drop_chance *= 1.5 + movement_cooldown = 1 + ai_holder.base_wander_delay = 2 + ai_holder.wander_delay = 2 + if(child_om_marker.known == TRUE) + child_om_marker.icon_state = "space_whale_restless" + visible_message("\The [child_om_marker.name] ripples excitedly.") + +/datum/ai_holder/simple_mob/melee/spacewhale + hostile = TRUE + retaliate = TRUE + destructive = TRUE + violent_breakthrough = TRUE + unconscious_vore = TRUE + handle_corpse = TRUE + mauling = TRUE + base_wander_delay = 50 + +/datum/ai_holder/simple_mob/melee/spacewhale/set_stance(var/new_stance) + . = ..() + var/mob/living/simple_mob/vore/overmap/spacewhale/W = holder + if(stance == STANCE_FIGHT) + W.movement_cooldown = 0 + W.child_om_marker.glide_size = 0 + if(stance == STANCE_IDLE) + W.hazard_pickup_chance = initial(W.hazard_pickup_chance) + W.hazard_drop_chance = initial(W.hazard_drop_chance) + W.movement_cooldown = 50 + base_wander_delay = 50 + W.restless = FALSE + W.handle_restless() + W.movement_cooldown = initial(W.movement_cooldown) + W.child_om_marker.glide_size = 0.384 + +/mob/living/simple_mob/vore/overmap/spacewhale/apply_melee_effects(var/atom/A) + . = ..() + if(istype(A, /mob/living)) + var/mob/living/L = A + if(L.stat == DEAD && !L.allowmobvore) + L.gib() + else + return ..() + +/obj/effect/overmap/visitable/simplemob/spacewhale + skybox_icon = 'icons/skybox/anomaly.dmi' + skybox_icon_state = "space_whale" + skybox_pixel_x = 0 + skybox_pixel_y = 0 + glide_size = 0.384 + parent_mob_type = /mob/living/simple_mob/vore/overmap/spacewhale \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spookyghost.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spookyghost.dm new file mode 100644 index 0000000000..b8de4885ba --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spookyghost.dm @@ -0,0 +1,219 @@ +/datum/category_item/catalogue/fauna/space_ghost + name = "Alien Wildlife - Space Ghost" + desc = "A mysterious and unknown creature made of radical energy.\ + This creature's energy interferes the nervous system in many kinds of creatures, which may result in hallucinations.\ + This creature's lack of a physical form leaves it quite resistant to physical damage.\ + Smaller variants of this creature seem to be vulnerable to bright light.\ + While both variants are quite vulnerable to laser and energy weapons." + value = CATALOGUER_REWARD_EASY + + +/mob/living/simple_mob/vore/alienanimals/space_ghost + name = "space ghost" + desc = "A pulsing mass of darkness that seems to have gained sentience." + tt_desc = "?????" + catalogue_data = list(/datum/category_item/catalogue/fauna/space_ghost) + + icon = 'icons/mob/alienanimals_x32.dmi' + icon_state = "space_ghost" + icon_living = "space_ghost" + icon_dead = "space_ghost_dead" + has_eye_glow = TRUE + hovering = TRUE + pass_flags = PASSTABLE + + faction = "space ghost" + maxHealth = 50 + health = 50 + movement_cooldown = 3.25 + + see_in_dark = 10 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "punches" + + harm_intent_damage = 0 + melee_damage_lower = 1 + melee_damage_upper = 1 + attack_sharp = FALSE + attacktext = list("spooked", "startled", "jumpscared", "screamed at") + + ai_holder_type = /datum/ai_holder/simple_mob/melee/space_ghost + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + maxbodytemp = 999999 + + armor = list( + "melee" = 100, + "bullet" = 100, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 100) + + armor_soak = list( + "melee" = 100, + "bullet" = 100, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 100 + ) + + loot_list = list(/obj/item/weapon/ore/diamond = 100) + + speak_emote = list("rumbles") + + vore_active = 0 + + projectiletype = /mob/living/simple_mob/vore/alienanimals/spooky_ghost + projectilesound = null + projectile_accuracy = 0 + projectile_dispersion = 0 + + needs_reload = TRUE + reload_max = 1 + reload_count = 0 + reload_time = 7 SECONDS + + +/datum/ai_holder/simple_mob/ranged/kiting/space_ghost + hostile = TRUE + retaliate = TRUE + destructive = TRUE + violent_breakthrough = TRUE + speak_chance = 0 + +/mob/living/simple_mob/vore/alienanimals/space_ghost/apply_melee_effects(var/atom/A) + var/mob/living/L = A + L.hallucination += 50 + +/mob/living/simple_mob/vore/alienanimals/space_ghost/shoot(atom/A) //We're shooting ghosts at people and need them to have the same faction as their parent, okay? + if(!projectiletype) + return + if(A == get_turf(src)) + return + face_atom(A) + if(reload_count >= reload_max) + return + var/mob/living/simple_mob/P = new projectiletype(loc, src) + + if(!P) + return + if(needs_reload) + reload_count++ + + P.faction = faction + playsound(src, projectilesound, 80, 1) + +/mob/living/simple_mob/vore/alienanimals/space_ghost/death(gibbed, deathmessage = "fades away!") + . = ..() + qdel(src) + +/mob/living/simple_mob/vore/alienanimals/spooky_ghost + name = "space ghost" + desc = "A pulsing mass of darkness that seems to have gained sentience." + tt_desc = "?????" + catalogue_data = list(/datum/category_item/catalogue/fauna/space_ghost) + + icon = 'icons/mob/alienanimals_x32.dmi' + icon_state = "spookyghost-1" + icon_living = "spookyghost-1" + icon_dead = "space_ghost_dead" + hovering = TRUE + pass_flags = PASSTABLE + + faction = "space ghost" + maxHealth = 5 + health = 5 + movement_cooldown = 1 + + see_in_dark = 10 + alpha = 128 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "punches" + + harm_intent_damage = 0 + melee_damage_lower = 1 + melee_damage_upper = 1 + attack_sharp = FALSE + attacktext = list("spooked", "startled", "jumpscared", "screamed at") + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + maxbodytemp = 999999 + + armor = list( + "melee" = 100, + "bullet" = 100, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 100) + + armor_soak = list( + "melee" = 100, + "bullet" = 100, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 100 + ) + + speak_emote = list("rumbles") + + vore_active = 0 + + ai_holder_type = /datum/ai_holder/simple_mob/melee/space_ghost + +/mob/living/simple_mob/vore/alienanimals/spooky_ghost/Initialize() + . = ..() + icon_living = "spookyghost-[rand(1,2)]" + icon_state = icon_living + addtimer(CALLBACK(src, .proc/death), 2 MINUTES) + update_icon() + +/datum/ai_holder/simple_mob/melee/space_ghost + hostile = TRUE + retaliate = TRUE + destructive = TRUE + violent_breakthrough = TRUE + speak_chance = 0 + +/mob/living/simple_mob/vore/alienanimals/spooky_ghost/death(gibbed, deathmessage = "fades away!") + . = ..() + qdel(src) + +/mob/living/simple_mob/vore/alienanimals/spooky_ghost/apply_melee_effects(var/atom/A) + var/mob/living/L = A + L.hallucination += rand(1,50) + +/mob/living/simple_mob/vore/alienanimals/spooky_ghost/Life() + . = ..() + var/turf/T = get_turf(src) + if(!T) + return + if(T.get_lumcount() >= 0.5) + adjustBruteLoss(1) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm new file mode 100644 index 0000000000..b77d55a2c8 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm @@ -0,0 +1,177 @@ +/datum/category_item/catalogue/fauna/startreader + name = "Alien Wildlife - Star Treader" + desc = "A hard shelled creature that lives on asteroids.\ + It is quite durable and very opportunistic in its feeding habits.\ + It is vulnerable to extreme vibrations, and from the bottom." + value = CATALOGUER_REWARD_EASY + + +/mob/living/simple_mob/vore/alienanimals/startreader + name = "asteroid star treader" + desc = "A slow, hard shelled creature that stalks asteroids." + tt_desc = "Testudines Stellarus" + catalogue_data = list(/datum/category_item/catalogue/fauna/startreader) + + icon = 'icons/mob/alienanimals_x32.dmi' + icon_state = "startreader" + icon_living = "startreader" + icon_dead = "startreader_dead" + + faction = "space turtle" + maxHealth = 1000 + health = 1000 + movement_cooldown = 20 + + see_in_dark = 10 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "punches" + + harm_intent_damage = 1 + melee_damage_lower = 1 + melee_damage_upper = 10 + attack_sharp = FALSE + attacktext = list("chomped", "bashed", "monched", "bumped") + + ai_holder_type = /datum/ai_holder/simple_mob/melee/startreader + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + maxbodytemp = 900 + + loot_list = list(/obj/random/underdark/uncertain = 25) + + armor = list( + "melee" = 100, + "bullet" = 100, + "laser" = 100, + "energy" = 100, + "bomb" = 0, + "bio" = 100, + "rad" = 100) + + armor_soak = list( + "melee" = 30, + "bullet" = 30, + "laser" = 10, + "energy" = 10, + "bomb" = 0, + "bio" = 100, + "rad" = 100 + ) + + speak_emote = list("rumbles") + + say_list_type = /datum/say_list/startreader + + vore_active = 1 + vore_capacity = 2 + vore_bump_chance = 25 + vore_ignores_undigestable = 0 + vore_default_mode = DM_DRAIN + vore_icons = SA_ICON_LIVING + vore_stomach_name = "gastric sac" + vore_default_contamination_flavor = "Wet" + vore_default_contamination_color = "grey" + vore_default_item_mode = IM_DIGEST + + var/flipped = FALSE + var/flip_cooldown = 0 + +/datum/say_list/startreader + emote_see = list("bobs", "digs around","gnashes at something","yawns","snaps at something") + emote_hear = list("thrumms","clicks","rattles","groans","burbles") + + +/mob/living/simple_mob/vore/alienanimals/startreader/init_vore() + ..() + var/obj/belly/B = vore_selected + B.name = "gastric sac" + B.desc = "It's cramped and hot! You're forced into a small ball as your shape is squeezed into the slick, wet chamber. Despite being swallowed into the creature, you find that you actually stretch out of the top a ways, and can JUST BARELY wiggle around..." + B.mode_flags = 40 + B.digest_brute = 0.5 + B.digest_burn = 0.5 + B.digestchance = 10 + B.absorbchance = 0 + B.escapechance = 15 + +/datum/ai_holder/simple_mob/melee/startreader + hostile = TRUE + retaliate = TRUE + destructive = TRUE + violent_breakthrough = TRUE + +/mob/living/simple_mob/vore/alienanimals/startreader/apply_melee_effects(var/atom/A) + if(weakened) //Don't stun people while they're already stunned! That's SILLY! + return + if(prob(15)) + var/mob/living/L = A + if(isliving(A)) + visible_message("\The [src] trips \the [L]!!") + L.weakened += rand(1,10) + +/mob/living/simple_mob/vore/alienanimals/startreader/Life() + . = ..() + if(flip_cooldown == 1) + flip_cooldown = 0 + flipped = FALSE + handle_flip() + visible_message("\The [src] rights itself!!!") + return + if(flip_cooldown) + flip_cooldown -- + SetStunned(2) + +/mob/living/simple_mob/vore/alienanimals/startreader/proc/handle_flip() + if(flipped) + armor = list( + "melee" = 0, + "bullet" = 0, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0) + + armor_soak = list( + "melee" = 0, + "bullet" = 0, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + icon_living = "startreader_flipped" + AdjustStunned(flip_cooldown) + else + armor = list( + "melee" = 100, + "bullet" = 100, + "laser" = 100, + "energy" = 100, + "bomb" = 0, + "bio" = 100, + "rad" = 100) + + armor_soak = list( + "melee" = 30, + "bullet" = 30, + "laser" = 10, + "energy" = 10, + "bomb" = 0, + "bio" = 100, + "rad" = 100 + ) + icon_living = "startreader" + SetStunned(0) + + update_icon() \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm index 371fc8d241..ee27fb1c97 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm @@ -76,6 +76,8 @@ var/obj/screen/energyhud //Holder to update this icon var/list/shadekin_abilities + var/check_for_observer = FALSE + var/check_timer = 0 /mob/living/simple_mob/shadekin/Initialize() //You spawned the prototype, and want a totally random one. @@ -86,6 +88,7 @@ /mob/living/simple_mob/shadekin/red = 20, //Actively seek people out to nom, so fairly common to see (relatively speaking), /mob/living/simple_mob/shadekin/blue = 15, //Explorers that like to interact with people, so still fairly common, /mob/living/simple_mob/shadekin/purple = 15, //Also explorers that may or may not homf people, + /mob/living/simple_mob/shadekin/green = 5, /mob/living/simple_mob/shadekin/yellow = 1 //Very rare, usually never leaves their home ) var/new_type = pickweight(sk_types) @@ -198,7 +201,18 @@ if(. && nutrition > initial(nutrition) && energy < 100) nutrition = max(0, nutrition-5) energy = min(100,energy+1) - + if(!client && check_for_observer && check_timer++ > 5) + check_timer = 0 + var/non_kin_count = 0 + for(var/mob/living/M in view(6,src)) + if(!istype(M, /mob/living/simple_mob/shadekin)) + non_kin_count ++ + // Technically can be combined with ||, they call the same function, but readability is poor + if(!non_kin_count && (ability_flags & AB_PHASE_SHIFTED)) + phase_shift() // shifting back in, nobody present + else if (non_kin_count && !(ability_flags & AB_PHASE_SHIFTED)) + phase_shift() // shifting out, scaredy + /mob/living/simple_mob/shadekin/update_icon() . = ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/types.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/types.dm index e66162432b..d09e72aa97 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/types.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/types.dm @@ -28,6 +28,9 @@ a brawl, but you barely generate any of your own energy. You can stand in a dark spot to gather scraps \ of energy in a pinch, but otherwise need to take it, by force if necessary." +/mob/living/simple_mob/shadekin/red + ai_holder_type = /datum/ai_holder/simple_mob/melee + /mob/living/simple_mob/shadekin/red/white icon_state = "white" /mob/living/simple_mob/shadekin/red/dark @@ -35,16 +38,6 @@ /mob/living/simple_mob/shadekin/red/brown icon_state = "brown" -/mob/living/simple_mob/shadekin/red/ai - ai_holder_type = /datum/ai_holder/simple_mob/melee - -/mob/living/simple_mob/shadekin/red/ai/white - icon_state = "white" -/mob/living/simple_mob/shadekin/red/ai/dark - icon_state = "dark" -/mob/living/simple_mob/shadekin/red/ai/brown - icon_state = "brown" - ///////////////////////////////////////////////////////////////// /mob/living/simple_mob/shadekin/blue name = "blue-eyed shadekin" @@ -85,6 +78,9 @@ without doing so, albeit slowly. Dark and light are irrelevant to you, they are just different places to explore and \ discover new things and new people." +/mob/living/simple_mob/shadekin/blue/ + ai_holder_type = /datum/ai_holder/simple_mob/passive + /mob/living/simple_mob/shadekin/blue/white icon_state = "white" /mob/living/simple_mob/shadekin/blue/dark @@ -92,16 +88,6 @@ /mob/living/simple_mob/shadekin/blue/brown icon_state = "brown" -/mob/living/simple_mob/shadekin/blue/ai - ai_holder_type = /datum/ai_holder/simple_mob/passive - -/mob/living/simple_mob/shadekin/blue/ai/white - icon_state = "white" -/mob/living/simple_mob/shadekin/blue/ai/dark - icon_state = "dark" -/mob/living/simple_mob/shadekin/blue/ai/brown - icon_state = "brown" - ///////////////////////////////////////////////////////////////// /mob/living/simple_mob/shadekin/purple name = "purple-eyed shadekin" @@ -137,6 +123,9 @@ areas is taxing on your energy. You can harvest energy from others in a fight, but since you don't need to, you may \ just choose to simply not fight." +/mob/living/simple_mob/shadekin/purple + ai_holder_type = /datum/ai_holder/simple_mob/retaliate + /mob/living/simple_mob/shadekin/purple/white icon_state = "white" /mob/living/simple_mob/shadekin/purple/dark @@ -144,16 +133,6 @@ /mob/living/simple_mob/shadekin/purple/brown icon_state = "brown" -/mob/living/simple_mob/shadekin/purple/ai - ai_holder_type = /datum/ai_holder/simple_mob/retaliate - -/mob/living/simple_mob/shadekin/purple/ai/white - icon_state = "white" -/mob/living/simple_mob/shadekin/purple/ai/dark - icon_state = "dark" -/mob/living/simple_mob/shadekin/purple/ai/brown - icon_state = "brown" - ///////////////////////////////////////////////////////////////// /mob/living/simple_mob/shadekin/yellow name = "yellow-eyed shadekin" @@ -177,6 +156,7 @@ eye_desc = "yellow eyes" stalker = FALSE + check_for_observer = TRUE vore_stomach_flavor = "You slip past pointy triangle teeth and down the slick, slippery gullet \ of the creature. It's warm, and the air is thick. You can hear its body squelch and shift around you \ as you settle into its stomach! The doughy walls within cling to you heavily, churning down on you, wearing \ @@ -187,6 +167,9 @@ area is very taxing on you, but you gain energy extremely fast in any very dark area. You're weaker than other \ shadekin, but your fast energy generation in the dark allows you to phase shift more often." +/mob/living/simple_mob/shadekin/yellow + ai_holder_type = /datum/ai_holder/simple_mob/melee/hit_and_run + /mob/living/simple_mob/shadekin/yellow/white icon_state = "white" /mob/living/simple_mob/shadekin/yellow/dark @@ -194,24 +177,14 @@ /mob/living/simple_mob/shadekin/yellow/brown icon_state = "brown" -/mob/living/simple_mob/shadekin/yellow/ai - ai_holder_type = /datum/ai_holder/simple_mob/melee/hit_and_run - -/mob/living/simple_mob/shadekin/yellow/ai/white - icon_state = "white" -/mob/living/simple_mob/shadekin/yellow/ai/dark - icon_state = "dark" -/mob/living/simple_mob/shadekin/yellow/ai/brown - icon_state = "brown" - -/mob/living/simple_mob/shadekin/yellow/ai/retaliate +/mob/living/simple_mob/shadekin/yellow/retaliate ai_holder_type = /datum/ai_holder/simple_mob/retaliate -/mob/living/simple_mob/shadekin/yellow/ai/retaliate/white +/mob/living/simple_mob/shadekin/yellow/retaliate/white icon_state = "white" -/mob/living/simple_mob/shadekin/yellow/ai/retaliate/dark +/mob/living/simple_mob/shadekin/yellow/retaliate/dark icon_state = "dark" -/mob/living/simple_mob/shadekin/yellow/ai/retaliate/brown +/mob/living/simple_mob/shadekin/yellow/retaliate/brown icon_state = "brown" ///////////////////////////////////////////////////////////////// @@ -237,6 +210,7 @@ eye_desc = "green eyes" stalker = TRUE + check_for_observer = TRUE vore_stomach_flavor = "You slip past pointy triangle teeth and down the slick, slippery gullet \ of the creature. It's warm, and the air is thick. You can hear its body squelch and shift around you \ as you settle into its stomach! The doughy walls within cling to you heavily, churning down on you, wearing \ @@ -247,6 +221,9 @@ have more experience than your yellow-eyed cousins. You gain energy decently fast in any very dark area. You're weaker than other \ shadekin, but your slight energy generation constnatly, and especially in the dark allows for a good mix of uses." +/mob/living/simple_mob/shadekin/green + ai_holder_type = /datum/ai_holder/simple_mob/passive + /mob/living/simple_mob/shadekin/green/white icon_state = "white" /mob/living/simple_mob/shadekin/green/dark @@ -254,16 +231,6 @@ /mob/living/simple_mob/shadekin/green/brown icon_state = "brown" -/mob/living/simple_mob/shadekin/green/ai - ai_holder_type = /datum/ai_holder/simple_mob/passive - -/mob/living/simple_mob/shadekin/green/ai/white - icon_state = "white" -/mob/living/simple_mob/shadekin/green/ai/dark - icon_state = "dark" -/mob/living/simple_mob/shadekin/green/ai/brown - icon_state = "brown" - ///////////////////////////////////////////////////////////////// /mob/living/simple_mob/shadekin/orange name = "orange-eyed shadekin" @@ -294,6 +261,9 @@ You're stronger than most shadekin, faster, and more capable in a brawl, but you don't generate much of your own energy. \ You can stand in a dark spot to gather some energy, but otherwise need to take it, by force if necessary." +/mob/living/simple_mob/shadekin/orange + ai_holder_type = /datum/ai_holder/simple_mob/melee + /mob/living/simple_mob/shadekin/orange/white icon_state = "white" /mob/living/simple_mob/shadekin/orange/dark @@ -301,22 +271,13 @@ /mob/living/simple_mob/shadekin/orange/brown icon_state = "brown" -/mob/living/simple_mob/shadekin/orange/ai - ai_holder_type = /datum/ai_holder/simple_mob/melee - -/mob/living/simple_mob/shadekin/orange/ai/white - icon_state = "white" -/mob/living/simple_mob/shadekin/orange/ai/dark - icon_state = "dark" -/mob/living/simple_mob/shadekin/orange/ai/brown - icon_state = "brown" - ///////////////////////////////////////////////////////////////// //Fluffy specific fluffer /mob/living/simple_mob/shadekin/blue/rivyr name = "Rivyr" desc = "She appears to be a fluffer of some sort. Deep blue eyes and curious attitude." icon_state = "rivyr" + ai_holder_type = /datum/ai_holder/simple_mob/passive eye_desc = "" vore_stomach_flavor = "Blue flesh gleams in the fading light as you slip down the little mar's gullet! \ Gooey flesh and heat surrounds your form as you're tucked away into the darkness of her stomach! Thick slimes cling \ diff --git a/code/modules/overmap/overmap_object.dm b/code/modules/overmap/overmap_object.dm index ad5bf60dd2..ad87d50e8b 100644 --- a/code/modules/overmap/overmap_object.dm +++ b/code/modules/overmap/overmap_object.dm @@ -23,7 +23,7 @@ /// For showing to the pilot of the ship, so they see the 'real' appearance, despite others seeing the unknown ones var/image/real_appearance - light_system = MOVABLE_LIGHT + //light_system = MOVABLE_LIGHT light_on = FALSE /obj/effect/overmap/Initialize() diff --git a/code/modules/overmap/ships/computers/sensors.dm b/code/modules/overmap/ships/computers/sensors.dm index 9a1c0fb115..e09678f9b0 100644 --- a/code/modules/overmap/ships/computers/sensors.dm +++ b/code/modules/overmap/ships/computers/sensors.dm @@ -66,7 +66,7 @@ else data["status"] = "OK" var/list/contacts = list() - for(var/obj/effect/overmap/O in view(7,linked)) + for(var/obj/effect/overmap/O in range(7,linked)) if(linked == O) continue if(!O.scannable) @@ -125,10 +125,9 @@ return if(sensors && sensors.use_power && sensors.powered()) var/sensor_range = round(sensors.range*1.5) + 1 - linked.set_light_range(sensor_range + 0.5) - linked.set_light_on(TRUE) + linked.set_light(sensor_range + 0.5) else - linked.set_light_on(FALSE) + linked.set_light(0) /obj/machinery/shipsensors name = "sensors suite" diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 2a772e6c11..ff5b3dd371 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -457,6 +457,14 @@ var/obj/effect/overlay/aiholo/holo = loc holo.drop_prey() //Easiest way log_and_message_admins("[key_name(src)] used the OOC escape button to get out of [key_name(holo.master)] (AI HOLO) ([holo ? "JMP" : "null"])") + + //You're in a capture crystal! ((It's not vore but close enough!)) + else if(iscapturecrystal(loc)) + var/obj/item/capture_crystal/crystal = loc + crystal.unleash() + crystal.bound_mob = null + crystal.bound_mob = capture_crystal = 0 + log_and_message_admins("[key_name(src)] used the OOC escape button to get out of [crystal] owned by [crystal.owner]. [ADMIN_FLW(src)]") //Don't appear to be in a vore situation else @@ -670,7 +678,11 @@ if(S.holding) to_chat(src, "There's something inside!") return - + if(iscapturecrystal(I)) + var/obj/item/capture_crystal/C = I + if(!C.bound_mob.devourable) + to_chat(src, "That doesn't seem like a good idea. (\The [C.bound_mob]'s prefs don't allow it.)") + return drop_item() I.forceMove(vore_selected) updateVRPanel() @@ -724,6 +736,7 @@ else if (istype(I,/obj/item/clothing/accessory/collar)) visible_message("[src] demonstrates their voracious capabilities by swallowing [I] whole!") to_chat(src, "You can taste the submissiveness in the wearer of [I]!") +<<<<<<< HEAD //kcin2000 1/29/21 - lets you eat the news digitally and adds a text for the paper news else if(istype(I,/obj/item/device/starcaster_news)) to_chat(src, "You can taste the dry flavor of digital garbage, oh wait its just the news.") @@ -733,6 +746,15 @@ else if (istype(I,/obj/item/weapon/cell)) visible_message("[src] sates their electric appeite with a [I]!") to_chat(src, "You can taste the spicy flavor of electrolytes, yum.") +======= + else if(iscapturecrystal(I)) + var/obj/item/capture_crystal/C = I + if(C.bound_mob && (C.bound_mob in C.contents)) + if(isbelly(C.loc)) + var/obj/belly/B = C.loc + to_chat(C.bound_mob, "Outside of your crystal, you can see; [B.desc]") + to_chat(src, "You can taste the the power of command.") +>>>>>>> 60011ecd0b... Merge pull request #11928 from Very-Soft/whalesandcrystals else to_chat(src, "You can taste the flavor of garbage. Delicious.") return diff --git a/icons/obj/capture_crystal_vr.dmi b/icons/obj/capture_crystal_vr.dmi new file mode 100644 index 0000000000..7cd9208b2b Binary files /dev/null and b/icons/obj/capture_crystal_vr.dmi differ diff --git a/icons/turf/flooring/weird_vr.dmi b/icons/turf/flooring/weird_vr.dmi new file mode 100644 index 0000000000..b8e10ec136 Binary files /dev/null and b/icons/turf/flooring/weird_vr.dmi differ diff --git a/maps/offmap_vr/common_offmaps.dm b/maps/offmap_vr/common_offmaps.dm index 41a1707af8..feef13888c 100644 --- a/maps/offmap_vr/common_offmaps.dm +++ b/maps/offmap_vr/common_offmaps.dm @@ -220,6 +220,33 @@ mappath = 'maps/gateway_vr/wildwest.dmm' associated_map_datum = /datum/map_z_level/common_lateload/gateway_destination + +///////////////////////////////////////////////////////////////////////////////////// + +/datum/map_template/common_lateload/om_adventure + name = "OM Adventure Submap" + desc = "Please do not use this." + mappath = null + associated_map_datum = null + +/datum/map_z_level/common_lateload/om_adventure_destination + name = "OM Adventure Destination" + z = Z_LEVEL_OM_ADVENTURE + +#include "../om_adventure/grasscave.dm" +/datum/map_template/common_lateload/om_adventure/grasscave + name = "Grass Cave" + desc = "Looks like a cave with some grass in it." + mappath = 'maps/om_adventure/grasscave.dmm' + associated_map_datum = /datum/map_z_level/common_lateload/om_adventure_destination + +/datum/map_template/common_lateload/om_adventure/grasscave/on_map_loaded(z) + . = ..() + seed_submaps(list(z), 60, /area/om_adventure/grasscave/unexplored, /datum/map_template/om_adventure/outdoor) + seed_submaps(list(z), 60, /area/om_adventure/grasscave/rocks, /datum/map_template/om_adventure/cave) + new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, z, world.maxx - 4, world.maxy - 4) + new /datum/random_map/noise/ore/grasscave(null, 1, 1, z, 64, 64) + ////////////////////////////////////////////////////////////////////////////////////// // Admin-use z-levels for loading whenever an admin feels like #if AWAY_MISSION_TEST diff --git a/maps/om_adventure/grasscave.dm b/maps/om_adventure/grasscave.dm new file mode 100644 index 0000000000..e9e3a21dda --- /dev/null +++ b/maps/om_adventure/grasscave.dm @@ -0,0 +1,335 @@ +#if MAP_TEST +#include "pois/darkstar.dmm" +#include "pois/darktear1.dmm" +#include "pois/darktear2.dmm" +#include "pois/darktear3.dmm" +#include "pois/darktear4.dmm" +#include "pois/fleshtear1.dmm" +#include "pois/fleshtear2.dmm" +#include "pois/fleshtear3.dmm" +#include "pois/fleshtear4.dmm" +#include "pois/cabin1.dmm" +#include "pois/cabin2.dmm" +#include "pois/cabin3.dmm" +#include "pois/camp.dmm" +#include "pois/shuttlewreck1.dmm" +#include "pois/shuttlewreck2.dmm" +#include "pois/shuttlewreck3.dmm" +#include "pois/shuttlewreck4.dmm" +#endif + + +/obj/effect/shuttle_landmark/premade/om_adventure/grasscave/center + name = "Anomaly - Center" + landmark_tag = "om-grasscave-center" + +/obj/effect/shuttle_landmark/premade/om_adventure/grasscave/southeast + name = "Anomaly - Southeast" + landmark_tag = "om-grasscave-southeast" + + +/area/om_adventure/grasscave + name = "Grass Cave" + icon = 'icons/turf/areas_vr.dmi' + icon_state = "bluwhicir" + requires_power = TRUE + dynamic_lighting = TRUE + flags = RAD_SHIELDED + base_turf = /turf/simulated/floor/weird_things/dark + ambience = AMBIENCE_FOREBODING + +/area/om_adventure/grasscave/explored + +/area/om_adventure/grasscave/unexplored + ambience = AMBIENCE_RUINS + +/area/om_adventure/grasscave/rocks + +/obj/effect/overmap/visitable/simplemob/spacewhale/grasscave + initial_generic_waypoints = list("om-grasscave-center", "om-grasscave-southeast") + +/turf/simulated/mineral/omadventure/make_ore(var/rare_ore) + if(mineral) + return + var/mineral_name + if(rare_ore) + mineral_name = pickweight(list( + "marble" = 3, + "uranium" = 10, + "platinum" = 10, + "hematite" = 20, + "carbon" = 30, + "diamond" = 20, + "gold" = 8, + "silver" = 8, + "phoron" = 18, + "lead" = 5, + "verdantium" = 5)) + else + mineral_name = pickweight(list( + "marble" = 2, + "uranium" = 5, + "platinum" = 5, + "hematite" = 35, + "carbon" = 30, + "gold" = 3, + "silver" = 3, + "phoron" = 25, + "lead" = 1)) + + if(mineral_name && (mineral_name in GLOB.ore_data)) + mineral = GLOB.ore_data[mineral_name] + UpdateMineral() + update_icon() + +/datum/random_map/noise/ore/grasscave + descriptor = "grasscave ore distribution map" + deep_val = 0.6 //More riches, normal is 0.7 and 0.8 + rare_val = 0.5 + +/datum/map_template/om_adventure + +/area/om_adventure/poi + name = "POI - OM-A" + icon = 'icons/turf/areas_vr.dmi' + icon_state = "orawhisqu" + ambience = AMBIENCE_FOREBODING + +/area/om_adventure/poi/darkstar + name = "POI - Darkstar" + +/datum/map_template/om_adventure/outdoor/darkstar + name = "Darkstar" + desc = "A mysterious shape!" + mappath = 'pois/darkstar.dmm' + cost = 5 + +/area/om_adventure/poi/darktear1 + name = "POI - Darktear 1" + +/datum/map_template/om_adventure/cave/darktear1 + name = "darktear1" + desc = "A mysterious shape!" + mappath = 'pois/darktear1.dmm' + cost = 5 + +/area/om_adventure/poi/darktear2 + name = "POI - Darktear 2" + +/datum/map_template/om_adventure/cave/darktear2 + name = "darktear2" + desc = "A mysterious shape!" + mappath = 'pois/darktear2.dmm' + cost = 5 + +/area/om_adventure/poi/darktear3 + name = "POI - Darktear 3" + +/datum/map_template/om_adventure/cave/darktear3 + name = "darktear3" + desc = "A mysterious shape!" + mappath = 'pois/darktear3.dmm' + cost = 5 + +/area/om_adventure/poi/darktear4 + name = "POI - Darktear 4" + +/datum/map_template/om_adventure/cave/darktear4 + name = "darktear4" + desc = "A mysterious shape!" + mappath = 'pois/darktear4.dmm' + cost = 5 + +/area/om_adventure/poi/fleshtear1 + name = "POI - Fleshtear 1" + +/datum/map_template/om_adventure/cave/fleshtear1 + name = "fleshtear1" + desc = "Wow gross!" + mappath = 'pois/fleshtear1.dmm' + cost = 5 + +/area/om_adventure/poi/fleshtear2 + name = "POI - Fleshtear 2" + +/datum/map_template/om_adventure/cave/fleshtear2 + name = "fleshtear2" + desc = "Wow gross!" + mappath = 'pois/fleshtear2.dmm' + cost = 5 + +/area/om_adventure/poi/fleshtear3 + name = "POI - Fleshtear 3" + +/datum/map_template/om_adventure/cave/fleshtear3 + name = "fleshtear3" + desc = "Wow gross!" + mappath = 'pois/fleshtear3.dmm' + cost = 5 + +/area/om_adventure/poi/fleshtear4 + name = "POI - Fleshtear 4" + +/datum/map_template/om_adventure/cave/fleshtear4 + name = "fleshtear4" + desc = "Wow gross!" + mappath = 'pois/fleshtear4.dmm' + cost = 5 + +/area/om_adventure/poi/cabin1 + name = "POI - Cabin 1" + +/datum/map_template/om_adventure/outdoor/cabin1 + name = "cabin1" + desc = "A comfy home!" + mappath = 'pois/cabin1.dmm' + cost = 20 + +/area/om_adventure/poi/cabin2 + name = "POI - Cabin 2" + +/datum/map_template/om_adventure/outdoor/cabin2 + name = "cabin2" + desc = "A comfy home!" + mappath = 'pois/cabin2.dmm' + cost = 20 + +/area/om_adventure/poi/cabin3 + name = "POI - Cabin 3" + +/datum/map_template/om_adventure/outdoor/cabin3 + name = "cabin3" + desc = "A comfy... home?" + mappath = 'pois/cabin3.dmm' + cost = 10 + +/area/om_adventure/poi/camp + name = "POI - Camp" + +/datum/map_template/om_adventure/outdoor/camp + name = "Camp" + desc = "A camp!" + mappath = 'pois/camp.dmm' + cost = 20 + +/area/om_adventure/poi/shuttlewreck1 + name = "POI - Shuttlewreck 1" + +/datum/map_template/om_adventure/outdoor/shuttlewreck1 + name = "Shuttle wreck" + desc = "Long abandoned!" + mappath = 'pois/shuttlewreck1.dmm' + cost = 5 + +/area/om_adventure/poi/shuttlewreck2 + name = "POI - Shuttlewreck 2" + +/datum/map_template/om_adventure/outdoor/shuttlewreck2 + name = "Shuttle wreck" + desc = "Long abandoned!" + mappath = 'pois/shuttlewreck2.dmm' + cost = 10 + +/area/om_adventure/poi/shuttlewreck3 + name = "POI - Shuttlewreck 3" + +/datum/map_template/om_adventure/outdoor/shuttlewreck3 + name = "Shuttle wreck" + desc = "Long abandoned!" + mappath = 'pois/shuttlewreck3.dmm' + cost = 5 + +/area/om_adventure/poi/shuttlewreck4 + name = "POI - Shuttlewreck 4" + +/datum/map_template/om_adventure/outdoor/shuttlewreck4 + name = "Shuttle wreck" + desc = "Long abandoned!" + mappath = 'pois/shuttlewreck4.dmm' + cost = 10 + +/area/om_adventure/poi/medicalcenter + name = "POI - medical center" + +/datum/map_template/om_adventure/outdoor/medicalcenter + name = "Medical Center" + desc = "Maybe they used to heal people here." + mappath = 'pois/medicalcenter.dmm' + cost = 10 + +/area/om_adventure/poi/shippart1 + name = "POI - ship part 1" + +/datum/map_template/om_adventure/outdoor/shippart1 + name = "Ship Part" + desc = "Something bad happened here." + mappath = 'pois/shippart1.dmm' + cost = 10 + +/area/om_adventure/poi/woodentemple + name = "POI - Wooden Temple" + +/datum/map_template/om_adventure/cave/woodentemple + name = "Wooden Temple" + desc = "A comfy wooden temple." + mappath = 'pois/woodentemple.dmm' + cost = 10 + +/area/om_adventure/poi/alienchamber1 + name = "POI - Alien Chamber 1" + +/datum/map_template/om_adventure/cave/alienchamber1 + name = "Alien Chamber" + desc = "A mysterious alien chamber!" + mappath = 'pois/alienchamber1.dmm' + cost = 10 + +/area/om_adventure/poi/alienchamber2 + name = "POI - Alien Chamber 2" + +/datum/map_template/om_adventure/cave/alienchamber2 + name = "Alien Chamber" + desc = "A mysterious alien chamber!" + mappath = 'pois/alienchamber2.dmm' + cost = 10 + +/area/om_adventure/poi/alienchamber3 + name = "POI - Alien Chamber 3" + +/datum/map_template/om_adventure/cave/alienchamber3 + name = "Alien Chamber" + desc = "A mysterious alien chamber!" + mappath = 'pois/alienchamber3.dmm' + cost = 10 + +/area/om_adventure/poi/alienchamber4 + name = "POI - Alien Chamber 4" + +/datum/map_template/om_adventure/cave/alienchamber4 + name = "Alien Chamber" + desc = "A mysterious alien chamber!" + mappath = 'pois/alienchamber4.dmm' + cost = 10 + +/obj/tether_away_spawner/spookyland + name = "Spookyland Spawner" + icon = 'icons/mob/randomlandmarks.dmi' + icon_state = "monster" + + faction = "spookyland" + prob_spawn = 50 + prob_fall = 10 + //guard = 10 //Don't wander too far, to stay alive. + mobs_to_pick_from = list( + /mob/living/simple_mob/shadekin/blue = 1, + /mob/living/simple_mob/shadekin/red = 1, + /mob/living/simple_mob/shadekin/green = 10, + /mob/living/simple_mob/shadekin/purple = 1, + /mob/living/simple_mob/shadekin/yellow = 20, + /mob/living/simple_mob/vore/alienanimals/space_ghost = 100, + /mob/living/simple_mob/vore/alienanimals/space_jellyfish = 100, + /mob/living/simple_mob/faithless = 50, + /mob/living/simple_mob/mechanical/infectionbot = 30, + /mob/living/simple_mob/animal/passive/cat/bluespace = 1, + /mob/living/simple_mob/animal/passive/dog/void_puppy = 1 + ) \ No newline at end of file diff --git a/maps/om_adventure/grasscave.dmm b/maps/om_adventure/grasscave.dmm new file mode 100644 index 0000000000..b275729757 --- /dev/null +++ b/maps/om_adventure/grasscave.dmm @@ -0,0 +1,19919 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/overmap/visitable/simplemob/spacewhale/grasscave, +/turf/unsimulated/wall/dark, +/area/om_adventure/grasscave) +"c" = ( +/turf/simulated/floor/outdoors/grass/forest, +/area/om_adventure/grasscave/unexplored) +"n" = ( +/obj/effect/shuttle_landmark/premade/om_adventure/grasscave/southeast, +/turf/simulated/floor/outdoors/grass/forest, +/area/om_adventure/grasscave) +"q" = ( +/turf/simulated/mineral/cave, +/area/om_adventure/grasscave/rocks) +"s" = ( +/turf/simulated/mineral, +/area/om_adventure/grasscave/rocks) +"u" = ( +/turf/simulated/floor/outdoors/grass/forest, +/area/om_adventure/grasscave/explored) +"A" = ( +/obj/effect/shuttle_landmark/premade/om_adventure/grasscave/center, +/turf/simulated/floor/outdoors/grass/forest, +/area/om_adventure/grasscave/explored) +"C" = ( +/turf/unsimulated/wall/dark, +/area/om_adventure/grasscave) +"N" = ( +/turf/simulated/floor/outdoors/grass/forest, +/area/om_adventure/grasscave) +"P" = ( +/turf/unsimulated/floor/dark, +/area/om_adventure/grasscave) +"X" = ( +/obj/effect/fake_sun, +/turf/unsimulated/wall/dark, +/area/om_adventure/grasscave) + +(1,1,1) = {" +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +X +a +"} +(2,1,1) = {" +C +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +q +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +C +"} +(3,1,1) = {" +C +P +P +P +P +P +P +P +P +P +P +P +P +P +q +P +P +P +q +q +q +q +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +q +q +q +q +P +P +P +P +q +P +q +q +P +P +P +P +P +P +P +q +q +q +q +q +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +C +"} +(4,1,1) = {" +C +P +P +P +P +P +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +P +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +q +P +P +P +P +P +P +P +q +P +P +q +q +q +q +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +q +q +q +q +q +q +q +P +P +q +P +P +q +q +q +q +q +P +P +P +P +P +P +P +P +q +P +P +P +P +P +P +P +P +P +P +P +P +C +"} +(5,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +C +"} +(6,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(7,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(8,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(9,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(10,1,1) = {" +C +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(11,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(12,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(13,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(14,1,1) = {" +C +P +P +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(15,1,1) = {" +C +P +P +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(16,1,1) = {" +C +P +P +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +s +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(17,1,1) = {" +C +P +P +P +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(18,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(19,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(20,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(21,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +q +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(22,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +q +q +q +q +q +q +q +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(23,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +c +c +c +c +q +q +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(24,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +c +q +q +q +q +c +c +c +q +q +q +q +q +q +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(25,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(26,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(27,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(28,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(29,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(30,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(31,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(32,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(33,1,1) = {" +C +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(34,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(35,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +q +c +c +c +c +c +c +c +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(36,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(37,1,1) = {" +C +P +P +P +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +C +"} +(38,1,1) = {" +C +P +P +P +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +C +"} +(39,1,1) = {" +C +P +P +P +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +C +"} +(40,1,1) = {" +C +P +P +P +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +C +"} +(41,1,1) = {" +C +P +P +P +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +C +"} +(42,1,1) = {" +C +P +P +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(43,1,1) = {" +C +P +P +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(44,1,1) = {" +C +P +P +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(45,1,1) = {" +C +P +P +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +c +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +q +q +q +q +q +q +q +q +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(46,1,1) = {" +C +P +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +q +q +q +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(47,1,1) = {" +C +P +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(48,1,1) = {" +C +P +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +q +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(49,1,1) = {" +C +P +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +c +c +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(50,1,1) = {" +C +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +c +c +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(51,1,1) = {" +C +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +c +c +c +c +c +c +q +q +q +q +q +c +c +c +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(52,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +q +q +q +q +q +q +c +c +c +q +q +q +q +q +q +c +c +c +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(53,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +q +q +q +q +q +q +q +c +c +c +q +q +q +q +c +c +c +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(54,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +q +q +q +q +q +q +q +c +c +c +c +q +q +c +c +c +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(55,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(56,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(57,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +q +q +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(58,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(59,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(60,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(61,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(62,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(63,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(64,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(65,1,1) = {" +C +P +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +c +q +q +q +q +q +q +q +q +q +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +C +"} +(66,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +C +"} +(67,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +C +"} +(68,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(69,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(70,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +N +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(71,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(72,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +u +u +u +u +u +u +u +u +u +u +u +u +A +u +u +u +u +u +u +u +u +u +u +u +u +u +u +N +q +q +q +N +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(73,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +N +N +N +N +N +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(74,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +N +N +N +N +N +c +c +c +c +q +q +q +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(75,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +N +q +q +q +N +c +c +c +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(76,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +c +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(77,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(78,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(79,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(80,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(81,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +q +q +q +q +N +N +N +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(82,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +P +P +C +"} +(83,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +P +P +C +"} +(84,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +u +u +u +u +u +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +P +P +C +"} +(85,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +P +P +C +"} +(86,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +P +C +"} +(87,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(88,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(89,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(90,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +q +q +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(91,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +q +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(92,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(93,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +q +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(94,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(95,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +P +P +P +P +P +P +C +"} +(96,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +C +"} +(97,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +c +c +c +c +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +n +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +C +"} +(98,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +q +q +q +c +c +c +c +c +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +P +P +P +P +P +P +P +P +P +C +"} +(99,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +q +c +c +c +c +c +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +P +C +"} +(100,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +q +q +q +q +q +c +c +c +c +c +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +P +P +q +P +P +P +q +q +P +C +"} +(101,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +q +q +q +q +c +c +c +c +c +N +N +N +N +q +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(102,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +q +q +c +c +c +c +c +N +N +N +q +q +q +N +N +N +N +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(103,1,1) = {" +C +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +q +q +q +q +c +c +c +c +c +c +N +N +q +q +q +q +q +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(104,1,1) = {" +C +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +q +q +q +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(105,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +q +q +q +q +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(106,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(107,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +N +q +N +N +q +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(108,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +N +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(109,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +N +N +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(110,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +N +N +N +N +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(111,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +N +N +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(112,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(113,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(114,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +q +P +P +P +C +"} +(115,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +C +"} +(116,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +C +"} +(117,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +C +"} +(118,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +C +"} +(119,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +C +"} +(120,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(121,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(122,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(123,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +C +"} +(124,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(125,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(126,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +c +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(127,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +c +c +c +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(128,1,1) = {" +C +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(129,1,1) = {" +C +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(130,1,1) = {" +C +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(131,1,1) = {" +C +P +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(132,1,1) = {" +C +P +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +C +"} +(133,1,1) = {" +C +P +P +P +P +P +P +P +q +q +q +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +C +"} +(134,1,1) = {" +C +P +P +P +P +P +P +P +q +q +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +C +"} +(135,1,1) = {" +C +P +P +P +P +P +P +q +q +P +P +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +C +"} +(136,1,1) = {" +C +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +q +q +q +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +P +C +"} +(137,1,1) = {" +C +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +q +q +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +P +P +q +q +q +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +P +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +C +"} +(138,1,1) = {" +C +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +q +q +q +q +q +q +q +q +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +q +q +q +q +q +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +q +q +q +q +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +C +"} +(139,1,1) = {" +C +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +C +"} +(140,1,1) = {" +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +"} diff --git a/maps/om_adventure/pois/alienchamber1.dmm b/maps/om_adventure/pois/alienchamber1.dmm new file mode 100644 index 0000000000..40aae71e2c --- /dev/null +++ b/maps/om_adventure/pois/alienchamber1.dmm @@ -0,0 +1,151 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/wall/eris/r_wall, +/area/om_adventure/poi/alienchamber1) +"e" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/shuttle/floor/alien/blue, +/area/om_adventure/poi/alienchamber1) +"f" = ( +/obj/structure/loot_pile/surface/alien/security, +/turf/simulated/shuttle/floor/alien/blue, +/area/om_adventure/poi/alienchamber1) +"n" = ( +/turf/template_noop, +/area/template_noop) +"x" = ( +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber1) +"D" = ( +/obj/structure/table/alien, +/obj/random/awayloot/looseloot, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber1) +"P" = ( +/turf/simulated/shuttle/floor/alien/blue, +/area/om_adventure/poi/alienchamber1) +"Z" = ( +/obj/structure/table/alien, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber1) + +(1,1,1) = {" +n +n +n +a +a +a +a +a +a +a +"} +(2,1,1) = {" +n +n +n +a +Z +Z +x +x +x +a +"} +(3,1,1) = {" +n +n +n +a +Z +x +e +x +x +a +"} +(4,1,1) = {" +a +a +a +a +x +P +P +e +x +a +"} +(5,1,1) = {" +a +D +Z +x +x +x +P +x +Z +a +"} +(6,1,1) = {" +a +Z +x +P +x +x +x +Z +D +a +"} +(7,1,1) = {" +a +x +e +f +P +x +a +a +a +a +"} +(8,1,1) = {" +a +x +x +e +x +Z +a +n +n +n +"} +(9,1,1) = {" +a +x +x +x +Z +Z +a +n +n +n +"} +(10,1,1) = {" +a +a +a +a +a +a +a +n +n +n +"} diff --git a/maps/om_adventure/pois/alienchamber2.dmm b/maps/om_adventure/pois/alienchamber2.dmm new file mode 100644 index 0000000000..8366c7736a --- /dev/null +++ b/maps/om_adventure/pois/alienchamber2.dmm @@ -0,0 +1,261 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"i" = ( +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber2) +"q" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/shuttle/floor/alien/blue, +/area/om_adventure/poi/alienchamber2) +"u" = ( +/turf/simulated/shuttle/floor/alien/blue, +/area/om_adventure/poi/alienchamber2) +"x" = ( +/obj/random/awayloot/looseloot, +/obj/structure/table/alien, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber2) +"H" = ( +/obj/structure/loot_pile/surface/alien/security, +/turf/simulated/shuttle/floor/alien/blue, +/area/om_adventure/poi/alienchamber2) +"M" = ( +/obj/structure/table/alien, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber2) +"P" = ( +/turf/simulated/wall/eris/r_wall, +/area/om_adventure/poi/alienchamber2) +"Q" = ( +/obj/machinery/door/airlock/alien/public, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber2) +"W" = ( +/obj/structure/table/alien, +/obj/random/awayloot/looseloot, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber2) + +(1,1,1) = {" +a +a +a +a +P +P +P +P +P +P +a +"} +(2,1,1) = {" +a +a +a +a +P +M +M +M +x +P +P +"} +(3,1,1) = {" +a +a +a +a +P +x +i +q +i +i +P +"} +(4,1,1) = {" +a +a +a +a +P +M +i +i +u +i +P +"} +(5,1,1) = {" +a +P +P +P +P +P +P +i +i +i +P +"} +(6,1,1) = {" +P +P +W +M +M +i +P +i +i +i +P +"} +(7,1,1) = {" +P +i +i +i +i +i +P +P +Q +P +P +"} +(8,1,1) = {" +P +i +i +u +i +i +P +i +i +i +P +"} +(9,1,1) = {" +P +i +q +H +u +i +Q +i +q +i +P +"} +(10,1,1) = {" +P +i +i +u +i +i +P +i +i +i +P +"} +(11,1,1) = {" +P +i +i +i +i +i +P +P +Q +P +P +"} +(12,1,1) = {" +P +P +M +x +M +i +P +i +i +i +P +"} +(13,1,1) = {" +a +P +P +P +P +P +P +i +i +i +P +"} +(14,1,1) = {" +a +a +a +a +P +M +i +i +u +i +P +"} +(15,1,1) = {" +a +a +a +a +P +x +i +q +i +i +P +"} +(16,1,1) = {" +a +a +a +a +P +M +i +i +x +P +P +"} +(17,1,1) = {" +a +a +a +a +P +P +P +P +P +P +a +"} diff --git a/maps/om_adventure/pois/alienchamber3.dmm b/maps/om_adventure/pois/alienchamber3.dmm new file mode 100644 index 0000000000..a8c3a50974 --- /dev/null +++ b/maps/om_adventure/pois/alienchamber3.dmm @@ -0,0 +1,221 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"c" = ( +/turf/simulated/shuttle/floor/alien/blue, +/area/om_adventure/poi/alienchamber3) +"f" = ( +/obj/structure/loot_pile/surface/alien/security, +/turf/simulated/shuttle/floor/alien/blue, +/area/om_adventure/poi/alienchamber3) +"r" = ( +/turf/simulated/wall/eris/r_wall, +/area/om_adventure/poi/alienchamber3) +"P" = ( +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber3) +"V" = ( +/obj/random/awayloot/looseloot, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber3) +"X" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber3) + +(1,1,1) = {" +a +a +a +a +a +r +r +r +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +r +r +P +r +r +a +a +a +a +"} +(3,1,1) = {" +a +a +a +r +r +P +P +P +r +r +a +a +a +"} +(4,1,1) = {" +a +a +r +r +P +P +c +P +P +r +r +a +a +"} +(5,1,1) = {" +a +r +r +P +V +P +X +P +V +P +r +r +a +"} +(6,1,1) = {" +r +r +P +P +P +P +c +P +P +P +P +r +r +"} +(7,1,1) = {" +r +P +P +c +X +c +f +c +X +c +P +P +r +"} +(8,1,1) = {" +r +r +P +P +P +P +c +P +P +P +P +r +r +"} +(9,1,1) = {" +a +r +r +P +P +V +X +P +P +P +r +r +a +"} +(10,1,1) = {" +a +a +r +r +P +P +c +P +P +r +r +a +a +"} +(11,1,1) = {" +a +a +a +r +r +P +P +P +r +r +a +a +a +"} +(12,1,1) = {" +a +a +a +a +r +r +P +r +r +a +a +a +a +"} +(13,1,1) = {" +a +a +a +a +a +r +r +r +a +a +a +a +a +"} diff --git a/maps/om_adventure/pois/alienchamber4.dmm b/maps/om_adventure/pois/alienchamber4.dmm new file mode 100644 index 0000000000..a72674a530 --- /dev/null +++ b/maps/om_adventure/pois/alienchamber4.dmm @@ -0,0 +1,295 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"h" = ( +/obj/random/awayloot/looseloot, +/obj/structure/table/alien, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber4) +"n" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/shuttle/floor/alien/blue, +/area/om_adventure/poi/alienchamber4) +"o" = ( +/turf/simulated/shuttle/floor/alien/blue, +/area/om_adventure/poi/alienchamber4) +"q" = ( +/obj/structure/table/alien, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber4) +"s" = ( +/obj/structure/table/alien, +/obj/random/awayloot/looseloot, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber4) +"L" = ( +/turf/simulated/wall/eris/r_wall, +/area/om_adventure/poi/alienchamber4) +"N" = ( +/obj/structure/loot_pile/surface/alien/security, +/turf/simulated/shuttle/floor/alien/blue, +/area/om_adventure/poi/alienchamber4) +"O" = ( +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber4) +"R" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/shuttle/floor/alienplating/vacuum, +/area/om_adventure/poi/alienchamber4) + +(1,1,1) = {" +a +a +L +a +a +a +L +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +L +L +L +L +L +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +L +L +L +q +h +q +L +L +L +a +a +a +a +a +a +"} +(4,1,1) = {" +a +L +q +O +O +O +O +L +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +L +h +O +n +O +O +L +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +L +O +O +O +O +O +L +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +L +O +O +O +O +O +L +a +a +a +a +L +a +a +"} +(8,1,1) = {" +a +L +O +O +O +O +O +L +L +L +L +L +L +a +a +"} +(9,1,1) = {" +a +L +O +O +R +O +O +O +O +O +O +O +L +L +L +"} +(10,1,1) = {" +a +L +O +O +o +O +O +O +O +O +O +O +s +L +a +"} +(11,1,1) = {" +a +L +q +o +N +o +R +O +O +O +n +O +q +L +a +"} +(12,1,1) = {" +a +L +q +O +o +O +O +O +O +O +O +O +q +L +a +"} +(13,1,1) = {" +L +L +L +s +q +O +O +O +O +O +q +q +L +L +L +"} +(14,1,1) = {" +a +a +L +L +L +L +L +L +L +L +L +L +L +a +a +"} +(15,1,1) = {" +a +a +L +a +a +a +a +a +a +a +a +a +L +a +a +"} diff --git a/maps/om_adventure/pois/cabin1.dmm b/maps/om_adventure/pois/cabin1.dmm new file mode 100644 index 0000000000..0adc084576 --- /dev/null +++ b/maps/om_adventure/pois/cabin1.dmm @@ -0,0 +1,324 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/obj/structure/table/woodentable, +/obj/random/awayloot/looseloot, +/obj/random/tech_supply, +/turf/simulated/floor/carpet, +/area/om_adventure/poi/cabin1) +"c" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin1) +"d" = ( +/obj/structure/table/reinforced, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin1) +"f" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/random/meat, +/obj/random/meat, +/obj/random/meat, +/obj/random/meat, +/obj/random/meat, +/obj/random/snack, +/obj/random/snack, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin1) +"g" = ( +/obj/structure/bed/chair/sofa/brown, +/obj/random/snack, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin1) +"i" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin1) +"j" = ( +/turf/simulated/floor/carpet, +/area/om_adventure/poi/cabin1) +"k" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/flame/candle, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin1) +"r" = ( +/obj/structure/bookcase, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin1) +"s" = ( +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin1) +"t" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin1) +"u" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/plating, +/area/om_adventure/poi/cabin1) +"v" = ( +/obj/item/weapon/bedsheet/browndouble, +/obj/structure/bed/double/padded, +/obj/structure/curtain/black, +/turf/simulated/floor/carpet, +/area/om_adventure/poi/cabin1) +"w" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/cabin1) +"x" = ( +/obj/structure/table/reinforced, +/obj/random/snack, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin1) +"z" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin1) +"B" = ( +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/cabin1) +"C" = ( +/obj/structure/bed/chair/sofa/brown/corner, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin1) +"D" = ( +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin1) +"F" = ( +/obj/structure/table/darkglass, +/obj/random/awayloot/looseloot, +/obj/item/weapon/flame/candle, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin1) +"H" = ( +/obj/structure/table/woodentable, +/obj/random/tech_supply, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin1) +"I" = ( +/obj/structure/closet, +/obj/random/awayloot/looseloot, +/obj/random/awayloot/looseloot, +/obj/random/tech_supply, +/turf/simulated/floor/carpet, +/area/om_adventure/poi/cabin1) +"L" = ( +/obj/structure/table/woodentable, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin1) +"Q" = ( +/turf/simulated/wall/log, +/area/om_adventure/poi/cabin1) +"R" = ( +/obj/structure/bed/chair/sofa/brown/left{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin1) +"S" = ( +/obj/structure/bed/chair/sofa/brown/right, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin1) +"T" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/carpet, +/area/om_adventure/poi/cabin1) +"X" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/om_adventure/poi/cabin1) +"Z" = ( +/obj/structure/table/woodentable, +/obj/random/tech_supply/component, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin1) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +Q +Q +Q +Q +Q +Q +Q +X +Q +Q +a +"} +(3,1,1) = {" +a +Q +x +k +x +d +Q +b +j +v +Q +a +"} +(4,1,1) = {" +a +X +d +i +D +D +Q +I +j +j +X +a +"} +(5,1,1) = {" +a +X +c +D +D +D +z +j +T +j +X +a +"} +(6,1,1) = {" +a +Q +f +D +D +D +Q +j +j +j +Q +a +"} +(7,1,1) = {" +a +Q +Q +k +D +Q +Q +Q +Q +Q +Q +a +"} +(8,1,1) = {" +a +Q +L +s +s +s +r +Q +a +a +a +a +"} +(9,1,1) = {" +a +Q +S +s +s +s +H +Q +B +a +a +a +"} +(10,1,1) = {" +a +Q +g +s +F +s +s +u +B +B +w +a +"} +(11,1,1) = {" +a +Q +C +R +t +s +Z +Q +B +a +a +B +"} +(12,1,1) = {" +a +Q +Q +X +X +X +Q +Q +a +a +a +a +"} +(13,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/om_adventure/pois/cabin2.dmm b/maps/om_adventure/pois/cabin2.dmm new file mode 100644 index 0000000000..31b9b10e2d --- /dev/null +++ b/maps/om_adventure/pois/cabin2.dmm @@ -0,0 +1,404 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"c" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin2) +"e" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/plating/eris/under, +/area/om_adventure/poi/cabin2) +"g" = ( +/obj/structure/table/rack/shelf, +/obj/random/mre, +/obj/random/mre, +/obj/random/mre, +/obj/random/mre, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin2) +"i" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/outdoors/sidewalk/side, +/area/om_adventure/poi/cabin2) +"k" = ( +/turf/simulated/wall/log, +/area/om_adventure/poi/cabin2) +"l" = ( +/obj/structure/table/steel, +/obj/random/multiple/underdark/treasure, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin2) +"n" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin2) +"p" = ( +/obj/structure/table/woodentable, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin2) +"q" = ( +/obj/structure/table/steel, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin2) +"r" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/carpet/bcarpet, +/area/om_adventure/poi/cabin2) +"s" = ( +/obj/structure/bed/chair/sofa/corp/right, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin2) +"t" = ( +/obj/structure/bed/chair/sofa/brown/corner, +/turf/simulated/floor/carpet/bcarpet, +/area/om_adventure/poi/cabin2) +"u" = ( +/obj/structure/toilet/prison{ + dir = 8 + }, +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/tiled/techmaint, +/area/om_adventure/poi/cabin2) +"v" = ( +/obj/structure/bed/chair/sofa/brown/left{ + dir = 8 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/om_adventure/poi/cabin2) +"w" = ( +/obj/structure/table/rack, +/obj/random/maintenance, +/turf/simulated/floor/carpet/bcarpet, +/area/om_adventure/poi/cabin2) +"x" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/browndouble, +/obj/structure/curtain/black, +/turf/simulated/floor/carpet, +/area/om_adventure/poi/cabin2) +"y" = ( +/obj/structure/table/steel, +/obj/random/material, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin2) +"z" = ( +/turf/simulated/floor/outdoors/sidewalk/side, +/area/om_adventure/poi/cabin2) +"A" = ( +/obj/structure/bed/chair/sofa/brown, +/turf/simulated/floor/carpet/bcarpet, +/area/om_adventure/poi/cabin2) +"B" = ( +/obj/structure/table/rack, +/obj/random/maintenance, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/carpet/bcarpet, +/area/om_adventure/poi/cabin2) +"D" = ( +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin2) +"E" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/carpet, +/area/om_adventure/poi/cabin2) +"F" = ( +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/cabin2) +"H" = ( +/obj/structure/table/woodentable, +/obj/random/snack, +/turf/simulated/floor/carpet/bcarpet, +/area/om_adventure/poi/cabin2) +"I" = ( +/obj/structure/table/woodentable, +/obj/random/awayloot/looseloot, +/obj/random/maintenance, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin2) +"J" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin2) +"K" = ( +/obj/structure/bed/chair/sofa/brown/right{ + dir = 4 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/om_adventure/poi/cabin2) +"L" = ( +/obj/structure/table/woodentable, +/obj/random/maintenance, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin2) +"M" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/om_adventure/poi/cabin2) +"N" = ( +/obj/structure/sink{ + pixel_y = 18 + }, +/turf/simulated/floor/tiled/techmaint, +/area/om_adventure/poi/cabin2) +"O" = ( +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin2) +"P" = ( +/obj/structure/bed/chair/sofa/brown/corner{ + dir = 1 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/om_adventure/poi/cabin2) +"Q" = ( +/turf/simulated/floor/carpet/bcarpet, +/area/om_adventure/poi/cabin2) +"S" = ( +/turf/simulated/floor/tiled/techmaint, +/area/om_adventure/poi/cabin2) +"T" = ( +/turf/simulated/floor/carpet, +/area/om_adventure/poi/cabin2) +"V" = ( +/obj/structure/table/rack, +/obj/random/awayloot/looseloot, +/obj/random/tech_supply, +/obj/random/tech_supply, +/turf/simulated/floor/bmarble, +/area/om_adventure/poi/cabin2) +"X" = ( +/obj/structure/bed/chair/sofa/corp/left, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin2) +"Y" = ( +/obj/structure/table/woodentable, +/obj/random/awayloot/looseloot, +/obj/random/maintenance, +/obj/random/maintenance, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin2) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +F +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +k +k +M +M +k +k +a +a +a +k +k +M +M +M +k +k +a +"} +(3,1,1) = {" +a +k +P +K +Q +B +k +a +i +a +k +I +D +T +T +x +k +a +"} +(4,1,1) = {" +a +k +A +H +r +Q +M +a +z +a +M +L +D +T +E +T +M +a +"} +(5,1,1) = {" +a +k +t +v +Q +w +k +k +e +k +k +D +D +T +T +T +M +a +"} +(6,1,1) = {" +a +k +k +k +e +k +k +V +O +V +k +D +D +J +p +L +k +a +"} +(7,1,1) = {" +a +k +Y +L +D +D +k +g +c +O +k +D +D +k +k +k +k +a +"} +(8,1,1) = {" +a +M +s +n +D +D +e +O +O +O +e +D +D +e +S +S +k +a +"} +(9,1,1) = {" +a +k +X +D +D +p +k +y +q +l +k +p +L +k +N +u +k +a +"} +(10,1,1) = {" +a +k +k +M +M +k +k +k +k +k +k +k +k +k +k +k +k +a +"} +(11,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/om_adventure/pois/cabin3.dmm b/maps/om_adventure/pois/cabin3.dmm new file mode 100644 index 0000000000..02adedf2c1 --- /dev/null +++ b/maps/om_adventure/pois/cabin3.dmm @@ -0,0 +1,161 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/wall/wood, +/area/om_adventure/poi/cabin3) +"d" = ( +/obj/structure/bonfire, +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/cabin3) +"i" = ( +/turf/template_noop, +/area/template_noop) +"k" = ( +/obj/random/awayloot/looseloot, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin3) +"n" = ( +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/cabin3) +"r" = ( +/obj/effect/decal/remains, +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/cabin3) +"z" = ( +/turf/template_noop, +/area/om_adventure/poi/cabin3) +"M" = ( +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin3) +"S" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/wood, +/area/om_adventure/poi/cabin3) +"T" = ( +/obj/tether_away_spawner/spookyland, +/turf/template_noop, +/area/om_adventure/poi/cabin3) +"V" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/cabin3) + +(1,1,1) = {" +a +a +a +a +z +z +z +a +a +a +"} +(2,1,1) = {" +a +k +M +M +z +T +z +z +M +a +"} +(3,1,1) = {" +z +z +M +M +z +z +n +k +M +a +"} +(4,1,1) = {" +z +z +n +M +M +n +n +S +M +a +"} +(5,1,1) = {" +z +T +n +n +r +n +M +M +M +a +"} +(6,1,1) = {" +z +z +n +n +n +n +a +a +a +a +"} +(7,1,1) = {" +a +M +z +n +n +n +a +i +i +i +"} +(8,1,1) = {" +z +z +k +z +n +n +a +i +i +i +"} +(9,1,1) = {" +a +M +M +z +V +n +a +i +d +i +"} +(10,1,1) = {" +a +a +a +z +z +z +a +i +i +i +"} diff --git a/maps/om_adventure/pois/camp.dmm b/maps/om_adventure/pois/camp.dmm new file mode 100644 index 0000000000..13960f3854 --- /dev/null +++ b/maps/om_adventure/pois/camp.dmm @@ -0,0 +1,258 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"n" = ( +/obj/structure/table/rack/steel, +/obj/fiftyspawner/log, +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/camp) +"x" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/camp) +"y" = ( +/obj/structure/flora/tree/bigtree, +/turf/template_noop, +/area/om_adventure/poi/camp) +"z" = ( +/obj/structure/table/rack/steel, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/camp) +"A" = ( +/obj/structure/bonfire, +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/camp) +"H" = ( +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/camp) +"M" = ( +/turf/simulated/wall/log, +/area/om_adventure/poi/camp) +"U" = ( +/obj/structure/table/rack/steel, +/obj/item/weapon/storage/box/matches, +/turf/simulated/floor/outdoors/newdirt, +/area/om_adventure/poi/camp) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +M +M +M +M +M +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +y +a +a +a +M +n +z +U +M +a +H +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +H +a +M +H +x +H +M +a +a +a +"} +(4,1,1) = {" +a +H +a +a +a +a +a +x +H +H +a +a +H +a +a +H +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +H +H +H +H +H +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +H +H +a +H +H +H +A +H +H +H +a +H +H +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +H +H +H +H +H +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +H +H +x +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +y +a +a +H +a +a +a +a +y +a +a +a +a +"} +(10,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(11,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/om_adventure/pois/darkstar.dmm b/maps/om_adventure/pois/darkstar.dmm new file mode 100644 index 0000000000..a41ef6cb59 --- /dev/null +++ b/maps/om_adventure/pois/darkstar.dmm @@ -0,0 +1,93 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"e" = ( +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/darkstar) +"z" = ( +/mob/living/simple_mob/vore/alienanimals/space_ghost, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/darkstar) + +(1,1,1) = {" +a +a +a +e +a +a +a +"} +(2,1,1) = {" +a +e +a +a +a +e +a +"} +(3,1,1) = {" +a +a +a +e +a +a +a +"} +(4,1,1) = {" +a +a +e +e +e +a +a +"} +(5,1,1) = {" +e +e +e +z +e +e +e +"} +(6,1,1) = {" +a +a +e +e +e +a +a +"} +(7,1,1) = {" +a +a +a +e +a +a +a +"} +(8,1,1) = {" +a +e +a +a +a +e +a +"} +(9,1,1) = {" +a +a +a +e +a +a +a +"} diff --git a/maps/om_adventure/pois/darktear1.dmm b/maps/om_adventure/pois/darktear1.dmm new file mode 100644 index 0000000000..224bb457bf --- /dev/null +++ b/maps/om_adventure/pois/darktear1.dmm @@ -0,0 +1,93 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/darktear1) +"I" = ( +/turf/template_noop, +/area/template_noop) +"Z" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/darktear1) + +(1,1,1) = {" +I +I +I +I +I +I +a +"} +(2,1,1) = {" +I +I +a +I +I +a +I +"} +(3,1,1) = {" +I +I +I +I +a +a +I +"} +(4,1,1) = {" +I +I +I +a +a +a +I +"} +(5,1,1) = {" +I +I +a +Z +a +I +I +"} +(6,1,1) = {" +I +I +a +a +a +I +I +"} +(7,1,1) = {" +I +a +a +a +I +I +I +"} +(8,1,1) = {" +I +a +I +I +I +a +I +"} +(9,1,1) = {" +a +I +I +I +I +I +I +"} diff --git a/maps/om_adventure/pois/darktear2.dmm b/maps/om_adventure/pois/darktear2.dmm new file mode 100644 index 0000000000..a4932cf5cf --- /dev/null +++ b/maps/om_adventure/pois/darktear2.dmm @@ -0,0 +1,93 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/darktear2) +"Q" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/darktear2) +"S" = ( +/turf/template_noop, +/area/template_noop) + +(1,1,1) = {" +a +S +S +S +S +S +S +"} +(2,1,1) = {" +S +a +a +S +S +a +S +"} +(3,1,1) = {" +S +Q +a +S +S +S +S +"} +(4,1,1) = {" +S +a +a +a +a +S +S +"} +(5,1,1) = {" +S +S +a +a +a +a +S +"} +(6,1,1) = {" +S +S +a +a +a +a +S +"} +(7,1,1) = {" +S +S +a +a +Q +a +S +"} +(8,1,1) = {" +S +a +S +a +a +a +S +"} +(9,1,1) = {" +S +S +S +S +S +S +a +"} diff --git a/maps/om_adventure/pois/darktear3.dmm b/maps/om_adventure/pois/darktear3.dmm new file mode 100644 index 0000000000..89a5dec553 --- /dev/null +++ b/maps/om_adventure/pois/darktear3.dmm @@ -0,0 +1,89 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"v" = ( +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/darktear3) +"Y" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/darktear3) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +v +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +v +v +v +a +a +a +a +v +"} +(4,1,1) = {" +a +a +v +v +v +v +v +v +a +"} +(5,1,1) = {" +a +a +v +v +Y +v +v +v +a +"} +(6,1,1) = {" +a +a +a +a +v +v +v +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/om_adventure/pois/darktear4.dmm b/maps/om_adventure/pois/darktear4.dmm new file mode 100644 index 0000000000..655e97b230 --- /dev/null +++ b/maps/om_adventure/pois/darktear4.dmm @@ -0,0 +1,89 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"g" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/darktear4) +"j" = ( +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/darktear4) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +j +a +a +a +a +a +a +j +"} +(3,1,1) = {" +a +a +g +j +j +j +a +j +a +"} +(4,1,1) = {" +a +j +j +j +j +j +j +j +a +"} +(5,1,1) = {" +j +a +a +a +j +j +g +a +a +"} +(6,1,1) = {" +a +a +a +a +a +j +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +j +a +a +"} diff --git a/maps/om_adventure/pois/fleshtear1.dmm b/maps/om_adventure/pois/fleshtear1.dmm new file mode 100644 index 0000000000..e2a3d25f18 --- /dev/null +++ b/maps/om_adventure/pois/fleshtear1.dmm @@ -0,0 +1,166 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/mob/living/simple_mob/creature, +/turf/simulated/floor/flesh{ + base_icon = 'icons/turf/stomach_vr.dmi' + }, +/area/om_adventure/poi/fleshtear1) +"K" = ( +/turf/simulated/floor/flesh{ + base_icon = 'icons/turf/stomach_vr.dmi' + }, +/area/om_adventure/poi/fleshtear1) + +(1,1,1) = {" +a +a +a +K +K +a +a +a +a +K +a +a +a +"} +(2,1,1) = {" +a +a +K +K +a +a +a +K +K +K +a +K +a +"} +(3,1,1) = {" +a +a +a +a +a +K +K +K +K +K +a +K +K +"} +(4,1,1) = {" +K +K +K +K +K +K +b +K +K +a +a +a +a +"} +(5,1,1) = {" +K +K +K +K +K +K +K +K +K +a +a +a +a +"} +(6,1,1) = {" +a +K +K +K +K +K +K +K +a +a +a +K +a +"} +(7,1,1) = {" +a +a +K +b +K +K +K +K +K +a +K +K +a +"} +(8,1,1) = {" +K +a +K +K +K +K +K +K +K +a +K +a +a +"} +(9,1,1) = {" +K +a +a +K +K +K +K +a +a +a +a +a +a +"} +(10,1,1) = {" +a +K +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/om_adventure/pois/fleshtear2.dmm b/maps/om_adventure/pois/fleshtear2.dmm new file mode 100644 index 0000000000..19d435ce33 --- /dev/null +++ b/maps/om_adventure/pois/fleshtear2.dmm @@ -0,0 +1,79 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/flesh{ + base_icon = 'icons/turf/stomach_vr.dmi' + }, +/area/om_adventure/poi/fleshtear2) +"B" = ( +/turf/template_noop, +/area/template_noop) +"H" = ( +/mob/living/simple_mob/creature, +/turf/simulated/floor/flesh{ + base_icon = 'icons/turf/stomach_vr.dmi' + }, +/area/om_adventure/poi/fleshtear2) + +(1,1,1) = {" +B +B +B +B +B +a +a +"} +(2,1,1) = {" +B +a +a +a +a +a +a +"} +(3,1,1) = {" +B +B +a +a +a +a +B +"} +(4,1,1) = {" +B +B +a +H +a +a +B +"} +(5,1,1) = {" +B +a +a +a +a +a +B +"} +(6,1,1) = {" +a +a +a +a +a +B +B +"} +(7,1,1) = {" +a +a +B +B +B +B +B +"} diff --git a/maps/om_adventure/pois/fleshtear3.dmm b/maps/om_adventure/pois/fleshtear3.dmm new file mode 100644 index 0000000000..1c77a34996 --- /dev/null +++ b/maps/om_adventure/pois/fleshtear3.dmm @@ -0,0 +1,115 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"M" = ( +/mob/living/simple_mob/creature, +/turf/simulated/floor/flesh{ + base_icon = 'icons/turf/stomach_vr.dmi' + }, +/area/om_adventure/poi/fleshtear3) +"Q" = ( +/turf/simulated/floor/flesh{ + base_icon = 'icons/turf/stomach_vr.dmi' + }, +/area/om_adventure/poi/fleshtear3) + +(1,1,1) = {" +a +a +Q +Q +Q +a +a +a +a +"} +(2,1,1) = {" +a +Q +a +a +Q +Q +Q +Q +a +"} +(3,1,1) = {" +Q +Q +Q +a +a +a +a +Q +a +"} +(4,1,1) = {" +Q +a +Q +Q +Q +Q +a +Q +Q +"} +(5,1,1) = {" +Q +a +Q +M +Q +Q +a +Q +Q +"} +(6,1,1) = {" +Q +a +Q +Q +Q +a +a +a +Q +"} +(7,1,1) = {" +Q +Q +a +Q +Q +Q +a +Q +Q +"} +(8,1,1) = {" +a +Q +Q +a +Q +Q +Q +Q +Q +"} +(9,1,1) = {" +a +a +Q +Q +a +Q +Q +Q +a +"} diff --git a/maps/om_adventure/pois/fleshtear4.dmm b/maps/om_adventure/pois/fleshtear4.dmm new file mode 100644 index 0000000000..077d29a8b7 --- /dev/null +++ b/maps/om_adventure/pois/fleshtear4.dmm @@ -0,0 +1,86 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"m" = ( +/turf/simulated/floor/flesh{ + base_icon = 'icons/turf/stomach_vr.dmi' + }, +/area/om_adventure/poi/fleshtear4) +"n" = ( +/mob/living/simple_mob/creature, +/turf/simulated/floor/flesh{ + base_icon = 'icons/turf/stomach_vr.dmi' + }, +/area/om_adventure/poi/fleshtear4) + +(1,1,1) = {" +m +m +a +a +a +"} +(2,1,1) = {" +a +m +m +m +a +"} +(3,1,1) = {" +a +a +n +m +a +"} +(4,1,1) = {" +a +a +a +m +m +"} +(5,1,1) = {" +a +a +m +m +m +"} +(6,1,1) = {" +a +a +m +m +m +"} +(7,1,1) = {" +a +m +m +m +a +"} +(8,1,1) = {" +a +n +m +m +a +"} +(9,1,1) = {" +m +m +a +a +a +"} +(10,1,1) = {" +m +a +a +a +a +"} diff --git a/maps/om_adventure/pois/medicalcenter.dmm b/maps/om_adventure/pois/medicalcenter.dmm new file mode 100644 index 0000000000..aea560a0af --- /dev/null +++ b/maps/om_adventure/pois/medicalcenter.dmm @@ -0,0 +1,328 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"j" = ( +/obj/machinery/door/airlock/angled_bay/standard/glass, +/turf/simulated/floor/plating/eris/under, +/area/om_adventure/poi/medicalcenter) +"k" = ( +/obj/random/pottedplant, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"m" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/medical, +/obj/structure/curtain/medical, +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"q" = ( +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"r" = ( +/obj/structure/salvageable/machine, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"t" = ( +/obj/effect/low_wall_spawner/eris/reinforced/rphoron, +/turf/simulated/floor/plating/eris/under, +/area/om_adventure/poi/medicalcenter) +"v" = ( +/obj/structure/table/glass, +/obj/structure/salvageable/personal, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"y" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"z" = ( +/obj/structure/bed/chair/sofa/blue/left{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"A" = ( +/turf/simulated/wall/eris/r_wall, +/area/om_adventure/poi/medicalcenter) +"C" = ( +/obj/structure/bed/chair/sofa/blue/right, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"D" = ( +/obj/structure/table/glass, +/obj/random/medical, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"E" = ( +/obj/structure/salvageable/computer, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"G" = ( +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"H" = ( +/obj/structure/table/glass, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"I" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/medical, +/obj/structure/curtain/medical, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"P" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"Q" = ( +/obj/machinery/door/airlock/angled_bay/standard/glass{ + dir = 4 + }, +/turf/simulated/floor/plating/eris/under, +/area/om_adventure/poi/medicalcenter) +"T" = ( +/obj/structure/table/glass, +/obj/random/medical, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"W" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"X" = ( +/obj/structure/table/glass, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) +"Z" = ( +/obj/structure/bed/chair/sofa/blue/corner, +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/tiled/eris/white/orangecorner, +/area/om_adventure/poi/medicalcenter) + +(1,1,1) = {" +a +a +a +A +a +A +a +a +A +a +A +a +"} +(2,1,1) = {" +a +a +A +A +A +A +t +t +A +A +A +A +"} +(3,1,1) = {" +a +a +a +A +C +q +q +q +q +H +A +a +"} +(4,1,1) = {" +a +A +a +A +Z +z +q +q +q +T +A +a +"} +(5,1,1) = {" +A +A +A +A +A +A +k +y +q +X +A +a +"} +(6,1,1) = {" +a +A +E +G +q +A +A +A +Q +A +A +A +"} +(7,1,1) = {" +a +t +q +H +q +A +q +W +q +k +A +a +"} +(8,1,1) = {" +a +A +q +P +q +j +q +q +P +q +j +a +"} +(9,1,1) = {" +a +t +q +T +q +A +q +y +q +k +A +a +"} +(10,1,1) = {" +a +A +r +v +q +A +A +A +Q +A +A +A +"} +(11,1,1) = {" +A +A +A +A +A +A +m +D +q +I +A +a +"} +(12,1,1) = {" +a +A +a +A +k +q +q +q +q +k +A +a +"} +(13,1,1) = {" +a +a +a +A +H +I +H +I +T +I +A +a +"} +(14,1,1) = {" +a +a +A +A +A +A +t +t +A +A +A +A +"} +(15,1,1) = {" +a +a +a +A +a +A +a +a +A +a +A +a +"} diff --git a/maps/om_adventure/pois/shippart1.dmm b/maps/om_adventure/pois/shippart1.dmm new file mode 100644 index 0000000000..7d2831eade --- /dev/null +++ b/maps/om_adventure/pois/shippart1.dmm @@ -0,0 +1,396 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/simulated/floor/tiled/eris/dark/techfloor, +/area/om_adventure/poi/shippart1) +"d" = ( +/obj/random/awayloot/looseloot, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shippart1) +"g" = ( +/turf/simulated/wall/eris/r_wall, +/area/om_adventure/poi/shippart1) +"h" = ( +/obj/random/awayloot/looseloot, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating/eris/under, +/area/om_adventure/poi/shippart1) +"j" = ( +/obj/tether_away_spawner/spookyland, +/turf/template_noop, +/area/template_noop) +"p" = ( +/obj/random/awayloot/looseloot, +/turf/simulated/floor/plating/eris/under, +/area/om_adventure/poi/shippart1) +"q" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/tiled/eris/dark/techfloor, +/area/om_adventure/poi/shippart1) +"r" = ( +/obj/item/weapon/material/shard, +/turf/template_noop, +/area/template_noop) +"s" = ( +/obj/random/tech_supply/component, +/turf/simulated/floor/tiled/eris/dark/techfloor, +/area/om_adventure/poi/shippart1) +"t" = ( +/obj/structure/frame/computer, +/obj/random/tech_supply/component, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shippart1) +"v" = ( +/obj/effect/floor_decal/rust, +/obj/random/tech_supply/component, +/turf/simulated/floor/plating/eris/under, +/area/om_adventure/poi/shippart1) +"w" = ( +/obj/effect/decal/remains/tajaran, +/turf/template_noop, +/area/template_noop) +"D" = ( +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shippart1) +"F" = ( +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shippart1) +"I" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating/eris/under, +/area/om_adventure/poi/shippart1) +"J" = ( +/obj/structure/salvageable/bliss, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shippart1) +"M" = ( +/obj/item/weapon/material/shard, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating/eris/under, +/area/om_adventure/poi/shippart1) +"O" = ( +/obj/effect/decal/remains/ribcage, +/turf/template_noop, +/area/template_noop) +"Q" = ( +/obj/item/weapon/material/shard, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shippart1) +"R" = ( +/obj/random/tech_supply/component, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shippart1) +"T" = ( +/obj/item/weapon/material/shard/shrapnel, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shippart1) +"X" = ( +/obj/item/weapon/material/shard/shrapnel, +/turf/template_noop, +/area/template_noop) +"Z" = ( +/obj/effect/decal/remains/deer, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shippart1) + +(1,1,1) = {" +a +a +a +a +a +a +F +a +a +a +F +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +F +j +a +X +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +X +a +a +F +a +a +X +a +F +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +w +a +F +F +g +g +v +g +a +r +j +a +F +a +a +a +a +a +"} +(5,1,1) = {" +X +a +X +a +F +g +g +g +t +I +p +F +F +F +F +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +F +g +M +g +d +D +Z +D +I +I +F +F +F +F +F +a +a +F +F +"} +(7,1,1) = {" +a +F +T +M +t +b +q +s +b +b +b +I +I +F +F +F +F +F +a +a +a +"} +(8,1,1) = {" +a +r +F +g +I +g +R +Q +d +D +M +v +F +F +F +F +F +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +F +g +g +g +J +I +h +D +I +I +F +a +a +a +a +a +F +"} +(10,1,1) = {" +a +a +j +T +a +F +F +g +g +I +g +g +g +g +a +a +F +F +F +a +a +"} +(11,1,1) = {" +a +X +a +a +X +a +a +a +a +a +T +a +a +a +j +a +a +a +a +a +a +"} +(12,1,1) = {" +a +a +a +a +a +a +a +a +X +a +a +a +O +a +a +a +a +a +a +a +a +"} +(13,1,1) = {" +a +a +a +a +a +a +F +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/om_adventure/pois/shuttlewreck1.dmm b/maps/om_adventure/pois/shuttlewreck1.dmm new file mode 100644 index 0000000000..c57959fc95 --- /dev/null +++ b/maps/om_adventure/pois/shuttlewreck1.dmm @@ -0,0 +1,152 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"e" = ( +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck1) +"g" = ( +/obj/random/tech_supply/component, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck1) +"i" = ( +/obj/machinery/door/airlock/external, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck1) +"m" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 1 + }, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck1) +"s" = ( +/obj/structure/shuttle/window, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck1) +"t" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck1) +"v" = ( +/obj/random/tech_supply/component, +/turf/template_noop, +/area/template_noop) +"D" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck1) +"M" = ( +/turf/simulated/shuttle/wall, +/area/om_adventure/poi/shuttlewreck1) +"P" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 1 + }, +/obj/random/awayloot/looseloot, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck1) +"W" = ( +/obj/random/tech_supply, +/turf/template_noop, +/area/template_noop) + +(1,1,1) = {" +a +a +a +a +a +a +W +a +a +"} +(2,1,1) = {" +a +a +a +e +a +a +a +e +a +"} +(3,1,1) = {" +e +t +e +g +a +e +a +a +a +"} +(4,1,1) = {" +a +e +M +M +M +M +D +g +a +"} +(5,1,1) = {" +e +e +s +P +m +i +e +e +e +"} +(6,1,1) = {" +a +e +M +M +M +M +D +t +a +"} +(7,1,1) = {" +a +e +e +e +a +e +v +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/om_adventure/pois/shuttlewreck2.dmm b/maps/om_adventure/pois/shuttlewreck2.dmm new file mode 100644 index 0000000000..c741ee7055 --- /dev/null +++ b/maps/om_adventure/pois/shuttlewreck2.dmm @@ -0,0 +1,330 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"c" = ( +/obj/structure/table/steel_reinforced, +/obj/machinery/light{ + dir = 8 + }, +/obj/random/tech_supply/component, +/obj/random/tech_supply, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck2) +"e" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/phoron{ + start_pressure = 0 + }, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"g" = ( +/obj/structure/cable/green{ + icon_state = "4-10" + }, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"h" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 10 + }, +/turf/simulated/shuttle/wall, +/area/om_adventure/poi/shuttlewreck2) +"l" = ( +/obj/structure/window/reinforced, +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"m" = ( +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"n" = ( +/obj/structure/table/steel_reinforced, +/obj/random/awayloot/looseloot, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck2) +"o" = ( +/obj/structure/frame/computer, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck2) +"p" = ( +/obj/structure/table/steel_reinforced, +/obj/machinery/light{ + dir = 4 + }, +/obj/random/tech_supply, +/obj/random/awayloot/looseloot, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck2) +"q" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck2) +"r" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"s" = ( +/obj/machinery/door/airlock/external, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"v" = ( +/obj/structure/cable/green, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck2) +"w" = ( +/obj/tether_away_spawner/spookyland, +/turf/template_noop, +/area/template_noop) +"x" = ( +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"y" = ( +/turf/simulated/shuttle/wall/hard_corner, +/area/om_adventure/poi/shuttlewreck2) +"A" = ( +/turf/simulated/shuttle/wall, +/area/om_adventure/poi/shuttlewreck2) +"B" = ( +/obj/structure/table/steel_reinforced, +/obj/random/tech_supply/component, +/obj/random/awayloot/looseloot, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck2) +"D" = ( +/obj/structure/cable/green{ + icon_state = "2-5" + }, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck2) +"E" = ( +/obj/structure/table/rack/steel, +/obj/random/tech_supply/component, +/obj/random/tech_supply/component, +/obj/random/tech_supply/component, +/obj/random/tech_supply/component, +/obj/random/tech_supply/component, +/obj/random/tech_supply, +/obj/random/tech_supply, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"J" = ( +/obj/structure/table/rack/steel, +/obj/item/frame/apc, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"K" = ( +/obj/structure/table/rack/steel, +/obj/item/weapon/tank/phoron, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"N" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 6 + }, +/turf/simulated/shuttle/wall, +/area/om_adventure/poi/shuttlewreck2) +"P" = ( +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck2) +"R" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/phoron{ + start_pressure = 0 + }, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"T" = ( +/obj/structure/shuttle/window, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) +"U" = ( +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck2) +"V" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 1 + }, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck2) +"W" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck2) + +(1,1,1) = {" +a +a +a +a +a +a +U +a +a +a +"} +(2,1,1) = {" +a +w +U +A +A +A +N +A +A +a +"} +(3,1,1) = {" +a +a +A +A +K +E +e +W +r +a +"} +(4,1,1) = {" +a +A +A +P +m +m +m +W +r +a +"} +(5,1,1) = {" +U +A +c +n +P +P +q +y +A +a +"} +(6,1,1) = {" +a +T +o +P +P +P +A +A +a +a +"} +(7,1,1) = {" +a +T +o +V +P +P +s +a +a +a +"} +(8,1,1) = {" +a +T +o +P +P +P +A +A +U +a +"} +(9,1,1) = {" +a +A +p +B +P +D +v +y +A +a +"} +(10,1,1) = {" +U +A +A +P +g +m +m +l +r +a +"} +(11,1,1) = {" +a +U +A +A +x +J +R +l +r +a +"} +(12,1,1) = {" +a +a +a +A +A +A +h +A +A +a +"} +(13,1,1) = {" +a +a +a +a +U +a +a +a +w +a +"} diff --git a/maps/om_adventure/pois/shuttlewreck3.dmm b/maps/om_adventure/pois/shuttlewreck3.dmm new file mode 100644 index 0000000000..005ceb21c9 --- /dev/null +++ b/maps/om_adventure/pois/shuttlewreck3.dmm @@ -0,0 +1,210 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"c" = ( +/obj/random/awayloot/looseloot, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck3) +"f" = ( +/obj/random/tech_supply, +/turf/template_noop, +/area/template_noop) +"h" = ( +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck3) +"k" = ( +/turf/simulated/shuttle/wall, +/area/om_adventure/poi/shuttlewreck3) +"m" = ( +/obj/item/weapon/material/shard/shrapnel, +/turf/template_noop, +/area/template_noop) +"p" = ( +/obj/item/weapon/material/shard/shrapnel, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck3) +"u" = ( +/obj/item/weapon/material/shard/shrapnel, +/obj/random/awayloot/looseloot, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck3) +"x" = ( +/obj/structure/door_assembly/door_assembly_ext, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck3) +"D" = ( +/obj/random/tech_supply, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck3) +"F" = ( +/obj/structure/grille/broken, +/obj/item/weapon/material/shard, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck3) +"H" = ( +/obj/random/tech_supply/component, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck3) +"I" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck3) +"K" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck3) +"Q" = ( +/obj/item/weapon/material/shard/shrapnel, +/obj/effect/gibspawner/human, +/obj/random/contraband/nofail, +/turf/simulated/shuttle/floor/white, +/area/om_adventure/poi/shuttlewreck3) +"S" = ( +/obj/random/contraband/nofail, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck3) +"Z" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck3) + +(1,1,1) = {" +a +a +a +h +a +a +a +"} +(2,1,1) = {" +h +a +a +h +a +a +h +"} +(3,1,1) = {" +K +a +h +h +h +a +a +"} +(4,1,1) = {" +h +a +h +h +h +f +a +"} +(5,1,1) = {" +a +h +S +h +H +a +a +"} +(6,1,1) = {" +a +a +c +h +h +a +a +"} +(7,1,1) = {" +m +h +Z +h +h +h +a +"} +(8,1,1) = {" +a +H +D +h +I +a +a +"} +(9,1,1) = {" +a +h +k +x +k +h +a +"} +(10,1,1) = {" +a +h +k +u +k +h +a +"} +(11,1,1) = {" +a +h +k +Q +k +H +m +"} +(12,1,1) = {" +a +h +k +F +k +h +a +"} +(13,1,1) = {" +a +h +p +h +p +a +h +"} +(14,1,1) = {" +a +a +a +Z +a +a +a +"} +(15,1,1) = {" +a +h +a +a +a +a +a +"} diff --git a/maps/om_adventure/pois/shuttlewreck4.dmm b/maps/om_adventure/pois/shuttlewreck4.dmm new file mode 100644 index 0000000000..28fc4367d9 --- /dev/null +++ b/maps/om_adventure/pois/shuttlewreck4.dmm @@ -0,0 +1,392 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck4) +"e" = ( +/obj/random/tech_supply/component, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shuttlewreck4) +"g" = ( +/obj/item/frame/apc, +/turf/template_noop, +/area/template_noop) +"h" = ( +/obj/random/tech_supply/component, +/turf/template_noop, +/area/template_noop) +"j" = ( +/turf/template_noop, +/area/template_noop) +"o" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck4) +"p" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shuttlewreck4) +"q" = ( +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shuttlewreck4) +"t" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/om_adventure/poi/shuttlewreck4) +"u" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/plating/eris/airless, +/area/om_adventure/poi/shuttlewreck4) +"v" = ( +/turf/simulated/wall/eris/r_wall, +/area/om_adventure/poi/shuttlewreck4) +"x" = ( +/turf/simulated/floor/plating/eris/airless, +/area/om_adventure/poi/shuttlewreck4) +"y" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 4 + }, +/obj/random/tech_supply/component, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/om_adventure/poi/shuttlewreck4) +"C" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/om_adventure/poi/shuttlewreck4) +"D" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 1 + }, +/obj/random/tech_supply, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/om_adventure/poi/shuttlewreck4) +"H" = ( +/obj/random/tech_supply/component, +/turf/simulated/floor/weird_things/dark, +/area/om_adventure/poi/shuttlewreck4) +"I" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/om_adventure/poi/shuttlewreck4) +"J" = ( +/obj/machinery/door/blast/multi_tile/three_tile_ver{ + density = 0; + icon_state = "open"; + opacity = 0 + }, +/turf/simulated/floor/plating/eris/airless, +/area/om_adventure/poi/shuttlewreck4) +"K" = ( +/obj/tether_away_spawner/spookyland, +/turf/template_noop, +/area/template_noop) +"M" = ( +/obj/structure/low_wall/eris/reinforced, +/obj/structure/window/eris, +/turf/simulated/floor/plating, +/area/om_adventure/poi/shuttlewreck4) +"O" = ( +/obj/random/tech_supply, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shuttlewreck4) +"P" = ( +/obj/structure/frame/computer, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/om_adventure/poi/shuttlewreck4) +"S" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/om_adventure/poi/shuttlewreck4) +"T" = ( +/obj/random/awayloot/looseloot, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shuttlewreck4) +"V" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/om_adventure/poi/shuttlewreck4) +"X" = ( +/obj/structure/bed/chair/bay/shuttle, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/om_adventure/poi/shuttlewreck4) +"Y" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/om_adventure/poi/shuttlewreck4) + +(1,1,1) = {" +j +j +j +j +j +j +j +j +a +j +j +j +H +j +a +"} +(2,1,1) = {" +j +a +a +j +j +a +j +h +j +j +j +j +j +a +j +"} +(3,1,1) = {" +j +j +j +o +a +g +a +a +a +j +o +a +a +v +j +"} +(4,1,1) = {" +j +j +j +h +a +a +a +a +a +a +H +H +v +v +j +"} +(5,1,1) = {" +j +j +j +v +v +x +x +J +v +v +a +v +v +u +j +"} +(6,1,1) = {" +j +a +a +v +V +q +e +q +O +v +M +v +v +v +j +"} +(7,1,1) = {" +o +v +M +M +q +I +I +I +q +t +Y +y +v +j +j +"} +(8,1,1) = {" +j +M +P +C +q +D +v +X +q +q +T +q +M +j +j +"} +(9,1,1) = {" +a +v +M +M +e +Y +Y +Y +q +S +I +I +v +j +j +"} +(10,1,1) = {" +j +j +j +v +p +q +q +q +e +v +M +v +v +v +j +"} +(11,1,1) = {" +j +j +j +v +v +x +x +J +v +v +j +v +v +u +j +"} +(12,1,1) = {" +j +j +j +j +j +j +j +j +j +j +j +j +v +v +j +"} +(13,1,1) = {" +j +j +j +j +j +j +j +j +j +j +j +j +j +v +j +"} +(14,1,1) = {" +j +j +j +j +j +j +j +j +j +j +j +K +j +j +j +"} +(15,1,1) = {" +j +j +j +j +j +j +j +j +j +j +j +j +j +j +j +"} diff --git a/maps/om_adventure/pois/woodentemple.dmm b/maps/om_adventure/pois/woodentemple.dmm new file mode 100644 index 0000000000..4a6dd94d5f --- /dev/null +++ b/maps/om_adventure/pois/woodentemple.dmm @@ -0,0 +1,533 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/obj/structure/bed/chair/sofa/pew/right{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"c" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/wmarble, +/area/om_adventure/poi/woodentemple) +"d" = ( +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"e" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/outdoors/grass, +/area/om_adventure/poi/woodentemple) +"f" = ( +/obj/item/weapon/material/shard/shrapnel, +/turf/simulated/floor, +/area/om_adventure/poi/woodentemple) +"g" = ( +/obj/tether_away_spawner/spookyland, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"j" = ( +/obj/item/weapon/material/shard/shrapnel, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"k" = ( +/obj/structure/bed/pod, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"m" = ( +/obj/structure/bed/chair/sofa/pew/right{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"o" = ( +/obj/structure/table/rack/steel, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/wmarble, +/area/om_adventure/poi/woodentemple) +"r" = ( +/turf/simulated/floor/outdoors/grass, +/area/om_adventure/poi/woodentemple) +"s" = ( +/obj/structure/table/woodentable, +/obj/item/trash/candle, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"v" = ( +/obj/structure/table/woodentable, +/obj/random/maintenance, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"w" = ( +/obj/structure/bed/chair/sofa/pew/left, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"x" = ( +/obj/structure/curtain/black{ + anchored = 1; + icon_state = "open"; + opacity = 0 + }, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"A" = ( +/obj/structure/curtain/black{ + anchored = 1 + }, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"C" = ( +/obj/item/weapon/material/shard, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"E" = ( +/obj/structure/table/woodentable, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"F" = ( +/obj/structure/bed/chair/sofa/pew/right, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"G" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/wmarble, +/area/om_adventure/poi/woodentemple) +"H" = ( +/turf/simulated/floor/wmarble, +/area/om_adventure/poi/woodentemple) +"J" = ( +/obj/structure/table/woodentable, +/obj/random/awayloot/looseloot, +/obj/item/trash/candle, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"K" = ( +/obj/structure/table/rack/steel, +/obj/random/awayloot/looseloot, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"M" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"N" = ( +/obj/structure/bed/chair/sofa/pew/left{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"Q" = ( +/obj/structure/flora/pottedplant/orientaltree, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"R" = ( +/turf/simulated/floor/carpet, +/area/om_adventure/poi/woodentemple) +"S" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor, +/area/om_adventure/poi/woodentemple) +"U" = ( +/obj/structure/bed/chair/sofa/pew/left{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/om_adventure/poi/woodentemple) +"Z" = ( +/turf/simulated/wall/hardwood, +/area/om_adventure/poi/woodentemple) + +(1,1,1) = {" +a +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +a +a +a +"} +(2,1,1) = {" +r +r +Z +r +r +r +r +r +r +r +r +r +r +r +r +r +Z +r +r +a +a +"} +(3,1,1) = {" +r +Z +Z +Z +Z +S +f +S +Z +Z +Z +S +S +S +Z +Z +Z +Z +r +r +a +"} +(4,1,1) = {" +r +r +Z +J +v +d +C +j +d +A +d +m +N +Q +J +v +Z +r +r +r +a +"} +(5,1,1) = {" +r +r +S +Q +d +j +g +d +d +x +d +d +d +g +d +d +S +r +r +r +r +"} +(6,1,1) = {" +r +r +S +w +d +d +d +C +d +A +d +d +d +d +K +K +Z +r +Z +r +r +"} +(7,1,1) = {" +r +r +S +F +d +d +Z +Z +G +Z +Z +d +R +d +Z +Z +Z +Z +Z +Z +r +"} +(8,1,1) = {" +r +r +Z +M +d +d +S +r +r +r +S +R +R +R +Z +o +H +H +Z +r +r +"} +(9,1,1) = {" +r +r +Z +E +g +d +S +r +e +r +S +R +R +R +G +H +c +H +G +r +r +"} +(10,1,1) = {" +r +r +Z +v +d +d +S +r +r +r +S +R +R +R +Z +o +H +H +Z +r +r +"} +(11,1,1) = {" +r +r +S +w +d +d +Z +Z +G +Z +Z +d +R +d +Z +Z +Z +Z +Z +Z +r +"} +(12,1,1) = {" +r +r +S +F +d +d +d +d +d +A +d +d +d +d +d +d +Z +r +Z +r +r +"} +(13,1,1) = {" +r +r +S +Q +d +d +d +g +d +x +d +g +d +d +d +s +S +r +r +r +r +"} +(14,1,1) = {" +r +r +Z +s +E +k +k +k +d +A +d +U +b +Q +v +E +Z +r +r +r +a +"} +(15,1,1) = {" +r +Z +Z +Z +Z +S +S +S +Z +Z +Z +S +S +S +Z +Z +Z +Z +r +r +a +"} +(16,1,1) = {" +r +r +Z +r +r +r +r +r +r +r +r +r +r +r +r +r +Z +r +r +a +a +"} +(17,1,1) = {" +a +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +a +a +a +"} diff --git a/maps/stellardelight/stellar_delight_defines.dm b/maps/stellardelight/stellar_delight_defines.dm index 25773f8780..c032d99b8a 100644 --- a/maps/stellardelight/stellar_delight_defines.dm +++ b/maps/stellardelight/stellar_delight_defines.dm @@ -4,6 +4,7 @@ #define Z_LEVEL_SHIP_HIGH 3 #define Z_LEVEL_CENTCOM 4 #define Z_LEVEL_MISC 5 +<<<<<<< HEAD #define Z_LEVEL_BEACH 6 #define Z_LEVEL_BEACH_CAVE 7 #define Z_LEVEL_AEROSTAT 8 @@ -13,6 +14,19 @@ #define Z_LEVEL_OVERMAP 12 #define Z_LEVEL_OFFMAP1 13 #define Z_LEVEL_GATEWAY 14 +======= +#define Z_LEVEL_SPACE_ROCKS 6 +#define Z_LEVEL_BEACH 7 +#define Z_LEVEL_BEACH_CAVE 8 +#define Z_LEVEL_AEROSTAT 9 +#define Z_LEVEL_AEROSTAT_SURFACE 10 +#define Z_LEVEL_DEBRISFIELD 11 +#define Z_LEVEL_FUELDEPOT 12 +#define Z_LEVEL_OVERMAP 13 +#define Z_LEVEL_OFFMAP1 14 +#define Z_LEVEL_GATEWAY 15 +#define Z_LEVEL_OM_ADVENTURE 16 +>>>>>>> 60011ecd0b... Merge pull request #11928 from Very-Soft/whalesandcrystals //Camera networks #define NETWORK_HALLS "Halls" @@ -134,7 +148,7 @@ list("Offmap Ship - Talon V2") ) - lateload_single_pick = list( + lateload_overmap = list( list("Carp Farm"), list("Snow Field"), list("Listening Post"), @@ -145,6 +159,10 @@ list("Wild West") ) + lateload_overmap = list( + list("Grass Cave") + ) + ai_shell_restricted = TRUE ai_shell_allowed_levels = list( Z_LEVEL_SHIP_LOW, @@ -164,7 +182,7 @@ mining_station_z = list(Z_LEVEL_SPACE_LOW) mining_outpost_z = list(Z_LEVEL_SURFACE_MINE) */ - lateload_single_pick = null //Nothing right now. + lateload_gateway = null //Nothing right now. planet_datums_to_make = list(/datum/planet/virgo3b, /datum/planet/virgo4) diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index c55c040dc0..4aaff54fc7 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -161,7 +161,7 @@ list("Fuel Depot - Z1 Space") ) - lateload_single_pick = list( + lateload_gateway = list( list("Carp Farm"), list("Snow Field"), list("Listening Post"), @@ -193,7 +193,7 @@ mining_station_z = list(Z_LEVEL_SPACE_LOW) mining_outpost_z = list(Z_LEVEL_SURFACE_MINE) - lateload_single_pick = null //Nothing right now. + lateload_gateway = null //Nothing right now. planet_datums_to_make = list(/datum/planet/virgo3b, /datum/planet/virgo4) diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index 977ad2ffc8..5cbabb2aa3 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -54,7 +54,8 @@ var/list/all_maps = list() var/list/lateload_z_levels = list() //Similar to above, but only pick ONE to load, useful for random away missions and whatnot - var/list/lateload_single_pick = list() + var/list/lateload_gateway = list() + var/list/lateload_overmap = list() //VOREStation Add - The same thing as gateway, but not var/list/allowed_jobs = list() //Job datums to use. //Works a lot better so if we get to a point where three-ish maps are used diff --git a/sound/effects/capture-crystal-in.ogg b/sound/effects/capture-crystal-in.ogg new file mode 100644 index 0000000000..b00d7be9c9 Binary files /dev/null and b/sound/effects/capture-crystal-in.ogg differ diff --git a/sound/effects/capture-crystal-negative.ogg b/sound/effects/capture-crystal-negative.ogg new file mode 100644 index 0000000000..a0d6de3395 Binary files /dev/null and b/sound/effects/capture-crystal-negative.ogg differ diff --git a/sound/effects/capture-crystal-out.ogg b/sound/effects/capture-crystal-out.ogg new file mode 100644 index 0000000000..363ad85c56 Binary files /dev/null and b/sound/effects/capture-crystal-out.ogg differ diff --git a/sound/effects/capture-crystal-problem.ogg b/sound/effects/capture-crystal-problem.ogg new file mode 100644 index 0000000000..3c0a7b343b Binary files /dev/null and b/sound/effects/capture-crystal-problem.ogg differ diff --git a/sound/effects/skeleton_walk.ogg b/sound/effects/skeleton_walk.ogg new file mode 100644 index 0000000000..d5791ec542 Binary files /dev/null and b/sound/effects/skeleton_walk.ogg differ diff --git a/vorestation.dme b/vorestation.dme index ef20c82b57..1539c01524 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1317,6 +1317,7 @@ #include "code\game\objects\items\weapons\bones.dm" #include "code\game\objects\items\weapons\candle.dm" #include "code\game\objects\items\weapons\canes.dm" +#include "code\game\objects\items\weapons\capture_crystal.dm" #include "code\game\objects\items\weapons\cards_ids_vr.dm" #include "code\game\objects\items\weapons\chewables.dm" #include "code\game\objects\items\weapons\cigs_lighters.dm" @@ -1676,7 +1677,11 @@ #include "code\game\turfs\turf_changing.dm" #include "code\game\turfs\turf_flick_animations.dm" #include "code\game\turfs\unsimulated.dm" +<<<<<<< HEAD #include "code\game\turfs\flooring\floor_yw.dm" +======= +#include "code\game\turfs\weird_turfs_vr.dm" +>>>>>>> 60011ecd0b... Merge pull request #11928 from Very-Soft/whalesandcrystals #include "code\game\turfs\flooring\flooring.dm" #include "code\game\turfs\flooring\flooring_ch.dm" #include "code\game\turfs\flooring\flooring_decals.dm" @@ -3121,6 +3126,7 @@ #include "code\modules\mob\living\simple_mob\harvesting.dm" #include "code\modules\mob\living\simple_mob\life.dm" #include "code\modules\mob\living\simple_mob\on_click.dm" +#include "code\modules\mob\living\simple_mob\overmap_mob_vr.dm" #include "code\modules\mob\living\simple_mob\sd_pets.dm" #include "code\modules\mob\living\simple_mob\simple_hud.dm" #include "code\modules\mob\living\simple_mob\simple_mob.dm" @@ -3130,6 +3136,15 @@ #include "code\modules\mob\living\simple_mob\subtypes\animal\animal.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\vox.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\catslug.dm" +<<<<<<< HEAD +======= +#include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\jellyfish.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\skeleton.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\space_mouse.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\spacewhale.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\spookyghost.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\startreader.dm" +>>>>>>> 60011ecd0b... Merge pull request #11928 from Very-Soft/whalesandcrystals #include "code\modules\mob\living\simple_mob\subtypes\animal\alien animals\teppi.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_captive.dm"