diff --git a/_maps/map_files220/RandomZLevels/beach.dmm b/_maps/map_files220/RandomZLevels/beach.dmm index 8a4c9d442c58..9192fea634b9 100644 --- a/_maps/map_files220/RandomZLevels/beach.dmm +++ b/_maps/map_files220/RandomZLevels/beach.dmm @@ -227,10 +227,7 @@ pixel_y = 13; pixel_x = 3 }, -/obj/item/paper_bin/carbon{ - pixel_y = 4; - pixel_x = -6 - }, +/obj/item/paper_bin, /obj/item/pen{ pixel_x = 9; pixel_y = 3 @@ -3576,10 +3573,7 @@ pixel_x = -4; pixel_y = 2 }, -/obj/item/paper_bin/carbon{ - pixel_y = 6; - pixel_x = 4 - }, +/obj/item/paper_bin, /obj/item/reagent_containers/drinks/cans/grape_juice{ pixel_x = -8; pixel_y = 9 @@ -3845,9 +3839,7 @@ /area/awaymission/beach) "XU" = ( /obj/structure/table/wood/fancy/orange, -/obj/item/paper_bin/carbon{ - pixel_y = 8 - }, +/obj/item/paper_bin, /turf/simulated/floor/wood/fancy, /area/awaymission/beach) "XW" = ( diff --git a/_maps/map_files220/generic/Admin_Zone.dmm b/_maps/map_files220/generic/Admin_Zone.dmm index 083cd28b1903..ece488aa5b56 100644 --- a/_maps/map_files220/generic/Admin_Zone.dmm +++ b/_maps/map_files220/generic/Admin_Zone.dmm @@ -13461,10 +13461,7 @@ /obj/item/pen/blue{ pixel_x = -8 }, -/obj/item/paper_bin/carbon{ - pixel_x = 4; - pixel_y = 4 - }, +/obj/item/paper_bin, /turf/simulated/floor/wood/oak, /area/ghost_bar/indoor) "Uh" = ( @@ -14095,9 +14092,7 @@ /turf/simulated/floor/carpet/arcade, /area/trader_station/sol) "Wn" = ( -/obj/structure/closet/secure_closet/bar{ - req_access = list(25) - }, +/obj/structure/closet/secure_closet/bar, /turf/simulated/floor/plasteel{ icon_state = "white" }, diff --git a/_maps/map_files220/generic/centcomm.dmm b/_maps/map_files220/generic/centcomm.dmm index cb522a85fce8..bd03058b4414 100644 --- a/_maps/map_files220/generic/centcomm.dmm +++ b/_maps/map_files220/generic/centcomm.dmm @@ -19668,10 +19668,7 @@ /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) "lCD" = ( -/mob/living/simple_animal/mouse/brown{ - desc = "Секретная разработка синдиката. Сидит тут потому, что сам хочет"; - name = "Мышедемон" - }, +/mob/living/simple_animal/mouse/brown/demon, /turf/simulated/floor/plasteel{ icon_state = "dark" }, diff --git a/modular_ss220/_defines220/code/antagonists.dm b/modular_ss220/_defines220/code/antagonists.dm index 9ec47589ae1a..b66ec8bd5837 100644 --- a/modular_ss220/_defines220/code/antagonists.dm +++ b/modular_ss220/_defines220/code/antagonists.dm @@ -3,4 +3,5 @@ #define VOX_RAID_FREQ 1220 +#define BIOHAZARD_TERROR_SPIDERS "Terrors" GLOBAL_LIST_EMPTY(raider_spawn) diff --git a/modular_ss220/balance/code/access/access.dm b/modular_ss220/balance/code/access/access.dm index 7ab86055b2e1..0f413c508d7f 100644 --- a/modular_ss220/balance/code/access/access.dm +++ b/modular_ss220/balance/code/access/access.dm @@ -28,7 +28,7 @@ /datum/job/atmos/New() . = ..() - access |= list(ACCESS_ENGINE) + access |= list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP) /datum/job/engineer/New() . = ..() diff --git a/modular_ss220/events/_events.dme b/modular_ss220/events/_events.dme index f7491fa48fb4..b4ad5844ad80 100644 --- a/modular_ss220/events/_events.dme +++ b/modular_ss220/events/_events.dme @@ -5,3 +5,4 @@ #include "code/infestation_extended.dm" #include "code/christmas.dm" #include "code/spider_terror.dm" +#include "code/SSticker.dm" diff --git a/modular_ss220/events/code/SSticker.dm b/modular_ss220/events/code/SSticker.dm new file mode 100644 index 000000000000..57e04d8d90f9 --- /dev/null +++ b/modular_ss220/events/code/SSticker.dm @@ -0,0 +1,24 @@ +/datum/controller/subsystem/ticker/any_admin_spawned_mobs(biohazard) + switch(biohazard) + if(BIOHAZARD_TERROR_SPIDERS) + for(var/mob/living/simple_animal/hostile/poison/terror_spider/S in GLOB.ts_spiderlist) + if(S.admin_spawned) + return TRUE + return ..() + +/datum/controller/subsystem/ticker/biohazard_count(biohazard) + switch(biohazard) + if(BIOHAZARD_TERROR_SPIDERS) + var/spiders = 0 + for(var/mob/living/simple_animal/hostile/poison/terror_spider/S in GLOB.ts_spiderlist) + if(S.ckey) + spiders++ + return spiders + return ..() + +/datum/controller/subsystem/ticker/biohazard_active_threat(biohazard) + var/modular_count = biohazard_count(biohazard) + switch(biohazard) + if(BIOHAZARD_TERROR_SPIDERS) + return modular_count >= 3 + return ..() diff --git a/modular_ss220/events/code/spider_terror.dm b/modular_ss220/events/code/spider_terror.dm index 689c735dc18b..ae29d01daee2 100644 --- a/modular_ss220/events/code/spider_terror.dm +++ b/modular_ss220/events/code/spider_terror.dm @@ -4,7 +4,6 @@ #define TS_POINTS_PRINCE 30 #define TS_POINTS_QUEEN 42 - /datum/event/spider_terror announceWhen = 240 var/population_factor = 0.7 // higher - more spawnpoints @@ -48,7 +47,7 @@ spawnpoints += round(population_factor * length(GLOB.clients)) // server population sensitivity log_debug("where is [spawnpoints] available spawnpoints") spawn_terror_spiders(count_spawn_spiders(max_spiders), candidates) - SSevents.biohazards_this_round += 1 + SSevents.biohazards_this_round += BIOHAZARD_TERROR_SPIDERS /datum/event/spider_terror/proc/count_spawn_spiders(max_spiders) while(spawnpoints >= TS_POINTS_GREEN && spawncount < max_spiders) diff --git a/modular_ss220/mobs/code/simple_animal/friendly/hamster.dm b/modular_ss220/mobs/code/simple_animal/friendly/hamster.dm index 223d1ea8f0ea..847c3ce70874 100644 --- a/modular_ss220/mobs/code/simple_animal/friendly/hamster.dm +++ b/modular_ss220/mobs/code/simple_animal/friendly/hamster.dm @@ -39,24 +39,29 @@ #define MAX_HAMSTER 20 GLOBAL_VAR_INIT(hamster_count, 0) -/mob/living/simple_animal/mouse/hamster/color_pick() - reinitial() - return - -/mob/living/simple_animal/mouse/hamster/New() +/mob/living/simple_animal/mouse/hamster/Initialize(mapload) + . = ..() gender = prob(80) ? MALE : FEMALE - desc += MALE ? " Самец!" : " Самочка! Ох... Нет... " + + icon_state = initial(icon_state) + icon_living = initial(icon_living) + icon_dead = initial(icon_dead) + icon_resting = initial(icon_resting) + + update_appearance(UPDATE_ICON_STATE, UPDATE_DESC) GLOB.hamster_count++ - . = ..() /mob/living/simple_animal/mouse/hamster/Destroy() GLOB.hamster_count-- . = ..() -/mob/living/simple_animal/mouse/hamster/death(gibbed) - if(!gibbed) - GLOB.hamster_count-- +/mob/living/simple_animal/mouse/hamster/color_pick() + return + +/mob/living/simple_animal/mouse/hamster/update_desc() . = ..() + desc = initial(desc) + desc += MALE ? " Самец!" : " Самочка! Ох... Нет... " /mob/living/simple_animal/mouse/hamster/pull_constraint(atom/movable/AM, show_message = FALSE) return TRUE diff --git a/modular_ss220/mobs/code/simple_animal/friendly/mouse.dm b/modular_ss220/mobs/code/simple_animal/friendly/mouse.dm index 26bf83289af9..f5d8cae71425 100644 --- a/modular_ss220/mobs/code/simple_animal/friendly/mouse.dm +++ b/modular_ss220/mobs/code/simple_animal/friendly/mouse.dm @@ -10,14 +10,13 @@ /mob/living/simple_animal/mouse/Initialize(mapload) . = ..() AddComponent(/datum/component/squeak, list("[squeak_sound]" = 1), 100, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) //as quiet as a mouse or whatever - -/mob/living/simple_animal/mouse/New() - ..() + pixel_x = rand(-6, 6) pixel_y = rand(0, 10) mouse_color = initial(mouse_color) // сбрасываем из-за наследования чтобы своим проком переписать color_pick() + update_appearance(UPDATE_ICON_STATE|UPDATE_DESC) /mob/living/simple_animal/mouse/proc/color_pick() if(!mouse_color) @@ -26,15 +25,6 @@ icon_living = "mouse_[mouse_color]" icon_dead = "mouse_[mouse_color]_dead" icon_resting = "mouse_[mouse_color]_sleep" - update_appearance(UPDATE_DESC) - -/mob/living/simple_animal/mouse/proc/reinitial() - desc = initial(desc) - mouse_color = initial(mouse_color) - icon_state = initial(icon_state) - icon_living = initial(icon_living) - icon_dead = initial(icon_dead) - icon_resting = initial(icon_resting) /mob/living/simple_animal/mouse/splat(obj/item/item = null, mob/living/user = null) if(non_standard) diff --git a/modular_ss220/mobs/code/simple_animal/friendly/rat.dm b/modular_ss220/mobs/code/simple_animal/friendly/rat.dm index 338f47f873c3..4269efa853f5 100644 --- a/modular_ss220/mobs/code/simple_animal/friendly/rat.dm +++ b/modular_ss220/mobs/code/simple_animal/friendly/rat.dm @@ -15,6 +15,16 @@ mob_size = MOB_SIZE_SMALL butcher_results = list(/obj/item/food/meat/mouse = 2) +/mob/living/simple_animal/mouse/rat/update_desc() + . = ..() + switch(mouse_color) + if("white") + desc = /mob/living/simple_animal/mouse/rat/white::desc + if("irish") + desc = /mob/living/simple_animal/mouse/rat/irish::desc + else + desc = /mob/living/simple_animal/mouse/rat::desc + /mob/living/simple_animal/mouse/rat/white name = "white rat" real_name = "white rat" diff --git a/modular_ss220/mobs/code/simple_animal/named_animals.dm b/modular_ss220/mobs/code/simple_animal/named_animals.dm index 344b18fae80e..31b93ad6757a 100644 --- a/modular_ss220/mobs/code/simple_animal/named_animals.dm +++ b/modular_ss220/mobs/code/simple_animal/named_animals.dm @@ -73,6 +73,18 @@ desc = "Крокодил обожающий музыкальные инструменты и плюшевые игрушки. Пожевать." faction = list("neutral") +/mob/living/simple_animal/mouse/brown/demon + name = "Мышедемон" + desc = "Секретная разработка синдиката. Сидит тут потому, что сам хочет" + unique_pet = TRUE + gold_core_spawnable = NO_SPAWN + maxHealth = 20 + health = 20 + +/mob/living/simple_animal/mouse/brown/demon/update_desc() + . = ..() + desc = initial(desc) + // rats /mob/living/simple_animal/mouse/rat/ratatui name = "Рататуй" @@ -84,6 +96,10 @@ maxHealth = 20 health = 20 +/mob/living/simple_animal/mouse/rat/ratatui/update_desc() + . = ..() + desc = initial(desc) + /mob/living/simple_animal/mouse/rat/irish/remi name = "Реми" real_name = "Реми" @@ -94,6 +110,10 @@ health = 25 transform = matrix(1.250, 0, 0, 0, 1, 0) // Толстячок на +2 пикселя +/mob/living/simple_animal/mouse/rat/irish/remi/update_desc() + . = ..() + desc = initial(desc) + /mob/living/simple_animal/mouse/rat/white/brain name = "Брейн" real_name = "Брейн" @@ -105,6 +125,10 @@ universal_speak = 1 resting = TRUE +/mob/living/simple_animal/mouse/rat/white/brain/update_desc() + . = ..() + desc = initial(desc) + /obj/effect/decal/remains/mouse/pinkie name = "Пинки" desc = "Когда-то это был напарник самой сообразительной крысы в мире. К сожалению он таковым не являлся..." diff --git a/tools/changelog/check_changelog.py b/tools/changelog/check_changelog.py index 4b72cd0bc0b1..59da1270db1e 100644 --- a/tools/changelog/check_changelog.py +++ b/tools/changelog/check_changelog.py @@ -19,7 +19,7 @@ DISCORD_EMBED_DESCRIPTION_LIMIT = 4096 CL_BODY = re.compile(r"(:cl:|🆑)[ \t]*(?P.+?)?\s*\n(?P(.|\n)*?)\n/(:cl:|🆑)", re.MULTILINE) -CL_SPLIT = re.compile(r"\s*((?P\w+)\s*:)?\s*(?P.*)") +CL_SPLIT = re.compile(r"\s*(?:)?((?P\w+)\s*:)?\s*(?P.*)") DISCORD_TAG_EMOJI = { "soundadd": ":notes:", @@ -95,7 +95,7 @@ def parse_changelog(message: str) -> dict: else: if len(cl_changes): prev_change = cl_changes[-1] - prev_change["message"] += f" {change_parse_result['message']}" + prev_change["message"] += f" {message}" else: raise Exception(f"Change with no tag: {cl_line}")