mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 07:08:00 +01:00
Fixes modsuit charging and sphere transformation in 0 gravity (#64857)
Handles modsuit borg recharging on the standard core itself instead of the modsuit modsuit, as it should.
This commit is contained in:
@@ -439,8 +439,8 @@
|
||||
|
||||
/obj/item/mod/control/proc/set_wearer(mob/user)
|
||||
wearer = user
|
||||
SEND_SIGNAL(src, COMSIG_MOD_WEARER_SET, wearer)
|
||||
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_charge_alert()
|
||||
for(var/obj/item/mod/module/module as anything in modules)
|
||||
@@ -452,6 +452,7 @@
|
||||
UnregisterSignal(wearer, list(COMSIG_ATOM_EXITED, COMSIG_PROCESS_BORGCHARGER_OCCUPANT))
|
||||
UnregisterSignal(src, COMSIG_ITEM_PRE_UNEQUIP)
|
||||
wearer.clear_alert("mod_charge")
|
||||
SEND_SIGNAL(src, COMSIG_MOD_WEARER_UNSET, wearer)
|
||||
wearer = null
|
||||
|
||||
/obj/item/mod/control/proc/on_unequip()
|
||||
@@ -536,7 +537,7 @@
|
||||
return FALSE
|
||||
do_sparks(5, TRUE, src)
|
||||
var/check_range = TRUE
|
||||
return electrocute_mob(user, get_cell(), src, 0.7, check_range)
|
||||
return electrocute_mob(user, get_charge_source(), src, 0.7, check_range)
|
||||
|
||||
/obj/item/mod/control/proc/install(module, mob/user)
|
||||
var/obj/item/mod/module/new_module = module
|
||||
@@ -652,15 +653,6 @@
|
||||
INVOKE_ASYNC(src, .proc/toggle_activate, wearer, TRUE)
|
||||
return
|
||||
|
||||
/obj/item/mod/control/proc/on_borg_charge(datum/source, amount)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
update_charge_alert()
|
||||
var/obj/item/stock_parts/cell/cell = get_cell()
|
||||
if(!cell)
|
||||
return
|
||||
cell.give(amount)
|
||||
|
||||
/obj/item/mod/control/proc/on_potion(atom/movable/source, obj/item/slimepotion/speed/speed_potion, mob/living/user)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
|
||||
@@ -85,11 +85,16 @@
|
||||
RegisterSignal(mod, COMSIG_PARENT_EXAMINE, .proc/on_examine)
|
||||
RegisterSignal(mod, COMSIG_ATOM_ATTACK_HAND, .proc/on_attack_hand)
|
||||
RegisterSignal(mod, COMSIG_PARENT_ATTACKBY, .proc/on_attackby)
|
||||
RegisterSignal(mod, COMSIG_MOD_WEARER_SET, .proc/on_wearer_set)
|
||||
if(mod.wearer)
|
||||
on_wearer_set(mod, mod.wearer)
|
||||
|
||||
/obj/item/mod/core/standard/uninstall()
|
||||
if(!QDELETED(cell))
|
||||
cell.forceMove(drop_location())
|
||||
UnregisterSignal(mod, list(COMSIG_PARENT_EXAMINE, COMSIG_ATOM_ATTACK_HAND, COMSIG_PARENT_ATTACKBY))
|
||||
UnregisterSignal(mod, list(COMSIG_PARENT_EXAMINE, COMSIG_ATOM_ATTACK_HAND, COMSIG_PARENT_ATTACKBY, COMSIG_MOD_WEARER_SET))
|
||||
if(mod.wearer)
|
||||
on_wearer_unset(mod, mod.wearer)
|
||||
return ..()
|
||||
|
||||
/obj/item/mod/core/standard/charge_source()
|
||||
@@ -202,6 +207,24 @@
|
||||
return COMPONENT_NO_AFTERATTACK
|
||||
return NONE
|
||||
|
||||
/obj/item/mod/core/standard/proc/on_wearer_set(datum/source, mob/user)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
RegisterSignal(mod.wearer, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, .proc/on_borg_charge)
|
||||
RegisterSignal(mod, COMSIG_MOD_WEARER_UNSET, .proc/on_wearer_unset)
|
||||
|
||||
/obj/item/mod/core/standard/proc/on_wearer_unset(datum/source, mob/user)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
UnregisterSignal(mod.wearer, COMSIG_PROCESS_BORGCHARGER_OCCUPANT)
|
||||
UnregisterSignal(mod, COMSIG_MOD_WEARER_UNSET)
|
||||
|
||||
/obj/item/mod/core/standard/proc/on_borg_charge(datum/source, amount)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
add_charge(amount)
|
||||
mod.update_charge_alert()
|
||||
|
||||
/obj/item/mod/core/ethereal
|
||||
name = "MOD ethereal core"
|
||||
icon_state = "mod-core-ethereal"
|
||||
|
||||
@@ -457,6 +457,9 @@
|
||||
var/animate_time = 0.25 SECONDS
|
||||
|
||||
/obj/item/mod/module/sphere_transform/on_activation()
|
||||
if(!mod.wearer.has_gravity())
|
||||
balloon_alert(mod.wearer, "no gravity!")
|
||||
return FALSE
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user