Skip to content

Commit

Permalink
Merge remote-tracking branch 'cmss13-devs/master' into project/ares/t…
Browse files Browse the repository at this point in the history
…m_holder
  • Loading branch information
realforest2001 committed Sep 5, 2024
2 parents 9b7b44e + 5fe6ea6 commit 02852a5
Show file tree
Hide file tree
Showing 46 changed files with 40,435 additions and 38,694 deletions.
2 changes: 1 addition & 1 deletion code/__DEFINES/__game.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
#define MAP_KUTJEVO "Kutjevo Refinery"
#define MAP_ICE_COLONY_V3 "Shivas Snowball" //Ice Rework, low pop enabled.
#define MAP_RUNTIME "USS Runtime"
#define MAP_LV522_CHANCES_CLAIM "LV-522 Chance's Claim" // Highpop Only
#define MAP_LV522_CHANCES_CLAIM "LV-522 Chance's Claim"
#define MAP_NEW_VARADERO "New Varadero"//ice colony underground but as its own map
#define MAP_CHINOOK "Chinook 91 GSO" //admin level

Expand Down
2 changes: 1 addition & 1 deletion code/__DEFINES/mode.dm
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
#define MODE_BASIC_RT (1<<11)
#define MODE_RANDOM_HIVE (1<<12)// Makes Join-as-Xeno choose a hive to join as burrowed larva at random rather than at user's input..
#define MODE_THUNDERSTORM (1<<13)// Enables thunderstorm effects on maps that are compatible with it. (Lit exterior tiles, rain effects)
#define MODE_FACTION_CLASH (1<<14)// Disables scopes, sniper sentries, OBs, shooting corpses, dragging enemy corpses, stripping enemy corpses
#define MODE_FACTION_CLASH (1<<14)// Disables scopes, sniper sentries, OBs, shooting corpses, dragging enemy corpses, stripping enemy corpses, increase armor bullet/bomb/internal damage protection

// Gamemode Toggleable Flags
#define MODE_NO_SNIPER_SENTRY (1<<0) /// Upgrade kits will no longer allow you to select long-range upgrades
Expand Down
2 changes: 1 addition & 1 deletion code/__DEFINES/tgs.dm
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// tgstation-server DMAPI
// The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF RFC 2119.

#define TGS_DMAPI_VERSION "7.2.1"
#define TGS_DMAPI_VERSION "7.3.0"

// All functions and datums outside this document are subject to change with any version and should not be relied on.

Expand Down
4 changes: 2 additions & 2 deletions code/__HELPERS/unsorted.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@
#define format_frequency(f) "[floor((f) / 10)].[(f) % 10]"

#define reverse_direction(direction) ( \
( dir & (NORTH|SOUTH) ? ~dir & (NORTH|SOUTH) : 0 ) | \
( dir & (EAST|WEST) ? ~dir & (EAST|WEST) : 0 ) \
( direction & (NORTH|SOUTH) ? ~direction & (NORTH|SOUTH) : 0 ) | \
( direction & (EAST|WEST) ? ~direction & (EAST|WEST) : 0 ) \
)

// The sane, counter-clockwise angle to turn to get from /direction/ A to /direction/ B
Expand Down
76 changes: 76 additions & 0 deletions code/datums/decorators/gamemode_decorator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,79 @@
/datum/decorator/gamemode/decorate(atom/object)
for(var/edit in edits)
object.vars[edit] = edits[edit]

//*********************** Human Versus Human ***********************//
//************ USCM Armour Values ************//

//**** Medium Armor ****//
GAMEMODE_DECORATOR(/obj/item/clothing/suit/storage/marine/medium, /datum/game_mode/extended/faction_clash, list(
ARMOR_EDIT(armor_bullet, CLOTHING_ARMOR_HIGH),
ARMOR_EDIT(armor_bomb, CLOTHING_ARMOR_MEDIUM),
ARMOR_EDIT(armor_internaldamage, CLOTHING_ARMOR_HIGH)
))

//**** Light Armor ****//
GAMEMODE_DECORATOR(/obj/item/clothing/suit/storage/marine/light, /datum/game_mode/extended/faction_clash, list(
ARMOR_EDIT(armor_bullet, CLOTHING_ARMOR_MEDIUM),
ARMOR_EDIT(armor_bomb, CLOTHING_ARMOR_MEDIUMLOW),
ARMOR_EDIT(armor_internaldamage, CLOTHING_ARMOR_MEDIUMHIGH)
))

//**** Heavy Armor ****//
GAMEMODE_DECORATOR(/obj/item/clothing/suit/storage/marine/heavy, /datum/game_mode/extended/faction_clash, list(
ARMOR_EDIT(armor_internaldamage, CLOTHING_ARMOR_HIGH)
))

//**** Smartgunner ****//
GAMEMODE_DECORATOR(/obj/item/clothing/suit/storage/marine/smartgunner, /datum/game_mode/extended/faction_clash, list(
ARMOR_EDIT(armor_bullet, CLOTHING_ARMOR_HIGH),
ARMOR_EDIT(armor_internaldamage, CLOTHING_ARMOR_HIGH)
))

//**** Military Police and Command ****//
GAMEMODE_DECORATOR(/obj/item/clothing/suit/storage/marine/MP, /datum/game_mode/extended/faction_clash, list(
ARMOR_EDIT(armor_bullet, CLOTHING_ARMOR_HIGH),
ARMOR_EDIT(armor_bomb, CLOTHING_ARMOR_MEDIUMHIGH),
ARMOR_EDIT(armor_internaldamage, CLOTHING_ARMOR_HIGH)
))

//**** B18 Spec Armor ****//
GAMEMODE_DECORATOR(/obj/item/clothing/suit/storage/marine/specialist, /datum/game_mode/extended/faction_clash, list(
ARMOR_EDIT(armor_bullet, CLOTHING_ARMOR_HIGHPLUS),
ARMOR_EDIT(armor_internaldamage, CLOTHING_ARMOR_HIGHPLUS)
))

//**** Grenadier Spec Armor ****//
GAMEMODE_DECORATOR(/obj/item/clothing/suit/storage/marine/M3G, /datum/game_mode/extended/faction_clash, list(
ARMOR_EDIT(armor_bullet, CLOTHING_ARMOR_HIGH),
ARMOR_EDIT(armor_internaldamage, CLOTHING_ARMOR_HIGH)
))

//**** RPG Spec Armor ****//
GAMEMODE_DECORATOR(/obj/item/clothing/suit/storage/marine/M3T, /datum/game_mode/extended/faction_clash, list(
ARMOR_EDIT(armor_bullet, CLOTHING_ARMOR_HIGH),
ARMOR_EDIT(armor_internaldamage, CLOTHING_ARMOR_HIGH)
))

//**** Scout Spec Armor ****//
GAMEMODE_DECORATOR(/obj/item/clothing/suit/storage/marine/M3S, /datum/game_mode/extended/faction_clash, list(
ARMOR_EDIT(armor_bullet, CLOTHING_ARMOR_HIGH),
ARMOR_EDIT(armor_bomb, CLOTHING_ARMOR_MEDIUM),
ARMOR_EDIT(armor_internaldamage, CLOTHING_ARMOR_HIGH)
))

//**** Sniper Spec Armor ****//
GAMEMODE_DECORATOR(/obj/item/clothing/suit/storage/marine/ghillie, /datum/game_mode/extended/faction_clash, list(
ARMOR_EDIT(armor_bullet, CLOTHING_ARMOR_HIGH),
ARMOR_EDIT(armor_bomb, CLOTHING_ARMOR_MEDIUM),
ARMOR_EDIT(armor_internaldamage, CLOTHING_ARMOR_HIGH)
))

//**** Pyro Spec Armor ****//
GAMEMODE_DECORATOR(/obj/item/clothing/suit/storage/marine/M35, /datum/game_mode/extended/faction_clash, list(
ARMOR_EDIT(armor_bullet, CLOTHING_ARMOR_HIGH),
ARMOR_EDIT(armor_bomb, CLOTHING_ARMOR_MEDIUM),
ARMOR_EDIT(armor_internaldamage, CLOTHING_ARMOR_HIGH)
))

//*********************** ------------------ ***********************//
2 changes: 1 addition & 1 deletion code/datums/emergency_calls/emergency_call.dm
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@


if(spawn_max_amount && i < mob_max)
for(var/c in i to mob_max)
for(var/c in i to mob_max - 1)
create_member(null, override_spawn_loc)

candidates = list()
Expand Down
2 changes: 1 addition & 1 deletion code/game/jobs/job/civilians/other/liaison.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
selection_class = "job_cl"
flags_startup_parameters = ROLE_ADD_TO_DEFAULT
gear_preset = /datum/equipment_preset/uscm_ship/liaison
entry_message_body = "As a <a href='"+WIKI_PLACEHOLDER+"'>representative of Weyland-Yutani Corporation</a>, your job requires you to stay in character at all times. You are not required to follow military orders; however, you cannot give military orders. Your primary job is to observe and report back your findings to Weyland-Yutani. Follow regular game rules unless told otherwise by your superiors. Use your office fax machine to communicate with corporate headquarters or to acquire new directives. You may not receive anything back, and this is normal."
entry_message_body = "As a <a href='"+WIKI_PLACEHOLDER+"'>representative of Weyland-Yutani Corporation</a>, your job requires you to stay in character at all times. While in the AO (Area of Operation), you are subject to orders given by military personnel. On ship, you are subject to orders only by the Command and Security departments. You are not required to follow any orders but you can be arrested if you do not. Your primary job is to observe and report back your findings to Weyland-Yutani. Follow regular game rules unless told otherwise by your superiors. Use your office fax machine to communicate with corporate headquarters or to acquire new directives. You may not receive anything back, and this is normal."
var/mob/living/carbon/human/active_liaison

/datum/job/civilian/liaison/generate_entry_conditions(mob/living/liaison, whitelist_status)
Expand Down
3 changes: 2 additions & 1 deletion code/game/jobs/job/command/cic/executive.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
GLOB.marine_leaders -= JOB_XO

AddTimelock(/datum/job/command/executive, list(
JOB_COMMAND_ROLES = 5 HOURS,
JOB_COMMAND_ROLES = 20 HOURS,
JOB_SQUAD_LEADER = 10 HOURS,
))

/obj/effect/landmark/start/executive
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/devices/defibrillator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@

var/mob/dead/observer/G = target.get_ghost()
if(istype(G) && G.client)
playsound_client(G.client, 'sound/effects/revive_notify.ogg')
playsound_client(G.client, 'sound/effects/adminhelp_new.ogg')
to_chat(G, SPAN_BOLDNOTICE(FONT_SIZE_LARGE("Someone is trying to revive your body. Return to it if you want to be resurrected! \
(Verbs -> Ghost -> Re-enter corpse, or <a href='?src=\ref[G];reentercorpse=1'>click here!</a>)")))

Expand Down
18 changes: 18 additions & 0 deletions code/game/objects/items/storage/firstaid.dm
Original file line number Diff line number Diff line change
Expand Up @@ -762,6 +762,24 @@
storage_flags = STORAGE_FLAGS_BOX
display_maptext = FALSE

/obj/item/storage/pill_bottle/packet/Initialize()
. = ..()
RegisterSignal(src, COMSIG_ITEM_DROPPED, PROC_REF(try_forced_folding))

/obj/item/storage/pill_bottle/packet/proc/try_forced_folding(datum/source, mob/user)
SIGNAL_HANDLER

if(!isturf(loc))
return

if(locate(/obj/item/reagent_container/pill) in src)
return

UnregisterSignal(src, COMSIG_ITEM_DROPPED)
storage_close(user)
to_chat(user, SPAN_NOTICE("You throw away [src]."))
qdel(src)

/obj/item/storage/pill_bottle/packet/tricordrazine
name = "Tricordazine pill packet"
icon_state = "tricordrazine_packet"
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/structures/barricade/non_folding.dm
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@
force_level_absorption = 20
stack_type = /obj/item/stack/sheet/plasteel
debris = list(/obj/item/stack/sheet/plasteel)
stack_amount = 6
destroyed_stack_amount = 3
barricade_type = "new_plasteel"
repair_materials = list("plasteel" = 0.45)
Expand Down
3 changes: 2 additions & 1 deletion code/modules/admin/admin_verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ GLOBAL_LIST_INIT(admin_verbs_minor_event, list(
/client/proc/toggle_hardcore_perma,
/client/proc/toggle_bypass_joe_restriction,
/client/proc/toggle_joe_respawns,
/datum/admins/proc/open_shuttlepanel
/datum/admins/proc/open_shuttlepanel,
/client/proc/get_whitelisted_clients,
))

GLOBAL_LIST_INIT(admin_verbs_major_event, list(
Expand Down
17 changes: 17 additions & 0 deletions code/modules/admin/tabs/event_tab.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,23 @@

CEI.handle_event_info_update(faction)

/client/proc/get_whitelisted_clients()
set name = "Find Whitelisted Players"
set category = "Admin.Events"
if(!admin_holder)
return

var/flag = tgui_input_list(src, "Which flag?", "Whitelist Flags", GLOB.bitfields["whitelist_status"])

var/list/ckeys = list()
for(var/client/test_client in GLOB.clients)
if(test_client.check_whitelist_status(GLOB.bitfields["whitelist_status"][flag]))
ckeys += test_client.ckey
if(!length(ckeys))
to_chat(src, SPAN_NOTICE("There are no players with that whitelist online"))
return
to_chat(src, SPAN_NOTICE("Whitelist holders: [ckeys.Join(", ")]."))

/client/proc/change_security_level()
if(!check_rights(R_ADMIN))
return
Expand Down
7 changes: 7 additions & 0 deletions code/modules/mob/living/carbon/human/say.dm
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@

message = trim(strip_html(message))

if(!filter_message(src, message))
return

if(stat == DEAD)
return say_dead(message)

Expand All @@ -87,6 +90,10 @@
to_chat(src, SPAN_WARNING(fail_message))
return
message = parsed["message"]

if(!filter_message(src, message))
return

var/datum/language/speaking = parsed["language"]
if(!speaking)
speaking = get_default_language()
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/human/species/zombie.dm
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@
/datum/species/zombie/proc/handle_alert_ghost(mob/living/carbon/human/zombie)
var/mob/dead/observer/ghost = zombie.get_ghost()
if(ghost?.client)
playsound_client(ghost.client, 'sound/effects/revive_notify.ogg')
playsound_client(ghost.client, 'sound/effects/adminhelp_new.ogg')
to_chat(ghost, SPAN_BOLDNOTICE(FONT_SIZE_LARGE("Your body has risen! (Verbs -> Ghost -> Re-enter corpse, or <a href='?src=\ref[ghost];reentercorpse=1'>click here!</a>)")))

/datum/species/zombie/proc/remove_from_revive(mob/living/carbon/human/zombie)
Expand Down
4 changes: 2 additions & 2 deletions code/modules/mob/living/say.dm
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,11 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
/mob/living/say(message, datum/language/speaking = null, verb="says", alt_name="", italics=0, message_range = GLOB.world_view_size, sound/speech_sound, sound_vol, nolog = 0, message_mode = null, bubble_type = bubble_icon)
var/turf/T

if(SEND_SIGNAL(src, COMSIG_LIVING_SPEAK, message, speaking, verb, alt_name, italics, message_range, speech_sound, sound_vol, nolog, message_mode) & COMPONENT_OVERRIDE_SPEAK) return

if(!filter_message(src, message))
return

if(SEND_SIGNAL(src, COMSIG_LIVING_SPEAK, message, speaking, verb, alt_name, italics, message_range, speech_sound, sound_vol, nolog, message_mode) & COMPONENT_OVERRIDE_SPEAK) return

message = process_chat_markup(message, list("~", "_"))

for(var/dst=0; dst<=1; dst++) //Will run twice if src has a clone
Expand Down
2 changes: 1 addition & 1 deletion code/modules/nightmare/nmnodes/mapload.dm
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
. = ..()
if(!.) return
var/dir_path = context.get_file_path(filepath, "map")
var/regex/matcher = new(@"^([0-9]+)([\.\+])(([^_]+)(_.*))?\.dmm$", "i")
var/regex/matcher = new(@"^([0-9]+)([\.\+])(([^_]+)(.*))?\.dmm$", "i")
var/list/dircontents = flist(dir_path)
for(var/filename in dircontents)
if(!matcher.Find(filename))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,7 @@
var/mob/dead/observer/ghost = dead.get_ghost()
if(ghost?.client)
COOLDOWN_START(src, ghost_notif, 30 SECONDS)
playsound_client(ghost.client, 'sound/effects/revive_notify.ogg')
playsound_client(ghost.client, 'sound/effects/adminhelp_new.ogg')
to_chat(ghost, SPAN_BOLDNOTICE("Your heart is struggling to pump! There is a chance you might get up!(Verbs -> Ghost -> Re-enter corpse, or <a href='?src=\ref[ghost];reentercorpse=1'>click here!</a>)"))
return TRUE

Expand Down
2 changes: 1 addition & 1 deletion code/modules/shuttle/shuttles/crashable/escape_shuttle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,11 @@
cryos += list(cryotube)
if (occupant_count > max_capacity)
playsound(src,'sound/effects/escape_pod_warmup.ogg', 50, 1)
mode = SHUTTLE_CRASHED
sleep(31)
var/turf/sploded = return_center_turf()
cell_explosion(sploded, 100, 20, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data("escape pod malfunction")) //Clears out walls
sleep(25)
mode = SHUTTLE_CRASHED
for(var/obj/structure/machinery/cryopod/evacuation/cryotube in cryos)
cryotube.go_out()
door_handler.control_doors("force-unlock")
Expand Down
11 changes: 11 additions & 0 deletions code/modules/shuttles/shuttle_supply.dm
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,11 @@
for(var/turf/T in away_area)
elevator_animation.vis_contents += T

for(var/turf/vis_turf in elevator_animation.vis_contents)
for(var/atom/movable/vis_content in vis_turf.contents)
vis_content.blocks_emissive = FALSE
vis_content.update_emissive_block()

//If we are at the away_area then we are just pretending to move, otherwise actually do the move
if (origin != away_area)
playsound(locate(Elevator_x,Elevator_y,Elevator_z), 'sound/machines/asrs_lowering.ogg', 50, 0)
Expand Down Expand Up @@ -126,6 +131,12 @@

moving_status = SHUTTLE_IDLE
stop_gears()

for(var/turf/vis_turf in elevator_animation.vis_contents)
for(var/atom/movable/vis_content in vis_turf.contents)
vis_content.blocks_emissive = initial(vis_content.blocks_emissive)
vis_content.update_emissive_block()

elevator_animation.vis_contents.Cut()

if (!at_station()) //at centcom
Expand Down
2 changes: 1 addition & 1 deletion code/modules/tgs/v5/__interop_version.dm
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"5.9.0"
"5.10.0"
1 change: 1 addition & 0 deletions code/modules/tgs/v5/_defines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
#define DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION "newServerVersion"
#define DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE "broadcastMessage"

#define DMAPI5_TOPIC_RESPONSE_CLIENT_COUNT "clientCount"
#define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE "commandResponse"
#define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE "commandResponseMessage"
#define DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES "chatResponses"
Expand Down
4 changes: 3 additions & 1 deletion code/modules/tgs/v5/topic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,9 @@
if(DMAPI5_TOPIC_COMMAND_HEALTHCHECK)
if(event_handler && event_handler.receive_health_checks)
event_handler.HandleEvent(TGS_EVENT_HEALTH_CHECK)
return TopicResponse()
var/list/health_check_response = TopicResponse()
health_check_response[DMAPI5_TOPIC_RESPONSE_CLIENT_COUNT] = TGS_CLIENT_COUNT
return health_check_response;

if(DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH)
detached = FALSE
Expand Down
2 changes: 1 addition & 1 deletion code/modules/tgs/v5/undefs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

#undef DMAPI5_PARAMETER_ACCESS_IDENTIFIER
#undef DMAPI5_PARAMETER_CUSTOM_COMMANDS
#undef DMAPI5_PARAMETER_TOPIC_PORT

#undef DMAPI5_CHUNK
#undef DMAPI5_CHUNK_PAYLOAD
Expand Down Expand Up @@ -95,6 +94,7 @@
#undef DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION
#undef DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE

#undef DMAPI5_TOPIC_RESPONSE_CLIENT_COUNT
#undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE
#undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE
#undef DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES
Expand Down
4 changes: 0 additions & 4 deletions html/changelogs/AutoChangeLog-pr-7035.yml

This file was deleted.

4 changes: 4 additions & 0 deletions html/changelogs/AutoChangeLog-pr-7058.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
author: "hislittlecuzingames"
delete-after: True
changes:
- config: "Adjusted XO Hour Requirements."
22 changes: 22 additions & 0 deletions html/changelogs/archive/2024-08.yml
Original file line number Diff line number Diff line change
Expand Up @@ -460,3 +460,25 @@
- rscadd: xenos don't kill crit allies by dragging/devouring anymore
TheGamerdk:
- rscadd: CIC groundside operations console now correctly sorts FTLs and SGs
2024-08-30:
FOFFLES105:
- bugfix: fixed issue where nightmare inserts would not spawn
- bugfix: moved unused nightmare inserts to "unused" folder so that they don't cause
errors.
Willzadl:
- qol: changed reinforced treads item description
cuberound:
- bugfix: taking apart plasteel baricade gives back 8 not 4 plasteel
kiVts:
- bugfix: ERT no longer gets one extra free member in freed mobs if the beacon wasnt
completely taken
zzzmike:
- bugfix: CL intro text is more clear regarding legal orders
2024-08-31:
Git-Nivrak:
- bugfix: Fixes crates showing up pitch black while the ASRS platform is moving
Steelpoint:
- balance: If the 'Faction Clash' human versus human game mode is enabled, all marine
armours will have their defensive values significantly buffed to make marine
armour far more valuable and effective in resisting permanent damage. The average
Marine should experience less fractures and other permanent wounds from gunfire.
Loading

0 comments on commit 02852a5

Please sign in to comment.