Tg patch branch to master (#192)

* code nitpicking

* Midnight oil

More like 6am oil.  Still having issues with actually eating anyone.

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* missed commit

* Noms

* specific release doesn't work

* Tg modernization patch (#115)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* port from cactus did

* fix format error

* Update preferences.dm

unfuck

* Revert "port from cactus did"

* unfuck

* more sprite work

* vore

* disabled roundstart xenos for now

* admin QOL

needs callback porting, TBD

* Mentor system initial port

I'm sure I've missed a fuckton of shit

* test merge

* Jesus tits did this finally fix compile issues?

* Tg modern (#149)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* Tg modernization patch (#115)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* port from cactus did

* fix format error

* Update preferences.dm

unfuck

* Revert "port from cactus did"

* unfuck

* more sprite work

* vore

* disabled roundstart xenos for now

* test merge

* Jesus tits did this finally fix compile issues?

* Initial test compiles. hooray.

* Admin ticket fixes

* I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum

* who list wip

also ahelps are broken again. fuck if I know why

* discord bot basics

* maybe tickets work now & bot framework done

* ahelp callback readd

* Mentor system, Tickets, and discord (#151)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* Tg modernization patch (#115)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* port from cactus did

* fix format error

* Update preferences.dm

unfuck

* Revert "port from cactus did"

* unfuck

* more sprite work

* vore

* disabled roundstart xenos for now

* admin QOL

needs callback porting, TBD

* Mentor system initial port

I'm sure I've missed a fuckton of shit

* test merge

* Jesus tits did this finally fix compile issues?

* Initial test compiles. hooray.

* Admin ticket fixes

* I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum

* who list wip

also ahelps are broken again. fuck if I know why

* discord bot basics

* maybe tickets work now & bot framework done

* ahelp callback readd

* vore tweaks

* progress

* dirtier fix than a korean hooker in the 60s

* The release your hooker will always fake

* you could save that hookers number but wouldn't you rather just vore the hooker instead

* Save system is literal black magic

* great googly moogly it's all gone to shit

* We May 2015 save code now

* fiddling with digestion code now

* fuck if I know anymore. I'm going to bed

* OWN UP YOUR OWN DIGESTION

* UNREGULATED GUTS ARE NON COMPLIANT

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

* BELLIES MUST COMPLY WITH USER OWNERSHIP

* Removed debug messages

* Unneeded verb additions

* file change tweaks

* WATCH YOUR SPACING, DRIVER

* Changelog and devourment for some mobs.

Because I knew people were gunna ask.

NO YOU CANNOT EAT THE FUCKING LEGION

* Vore code sync (#157)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Escape and Devourable

For the normies who play here yet complain about it.

* Things that should be committed

* unneeded files

* Sizeray works now

* tweaks and bed time going

* IT WORKS mostly

Need to get multiple guts and saving working tho

* save tweaks

* item hotfix

* gut examine message

* damifino

* save system works

also ensured some mobs have vore controls, so silicons can't even
remotely do vore things.

* code nitpicking

* Midnight oil

More like 6am oil.  Still having issues with actually eating anyone.

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* missed commit

* Noms

* specific release doesn't work

* Tg modernization patch (#115)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* port from cactus did

* fix format error

* Update preferences.dm

unfuck

* Revert "port from cactus did"

* unfuck

* more sprite work

* vore

* disabled roundstart xenos for now

* admin QOL

needs callback porting, TBD

* Mentor system initial port

I'm sure I've missed a fuckton of shit

* test merge

* Jesus tits did this finally fix compile issues?

* Initial test compiles. hooray.

* Admin ticket fixes

* I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum

* who list wip

also ahelps are broken again. fuck if I know why

* discord bot basics

* maybe tickets work now & bot framework done

* ahelp callback readd

* vore tweaks

* progress

* dirtier fix than a korean hooker in the 60s

* The release your hooker will always fake

* you could save that hookers number but wouldn't you rather just vore the hooker instead

* Save system is literal black magic

* great googly moogly it's all gone to shit

* We May 2015 save code now

* fiddling with digestion code now

* fuck if I know anymore. I'm going to bed

* OWN UP YOUR OWN DIGESTION

* UNREGULATED GUTS ARE NON COMPLIANT

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

* BELLIES MUST COMPLY WITH USER OWNERSHIP

* Removed debug messages

* Unneeded verb additions

* file change tweaks

* WATCH YOUR SPACING, DRIVER

* Changelog and devourment for some mobs.

Because I knew people were gunna ask.

NO YOU CANNOT EAT THE FUCKING LEGION

* title screen change from Crow's PR.

* More of Crow's title screen stuff

* mode tweaks.... again

* gamemode voting in lobby via TalkingCactus
disabled ashwalkers as roundstart
Verk's species tweak
paralax starts disabled by default

* LOOC

* index sync problem (#158)

* digifix

* things

* furry races.dm

* actually deletes species_types

* maps

* tgui and stuff

* Sounds

* icon updates

* Defines and helpers

* global vars and on click

* controllers

* datums

* game folder

* fixes invisible flan mobs

* some modules

* dropbomb verb enhanced

* moar

* moar

* moar

* even more again

* and finally these for modules

* Some compile tweaks

* silly dme get updated you scrub

* compiles cleanly now

* various open PR fixes from TG

as of 0800 Texas Standard Time

* also fancy cryopods before I forget again

* headslug gold core fix

* edgy code of the modernization (#164)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Escape and Devourable

For the normies who play here yet complain about it.

* Things that should be committed

* unneeded files

* Sizeray works now

* tweaks and bed time going

* IT WORKS mostly

Need to get multiple guts and saving working tho

* save tweaks

* item hotfix

* gut examine message

* damifino

* save system works

also ensured some mobs have vore controls, so silicons can't even
remotely do vore things.

* code nitpicking

* Midnight oil

More like 6am oil.  Still having issues with actually eating anyone.

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* missed commit

* Noms

* specific release doesn't work

* Tg modernization patch (#115)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* port from cactus did

* fix format error

* Update preferences.dm

unfuck

* Revert "port from cactus did"

* unfuck

* more sprite work

* vore

* disabled roundstart xenos for now

* admin QOL

needs callback porting, TBD

* Mentor system initial port

I'm sure I've missed a fuckton of shit

* test merge

* Jesus tits did this finally fix compile issues?

* Initial test compiles. hooray.

* Admin ticket fixes

* I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum

* who list wip

also ahelps are broken again. fuck if I know why

* discord bot basics

* maybe tickets work now & bot framework done

* ahelp callback readd

* vore tweaks

* progress

* Small fixes for dogborgs and sprite accessories:
-Ported the hidden snippets of the dogborg code.
-Reset module now resets pixel offset and icon directory again. (broke shit when reseting from dogborg)
-Medihound belly fixed.
-Husky body marking tweaked to not overlap arms in side view.
-Added husky ears that are basically wolf ears that use secondary color instead.

* dirtier fix than a korean hooker in the 60s

* The release your hooker will always fake

* you could save that hookers number but wouldn't you rather just vore the hooker instead

* Save system is literal black magic

* great googly moogly it's all gone to shit

* We May 2015 save code now

* fiddling with digestion code now

* fuck if I know anymore. I'm going to bed

* OWN UP YOUR OWN DIGESTION

* UNREGULATED GUTS ARE NON COMPLIANT

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

* BELLIES MUST COMPLY WITH USER OWNERSHIP

* Removed debug messages

* Unneeded verb additions

* file change tweaks

* WATCH YOUR SPACING, DRIVER

* Changelog and devourment for some mobs.

Because I knew people were gunna ask.

NO YOU CANNOT EAT THE FUCKING LEGION

* title screen change from Crow's PR.

* More of Crow's title screen stuff

* mode tweaks.... again

* gamemode voting in lobby via TalkingCactus
disabled ashwalkers as roundstart
Verk's species tweak
paralax starts disabled by default

* LOOC

* index sync problem (#158)

* digifix

* things

* furry races.dm

* actually deletes species_types

* maps

* tgui and stuff

* Sounds

* icon updates

* Defines and helpers

* global vars and on click

* controllers

* datums

* game folder

* fixes invisible flan mobs

* some modules

* dropbomb verb enhanced

* moar

* moar

* moar

* even more again

* and finally these for modules

* Some compile tweaks

* silly dme get updated you scrub

* compiles cleanly now

* various open PR fixes from TG

as of 0800 Texas Standard Time

* also fancy cryopods before I forget again

* headslug gold core fix

* some species and DNA tweaks

* Digest already damn you

* suddenly sound and resist works. wtf

* Minor tweaks, cryopod noise change

* Vore tested working, species working

* Merge test onto bleeding edgy (#165)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Escape and Devourable

For the normies who play here yet complain about it.

* Things that should be committed

* unneeded files

* Sizeray works now

* tweaks and bed time going

* IT WORKS mostly

Need to get multiple guts and saving working tho

* save tweaks

* item hotfix

* gut examine message

* damifino

* save system works

also ensured some mobs have vore controls, so silicons can't even
remotely do vore things.

* code nitpicking

* Midnight oil

More like 6am oil.  Still having issues with actually eating anyone.

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* missed commit

* Noms

* specific release doesn't work

* Tg modernization patch (#115)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* port from cactus did

* fix format error

* Update preferences.dm

unfuck

* Revert "port from cactus did"

* unfuck

* more sprite work

* vore

* disabled roundstart xenos for now

* admin QOL

needs callback porting, TBD

* Mentor system initial port

I'm sure I've missed a fuckton of shit

* test merge

* Jesus tits did this finally fix compile issues?

* Initial test compiles. hooray.

* Admin ticket fixes

* I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum

* who list wip

also ahelps are broken again. fuck if I know why

* discord bot basics

* maybe tickets work now & bot framework done

* ahelp callback readd

* vore tweaks

* progress

* Small fixes for dogborgs and sprite accessories:
-Ported the hidden snippets of the dogborg code.
-Reset module now resets pixel offset and icon directory again. (broke shit when reseting from dogborg)
-Medihound belly fixed.
-Husky body marking tweaked to not overlap arms in side view.
-Added husky ears that are basically wolf ears that use secondary color instead.

* dirtier fix than a korean hooker in the 60s

* The release your hooker will always fake

* you could save that hookers number but wouldn't you rather just vore the hooker instead

* Save system is literal black magic

* great googly moogly it's all gone to shit

* We May 2015 save code now

* fiddling with digestion code now

* fuck if I know anymore. I'm going to bed

* OWN UP YOUR OWN DIGESTION

* UNREGULATED GUTS ARE NON COMPLIANT

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

* BELLIES MUST COMPLY WITH USER OWNERSHIP

* Removed debug messages

* Unneeded verb additions

* file change tweaks

* WATCH YOUR SPACING, DRIVER

* Changelog and devourment for some mobs.

Because I knew people were gunna ask.

NO YOU CANNOT EAT THE FUCKING LEGION

* title screen change from Crow's PR.

* More of Crow's title screen stuff

* mode tweaks.... again

* gamemode voting in lobby via TalkingCactus
disabled ashwalkers as roundstart
Verk's species tweak
paralax starts disabled by default

* LOOC

* index sync problem (#158)

* digifix

* things

* furry races.dm

* actually deletes species_types

* maps

* tgui and stuff

* Sounds

* icon updates

* Defines and helpers

* global vars and on click

* controllers

* datums

* game folder

* fixes invisible flan mobs

* some modules

* dropbomb verb enhanced

* moar

* moar

* moar

* even more again

* and finally these for modules

* Some compile tweaks

* silly dme get updated you scrub

* compiles cleanly now

* various open PR fixes from TG

as of 0800 Texas Standard Time

* also fancy cryopods before I forget again

* headslug gold core fix

* some species and DNA tweaks

* Digest already damn you

* suddenly sound and resist works. wtf

* Minor tweaks, cryopod noise change

* Vore tested working, species working

* travis map updates

* updates

* pool's closed due to lag

* datum pools are closed too

* Initializing new pool's closed

* Pool's closed and initializing shit is done

* sprite updates

* chattering is okay to do now.

* bleeblin edgy 1/23 (#166)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Escape and Devourable

For the normies who play here yet complain about it.

* Things that should be committed

* unneeded files

* Sizeray works now

* tweaks and bed time going

* IT WORKS mostly

Need to get multiple guts and saving working tho

* save tweaks

* item hotfix

* gut examine message

* damifino

* save system works

also ensured some mobs have vore controls, so silicons can't even
remotely do vore things.

* code nitpicking

* Midnight oil

More like 6am oil.  Still having issues with actually eating anyone.

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* missed commit

* Noms

* specific release doesn't work

* Tg modernization patch (#115)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes

* port from cactus did

* fix format error

* Update preferences.dm

unfuck

* Revert "port from cactus did"

* unfuck

* more sprite work

* vore

* disabled roundstart xenos for now

* admin QOL

needs callback porting, TBD

* Mentor system initial port

I'm sure I've missed a fuckton of shit

* test merge

* Jesus tits did this finally fix compile issues?

* Initial test compiles. hooray.

* Admin ticket fixes

* I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum

* who list wip

also ahelps are broken again. fuck if I know why

* discord bot basics

* maybe tickets work now & bot framework done

* ahelp callback readd

* vore tweaks

* progress

* Small fixes for dogborgs and sprite accessories:
-Ported the hidden snippets of the dogborg code.
-Reset module now resets pixel offset and icon directory again. (broke shit when reseting from dogborg)
-Medihound belly fixed.
-Husky body marking tweaked to not overlap arms in side view.
-Added husky ears that are basically wolf ears that use secondary color instead.

* dirtier fix than a korean hooker in the 60s

* The release your hooker will always fake

* you could save that hookers number but wouldn't you rather just vore the hooker instead

* Save system is literal black magic

* great googly moogly it's all gone to shit

* We May 2015 save code now

* fiddling with digestion code now

* fuck if I know anymore. I'm going to bed

* OWN UP YOUR OWN DIGESTION

* UNREGULATED GUTS ARE NON COMPLIANT

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

* BELLIES MUST COMPLY WITH USER OWNERSHIP

* Removed debug messages

* Unneeded verb additions

* file change tweaks

* WATCH YOUR SPACING, DRIVER

* Changelog and devourment for some mobs.

Because I knew people were gunna ask.

NO YOU CANNOT EAT THE FUCKING LEGION

* title screen change from Crow's PR.

* More of Crow's title screen stuff

* mode tweaks.... again

* gamemode voting in lobby via TalkingCactus
disabled ashwalkers as roundstart
Verk's species tweak
paralax starts disabled by default

* LOOC

* index sync problem (#158)

* digifix

* things

* furry races.dm

* actually deletes species_types

* maps

* tgui and stuff

* Sounds

* icon updates

* Defines and helpers

* global vars and on click

* controllers

* datums

* game folder

* fixes invisible flan mobs

* some modules

* dropbomb verb enhanced

* moar

* moar

* moar

* even more again

* and finally these for modules

* Some compile tweaks

* silly dme get updated you scrub

* compiles cleanly now

* various open PR fixes from TG

as of 0800 Texas Standard Time

* also fancy cryopods before I forget again

* headslug gold core fix

* some species and DNA tweaks

* Digest already damn you

* suddenly sound and resist works. wtf

* Minor tweaks, cryopod noise change

* Vore tested working, species working

* travis map updates

* updates

* pool's closed due to lag

* datum pools are closed too

* Initializing new pool's closed

* Pool's closed and initializing shit is done

* sprite updates

* chattering is okay to do now.

* Update .travis.yml

* Update .travis.yml

* Update .travis.yml

* Revert "Modern modern"

* Revert "Revert "Modern modern""

* fix it fix it fix it fix it

* fixes title screen - thanks crow

* Riding code reverted

* possible tgui fix?

* who the fuck even knows if this is the problem

* adds moths and sharks (no colors yet, not greyscaled)
adds LOOC back

* "fixes" missing items in some machinery.

* slight tweaks to abductor spawns
borer event enabled (max 1)

* Update .travis.yml

* fixes shuttle purchase from comms

* fixes and QoL

* Polymorphing all is dangerous too

* re-fixes ahelp ticket system again

* metagaming check proving to be spamlicious

* Fixes not being able to see devoured mob poses

* fix for vehicle buckling

* ahelp timer runtime fix (#178)

* controller and game updates 1/29

* Defines, helpers, datums 1/29

* world.dm updates

* modules/admin tweaks

* everything in modules not a mob

* modules/mob fixes and such

No more PAIs ventcrawling

* icons, maps, tools, etc.

* compiler fixes

* round type vote fixed

* hardsuit cargo pack

* reduce ion and electric storm chance

* perms access for travis

* fix helmet to the suit
removes CE from crate

* changelog

* fuck

* perms for travis... again

* Update tgstation.dme

* Update tgstation.dme

* Donation race

* redpanda

* red panda

* size play work

* Size chemical basics

Needs testing/refining

* some fixing ports before I just fucking ported it anyway

* It's been a fucking week.

* commiting moar changes because github

* admins.txt lol

* icons

* defines and such

* globalvars and onclick

* Controllers

* datums

* game folder

* oh look, HoG is back

* modules pt 1

* client things

* more modules

* everything not mob code

* some mob stuff

* more mob things

* silicon mobs

* ayylims and monkeys

* human updates

* huh

* housekeeping is fired.

* last minute fixes

* more last minute things

* human parts double check'd

* more paper

* Icons are fixed

* double check of thermal protection code. (#191)
This commit is contained in:
TalkingCactus
2017-02-03 06:56:14 -05:00
committed by Poojawa
parent 7735dec0ec
commit f7c09077d2
2489 changed files with 830965 additions and 416701 deletions
+9 -8
View File
@@ -8,7 +8,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
name = "Circuit Imprinter"
desc = "Manufactures circuit boards for the construction of machines."
icon_state = "circuit_imprinter"
flags = OPENCONTAINER
container_type = OPENCONTAINER
var/datum/material_container/materials
var/efficiency_coeff
@@ -23,12 +23,13 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
"Hydroponics Machinery",
"Subspace Telecomms",
"Research Machinery",
"Misc. Machinery"
"Misc. Machinery",
"Computer Parts"
)
/obj/machinery/r_n_d/circuit_imprinter/New()
..()
materials = new(src, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND))
materials = new(src, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND, MAT_METAL))
create_reagents(0)
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/circuit_imprinter(null)
B.apply_default_parts(src)
@@ -38,7 +39,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
return ..()
/obj/item/weapon/circuitboard/machine/circuit_imprinter
name = "circuit board (Circuit Imprinter)"
name = "Circuit Imprinter (Machine Board)"
build_path = /obj/machinery/r_n_d/circuit_imprinter
origin_tech = "engineering=2;programming=2"
req_components = list(
@@ -61,12 +62,12 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
T += M.rating
efficiency_coeff = 2 ** (T - 1) //Only 1 manipulator here, you're making runtimes Razharas
/obj/machinery/r_n_d/circuit_imprinter/blob_act(obj/effect/blob/B)
/obj/machinery/r_n_d/circuit_imprinter/blob_act(obj/structure/blob/B)
if (prob(50))
qdel(src)
/obj/machinery/r_n_d/circuit_imprinter/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material
var/list/all_materials = being_built.reagents + being_built.materials
var/list/all_materials = being_built.reagents_list + being_built.materials
var/A = materials.amount(M)
if(!A)
@@ -75,7 +76,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
return round(A / max(1, (all_materials[M]/efficiency_coeff)))
//we eject the materials upon deconstruction.
/obj/machinery/r_n_d/circuit_imprinter/deconstruction()
/obj/machinery/r_n_d/circuit_imprinter/on_deconstruction()
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
reagents.trans_to(G, G.reagents.maximum_volume)
materials.retrieve_all()
@@ -112,7 +113,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
user << "<span class='notice'>You add [amount_inserted] sheets to the [src.name].</span>"
updateUsrDialog()
else if(user.a_intent != "harm")
else if(user.a_intent != INTENT_HARM)
user << "<span class='warning'>You cannot insert this item into the [name]!</span>"
return 1
else
+169 -37
View File
@@ -34,10 +34,12 @@ other types of metals and chemistry for reagents).
var/build_type = null //Flag as to what kind machine the design is built in. See defines.
var/list/materials = list() //List of materials. Format: "id" = amount.
var/construction_time //Amount of time required for building the object
var/build_path = "" //The file path of the object that gets created
var/build_path = null //The file path of the object that gets created
var/list/make_reagents = list() //Reagents produced. Format: "id" = amount. Currently only supported by the biogenerator.
var/list/category = null //Primarily used for Mech Fabricators, but can be used for anything
var/list/reagents = list() //List of reagents. Format: "id" = amount.
var/list/reagents_list = list() //List of reagents. Format: "id" = amount.
var/maxstack = 1
var/lathe_time_factor = 1 //How many times faster than normal is this to build on the protolathe
////////////////////////////////////////
@@ -45,15 +47,25 @@ other types of metals and chemistry for reagents).
////////////////////////////////////////
/obj/item/weapon/disk/design_disk
name = "Component Design Disk"
name = "component design disk"
desc = "A disk for storing device design data for construction in lathes."
icon_state = "datadisk1"
materials = list(MAT_METAL=100, MAT_GLASS=100)
var/datum/design/blueprint
materials = list(MAT_METAL=300, MAT_GLASS=100)
var/list/blueprints = list()
var/max_blueprints = 1
/obj/item/weapon/disk/design_disk/New()
..()
src.pixel_x = rand(-5, 5)
src.pixel_y = rand(-5, 5)
for(var/i in 1 to max_blueprints)
blueprints += null
/obj/item/weapon/disk/design_disk/adv
name = "advanced component design disk"
desc = "A disk for storing device design data for construction in lathes. This one has extra storage space."
materials = list(MAT_METAL=300, MAT_GLASS=100, MAT_SILVER = 50)
max_blueprints = 5
///////////////////////////////////
/////Non-Board Computer Stuff//////
@@ -93,6 +105,16 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/disk/design_disk
category = list("Electronics")
/datum/design/design_disk_adv
name = "Advanced Design Storage Disk"
desc = "Produce additional disks for storing device designs."
id = "design_disk_adv"
req_tech = list("programming" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50)
build_path = /obj/item/weapon/disk/design_disk/adv
category = list("Electronics")
/datum/design/tech_disk
name = "Technology Data Storage Disk"
desc = "Produce additional disks for storing technology data."
@@ -103,6 +125,25 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/disk/tech_disk
category = list("Electronics")
/datum/design/tech_disk_adv
name = "Advanced Technology Data Storage Disk"
desc = "Produce disks with extra storage capacity for storing technology data."
id = "tech_disk_adv"
req_tech = list("programming" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50)
build_path = /obj/item/weapon/disk/tech_disk/adv
category = list("Electronics")
/datum/design/tech_disk_super_adv
name = "Quantum Technology Data Storage Disk"
desc = "Produce disks with extremely large storage capacity for storing technology data."
id = "tech_disk_super_adv"
req_tech = list("programming" = 6)
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=100, MAT_GOLD=100)
build_path = /obj/item/weapon/disk/tech_disk/super_adv
category = list("Electronics")
/////////////////////////////////////////
/////////////////Mining//////////////////
@@ -158,36 +199,6 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/pickaxe/drill/jackhammer
category = list("Mining Designs")
/datum/design/modkit
name = "Modification Kit"
desc = "A device which allows kinetic accelerators to be wielded with one hand, and by any organism."
id = "modkit"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
build_path = /obj/item/modkit
category = list("Mining Designs")
/datum/design/superaccelerator
name = "Super-Kinetic Accelerator"
desc = "An upgraded version of the proto-kinetic accelerator, with superior damage, speed and range."
id = "superaccelerator"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000)
build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/super
category = list("Mining Designs")
/datum/design/hyperaccelerator
name = "Hyper-Kinetic Accelerator"
desc = "An upgraded version of the proto-kinetic accelerator, with even more superior damage, speed and range."
id = "hyperaccelerator"
req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
build_type = PROTOLATHE
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/hyper
category = list("Mining Designs")
/datum/design/superresonator
name = "Upgraded Resonator"
desc = "An upgraded version of the resonator that allows more fields to be active at once."
@@ -198,6 +209,67 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/resonator/upgraded
category = list("Mining Designs")
/datum/design/trigger_guard_mod
name = "Kinetic Accelerator Trigger Guard Mod"
desc = "A device which allows kinetic accelerators to be wielded by any organism."
id = "triggermod"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
build_path = /obj/item/borg/upgrade/modkit/trigger_guard
category = list("Mining Designs")
/datum/design/damage_mod
name = "Kinetic Accelerator Damage Mod"
desc = "A device which allows kinetic accelerators to deal more damage."
id = "damagemod"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
build_path = /obj/item/borg/upgrade/modkit/damage
category = list("Mining Designs", "Cyborg Upgrade Modules")
/datum/design/cooldown_mod
name = "Kinetic Accelerator Cooldown Mod"
desc = "A device which decreases the cooldown of a Kinetic Accelerator."
id = "cooldownmod"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
build_path = /obj/item/borg/upgrade/modkit/cooldown
category = list("Mining Designs", "Cyborg Upgrade Modules")
/datum/design/range_mod
name = "Kinetic Accelerator Range Mod"
desc = "A device which allows kinetic accelerators to fire at a further range."
id = "rangemod"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
build_path = /obj/item/borg/upgrade/modkit/range
category = list("Mining Designs", "Cyborg Upgrade Modules")
/datum/design/superaccelerator
name = "Kinetic Accelerator Pressure Mod"
desc = "A modification kit which allows Kinetic Accelerators to do more damage while indoors."
id = "indoormod"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000)
build_path = /obj/item/borg/upgrade/modkit/indoors
category = list("Mining Designs", "Cyborg Upgrade Modules")
/datum/design/hyperaccelerator
name = "Kinetic Accelerator Mining AoE Mod"
desc = "A modification kit for Kinetic Accelerators which causes it to fire AoE blasts that destroy rock."
id = "hypermod"
req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
build_path = /obj/item/borg/upgrade/modkit/aoe/turfs
category = list("Mining Designs", "Cyborg Upgrade Modules")
/////////////////////////////////////////
//////////////Blue Space/////////////////
/////////////////////////////////////////
@@ -297,7 +369,7 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/clothing/glasses/hud/security/night
category = list("Equipment")
datum/design/diagnostic_hud
/datum/design/diagnostic_hud
name = "Diagnostic HUD"
desc = "A HUD used to analyze and determine faults within robotic machinery."
id = "dianostic_hud"
@@ -307,7 +379,7 @@ datum/design/diagnostic_hud
build_path = /obj/item/clothing/glasses/hud/diagnostic
category = list("Equipment")
datum/design/diagnostic_hud_night
/datum/design/diagnostic_hud_night
name = "Night Vision Diagnostic HUD"
desc = "Upgraded version of the diagnostic HUD designed to function during a power failure."
id = "dianostic_hud_night"
@@ -454,6 +526,66 @@ datum/design/diagnostic_hud_night
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
category = list("Equipment")
/datum/design/alienwrench
name = "Alien Wrench"
desc = "An advanced wrench obtained through Abductor technology."
id = "alien_wrench"
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/wrench/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienwirecutters
name = "Alien Wirecutters"
desc = "Advanced wirecutters obtained through Abductor technology."
id = "alien_wirecutters"
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/wirecutters/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienscrewdriver
name = "Alien Screwdriver"
desc = "An advanced screwdriver obtained through Abductor technology."
id = "alien_screwdriver"
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/screwdriver/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/aliencrowbar
name = "Alien Crowbar"
desc = "An advanced crowbar obtained through Abductor technology."
id = "alien_crowbar"
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/crowbar/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienwelder
name = "Alien Welding Tool"
desc = "An advanced welding tool obtained through Abductor technology."
id = "alien_welder"
req_tech = list("engineering" = 5, "plasmatech" = 5, "abductor" = 4)
build_path = /obj/item/weapon/weldingtool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienmultitool
name = "Alien Multitool"
desc = "An advanced multitool obtained through Abductor technology."
id = "alien_multitool"
req_tech = list("engineering" = 5, "programming" = 5, "abductor" = 4)
build_path = /obj/item/device/multitool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/diskplantgene
name = "Plant data disk"
desc = "A disk for storing plant genetic data."
@@ -66,6 +66,14 @@
build_path = /obj/item/weapon/weldingtool
category = list("initial","Tools")
/datum/design/mini_weldingtool
name = "Emergency welding tool"
id = "mini_welding_tool"
build_type = AUTOLATHE
materials = list(MAT_METAL = 30, MAT_GLASS = 10)
build_path = /obj/item/weapon/weldingtool/mini
category = list("initial","Tools")
/datum/design/screwdriver
name = "Screwdriver"
id = "screwdriver"
@@ -163,6 +171,14 @@
build_path = /obj/item/weapon/electronics/firealarm
category = list("initial", "Electronics")
/datum/design/earmuffs
name = "Earmuffs"
id = "earmuffs"
build_type = AUTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/ears/earmuffs
category = list("initial", "Misc")
/datum/design/pipe_painter
name = "Pipe painter"
id = "pipe_painter"
@@ -499,7 +515,7 @@
name = "Light tube"
id = "light_tube"
build_type = AUTOLATHE
materials = list(MAT_METAL = 60, MAT_GLASS = 100)
materials = list(MAT_GLASS = 100)
build_path = /obj/item/weapon/light/tube
category = list("initial", "Construction")
@@ -507,7 +523,7 @@
name = "Light bulb"
id = "light_bulb"
build_type = AUTOLATHE
materials = list(MAT_METAL = 60, MAT_GLASS = 100)
materials = list(MAT_GLASS = 100)
build_path = /obj/item/weapon/light/bulb
category = list("initial", "Construction")
@@ -632,6 +648,22 @@
build_path = /obj/item/ammo_casing/shotgun/incendiary
category = list("hacked", "Security")
/datum/design/riot_dart
name = "Foam riot dart"
id = "riot_dart"
build_type = AUTOLATHE
materials = list(MAT_METAL = 1000) //Discount for making individually - no box = less metal!
build_path = /obj/item/ammo_casing/caseless/foam_dart/riot
category = list("hacked", "Security")
/datum/design/riot_darts
name = "Foam riot dart box"
id = "riot_darts"
build_type = AUTOLATHE
materials = list(MAT_METAL = 50000) //Comes with 40 darts
build_path = /obj/item/ammo_box/foambox/riot
category = list("hacked", "Security")
/datum/design/a357
name = "Ammo box (.357)"
id = "a357"
@@ -711,3 +743,35 @@
materials = list(MAT_METAL = 12000)
build_path = /obj/item/wallframe/turret_control
category = list("initial", "Construction")
/datum/design/conveyor_belt
name = "Conveyor belt"
id = "conveyor_belt"
build_type = AUTOLATHE
materials = list(MAT_METAL = 5000)
build_path = /obj/item/conveyor_construct
category = list("initial", "Construction")
/datum/design/conveyor_switch
name = "Conveyor belt switch"
id = "conveyor_switch"
build_type = AUTOLATHE
materials = list(MAT_METAL = 450, MAT_GLASS = 190)
build_path = /obj/item/conveyor_switch_construct
category = list("initial", "Construction")
/datum/design/laptop
name = "Laptop Frame"
id = "laptop"
build_type = AUTOLATHE
materials = list(MAT_METAL = 10000, MAT_GLASS = 1000)
build_path = /obj/item/device/modular_computer/laptop/buildable
category = list("initial","Misc")
/datum/design/tablet
name = "Tablet Frame"
id = "tablet"
build_type = AUTOLATHE
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
build_path = /obj/item/device/modular_computer/tablet
category = list("initial","Misc")
@@ -0,0 +1,212 @@
///////////////////////////////////
///////Biogenerator Designs ///////
///////////////////////////////////
/datum/design/milk
name = "10 milk"
id = "milk"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 20)
make_reagents = list("milk" = 10)
category = list("initial","Food")
/datum/design/cream
name = "10 cream"
id = "cream"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 30)
make_reagents = list("cream" = 10)
category = list("initial","Food")
/datum/design/milk_carton
name = "Milk carton"
id = "milk_carton"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 100)
build_path = /obj/item/weapon/reagent_containers/food/condiment/milk
category = list("initial","Food")
/datum/design/cream_carton
name = "Cream carton"
id = "cream_carton"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/reagent_containers/food/drinks/bottle/cream
category = list("initial","Food")
/datum/design/black_pepper
name = "10u black pepper"
id = "black_pepper"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 25)
make_reagents = list("blackpepper" = 10)
category = list("initial","Food")
/datum/design/pepper_mill
name = "Pepper mill"
id = "pepper_mill"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/weapon/reagent_containers/food/condiment/peppermill
make_reagents = list()
category = list("initial","Food")
/datum/design/monkey_cube
name = "Monkey cube"
id = "mcube"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 250)
build_path = /obj/item/weapon/reagent_containers/food/snacks/monkeycube
category = list("initial", "Food")
/datum/design/ez_nut
name = "E-Z-Nutrient"
id = "ez_nut"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 10)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez
category = list("initial","Botany Chemicals")
/datum/design/l4z_nut
name = "Left 4 Zed"
id = "l4z_nut"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 20)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z
category = list("initial","Botany Chemicals")
/datum/design/rh_nut
name = "Robust Harvest"
id = "rh_nut"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 25)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh
category = list("initial","Botany Chemicals")
/datum/design/weed_killer
name = "Weed Killer"
id = "weed_killer"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/killer/weedkiller
category = list("initial","Botany Chemicals")
/datum/design/pest_spray
name = "Pest Killer"
id = "pest_spray"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/killer/pestkiller
category = list("initial","Botany Chemicals")
/datum/design/botany_bottle
name = "Empty Bottle"
id = "botany_bottle"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 5)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/empty
category = list("initial", "Botany Chemicals")
/datum/design/cloth
name = "Roll of cloth"
id = "cloth"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/stack/sheet/cloth
category = list("initial","Leather and Cloth")
/datum/design/wallet
name = "Wallet"
id = "wallet"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 100)
build_path = /obj/item/weapon/storage/wallet
category = list("initial","Leather and Cloth")
/datum/design/botany_gloves
name = "Botanical gloves"
id = "botany_gloves"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 150)
build_path = /obj/item/clothing/gloves/botanic_leather
category = list("initial","Leather and Cloth")
/datum/design/toolbelt
name = "Utility Belt"
id = "toolbelt"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/utility
category = list("initial","Leather and Cloth")
/datum/design/secbelt
name = "Security belt"
id = "secbelt"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/security
category = list("initial","Leather and Cloth")
/datum/design/medbelt
name = "Medical belt"
id = "medbel"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/medical
category = list("initial","Leather and Cloth")
/datum/design/janibelt
name = "Janitorial belt"
id = "janibelt"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/janitor
category = list("initial","Leather and Cloth")
/datum/design/bandolier
name = "Bandolier belt"
id = "bandolier"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/bandolier
category = list("initial","Leather and Cloth")
/datum/design/s_holster
name = "Shoulder holster"
id = "s_holster"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 400)
build_path = /obj/item/weapon/storage/belt/holster
category = list("initial","Leather and Cloth")
/datum/design/leather_satchel
name = "Leather satchel"
id = "leather_satchel"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 400)
build_path = /obj/item/weapon/storage/backpack/satchel
category = list("initial","Leather and Cloth")
/datum/design/leather_jacket
name = "Leather jacket"
id = "leather_jacket"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 500)
build_path = /obj/item/clothing/suit/jacket/leather
category = list("initial","Leather and Cloth")
/datum/design/leather_overcoat
name = "Leather overcoat"
id = "leather_overcoat"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 1000)
build_path = /obj/item/clothing/suit/jacket/leather/overcoat
category = list("initial","Leather and Cloth")
/datum/design/rice_hat
name = "Rice hat"
id = "rice_hat"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/clothing/head/rice_hat
category = list("initial","Leather and Cloth")
@@ -7,7 +7,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000)
reagents = list("sacid" = 20)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/circuitboard/computer/arcade/battle
category = list("Computer Boards")
@@ -21,13 +21,21 @@
/datum/design/board/seccamera
name = "Computer Design (Security)"
name = "Computer Design (Security Camera)"
desc = "Allows for the construction of circuit boards used to build security camera computers."
id = "seccamera"
req_tech = list("programming" = 2, "combat" = 2)
build_path = /obj/item/weapon/circuitboard/computer/security
category = list("Computer Boards")
/datum/design/board/xenobiocamera
name = "Computer Design (Xenobiology Console)"
desc = "Allows for the construction of circuit boards used to build xenobiology camera computers."
id = "xenobioconsole"
req_tech = list("programming" = 3, "biotech" = 3)
build_path = /obj/item/weapon/circuitboard/computer/xenobiology
category = list("Computer Boards")
/datum/design/board/aiupload
name = "Computer Design (AI Upload)"
desc = "Allows for the construction of circuit boards used to build an AI Upload Console."
@@ -204,6 +212,14 @@
build_path = /obj/item/weapon/circuitboard/computer/cargo/request
category = list("Computer Boards")
/datum/design/board/stockexchange
name = "Computer Design (Stock Exchange Console)"
desc = "Allows for the construction of circuit boards used to build a Stock Exchange Console."
id = "stockexchange"
req_tech = list("programming" = 3)
build_path = /obj/item/weapon/circuitboard/computer/stockexchange
category = list("Computer Boards")
/datum/design/board/mining
name = "Computer Design (Outpost Status Display)"
desc = "Allows for the construction of circuit boards used to build an outpost status display console."
@@ -0,0 +1,261 @@
////////////////////////////////////////
///////////Computer Parts///////////////
////////////////////////////////////////
/datum/design/disk/normal
name = "hard disk drive"
id = "hdd_basic"
req_tech = list("programming" = 1, "engineering" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL = 400, MAT_GLASS = 100)
build_path = /obj/item/weapon/computer_hardware/hard_drive
category = list("Computer Parts")
/datum/design/disk/advanced
name = "advanced hard disk drive"
id = "hdd_advanced"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
build_path = /obj/item/weapon/computer_hardware/hard_drive/advanced
category = list("Computer Parts")
/datum/design/disk/super
name = "super hard disk drive"
id = "hdd_super"
req_tech = list("programming" = 3, "engineering" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 1600, MAT_GLASS = 400)
build_path = /obj/item/weapon/computer_hardware/hard_drive/super
category = list("Computer Parts")
/datum/design/disk/cluster
name = "cluster hard disk drive"
id = "hdd_cluster"
req_tech = list("programming" = 4, "engineering" = 4)
build_type = PROTOLATHE
materials = list(MAT_METAL = 3200, MAT_GLASS = 800)
build_path = /obj/item/weapon/computer_hardware/hard_drive/cluster
category = list("Computer Parts")
/datum/design/disk/small
name = "solid state drive"
id = "ssd_small"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
build_path = /obj/item/weapon/computer_hardware/hard_drive/small
category = list("Computer Parts")
/datum/design/disk/micro
name = "micro solid state drive"
id = "ssd_micro"
req_tech = list("programming" = 1, "engineering" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL = 400, MAT_GLASS = 100)
build_path = /obj/item/weapon/computer_hardware/hard_drive/micro
category = list("Computer Parts")
// Network cards
/datum/design/netcard/basic
name = "network card"
id = "netcard_basic"
req_tech = list("programming" = 2, "engineering" = 1)
build_type = IMPRINTER
materials = list(MAT_METAL = 250, MAT_GLASS = 100)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/network_card
category = list("Computer Parts")
/datum/design/netcard/advanced
name = "advanced network card"
id = "netcard_advanced"
req_tech = list("programming" = 4, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_METAL = 500, MAT_GLASS = 200)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/network_card/advanced
category = list("Computer Parts")
/datum/design/netcard/wired
name = "wired network card"
id = "netcard_wired"
req_tech = list("programming" = 5, "engineering" = 3)
build_type = IMPRINTER
materials = list(MAT_METAL = 2500, MAT_GLASS = 400)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/network_card/wired
category = list("Computer Parts")
// Data disks
/datum/design/portabledrive/basic
name = "data disk"
id = "portadrive_basic"
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 800)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/hard_drive/portable
category = list("Computer Parts")
/datum/design/portabledrive/advanced
name = "advanced data disk"
id = "portadrive_advanced"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1600)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/advanced
category = list("Computer Parts")
/datum/design/portabledrive/super
name = "super data disk"
id = "portadrive_super"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 3200)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/super
category = list("Computer Parts")
// Card slot
/datum/design/cardslot
name = "ID card slot"
id = "cardslot"
req_tech = list("programming" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 600)
build_path = /obj/item/weapon/computer_hardware/card_slot
category = list("Computer Parts")
// Intellicard slot
/datum/design/aislot
name = "Intellicard slot"
id = "aislot"
req_tech = list("programming" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 600)
build_path = /obj/item/weapon/computer_hardware/ai_slot
category = list("Computer Parts")
// Mini printer
/datum/design/miniprinter
name = "miniprinter"
id = "miniprinter"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 600)
build_path = /obj/item/weapon/computer_hardware/printer/mini
category = list("Computer Parts")
// APC Link
/datum/design/APClink
name = "area power connector"
id = "APClink"
req_tech = list("programming" = 2, "powerstorage" = 3, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000)
build_path = /obj/item/weapon/computer_hardware/recharger/APC
category = list("Computer Parts")
// Batteries
/datum/design/battery/controller
name = "power cell controller"
id = "bat_control"
req_tech = list("powerstorage" = 1, "engineering" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL = 400)
build_path = /obj/item/weapon/computer_hardware/battery
category = list("Computer Parts")
/datum/design/battery/normal
name = "battery module"
id = "bat_normal"
req_tech = list("powerstorage" = 1, "engineering" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL = 400)
build_path = /obj/item/weapon/stock_parts/cell/computer
category = list("Computer Parts")
/datum/design/battery/advanced
name = "advanced battery module"
id = "bat_advanced"
req_tech = list("powerstorage" = 2, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 800)
build_path = /obj/item/weapon/stock_parts/cell/computer/advanced
category = list("Computer Parts")
/datum/design/battery/super
name = "super battery module"
id = "bat_super"
req_tech = list("powerstorage" = 3, "engineering" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 1600)
build_path = /obj/item/weapon/stock_parts/cell/computer/super
category = list("Computer Parts")
/datum/design/battery/nano
name = "nano battery module"
id = "bat_nano"
req_tech = list("powerstorage" = 1, "engineering" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL = 200)
build_path = /obj/item/weapon/stock_parts/cell/computer/nano
category = list("Computer Parts")
/datum/design/battery/micro
name = "micro battery module"
id = "bat_micro"
req_tech = list("powerstorage" = 2, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 400)
build_path = /obj/item/weapon/stock_parts/cell/computer/micro
category = list("Computer Parts")
// Processor unit
/datum/design/cpu
name = "processor board"
id = "cpu_normal"
req_tech = list("programming" = 3, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1600)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/processor_unit
category = list("Computer Parts")
/datum/design/cpu/small
name = "microprocessor"
id = "cpu_small"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 800)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/processor_unit/small
category = list("Computer Parts")
/datum/design/cpu/photonic
name = "photonic processor board"
id = "pcpu_normal"
req_tech = list("programming" = 5, "engineering" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS= 6400, MAT_GOLD = 2000)
reagents_list = list("sacid" = 40)
build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic
category = list("Computer Parts")
/datum/design/cpu/photonic/small
name = "photonic microprocessor"
id = "pcpu_small"
req_tech = list("programming" = 4, "engineering" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 3200, MAT_GOLD = 1000)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic/small
category = list("Computer Parts")
@@ -0,0 +1,43 @@
/////////////////////////////////////
//////////Limb Grower Designs ///////
/////////////////////////////////////
/datum/design/leftarm
name = "Left Arm"
id = "leftarm"
build_type = LIMBGROWER
reagents_list = list("synthflesh" = 25)
build_path = /obj/item/bodypart/l_arm
category = list("initial","human","lizard","plasmaman")
/datum/design/rightarm
name = "Right Arm"
id = "rightarm"
build_type = LIMBGROWER
reagents_list = list("synthflesh" = 25)
build_path = /obj/item/bodypart/r_arm
category = list("initial","human","lizard","plasmaman")
/datum/design/leftleg
name = "Left Leg"
id = "leftleg"
build_type = LIMBGROWER
reagents_list = list("synthflesh" = 25)
build_path = /obj/item/bodypart/l_leg
category = list("initial","human","lizard","plasmaman")
/datum/design/rightleg
name = "Right Leg"
id = "rightleg"
build_type = LIMBGROWER
reagents_list = list("synthflesh" = 25)
build_path = /obj/item/bodypart/r_leg
category = list("initial","human","lizard","plasmaman")
/datum/design/armblade
name = "Arm Blade"
id = "armblade"
build_type = LIMBGROWER
reagents_list = list("synthflesh" = 75)
build_path = /obj/item/weapon/melee/synthetic_arm_blade
category = list("special")
@@ -82,6 +82,14 @@
build_path = /obj/item/weapon/circuitboard/machine/teleporter_hub
category = list ("Teleportation Machinery")
/datum/design/board/quantumpad
name = "Machine Design (Quantum Pad Board)"
desc = "The circuit board for a quantum telepad."
id = "quantumpad"
req_tech = list("programming" = 4, "bluespace" = 4, "plasmatech" = 3, "engineering" = 4)
build_path = /obj/item/weapon/circuitboard/machine/quantumpad
category = list ("Teleportation Machinery")
/datum/design/board/telepad
name = "Machine Design (Telepad Board)"
desc = "The circuit board for a telescience telepad."
@@ -386,3 +394,19 @@
req_tech = list("programming" = 4, "biotech" = 3)
build_path = /obj/item/weapon/circuitboard/machine/plantgenes
category = list ("Misc. Machinery")
/datum/design/board/ntnet_relay
name = "Machine Design (NTNet Relay Board)"
desc = "The circuit board for a wireless network relay."
id = "ntnet_relay"
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2)
build_path = /obj/item/weapon/circuitboard/machine/ntnet_relay
category = list("Subspace Telecomms")
/datum/design/board/limbgrower
name = "Machine Design (Limb Grower Board)"
desc = "The circuit board for a limb grower."
id = "limbgrower"
req_tech = list("programming" = 3, "biotech" = 2)
build_path = /obj/item/weapon/circuitboard/machine/limbgrower
category = list("Medical Machinery")
@@ -211,7 +211,7 @@
id = "mech_missile_rack"
build_type = MECHFAB
req_tech = list("combat" = 6, "materials" = 5, "engineering" = 5)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/missile_rack
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack
materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000)
construction_time = 100
category = list("Exosuit Equipment")
@@ -3,7 +3,7 @@
name = "Cyborg Endoskeleton"
id = "borg_suit"
build_type = MECHFAB
build_path = /obj/item/robot_parts/robot_suit
build_path = /obj/item/robot_suit
materials = list(MAT_METAL=15000)
construction_time = 500
category = list("Cyborg")
@@ -12,7 +12,7 @@
name = "Cyborg Torso"
id = "borg_chest"
build_type = MECHFAB
build_path = /obj/item/robot_parts/chest
build_path = /obj/item/bodypart/chest/robot
materials = list(MAT_METAL=40000)
construction_time = 350
category = list("Cyborg")
@@ -21,7 +21,7 @@
name = "Cyborg Head"
id = "borg_head"
build_type = MECHFAB
build_path = /obj/item/robot_parts/head
build_path = /obj/item/bodypart/head/robot
materials = list(MAT_METAL=5000)
construction_time = 350
category = list("Cyborg")
@@ -30,7 +30,7 @@
name = "Cyborg Left Arm"
id = "borg_l_arm"
build_type = MECHFAB
build_path = /obj/item/robot_parts/l_arm
build_path = /obj/item/bodypart/l_arm/robot
materials = list(MAT_METAL=10000)
construction_time = 200
category = list("Cyborg")
@@ -39,7 +39,7 @@
name = "Cyborg Right Arm"
id = "borg_r_arm"
build_type = MECHFAB
build_path = /obj/item/robot_parts/r_arm
build_path = /obj/item/bodypart/r_arm/robot
materials = list(MAT_METAL=10000)
construction_time = 200
category = list("Cyborg")
@@ -48,7 +48,7 @@
name = "Cyborg Left Leg"
id = "borg_l_leg"
build_type = MECHFAB
build_path = /obj/item/robot_parts/l_leg
build_path = /obj/item/bodypart/l_leg/robot
materials = list(MAT_METAL=10000)
construction_time = 200
category = list("Cyborg")
@@ -57,7 +57,7 @@
name = "Cyborg Right Leg"
id = "borg_r_leg"
build_type = MECHFAB
build_path = /obj/item/robot_parts/r_leg
build_path = /obj/item/bodypart/r_leg/robot
materials = list(MAT_METAL=10000)
construction_time = 200
category = list("Cyborg")
@@ -270,7 +270,7 @@
id = "gygax_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/gygax_armor
materials = list(MAT_METAL=25000,MAT_DIAMOND=10000)
materials = list(MAT_METAL=15000,MAT_DIAMOND=10000,MAT_TITANIUM=10000)
construction_time = 600
category = list("Gygax")
@@ -343,7 +343,7 @@
id = "durand_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/durand_armor
materials = list(MAT_METAL=50000,MAT_URANIUM=30000)
materials = list(MAT_METAL=30000,MAT_URANIUM=25000,MAT_TITANIUM=20000)
construction_time = 600
category = list("Durand")
@@ -481,7 +481,7 @@
id = "phazon_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/phazon_armor
materials = list(MAT_METAL=45000,MAT_PLASMA=30000)
materials = list(MAT_METAL=25000,MAT_PLASMA=20000,MAT_TITANIUM=20000)
construction_time = 300
category = list("Phazon")
@@ -505,7 +505,7 @@
category = list("Exosuit Equipment")
/datum/design/mech_mining_scanner
name = "Exosuit Engineering Equipement (Mining Scanner)"
name = "Exosuit Engineering Equipment (Mining Scanner)"
id = "mech_mscanner"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/mining_scanner
@@ -567,19 +567,19 @@
construction_time = 500
category = list("Exosuit Equipment")
/datum/design/mech_punching_glove
name = "Oingo Boingo Punch-face"
id = "mech_punching_face"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove
materials = list(MAT_METAL=20000,MAT_BANANIUM=7500)
construction_time = 400
category = list("Exosuit Equipment")
/////////////////////////////////////////
//////////////Borg Upgrades//////////////
/////////////////////////////////////////
/datum/design/borg_upgrade_reset
name = "Cyborg Upgrade (Module Reset Board)"
id = "borg_upgrade_reset"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/reset
materials = list(MAT_METAL=10000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_rename
name = "Cyborg Upgrade (Rename Board)"
id = "borg_upgrade_rename"
@@ -648,23 +648,13 @@
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_hyperka
name = "Cyborg Upgrade (Hyper-Kinetic Accelerator)"
id = "borg_upgrade_hyperka"
req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
build_type = MECHFAB //Reqs same as human Hyper KA
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
build_path = /obj/item/borg/upgrade/hyperka
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_lavaproof
name = "Cyborg Upgrade (Lavaproof Tracks)"
id = "borg_upgrade_lavaproof"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/lavaproof
req_tech = list("plasmatech" = 4, "materials" = 4, "engineering" = 4)
materials = list(MAT_METAL = 8000, MAT_PLASMA = 10000)
materials = list(MAT_METAL = 10000, MAT_PLASMA = 4000, MAT_TITANIUM = 5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
@@ -688,6 +678,46 @@
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_expandedsynthesiser
name = "Cyborg Upgrade (Hypospray Expanded Synthesiser)"
id = "borg_upgrade_expandedsynthesiser"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/hypospray/expanded
req_tech = list("programming" = 5, "engineering" = 4, "biotech" = 5)
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_PLASMA=5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_highstrengthsynthesiser
name = "Cyborg Upgrade (Hypospray High-Strength Synthesiser)"
id = "borg_upgrade_highstrengthsynthesiser"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/hypospray/high_strength
req_tech = list("programming" = 5, "engineering" = 5, "biotech" = 6)
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_PLASMA=10000, MAT_URANIUM=5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_piercinghypospray
name = "Cyborg Upgrade (Piercing Hypospray)"
id = "borg_upgrade_piercinghypospray"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/piercing_hypospray
req_tech = list("materials" = 5, "engineering" = 7, "combat" = 3)
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_TITANIUM=10000, MAT_DIAMOND=5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_defibrillator
name = "Cyborg Upgrade (Defibrillator)"
id = "borg_upgrade_defibrillator"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/defib
req_tech = list("programming" = 4, "engineering" = 5, "materials" = 5, "powerstorage" = 5, "biotech" = 5)
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_SILVER=10000, MAT_GOLD=10000, MAT_TITANIUM=5000, MAT_DIAMOND=5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
//Misc
/datum/design/mecha_tracking
name = "Exosuit Tracking Beacon"
@@ -698,6 +728,16 @@
construction_time = 50
category = list("Misc")
/datum/design/mecha_tracking_ai_control
name = "AI Control Beacon"
id = "mecha_tracking_ai_control"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_tracking/ai_control
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_SILVER = 200)
req_tech = list("programming" = 3, "magnets" = 2, "engineering" = 2)
construction_time = 50
category = list("Misc")
/datum/design/drone_shell
name = "Drone Shell"
desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs."
@@ -719,3 +759,36 @@
construction_time = 100
build_path = /obj/item/device/assembly/flash/handheld
category = list("Misc")
/datum/design/flightsuit //Multi step build process/redo WIP
name = "Flight Suit"
desc = "A specialized hardsuit that is able to attach a flightpack and accessories.."
id = "flightsuit"
build_type = MECHFAB
build_path = /obj/item/clothing/suit/space/hardsuit/flightsuit
materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 200, MAT_GOLD = 3000, MAT_SILVER = 3000, MAT_TITANIUM = 16000) //This expensive enough for you?
construction_time = 250
category = list("Misc")
req_tech = list("magnets" = 2, "combat" = 2, "plasmatech" = 2, "materials" = 4, "engineering" = 3, "powerstorage" = 2)
/datum/design/flightpack
name = "Flight Pack"
desc = "An advanced back-worn system that has dual ion engines powerful enough to grant a humanoid flight. Contains an internal self-recharging high-current capacitor for short, powerful boosts."
id = "flightpack"
build_type = MECHFAB
build_path = /obj/item/device/flightpack
materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 4000, MAT_GOLD = 12000, MAT_SILVER = 12000, MAT_URANIUM = 20000, MAT_PLASMA = 16000, MAT_TITANIUM = 16000) //This expensive enough for you?
construction_time = 250
category = list("Misc")
req_tech = list("magnets" = 4, "combat" = 3, "plasmatech" = 4, "materials" = 5, "engineering" = 4, "powerstorage" = 4)
/datum/design/flightshoes
name = "Flight Shoes"
desc = "Flight shoes, attachable to a flight suit to provide additional functions."
id = "flightshoes"
build_type = MECHFAB
build_path = /obj/item/clothing/shoes/flightshoes
materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_GOLD = 1500, MAT_SILVER = 1500, MAT_PLASMA = 2000, MAT_TITANIUM = 2000)
construction_time = 100
category = list("Misc")
req_tech = list("magnets" = 2, "combat" = 2, "plasmatech" = 3, "materials" = 3, "engineering" = 2, "powerstorage" = 2)
@@ -89,7 +89,7 @@
name = "Piercing Syringe"
desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units."
id = "piercesyringe"
req_tech = list("materials" = 5, "combat" = 3, "engineering" = 7)
req_tech = list("materials" = 7, "combat" = 3, "engineering" = 5)
build_type = PROTOLATHE
materials = list(MAT_GLASS = 4000, MAT_DIAMOND = 1500)
build_path = /obj/item/weapon/reagent_containers/syringe/piercing
@@ -115,6 +115,66 @@
build_path = /obj/item/device/extinguisher_refill
category = list("Medical Designs")
/datum/design/alienscalpel
name = "Alien Scalpel"
desc = "An advanced scalpel obtained through Abductor technology."
id = "alien_scalpel"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/scalpel/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/datum/design/alienhemostat
name = "Alien Hemostat"
desc = "An advanced hemostat obtained through Abductor technology."
id = "alien_hemostat"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/hemostat/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/datum/design/alienretractor
name = "Alien Retractor"
desc = "An advanced retractor obtained through Abductor technology."
id = "alien_retractor"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/retractor/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/datum/design/aliensaw
name = "Alien Circular Saw"
desc = "An advanced surgical saw obtained through Abductor technology."
id = "alien_saw"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/circular_saw/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/datum/design/aliendrill
name = "Alien Drill"
desc = "An advanced drill obtained through Abductor technology."
id = "alien_drill"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/surgicaldrill/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/datum/design/aliencautery
name = "Alien Cautery"
desc = "An advanced cautery obtained through Abductor technology."
id = "alien_cautery"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/cautery/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/////////////////////////////////////////
//////////Cybernetic Implants////////////
/////////////////////////////////////////
@@ -222,10 +282,10 @@
name = "Nutriment pump implant"
desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving."
id = "ci-nutriment"
req_tech = list("materials" = 5, "powerstorage" = 6, "biotech" = 5)
req_tech = list("materials" = 3, "powerstorage" = 4, "biotech" = 3)
build_type = PROTOLATHE | MECHFAB
construction_time = 40
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500, MAT_URANIUM = 500)
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500)
build_path = /obj/item/organ/cyberimp/chest/nutriment
category = list("Misc", "Medical Designs")
@@ -233,7 +293,7 @@
name = "Nutriment pump implant PLUS"
desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are hungry."
id = "ci-nutrimentplus"
req_tech = list("materials" = 5, "powerstorage" = 6, "biotech" = 6)
req_tech = list("materials" = 5, "powerstorage" = 4, "biotech" = 4)
build_type = PROTOLATHE | MECHFAB
construction_time = 50
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_GOLD = 500, MAT_URANIUM = 750)
@@ -244,10 +304,10 @@
name = "Reviver implant"
desc = "This implant will attempt to revive you if you lose consciousness. For the faint of heart!"
id = "ci-reviver"
req_tech = list("materials" = 5, "programming" = 4, "biotech" = 8)
req_tech = list("materials" = 5, "programming" = 4, "biotech" = 5)
build_type = PROTOLATHE | MECHFAB
construction_time = 60
materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 500, MAT_URANIUM = 1000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 300, MAT_URANIUM = 500)
build_path = /obj/item/organ/cyberimp/chest/reviver
category = list("Misc", "Medical Designs")
@@ -287,6 +347,16 @@
build_path = /obj/item/weapon/implantcase
category = list("Medical Designs")
/datum/design/implant_sadtrombone
name = "Sad Trombone Implant Case"
desc = "Makes death amusing."
id = "implant_trombone"
req_tech = list("materials" = 2, "biotech" = 3, "programming" = 2)
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500, MAT_BANANIUM = 500)
build_path = /obj/item/weapon/implantcase/sad_trombone
category = list("Medical Designs")
/datum/design/implant_freedom
name = "Freedom Implant Case"
desc = "A glass case containing an implant."
@@ -52,7 +52,7 @@
id = "bluespace_cell"
req_tech = list("powerstorage" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 800, MAT_GOLD = 300, MAT_SILVER = 300, MAT_GLASS = 160, MAT_DIAMOND = 160)
materials = list(MAT_METAL = 800, MAT_GOLD = 120, MAT_SILVER = 150, MAT_GLASS = 160, MAT_DIAMOND = 160, MAT_TITANIUM = 300)
construction_time=100
build_path = /obj/item/weapon/stock_parts/cell/bluespace
category = list("Misc","Power Designs")
@@ -32,6 +32,7 @@
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
build_path = /obj/item/weapon/stock_parts/capacitor
category = list("Stock Parts","Machinery","initial")
lathe_time_factor = 0.2
/datum/design/adv_capacitor
name = "Advanced Capacitor"
@@ -42,6 +43,7 @@
materials = list(MAT_METAL = 150, MAT_GLASS = 150)
build_path = /obj/item/weapon/stock_parts/capacitor/adv
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/super_capacitor
name = "Super Capacitor"
@@ -52,6 +54,7 @@
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100)
build_path = /obj/item/weapon/stock_parts/capacitor/super
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/quadratic_capacitor
name = "Quadratic Capacitor"
@@ -62,6 +65,7 @@
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 100)
build_path = /obj/item/weapon/stock_parts/capacitor/quadratic
category = list("Stock Parts")
lathe_time_factor = 0.2
//Scanning modules
/datum/design/basic_scanning
@@ -73,6 +77,7 @@
materials = list(MAT_METAL = 100, MAT_GLASS = 50)
build_path = /obj/item/weapon/stock_parts/scanning_module
category = list("Stock Parts","Machinery","initial")
lathe_time_factor = 0.2
/datum/design/adv_scanning
name = "Advanced Scanning Module"
@@ -83,6 +88,7 @@
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
build_path = /obj/item/weapon/stock_parts/scanning_module/adv
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/phasic_scanning
name = "Phasic Scanning Module"
@@ -93,6 +99,7 @@
materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_SILVER = 60)
build_path = /obj/item/weapon/stock_parts/scanning_module/phasic
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/triphasic_scanning
name = "Triphasic Scanning Module"
@@ -103,6 +110,7 @@
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 60)
build_path = /obj/item/weapon/stock_parts/scanning_module/triphasic
category = list("Stock Parts")
lathe_time_factor = 0.2
//Maipulators
/datum/design/micro_mani
@@ -114,6 +122,7 @@
materials = list(MAT_METAL = 100)
build_path = /obj/item/weapon/stock_parts/manipulator
category = list("Stock Parts","Machinery","initial")
lathe_time_factor = 0.2
/datum/design/nano_mani
name = "Nano Manipulator"
@@ -124,6 +133,7 @@
materials = list(MAT_METAL = 150)
build_path = /obj/item/weapon/stock_parts/manipulator/nano
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/pico_mani
name = "Pico Manipulator"
@@ -134,6 +144,7 @@
materials = list(MAT_METAL = 200)
build_path = /obj/item/weapon/stock_parts/manipulator/pico
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/femto_mani
name = "Femto Manipulator"
@@ -141,9 +152,10 @@
id = "femto_mani"
req_tech = list("materials" = 7, "programming" = 5, "engineering" = 5, "bluespace" = 5)
build_type = PROTOLATHE
materials = list(MAT_METAL = 200, MAT_DIAMOND = 60)
materials = list(MAT_METAL = 200, MAT_DIAMOND = 30, MAT_TITANIUM = 30)
build_path = /obj/item/weapon/stock_parts/manipulator/femto
category = list("Stock Parts")
lathe_time_factor = 0.2
//Micro-lasers
/datum/design/basic_micro_laser
@@ -155,6 +167,7 @@
materials = list(MAT_METAL = 100, MAT_GLASS = 50)
build_path = /obj/item/weapon/stock_parts/micro_laser
category = list("Stock Parts","Machinery","initial")
lathe_time_factor = 0.2
/datum/design/high_micro_laser
name = "High-Power Micro-Laser"
@@ -165,6 +178,7 @@
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
build_path = /obj/item/weapon/stock_parts/micro_laser/high
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/ultra_micro_laser
name = "Ultra-High-Power Micro-Laser"
@@ -175,6 +189,7 @@
materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_URANIUM = 60)
build_path = /obj/item/weapon/stock_parts/micro_laser/ultra
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/quadultra_micro_laser
name = "Quad-Ultra Micro-Laser"
@@ -185,6 +200,7 @@
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 100, MAT_DIAMOND = 60)
build_path = /obj/item/weapon/stock_parts/micro_laser/quadultra
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/basic_matter_bin
name = "Basic Matter Bin"
@@ -195,6 +211,7 @@
materials = list(MAT_METAL = 100)
build_path = /obj/item/weapon/stock_parts/matter_bin
category = list("Stock Parts","Machinery","initial")
lathe_time_factor = 0.2
/datum/design/adv_matter_bin
name = "Advanced Matter Bin"
@@ -205,6 +222,7 @@
materials = list(MAT_METAL = 150)
build_path = /obj/item/weapon/stock_parts/matter_bin/adv
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/super_matter_bin
name = "Super Matter Bin"
@@ -215,6 +233,7 @@
materials = list(MAT_METAL = 200)
build_path = /obj/item/weapon/stock_parts/matter_bin/super
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/bluespace_matter_bin
name = "Bluespace Matter Bin"
@@ -225,6 +244,7 @@
materials = list(MAT_METAL = 250, MAT_DIAMOND = 200)
build_path = /obj/item/weapon/stock_parts/matter_bin/bluespace
category = list("Stock Parts")
lathe_time_factor = 0.2
//T-Comms devices
/datum/design/subspace_ansible
+19 -21
View File
@@ -29,7 +29,7 @@
req_tech = list("combat" = 4, "materials" = 4, "powerstorage" = 5)
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_GLASS = 10000, MAT_SILVER = 10000)
build_path = /obj/item/weapon/gun/energy/shock_revolver
build_path = /obj/item/weapon/gun/energy/tesla_revolver
category = list("Weapons")
/datum/design/nuclear_gun
@@ -38,17 +38,17 @@
id = "nuclear_gun"
req_tech = list("combat" = 5, "magnets" = 5, "powerstorage" = 5)
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 4000)
build_path = /obj/item/weapon/gun/energy/gun/nuclear
materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 3000, MAT_TITANIUM = 1000)
build_path = /obj/item/weapon/gun/energy/e_gun/nuclear
category = list("Weapons")
/datum/design/tele_shield
name = "Telescopic Riot Shield"
desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
id = "tele_shield"
req_tech = list("combat" = 5, "materials" = 4, "engineering" = 4)
req_tech = list("combat" = 4, "materials" = 3, "engineering" = 4)
build_type = PROTOLATHE
materials = list(MAT_METAL = 4000, MAT_GLASS = 5000, MAT_SILVER = 3000)
materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200)
build_path = /obj/item/weapon/shield/riot/tele
category = list("Weapons")
@@ -69,7 +69,7 @@
req_tech = list("combat" = 5, "materials" = 5, "biotech" = 6, "plasmatech" = 7)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000)
reagents = list("mutagen" = 40)
reagents_list = list("mutagen" = 40)
build_path = /obj/item/weapon/gun/energy/decloner
category = list("Weapons")
@@ -83,16 +83,6 @@
build_path = /obj/item/weapon/gun/syringe/rapidsyringe
category = list("Weapons")
/datum/design/largecrossbow
name = "Energy Crossbow"
desc = "A reverse-engineered energy crossbow favored by syndicate infiltration teams and carp hunters."
id = "largecrossbow"
req_tech = list("combat" = 5, "engineering" = 3, "magnets" = 5, "syndicate" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 1500, MAT_URANIUM = 1500, MAT_SILVER = 1500)
build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large
category = list("Weapons")
/datum/design/temp_gun
name = "Temperature Gun"
desc = "A gun that shoots temperature bullet energythings to change temperature."//Change it if you want
@@ -110,7 +100,7 @@
req_tech = list("materials" = 2, "biotech" = 4)
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_GLASS = 500)
reagents = list("radium" = 20)
reagents_list = list("radium" = 20)
build_path = /obj/item/weapon/gun/energy/floragun
category = list("Weapons")
@@ -163,7 +153,7 @@
id = "xray"
req_tech = list("combat" = 7, "magnets" = 5, "biotech" = 5, "powerstorage" = 4)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000, MAT_METAL = 5000)
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 8000, MAT_METAL = 5000, MAT_TITANIUM = 2000)
build_path = /obj/item/weapon/gun/energy/xray
category = list("Weapons")
@@ -198,8 +188,6 @@
category = list("Weapons")
//WT550 Mags
// Literally cancer - Poojawa
/*
/datum/design/mag_oldsmg
name = "WT-550 Auto Gun Magazine (4.6x30mm)"
@@ -231,7 +219,7 @@
id = "mag_oldsmg_tx"
materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_URANIUM = 2000)
build_path = /obj/item/ammo_box/magazine/wt550m9/wttx
*/
/datum/design/stunshell
name = "Stun Shell"
desc = "A stunning shell for a shotgun."
@@ -271,3 +259,13 @@
materials = list(MAT_SILVER = 8000, MAT_GOLD = 8000, MAT_URANIUM = 8000, MAT_GLASS = 12000, MAT_METAL = 12000, MAT_DIAMOND = 3000)
build_path = /obj/item/weapon/gun/energy/gravity_gun
category = list("Weapons")
/datum/design/largecrossbow
name = "Energy Crossbow"
desc = "A reverse-engineered energy crossbow favored by syndicate infiltration teams and carp hunters."
id = "largecrossbow"
req_tech = list("combat" = 5, "engineering" = 3, "magnets" = 5, "syndicate" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 1500, MAT_URANIUM = 1500, MAT_SILVER = 1500)
build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large
category = list("Weapons")
@@ -1,4 +1,4 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
/*
Destructive Analyzer
@@ -19,7 +19,7 @@ Note: Must be placed within 3 tiles of the R&D Console
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/destructive_analyzer
name = "circuit board (Destructive Analyzer)"
name = "Destructive Analyzer (Machine Board)"
build_path = /obj/machinery/r_n_d/destructive_analyzer
origin_tech = "magnets=2;engineering=2;programming=2"
req_components = list(
@@ -45,7 +45,7 @@ Note: Must be placed within 3 tiles of the R&D Console
..()
/obj/machinery/r_n_d/destructive_analyzer/Insert_Item(obj/item/O, mob/user)
if(user.a_intent != "harm")
if(user.a_intent != INTENT_HARM)
. = 1
if(!is_insertion_ready(user))
return
@@ -61,7 +61,7 @@ Note: Must be placed within 3 tiles of the R&D Console
return
busy = 1
loaded_item = O
O.loc = src
O.forceMove(src)
user << "<span class='notice'>You add the [O.name] to the [src.name]!</span>"
flick("d_analyzer_la", src)
spawn(10)
+11 -12
View File
@@ -89,7 +89,7 @@
SetTypeReactions()
/obj/item/weapon/circuitboard/machine/experimentor
name = "circuit board (E.X.P.E.R.I-MENTOR)"
name = "E.X.P.E.R.I-MENTOR (Machine Board)"
build_path = /obj/machinery/r_n_d/experimentor
origin_tech = "magnets=1;engineering=1;programming=1;biotech=1;bluespace=2"
req_components = list(
@@ -115,7 +115,7 @@
return TRUE
/obj/machinery/r_n_d/experimentor/Insert_Item(obj/item/O, mob/user)
if(user.a_intent != "harm")
if(user.a_intent != INTENT_HARM)
. = 1
if(!is_insertion_ready(user))
return
@@ -237,7 +237,7 @@
else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
visible_message("<span class='danger'>[src] malfunctions and destroys [exp_on], lashing its arms out at nearby people!</span>")
for(var/mob/living/m in oview(1, src))
m.apply_damage(15,"brute",pick("head","chest","groin"))
m.apply_damage(15, BRUTE, pick("head","chest","groin"))
investigate_log("Experimentor dealt minor brute to [m].", "experimentor")
ejectItem(TRUE)
else if(prob(EFFECT_PROB_LOW-badThingCoeff))
@@ -373,7 +373,7 @@
visible_message("<span class='warning'>[src] malfunctions, activating its emergency coolant systems!</span>")
throwSmoke(src.loc)
for(var/mob/living/m in oview(1, src))
m.apply_damage(5,"burn",pick("head","chest","groin"))
m.apply_damage(5, BURN, pick("head","chest","groin"))
investigate_log("Experimentor has dealt minor burn damage to [m]", "experimentor")
ejectItem()
////////////////////////////////////////////////////////////////////////////////////////////////
@@ -436,7 +436,7 @@
investigate_log("Experimentor has triggered the 'throw things' reaction.", "experimentor")
for(var/atom/movable/AM in oview(7,src))
if(!AM.anchored)
AM.throw_at_fast(src,10,1)
AM.throw_at(src,10,1)
else if(prob(EFFECT_PROB_LOW-badThingCoeff))
visible_message("<span class='danger'>[src]'s crusher goes one level too high, crushing right into space-time!</span>")
playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3)
@@ -447,7 +447,7 @@
throwAt.Add(AM)
for(var/counter = 1, counter < throwAt.len, ++counter)
var/atom/movable/cast = throwAt[counter]
cast.throw_at_fast(pick(throwAt),10,1)
cast.throw_at(pick(throwAt),10,1)
ejectItem(TRUE)
////////////////////////////////////////////////////////////////////////////////////////////////
if(exp == FAIL)
@@ -485,7 +485,7 @@
visible_message("<span class='warning'>Experimentor draws the life essence of those nearby!</span>")
for(var/mob/living/m in view(4,src))
m << "<span class='danger'>You feel your flesh being torn from you, mists of blood drifting to [src]!</span>"
m.apply_damage(50,"brute","chest")
m.apply_damage(50, BRUTE, "chest")
investigate_log("Experimentor has taken 50 brute a blood sacrifice from [m]", "experimentor")
if(globalMalf > 51 && globalMalf < 75)
visible_message("<span class='warning'>[src] encounters a run-time error!</span>")
@@ -615,20 +615,19 @@
spawn(cooldownMax)
cooldown = FALSE
else
user << "<span class='notice'>You aren't quite sure what to do with this, yet.</span>"
user << "<span class='notice'>You aren't quite sure what to do with this yet.</span>"
//////////////// RELIC PROCS /////////////////////////////
/obj/item/weapon/relic/proc/throwSmoke(turf/where)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, where)
smoke.set_up(0, get_turf(where))
smoke.start()
/obj/item/weapon/relic/proc/corgicannon(mob/user)
playsound(src.loc, "sparks", rand(25,50), 1)
var/mob/living/simple_animal/pet/dog/corgi/C = new/mob/living/simple_animal/pet/dog/corgi(get_turf(user))
C.throw_at(pick(oview(10,user)),10,rand(3,8))
throwSmoke(get_turf(C))
C.throw_at(pick(oview(10,user)), 10, rand(3,8), callback = CALLBACK(src, .throwSmoke, C))
warn_admins(user, "Corgi Cannon", 0)
/obj/item/weapon/relic/proc/clean(mob/user)
@@ -671,7 +670,7 @@
R.realProc = realProc
R.revealed = TRUE
dupes |= R
R.throw_at_fast(pick(oview(7,get_turf(src))),10,1)
R.throw_at(pick(oview(7,get_turf(src))),10,1)
counter = 0
spawn(rand(10,100))
for(counter = 1; counter <= dupes.len; counter++)
+3 -1
View File
@@ -114,7 +114,6 @@ var/global/list/obj/machinery/message_server/message_servers = list()
rc_msgs += new/datum/data_rc_msg(recipient,sender,message,stamp,id_auth)
/obj/machinery/message_server/attack_hand(mob/user)
// user << "\blue There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few Centcom delays."
user << "You toggle PDA message passing from [active ? "On" : "Off"] to [active ? "Off" : "On"]"
active = !active
update_icon()
@@ -202,6 +201,7 @@ var/obj/machinery/blackbox_recorder/blackbox
use_power = 1
idle_power_usage = 10
active_power_usage = 100
armor = list(melee = 25, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70)
var/list/messages = list() //Stores messages of non-standard frequencies
var/list/messages_admin = list()
@@ -223,8 +223,10 @@ var/obj/machinery/blackbox_recorder/blackbox
if (blackbox)
if (istype(blackbox,/obj/machinery/blackbox_recorder))
qdel(src)
return
blackbox = src
/obj/machinery/blackbox_recorder/Destroy()
var/turf/T = locate(1,1,2)
if (T)
+8 -7
View File
@@ -11,7 +11,7 @@ Note: Must be placed west/left of and R&D console to function.
name = "Protolathe"
desc = "Converts raw materials into useful objects."
icon_state = "protolathe"
flags = OPENCONTAINER
container_type = OPENCONTAINER
var/datum/material_container/materials
var/efficiency_coeff
@@ -26,19 +26,20 @@ Note: Must be placed west/left of and R&D console to function.
"Electronics",
"Weapons",
"Ammo",
"Firing Pins"
"Firing Pins",
"Computer Parts"
)
/obj/machinery/r_n_d/protolathe/New()
..()
create_reagents(0)
materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM))
materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM))
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/protolathe(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/protolathe
name = "circuit board (Protolathe)"
name = "Protolathe (Machine Board)"
build_path = /obj/machinery/r_n_d/protolathe
origin_tech = "engineering=2;programming=2"
req_components = list(
@@ -66,7 +67,7 @@ Note: Must be placed west/left of and R&D console to function.
efficiency_coeff = min(max(0, T), 1)
/obj/machinery/r_n_d/protolathe/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material
var/list/all_materials = being_built.reagents + being_built.materials
var/list/all_materials = being_built.reagents_list + being_built.materials
var/A = materials.amount(M)
if(!A)
@@ -75,7 +76,7 @@ Note: Must be placed west/left of and R&D console to function.
return round(A / max(1, (all_materials[M]*efficiency_coeff)))
//we eject the materials upon deconstruction.
/obj/machinery/r_n_d/protolathe/deconstruction()
/obj/machinery/r_n_d/protolathe/on_deconstruction()
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
reagents.trans_to(G, G.reagents.maximum_volume)
materials.retrieve_all()
@@ -118,7 +119,7 @@ Note: Must be placed west/left of and R&D console to function.
busy = 0
updateUsrDialog()
else if(user.a_intent != "harm")
else if(user.a_intent != INTENT_HARM)
user << "<span class='warning'>You cannot insert this item into the [name]!</span>"
return 1
else
+129 -83
View File
@@ -22,8 +22,8 @@ operations to skip that console. This is useful if you want to make a "public" R
a circuit imprinter with certain designs on it and don't want it accidentally updating. The downside of this method is that you have
to have physical access to the other console to send data back. Note: An R&D console is on Centcom so if a random griffan happens to
cause a ton of data to be lost, an admin can go send it back.
- The second method is with Technology Disks and Design Disks. Each of these disks can hold a single technology or design datum in
it's entirety. You can then take the disk to any R&D console and upload it's data to it. This method is a lot more secure (since it
- The second method is with Technology Disks and Design Disks. Each of these disks can hold technology or design datums in
their entirety. You can then take the disk to any R&D console and upload it's data to it. This method is a lot more secure (since it
won't update every console in existence) but it's more of a hassle to do. Also, the disks can be stolen.
@@ -34,7 +34,6 @@ won't update every console in existence) but it's more of a hassle to do. Also,
icon_screen = "rdcomp"
icon_keyboard = "rd_key"
circuit = /obj/item/weapon/circuitboard/computer/rdconsole
light_color = LIGHT_COLOR_PINK
var/datum/research/files //Stores all the collected research data.
var/obj/item/weapon/disk/tech_disk/t_disk = null //Stores the technology disk.
var/obj/item/weapon/disk/design_disk/d_disk = null //Stores the design disk.
@@ -52,6 +51,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/selected_category
var/list/datum/design/matching_designs = list() //for the search function
var/disk_slot_selected = 0
/proc/CallTechName(ID) //A simple helper proc to find the name of a tech with a given ID.
@@ -105,9 +105,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
files = new /datum/research(src) //Setup the research data holder.
matching_designs = list()
if(!id)
for(var/obj/machinery/r_n_d/server/centcom/S in machines)
S.initialize()
break
fix_noid_research_servers()
/* Instead of calling this every tick, it is only being called when needed
/obj/machinery/computer/rdconsole/process()
@@ -122,8 +120,10 @@ won't update every console in existence) but it's more of a hassle to do. Also,
user << "A disk is already loaded into the machine."
return
if(istype(D, /obj/item/weapon/disk/tech_disk)) t_disk = D
else if (istype(D, /obj/item/weapon/disk/design_disk)) d_disk = D
if(istype(D, /obj/item/weapon/disk/tech_disk))
t_disk = D
else if (istype(D, /obj/item/weapon/disk/design_disk))
d_disk = D
else
user << "<span class='danger'>Machine cannot accept disks in that format.</span>"
return
@@ -136,7 +136,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
updateUsrDialog()
/obj/machinery/computer/rdconsole/deconstruction()
/obj/machinery/computer/rdconsole/on_deconstruction()
if(linked_destroy)
linked_destroy.linked_console = null
linked_destroy = null
@@ -162,6 +162,9 @@ won't update every console in existence) but it's more of a hassle to do. Also,
add_fingerprint(usr)
usr.set_machine(src)
if(href_list["disk_slot"])
disk_slot_selected = text2num(href_list["disk_slot"])
if(href_list["menu"]) //Switches menu screens. Converts a sent text string into a number. Saves a LOT of code.
var/temp_screen = text2num(href_list["menu"])
screen = temp_screen
@@ -170,16 +173,33 @@ won't update every console in existence) but it's more of a hassle to do. Also,
selected_category = href_list["category"]
else if(href_list["updt_tech"]) //Update the research holder with information from the technology disk.
var/n = text2num(href_list["updt_tech"])
screen = 0.0
spawn(50)
var/wait = 50
if(!n)
wait = 0
for(var/D in t_disk.tech_stored)
if(D)
wait += 50
spawn(wait)
screen = 1.2
files.AddTech2Known(t_disk.stored)
updateUsrDialog()
griefProtection() //Update centcom too
if(t_disk)
if(!n)
for(var/tech in t_disk.tech_stored)
files.AddTech2Known(tech)
else
files.AddTech2Known(t_disk.tech_stored[n])
updateUsrDialog()
griefProtection() //Update centcom too
else if(href_list["clear_tech"]) //Erase data on the technology disk.
if(t_disk)
t_disk.stored = null
var/n = text2num(href_list["clear_tech"])
if(!n)
for(var/i in 1 to t_disk.max_tech_stored)
t_disk.tech_stored[i] = null
else
t_disk.tech_stored[n] = null
else if(href_list["eject_tech"]) //Eject the technology disk.
if(t_disk)
@@ -188,20 +208,41 @@ won't update every console in existence) but it's more of a hassle to do. Also,
screen = 1.0
else if(href_list["copy_tech"]) //Copy some technology data from the research holder to the disk.
t_disk.stored = files.known_tech[href_list["copy_tech_ID"]]
var/slot = text2num(href_list["copy_tech"])
var/datum/tech/T = files.known_tech[href_list["copy_tech_ID"]]
if(T)
t_disk.tech_stored[slot] = T.copy()
screen = 1.2
else if(href_list["updt_design"]) //Updates the research holder with design data from the design disk.
var/n = text2num(href_list["updt_design"])
screen = 0.0
spawn(50)
var/wait = 50
if(!n)
wait = 0
for(var/D in d_disk.blueprints)
if(D)
wait += 50
spawn(wait)
screen = 1.4
files.AddDesign2Known(d_disk.blueprint)
updateUsrDialog()
griefProtection() //Update centcom too
if(d_disk)
if(!n)
for(var/D in d_disk.blueprints)
if(D)
files.AddDesign2Known(D)
else
files.AddDesign2Known(d_disk.blueprints[n])
updateUsrDialog()
griefProtection() //Update centcom too
else if(href_list["clear_design"]) //Erases data on the design disk.
if(d_disk)
d_disk.blueprint = null
var/n = text2num(href_list["clear_design"])
if(!n)
for(var/i in 1 to d_disk.max_blueprints)
d_disk.blueprints[i] = null
else
d_disk.blueprints[n] = null
else if(href_list["eject_design"]) //Eject the design disk.
if(d_disk)
@@ -210,10 +251,11 @@ won't update every console in existence) but it's more of a hassle to do. Also,
screen = 1.0
else if(href_list["copy_design"]) //Copy design data from the research holder to the design disk.
var/slot = text2num(href_list["copy_design"])
var/datum/design/D = files.known_designs[href_list["copy_design_ID"]]
if(D)
var/autolathe_friendly = 1
if(D.reagents.len)
if(D.reagents_list.len)
autolathe_friendly = 0
D.category -= "Imported"
else
@@ -225,7 +267,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(D.build_type & (AUTOLATHE|PROTOLATHE|CRAFTLATHE)) // Specifically excludes circuit imprinter and mechfab
D.build_type = autolathe_friendly ? (D.build_type | AUTOLATHE) : D.build_type
D.category |= "Imported"
d_disk.blueprint = D
d_disk.blueprints[slot] = D
screen = 1.4
else if(href_list["eject_item"]) //Eject the item inside the destructive analyzer.
@@ -234,7 +276,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
usr << "<span class='danger'>The destructive analyzer is busy at the moment.</span>"
else if(linked_destroy.loaded_item)
linked_destroy.loaded_item.loc = linked_destroy.loc
linked_destroy.loaded_item.forceMove(linked_destroy.loc)
linked_destroy.loaded_item = null
linked_destroy.icon_state = "d_analyzer"
screen = 1.0
@@ -342,6 +384,9 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/datum/design/being_built = files.known_designs[href_list["build"]]
var/amount = text2num(href_list["amount"])
if(being_built.make_reagents.len)
return 0
if(!linked_lathe || !being_built || !amount)
updateUsrDialog()
return
@@ -380,18 +425,21 @@ won't update every console in existence) but it's more of a hassle to do. Also,
enough_materials = 0
g2g = 0
else
for(var/R in being_built.reagents)
if(!linked_lathe.reagents.has_reagent(R, being_built.reagents[R]*coeff))
for(var/R in being_built.reagents_list)
if(!linked_lathe.reagents.has_reagent(R, being_built.reagents_list[R]*coeff))
linked_lathe.say("Not enough reagents to complete prototype.")
enough_materials = 0
g2g = 0
if(enough_materials)
linked_lathe.materials.use_amount(efficient_mats, amount)
for(var/R in being_built.reagents)
linked_lathe.reagents.remove_reagent(R, being_built.reagents[R]*coeff)
for(var/R in being_built.reagents_list)
linked_lathe.reagents.remove_reagent(R, being_built.reagents_list[R]*coeff)
var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes.
coeff *= being_built.lathe_time_factor
spawn(32*coeff*amount**0.8)
if(linked_lathe)
if(g2g) //And if we only fail the material requirements, we still spend time and power
@@ -453,16 +501,16 @@ won't update every console in existence) but it's more of a hassle to do. Also,
enough_materials = 0
g2g = 0
else
for(var/R in being_built.reagents)
if(!linked_imprinter.reagents.has_reagent(R, being_built.reagents[R]/coeff))
for(var/R in being_built.reagents_list)
if(!linked_imprinter.reagents.has_reagent(R, being_built.reagents_list[R]/coeff))
linked_imprinter.say("Not enough reagents to complete prototype.")
enough_materials = 0
g2g = 0
if(enough_materials)
linked_imprinter.materials.use_amount(efficient_mats)
for(var/R in being_built.reagents)
linked_imprinter.reagents.remove_reagent(R, being_built.reagents[R]/coeff)
for(var/R in being_built.reagents_list)
linked_imprinter.reagents.remove_reagent(R, being_built.reagents_list[R]/coeff)
var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes.
spawn(16)
@@ -522,7 +570,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
else if(href_list["reset"]) //Reset the R&D console's database.
griefProtection()
var/choice = alert("R&D Console Database Reset", "Are you sure you want to reset the R&D console's database? Data lost cannot be recovered.", "Continue", "Cancel")
if(choice == "Continue")
if(choice == "Continue" && usr.canUseTopic(src))
message_admins("[key_name_admin(usr)] reset \the [src.name]'s database")
log_game("[key_name_admin(usr)] reset \the [src.name]'s database")
screen = 0.0
@@ -640,22 +688,19 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "</div>"
if(1.2) //Technology Disk Menu
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A><HR>"
dat += "<div class='statusDisplay'>Technology Data Disk Contents:<BR><BR>"
if(t_disk.stored == null)
dat += "The disk has no data stored on it.</div>"
dat += "Operations: "
dat += "<A href='?src=\ref[src];menu=1.3'>Load Tech to Disk</A>"
else
dat += "Name: [t_disk.stored.name]<BR>"
dat += "Level: [t_disk.stored.level]<BR>"
dat += "Description: [t_disk.stored.desc]</div>"
dat += "Operations: "
dat += "<A href='?src=\ref[src];updt_tech=1'>Upload to Database</A>"
dat += "<A href='?src=\ref[src];clear_tech=1'>Clear Disk</A>"
dat += "<A href='?src=\ref[src];eject_tech=1'>Eject Disk</A>"
dat += "Disk Operations: <A href='?src=\ref[src];clear_tech=0'>Clear Disk</A><A href='?src=\ref[src];updt_tech=0'>Upload All</A><A href='?src=\ref[src];eject_tech=1'>Eject Disk</A>"
for(var/i in 1 to t_disk.max_tech_stored)
dat += "<div class='statusDisplay'>"
if(t_disk.tech_stored[i])
var/datum/tech/tech = t_disk.tech_stored[i]
dat += "Name: [tech.name]<BR>"
dat += "Level: [tech.level]<BR>"
dat += "Description: [tech.desc]<BR>"
dat += "Operations: <A href='?src=\ref[src];updt_tech=[i]'>Upload to Database</A><A href='?src=\ref[src];clear_tech=[i]'>Clear Slot</A>"
else
dat += "Empty Slot<BR>Operations: <A href='?src=\ref[src];menu=1.3;disk_slot=[i]'>Load Tech to Slot</A>"
dat += "</div>"
if(1.3) //Technology Disk submenu
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
dat += "<A href='?src=\ref[src];menu=1.2'>Return to Disk Operations</A><div class='statusDisplay'>"
@@ -664,42 +709,41 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/datum/tech/T = files.known_tech[v]
if(T.level <= 0)
continue
dat += "[T.name] "
dat += "<A href='?src=\ref[src];copy_tech=1;copy_tech_ID=[T.id]'>Copy to Disk</A><BR>"
dat += "[T.name]"
dat += "<A href='?src=\ref[src];copy_tech=[disk_slot_selected];copy_tech_ID=[T.id]'>Copy to Disk</A><BR>"
dat += "</div>"
if(1.4) //Design Disk menu.
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A><div class='statusDisplay'>"
if(d_disk.blueprint == null)
dat += "The disk has no data stored on it.</div>"
dat += "Operations: "
dat += "<A href='?src=\ref[src];menu=1.5'>Load Design to Disk</A>"
else
dat += "Name: [d_disk.blueprint.name]<BR>"
var/b_type = d_disk.blueprint.build_type
if(b_type)
dat += "Lathe Types:<BR>"
if(b_type & IMPRINTER) dat += "Circuit Imprinter<BR>"
if(b_type & PROTOLATHE) dat += "Protolathe<BR>"
if(b_type & AUTOLATHE) dat += "Autolathe<BR>"
if(b_type & MECHFAB) dat += "Exosuit Fabricator<BR>"
dat += "Required Materials:<BR>"
var/all_mats = d_disk.blueprint.materials + d_disk.blueprint.reagents
for(var/M in all_mats)
dat += "* [CallMaterialName(M)] x [all_mats[M]]<BR>"
dat += "</div>Operations: "
dat += "<A href='?src=\ref[src];updt_design=1'>Upload to Database</A>"
dat += "<A href='?src=\ref[src];clear_design=1'>Clear Disk</A>"
dat += "<A href='?src=\ref[src];eject_design=1'>Eject Disk</A>"
if(1.5) //Technology disk submenu
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A><HR>"
dat += "Disk Operations: <A href='?src=\ref[src];clear_design=0'>Clear Disk</A><A href='?src=\ref[src];updt_design=0'>Upload All</A><A href='?src=\ref[src];eject_design=1'>Eject Disk</A>"
for(var/i in 1 to d_disk.max_blueprints)
dat += "<div class='statusDisplay'>"
if(d_disk.blueprints[i])
var/datum/design/D = d_disk.blueprints[i]
dat += "Name: [D.name]<BR>"
if(D.build_type)
dat += "Lathe Types:<BR>"
if(D.build_type & IMPRINTER) dat += "Circuit Imprinter<BR>"
if(D.build_type & PROTOLATHE) dat += "Protolathe<BR>"
if(D.build_type & AUTOLATHE) dat += "Autolathe<BR>"
if(D.build_type & MECHFAB) dat += "Exosuit Fabricator<BR>"
if(D.build_type & BIOGENERATOR) dat += "Biogenerator<BR>"
dat += "Required Materials:<BR>"
var/all_mats = D.materials + D.reagents_list
for(var/M in all_mats)
dat += "* [CallMaterialName(M)] x [all_mats[M]]<BR>"
dat += "Operations: <A href='?src=\ref[src];updt_design=[i]'>Upload to Database</A> <A href='?src=\ref[src];clear_design=[i]'>Clear Slot</A>"
else
dat += "Empty Slot<BR>Operations: <A href='?src=\ref[src];menu=1.5;disk_slot=[i]'>Load Design to Slot</A>"
dat += "</div>"
if(1.5) //Design disk submenu
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
dat += "<A href='?src=\ref[src];menu=1.4'>Return to Disk Operations</A><div class='statusDisplay'>"
dat += "<h3>Load Design to Disk:</h3><BR>"
for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v]
dat += "[D.name] "
dat += "<A href='?src=\ref[src];copy_design=1;copy_design_ID=[D.id]'>Copy to Disk</A><BR>"
dat += "<A href='?src=\ref[src];copy_design=[disk_slot_selected];copy_design_ID=[D.id]'>Copy to Disk</A><BR>"
dat += "</div>"
if(1.6) //R&D console settings
@@ -806,7 +850,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/c = 50
var/t
var/all_materials = D.materials + D.reagents
var/all_materials = D.materials + D.reagents_list
for(var/M in all_materials)
t = linked_lathe.check_mat(D, M)
temp_material += " | "
@@ -840,13 +884,14 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/temp_material
var/c = 50
var/t
for(var/M in D.materials)
var/all_materials = D.materials + D.reagents_list
for(var/M in all_materials)
t = linked_lathe.check_mat(D, M)
temp_material += " | "
if (t < 1)
temp_material += "<span class='bad'>[D.materials[M]*coeff] [CallMaterialName(M)]</span>"
temp_material += "<span class='bad'>[all_materials[M]*coeff] [CallMaterialName(M)]</span>"
else
temp_material += " [D.materials[M]*coeff] [CallMaterialName(M)]"
temp_material += " [all_materials[M]*coeff] [CallMaterialName(M)]"
c = min(c,t)
if (c >= 1)
@@ -924,7 +969,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/temp_materials
var/check_materials = 1
var/all_materials = D.materials + D.reagents
var/all_materials = D.materials + D.reagents_list
for(var/M in all_materials)
temp_materials += " | "
@@ -950,13 +995,14 @@ won't update every console in existence) but it's more of a hassle to do. Also,
for(var/datum/design/D in matching_designs)
var/temp_materials
var/check_materials = 1
for(var/M in D.materials)
var/all_materials = D.materials + D.reagents_list
for(var/M in all_materials)
temp_materials += " | "
if (!linked_imprinter.check_mat(D, M))
check_materials = 0
temp_materials += " <span class='bad'>[D.materials[M]/coeff] [CallMaterialName(M)]</span>"
temp_materials += " <span class='bad'>[all_materials[M]/coeff] [CallMaterialName(M)]</span>"
else
temp_materials += " [D.materials[M]/coeff] [CallMaterialName(M)]"
temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]"
if (check_materials)
dat += "<A href='?src=\ref[src];imprint=[D.id]'>[D.name]</A>[temp_materials]<BR>"
else
@@ -1022,7 +1068,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
/obj/machinery/computer/rdconsole/robotics/New()
..()
if(circuit)
circuit.name = "circuit board (RD Console - Robotics)"
circuit.name = "RD Console - Robotics (Computer Board)"
circuit.build_path = /obj/machinery/computer/rdconsole/robotics
/obj/machinery/computer/rdconsole/core
+5 -5
View File
@@ -1,4 +1,4 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
//All devices that link into the R&D console fall into thise type for easy identification and some shared procs.
@@ -33,7 +33,7 @@
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(5, 1, src)
s.start()
if (electrocute_mob(user, get_area(src), src, 0.7))
if (electrocute_mob(user, get_area(src), src, 0.7, TRUE))
return 1
else
return 0
@@ -59,7 +59,7 @@
return
if(default_deconstruction_crowbar(O))
return
if((flags & OPENCONTAINER) && O.is_open_container())
if(is_open_container() && O.is_open_container())
return 0 //inserting reagents into the machine
if(Insert_Item(O, user))
return 1
@@ -105,7 +105,7 @@
//we eject the loaded item when deconstructing the machine
/obj/machinery/r_n_d/deconstruction()
/obj/machinery/r_n_d/on_deconstruction()
if(loaded_item)
loaded_item.loc = loc
loaded_item.forceMove(loc)
..()
+70 -5
View File
@@ -84,12 +84,14 @@ research holder datum.
//Adds a tech to known_tech list. Checks to make sure there aren't duplicates and updates existing tech's levels if needed.
//Input: datum/tech; Output: Null
/datum/research/proc/AddTech2Known(datum/tech/T)
if(!T)
return
if(known_tech[T.id])
var/datum/tech/known = known_tech[T.id]
if(T.level > known.level)
known.level = T.level
return
known_tech[T.id] = T
known_tech[T.id] = T.copy()
/datum/research/proc/AddDesign2Known(datum/design/D)
if(known_designs[D.id])
@@ -143,11 +145,37 @@ research holder datum.
if((D.build_type & AUTOLATHE) && ("initial" in D.category)) //autolathe starts without hacked designs
AddDesign2Known(D)
//Limb Grower files
/datum/research/limbgrower/New()
for(var/T in (subtypesof(/datum/tech)))
possible_tech += new T(src)
for(var/path in subtypesof(/datum/design))
var/datum/design/D = new path(src)
possible_designs += D
if((D.build_type & LIMBGROWER) && ("initial" in D.category))
AddDesign2Known(D)
/datum/research/autolathe/AddDesign2Known(datum/design/D)
if(!(D.build_type & AUTOLATHE))
return
..()
//Biogenerator files
/datum/research/biogenerator/New()
for(var/T in (subtypesof(/datum/tech)))
possible_tech += new T(src)
for(var/path in subtypesof(/datum/design))
var/datum/design/D = new path(src)
possible_designs += D
if((D.build_type & BIOGENERATOR) && ("initial" in D.category))
AddDesign2Known(D)
/datum/research/biogenerator/AddDesign2Known(datum/design/D)
if(!(D.build_type & BIOGENERATOR))
return
..()
/***************************************************************
** Technology Datums **
** Includes all the various technoliges and what they make. **
@@ -272,13 +300,50 @@ research holder datum.
return cost
/datum/tech/proc/copy()
var/datum/tech/T = new type()
T.level = level
return T
/obj/item/weapon/disk/tech_disk
name = "Technology Disk"
name = "technology disk"
desc = "A disk for storing technology data for further research."
icon_state = "datadisk0"
materials = list(MAT_METAL=30, MAT_GLASS=10)
var/datum/tech/stored
materials = list(MAT_METAL=300, MAT_GLASS=100)
var/list/tech_stored = list()
var/max_tech_stored = 1
/obj/item/weapon/disk/tech_disk/New()
..()
src.pixel_x = rand(-5, 5)
src.pixel_y = rand(-5, 5)
src.pixel_y = rand(-5, 5)
for(var/i in 1 to max_tech_stored)
tech_stored += null
/obj/item/weapon/disk/tech_disk/adv
name = "advanced technology disk"
desc = "A disk for storing technology data for further research. This one has extra storage space."
materials = list(MAT_METAL=300, MAT_GLASS=100, MAT_SILVER=50)
max_tech_stored = 5
/obj/item/weapon/disk/tech_disk/super_adv
name = "quantum technology disk"
desc = "A disk for storing technology data for further research. This one has extremely large storage space."
materials = list(MAT_METAL=300, MAT_GLASS=100, MAT_SILVER=100, MAT_GOLD=100)
max_tech_stored = 10
/obj/item/weapon/disk/tech_disk/debug
name = "centcomm technology disk"
desc = "A debug item for research"
materials = list()
max_tech_stored = 0
/obj/item/weapon/disk/tech_disk/debug/New()
..()
var/list/techs = subtypesof(/datum/tech)
max_tech_stored = techs.len
for(var/V in techs)
var/datum/tech/T = new V()
tech_stored += T
T.level = 8
+15 -20
View File
@@ -3,7 +3,7 @@
icon = 'icons/obj/machines/research.dmi'
icon_state = "server"
var/datum/research/files
var/health = 100
var/heat_health = 100
var/list/id_with_upload = list() //List of R&D consoles with upload to server access.
var/list/id_with_download = list() //List of R&D consoles with download from server access.
var/id_with_upload_string = "" //String versions for easy editing in map editor.
@@ -18,10 +18,9 @@
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/rdserver(null)
B.apply_default_parts(src)
initialize() //Agouri
/obj/item/weapon/circuitboard/machine/rdserver
name = "circuit board (R&D Server)"
name = "R&D Server (Machine Board)"
build_path = /obj/machinery/r_n_d/server
origin_tech = "programming=3"
req_components = list(
@@ -38,7 +37,8 @@
tot_rating += SP.rating
heat_gen /= max(1, tot_rating)
/obj/machinery/r_n_d/server/initialize()
/obj/machinery/r_n_d/server/Initialize(mapload)
..()
if(!files) files = new /datum/research(src)
var/list/temp_list
if(!id_with_upload.len)
@@ -56,12 +56,12 @@
var/datum/gas_mixture/environment = loc.return_air()
switch(environment.temperature)
if(0 to T0C)
health = min(100, health + 1)
heat_health = min(100, heat_health + 1)
if(T0C to (T20C + 20))
health = Clamp(health, 0, 100)
heat_health = Clamp(heat_health, 0, 100)
if((T20C + 20) to (T0C + 70))
health = max(0, health - 1)
if(health <= 0)
heat_health = max(0, heat_health - 1)
if(heat_health <= 0)
/*griefProtection() This seems to get called twice before running any code that deletes/damages the server or it's files anwyay.
refreshParts and the hasReq procs that get called by this are laggy and do not need to be called by every server on the map every tick */
var/updateRD = 0
@@ -84,18 +84,10 @@
griefProtection()
..()
/obj/machinery/r_n_d/server/ex_act(severity, target)
griefProtection()
..()
/obj/machinery/r_n_d/server/blob_act(obj/effect/blob/B)
griefProtection()
..()
//Backup files to centcom to help admins recover data after greifer attacks
/obj/machinery/r_n_d/server/proc/griefProtection()
for(var/obj/machinery/r_n_d/server/centcom/C in machines)
@@ -129,7 +121,7 @@
air_update_turf()
//called when the server is deconstructed.
/obj/machinery/r_n_d/server/deconstruction()
/obj/machinery/r_n_d/server/on_deconstruction()
griefProtection()
..()
@@ -144,8 +136,11 @@
name = "Centcom Central R&D Database"
server_id = -1
/obj/machinery/r_n_d/server/centcom/initialize()
/obj/machinery/r_n_d/server/centcom/Initialize()
..()
fix_noid_research_servers()
/proc/fix_noid_research_servers()
var/list/no_id_servers = list()
var/list/server_ids = list()
for(var/obj/machinery/r_n_d/server/S in machines)
@@ -234,7 +229,7 @@
else if(href_list["reset_tech"])
var/choice = alert("Technology Data Reset", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel")
if(choice == "Continue")
if(choice == "Continue" && usr.canUseTopic(src))
var/datum/tech/T = temp_server.files.known_tech[href_list["reset_tech"]]
if(T)
T.level = 1
@@ -242,7 +237,7 @@
else if(href_list["reset_design"])
var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? Data lost cannot be recovered.", "Continue", "Cancel")
if(choice == "Continue")
if(choice == "Continue" && usr.canUseTopic(src))
var/datum/design/D = temp_server.files.known_designs[href_list["reset_design"]]
if(D)
temp_server.files.known_designs -= D.id
+8 -8
View File
@@ -4,7 +4,7 @@
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
icon_state = "RPED"
item_state = "RPED"
w_class = 5
w_class = WEIGHT_CLASS_HUGE
can_hold = list(/obj/item/weapon/stock_parts)
storage_slots = 50
use_to_pickup = 1
@@ -12,7 +12,7 @@
allow_quick_empty = 1
collection_mode = 1
display_contents_with_number = 1
max_w_class = 3
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 100
var/works_from_distance = 0
var/pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/rped.ogg'
@@ -25,16 +25,16 @@
if(istype(T))
if(T.component_parts)
T.exchange_parts(user, src)
user.Beam(T,icon_state="rped_upgrade",icon='icons/effects/effects.dmi',time=5)
user.Beam(T,icon_state="rped_upgrade",time=5)
return
/obj/item/weapon/storage/part_replacer/bluespace
name = "bluespace rapid part exchange device"
desc = "A version of the RPED that allows for replacement of parts and scanning from a distance, along with higher capacity for parts."
icon_state = "BS_RPED"
w_class = 3
w_class = WEIGHT_CLASS_NORMAL
storage_slots = 400
max_w_class = 3
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 800
works_from_distance = 1
pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/PSHOOM.ogg'
@@ -45,7 +45,7 @@
if(get_dist(user, dest_object) < 8)
if(dest_object.storage_contents_dump_act(src, user))
play_rped_sound()
user.Beam(dest_object,icon_state="rped_upgrade",icon='icons/effects/effects.dmi',time=5)
user.Beam(dest_object,icon_state="rped_upgrade",time=5)
return 1
user << "The [src.name] buzzes."
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
@@ -67,7 +67,7 @@
name = "stock part"
desc = "What?"
icon = 'icons/obj/stock_parts.dmi'
w_class = 2
w_class = WEIGHT_CLASS_SMALL
var/rating = 1
/obj/item/weapon/stock_parts/New()
@@ -301,4 +301,4 @@
icon = 'icons/obj/stock_parts.dmi'
icon_state = "capacitor"
desc = "A debug item for research."
origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8;engineering=8;plasmatech=8"
origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8;engineering=8;plasmatech=8;abductor=8"
@@ -3,11 +3,16 @@
visible_icon = 1
icon = 'icons/obj/abductor.dmi'
icon_state = "camera_target"
var/allowed_area = null
/mob/camera/aiEye/remote/xenobio/New(loc)
var/area/A = get_area(loc)
allowed_area = A.name
..()
/mob/camera/aiEye/remote/xenobio/setLoc(var/t)
var/area/new_area = get_area(t)
if(new_area && new_area.name == "Xenobiology Lab" || istype(new_area, /area/toxins/xenobiology ))
if(new_area && new_area.name == allowed_area || istype(new_area, /area/toxins/xenobiology ))
return ..()
else
return
@@ -16,6 +21,7 @@
name = "Slime management console"
desc = "A computer used for remotely handling slimes."
networks = list("SS13")
circuit = /obj/item/weapon/circuitboard/computer/xenobiology
off_action = new/datum/action/innate/camera_off/xenobio
var/datum/action/innate/slime_place/slime_place_action = new
var/datum/action/innate/slime_pick_up/slime_up_action = new
@@ -28,11 +34,9 @@
icon_screen = "slime_comp"
icon_keyboard = "rd_key"
light_color = LIGHT_COLOR_PINK
/obj/machinery/computer/camera_advanced/xenobio/CreateEye()
eyeobj = new /mob/camera/aiEye/remote/xenobio()
eyeobj.loc = get_turf(src)
eyeobj = new /mob/camera/aiEye/remote/xenobio(get_turf(src))
eyeobj.origin = src
eyeobj.visible_icon = 1
eyeobj.icon = 'icons/obj/abductor.dmi'
@@ -66,10 +70,21 @@
/obj/machinery/computer/camera_advanced/xenobio/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube))
monkeys++
user << "<span class='notice'>You feed [O] to the [src]. It now has [monkeys] monkey cubes stored.</span>"
user << "<span class='notice'>You feed [O] to [src]. It now has [monkeys] monkey cubes stored.</span>"
user.drop_item()
qdel(O)
return
else if(istype(O, /obj/item/weapon/storage/bag))
var/obj/item/weapon/storage/P = O
var/loaded = 0
for(var/obj/G in P.contents)
if(istype(G, /obj/item/weapon/reagent_containers/food/snacks/monkeycube))
loaded = 1
monkeys++
qdel(G)
if (loaded)
user << "<span class='notice'>You fill [src] with the monkey cubes stored in [O]. [src] now has [monkeys] monkey cubes stored.</span>"
return
..()
/datum/action/innate/camera_off/xenobio/Activate()
@@ -7,12 +7,13 @@
icon = 'icons/mob/slimes.dmi'
icon_state = "grey slime extract"
force = 1
w_class = 1
w_class = WEIGHT_CLASS_TINY
throwforce = 0
throw_speed = 3
throw_range = 6
origin_tech = "biotech=3"
var/Uses = 1 // uses before it goes inert
var/qdel_timer = null // deletion timer, for delayed reactions
/obj/item/slime_extract/attackby(obj/item/O, mob/user)
if(istype(O, /obj/item/slimepotion/enhancer))
@@ -121,7 +122,7 @@
/obj/item/slimepotion
name = "slime potion"
desc = "A hard yet gelatinous capsule excreted by a slime, containing mysterious substances."
w_class = 1
w_class = WEIGHT_CLASS_TINY
origin_tech = "biotech=4"
/obj/item/slimepotion/afterattack(obj/item/weapon/reagent_containers/target, mob/user , proximity)
@@ -133,7 +134,7 @@
name = "docility potion"
desc = "A potent chemical mix that nullifies a slime's hunger, causing it to become docile and tame."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle19"
icon_state = "potsilver"
/obj/item/slimepotion/docility/attack(mob/living/simple_animal/slime/M, mob/user)
if(!isslime(M))
@@ -156,10 +157,10 @@
qdel(src)
/obj/item/slimepotion/sentience
name = "sentience potion"
desc = "A miraculous chemical mix that can raise the intelligence of creatures to human levels. Unlike normal slime potions, it can be absorbed by any nonsentient being."
name = "intelligence potion"
desc = "A miraculous chemical mix that grants human like intelligence to living beings."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle19"
icon_state = "potpink"
origin_tech = "biotech=6"
var/list/not_interested = list()
var/being_used = 0
@@ -184,17 +185,17 @@
user << "<span class='notice'>You offer the sentience potion to [SM]...</span>"
being_used = 1
var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as [SM.name]?", ROLE_ALIEN, null, ROLE_ALIEN, 50)
var/list/candidates = pollCandidatesForMob("Do you want to play as [SM.name]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, SM, POLL_IGNORE_SENTIENCE_POTION) // see poll_ignore.dm
var/mob/dead/observer/theghost = null
if(candidates.len)
theghost = pick(candidates)
SM.key = theghost.key
SM.languages_spoken |= HUMAN
SM.languages_understood |= HUMAN
SM.faction = user.faction
SM.mind.enslave_mind_to_creator(user)
SM.sentience_act()
SM << "<span class='warning'>All at once it makes sense: you know what you are and who you are! Self awareness is yours!</span>"
SM << "<span class='userdanger'>You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist them in completing their goals at any cost.</span>"
SM << "<span class='userdanger'>You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.</span>"
user << "<span class='notice'>[SM] accepts the potion and suddenly becomes attentive and aware. It worked!</span>"
qdel(src)
else
@@ -206,7 +207,7 @@
name = "consciousness transference potion"
desc = "A strange slime-based chemical that, when used, allows the user to transfer their consciousness to a lesser being."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle6"
icon_state = "potorange"
origin_tech = "biotech=6"
var/prompted = 0
var/animal_type = SENTIENCE_ORGANIC
@@ -239,7 +240,7 @@
user.mind.transfer_to(SM)
SM.languages_spoken = user.languages_spoken
SM.languages_understood = user.languages_understood
SM.faction = user.faction
SM.faction = user.faction.Copy()
SM.sentience_act() //Same deal here as with sentience
user.death()
SM << "<span class='notice'>In a quick flash, you feel your consciousness flow into [SM]!</span>"
@@ -251,7 +252,7 @@
name = "slime steroid"
desc = "A potent chemical mix that will cause a baby slime to generate more extract."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle16"
icon_state = "potred"
/obj/item/slimepotion/steroid/attack(mob/living/simple_animal/slime/M, mob/user)
if(!isslime(M))//If target is not a slime.
@@ -275,13 +276,13 @@
name = "extract enhancer"
desc = "A potent chemical mix that will give a slime extract an additional use."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle17"
icon_state = "potpurple"
/obj/item/slimepotion/stabilizer
name = "slime stabilizer"
desc = "A potent chemical mix that will reduce the chance of a slime mutating."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle15"
icon_state = "potcyan"
/obj/item/slimepotion/stabilizer/attack(mob/living/simple_animal/slime/M, mob/user)
if(!isslime(M))
@@ -302,7 +303,7 @@
name = "slime mutator"
desc = "A potent chemical mix that will increase the chance of a slime mutating."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle3"
icon_state = "potgreen"
/obj/item/slimepotion/mutator/attack(mob/living/simple_animal/slime/M, mob/user)
if(!isslime(M))
@@ -327,7 +328,7 @@
name = "slime speed potion"
desc = "A potent chemical mix that will remove the slowdown from any item."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle3"
icon_state = "potyellow"
origin_tech = "biotech=5"
/obj/item/slimepotion/speed/afterattack(obj/C, mob/user)
@@ -344,13 +345,16 @@
if(istype(C, /obj/vehicle))
var/obj/vehicle/V = C
if(V.vehicle_move_delay <= 0)
user << "<span class='warning'>The [C] can't be made any faster!</span>"
return ..()
V.vehicle_move_delay = 0
var/datum/riding/R = V.riding_datum
if(V.riding_datum)
if(R.vehicle_move_delay <= 0 )
user << "<span class='warning'>The [C] can't be made any faster!</span>"
return ..()
R.vehicle_move_delay = 0
user <<"<span class='notice'>You slather the red gunk over the [C], making it faster.</span>"
C.color = "#FF0000"
C.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
C.add_atom_colour("#FF0000", FIXED_COLOUR_PRIORITY)
qdel(src)
@@ -358,7 +362,7 @@
name = "slime chill potion"
desc = "A potent chemical mix that will fireproof any article of clothing. Has three uses."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle17"
icon_state = "potblue"
origin_tech = "biotech=5"
var/uses = 3
@@ -375,14 +379,39 @@
return ..()
user <<"<span class='notice'>You slather the blue gunk over the [C], fireproofing it.</span>"
C.name = "fireproofed [C.name]"
C.color = "#000080"
C.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
C.add_atom_colour("#000080", FIXED_COLOUR_PRIORITY)
C.max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
C.heat_protection = C.body_parts_covered
C.burn_state = FIRE_PROOF
C.resistance_flags |= FIRE_PROOF
uses --
if(!uses)
qdel(src)
/obj/item/slimepotion/genderchange
name = "gender change potion"
desc = "An interesting chemical mix that changes the biological gender of what its applied to. Cannot be used on things that lack gender entirely."
icon = 'icons/obj/chemical.dmi'
icon_state = "potlightpink"
/obj/item/slimepotion/genderchange/attack(mob/living/L, mob/user)
if(!istype(L) || L.stat == DEAD)
user << "<span class='warning'>The potion can only be used on living things!</span>"
return
if(L.gender != MALE && L.gender != FEMALE)
user << "<span class='warning'>The potion can only be used on gendered things!</span>"
return
if(L.gender == MALE)
L.gender = FEMALE
L.visible_message("<span class='notice'>[L] suddenly looks more feminine!</span>")
else
L.gender = MALE
L.visible_message("<span class='notice'>[L] suddenly looks more masculine!</span>")
L.regenerate_icons()
qdel(src)
////////Adamantine Golem stuff I dunno where else to put it
// This will eventually be removed.
@@ -394,6 +423,7 @@
item_state = "golem"
item_color = "golem"
flags = ABSTRACT | NODROP
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
has_sensor = 0
/obj/item/clothing/suit/golem
@@ -401,11 +431,12 @@
desc = "a golem's thick outter shell"
icon_state = "golem"
item_state = "golem"
w_class = 4//bulky item
w_class = WEIGHT_CLASS_BULKY
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.50
body_parts_covered = FULL_BODY
flags_inv = HIDEGLOVES | HIDESHOES | HIDEJUMPSUIT
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
flags = ABSTRACT | NODROP
/obj/item/clothing/shoes/golem
@@ -413,6 +444,7 @@
desc = "sturdy adamantine feet"
icon_state = "golem"
item_state = null
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
flags = NOSLIP | ABSTRACT | NODROP
@@ -422,7 +454,7 @@
icon_state = "golem"
item_state = "golem"
siemens_coefficient = 0
unacidable = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
flags = ABSTRACT | NODROP
@@ -433,6 +465,7 @@
item_state = null
siemens_coefficient = 0
flags = ABSTRACT | NODROP
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
/obj/item/clothing/head/space/golem
@@ -441,7 +474,7 @@
item_color = "dermal"
name = "golem's head"
desc = "a golem's head"
unacidable = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
flags = ABSTRACT | NODROP
/obj/effect/golemrune
@@ -450,7 +483,7 @@
name = "rune"
icon = 'icons/obj/rune.dmi'
icon_state = "golem"
unacidable = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
layer = TURF_LAYER
/obj/effect/golemrune/New()
@@ -496,34 +529,12 @@
G.dna.species.auto_equip(G)
G.loc = src.loc
G.key = ghost.key
G << "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist them in completing their goals at any cost."
G << "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. \
Serve [user], and assist [user.p_them()] in completing their goals at any cost."
G.mind.store_memory("<b>Serve [user.real_name], your creator.</b>")
var/golem_becomes_antag = FALSE
if(iscultist(user)) //If the golem's master is a part of a team antagonist, immediately make the golem one, too
ticker.mode.add_cultist(G.mind)
golem_becomes_antag = TRUE
else if(is_gangster(user))
ticker.mode.add_gangster(G.mind, user.mind.gang_datum, TRUE)
golem_becomes_antag = TRUE
else if(is_handofgod_redcultist(user) || is_handofgod_redprophet(user))
ticker.mode.add_hog_follower(G.mind, "Red")
golem_becomes_antag = TRUE
else if(is_handofgod_bluecultist(user) || is_handofgod_blueprophet(user))
ticker.mode.add_hog_follower(G.mind, "Blue")
golem_becomes_antag = TRUE
else if(is_revolutionary_in_general(user))
ticker.mode.add_revolutionary(G.mind)
golem_becomes_antag = TRUE
else if(is_servant_of_ratvar(user))
add_servant_of_ratvar(G)
golem_becomes_antag = TRUE
G.mind.enslave_mind_to_creator(user)
G.mind.enslaved_to = user
if(golem_becomes_antag)
G << "<span class='userdanger'>Despite your servitude to another cause, your true master remains [user.real_name]. This will never change unless your master's body is destroyed.</span>"
if(user.mind.special_role)
message_admins("[key_name_admin(G)](<A HREF='?_src_=holder;adminmoreinfo=\ref[G]'>?</A>) has been summoned by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>), an antagonist.")
log_game("[key_name(G)] was made a golem by [key_name(user)].")
log_admin("[key_name(G)] was made a golem by [key_name(user)].")
qdel(src)
@@ -540,7 +551,6 @@
layer = FLY_LAYER
pixel_x = -64
pixel_y = -64
unacidable = 1
mouse_opacity = 0
var/mob/living/immune = list() // the one who creates the timestop is immune
var/list/stopped_atoms = list()
@@ -560,13 +570,13 @@
playsound(get_turf(src), 'sound/magic/TIMEPARADOX2.ogg', 100, 1, -1)
for(var/i in 1 to duration-1)
for(var/atom/A in orange (freezerange, src.loc))
if(istype(A, /mob/living))
if(isliving(A))
var/mob/living/M = A
if(M in immune)
continue
M.Stun(10, 1, 1)
M.anchored = 1
if(istype(M, /mob/living/simple_animal/hostile))
if(ishostile(M))
var/mob/living/simple_animal/hostile/H = M
H.AIStatus = AI_OFF
H.LoseTarget()
@@ -596,7 +606,7 @@
/obj/effect/timestop/proc/unfreeze_mob(mob/living/M)
M.AdjustStunned(-10, 1, 1)
M.anchored = 0
if(istype(M, /mob/living/simple_animal/hostile))
if(ishostile(M))
var/mob/living/simple_animal/hostile/H = M
H.AIStatus = initial(H.AIStatus)
@@ -610,7 +620,7 @@
singular_name = "floor tile"
desc = "Through a series of micro-teleports these tiles let people move at incredible speeds"
icon_state = "tile-bluespace"
w_class = 3
w_class = WEIGHT_CLASS_NORMAL
force = 6
materials = list(MAT_METAL=500)
throwforce = 10
@@ -621,19 +631,12 @@
turf_type = /turf/open/floor/bluespace
/turf/open/floor/bluespace
slowdown = -1
icon_state = "bluespace"
desc = "Through a series of micro-teleports these tiles let people move at incredible speeds"
floor_tile = /obj/item/stack/tile/bluespace
/obj/item/stack/tile/sepia
name = "sepia floor tile"
singular_name = "floor tile"
desc = "Time seems to flow very slowly around these tiles"
icon_state = "tile-sepia"
w_class = 3
w_class = WEIGHT_CLASS_NORMAL
force = 6
materials = list(MAT_METAL=500)
throwforce = 10
@@ -644,13 +647,6 @@
turf_type = /turf/open/floor/sepia
/turf/open/floor/sepia
slowdown = 2
icon_state = "sepia"
desc = "Time seems to flow very slowly around these tiles"
floor_tile = /obj/item/stack/tile/sepia
/obj/item/areaeditor/blueprints/slime
name = "cerulean prints"
desc = "A one use yet of blueprints made of jelly like organic material. Renaming an area to 'Xenobiology Lab' will extend the reach of the management console."
@@ -661,5 +657,6 @@
var/area/A = get_area(src)
if(success)
for(var/turf/T in A)
T.color = "#2956B2"
T.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
T.add_atom_colour("#2956B2", FIXED_COLOUR_PRIORITY)
qdel(src)