Merge branch 'release' of https://github.com/VOREStation/VOREStation into izac-voreupdate

All conflicts resolved

Signed-off-by: izac112 <izac10@live.com>
This commit is contained in:
izac112
2020-05-06 21:53:03 +02:00
1099 changed files with 63850 additions and 118586 deletions
@@ -1858,7 +1858,7 @@ Departamental Swimsuits, for general use
//Burrito Justice: Jayda Wilson
/obj/item/clothing/under/solgov/utility/sifguard/medical/fluff
desc = "The utility uniform of the Society of Universal Cartographers, made from biohazard resistant material. This is an older issuing of the uniform, with integrated department markings."
desc = "The utility uniform of the Terran Commonwealth Explorer Corps, made from biohazard resistant material. This is an older issuing of the uniform, with integrated department markings."
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_override = 'icons/vore/custom_clothes_vr.dmi'
+100 -44
View File
@@ -37,37 +37,37 @@
var/from_suit = /obj/item/clothing/suit/space/void
var/to_helmet = /obj/item/clothing/head/cardborg
var/to_suit = /obj/item/clothing/suit/cardborg
//conversion costs. refunds parts by default.
//conversion costs. refunds all parts by default, but can be tweaked per-kit
var/from_helmet_cost = 1
var/from_suit_cost = 2
var/to_helmet_cost = -1
var/to_suit_cost = -2
var/owner_ckey = null //ckey of the kit owner as a string
var/skip_contents = FALSE //can we skip the contents check? we generally shouldn't, but this is necessary for rigs/etc.
var/transfer_contents = FALSE //should we transfer the contents across before deleting? we generally shouldn't, but it might be needed
var/skip_content_check = FALSE //can we skip the contents check? we generally shouldn't, but this is necessary for rigs/coats with hoods/etc.
var/transfer_contents = FALSE //should we transfer the contents across before deleting? we generally shouldn't, esp. in the case of rigs/coats with hoods/etc. note this does nothing if skip is FALSE.
var/can_repair = FALSE //can we be used to repair damaged voidsuits when converting them?
var/can_revert = TRUE //can we revert items, or is it a one-way trip?
var/delete_on_empty = FALSE //do we self-delete when emptied?
//Conversion proc
/obj/item/device/modkit_conversion/afterattack(obj/O, mob/user as mob)
var/cost
var/to_type
var/keycheck
//we have to check that it's not the original type first, because otherwise it'll convert wrong because the subtype still counts as the basetype
//changing an item back to its base type refunds the parts cost
//order of checks has been reshuffled to work better
if(isturf(O)) //silently fail if you click on a turf. shouldn't work anyway because turfs aren't objects but if I don't do this it spits runtimes.
return
if(istype(O,/obj/item/clothing/suit/space/void/) && !can_repair) //check if we're a voidsuit and if we're allowed to repair
if(O:breaches.len) //this has to be underneath the istype or it'll spit a runtime if used on non-voidsuits
var/obj/item/clothing/suit/space/void/SS = O
if(LAZYLEN(SS.breaches))
to_chat(user, "<span class='warning'>You should probably repair that before you start tinkering with it.</span>")
return
if(isturf(O)) //silently fail if you click on a turf. shouldn't work anyway because turfs aren't objects but if I don't do this it spits runtimes.
return
if(O.blood_DNA || O.contaminated) //check if we're bloody or gooey, so modkits can't be used to hide crimes easily.
if(O.blood_DNA || O.contaminated) //check if we're bloody or gooey or whatever, so modkits can't be used to hide crimes easily.
to_chat(user, "<span class='warning'>You should probably clean that up before you start tinkering with it.</span>")
return
//we have to check that it's not the original type first, because otherwise it might convert wrong based on pathing; the subtype can still count as the basetype
if(istype(O,to_helmet) && can_revert)
cost = to_helmet_cost
to_type = from_helmet
@@ -91,11 +91,11 @@
if(!isturf(O.loc))
to_chat(user, "<span class='warning'>You need to put \the [O] on the ground, a table, or other worksurface before modifying it.</span>")
return
if(!skip_contents && O.contents.len) //check if we're loaded/modified, in the event of gun/suit kits, to avoid purging stuff like badges, armbands, or suit helmets
if(!skip_content_check && O.contents.len) //check if we're loaded/modified, in the event of gun/suit kits, to avoid purging stuff like ammo, badges, armbands, or suit helmets
to_chat(user, "<span class='warning'>You should probably remove any attached items or loaded ammunition before trying to modify that!</span>")
return
if(cost > parts)
to_chat(user, "<span class='warning'>This kit doesn't have enough parts left.</span>")
to_chat(user, "<span class='warning'>The kit doesn't have enough parts left to modify that.</span>")
if(can_revert && ((to_helmet_cost || to_suit_cost) < 0))
to_chat(user, "<span class='notice'> You can recover parts by using the kit on an already-modified item.</span>")
return
@@ -106,36 +106,56 @@
playsound(user.loc, 'sound/items/Screwdriver.ogg', 100, 1)
var/obj/N = new to_type(O.loc)
user.visible_message("<span class='notice'>[user] opens \the [src] and modifies \the [O] into \the [N].</span>","<span class='notice'>You open \the [src] and modify \the [O] into \the [N].</span>")
//messy, but transfer prints and fibers to avoid forensics abuse, same as the bloody/gooey check above
//crude, but transfer prints and fibers to avoid forensics abuse, same as the bloody/gooey check above
N.fingerprints = O.fingerprints
N.fingerprintshidden = O.fingerprintshidden
N.fingerprintslast = O.fingerprintslast
N.suit_fibers = O.suit_fibers
//also messy and I really don't like using the lookdown checks here but fuck it, it works. the istypes are essential though, or else it runtimes and won't get to the qdel for the source item, allowing item duping.
if(skip_contents && transfer_contents) //skip and transfer
//transfer logic could technically be made more thorough and handle stuff like helmet/boots/tank vars for suits, but in those cases you should be removing the items first anyway
if(skip_content_check && transfer_contents)
N.contents = O.contents
if(istype(N,/obj/item/weapon/gun/projectile/))
N:magazine_type = O:magazine_type
N:ammo_magazine = O:ammo_magazine
var/obj/item/weapon/gun/projectile/NN = N
var/obj/item/weapon/gun/projectile/OO = O
NN.magazine_type = OO.magazine_type
NN.ammo_magazine = OO.ammo_magazine
if(istype(N,/obj/item/weapon/gun/energy/))
N:cell_type = O:cell_type
else //nuke any ammo it'd normally spawn with, if it's a gun. we have to do this per-gun, not globally, or it breaks hoods a little bit and suit storage a lot.
var/obj/item/weapon/gun/energy/NE = N
var/obj/item/weapon/gun/energy/OE = O
NE.cell_type = OE.cell_type
else
if(istype(N,/obj/item/weapon/gun/projectile/))
N:contents = list()
N:magazine_type = null
N:ammo_magazine = null
var/obj/item/weapon/gun/projectile/NM = N
NM.contents = list()
NM.magazine_type = null
NM.ammo_magazine = null
if(istype(N,/obj/item/weapon/gun/energy/))
N:contents = list()
N:cell_type = null
var/obj/item/weapon/gun/energy/NO = N
NO.contents = list()
NO.cell_type = null
qdel(O)
parts -= cost
if(!parts && delete_on_empty)
qdel(src)
//YW EDITS END
//DEBUG ITEM
/obj/item/device/modkit_conversion/fluff/debug_gunkit
name = "Gun Transformation Kit"
desc = "A kit containing all the needed tools and fabric to modify one sidearm to another."
skip_content_check = FALSE
transfer_contents = FALSE
icon = 'icons/vore/custom_items_vr.dmi'
icon_state = "harmony_kit"
from_helmet = /obj/item/weapon/gun/energy/laser
to_helmet = /obj/item/weapon/gun/energy/retro
//DEBUG ITEM ENDS
//JoanRisu:Joan Risu
/obj/item/weapon/flame/lighter/zippo/fluff/joan
name = "Federation Zippo Lighter"
@@ -422,8 +442,8 @@
//SilencedMP5A5:Serdykov Antoz
/obj/item/clothing/suit/armor/vest/wolftaur/serdy //SilencedMP5A5's specialty armor suit.
name = "KSS-8 security armor"
desc = "A set of armor made from pieces of many other armors. There are two orange holobadges on it, one on the chestplate, one on the steel flank plates. The holobadges appear to be russian in origin. 'Kosmicheskaya Stantsiya-8' is printed in faded white letters on one side, along the spine. It smells strongly of dog."
name = "custom security cuirass"
desc = "An armored vest that protects against some damage. It appears to be created for a wolfhound. The name 'Serdykov L. Antoz' is written on a tag inside one of the haunchplates."
species_restricted = null //Species restricted since all it cares about is a taur half
icon = 'icons/mob/taursuits_wolf_vr.dmi'
icon_state = "serdy_armor"
@@ -437,16 +457,27 @@
to_chat(H, "<span class='warning'>You need to have a wolf-taur half to wear this.</span>")
return 0
/obj/item/clothing/head/helmet/serdy //SilencedMP5A5's specialty helmet. Uncomment if/when they make their custom item app and are accepted.
name = "KSS-8 security helmet"
desc = "desc = An old production model steel-ceramic lined helmet with a white stripe and a custom orange holographic visor. It has ear holes, and smells of dog. It's been heavily modified, and fitted with a metal mask to protect the jaw."
/obj/item/clothing/head/serdyhelmet //SilencedMP5A5's specialty helmet.
name = "custom security helmet"
desc = "An old production model steel-ceramic lined helmet with a white stripe and a custom orange holographic visor. It has ear holes, and smells of dog."
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_state = "serdyhelm"
valid_accessory_slots = (ACCESSORY_SLOT_HELM_C)
restricted_accessory_slots = (ACCESSORY_SLOT_HELM_C)
flags = THICKMATERIAL
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "serdyhelm_mob"
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_COLD_PROTECTION_TEMPERATURE
heat_protection = HEAD
max_heat_protection_temperature = HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
siemens_coefficient = 0.7
w_class = ITEMSIZE_NORMAL
ear_protection = 1
drop_sound = 'sound/items/drop/helm.ogg'
/*
//SilencedMP5A5:Serdykov Antoz
/obj/item/device/modkit_conversion/fluff/serdykit
name = "Serdykov's armor modification kit"
@@ -457,9 +488,9 @@
from_helmet = /obj/item/clothing/head/helmet
from_suit = /obj/item/clothing/suit/armor/vest/wolftaur
to_helmet = /obj/item/clothing/head/helmet/serdy
to_helmet = /obj/item/clothing/head/serdyhelmet
to_suit = /obj/item/clothing/suit/armor/vest/wolftaur/serdy
*/
//Cameron653: Diana Kuznetsova
/obj/item/clothing/suit/fluff/purp_robes
@@ -856,7 +887,7 @@
set src in view(1)
//do_reagent_implant(usr)
if(!isliving(usr) || !usr.canClick())
if(!isliving(usr) || !usr.checkClickCooldown())
return
if(usr.incapacitated() || usr.stat > CONSCIOUS)
@@ -925,7 +956,7 @@
set src in view(1)
//do_reagent_implant(usr)
if(!isliving(usr) || !usr.canClick())
if(!isliving(usr) || !usr.checkClickCooldown())
return
if(usr.incapacitated() || usr.stat > CONSCIOUS)
@@ -994,7 +1025,7 @@
set src in view(1)
//do_reagent_implant(usr)
if(!isliving(usr) || !usr.canClick())
if(!isliving(usr) || !usr.checkClickCooldown())
return
if(usr.incapacitated() || usr.stat > CONSCIOUS)
@@ -1079,7 +1110,7 @@
set src in view(1)
//do_reagent_implant(usr)
if(!isliving(usr) || !usr.canClick())
if(!isliving(usr) || !usr.checkClickCooldown())
return
if(usr.incapacitated() || usr.stat > CONSCIOUS)
@@ -1439,7 +1470,7 @@
set src in view(1)
//do_reagent_implant(usr)
if(!isliving(usr) || !usr.canClick())
if(!isliving(usr) || !usr.checkClickCooldown())
return
if(usr.incapacitated() || usr.stat > CONSCIOUS)
@@ -1766,3 +1797,28 @@
return 0
else
return 1
//Nickcrazy - Damon Bones Xrim
/obj/item/clothing/suit/storage/toggle/bomber/bombersec
name = "Security Bomber Jacket"
desc = "A black bomber jacket with the security emblem sewn onto it."
icon = 'icons/vore/custom_items_vr.dmi'
icon_override = 'icons/vore/custom_items_vr.dmi'
icon_state = "bombersec"
//pimientopyro - Scylla Casmus
/obj/item/clothing/glasses/fluff/scylla
name = "Cherry-Red Shades"
desc = "These cheap, cherry-red cat-eye glasses seem to give you the inclination to eat chalk when you wear them."
icon = 'icons/vore/custom_items_vr.dmi'
icon_state = "blindshades"
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "blindshades_mob"
//Storesund97 - Aurora
/obj/item/clothing/accessory/solgov/department/security/aurora
name = "Old security insignia"
desc = "Insignia denoting assignment to the security department. These fit Expeditionary Corps uniforms. This one seems to be from the 2100s..."