From d4d951b9f6ce5702c8f5f8d08a656e9dafa1ee77 Mon Sep 17 00:00:00 2001 From: Kolergo <85778771+Kolergo@users.noreply.github.com> Date: Wed, 5 Jul 2023 19:37:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=A3=D0=9B=D0=98,=20=D0=9D=D0=90=20?= =?UTF-8?q?=D0=97=D0=95=D0=9C=D0=9B=D0=AE!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/game/antagonist/station/mini_roles.dm | 14 +++-- code/modules/mob/living/carbon/human/life.dm | 10 ++++ code/modules/multiz/turf.dm | 11 +++- maps/away/solship/solship_crew.dm | 16 ++++-- maps/castelnau/castelnau_announcements.dm | 2 +- maps/castelnau/castelnau_overrides.dm | 57 ++++++++++++++++++++ 6 files changed, 99 insertions(+), 11 deletions(-) diff --git a/code/game/antagonist/station/mini_roles.dm b/code/game/antagonist/station/mini_roles.dm index e775052a6bc31..403c5aa6dc620 100644 --- a/code/game/antagonist/station/mini_roles.dm +++ b/code/game/antagonist/station/mini_roles.dm @@ -21,8 +21,9 @@ GLOBAL_DATUM_INIT(mini_role, /datum/antagonist/mini_roles, new) var/list/regcom_roles = list(/datum/mini_role/regcom_agent, /datum/mini_role/creditor, /datum/mini_role/pyroman) var/list/gov_roles = list(/datum/mini_role/rat, /datum/mini_role/creditor, /datum/mini_role/pyroman, /datum/mini_role/treasure_hunter) var/list/syndicate_roles = list(/datum/mini_role/syndicate_agent, /datum/mini_role/rat, /datum/mini_role/creditor, /datum/mini_role/pyroman, /datum/mini_role/treasure_hunter) + var/list/military_roles = list(/datum/mini_role/rat, /datum/mini_role/creditor, /datum/mini_role/cannibal, /datum/mini_role/pyroman, /datum/mini_role/torch, /datum/mini_role/treasure_hunter) var/list/traders_roles = list(/datum/mini_role/contrabandist, /datum/mini_role/rat, /datum/mini_role/creditor, /datum/mini_role/link, /datum/mini_role/treasure_hunter) - var/list/scum_roles = list(/datum/mini_role/contrabandist, /datum/mini_role/contractor, /datum/mini_role/rat, /datum/mini_role/cannibal, /datum/mini_role/pyroman, /datum/mini_role/torch, /datum/mini_role/link, /datum/mini_role/mutant, /datum/mini_role/bluespace, /datum/mini_role/treasure_hunter) //Barbars and zeki + var/list/scum_roles = list(/datum/mini_role/contrabandist, /datum/mini_role/contractor, /datum/mini_role/rat, /datum/mini_role/cannibal, /datum/mini_role/pyroman, /datum/mini_role/torch, /datum/mini_role/link, /datum/mini_role/mutant, /datum/mini_role/bluespace, /datum/mini_role/treasure_hunter) //Criminals var/list/other_roles = list(/datum/mini_role/contrabandist, /datum/mini_role/contractor, /datum/mini_role/pyroman, /datum/mini_role/torch, /datum/mini_role/link, /datum/mini_role/mutant, /datum/mini_role/bluespace, /datum/mini_role/treasure_hunter) /datum/antagonist/mini_roles/create_antagonist(var/datum/mind/target, var/move, var/gag_announcement, var/preserve_appearance) @@ -40,9 +41,9 @@ GLOBAL_DATUM_INIT(mini_role, /datum/antagonist/mini_roles, new) if("Regulators") choosen_role = pick(regcom_roles) if("Government") choosen_role = pick(gov_roles) if("Consortium of Trans-Star Corporations") choosen_role = pick(syndicate_roles) + if("Military") choosen_role = pick(military_roles) if("Free Trade Union") choosen_role = pick(traders_roles) if("Alternatively Hired") choosen_role = pick(scum_roles) - if("Military") choosen_role = pick(scum_roles) else choosen_role = pick(other_roles) else choosen_role = pick(other_roles) @@ -89,7 +90,7 @@ GLOBAL_DATUM_INIT(mini_role, /datum/antagonist/mini_roles, new) to_chat(player.current, "[get_leader_welcome_text(player.current)]") else to_chat(player.current, "[get_welcome_text(player.current)]") - to_chat(player.current, SPAN_INFO("[desc]")) + to_chat(player.current, SPAN_NOTICE("[desc]")) mini_role_datum.special_act(player.current) create_objectives(player) @@ -284,7 +285,7 @@ GLOBAL_DATUM_INIT(mini_role, /datum/antagonist/mini_roles, new) /datum/mini_role/torch name = "Торчок" - desc = "Может в этом проклятом мире для отдыха просто не осталось других способов, а может Вы просто подумали, что эта была таблетка от головной боли. Как-бы то не было, Вы подсели на наркотики. Сильно подсели. Вам уже даже без разницы что принимать, лишь бы это могло помочь Вам отвлечься от этого мира." + desc = "Может в этом проклятом мире для отдыха не осталось других способов, а может Вы просто подумали, что эта была таблетка от головной боли. Как-бы то не было, Вы подсели на наркотики. Сильно подсели. Вам уже даже без разницы что принимать, лишь бы это могло помочь Вам отвлечься от этого мира." objective = "Запасите несколько доз на будущее. Чем больше - тем лучше." no_robots = TRUE gear = list(/obj/item/seeds/ambrosiadeusseed, /obj/item/reagent_containers/hypospray/autoinjector/mindbreaker, /obj/item/storage/firstaid/toxin, /obj/item/storage/box/syringes, /obj/item/storage/pill_bottle/three_eye, /obj/random/handgun) @@ -441,7 +442,7 @@ GLOBAL_DATUM_INIT(mini_role, /datum/antagonist/mini_roles, new) /datum/mini_role/bluespace name = "Провидец" - desc = "Кажется, Вы нашли этот 'артефакт' во время блюспейс колебаний... Или после того как упали с лестницы - точно не вспомнить. Важно то, что артефакт приоткрыл для Вас завесу вселенной. Обычные люди даже не представляют, внутри чего они живут. Вы же увидели правду. Этот шум на окраинах, на который никто не обращает внимания; этот сектор, выходя из которого оказываешься в его противоположной стороне; это существо, которое все ищут и имя которого Вы стали бояться называть. Мир не таков, каков он кажется на первый взгляд." + desc = "Кажется, Вы нашли этот 'артефакт' во время блюспейс колебаний... Или после того как упали с лестницы - точно не вспомнить. Важно то, что артефакт приоткрыл для Вас завесу вселенной. Обычные люди даже не представляют, внутри чего они живут. Вы же увидели правду. Этот шум на окраинах, на который никто не обращает внимания; этот сектор, выходя из которого оказываешься в его противоположной стороне; это существо, которое все ищут и имя которого Вы стали бояться называть. Мир не такой, каким он кажется на первый взгляд." objective = "Доживите до конца смены, сохранив свой артефакт и не предав свою роль широкой огласке." second_objective = "Изучите свои спосбности и артефакт, попытайтесь найти таких же." no_robots = TRUE @@ -515,4 +516,7 @@ GLOBAL_DATUM_INIT(mini_role, /datum/antagonist/mini_roles, new) /datum/mini_role/authority/special_act(var/mob/living/carbon/human/target) var/need_members_amount = rand(2,4) second_objective = "Завербуйте в свою группировку как минимум [need_members_amount] лица." +К этому мог присести несчастный случай...Или же отвращение к собственному телу. В любом случае, теперь вы - киборг. Вы всё ещё не машина, но органического осталось в вас мало. Не смотря на это, вы хотите ещё больше улучшить своё тело и пойдёте на всё, чтобы это сделать. + +Бывший босс семьи, авторитет в узких кругах или простой дар убеждения...Так или иначе, вас уважают, и вам служат. Вы прилетели сюда, чтобы сколотить очередную банду для ваших собственных грязных целей. Главное не попасться законникам и не потерять остатки былой славы... */ diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 27853b953ff45..62527ac8ab581 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -765,6 +765,16 @@ no_damage = 0 health_images += E.get_damage_hud_image() + // Apply wound overlays + for(var/obj/item/organ/external/O in organs) + if(O.is_stump() || O.damage_state == "00") + continue + var/icon/doll_wounds = new /icon(species.get_damage_overlays(src), O.damage_state) + doll_wounds.Blend(new /icon(species.get_damage_mask(src), O.icon_name), ICON_MULTIPLY) + doll_wounds.Blend((BP_IS_ROBOTIC(O) ? SYNTH_BLOOD_COLOUR : O.species.get_blood_colour(src)), ICON_MULTIPLY) + health_images += doll_wounds + health_images += image(species.bandages_icon, "[O.icon_name][O.bandage_level()]") + // Apply a fire overlay if we're burning. if(on_fire) health_images += image('icons/mob/screen1_health.dmi',"burning") diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index 18edef9debf7c..e23ea7f1e792c 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -39,7 +39,16 @@ /turf/simulated/open/Entered(var/atom/movable/mover, var/atom/oldloc) ..() - mover.fall(oldloc) + if(istype(mover, /obj/item/projectile)) + var/obj/item/projectile/bullet = mover + if(istype(bullet.original, /atom/movable/openspace/mimic)) + var/atom/movable/openspace/mimic/projection = bullet.original + var/obj/item/projectile/bullet_clone = new bullet.type(GetBelow(src)) + bullet_clone.firer = bullet.firer + qdel(bullet) + bullet_clone.launch(projection.associated_atom, bullet_clone.firer.zone_sel.selecting, 0, 0, 0) + else + mover.fall(oldloc) // Called when thrown object lands on this turf. /turf/simulated/open/hitby(var/atom/movable/AM) diff --git a/maps/away/solship/solship_crew.dm b/maps/away/solship/solship_crew.dm index 1b1a4b0b1ab66..04913c2668005 100644 --- a/maps/away/solship/solship_crew.dm +++ b/maps/away/solship/solship_crew.dm @@ -35,7 +35,9 @@ supervisors = "captain" loadout_allowed = TRUE is_semi_antagonist = TRUE - info = "--" + info = "Вы член орбитального десанта ЛСС. Скорее всего Вы только недавно прошли боевое крещение и для Вас это одна из первых миссий. \ + Из-за нехватки кадров Ваш отряд на время этой миссии управляется флотским капитаном. Хотя эта система под названием Мьёльнир кишит пиратами, в ней действуют наёмники, работающие на ЛСС и взявшие на себя их основной удар на планетах. \ + Обычная патрульная миссия, ещё и облегчённая наёмниками, в деятельность которых командование попросило не вмешиваться без веских причин. Ничто не сможет посрамить Вашу честь орбитального десантника." required_language = LANGUAGE_HUMAN_LORD whitelisted_species = list(SPECIES_HUMAN) @@ -54,7 +56,9 @@ total_positions = 1 outfit_type = /decl/hierarchy/outfit/job/solship/crew/fleet/captain supervisors = "LSS Command" - info = "---" + info = "Вы капитан патрульного корабля ЛСС. Для Вас это скорее всего не первая миссия такого толка. \ + Хотя эта система под названием Мьёльнир кишит пиратами, в ней действуют наёмники, работающие на ЛСС и взявшие на себя их основной удар на планетах. Командование попросило не вмешиваться в их дела без особых причин. \ + Типичная патрульная миссия - разве что под Ваше командование вдруг выдали отряд орбитального десанта(чёрт побери эту нехватку кадров). Осмотреть пару станций, проверить нет ли в системе других посетителей, кроме наёмников... И, конечно, внимательно следить за этими самыми наёмниками..." branch = /datum/mil_branch/larfleet rank = /datum/mil_rank/larfleet/o4 min_skill = list(SKILL_COMBAT = SKILL_BASIC, @@ -69,7 +73,9 @@ total_positions = 1 outfit_type = /decl/hierarchy/outfit/job/solship/crew/fleet/medic supervisors = "captain" - info = "---" + info = "Вы медик патрульного корабля ЛСС. Для Вас это скорее всего не первая миссия такого толка. \ + Хотя эта система под названием Мьёльнир кишит пиратами, в ней действуют наёмники, работающие на ЛСС и взявшие на себя их основной удар на планетах. Командование попросило не вмешиваться в их дела без особых причин. \ + Типичная патрульная миссия - разве что к Вам на корабль засадили отряд орбитального десанта, сдав их под командование Вашего капитана. Что может пойти не так?" branch = /datum/mil_branch/larfleet rank = /datum/mil_rank/larfleet/e4 min_skill = list(SKILL_COMBAT = SKILL_BASIC, @@ -85,7 +91,9 @@ title = "Patrol Ship Technician" total_positions = 1 outfit_type = /decl/hierarchy/outfit/job/solship/crew/fleet/engineer - info = "---" + info = "Вы инженер патрульного корабля ЛСС. Для Вас это скорее всего не первая миссия такого толка. \ + Хотя эта система под названием Мьёльнир кишит пиратами, в ней действуют наёмники, работающие на ЛСС и взявшие на себя их основной удар на планетах. Командование попросило не вмешиваться в их дела без особых причин. \ + Типичная патрульная миссия - разве что к Вам на корабль засадили отряд орбитального десанта, сдав их под командование Вашего капитана. Что может пойти не так? " branch = /datum/mil_branch/larfleet rank = /datum/mil_rank/larfleet/e4 min_skill = list(SKILL_COMBAT = SKILL_BASIC, diff --git a/maps/castelnau/castelnau_announcements.dm b/maps/castelnau/castelnau_announcements.dm index 50fe7ecf9d3b8..3c8b9839fc273 100644 --- a/maps/castelnau/castelnau_announcements.dm +++ b/maps/castelnau/castelnau_announcements.dm @@ -1,6 +1,6 @@ /datum/map/castelnau shuttle_called_message = "Внимание всему персоналу: к зоне вашей активности на Кадаабе приближается большой песчаный шторм, сопровождаемый магнитными аномалиями. На время активности шторма рекомендуется эвакуироваться на корабль. Приблизительное время до приближения шторма к аванпосту: %ETA%." - shuttle_docked_message = "Внимание всему персоналу: опасность шторма подтверждена, рекомендация эвакуации на корабль становится в приказ. Тем, кто не может успеть попасть на корабль, необходимо найти устойчивое убежище в домах или пещерах. Точное время до приближения шторма: %ETD%." + shuttle_docked_message = "Внимание всему персоналу: опасность шторма подтверждена, рекомендация эвакуации на корабль превращается в приказ. Тем, кто не может успеть попасть на корабль, необходимо найти устойчивое убежище в домах или пещерах. Точное время до приближения шторма: %ETD%." shuttle_leaving_dock = "Внимание всему персоналу: песчаный шторм обрушился на зону вашей активности. Если вы не находитесь в экстренной ситуации и через %ETA% к вам не придёт новых инструкций, то разрешается массовая крио-заморозка на время песчаного шторм." shuttle_recall_message = "Внимание всему персоналу: неожиданный антициклон отвёл песчаный шторм от вашей зоны активности. Рекомендуется продолжить работу в штатном режиме." diff --git a/maps/castelnau/castelnau_overrides.dm b/maps/castelnau/castelnau_overrides.dm index cfeecea82f466..87faf83fb84eb 100644 --- a/maps/castelnau/castelnau_overrides.dm +++ b/maps/castelnau/castelnau_overrides.dm @@ -330,3 +330,60 @@ . = ..() var/datum/sandstorm/storm = new /datum/sandstorm storm.is_coming() + +//// +// EVENTS OVERRDIE +//// + +/datum/event_container/mundane + available_events = list( + // Severity level, event name, event type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 100), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 10)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Computer Damage", /datum/event/computer_damage, 20, list(ASSIGNMENT_ENGINEER = 10)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Computer Update", /datum/event/computer_update, 20), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence", /datum/event/brand_intelligence, 10, list(ASSIGNMENT_JANITOR = 10), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(ASSIGNMENT_ENGINEER = 10)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Sensor Suit Jamming", /datum/event/sensor_suit_jamming, 50, list(ASSIGNMENT_MEDICAL = 20, ASSIGNMENT_AI = 20), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation", /datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50)), + new /datum/event_meta/no_overmap(EVENT_LEVEL_MUNDANE, "Electrical Storm", /datum/event/electrical_storm, 20, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_JANITOR = 100)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Toilet Clog", /datum/event/toilet_clog, 50, list(ASSIGNMENT_JANITOR = 20)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Drone Malfunction", /datum/event/rogue_maint_drones, 10, list(ASSIGNMENT_ENGINEER = 30)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Disposals Explosion", /datum/event/disposals_explosion, 50, list(ASSIGNMENT_ENGINEER = 40)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brain Expansion", /datum/event/brain_expansion, 20, list(ASSIGNMENT_SCIENTIST = 20)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mail Delivery", /datum/event/mail, 5, list(ASSIGNMENT_ANY = 1), 1), + ) + +/datum/event_container/moderate + available_events = list( + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1230), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 10), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 100, list(ASSIGNMENT_AI = 100, ASSIGNMENT_ENGINEER = 20)), + new /datum/event_meta/no_overmap(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 10, list(ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_JANITOR = 10)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_ENGINEER = 10)), + new /datum/event_meta/no_overmap(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 50, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 100)), + new /datum/event_meta/extended_penalty(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 2.5, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 20, list(ASSIGNMENT_SECURITY = 20)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Sensor Suit Jamming", /datum/event/sensor_suit_jamming, 10, list(ASSIGNMENT_MEDICAL = 20, ASSIGNMENT_AI = 20)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 0, list(ASSIGNMENT_SECURITY = 10), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Toilet Flooding", /datum/event/toilet_clog/flood, 50, list(ASSIGNMENT_JANITOR = 20)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Uprising", /datum/event/rogue_maint_drones, 25, list(ASSIGNMENT_ENGINEER = 30)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Pod", /datum/event/supply_pod, 10, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_SECURITY = 10)), //BoS + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Psi Wave", /datum/event/psi_wave, 10, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 10)), //BoS + ) + +/datum/event_container/major + available_events = list( + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 1320), + new /datum/event_meta/no_overmap(EVENT_LEVEL_MAJOR, "Electrical Storm", /datum/event/electrical_storm, 0, list(ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_JANITOR = 5)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Drone Revolution", /datum/event/rogue_maint_drones, 0, list(ASSIGNMENT_ENGINEER = 10,ASSIGNMENT_MEDICAL = 10,ASSIGNMENT_SECURITY = 10)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spider Infestation", /datum/event/spider_infestation, 0, list(ASSIGNMENT_SECURITY = 10), 1), + )