diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm index 8993318f00..8f1e550e17 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm @@ -8,185 +8,81 @@ }, /obj/structure/alien/resin/wall, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "c" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /obj/structure/alien/resin/wall, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "d" = ( /obj/structure/alien/resin/wall, /obj/structure/alien/weeds{ icon_state = "weeds2" }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "e" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" }, /obj/structure/alien/egg/burst, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "f" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds{ icon_state = "weeds2" }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "g" = ( /obj/structure/alien/weeds, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "h" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "i" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "j" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /mob/living/simple_animal/hostile/alien, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "k" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /obj/structure/alien/egg/burst, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "l" = ( /obj/structure/alien/weeds/node, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "m" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" }, /obj/structure/bed/nest, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "n" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /obj/structure/bed/nest, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "o" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, @@ -198,43 +94,19 @@ }, /obj/item/weapon/gun/ballistic/automatic/pistol, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "p" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "q" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "r" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -242,112 +114,48 @@ /obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "s" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /obj/structure/alien/egg, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "t" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /mob/living/simple_animal/hostile/alien/sentinel, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "u" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" }, /obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "v" = ( /obj/structure/alien/weeds/node, /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "w" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "x" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg/burst, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "y" = ( /obj/structure/alien/weeds/node, /obj/structure/alien/resin/wall, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "z" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -364,28 +172,12 @@ /obj/item/weapon/melee/baton/loaded, /obj/item/clothing/head/helmet, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "A" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "B" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -393,59 +185,27 @@ /obj/structure/alien/egg/burst, /obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "C" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg/burst, /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "D" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "E" = ( /obj/structure/alien/weeds, /mob/living/simple_animal/hostile/alien/drone{ plants_off = 1 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "F" = ( /obj/structure/alien/weeds, /mob/living/simple_animal/hostile/alien/queen/large{ @@ -455,15 +215,7 @@ plants_off = 1 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "G" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -472,28 +224,12 @@ plants_off = 1 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "H" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "I" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, @@ -507,56 +243,24 @@ /obj/item/clothing/under/syndicate, /obj/item/clothing/glasses/night, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "J" = ( /obj/structure/alien/weeds, /mob/living/simple_animal/hostile/alien/sentinel, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "K" = ( /obj/structure/alien/weeds/node, /mob/living/simple_animal/hostile/alien, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "L" = ( /obj/structure/alien/weeds/node, /mob/living/simple_animal/hostile/alien/drone{ plants_off = 1 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "M" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -573,15 +277,7 @@ stat = 2 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "N" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, @@ -590,15 +286,7 @@ "O" = ( /obj/structure/alien/weeds/node, /turf/template_noop, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "P" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" @@ -615,41 +303,17 @@ plants_off = 1 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "R" = ( /obj/structure/alien/weeds, /turf/template_noop, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "S" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /turf/template_noop, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "T" = ( /obj/structure/alien/weeds/node, /obj/structure/alien/resin/wall, diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 4a3618e941..9a2b6473af 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -23,6 +23,7 @@ #define WACKY "Wacky" #define MUT_MUTE "Mute" #define SMILE "Smile" +#define STONER "Stoner" #define UNINTELLIGABLE "Unintelligable" #define SWEDISH "Swedish" #define CHAV "Chav" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 2d36d72ee3..e5d1f4c19e 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -124,3 +124,8 @@ #define MAX_CHICKENS 50 #define UNHEALING_EAR_DAMAGE 100 + + +#define INCORPOREAL_MOVE_BASIC 1 +#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows +#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt \ No newline at end of file diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 0f4ae021ad..74847ed88c 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -177,7 +177,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new to_chat(world, "[msg]") log_world(msg) - SetRunLevel(1) + if (!current_runlevel) + SetRunLevel(1) // Sort subsystems by display setting for easy access. sortTim(subsystems, /proc/cmp_subsystem_display) diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 2611bc53e6..234569bfdc 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -164,8 +164,8 @@ SUBSYSTEM_DEF(garbage) if (time > highest_del_time) highest_del_time = time if (time > 10) - log_game("Error: [type]([refID]) took longer then 1 second to delete (took [time/10] seconds to delete)") - message_admins("Error: [type]([refID]) took longer then 1 second to delete (took [time/10] seconds to delete).") + log_game("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete)") + message_admins("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete).") postpone(time/5) /datum/controller/subsystem/garbage/proc/HardQueue(datum/A) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index a54c74966a..c839c7c33d 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -744,6 +744,15 @@ SUBSYSTEM_DEF(ticker) cinematic = SSticker.cinematic maprotatechecked = SSticker.maprotatechecked + switch (current_state) + if(GAME_STATE_SETTING_UP) + Master.SetRunLevel(RUNLEVEL_SETUP) + if(GAME_STATE_PLAYING) + Master.SetRunLevel(RUNLEVEL_GAME) + if(GAME_STATE_FINISHED) + Master.SetRunLevel(RUNLEVEL_POSTGAME) + + modevoted = SSticker.modevoted /datum/controller/subsystem/ticker/proc/send_news_report() @@ -844,7 +853,7 @@ SUBSYSTEM_DEF(ticker) if(delay_end) to_chat(world, "An admin has delayed the round end.") return - + to_chat(world, "Rebooting World in [delay/10] [(delay >= 10 && delay < 20) ? "second" : "seconds"]. [reason]") var/start_wait = world.time @@ -854,7 +863,7 @@ SUBSYSTEM_DEF(ticker) if(delay_end) to_chat(world, "Reboot was cancelled by an admin.") return - + SSblackbox.set_details("[feedback_c]","[feedback_r]") log_game("Rebooting World. [reason]") diff --git a/code/datums/map_config.dm b/code/datums/map_config.dm index 4dc0362d01..139ad096ec 100644 --- a/code/datums/map_config.dm +++ b/code/datums/map_config.dm @@ -11,8 +11,8 @@ var/minetype = "lavaland" - var/list/transition_config = list(MAIN_STATION = CROSSLINKED, - CENTCOMM = SELFLOOPING, + var/list/transition_config = list(CENTCOMM = SELFLOOPING, + MAIN_STATION = CROSSLINKED, EMPTY_AREA_1 = CROSSLINKED, EMPTY_AREA_2 = CROSSLINKED, MINING = SELFLOOPING, diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm index caab422e8b..05e4f4d458 100644 --- a/code/datums/mutations.dm +++ b/code/datums/mutations.dm @@ -608,6 +608,23 @@ GLOBAL_LIST_EMPTY(mutations_list) message = replacetext(message," muh valids "," getting my kicks ") return trim(message) +/datum/mutation/human/stoner + name = "Stoner" + quality = NEGATIVE + dna_block = NON_SCANNABLE + text_gain_indication = "You feel...totally chill, man!" + text_lose_indication = "You feel like you have a better sense of time." + +/datum/mutation/human/stoner/on_acquiring(mob/living/carbon/human/owner) + ..() + owner.grant_language(/datum/language/beachbum) + owner.remove_language(/datum/language/common) + +/datum/mutation/human/stoner/on_losing(mob/living/carbon/human/owner) + ..() + owner.grant_language(/datum/language/common) + owner.remove_language(/datum/language/beachbum) + /datum/mutation/human/laser_eyes name = "Laser Eyes" quality = POSITIVE diff --git a/code/datums/riding.dm b/code/datums/riding.dm index c069e0cdeb..1d989cc653 100644 --- a/code/datums/riding.dm +++ b/code/datums/riding.dm @@ -1,6 +1,4 @@ /datum/riding - var/generic_pixel_x = 0 //All dirs show this pixel_x for the driver - var/generic_pixel_y = 0 //All dirs show this pixel_y for the driver, use these vars if the pixel shift is stable across all dir, override handle_vehicle_offsets otherwise. var/next_vehicle_move = 0 //used for move delays var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower var/keytype = null @@ -34,16 +32,29 @@ /datum/riding/proc/force_dismount(mob/living/M) ridden.unbuckle_mob(M) -//Override this to set your vehicle's various pixel offsets -//if they differ between directions, otherwise use the -//generic variables /datum/riding/proc/handle_vehicle_offsets() + var/ridden_dir = "[ridden.dir]" + var/passindex = 0 if(ridden.has_buckled_mobs()) for(var/m in ridden.buckled_mobs) + passindex++ var/mob/living/buckled_mob = m - buckled_mob.setDir(ridden.dir) - buckled_mob.pixel_x = generic_pixel_x - buckled_mob.pixel_y = generic_pixel_y + var/list/offsets = get_offsets(passindex) + dir_loop: + for(var/offsetdir in offsets) + if(offsetdir == ridden_dir) + var/list/diroffsets = offsets[offsetdir] + buckled_mob.pixel_x = diroffsets[1] + if(diroffsets.len == 2) + buckled_mob.pixel_y = diroffsets[2] + if(diroffsets.len == 3) + buckled_mob.layer = diroffsets[3] + break dir_loop + + +//Override this to set your vehicle's various pixel offsets +/datum/riding/proc/get_offsets(pass_index) // list(dir = x, y, layer) + return list("[NORTH]" = list(0, 0), "[SOUTH]" = list(0, 0), "[EAST]" = list(0, 0), "[WEST]" = list(0, 0)) //KEYS /datum/riding/proc/keycheck(mob/user) @@ -100,10 +111,12 @@ //atv /datum/riding/atv keytype = /obj/item/key - generic_pixel_x = 0 - generic_pixel_y = 4 vehicle_move_delay = 1 +/datum/riding/atv/get_offsets(pass_index) // list(dir = x, y, layer) + return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4)) + + /datum/riding/atv/handle_vehicle_layer() if(ridden.dir == SOUTH) ridden.layer = ABOVE_MOB_LAYER @@ -150,24 +163,9 @@ keytype = /obj/item/key/janitor -/datum/riding/janicart/handle_vehicle_offsets() - ..() - if(ridden.has_buckled_mobs()) - for(var/m in ridden.buckled_mobs) - var/mob/living/buckled_mob = m - switch(buckled_mob.dir) - if(NORTH) - buckled_mob.pixel_x = 0 - buckled_mob.pixel_y = 4 - if(EAST) - buckled_mob.pixel_x = -12 - buckled_mob.pixel_y = 7 - if(SOUTH) - buckled_mob.pixel_x = 0 - buckled_mob.pixel_y = 7 - if(WEST) - buckled_mob.pixel_x = 12 - buckled_mob.pixel_y = 7 +/datum/riding/janicart/get_offsets(pass_index) // list(dir = x, y, layer) + return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(-12, 7), "[EAST]" = list(0, 7), "[WEST]" = list( 12, 7)) + //scooter /datum/riding/scooter/handle_vehicle_layer() if(ridden.dir == SOUTH) @@ -175,20 +173,14 @@ else ridden.layer = OBJ_LAYER +/datum/riding/scooter/get_offsets(pass_index) // list(dir = x, y, layer) + return list("[NORTH]" = list(0), "[SOUTH]" = list(-2), "[EAST]" = list(0), "[WEST]" = list( 2)) + /datum/riding/scooter/handle_vehicle_offsets() ..() if(ridden.has_buckled_mobs()) for(var/m in ridden.buckled_mobs) var/mob/living/buckled_mob = m - switch(buckled_mob.dir) - if(NORTH) - buckled_mob.pixel_x = 0 - if(EAST) - buckled_mob.pixel_x = -2 - if(SOUTH) - buckled_mob.pixel_x = 0 - if(WEST) - buckled_mob.pixel_x = 2 if(buckled_mob.get_num_legs() > 0) buckled_mob.pixel_y = 5 else @@ -209,16 +201,18 @@ //secway /datum/riding/secway keytype = /obj/item/key/security - generic_pixel_x = 0 - generic_pixel_y = 4 + +/datum/riding/secway/get_offsets(pass_index) // list(dir = x, y, layer) + return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4)) //i want to ride my /datum/riding/bicycle keytype = null - generic_pixel_x = 0 - generic_pixel_y = 4 vehicle_move_delay = 0 +/datum/riding/bicycle/get_offsets(pass_index) // list(dir = x, y, layer) + return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4)) + //speedbike /datum/riding/space/speedbike keytype = null @@ -233,54 +227,28 @@ ridden.pixel_x = -18 ridden.pixel_y = 0 -/datum/riding/space/speedbike/handle_vehicle_offsets() - if(ridden.has_buckled_mobs()) - for(var/m in ridden.buckled_mobs) - var/mob/living/buckled_mob = m - buckled_mob.setDir(ridden.dir) - switch(ridden.dir) - if(NORTH) - buckled_mob.pixel_x = 0 - buckled_mob.pixel_y = -8 - if(SOUTH) - buckled_mob.pixel_x = 0 - buckled_mob.pixel_y = 4 - if(EAST) - buckled_mob.pixel_x = -10 - buckled_mob.pixel_y = 5 - if(WEST) - buckled_mob.pixel_x = 10 - buckled_mob.pixel_y = 5 +/datum/riding/space/speedbike/get_offsets(pass_index) // list(dir = x, y, layer) + return list("[NORTH]" = list(0, -8), "[SOUTH]" = list(0, 4), "[EAST]" = list(-10, 5), "[WEST]" = list( 10, 5)) //SPEEDUWAGON /datum/riding/space/speedwagon vehicle_move_delay = 0 -/datum/riding/space/speedwagon/handle_vehicle_offsets() - if(ridden.has_buckled_mobs()) - for(var/m in ridden.buckled_mobs) - var/mob/living/buckled_mob = m - buckled_mob.setDir(ridden.dir) - ridden.pixel_x = -48 - ridden.pixel_y = -48 - switch(ridden.dir) - if(NORTH) - buckled_mob.pixel_x = -10 - buckled_mob.pixel_y = -3 - if(SOUTH) - buckled_mob.pixel_x = 16 - buckled_mob.pixel_y = 3 - if(EAST) - buckled_mob.pixel_x = -4 - buckled_mob.pixel_y = 30 - if(WEST) - buckled_mob.pixel_x = 4 - buckled_mob.pixel_y = -1 - /datum/riding/space/speedwagon/handle_vehicle_layer() ridden.layer = BELOW_MOB_LAYER +/datum/riding/space/speedwagon/get_offsets(pass_index) // list(dir = x, y, layer) + switch(pass_index) + if(1) + return list("[NORTH]" = list(-10, -4), "[SOUTH]" = list(16, 3), "[EAST]" = list(-4, 30), "[WEST]" = list(4, -3)) + if(2) + return list("[NORTH]" = list(19, -5, 4), "[SOUTH]" = list(-13, 3, 4), "[EAST]" = list(-4, -3, 4.1), "[WEST]" = list(4, 28, 3.9)) + if(3) + return list("[NORTH]" = list(-10, -18, 4.2), "[SOUTH]" = list(16, 25, 3.9), "[EAST]" = list(-22, 30), "[WEST]" = list(22, -3, 4.1)) + if(4) + return list("[NORTH]" = list(19, -18, 4.2), "[SOUTH]" = list(-13, 25, 3.9), "[EAST]" = list(-22, 3, 3.9), "[WEST]" = list(22, 28)) + ///////////////BOATS//////////// /datum/riding/boat keytype = /obj/item/weapon/oar @@ -297,17 +265,15 @@ /datum/riding/boat/dragon keytype = null - generic_pixel_y = 2 - generic_pixel_x = 1 vehicle_move_delay = 1 +/datum/riding/boat/dragon/get_offsets(pass_index) // list(dir = x, y, layer) + return list("[NORTH]" = list(1, 2), "[SOUTH]" = list(1, 2), "[EAST]" = list(1, 2), "[WEST]" = list( 1, 2)) ///////////////ANIMALS//////////// //general animals /datum/riding/animal keytype = null - generic_pixel_x = 0 - generic_pixel_y = 4 /datum/riding/animal/handle_ride(mob/user, direction) if(user.incapacitated()) @@ -335,7 +301,7 @@ /datum/riding/human/ride_check(mob/living/M) var/mob/living/carbon/human/H = ridden //IF this runtimes I'm blaming the admins. if(M.incapacitated(FALSE, TRUE) || H.incapacitated(FALSE, TRUE)) - M.visible_message("[M] falls off [ridden]!") + M.visible_message("[M] falls off of [ridden]!") Unbuckle(M) return FALSE if(M.restrained(TRUE)) @@ -345,22 +311,8 @@ if(H.pulling == M) H.stop_pulling() -/datum/riding/human/handle_vehicle_offsets() - for(var/mob/living/M in ridden.buckled_mobs) - M.setDir(ridden.dir) - switch(ridden.dir) - if(NORTH) - M.pixel_x = 0 - M.pixel_y = 6 - if(SOUTH) - M.pixel_x = 0 - M.pixel_y = 6 - if(EAST) - M.pixel_x = -6 - M.pixel_y = 4 - if(WEST) - M.pixel_x = 6 - M.pixel_y = 4 +/datum/riding/human/get_offsets(pass_index) // list(dir = x, y, layer) + return list("[NORTH]" = list(0, 6), "[SOUTH]" = list(0, 6), "[EAST]" = list(-6, 4), "[WEST]" = list( 6, 4)) /datum/riding/human/handle_vehicle_layer() if(ridden.buckled_mobs && ridden.buckled_mobs.len) @@ -375,7 +327,7 @@ ridden.unbuckle_mob(user) user.Weaken(3) user.Stun(3) - user.visible_message("[ridden] pushes [user] off of them!") + user.visible_message("[ridden] pushes [user] off of them!") /datum/riding/cyborg keytype = null @@ -407,6 +359,9 @@ else ridden.layer = MOB_LAYER +/datum/riding/cyborg/get_offsets(pass_index) // list(dir = x, y, layer) + return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(-6, 3), "[WEST]" = list( 6, 3)) + /datum/riding/cyborg/handle_vehicle_offsets() if(ridden.has_buckled_mobs()) for(var/mob/living/M in ridden.buckled_mobs) @@ -417,26 +372,14 @@ M.pixel_x = R.module.ride_offset_x[dir2text(ridden.dir)] M.pixel_y = R.module.ride_offset_y[dir2text(ridden.dir)] else - switch(ridden.dir) - if(NORTH) - M.pixel_x = 0 - M.pixel_y = 4 - if(SOUTH) - M.pixel_x = 0 - M.pixel_y = 4 - if(EAST) - M.pixel_x = -6 - M.pixel_y = 3 - if(WEST) - M.pixel_x = 6 - M.pixel_y = 3 + ..() /datum/riding/cyborg/force_dismount(mob/living/M) ridden.unbuckle_mob(M) var/turf/target = get_edge_target_turf(ridden, ridden.dir) var/turf/targetm = get_step(get_turf(ridden), ridden.dir) M.Move(targetm) - M.visible_message("[M] is thrown clear of [ridden]!") + M.visible_message("[M] is thrown clear of [ridden]!") M.throw_at(target, 14, 5, ridden) M.Weaken(3) diff --git a/code/game/area/areas/ruins.dm b/code/game/area/areas/ruins.dm index 828d165dd8..4a1fd86c20 100644 --- a/code/game/area/areas/ruins.dm +++ b/code/game/area/areas/ruins.dm @@ -5,6 +5,7 @@ icon_state = "away" has_gravity = 1 hidden = TRUE + dynamic_lighting = DYNAMIC_LIGHTING_FORCED /area/ruin/unpowered @@ -199,3 +200,15 @@ /area/ruin/abandonedzoo name = "Abandoned Zoo" icon_state = "green" + + +//Xeno Nest + +/area/ruin/xenonest + name = "The Hive" + always_unpowered = 1 + power_environ = 0 + power_equip = 0 + power_light = 0 + poweralm = 0 + \ No newline at end of file diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index 0ff9ef4f2d..f5db21f0ab 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -53,7 +53,6 @@ /datum/gang_item/weapon/ammo/uzi_ammo, /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/spraycan, - /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/emp, /datum/gang_item/equipment/c4, /datum/gang_item/equipment/frag, @@ -91,7 +90,6 @@ /datum/gang_item/weapon/ammo/uzi_ammo, /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/spraycan, - /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/emp, /datum/gang_item/equipment/c4, /datum/gang_item/equipment/frag, diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 293b114b36..da7cdee931 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -15,7 +15,7 @@ var/icon_stun = "revenant_stun" var/icon_drain = "revenant_draining" var/stasis = FALSE - incorporeal_move = 3 + incorporeal_move = INCORPOREAL_MOVE_JAUNT invisibility = INVISIBILITY_REVENANT health = INFINITY //Revenants don't use health, they use essence instead maxHealth = INFINITY @@ -102,7 +102,7 @@ if(unreveal_time && world.time >= unreveal_time) unreveal_time = 0 revealed = FALSE - incorporeal_move = 3 + incorporeal_move = INCORPOREAL_MOVE_JAUNT invisibility = INVISIBILITY_REVENANT to_chat(src, "You are once more concealed.") if(unstun_time && world.time >= unstun_time) @@ -222,7 +222,7 @@ R.essence = max(reforming_essence - 15 * perfectsouls, 75) //minus any perfect souls R.client_to_revive = client //If the essence reforms, the old revenant is put back in the body R.revenant = src - invisibility = INVISIBILITY_ABSTRACT + invisibility = INVISIBILITY_ABSTRACT revealed = FALSE ghostize(0)//Don't re-enter invisible corpse return @@ -236,7 +236,7 @@ return revealed = TRUE invisibility = 0 - incorporeal_move = 0 + incorporeal_move = FALSE if(!unreveal_time) to_chat(src, "You have been revealed!") unreveal_time = world.time + time @@ -309,12 +309,12 @@ /mob/living/simple_animal/revenant/proc/death_reset() revealed = FALSE - unreveal_time = 0 + unreveal_time = 0 notransform = 0 unstun_time = 0 inhibited = FALSE draining = FALSE - incorporeal_move = 3 + incorporeal_move = INCORPOREAL_MOVE_JAUNT invisibility = INVISIBILITY_REVENANT alpha=255 stasis = FALSE diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 6df194cf25..fac4f7f31b 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -358,8 +358,12 @@ /obj/machinery/clonepod/proc/go_out() countdown.stop() var/mob/living/mob_occupant = occupant + var/turf/T = get_turf(src) if(mess) //Clean that mess and dump those gibs! + for(var/obj/fl in unattached_flesh) + fl.forceMove(T) + unattached_flesh.Cut() mess = FALSE new /obj/effect/gibspawner/generic(loc) audible_message("You hear a splat.") @@ -375,10 +379,12 @@ to_chat(occupant, "There is a bright flash!
You feel like a new being.
") mob_occupant.flash_act() - var/turf/T = get_turf(src) occupant.forceMove(T) icon_state = "pod_0" mob_occupant.domutcheck(1) //Waiting until they're out before possible monkeyizing. The 1 argument forces powers to manifest. + for(var/fl in unattached_flesh) + qdel(fl) + unattached_flesh.Cut() occupant = null @@ -389,8 +395,7 @@ SPEAK("Critical error! Please contact a Thinktronic Systems \ technician, as your warranty may be affected.") mess = TRUE - for(var/obj/item/O in unattached_flesh) - qdel(O) + maim_clone(mob_occupant) //Remove every bit that's grown back so far to drop later, also destroys bits that haven't grown yet icon_state = "pod_g" if(mob_occupant.mind != clonemind) clonemind.transfer_to(mob_occupant) @@ -450,9 +455,10 @@ var/static/list/zones = list("r_arm", "l_arm", "r_leg", "l_leg") for(var/zone in zones) var/obj/item/bodypart/BP = H.get_bodypart(zone) - BP.drop_limb() - BP.forceMove(src) - unattached_flesh += BP + if(BP) + BP.drop_limb() + BP.forceMove(src) + unattached_flesh += BP for(var/o in H.internal_organs) var/obj/item/organ/organ = o diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index c9a448fc7b..605cd60ce6 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -54,7 +54,7 @@ /obj/machinery/computer/communications/Topic(href, href_list) if(..()) return - if (src.z > ZLEVEL_CENTCOM) //Can only use on centcom and SS13 + if (z != ZLEVEL_STATION && z != ZLEVEL_CENTCOM) //Can only use on centcom and SS13 to_chat(usr, "Unable to establish a connection: \black You're too far away from the station!") return usr.set_machine(src) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 4a64cf5c0d..f3c32d3d68 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -632,7 +632,14 @@ GLOBAL_LIST_EMPTY(PDAs) L = get(src, /mob/living/silicon) if(L && L.stat != UNCONSCIOUS) - to_chat(L, "\icon[src] Message from [source.owner] ([source.ownjob]), \"[msg.message]\"[msg.get_photo_ref()] (Reply)") + + var/hrefstart + var/hrefend + if (isAI(L)) + hrefstart = "" + hrefend = "" + + to_chat(L, "\icon[src.icon] Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], \"[msg.message]\"[msg.get_photo_ref()] (Reply)") update_icon() add_overlay(icon_alert) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 5bca9cf535..eafd5fdba4 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -548,7 +548,7 @@ return ..() /obj/item/borg/projectile_dampen/attack_self(mob/user) - if(cycle_delay < world.time) + if(cycle_delay > world.time) to_chat(user, "\the [src] is still recycling its projectors!") return cycle_delay = world.time + PKBORG_DAMPEN_CYCLE_DELAY diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 222fbe4174..021966570a 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -83,6 +83,14 @@ var/list/access = list() var/registered_name = null // The name registered_name on the card var/assignment = null + var/access_txt // mapping aid + + + +/obj/item/weapon/card/id/Initialize(mapload) + . = ..() + if(mapload && access_txt) + access = text2access(access_txt) /obj/item/weapon/card/id/attack_self(mob/user) user.visible_message("[user] shows you: \icon[src] [src.name].", \ diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm index 64fb4c7ecc..91b605543b 100644 --- a/code/game/objects/items/weapons/pneumaticCannon.dm +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -270,4 +270,4 @@ /obj/item/weapon/pneumatic_cannon/pie/selfcharge/process() if(++charge_tick >= charge_ticks) - fill_with_type(/obj/item/weapon/reagent_containers/food/snacks/pie, charge_amount) + fill_with_type(/obj/item/weapon/reagent_containers/food/snacks/pie/cream, charge_amount) diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index 757a0bbb8d..744740c6f9 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -161,7 +161,16 @@ anchored = 0 buildstacktype = /obj/item/stack/sheet/mineral/wood buildstackamount = 10 + var/mob/living/owner = null +/obj/structure/bed/dogbed/proc/update_owner(mob/living/M) + owner = M + name = "[M]'s bed" + desc = "[M]'s bed! Looks comfy." + +/obj/structure/bed/dogbed/buckle_mob(mob/living/M, force, check_loc) + . = ..() + update_owner(M) /obj/structure/bed/alien name = "resting contraption" diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 6100b296ed..0bda03c667 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -377,6 +377,10 @@ icon_state = "sleeper" flavour_text = "You are a beach bum!" +/obj/effect/mob_spawn/human/beach/equip(mob/living/carbon/human/H) + ..() + H.dna.add_mutation(STONER) + /////////////////Officers+Nanotrasen Security////////////////////// /obj/effect/mob_spawn/human/bridgeofficer diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index b88cfc0315..421b8a057e 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1582,7 +1582,7 @@ name = "Contraband Crate" contraband = TRUE cost = 3000 - num_contained = 6 + num_contained = 5 contains = list(/obj/item/weapon/poster/random_contraband, /obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori, diff --git a/code/modules/clothing/head/cit_hats.dm b/code/modules/clothing/head/cit_hats.dm deleted file mode 100644 index d562802db1..0000000000 --- a/code/modules/clothing/head/cit_hats.dm +++ /dev/null @@ -1,5 +0,0 @@ -/obj/item/clothing/head/hunter - name = "hunter hat" - desc = "It's a flimsy looking hat." - icon_state = "hunter" - icon = 'icons/obj/clothing/cit_hats.dmi' \ No newline at end of file diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 3bf866cc2c..c2979b1bcf 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -280,3 +280,9 @@ name = "magnificent crown" desc = "A crown worn by only the highest emperors of the land." icon_state = "fancycrown" + +/obj/item/clothing/head/hunter + name = "hunter hat" + desc = "It's a flimsy looking hat." + item_state = "hunter_hat" + icon_state = "hunter_hat" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index bc1f25cfa7..02040b4469 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -541,5 +541,5 @@ name = "spooky ghost" desc = "this is obviously just a bedsheet, but maybe try it on?" icon_state = "bedsheet" - user_vars_to_edit = list("name" = "Spooky Ghost", "real_name" = "Spooky Ghost" , "incorporeal_move" = 1, "appearance_flags" = KEEP_TOGETHER|TILE_BOUND, "alpha" = 150) + user_vars_to_edit = list("name" = "Spooky Ghost", "real_name" = "Spooky Ghost" , "incorporeal_move" = INCORPOREAL_MOVE_BASIC, "appearance_flags" = KEEP_TOGETHER|TILE_BOUND, "alpha" = 150) alternate_worn_layer = ABOVE_BODY_FRONT_LAYER //so the bedsheet goes over everything but fire diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index d3a8c089d6..527b6ff736 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -136,26 +136,27 @@ GLOBAL_VAR_CONST(access_away_generic4, 208) /obj/item/proc/GetID() return null +/obj/proc/text2access(access_text) + . = list() + if(!access_text) + return + var/list/split = splittext(access_text,";") + for(var/x in split) + var/n = text2num(x) + if(n) + . += n + //Call this before using req_access or req_one_access directly /obj/proc/gen_access() //These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system. - if(!src.req_access) - src.req_access = list() - if(src.req_access_txt) - var/list/req_access_str = splittext(req_access_txt,";") - for(var/x in req_access_str) - var/n = text2num(x) - if(n) - req_access += n - - if(!src.req_one_access) - src.req_one_access = list() - if(src.req_one_access_txt) - var/list/req_one_access_str = splittext(req_one_access_txt,";") - for(var/x in req_one_access_str) - var/n = text2num(x) - if(n) - req_one_access += n + if(!req_access) + req_access = list() + for(var/a in text2access(req_access_txt)) + req_access += a + if(!req_one_access) + req_one_access = list() + for(var/b in text2access(req_one_access_txt)) + req_one_access += b /obj/proc/check_access(obj/item/I) gen_access() diff --git a/code/modules/language/beachbum.dm b/code/modules/language/beachbum.dm new file mode 100644 index 0000000000..84c75c9ca4 --- /dev/null +++ b/code/modules/language/beachbum.dm @@ -0,0 +1,22 @@ +/datum/language/beachbum + name = "Beach Bumbian" + desc = "For when you're too toasted to speak normally." + speech_verb = "mumbles" + ask_verb = "grills" + exclaim_verb = "hollers" + key = "u" + space_chance = 85 + default_priority = 90 + syllables = list("cowabunga", "rad", "radical", "dudes", "bogus", "weeed", "every", + "dee", "dah", "woah", "surf", "blazed", "high", "heinous", "day", + "brah", "bro", "blown", "catch", "body", "beach", "oooo", "twenty", + "shiz", "phiz", "wizz", "pop", "chill", "awesome", "dude", "it", + "wax", "stoked", "yes", "ding", "way", "no", "wicked", "aaaa", + "cool", "hoo", "wah", "wee", "man", "maaaaaan", "mate", "wick", + "oh", "ocean", "up", "out", "rip", "slide", "big", "stomp", + "weed", "pot", "smoke", "four-twenty", "shove", "wacky", "hah", + "sick", "slash", "spit", "stoked", "shallow", "gun", "party", + "heavy", "stellar", "excellent", "triumphant", "babe", "four", + "tail", "trim", "tube", "wobble", "roll", "gnarly", "epic") + + icon_state = "beach" diff --git a/code/modules/mob/living/carbon/human/status_procs.dm b/code/modules/mob/living/carbon/human/status_procs.dm index 4e80477e6b..f1ff497a2a 100644 --- a/code/modules/mob/living/carbon/human/status_procs.dm +++ b/code/modules/mob/living/carbon/human/status_procs.dm @@ -20,3 +20,16 @@ . = ..() if(.) update_hair() + +/mob/living/carbon/human/set_drugginess(amount) + ..() + if(!amount) + remove_language(/datum/language/beachbum) + +/mob/living/carbon/human/adjust_drugginess(amount) + ..() + if(!dna.check_mutation(STONER)) + if(druggy) + grant_language(/datum/language/beachbum) + else + remove_language(/datum/language/beachbum) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index fbf9c35303..83cc990a52 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -24,7 +24,8 @@ var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out. //Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects. - var/incorporeal_move = 0 //0 is off, 1 is normal, 2 is for ninjas. + var/incorporeal_move = FALSE //FALSE is off, INCORPOREAL_MOVE_BASIC is normal, INCORPOREAL_MOVE_SHADOW is for ninjas + //and INCORPOREAL_MOVE_JAUNT is blocked by holy water/salt var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them. diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index d3fe5eb6d2..f4cfb363fd 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -833,8 +833,20 @@ /mob/living/silicon/ai/proc/relay_speech(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) raw_message = lang_treat(speaker, message_language, raw_message, spans, message_mode) - var/name_used = speaker.GetVoice() - var/rendered = "Relayed Speech: [name_used] [raw_message]" + var/start = "Relayed Speech: " + var/namepart = "[speaker.GetVoice()][speaker.get_alt_name()]" + var/hrefpart = "" + var/jobpart + + if (iscarbon(speaker)) + var/mob/living/carbon/S = speaker + if(S.job) + jobpart = "[S.job]" + else + jobpart = "Unknown" + + var/rendered = "[start][hrefpart][namepart] ([jobpart]) [raw_message]" + show_message(rendered, 2) /mob/living/silicon/ai/fully_replace_character_name(oldname,newname) diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index a2ae3b4b2d..e691ff2dfd 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -44,6 +44,13 @@ butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/pug = 3) gold_core_spawnable = 2 +/mob/living/simple_animal/pet/dog/Initialize() + var/dog_area = get_area(src) + for(var/obj/structure/bed/dogbed/D in dog_area) + if(!D.owner) + D.update_owner(src) + break + /mob/living/simple_animal/pet/dog/corgi/Initialize() ..() regenerate_icons() diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm index 37777a5ead..e3792d40ba 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm @@ -37,7 +37,7 @@ environment_smash = initial(environment_smash) alpha = 255 range = initial(range) - incorporeal_move = 0 + incorporeal_move = FALSE to_chat(src, "You switch to combat mode.") toggle = FALSE else @@ -48,7 +48,7 @@ environment_smash = ENVIRONMENT_SMASH_NONE alpha = 45 range = 255 - incorporeal_move = 1 + incorporeal_move = INCORPOREAL_MOVE_BASIC to_chat(src, "You switch to scout mode.") toggle = TRUE else diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 1c1fc8fb9e..5df35b2d93 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -193,6 +193,7 @@ Difficulty: Medium return animate(src, transform = matrix()*0.7, time = 7) swooping |= SWOOP_INVULNERABLE + mouse_opacity = 0 sleep(7) var/list/flame_hit = list() while(swoop_duration > 0) @@ -233,6 +234,7 @@ Difficulty: Medium animate(src, transform = oldtransform, time = 5) sleep(5) swooping &= ~SWOOP_INVULNERABLE + mouse_opacity = initial(mouse_opacity) icon_state = "dragon" playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1) for(var/mob/living/L in orange(1, src)) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index e5dc99ea27..a0c1fe9fbe 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -948,7 +948,7 @@ color = "#FFFFFF77" speak_chance = 20 status_flags = GODMODE - incorporeal_move = 1 + incorporeal_move = INCORPOREAL_MOVE_BASIC butcher_results = list(/obj/item/weapon/ectoplasm = 1) /mob/living/simple_animal/parrot/Poly/ghost/Initialize() diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index e85dca9cad..43d8a924a1 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -209,10 +209,10 @@ return var/mob/living/L = mob switch(L.incorporeal_move) - if(1) + if(INCORPOREAL_MOVE_BASIC) L.loc = get_step(L, direct) L.setDir(direct) - if(2) + if(INCORPOREAL_MOVE_SHADOW) if(prob(50)) var/locx var/locy @@ -250,7 +250,7 @@ new /obj/effect/temp_visual/dir_setting/ninja/shadow(mobloc, L.dir) L.loc = get_step(L, direct) L.setDir(direct) - if(3) //Incorporeal move, but blocked by holy-watered tiles and salt piles. + if(INCORPOREAL_MOVE_JAUNT) //Incorporeal move, but blocked by holy-watered tiles and salt piles. var/turf/open/floor/stepTurf = get_step(L, direct) for(var/obj/effect/decal/cleanable/salt/S in stepTurf) to_chat(L, "[S] bars your passage!") diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm index b2f0c5fb07..18a43defb6 100644 --- a/code/modules/modular_computers/computers/machinery/console_presets.dm +++ b/code/modules/modular_computers/computers/machinery/console_presets.dm @@ -5,7 +5,7 @@ var/_has_battery = 0 var/_has_ai = 0 -/obj/machinery/modular_computer/console/preset/New() +/obj/machinery/modular_computer/console/preset/Initialize() . = ..() if(!cpu) return diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index b7b258d1ef..c8c303e453 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -27,15 +27,13 @@ var/obj/item/device/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things. -/obj/machinery/modular_computer/New() - ..() +/obj/machinery/modular_computer/Initialize() + . = ..() cpu = new(src) cpu.physical = src /obj/machinery/modular_computer/Destroy() - if(cpu) - qdel(cpu) - cpu = null + QDEL_NULL(cpu) return ..() /obj/machinery/modular_computer/attack_ghost(mob/dead/observer/user) diff --git a/code/modules/modular_computers/computers/machinery/modular_console.dm b/code/modules/modular_computers/computers/machinery/modular_console.dm index 60315198ca..3f53ba715f 100644 --- a/code/modules/modular_computers/computers/machinery/modular_console.dm +++ b/code/modules/modular_computers/computers/machinery/modular_console.dm @@ -20,8 +20,8 @@ max_integrity = 300 integrity_failure = 150 -/obj/machinery/modular_computer/console/buildable/New() - ..() +/obj/machinery/modular_computer/console/buildable/Initialize() + . = ..() // User-built consoles start as empty frames. var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD] var/obj/item/weapon/computer_hardware/hard_drive/network_card = cpu.all_components[MC_NET] @@ -30,8 +30,8 @@ qdel(network_card) qdel(hard_drive) -/obj/machinery/modular_computer/console/New() - ..() +/obj/machinery/modular_computer/console/Initialize() + . = ..() var/obj/item/weapon/computer_hardware/battery/battery_module = cpu.all_components[MC_CELL] if(battery_module) qdel(battery_module) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 5bf4bab33e..c0ad4fd2b7 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -66,9 +66,8 @@ By design, d1 is the smallest direction and d2 is the highest icon = 'icons/obj/power_cond/power_cond_white.dmi' // the power cable object -/obj/structure/cable/New() - ..() - +/obj/structure/cable/Initialize() + . = ..() // ensure d1 & d2 reflect the icon_state for entering and exiting cable var/dash = findtext(icon_state, "-") @@ -529,7 +528,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai return(OXYLOSS) /obj/item/stack/cable_coil/New(loc, new_amount = null, var/param_color = null) - ..() + . = ..() if(new_amount) // MAXCOIL by default amount = new_amount if(param_color) diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 7f6bfb3026..ac4873a09b 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -30,7 +30,7 @@ GLOBAL_LIST_EMPTY(rad_collectors) /obj/machinery/power/rad_collector/process() if(loaded_tank) if(!loaded_tank.air_contents.gases["plasma"]) - investigate_log("out of fuel.", INVESTIGATE_SINGULO) + investigate_log("out of fuel.", INVESTIGATE_SINGULO) eject() else loaded_tank.air_contents.gases["plasma"][MOLES] -= 0.001*drainratio @@ -46,9 +46,11 @@ GLOBAL_LIST_EMPTY(rad_collectors) toggle_power() user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \ "You turn the [src.name] [active? "on":"off"].") - var/fuel = loaded_tank.air_contents.gases["plasma"] + var/fuel + if(loaded_tank) + fuel = loaded_tank.air_contents.gases["plasma"] fuel = fuel ? fuel[MOLES] : 0 - investigate_log("turned [active?"on":"off"] by [user.key]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].", INVESTIGATE_SINGULO) + investigate_log("turned [active?"on":"off"] by [user.key]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].", INVESTIGATE_SINGULO) return else to_chat(user, "The controls are locked!") @@ -73,28 +75,34 @@ GLOBAL_LIST_EMPTY(rad_collectors) /obj/machinery/power/rad_collector/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/device/multitool)) to_chat(user, "The [W.name] detects that [last_power]W were recently produced.") - return 1 + return TRUE else if(istype(W, /obj/item/device/analyzer) && loaded_tank) atmosanalyzer_scan(loaded_tank.air_contents, user) else if(istype(W, /obj/item/weapon/tank/internals/plasma)) if(!anchored) to_chat(user, "The [src] needs to be secured to the floor first!") - return 1 + return TRUE if(loaded_tank) to_chat(user, "There's already a plasma tank loaded!") - return 1 + return TRUE if(!user.drop_item()) - return 1 + return TRUE loaded_tank = W W.forceMove(src) update_icons() else if(istype(W, /obj/item/weapon/crowbar)) - if(loaded_tank && !locked) + if(loaded_tank) + if(locked) + to_chat(user, "The controls are locked!") + return TRUE eject() - return 1 + return TRUE + else + to_chat(user, "There isn't a tank loaded!") + return TRUE else if(istype(W, /obj/item/weapon/wrench)) default_unfasten_wrench(user, W, 0) - return 1 + return TRUE else if(W.GetID()) if(allowed(user)) if(active) @@ -104,7 +112,7 @@ GLOBAL_LIST_EMPTY(rad_collectors) to_chat(user, "The controls can only be locked when \the [src] is active!") else to_chat(user, "Access denied.") - return 1 + return TRUE else return ..() @@ -141,11 +149,11 @@ GLOBAL_LIST_EMPTY(rad_collectors) /obj/machinery/power/rad_collector/proc/update_icons() cut_overlays() if(loaded_tank) - add_overlay("ptank") + add_overlay("ptank") if(stat & (NOPOWER|BROKEN)) return if(active) - add_overlay("on") + add_overlay("on") /obj/machinery/power/rad_collector/proc/toggle_power() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 04761befdc..d9a0ee78a2 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -295,14 +295,16 @@ /obj/item/weapon/gun/attack(mob/M as mob, mob/user) if(user.a_intent == INTENT_HARM) //Flogging if(bayonet) - bayonet.attack(M, user) + M.attackby(bayonet, user) return - return ..() + else + return ..() + return /obj/item/weapon/gun/attack_obj(obj/O, mob/user) if(user.a_intent == INTENT_HARM) if(bayonet) - bayonet.attack_obj(O, user) + O.attackby(bayonet, user) return return ..() @@ -332,7 +334,7 @@ if(!bayonet) if(!user.transferItemToLoc(I, src)) return - to_chat(user, "You attach \the [K] to the front of ]the [src].") + to_chat(user, "You attach \the [K] to the front of \the [src].") bayonet = K update_icon() else if(istype(I, /obj/item/weapon/screwdriver)) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 585f452de4..089d8be105 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -294,10 +294,11 @@ /obj/item/bodypart/head/attach_limb(mob/living/carbon/C, special) //Transfer some head appearance vars over if(brain) - brainmob.container = null //Reset brainmob head var. - brainmob.loc = brain //Throw mob into brain. - brain.brainmob = brainmob //Set the brain to use the brainmob - brainmob = null //Set head brainmob var to null + if(brainmob) + brainmob.container = null //Reset brainmob head var. + brainmob.loc = brain //Throw mob into brain. + brain.brainmob = brainmob //Set the brain to use the brainmob + brainmob = null //Set head brainmob var to null brain.Insert(C) //Now insert the brain proper brain = null //No more brain in the head diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 5a3555c8f9..5f23b1ef7d 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -15,6 +15,7 @@ /datum/language/common, /datum/language/draconic, /datum/language/monkey, + /datum/language/beachbum, /datum/language/narsie, )) diff --git a/code/modules/surgery/organs/tongue.dm.rej b/code/modules/surgery/organs/tongue.dm.rej new file mode 100644 index 0000000000..11c501c6f6 --- /dev/null +++ b/code/modules/surgery/organs/tongue.dm.rej @@ -0,0 +1,9 @@ +diff a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm (rejected hunks) +@@ -17,6 +17,7 @@ + /datum/language/codespeak, + /datum/language/monkey, + /datum/language/narsie, ++ /datum/language/beachbum, + /datum/language/ratvar + )) + diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm index 7cd2839b4b..d67e769ea3 100644 --- a/code/modules/vehicles/speedbike.dm +++ b/code/modules/vehicles/speedbike.dm @@ -35,6 +35,7 @@ icon_state = "speedwagon" layer = LYING_MOB_LAYER overlay_state = "speedwagon_cover" + max_buckled_mobs = 4 var/crash_all = FALSE //CHAOS pixel_y = -48 //to fix the offset when Initialized() pixel_x = -48 diff --git a/html/changelogs/AutoChangeLog-pr-1151.yml b/html/changelogs/AutoChangeLog-pr-1151.yml new file mode 100644 index 0000000000..1cd57ad4c9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1151.yml @@ -0,0 +1,5 @@ +author: "That Really Good Soda Flavor" +delete-after: True +changes: + - rscadd: "People who are high and beach bums can now talk in their own stoner language." + - tweak: "Beach bums can only communicate with other beach bums and people who are high." diff --git a/html/changelogs/AutoChangeLog-pr-1238.yml b/html/changelogs/AutoChangeLog-pr-1238.yml new file mode 100644 index 0000000000..f2e48eb64f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1238.yml @@ -0,0 +1,5 @@ +author: "cacogen" +delete-after: True +changes: + - rscadd: "You can now rename dog beds by buckling a new owner to them" + - rscadd: "Dogs that spawn in an area with a vacant bed will take possession of and rename the bed" diff --git a/html/changelogs/AutoChangeLog-pr-1242.yml b/html/changelogs/AutoChangeLog-pr-1242.yml new file mode 100644 index 0000000000..a50edc4efb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1242.yml @@ -0,0 +1,4 @@ +author: "QualityVan" +delete-after: True +changes: + - bugfix: "Bayonets can now be used for butchery" diff --git a/html/changelogs/AutoChangeLog-pr-1255.yml b/html/changelogs/AutoChangeLog-pr-1255.yml new file mode 100644 index 0000000000..fdd7e8ac0f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1255.yml @@ -0,0 +1,5 @@ +author: "cacogen" +delete-after: True +changes: + - rscadd: "Adds AI follow links to holopad speech and PDA messages. Note that PDA messages point to the owner of the PDA and not the PDA's actual location." + - bugfix: "Fixes PDA icon not showing up beside received messages for AIs" diff --git a/html/changelogs/AutoChangeLog-pr-1264.yml b/html/changelogs/AutoChangeLog-pr-1264.yml new file mode 100644 index 0000000000..774cea31f2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1264.yml @@ -0,0 +1,5 @@ +author: "QualityVan" +delete-after: True +changes: + - tweak: "Cloning pods which are interrupted by a emagging will now produce a slightly lumpier smoothie" + - bugfix: "Cloning pods that have stopped cloning early can no longer be broken open to extract leftover parts" diff --git a/html/changelogs/AutoChangeLog-pr-1268.yml b/html/changelogs/AutoChangeLog-pr-1268.yml new file mode 100644 index 0000000000..1ed2a4fcb7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1268.yml @@ -0,0 +1,4 @@ +author: "QualityVan" +delete-after: True +changes: + - bugfix: "Crew monitoring consoles once again have minimaps while you're on the station level" diff --git a/html/changelogs/AutoChangeLog-pr-1273.yml b/html/changelogs/AutoChangeLog-pr-1273.yml new file mode 100644 index 0000000000..27ad107949 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1273.yml @@ -0,0 +1,4 @@ +author: "Swindly" +delete-after: True +changes: + - bugfix: "fixed not being able to attach heads without brainmobs in them" diff --git a/icons/minimaps/Box Station_1.png b/icons/minimaps/Box Station_2.png similarity index 100% rename from icons/minimaps/Box Station_1.png rename to icons/minimaps/Box Station_2.png diff --git a/icons/minimaps/CereStation_1.png b/icons/minimaps/CereStation_2.png similarity index 100% rename from icons/minimaps/CereStation_1.png rename to icons/minimaps/CereStation_2.png diff --git a/icons/minimaps/Delta Station_1.png b/icons/minimaps/Delta Station_2.png similarity index 100% rename from icons/minimaps/Delta Station_1.png rename to icons/minimaps/Delta Station_2.png diff --git a/icons/minimaps/MetaStation_1.png b/icons/minimaps/MetaStation_2.png similarity index 100% rename from icons/minimaps/MetaStation_1.png rename to icons/minimaps/MetaStation_2.png diff --git a/icons/minimaps/OmegaStation_1.png b/icons/minimaps/OmegaStation_2.png similarity index 100% rename from icons/minimaps/OmegaStation_1.png rename to icons/minimaps/OmegaStation_2.png diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index 081bbf1aa3..f4894c2b90 100644 Binary files a/icons/misc/language.dmi and b/icons/misc/language.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 9d63c276bc..86e720a421 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/obj/clothing/cit_hats.dmi b/icons/obj/clothing/cit_hats.dmi index 25a03dc97e..2f2b877eff 100644 Binary files a/icons/obj/clothing/cit_hats.dmi and b/icons/obj/clothing/cit_hats.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 6b0dd135f6..520ed276b8 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 7cb9f2a3ff..dd6146d7fb 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/tgstation.dme b/tgstation.dme index f61256862c..7c1d803849 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1194,7 +1194,6 @@ #include "code\modules\clothing\gloves\miscellaneous.dm" #include "code\modules\clothing\gloves\vg_gloves.dm" #include "code\modules\clothing\head\beanie.dm" -#include "code\modules\clothing\head\cit_hats.dm" #include "code\modules\clothing\head\collectable.dm" #include "code\modules\clothing\head\hardhat.dm" #include "code\modules\clothing\head\helmet.dm" @@ -1440,6 +1439,7 @@ #include "code\modules\jobs\job_types\science.dm" #include "code\modules\jobs\job_types\security.dm" #include "code\modules\jobs\job_types\silicon.dm" +#include "code\modules\language\beachbum.dm" #include "code\modules\language\common.dm" #include "code\modules\language\draconic.dm" #include "code\modules\language\drone.dm" diff --git a/tgstation.dme.rej b/tgstation.dme.rej new file mode 100644 index 0000000000..6f5a5fec15 --- /dev/null +++ b/tgstation.dme.rej @@ -0,0 +1,9 @@ +diff a/tgstation.dme b/tgstation.dme (rejected hunks) +@@ -1390,6 +1390,7 @@ + #include "code\modules\jobs\job_types\security.dm" + #include "code\modules\jobs\job_types\silicon.dm" + #include "code\modules\jobs\map_changes\map_changes.dm" ++#include "code\modules\language\beachbum.dm" + #include "code\modules\language\codespeak.dm" + #include "code\modules\language\common.dm" + #include "code\modules\language\draconic.dm"