cavalry's here

This commit is contained in:
SandPoot
2024-09-10 02:00:55 -03:00
parent 3ff65d5e9f
commit a103acd509
8 changed files with 61 additions and 43 deletions

View File

@@ -1,33 +1,36 @@
/datum/element/cleaning /datum/element/cleaning
element_flags = ELEMENT_BESPOKE|ELEMENT_DETACH
id_arg_index = 2
/// Range of cleaning on moving
var/range = 0 var/range = 0
/datum/element/cleaning/Attach(datum/target, cleaning_range = 0) /datum/element/cleaning/Attach(atom/movable/cleaner, cleaning_range)
. = ..() . = ..()
if(!ismovable(target)) if(!istype(cleaner))
return ELEMENT_INCOMPATIBLE return ELEMENT_INCOMPATIBLE
range = cleaning_range if(cleaning_range)
RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(Clean)) range = cleaning_range
RegisterSignal(cleaner, COMSIG_MOVABLE_MOVED, PROC_REF(Clean))
/datum/element/cleaning/Detach(datum/target) /datum/element/cleaning/Detach(atom/movable/cleaner)
. = ..() . = ..()
UnregisterSignal(target, COMSIG_MOVABLE_MOVED) UnregisterSignal(cleaner, COMSIG_MOVABLE_MOVED)
/datum/element/cleaning/proc/Clean(datum/source) /datum/element/cleaning/proc/Clean(atom/movable/cleaner)
var/atom/movable/AM = source for (var/turf/turf in RANGE_TURFS(range, cleaner.loc))
for (var/turf/T in RANGE_TURFS(range, AM.loc)) SEND_SIGNAL(turf, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) for(var/atom/atom as anything in turf)
for(var/A in T) if(is_cleanable(atom))
if(is_cleanable(A)) qdel(atom)
qdel(A) else if(isitem(atom))
else if(isitem(A)) var/obj/item/cleaned_item = atom
var/obj/item/cleaned_item = A
SEND_SIGNAL(cleaned_item, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) SEND_SIGNAL(cleaned_item, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
cleaned_item.clean_blood() cleaned_item.clean_blood()
if(ismob(cleaned_item.loc)) if(ismob(cleaned_item.loc))
var/mob/M = cleaned_item.loc var/mob/mob = cleaned_item.loc
M.regenerate_icons() mob.regenerate_icons()
else if(ishuman(A)) else if(ishuman(atom))
var/mob/living/carbon/human/cleaned_human = A var/mob/living/carbon/human/cleaned_human = atom
if(cleaned_human.lying) if(cleaned_human.lying)
if(cleaned_human.head) if(cleaned_human.head)
SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
@@ -67,4 +70,4 @@
cleaned_human.clean_blood() cleaned_human.clean_blood()
cleaned_human.wash_cream() cleaned_human.wash_cream()
cleaned_human.regenerate_icons() cleaned_human.regenerate_icons()
to_chat(cleaned_human, "<span class='danger'>[AM] cleans your face!</span>") to_chat(cleaned_human, span_danger("[cleaner] cleans your face!"))

View File

@@ -937,9 +937,9 @@
status_flags &= ~CANPUSH status_flags &= ~CANPUSH
if(module.clean_on_move) if(module.clean_on_move)
AddElement(/datum/element/cleaning, 1) AddElement(/datum/element/cleaning, range = 1)
else else
RemoveElement(/datum/element/cleaning, 1) RemoveElement(/datum/element/cleaning)
hat_offset = module.hat_offset hat_offset = module.hat_offset
@@ -1206,8 +1206,8 @@
var/mob/unbuckle_me_now = i var/mob/unbuckle_me_now = i
unbuckle_mob(unbuckle_me_now, FALSE) unbuckle_mob(unbuckle_me_now, FALSE)
/mob/living/silicon/robot/proc/TryConnectToAI() /mob/living/silicon/robot/proc/TryConnectToAI(mob/living/silicon/ai/connect_to)
set_connected_ai(select_active_ai_with_fewest_borgs(z)) set_connected_ai(connect_to || select_active_ai_with_fewest_borgs(z))
if(connected_ai) if(connected_ai)
lawsync() lawsync()
lawupdate = TRUE lawupdate = TRUE

View File

@@ -40,6 +40,6 @@ $include entries/urls.txt
$include entries/vote.txt $include entries/vote.txt
$include plushies/defines.txt $include plushies/defines.txt
# Special Sandstorm configs
$include sandstorm/config.txt # Sandstorm configs
$include sandstorm/balance.txt $include sandstorm/includes.txt

View File

@@ -0,0 +1,4 @@
# This file is mostly so main config file relays to here, and this one relays to the rest
$include sandstorm/balance.txt
$include sandstorm/config.txt
$include sandstorm/qol.txt

7
config/sandstorm/qol.txt Normal file
View File

@@ -0,0 +1,7 @@
###
## AI
###
## How many shells would an AI gain at roundstart
## Comment to disable
ROUNDSTART_AI_SHELLS 1

View File

@@ -28,3 +28,6 @@
value_mode = VALUE_MODE_TYPE value_mode = VALUE_MODE_TYPE
splitter = " | " splitter = " | "
lowercase_key = FALSE lowercase_key = FALSE
/datum/config_entry/number/roundstart_ai_shells // Per AI, if you ever do get a triumvirate!
min_val = 0

View File

@@ -1,6 +1,21 @@
/datum/job/ai/after_spawn(mob/living/silicon/ai/AI, client/player_client, latejoin) /datum/job/ai/after_spawn(mob/living/silicon/ai/AI, client/player_client, latejoin)
. = ..() . = ..()
if(!istype(AI)) setup_silicon_law_prefs(AI, player_client)
if(latejoin)
return return
setup_silicon_law_prefs(AI, player_client) var/free_shells = CONFIG_GET(number/roundstart_ai_shells)
if(!free_shells)
return
var/turf/open/turf = locate() in RANGE_TURFS(1, AI)
// Why the fuck is the station AI completely blocked
var/turf/where = turf || get_turf(AI)
// Creating AI shells for the AI.
for(var/iteration in 1 to free_shells)
var/mob/living/silicon/robot/free_borg = new(where)
free_borg.shell = TRUE
free_borg.TryConnectToAI(AI)

View File

@@ -1,16 +1,2 @@
/mob/living/silicon/ai /mob/living/silicon/ai
vore_flags = NO_VORE vore_flags = NO_VORE
/mob/living/silicon/ai/Initialize(mapload, datum/ai_laws/L, mob/target_ai)
. = ..()
if (!mapload)
return
// Creating a AI shell for the AI.
var/turf/open/T = locate() in RANGE_TURFS(1, src)
if (T)
new /mob/living/silicon/robot/shell(T)
return
// Why the fuck is the station AI completely blocked
new /mob/living/silicon/robot/shell(get_turf(src))