Skip to content
Open
Show file tree
Hide file tree
Changes from 70 commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
74afd1d
wingman
liermattia Jan 12, 2025
3238598
this is either the most stupid idea ever or an all timer
liermattia Jan 16, 2025
9386a96
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Feb 22, 2025
7abf68e
turns out it was really dumb but we can salvage this
liermattia Feb 22, 2025
09d3de0
cooling unit beginning
liermattia Mar 3, 2025
8fa0cdd
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Mar 6, 2025
803c78a
shadows on the walls
liermattia Mar 11, 2025
6785c80
bishop internal pda and ranged interact (it's probably shitcode)
liermattia Mar 23, 2025
09a4d27
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Apr 6, 2025
00a4da3
not entirely sold on damage this diversified
liermattia Apr 6, 2025
17bcfec
that temperature code's gonna be the death of me
liermattia Apr 6, 2025
5a03090
cooling unit v1
liermattia Apr 9, 2025
d11a1fc
cooling unit v2
liermattia Apr 9, 2025
9515899
final cooling unit work, synthetic internals update, plating update, …
liermattia Apr 18, 2025
dc7b3f3
more stuff
liermattia Apr 18, 2025
694e35f
i swear this is probably the final tweak to the cooling unit
liermattia Apr 18, 2025
9aac5a5
quality pass
liermattia Apr 18, 2025
a406aaf
oh right, we don't use that anymore
liermattia Apr 18, 2025
c9065ee
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Apr 18, 2025
f08593e
lint
liermattia Apr 18, 2025
e22af12
power unit v1 and preset refactor
liermattia Apr 29, 2025
f4d5d27
make it compile and change a few things
liermattia Apr 29, 2025
68c4ba7
superfluous code removal
liermattia Apr 29, 2025
86e97f2
surge protector define
liermattia Apr 29, 2025
2b28a6d
power core v2
liermattia May 2, 2025
9404f73
weight, reactor updates
liermattia May 7, 2025
1cf678b
internal storage, bio reactor
liermattia May 13, 2025
d8af630
bioreactor fixes
liermattia May 15, 2025
238781d
some more cleanup
liermattia May 15, 2025
d7ad71f
safeties, beginning of posibrain code (temperature as damage?)
liermattia May 18, 2025
4f8c4ad
standardize probabilities, cooling unit update
liermattia May 19, 2025
0e691e7
access ports part 1
liermattia May 23, 2025
a6893a9
porting cm tethers would've been easier but i like a challenge
liermattia May 24, 2025
cc69896
part 1 of actually using access cable (it's kinda shit)
liermattia May 28, 2025
bc1da0e
yeah okay that's probably better
liermattia May 28, 2025
70547c4
rewrite access cable code for the 17th time
liermattia May 30, 2025
f9adbe6
a surprise span that will help us later
liermattia May 30, 2025
fe630a1
uuuuuuugh
liermattia Jun 7, 2025
9d52a46
resist and disorder
liermattia Jun 7, 2025
c8c6d30
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Jun 7, 2025
3fd4ed4
lint
liermattia Jun 7, 2025
1147911
cleanup part one
liermattia Jun 7, 2025
9d4fe87
pfffgdfgfdggfd
liermattia Jun 8, 2025
8836f3a
fixes
liermattia Jun 9, 2025
340fad4
Ports CM's langchat to replace floating chat.
liermattia Jun 9, 2025
f407467
stuff
liermattia Jun 12, 2025
a70232c
cl
liermattia Jun 12, 2025
ff8c6b6
add screen text
liermattia Jun 13, 2025
d39f923
remove looc
liermattia Jun 13, 2025
040630a
Merge remote-tracking branch 'Aurora/master' into langchat
liermattia Jun 23, 2025
3eef3ed
fix whispers probably
liermattia Jul 3, 2025
b484ba2
fix the Comically Large Asterisk
liermattia Jul 3, 2025
b629792
my dopamine's all gone because of you
liermattia Jul 6, 2025
d719206
world on fire
liermattia Jul 6, 2025
af3153a
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Jul 6, 2025
4f19362
almost there
liermattia Jul 6, 2025
ce2579b
pt 2
liermattia Jul 6, 2025
ced79f9
final placeholder
liermattia Jul 7, 2025
d3b1e0b
fix it
liermattia Jul 7, 2025
1a30c2f
Merge branch 'langchat' into whereabouts_of_the_heart
liermattia Jul 7, 2025
bc43a76
some fixees
liermattia Jul 7, 2025
f486eee
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Jul 11, 2025
ebc3094
finish line
liermattia Jul 12, 2025
048f6b0
update that value before i forget
liermattia Jul 12, 2025
a358956
fool or sage
liermattia Jul 12, 2025
af1a6d2
funny message
liermattia Jul 12, 2025
2b3a6dc
compile
liermattia Jul 13, 2025
d689a90
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Jul 13, 2025
f592e1a
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Jul 25, 2025
d120f97
holy fuck this thing is ASS
liermattia Jul 26, 2025
e7612cf
parade
liermattia Jul 27, 2025
209879d
a lot of Stuff
liermattia Jul 27, 2025
d3cf5ad
hell is over
liermattia Jul 28, 2025
890ae42
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Jul 28, 2025
6801a2e
virtual communication, sounds, fragmentation
liermattia Jul 28, 2025
a271489
sss
liermattia Jul 30, 2025
4447e77
better solution
liermattia Jul 30, 2025
ca6d1d5
yeppp
liermattia Jul 30, 2025
8f36564
so close i can taste it
liermattia Jul 30, 2025
9556f6b
that's most things done
liermattia Aug 1, 2025
afef189
the optable probably works now
liermattia Aug 1, 2025
fc42a89
relative sizes
liermattia Aug 5, 2025
5c4238f
oops
liermattia Aug 6, 2025
40305d3
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Aug 6, 2025
9194970
why isn-t this working
liermattia Aug 6, 2025
25a827a
and i dreamed of being braver
liermattia Aug 6, 2025
8700944
robot pain is real
liermattia Aug 9, 2025
1330873
stuff
liermattia Aug 10, 2025
9cf4e80
it could be that maybe?
liermattia Aug 10, 2025
7fd9019
dssddsds
liermattia Aug 10, 2025
3af9299
rly
liermattia Aug 10, 2025
a56ac2f
maybe fixes that
liermattia Aug 10, 2025
1d964e0
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Aug 10, 2025
fb8ff7a
merg
liermattia Aug 10, 2025
1fd4feb
fixes again
liermattia Aug 10, 2025
feda3c9
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Aug 11, 2025
7c10abf
more sounds
liermattia Aug 11, 2025
7232758
stuff
liermattia Aug 11, 2025
73ffd44
Brain Scrambling
Geevies Aug 11, 2025
f34c64e
Merge pull request #30 from Geevies/weird_eyes
NonQueueingMatt Aug 11, 2025
3725713
Custom Prosthesis Fix
Geevies Aug 11, 2025
983ecad
indent
liermattia Aug 11, 2025
52447cc
Merge pull request #31 from Geevies/custom_prosthesis_fix
NonQueueingMatt Aug 11, 2025
1064425
emp tweaks
liermattia Aug 11, 2025
65369ee
we're here
liermattia Aug 11, 2025
5856c3a
max damage for organs
liermattia Aug 12, 2025
1cc98b3
burst dmg tweak
liermattia Aug 12, 2025
acbf62f
few fixes
liermattia Aug 12, 2025
7469bfc
action buttons
liermattia Aug 12, 2025
0b9ee74
fuck this shit ass fucking code fuck you whoever wrote this in 2013 f…
liermattia Aug 12, 2025
1298d3e
the ghost of christmas past
liermattia Aug 12, 2025
30a9d48
mechfab no sync button
liermattia Aug 12, 2025
20e8baf
industrial sec
liermattia Aug 12, 2025
59559a4
fixes
liermattia Aug 12, 2025
d6dca65
rebalance
liermattia Aug 12, 2025
c9b74e5
temperature
liermattia Aug 12, 2025
95921df
whoops
liermattia Aug 12, 2025
239f52d
emp nerf
liermattia Aug 12, 2025
71409ff
more fixes
liermattia Aug 12, 2025
90ea0aa
power fixes
liermattia Aug 12, 2025
76ab279
G1 fix, cable inside backpackf ix, cyborg fix, machineryc hair beam fix
liermattia Aug 13, 2025
78749a5
several fixes to do with damage and cooling
liermattia Aug 13, 2025
573c6f8
fix cooling once and for all
liermattia Aug 13, 2025
462bac0
i'm not throwin ones, fives or even twennies
liermattia Aug 13, 2025
0cc22f5
actually fix it
liermattia Aug 13, 2025
274a945
fix it again
liermattia Aug 13, 2025
59a2491
g1 storage fix
liermattia Aug 13, 2025
3b46533
hotfix for carrier burning
liermattia Aug 13, 2025
35ea65b
move fragmentation sound
liermattia Aug 13, 2025
2de6375
compilemoment
liermattia Aug 13, 2025
990b7cf
whatever i didn't like that soundanyway
liermattia Aug 13, 2025
e559ba5
the cooking update
liermattia Aug 14, 2025
ac68618
ssdsd
liermattia Aug 14, 2025
b13bb09
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Aug 14, 2025
6b1deac
fix the cooling unit once and for all
liermattia Aug 15, 2025
0d53362
bio-reactor degunking, solar power fixes
liermattia Aug 15, 2025
a30eddb
solar fixes
liermattia Aug 15, 2025
eef612f
update to the solar charge
liermattia Aug 15, 2025
419ee9c
fix the warning
liermattia Aug 15, 2025
6ec20ff
Merge branch 'master' into whereabouts_of_the_heart
Arrow768 Aug 16, 2025
beec6e7
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Aug 22, 2025
b54492d
synth armor + subspecies adjustments + rel_size
liermattia Aug 22, 2025
7162ed5
fix the mechfab probably for real
liermattia Aug 22, 2025
e5d59fc
a lot of life/posibrain/emp tweaks
liermattia Aug 22, 2025
c09af70
is this arcadia?
liermattia Aug 23, 2025
e7ad450
fix a lot of stuff
liermattia Aug 25, 2025
91c7074
fix xions dying in space
liermattia Aug 30, 2025
68e731c
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Aug 30, 2025
29431ba
temporary event fix
liermattia Aug 30, 2025
d34477e
more event fixes
liermattia Aug 30, 2025
3a51874
fix the hardsuit coolig unit and cap temperature in some places
liermattia Sep 3, 2025
7abe9cf
fixes 2
liermattia Sep 3, 2025
a5a834c
probably fix integrity damage weirdness
liermattia Sep 4, 2025
f4d6b00
experimental damage things
liermattia Sep 4, 2025
251a27e
some more changes
liermattia Sep 4, 2025
2ef3447
fixes again
liermattia Sep 4, 2025
eeb1ccc
moooore changes
liermattia Sep 4, 2025
4561df2
ok stop here for now
liermattia Sep 4, 2025
e2fa2e6
i want to go to bed
liermattia Sep 4, 2025
72a306b
TODO fix posibrain death and finish this FUCKING computer
liermattia Sep 9, 2025
c9fba75
and do that before i forget
liermattia Sep 9, 2025
2586f55
Merge remote-tracking branch 'Aurora/master' into whereabouts_of_the_…
liermattia Oct 6, 2025
c843fb8
it begins again
liermattia Oct 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 30 additions & 1 deletion aurorastation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@
#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_movement.dm"
#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_x_act.dm"
#include "code\__DEFINES\dcs\signals\signals_atom\signals_power_cell.dm"
#include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_human.dm"
#include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_living.dm"
#include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_main.dm"
#include "code\__DEFINES\dcs\signals\signals_object\signals_object.dm"
Expand Down Expand Up @@ -471,7 +472,8 @@
#include "code\datums\components\drift.dm"
#include "code\datums\components\local_network.dm"
#include "code\datums\components\orbiter.dm"
#include "code\datums\components\armor\armor.dm"
#include "code\datums\components\armor\_armor.dm"
#include "code\datums\components\armor\synthetic_armor.dm"
#include "code\datums\components\base_name\base_name.dm"
#include "code\datums\components\eye\_eye.dm"
#include "code\datums\components\eye\blueprints.dm"
Expand Down Expand Up @@ -564,6 +566,10 @@
#include "code\datums\scenarios\scenario.dm"
#include "code\datums\state_machine\state.dm"
#include "code\datums\state_machine\transition.dm"
#include "code\datums\synthetic_internals\_synthetic_internals.dm"
#include "code\datums\synthetic_internals\electronics.dm"
#include "code\datums\synthetic_internals\plating.dm"
#include "code\datums\synthetic_internals\wiring.dm"
#include "code\datums\tips\tips.dm"
#include "code\datums\trading\_trading_defines.dm"
#include "code\datums\trading\ai.dm"
Expand Down Expand Up @@ -2986,6 +2992,7 @@
#include "code\modules\modular_computers\hardware\portable_hard_drive_presets.dm"
#include "code\modules\modular_computers\hardware\processor_unit.dm"
#include "code\modules\modular_computers\hardware\tesla_link.dm"
#include "code\modules\modular_computers\hardware\universal_port.dm"
#include "code\modules\modular_computers\items\paper_scanner.dm"
#include "code\modules\modular_computers\NTNet\NTNet.dm"
#include "code\modules\modular_computers\NTNet\NTNet_relay.dm"
Expand Down Expand Up @@ -3041,6 +3048,26 @@
#include "code\modules\organs\internal\species\tajara.dm"
#include "code\modules\organs\internal\species\unathi.dm"
#include "code\modules\organs\internal\species\vaurca.dm"
#include "code\modules\organs\internal\species\machine\_generic.dm"
#include "code\modules\organs\internal\species\machine\_presets.dm"
#include "code\modules\organs\internal\species\machine\access_port.dm"
#include "code\modules\organs\internal\species\machine\actuators.dm"
#include "code\modules\organs\internal\species\machine\cooling_unit.dm"
#include "code\modules\organs\internal\species\machine\cooling_unit_presets.dm"
#include "code\modules\organs\internal\species\machine\data_core.dm"
#include "code\modules\organs\internal\species\machine\hydraulics.dm"
#include "code\modules\organs\internal\species\machine\internal_diagnostics.dm"
#include "code\modules\organs\internal\species\machine\internal_storage.dm"
#include "code\modules\organs\internal\species\machine\ipc_tag.dm"
#include "code\modules\organs\internal\species\machine\optical_sensor.dm"
#include "code\modules\organs\internal\species\machine\posibrain.dm"
#include "code\modules\organs\internal\species\machine\power_core.dm"
#include "code\modules\organs\internal\species\machine\reactor.dm"
#include "code\modules\organs\internal\species\machine\reactor_presets.dm"
#include "code\modules\organs\internal\species\machine\surge_protector.dm"
#include "code\modules\organs\internal\species\machine\targeting_core.dm"
#include "code\modules\organs\internal\species\machine\voice_synthesizer.dm"
#include "code\modules\organs\internal\species\machine\wireless_access.dm"
#include "code\modules\organs\subtypes\autakh.dm"
#include "code\modules\organs\subtypes\diona.dm"
#include "code\modules\organs\subtypes\industrial.dm"
Expand Down Expand Up @@ -3746,6 +3773,8 @@
#include "code\modules\tgui\modules\armor_values.dm"
#include "code\modules\tgui\modules\flavor_text.dm"
#include "code\modules\tgui\modules\hivenet_manifest.dm"
#include "code\modules\tgui\modules\ipc_diagnostic.dm"
#include "code\modules\tgui\modules\neural_configuration.dm"
#include "code\modules\tgui\states\admin.dm"
#include "code\modules\tgui\states\always.dm"
#include "code\modules\tgui\states\conscious.dm"
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/dcs/signals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@
#define COMSIG_ITEM_UPDATE_STATE "update_state"
/// updates sprites
#define COMSIG_ITEM_ICON_UPDATE "icon_update"
/// when a gun mag is emptied
#define COMSIG_EMPTIED_MAGAZINE "emptied_magazine"

// tgui signals
#define COMSIG_TGUI_CLOSE "tgui_close"
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/dcs/signals/signals_mob/signals_mob_human.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
///from datum/species/machine/handle_sprint_cost()
#define COMSIG_IPC_HAS_SPRINTED "ipc_sprinted"
57 changes: 57 additions & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,23 @@
#define BP_CELL "cell"
#define BP_OPTICS "optics"
#define BP_IPCTAG "ipc tag"
#define BP_REACTOR "reactor"
#define BP_VOICE_SYNTHESIZER "voice synthesizer"
#define BP_DIAGNOSTICS_SUITE "internal diagnostics suite"
#define BP_HYDRAULICS "hydraulics system"
#define BP_COOLING_UNIT "cooling unit"
#define BP_ACCESS_PORT "universal access portt"
#define BP_ACTUATORS_LEFT "left arm actuators"
#define BP_ACTUATORS_RIGHT "right arm actuators"
#define BP_SURGE_PROTECTOR "surge"
#define BP_DATACORE "data core"
#define BP_TARGETING_CORE "targeting core"

// Bishop frame only.
#define BP_WIRELESS_ACCESS "wireless access point"

// G2 frame only.
#define BP_INTERNAL_STORAGE "internal storage system"

// Parasite organs
#define BP_ZOMBIE_PARASITE "black tumour"
Expand Down Expand Up @@ -283,6 +300,24 @@
#define MOB_TINY 4
#define MOB_MINISCULE 1

// Mob weight, separate from mob size. Affects how easy a mob is to lift.
/// Light mobs, can be lifted by anyone.
#define MOB_WEIGHT_LIGHT 1
/// Medium weight mobs, the default for humanoids. Can be lifted by medium+.
#define MOB_WEIGHT_MEDIUM 2
/// Heavy mobs. They need speecial equipment or a heavy+ mob to lift.
#define MOB_WEIGHT_HEAVY 3
/// Superheavy mobs. Gonna need a lot of help with those.
#define MOB_WEIGHT_SUPERHEAVY 4

// Mob strength. This allows us to represent stronger mobs with a bit more granularity. Robots should be stronger than normal people. A bonus to the checks on lifting/throwing mobs, essentially.
/// A normal mob, basically. Does not get us any buffs.
#define MOB_STRENGTH_NORMAL 0
/// A strong mob. Small bonus.
#define MOB_STRENGTH_STRONG 1
/// A very strong mob. Big bonus.
#define MOB_STRENGTH_VERY_STRONG 2

#define BASE_MAX_NUTRITION 600
#define HUNGER_FACTOR 0.04 // Factor of how fast mob nutrition decreases over time.

Expand Down Expand Up @@ -552,3 +587,25 @@
#define DO_MISSING_TARGET (-2)
#define DO_INCAPACITATED (-3)
#define DO_EXTRA_CHECKS (-4)

// Threshold defines for integrity damage. Used for when you want to check for a specific threshold to do damage effects.

#define IPC_INTEGRITY_THRESHOLD_LOW 75
#define IPC_INTEGRITY_THRESHOLD_MEDIUM 50
#define IPC_INTEGRITY_THRESHOLD_HIGH 25
#define IPC_INTEGRITY_THRESHOLD_VERY_HIGH 10

// These are the power supply organ defines.
// They are bitflags because it should be technically possible to have a power supply do multiple things at once if you wish.
// Just be wary of balancing issues.

/// The default functioning of a power reactor. Externally powered only. Allows recharging from APCs. Has a multiplier for faster recharging from power stations.
#define POWER_SUPPLY_ELECTRIC 1
/// Recharges by walking/running. Far slower at charging from external sources.
#define POWER_SUPPLY_KINETIC 2
/// Recharges through consuming nutrients/food. Slower at recharging from external sources.
#define POWER_SUPPLY_BIOLOGICAL 4
/// Recharges from external lighting. Slower at recharging from external sources.
#define POWER_SUPPLY_SOLAR 8


16 changes: 16 additions & 0 deletions code/__DEFINES/prefs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,19 @@
/// Internal organ. Removed, used for appendixes.
#define ORGAN_PREF_REMOVED "removed"
/// Note that a "normal" limb or organ has no pref, so there's no define for it.

/// Air cooling. Technically not used, but we need this for the linked lists in cooling_unit.dm.
#define ORGAN_PREF_AIRCOOLED "air"
/// Liquid cooling. For IPC cooling units. Default is air cooling.
#define ORGAN_PREF_LIQUIDCOOLED "liquid"
/// Passive cooling. For IPC cooling units. Default is air cooling.
#define ORGAN_PREF_PASSIVECOOLED "passive"

/// Externally powered only. Technically not used, but we need this for the linked lists in reactor.dm.
#define ORGAN_PREF_ELECTRICPOWER "electric"
/// Biological power reactor. Nutrients, food, etc.
#define ORGAN_PREF_BIOPOWER "biological"
/// Kinetic power reactor. Walking, running.
#define ORGAN_PREF_KINETICPOWER "kinetic"
/// Solar powered. Stand in the sun. Or LED lights. It's the future, fuck you.
#define ORGAN_PREF_SOLARPOWER "solar"
4 changes: 4 additions & 0 deletions code/__DEFINES/span.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
#define SPAN_CAUTION(str) ("<span class='caution'>" + str + "</span>")
#define SPAN_STORYTELLER(str) ("<span class='storyteller'>" + str + "</span>")

#define SPAN_MACHINE_WARNING(str) ("<span class='machine-warning'>" + str + "</span>")
#define SPAN_MACHINE_DANGER(str) ("<span class='machine-danger'>" + str + "</span>")
#define SPAN_MACHINE_VISION(str) ("<span class='machine-vision'>" + str + "</span>")

#define SPAN_RED(str) "<span style='color:[COLOR_RED]'>[str]</span>"
#define SPAN_YELLOW(str) "<span style='color:[COLOR_YELLOW]'>[str]</span>"
#define SPAN_GREEN(str) "<span style='color:[COLOR_GREEN]'>[str]</span>"
Expand Down
2 changes: 0 additions & 2 deletions code/__DEFINES/species.dm
Original file line number Diff line number Diff line change
Expand Up @@ -140,5 +140,3 @@
SPECIES_IPC_UNBRANDED, SPECIES_IPC_UNBRANDED_REMOTE, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, \
SPECIES_IPC_SHELL_ROGUE, SPECIES_IPC_XION_REMOTE, SPECIES_IPC_PURPOSE_HK, \
)


1 change: 1 addition & 0 deletions code/_globalvars/lists/mobs.dm
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup)
GLOBAL_LIST_INIT(low_integrity_messages, world.file2list("config/synthetic_messages/low_integrity_messages.txt"))
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,11 @@
key = RAD
return key

// Used for natural armor for species.
/datum/component/armor/natural
full_block_message = "Your natural armor blocks the blow!"
partial_block_message = "Your natural armor softens the blow!"

/datum/component/armor/toggle
var/active = TRUE

Expand Down
60 changes: 60 additions & 0 deletions code/datums/components/armor/synthetic_armor.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// An edit of ablative armor, taken from Baystation12.
/datum/component/armor/synthetic
full_block_message = "Your external plating absorbs the blow!"
partial_block_message = "Your external plating dulls the blow!"

/// Maximum armor values.
var/list/max_armor_values
/// How fast armor degrades with blocked damage, with armor value reduced by [coef * damage taken]
var/armor_degradation_coef = 0.8
/// Wearer feedback.
var/list/last_reported_damage

/datum/component/armor/synthetic/Initialize(list/armor, armor_type, _armor_degradation_speed)
. = ..()
max_armor_values = armor_values.Copy()
if(_armor_degradation_speed)
armor_degradation_coef = _armor_degradation_speed

/datum/component/armor/synthetic/on_blocking(damage, damage_type, damage_flags, armor_pen, blocked)
if (!(damage_type == DAMAGE_BRUTE || damage_type == DAMAGE_BURN))
return
if(armor_degradation_coef)
var/key = get_armor_key(damage_type, damage_flags)
var/damage_taken
if(blocked)
damage_taken = round(damage * blocked)
else
damage_taken = damage
var/new_armor = max(0, get_value(key) - armor_degradation_coef * damage_taken)
set_value(key, new_armor)
var/mob/M = parent
if(istype(M))
var/list/visible = get_visible_damage()
for(var/k in visible)
if(LAZYACCESS(last_reported_damage, k) != visible[k])
LAZYSET(last_reported_damage, k, visible[k])
to_chat(M, SPAN_WARNING("Your external plating has [visible[k]] damage now!"))

/datum/component/armor/synthetic/proc/get_damage()
for(var/key in armor_values)
var/damage = max_armor_values[key] - armor_values[key]
if(damage > 0)
LAZYSET(., key, damage)

/datum/component/armor/synthetic/proc/get_visible_damage()
var/list/damages = get_damage()
if(!LAZYLEN(damages))
return
var/result = list()
for(var/key in damages)
switch(round(100 * damages[key]/max_armor_values[key]))
if(5 to 10)
result[key] = "minor"
if(11 to 25)
result[key] = "moderate"
if(26 to 50)
result[key] = "serious"
if(51 to 100)
result[key] = "catastrophic"
return result
2 changes: 1 addition & 1 deletion code/datums/outfits/outfit_antag.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
U.hidden_uplink.bluecrystals = round(uplink_uses / 2)
U.hidden_uplink.tgui_menu = 1
if(isipc(H))
var/obj/item/organ/internal/ipc_tag/tag = H.internal_organs_by_name[BP_IPCTAG]
var/obj/item/organ/internal/machine/ipc_tag/tag = H.internal_organs_by_name[BP_IPCTAG]
if(istype(tag))
tag.modify_tag_data(TRUE)

Expand Down
2 changes: 1 addition & 1 deletion code/datums/repositories/crew.dm
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ GLOBAL_DATUM_INIT(crew_repository, /datum/repository/crew, new())
crewmemberData["pulse"] = H.get_pulse(GETPULSE_TOOL)
else
if(isipc(H) && H.internal_organs_by_name[BP_IPCTAG]) // Don't make untagged IPCs obvious
var/obj/item/organ/internal/cell/cell = H.internal_organs_by_name[BP_CELL]
var/obj/item/organ/internal/machine/power_core/cell = H.internal_organs_by_name[BP_CELL]
if(cell)
crewmemberData["cellCharge"] = cell.percent()

Expand Down
73 changes: 73 additions & 0 deletions code/datums/synthetic_internals/_synthetic_internals.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// Synthetic internals represent things that are not physically modelled as an organ, but are rather part of the organ.
// That means wiring, plating, and electronics. Damaging organs has adverse effects on these components.
// The goal is to emulate damaging effects similar to arterial bleeding, infections, etc. on organics.

// The specific effects of each synthetic internal can vary organ by organ. They all have different health measurements as well.
// These measurements can change depending on the organ they are attached to.

/datum/synthetic_internal
/// The name of the internal component. Shows up in analysis tools.
var/name = "default synthetic internal"
/// The description. Shows up in analysis tools.
var/desc = "A default synthetic internal component."
/// The organ this synthetic internal belongs to.
var/obj/item/organ/internal/machine/organ

/datum/synthetic_internal/New(obj/item/organ/internal/machine/attached_organ)
. = ..()
if(istype(attached_organ))
if(isipc(attached_organ.owner))
organ = attached_organ
else
LOG_DEBUG("Synthetic internal [type] generated on organ [attached_organ] with invalid owner [attached_organ.owner]. Aborting.")
qdel(src)
else
LOG_DEBUG("Synthetic internal [type] generated on invalid organ [attached_organ]. Aborting.")
qdel(src)

/datum/synthetic_internal/Destroy(force)
organ = null
return ..()

/**
* The proc that handles taking damage. As some components take damage differently,
* this is overridden by them.
*/
/datum/synthetic_internal/proc/take_damage(amount)
return

/**
* The proc that handles restoring damage. As some components restore damage differently,
* this is overridden by them.
*/
/datum/synthetic_internal/proc/heal_damage(amount)
return

/**
* This proc returns the status of this synthetic internal as a percentage.
* It will return 100 if the component is 100% healthy, a value between 0 and 100 if not, and 0 if broken.
* This logic can be overridden for custom behaviour.
*/
/datum/synthetic_internal/proc/get_status()
return

/**
* This proc returns the status of this internal component, but imprecisely.
* Basically what could be obvious at an eye-glance.
*/
/datum/synthetic_internal/proc/analyse_integrity_imprecise()
return

/**
* This proc returns the status of this internal component, but precisely.
* Basically the results of an in-depth analysis with an appropriate tool.
*/
/datum/synthetic_internal/proc/analyze_integrity_precise()
return

/**
* Replaces the health by setting a new max health and setting the health to the new max_health value.
* Needs to be overridden on every subtype.
*/
/datum/synthetic_internal/proc/replace_health(new_max_health)
return
20 changes: 20 additions & 0 deletions code/datums/synthetic_internals/electronics.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// The synthetic's electronics. Represents both the hardware and software component.
// The integrity of electronics only goes from 0% to 100%. It does not vary, unlike other components.

/datum/synthetic_internal/electronics
name = "internal electronics"
desc = "The electronics and the code responsible for many internal functions."
/// The maximum integrity percentage of the internals. Represents code coherence and physical damage.
var/max_integrity = 100
/// The integrity of the internals in percentage. Represents code coherence and physical damage.
var/integrity = 100

/datum/synthetic_internal/electronics/get_status()
return (integrity / max_integrity) * 100

/datum/synthetic_internal/electronics/take_damage(amount)
// Integrity is really slow to damage. Hacking does a way better job than just shooting the thing.
integrity = max(integrity - (amount * 0.75), 0)

/datum/synthetic_internal/electronics/heal_damage(amount)
integrity = min(integrity + amount, max_integrity)
Loading
Loading