mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 22:17:32 +01:00
Adds the modsuit Chameleon Module (#23411)
* Adds the modsuit Chameleon Module * Update code/datums/uplink_items/uplink_general.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/uplink_items/uplink_general.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> * even clearer * Update code/datums/uplink_items/uplink_general.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --------- Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
This commit is contained in:
co-authored by
Burzah
Luc
Henri215
parent
112a606ae2
commit
6910d716dd
@@ -648,3 +648,29 @@
|
||||
/obj/item/stamp/chameleon/broken/Initialize(mapload)
|
||||
. = ..()
|
||||
chameleon_action.emp_randomise(INFINITY)
|
||||
|
||||
/datum/action/item_action/chameleon/change/modsuit/update_item(obj/item/picked_item)
|
||||
. = ..()
|
||||
if(ismodcontrol(target))
|
||||
var/obj/item/mod/control/C = target
|
||||
if(C.current_disguise) //backup check
|
||||
for(var/obj/item/mod/module/chameleon/toreturn in C.contents)
|
||||
toreturn.return_look()
|
||||
return
|
||||
C.current_disguise = TRUE
|
||||
C.item_state = initial(picked_item.item_state)
|
||||
for(var/obj/item/mod/module/chameleon/tosignal in C.contents)
|
||||
tosignal.RegisterSignal(C, COMSIG_MOD_ACTIVATE, TYPE_PROC_REF(/obj/item/mod/module/chameleon, return_look))
|
||||
|
||||
/datum/action/item_action/chameleon/change/modsuit/select_look(mob/user)
|
||||
if(ismodcontrol(target))
|
||||
var/obj/item/mod/control/C = target
|
||||
if(C.current_disguise) //backup check
|
||||
for(var/obj/item/mod/module/chameleon/toreturn in C.contents)
|
||||
toreturn.return_look()
|
||||
return
|
||||
if(C.active || C.activating)
|
||||
to_chat(C.wearer, "<span class='warning'>Your suit is already active!</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
@@ -90,6 +90,10 @@
|
||||
var/list/mod_overlays = list()
|
||||
/// Is the jetpack on so we should make ion effects?
|
||||
var/jetpack_active = FALSE
|
||||
/// Cham option for when the cham module is installed.
|
||||
var/datum/action/item_action/chameleon/change/modsuit/chameleon_action
|
||||
/// Is the control unit disquised?
|
||||
var/current_disguise = FALSE
|
||||
|
||||
/obj/item/mod/control/serialize()
|
||||
var/list/data = ..()
|
||||
@@ -482,7 +486,8 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/mod/control/update_icon_state()
|
||||
icon_state = "[skin]-[base_icon_state][active ? "-sealed" : ""]"
|
||||
if(current_disguise)
|
||||
icon_state = "[skin]-[base_icon_state][active ? "-sealed" : ""]"
|
||||
return ..()
|
||||
|
||||
/obj/item/mod/control/proc/set_wearer(mob/living/carbon/human/user)
|
||||
|
||||
@@ -410,6 +410,57 @@
|
||||
/obj/item/mod/module/ert_camera/on_suit_deactivation(deleting = FALSE)
|
||||
QDEL_NULL(camera)
|
||||
|
||||
///Chameleon - lets the suit disguise as any item that would fit on that slot.
|
||||
/obj/item/mod/module/chameleon
|
||||
name = "MOD chameleon module"
|
||||
desc = "A module using chameleon technology to disguise the suit as another object."
|
||||
icon_state = "chameleon"
|
||||
module_type = MODULE_USABLE
|
||||
complexity = 2
|
||||
incompatible_modules = list(/obj/item/mod/module/chameleon)
|
||||
cooldown_time = 0.5 SECONDS
|
||||
allow_flags = MODULE_ALLOW_INACTIVE
|
||||
origin_tech = "materials=6;bluespace=5;syndicate=1"
|
||||
|
||||
/obj/item/mod/module/chameleon/on_install()
|
||||
mod.chameleon_action = new(mod)
|
||||
mod.chameleon_action.chameleon_type = /obj/item/storage/backpack
|
||||
mod.chameleon_action.chameleon_name = "Backpack"
|
||||
mod.chameleon_action.initialize_disguises()
|
||||
|
||||
|
||||
/obj/item/mod/module/chameleon/on_uninstall(deleting = FALSE)
|
||||
if(mod.current_disguise)
|
||||
return_look()
|
||||
QDEL_NULL(mod.chameleon_action)
|
||||
|
||||
/obj/item/mod/module/chameleon/on_use()
|
||||
if(mod.active || mod.activating)
|
||||
to_chat(mod.wearer, "<span class='warning'>Your suit is already active!</span>")
|
||||
return
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
if(mod.current_disguise)
|
||||
return_look()
|
||||
return
|
||||
mod.chameleon_action.select_look(mod.wearer)
|
||||
mod.current_disguise = TRUE
|
||||
RegisterSignal(mod, COMSIG_MOD_ACTIVATE, PROC_REF(return_look))
|
||||
|
||||
/obj/item/mod/module/chameleon/proc/return_look()
|
||||
mod.current_disguise = FALSE
|
||||
mod.name = "[mod.theme.name] [initial(mod.name)]"
|
||||
mod.desc = "[initial(mod.desc)] [mod.theme.desc]"
|
||||
mod.icon_state = "[mod.skin]-control"
|
||||
var/list/mod_skin = mod.theme.skins[mod.skin]
|
||||
mod.icon = mod_skin[MOD_ICON_OVERRIDE] || 'icons/obj/clothing/modsuit/mod_clothing.dmi'
|
||||
mod.icon_override = mod_skin[MOD_ICON_OVERRIDE] || 'icons/mob/clothing/modsuit/mod_clothing.dmi'
|
||||
mod.lefthand_file = initial(mod.lefthand_file)
|
||||
mod.righthand_file = initial(mod.righthand_file)
|
||||
mod.wearer.update_inv_back()
|
||||
UnregisterSignal(mod, COMSIG_MOD_ACTIVATE)
|
||||
|
||||
///Energy Shield - Gives you a rechargeable energy shield that nullifies attacks.
|
||||
/obj/item/mod/module/energy_shield
|
||||
name = "MOD energy shield module"
|
||||
|
||||
Reference in New Issue
Block a user