mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-05 22:43:46 +00:00
[MIRROR] modsuit patch one [MDB IGNORE] (#10314)
* modsuit patch one (#63638) Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> * modsuit patch one * Feex Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
This commit is contained in:
@@ -16,7 +16,16 @@
|
||||
strip_delay = 10 SECONDS
|
||||
slowdown = 2
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 25, ACID = 25, WOUND = 10)
|
||||
actions_types = list(/datum/action/item_action/mod/deploy, /datum/action/item_action/mod/activate, /datum/action/item_action/mod/module, /datum/action/item_action/mod/panel)
|
||||
actions_types = list(
|
||||
/datum/action/item_action/mod/deploy,
|
||||
/datum/action/item_action/mod/activate,
|
||||
/datum/action/item_action/mod/panel,
|
||||
/datum/action/item_action/mod/module,
|
||||
/datum/action/item_action/mod/deploy/ai,
|
||||
/datum/action/item_action/mod/activate/ai,
|
||||
/datum/action/item_action/mod/panel/ai,
|
||||
/datum/action/item_action/mod/module/ai,
|
||||
)
|
||||
resistance_flags = NONE
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
|
||||
@@ -165,6 +174,41 @@
|
||||
QDEL_NULL(cell)
|
||||
return ..()
|
||||
|
||||
/obj/item/mod/control/atom_destruction(damage_flag)
|
||||
for(var/obj/item/mod/module/module as anything in modules)
|
||||
for(var/obj/item/item in module)
|
||||
item.forceMove(drop_location())
|
||||
if(ai)
|
||||
ai.controlled_equipment = null
|
||||
ai.remote_control = null
|
||||
for(var/datum/action/action as anything in actions)
|
||||
if(action.owner == ai)
|
||||
action.Remove(ai)
|
||||
new /obj/item/mod/ai_minicard(drop_location(), ai)
|
||||
return ..()
|
||||
|
||||
/obj/item/mod/control/examine(mob/user)
|
||||
. = ..()
|
||||
if(active)
|
||||
. += span_notice("Cell power: [cell ? "[round(cell.percent(), 1)]%" : "No cell"].")
|
||||
. += span_notice("Selected module: [selected_module || "None"].")
|
||||
if(!open && !active)
|
||||
. += span_notice("You could put it on your <b>back</b> to turn it on.")
|
||||
. += span_notice("You could open the cover with a <b>screwdriver</b>.")
|
||||
else if(open)
|
||||
. += span_notice("You could close the cover with a <b>screwdriver</b>.")
|
||||
. += span_notice("You could use <b>modules</b> on it to install them.")
|
||||
. += span_notice("You could remove modules with a <b>crowbar</b>.")
|
||||
. += span_notice("You could update the access with an <b>ID</b>.")
|
||||
if(cell)
|
||||
. += span_notice("You could remove the cell with an <b>empty hand</b>.")
|
||||
else
|
||||
. += span_notice("You could use a <b>cell</b> on it to install one.")
|
||||
if(ai)
|
||||
. += span_notice("You could remove [ai] with an <b>intellicard</b>")
|
||||
else
|
||||
. += span_notice("You could install an AI with an <b>intellicard</b>.")
|
||||
|
||||
/obj/item/mod/control/process(delta_time)
|
||||
if(seconds_electrified > MACHINE_NOT_ELECTRIFIED)
|
||||
seconds_electrified--
|
||||
@@ -248,13 +292,13 @@
|
||||
balloon_alert(user, "deactivate suit first!")
|
||||
playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
|
||||
return FALSE
|
||||
balloon_alert(user, "[open ? "closing" : "opening"] panel...")
|
||||
balloon_alert(user, "[open ? "closing" : "opening"] cover...")
|
||||
screwdriver.play_tool_sound(src, 100)
|
||||
if(screwdriver.use_tool(src, user, 1 SECONDS))
|
||||
if(active || activating)
|
||||
balloon_alert(user, "deactivate suit first!")
|
||||
screwdriver.play_tool_sound(src, 100)
|
||||
balloon_alert(user, "panel [open ? "closed" : "opened"]")
|
||||
balloon_alert(user, "cover [open ? "closed" : "opened"]")
|
||||
open = !open
|
||||
else
|
||||
balloon_alert(user, "interrupted!")
|
||||
@@ -263,7 +307,7 @@
|
||||
/obj/item/mod/control/crowbar_act(mob/living/user, obj/item/crowbar)
|
||||
. = ..()
|
||||
if(!open)
|
||||
balloon_alert(user, "open the panel first!")
|
||||
balloon_alert(user, "open the cover first!")
|
||||
playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
|
||||
return FALSE
|
||||
if(!allowed(user))
|
||||
@@ -290,14 +334,14 @@
|
||||
/obj/item/mod/control/attackby(obj/item/attacking_item, mob/living/user, params)
|
||||
if(istype(attacking_item, /obj/item/mod/module))
|
||||
if(!open)
|
||||
balloon_alert(user, "open the panel first!")
|
||||
balloon_alert(user, "open the cover first!")
|
||||
playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
|
||||
return FALSE
|
||||
install(attacking_item, user)
|
||||
return TRUE
|
||||
else if(istype(attacking_item, /obj/item/stock_parts/cell))
|
||||
if(!open)
|
||||
balloon_alert(user, "open the panel first!")
|
||||
balloon_alert(user, "open the cover first!")
|
||||
playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
|
||||
return FALSE
|
||||
if(cell)
|
||||
@@ -342,13 +386,15 @@
|
||||
|
||||
/obj/item/mod/control/emp_act(severity)
|
||||
. = ..()
|
||||
to_chat(wearer, span_notice("[severity > 1 ? "Light" : "Strong"] electromagnetic pulse detected!"))
|
||||
if(!active || !wearer || . & EMP_PROTECT_CONTENTS)
|
||||
if(!active || !wearer)
|
||||
return
|
||||
selected_module = null
|
||||
to_chat(wearer, span_notice("[severity > 1 ? "Light" : "Strong"] electromagnetic pulse detected!"))
|
||||
if(. & EMP_PROTECT_CONTENTS)
|
||||
return
|
||||
selected_module.on_deactivation()
|
||||
wearer.apply_damage(10 / severity, BURN, spread_damage=TRUE)
|
||||
to_chat(wearer, span_danger("You feel [src] heat up from the EMP, burning you slightly."))
|
||||
if (wearer.stat < UNCONSCIOUS && prob(10))
|
||||
if(wearer.stat < UNCONSCIOUS && prob(10))
|
||||
wearer.emote("scream")
|
||||
|
||||
/obj/item/mod/control/on_outfit_equip(mob/living/carbon/human/outfit_wearer, visuals_only, item_slot)
|
||||
@@ -377,6 +423,7 @@
|
||||
wearer = user
|
||||
RegisterSignal(wearer, COMSIG_ATOM_EXITED, .proc/on_exit)
|
||||
RegisterSignal(wearer, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, .proc/on_borg_charge)
|
||||
RegisterSignal(src, COMSIG_ITEM_PRE_UNEQUIP, .proc/on_unequip)
|
||||
update_cell_alert()
|
||||
for(var/obj/item/mod/module/module as anything in modules)
|
||||
module.on_equip()
|
||||
@@ -385,9 +432,17 @@
|
||||
for(var/obj/item/mod/module/module as anything in modules)
|
||||
module.on_unequip()
|
||||
UnregisterSignal(wearer, list(COMSIG_ATOM_EXITED, COMSIG_PROCESS_BORGCHARGER_OCCUPANT))
|
||||
UnregisterSignal(src, COMSIG_ITEM_PRE_UNEQUIP)
|
||||
wearer.clear_alert("mod_charge")
|
||||
wearer = null
|
||||
|
||||
/obj/item/mod/control/proc/on_unequip()
|
||||
SIGNAL_HANDLER
|
||||
|
||||
for(var/obj/item/part in mod_parts)
|
||||
if(part.loc != src)
|
||||
return COMPONENT_ITEM_BLOCK_UNEQUIP
|
||||
|
||||
/obj/item/mod/control/proc/update_flags()
|
||||
var/list/used_skin = theme.skins[skin]
|
||||
for(var/obj/item/clothing/part as anything in mod_parts)
|
||||
@@ -420,17 +475,21 @@
|
||||
continue
|
||||
display_names[module.name] = REF(module)
|
||||
var/image/module_image = image(icon = module.icon, icon_state = module.icon_state)
|
||||
if(module == selected_module)
|
||||
module_image.underlays += image(icon = 'icons/hud/radial.dmi', icon_state = "module_selected")
|
||||
else if(module.active)
|
||||
module_image.underlays += image(icon = 'icons/hud/radial.dmi', icon_state = "module_active")
|
||||
items += list(module.name = module_image)
|
||||
if(!length(items))
|
||||
return
|
||||
var/pick = show_radial_menu(user, src, items, custom_check = FALSE, require_near = TRUE)
|
||||
var/pick = show_radial_menu(user, src, items, custom_check = FALSE, require_near = TRUE, tooltips = TRUE)
|
||||
if(!pick)
|
||||
return
|
||||
var/module_reference = display_names[pick]
|
||||
var/obj/item/mod/module/selected_module = locate(module_reference) in modules
|
||||
if(!istype(selected_module) || user.incapacitated())
|
||||
var/obj/item/mod/module/picked_module = locate(module_reference) in modules
|
||||
if(!istype(picked_module) || user.incapacitated())
|
||||
return
|
||||
selected_module.on_select()
|
||||
picked_module.on_select()
|
||||
|
||||
/obj/item/mod/control/proc/paint(mob/user, obj/item/paint)
|
||||
if(length(theme.skins) <= 1)
|
||||
@@ -557,3 +616,4 @@
|
||||
if(!cell)
|
||||
return
|
||||
cell.give(amount)
|
||||
update_cell_alert()
|
||||
|
||||
Reference in New Issue
Block a user