Modsuits. Ready for review, sorry for the ammount of files changed 👉 👈 (#21147)

* biting off more than I can chew, but I feel like hurting myself

* more shit

* progress continues, moral stays sameish

* bite of 2587

* mod_theme down, but probably broken

* 385 errors, 16 warnings, zero tgui interactions

* 292 19

* final strech to buggy mess, break time

* it compiles. It almost fucking certainly doesnt work, but it compiles

* fudhsciffubgsbgpgb actions not working as should for modules

* fuck it we'll just open the pr as we work on it

* icons work now

* tgui stuff

* more progress

* JUDGEMENT

* IT LIVES. TGUI LIVES. Special thanks to Sirryan and my brother.

* jetpacks, gps, and go do what exo-suits yourself

* almost ready

* sorry to whoever has to review this

* should work™️

* should be good now

* pushing changes so I can do reviews next

* Apply suggestions from code review

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* lore™️ Adds illegals level to modsuit parts from syndicate.

* early returns

* and these illegals

* no uplink reference idiot

* mod inhands are a good idea

* this is needed for inhands nerd

* Bomb detector working, modsutis cover ears. skin things

* overslotting removal, cyborg charging, ert loadout for gamma

* duplicated signal

* modsuit themes, removes broken mister / bad base type module, 2 cores in robotics.

* tether module, orb module, holster stuff

* built in no slip, cheaper 87

* removes modules already installed, engineer ert get jetpack, equip into modsuit storage

* comments spaces and duplicate flags

* Some adjustments and thoughts on armor, heads get guns because they are cool like that / looting command members armor

* Apply suggestions from code review

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Compile TGUI, slowdown adjustment, Modsuit to MODsuit

* sonar, do after, more equipment, acid handling

* overlay bugs / ERT / DS suits autodeploy

* middle click action buttons

* traders, sec modsuit energy nerf

* surplus weighting

* Kinesis module.

* Pathfinder module, kinesis balance, blueprint for pathfinder and kinesis

* more power / unused module removed

* name, ds fix, pre equipped to cc suit

* depot / grammer

* ok should be good™️

* overslot, dupe gun, missing suit storage

* stealth nerf, new kit

* gun stuff  / ds theme

* bio armor is gone

* let me push changes please thank you

* makes shocks work right

* copies over some changes TG made to module prices after porting

* Merge remote-tracking branch 'upstream/master' into Because-I-hate-myself-and-someone-has-to-try-it-

* sirryans changes

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Update code/modules/telesci/gps.dm

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Update code/modules/telesci/gps.dm

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Control define, ERT / DS have gloves / boots again.

* Apply suggestions from code review

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* More changes

* god I hate tgui. Why do all the bundles live underground, instead of in my basement?

* she updates my master till I testmerge

* modsuits can recharge again

* fixes a lot of shit

* Ready for TM probably

* sure fuck it whatever that makes sense I guess

* the pinpointer works better™️

* Another storage module bug fix

* hair and medical stuff

* fuck fuck fuck

* fixes sonar

* Bag exploit fixes / plasma runtimes / ear nerf

* dna lock improvement / cryostorage

* whoops

* Ball form second cooldown wasn't helping, no more infinite cores

* she springs my lock till I ***SNAP***

* plasmaman no longer die

* fixes modsuit emp issues

* atmos no longer fucking dies

* Fixes, module printing, and a restriction on newly constructed modsuits

* Inventory code my hated

* WOOO PREFERENCE CODE WOOOOO

* icons my hated

* fix for mods / spaceproof shit

* holy shit whhhyyyyy

* backpack first

* Update mod_theme.dm

* prevent infinite gun arms / infinite modsuit cores / syndicate modules

* fixes tm error

* scream loudly if species sprites break. They shouldn't, but, you know.

* deconflicted with luck

* converts to refit for species

* fix pathfinder

* fixes modsuits being funky power wise

* lockboxes :gatto: , as well as DN-MP shield lock, and slight nerf to atmos modsuit

* nerfs the atmos modsuit

* magboots for ds / CC modsuit

* downside of autosave: typing in wrong window saves bad stuff

* Gamma ERT have internal cameras again.

* spellcheck when

* ah fuck

* yes delete the null that works

* whoops

* fixes error / description

* un vulps your cannon

* fixes tails disapeering on base modsuits

* space to underscore

* tgui fix / tajaran

* springlock buff, cryopod fix

* u helps

* WHO PUTS A GUN IN ITEMS

* tgui moment

* mining modsuit nerf / hidden holster module

* PAIN

* UNATHI TIDE STATION WIDE

* I love special code

* slightly dense

* shark jumpscare

* fixes ghost item, fixes springlock being bad

* YIPPEEEE IT WORKED

* she decons my flict

* pain

* ebbas days are numbered :^)

* hidden

* r-r-r-ebuild

* fixes more bugs

* qwerty, you are dense

* fixes gps

* fix mulebot crate

* level fix

* adds back icon

* moving storage, fix bug, modules activate / deactivate message

* yeah

* yeah

* yeah™️

* steels requests

* windoors no longer make pathfinder module explode

* chat spam

* oil slicks + modsuits

* whoops

* bag check

* ofc

* Update code/modules/mod/mod_control.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Update code/datums/uplink_items/uplink_nuclear.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Update code/modules/mod/mod_control.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Update code/modules/mod/modules/module_pathfinder.dm

Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com>

---------

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com>
This commit is contained in:
Qwertytoforty
2023-08-19 16:36:13 -04:00
committed by GitHub
parent 9108007709
commit 76a845d380
169 changed files with 9276 additions and 329 deletions
+16 -14
View File
@@ -60,7 +60,7 @@
M.actions -= src
M.update_action_buttons()
/datum/action/proc/Trigger()
/datum/action/proc/Trigger(left_click = TRUE)
if(!IsAvailable())
return FALSE
return TRUE
@@ -154,12 +154,12 @@
I.actions -= src
return ..()
/datum/action/item_action/Trigger(attack_self = TRUE) //Maybe we don't want to click the thing itself
/datum/action/item_action/Trigger(left_click = TRUE, attack_self = TRUE) //Maybe we don't want to click the thing itself
if(!..())
return FALSE
if(target && attack_self)
var/obj/item/I = target
I.ui_action_click(owner, type)
I.ui_action_click(owner, type, left_click)
return TRUE
/datum/action/item_action/ApplyIcon(obj/screen/movable/action_button/current_button)
@@ -179,6 +179,8 @@
I.appearance_flags = old_appearance_flags
else
..()
/datum/action/item_action/toggle_light
name = "Toggle Light"
@@ -240,7 +242,7 @@
/datum/action/item_action/toggle_welding_screen/plasmaman
name = "Toggle Welding Screen"
/datum/action/item_action/toggle_welding_screen/plasmaman/Trigger()
/datum/action/item_action/toggle_welding_screen/plasmaman/Trigger(left_click)
var/obj/item/clothing/head/helmet/space/plasmaman/H = target
if(istype(H))
H.toggle_welding_screen(owner)
@@ -256,7 +258,7 @@
desc = "Toggles if the club's blasts cause friendly fire."
button_icon_state = "vortex_ff_on"
/datum/action/item_action/toggle_unfriendly_fire/Trigger()
/datum/action/item_action/toggle_unfriendly_fire/Trigger(left_click)
if(..())
UpdateButtonIcon()
@@ -375,7 +377,7 @@
/datum/action/item_action/remove_tape
name = "Remove Duct Tape"
/datum/action/item_action/remove_tape/Trigger(attack_self = FALSE)
/datum/action/item_action/remove_tape/Trigger(left_click, attack_self = FALSE)
if(..())
var/datum/component/ducttape/DT = target.GetComponent(/datum/component/ducttape)
DT.remove_tape(target, usr)
@@ -395,7 +397,7 @@
/datum/action/item_action/toggle_geiger_counter
name = "Toggle Geiger Counter"
/datum/action/item_action/toggle_geiger_counter/Trigger()
/datum/action/item_action/toggle_geiger_counter/Trigger(left_click)
var/obj/item/clothing/head/helmet/space/hardsuit/H = target
if(istype(H))
H.toggle_geiger_counter()
@@ -417,7 +419,7 @@
name = "Toggle Research Scanner"
button_icon_state = "scan_mode"
/datum/action/item_action/toggle_research_scanner/Trigger()
/datum/action/item_action/toggle_research_scanner/Trigger(left_click)
if(IsAvailable())
owner.research_scanner = !owner.research_scanner
to_chat(owner, "<span class='notice'>Research analyzer is now [owner.research_scanner ? "active" : "deactivated"].</span>")
@@ -439,7 +441,7 @@
name = "Use Instrument"
desc = "Use the instrument specified"
/datum/action/item_action/instrument/Trigger()
/datum/action/item_action/instrument/Trigger(left_click)
if(istype(target, /obj/item/instrument))
var/obj/item/instrument/I = target
I.interact(usr)
@@ -472,7 +474,7 @@
name = "Gravity jump"
desc = "Directs a pulse of gravity in front of the user, pulling them forward rapidly."
/datum/action/item_action/gravity_jump/Trigger()
/datum/action/item_action/gravity_jump/Trigger(left_click)
if(!IsAvailable())
return FALSE
@@ -513,7 +515,7 @@
/datum/action/item_action/voice_changer/voice
name = "Set Voice"
/datum/action/item_action/voice_changer/voice/Trigger()
/datum/action/item_action/voice_changer/voice/Trigger(left_click)
if(!IsAvailable())
return FALSE
@@ -567,7 +569,7 @@
S.action = null
return ..()
/datum/action/spell_action/Trigger()
/datum/action/spell_action/Trigger(left_click)
if(!..())
return FALSE
if(target)
@@ -622,7 +624,7 @@
check_flags = 0
var/active = FALSE
/datum/action/innate/Trigger()
/datum/action/innate/Trigger(left_click)
if(!..())
return FALSE
if(!active)
@@ -642,7 +644,7 @@
check_flags = 0
var/procname
/datum/action/generic/Trigger()
/datum/action/generic/Trigger(left_click)
if(!..())
return FALSE
if(target && procname)
+5
View File
@@ -247,6 +247,11 @@
if(!signal_procs[target].len)
signal_procs -= target
/// Registers multiple signals to the same proc.
/datum/proc/RegisterSignals(datum/target, list/signal_types, proctype, override = FALSE)
for(var/signal_type in signal_types)
RegisterSignal(target, signal_type, proctype, override)
/**
* Called on a component when a component of the same type was added to the same parent
*
@@ -66,3 +66,11 @@ GLOBAL_DATUM_INIT(firealarm_soundloop, /datum/looping_sound/firealarm, new(list(
mid_length = 20
end_sound = 'sound/machines/kitchen/grill_end.ogg'
volume = 50
/datum/looping_sound/kinesis
mid_sounds = list('sound/machines/gravgen/gravgen_mid1.ogg' = 1, 'sound/machines/gravgen/gravgen_mid2.ogg' = 1, 'sound/machines/gravgen/gravgen_mid3.ogg' = 1, 'sound/machines/gravgen/gravgen_mid4.ogg' = 1)
mid_length = 1.8 SECONDS
extra_range = 10
volume = 20
falloff_distance = 2
falloff_exponent = 5
+9 -5
View File
@@ -266,16 +266,13 @@
pda = /obj/item/pinpointer
box = /obj/item/storage/box/deathsquad
back = /obj/item/storage/backpack/ert/deathsquad
back = /obj/item/mod/control/pre_equipped/apocryphal
belt = /obj/item/gun/projectile/revolver/mateba
gloves = /obj/item/clothing/gloves/combat
uniform = /obj/item/clothing/under/rank/centcom/deathsquad
shoes = /obj/item/clothing/shoes/magboots/advance
suit = /obj/item/clothing/suit/space/deathsquad
suit_store = /obj/item/gun/energy/pulse
glasses = /obj/item/clothing/glasses/thermal
mask = /obj/item/clothing/mask/gas/sechailer/swat
head = /obj/item/clothing/head/helmet/space/deathsquad
l_pocket = /obj/item/tank/internals/emergency_oxygen/double
r_pocket = /obj/item/reagent_containers/hypospray/combat/nanites
l_ear = /obj/item/radio/headset/alt/deathsquad
@@ -287,7 +284,8 @@
/obj/item/flashlight/seclite,
/obj/item/grenade/plastic/c4/x4,
/obj/item/melee/energy/sword/saber,
/obj/item/shield/energy
/obj/item/shield/energy,
/obj/item/gun/energy/pulse
)
implants = list(
@@ -297,12 +295,15 @@
/datum/outfit/admin/deathsquad_commando/leader
name = "NT Deathsquad Leader"
back = /obj/item/mod/control/pre_equipped/apocryphal/officer
backpack_contents = list(
/obj/item/storage/box/flashbangs,
/obj/item/ammo_box/a357,
/obj/item/flashlight/seclite,
/obj/item/melee/energy/sword/saber,
/obj/item/shield/energy,
/obj/item/gun/energy/pulse,
/obj/item/disk/nuclear/unrestricted
)
@@ -315,6 +316,9 @@
if(istype(I))
apply_to_card(I, H, get_centcom_access("Deathsquad Commando"), "Deathsquad")
H.sec_hud_set_ID()
if(ismodcontrol(H.back))
var/obj/item/mod/control/C = H.back
C.quick_activation()
/datum/outfit/admin/pirate
name = "Space Pirate"
+4
View File
@@ -87,6 +87,10 @@
if(is_type_in_typecache(item_to_retrieve.loc, blacklisted_summons))
break
item_to_retrieve = item_to_retrieve.loc
if(istype(item_to_retrieve, /obj/item/storage/backpack/modstorage))
var/obj/item/storage/backpack/modstorage/bag = item_to_retrieve
if(bag.source && bag.source.mod)
item_to_retrieve = bag.source.mod //Grab the modsuit.
infinite_recursion += 1
+4
View File
@@ -147,6 +147,10 @@
id = "charging"
alert_type = null
/datum/status_effect/impact_immune
id = "impact_immune"
alert_type = null
#define LWAP_LOCK_CAP 10
/datum/status_effect/lwap_scope
+54 -2
View File
@@ -581,8 +581,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
//Space Suits and Hardsuits
/datum/uplink_item/suits
category = "Space Suits and Hardsuits"
surplus = 40
category = "Space Suits and MODsuits"
surplus = 10 //I am setting this to 10 as there are a bunch of modsuit parts in here that should be weighted to 10. Suits and modsuits adjusted below.
/datum/uplink_item/suits/space_suit
name = "Syndicate Space Suit"
@@ -593,7 +593,59 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/storage/box/syndie_kit/space
cost = 4
/datum/uplink_item/suits/thermal
name = "MODsuit Thermal Visor Module"
desc = "A visor for a MODsuit. Lets you see living beings through walls. Also provides night vision."
reference = "MSTV"
item = /obj/item/mod/module/visor/thermal
cost = 3 // Don't forget, you need to get a modsuit to go with this
surplus = 10 //You don't need more than
/datum/uplink_item/suits/night
name = "MODsuit Night Visor Module"
desc = "A visor for a MODsuit. Lets you see clearer in the dark."
reference = "MSNV"
item = /obj/item/mod/module/visor/night
cost = 1 // It's night vision, rnd pumps out those goggles for anyone man.
surplus = 10 //You don't need more than one
/datum/uplink_item/suits/plate_compression
name = "MODsuit Plate Compression Module"
desc = "A MODsuit module that lets the suit compress into a smaller size. Not compatible with storage modules, \
you will have to take that module out first."
reference = "MSPC"
item = /obj/item/mod/module/plate_compression
cost = 2
/datum/uplink_item/suits/noslip
name = "MODsuit Anti-Slip Module"
desc = "A MODsuit module preventing the user from slipping on water. Already installed in the uplink modsuits."
reference = "MSNS"
item = /obj/item/mod/module/noslip
cost = 1
/datum/uplink_item/suits/springlock_module
name = "Heavily Modified Springlock MODsuit Module"
desc = "A module that spans the entire size of the MOD unit, sitting under the outer shell. \
This mechanical exoskeleton pushes out of the way when the user enters and it helps in booting \
up, but was taken out of modern suits because of the springlock's tendency to \"snap\" back \
into place when exposed to humidity. You know what it's like to have an entire exoskeleton enter you? \
This version of the module has been modified to allow for near instant activation of the MODsuit. \
Useful for quickly getting your MODsuit on/off, or for taking care of a target via a tragic accident. \
It is hidden as a DNA lock module. It will block retraction for 10 seconds by default to allow you to follow \
up with smoke, but you can multitool the module to disable that."
reference = "FNAF"
item = /obj/item/mod/module/springlock/bite_of_87
cost = 1
surplus = 10
/datum/uplink_item/suits/hidden_holster
name = "Hidden Holster Module"
desc = "A holster module disguised to look like a tether module. Requires a modsuit to put it in of course. Gun not included."
reference = "HHM"
item = /obj/item/mod/module/holster/hidden
cost = 1
surplus = 10
/datum/uplink_item/device_tools/binary
name = "Binary Translator Key"
+6 -6
View File
@@ -64,10 +64,10 @@
surplus = 40
/datum/uplink_item/dangerous/combat_defib
name = "Combat defibrillator"
desc = "A lifesaving device turned dangerous weapon. Click on someone with the paddles on harm intent to instantly stop their heart. Can be used as a regular defib as well."
name = "Combat Defibrillator Module"
desc = "A lifesaving device turned dangerous weapon. Click on someone with the paddles on harm intent to instantly stop their heart. Can be used as a regular defib as well. Installs in a modsuit."
reference = "CD"
item = /obj/item/defibrillator/compact/combat/loaded
item = /obj/item/mod/module/defibrillator/combat
cost = 12
uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
@@ -498,9 +498,9 @@
// SPACE SUITS
/datum/uplink_item/suits/hardsuit/elite
name = "Elite Syndicate Hardsuit"
desc = "An advanced hardsuit with superior armor and mobility to the standard Syndicate Hardsuit."
item = /obj/item/clothing/suit/space/hardsuit/syndi/elite
name = "Elite Syndicate MODsuit"
desc = "An advanced MODsuit with superior armor and mobility to the standard Syndicate MODsuit."
item = /obj/item/mod/control/pre_equipped/elite
cost = 8
reference = "ESHS"
excludefrom = list()
+16 -5
View File
@@ -439,16 +439,27 @@
cost = 1
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
/datum/uplink_item/suits/hardsuit // Nukies get elite/shielded hardsuit instead
name = "Syndicate Hardsuit"
desc = "The feared suit of a syndicate nuclear agent. Features armor and a combat mode \
/datum/uplink_item/suits/modsuit
name = "Syndicate MODsuit"
desc = "The feared MODsuit of a syndicate nuclear agent. Features armor and a eva mode \
for faster movement on station. Toggling the suit in and out of \
combat mode will allow you all the mobility of a loose fitting uniform without sacrificing armoring. \
Additionally the suit is collapsible, making it small enough to fit within a backpack. Comes packaged with internals. \
Comes packaged with internals. \
Nanotrasen crew who spot these suits are known to panic."
reference = "BRHS"
item = /obj/item/storage/box/syndie_kit/hardsuit
item = /obj/item/storage/box/syndie_kit/modsuit
cost = 6
surplus = 60 //I have upped the chance of modsuits from 40, as I do feel they are much more worthwhile with the base modsuit no longer being 8 tc, and the high armor values of the elite.
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
/datum/uplink_item/suits/modsuit_elite
name = "Syndicate Elite MODsuit"
desc = "An advanced MODsuit with superior armor to the standard Syndicate MODsuit. \
Nanotrasen crew who spot these suits are known to *really* panic."
reference = "MSE"
item = /obj/item/storage/box/syndie_kit/modsuit/elite
cost = 9 //9 to start, no holopara / ebow.
surplus = 60
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
/datum/uplink_item/implants/uplink // Nukies get Nuclear Uplink Bio-chip instead
+63
View File
@@ -0,0 +1,63 @@
/datum/wires/mod
holder_type = /obj/item/mod/control
randomize = TRUE //Every modsuit is personalised
wire_count = 6 // 4 actual, 2 duds
proper_name = "MOD control unit"
window_x = 345
window_y = 90
/datum/wires/mod/New(atom/holder)
wires = list(WIRE_HACK, WIRE_DISABLE, WIRE_ELECTRIFY, WIRE_INTERFACE)
..()
/datum/wires/mod/interactable(mob/user)
if(!..())
return FALSE
var/obj/item/mod/control/mod = holder
if(mod.seconds_electrified && mod.shock(user))
return FALSE
return mod.open
/datum/wires/mod/get_status()
var/obj/item/mod/control/mod = holder
var/list/status = list()
status += "The orange light is [mod.seconds_electrified ? "on" : "off"]."
status += "The red light is [mod.malfunctioning ? "off" : "blinking"]."
status += "The green light is [mod.locked ? "on" : "off"]."
status += "The yellow light is [mod.interface_break ? "off" : "on"]."
return status
/datum/wires/mod/on_pulse(wire)
var/obj/item/mod/control/mod = holder
switch(wire)
if(WIRE_HACK)
mod.locked = !mod.locked
if(WIRE_DISABLE)
mod.malfunctioning = TRUE
if(WIRE_ELECTRIFY)
mod.seconds_electrified = 30
if(WIRE_INTERFACE)
mod.interface_break = !mod.interface_break
/datum/wires/mod/on_cut(wire, mend)
var/obj/item/mod/control/mod = holder
switch(wire)
if(WIRE_HACK)
if(!mend)
mod.req_access = list()
if(WIRE_DISABLE)
mod.malfunctioning = !mend
if(WIRE_ELECTRIFY)
if(mend)
mod.seconds_electrified = 0
else
mod.seconds_electrified = -1
if(WIRE_INTERFACE)
mod.interface_break = !mend
/datum/wires/mod/ui_act(action, params)
var/obj/item/mod/control/mod = holder
if(!issilicon(usr) && mod.seconds_electrified && mod.shock(usr))
return FALSE
return ..()
+12
View File
@@ -480,3 +480,15 @@
/datum/wires/proc/is_attached(color)
if(assemblies[color])
return TRUE
/// Use this proc if you want wires to be pulsed on EMP
/datum/wires/proc/emp_pulse()
var/list/possible_wires = shuffle(wires)
var/remaining_pulses = 3
for(var/wire in possible_wires)
if(prob(33))
pulse(wire)
remaining_pulses--
if(!remaining_pulses)
break