From 603db7270ed7b008cb4e875541a31793d23724fd Mon Sep 17 00:00:00 2001 From: FluffMedic <109300046+FluffMedic@users.noreply.github.com> Date: Wed, 10 Jan 2024 19:42:29 -0500 Subject: [PATCH] Large/Small Content Update (#7523) --- maps/southern_cross/southern_cross-6.dmm | 332 +- maps/southern_cross/southern_cross_areas.dm | 4 + modular_chomp/code/game/machinery/paradox.dm | 137 + .../objects/items/weapons/melee/shock_maul.dm | 9 +- modular_chomp/code/modules/mining/tools.dm | 9 + .../subtypes/humanoid/starhunters/avatar.dm | 219 + .../subtypes/humanoid/starhunters/base.dm | 157 + .../subtypes/humanoid/starhunters/food.dm | 115 + .../subtypes/humanoid/starhunters/hunters.dm | 242 + .../subtypes/humanoid/starhunters/passive.dm | 120 + .../humanoid/starhunters/tradercode.dm | 162 + .../simple_mob/subtypes/slimess/xenobio.dm | 237 +- modular_chomp/game/machinery/turrets.dm | 63 +- modular_chomp/icons/mob/starhunters.dmi | Bin 0 -> 7122 bytes modular_chomp/icons/obj/machines/defense.dmi | Bin 322 -> 727 bytes modular_chomp/icons/obj/turrets.dmi | Bin 0 -> 182 bytes .../maps/overmap/space_pois/space_areas.dm | 8 + .../maps/overmap/space_pois/space_pois.dm | 10 + .../space_pois/starhuntersarena_70x70.dmm | 5106 +++++++++++++++++ .../space_pois/starhunterstraders_30x30.dmm | 1032 ++++ vorestation.dme | 8 + 21 files changed, 7841 insertions(+), 129 deletions(-) create mode 100644 modular_chomp/code/game/machinery/paradox.dm create mode 100644 modular_chomp/code/modules/mining/tools.dm create mode 100644 modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/avatar.dm create mode 100644 modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/base.dm create mode 100644 modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/food.dm create mode 100644 modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/hunters.dm create mode 100644 modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/passive.dm create mode 100644 modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/tradercode.dm create mode 100644 modular_chomp/icons/mob/starhunters.dmi create mode 100644 modular_chomp/icons/obj/turrets.dmi create mode 100644 modular_chomp/maps/overmap/space_pois/starhuntersarena_70x70.dmm create mode 100644 modular_chomp/maps/overmap/space_pois/starhunterstraders_30x30.dmm diff --git a/maps/southern_cross/southern_cross-6.dmm b/maps/southern_cross/southern_cross-6.dmm index 71482b4c5e..ce0f0b36ce 100644 --- a/maps/southern_cross/southern_cross-6.dmm +++ b/maps/southern_cross/southern_cross-6.dmm @@ -4189,6 +4189,20 @@ }, /turf/simulated/wall/solidrock, /area/surface/cave/unexplored/normal) +"jK" = ( +/obj/structure/table/marble, +/obj/item/weapon/book/manual/anomaly_testing, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) +"jU" = ( +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) +"kx" = ( +/obj/structure/table/marble, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) "ky" = ( /turf/simulated/shuttle/floor/voidcraft/external, /area/surface/cave/explored/deep) @@ -4220,6 +4234,9 @@ "md" = ( /turf/simulated/wall/solidrock, /area/surface/cave/unexplored/normal) +"nr" = ( +/turf/simulated/mineral/sif, +/area/surface/cave/explored/trader) "nx" = ( /obj/machinery/light/small{ dir = 1 @@ -4247,6 +4264,10 @@ /obj/effect/zone_divider, /turf/simulated/mineral/floor/ignore_mapgen/sif, /area/surface/cave/explored/deep) +"oO" = ( +/obj/item/weapon/stool, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) "pQ" = ( /obj/effect/zone_divider, /turf/simulated/floor/water{ @@ -4282,6 +4303,11 @@ outdoors = 0 }, /area/surface/outpost/wall/checkpoint) +"rc" = ( +/obj/structure/simple_door/sandstone, +/obj/structure/simple_door/sandstone, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) "rd" = ( /obj/effect/map_effect/portal/line/side_a, /turf/simulated/wall/solidrock, @@ -4290,6 +4316,16 @@ /obj/effect/map_effect/portal/master/side_a/caves_to_wilderness, /turf/simulated/wall/solidrock, /area/surface/outpost/wall) +"st" = ( +/obj/effect/map_effect/portal/line/side_b{ + dir = 1 + }, +/turf/simulated/wall/solidrock, +/area/surface/cave/explored/trader) +"sH" = ( +/obj/structure/simple_door/sandstone, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) "tf" = ( /obj/effect/zone_divider, /turf/simulated/mineral/floor/ignore_mapgen/sif, @@ -4320,6 +4356,11 @@ temperature = 243.15 }, /area/surface/outpost/mining_main/cave) +"xS" = ( +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_lemon, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) "zJ" = ( /obj/machinery/light/small{ dir = 8 @@ -4358,6 +4399,11 @@ temperature = 243.15 }, /area/surface/outpost/mining_main/cave) +"Cv" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/cosmos, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) "Cx" = ( /obj/effect/map_effect/portal/line/side_b{ dir = 1 @@ -4409,10 +4455,23 @@ }, /turf/simulated/wall/solidrock, /area/surface/cave/unexplored/normal) +"HL" = ( +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/snacks/breakfast_wrap, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) +"In" = ( +/obj/item/weapon/stool, +/mob/living/simple_mob/humanoid/starhunter/trader/farmer, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) "Jk" = ( /obj/effect/map_effect/portal/line/side_a, /turf/simulated/wall/solidrock, /area/surface/outpost/wall/checkpoint) +"LO" = ( +/turf/simulated/wall/solidrock, +/area/surface/cave/explored/trader) "Nm" = ( /obj/effect/map_effect/portal/line/side_b{ dir = 1 @@ -4457,6 +4516,16 @@ temperature = 243.15 }, /area/surface/outpost/research/xenoarcheology/exterior) +"Qd" = ( +/obj/item/weapon/stool, +/mob/living/simple_mob/humanoid/starhunter/trader/miner, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) +"Qs" = ( +/obj/structure/table/marble, +/obj/item/weapon/book/manual/engineering_singularity_safety, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) "Qy" = ( /obj/effect/zone_divider, /turf/simulated/floor/plating{ @@ -4466,6 +4535,9 @@ temperature = 243.15 }, /area/surface/outpost/research/xenoarcheology/exterior) +"RM" = ( +/turf/simulated/wall/sandstone, +/area/surface/cave/explored/trader) "RX" = ( /obj/structure/cable/ender{ icon_state = "1-2"; @@ -4481,6 +4553,11 @@ temperature = 243.15 }, /area/surface/outpost/mining_main/cave) +"SI" = ( +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/snacks/bacon_and_eggs, +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) "Ug" = ( /obj/effect/map_effect/portal/master/side_a/caves_to_wilderness/river, /turf/simulated/wall/solidrock, @@ -4504,6 +4581,9 @@ outdoors = 0 }, /area/surface/cave/explored/normal) +"YU" = ( +/turf/simulated/floor/concrete, +/area/surface/cave/explored/trader) "YY" = ( /obj/machinery/light/small{ dir = 1 @@ -68231,20 +68311,20 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -md -Cx +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +rc +RM +LO +st aa "} (248,1,1) = {" @@ -68489,20 +68569,20 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -md -Cx +RM +YU +YU +YU +sH +YU +YU +YU +YU +YU +YU +RM +LO +st aa "} (249,1,1) = {" @@ -68747,20 +68827,20 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -md -Cx +RM +YU +YU +YU +RM +YU +YU +YU +YU +YU +YU +RM +LO +st aa "} (250,1,1) = {" @@ -69005,20 +69085,20 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -md -md +RM +Cv +Qs +kx +RM +YU +oO +xS +SI +Qd +YU +RM +LO +LO aa "} (251,1,1) = {" @@ -69263,20 +69343,20 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +RM +RM +RM +RM +RM +YU +YU +kx +kx +YU +YU +RM +nr +nr aa "} (252,1,1) = {" @@ -69521,20 +69601,20 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +RM +Cv +jK +kx +RM +YU +In +HL +jU +oO +YU +RM +nr +nr aa "} (253,1,1) = {" @@ -69779,20 +69859,20 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +RM +YU +YU +YU +RM +YU +YU +YU +YU +YU +YU +RM +nr +nr aa "} (254,1,1) = {" @@ -70037,20 +70117,20 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +RM +YU +YU +YU +sH +YU +YU +YU +YU +YU +YU +RM +nr +nr aa "} (255,1,1) = {" @@ -70295,20 +70375,20 @@ ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +nr +nr aa "} (256,1,1) = {" diff --git a/maps/southern_cross/southern_cross_areas.dm b/maps/southern_cross/southern_cross_areas.dm index 81b4c9c518..9bf7691fca 100644 --- a/maps/southern_cross/southern_cross_areas.dm +++ b/maps/southern_cross/southern_cross_areas.dm @@ -145,6 +145,10 @@ name = "Tunnels" icon_state = "explored" +/area/surface/cave/explored/trader + name = "Trader Hideout" + icon_state = "hideaway" + /area/surface/cave/unexplored/normal name = "Tunnels" icon_state = "unexplored" diff --git a/modular_chomp/code/game/machinery/paradox.dm b/modular_chomp/code/game/machinery/paradox.dm new file mode 100644 index 0000000000..c8e7d71c67 --- /dev/null +++ b/modular_chomp/code/game/machinery/paradox.dm @@ -0,0 +1,137 @@ +/obj/machinery/paradoxrift + name = "Paradoxical Rift Generator" + idle_power_usage = 50000000 + icon = 'modular_chomp/icons/obj/machines/defense.dmi' + icon_state = "paradox" + circuit = /obj/item/weapon/circuitboard/paradoxrift + var/build_eff = 1 + var/loot_eff = 1 + var/chaos_eff = 1 + +/obj/item/weapon/circuitboard/paradoxrift + name = "paradox rift generator circuit" + build_path = /obj/machinery/paradoxrift + board_type = new /datum/frame/frame_types/machine + origin_tech = list(TECH_DATA = 8, TECH_PRECURSOR = 3) + req_components = list( + /obj/item/stack/cable_coil = 10, + /obj/item/weapon/stock_parts/capacitor = 4, + /obj/item/weapon/stock_parts/manipulator = 6, + /obj/item/weapon/stock_parts/scanning_module = 10) + +/obj/machinery/paradoxrift/RefreshParts() + ..() + var/man_rating = 0 + var/scan_rating = 0 + var/cap_rating = 0 + + for(var/obj/item/weapon/stock_parts/P in component_parts) + if(istype(P, /obj/item/weapon/stock_parts/scanning_module)) + scan_rating += P.rating + if(istype(P, /obj/item/weapon/stock_parts/manipulator)) + man_rating += P.rating + if(istype(P, /obj/item/weapon/stock_parts/capacitor)) + cap_rating += P.rating + + build_eff = man_rating + loot_eff = scan_rating + chaos_eff = cap_rating + + +/obj/machinery/paradoxrift/process() + if(!(stat & NOPOWER)) + return + else + if(prob(3*build_eff)) + if(prob(6*loot_eff)) + new /obj/random/greaterportalloot (src.loc) + if(prob(30/chaos_eff)) + new /obj/random/mob/interspace (src.loc) + else + return + else + new /obj/random/portalloot (src.loc) + if(prob(15/chaos_eff)) + new /obj/random/mob/interspace (src.loc) + else + return + else + return + + +/obj/random/portalloot + name = "Random Portal Loot" + desc = "This is a random goodie from the void." + icon_state = "medicalkit" + +/obj/random/portalloot/item_to_spawn() + return pick(prob(6);/obj/item/weapon/stock_parts/capacitor/omni, + prob(6);/obj/item/weapon/stock_parts/manipulator/omni, + prob(6);/obj/item/weapon/stock_parts/scanning_module/omni, + prob(6);/obj/item/weapon/stock_parts/matter_bin/omni, + prob(6);/obj/item/weapon/stock_parts/micro_laser/omni, + prob(6);/obj/item/stack/material/phoron, + prob(6);/obj/item/stack/material/deuterium, + prob(6);/obj/item/stack/material/tritium, + prob(6);/obj/item/stack/material/uranium + ) + +/obj/random/greaterportalloot + name = "Random Greater Portal Loot" + desc = "This is a random goodie from the void." + icon_state = "medicalkit" + +/obj/random/greaterportalloot/item_to_spawn() + return pick(prob(2);/obj/item/weapon/stock_parts/capacitor/omni, + prob(2);/obj/item/weapon/stock_parts/manipulator/omni, + prob(2);/obj/item/weapon/stock_parts/scanning_module/omni, + prob(2);/obj/item/weapon/stock_parts/matter_bin/omni, + prob(2);/obj/item/weapon/stock_parts/micro_laser/omni, + prob(2);/obj/item/stack/material/phoron, + prob(2);/obj/item/stack/material/deuterium, + prob(2);/obj/item/stack/material/tritium, + prob(2);/obj/item/stack/material/uranium, + prob(6);/obj/item/weapon/rcd, + prob(6);/obj/item/weapon/rcd/shipwright, + prob(6);/obj/item/weapon/rcd/advanced, + prob(6);/obj/vehicle/bike/random, + prob(6);/obj/vehicle/train/engine/quadbike/random, + prob(6);/obj/vehicle/bike/random, + prob(6);/obj/structure/closet/crate/secure/lootsafe/numberlock, + prob(6);/obj/structure/closet/crate/secure/loot + + ) + +/obj/random/mob/interspace + name = "Random Interspace" + desc = "This is a random mob from space or inbetween space." + icon_state = "humanoid" + + mob_faction = "demon" + mob_returns_home = 1 + mob_wander_distance = 7 + +/obj/random/mob/interspace/item_to_spawn() + return pick(prob(5);/mob/living/simple_mob/humanoid/starhunter/trader/miner, + prob(5);/mob/living/simple_mob/humanoid/starhunter/trader/reliccollecter, + prob(5);/mob/living/simple_mob/humanoid/starhunter/trader/farmer, + prob(1);/mob/living/simple_mob/vore/bigdragon, + prob(1);/mob/living/simple_mob/humanoid/cultist/magus/rift, + prob(15);/mob/living/simple_mob/vore/demonAI, + prob(25);/mob/living/simple_mob/shadekin, + prob(25);/mob/living/simple_mob/vore/solargrub, + prob(15);/mob/living/simple_mob/vore/sect_queen, + prob(25);/mob/living/simple_mob/vore/sect_drone, + prob(25);/mob/living/simple_mob/vore/aggressive/deathclaw, + prob(25);/mob/living/simple_mob/vore/aggressive/corrupthound, + prob(15);/mob/living/simple_mob/metroid/juvenile/super, + prob(25);/mob/living/simple_mob/animal/space/carp, + prob(15);/mob/living/simple_mob/animal/space/carp/large, + prob(15);/mob/living/simple_mob/animal/space/carp/large/huge, + prob(25);/mob/living/simple_mob/animal/space/carp/puffer, + prob(25);/mob/living/simple_mob/animal/space/alien, + prob(15);/mob/living/simple_mob/animal/space/alien/sentinel, + prob(25);/mob/living/simple_mob/vore/pakkun, + prob(25);/mob/living/simple_mob/vore/scel, + prob(5);/mob/living/simple_mob/vore/vore_hostile/abyss_lurker + ) \ No newline at end of file diff --git a/modular_chomp/code/game/objects/items/weapons/melee/shock_maul.dm b/modular_chomp/code/game/objects/items/weapons/melee/shock_maul.dm index d7a396e5d2..e9149e2cd9 100644 --- a/modular_chomp/code/game/objects/items/weapons/melee/shock_maul.dm +++ b/modular_chomp/code/game/objects/items/weapons/melee/shock_maul.dm @@ -2,4 +2,11 @@ name = "rubber concussion maul" desc = "A variant of the concussion maul that staggers and weakens victims. Despite their screams, does no real damage." damtype = HALLOSS - launch_force = 0 \ No newline at end of file + launch_force = 0 + +//something borked, trying to fix it +/obj/item/weapon/melee/shock_maul + name = "concussion maul" + icon = 'icons/obj/weapons.dmi' + icon_state = "forcemaul0" + item_state = "forcemaul0" \ No newline at end of file diff --git a/modular_chomp/code/modules/mining/tools.dm b/modular_chomp/code/modules/mining/tools.dm new file mode 100644 index 0000000000..7a63003562 --- /dev/null +++ b/modular_chomp/code/modules/mining/tools.dm @@ -0,0 +1,9 @@ +/obj/item/weapon/kinetic_crusher/glaive + name = "kinetic glaive" + icon_state = "crusher-glaive" + force = 20 + detonation_damage = 20 // 40 + backstab_bonus = 30 // 60 + reach = 2 + slot_flags = SLOT_BELT + w_class = ITEMSIZE_NORMAL \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/avatar.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/avatar.dm new file mode 100644 index 0000000000..e74a5bd03c --- /dev/null +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/avatar.dm @@ -0,0 +1,219 @@ +/mob/living/simple_mob/humanoid/starhunter/hunter/clone + name = "Avatar Of The Serpent" + icon_state = "avatar" + health = 15 + maxHealth = 15 + ai_holder_type = /datum/ai_holder/simple_mob/ranged/aggressive/starhunter + projectiletype = /obj/item/projectile/energy/ninjastar + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar + name = "Avatar Of The Serpent" + icon_state = "avatar" + health = 1000 //50 hits from 20 damage + maxHealth = 1000 //50 hits from 20 damage + damage_fatigue_mult = 0 + ai_holder_type = /datum/ai_holder/simple_mob/ranged/aggressive/starhunter + special_attack_cooldown = 20 SECONDS + special_attack_min_range = 1 + special_attack_max_range = 7 + projectiletype = /obj/item/projectile/energy/ninjastar + digestable = 0 + devourable = 0 + //note to self, expand the loot list later + loot_list = list(/obj/item/weapon/storage/belt/holding = 60, + /obj/item/clothing/glasses/omni = 60, + /obj/item/weapon/kinetic_crusher/glaive = 60, + /obj/item/slime_extract/sepia = 60, + /obj/item/weapon/circuitboard/defenseonelisk = 60, + /obj/item/weapon/circuitboard/paradoxrift = 60, + /obj/item/capture_crystal = 60 + ) + + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar/updatehealth() + . = ..() + + if(health < maxHealth*0.25) + special_attack_cooldown = 5 SECONDS + projectiletype = /obj/item/projectile/bullet/ninjaburst + else if(health < maxHealth*0.5) + special_attack_cooldown = 10 SECONDS + projectiletype = /obj/item/projectile/energy/kunai + else if (health < maxHealth*0.75) + special_attack_cooldown = 15 SECONDS + projectiletype = /obj/item/projectile/energy/chakaram + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar/do_special_attack(atom/A) + if(health < maxHealth*0.4) + if(prob(20)) + lightingstorm(A) + if(prob(20)) + lightingline(A) + if(prob(20)) + lightpillar(A) + if(prob(20)) + clones(A) + else + rapidfire_windup(A) + else if(health < maxHealth*0.7) + if(prob(25)) + lightingstorm(A) + if(prob(25)) + lightingline(A) + if(prob(25)) + lightpillar(A) + else + rapidfire_windup(A) + else + if(prob(50)) + lightingstrike(A) + else + lightpillar(A) + +/obj/item/projectile/energy/kunai //chip damage + name = "Energy Kunai" + icon = 'modular_chomp/icons/mob/starhunters.dmi' //commiting sin + icon_state = "kunai" + damage = 5 + armor_penetration = 65 //Gets into the gaps + speed = 2 + damage_type = BURN + check_armour = "laser" + +/obj/item/projectile/energy/chakaram //slower but hits harder + name = "Energy Chakaram" + icon = 'modular_chomp/icons/mob/starhunters.dmi' //commiting sin + icon_state = "chakaram" + damage = 25 + armor_penetration = 25 //Gets into the gaps + speed = 5 + damage_type = BURN + check_armour = "laser" + +/obj/item/projectile/bullet/ninjaburst + use_submunitions = 1 + only_submunitions = 1 + range = 0 + embed_chance = 0 + submunition_spread_max = 2600 + submunition_spread_min = 150 + submunitions = list(/obj/item/projectile/energy/kunai = 3, /obj/item/projectile/energy/chakaram = 1, /obj/item/projectile/energy/ninjastar = 3) + +/datum/ai_holder/simple_mob/ranged/aggressive/starhunter + vision_range = 14 + closest_distance = 5 + returns_home = TRUE // Stay close to the base... + wander = TRUE // ... but "patrol" a little. + intelligence_level = AI_SMART // Also knows not to walk while confused if it risks death. + mauling = TRUE + call_distance = 0 //Trying to disable this for the mobs + retaliate = TRUE + hostile = FALSE + violent_breakthrough = TRUE + respect_alpha = FALSE + pointblank = TRUE + +/obj/effect/calldown_attack_lighting + anchored = TRUE + density = FALSE + unacidable = TRUE + mouse_opacity = 0 + icon = 'icons/effects/effects.dmi' + icon_state = "drop_marker" + +/obj/effect/calldown_attack_lighting/Initialize(mapload) + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/effect/calldown_attack_fire/LateInitialize() + var/delay = rand(25, 30) + spawn(delay-7) + lightning_strike(src.loc) + spawn(delay) + qdel(src) + + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar/proc/lightingstorm(atom/A) + var/list/potential_targets = ai_holder.list_targets() + for(var/atom/entry in potential_targets) + if(istype(entry, /mob/living/simple_mob/humanoid/starhunter/hunter)) + potential_targets -= entry + if(potential_targets.len) + var/iteration = clamp(potential_targets.len, 1, 3) + for(var/i = 0, i < iteration, i++) + if(!(potential_targets.len)) + break + var/mob/target = pick(potential_targets) + potential_targets -= target + lightingstormfollow(target) + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar/proc/lightingstormfollow(atom/target) + var/list/bomb_range = block(locate(target.x-6, target.y-6, target.z), locate(target.x+6, target.y+6, target.z)) + new /obj/effect/calldown_attack(get_turf(target)) + bomb_range -= get_turf(target) + for(var/i = 0, i < 4, i++) + var/turf/T = pick(bomb_range) + new /obj/effect/calldown_attack_lighting(T) + bomb_range -= T + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar/proc/lightingline(atom/A) + var/list/potential_targets = ai_holder.list_targets() + for(var/atom/entry in potential_targets) + if(istype(entry, /mob/living/simple_mob/humanoid/starhunter/hunter)) + potential_targets -= entry + if(potential_targets.len) + var/iteration = clamp(potential_targets.len, 1, 3) + for(var/i = 0, i < iteration, i++) + if(!(potential_targets.len)) + break + var/mob/target = pick(potential_targets) + potential_targets -= target + lightinglinefollow(target) + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar/proc/lightinglinefollow(atom/target) + var/alignment = rand(1,2) // 1 for vertical, 2 for horizontal + var/list/line_range = list() + var/turf/T = get_turf(target) + line_range += T + for(var/i = 1, i <= 7, i++) + switch(alignment) + if(1) + if(T.x-i > 0) + line_range += locate(T.x-i, T.y, T.z) + if(T.x+i <= world.maxx) + line_range += locate(T.x+i, T.y, T.z) + if(2) + if(T.y-i > 0) + line_range += locate(T.x, T.y-i, T.z) + if(T.y+i <= world.maxy) + line_range += locate(T.x, T.y+i, T.z) + for(var/turf/dropspot in line_range) + new /obj/effect/calldown_attack_lighting(dropspot) + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar/proc/clones(atom/A) + new /mob/living/simple_mob/humanoid/starhunter/hunter/clone (src.loc) + new /mob/living/simple_mob/humanoid/starhunter/hunter/clone (src.loc) + new /mob/living/simple_mob/humanoid/starhunter/hunter/clone (src.loc) + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar/proc/lightingstrike(atom/A) + var/list/nearby_things = range(1, A) + var/list/valid_turfs = list() + + // All this work to just go to a non-dense tile. + for(var/turf/potential_turf in nearby_things) + var/valid_turf = TRUE + if(potential_turf.density) + continue + for(var/atom/movable/AM in potential_turf) + if(AM.density) + valid_turf = FALSE + if(valid_turf) + valid_turfs.Add(potential_turf) + + if(!(valid_turfs.len)) + to_chat(src, span("warning", "There wasn't an unoccupied spot to teleport to.")) + return FALSE + + var/turf/target_turf = pick(valid_turfs) + + new/obj/effect/calldown_attack_lighting(target_turf) \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/base.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/base.dm new file mode 100644 index 0000000000..c0a18f9f53 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/base.dm @@ -0,0 +1,157 @@ +/mob/living/simple_mob/humanoid/starhunter + name = "Starhunter Initiate" + tt_desc = "E Homo sapiens" + desc = "You shouldn't be seeing this." + icon = 'modular_chomp/icons/mob/starhunters.dmi' + icon_state = "sun" + icon_living = "sun" + icon_dead = "statisgem" + icon_gib = "syndicate_gib" + taser_kill = 0 + + faction = "starhunter" + movement_cooldown = 0 + + status_flags = 0 + + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" + + health = 120 //This may be high, but intend for the combative ones to be on their own. + maxHealth = 120 + harm_intent_damage = 5 + melee_damage_lower = 17 //machette + melee_damage_upper = 17 //beg knife go brrr + attack_sharp = 1 + attack_edge = 1 + attacktext = list("slashed", "stabbed") + projectile_dispersion = 8 + projectile_accuracy = -20 + armor = list(melee = 40, bullet = 70, laser = 10, energy = 0, bomb = 50, bio = 100, rad = 100) // Critters are more ortiented torwards melee and bullet + ranged_cooldown = 5 + + ai_holder_type = /datum/ai_holder/simple_mob/starhunter + + can_be_drop_prey = FALSE + pass_flags = PASSTABLE + softfall = TRUE + + //spaceproofing things + minbodytemp = 0 // Minimum "okay" temperature in kelvin + maxbodytemp = 600 // Maximum of above + + min_oxy = 0 // Oxygen in moles, minimum, 0 is 'no minimum' + max_oxy = 0 // Oxygen in moles, maximum, 0 is 'no maximum' + min_tox = 0 // Phoron min + max_tox = 0 // Phoron max + min_co2 = 0 // CO2 min + max_co2 = 0 // CO2 max + min_n2 = 0 // N2 min + max_n2 = 0 + +/datum/ai_holder/simple_mob/starhunter + returns_home = TRUE // Stay close to the base... + wander = TRUE // ... but "patrol" a little. + intelligence_level = AI_SMART // Also knows not to walk while confused if it risks death. + can_flee = TRUE // If they're even allowed to flee. + flee_when_dying = TRUE // If they should flee when low on health. + dying_threshold = 0.2 // How low on health the holder needs to be before fleeing. Defaults to 30% or lower health. + mauling = TRUE + call_distance = 0 //Trying to disable this for the mobs + vision_range = 10 + retaliate = TRUE + hostile = FALSE + violent_breakthrough = TRUE + respect_alpha = FALSE + pointblank = TRUE + +/datum/ai_holder/simple_mob/starhunter/aggro + hostile = TRUE + +//basic aggro stahunters +/mob/living/simple_mob/humanoid/starhunter/hunter + ai_holder_type = /datum/ai_holder/simple_mob/starhunter/aggro + special_attack_cooldown = 30 SECONDS + special_attack_min_range = 1 + special_attack_max_range = 7 + +/mob/living/simple_mob/humanoid/starhunter/hunter/harvester + icon_state = "snekdruid" + icon_state = "snekdruid" + melee_damage_lower = 25 + melee_damage_upper = 25 + melee_attack_delay = 2.5 SECOND + +/mob/living/simple_mob/humanoid/starhunter/hunter/harvester/handle_special() //wierd movement + if(prob(20)) + step(src, pick(cardinal)) + ..() + +/mob/living/simple_mob/humanoid/starhunter/hunter/ninja + icon_state = "suneswift" + icon_living = "suneswift" + movement_cooldown = -3 + melee_damage_lower = 15 + melee_damage_upper = 15 + melee_attack_delay = 1.5 SECOND + +/mob/living/simple_mob/humanoid/starhunter/hunter/ninja/do_special_attack(atom/target) + if(prob(50)) + teleportnompf(target) + else + smokebomb(target) +//Special attack procs +/mob/living/simple_mob/humanoid/starhunter/hunter/proc/teleportnompf(atom/target) + var/list/nearby_things = range(1, target) + var/list/valid_turfs = list() + + for(var/turf/potential_turf in nearby_things) + var/valid_turf = TRUE + if(potential_turf.density) + continue + for(var/atom/movable/AM in potential_turf) + if(AM.density) + valid_turf = FALSE + if(valid_turf) + valid_turfs.Add(potential_turf) + + if(!(valid_turfs.len)) + to_chat(src, span("warning", "There wasn't an unoccupied spot to teleport to.")) + return FALSE + + var/turf/target_turf = pick(valid_turfs) + + forceMove(target_turf) + + var/mob/living/L = target + var/obj/belly/belly_dest + + if(L.can_be_drop_prey && L.devourable) + L.forceMove(belly_dest) + to_chat(target, "[src] materializes around you, as you end up in their [belly_dest]!") + + +/mob/living/simple_mob/humanoid/starhunter/hunter/proc/smokebomb(atom/target) + var/list/nearby_things = range(1, target) + var/list/valid_turfs = list() + + // All this work to just go to a non-dense tile. + for(var/turf/potential_turf in nearby_things) + var/valid_turf = TRUE + if(potential_turf.density) + continue + for(var/atom/movable/AM in potential_turf) + if(AM.density) + valid_turf = FALSE + if(valid_turf) + valid_turfs.Add(potential_turf) + + if(!(valid_turfs.len)) + to_chat(src, span("warning", "There wasn't an unoccupied spot to teleport to.")) + return FALSE + + var/turf/target_turf = pick(valid_turfs) + + var/datum/effect/effect/system/spark_spread/s2 = new /datum/effect/effect/system/smoke_spread + s2.set_up(5, 1, target_turf) \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/food.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/food.dm new file mode 100644 index 0000000000..3e662e7531 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/food.dm @@ -0,0 +1,115 @@ +/mob/living/simple_mob/humanoid/starhunter/hunter/druid + vore_active = 1 + vore_capacity = 6 + vore_max_size = RESIZE_HUGE + vore_min_size = RESIZE_SMALL + vore_pounce_chance = 0 // Beat them into crit before eating. + + can_be_drop_prey = FALSE //CHOMP Add + +/mob/living/simple_mob/humanoid/starhunter/hunter/druid/Login() + . = ..() + if(!riding_datum) + riding_datum = new /datum/riding/simple_mob(src) + verbs |= /mob/living/simple_mob/proc/animal_mount + verbs |= /mob/living/proc/toggle_rider_reins + movement_cooldown = 1 + +/mob/living/simple_mob/humanoid/starhunter/hunter/druid/MouseDrop_T(mob/living/M, mob/living/user) + return + +/mob/living/simple_mob/humanoid/starhunter/hunter/druid/init_vore() + if(!voremob_loaded) + return + .=..() + var/obj/belly/B = vore_selected + B.name = "stomach" + B.desc = "The fearsome preadtor gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach.." + + B.emote_lists[DM_HOLD] = list( + "Your surroundings are momentarily filled with tour predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.", + "Your surrondings glow with a neon red, dashes and spirals of pitch black flowing through the red gummy flesh as if it were a strange sky.", + "Your satsified predator sways their bloated gullet happily, their warm rumbling vibrarting the stomach, and by extension you.",) + + B.emote_lists[DM_DIGEST] = list( + "Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!", + "The caustic red acid splashes, and washes over your frame, your sense of smell being overwhelmed by acid and sulfur as you're turned to nutrion.", + "Every swift swap of the predator's hips sends you slamming against the glowing red sides, your vision blurring further as you contunie to weaken." ,) + +/mob/living/simple_mob/humanoid/starhunter/hunter/champion + vore_active = 1 + vore_capacity = 6 + vore_max_size = RESIZE_HUGE + vore_min_size = RESIZE_SMALL + vore_pounce_chance = 0 // Beat them into crit before eating. + + can_be_drop_prey = FALSE //CHOMP Add + +/mob/living/simple_mob/humanoid/starhunter/hunter/champion/Login() + . = ..() + if(!riding_datum) + riding_datum = new /datum/riding/simple_mob(src) + verbs |= /mob/living/simple_mob/proc/animal_mount + verbs |= /mob/living/proc/toggle_rider_reins + movement_cooldown = 1 + +/mob/living/simple_mob/humanoid/starhunter/hunter/champion/MouseDrop_T(mob/living/M, mob/living/user) + return + +/mob/living/simple_mob/humanoid/starhunter/hunter/champion/init_vore() + if(!voremob_loaded) + return + .=..() + var/obj/belly/B = vore_selected + B.name = "stomach" + B.desc = "The fearsome preadtor gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach.." + + B.emote_lists[DM_HOLD] = list( + "Your surroundings are momentarily filled with tour predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.", + "Your surrondings glow with a neon red, dashes and spirals of pitch black flowing through the red gummy flesh as if it were a strange sky.", + "Your satsified predator sways their bloated gullet happily, their warm rumbling vibrarting the stomach, and by extension you.",) + + B.emote_lists[DM_DIGEST] = list( + "Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!", + "The caustic red acid splashes, and washes over your frame, your sense of smell being overwhelmed by acid and sulfur as you're turned to nutrion.", + "Every swift swap of the predator's hips sends you slamming against the glowing red sides, your vision blurring further as you contunie to weaken." ,) + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar + vore_active = 1 + vore_capacity = 6 + vore_max_size = RESIZE_HUGE + vore_min_size = RESIZE_SMALL + vore_pounce_chance = 0 // Beat them into crit before eating. + vore_icons = SA_ICON_LIVING + + can_be_drop_prey = FALSE //CHOMP Add + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar/Login() + . = ..() + if(!riding_datum) + riding_datum = new /datum/riding/simple_mob(src) + verbs |= /mob/living/simple_mob/proc/animal_mount + verbs |= /mob/living/proc/toggle_rider_reins + movement_cooldown = 1 + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar/MouseDrop_T(mob/living/M, mob/living/user) + return + +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar/init_vore() + if(!voremob_loaded) + return + .=..() + var/obj/belly/B = vore_selected + B.name = "stomach" + B.desc = "The fearsome preadtor gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach.." + + B.emote_lists[DM_HOLD] = list( + "Your surroundings are momentarily filled with tour predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.", + "Your surrondings glow with a neon red, dashes and spirals of pitch black flowing through the red gummy flesh as if it were a strange sky.", + "Your satsified predator sways their bloated gullet happily, their warm rumbling vibrarting the stomach, and by extension you.",) + + B.emote_lists[DM_DIGEST] = list( + "Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!", + "The caustic red acid splashes, and washes over your frame, your sense of smell being overwhelmed by acid and sulfur as you're turned to nutrion.", + "Every swift swap of the predator's hips sends you slamming against the glowing red sides, your vision blurring further as you contunie to weaken." ,) + diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/hunters.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/hunters.dm new file mode 100644 index 0000000000..5df7bff26e --- /dev/null +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/hunters.dm @@ -0,0 +1,242 @@ +//beg critters +//kitsune is bullet hell esque in a traditonal sense +//naga does a bunch of spawning and CoC +//This are both training for the bigger dude I'll make later +/mob/living/simple_mob/humanoid/starhunter/hunter/druid + name = "Starhunter Druid" + health = 200 //20 hits from 20 damage + maxHealth = 200 //20 hits from 20 damage + damage_fatigue_mult = 0 + icon_state = "snekdruid" + icon_living = "snekdruid" + +/mob/living/simple_mob/humanoid/starhunter/hunter/druid/do_special_attack(atom/A) + if(prob(50)) + lightpillar(A) + else + fire_lines(A) + +/mob/living/simple_mob/humanoid/starhunter/hunter/bullet_act(obj/item/projectile/P) + if(istype(P, /obj/item/projectile/energy/lightpillar)) + visible_message("[P] seems ineffective!.") //immune to their own attack + else + ..() + +/mob/living/simple_mob/humanoid/starhunter/hunter/proc/lightpillar(atom/A) + var/list/potential_targets = ai_holder.list_targets() + for(var/atom/entry in potential_targets) + if(istype(entry, /mob/living/simple_mob/humanoid/starhunter/hunter)) + potential_targets -= entry + if(potential_targets.len) + var/iteration = clamp(potential_targets.len, 1, 3) + for(var/i = 0, i < iteration, i++) + if(!(potential_targets.len)) + break + var/mob/target = pick(potential_targets) + potential_targets -= target + spawn_lightpillar(target) + +/mob/living/simple_mob/humanoid/starhunter/hunter/proc/spawn_lightpillar(atom/target) + var/list/bomb_range = block(locate(target.x-4, target.y-4, target.z), locate(target.x+4, target.y+4, target.z)) + new /obj/effect/calldown_attack(get_turf(target)) + bomb_range -= get_turf(target) + for(var/i = 0, i < 4, i++) + var/turf/T = pick(bomb_range) + new /mob/living/simple_mob/humanoid/starhunter/hunter/prop(T) + bomb_range -= T + +/mob/living/simple_mob/humanoid/starhunter/hunter/prop //This ain't a mob to spawn, but something apart of other mobs attacks and self deletes + health = 1000 + maxHealth = 1000 + projectile_dispersion = 0 + projectile_accuracy = 100 + armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 100, bio = 100, rad = 100) + projectiletype = /obj/item/projectile/energy/lightpillar + ranged_attack_delay = 1.5 SECONDS + icon_state = "prism" + icon_living = "prism" + +/mob/living/simple_mob/humanoid/starhunter/hunter/prop/ranged_pre_animation(atom/A) + Beam(get_turf(A), icon_state = "sniper_beam", time = 2 SECONDS, maxdistance = 10) + . = ..() + +/mob/living/simple_mob/humanoid/starhunter/hunter/prop/shoot_target(atom/A) + set waitfor = FALSE + + if(!istype(A) || QDELETED(A)) + return + + setClickCooldown(get_attack_speed()) + + face_atom(A) + + var/atom/orig_targ = A + + if(ranged_attack_delay) + A = get_turf(orig_targ) + ranged_pre_animation(A) + handle_attack_delay(A, ranged_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false. + + if(needs_reload) + if(reload_count >= reload_max) + try_reload() + return FALSE + + /* + * CHOMP Addition: This section here is (duplicated) special snowflake code because sniper does not call parent. Basically, this is a non-stupid version of the above intended for ranged mobs. + * ranged_attack_delay is stupid because it sleeps the entire mob. + * This new ranged_cooldown_time is smarter in the sense that it is an internalized timer. Try not to confuse the names. + */ + if(ranged_cooldown_time) //If you have a non-zero number in a mob's variables, this pattern begins. + if(ranged_cooldown <= world.time) //Further down, a timer keeps adding to the ranged_cooldown variable automatically. + visible_message("\The [src] fires at \the [A]!") //Leave notice of shooting. + shoot(A) //Perform the shoot action + if(casingtype) //If the mob is designated to leave casings... + new casingtype(loc) //... leave the casing. + ranged_cooldown = world.time + ranged_cooldown_time + ((injury_level / 2) SECONDS) //Special addition here. This is a timer. Keeping updating the time after shooting. Add that ranged cooldown time specified in the mob to the world time. + qdel(src) + return TRUE //End these commands here. + // CHOMPAddition End + + visible_message("\The [src] fires at \the [orig_targ]!") + shoot(A) + if(casingtype) + new casingtype(loc) + + if(ranged_attack_delay) + ranged_post_animation(A) + + return TRUE + +/mob/living/simple_mob/humanoid/starhunter/hunter/proc/fire_lines(atom/A) + var/list/potential_targets = ai_holder.list_targets() + for(var/atom/entry in potential_targets) + if(istype(entry, /mob/living/simple_mob/humanoid/starhunter/hunter)) + potential_targets -= entry + if(potential_targets.len) + var/iteration = clamp(potential_targets.len, 1, 3) + for(var/i = 0, i < iteration, i++) + if(!(potential_targets.len)) + break + var/mob/target = pick(potential_targets) + potential_targets -= target + spawn_fire(target) + +/mob/living/simple_mob/humanoid/starhunter/hunter/proc/spawn_fire(atom/target) + var/alignment = rand(1,2) // 1 for vertical, 2 for horizontal + var/list/line_range = list() + var/turf/T = get_turf(target) + line_range += T + for(var/i = 1, i <= 7, i++) + switch(alignment) + if(1) + if(T.x-i > 0) + line_range += locate(T.x-i, T.y, T.z) + if(T.x+i <= world.maxx) + line_range += locate(T.x+i, T.y, T.z) + if(2) + if(T.y-i > 0) + line_range += locate(T.x, T.y-i, T.z) + if(T.y+i <= world.maxy) + line_range += locate(T.x, T.y+i, T.z) + for(var/turf/dropspot in line_range) + new /obj/effect/calldown_attack_fire(dropspot) + + +/obj/effect/calldown_attack_fire + anchored = TRUE + density = FALSE + unacidable = TRUE + mouse_opacity = 0 + icon = 'icons/effects/effects.dmi' + icon_state = "drop_marker" + +/obj/effect/calldown_attack_fire/Initialize(mapload) + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/effect/calldown_attack_fire/LateInitialize() + var/delay = rand(25, 30) + spawn(delay-7) + new /obj/fire(src.loc) + spawn(delay) + qdel(src) + + +//Kitsune Stuff +/mob/living/simple_mob/humanoid/starhunter/hunter/champion + name = "Starhunter Starweilder" + health = 200 //10 hits from 20 damage + maxHealth = 200 + damage_fatigue_mult = 0 + projectiletype = /obj/item/projectile/energy/ninjastar + icon_state = "suneswift" + icon_living = "suneswift" + +/mob/living/simple_mob/humanoid/starhunter/hunter/champion/do_special_attack(atom/A) + if(prob(50)) + bullethell(A) + else + rapidfire_windup(A) + +/mob/living/simple_mob/humanoid/starhunter/hunter/proc/bullethell(atom/A) + set waitfor = FALSE + + var/sd = dir2angle(dir) + var/list/offsets = list(45, 45, 20, 10) + + for(var/i = 0, i<4, i++) + for(var/j = 0, j <4, j++) + var/obj/item/projectile/energy/slow_orb/shot = new(get_turf(src)) + shot.firer = src + shot.fire(sd) + sd += 90 + sd += pick(offsets) + sleep(20) + +/mob/living/simple_mob/humanoid/starhunter/hunter/proc/rapidfire_windup(atom/A) + var/list/potential_targets = ai_holder.list_targets() + for(var/atom/entry in potential_targets) + if(istype(entry, /mob/living/simple_mob/humanoid/starhunter/hunter)) + potential_targets -= entry + if(potential_targets.len) + var/iteration = clamp(potential_targets.len, 1, 3) + for(var/i = 0, i < iteration, i++) + if(!(potential_targets.len)) + break + var/mob/target = pick(potential_targets) + potential_targets -= target + rapidfire(target) + +/mob/living/simple_mob/humanoid/starhunter/hunter/proc/rapidfire(atom/target) + var/list/bomb_range = block(locate(target.x-4, target.y-4, target.z), locate(target.x+4, target.y+4, target.z)) + var/obj/item/projectile/P = new /obj/item/projectile/energy/ninjastar(get_turf(src)) + bomb_range -= get_turf(target) + for(var/i = 0, i < 4, i++) + var/turf/T = pick(bomb_range) + P.launch_projectile(target, BP_TORSO, src) + bomb_range -= T + + +/obj/item/projectile/energy/lightpillar + name = "Light Pillar" + icon = 'modular_chomp/icons/mob/starhunters.dmi' //commiting sin + icon_state = "lightpillar" + damage = 30 //DIVINE JUDGMENT + armor_penetration = 50 //DIVINE JUDGMENT + light_range = 5 + light_power = 5 + damage_type = BURN + check_armour = "laser" + light_color = "#FF6600" + range = 7 + speed = 13 + +/obj/item/projectile/energy/ninjastar + name = "Energy Star" + icon = 'modular_chomp/icons/mob/starhunters.dmi' //commiting sin + icon_state = "ninjastar" + damage = 15 + armor_penetration = 25 //Gets into the gaps + damage_type = BURN + check_armour = "laser" \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/passive.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/passive.dm new file mode 100644 index 0000000000..9f8eb584ef --- /dev/null +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/passive.dm @@ -0,0 +1,120 @@ +/mob/living/simple_mob/humanoid/starhunter/trader/weaponsmith + icon_state = "sunetrader" + products = list(/obj/item/weapon/gun/energy/sickshot = 5, + /obj/item/weapon/material/twohanded/fireaxe/scythe = 3, + /obj/item/weapon/material/twohanded/spear/lance = 3, + /obj/item/weapon/beartrap = 12, + /obj/item/weapon/material/barbedwire = 12, + /obj/item/weapon/material/sword/battleaxe = 3 + + ) // For each, use the following pattern: + + premium = list(/obj/item/weapon/gun/energy/maghowitzer) //This may be a mistake + + prices = list(/obj/item/weapon/gun/energy/maghowitzer = 8000, + /obj/item/weapon/gun/energy/sickshot = 800, + /obj/item/weapon/material/twohanded/fireaxe/scythe = 400, + /obj/item/weapon/material/twohanded/spear/lance = 400, + /obj/item/weapon/beartrap = 80, + /obj/item/weapon/material/barbedwire = 80, + /obj/item/weapon/material/sword/battleaxe = 400 + ) + +/mob/living/simple_mob/humanoid/starhunter/trader/reliccollecter + icon_state = "snektrader" + products = list(/obj/item/clothing/head/helmet/combat/crusader = 3, + /obj/item/clothing/suit/armor/combat/crusader = 3, + /obj/item/clothing/head/culthood = 3, + /obj/item/clothing/suit/cultrobes = 3, + /obj/item/clothing/head/helmet/space/cult = 3, + /obj/item/clothing/suit/space/cult = 3, + /obj/item/device/soulstone = 8, + /obj/item/clothing/glasses/monocoole = 3, + /obj/item/weapon/storage/belt/holding = 1, + /obj/item/clothing/gloves/regen = 1 + ) // For each, use the following pattern: + + premium = list(/obj/item/clothing/glasses/omni) //I am unsure why but this feels right + + prices = list(/obj/item/clothing/head/helmet/combat/crusader = 600, + /obj/item/clothing/suit/armor/combat/crusader = 600, + /obj/item/clothing/head/culthood = 600, + /obj/item/clothing/suit/cultrobes = 600, + /obj/item/clothing/head/helmet/space/cult = 600, + /obj/item/clothing/suit/space/cult = 600, + /obj/item/device/soulstone = 80, + /obj/item/clothing/glasses/monocoole = 1200, + /obj/item/weapon/storage/belt/holding = 1800, + /obj/item/clothing/gloves/regen = 1800, + /obj/item/clothing/glasses/omni = 2600 + ) + +/mob/living/simple_mob/humanoid/starhunter/trader/miner + icon_state = "snektrader" + products = list(/obj/item/weapon/kinetic_crusher/glaive = 5, + /obj/item/weapon/kinetic_crusher = 3, + /obj/item/weapon/gun/energy/mininglaser = 3, + /obj/item/weapon/melee/shock_maul = 3, + /obj/item/stack/material/phoron = 50, + /obj/item/stack/material/uranium = 50, + /obj/item/stack/material/tritium = 50, + /obj/item/stack/material/deuterium = 50, + /obj/item/stack/material/bronze = 50, + /obj/item/weapon/circuitboard/paradoxrift = 3 + ) // For each, use the following pattern: + + premium = list(/obj/item/weapon/circuitboard/defenseonelisk) // No specified amount = only one in stock + + prices = list(/obj/item/weapon/kinetic_crusher/glaive = 600, + /obj/item/weapon/kinetic_crusher = 600, + /obj/item/weapon/gun/energy/mininglaser = 800, + /obj/item/weapon/melee/shock_maul = 600, + /obj/item/stack/material/phoron = 12, + /obj/item/stack/material/uranium = 12, + /obj/item/stack/material/tritium = 12, + /obj/item/stack/material/deuterium = 12, + /obj/item/stack/material/bronze = 12, + /obj/item/weapon/circuitboard/paradoxrift = 2400, + /obj/item/weapon/circuitboard/defenseonelisk = 5000 + ) + +/mob/living/simple_mob/humanoid/starhunter/trader/farmer + icon_state = "sunetrader" + products = list(/obj/item/slime_extract/sepia =3, + /obj/item/slime_extract/ruby = 3, + /obj/item/slime_extract/bluespace = 3, + /obj/item/slime_extract/oil = 3, + /obj/item/slime_extract/sapphire = 3, + /obj/item/slime_extract/emerald = 3, + /obj/item/seeds/shrinkshroom = 12, + /obj/item/seeds/megashroom = 12, + /obj/item/seeds/pitcherseed = 6, + /obj/item/seeds/deathberryseed = 6, + /obj/item/seeds/ambrosiainfernusseed = 6, + /obj/item/seeds/thaadra = 6, + /obj/item/seeds/icepepperseed = 6, + /obj/item/seeds/jurlmah = 6, + /obj/item/seeds/amauri = 6, + /obj/item/seeds/gelthi = 6, + /obj/item/seeds/vale = 6 + ) // For each, use the following pattern: + + premium = list() // No specified amount = only one in stock + + prices = list(/obj/item/slime_extract/sepia = 2500, + /obj/item/slime_extract/ruby = 2250, + /obj/item/slime_extract/bluespace = 2250, + /obj/item/slime_extract/oil = 2250, + /obj/item/slime_extract/sapphire = 2250, + /obj/item/slime_extract/emerald = 2250, + /obj/item/seeds/shrinkshroom = 50, + /obj/item/seeds/megashroom = 50, + /obj/item/seeds/pitcherseed = 125, + /obj/item/seeds/deathberryseed = 125, + /obj/item/seeds/ambrosiainfernusseed = 125, + /obj/item/seeds/thaadra = 125, + /obj/item/seeds/icepepperseed = 125, + /obj/item/seeds/jurlmah = 125, + /obj/item/seeds/amauri = 125, + /obj/item/seeds/gelthi = 125, + /obj/item/seeds/vale = 125) \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/tradercode.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/tradercode.dm new file mode 100644 index 0000000000..e848cdd373 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/humanoid/starhunters/tradercode.dm @@ -0,0 +1,162 @@ +/mob/living/simple_mob/humanoid/starhunter/trader + var/vend_ready = 1 //Are we ready to vend?? Is it time?? + var/vend_delay = 10 //How long does it take to vend? + var/categories = CAT_NORMAL // Bitmask of cats we're currently showing + var/datum/stored_item/vending_product/currently_vending = null // What we're requesting payment for right now + var/vending_sound = "machines/vending/vending_drop.ogg" + + /* + Variables used to initialize the product list + These are used for initialization only, and so are optional if + product_records is specified + */ + var/list/products = list() // For each, use the following pattern: + var/list/contraband = list() // list(/type/path = amount,/type/path2 = amount2) + var/list/premium = list() // No specified amount = only one in stock + /// Set automatically, allows coin use + var/has_premium = FALSE + var/list/prices = list() // Prices for each item, list(/type/path = price), items not in the list don't have a price. + /// Set automatically, enables pricing + var/has_prices = FALSE + // This one is used for refill cartridge use. + var/list/refill = list() // For each, use the following pattern: + // Enables refilling with appropriate cartridges + var/refillable = TRUE + var/obj/item/weapon/coin/coin + + +/mob/living/simple_mob/humanoid/starhunter/trader/Initialize() + . = ..() + build_inventory() + + +/mob/living/simple_mob/humanoid/starhunter/trader/proc/build_inventory() + var/list/all_products = list( + list(products, CAT_NORMAL), + list(contraband, CAT_HIDDEN), + list(premium, CAT_COIN)) + + for(var/current_list in all_products) + var/category = current_list[2] + + for(var/entry in current_list[1]) + var/datum/stored_item/vending_product/product = new/datum/stored_item/vending_product(src, entry) + + product.price = (entry in prices) ? prices[entry] : 0 + product.amount = (current_list[1][entry]) ? current_list[1][entry] : 1 + product.category = category + + GLOB.vending_products[entry] = 1 + + if(LAZYLEN(prices)) + has_prices = TRUE + if(LAZYLEN(premium)) + has_premium = TRUE + + + LAZYCLEARLIST(products) + LAZYCLEARLIST(contraband) + LAZYCLEARLIST(premium) + LAZYCLEARLIST(prices) + all_products.Cut() + + +/mob/living/simple_mob/humanoid/starhunter/trader/attackby(obj/item/weapon/W as obj, mob/user as mob) + var/obj/item/weapon/card/id/I = W.GetID() + + if(I || istype(W, /obj/item/weapon/spacecash)) + attack_hand(user) + return + else if(istype(W, /obj/item/weapon/coin) && has_premium) + user.drop_item() + W.forceMove(src) + coin = W + categories |= CAT_COIN + to_chat(user, "You insert \the [W] into \the [src].") + SStgui.update_uis(src) + return + + +/mob/living/simple_mob/humanoid/starhunter/trader/proc/pay_with_cash(var/obj/item/weapon/spacecash/cashmoney, mob/user) + if(currently_vending.price > cashmoney.worth) + + // This is not a status display message, since it's something the character + // themselves is meant to see BEFORE putting the money in + to_chat(usr, "\icon[cashmoney][bicon(cashmoney)] That is not enough money.") + return 0 + + if(istype(cashmoney, /obj/item/weapon/spacecash)) + + visible_message("\The [usr] inserts some cash into \the [src].") + cashmoney.worth -= currently_vending.price + + if(cashmoney.worth <= 0) + usr.drop_from_inventory(cashmoney) + qdel(cashmoney) + else + cashmoney.update_icon() + + // Vending machines have no idea who paid with cash + credit_purchase("(cash)") + return 1 + +/mob/living/simple_mob/humanoid/starhunter/trader/proc/credit_purchase(var/target as text) + vendor_account.money += currently_vending.price + + var/datum/transaction/T = new() + T.target_name = target + T.purpose = "Purchase of [currently_vending.item_name]" + T.amount = "[currently_vending.price]" + T.source_terminal = name + T.date = current_date_string + T.time = stationtime2text() + vendor_account.transaction_log.Add(T) + +/mob/living/simple_mob/humanoid/starhunter/trader/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Vending", name) + ui.open() + +/mob/living/simple_mob/humanoid/starhunter/trader/tgui_data(mob/user) + var/list/data = list() + var/list/listed_products = list() + + data["chargesMoney"] = has_prices ? TRUE : FALSE + + data["products"] = listed_products + + if(coin) + data["coin"] = coin.name + else + data["coin"] = FALSE + + if(currently_vending) + data["actively_vending"] = currently_vending.item_name + else + data["actively_vending"] = null + + var/mob/living/carbon/human/H + var/obj/item/weapon/card/id/C + + data["guestNotice"] = "Please present cash."; + data["userMoney"] = 0 + data["user"] = null + if(ishuman(user)) + H = user + C = H.GetIdCard() + var/obj/item/weapon/spacecash/S = H.get_active_hand() + if(istype(S)) + data["userMoney"] = S.worth + data["guestNotice"] = "Accepting [S.initial_name]. You have: [S.worth]₮." + else if(istype(C)) + var/datum/money_account/A = get_account(C.associated_account_number) + if(istype(A)) + data["user"] = list() + data["user"]["name"] = A.owner_name + data["userMoney"] = A.money + data["user"]["job"] = (istype(C) && C.rank) ? C.rank : "No Job" + else + data["guestNotice"] = "Unlinked ID detected. Present cash to pay."; + + return data \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/slimess/xenobio.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/slimess/xenobio.dm index 49b6f8c04a..e6100344fa 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/slimess/xenobio.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/slimess/xenobio.dm @@ -1,2 +1,237 @@ /mob/living/simple_mob/slime/xenobio/yellow - projectiletype = /obj/item/projectile/energy/mob/electric_spider \ No newline at end of file + projectiletype = /obj/item/projectile/energy/mob/electric_spider + +/mob/living/simple_mob/slime/xenobio/sepia + desc = "This slime is rather unknown and strange." + color = "#968473" + slime_color = "sepia" + coretype = /obj/item/slime_extract/sepia + reagent_injected = "stoxin" + + mutation_chance = 100 + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/sepia, + /mob/living/simple_mob/slime/xenobio/oil, + /mob/living/simple_mob/slime/xenobio/green, + /mob/living/simple_mob/slime/xenobio/ruby + ) + +/obj/item/slime_extract/sepia + name = "sepia slime extract" + icon_state = "sepia slime extract" + description_info = "Who knows what will happen." + slime_type = /mob/living/simple_mob/slime/xenobio/sepia + +/decl/chemical_reaction/instant/slime/senseenhancer + name = "Slime Sense Enhancer" + id = "sepia_sh" + result = "senseenhancer" + required_reagents = list("phoron" = 5) + result_amount = 30 + required = /obj/item/slime_extract/sepia + +/decl/chemical_reaction/instant/slime/secertslime + name = "Secert Slime " + id = "sepia_swapm" + result = "change_drug_male" + required_reagents = list("water" = 1, "blood" = 1, "phoron" = 3) + result_amount = 1 + required = /obj/item/slime_extract/sepia + +/decl/chemical_reaction/instant/slime/secertslime/on_reaction(var/datum/reagents/holder) + holder.my_atom.visible_message("Infused with the mixture, the core begins to quiver and grow, and soon a new baby slime emerges from it!") + new /mob/living/simple_mob/slime/xenobio/redspace(get_turf(holder.my_atom)) + ..() + +/decl/chemical_reaction/instant/slime/genderswapf + name = "Slime Change F" + id = "sepia_swapf" + result = "change_drug_female" + required_reagents = list("water" = 5) + result_amount = 30 + required = /obj/item/slime_extract/sepia + +/decl/chemical_reaction/instant/slime/genderswapm + name = "Slime Change M" + id = "sepia_swapf" + result = "change_drug_male" + required_reagents = list("blood" = 5) + result_amount = 30 + required = /obj/item/slime_extract/sepia + +/decl/chemical_reaction/instant/slime/sepia_new_slime + name = "Slime Spawn" + id = "m_sepia_spawn" + result = null + required_reagents = list("slimejelly" = 5) + result_amount = 1 + required = /obj/item/slime_extract/sepia + +/decl/chemical_reaction/instant/slime/sepia_new_slime/on_reaction(var/datum/reagents/holder) + holder.my_atom.visible_message("Infused with slime jelly, the core begins to quiver and grow, and soon a new baby slime emerges from it!") + new /mob/living/simple_mob/slime/xenobio/sepia(get_turf(holder.my_atom)) + ..() + + + +/mob/living/simple_mob/slime/xenobio/redspace + desc = "This slime is rather unknown and strange." + color = "#A50021" + slime_color = "redspace" + coretype = /obj/item/slime_extract/redspace + reagent_injected = "mindbreaker" + + mutation_chance = 0 + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/dark, + /mob/living/simple_mob/slime/xenobio/redspace, + /mob/living/simple_mob/slime/xenobio/bluespace, + /mob/living/simple_mob/slime/xenobio/plague + ) + +/obj/item/slime_extract/redspace + name = "redspace slime extract" + icon_state = "ruby slime extract" + description_info = "Who knows what will happen." + slime_type = /mob/living/simple_mob/slime/xenobio/redspace + + +/decl/chemical_reaction/instant/slime/redspace_fire + name = "Slime Living Fire" + id = "m_liquid_fire" + result = "neoliquidfire" + required_reagents = list("phoron" = 5) + result_amount = 30 + required = /obj/item/slime_extract/redspace + +/decl/chemical_reaction/instant/slime/soulstone + name = "Slime Soulstone" + id = "m_redspace_soulstone" + required_reagents = list("blood" = 5) + result_amount = 1 + required = /obj/item/slime_extract/redspace + +/decl/chemical_reaction/instant/slime/soulstone/on_reaction(var/datum/reagents/holder) + new /obj/item/device/soulstone(get_turf(holder.my_atom)) + ..() + +/decl/chemical_reaction/instant/slime/obj/item/slime_extract/redspace_smoke + name = "Slime Smoke" + id = "m_redspace_smoke" + required_reagents = list("water" = 5) + result_amount = 1 + required = /obj/item/slime_extract/redspace + +/decl/chemical_reaction/instant/slime/redspace_smoke/on_reaction(var/datum/reagents/holder) + var/location = get_turf(holder.my_atom) + var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem + S.attach(location) + S.set_up(holder, 120, 0, location) + playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) + spawn(0) + S.start() + ..() + + +/decl/chemical_reaction/instant/slime/slime_mindbreaker + name = "Slime Pyrotoxin" + id = "m_redspace_mindbreaker" + result = "mindbreaker" + required_reagents = list("slimejelly" = 5) + result_amount = 30 + required = /obj/item/slime_extract/redspace + + +/mob/living/simple_mob/slime/xenobio/dark + desc = "This slime is rather unknown and strange." + color = "#080808" + slime_color = "dark" + coretype = /obj/item/slime_extract/dark + reagent_injected = "potassium_chlorophoride" + + mutation_chance = 0 + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/dark, + /mob/living/simple_mob/slime/xenobio/redspace, + /mob/living/simple_mob/slime/xenobio/bluespace, + /mob/living/simple_mob/slime/xenobio/plague + ) + +/obj/item/slime_extract/dark + name = "dark slime extract" + icon_state = "emerald slime extract" + description_info = "A strange extract, seems inert. Maybe something strange can be done one day" + slime_type = /mob/living/simple_mob/slime/xenobio/dark + +/decl/chemical_reaction/instant/slime/dark_neofire + name = "Slime Healing Liquid" + id = "m_liquid_healing" + result = "healing_nanites" + required_reagents = list("neoliquidfire" = 5) + result_amount = 30 + required = /obj/item/slime_extract/dark + +/decl/chemical_reaction/instant/slime/dark_liquidfire + name = "Slime Secert Guard" + id = "m_slime_guardian" + required_reagents = list("liquidfire" = 5) + result_amount = 1 + required = /obj/item/slime_extract/dark + + +/decl/chemical_reaction/instant/slime/dark_liquidfire/on_reaction(var/datum/reagents/holder) + for(var/mob/living/L in range(1, holder.my_atom)) + L.add_modifier(/datum/modifier/feysight, 10 MINUTES, src) + ..() + +/mob/living/simple_mob/slime/xenobio/plague + desc = "This slime is rather unknown and strange." + color = "#A50021" + slime_color = "plague" + coretype = /obj/item/slime_extract/plague + + mutation_chance = 0 + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/dark, + /mob/living/simple_mob/slime/xenobio/redspace, + /mob/living/simple_mob/slime/xenobio/bluespace, + /mob/living/simple_mob/slime/xenobio/plague + ) + +/obj/item/slime_extract/plague + name = "plague slime extract" + icon_state = "emerald slime extract" + description_info = "Who knows what will happen." + slime_type = /mob/living/simple_mob/slime/xenobio/plague + +/decl/chemical_reaction/instant/slime/plague_toxin + name = "Slime Living Fire" + id = "m_plague_toxin" + result = "neurophage_nanites" + required_reagents = list("phoron" = 5) + result_amount = 30 + required = /obj/item/slime_extract/plague + + +/decl/chemical_reaction/instant/slime/virusdish + name = "Virus dish" + id = "m_plague_dish" + required_reagents = list("blood" = 5) + result_amount = 1 + required = /obj/item/slime_extract/plague + +/decl/chemical_reaction/instant/slime/virusdish/on_reaction(var/datum/reagents/holder) + new /obj/item/weapon/virusdish(get_turf(holder.my_atom)) + ..() + +/decl/chemical_reaction/instant/slime/obj/item/slime_extract/plague_jelly + name = "Slime Smoke" + id = "m_slimejelly_alt" + result = "slimejelly" + required_reagents = list("water" = 5) + result_amount = 30 + required = /obj/item/slime_extract/plague \ No newline at end of file diff --git a/modular_chomp/game/machinery/turrets.dm b/modular_chomp/game/machinery/turrets.dm index df6267f82e..1554ffefb1 100644 --- a/modular_chomp/game/machinery/turrets.dm +++ b/modular_chomp/game/machinery/turrets.dm @@ -20,4 +20,65 @@ req_one_access = list(access_heads) installation = /obj/item/weapon/gun/energy/gun/burst health = 125 - maxhealth = 125 \ No newline at end of file + maxhealth = 125 + + +/obj/machinery/porta_turret/obelisk + name = "defense obelisk" + catalogue_data = list(/datum/category_item/catalogue/technology/turret) + anchored = TRUE + + circuit = /obj/item/weapon/circuitboard/defenseonelisk + + catalogue_data = null + + turret_type = "obelisk" + icon_color = "obelisk_blue" + lethal_icon_color = "oblisk_blue" + + icon = 'modular_chomp/icons/obj/machines/defense.dmi' + icon_state = "obelisk" + + density = TRUE + use_power = TRUE //this turret uses and requires power + idle_power_usage = 50000 //when inactive, this turret takes up constant 50 Equipment power + active_power_usage = 150000 //when active, this turret takes up constant 300 Equipment power + power_channel = EQUIP //drains power from the EQUIPMENT channel + req_one_access = list(access_heads) + blocks_emissive = EMISSIVE_BLOCK_UNIQUE + + + health = 300 //the turret's health + maxhealth = 300 //turrets maximal health. + auto_repair = TRUE //if 1 the turret slowly repairs itself. + + installation = /obj/item/weapon/gun/energy/pulse_rifle + reqpower = 50000 + turret_type = "normal" + icon_color = "blue" + lethal_icon_color = "blue" + + shot_delay = 0.5 SECONDS //This will delete foes + + targetting_is_configurable = FALSE + check_arrest = TRUE + check_records = TRUE + check_weapons = FALSE + check_access = FALSE + check_anomalies = TRUE + check_synth = FALSE + check_all = FALSE + ailock = TRUE + + lethal_is_configurable = FALSE // if false, its lethal setting cannot be changed + + timeout = 1 // When a turret pops up, then finds nothing to shoot at, this number decrements until 0, when it pops down. + can_salvage = FALSE + +/obj/item/weapon/circuitboard/defenseonelisk + name = "paradox rift generator circuit" + build_path = /obj/machinery/paradoxrift + board_type = new /datum/frame/frame_types/machine + origin_tech = list(TECH_DATA = 8, TECH_ARCANE = 3) + req_components = list( + /obj/item/stack/cable_coil = 30) \ No newline at end of file diff --git a/modular_chomp/icons/mob/starhunters.dmi b/modular_chomp/icons/mob/starhunters.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c27cd45c584578bafd0f163a90edff9d7d2bfeb8 GIT binary patch literal 7122 zcmZ8`c{r5c`~R7RvF|b2l`Lh;5+Zw+>=9FuDQih&$=HX;k}XRJnX*P@NNKT*P!vXF z%bT%e3)u~3%>3r_{(XMG?{$68ANP6P_j8|f-OqDg=UlIIJ;`=9W}IxoYybdG3v-i; z06-WJOtHWicD%&=1|#s<&dTvT!-Yobf{SwU^70_n6gnDUnhIRsAgryeL64W3nwp!N zo0nHXW8azf=S_+x{i*H+{qJHoYALFo#NnR2WkL| z#flq=pH|hd(7t43WMpP#PWPwJ+s`X1$*XG^hK7dftC-tr+bAokA%%_#iHOn*ybkZ1 zo=tGGejle+;AK!9LI;5Edu%U6ec6k1)I;d)+qZNtFgiL)DZ}jT?a>*nK&|Bx&(o(* zJ5fAdJ#@7KfHh?<0BZB|^JQgagM))piBl;lDStEm=H}+o3+M|A3l0trF)=aj?(Wmm z(_}Jve0-c<<5gH#SX*1$+}!-?)vN98?H@mWP$-m{nVGq{xsHyG&!0d4{{6eXy*(!< zr=g)?XJ=<>YU=s(=bM|Gv$M0MrKJf83EA1%7!2mkn>Q^jEd&B#XlTg8!y_vzD?dL! zE-o%HF|n?$E-Wm}%E~G!Daq5*GcqzVGc(iA&#$kque!Rryu2Kb$K!CgprD|}#zrEM z7#<#OU|?|l`t`uTz(Ri66jykdHcnY4^zJkrg+7@$wNSH(sYP+LVd{-&Nu?*l01NZU~JP2YC_AV)1s3>`5=t3_$<{9o$`wr4FC z`{1P}qRFnWDBquK4WKeacF6O(SqlkVe<6-beXy24i0t28!Rj)GcL-~ zJQ^Ou8|tTx^G!AD`YaqAFX4?#KJ#4A&QsTh)RW?sWjs@nrtnUc4q&d#B)P_f6NL5m zwkyXbD2oa50G;$jvx;LlVsAnCrb>}@q6D?QsIZV3YuIW8Om)-!Rl&ylcyQ|k$Vyyr zyU?N@qcv*cs+j?>$LD`v!xdJrYGw4v@)`uv{#AX%U5QRHs3bO)$mr%7126&a+l%sWy z7qr;XtDJS>SG1VN4CB6hmUHej5r@KbosO<@tJ;$x`5tT{)=R-pzVyk7xSUHaOLgX` zi>lJ}IPg(mlfO|n^#Lq)NJcoSIH1#>eM{`7b)a1BqvC-m>&1+U;T`qegZ9J_u|Aep zB~S01$jll;1Zkz1a36PJ^RjP~KgN6U;Y#8Wg9i_)IS$2e4|sV@xa~4ZlnT541fSV` zkjP)}b497-{$;L7rURoEI|adMSImQpdj2LJZwxxR7A)H|hWW=7Mqju4pV4U%HVW~Q zD(qJBuv2U_`Tl3__JD3h=}7zdX|)2y|hmXFsa@O+j=p+tY!buIqfaF7p&N zY`q2PaebqeZAx_Sq(B^NPT)grLN@VXN|*7Zt~A@ROl#xP0`}zcjyTp=xqaz13##mL z1t0G2EOyu9IpSM#453NZU){CO_%t88?A9f8Uzm00{D2T_Cm(*BxNu&vr!Q6>3h}v# ze5+be&Tm=3!Et%%Zis3!bF4=9@Au)T`pZQpw|nZ`S-|9moIC>GaBTW#9ff3Z|BPQ1ckUMj&p>f75|0~^U*aElgaDL3a(&Yf#* zO|%p0T6}U@PyJ^X&gL^zA2u7qJiOh_yHn*ckcgg}B?FX@*ahzn?bNx?p&Ba_d)Xr` zA^5kmVf9G_u_KWo_E;s8y#=vP9q*-68^!d08R zC|T7f?O+}~FM+|n=5}kE8A_W^gZwIEFYNHmhnxc${VJrS&jfzRNwyUk!w1gpNO&MelWK z#mPL+sC0{&-BI7)8@-77s-ZZs*#EYBM5Fe{+tLV!93?3?{$I6q-+v-sGO_PDl-1C3 zxPh8hUlD1_xl=xkWhxJVj0+z`6=XdvucJKY15b24Rzrz-30s?zw+)pns zSF8QHzz^NJLvzVSR7XqpbE~^H*onqr{^V^DS(3Rd-_KvsLF<2<5bBvw$!C+^>3UfL z`UClYlh~(NE?O_c4t@HNT$sB>xQkkOoZ}gfJEH)8;5U;vfTgt=K7+fOa{+$jZ-bmP z2qE|E){+zqIA}V|{q!mSqYiSyb{b)ck0q6c(h^KQwF-mg58OI8;V0 zaB(s=j%Qzw*vMFa%qy%g_Bx7unjci2x&?s-h-9C*pDUjKK$_p8=`n8Wgsa-v0P-iR z31>dnqioD}wcj-ak1VgF7I)BiCFe_H0x@#G|55T@ZmV zOYV=@ak49bQ8bGB^I>Hbh|C*GXngeVT8%Sy1J2I9B9iZ!T-N3M!m;^t3ieONZ5z1@ z5EwT*aZ$fL`3De;t0WR@Mpy&pgegb#X^w*Pp_b+;`EjuI;frS_e&am@I8+K=+~me~ zyXgsF)W7}}2_sd6@!dNagcmVI9iF5uN$}o%A(D3f`3oOu)5f*K?*_f3ZTS{qq}&pF zgTz|Ig?Ba@9~G0x@NRErUkm>@+s!<0RfmW~7$0p{#No||3NSoYl4g&hs{(nKZBE6D zS|$0@uOQSb2aj8lznC<}7huAVYvh|z)4KjaH-rU0vKm+(Tnd{r=b&BZP_{>R&qn*h zZ|-XGh;)_jrgk&SnTL(T=7=L!l2h{^I+@2FXr`{a@YtVro6}Ht=FzDZsaMRhQ zb!UD_&6~y#unGQcmLAjJj@HwAg2A@h%ZbaBk{@J!FyVdOE)pt>-L;+cx%PwqqXZEB z8w!xY_`nC(t^`EJX_{E2+xDX(p`0()zs&GgRK*(s1wF_@O|CbxguqpiW{Xh*lhHbR z6n}X=2sgv;_d*a}@{d(n4!&+@bgRTSE-*O$Nk& zFvFZRSe+BeByBHNLNE~nj0Y}1Lm>ZloN?8&{O_v@nTNi}Vx9*|m8t5r@#k7zPuO6E z*@vGlQ_yRZO<6<8J+xgnIRaX&pDXFL9XStvewD3a!gJ5?JHqTFN^rv1%{};AuqRnr zlWL3JEj}CZ_>g(z=g`x0lvLK0#65T}*fooUcKxZQySvCNX)yGD{o5J!p=$c<($2*p z^_xzL2l#l9?_HDy@G{N>J{TrZZ;}_9k0W0+KVK9zRE@h?a|9AQBs?-=0w2D0W4TG) z$vU&*z(#D@=@ol5$}b?w*xWoPq$x-8@+(It`;$jbg8@rOR|KT06a3jZdBN4r7;X?Q z55kneTTz3A=mc=`t#C^>P%m7b*&Hdf*2bPaWP|(^;f&0N_^98$yMM1#iV1&Z3_DVd zG~hhXjON_-HG(de3Bsy|{VLK$M^EiOP1%QY!&YUnPtr*~nHFP+aWrt)vnDf8WKjw&ZHEBjiV z-S-3c%!dL!w$N`jFP!($??J;2bcbGD_U$J;KB6o1G8XFMVXeyj?oaK{&fRA%N<%uA zre?JacaK95i^Ecn*5T#`H}qd0u}yxQEWJDhnURq}+`N)y$fuAqT6vQz#l-(UBB?N6 zwCspgqI4dyO+j;Zi(sZ>43J0gk7dlOs@kZnbo z@f|dDYRd9zW{iy^O;oP&F-{0Rd~IWkg5KX1gp5LYW-pmUJ=Db|92E0vh|db(&mnLo zbFi@wt7l;<;m{%C+8P0lxlS?L={?AJr>qqViu|_e#e$JgPy$(B;6hB@_NVVPAqo2u z{>EO+Xm8|a0peP_f($0Qb?Fy5n7F2yxZ_q8qWA*C2PeZ@P#>TD% zRx3(ii;L6Q!Iwlo9x1>hY>vdHuSxfI6W3{uEo%^#k;_uaeOJb08xax!k7N&3G5qx4@|{u zgqtC;KFUQ!m%N(Y{J<6-cWDdalclJ!eDf)(@m5av@qXsoJI;5Dp{ou8=UgNPm|W`_C%vx29e84Mj%WrYNbu;6|i1^6d5B2N*wU!F0`i$K$Fy>h}nuEp-Z z{e}dXQ*BrLqXxDp%Xk}wx@}{Crg^bn24HYU4&Y-FR}kOF(@ei|$&ytM`P2*7Iur#vxX& zHK*3x3k<53#QI?0vS1Gk$KR5eu(O{v@IE82omQ8dPu&2{;UlMem84sk3(ksSLpEm4 z`?}9QCsXxA38A?V@bI=7n-bVY^aesCB?Gc%mzT3kNN#TWT(eB+$CW_9lCP`CN^7|L zo0hQIlRWqWhD@8PvOW{RxZkZbXk)pkE}tI2S0-wlN&I>A$)TEj=AKs50wl0Ben^mQ zULZrd&foG90>Y`$cC!Ge^c6@UE#LyZ_yvKDuvSE)P7azXoPnXRwDOA4l`^BN4!bK6T({ztm{R3hrSxx#m5e$Z%nV?#5M5xtzJJ zf5mAFQdI{T5C()A7h%(ih-lIcO=cAl2slMx{X0qR{}4jX{?u5+?LWCQUc1_GS!fCf zqqS|={2uRI$xCf({9D-ypr1lb%1MT+%6hByKlhd)IIawCLFdJ^on%9sC*+CgTBl=( zst@3apc{)Mma!2Q4kcptEC^{jYb46ts|>yUHCw%pJKrN(j|I6<+9sK|B4-99DX}o( zx3sT~Zf+k!*P3-ok}uF#`Xb1GUH3yqto7MI38{8!i=t(raY_gQ$B?{1fDIC2=ME~O zB8wqaoUlded}H2U`s=Mvl)Pw)NKttc7u$dH)*(K@VKGbhNUf1e-^z)tJVNx&h0Li< z%Ear!%4zF(a~wmH6?!ZH?8v{GY+o3{&rVBYoZ$!88(vZenVSM=}xMmo8+OWT&`6y{{^2#6_L>; z5Zv{4@0mk=()+`^3$x>zv`BrP|Eu8umoVlWcwiYspx354*MRkxp8vjn1I!h;gOdi-D0QB@pq;b)oQ#r$1;u|9=1*f-nkv} z?v7R?Eu5s!d@EAsw>4?H24c(V8;%qVxJ(ADx?1u|wBN7>Iz&-C7E6q-8f4azhV?g` zp#}k2{KxP=IdcplH^SCXaXbU{Rj0K+A`bHvxnn}uEcxvp(@N0~_0Q9p8(-fix9%%? zz;WN4e@zM#YFB5j@TAG>k1DP`mY^CtQuW2L;bg-C#S$IkUEg2K$(?#ndglYKS(Zi_ z7PT!#nS5`(Ec*zoZx1hO)56Flp>*==;o&JU+MUM4pwBrlIG@VS9*9~)cARL%(amHZ{&rcyxM#Jg_rVbBmWotLtbD+qyK-@f9o*J zKIJ5-M9BH>yTh=d4amKRYsAJl+v_@vp%^x~m`z#}p1FD!cKb|Ze?-4_z}19@n3!w% zXmt-H{a{BY*M{qkE?aL(if_-|N?&)dS>(npaz3I?~qxufMi_7-m+l zzcy;4fs(6I^FPa!Xa?Y~S% zSw>WB7I3GA1D%k6gA<#6!m2m7Y?gLM?F`Su~N_R z;1fswoqO^W>C0adjN*MtV)*6|HrGx<$*bo19vGr*y^I{Mc(@uJ^KO%JNJCMwxv@q9 z|0!ouu{Gnlw4T8Zt?AEZ?i#U1$?fnzaOhvS{~u`Y_#Yf2vBI$WsoX5Hu+Mu~6+OxS zLQvNJpN(EA35WbgS%Z1KT|+?G2RK_uE`=rSbkOzD zczse~RE(Zas5q0R91~@WsG^5vZ8ZJ5`<1fiS}V)Qo}}sit?m_+;K8dc4MQCHXJO&R zN5A_|bB!<3w8q8Ow&Usg*xdz6Wazz$!+odzVdYb8vbApi+g2J4KKdRCt+|})RB0328P;i*PA+T#_}zcyg>Q8OSRg71cLfK zFnNImJ->&2hGbpq;h%vWyj-~z^KK7RF2F+}W)1qbbDs=#QN1*)xliyWC!~qERTB5& zo8G0PvoIXA?LH3upXDa6AS8-jP@gWF8~1&MO3QR02rgrd-VBbBVXKMZ+mx(5tRXjU za-FW+`iG~J7i@cm=zm3wMpBorW7-ww9PB9TRvuej4-ds84AN5$%YK!-pe7<&A+ueX zTiQs{m8kc%j9sN^RPn3i6*ZB2wGPQjou6)x5|`-rrjgbp{@DXfH({JioX>&IJ}pcmM&STXGq#|J?)F@?h5kffAgD z5dS^)P=V-v;(hC!whQ};zxFz4*`YuvZY`@iM$h8;F3A0lK{#+74E>xOar<6d*}6ZU zAcIdN_jrUlu2;-Fw3@=fM%~H1ouQY;zI<&U~%5YkAc007LmrB_4%0004WQchCN+i;7GgsveJv`3{kMel0AGs&0eFjI0(8 z9GSD7>{fs-FcZ*gu=ssGrh5Q90lig#*XRO9b^;nO*^Q&_k?xQxL|TK@Pj7a+06aku zVBW3+6PS0$_3Ef@jt)Q{IDrYyhMpkv|6=x+^P0-Va8sZYlvsl0@;f<6^=k!K1tS4+ zq7nKd1o?K~9hpFlLYwx3`su@q(lRJLR=3VIH0d>92gj$ znwtIJ*!ahfAGI|#*(>I30V-fD3GxeOaCmkj4ag~;*pOX+ifdh+UP3ejd$HWEE&r81 z0mWlHT^vI+CMG91u=g}MIeB?`9XsaW6c`xL(0EZ*L^4U(;oqiaM67iZI=OA)e_1!5cyiE*d|0 zq;uX!^CUx2Pwx&3;~?Y9#$F0CsjT7l;v3i)KHlcf^{%~V4K$R;)5S4_V`g%K#2p}S W0R!VxY5#RV7K5j&pUXO@geCygCOLEf literal 0 HcmV?d00001 diff --git a/modular_chomp/maps/overmap/space_pois/space_areas.dm b/modular_chomp/maps/overmap/space_pois/space_areas.dm index a1778d7933..7904133c3e 100644 --- a/modular_chomp/maps/overmap/space_pois/space_areas.dm +++ b/modular_chomp/maps/overmap/space_pois/space_areas.dm @@ -157,6 +157,14 @@ name = "POI - Space bar" ambience = AMBIENCE_ARRIVALS +/area/submap/starhunterarena + name = "POI - Starhunter Arena" + ambience = AMBIENCE_OTHERWORLDLY + +/area/submap/starhuntertraders + name = "POI - Starhunter Traders" + ambience = AMBIENCE_OTHERWORLDLY + /area/submap/syndiecakesfactory name = "POI - Syndiecakes factory" ambience = AMBIENCE_OTHERWORLDLY diff --git a/modular_chomp/maps/overmap/space_pois/space_pois.dm b/modular_chomp/maps/overmap/space_pois/space_pois.dm index 395c5d4cc4..7ddd4093b7 100644 --- a/modular_chomp/maps/overmap/space_pois/space_pois.dm +++ b/modular_chomp/maps/overmap/space_pois/space_pois.dm @@ -230,6 +230,16 @@ Less important mappath = "modular_chomp/maps/overmap/space_pois/spacebar_40x40.dmm" block_size = 40 +/datum/map_template/dynamic_overmap/starhuntersarena_70x70 + name = "Starhunter Challenge" + mappath = "modular_chomp/maps/overmap/space_pos/starhuntersarena_70x70.dmm" + block_size = 70 + +/datum/map_template/dynamic_overmap/starhunterstraders_30x30 + name = "Starhunter Traders" + mappath = "modular_chomp/maps/overmap/space_pos/starhunterstraders_30x30.dmm" + block_size = 30 + /datum/map_template/dynamic_overmap/syndiecakesfactory_40x40 name = "Land o' Cakes Factory" mappath = "modular_chomp/maps/overmap/space_pois/syndiecakesfactory_40x40.dmm" diff --git a/modular_chomp/maps/overmap/space_pois/starhuntersarena_70x70.dmm b/modular_chomp/maps/overmap/space_pois/starhuntersarena_70x70.dmm new file mode 100644 index 0000000000..1cc9e26d59 --- /dev/null +++ b/modular_chomp/maps/overmap/space_pois/starhuntersarena_70x70.dmm @@ -0,0 +1,5106 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/space, +/area/template_noop) +"b" = ( +/turf/simulated/wall/r_wall, +/area/submap/starhunterarena) +"c" = ( +/obj/structure/table/alien/blue, +/obj/item/weapon/paper{ + info = "Come face us. If we fall, you shall be rewarded."; + name = "Challenge" + }, +/turf/simulated/floor/tiled/eris/steel/bar_light, +/area/submap/starhunterarena) +"g" = ( +/mob/living/simple_mob/humanoid/starhunter/hunter/druid, +/turf/simulated/floor/grass, +/area/submap/starhunterarena) +"j" = ( +/mob/living/simple_mob/humanoid/starhunter/hunter/champion, +/turf/simulated/floor/grass, +/area/submap/starhunterarena) +"k" = ( +/obj/structure/flora/ausbushes, +/turf/simulated/floor/grass, +/area/submap/starhunterarena) +"n" = ( +/obj/structure/flora/ausbushes/genericbush, +/turf/simulated/floor/grass, +/area/submap/starhunterarena) +"u" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/submap/starhunterarena) +"B" = ( +/obj/structure/flora/tree/bigtree, +/turf/simulated/floor/grass, +/area/submap/starhunterarena) +"E" = ( +/obj/structure/flora/ausbushes/brflowers, +/mob/living/simple_mob/humanoid/starhunter/hunter/avatar, +/turf/simulated/floor/grass, +/area/submap/starhunterarena) +"G" = ( +/turf/simulated/mineral, +/area/template_noop) +"K" = ( +/obj/structure/fans/hardlight/colorable/abductor, +/turf/simulated/floor/tiled/eris/steel/bar_light, +/area/submap/starhunterarena) +"M" = ( +/turf/simulated/floor/tiled/eris/steel/bar_light, +/area/submap/starhunterarena) +"P" = ( +/turf/simulated/mineral, +/area/submap/starhunterarena) +"T" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/submap/starhunterarena) +"U" = ( +/turf/simulated/floor/grass, +/area/submap/starhunterarena) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +a +a +a +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +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 +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +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 +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(12,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(13,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(14,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +"} +(15,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +U +U +U +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +"} +(16,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +u +u +U +U +U +U +U +U +U +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +"} +(17,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +k +U +U +u +U +u +U +U +U +U +U +U +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +"} +(18,1,1) = {" +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +u +u +U +U +U +U +U +u +U +n +U +u +U +U +U +B +U +U +U +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +"} +(19,1,1) = {" +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +u +u +U +U +U +u +u +U +U +U +u +u +U +U +U +U +U +U +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +"} +(20,1,1) = {" +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +U +u +u +u +u +u +U +u +u +u +U +U +u +u +U +U +U +U +U +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +"} +(21,1,1) = {" +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +U +B +u +U +u +u +u +U +j +U +U +U +U +u +u +u +U +U +U +P +P +P +P +P +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(22,1,1) = {" +a +a +a +a +a +a +P +P +P +P +P +U +U +U +U +U +U +U +P +P +P +P +P +P +P +P +P +P +U +U +U +U +U +u +u +u +U +U +U +U +U +U +k +U +U +U +U +u +U +U +U +P +P +P +P +P +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(23,1,1) = {" +a +a +a +a +a +P +P +P +P +P +U +U +U +U +u +u +u +U +U +U +P +P +P +P +P +P +P +P +U +U +U +U +U +U +u +u +u +u +u +u +u +U +U +U +U +U +U +u +u +U +U +U +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +"} +(24,1,1) = {" +a +a +a +a +a +P +P +P +P +U +U +U +U +u +u +U +u +u +u +U +U +U +P +P +P +P +P +P +u +u +U +U +k +U +u +u +U +U +U +U +u +u +u +U +u +u +U +U +u +U +U +U +U +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +"} +(25,1,1) = {" +a +a +a +a +a +P +P +P +U +U +U +U +u +u +U +U +U +U +u +u +u +U +U +P +P +P +U +U +U +u +u +U +U +U +U +U +U +U +U +U +U +U +u +u +U +u +u +u +T +u +u +U +U +U +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +"} +(26,1,1) = {" +a +a +a +a +P +P +P +P +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 +U +k +U +U +U +U +U +U +U +U +U +U +U +U +U +T +T +U +U +U +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +"} +(27,1,1) = {" +a +a +a +a +P +P +P +U +U +U +u +u +U +U +U +U +B +U +U +U +U +U +U +U +U +U +U +U +U +U +U +P +U +U +U +U +U +U +U +U +U +U +B +U +U +U +U +U +U +U +U +u +u +U +U +P +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(28,1,1) = {" +a +a +a +P +P +P +P +U +U +u +u +U +U +U +U +U +U +U +U +n +U +U +U +U +U +U +U +U +U +U +P +P +P +P +P +U +U +U +U +U +U +U +U +U +U +U +U +U +U +U +U +U +u +u +U +U +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(29,1,1) = {" +a +a +a +P +P +P +P +u +u +u +U +k +U +U +U +U +U +U +U +U +U +U +U +U +k +U +U +U +U +P +P +P +P +P +P +P +P +U +U +U +U +U +U +U +U +U +U +P +P +P +U +U +U +u +u +U +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(30,1,1) = {" +a +a +a +P +P +P +U +U +U +U +U +U +U +U +U +U +U +k +U +U +u +U +U +U +U +U +U +U +U +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +P +P +P +P +P +P +U +U +u +T +U +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(31,1,1) = {" +a +a +a +P +P +P +U +U +U +B +U +U +U +U +U +U +U +U +U +u +u +U +U +U +U +U +U +U +U +U +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +P +P +P +P +P +P +U +U +U +u +u +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(32,1,1) = {" +a +a +a +P +P +P +u +u +U +U +U +U +U +U +U +U +U +U +U +u +U +U +U +U +U +B +U +U +U +U +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(33,1,1) = {" +a +a +a +P +P +P +U +u +u +U +U +U +U +U +U +B +U +U +u +u +U +U +U +U +U +U +U +U +k +U +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(34,1,1) = {" +a +a +a +P +P +P +U +U +u +u +u +U +U +U +U +U +U +U +E +u +u +U +U +U +U +U +U +U +U +U +P +P +P +P +P +P +P +U +U +P +P +P +P +P +P +P +P +P +P +P +P +U +U +n +U +U +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(35,1,1) = {" +a +a +a +a +P +P +P +U +U +U +u +u +U +U +U +U +u +u +u +U +u +u +U +U +n +U +U +U +U +U +P +P +P +P +P +P +U +U +U +U +U +U +U +U +P +P +P +P +P +P +P +U +U +U +U +U +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(36,1,1) = {" +a +a +a +a +P +P +P +P +U +U +U +u +u +u +u +u +u +U +U +U +U +u +u +U +U +U +U +U +U +P +P +P +P +P +P +U +U +n +U +U +U +U +U +U +U +U +U +U +P +P +u +U +U +U +U +U +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(37,1,1) = {" +a +a +a +a +a +P +P +P +U +U +U +U +U +U +u +U +U +U +k +U +U +U +u +u +U +U +U +U +P +P +P +P +P +P +U +U +U +U +U +U +U +U +B +U +U +U +U +U +U +U +u +u +U +U +U +U +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(38,1,1) = {" +a +a +a +a +a +P +P +P +P +U +U +U +u +u +U +U +U +U +U +U +U +U +U +u +u +u +u +u +P +P +P +P +P +U +U +U +U +U +U +U +U +U +U +U +k +U +U +U +U +U +U +u +U +U +U +U +P +P +P +P +P +G +a +a +a +a +a +a +a +a +"} +(39,1,1) = {" +a +a +a +a +a +P +P +P +P +U +U +u +u +U +U +U +n +U +U +U +U +U +U +U +U +U +U +U +P +P +P +P +P +U +U +U +U +B +U +U +U +U +U +U +U +U +U +U +U +U +U +u +u +U +U +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +"} +(40,1,1) = {" +a +a +a +a +a +a +P +P +P +P +u +u +U +U +U +U +U +U +U +U +U +U +B +U +U +U +U +u +P +P +P +P +U +U +U +U +U +U +U +U +U +U +U +U +U +U +U +U +U +B +U +U +u +u +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +"} +(41,1,1) = {" +a +a +a +a +a +a +P +P +P +P +U +U +U +U +B +U +U +U +U +U +U +U +U +U +U +u +u +u +P +P +P +P +U +U +U +U +u +U +k +U +U +U +U +u +u +U +U +U +U +U +U +U +U +U +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +"} +(42,1,1) = {" +a +a +a +a +a +a +a +P +P +P +P +U +U +U +U +U +U +k +U +U +U +U +U +U +u +u +U +U +P +P +P +P +U +U +U +n +u +u +U +U +U +u +u +u +u +u +U +U +U +U +U +U +U +U +U +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +"} +(43,1,1) = {" +a +a +a +a +a +a +a +a +P +P +P +U +U +U +U +U +U +U +U +U +U +U +u +u +U +U +U +U +P +P +P +P +P +U +U +U +U +u +u +U +g +U +U +U +U +U +u +U +U +U +U +U +U +U +U +P +b +b +b +b +b +a +a +a +a +a +a +a +a +a +"} +(44,1,1) = {" +a +a +a +a +a +a +a +a +P +P +P +P +U +U +U +U +U +U +U +U +U +u +u +U +U +n +U +U +P +P +P +P +P +P +U +U +U +U +u +u +U +U +U +U +n +U +U +u +U +U +U +k +U +U +U +U +b +M +M +M +b +a +a +a +a +a +a +a +a +a +"} +(45,1,1) = {" +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +U +U +U +U +U +u +u +U +U +k +U +U +U +P +P +P +P +P +P +U +U +U +U +U +u +u +u +U +U +U +U +U +U +U +U +U +U +U +U +U +U +K +M +c +M +K +a +a +a +a +a +a +a +a +a +"} +(46,1,1) = {" +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +U +U +U +u +U +U +U +U +U +U +U +P +P +P +P +P +P +U +U +U +U +B +U +U +U +U +U +U +U +U +U +u +U +U +U +U +U +U +U +b +M +M +M +b +a +a +a +a +a +a +a +a +a +"} +(47,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +u +U +U +U +U +U +U +U +P +P +P +P +P +P +P +P +U +U +U +U +U +U +U +U +U +U +U +U +U +u +U +U +U +U +U +U +P +b +b +b +b +b +a +a +a +a +a +a +a +a +a +"} +(48,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +U +U +U +U +P +P +P +P +P +P +P +P +P +P +U +U +U +n +U +U +U +U +U +B +u +u +U +U +U +n +U +U +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +"} +(49,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +U +U +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +U +U +U +U +U +U +U +U +U +U +U +U +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +"} +(50,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +U +U +U +U +U +U +U +U +U +U +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +"} +(51,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +U +U +U +U +U +U +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +"} +(52,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +U +U +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +"} +(53,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +U +U +U +U +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(54,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(55,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(56,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(57,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(58,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(59,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(60,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(61,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(62,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(63,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +P +P +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(64,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +P +P +P +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(65,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(66,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(67,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(68,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(69,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(70,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/modular_chomp/maps/overmap/space_pois/starhunterstraders_30x30.dmm b/modular_chomp/maps/overmap/space_pois/starhunterstraders_30x30.dmm new file mode 100644 index 0000000000..f0fa0367c4 --- /dev/null +++ b/modular_chomp/maps/overmap/space_pois/starhunterstraders_30x30.dmm @@ -0,0 +1,1032 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/space, +/area/template_noop) +"b" = ( +/turf/simulated/wall/r_wall, +/area/submap/starhuntertraders) +"c" = ( +/mob/living/simple_mob/humanoid/starhunter/trader/farmer, +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"g" = ( +/mob/living/simple_mob/humanoid/starhunter/trader/miner, +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"q" = ( +/obj/structure/table/sifwoodentable, +/obj/item/weapon/reagent_containers/food/snacks/berrymuffin/poison, +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"A" = ( +/obj/structure/table/sifwoodentable, +/obj/item/weapon/reagent_containers/food/snacks/berrymuffin/berry, +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"C" = ( +/turf/simulated/mineral, +/area/submap/starhuntertraders) +"D" = ( +/mob/living/simple_mob/humanoid/starhunter/trader/reliccollecter, +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"F" = ( +/mob/living/simple_mob/humanoid/starhunter/trader/weaponsmith, +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"G" = ( +/obj/structure/fans/hardlight/colorable/abductor, +/turf/simulated/floor/tiled/eris/steel/bar_light, +/area/submap/starhuntertraders) +"H" = ( +/obj/structure/table/sifwoodentable, +/obj/item/weapon/reagent_containers/food/snacks/burrito_cheese_spicy, +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"M" = ( +/obj/structure/table/sifwoodentable, +/obj/item/weapon/reagent_containers/food/snacks/bacon_flatbread, +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"N" = ( +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"R" = ( +/obj/structure/table/sifwoodentable, +/obj/item/weapon/reagent_containers/food/snacks/burrito_mystery, +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"S" = ( +/obj/item/weapon/bedsheet, +/obj/structure/bed, +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"T" = ( +/obj/structure/table/sifwoodentable, +/obj/item/weapon/reagent_containers/food/snacks/amanitajelly, +/turf/simulated/floor/grass, +/area/submap/starhuntertraders) +"V" = ( +/turf/simulated/floor/tiled/eris/steel/bar_light, +/area/submap/starhuntertraders) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +C +C +C +C +C +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +C +C +C +C +C +C +C +a +a +a +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +a +C +C +C +C +C +C +C +C +C +a +a +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +C +C +C +N +N +N +N +N +C +C +C +a +a +a +a +a +a +a +a +a +a +"} +(10,1,1) = {" +a +a +a +a +a +a +a +a +C +C +C +N +N +N +N +N +N +N +C +C +C +a +a +a +a +a +a +a +a +a +"} +(11,1,1) = {" +a +a +a +a +a +a +a +C +C +C +N +N +H +T +M +T +q +N +N +C +C +C +a +a +a +a +a +a +a +a +"} +(12,1,1) = {" +a +a +a +a +a +a +C +C +C +N +N +N +c +N +N +N +F +N +N +N +b +b +b +a +a +a +a +a +a +a +"} +(13,1,1) = {" +a +a +a +a +a +a +C +C +N +N +N +N +N +N +N +N +N +N +N +N +b +V +b +a +a +a +a +a +a +a +"} +(14,1,1) = {" +a +a +a +a +a +a +C +C +N +N +N +N +S +S +N +S +S +N +N +N +G +V +G +a +a +a +a +a +a +a +"} +(15,1,1) = {" +a +a +a +a +a +a +C +C +N +N +N +N +D +N +N +N +N +N +N +N +b +V +b +a +a +a +a +a +a +a +"} +(16,1,1) = {" +a +a +a +a +a +a +C +C +C +N +N +N +N +N +N +g +N +N +N +N +b +b +b +a +a +a +a +a +a +a +"} +(17,1,1) = {" +a +a +a +a +a +a +a +C +C +C +N +N +A +T +M +T +R +N +N +C +C +C +a +a +a +a +a +a +a +a +"} +(18,1,1) = {" +a +a +a +a +a +a +a +a +C +C +C +N +N +N +N +N +N +N +C +C +C +a +a +a +a +a +a +a +a +a +"} +(19,1,1) = {" +a +a +a +a +a +a +a +a +a +C +C +C +N +N +N +N +N +C +C +C +a +a +a +a +a +a +a +a +a +a +"} +(20,1,1) = {" +a +a +a +a +a +a +a +a +a +a +C +C +C +C +C +C +C +C +C +a +a +a +a +a +a +a +a +a +a +a +"} +(21,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +C +C +C +C +C +C +C +a +a +a +a +a +a +a +a +a +a +a +a +"} +(22,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +C +C +C +C +C +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(23,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(24,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(25,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(26,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(27,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(28,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(29,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(30,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/vorestation.dme b/vorestation.dme index 283b5753a2..39b8e6b3f1 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4639,6 +4639,7 @@ #include "modular_chomp\code\game\machinery\autolathe_armory.dm" #include "modular_chomp\code\game\machinery\colormate.dm" #include "modular_chomp\code\game\machinery\holosign.dm" +#include "modular_chomp\code\game\machinery\paradox.dm" #include "modular_chomp\code\game\machinery\petrification.dm" #include "modular_chomp\code\game\machinery\portable_turret.dm" #include "modular_chomp\code\game\machinery\virtual_reality\vr_console.dm" @@ -4736,6 +4737,7 @@ #include "modular_chomp\code\modules\materials\materials\organic\animal_products.dm" #include "modular_chomp\code\modules\mining\shelter_atoms_ch.dm" #include "modular_chomp\code\modules\mining\shelters_ch.dm" +#include "modular_chomp\code\modules\mining\tools.dm" #include "modular_chomp\code\modules\mob\holder.dm" #include "modular_chomp\code\modules\mob\mob.dm" #include "modular_chomp\code\modules\mob\dead\observer\observer.dm" @@ -4814,6 +4816,12 @@ #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\humanoid\eclipse\eclipse.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\humanoid\eclipse\lore.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\humanoid\eclipse\noms.dm" +#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\humanoid\starhunters\avatar.dm" +#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\humanoid\starhunters\base.dm" +#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\humanoid\starhunters\food.dm" +#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\humanoid\starhunters\hunters.dm" +#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\humanoid\starhunters\passive.dm" +#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\humanoid\starhunters\tradercode.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\mechanical\cyber_horror.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\mechanical\disbot.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\mechanical\drones\combat_drone.dm"