Skip to content

Commit

Permalink
add: Replays v1 (ss220-space#5731)
Browse files Browse the repository at this point in the history
* demo

* direction light

* the forgoten

* transit space

* mark turf after lighting object update

* feat: add repo path to code revision info and to demo

* feat: set demo version format 1.1

* tweak: disable demo recording by default

* remove empty line

* confidential

* confidetial fix

---------

Co-authored-by: Aziz Chynaliev <[email protected]>
  • Loading branch information
ROdenFL and Bizzonium authored Aug 25, 2024
1 parent 20a76de commit 3dcf2d9
Show file tree
Hide file tree
Showing 41 changed files with 1,029 additions and 433 deletions.
24 changes: 24 additions & 0 deletions code/__DEFINES/subsystems.dm
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@
#define INIT_ORDER_PATH -50
#define INIT_ORDER_PERSISTENCE -95
#define INIT_ORDER_STATPANELS -98
#define INIT_ORDER_DEMO -99 // To avoid a bunch of changes related to initialization being written, do this last
#define INIT_ORDER_CHAT -100 // Should be last to ensure chat remains smooth during init.

// Subsystem fire priority, from lowest to highest priority
Expand Down Expand Up @@ -156,3 +157,26 @@
#define SS_CPUDISPLAY_LOW 1
#define SS_CPUDISPLAY_DEFAULT 2
#define SS_CPUDISPLAY_HIGH 3

// Truly disgusting, TG. Truly disgusting.
//! ## Overlays subsystem

#define POST_OVERLAY_CHANGE(changed_on) \
if(length(changed_on.overlays) >= MAX_ATOM_OVERLAYS) { \
var/text_lays = overlays2text(changed_on.overlays); \
stack_trace("Too many overlays on [changed_on.type] - [length(changed_on.overlays)], refusing to update and cutting.\
\n What follows is a printout of all existing overlays at the time of the overflow \n[text_lays]"); \
changed_on.overlays.Cut(); \
changed_on.add_overlay(mutable_appearance('icons/Testing/greyscale_error.dmi')); \
} \
if(alternate_appearances) { \
for(var/I in changed_on.alternate_appearances){\
var/datum/atom_hud/alternate_appearance/AA = changed_on.alternate_appearances[I];\
if(AA.transfer_overlays){\
AA.copy_overlays(changed_on, TRUE);\
}\
} \
}\
if(isturf(changed_on)){SSdemo.mark_turf(changed_on);}\
if(isobj(changed_on) || ismob(changed_on)){SSdemo.mark_dirty(changed_on);}\

2 changes: 2 additions & 0 deletions code/__HELPERS/icon_smoothing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,8 @@ GLOBAL_LIST_INIT(adjacent_direction_lookup, generate_adjacent_directions())

else if(A.smooth & SMOOTH_BITMASK)
A.bitmask_smooth()
if(isturf(A))
SSdemo.mark_turf(A)

/atom/proc/bitmask_smooth()
var/new_junction = NONE
Expand Down
2 changes: 2 additions & 0 deletions code/_globalvars/configuration.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
GLOBAL_REAL(config, /datum/controller/configuration)

GLOBAL_DATUM(revdata, /datum/getrev)

GLOBAL_VAR(host)
GLOBAL_VAR(join_motd)
GLOBAL_VAR(join_tos)
Expand Down
2 changes: 2 additions & 0 deletions code/_globalvars/logging.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ GLOBAL_VAR(runtime_summary_log)
GLOBAL_PROTECT(runtime_summary_log)
GLOBAL_VAR(tgui_log)
GLOBAL_PROTECT(tgui_log)
GLOBAL_VAR(demo_log)
GLOBAL_PROTECT(demo_log)
GLOBAL_VAR(http_log)
GLOBAL_PROTECT(http_log)
GLOBAL_VAR(sql_log)
Expand Down
15 changes: 14 additions & 1 deletion code/_onclick/item_attack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,27 +30,40 @@

. |= tool_chain_result
if(ATTACK_CHAIN_CANCEL_CHECK(.))
mark_target(target)
return .

var/pre_attackby_result = pre_attackby(target, user, params)
if(!(pre_attackby_result & ATTACK_CHAIN_CORE_RETURN_BITFLAGS))
mark_target(target)
CRASH("pre_attackby() must return one of the core ATTACK_CHAIN_* bitflags, please consult code/__DEFINES/combat.dm; user = [user_type]; item = [item_type]; target = [target_type]")

. |= pre_attackby_result
if(ATTACK_CHAIN_CANCEL_CHECK(.))
mark_target(target)
return .

var/attackby_result = target.attackby(src, user, params)
if(!(attackby_result & ATTACK_CHAIN_CORE_RETURN_BITFLAGS))
mark_target(target)
CRASH("attackby() must return one of the core ATTACK_CHAIN_* bitflags, please consult code/__DEFINES/combat.dm; user = [user_type]; item = [item_type]; target = [target_type]")

. |= attackby_result
// yes a lot of QDELETED checks but attackby is a longest spaghetti code in the entire game
if((. & ATTACK_CHAIN_NO_AFTERATTACK) || QDELETED(src) || QDELETED(target) || QDELETED(user))
mark_target(target)
return .

afterattack(target, user, TRUE, params)
mark_target(target)

/// Used to mark a target for the demo system during a melee attack chain, call this before return
/obj/item/proc/mark_target(atom/target)
SSdemo.mark_dirty(src)
if(isturf(target))
SSdemo.mark_turf(target)
else
SSdemo.mark_dirty(target)

/**
* Called on the item to check if it has any of the tool's behavior
Expand All @@ -77,6 +90,7 @@
return FALSE
if(signal_ret & COMPONENT_CANCEL_ATTACK_CHAIN)
return TRUE
SSdemo.mark_dirty(src)


/obj/item/attack_self_tk(mob/user)
Expand Down Expand Up @@ -305,4 +319,3 @@
ignored_mobs = user,
)
to_chat(user, span_danger("You have [message_verb] [src] with [I]!"))

3 changes: 3 additions & 0 deletions code/controllers/configuration/entries/config.dm
Original file line number Diff line number Diff line change
Expand Up @@ -700,6 +700,9 @@

/datum/config_entry/flag/config_errors_runtime

/// Whether demos are written, if not set demo SS never initializes
/datum/config_entry/flag/demos_enabled

//Needs proper testing
/datum/config_entry/keyed_list/probability
key_mode = KEY_MODE_TEXT
Expand Down
4 changes: 3 additions & 1 deletion code/controllers/subsystem/chat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,9 @@ SUBSYSTEM_DEF(chat)
if(MC_TICK_CHECK)
return

/datum/controller/subsystem/chat/proc/queue(queue_target, list/message_data)
/datum/controller/subsystem/chat/proc/queue(queue_target, list/message_data, confidential = FALSE)
if(!confidential)
SSdemo.write_chat(queue_target, message_data)
var/list/targets = islist(queue_target) ? queue_target : list(queue_target)
for(var/target in targets)
var/client/client = CLIENT_FROM_VAR(target)
Expand Down
Loading

0 comments on commit 3dcf2d9

Please sign in to comment.