12/21 modernizations from TG live (#103)

* 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
This commit is contained in:
Poojawa
2016-12-22 03:57:55 -06:00
committed by GitHub
parent f5e143a452
commit cf59ac1c3d
2215 changed files with 707445 additions and 87041 deletions
@@ -78,7 +78,7 @@
var/t = stripped_input(user, "What would you like to label the blood pack?", name, null, 53)
if(!user.canUseTopic(src))
return
if(user.get_active_hand() != I)
if(user.get_active_held_item() != I)
return
if(loc != user)
return
@@ -25,6 +25,7 @@ Borg Hypospray
var/list/datum/reagents/reagent_list = list()
var/list/reagent_ids = list("dexalin", "kelotane", "bicaridine", "antitoxin", "epinephrine", "spaceacillin")
var/accepts_reagent_upgrades = TRUE //If upgrades can increase number of reagents dispensed.
var/list/modes = list() //Basically the inverse of reagent_ids. Instead of having numbers as "keys" and strings as values it has strings as keys and numbers as values.
//Used as list for input() in shakers.
@@ -32,11 +33,8 @@ Borg Hypospray
/obj/item/weapon/reagent_containers/borghypo/New()
..()
var/iteration = 1
for(var/R in reagent_ids)
add_reagent(R)
modes[R] = iteration
iteration++
START_PROCESSING(SSobj, src)
@@ -73,8 +71,10 @@ Borg Hypospray
var/datum/reagents/R = reagent_list[reagent_list.len]
R.add_reagent(reagent, 30)
modes[reagent] = modes.len + 1
/obj/item/weapon/reagent_containers/borghypo/proc/regenerate_reagents()
if(isrobot(src.loc))
if(iscyborg(src.loc))
var/mob/living/silicon/robot/R = src.loc
if(R && R.cell)
for(var/i in 1 to reagent_ids.len)
@@ -90,7 +90,7 @@ Borg Hypospray
return
if(!istype(M))
return
if(R.total_volume && M.can_inject(user, 1, bypass_protection))
if(R.total_volume && M.can_inject(user, 1, user.zone_selected,bypass_protection))
M << "<span class='warning'>You feel a tiny prick!</span>"
user << "<span class='notice'>You inject [M] with the injector.</span>"
var/fraction = min(amount_per_transfer_from_this/R.total_volume, 1)
@@ -134,6 +134,7 @@ Borg Hypospray
/obj/item/weapon/reagent_containers/borghypo/hacked
icon_state = "borghypo_s"
reagent_ids = list ("facid", "mutetoxin", "cyanide", "sodium_thiopental", "heparin", "lexorin")
accepts_reagent_upgrades = FALSE
/obj/item/weapon/reagent_containers/borghypo/syndicate
name = "syndicate cyborg hypospray"
@@ -143,6 +144,7 @@ Borg Hypospray
recharge_time = 2
reagent_ids = list("syndicate_nanites", "potass_iodide", "morphine")
bypass_protection = 1
accepts_reagent_upgrades = FALSE
/*
Borg Shaker
@@ -155,6 +157,7 @@ Borg Shaker
possible_transfer_amounts = list(5,10,20)
charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster.
recharge_time = 3
accepts_reagent_upgrades = FALSE
reagent_ids = list("beer", "orangejuice", "limejuice", "tomatojuice", "cola", "tonic", "sodawater", "ice", "cream", "whiskey", "vodka", "rum", "gin", "tequila", "vermouth", "wine", "kahlua", "cognac", "ale")
@@ -162,7 +165,7 @@ Borg Shaker
return //Can't inject stuff with a shaker, can we? //not with that attitude
/obj/item/weapon/reagent_containers/borghypo/borgshaker/regenerate_reagents()
if(isrobot(src.loc))
if(iscyborg(src.loc))
var/mob/living/silicon/robot/R = src.loc
if(R && R.cell)
for(var/i in modes) //Lots of reagents in this one, so it's best to regenrate them all at once to keep it from being tedious.
@@ -209,6 +212,7 @@ Borg Shaker
possible_transfer_amounts = list(5,10,20)
charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster.
recharge_time = 3
accepts_reagent_upgrades = FALSE
reagent_ids = list("beer2")
@@ -216,13 +220,16 @@ Borg Shaker
name = "Peace Hypospray"
reagent_ids = list("dizzysolution","tiresolution")
accepts_reagent_upgrades = FALSE
/obj/item/weapon/reagent_containers/borghypo/peace/hacked
desc = "Everything's peaceful in death!"
icon_state = "borghypo_s"
reagent_ids = list("dizzysolution","tiresolution","tirizene","sulfonal","sodium_thiopental","cyanide","neurotoxin2")
accepts_reagent_upgrades = FALSE
/obj/item/weapon/reagent_containers/borghypo/epi
name = "epinephrine injector"
desc = "An advanced chemical synthesizer and injection system, designed to stabilize patients.."
reagent_ids = list("epinephrine")
reagent_ids = list("epinephrine")
accepts_reagent_upgrades = FALSE
@@ -19,7 +19,7 @@
update_icon()
/obj/item/weapon/reagent_containers/glass/bottle/update_icon()
overlays.Cut()
cut_overlays()
if(reagents.total_volume)
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]-10")
@@ -5,6 +5,7 @@
volume = 50
flags = OPENCONTAINER
spillable = 1
resistance_flags = ACID_PROOF
/obj/item/weapon/reagent_containers/glass/attack(mob/M, mob/user, obj/target)
@@ -19,7 +20,7 @@
return
if(istype(M))
if(user.a_intent == "harm")
if(user.a_intent == INTENT_HARM)
var/R
M.visible_message("<span class='danger'>[user] splashes the contents of [src] onto [M]!</span>", \
"<span class='userdanger'>[user] splashes the contents of [src] onto [M]!</span>")
@@ -78,7 +79,7 @@
user << "<span class='notice'>You transfer [trans] unit\s of the solution to [target].</span>"
else if(reagents.total_volume)
if(user.a_intent == "harm")
if(user.a_intent == INTENT_HARM)
user.visible_message("<span class='danger'>[user] splashes the contents of [src] onto [target]!</span>", \
"<span class='notice'>You splash the contents of [src] onto [target].</span>")
reagents.reaction(target, TOUCH)
@@ -213,6 +214,9 @@
name = "epinephrine reserve tank"
list_reagents = list("epinephrine" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/synthflesh
list_reagents = list("synthflesh" = 50)
/obj/item/weapon/reagent_containers/glass/bucket
name = "bucket"
desc = "It's a bucket."
@@ -220,23 +224,24 @@
icon_state = "bucket"
item_state = "bucket"
materials = list(MAT_METAL=200)
w_class = 3
w_class = WEIGHT_CLASS_NORMAL
amount_per_transfer_from_this = 20
possible_transfer_amounts = list(10,15,20,25,30,50,70)
volume = 70
flags = OPENCONTAINER
flags_inv = HIDEHAIR
slot_flags = SLOT_HEAD
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) //Weak melee protection, because you can wear it on your head
resistance_flags = 0
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 75, acid = 50) //Weak melee protection, because you can wear it on your head
slot_equipment_priority = list( \
slot_back, slot_wear_id,\
slot_w_uniform, slot_wear_suit,\
slot_wear_mask, slot_head,\
slot_wear_mask, slot_head, slot_neck,\
slot_shoes, slot_gloves,\
slot_ears, slot_glasses,\
slot_belt, slot_s_store,\
slot_l_store, slot_r_store,\
slot_drone_storage
slot_generic_dextrous_storage
)
/obj/item/weapon/reagent_containers/glass/bucket/attackby(obj/O, mob/user, params)
@@ -7,6 +7,7 @@
amount_per_transfer_from_this = 5
volume = 30
possible_transfer_amounts = list()
resistance_flags = ACID_PROOF
flags = OPENCONTAINER
slot_flags = SLOT_BELT
var/ignore_flags = 0
@@ -46,6 +47,7 @@
/obj/item/weapon/reagent_containers/hypospray/CMO
list_reagents = list("omnizine" = 30)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/item/weapon/reagent_containers/hypospray/combat
name = "combat stimulant injector"
@@ -81,7 +83,7 @@
..()
update_icon()
spawn(80)
if(isrobot(user) && !reagents.total_volume)
if(iscyborg(user) && !reagents.total_volume)
var/mob/living/silicon/robot/R = user
if(R.cell.use(100))
reagents.add_reagent_list(list_reagents)
@@ -128,11 +130,11 @@
/obj/item/weapon/reagent_containers/hypospray/medipen/survival
name = "survival medipen"
desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards. "
desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards. WARNING: Do not inject more than one pen in quick succession."
icon_state = "stimpen"
volume = 82
amount_per_transfer_from_this = 82
list_reagents = list("nanites" = 2, "salbutamol" = 10, "coffee" = 20, "leporazine" = 20, "tricordrazine" = 15, "epinephrine" = 10, "omnizine" = 5, "stimulants" = 10)
volume = 57
amount_per_transfer_from_this = 57
list_reagents = list("salbutamol" = 10, "leporazine" = 15, "tricordrazine" = 15, "epinephrine" = 10, "miningnanites" = 2, "omnizine" = 5)
/obj/item/weapon/reagent_containers/hypospray/medipen/species_mutator
name = "species mutator medipen"
@@ -7,7 +7,7 @@
flags = OPENCONTAINER | NOBLUDGEON
slot_flags = SLOT_BELT
throwforce = 0
w_class = 2
w_class = WEIGHT_CLASS_SMALL
throw_speed = 3
throw_range = 7
var/stream_mode = 0 //whether we use the more focused mode
@@ -17,7 +17,7 @@
var/stream_amount = 10 //the amount of reagents transfered when in stream mode.
amount_per_transfer_from_this = 5
volume = 250
possible_transfer_amounts = list()
possible_transfer_amounts = list(5,10,15,20,25,30,50,100)
/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user)
@@ -117,7 +117,6 @@
user << "<span class='notice'>You switch the nozzle setting to [stream_mode ? "\"stream\"":"\"spray\""]. You'll now use [amount_per_transfer_from_this] units per use.</span>"
/obj/item/weapon/reagent_containers/spray/verb/empty()
set name = "Empty Spray Bottle"
set category = "Object"
set src in usr
@@ -136,6 +135,7 @@
desc = "BLAM!-brand non-foaming space cleaner!"
list_reagents = list("cleaner" = 250)
//spray tan
/obj/item/weapon/reagent_containers/spray/spraytan
name = "spray tan"
volume = 50
@@ -143,6 +143,19 @@
list_reagents = list("spraytan" = 50)
/obj/item/weapon/reagent_containers/spray/medical
name = "medical spray"
icon = 'icons/obj/chemical.dmi'
icon_state = "medspray"
volume = 100
/obj/item/weapon/reagent_containers/spray/medical/sterilizer
name = "sterilizer spray"
desc = "Spray bottle loaded with non-toxic sterilizer. Useful in preparation for surgery."
list_reagents = list("sterilizine" = 100)
//pepperspray
/obj/item/weapon/reagent_containers/spray/pepper
name = "pepperspray"
@@ -177,7 +190,7 @@
icon_state = "chemsprayer"
item_state = "chemsprayer"
throwforce = 0
w_class = 3
w_class = WEIGHT_CLASS_NORMAL
stream_mode = 1
current_range = 7
spray_range = 4
@@ -211,23 +224,3 @@
item_state = "plantbgone"
volume = 100
list_reagents = list("plantbgone" = 100)
/obj/item/weapon/reagent_containers/spray/thermite
name = "Thermite Spray"
desc = "A 50u spray bottle loaded with thermite, for melting walls. "
icon = 'icons/obj/weapons.dmi'
icon_state = "thermitespray"
item_state = "thermitespray"
volume = 50
list_reagents = list("thermite" = 50)
/obj/item/weapon/reagent_containers/spray/thermite/afterattack(atom/A as mob|obj, mob/user)
if(istype(A, /turf/closed/wall))
if(reagents.get_reagent_amount("thermite") >= 10)
user.visible_message("<span class='notice'>You spray the thermite on [A].</span>")
reagents.reaction(A, TOUCH)
reagents.remove_reagent("thermite", 10)
else
user.visible_message("<span class='warning'>You don't have enough thermite left!</span>")
return
else return ..()
@@ -12,7 +12,7 @@
volume = 15
var/mode = SYRINGE_DRAW
var/busy = 0 // needed for delayed drawing of blood
var/projectile_type = /obj/item/projectile/bullet/dart/syringe
var/proj_piercing = 0 //does it pierce through thick clothes when shot with syringe gun
materials = list(MAT_METAL=10, MAT_GLASS=20)
/obj/item/weapon/reagent_containers/syringe/New()
@@ -207,6 +207,9 @@
/obj/item/weapon/reagent_containers/syringe/lethal/choral
list_reagents = list("chloralhydrate" = 50)
/obj/item/weapon/reagent_containers/syringe/lethal/execution
list_reagents = list("plasma" = 15, "formaldehyde" = 15, "cyanide" = 10, "facid" = 10)
/obj/item/weapon/reagent_containers/syringe/mulligan
name = "Mulligan"
desc = "A syringe used to completely change the users identity."
@@ -242,5 +245,5 @@
name = "piercing syringe"
desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units."
volume = 10
projectile_type = /obj/item/projectile/bullet/dart/syringe/piercing
proj_piercing = 1
origin_tech = "combat=3;materials=4;engineering=5"